Merge pull request #26 from ionux/master
Fix for order not marked complete issue
This commit is contained in:
commit
82ad4204ac
|
@ -53,7 +53,7 @@ class Bitpay_Bitcoins_Model_PaymentMethod extends Mage_Payment_Model_Method_Abst
|
|||
/**
|
||||
* Can capture funds online?
|
||||
*/
|
||||
protected $_canCapture = false;
|
||||
protected $_canCapture = true;
|
||||
|
||||
/**
|
||||
* Can capture partial amounts online?
|
||||
|
@ -144,6 +144,7 @@ class Bitpay_Bitcoins_Model_PaymentMethod extends Mage_Payment_Model_Method_Abst
|
|||
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true)->save();
|
||||
|
||||
if (!count($order->getInvoiceCollection())) {
|
||||
try {
|
||||
$invoice = $order->prepareInvoice()
|
||||
->setTransactionId(1)
|
||||
->addComment('Invoiced automatically by Bitpay/Bitcoins/controllers/IndexController.php')
|
||||
|
@ -155,17 +156,45 @@ class Bitpay_Bitcoins_Model_PaymentMethod extends Mage_Payment_Model_Method_Abst
|
|||
->addObject($invoice->getOrder());
|
||||
|
||||
$transactionSave->save();
|
||||
$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_COMPLETE);
|
||||
try {
|
||||
$order->sendNewOrderEmail();
|
||||
} catch (Exception $e) {
|
||||
Mage::logException($e);
|
||||
}
|
||||
} else {
|
||||
Mage::log('Count of InvoiceCollection was zero! Order not invoiced.', null, 'bitpay.log');
|
||||
}
|
||||
}
|
||||
|
||||
function MarkOrderComplete($order) {
|
||||
if ($order->hasInvoices()) {
|
||||
foreach ($order->getInvoiceCollection() as $_eachInvoice) {
|
||||
try {
|
||||
$_eachInvoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
|
||||
$_eachInvoice->capture()->save();
|
||||
} catch (Exception $e) {
|
||||
Mage::logException($e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$shipment = $order->prepareShipment();
|
||||
if($shipment) {
|
||||
$shipment->register();
|
||||
$order->setIsInProcess(true);
|
||||
|
||||
$transaction_save = Mage::getModel('core/resource_transaction')
|
||||
->addObject($shipment)
|
||||
->addObject($shipment->getOrder())
|
||||
->save();
|
||||
}
|
||||
|
||||
try {
|
||||
$order->setState('Complete', 'complete', 'Completed by BitPay payments.', false);
|
||||
$order->save();
|
||||
} catch (Exception $e) {
|
||||
Mage::logException($e);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
function MarkOrderCancelled($order) {
|
||||
$order->setState(Mage_Sales_Model_Order::STATE_CANCELLED, true)->save();
|
||||
}
|
||||
|
|
|
@ -55,10 +55,14 @@ class Bitpay_Bitcoins_IndexController extends Mage_Core_Controller_Front_Action
|
|||
// update the order if it exists already
|
||||
if ($order->getId())
|
||||
switch($invoice['status']) {
|
||||
case 'paid':
|
||||
$method = Mage::getModel('Bitcoins/paymentMethod');
|
||||
$method->MarkOrderPaid($order);
|
||||
break;
|
||||
case 'confirmed':
|
||||
case 'complete':
|
||||
$method = Mage::getModel('Bitcoins/paymentMethod');
|
||||
$method->MarkOrderPaid($order);
|
||||
$method->MarkOrderComplete($order);
|
||||
break;
|
||||
case 'invalid':
|
||||
$method = Mage::getModel('Bitcoins/paymentMethod');
|
||||
|
|
Loading…
Reference in New Issue