Beispiel #1
0
 /**
  * Submit the quote. Quote submit process will create the order based on quote data
  *
  * @return Mage_Sales_Model_Order
  */
 public function submitOrder()
 {
     $this->_deleteNominalItems();
     $this->_validate();
     $quote = $this->_quote;
     $isVirtual = $quote->isVirtual();
     $transaction = Mage::getModel('core/resource_transaction');
     if ($quote->getCustomerId()) {
         $transaction->addObject($quote->getCustomer());
     }
     $transaction->addObject($quote);
     $quote->reserveOrderId();
     if ($isVirtual) {
         $order = $this->_convertor->addressToOrder($quote->getBillingAddress());
     } else {
         $order = $this->_convertor->addressToOrder($quote->getShippingAddress());
     }
     $order->setBillingAddress($this->_convertor->addressToOrderAddress($quote->getBillingAddress()));
     if (!$isVirtual) {
         $order->setShippingAddress($this->_convertor->addressToOrderAddress($quote->getShippingAddress()));
     }
     $order->setPayment($this->_convertor->paymentToOrderPayment($quote->getPayment()));
     foreach ($this->_orderData as $key => $value) {
         $order->setData($key, $value);
     }
     foreach ($quote->getAllItems() as $item) {
         $orderItem = $this->_convertor->itemToOrderItem($item);
         if ($item->getParentItem()) {
             $orderItem->setParentItem($order->getItemByQuoteItemId($item->getParentItem()->getId()));
         }
         $order->addItem($orderItem);
     }
     $order->setQuote($quote);
     $transaction->addObject($order);
     $transaction->addCommitCallback(array($order, 'place'));
     $transaction->addCommitCallback(array($order, 'save'));
     /**
      * We can use configuration data for declare new order status
      */
     Mage::dispatchEvent('checkout_type_onepage_save_order', array('order' => $order, 'quote' => $quote));
     Mage::dispatchEvent('sales_model_service_quote_submit_before', array('order' => $order, 'quote' => $quote));
     try {
         $transaction->save();
         $this->_inactivateQuote();
         Mage::dispatchEvent('sales_model_service_quote_submit_success', array('order' => $order, 'quote' => $quote));
     } catch (Exception $e) {
         //reset order ID's on exception, because order not saved
         $order->setId(null);
         /** @var $item Mage_Sales_Model_Order_Item */
         foreach ($order->getItemsCollection() as $item) {
             $item->setOrderId(null);
             $item->setItemId(null);
         }
         Mage::dispatchEvent('sales_model_service_quote_submit_failure', array('order' => $order, 'quote' => $quote));
         throw $e;
     }
     Mage::dispatchEvent('sales_model_service_quote_submit_after', array('order' => $order, 'quote' => $quote));
     $this->_order = $order;
     return $order;
 }
 /**
  * Submit the quote. Quote submit process will create the order based on quote data
  *
  * @return Mage_Sales_Model_Order
  */
 public function submit()
 {
     $this->_validate();
     $quote = $this->_quote;
     $isVirtual = $quote->isVirtual();
     $transaction = Mage::getModel('core/resource_transaction');
     if ($quote->getCustomerId()) {
         $transaction->addObject($quote->getCustomer());
     }
     $transaction->addObject($quote);
     $quote->reserveOrderId();
     if ($isVirtual) {
         $order = $this->_convertor->addressToOrder($quote->getBillingAddress());
     } else {
         $order = $this->_convertor->addressToOrder($quote->getShippingAddress());
     }
     $order->setBillingAddress($this->_convertor->addressToOrderAddress($quote->getBillingAddress()));
     if (!$isVirtual) {
         $order->setShippingAddress($this->_convertor->addressToOrderAddress($quote->getShippingAddress()));
     }
     $order->setPayment($this->_convertor->paymentToOrderPayment($quote->getPayment()));
     foreach ($this->_orderData as $key => $value) {
         $order->setData($key, $value);
     }
     foreach ($quote->getAllItems() as $item) {
         $orderItem = $this->_convertor->itemToOrderItem($item);
         if ($item->getParentItem()) {
             $orderItem->setParentItem($order->getItemByQuoteItemId($item->getParentItem()->getId()));
         }
         $order->addItem($orderItem);
     }
     $quote->setIsActive(false);
     $transaction->addObject($order);
     $transaction->addCommitCallback(array($order, 'place'));
     $transaction->addCommitCallback(array($order, 'save'));
     /**
      * We can use configuration data for declare new order status
      */
     Mage::dispatchEvent('checkout_type_onepage_save_order', array('order' => $order, 'quote' => $quote));
     Mage::dispatchEvent('sales_model_service_quote_submit_before', array('order' => $order, 'quote' => $quote));
     $transaction->save();
     Mage::dispatchEvent('sales_model_service_quote_submit_after', array('order' => $order, 'quote' => $quote));
     return $order;
 }
Beispiel #3
0
 /**
  * Convert quote payment to order payment
  *
  * @param   Mage_Sales_Model_Quote_Payment $payment
  * @return  Mage_Sales_Model_Quote_Payment
  */
 public function paymentToOrderPayment(Mage_Sales_Model_Quote_Payment $payment)
 {
     $orderPayment = parent::paymentToOrderPayment($payment);
     $orderPayment->setSuAccountNumber($payment->getSuAccountNumber())->setSuBankCode($payment->getSuBankCode())->setSuNlBankCode($payment->getSuNlBankCode())->setSuPaycode($payment->getSuPaycode())->setSuSecurity($payment->getSuSecurity())->setSuIban($payment->getSuIban())->setSuBic($payment->getSuBic())->setSuHolder($payment->getSuHolder());
     return $orderPayment;
 }