首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递给Avalara的重写发货地址

传递给Avalara的重写发货地址
EN

Stack Overflow用户
提问于 2020-03-04 03:53:25
回答 1查看 95关注 0票数 1

我们要求将发货地址以外的其他计算方法传递给外部计税方法来计算税额。我将地址存储在一个简单的定制表中,它在销售订单中被选中,并被复制到销售发票中以计算税收。

GetAddress被覆盖以将自定义地址传递给Avalar,这在Acumatica 2018中运行良好,但在Acumatica 2019中不起作用。

在2019年,我曾尝试覆盖GetAddress函数

代码语言:javascript
复制
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中

代码语言:javascript
复制
[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
}

自定义代码不起作用。

如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2020-03-05 00:29:15

外部税的逻辑在ExternalTax图形扩展中定义。图扩展由每个模块的派生类使用,例如用于AR的ARInvoiceEntryExternalTax。要覆盖与税收相关的方法,您需要创建一个2阶图扩展,测试样本如下所示。请注意,您的问题中没有显示的其他GetToAddress(...)方法需要文档详细信息DAC作为参数。

代码语言:javascript
复制
 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);
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60514551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档