Электронная почта клиента при программном создании счета

14

При создании счета программным способом, как я могу заставить систему отправить счет клиенту по электронной почте?

$order=Mage::getModel('sales/order')->load($orderid); 
$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);
$invoice->register();
$transactionSave = Mage::getModel('core/resource_transaction')
                   ->addObject($invoice)
                   ->addObject($invoice->getOrder());
$transactionSave->save();
Кайсар Сатти
источник

Ответы:

12

После $transactionSave->save();:

$invoice->getOrder()->setIsInProcess(true);
$history = $invoice->getOrder()->addStatusHistoryComment(
    'Programmatically created invoice', true
);
$invoice->sendEmail(true, '');
$order->save();

Это заставит Magento отправить счет клиенту по электронной почте.

лось
источник
нужен ли установленный статус для отправки электронного письма?
Кайсар Сатти
Да, это норма Magento. Если он не включен, для заказа не будет установлено значение Обработка (на которое он должен быть выставлен один раз).
Лось