Skip to content

Instantly share code, notes, and snippets.

@molotovbliss
Created May 2, 2016 11:35
Show Gist options
  • Save molotovbliss/d7148c6b0f07d6fcfe70bae2cd49e917 to your computer and use it in GitHub Desktop.
Save molotovbliss/d7148c6b0f07d6fcfe70bae2cd49e917 to your computer and use it in GitHub Desktop.
Magento Orders Import/Export
<?php
require_once '../app/Mage.php';
Mage::app();
$id=1; // get Customer Id
$customer = Mage::getModel('customer/customer')->load($id);
$transaction = Mage::getModel('core/resource_transaction');
$storeId = $customer->getStoreId();
$reservedOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId($storeId);
$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 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('flatrate');
$orderPayment = Mage::getModel('sales/order_payment')
->setStoreId($storeId)
->setCustomerPaymentId(0)
->setMethod('purchaseorder')
->setPo_number(' - ');
$order->setPayment($orderPayment);
// let say, we have 2 products
$subTotal = 0;
$products = array('1' => array('qty' => 1),'2' =>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();
<?php
require_once 'app/Mage.php';
umask(0);
Mage::app('default');
if (($handle = fopen("ordererror.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$row++;
if($row>1){
break;
}
else
{
$customer_email = $data[3];
$customer = Mage::getModel("customer/customer");
$customer->setWebsiteId(Mage::app()->getWebsite()->getId());
$customer->loadByEmail($customer_email);
//echo $customer->getId(); die;
//echo $customer->getFirstName(); die;
$id=$customer->getId();
$customer = Mage::getModel('customer/customer')->load($id);
$group_id = $customer->getGroupId();
//echo $group_id;
$transaction = Mage::getModel('core/resource_transaction');
$storeId = $customer->getStoreId();
$reservedOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId($storeId);
$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($customer->getEntityId())
->setPrefix($customer->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($customer->getEntityId())
->setPrefix($customer->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(
'1' => array(
'qty' => $data[22]
)
);
//$totals = Mage::getSingleton('checkout/cart')->getQuote()->getTotals();
//$subtotal = $totals["subtotal"]->getValue();
//echo $subtotal;die();
$product_sku = $data[20];
$product_id = Mage::getModel("catalog/product")->getIdBySku( $product_sku );
//echo $product_id;
foreach ($products as $productId=>$product) {
$_product = Mage::getModel('catalog/product')->load($product_id);
//echo $_product->getGroupPrice()->load($customer->getGroupId());die();
$grp_price_arr = $_product->getData('group_price');
$cust_group_id=$grp_price_arr[0]['cust_group'];
$cust_group_id_ret=$grp_price_arr[1]['cust_group'];
if($cust_group_id==5){
$cust_group_price=$grp_price_arr[0]['price'];
//echo $cust_group_price;
}
else{
echo $cust_group_price=$grp_price_arr[1]['price'];
}
//echo $grp_price_arr[group_id]['price'];die;
$rowTotal = $cust_group_price * $product['qty'];
//echo $rowTotal;die();
$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;
//echo $subTotal;die();
$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();
$last_order_increment_id = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();
echo $last_order_increment_id;
}
}
fclose($handle);
}
?>
<?php
$file = __DIR__.'/orders/orders.xml';
if (file_exists($file)) {
exit();
}
set_time_limit(0);
ini_set('memory_limit', '1024M');
include_once “../app/Mage.php”;
umask (0);
//Mage::app('default');
$app = Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$orderids = array();
$orders = Mage::getModel('sales/order')->getCollection();
$poArray = new SimpleXMLElement('');
$total = 0;
foreach ($orders as $order) {
if ($order->getData('ext_order_id') =='1C') continue;
$total++;
// order id
$orderid = $order->getIncrementId();
// add child element to the SimpleXML object
$pOrder = $poArray->addChild('Order');
// addresses
$shippingAddress = $order->getShippingAddress();
$billingAddress = $order->getBillingAddress();
//
// Add attributes to the SimpleXML element
$pOrder->addChild('Number', $orderid);
$pOrder->addChild('createdAt', $order->getCreatedAt());
$pOrder->addChild('quoteId', $order->getQuoteId());
$pOrder->addChild('taxAmount', $order->getTaxAmount());
$pOrder->addChild('discountAmount', $order->getDiscountAmount());
$pOrder->addChild('shippingInclTax', $order->getShippingInclTax());
$pOrder->addChild('grandTotal', $order->getGrandTotal());
$customer = $pOrder->addChild('Customer');
$customer->addChild('customerId', $order->getCustomerId());
$customer->addChild('fistName', $order->getCustomerFirstname());
$customer->addChild('secondName', $order->getCustomerLastname());
$customer->addChild('company', $order->getCompany());
$customer->addChild('email', $order->getCustomerEmail());
$customer->addChild('phone', $order->getPhone());
$customer->addChild('currency', $order->getOrderCurrencyCode());
$customer->addChild('shippingAddressId', $order->getShippingAddressId());
$shipping = $pOrder->addChild('Shipping');
$shipping->addChild('fistName', $shippingAddress->getFirstname());
$shipping->addChild('secondName', $shippingAddress->getLastname());
$shipping->addChild('company', $shippingAddress->getCompany());
$shipping->addChild('email', $shippingAddress->getEmail());
$shipping->addChild('phone', $shippingAddress->getTelephone());
$shipping->addChild('address1', $shippingAddress->getStreet(1));
$shipping->addChild('address2', $shippingAddress->getStreet(2));
$shipping->addChild('address3', $shippingAddress->getStreet(3));
$shipping->addChild('city', $shippingAddress->getCity());
$shipping->addChild('region', $shippingAddress->getRegion());
$shipping->addChild('zip', $shippingAddress->getPostcode());
$shipping->addChild('country', $shippingAddress->getCountry_id());
$billing = $pOrder->addChild('Billing');
$billing->addChild('address1', $billingAddress->getStreet(1));
$billing->addChild('address2', $billingAddress->getStreet(2));
$billing->addChild('address3', $billingAddress->getStreet(3));
$billing->addChild('city', $billingAddress->getCity());
$billing->addChild('region', $billingAddress->getRegion());
$billing->addChild('zip', $billingAddress->getPostcode());
$billing->addChild('country', $billingAddress->getCountry_id());
$pItems = $pOrder->addChild('Rows');
$items = $order->getItemsCollection();
// loop through the order items
foreach ($items AS $itemid => $item) {
$pItem = $pItems->addChild('Row');
$pItem->addChild('createdAt', $item->getCreatedAt());
$pItem->addChild('productId', $item->getProductId());
$pItem->addChild('orderId', $orderid);
$pItem->addChild('sku', $item->getSku());
$pItem->addChild('name', $item->getName());
$pItem->addChild('price', $item->getPrice());
$pItem->addChild('tax', $item->getTaxAmount());
$pItem->addChild('discount', $item->getDiscount());
$pItem->addChild('qty', $item->getQtyOrdered());
}
// add the id to the order ids array
$orderids[] = $orderid;
$order->setData('ext_order_id','1C');
$order->save();
}
file_put_contents($file, $poArray->asXML());
echo 'Exported orders: '.$total;
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment