如何在 ARInvoice 发布后启用 AR301000 header 上的自定义字段?
How to enable a custom field on AR301000 header after the ARInvoice is released?
一些用户字段已添加到 ARInvoice 输入屏幕 (AR301000) 的 top-level 表单中。用户希望在发票发布后修改特定的用户文本字段 - 实现此目的的最佳方法是什么?
对于 ARInvoice 条目屏幕,所有 UI 特定于顶级表单的表示逻辑仅在 ARInvoiceEntry BLC 中实现:
public class ARInvoiceEntry : ARDataEntryGraph<ARInvoiceEntry, ARInvoice>, PXImportAttribute.IPXPrepareItems
{
...
protected virtual void ARInvoice_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
ARInvoice doc = e.Row as ARInvoice;
if (doc == null) return;
...
bool shouldDisable = doc.Released == true
|| doc.Voided == true
|| doc.DocType == ARDocType.SmallCreditWO
|| doc.PendingPPD == true
|| doc.DocType == ARDocType.FinCharge && !IsProcessingMode && cache.GetStatus(doc) == PXEntryStatus.Inserted;
if (shouldDisable)
{
bool isUnreleasedWO = doc.Released != true && doc.DocType == ARDocType.SmallCreditWO;
bool isUnreleasedPPD = doc.Released != true && doc.PendingPPD == true;
PXUIFieldAttribute.SetEnabled(cache, doc, false);
PXUIFieldAttribute.SetEnabled<ARInvoice.dueDate>(cache, doc, (doc.DocType != ARDocType.CreditMemo && doc.DocType != ARDocType.SmallCreditWO && doc.DocType != ARDocType.FinCharge) && doc.OpenDoc == true && doc.PendingPPD != true);
PXUIFieldAttribute.SetEnabled<ARInvoice.discDate>(cache, doc, (doc.DocType != ARDocType.CreditMemo && doc.DocType != ARDocType.SmallCreditWO && doc.DocType != ARDocType.FinCharge) && doc.OpenDoc == true && doc.PendingPPD != true);
PXUIFieldAttribute.SetEnabled<ARInvoice.emailed>(cache, doc, true);
cache.AllowDelete = isUnreleasedWO || isUnreleasedPPD;
cache.AllowUpdate = true;
Transactions.Cache.AllowDelete = false;
Transactions.Cache.AllowUpdate = false;
Transactions.Cache.AllowInsert = false;
..
}
else
{
...
}
...
}
...
}
要在 ARInvoice 发布后在 AR301000 顶级表单上启用自定义字段,您应该声明 ARInvoiceEntry 的扩展并按照以下示例订阅 ARInvoice_RowSelected 处理程序:
public class ARInvoiceEntryExt : PXGraphExtension<ARInvoiceEntry>
{
public void ARInvoice_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
ARInvoice doc = e.Row as ARInvoice;
if (doc == null) return;
bool shouldDisable = doc.Released == true || doc.Voided == true ||
doc.DocType == ARDocType.SmallCreditWO || doc.PendingPPD == true || doc.DocType == ARDocType.FinCharge
&& !Base.IsProcessingMode && sender.GetStatus(doc) == PXEntryStatus.Inserted;
if (shouldDisable)
{
PXUIFieldAttribute.SetEnabled<ARInvoiceExt.usrCustomTextField>(sender, doc, true);
}
}
}
一些用户字段已添加到 ARInvoice 输入屏幕 (AR301000) 的 top-level 表单中。用户希望在发票发布后修改特定的用户文本字段 - 实现此目的的最佳方法是什么?
对于 ARInvoice 条目屏幕,所有 UI 特定于顶级表单的表示逻辑仅在 ARInvoiceEntry BLC 中实现:
public class ARInvoiceEntry : ARDataEntryGraph<ARInvoiceEntry, ARInvoice>, PXImportAttribute.IPXPrepareItems
{
...
protected virtual void ARInvoice_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
ARInvoice doc = e.Row as ARInvoice;
if (doc == null) return;
...
bool shouldDisable = doc.Released == true
|| doc.Voided == true
|| doc.DocType == ARDocType.SmallCreditWO
|| doc.PendingPPD == true
|| doc.DocType == ARDocType.FinCharge && !IsProcessingMode && cache.GetStatus(doc) == PXEntryStatus.Inserted;
if (shouldDisable)
{
bool isUnreleasedWO = doc.Released != true && doc.DocType == ARDocType.SmallCreditWO;
bool isUnreleasedPPD = doc.Released != true && doc.PendingPPD == true;
PXUIFieldAttribute.SetEnabled(cache, doc, false);
PXUIFieldAttribute.SetEnabled<ARInvoice.dueDate>(cache, doc, (doc.DocType != ARDocType.CreditMemo && doc.DocType != ARDocType.SmallCreditWO && doc.DocType != ARDocType.FinCharge) && doc.OpenDoc == true && doc.PendingPPD != true);
PXUIFieldAttribute.SetEnabled<ARInvoice.discDate>(cache, doc, (doc.DocType != ARDocType.CreditMemo && doc.DocType != ARDocType.SmallCreditWO && doc.DocType != ARDocType.FinCharge) && doc.OpenDoc == true && doc.PendingPPD != true);
PXUIFieldAttribute.SetEnabled<ARInvoice.emailed>(cache, doc, true);
cache.AllowDelete = isUnreleasedWO || isUnreleasedPPD;
cache.AllowUpdate = true;
Transactions.Cache.AllowDelete = false;
Transactions.Cache.AllowUpdate = false;
Transactions.Cache.AllowInsert = false;
..
}
else
{
...
}
...
}
...
}
要在 ARInvoice 发布后在 AR301000 顶级表单上启用自定义字段,您应该声明 ARInvoiceEntry 的扩展并按照以下示例订阅 ARInvoice_RowSelected 处理程序:
public class ARInvoiceEntryExt : PXGraphExtension<ARInvoiceEntry>
{
public void ARInvoice_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
ARInvoice doc = e.Row as ARInvoice;
if (doc == null) return;
bool shouldDisable = doc.Released == true || doc.Voided == true ||
doc.DocType == ARDocType.SmallCreditWO || doc.PendingPPD == true || doc.DocType == ARDocType.FinCharge
&& !Base.IsProcessingMode && sender.GetStatus(doc) == PXEntryStatus.Inserted;
if (shouldDisable)
{
PXUIFieldAttribute.SetEnabled<ARInvoiceExt.usrCustomTextField>(sender, doc, true);
}
}
}