Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段

在上一篇 “管理沙盒(定制化)小细节1” 的随笔中,我们使用公式法在 “业务机会” 对象(单头)上建立了 “利润合计” 字段,并将它等于 “业务机会收入” 子对象中的各行(单行)利润之和,但是BI报表的主题区域中抓不到我们新建的字段。那么本篇随笔我们将介绍另外一种可以达到需求的方法,并且让BI报表能抓取到。

在操作之前,我们来看具体的定制化业务需求:

实际业务需求:如图1,在编辑业务机会:汇总页面中 “销售渠道” 字段下添加 “利润合计” 字段,其值为下面产品行中的利润总和,不可人为更新。

     分析:既然不使用公式法创建字段,我们便考虑使用普通的数值字段,这样报表便能抓取到,之后通过对象触发器来达到能等于各行利润之和的目的。

Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段图1:编辑业务机会:汇总

现在,我们开始在 “管理沙盒” 中进行定制化:

     (1)第1步:在 “设置和操作” 菜单的 “管理沙盒” 下创建沙盒,然后选中沙盒点击 “设置为活动状态”,详细操作可以参考 “管理沙盒(定制化)小细节1” 随笔截图

     (2)第2步:在 “导航栏->更多” 路径下,进入到 “应用程序编辑器”,详细操作可以参考 “管理沙盒(定制化)小细节1” 随笔截图。

     (3)第3步:进入  “应用程序编辑器” 后,在 “销售” 应用下找到 “业务机会” 对象,点击 “字段”,详细操作可以参考 “管理沙盒(定制化)小细节1” 随笔截图

(4)第4步:在 “业务机会”对象的 “字段” 下,新建 “利润合计(非公式)” 字段,详细步骤:

              [4.1] 点击 “新建”,数据类型选择 “数字”,填写字段基本信息,点击 “下一步”,如图2(注意名称和显示标签)。

              [4.2] 创建字段后,在 “业务机会->服务器脚本” 路径下,进入到 “对象触发器”。

               注意:Oracle Sales Cloud 定制使用的是Groovy脚本语言,比较简洁方便,省时省力(后续会单独介绍),此处脚本为:

def newsum = ChildRevenue.sum ('Profit_c') // 定义变量

if (profitSumCux_c != newsum){

setAttribute ('profitSumCux_c ' , newsum) //当if条件满足时,执行 “利润合计(非公式)” 值等于newsum

}

Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段图2:创建数字字段

Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段图3:对象触发器

Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段图4:新建对象触发器

(5)第5步:通过前面几步,“利润合计” 字段已经创建成功,现在要在 “业务机会->页面” 下部署到详细页面中,详细步骤:

               [5.1] 在 “业务机会->页面” 路径下,进入 “页面”,找到详细信息页面布局,详细操作可以参考 “管理沙盒(定制化)小细节1”随笔截图。

                 注意:默认布局是允许修改的,但是一般而言,不建议修改默认布局,可以复制出来新的布局 “利润显示布局” 进行修改,勾选有效即可。

               [5.2] 将 “利润合计” 字段添加显示,详细操作可以参考 “管理沙盒(定制化)小细节1”随笔截图。

       (6)第6步:在 沙盒中查看显示效果,如图5,确定后发布沙盒即可。

                  注意:最后完成定制功能后别忘了发布沙盒,点击沙盒管理中点击 “发布” 按钮即可。

Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段图5:效果展示

总结:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段,和上篇利用公式法达到同样的目的,并且BI报表主题区域可以抓取到新建的字段。需要注意:该方法创建的 “利润合计” 字段也有以下显著弊端:[1] 事实上,该方法创建字段如果部署前端页面的话,是可以人为更新的(后面我们可以介绍如何使用验证规则不让人为修改),不过如果只为了报表抓取,大可不必部署到前端页面;[2] 由于该方法中使用的触发器是 Before Update in Database,那么对于部署之前的业务机会数据是没法改变的(即之前业务机会页面上的 “利润合计(非公式)” 为空),所以如果在实际项目中,一定要慎重,并且做好以前的数据处理方案。

谢谢,欢迎大家随时指正和交流!

上一篇:[bzoj3226][Sdoi2008]校门外的区间——线段树


下一篇:[Leetcode][Python]40: Combination Sum II