首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >因此,通过REST服务结束点不应用折扣

因此,通过REST服务结束点不应用折扣
EN

Stack Overflow用户
提问于 2018-01-19 19:36:18
回答 2查看 397关注 0票数 0

当通过REST调用创建销售订单时,适用的折扣不会自动应用,就像通过标准Acumatica屏幕创建折扣一样。折扣应适用,而不是“手册”-运行“重新计算价格”行动后,通过API创建将适用的折扣。

折扣代码是否必须在API调用中指定,或者是否有某种方法使它们像在屏幕上那样被自动应用?通过API接收到的订单被赋予一个唯一的订单类型,因此我们可以合理地对这些特定订单类型进行SOOrderEntry图的定制,当最初创建so以运行“重新计算价格”时,我也无法找到一种成功触发Base的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-19 20:13:31

目前,通过Web或Import场景创建或更新的所有销售订单和AR发票都将完全跳过折扣。要通过Web启动折扣计算,您应该按照以下步骤进行:

  1. 在SOOrderEntry BLC扩展中创建一个隐藏操作,重新计算当前订单的折扣: 公共类SOOrderEntryExt : PXGraphExtension { public PXAction RecalculateDiscountsFromImport;PXButton public void recalculateDiscountsFromImport() { foreach (SOLine line in Base.Transactions.Select()) { SOLine oldLine = Base.Transactions.Cache.CreateCopy(line) as SOLine;DiscountEngine.RecalculateDiscountsLine( Base.Transactions.Cache,Base.Transactions,line,line,Base.DiscountDetails,Base.Document.Current.BranchID,Base.Document.Current.CustomerLocationID,Base.Document.Current.OrderDate.Value);TX.TaxAttribute.Calculate( Base.Transactions.Cache,新PXRowUpdatedEventArgs(line,oldLine,false);} Base.Transactions.Cache.IsDirty = true;}}
  2. 在扩展端点中添加上述自定义操作的映射,并在Acumatica中创建和保存销售订单后,通过单独的请求通过Contract调用该操作。
票数 2
EN

Stack Overflow用户

发布于 2018-01-22 16:59:07

根据RuslanDev的回答和一些更改,这是在随后的API调用中实现并执行的操作:

代码语言:javascript
复制
    public PXAction<SOOrder> RecalculateDiscountsFromImport;
    [PXButton]
    [PXUIField(DisplayName = "Recalculate Discounts",
        MapEnableRights = PXCacheRights.Select,
        MapViewRights = PXCacheRights.Select,
        Visible = false)]
    public void recalculateDiscountsFromImport()
    {
        foreach (SOLine line in Base.Transactions.Select())
        {
            DiscountEngine<SOLine>.RecalculateDiscountsLine<SOOrderDiscountDetail>(
                Base.Transactions.Cache,
                Base.Transactions,
                line,
                line,
                Base.DiscountDetails,
                Base.Document.Current.BranchID,
                Base.Document.Current.CustomerLocationID,
                Base.Document.Current.OrderDate.Value);
            Base.Transactions.Update(line);
            Base.Transactions.SetValueExt<SOLine.manualDisc>(line, false);
        }
        Base.Actions.PressSave();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48348335

复制
相关文章

相似问题

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