2014-01-31 110 views
2

我已經使用了下面的代碼。它正在研究簡單的產品和單一產品。通過CSV導入Magento訂單

以編程方式爲所有類型的產品創建訂單。首先,我已將產品添加到購物車中,然後添加了所有參數,以便像發貨,付款方式以及結算和運輸方式相應地進行訂購。當我向產品添加選項時,它會生成空白產品訂單。

但它不適用於其他產品類型。

我用下面的腳本也

http://pragneshkaria.com/programmatically-create-order-in-magento/

請幫我以編程方式創建訂單。

+0

其中U遵循仍處於開發階段的鏈接。他們直接提到它有一些錯誤---「這個代碼仍然有限制」。 - 這是代碼 –

回答

1

你必須創建一個模塊,

/* create order for registered customer */ 

$id=12; // get Customer Id 
$customer = Mage::getModel('customer/customer')->load($id); 
// print_r($customer->getData()); exit; 
$transaction = Mage::getModel('core/resource_transaction'); 
$storeId = $customer->getStoreId(); 
$reservedOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId(1); // exit(); 
$order = Mage::getModel('sales/order') 
->setIncrementId($reservedOrderId) 
->setStoreId($storeId) 
->setQuoteId(0) 
->setGlobal_currency_code('USD') 
->setBase_currency_code('USD') 
->setStore_currency_code('USD') 
->setOrder_currency_code('USD'); 
// Set your store currency USD or any other 

// set Customer data 
$order->setCustomer_email($customer->getEmail()) 
->setCustomerFirstname($customer->getFirstname()) 
->setCustomerLastname($customer->getLastname()) 
->setCustomerGroupId($customer->getGroupId()) 
->setCustomer_is_guest(0) 
->setCustomer($customer); 

// set Billing Address 
$billing = $customer->getDefaultBillingAddress(); 
$billingAddress = Mage::getModel('sales/order_address') 
->setStoreId($storeId) 
->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING) 
->setCustomerId($customer->getId()) 
->setCustomerAddressId($customer->getDefaultBilling()) 
->setCustomer_address_id($billing->getEntityId()) 
->setPrefix($billing->getPrefix()) 
->setFirstname($billing->getFirstname()) 
->setMiddlename($billing->getMiddlename()) 
->setLastname($billing->getLastname()) 
->setSuffix($billing->getSuffix()) 
->setCompany($billing->getCompany()) 
->setStreet($billing->getStreet()) 
->setCity($billing->getCity()) 
->setCountry_id($billing->getCountryId()) 
->setRegion($billing->getRegion()) 
->setRegion_id($billing->getRegionId()) 
->setPostcode($billing->getPostcode()) 
->setTelephone($billing->getTelephone()) 
->setFax($billing->getFax()); 
$order->setBillingAddress($billingAddress); 

$shipping = $customer->getDefaultShippingAddress(); 
$shippingAddress = Mage::getModel('sales/order_address') 
->setStoreId($storeId) 
->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING) 
->setCustomerId($customer->getId()) 
->setCustomerAddressId($customer->getDefaultShipping()) 
->setCustomer_address_id($shipping->getEntityId()) 
->setPrefix($shipping->getPrefix()) 
->setFirstname($shipping->getFirstname()) 
->setMiddlename($shipping->getMiddlename()) 
->setLastname($shipping->getLastname()) 
->setSuffix($shipping->getSuffix()) 
->setCompany($shipping->getCompany()) 
->setStreet($shipping->getStreet()) 
->setCity($shipping->getCity()) 
->setCountry_id($shipping->getCountryId()) 
->setRegion($shipping->getRegion()) 
->setRegion_id($shipping->getRegionId()) 
->setPostcode($shipping->getPostcode()) 
->setTelephone($shipping->getTelephone()) 
->setFax($shipping->getFax()); 

$order->setShippingAddress($shippingAddress) 
->setShipping_method('flatrate_flatrate'); 
/*->setShippingDescription($this->getCarrierName('flatrate'));*/ 
/*some error i am getting here need to solve further*/ 

// you can set your payment method name here as per your need 
$orderPayment = Mage::getModel('sales/order_payment') 
->setStoreId($storeId) 
->setCustomerPaymentId(0) 
->setMethod('purchaseorder') 
->setPo_number(' â€「 '); 
$order->setPayment($orderPayment); 

// let say, we have 2 products 
// check that your products exists 
// need to add code for configurable products if any 
$subTotal = 0; 
$products = array(
    '7088' => array(
    'qty' => 2 
    ), 
    '7089' => array(
    'qty' => 1 
    ) 
); 

foreach ($products as $productId=>$product) { 
$_product = Mage::getModel('catalog/product')->load($productId); 
$rowTotal = $_product->getPrice() * $product['qty']; 
$orderItem = Mage::getModel('sales/order_item') 
->setStoreId($storeId) 
->setQuoteItemId(0) 
->setQuoteParentItemId(NULL) 
->setProductId($productId) 
->setProductType($_product->getTypeId()) 
->setQtyBackordered(NULL) 
->setTotalQtyOrdered($product['rqty']) 
->setQtyOrdered($product['qty']) 
->setName($_product->getName()) 
->setSku($_product->getSku()) 
->setPrice($_product->getPrice()) 
->setBasePrice($_product->getPrice()) 
->setOriginalPrice($_product->getPrice()) 
->setRowTotal($rowTotal) 
->setBaseRowTotal($rowTotal); 

$subTotal += $rowTotal; 
$order->addItem($orderItem); 
} 

$order->setSubtotal($subTotal) 
->setBaseSubtotal($subTotal) 
->setGrandTotal($subTotal) 
->setBaseGrandTotal($subTotal); 

$transaction->addObject($order); 
$transaction->addCommitCallback(array($order, 'place')); 
$transaction->addCommitCallback(array($order, 'save')); 
$transaction->save(); 

/* create order for guest customer */ 

$quote = Mage::getModel('sales/quote') 
     ->setStoreId(Mage::app()->getStore('default')->getId()); 

$lsit_od_id = array('7125','7088','7089'); 
foreach ($lsit_od_id as $key => $value) { 
    $product = Mage::getModel('catalog/product')->load($value); /* 6 => Some product ID */ 
    $buyInfo = array('qty' => 1); 
    $quote->addProduct($product, new Varien_Object($buyInfo)); 
} 


$billingAddress = array(
    'firstname' => 'abc', 
    'lastname' => 'ccc', 
    'company' => 'hhhh', 
    'email' => '[email protected]', 
    'street' => array(
     'Sample Street Line_1', 
     'Sample Street Line_2' 
    ), 
    'city' => 'City', 
    'region_id' => '', 
    'region' => 'State/Province', 
    'postcode' => '12345', 
    'country_id' => 'NL', 
    'telephone' => '1234567890', 
    'fax' => '123456987', 
    'customer_password' => '', 
    'confirm_password' => '', 
    'save_in_address_book' => '0', 
    'use_for_shipping' => '1', 
); 

$quote->getBillingAddress() 
     ->addData($billingAddress); 

$quote->getShippingAddress() 
     ->addData($billingAddress) 
     ->setShippingMethod('tablerate_bestway') 
     ->setPaymentMethod('checkmo') 
     ->setCollectShippingRates(true) 
     ->collectTotals(); 

$quote->setCheckoutMethod('guest') 
      ->setCustomerId(null) 
      ->setCustomerEmail($quote->getBillingAddress()->getEmail()) 
      ->setCustomerIsGuest(true) 
      ->setCustomerGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID); 

$quote->getPayment()->importData(array('method' => 'checkmo')); 

$quote->save(); 

$service = Mage::getModel('sales/service_quote', $quote); 
$service->submitAll(); 
+0

下面的句子我如何選擇100個產品給客戶 – Rathinam

+0

只需更新$ lsit_od_id數組(必需的) –

+0

/*爲客人創建訂單*/ $ quote =法師:: getModel('sales/quote') - > setStoreId(Mage :: app() - > getStore('default') - >的getId()); $ lsit_od_id = array('7125','7088','7089'); 我如何爲我的註冊客戶創建訂單.... – Rathinam