В процессе обработки заказа можно отправить счет на частичный заказ. Поэтому, когда отправляется пара строк заказа, необходимо также отправить счет-фактуру.
Чтобы сделать это возможным, я использую этот код:
$invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice($items);
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();
$invoice->sendEmail();
$invoice->setEmailSent(true);
$invoice->save();
Где переменная $items
- это массив, содержащий идентификаторы заказа и количество продуктов, подлежащих выставлению счета.
Созданный счет-фактура показывает правильные продукты для выставления счета, но итоги каким-то образом не обновляются. Итоги по-прежнему являются итогами полного заказа, а не частичной накладной.
Я, вероятно, должен обновить или пересчитать итоги, но не могу найти правильный код для принудительного обновления.
Кто-нибудь вокруг, кто может направить меня в правильном направлении?