Создание счета-фактуры и захват при отгрузке

У нас есть некоторые интеграции API, которые будут периодически создавать поставки для заказов.

Что бы я хотел хотел бы сделать, это создать наблюдателя, который также будет создавать соответствующий счет-фактуру и фиксировать платеж при создании этого груза. У меня это связано с sales_order_shipment_save_after :

public function autoInvoice($observer){

    $shipment = $observer->getEvent()->getShipment();
    $order = $shipment->getOrder();

    $items = $shipment->getItemsCollection();

    $qty = array();

    foreach($items as $item)
        $qty[$item['order_item_id']] = $item['qty'];

    $invoice = Mage::getModel('sales/order_invoice_api');

    $invoiceId = $invoice->create($order->getIncrementId(), $qty);

    $invoice->capture($invoiceId);

}

(Код для фактического захвата несколько наивен, но терпите меня.)

Странно то, что этот код работает нормально - доставка идет создан, счет будет создан и помечен как «Оплачен». Однако сам заказ остается в подвешенном состоянии и сохраняет статус «Ожидание».

Если посмотреть дальше, элементы в самом заказе имеют правильные количества как для «Заказанных», так и для «Отправленных», но нет списка количества, включенного в счет. Думаю, именно поэтому зависает статус. Как будто qty_invoiced в таблице sales_order_item каким-то образом восстанавливается.

Опять же, счет-фактура показывает правильные элементы, поэтому я здесь совершенно запутался.

Есть идеи?

5
задан bahoo 17 June 2011 в 01:37
поделиться