自定义在SO和PO中添加库存项目

时间:2017-02-08 05:52:54

标签: acumatica

目前我在"添加库存商品" acumatica中的销售订单和采购订单,在此定制中,我添加了"标记为"列虽然它已经存在,但它不可编辑,我怎样才能让它为用户编辑?

此处附有自定义"添加库存商品"。

的屏幕截图

完成的事情:

  • 扩展的SoSiteStatusSelected DAC。
  • 已编辑.aspx并添加了标记为列SO Marked For

2 个答案:

答案 0 :(得分:1)

将您的字段添加到SOOrderStatusSelected DAC扩展中。它必须是未绑定的字段,因为DAC未绑定到表。您可以在事件处理程序中添加更多逻辑以保留到数据库。

public class SOSiteStatusSelectedExt : PXCacheExtension<PX.Objects.SO.SOSiteStatusSelected>
{
    [PXString]
    [PXUIField(DisplayName="Marked For")]
    public virtual string UsrMarkedFor { get; set; }
    public abstract class usrMarkedFor : IBqlField { }
}

在RowSelected事件中启用SOOrderEntry图扩展中的字段:

public class SOOrderEntryExtension : PXGraphExtension<SOOrderEntry>
{
     protected virtual void SOSiteStatusSelected_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
     {
          PXUIFieldAttribute.SetEnabled<PX.Objects.SO.SOSiteStatusSelectedExt.usrMarkedFor>(sender, e.Row, true);
     }

在SalesOrder屏幕的Acumatica v6.10.0010中测试:

enter image description here

答案 1 :(得分:1)

深入研究继承自INSiteStatusLookup的SOSiteStatusLookup,你会发现&#39; OnRowSelected&#39;它会禁用所有字段,除了&#39;已选择&#39;和&#39; QtySelected&#39;列。要覆盖此内容,请尝试将以下内容添加到SOOrderEntry图表扩展中,以便将要添加到此视图的任何字段添加为可从您的扩展程序中修改...

protected virtual void SOSiteStatusSelected_RowSelected(PXCache sender, PXRowSelectedEventArgs e, PXRowSelected del)
{
    del?.Invoke(sender, e);         

    PXUIFieldAttribute.SetEnabled<MyExtension.MyField>(sender, e.Row, true);
}

替换&#39; MyExtension&#39;使用您的类扩展名和&#39; MyField&#39;带有字段名称标记。