Facturar Automaticamente Magento/Automatic Invoiced Magento
Para facturar todos los pedidos automaticamente en Magento existe un excelente módulo llamado “Vianetz_AutomaticInvoice” que lo pueden encontrar aquí: http://www.vianetz.com/shop/en/automaticinvoice.html
Pero lo malo de este módulo gratuito, es que te factura todos los pedidos, hasta los cancelados. Y eso es muy malo cuanto trabajas con productos descargables, ya que si algunos clientes cancelan su compra, podrán descargar el producto de todas maneras, sin que hayas pagado.
La solución es aquí:
Ejemplo de un estracto del código original de un /controllers/StandardController.php que hace manifiesto del estado del pedido, cuando la compra ya se realizó y el pago fue realizado, pero NO factura automaticamente y el producto no se puede descargar (si es que es un producto descargable):
Código original:
CÓDIGO: public function successAction(){ $session = Mage::getSingleton('checkout/session'); $session->setQuoteId($session->getWebpayStandardQuoteId(true)); if ($session->getLastRealOrderId()) { $order = Mage::getModel('sales/order')->loadByIncrementId ($session->getLastRealOrderId()); $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true); $order->save(); $this->_redirect('checkout/onepage/success'); } } }
Código modificado para facturar automaticamente:
Se modificó así y envía la orden como facturada, completa y el producto solo se puede descargar para los clientes que solo han pagado y NO los que cancelan su comprar. La modalidad su Product Descargable (Backend de Magento) debe estar en “Facturado” y no pendiente:
CÓDIGO: public function successAction(){ $session = Mage::getSingleton('checkout/session'); $session->setQuoteId($session->getWebpayStandardQuoteId(true)); if ($session->getLastRealOrderId()) { $order = Mage::getModel('sales/order')->loadByIncrementId ($session->getLastRealOrderId()); /*Mi código Invoiced*/ if ($order->canInvoice()) { $invoice = $order->prepareInvoice(); $invoice->register(); Mage::getModel('core/resource_transaction') ->addObject($invoice) ->addObject($invoice->getOrder()) ->save(); } $order->$invoice;/*< --Esta línea la puedes sacar si quieres, ya que en la versión 1.4.0.1 provoca un error de string*/ /*Fin de mi código Invoiced*/ $order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true); /* <--cambié el estado de STATE_PROCCESSING a STATUS_COMPLETE y moví esta línea antes de $order->save(); para que me grabara el pedido con el estado de facturado (INVOICED)*/ $order->save(); $this->_redirect('checkout/onepage/success'); } } }
De este modo tu pedido será facturado y estará disponible para descarga solo para tus clientes que han pagado correctamente.
Atte
Boris D.
monitibeg759
Hello, I need some help with it. When I try to go to magento front page it pops up this: Warning: simmxelpl_load_string(): Entity: line 2: parser error : Comment not terminated. Nothing is shown in system.log about this as well. I don’t know where to put Mage::log(print_r($filename, true)); to help me find this error.Help please.