SOSitesStatus选择的Acumatica扩展

时间:2016-06-15 08:21:26

标签: acumatica

我几天来一直在Acumatica扩展上遇到这个问题,似乎无法弄清楚解决方案。我在“销售订单”的“库存查找”对话框中添加了一个操作(参见下面的屏幕截图),操作是将QtySelected更新为1并将我添加的字段更新为“testBrand”的品牌。它是SOSitesStatusSelected表的扩展,但每当我点击动作时,它只会更新QtySelected而不是我添加的Field Brand。

您可以参考下面的代码,谢谢,我感谢您的帮助。

enter image description here

//DAC
  #region UsrBrand                            
  [PXUIField(DisplayName = "Brand", Visible = true, Enabled = true)]    
  public virtual string UsrBrand{get;set;}
  public abstract class usrBrand : IBqlField{}    
  #endregion

//BLC
public PXAction<PX.Objects.SO.SOOrder> updateAttributes;  
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Update Attributes")]
protected void UpdateAttributes()
{
  this.Base.sitestatus.AllowInsert= true;
  this.Base.sitestatus.AllowUpdate= true;
  foreach (SOSiteStatusSelected line in this.Base.sitestatus.Select())
  {                               

    line.QtySelected = 1;
    this.Base.sitestatus.Update(line);

    SOSiteStatusSelectedExt rowExt = this.Base.sitestatus.Cache.GetExtension<SOSiteStatusSelectedExt>(line);
    rowExt.UsrBrand = "testBrand";
    this.Base.sitestatus.Cache.Update(rowExt);        

  }
}

1 个答案:

答案 0 :(得分:0)

在这种情况下,您的扩展程序SOSiteStatusSelectedExt不是单独的项目。它实际上是基本记录的一部分。所以你不需要单独更新它。

line.QtySelected = 1;

SOSiteStatusSelectedExt rowExt = this.Base.sitestatus.Cache.GetExtension<SOSiteStatusSelectedExt>(line);
rowExt.UsrBrand = "testBrand";

this.Base.sitestatus.Update(line);