我们要求将发货地址以外的其他计算方法传递给外部计税方法来计算税额。我将地址存储在一个简单的定制表中,它在销售订单中被选中,并被复制到销售发票中以计算税收。
GetAddress被覆盖以将自定义地址传递给Avalar,这在Acumatica 2018中运行良好,但在Acumatica 2019中不起作用。
在2019年,我曾尝试覆盖GetAddress函数
public class SOOrderEntryExternalTax_Extension : PXGraphExtension<SOOrderEntryExternalTax, SOOrderEntry>
{
#region Event Handlers
[PXOverride]
public IAddressBase GetToAddress(SOOrder order, Func<SOOrder, IAddressBase> methodBase)
{
var shipAddress = methodBase(order);
if (shipAddress != null)
{
CYBProjectDataNameSpace.CYB_PROJECTS CYBProject = PXSelectorAttribute.Select<SOOrderExt.usrProjectId>(Base.Document.Cache, order) as CYBProjectDataNameSpace.CYB_PROJECTS;
//shipAddress.AddressLine1 = CYBProject.Cyb_address;
shipAddress.AddressLine2 = "";
shipAddress.AddressLine3 = "";
shipAddress.City = CYBProject.Cyb_pcity;
shipAddress.State = CYBProject.Cyb_pstate;
shipAddress.PostalCode = CYBProject.Cyb_pzcode;
shipAddress.CountryID = CYBProject.Cyb_pcountry;
}
return shipAddress;
}
#endregion
}在ARInvoice中
[PXOverride]
public IAddressBase GetToAddress(ARInvoice invoice, Func<ARInvoice, IAddressBase> methodBase)
{
var shipAddress = methodBase(invoice);
if (shipAddress != null)
{
CYBProjectDataNameSpace.CYB_PROJECTS CYBProject = PXSelectorAttribute.Select<ARRegisterExt.usrProjectId>(Base.Document.Cache, invoice) as CYBProjectDataNameSpace.CYB_PROJECTS;
if (CYBProject != null)
{
//shipAddress.AddressLine1 = CYBProject.Cyb_address;
shipAddress.AddressLine2 = "";
shipAddress.AddressLine3 = "";
shipAddress.City = CYBProject.Cyb_pcity;
shipAddress.State = CYBProject.Cyb_pstate;
shipAddress.PostalCode = CYBProject.Cyb_pzcode;
shipAddress.CountryID = CYBProject.Cyb_pcountry;
}
}
return shipAddress;
}
#endregion
}自定义代码不起作用。
如何解决这个问题?
发布于 2020-03-05 00:29:15
外部税的逻辑在ExternalTax图形扩展中定义。图扩展由每个模块的派生类使用,例如用于AR的ARInvoiceEntryExternalTax。要覆盖与税收相关的方法,您需要创建一个2阶图扩展,测试样本如下所示。请注意,您的问题中没有显示的其他GetToAddress(...)方法需要文档详细信息DAC作为参数。
public class ARInvoiceEntryExtension : PXGraphExtension<ARInvoiceEntryExternalTax, ARInvoiceEntry>
{
[PXOverride]
public virtual IAddressBase GetToAddress(ARInvoice invoice, Func<ARInvoice, IAddressBase> del)
{
return del(invoice);
}
[PXOverride]
public virtual IAddressBase GetAddress(ARInvoice invoice, ARTran tran, Func<ARInvoice, ARTran, IAddressBase> del)
{
return del(invoice, tran);
}
}
public class SOOrderEntryExtension : PXGraphExtension<SOOrderEntryExternalTax, SOOrderEntry>
{
[PXOverride]
public virtual IAddressBase GetToAddress(SOOrder order, Func<SOOrder, IAddressBase> del)
{
return del(order);
}
[PXOverride]
public virtual IAddressBase GetToAddress(SOOrder order, SOLine line, Func<SOOrder, SOLine, IAddressBase> del)
{
return del(order, line);
}
}https://stackoverflow.com/questions/60514551
复制相似问题