Magento:销售订单中的原始价格为零从程序订单查看

时间:2016-01-04 08:37:13

标签: magento

我正在从移动应用程序调用的自定义Web服务生成订单。但是,当订单最终生成时,我得到了原始价格"为Rs0.00。这是一个问题,因为我们有第三方集成开发票和发货。 order from custom web service

然而,在从网站生成订单的正常行动过程中,原始价格是正确的。

enter image description here

我检查了sales_flat_order_item表中的这两个订单,原始价格在第一个订单中确实是0.00,因此我必须在我的代码中遗漏一些没有为orderItem设置original_price的东西。

以下是报价转换为订单的代码。

    public function placeorder($custid, $Jproduct, $store, $address, $couponCode, $is_create_quote, $transid, $payment_code, $shipping_code, $currency, $message)
{
    $res            = array();
    $quantity_error = array();
    try {
        $quote_data = $this->prepareQuote($custid, $Jproduct, $store, $address, $shipping_code, $couponCode, $currency, 1, 0);
        if ($quote_data["status"] == "error") {
            return $quote_data;
        }
        $quote        = Mage::getModel('sales/quote')->load($quote_data['quote_id']);

        $quote        = $this->setQuoteGiftMessage($quote, $message, $custid);
        $quote        = $this->setQuotePayment($quote, $payment_code, $transid);
        $convertQuote = Mage::getSingleton('sales/convert_quote');
        try {
            $order = $convertQuote->addressToOrder($quote->getShippingAddress());
        }
        catch (Exception $Exc) {
            echo $Exc->getMessage();
        }
        $items = $quote->getAllItems();
        foreach ($items as $item) {
            $orderItem = $convertQuote->itemToOrderItem($item);

            $order->addItem($orderItem);
            }
        try {
            $decode_address = json_decode(base64_decode($address));
            $order->setCustomer_email($decode_address->billing->email);
            $order->setCustomerFirstname($decode_address->billing->firstname)->setCustomerLastname($decode_address->billing->lastname);
        }
        catch (Exception $e) {

        }
        $order->setBillingAddress($convertQuote->addressToOrderAddress($quote->getBillingAddress()));
        $order->setShippingAddress($convertQuote->addressToOrderAddress($quote->getShippingAddress()));
        $order->setPayment($convertQuote->paymentToOrderPayment($quote->getPayment()));
        $order->save();
        $quantity_error         = $this->updateQuantityAfterOrder($Jproduct);
        $res["status"]          = 1;
        $res["id"]              = $order->getId();
        $res["orderid"]         = $order->getIncrementId();
        $res["transid"]         = $order->getPayment()->getTransactionId();
        $res["shipping_method"] = $shipping_code;
        $res["payment_method"]  = $payment_code;
        $res["quantity_error"]  = $quantity_error;
        $order->addStatusHistoryComment("Order was placed using Mobile App")->setIsVisibleOnFront(false)->setIsCustomerNotified(false);
        if ($res["orderid"] > 0 && ($payment_code == "cashondelivery" || $payment_code == "banktransfer" || $payment_code == "free")) {
            $this->ws_sendorderemail($res["orderid"]);
            $order->setState(Mage_Sales_Model_Order::STATE_NEW, true)->save();
            $res["order_status"] = "PENDING_PAYMENT";
        } else {
            $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true)->save();
            $res["order_status"] = "PENDING_PAYMENT";
        }
    }catch (Exception $except) {
        $res["status"]          = 0;
        $res["shipping_method"] = $shipping_code;
        $res["payment_method"]  = $payment_code;
    }

    return $res;
}

如果有人指出我错过了什么,那将是非常有帮助的。如果需要任何其他信息,我会编辑。

1 个答案:

答案 0 :(得分:0)

缺少original_price表示您尚未在报价上运行collectTotals(),请尝试以下操作:

$quote->collectTotals()->save();
$order->save();