遇到一种情况,需要在下单后再由管理员添加订单运费,然后顾客再付款。那么问题来了,如何给订单添加运费呢?下面是一段代码,可以实现该功能:

$orderId = 'your order id';$order = Mage::getModel('sales/order')->load($orderId);
$baseCurrencyCode = Mage::app()->getStore()->getBaseCurrencyCode();
$currentCurrencyCode = $order->getOrderCurrencyCode();
$shippingAmount = Mage::helper('directory')->currencyConvert($params['shipping']['amount'], $currentCurrencyCode, $baseCurrencyCode);
$notify = isset($params['shipping']['is_customer_notified']) ? true : false;
$order->setBaseGrandTotal($order->getBaseGrandTotal() + $shippingAmount);
$order->settBaseSubtotal($order->getBaseSubtotal() + $shippingAmount); //$order->setBaseSubtotalInvoiced($order->getBaseSubtotalInvoiced() + $shippingAmount); //$order->setBaseTotalInvoiced($order->getBaseTotalInvoiced() + $shippingAmount); //$order->setBaseTotalPaid($order->getBaseTotalPaid() + $shippingAmount); $order->setGrandTotal($order->getGrandTotal() + $shippingAmount); $order->setSubtotal($order->getSubtotal()); //$order->setSubtotalInvoiced($order->getSubtotalInvoiced() + $shippingAmount); //$order->setTotalInvoiced($order->getTotalInvoiced() + $shippingAmount); //$order->setTotalPaid($order->getTotalPaid() + $shippingAmount); $order->setBaseSubtotalInclTax($order->getBaseSubtotalInclTax() + $shippingAmount); $order->setSubtotalInclTax($order->getSubtotalInclTax() + $shippingAmount); $order->setTotalDue($order->getTotalDue() - $order->getShippingAmount() + $shippingAmount);
$order->setShippingAmount($shippingAmount); $order->setBaseShippingAmount($shippingAmount); Mage::getModel('wholesale/core')->sendOrderEmail($order, 'wholesale_savers_order_update', $attch = '');$order->setCarriageConfirmed(1); $order->save();

上述的代码中,关于Invoice的都是注释掉的,下面分两个情况说一下:

当订单还是pending的时候,如果上面的Invoice代码没有注释掉,那么当你在后台点击生成Invoice的时候,生成的invoice将不会包含你添加的运费的金额。例如订单的金额是1000,后台添加了20块运费,那么在生成invoice的时候,invoice的金额就是1000,不会是1020。只有在添加运费时不设置SubtotalInvoiced等才会是1020.

权当备忘。

转载于:https://www.cnblogs.com/mityaya/p/4630777.html

Magento--修改已存在的订单的运费相关推荐

  1. APICS与AX的Master Planning(三)---Firm Planned Orders已确认计划订单

    老规矩先看APICS关于Firm Planned Orders的定义,这样做不是要死读书的意思,只是觉得APICS字典实际上是从很多企业运作场景中提炼出来的,有其实际的意义,另外一个言简意赅的定义也便 ...

  2. fceux源码解析_fceux源码解析_从源代码制作deb包的两种方法以及修改已有deb包(转载)...

    1. 原理 1) deb包通常包含两部分:控制信息(DEBIAN目录).安装内容(模拟"/"目录) 2) 通过解开已有的deb包看其中内容 i. 释放安装内容到dirname目录中 ...

  3. python docx 设置表格字体和格式_python-docx修改已存在的Word文档的表格的字体格式方法...

    搞了好几天的表格字体格式,一直想找一种能直接一次性修改表格所有字体格式的方法(函数),但是无论用什么方法都无法修改表格字体的格式,原因应该是已存在的文档本身就具有某种格式限制,制约着里面表格里面字体格 ...

  4. C# 禁止修改已装箱了的值类型的字段值,但是可以通过接口的方式实现

    C# 默认是不能修改已装箱了的值类型中字段的值,但是可以通过 值类型实现指定的接口来改变 首先定义一个接口 1 interface IChange 2 { 3 void Change(int a, i ...

  5. 需要用sq语句 修改大批量用户的密码_网站文章seo优化及修改已收录文章建议

    一.网站文章seo优化: <1> 文章标题优化 1.文章标题要新颖,不必要太看重语法,逻辑,但一定要有新意. 2.符合用户搜索需求,直接戳中用户的痛点. 3.标题中融入文章关键词,关键词出 ...

  6. elasticsearch 修改已存在的filed值 和 新增filed

    修改filed值和新增filed 平常不太用,总是忘,每次都得现找语法,所以在这做个笔记. 1.修改filed值 第一种方法:PUT /索引名/_doc/索引id {"属性名" : ...

  7. git分支合并、撤销;git修改已push的commit信息; git 撤销操作;

    git分支合并 1.分支代码提交 2.git branch 查询本地分支 3.git checkout 分支名1 切换分支到需要合并的分支上 4.git merge 分支名2  //选择要合并到 分支 ...

  8. 如何修改已提交commit信息

    如何修改已提交commit信息 1. 修改commit信息 1.1 修改最后一次提交信息 通过git log查看提交历史信息: 输入命令: git commit -m "amend comm ...

  9. git修改已提交的信息

    修改已提交的注释 主要命令: git rebase -i master~1 #最后一次 git rebase -i master~5 #最后五次 git rebase -i HEAD~3 #当前版本的 ...

最新文章

  1. 阿里云前端周刊 - 第 29 期
  2. word2016公式自动编号
  3. 中小型互联网公司微服务实践-经验和教训
  4. Jquery 单击_双击_鼠标经过_鼠标离开_背景样式变化
  5. 并发编程-concurrent指南-阻塞队列BlockingQueue
  6. java jpa 注解_Java : JPA相关以及常用注解
  7. 【数据结构和算法05】 红-黑树(转发)
  8. GitBash添加tree命令
  9. 基于Spring Security的认证授权_方法授权_Spring Security OAuth2.0认证授权---springcloud工作笔记133
  10. 如何在云服务器使用docker快速部署jupyter web服务器(Nginx+docker+jupyter+tensorflow)
  11. 洛谷 1449——后缀表达式(线性数据结构)
  12. conime.exe是什么?conime.exe病毒的清除方法
  13. 回炉重造之重读Windows核心编程-003-内核对象
  14. Liunx-centos8入门+配置网络
  15. 《网络安全》课程论文
  16. 光E电小家庭要如何理财
  17. oracle tlv,OSPF GR(Graceful Restart,平滑重启)技术
  18. GPS时钟系统,GPS同步时钟系统
  19. python生成快递取件码_快递,顺丰,python,截图,15Seconds
  20. ​可以给证件照换衣服的软件有哪些?教你如何一键换装

热门文章

  1. 【POJ - 1001 】Exponentiation (Java大数,高精度)
  2. php实现播放直播_PHP直播技术分享(一:实现直播)
  3. Java行业情景分析_Java 设计模式情景分析——单例模式
  4. 实现连麦_直播课程系统如何实现互动连麦效果?
  5. 多线程线程池的基本创建,使用方法
  6. 在数学中10!代表10的阶乘。既代表1*2*3*4....*10; * 现在要求编程求出8!。
  7. JAVA捕捉输入格式异常_Java学习(四).异常处理
  8. linux忘记mysql登录用户密码_linux中忘记mysql用户root密码解决方案
  9. Linux简单命令集——less
  10. 先序中序后序两两结合重建二叉树