php Invoice code не корректно обновляет заказ - PullRequest
1 голос
/ 30 июня 2011

Я не могу понять почему, но мой код счета-фактуры не показывает правильные значения для итогов, когда он завершается без ошибок.

Код:

public function invoice($realOrderId){
$orderObj = Mage::getModel('sales/order')->loadByIncrementId($realOrderId);     
$invoice = Mage::getModel('sales/service_order', $orderObj)->prepareInvoice();
$invoice->addComment('Automatic invoice', false);
$invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
$invoice->register();
$invoice->getOrder()->setIsInProcess(true);
$transactionSave = Mage::getModel('core/resource_transaction')
                   ->addObject($invoice)
                   ->addObject($invoice->getOrder());
$transactionSave->save();
    $invoice->sendEmail();
    $invoice->setEmailSent(true);
    $invoice->save();
}

Код работает без генерации ошибок, но итоговые данные в деталях заказа не показывают, что платеж был получен!

Есть предложения о том, в чем может быть проблема?

1 Ответ

3 голосов
/ 01 июля 2011

Хорошо, мне удалось заставить код работать как задумано, здесь исправленная функция, если кому-то еще это может понадобиться:

public function invoice($realOrderId){
$orderObj = Mage::getModel('sales/order')->loadByIncrementId($realOrderId);
$invoice = Mage::getModel('sales/service_order', $orderObj)->prepareInvoice();
$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->addComment('Automatic Invoice', false);
$invoice->sendEmail();
$invoice->setEmailSent(true);
$invoice->save();
$orderObj->addStatusHistoryComment(Mage::helper('<your helper name>')->__('Automatic Invoice: '.$invoice->getIncrementId()));
$orderObj->save();}

Наслаждайтесь.

Edit: Забыл исправить код, чтобы избежать «ошибок» при выставлении счетов виртуальным продуктам, статус можно опустить, когда код задает комментарий в истории статуса.

...