示例#1
0
 /**
  * Creates invoice and sets order state for paid transactions.
  */
 protected function _processTransactionPaid()
 {
     if (!$this->_order->canInvoice()) {
         return;
     }
     $payment = $this->_order->getPayment();
     $payment->setTransactionId($this->_receivedData['transaction_id'])->setCurrencyCode($this->_receivedData['currency'])->setPreparedMessage($this->_createIpnComment())->setIsTransactionClosed(1)->registerCaptureNotification($this->_receivedData['amount']);
 }
示例#2
0
 /**
  * Builds invoice for order
  */
 protected function _createInvoice()
 {
     if (!$this->_order->canInvoice()) {
         return;
     }
     $invoice = $this->_order->prepareInvoice();
     $invoice->register()->capture();
     $this->_order->addRelatedObject($invoice);
 }
 /**
  * @throws Payone_Core_Exception_OrderCannotInvoice|Payone_Core_Exception_OrderNotFound
  * @param Mage_Sales_Model_Order $order
  * @param array $itemsQty
  * @param string $invoiceIncrementId
  * @return Mage_Sales_Model_Order_Invoice
  */
 public function createByOrder(Mage_Sales_Model_Order $order, array $itemsQty = array(), $invoiceIncrementId = null)
 {
     $orderIncrementId = $order->getIncrementId();
     if (!$order->getId()) {
         throw new Payone_Core_Exception_OrderNotFound($orderIncrementId);
     }
     if (!$order->canInvoice()) {
         throw new Payone_Core_Exception_OrderCannotInvoice($orderIncrementId);
     }
     return $this->create($order, $itemsQty, $invoiceIncrementId);
 }
示例#4
0
 /**
  * @param Mage_Sales_Model_Order $magentoOrder
  * @return Mage_Sales_Model_Order_Invoice
  * @throws Reverb_ReverbSync_Model_Exception_Data_Order_Update
  */
 protected function _initInvoice(Mage_Sales_Model_Order $magentoOrder)
 {
     if (!$magentoOrder->canInvoice()) {
         $this->_inspectWhyCanNotUpdateAndThrowException($magentoOrder);
     }
     $magentoInvoice = Mage::getModel('sales/service_order', $magentoOrder)->prepareInvoice(array());
     if (!$magentoInvoice->getTotalQty()) {
         $this->_throwCanNotUpdateException($magentoOrder, self::NO_PRODUCTS_INVOICED);
     }
     return $magentoInvoice;
 }
 /**
  * Create invoice
  */
 protected function _createInvoice(Mage_Sales_Model_Order $order, $captureReferenceIds)
 {
     if ($order->canInvoice()) {
         $transactionSave = Mage::getModel('core/resource_transaction');
         // Create invoice
         $invoice = $order->prepareInvoice()->register();
         $invoice->setTransactionId(current($captureReferenceIds));
         $transactionSave->addObject($invoice)->addObject($invoice->getOrder());
         return $transactionSave->save();
     }
     return false;
 }
示例#6
0
 /**
  * @param Mage_Sales_Model_Order $order
  * @return bool|Mage_Sales_Model_Order_Invoice
  */
 public function createInvoiceForOrder(Mage_Sales_Model_Order $order)
 {
     if (!Mage::getStoreConfig('payment/lliqpay_cc/create_invoice') || !$order->canInvoice()) {
         return false;
     }
     $invoice = $order->prepareInvoice();
     if (!$invoice) {
         return false;
     }
     $invoice->register()->pay();
     Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder())->save();
     return $invoice;
 }
示例#7
0
 /**
  * Check if can make payment for order
  *
  * @param Mage_Sales_Model_Order $order
  * @return bool
  */
 public function canMakePayment($order)
 {
     if ($order->getPayment() && $order->getPayment()->getMethod() == 'purchaseorder' && $order->canShip()) {
         return false;
     }
     if ($order->getStatus() != 'purchaseorder_pending_payment') {
         return false;
     }
     if (!$order->canInvoice()) {
         return false;
     }
     return true;
 }
 /**
  * Confirm the payment of an order
  *
  * @param array $data
  */
 protected function _confirmOrder($data)
 {
     if (!$this->_succeeded($this->order)) {
         if ($data['paymentState'] == 'PENDING') {
             $this->order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true, Mage::helper('wirecard_checkout_page')->__('The payment authorization is pending.'))->save();
         } else {
             $this->order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, Mage::helper('wirecard_checkout_page')->__('The amount has been authorized and captured by Wirecard Checkout Page.'))->save();
             // invoice payment
             if ($this->order->canInvoice()) {
                 $invoice = $this->order->prepareInvoice();
                 $invoice->register()->capture();
                 Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder())->save();
             }
             // send new order email to customer
             $this->order->sendNewOrderEmail();
         }
     }
     $payment = $this->order->getPayment();
     $additionalInformation = array();
     $additionalInformationString = '';
     foreach ($data as $fieldName => $fieldValue) {
         switch ($fieldName) {
             case 'amount':
             case 'currency':
             case 'language':
             case 'responseFingerprint':
             case 'responseFingerprintOrder':
             case 'form_key':
             case 'paymentState':
             case 'orderId':
                 break;
             default:
                 $additionalInformation[htmlentities($fieldName)] = htmlentities($fieldValue);
                 $additionalInformationString .= ' | ' . $fieldName . ' - ' . $fieldValue;
         }
     }
     if (count($additionalInformation) != 0) {
         $payment->setAdditionalInformation($additionalInformation);
         $payment->setAdditionalData(serialize($additionalInformation));
         if ($payment->hasAdditionalInformation()) {
             Mage::log('Added Additional Information to Order ' . $data['orderId'] . ' :' . $additionalInformationString);
         }
     }
     $payment->save();
 }
示例#9
0
 /**
  * Saves an invoice and sets total-paid for the order
  *
  * @return bool
  */
 protected function _saveInvoice()
 {
     if ($this->_order->canInvoice() && !$this->_order->hasInvoices()) {
         $payment = $this->_order->getPayment();
         $payment->registerCaptureNotification($this->_order->getBaseGrandTotal());
         $this->_order->save();
         $this->_debugEmail .= 'Invoice created and saved. \\n';
         //sets the invoice's transaction ID as the Buckaroo TRX. This is to allow the order to be refunded using Buckaroo later on.
         foreach ($this->_order->getInvoiceCollection() as $invoice) {
             if (!isset($this->_postArray['brq_transactions'])) {
                 continue;
             }
             $invoice->setTransactionId($this->_postArray['brq_transactions'])->save();
         }
         return true;
     }
     return false;
 }
示例#10
0
 /**
  * Is event for this order allowed
  * 
  * @param string $type
  * @param Mage_Sales_Model_Order $order
  * @return boolean 
  */
 private function _isEventPossible($type, $order)
 {
     if ($type == 'invoice') {
         return $order->canInvoice();
     } else {
         if ($type == 'creditmemo') {
             return $order->canCreditmemo();
         } else {
             if ($type == 'cancel') {
                 return $order->canCancel();
             }
         }
     }
     return false;
 }
示例#11
0
 /**
  *  Create invoice for order
  */
 protected function createInvoice(Mage_Sales_Model_Order $order)
 {
     if ($order->getState() == Mage_Sales_Model_Order::STATE_NEW) {
         try {
             if (!$order->canInvoice()) {
                 $order->addStatusHistoryComment('MultiSafepay: Order cannot be invoiced.', false);
                 $order->save();
                 return false;
             }
             //START Handle Invoice
             $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
             $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);
             $invoice->register();
             $invoice->getOrder()->setCustomerNoteNotify(false);
             $invoice->getOrder()->setIsInProcess(true);
             $order->addStatusHistoryComment('Automatically invoiced by MultiSafepay invoicer.', false);
             $transactionSave = Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder());
             $transactionSave->save();
             //END Handle Invoice
             //Send Invoice emails
             $mail_invoice = $this->getConfigData("mail_invoice");
             $send_bno_invoice = $this->getConfigData("bno_no_invoice");
             $gateway = $order->getPayment()->getMethodInstance()->_gateway;
             if ($mail_invoice && $gateway != 'PAYAFTER') {
                 $invoice->setEmailSent(true);
                 $invoice->sendEmail();
                 $invoice->save();
             } elseif ($gateway == 'PAYAFTER' && !$send_bno_invoice && $mail_invoice) {
                 $invoice->setEmailSent(true);
                 $invoice->sendEmail();
                 $invoice->save();
             }
             $order->setTotalPaid($order->getGrandTotal());
         } catch (Exception $e) {
             $order->addStatusHistoryComment('MultiSafepay invoicer: Exception occurred during the creation of the invoice. Exception message: ' . $e->getMessage(), false);
             $order->save();
         }
     }
     return false;
 }
示例#12
0
 public function invoice(Mage_Sales_Model_Order $order, $transactionId, $mail)
 {
     if ($order->canInvoice()) {
         $invoice = $order->prepareInvoice();
         $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);
         $invoice->register();
         Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder())->save();
         $invoice->setTransactionId($transactionId);
         $invoice->pay();
         $invoice->save();
         $invoice->sendEmail($mail, '');
     } else {
         foreach ($order->getInvoiceCollection() as $invoice) {
             $invoice->pay()->save();
         }
     }
 }
 /**
  * @param Mage_Sales_Model_Order $order
  *
  * @return bool
  */
 public function createInvoice($order)
 {
     if (!$order->getId()) {
         return false;
     }
     $this->log(sprintf('Gerando fatura para o pedido: %s.', $order->getId()));
     $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'O pagamento foi confirmado e o pedido está sendo processado.', true);
     if (!$order->canInvoice()) {
         $this->log(sprintf('Impossível gerar fatura para o pedido %s.', $order->getId()), 4);
         // TODO define how to handle this
         return false;
     }
     $invoice = $order->prepareInvoice();
     $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);
     $invoice->register();
     Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder())->save();
     $invoice->sendEmail(true);
     $this->log('Fatura gerada com sucesso.');
     return true;
 }
 /**
  *  Save invoice for order
  *
  *  @param    Mage_Sales_Model_Order $order
  *  @return	  boolean Can save invoice or not
  */
 protected function saveInvoice(Mage_Sales_Model_Order $order)
 {
     if ($order->canInvoice()) {
         $invoice = $order->prepareInvoice();
         $invoice->register()->capture();
         Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder())->save();
         return true;
     }
     return false;
 }
示例#15
0
 /**
  *  Create invoice for order
  */
 protected function createInvoice(Mage_Sales_Model_Order $order)
 {
     if ($order->getState() == Mage_Sales_Model_Order::STATE_NEW) {
         try {
             if (!$order->canInvoice()) {
                 $order->addStatusHistoryComment('MultiSafepay: Order cannot be invoiced.', false);
                 $order->save();
                 return false;
             }
             //START Handle Invoice
             $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
             $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
             $invoice->register();
             $invoice->getOrder()->setCustomerNoteNotify(false);
             $invoice->getOrder()->setIsInProcess(true);
             $order->addStatusHistoryComment('Automatically invoiced by MultiSafepay invoicer.', false);
             $transactionSave = Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder());
             $transactionSave->save();
             $payment = $order->getPayment();
             $transaction = $payment->getTransaction($this->mspDetails['ewallet']['id']);
             if (is_object($transaction)) {
                 $transaction->setAdditionalInformation(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS, $this->transdetails);
                 $transaction->save();
             }
             if ($this->_config["updatetransaction"]) {
                 $invoiceId = $invoice->getIncrementId();
                 $msp = new MultiSafepay();
                 $msp->test = $this->_config["test_api"] == 'test';
                 $msp->merchant['account_id'] = $this->_config["account_id"];
                 $msp->merchant['site_id'] = $this->_config["site_id"];
                 $msp->merchant['site_code'] = $this->_config["secure_code"];
                 $msp->transaction['id'] = $_GET['transactionid'];
                 $msp->transaction['invoice_id'] = $invoiceId;
                 $msp->updateInvoice();
                 if ($msp->error) {
                     echo 'update trans error';
                 }
             }
             //END Handle Invoice
             //Send Invoice emails
             $mail_invoice = $this->getConfigData("mail_invoice");
             $send_bno_invoice = $this->getConfigData("bno_no_invoice");
             $gateway = $order->getPayment()->getMethodInstance()->_gateway;
             if ($mail_invoice && $gateway != 'PAYAFTER' && $gateway != 'KLARNA') {
                 $invoice->setEmailSent(true);
                 $invoice->sendEmail();
                 $invoice->save();
             } elseif (($gateway == 'PAYAFTER' || $gateway == 'KLARNA') && $send_bno_invoice && $mail_invoice) {
                 $invoice->setEmailSent(true);
                 $invoice->sendEmail();
                 $invoice->save();
             }
             $order->setTotalPaid($order->getGrandTotal());
         } catch (Exception $e) {
             $order->addStatusHistoryComment('MultiSafepay invoicer: Exception occurred during the creation of the invoice. Exception message: ' . $e->getMessage(), false);
             $order->save();
         }
     }
     return false;
 }
 /**
  *  Save invoice for order
  *
  *  @param    Mage_Sales_Model_Order $order
  *  @return	  boolean Can save invoice or not
  */
 protected function saveInvoice(Mage_Sales_Model_Order $order)
 {
     if ($order->canInvoice()) {
         $version = Mage::getVersion();
         $version = substr($version, 0, 5);
         $version = str_replace('.', '', $version);
         while (strlen($version) < 3) {
             $version .= "0";
         }
         if ((int) $version < 111) {
             $convertor = Mage::getModel('sales/convert_order');
             $invoice = $convertor->toInvoice($order);
             foreach ($order->getAllItems() as $orderItem) {
                 if (!$orderItem->getQtyToInvoice()) {
                     continue;
                 }
                 $item = $convertor->itemToInvoiceItem($orderItem);
                 $item->setQty($orderItem->getQtyToInvoice());
                 $invoice->addItem($item);
             }
             $invoice->collectTotals();
         } else {
             $invoice = $order->prepareInvoice();
         }
         $invoice->register()->capture();
         Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder())->save();
         return true;
     }
     return false;
 }
示例#17
0
 /**
  * @param Mage_Sales_Model_Order $order
  * @param string                 $status
  *
  * @return string
  *
  * @throws Exception
  */
 public function processOrderStatus(Mage_Sales_Model_Order $order, $status, $transactionId = null, $processType = null)
 {
     if (empty($status)) {
         /** @var Mage_Sales_Model_Order_Status_History $history */
         $message = $this->_helper()->__('Status sent is empty and will bot be processed.');
         $history = $order->addStatusHistoryComment($message);
         $history->save();
         return self::REDIRECT_STATE;
     }
     $processLabel = $this->_getProcessTypeLabel($processType);
     /** @var Mage_Sales_Model_Order_Status_History $history */
     $history = $order->addStatusHistoryComment($this->_helper()->__('Order Status Change by %s Process from ClickPag: %s.', $processLabel, $status));
     $history->save();
     $result = null;
     try {
         switch ($status) {
             case Rede_ClickPag_Model_Api::STATUS_APPROVED:
                 if (!$order->canInvoice()) {
                     return self::REDIRECT_STATE;
                 }
                 /** @var Mage_Sales_Model_Order_Invoice $invoice */
                 $invoice = $this->_initInvoice($order);
                 $message = $this->_helper()->__('Order Invoiced By %s Process From ClickPag.', $processLabel);
                 if ($invoice) {
                     $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE)->setTransactionId($transactionId)->addComment($message)->register()->sendEmail(true);
                 }
                 /**
                  * @var string                        $orderState
                  * @var string                        $orderStatus
                  * @var Mage_Sales_Model_Order_Status $statusModel
                  */
                 $orderState = Mage_Sales_Model_Order::STATE_PROCESSING;
                 $statusModel = Mage::getModel('sales/order_status')->loadDefaultByState($orderState);
                 $orderStatus = $statusModel->getStatus() ? $statusModel->getStatus() : $orderState;
                 $order->setIsInProcess(true);
                 $order->setStatus($orderStatus);
                 /** @var Mage_Sales_Model_Order_Status_History $history */
                 $history = $order->addStatusHistoryComment($message);
                 $transactionSave = Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($order)->addObject($history);
                 $transactionSave->save();
                 $result = self::REDIRECT_SUCCESS;
                 break;
             case Rede_ClickPag_Model_Api::STATUS_REVERSED:
                 if (!$order->canCreditmemo()) {
                     return self::REDIRECT_REVERSED;
                 }
                 $message = $this->_helper()->__('Order Refunded By %s Process From ClickPag.', $processLabel);
                 /** @var Mage_Sales_Model_Resource_Order_Invoice_Collection $invoiceCollection */
                 $invoiceCollection = $order->getInvoiceCollection();
                 /** @var Mage_Sales_Model_Service_Order $service */
                 $service = Mage::getModel('sales/service_order', $order);
                 /** @var Mage_Core_Model_Resource_Transaction $transaction */
                 $transaction = Mage::getModel('core/resource_transaction');
                 foreach ($invoiceCollection as $invoice) {
                     $invoice->addComment($message);
                     /** @var Mage_Sales_Model_Order_Creditmemo $creditmemo */
                     $creditmemo = $service->prepareInvoiceCreditmemo($invoice);
                     $creditmemo->setOfflineRequested(true);
                     $creditmemo->setTransactionId($invoice->getTransactionId());
                     $creditmemo->addComment($message);
                     $creditmemo->register();
                     foreach ($creditmemo->getAllItems() as $creditmemoItems) {
                         /**
                          * @var  $creditmemoItems
                          * @var  $orderItem
                          */
                         $orderItem = $creditmemoItems->getOrderItem();
                         if (!$orderItem->getParentItemId()) {
                             $orderItem->setBackToStock(true);
                         }
                     }
                     $transaction->addObject($invoice);
                     $transaction->addObject($creditmemo);
                 }
                 /** @var Mage_Sales_Model_Order_Status_History $history */
                 $history = $order->addStatusHistoryComment($message);
                 $transaction->addObject($history);
                 $transaction->addObject($order);
                 $transaction->save();
                 $result = self::REDIRECT_REVERSED;
                 break;
             case Rede_ClickPag_Model_Api::STATUS_DENIED:
                 if (!$order->canCancel()) {
                     return self::REDIRECT_DENIED;
                 }
                 $message = $this->_helper()->__('Order Canceled By %s Process From ClickPag.', $processLabel);
                 $order->getPayment()->cancel();
                 $order->registerCancellation($message);
                 Mage::dispatchEvent('order_cancel_after', array('order' => $this));
                 $order->save();
                 $result = self::REDIRECT_DENIED;
                 break;
             case Rede_ClickPag_Model_Api::STATUS_IN_DISPUTE:
             case Rede_ClickPag_Model_Api::STATUS_IN_ANALISYS:
             case Rede_ClickPag_Model_Api::STATUS_CHARGEBACK:
                 $result = self::REDIRECT_STATE;
                 break;
             case self::STATUS_ERROR:
             default:
                 if (!$order->canCancel()) {
                     return self::REDIRECT_STATE;
                 }
                 $message = $this->_helper()->__('Canceling order. Error when trying to process the order payment.');
                 $order->getPayment()->cancel();
                 $order->registerCancellation($message);
                 Mage::dispatchEvent('order_cancel_after', array('order' => $this));
                 $order->save();
                 $result = self::REDIRECT_ERROR;
                 break;
         }
     } catch (Exception $e) {
         Mage::logException($e);
         $result = self::REDIRECT_STATE;
     }
     return $result;
 }
 /**
  *  Save invoice for order
  *
  *  @param    Mage_Sales_Model_Order $order
  *  @return	  boolean Can save invoice or not
  */
 protected function saveInvoice(Mage_Sales_Model_Order $order)
 {
     if ($order->canInvoice()) {
         $convertor = Mage::getModel('sales/convert_order');
         $invoice = $convertor->toInvoice($order);
         foreach ($order->getAllItems() as $orderItem) {
             if (!$orderItem->getQtyToInvoice()) {
                 continue;
             }
             $item = $convertor->itemToInvoiceItem($orderItem);
             $item->setQty($orderItem->getQtyToInvoice());
             $invoice->addItem($item);
         }
         $invoice->collectTotals();
         $invoice->register();
         Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder())->save();
         $order->addStatusToHistory($order->getStatus(), Mage::helper('atos')->__('Invoice %s was created', $invoice->getIncrementId()));
     }
     return false;
 }
 /**
  *  Save invoice for order
  *
  *  @param    Mage_Sales_Model_Order $order
  *  @return	  boolean Can save invoice or not
  */
 protected function saveInvoice(Mage_Sales_Model_Order $order, $ship = false)
 {
     if ($order->canInvoice()) {
         $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
         $invoice->register()->capture();
         $transactionSave = Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder());
         if ($ship && $order->canShip()) {
             $shipment = Mage::getModel('sales/service_order', $order)->prepareShipment();
             $shipment->register();
             $transactionSave->addObject($shipment);
         }
         $transactionSave->save();
         return true;
     }
     return false;
 }
 protected function saveInvoice(Mage_Sales_Model_Order $order)
 {
     if ($order->canInvoice()) {
         $invoiceId = Mage::getModel('sales/order_invoice_api')->create($order->getIncrementId(), array());
         $invoice = Mage::getModel('sales/order_invoice')->loadByIncrementId($invoiceId);
         $invoice->capture()->save();
     }
 }
示例#21
0
 /**
  * Process Configured Payment Action: Direct Sale, create invoice if state is Pending
  *
  * @param Mage_Sales_Model_Order $order Order
  * @param array $params Request params
  */
 protected function _processDirectSale($order, $params, $instantCapture = 0)
 {
     Mage::register('ops_auto_capture', true);
     $status = $params['STATUS'];
     if ($status == Netresearch_OPS_Model_Payment_Abstract::OPS_AWAIT_CUSTOMER_PAYMENT) {
         $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage::helper('ops')->__('Waiting for the payment of the customer'));
         // send new order mail for bank transfer, since it is 'successfully' authorized at this point
         if ($order->getPayment()->getMethodInstance() instanceof Netresearch_OPS_Model_Payment_BankTransfer && $order->getEmailSent() != 1) {
             $order->sendNewOrderEmail();
         }
         $order->save();
     } elseif ($status == Netresearch_OPS_Model_Payment_Abstract::OPS_AUTHORIZED_WAITING) {
         $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage::helper('ops')->__('Authorization waiting from Barclaycard'));
         $order->save();
     } elseif ($order->getState() == Mage_Sales_Model_Order::STATE_PENDING_PAYMENT || $instantCapture) {
         if ($status == Netresearch_OPS_Model_Payment_Abstract::OPS_AUTHORIZED) {
             if ($order->getStatus() != Mage_Sales_Model_Order::STATE_PENDING_PAYMENT) {
                 $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATE_PROCESSING, Mage::helper('ops')->__('Processed by Barclaycard'));
             }
         } else {
             $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, Mage::helper('ops')->__('Processed by Barclaycard'));
             $order->save();
         }
         if (!$order->getInvoiceCollection()->getSize() && $order->getState() == Mage_Sales_Model_Order::STATE_PROCESSING && $order->canInvoice()) {
             $invoice = $order->prepareInvoice();
             $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
             $invoice->register();
             $invoice->setState(Mage_Sales_Model_Order_Invoice::STATE_PAID);
             $invoice->getOrder()->setIsInProcess(true);
             $invoice->save();
             $this->sendInvoiceToCustomer($invoice);
             $transactionSave = Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder())->save();
             /*
              * If the payment method is a redirect-payment-method send the email
              * In any other case Magento sends an email automatically in Mage_Checkout_Model_Type_Onepage::saveOrder
              */
             if ($this->isRedirectPaymentMethod($order) === true && $order->getEmailSent() != 1) {
                 $order->sendNewOrderEmail();
             }
             $eventData = array('data_object' => $order, 'order' => $order);
             Mage::dispatchEvent('ops_sales_order_save_commit_after', $eventData);
         }
         if ($this->isInlinePayment($order->getPayment()) && 0 < strlen(trim($order->getPayment()->getAdditionalInformation('HTML_ANSWER'))) && $order->getPayment()->getAdditionalInformation('status') == Netresearch_OPS_Model_Payment_Abstract::OPS_PAYMENT_REQUESTED) {
             $order->getPayment()->setIsTransactionApproved(true)->registerPaymentReviewAction(Mage_Sales_Model_Order_Payment::REVIEW_ACTION_UPDATE, true)->save();
             $this->setInvoicesToPaid($order);
             $order->getPayment()->getAuthorizationTransaction()->setIsClosed(true)->save();
             $order->getPayment()->addTransaction(Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE, $order->getPayment())->setIsClosed(true)->save();
             $order->sendNewOrderEmail();
             $order->save();
         }
         if ($this->isInlinePayment($order->getPayment()) && Mage::getModel('ops/config')->getSendInvoice() && Mage::getModel('ops/config')->getPaymentAction($order->getStoreId()) === Mage_Payment_Model_Method_Abstract::ACTION_AUTHORIZE_CAPTURE) {
             foreach ($order->getInvoiceCollection() as $invoice) {
                 $this->sendInvoiceToCustomer($invoice);
             }
         }
     } else {
         $order->save();
     }
 }
 /**
  *  Save invoice for order
  *
  *  @param    Mage_Sales_Model_Order $order
  *  @return	  boolean Can save invoice or not
  */
 protected function saveInvoice(Mage_Sales_Model_Order $order)
 {
     if ($order->canInvoice()) {
         $convertor = Mage::getModel('sales/convert_order');
         $invoice = $convertor->toInvoice($order);
         foreach ($order->getAllItems() as $orderItem) {
             if (!$orderItem->getQtyToInvoice()) {
                 continue;
             }
             $item = $convertor->itemToInvoiceItem($orderItem);
             $item->setQty($orderItem->getQtyToInvoice());
             $invoice->addItem($item);
         }
         $invoice->collectTotals();
         $invoice->register()->capture();
         Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder())->save();
         return true;
     }
     return false;
 }
示例#23
0
 /**
  * Creates invoice based on the given order
  *
  * @param Mage_Sales_Model_Order $order
  * @return Mage_Sales_Model_Order_Invoice
  */
 public function processInvoice(&$order)
 {
     if ($order->canInvoice()) {
         return Mage::getModel('sales/order_invoice_api')->create($order->getIncrementId(), array());
     }
 }