magento中有用的代码片段

来源:互联网 发布:软件实施工程师待遇 编辑:程序博客网 时间:2024/05/16 01:23

创建订单,需要有一个包含地址的个人账户

[php] view plaincopy
  1. $id=1; // get Customer Id  
  2. $customer = Mage::getModel('customer/customer')->load($id);  
  3.    
  4. $transaction = Mage::getModel('core/resource_transaction');  
  5. $storeId = $customer->getStoreId();  
  6. $reservedOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId($storeId);  
  7.    
  8. $order = Mage::getModel('sales/order')  
  9. ->setIncrementId($reservedOrderId)  
  10. ->setStoreId($storeId)  
  11. ->setQuoteId(0)  
  12. ->setGlobal_currency_code('USD')  
  13. ->setBase_currency_code('USD')  
  14. ->setStore_currency_code('USD')  
  15. ->setOrder_currency_code('USD');  
  16. //Set your store currency USD or any other  
  17.    
  18. // set Customer data  
  19. $order->setCustomer_email($customer->getEmail())  
  20. ->setCustomerFirstname($customer->getFirstname())  
  21. ->setCustomerLastname($customer->getLastname())  
  22. ->setCustomerGroupId($customer->getGroupId())  
  23. ->setCustomer_is_guest(0)  
  24. ->setCustomer($customer);  
  25.    
  26. // set Billing Address  
  27. $billing = $customer->getDefaultBillingAddress();  
  28. $billingAddress = Mage::getModel('sales/order_address')  
  29. ->setStoreId($storeId)  
  30. ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING)  
  31. ->setCustomerId($customer->getId())  
  32. ->setCustomerAddressId($customer->getDefaultBilling())  
  33. ->setCustomer_address_id($billing->getEntityId())  
  34. ->setPrefix($billing->getPrefix())  
  35. ->setFirstname($billing->getFirstname())  
  36. ->setMiddlename($billing->getMiddlename())  
  37. ->setLastname($billing->getLastname())  
  38. ->setSuffix($billing->getSuffix())  
  39. ->setCompany($billing->getCompany())  
  40. ->setStreet($billing->getStreet())  
  41. ->setCity($billing->getCity())  
  42. ->setCountry_id($billing->getCountryId())  
  43. ->setRegion($billing->getRegion())  
  44. ->setRegion_id($billing->getRegionId())  
  45. ->setPostcode($billing->getPostcode())  
  46. ->setTelephone($billing->getTelephone())  
  47. ->setFax($billing->getFax());  
  48. $order->setBillingAddress($billingAddress);  
  49.    
  50. $shipping = $customer->getDefaultShippingAddress();  
  51. $shippingAddress = Mage::getModel('sales/order_address')  
  52. ->setStoreId($storeId)  
  53. ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)  
  54. ->setCustomerId($customer->getId())  
  55. ->setCustomerAddressId($customer->getDefaultShipping())  
  56. ->setCustomer_address_id($shipping->getEntityId())  
  57. ->setPrefix($shipping->getPrefix())  
  58. ->setFirstname($shipping->getFirstname())  
  59. ->setMiddlename($shipping->getMiddlename())  
  60. ->setLastname($shipping->getLastname())  
  61. ->setSuffix($shipping->getSuffix())  
  62. ->setCompany($shipping->getCompany())  
  63. ->setStreet($shipping->getStreet())  
  64. ->setCity($shipping->getCity())  
  65. ->setCountry_id($shipping->getCountryId())  
  66. ->setRegion($shipping->getRegion())  
  67. ->setRegion_id($shipping->getRegionId())  
  68. ->setPostcode($shipping->getPostcode())  
  69. ->setTelephone($shipping->getTelephone())  
  70. ->setFax($shipping->getFax());  
  71.    
  72. $order->setShippingAddress($shippingAddress)  
  73. ->setShipping_method('flatrate_flatrate');  
  74. /*->setShippingDescription($this->getCarrierName('flatrate'));*/  
  75. /*some error i am getting here need to solve further*/  
  76.    
  77. //you can set your payment method name here as per your need  
  78. $orderPayment = Mage::getModel('sales/order_payment')  
  79. ->setStoreId($storeId)  
  80. ->setCustomerPaymentId(0)  
  81. ->setMethod('purchaseorder')  
  82. ->setPo_number(' – ');  
  83. $order->setPayment($orderPayment);  
  84.    
  85. // let say, we have 1 product  
  86. //check that your products exists  
  87. //need to add code for configurable products if any  
  88. $subTotal = 0;  
  89. $products = array(  
  90.     '1' => array(  
  91.     'qty' => 2  
  92.     )  
  93. );  
  94.    
  95. foreach ($products as $productId=>$product) {  
  96. $_product = Mage::getModel('catalog/product')->load($productId);  
  97. $rowTotal = $_product->getPrice() * $product['qty'];  
  98. $orderItem = Mage::getModel('sales/order_item')  
  99. ->setStoreId($storeId)  
  100. ->setQuoteItemId(0)  
  101. ->setQuoteParentItemId(NULL)  
  102. ->setProductId($productId)  
  103. ->setProductType($_product->getTypeId())  
  104. ->setQtyBackordered(NULL)  
  105. ->setTotalQtyOrdered($product['rqty'])  
  106. ->setQtyOrdered($product['qty'])  
  107. ->setName($_product->getName())  
  108. ->setSku($_product->getSku())  
  109. ->setPrice($_product->getPrice())  
  110. ->setBasePrice($_product->getPrice())  
  111. ->setOriginalPrice($_product->getPrice())  
  112. ->setRowTotal($rowTotal)  
  113. ->setBaseRowTotal($rowTotal);  
  114.    
  115. $subTotal += $rowTotal;  
  116. $order->addItem($orderItem);  
  117. }  
  118.    
  119. $order->setSubtotal($subTotal)  
  120. ->setBaseSubtotal($subTotal)  
  121. ->setGrandTotal($subTotal)  
  122. ->setBaseGrandTotal($subTotal);  
  123.    
  124. $transaction->addObject($order);  
  125. $transaction->addCommitCallback(array($order'place'));  
  126. $transaction->addCommitCallback(array($order'save'));  
  127. $transaction->save();  
创建一个账户

[php] view plaincopy
  1. <span style="font-size:12px;">$customer = Mage::getModel('customer/customer');  
  2. $password = 'test1234';  
  3. $email = 'dtest@gmail.com<script type="text/javascript">  
  4. /* <![CDATA[ */  
  5. (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){}})();  
  6. /* ]]> */  
  7. </script>';  
  8. $customer->setWebsiteId(Mage::app()->getWebsite()->getId());  
  9. $customer->loadByEmail($email);  
  10. if(!$customer->getId()) {  
  11.     $groups = Mage::getResourceModel('customer/group_collection')->getData();  
  12.     $groupID = '3';  
  13.    
  14.     $customer->setData( 'group_id'$groupID );  
  15.     $customer->setEmail($email);  
  16.     $customer->setFirstname('test');  
  17.     $customer->setLastname('testing');  
  18.     $customer->setPassword($password);  
  19.    
  20.     $customer->setConfirmation(null);  
  21.     $customer->save();  
  22.    
  23.     echo $customer->getId();  
  24. }</span>  

创建invoice
[php] view plaincopy
  1. $order = Mage::getModel('sales/order')->loadByIncrementId('100000001');  
  2. try {  
  3. if(!$order->canInvoice())  
  4. {  
  5. Mage::throwException(Mage::helper('core')->__('Cannot create an invoice.'));  
  6. }  
  7.     
  8. $invoice = Mage::getModel('sales/service_order'$order)->prepareInvoice();  
  9.     
  10. if (!$invoice->getTotalQty()) {  
  11. Mage::throwException(Mage::helper('core')->__('Cannot create an invoice without products.'));  
  12. }  
  13.     
  14. $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);  
  15. //Or you can use  
  16. //$invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);  
  17. $invoice->register();  
  18. $transactionSave = Mage::getModel('core/resource_transaction')  
  19. ->addObject($invoice)  
  20. ->addObject($invoice->getOrder());  
  21.     
  22. $transactionSave->save();  
  23. }  
  24. catch (Mage_Core_Exception $e) {  
  25.     
  26. }  

创建shipment
[php] view plaincopy
  1. $order = Mage::getModel('sales/order')->loadByIncrementId('100000001');  
  2. try {  
  3.     if($order->canShip()) {  
  4.         //Create shipment  
  5.         $shipmentid = Mage::getModel('sales/order_shipment_api')  
  6.                         ->create($order->getIncrementId(), array());  
  7.         //Add tracking information  
  8.         $ship = Mage::getModel('sales/order_shipment_api')  
  9.                         ->addTrack($order->getIncrementId(), array());         
  10.     }  
  11. }catch (Mage_Core_Exception $e) {  
  12.  print_r($e);  
  13. }  
创建Credit Memo
[php] view plaincopy
  1. $order = Mage::getModel('sales/order')->load('100000001''increment_id');  
  2.         if (!$order->getId()) {  
  3.             $this->_fault('order_not_exists');  
  4.         }  
  5.         if (!$order->canCreditmemo()) {  
  6.             $this->_fault('cannot_create_creditmemo');  
  7.         }  
  8.         $data = array();  
  9.    
  10.            
  11.         $service = Mage::getModel('sales/service_order'$order);  
  12.           
  13.         $creditmemo = $service->prepareCreditmemo($data);  
  14.    
  15.         // refund to Store Credit  
  16.         if ($refundToStoreCreditAmount) {  
  17.             // check if refund to Store Credit is available  
  18.             if ($order->getCustomerIsGuest()) {  
  19.                 $this->_fault('cannot_refund_to_storecredit');  
  20.             }  
  21.             $refundToStoreCreditAmount = max(  
  22.                 0,  
  23.                 min($creditmemo->getBaseCustomerBalanceReturnMax(), $refundToStoreCreditAmount)  
  24.             );  
  25.             if ($refundToStoreCreditAmount) {  
  26.                 $refundToStoreCreditAmount = $creditmemo->getStore()->roundPrice($refundToStoreCreditAmount);  
  27.                 $creditmemo->setBaseCustomerBalanceTotalRefunded($refundToStoreCreditAmount);  
  28.                 $refundToStoreCreditAmount = $creditmemo->getStore()->roundPrice(  
  29.                     $refundToStoreCreditAmount*$order->getStoreToOrderRate()  
  30.                 );  
  31.                 // this field can be used by customer balance observer  
  32.                 $creditmemo->setBsCustomerBalTotalRefunded($refundToStoreCreditAmount);  
  33.                 // setting flag to make actual refund to customer balance after credit memo save  
  34.                 $creditmemo->setCustomerBalanceRefundFlag(true);  
  35.             }  
  36.         }  
  37.         $creditmemo->setPaymentRefundDisallowed(true)->register();  
  38.         // add comment to creditmemo  
  39.         if (!empty($comment)) {  
  40.             $creditmemo->addComment($comment$notifyCustomer);  
  41.         }  
  42.         try {  
  43.             Mage::getModel('core/resource_transaction')  
  44.                 ->addObject($creditmemo)  
  45.                 ->addObject($order)  
  46.                 ->save();  
  47.             // send email notification  
  48.             $creditmemo->sendEmail($notifyCustomer, ($includeComment ? $comment : ''));  
  49.         } catch (Mage_Core_Exception $e) {  
  50.             $this->_fault('data_invalid'$e->getMessage());  
  51.         }  
  52.         echo $creditmemo->getIncrementId(); 

0 0
原创粉丝点击