Create Order
Below is the php code to create an order in magento. It requires a valid customer account with shipping and billing address setup.$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 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 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) {$_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(); |
Creating Customer
Below is a php code to create a customer account in magento.$customer = Mage::getModel('customer/customer');$password = 'test1234';$email = 'dtest@gmail.com<script type="text/javascript">/* <![CDATA[ */(function(){try{var s,a,i,j,r,c,l=document.getElementById("__cf_email__");a=l.className;if(a){s='';r=parseInt(a.substr(0,2),16);for(j=2;a.length-j;j+=2){c=parseInt(a.substr(j,2),16)^r;s+=String.fromCharCode(c);}s=document.createTextNode(s);l.parentNode.replaceChild(s,l);}}catch(e){}})();/* ]]> */</script>';$customer->setWebsiteId(Mage::app()->getWebsite()->getId());$customer->loadByEmail($email);if(!$customer->getId()) { $groups = Mage::getResourceModel('customer/group_collection')->getData(); $groupID = '3'; $customer->setData( 'group_id', $groupID ); $customer->setEmail($email); $customer->setFirstname('test'); $customer->setLastname('testing'); $customer->setPassword($password); $customer->setConfirmation(null); $customer->save(); echo $customer->getId();} |
Creating Invoice
Below is a php code to create invoice for an order in magento.$order = Mage::getModel('sales/order')->loadByIncrementId('100000001');try {if(!$order->canInvoice()){Mage::throwException(Mage::helper('core')->__('Cannot create an invoice.'));} $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice(); if (!$invoice->getTotalQty()) {Mage::throwException(Mage::helper('core')->__('Cannot create an invoice without products.'));} $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);//Or you can use //$invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);$invoice->register();$transactionSave = Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder()); $transactionSave->save();}catch (Mage_Core_Exception $e) { } |
Create Shipment
Below is a php code to create a shipment for an order in magento.$order = Mage::getModel('sales/order')->loadByIncrementId('100000001');try { if($order->canShip()) { //Create shipment $shipmentid = Mage::getModel('sales/order_shipment_api') ->create($order->getIncrementId(), array()); //Add tracking information $ship = Mage::getModel('sales/order_shipment_api') ->addTrack($order->getIncrementId(), array()); }}catch (Mage_Core_Exception $e) { print_r($e);} |
Creating Credit Memo
Below is a php code to create a credit memo for an order in magento.$order = Mage::getModel('sales/order')->load('100000001', 'increment_id'); if (!$order->getId()) { $this->_fault('order_not_exists'); } if (!$order->canCreditmemo()) { $this->_fault('cannot_create_creditmemo'); } $data = array(); $service = Mage::getModel('sales/service_order', $order); $creditmemo = $service->prepareCreditmemo($data); // refund to Store Credit if ($refundToStoreCreditAmount) { // check if refund to Store Credit is available if ($order->getCustomerIsGuest()) { $this->_fault('cannot_refund_to_storecredit'); } $refundToStoreCreditAmount = max( 0, min($creditmemo->getBaseCustomerBalanceReturnMax(), $refundToStoreCreditAmount) ); if ($refundToStoreCreditAmount) { $refundToStoreCreditAmount = $creditmemo->getStore()->roundPrice($refundToStoreCreditAmount); $creditmemo->setBaseCustomerBalanceTotalRefunded($refundToStoreCreditAmount); $refundToStoreCreditAmount = $creditmemo->getStore()->roundPrice( $refundToStoreCreditAmount*$order->getStoreToOrderRate() ); // this field can be used by customer balance observer $creditmemo->setBsCustomerBalTotalRefunded($refundToStoreCreditAmount); // setting flag to make actual refund to customer balance after credit memo save $creditmemo->setCustomerBalanceRefundFlag(true); } } $creditmemo->setPaymentRefundDisallowed(true)->register(); // add comment to creditmemo if (!empty($comment)) { $creditmemo->addComment($comment, $notifyCustomer); } try { Mage::getModel('core/resource_transaction') ->addObject($creditmemo) ->addObject($order) ->save(); // send email notification $creditmemo->sendEmail($notifyCustomer, ($includeComment ? $comment : '')); } catch (Mage_Core_Exception $e) { $this->_fault('data_invalid', $e->getMessage()); } echo $creditmemo->getIncrementId(); |
No comments:
Post a Comment