Magento сохранить общую сумму заказа на странице оформления заказа - PullRequest
1 голос
/ 03 апреля 2011

У нас есть такая система, как использование баланса подарочных карт на странице оформления заказа. В то время как клиенты на странице оформления заказа клиенты могут использовать сумму остатка Подарочной карты для покупки товаров.

Итак, я добавил вкладку перед вкладкой оплаты, в которой клиенты могут ввести сумму использования из суммы баланса своей подарочной карты, поэтому, когда они говорят, что продолжить, я получаю введенное значение в пользовательском контроллере Onepage и передаю его в 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)
  ----------------- 
}

Тип данных изменяется со строки на число с плавающей точкой, когда я выполняю отладку. Что я должен сделать, чтобы уменьшить сумму заказа от таможенной скидки. Пожалуйста, помогите мне.

Спасибо

1 Ответ

3 голосов
/ 03 апреля 2011

Вы установили код скидки?

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 для обработки каждого шага в корзине).

В конце выйдите из системы, чтобы мы моглипосмотрите, что у вас есть (возможно, укажите это в отредактированном вопросе):

Mage::log("checkoutprocess: getSubtotal: " . $order->getSubtotal());
            Mage::log("checkoutprocess: getTaxAmount: " . $order->getTaxAmount());
            Mage::log("checkoutprocess: getDiscountAmount: " . $order->getDiscountAmount());
            Mage::log("checkoutprocess: getShippingAmount: " . $order->getShippingAmount());
            Mage::log("checkoutprocess: getGrandTotal: " . $order->getGrandTotal());

            Mage::log("checkoutprocess: getBaseSubtotal: " . $order->getBaseSubtotal());
            Mage::log("checkoutprocess: getBaseDiscountAmount: " . $order->getBaseDiscountAmount());
            Mage::log("checkoutprocess: getSubtotalWithDiscount: " . $order->getSubtotalWithDiscount());
            Mage::log("checkoutprocess: getBaseGrandTotal: " . $order->getBaseGrandTotal());
...