【问题标题】:Customize Add Stock Item in SO and PO自定义在 SO 和 PO 中添加库存项目
【发布时间】:2017-02-08 05:52:53
【问题描述】:

目前我正在 acumatica 中的销售订单和采购订单的“添加库存项目”中进行一些自定义,在此自定义中我添加了“标记为”列,但即使它已经存在也无法编辑,我该如何制作用户可以编辑吗?

这里附上自定义“添加库存商品”的截图。

完成的事情:

  • 扩展的 SoSiteStatusSelected DAC。
  • 编辑 .aspx 并添加标记为列

【问题讨论】:

    标签: acumatica


    【解决方案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);
         }
    

    在 Acumatica v6.10.0010 中针对 SalesOrder 屏幕进行了测试:

    【讨论】:

    • 我收到一个错误“对象必须是字符串类型”,这是在我为标记为屏幕中的选择器进行标记之后。我尝试将数据类型更改为字符串,但仍然出现错误。
    【解决方案2】:

    深入研究从 INSiteStatusLookup 继承的 SOSiteStatusLookup,您会发现“OnRowSelected”会禁用除“Selected”和“QtySelected”列之外的所有字段。要覆盖这一点,请尝试将以下内容添加到 SOOrderEntry 图形扩展中,以将您想要添加到此视图的任何字段作为可从扩展中编辑的字段...

    protected virtual void SOSiteStatusSelected_RowSelected(PXCache sender, PXRowSelectedEventArgs e, PXRowSelected del)
    {
        del?.Invoke(sender, e);         
    
        PXUIFieldAttribute.SetEnabled<MyExtension.MyField>(sender, e.Row, true);
    }
    

    将“MyExtension”替换为您的类扩展名,将“MyField”替换为字段名称的标记。

    【讨论】:

      猜你喜欢
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 2017-11-18
      相关资源
      最近更新 更多