Acumatica申请总成本自定义计算

时间:2017-01-10 01:35:39

标签: acumatica

我添加了三个自定义小数?在申请主数据(RQ302000)上的字段,需要使用行基总成本/主总成本比率将这三个字段的总值按比例分配到每个申请行,并将结果显示为每行的附加成本(也是自定义小数?字段) 。 当这三个新字段更新时,应该触发此计算。

我不明白的是:
1.应该修改哪些事件与此需求相关 2.如果是主场上的事件,如何从线路扩展栏中获取值 3.如果它是事件在线字段,如何从主扩展字段

获取值

Requisition Custom Screen

1 个答案:

答案 0 :(得分:1)

<强> 1。 “应该修改哪些与此需求相关的事件?”

在类似于你的场景中,应该使用RowInserted,RowUpdated和RowDeleted处理程序的组合:

RowInserted 事件处理程序用于实现以下业务逻辑:

  • 以一对多的关系插入详细数据记录。
  • 以多对一关系更新主数据记录。
  • 以一对一的关系插入或更新相关数据记录。

RowUpdated 事件处理程序用于实现以下业务逻辑:

  • 以多对一关系更新主数据记录。
  • 以一对多的关系插入或更新详细数据记录。
  • 以一对一的关系更新相关数据记录。

RowDeleted 事件处理程序用于实现以下业务逻辑:

  • 以一对多关系删除详细数据记录。
  • 以多对一关系更新主数据记录。
  • 以一对一的关系删除或更新相关数据记录。

还可以考虑使用FieldUpdated处理程序:

FieldUpdated 事件处理程序用于在以下情况下实现与DAC字段值的更改相关联的业务逻辑:

  • 将包含已修改字段的数据记录的相关字段指定为默认值或更新它们
  • 更新以下任何内容:
    • 详细数据记录为一对多关系
    • 相关数据以一对一的关系记录
    • 主数据以多对一关系记录

请参阅帮助中的 API参考 - &gt; Acumatica框架 - &gt; API参考 - &gt; Event Model和T200开发人员课程,了解有关Acumatica Framework事件模型的其他信息和示例。

<强> 2。 “如果它是主场上的事件,如何从线路扩展字段获取值?”

在Acumatica中,自定义字段通过DAC扩展声明。要访问DAC扩展对象,可以使用以下方法:

  1. 每个DAC实例可用的GetExtension()泛型方法:

    ContactExt contactExt = curLead.GetExtension<ContactExt>();
    
  2. 在非通用PXCache类中声明的GetExtension(object)泛型方法

    ContactExt contactExt = Base.LeadCurrent.Cache.GetExtension<ContactExt>(curLead);
    

    ContactExt contactExt = Base.Caches[typeof(Contact)].GetExtension<ContactExt>(curLead);
    
  3. PXCache泛型类的GetExtension(object)静态泛型方法

    ContactExt contactExt = PXCache<Contact>.GetExtension<ContactExt>(curLead);
    
  4. 要从行扩展字段获取值,您应首先从Lines数据视图中选择记录,然后使用上述方法之一访问DAC扩展类的实例,例如:

    foreach(RQRequisitionLine line in Base.Lines.Select())
    {
        RQRequisitionLineExt lineExt = line.GetExtension<RQRequisitionLineExt>();
    }
    

    第3。 “如果它是事件在线字段,如何从主扩展字段获取值”

    这很简单:上述相同的3种方法,这次应用于主文档数据视图的Current属性,例如:

    Base.Document.Current.GetExtension<RQRequisitionExt>();