magento 订单处理流程主要涉及以下几个表
- sales_flat_quote
- sales_flat_quote_item
- sales_flat_quote_item_option
- sales_flat_quote_address
- sales_flat_quote_payment
- sales_flat_quote_shipping_rate
- sales_flat_order
- sales_flat_order_grid
- sales_flat_order_item
- sales_flat_order_payment
- sales_flat_order_status_history
- sales_flat_invoice
- sales_flat_invoice_grid
- sales_flat_invoice_item
主要是Quote, Order, Invoice.三个表结构。
下面我通过代码实现下订单过程
getStore('default'); $customer = Mage::getModel('customer/customer'); $customer->setStore($store); $customer->loadByEmail('email_address@gmail.com'); $quote = Mage::getModel('sales/quote'); $quote->setStore($store); $quote->assignCustomer($customer); $product1 = Mage::getModel('catalog/product')->load(166); /* HTC Touch Diamond */ $buyInfo1 = array('qty' => 1); $product2 = Mage::getModel('catalog/product')->load(18); /* Sony Ericsson W810i */ $buyInfo2 = array('qty' => 3); $quote->addProduct($product1, new Varien_Object($buyInfo1)); $quote->addProduct($product2, new Varien_Object($buyInfo2)); $billingAddress = $quote->getBillingAddress()->addData($customer->getPrimaryBillingAddress()); $shippingAddress = $quote->getShippingAddress()->addData($customer->getPrimaryShippingAddress()); $shippingAddress->setCollectShippingRates(true)->collectShippingRates() ->setShippingMethod('flatrate_flatrate') ->setPaymentMethod('checkmo'); $quote->getPayment()->importData(array('method' => 'checkmo')); $quote->collectTotals()->save(); $service = Mage::getModel('sales/service_quote', $quote); $service->submitAll(); $order = $service->getOrder(); $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice(); $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE); $invoice->register(); $transaction = Mage::getModel('core/resource_transaction') ->addObject($invoice) ->addObject($invoice->getOrder()); $transaction->save();