php - Importar pedidos en Magento a través de CSV
order magento-1.7 (1)
He usado el código a continuación. Está trabajando en productos simples y únicos.
Crear orden programáticamente para todo tipo de productos. Primero agregué el producto al carrito, luego agregué todos los parámetros para ordenarlos como el envío, el método de pago y el método de envío y facturación correspondientes. Cuando agrego opciones al producto, genera un orden de producto en blanco.
Pero no funciona para otros tipos de productos.
Usé la secuencia de comandos de abajo también,
http://pragneshkaria.com/programmatically-create-order-in-magento/
Por favor, ayúdame a crear órdenes programáticamente.
Tienes que crear un módulo para eso,
/* 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();