Magento--修改已存在的订单的运费

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

$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.

权当备忘。

时间: 2024-10-10 17:06:54

Magento--修改已存在的订单的运费的相关文章

Magento修改邮件模板内容

Magento 默认邮件模板 都是带着官方的标志和一些官方的基本信息.为了建立品牌形象我们需要把邮件模板中的所有官方信息换成自己的信息.修改步骤如下: 1.找到Magento的邮件模板文件(这里以 en_US为例),如下列文件:magento\app\locale\en_US\template\email\account_new.html:magento\app\locale\en_US\template\email\admin_password_new.html:magento\app\loc

已存在销售订单上插入销售订单行

 在已存在销售订单上插入销售订单行 --This is to add a line to an existing order DECLARE l_api_version_number NUMBER := 1 ; l_return_status      VARCHAR2(2000 ); l_msg_count          NUMBER; l_msg_data           VARCHAR2(2000 ); /*****************INPUT VARIABLES FOR

magento sweet积分插件 获得订单消耗的积分

$order_object = Mage::getModel('sales/order')->load("order_id"); 注:order_id 是订单号后面的数字; $res['points_spend']=Mage::helper('rewards')->getPointsString($order_object->getTotalSpentPoints()); magento sweet积分插件 获得订单消耗的积分,布布扣,bubuko.com

Asp.net 修改已有数据的DataTable中某列的数据类型

DataTable dt_PI = new DataTable(); //克隆表结构 dt_PI = ds.Tables[0].Clone(); dt_PI.Columns["FLTFullPercentage"].DataType = typeof(String);//修改[满柜百分比]列的数据类型 foreach (DataRow row in ds.Tables[0].Rows) { DataRow rowNew = dt_PI.NewRow(); foreach (DataCo

如何在magento后台增加一个自定义订单状态

magento后台订单状态(order status)只有Pending.Processing.On Hold.Closed.Canceled.Pending Payment 等等,如何在magento后台增加一个自定义订单状态呢?下面最模板以增加一个”On Shipping” 为例: 1.首先你需打开app/code/core/Mage/Sales/etc/config.xml 文件找到大概第545行,在之间插入一行自定义状态代码: <statuses> <pending transl

Mysql修改已有数据的字符集

Mysql修改已有数据的字符集 问题 在生产环境中跑了很久,发现MysqlClient连接的字符集是默认的latin1,我们一直以为都是utf8,造成这样的误解,是因为在内网环境中,我们是源码编译的Mysql,并指定了编译选项字符集位utf8,这时Mysql的是默认字符接都是utf8. 而在外网,我们是二进制包安装,默认是latin1,虽然在my.conf中指定了[client] [mysql] [mysqld] 中字符集为utf8,这并不能保证MysqlClient连接时的字符集为utf8.所

Docker 修改已有镜像(转)

1.当结束后,我们使用 exit 来退出,现在我们的容器已经被我们改变了,使用 docker commit 命令来提交更新后的副本. 其中,-m 来指定提交的说明信息,跟我们使用的版本控制工具一样:-a 可以指定更新的用户信息:之后是用来创建镜像的容器的 ID:最后指定目标镜像的仓库名和 tag 信息. #修改已有的镜像 2.利用Dockerfile来创建新镜像 参考:https://blog.csdn.net/ling811/article/details/53817123 原文地址:http

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

git分支合并 1.分支代码提交 2.git branch 查询本地分支 3.git checkout 分支名1 切换分支到需要合并的分支上 4.git merge 分支名2  //选择要合并到 分支名1 的分支名2 eg: 如果develop_screen分支合并到develop分支上,这个时候切换到develop分支上, git merge develop_screen 5.合并之后可能会有冲突,可用git status 查看冲突代码 <<<<<<<  ===

使用jd-gui+javassist修改已编译好的class文件

1.原因:因为公司代码管理不当导致源码丢失,只好已编译好的class文件进行修改 2.首先先在myeclipse中新建java项目并导入javassist 3.将需要修改的文件放到指定文件夹下 4..在项目中添加以下代码 package dtj; import javassist.ClassPool; import javassist.CtClass; import javassist.CtMethod; import javassist.NotFoundException; public cl