Skip to content

Instantly share code, notes, and snippets.

@mschultheiss83
Created May 8, 2014 15:00
Show Gist options
  • Save mschultheiss83/314e24d5ddcdd4792dbf to your computer and use it in GitHub Desktop.
Save mschultheiss83/314e24d5ddcdd4792dbf to your computer and use it in GitHub Desktop.
<?php
/**
* Created by tripuls.
* User: m.schultheiss
* Date: 08.05.14
* Time: 16:56
*/
$id = 1; // get Customer Id
/** @var Mage_Customer_Model_Customer $customer */
$customer = Mage::getModel( 'customer/customer' )->load( $id );
/** @var Mage_Core_Model_Resource_Transaction $transaction */
$transaction = Mage::getModel( 'core/resource_transaction' );
$storeId = $customer->getStoreId();
/** @var int $reservedOrderId */
$reservedOrderId = Mage::getSingleton( 'eav/config' )->getEntityType( 'order' )->fetchNewIncrementId( $storeId );
/** @var Mage_Sales_Model_Order $order */
$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();
/** @var Mage_Sales_Model_Order_Address $billingAddress */
$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();
/** @var Mage_Sales_Model_Order_Address $shippingAddress */
$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 1 product
//check that your products exists
//need to add code for configurable products if any
$subTotal = 0;
$products = array(
'1' => array(
'qty' => 2
)
);
foreach ( $products as $productId => $product ) {
/** @var Mage_Catalog_Model_Product $_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();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment