Acumatica 当PO处于打开状态时,如何在PO301000上启用自定义字段?
我已经在采购订单输入屏幕中添加了一个自定义项,PO.30.10.00。自定义添加了四个日期字段、一个组合框文本字段和一个字符串(10)字段 目前,这些字段仅在订单处于保留状态时才可编辑。用户希望能够随时编辑这些字段。他们使用这些字段来跟踪不同的POs,并将在这些字段上建立通用查询,以便通过维护这些字段来传达POs的状态Acumatica 当PO处于打开状态时,如何在PO301000上启用自定义字段?,acumatica,acumatica-kb,Acumatica,Acumatica Kb,我已经在采购订单输入屏幕中添加了一个自定义项,PO.30.10.00。自定义添加了四个日期字段、一个组合框文本字段和一个字符串(10)字段 目前,这些字段仅在订单处于保留状态时才可编辑。用户希望能够随时编辑这些字段。他们使用这些字段来跟踪不同的POs,并将在这些字段上建立通用查询,以便通过维护这些字段来传达POs的状态 订单处于打开状态时,承诺日期可编辑。我们希望这些自定义字段可以像承诺日期一样进行编辑。采购订单屏幕主要由自动化步骤驱动。当采购订单处于打开状态时,这一事实使得对自动化步骤的更改成
订单处于打开状态时,承诺日期可编辑。我们希望这些自定义字段可以像承诺日期一样进行编辑。采购订单屏幕主要由自动化步骤驱动。当采购订单处于打开状态时,这一事实使得对自动化步骤的更改成为启用自定义字段所需的强制性步骤: 要在采购订单摘要区域和文档详细信息网格上启用自定义文本字段,应修改NL Open步骤,添加2行,如上面的屏幕截图所示 添加这些行后,采购订单摘要区域上的自定义文本字段将变得可编辑,但是,由于POOrderEntry BLC中如何实现POLine_RowSelected处理程序,文档详细信息网格中的自定义文本字段列仍然是只读的:
[Serializable]
public class POOrderEntry : PXGraph<POOrderEntry, POOrder>, PXImportAttribute.IPXPrepareItems
{
...
protected virtual void POLine_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
POLine row = (POLine)e.Row;
POOrder doc = this.Document.Current;
if (row == null) return;
if (IsExport) return;//for performance
bool isLinkedToSO = row.Completed == true && IsLinkedToSO(row);
if (this.Document.Current.Hold != true || isLinkedToSO)
{
PXUIFieldAttribute.SetEnabled(sender, e.Row, false);
...
}
...
}
...
}
[可序列化]
公共类POOrderEntry:PXGraph、PXImportAttribute.IPXPrepareItems
{
...
已选择受保护的虚拟void POLine_行(PXCache发送方,PXRowSelectedEventArgs e)
{
POLine行=(POLine)e.row;
POOrder doc=this.Document.Current;
if(row==null)返回;
if(IsExport)返回;//用于性能
bool isLinkedToSO=row.Completed==true&&isLinkedToSO(row);
if(this.Document.Current.Hold!=true | | isLinkedToSO)
{
PXUIFieldAttribute.SetEnabled(发送方,例如行,false);
...
}
...
}
...
}
要启用自定义文本字段列进行编辑,还应在POOrderEntry BLC扩展中订阅POLine_RowSelected处理程序,如下面的代码段所示:
public class POOrderEntryExt : PXGraphExtension<POOrderEntry>
{
public void POLine_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
POLine line = (POLine)e.Row;
POOrder order = Base.Document.Current;
if (order == null || line == null || Base.IsExport) return;
if (order.Status == POOrderStatus.Open)
{
PXUIFieldAttribute.SetEnabled<POLineExt.usrCustomTextField>(sender, line, true);
}
}
}
public类POOrderEntryExt:PXGraphExtension
{
已选择公共无效POLine_row(PXCache发送方,PXRowSelectedEventArgs e)
{
POLine line=(POLine)e.Row;
POOrder order=Base.Document.Current;
if(order==null | | line==null | | Base.IsExport)返回;
if(order.Status==POOrderStatus.Open)
{
PXUIFieldAttribute.SetEnabled(发送方,行,真);
}
}
}
在自动化步骤中进行更改并订阅POOrderEntry BLC扩展中的POLine_Row Selected handler后,当采购订单处于打开状态时,采购订单摘要区域和文档详细信息网格上的自定义字段应打开以进行编辑:
值得一提的是,如果遵循此操作仅启用详细信息网格中的字段(无需启用主文档标题中的字段),则启用“保存”按钮仍需要启用主文档标题(文档/订单号)中字段的自动化步骤。