I created a custom page, displaying all product with qty button. Here we can choose multiple products. After that i want to order place of all selected products. How can i place order for multiple product? Is any plugin is available in magento?
1条回答 默认 最新
- duandaodao6951 2015-09-24 08:20关注
I was also in need of same functionality, will ended up this by using my own script instead of any plugin. Below is the complete code of placing order programatically. Hope this helps.
<?php $transaction = Mage::getModel('core/resource_transaction'); $increment_ids = array(); if ($orderData) { try { $reservedOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId($store_id); $order = Mage::getModel('sales/order') ->setIncrementId($reservedOrderId) ->setStoreId($store_id) ->setQuoteId(0) ->setGlobal_currency_code('USD') ->setBase_currency_code('USD') ->setStore_currency_code('USD') ->setOrder_currency_code('USD'); //saving customer $order->setCustomer_email($orderData['email']) ->setCustomerFirstname($orderData['firstname']) ->setCustomerLastname($orderData['lastname']) ->setCustomerGroupId(1) ->setCustomer_is_guest(1); $regionModel = Mage::getModel('directory/region')->loadByCode("CA", 'US'); $shippingAddress = Mage::getModel('sales/order_address') ->setStoreId($storeId) ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING) ->setFirstname($orderData['firstname']) ->setLastname($orderData['lastname']) ->setStreet($orderData['shipping']['line']) ->setCity($orderData['shipping']['city']) ->setRegion($orderData['shipping']['region']) ->setRegionId($regionModel->getId()) ->setCountry_id('US') ->setPostcode($orderData['shipping']['postcode']) ->setTelephone($orderData['shipping']['telephone']); $order->setShippingAddress($shippingAddress) ->setShipping_method($orderData['shipping_method']) ->setShippingDescription($orderData['shipping_description']); //get region code $regionModel = Mage::getModel('directory/region')->loadByCode($orderData['billing']['region'], 'US'); // set Billing Address $billingAddress = Mage::getModel('sales/order_address') ->setStoreId($storeId) ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING) ->setFirstname($orderData['firstname']) ->setLastname($orderData['lastname']) ->setStreet($orderData['billing']['line']) ->setCity($orderData['billing']['city']) ->setRegion($regionModel->getName()) ->setRegionId($regionModel->getId()) ->setCountry_id('US') ->setPostcode($orderData['billing']['postcode']) ->setTelephone($orderData['billing']['telephone']); $order->setBillingAddress($billingAddress); //save products $subTotal = 0; $productPrice=0; $qtyTotal=0; foreach ($orderData['items'] as $key=>$product) { $_product = Mage::getModel('catalog/product')->load($key); $rowTotal = $_product->getPrice() * $product; $orderItem = Mage::getModel('sales/order_item') ->setStoreId($storeId) ->setQuoteItemId(0) ->setQuoteParentItemId(NULL) ->setProductId($key) ->setProductType($_product->getTypeId()) ->setQtyBackordered(NULL) ->setTotalQtyOrdered($product) ->setQtyOrdered($product) ->setName($_product->getName()) ->setSku($_product->getSku()) ->setPrice(($_product->getPrice())) ->setBasePrice($_product->getPrice()) ->setOriginalPrice($_product->getPrice()) ->setRowTotal($rowTotal) ->setBaseRowTotal($rowTotal); $qtyTotal += $product; $subTotal += $rowTotal; $order->addItem($orderItem); } $grandTotal = ($subTotal+$orderData['shipping_charge'])-$orderData['discount']; $orderPayment = Mage::getModel('sales/order_payment') ->setStoreId($store_id) ->setCustomerPaymentId(0) ->setMethod('purchaseorder') ->setPo_number($reservedOrderId); $order->setPayment($orderPayment); //date_default_timezone_set('America/Los_Angeles'); $order->setSubtotal($subTotal) ->setState('processing') ->setStatus('processing') ->setCouponCode($orderData['coupon']) ->setBaseDiscountAmount($orderData['discount']) ->setBaseGrandTotal($grandTotal) ->setBaseSubtotal($subTotal) ->setBaseTotalInvoiced($grandTotal) ->setBaseTotalQtyOrdered($qtyTotal) ->setDiscountAmount($orderData['discount']) ->setGrandTotal($grandTotal) ->setSubtotal($subTotal) ->setTotalQtyOrdered($qtyTotal) ->setBaseTotalDue($grandTotal) //->setCreatedAt(date('Y-m-d')) //->setUpdatedAt(date('Y-m-d')) ->setTotalItemCount($order_detail['qty']) ->setShippingAmount($orderData['shipping_charge']) ->setBaseShippingAmount($orderData['shipping_charge']); $transaction->addObject($order); $transaction->addCommitCallback(array($order, 'place')); $transaction->addCommitCallback(array($order, 'save')); $transaction->save(); $order_data = $order->getData(); $order_id = $order_data['increment_id']; $order->sendNewOrderEmail(); } catch (Exception $e) { $finalresult=array('exception',$e->getMessage()); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报