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