Я пытаюсь изменить метки раскрывающегося списка «Тип документа» в форме оплаты AP, аналогично тому, что я делал со счетом AP в предыдущем вопросе: Как изменить внешний вид типов счета AP (Bill, Корректировка кредита и т. Д.)? . Я пытаюсь изменить метки «Дебет и Кредитная корректировка», чтобы они стали «Кредитом и Дебетовыми авизо» для клиента, который более знаком с этой терминологией. При попытке получить ошибку, ссылающуюся на неодинаковую длину используемых мной массивов.
Я также пытаюсь изменить метки в раскрывающемся списке Тип документа для того, чтобы позиция AP Payment делала то же самое. Однако скомпилированный код не вызывает изменения ни одной из раскрывающихся меток.
Я попытался использовать аналогичный код, используемый для изменения меток типа документа счета-фактуры AP, однако я исключил ссылки на режим миграции, поскольку он не отображается в атрибуте для раскрывающегося списка в AP Payment.
CustomAPPaymentType:
public class CustomAPPaymentType : APPaymentType
{
public new static readonly string[] NewLabels = new string[]
{
"Check",
"Credit Memo",
"Prepayment",
"Vendor Refund",
"Voided Refund",
"Voided Check"
};
public new class ListAttribute : PXStringListAttribute
{
public ListAttribute() : base(APPaymentType.Values,
CustomAPPaymentType.NewLabels )
{
}
}
}
CustomAPPaymentTypeListAttribute:
public class CustomAPPaymentTypeListAttribute :
CustomAPPaymentType.ListAttribute
{
public override void CacheAttached(PXCache sender)
{
this._AllowedValues = new string[]
{
"CHK",
"ADR",
"PPM",
"REF",
"VRF",
"VCK"
};
this._AllowedLabels = new string[]
{
"Check",
"Credit Memo",
"Prepayment",
"Vendor Refund",
"Voided Refund",
"Voided Check"
};
this._NeutralAllowedLabels = new string[]
{
"Check",
"Credit Memo",
"Prepayment",
"Vendor Refund",
"Voided Refund",
"Voided Check"
};
base.CacheAttached(sender);
}
}
APPaymentEntry:
public class APPaymentEntry_Extension : PXGraphExtension<APPaymentEntry>
{
#region Event Handlers
[PXDBString(3, IsKey = true, IsFixed = true)]
[PXDefault]
[CustomAPPaymentTypeList]
[PXUIField(DisplayName = "Type", Visibility =
PXUIVisibility.SelectorVisible, Enabled = true, TabOrder = 0)]
[PXFieldDescription]
protected virtual void APPayment_DocType_CacheAttached(PXCache sender)
{
}
[PXDBString(3, IsKey = true, IsFixed = true, InputMask = "")]
[PXDefault(APDocType.Invoice)]
[PXUIField(DisplayName = "Document Type",
Visibility = PXUIVisibility.Visible)]
[CustomAPInvoiceType.AdjdList()]
protected virtual void APAdjust_AdjdDocType_CacheAttached(PXCache sender)
{
}
#endregion
}
CustomAPInvoiceType: включает атрибут AdjdListAttribute, чтобы изменить раскрывающийся список «Тип документа ADD»
public class CustomAPInvoiceType : APInvoiceType
{
public new static readonly string[] NewLabels = new string[]
{
"Bill",
"Debit Memo",
"Credit Memo",
"Prepayment"
};
public new class ListAttribute : PXStringListAttribute
{
public ListAttribute() : base(APInvoiceType.Values,
CustomAPInvoiceType.NewLabels)
{
}
}
public new class AdjdListAttribute : PXStringListAttribute
{
public AdjdListAttribute() : base(APInvoiceType.Values,
CustomAPInvoiceType.NewLabels)
{
}
}
}
Я хотел бы, чтобы раскрывающиеся списки в форме оплаты AP для Типа документа и Типа Дополнительного документа отражали изменения, которые я пытаюсь изменить, изменив метки «Дебет» и «Корректировка кредита» на «Кредит» и «Дебетовое авизо». Ошибка, которую я получаю при попытке получить доступ к форме оплаты AP:
Ошибка № 0: длина массива значений не равна длине массива меток. Имя параметра: позволено метками.
Я не уверен, как поступить, похоже, у меня слишком много «Ярлыков» или «Ценностей», но неясно, по какому. Я пытался быть максимально точным по отношению к текущим настройкам для текущих типов платежей APP, какой-нибудь совет, где я ошибся?