/** * 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']); }
/** * 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); }
/** * @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; }
/** * @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; }
/** * 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(); }
/** * 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; }
/** * 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; }
/** * 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; }
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; }
/** * 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; }
/** * @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(); } }
/** * 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; }
/** * 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()); } }