Acumatica PX默认掉落列表

Acumatica PXDefault Drop List

在应收帐款模块的付款和应用程序屏幕中添加新行时,我试图将默认值更改为 Debit Memo。我试过设置 PXDefault(ARDocType.DebitMemo),但它似乎不起作用。谁能指出我正确的方向?

支付和应用程序页面使用一些有趣的逻辑来确定使用的默认值,它们在 header 文档的 rowselected 事件期间的调用中定义它。

protected virtual void ARPayment_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
        {
.....
SetDocTypeList(e.Row);
.....
}


    public static void SetDocTypeList(PXCache cache, string docType)
    {
        string defValue = ARDocType.Invoice;
        List<string> values = new List<string>();
        List<string> labels = new List<string>();

        if (docType == ARDocType.Refund)
        {
            defValue = ARDocType.CreditMemo;
            values.AddRange(new string[] { ARDocType.CreditMemo, ARDocType.Payment, ARDocType.Prepayment });
            labels.AddRange(new string[] { Messages.CreditMemo, Messages.Payment, Messages.Prepayment });
        }
        else if (docType == ARDocType.Payment || docType == ARDocType.VoidPayment)
        {
            values.AddRange(new string[] { ARDocType.Invoice, ARDocType.DebitMemo, ARDocType.CreditMemo, ARDocType.FinCharge });
            labels.AddRange(new string[] { Messages.Invoice, Messages.DebitMemo, Messages.CreditMemo, Messages.FinCharge });
        }
        else
        {
            values.AddRange(new string[] { ARDocType.Invoice, ARDocType.DebitMemo, ARDocType.FinCharge });
            labels.AddRange(new string[] { Messages.Invoice, Messages.DebitMemo, Messages.FinCharge });
        }

        if (!PXAccess.FeatureInstalled<FeaturesSet.overdueFinCharges>() && values.Contains(ARDocType.FinCharge) && labels.Contains(Messages.FinCharge))
        {
            values.Remove(ARDocType.FinCharge);
            labels.Remove(Messages.FinCharge);
        }

        PXDefaultAttribute.SetDefault<ARAdjust.adjdDocType>(cache, defValue);
        PXStringListAttribute.SetList<ARAdjust.adjdDocType>(cache, null, values.ToArray(), labels.ToArray());
    }

    private void SetDocTypeList(object Row)
    {
        ARPayment row = Row as ARPayment;
        if (row != null)
        {
            SetDocTypeList(Adjustments.Cache, row.DocType);
        }
    }

要获得您需要的默认值,您可以执行以下代码:

public class ARPaymentEntryExtension : PXGraphExtension<ARPaymentEntry>
{
    protected virtual void ARPayment_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
    {
            PXDefaultAttribute.SetDefault<ARAdjust.adjdDocType>(Base.Adjustments.Cache, ARDocType.DebitMemo);
    }
}