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

时间:2017-05-04 08:33:46

标签: acumatica

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

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

enter image description here

这是我的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
}

1 个答案:

答案 0 :(得分:2)

我认为您应该使用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培训