Acumatica 根据票据和调整单中的自定义日期字段计算发票日期和折扣日期
我在账单和调整单中创建了一个自定义日期字段“发票日期”。在BIL和调整中,根据DocDate和所选TermsID计算的到期日和现金折扣日 但是,我希望使用自定义字段“发票日期”中的日期来计算到期日期和现金折扣日期,而不是DocDate 我尝试在APInvoiceEntry图中搜索DocDate和TermsID的字段更新事件,还尝试在图中的CacheAttached中查找到期日期和现金折扣日期的PXFormula属性。此外,我还查看了APInvoice DAC,以找到到期日和现金折扣日的公式,但在任何地方都找不到。我也试图在DescentEngine类中找到方法,但没有成功 谢谢。TL;DR 创建从TermsAttribute派生的新属性并重写Acumatica 根据票据和调整单中的自定义日期字段计算发票日期和折扣日期,acumatica,Acumatica,我在账单和调整单中创建了一个自定义日期字段“发票日期”。在BIL和调整中,根据DocDate和所选TermsID计算的到期日和现金折扣日 但是,我希望使用自定义字段“发票日期”中的日期来计算到期日期和现金折扣日期,而不是DocDate 我尝试在APInvoiceEntry图中搜索DocDate和TermsID的字段更新事件,还尝试在图中的CacheAttached中查找到期日期和现金折扣日期的PXFormula属性。此外,我还查看了APInvoice DAC,以找到到期日和现金折扣日的公式,但在
计算字符
方法。替换TermsID
字段上的属性
正确答案 理解更新某些字段的逻辑的最可靠的方法是使用调试器。 为此,可以使用以下步骤:
public类APInvoiceEntry_扩展名:PXGraphExtension
您可以在调用堆栈中导航,双击行。在这种情况下,PX.Objects.dll!PX.Objects.CS.TermsAttribute.CalcTerms(PX.Data.PXCache sender,PX.Data.PXFieldUpdatedEventArgs e)第3461行看起来很有希望
通常,您应该看到PX.Objects.dll中所有内容的代码,但如果看不到,请按以下步骤进行修复:
- 确保在安装Acumatica ERP时设置了
安装调试器工具
- 在Visual Studio设置中禁用“仅启用我的代码”选项
- 您可以手动将visual studio指向位于
SiteFolder\App\u Data\code repository\PX.Objects
探索代码以找到覆盖逻辑的最佳位置。在这种情况下,最好的方法是创建一个从TermsAttribute派生的新属性,并重写CalcTerms
方法(这样您仍然可以重用基本CalcTermsDates
方法)
TL;DR
创建从TermsAttribute派生的新属性并重写
计算字符
方法。替换TermsID
字段上的属性
正确答案
理解更新某些字段的逻辑的最可靠的方法是使用调试器。
为此,可以使用以下步骤:
添加用于使用自定义设置断点的事件。在这种情况下,字段更新是最佳匹配
public类APInvoiceEntry_扩展名:PXGraphExtension
您可以在调用堆栈中导航,双击行。在这种情况下,PX.Objects.dll!PX.Objects.CS.TermsAttribute.CalcTerms(PX.Data.PXCache sender,PX.Data.PXFieldUpdatedEventArgs e)第3461行看起来很有希望
通常,您应该看到PX.Objects.dll中所有内容的代码,但如果看不到,请按以下步骤进行修复:
- 确保在安装Acumatica ERP时设置了
安装调试器工具
- 在Visual Studio设置中禁用“仅启用我的代码”选项
- 您可以手动将visual studio指向位于
SiteFolder\App\u Data\code repository\PX.Objects
探索代码以找到覆盖逻辑的最佳位置。在这种情况下,最好的方法是创建一个从TermsAttribute派生的新属性,并重写CalcTerms
方法(这样您仍然可以重用基本CalcTermsDates
方法)
非常感谢你的回答。termsatAttribute.CalcTerms就是我要找的。在我的例子中,我只需覆盖术语的FieldUpdated和自定义字段的FieldUpdated事件,并在CalCharterms方法中传递新字段的日期,并获取到期日期和光盘日期,我用于设置相应字段的值。非常感谢您的回答。termsatAttribute.CalcTerms就是我要找的。在我的例子中,我只需覆盖术语的FieldUpdated和自定义字段的FieldUpdated事件,并在CalcTerms方法中传递新字段的日期,然后获取用于设置相应字段值的到期日期和光盘日期。
public class APInvoiceEntry_Extension : PXGraphExtension<APInvoiceEntry>
{
public void APInvoice_DueDate_FieldUpdating(PXCache cache, PXFieldUpdatingEventArgs e)
{
}
}