尝试在Salesforce中创建自定义“收入日期”字段

时间:2013-01-16 11:59:30

标签: salesforce

我正在尝试创建一个“收入日期”字段,该字段遵循以下逻辑。 我希望收入日期字段根据我们的CS团队编辑的日期字段进行计算。 字段(可编辑的日期字段)是 - 超骑日期 - 电子邮件开始日期 - 直播日期 - 估计电子邮件开始日期 - 估计G L日期

第5个自动计算日期字段(估计上线日期始终具有日期值(仅在上述字段为空时才使用)

所以,我试图使用的逻辑是

(i)是否有覆盖日期?如果是,那就拿下并停下来。 如果没有,请转到(ii)

(ii)是否至少有一个“电子邮件开始日期”或“实时日期”?如果是,请采取前面的这些并停止。 如果没有,请转到(iii)

(iii)是否至少有一个“估计的电子邮件开始日期”和“估计的G L日期”? ?如果是,请采取前面的这些并停止。 如果没有,请转到(iv)

(iv)如果以上所有字段均为空白,请参加预计上线日期

我知道这看起来令人困惑,但这仅仅是因为我们计算收入的方式取决于我们的CS团队在客户网站上的时间输入的日期(与交易截止日期不同)。

在下面这个公式中似乎出错了。

BLANKVALUE(Over_ride_Date__c,     IF(不是(ISBLANK(Email_Start_Date__c))&& NOT(ISBLANK(Live_Date__c)),IF(Email_Start_Date__c< Live_Date__c,Email_Start_Date__c,Live_Date__c)),IF(ISBLANK(Email_Start_Date__c)&& ISBLANK(Live_Date__c)), IF(NOT(ISBLANK(Estimated_Email_Start_Date__c))&& NOT(ISBLANK(Estimated_G_L_Date__c)),  IF(Estimated_Email_Start_Date__c< Estimated_G_L_Date__c,Estimated_Email_Start_Date__c,Estimated_G_L_Date__c)),      IF(ISBLANK(Estimated_Email_Start_Date__c)&& ISBLANK(Estimated_G_L_Date__c)),BLANKVALUE(Estimated_Go_Live_Date__c,Estimated_Go_Live_Date__c)))

1 个答案:

答案 0 :(得分:1)

我会试着引导你完成我的设计过程;)

公式的基本形状可能是这样的:

BLANKVALUE(Over_ride_Date__c,
    IF(ISBLANK(Email_Start_Date__c) && ISBLANK(Live_Date__c),
        IF(ISBLANK(Estimated_Email_Start_Date__c) && ISBLANK(Estimated_G_L_Date__c),
            Estimated_Go_Live_Date__c,
            /* need to use Estimated_Email_Start_Date__c or Estimated_G_L_Date__c */
        ),
        /* need to use Email_Start_Date__c or Live_Date__c */
    )
)

现在应该很容易。如果未设置“覆盖”且“电子邮件开始日期”和“实时日期”均为空白 - 请转到下一个变量。否则(这是我们尚未拥有的部分)如果至少设置了其中一个 - 我们将尝试使用它们。与最后一对日期类似。


那么现在会是什么:

  1. 填写电子邮件和直播 - 缩小
  2. 已填写电子邮件,实时无效 - 收取电子邮件
  3. 电子邮件null,已填充 - 直播
  4. 有几种方法可以做到这一点。有点长但可读:

    IF(ISBLANK(Email_Start_Date__c),
        Live_Date__c,
        IF(ISBLANK(Live_Date__c),
            Email_Start_Date__c,
            IF(Email_Start_Date__c < Live_Date__c, Email_Start_Date__c, Live_Date__c)
        )
    )
    

    但我会提倡这个:

    IF(ISBLANK(Live_Date__c) || BLANKVALUE(Email_Start_Date__c, Live_Date__c) < Live_Date__c,
        BLANKVALUE(Email_Start_Date__c, Live_Date__c),
        Live_Date__c
    )
    

    以下是它的工作原理:

    truth table

    (仅限9行,因为这是所有组合:smaller/bigger/null * smaller/bigger/null)。事实上,最后一个(null and null)我们已经排除了之前的IF声明。


    这导致我们......

    BLANKVALUE(Over_ride_Date__c,
        IF(ISBLANK(Email_Start_Date__c) && ISBLANK(Live_Date__c),
            IF(ISBLANK(Estimated_Email_Start_Date__c) && ISBLANK(Estimated_G_L_Date__c),
                Estimated_Go_Live_Date__c,
                IF(ISBLANK(Estimated_G_L_Date__c) || BLANKVALUE(Estimated_Email_Start_Date__c, Estimated_G_L_Date__c) < Estimated_G_L_Date__c,
                    BLANKVALUE(Estimated_Email_Start_Date__c, Estimated_G_L_Date__c),
                    Estimated_G_L_Date__c
                )
            ),
            IF(ISBLANK(Live_Date__c) || BLANKVALUE(Email_Start_Date__c, Live_Date__c) < Live_Date__c,
                BLANKVALUE(Email_Start_Date__c, Live_Date__c),
                Live_Date__c
            )
        )
    )