/** * Save order in AvaTax system * * @see OnePica_AvaTax_Model_Observer_SalesOrderCreditmemoSaveAfter::execute() * @param Mage_Sales_Model_Order_Creditmemo $creditmemo * @param OnePica_AvaTax_Model_Records_Queue $queue * @return OnePica_AvaTax_Model_Service_Result_Creditmemo */ public function creditmemo($creditmemo, $queue) { $this->_lines = array(); $order = $creditmemo->getOrder(); $storeId = $order->getStoreId(); $orderDate = $this->_convertGmtDate($order->getCreatedAt(), $storeId); $statusDate = $this->_convertGmtDate($queue->getUpdatedAt(), $storeId); $creditmemoDate = $this->_convertGmtDate($creditmemo->getCreatedAt(), $storeId); $shippingAddress = $order->getShippingAddress() ? $order->getShippingAddress() : $order->getBillingAddress(); $this->_request = new GetTaxRequest(); $this->_request->setDocCode($creditmemo->getIncrementId()); $this->_request->setDocType(DocumentType::$ReturnInvoice); $this->_addGeneralInfo($order); $this->_addShipping($creditmemo, true); $items = $creditmemo->getAllItems(); $this->_initProductCollection($items); $this->_initTaxClassCollection($creditmemo); //Added code for calculating tax for giftwrap items $this->_addGwOrderAmount($creditmemo, true); $this->_addGwItemsAmount($creditmemo, true); $this->_addGwPrintedCardAmount($creditmemo, true); $this->_addAdjustments($creditmemo->getBaseAdjustmentPositive(), $creditmemo->getBaseAdjustmentNegative(), $order->getStoreId()); $this->_setOriginAddress($order->getStoreId()); $this->_setDestinationAddress($shippingAddress); // Set the tax date for calculation. $override = new TaxOverride(); $override->setTaxDate($orderDate); $override->setTaxOverrideType(TaxOverrideType::$TaxDate); $override->setReason('Credit memo - refund'); $this->_request->setTaxOverride($override); $this->_request->setDocDate($creditmemoDate); $this->_request->setPaymentDate($creditmemoDate); $this->_request->setTaxDate($orderDate); $this->_request->setStatusDate($statusDate); $configAction = Mage::getStoreConfig('tax/avatax/action', $order->getStoreId()); $commitAction = OnePica_AvaTax_Model_Service_Abstract_Config::ACTION_CALC_SUBMIT_COMMIT; $this->_request->setCommit($configAction == $commitAction ? true : false); foreach ($items as $item) { /** @var Mage_Sales_Model_Order_Creditmemo_Item $item */ $this->_newLine($item, true); } $this->_request->setLines($this->_lines); //send to AvaTax $result = $this->_send($order->getStoreId()); /** @var OnePica_AvaTax_Model_Service_Result_Creditmemo $creditmemoResult */ $creditmemoResult = Mage::getModel('avatax/service_result_creditmemo'); $resultHasError = $result->getResultCode() != SeverityLevel::$Success; $creditmemoResult->setHasError($resultHasError); //if successful if (!$resultHasError) { $totalTax = $result->getTotalTax(); $creditmemoResult->setTotalTax($totalTax); $documentCode = $result->getDocCode(); $creditmemoResult->setDocumentCode($documentCode); //if not successful } else { $messages = array(); foreach ($result->getMessages() as $message) { $messages[] = $message->getSummary(); } $creditmemoResult->setErrors($messages); } return $creditmemoResult; }
/** * Save order in AvaTax system * * @see OnePica_AvaTax_Model_Observer::salesOrderPlaceAfter() * @param Mage_Sales_Model_Order_Creditmemo $creditmemo * @param OnePica_AvaTax_Model_Records_Queue $queue * @return mixed * @throws OnePica_AvaTax_Exception * @throws OnePica_AvaTax_Model_Avatax_Exception_Commitfailure * @throws OnePica_AvaTax_Model_Avatax_Exception_Unbalanced */ public function creditmemo($creditmemo, $queue) { $order = $creditmemo->getOrder(); $storeId = $order->getStoreId(); $orderDate = $this->_convertGmtDate($order->getCreatedAt(), $storeId); $statusDate = $this->_convertGmtDate($queue->getUpdatedAt(), $storeId); $creditmemoDate = $this->_convertGmtDate($creditmemo->getCreatedAt(), $storeId); $shippingAddress = $order->getShippingAddress() ? $order->getShippingAddress() : $order->getBillingAddress(); if (!$shippingAddress) { throw new OnePica_AvaTax_Exception($this->__('There is no address attached to this order')); } $this->_request = new GetTaxRequest(); $this->_request->setDocCode($creditmemo->getIncrementId()); $this->_request->setDocType(DocumentType::$ReturnInvoice); $this->_addGeneralInfo($order); $this->_addShipping($creditmemo, true); $items = $creditmemo->getAllItems(); $this->_initProductCollection($items); $this->_initTaxClassCollection($creditmemo); //Added code for calculating tax for giftwrap items $this->_addGwOrderAmount($creditmemo, true); $this->_addGwItemsAmount($creditmemo, true); $this->_addGwPrintedCardAmount($creditmemo, true); $this->_addAdjustments($creditmemo->getAdjustmentPositive(), $creditmemo->getAdjustmentNegative(), $order->getStoreId()); $this->_setOriginAddress($order->getStoreId()); $this->_setDestinationAddress($shippingAddress); // Set the tax date for calculation. $override = new TaxOverride(); $override->setTaxDate($orderDate); $override->setTaxOverrideType(TaxOverrideType::$TaxDate); $override->setReason('Credit memo - refund'); $this->_request->setTaxOverride($override); $this->_request->setDocDate($creditmemoDate); $this->_request->setPaymentDate($creditmemoDate); $this->_request->setTaxDate($orderDate); $this->_request->setStatusDate($statusDate); $configAction = Mage::getStoreConfig('tax/avatax/action', $order->getStoreId()); $commitAction = OnePica_AvaTax_Model_Config::ACTION_CALC_SUBMIT_COMMIT; $this->_request->setCommit($configAction == $commitAction ? true : false); foreach ($items as $item) { /** @var Mage_Sales_Model_Order_Creditmemo_Item $item */ $this->_newLine($item, true); } $this->_request->setLines($this->_lines); //send to AvaTax $result = $this->_send($order->getStoreId()); //if successful if ($result->getResultCode() == SeverityLevel::$Success) { $message = Mage::helper('avatax')->__('Credit memo #%s was saved to AvaTax', $result->getDocCode()); $this->_addStatusHistoryComment($order, $message); if ($result->getTotalTax() != $creditmemo->getBaseTaxAmount() * -1) { throw new OnePica_AvaTax_Model_Avatax_Exception_Unbalanced('Collected: ' . $creditmemo->getTaxAmount() . ', Actual: ' . $result->getTotalTax()); } //if not successful } else { $messages = array(); foreach ($result->getMessages() as $message) { $messages[] = $message->getSummary(); } throw new OnePica_AvaTax_Model_Avatax_Exception_Commitfailure(implode(' // ', $messages)); } return $result; }