Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento在“签出”页面中保存订单总数_Magento_Magento 1.4 - Fatal编程技术网

Magento在“签出”页面中保存订单总数

Magento在“签出”页面中保存订单总数,magento,magento-1.4,Magento,Magento 1.4,我们在结账页面有一个类似于礼品卡余额使用的系统。而顾客在结账页面可以使用他们的礼品卡余额购买产品 因此,我在payment选项卡之前添加了一个a选项卡,在该选项卡中,客户可以选择从礼品卡余额中输入使用金额,因此当他们说继续时,我将在custom Onepage controller中获取输入的值,并将其传递给Onepage.php(模型类),以减少总金额 这就是我在模型课上所做的 public function saveCustomDiscount($discount=0) {

我们在结账页面有一个类似于礼品卡余额使用的系统。而顾客在结账页面可以使用他们的礼品卡余额购买产品

因此,我在payment选项卡之前添加了一个a选项卡,在该选项卡中,客户可以选择从礼品卡余额中输入使用金额,因此当他们说继续时,我将在custom Onepage controller中获取输入的值,并将其传递给Onepage.php(模型类),以减少总金额

这就是我在模型课上所做的

public function saveCustomDiscount($discount=0)
{       
    $this->getQuote()->setGrandTotal($this->getQuote()->getGrandTotal() - $discount);
    $this->getQuote()->setBaseGrandTotal($this->getQuote()->getBaseGrandTotal() - $discount);
    $this->getQuote()->save();
    //$this->getQuote()->collectTotals()->save();
    $order = $this->getQuote()->getData();  
    Zend_Debug::dump($order);      
    return array();
}
当我得到用户输入时,我从控制器动作函数调用这个函数

在这里,我所传递的折扣总额和基本总额并没有减少。它和原来的一样

注: 在自定义订单保存之前

array(51) {
   ---------------
  ["grand_total"] => string(8) "243.7200"
  ["base_grand_total"] => string(8) "243.7200"
  ----------------- 
}
array(51) {
   ---------------
   ["grand_total"] => float(223.72)
   ["base_grand_total"] => float(223.72)
  ----------------- 
}
自定义订单保存后

array(51) {
   ---------------
  ["grand_total"] => string(8) "243.7200"
  ["base_grand_total"] => string(8) "243.7200"
  ----------------- 
}
array(51) {
   ---------------
   ["grand_total"] => float(223.72)
   ["base_grand_total"] => float(223.72)
  ----------------- 
}
当我进行调试时,数据类型从string更改为float。我必须做的是,从定制折扣中减少订单总额。请帮帮我


谢谢

您设置折扣代码了吗

i.e.  $quote->setCouponCode(strlen($couponCode) ? $couponCode : '')
                 ->collectTotals()
                 ->save();
后来,在报价单中,您是否申请了折扣

i.e. $order->setDiscountAmount(Mage::getSingleton('checkout/session')->getQuote()->getSubtotalWithDiscount() - Mage::getSingleton('checkout/session')->getQuote()->getSubtotal());
            $order->setShippingAmount(Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getShippingAmount());
            $order->setSubtotalWithDiscount(Mage::getSingleton('checkout/session')->getQuote()->getSubtotalWithDiscount());
            $order->setGrandTotal(Mage::getSingleton('checkout/session')->getQuote()->getGrandTotal());
等等

编辑:

我和一个团队一起做了一个Wordpress/Magento混合版,这肯定给我留下了一些教训。Magento被用作一个纯粹的事务引擎,我们必须手工完成整个签出过程(包括创建一个定制的WP插件来处理购物车中的每个步骤)

在结尾处将此记录下来,这样我们就可以看到您有什么(可能会将此记录在您编辑的问题中):


嗨,对不起,这不是折扣代码系统。这是我们自己的内部折扣方法,我们将显示要兑换的客户的当前余额。在这种情况下,我如何减少订单总数。如何通过设置折扣数量并保存来更新报价?i、 e.$order->SETDEPPNTAMOUNT($custom_amount)$订单->设置折扣金额($折扣);$order->setShippingAmount(Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getShippingAmount());$order->setSubtotalWithDiscount(Mage::getSingleton('checkout/session')->getQuote()->getSubtotalWithDiscount());$order->setGrandTotal(Mage::getSingleton('checkout/session')->getQuote()->getGrandTotal())$订单->保存();这不会更新折扣金额。是否也这样做?我修改了我的答案$order->setBaseSubtotal(Mage::getSingleton('checkout/session')->getQuote()->getSubtotal())$订单->设置折扣装载(Mage::getSingleton('checkout/session')->getQuote()->getSubtotalWithDiscount()-Mage::getSingleton('checkout/session')->getQuote()->getSubtotalWithDiscount());