Salesforce - 根据工作日是关闭还是处于特定状态来计算工作日的案例年龄

时间:2013-05-29 18:11:47

标签: salesforce formula

我正在尝试创建一个公式,可以告诉我工作日中案例的年龄,如果它处于打开,关闭或处于特定状态。这是我到目前为止所得到的:

IF(OR(IsNull(ClosedDate), IsNull(Waiting_Confirmation_Date__c)),

(
    5*FLOOR((TODAY()-DATE(1996,01,01))/7) + 
    MIN(5, MOD(TODAY()-DATE(1996,01,01), 7))
) - (
    5*FLOOR((DATEVALUE(CreatedDate)-DATE(1996,01,01))/7) + 
    MIN(5, MOD(DATEVALUE(CreatedDate)-DATE(1996,01,01), 7))
),

IF(NOT(IsNull(Waiting_Confirmation_Date__c)),
(
    5*FLOOR((Waiting_Confirmation_Date__c - DATE(1996,01,01))/7) + 
    MIN(5, MOD(Waiting_Confirmation_Date__c - DATE(1996,01,01), 7))
) - (
    5*FLOOR((DATEVALUE(CreatedDate)-DATE(1996,01,01))/7) + 
    MIN(5, MOD(DATEVALUE(CreatedDate)-DATE(1996,01,01), 7))
),

(
    5*FLOOR((DATEVALUE(ClosedDate)-DATE(1996,01,01))/7) + 
    MIN(5, MOD(DATEVALUE(ClosedDate)-DATE(1996,01,01), 7))
) - (
    5*FLOOR((DATEVALUE(CreatedDate)-DATE(1996,01,01))/7) + 
    MIN(5, MOD(DATEVALUE(CreatedDate)-DATE(1996,01,01), 7))
))


)

我将Waiting_Confirmation_Date__c设置为工作流,该工作流指定用户将案例设置为特定状态的今天的日期。基本上我想要做的是:

如果案件未关闭,或未在等待确认(将设置“Waiting_Confirmation_Date__c”),则将营业年龄设置为从创建到今天的年龄。

否则,如果设置了“Waiting_Confirmation_Date__c”,请在创建时间到确认日期之间设定年龄。

最后,如果它已关闭,请将其设置为从创建时到关闭时的年龄。

我认为只是我的if / else在某种程度上是错误的,但我正在试图解决这个问题。

谢谢!

2 个答案:

答案 0 :(得分:0)

这似乎是一个相当痛苦的公式。您可以尝试安装免费Case Age In Business Hours app from the AppExchange;它可以开箱即用,如果没有,它仍然是开源的,所以你可以根据需要进行修改。

答案 1 :(得分:0)

解决方案就是这个,谢谢你们:

IF(AND(IsClosed),

(
5*FLOOR((DATEVALUE(ClosedDate)-DATE(1996,01,01))/7) +
MIN(5, MOD(DATEVALUE(ClosedDate)-DATE(1996,01,01), 7))
) - (
5*FLOOR((DATEVALUE(CreatedDate)-DATE(1996,01,01))/7) +
MIN(5, MOD(DATEVALUE(CreatedDate)-DATE(1996,01,01), 7))
),

IF(NOT(IsNull(Waiting_Confirmation_Date__c)),
(
5*FLOOR((Waiting_Confirmation_Date__c - DATE(1996,01,01))/7) +
MIN(5, MOD(Waiting_Confirmation_Date__c - DATE(1996,01,01), 7))
) - (
5*FLOOR((DATEVALUE(CreatedDate)-DATE(1996,01,01))/7) +
MIN(5, MOD(DATEVALUE(CreatedDate)-DATE(1996,01,01), 7))
),

(
5*FLOOR((TODAY()-DATE(1996,01,01))/7) +
MIN(5, MOD(TODAY()-DATE(1996,01,01), 7))
) - (
5*FLOOR((DATEVALUE(CreatedDate)-DATE(1996,01,01))/7) +
MIN(5, MOD(DATEVALUE(CreatedDate)-DATE(1996,01,01), 7))
)))