2013-06-24 3 views
1

프로그래밍 방식으로 magento로 주문을 생성했습니다. 그래서 나는 메일을 보내서 주문 생성 시간을 추가하려고하지만 작동하지 않습니다. 나는 젠토에게 1.6.1.0 버전을 사용하고프로그래밍 방식으로 주문을 생성 할 때 magento로 전자 메일을 보내지 않습니다.

**Mage::app()->getStore()->setConfig(Mage_Sales_Model_Order::XML_PATH_EMAIL_ENABLED, "1");** 

- 내가 생성 프로그램 순서의 시간에 보내기 위해 이메일에 대한 다음 코드를 사용했다.

$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); 

    // 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/Shipping 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('freeshipping_freeshipping'); 
    /*->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('free') 
    ->setAction('yes') 
    ->setPo_number(' – ') 
    ->setOrderStatus('processing'); 
    $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 = getFreeProducts($point); 

    foreach ($products as $product) { 
    $_product = Mage::getModel('catalog/product')->loadByAttribute('sku', $product['sku']); 
    $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().' (Martini Free Product)') 
    ->setSku($_product->getSku()) 
    ->setPrice($_product->getPrice()) 
    ->setBasePrice($_product->getPrice()) 
    ->setOriginalPrice($_product->getPrice()) 
    ->setRowTotal($rowTotal) 
    ->setBaseRowTotal($rowTotal); 

    //$subTotal += $rowTotal; 
    $subTotal = 0; 
    $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(); 

제안 및 프로그램 보내기 위해 이메일 저를 도와주세요 - 여기 프로그래밍 주문 생성의 코드입니다.

답변

1

를 추가해보십시오

$order->sendNewOrderEmail(); 

$transaction->addObject($order); 
$transaction->addCommitCallback(array($order, 'place')); 
$transaction->addCommitCallback(array($order, 'save')); 
$transaction->save(); 
0

후이 코드를 시도

$email = Mage::getSingleton('customer/session')->getCustomer()->getEmail(); 

$orders = Mage::getModel('sales/order')->getCollection()->getLastItem()->getIncrementId(); 



     $order_mail = new Mage_Sales_Model_Order(); 
     $incrementId = $orders; 
     $order_mail->loadByIncrementId($incrementId); 

     try 
     { 
     $order_mail->sendNewOrderEmail(); 
     } 

     catch (Exception $ex) 
     { 
     } 
0

당신이 활성화 안녕 당신이 으로 올바른 형식으로 모든 것을 가지고 마법사 : : app() -> getStore() -> setConfig (Mage_Sales_Model_Order :: XML_PAT H_EMAIL_ENABLED, "1"); A : : 5 :이 코드를 컴파일하는 동안 나는이 문제를 가지고

if(!$order ->getEmailSent()){ 
$order ->sendEmail(true); 
$order ->setEmailSent(true); 
} 
+0

코드 아래에 사용할 수 있도록 다음 경우

당신은 보내거나되지 않은 주문 메일을 checkwhether 할 필요가 {내가 : 0; S : 73 : "잘못된 메소드 Mage_Sales_Model_Order :: sendEmail (배열 ( [0] => 1 ) )"; –

+0

당신의 마젠타 버전은 무엇입니까? app/code/core/Mage/Sales/Model/Order.php를 확인하십시오 –

+0

Magento 버전 1.8에서는 Sales/Model/Order.php를 확인했지만 코드에는 아무런 문제가 없습니다. –