diff --git a/app/code/community/Phoenix/CashOnDelivery/Model/Observer.php b/app/code/community/Phoenix/CashOnDelivery/Model/Observer.php index fdf3638..b0f7478 100644 --- a/app/code/community/Phoenix/CashOnDelivery/Model/Observer.php +++ b/app/code/community/Phoenix/CashOnDelivery/Model/Observer.php @@ -110,4 +110,32 @@ public function order_cancel_after(Varien_Event_Observer $observer) return $this; } + + /** + * Invoice and set status to Cash On Delivery if order payment type is Cash on Delivery + * + * @param Varien_Event_Observer $observer + * @return void + */ + public function invoice_cashondelivery($observer) + { + $order = $observer->getEvent()->getOrder(); + + if ($order->getPayment()->getMethodInstance()->getCode() === 'phoenix_cashondelivery' + && $order->canInvoice() + && Mage::getStoreConfig('payment/phoenix_cashondelivery/order_invoice') + ) { + $invoice = Mage::getModel('sales/service_order', $order) + ->prepareInvoice(); + + $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE); + $invoice->register(); + + $transactionSave = Mage::getModel('core/resource_transaction') + ->addObject($invoice) + ->addObject($invoice->getOrder()); + + $transactionSave->save(); + } + } } diff --git a/app/code/community/Phoenix/CashOnDelivery/etc/config.xml b/app/code/community/Phoenix/CashOnDelivery/etc/config.xml index e8cb818..8ae2dc9 100644 --- a/app/code/community/Phoenix/CashOnDelivery/etc/config.xml +++ b/app/code/community/Phoenix/CashOnDelivery/etc/config.xml @@ -132,6 +132,15 @@ + + + + singleton + phoenix_cashondelivery/observer + invoice_cashondelivery + + + diff --git a/app/code/community/Phoenix/CashOnDelivery/etc/system.xml b/app/code/community/Phoenix/CashOnDelivery/etc/system.xml index 4cb306a..1264175 100644 --- a/app/code/community/Phoenix/CashOnDelivery/etc/system.xml +++ b/app/code/community/Phoenix/CashOnDelivery/etc/system.xml @@ -83,6 +83,15 @@ 1 1 + + + select + adminhtml/system_config_source_yesno + 45 + 1 + 1 + 1 + text