下达并关闭 SO 发票后更新值
Update value after SO Invoice is Released and Close
我在 SO 发票屏幕 (SO303000) 上创建了一个自定义复选框字段,即使在发出发票并全额付款后也需要更新。
但是现在我不能这样做,因为一旦发票被释放并全额支付,它就会被禁用。
我尝试使用自动化步骤来完成,但它不起作用。我在“字段”选项卡上添加了自定义字段,以使其在 SO Invoices 的关闭步骤中启用。
请推荐。
要在发票发布 and/or 关闭后在 SO Invoices 顶级表单和交易网格上启用自定义字段,您应该为 SOInvoiceEntry 创建一个扩展并订阅 ARInvoice_RowSelected 和 ARTran_RowSelected 以下示例之后的事件:
public class SOInvoiceEntryExt : PXGraphExtension<SOInvoiceEntry>
{
private bool IsDisabled(ARInvoice doc)
{
return doc.Released == true
|| doc.Voided == true
|| doc.DocType == ARDocType.SmallCreditWO
|| doc.PendingPPD == true
|| doc.DocType == ARDocType.FinCharge
&& !Base.IsProcessingMode
&& Base.Document.Cache.GetStatus(doc) == PXEntryStatus.Inserted;
}
public void ARInvoice_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
ARInvoice doc = e.Row as ARInvoice;
if (doc == null) return;
if (IsDisabled(doc))
{
PXUIFieldAttribute.SetEnabled<ARInvoiceExt.usrCustomTextField>(
sender, doc, true);
Base.Transactions.Cache.AllowUpdate = true;
}
}
public void ARTran_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
var doc = Base.Document.Current;
ARTran row = e.Row as ARTran;
if (row != null && doc != null && IsDisabled(doc))
{
PXUIFieldAttribute.SetEnabled(sender, row, false);
PXUIFieldAttribute.SetEnabled<ARTranExt.usrCustomTextField>(
sender, row, true);
}
}
}
此外,您需要在 Closed 自动化步骤中启用添加到顶级表单的自定义字段:
这是应用上述更改后 SO 发票屏幕的工作方式:
我在 SO 发票屏幕 (SO303000) 上创建了一个自定义复选框字段,即使在发出发票并全额付款后也需要更新。
但是现在我不能这样做,因为一旦发票被释放并全额支付,它就会被禁用。
我尝试使用自动化步骤来完成,但它不起作用。我在“字段”选项卡上添加了自定义字段,以使其在 SO Invoices 的关闭步骤中启用。
请推荐。
要在发票发布 and/or 关闭后在 SO Invoices 顶级表单和交易网格上启用自定义字段,您应该为 SOInvoiceEntry 创建一个扩展并订阅 ARInvoice_RowSelected 和 ARTran_RowSelected 以下示例之后的事件:
public class SOInvoiceEntryExt : PXGraphExtension<SOInvoiceEntry>
{
private bool IsDisabled(ARInvoice doc)
{
return doc.Released == true
|| doc.Voided == true
|| doc.DocType == ARDocType.SmallCreditWO
|| doc.PendingPPD == true
|| doc.DocType == ARDocType.FinCharge
&& !Base.IsProcessingMode
&& Base.Document.Cache.GetStatus(doc) == PXEntryStatus.Inserted;
}
public void ARInvoice_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
ARInvoice doc = e.Row as ARInvoice;
if (doc == null) return;
if (IsDisabled(doc))
{
PXUIFieldAttribute.SetEnabled<ARInvoiceExt.usrCustomTextField>(
sender, doc, true);
Base.Transactions.Cache.AllowUpdate = true;
}
}
public void ARTran_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
var doc = Base.Document.Current;
ARTran row = e.Row as ARTran;
if (row != null && doc != null && IsDisabled(doc))
{
PXUIFieldAttribute.SetEnabled(sender, row, false);
PXUIFieldAttribute.SetEnabled<ARTranExt.usrCustomTextField>(
sender, row, true);
}
}
}
此外,您需要在 Closed 自动化步骤中启用添加到顶级表单的自定义字段:
这是应用上述更改后 SO 发票屏幕的工作方式: