如何将自动编号更改为 Acumatica 中现有的自动编号序列?

How to change auto numbering to existing auto numbering sequence in Acumatica?

在现金销售(AR304000 屏幕)中,我想设置它的自动编号顺序,从发票编号顺序到付款编号顺序。

我尝试了以下代码,但无济于事。保存新销售会引发错误。请参阅所附照片以了解错误。

这是我的 DAC 代码:

public class ARCashSaleExtension : PXCacheExtension<ARCashSale>
{
    #region RefNumber

    [PXDBString(15, IsKey = true, InputMask = ">CCCCCCCCCCCCCCC", IsUnicode = true, BqlField = typeof(**PX.Objects.AR.ARPayment.refNbr**))]
    [PXDefault()]
    [PXUIField(DisplayName = "Reference Nbr.", Visibility = PXUIVisibility.SelectorVisible)]
    [ARPaymentType.RefNbr(typeof(Search2<ARCashSale.refNbr,
        InnerJoinSingleTable<Customer, On<ARCashSale.customerID, Equal<Customer.bAccountID>>>,
        Where<ARCashSale.docType, Equal<Current<ARCashSale.docType>>,
        And2<Where<ARCashSale.origModule, NotEqual<BatchModule.moduleSO>, Or<ARCashSale.released, Equal<boolTrue>>>,
        And<Match<Customer, Current<AccessInfo.userName>>>>>, OrderBy<Desc<ARCashSale.refNbr>>>), Filterable = true)]
    [**ARPaymentType.Numbering()**]
    [PXFieldDescription]
    public String RefNbr
    {
        get;
        set;
    }
    #endregion
}

我认为您应该使用 AutoNumberAttribute 而不是 ARPaymentType.Numbering 属性。

[AutoNumber(typeof(ARCashSale.docType), typeof(ARCashSale.docDate),
                new string[] { CashSale, CashReturn },
                new Type[] { typeof(ARSetup.paymentNumberingID), typeof(ARSetup.paymentNumberingID) })]

此外,我看不出有任何理由使用 ARPaymentType.RefNbr 属性而不是 ARCashSaleType.RefNbr 属性。

还有一件事:从我的观点来看,最好在图形扩展上使用 Cache_Attached 来重写一个字段上的属性,而不是创建 DAC 扩展。

这里是带有 CacheAttached 的图形扩展示例:

public partial class ARCashSaleEntryExt : PXGraphExtension<ARCashSaleEntry>
{
    [PXMergeAttributes(Method = MergeMethod.Merge)] // that attribute is here to keep all attributes of base field except the one that should be replaced.
    [AutoNumber(typeof(ARCashSale.docType), typeof(ARCashSale.docDate),
            new string[] { ARDocType.CashSale, ARDocType.CashReturn },
            new Type[] { typeof(ARSetup.paymentNumberingID), typeof(ARSetup.paymentNumberingID) })]
    public virtual void ARCashSale_RefNbr_CacheAttached(PXCache sender)
    {
    }
}

要了解有关 cache_attached 事件的更多信息,请参阅 T200 培训