Merge pull request #26 from ionux/master

Fix for order not marked complete issue
This commit is contained in:
Ryan X. Charles 2014-03-13 16:21:10 -04:00
commit 82ad4204ac
2 changed files with 59 additions and 26 deletions

View File

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

View File

@ -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');