Pregunta

Lo siento, soy muy nuevo en Magento.

Estoy siguiendo este tutorial Para crear un nuevo método de pago. Proporciona completo Código de muestra aquí.

En el tutorial, al hablar de StandardController.php::successAction(), dice,

Si todo se verifica, podemos cambiar el estado del pedido de state_pending_payment a state_new, por lo que está listo para que alguien en la tienda se envíe y complete. Aquí también es donde convertiremos la cita en una factura y la marcaremos como pagadas.

Puedo encontrar esa primera oración en el código, sin embargo, no puedo encontrar la segunda parte, que es "convertir la cita en una factura y marcarla como pagada":

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();

}

Quizás el autor olvidó incluir esa parte del código. Intenté leer los documentos de Magento y solo pude convertirme para citar en un pedido, no una factura:

    $convertQuote = Mage::getSingleton('sales/convert_quote');
    $order = $convertQuote->toOrder($quote);

¿Cuál debería ser el código aquí para "convertir la cita en una factura y marcarla como pagada"?

¿Fue útil?

Solución

No puede convertir una cotización en una factura, debe convertir la cotización en un pedido y luego crear una factura. Además, el método de pago no debe convertir la cotización en un pedido, esto se realiza mediante la acción de orden de ahorro durante el pago.

Para crear una factura que pueda usar:

$invoice = $order->prepareInvoice();
$invoice->register()->capture();

Mage::getModel('core/resource_transaction')
    ->addObject($invoice)
    ->addObject($invoice->getOrder())->save();

Puede agregar este código en la éxito en StandardController.php de su módulo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top