преобразовать цитату в счет и отметьте ее как оплаченную
-
16-10-2019 - |
Вопрос
Извините, я очень новичок в Magento.
Я следую этот урок Чтобы создать новый способ оплаты. Это обеспечивает полное Пример кода здесь.
В учебном пособии, говоря о StandardController.php::successAction()
, говорит,
Если все проверяется, мы можем изменить состояние заказа с State_pending_payment на State_new, поэтому он готов к тому, что кто -то в магазине отправится и завершена. Здесь также мы преобразуем цитату в счет и отметим ее как оплаченную.
Я могу найти это первое предложение в коде, однако я не могу найти вторую часть, которая должна «преобразовать цитату в счет и пометить ее как оплаченную»:
if($state == Mage_Sales_Model_Order::STATE_PENDING_PAYMENT){
$msg = 'Payment completed via MockPay.';
$order->setState(Mage_Sales_Model_Order::STATE_NEW ,true,$msg,false);
$order->save();
$quote = Mage::getSingleton('checkout/session')->getQuote();
$quote->setIsActive(false)->save();
}
Возможно, автор забыл включить эту часть кода. Я попытался прочитать доктора Magento, и мог только преобразовать цитату в заказ, а не счета:
$convertQuote = Mage::getSingleton('sales/convert_quote');
$order = $convertQuote->toOrder($quote);
Каким должен быть код здесь, чтобы «преобразовать цитату в счет и отметить ее как оплачиваемое»?
Решение
Вы не можете преобразовать цитату в счет -фактуру, вы должны преобразовать цитату в заказ, а затем создать счет. Кроме того, метод оплаты не должен преобразовать цитату в заказ, это делается с помощью действия сохранения заказа во время оформления заказа.
Чтобы создать счет, который вы можете использовать:
$invoice = $order->prepareInvoice();
$invoice->register()->capture();
Mage::getModel('core/resource_transaction')
->addObject($invoice)
->addObject($invoice->getOrder())->save();
Вы можете добавить этот код в успешности в standardcontroller.php вашего модуля.