2017-07-13 81 views
0

如何使用sugarCRM studio中的「公式生成器」計算同一模塊的兩個日期字段之間的天數,而不計算週末(週六和週日)。計算sugarCRM中兩個字段之間的天數

+2

嗨,歡迎來到堆棧溢出。有關如何提出問題並更新您的問題的更多詳細信息,請參見[問問]鏈接 。 –

+1

[計算字段在sugarCRM]可能重複(https://stackoverflow.com/questions/45074590/calculated-field-in-sugarcrm) – Reisclef

+0

@Reisclef我會說這是相反的方式,考慮到這是舊的(也更具描述性/正確性) – Jay

回答

1

開場白

據我所知Sugar邏輯沒有一個函數來計算日期跨度的日子。 但是我們可以用這樣的現有糖功能計算的話:

add(1,subtract(daysUntil(addDays($date_end,365000)),daysUntil(addDays($date_start,365000)))) 

這將返回從$ DATE_START跨度和$ DATE_END,計數所有天,包括開始和結束日期, 所以跨度2017年-01-01至2017年1月1日將返回1,而不是0

注:

  • 這不處理任何這些字段爲空的特殊情況。
  • 如果要直接顯示該公式的結果,在地板包裝它()顯示爲整數,未.000000

溶液

由於Sugar邏輯也做似乎提供任何函數和公式範圍變量 所得到的公式(僅計算Mo-Fr)與「緊湊」一樣:

floor(add(0.5, 
    add(
    multiply(floor(divide(add(1,subtract(daysUntil(addDays($date_end,365000)),daysUntil(addDays($date_start,365000)))),7)),5) 
    , 
    add(
     min(
     max(0,subtract(6,ifElse(equal(dayofweek($date_start),0),7,dayofweek($date_start)))) 
     , 
     subtract(
      add(1,subtract(daysUntil(addDays($date_end,365000)),daysUntil(addDays($date_start,365000)))) 
     , 
      multiply(floor(divide(add(1,subtract(daysUntil(addDays($date_end,365000)),daysUntil(addDays($date_start,365000)))),7)),7) 
     ) 
    ) 
    , 
     max(
     0, 
     subtract(
      subtract(
      add(1,subtract(daysUntil(addDays($date_end,365000)),daysUntil(addDays($date_start,365000)))) 
      , 
      multiply(floor(divide(add(1,subtract(daysUntil(addDays($date_end,365000)),daysUntil(addDays($date_start,365000)))),7)),7) 
     ) 
     , 
      subtract(8,ifElse(equal(dayofweek($date_start),0),7,dayofweek($date_start))) 
     ) 
    ) 
    ) 
) 
)) 

注:

  • 以上的公式不處理開始日期是結束日期之後,你可以使用if()isAfter()
  • 假期趕上這樣的情況下和如考慮根本沒有,所以這會不是只算實際工作日
相關問題