【发布时间】:2021-03-27 02:28:39
【问题描述】:
我的用例是,在制作账单时,客户希望能够指定未应用折扣的部分账单金额。 (例如,总账单为 125 美元,客户通过货到付款获得 10% 的折扣,但该折扣不适用于运费。所以,他们想说:“其中 25 美元不可折扣”)
然后,我想根据这个自定义字段覆盖折扣金额字段。
我已通过自定义编辑器向我的 APInvoice DAC 添加了一个数据字段,然后在我的 C# 代码中将其作为扩展激活:
namespace AcmeCorp.DAC
{
[PXCacheName("APInvoice")]
public class APInvoiceExt : PXCacheExtension<APInvoice>
{
public static bool IsActive() { return true; }
// Auto-Generated from ERP Customization Editor
#region UsrAmountExcludedFromDiscount
[PXDBDouble()]
[PXUIField(DisplayName = "Amt Excluded Discount")]
public virtual double? UsrAmountExcludedFromDiscount { get; set; }
public abstract class usrAmountExcludedFromDiscount : PX.Data.BQL.BqlDouble.Field<usrAmountExcludedFromDiscount> { }
#endregion
}
}
现在我想检查该字段中的值以了解如何调整折扣字段。我如何获得这个值?
[编辑] 这允许我获取扩展名,但该值为 null,即使我检查了记录,并且那里存在一个值。
我先设置了一个using语句:
using APInvoiceExtension = Acme.DAC.APInvoiceExt;
然后我可以在 GetExtension() 方法中使用它:
protected virtual void _(Events.RowSelected<APInvoice> e)
{
if (e.Row == null) return;
double? Amt2Exclude = null;
APInvoice apInvoice = e.Row as APInvoice;
var chkRef = apInvoice.RefNbr;
var ext = PXCache<APInvoice>.GetExtension<APInvoiceExtension>(apInvoice);
if (ext != null)
{
Amt2Exclude = ext.UsrAmountExcludedFromDiscount;
}
}
RefNbr 的值很好。但是,正如我所说,UsrAmountExcludedFromDiscount 的值为 null。
【问题讨论】:
-
PXCache
.GetExtension (apInvoice);