Acumatica请购单总成本自定义计算

Acumatica请购单总成本自定义计算,acumatica,Acumatica,我添加了三个自定义十进制数?请购单主数据(RQ302000)上的字段,需要使用行基总成本/主数据总成本比率将这三个字段的总值按比例分配到每个请购行,并将结果显示为每行的附加成本(也是自定义小数?字段)。 更新这三个新字段时,应触发此计算 我不明白的是: 1.应修改哪些与此需求相关的事件 2.如果是主字段上的事件,如何从行扩展字段获取值 3.如果是行字段上的事件,如何从主扩展字段获取值 1。“应修改哪些与此需求相关的事件?” 在类似于您的场景中,应该使用RowInserted、RowUpdate和

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

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

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

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

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

  • 在一对多关系中插入详细数据记录
  • 以多对一关系更新主数据记录
  • 以一对一关系插入或更新相关数据记录
行更新的事件处理程序用于实现以下业务逻辑:

  • 以多对一关系更新主数据记录
  • 在一对多关系中插入或更新详细数据记录
  • 以一对一关系更新相关数据记录
行删除事件处理程序用于实现以下业务逻辑:

  • 删除一对多关系中的详细数据记录
  • 以多对一关系更新主数据记录
  • 删除或更新一对一关系中的相关数据记录
在您的场景中,还应考虑以下情况:

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

  • 将包含修改字段的数据记录的相关字段指定为默认值或更新它们
  • 更新以下任何内容:
    • 详细数据以一对多关系记录
    • 一对一关系中的相关数据记录
    • 主数据以多对一关系记录
有关Acumatica框架事件模型的更多信息和示例,请参阅帮助->Acumatica框架->API参考->事件模型和T200开发人员类中的API参考

2。“如果是主字段上的事件,如何从行扩展字段中获取值?”

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

  • GetExtension()泛型方法可用于每个DAC实例:

    ContactExt contactExt = curLead.GetExtension<ContactExt>();
    
    foreach(RQRequisitionLine line in Base.Lines.Select())
    {
        RQRequisitionLineExt lineExt = line.GetExtension<RQRequisitionLineExt>();
    }
    
    Base.Document.Current.GetExtension<RQRequisitionExt>();
    
    ContactExt ContactExt=curLead.GetExtension();
    
  • 在非泛型PXCache类中声明的GetExtension(object)泛型方法

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

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

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

    ContactExt contactExt = curLead.GetExtension<ContactExt>();
    
    foreach(RQRequisitionLine line in Base.Lines.Select())
    {
        RQRequisitionLineExt lineExt = line.GetExtension<RQRequisitionLineExt>();
    }
    
    Base.Document.Current.GetExtension<RQRequisitionExt>();
    
    foreach(RQRequisitionLine在Base.Lines.Select()中)
    {
    RQRequisitionLineExt lineExt=line.GetExtension();
    }
    
    3。“如果是行字段上的事件,如何从主扩展字段获取值”

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

    ContactExt contactExt = curLead.GetExtension<ContactExt>();
    
    foreach(RQRequisitionLine line in Base.Lines.Select())
    {
        RQRequisitionLineExt lineExt = line.GetExtension<RQRequisitionLineExt>();
    }
    
    Base.Document.Current.GetExtension<RQRequisitionExt>();
    
    Base.Document.Current.GetExtension();
    
    假设我在主数据字段中使用fieldupdated事件,从line数据字段中获取值,通过特定的公式计算得到预期结果。那么如何将结果放在line数据字段中?将计算值分配给line数据字段,并调用Lines数据视图上的更新方法
    Base.Lines.Update(line)