преобразуйте предложение в счет-фактуру и отметьте его как оплаченный
Извините, я очень новичок в 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);
Каким должен быть код здесь, чтобы "преобразовать предложение в счет-фактуру и отметить его как оплаченный"?
1 answers
Вы не можете преобразовать предложение в счет-фактуру, вам необходимо преобразовать предложение в заказ, а затем создать счет-фактуру. Также способ оплаты не должен преобразовывать предложение в заказ, это делается с помощью действия сохранить заказ во время оформления заказа.
Для создания счета-фактуры вы можете использовать:
$invoice = $order->prepareInvoice();
$invoice->register()->capture();
Mage::getModel('core/resource_transaction')
->addObject($invoice)
->addObject($invoice->getOrder())->save();
Вы можете добавить этот код в действие успеха в StandardController.php вашего модуля.