Magento: у заказа есть счет-фактура (сгенерированный), но 'Итоговый срок'> 0 - PullRequest
1 голос
/ 15 марта 2012

У меня есть живой интернет-магазин Magento 1.5.0.1 со следующей проблемой:

Мы получили заказ, который был оплачен через iDEAL (нидерландский сервис онлайн-платежей), и счет был автоматически сгенерирован при успешной оплате. Мы также получили сумму на наш банковский счет.

Единственное, мы не можем завершить заказ, так как поле «Итого к оплате» является суммой, превышающей 0 (ноль). Это должно быть ошибкой в ​​нашем iDEAL-модуле (который будет исправлен в другой момент).

Есть ли способ заставить этот конкретный ордер быть «завершенным», если поле «Итоговый срок» установлено в 0?

Очевидно, что примеры PHP-кода вполне приветствуются (я сам программист).

1 Ответ

2 голосов
/ 16 марта 2012

Это может помочь вам.

Пример из одного из наших модулей:

$order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);
if ($order->getTotalPaid() == 0) {
    $invoice = $order->prepareInvoice();
    $invoice->register()->capture();
    Mage::getModel('core/resource_transaction')
        ->addObject($invoice)
        ->addObject($invoice->getOrder())
        ->save();
    $order->save();

Этот параметр проверяет, не был ли еще зарегистрирован платеж (пользователь может отправить несколько успешных запросов с помощью многократного нажатия), затем создает счет, регистрирует его, получает и сохраняет счет и заказы.

РЕДАКТИРОВАТЬ 1

private function markOrderPayd($incrementId, $status) {
        $order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);
        if ($order->getTotalPaid() == 0) {
            ... 
            $order->save();
            $invoice = $order->prepareInvoice();
            $invoice->register()->capture();
            ...
            Mage::getModel('core/resource_transaction')
                ->addObject($invoice)
                ->addObject($invoice->getOrder())
                ->save();
            $order->save();
            ...

        } else {
            ...
            $order->save();
        }
}

Полагаю, у вас нет чека, поэтому генерируются 2 счета.

...