Acumatica:TaxRegistrationID更改时更新供应商状态

时间:2019-07-06 00:01:42

标签: c# customization acumatica

我是Acumatica的新手,需要做一些非常简单的事情,但并没有真正理解语法或处理方法。

如果“购买设置”选项卡中的TaxRegistrationID更改,我想将“供应商状态”更新为“保留”。看起来很简单,但我只是没有采取正确的步骤。我从这里开始:

public class VendorMaint_Extension : PXGraphExtension<VendorMaint>
{
#region Event Handlers
    protected void LocationExtAddress_TaxRegistrationID_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
     {
      cache.SetValue<Vendor.Status>(e.Row, "Hold");  

      }

#endregion
}

我认为这过于简化了,但不确定应该是什么。有人可以给我一点指导吗?如果我了解这是如何工作的,我将有很长的路要走。

1 个答案:

答案 0 :(得分:1)

你做得很好。您还有几个问题。 1.在Acumatica的

字段状态声明中
[Vendor.status.List]

看起来像这样:

public class ListAttribute : PXStringListAttribute
  {
    public ListAttribute()
      : base(new string[5]{ "A", "H", "P", "I", "T" }, new string[5]
      {
        "Active",
        "On Hold",
        "Hold Payments",
        "Inactive",
        "One-Time"
      })
    {
    }
  }
}
从保持状态的声明中可以看到,

是负责任的键值“ H”。

  1. 页面声明中的字段TaxRegistrationID的CommitChanges设置为true。如果要立即做出反应,则需要在自定义中将C​​ommitChanges设置为true。
  2. 您需要更新特定的供应商,而不是更新缓存对象。
  3. 在供应商屏幕上,不是供应商类,而是VendorR类

因此,更正确的代码版本将如下所示:

     public class VendorMaint_Extension : PXGraphExtension<VendorMaint>
     {
        #region Event Handlers
        protected void LocationExtAddress_TaxRegistrationID_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
              Base.BAccount.SetValueExt<VendorR.status>(Base.BAccount.Current, "H"); 

        }

        #endregion
     }