[英]Overriding Shipping address passed to Avalara
我們需要將送貨地址以外的其他稅收計算方法傳遞給外部稅收計算方法來計算稅收。 我將地址存儲在一個簡單的自定義表中,並在銷售訂單中選擇它,並將其復制到銷售發票中以計算稅款。
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
}
在 AR 發票中
[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
}
自定義代碼不起作用。
如何解決問題?
外部稅收的邏輯在 ExternalTax 圖擴展中定義。 圖擴展由每個模塊的派生類使用,例如 ARInvoiceEntryExternalTax for AR。 要覆蓋與稅收相關的方法,您需要創建一個二階 Graph 擴展,測試示例如下所示。 請注意,您的問題中未顯示其他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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.