我正在尝试更改“应付账款付款”表单上“文档类型”下拉菜单的标签,类似于我在上一个问题How to change the appearance of APInvoice types (Bill, Credit Adjustment, etc)?中对“应付账款发票”所做的操作。我正尝试将“借方和贷方调整”的标签更改为更熟悉该术语的客户的贷方和借项备忘录。尝试时出现错误,指出我使用的数组长度不相等。
我还试图更改“ AP付款”行项目的“调整文档类型”下拉菜单的标签来执行相同的操作。但是,我编译的代码不会导致任何下拉标签更改。
我试图使用类似的代码来更改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以便更改Adjd文档类型下拉菜单
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付款表单时收到的错误是:
错误#0:值数组的长度不等于标签数组的长度。参数名称:allowedLabels。
我不确定如何进行,似乎我有太多的“标签”或“值”,但不清楚在哪一个上。我试图对当前APPayment类型的当前设置保持准确,关于我出了错的地方有何建议?
答案 0 :(得分:2)
1) 更改文档类型字段的标签: 将“借方/贷方调整”更改为“借方/贷方通知单” 您无需编写任何代码行。
您可以使用“翻译词典”屏幕(SM200540)来实现此目的。 https://www.youtube.com/watch?v=AdHnBtRPOd0
当我们需要在字符串列表中添加或删除“文档类型”时,我们会在开发中自定义属性。
2) 使用“翻译”的另一个原因是,您可以在应用程序的多个位置(例如消息),您尚未想到的地方进行更改:)像这样:“只能选择发票和借方调整进行付款。”
您将比开发解决方案快:) 您也可以将更改发布到“自定义项目”(系统区域设置)中。
3) 良好做法:对于Labels,请在PXLocalizable类内使用常量而不是文字字符串。这样,它将是多国语言,或者客户可能能够“编辑”可能需要的任何标签。