Example #1
0
 /**
  * Convert a creditmemo to a LinkShare refund row.
  *
  * @param Mage_Sales_Model_Order_Creditmemo $creditmemo
  * @return array
  */
 public function creditmemoToFeed(Mage_Sales_Model_Order_Creditmemo $creditmemo)
 {
     $orderDate = new Zend_Date($creditmemo->getOrderDate(), Varien_Date::DATETIME_INTERNAL_FORMAT);
     $orderDate = $orderDate->toString('yyyy-MM-dd');
     $cmDate = new Zend_Date($creditmemo->getCreatedAt(), Varien_Date::DATETIME_INTERNAL_FORMAT);
     $cmDate = $cmDate->toString('yyyy-MM-dd');
     $rows = array();
     foreach ($creditmemo->getAllItems() as $cmItem) {
         /* @var $cmItem Mage_Sales_Model_Order_Creditmemo_Item */
         if ($cmItem->getBaseRowTotal()) {
             $rows[] = array('order_id' => $creditmemo->getOrderIncrementId(), 'site_id' => '', 'order_date' => $orderDate, 'transaction_date' => $cmDate, 'sku' => $cmItem->getSku(), 'quantity' => round($cmItem->getQty()), 'amount' => ($cmItem->getBaseRowTotal() - $cmItem->getBaseDiscountAmount()) * -100, 'currency' => $creditmemo->getBaseCurrencyCode(), 'blank' => '', 'blank' => '', 'blank' => '', 'product_name' => '');
         }
     }
     return $rows;
 }
Example #2
0
 /**
  * Save order's creditmemo 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 mixed
  * @throws OnePica_AvaTax_Exception
  * @throws OnePica_AvaTax_Model_Service_Exception_Commitfailure
  * @throws OnePica_AvaTax_Model_Service_Exception_Unbalanced
  */
 public function creditmemo($creditmemo, $queue)
 {
     $this->_lines = array();
     $order = $creditmemo->getOrder();
     $storeId = $order->getStoreId();
     $creditmemoDate = $this->_convertGmtDate($creditmemo->getCreatedAt(), $storeId);
     $orderDate = $this->_convertGmtDate($order->getCreatedAt(), $storeId);
     $shippingAddress = $order->getShippingAddress() ? $order->getShippingAddress() : $order->getBillingAddress();
     // Set up document for request
     $this->_request = $this->_getNewDocumentRequestObject();
     // set up header
     $header = $this->_getRequestHeaderWithMainValues($storeId, $order);
     $header->setDocumentCode($this->_getCreditmemoDocumentCode($creditmemo));
     $header->setTransactionDate($creditmemoDate);
     $header->setTaxCalculationDate($orderDate);
     $header->setDefaultLocations($this->_getHeaderDefaultLocations($shippingAddress));
     $this->_request->setHeader($header);
     $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());
     foreach ($items as $item) {
         /** @var Mage_Sales_Model_Order_Creditmemo_Item $item */
         $this->_newLine($item, true);
     }
     $this->_setLinesToRequest();
     //send to AvaTax
     $result = $this->_send($order->getStoreId());
     /** @var OnePica_AvaTax_Model_Service_Result_Creditmemo $creditmemoResult */
     $creditmemoResult = Mage::getModel('avatax/service_result_creditmemo');
     $creditmemoResult->setHasError($result->getHasError());
     //if successful
     if (!$result->getHasError()) {
         $totalTax = $result->getCalculatedTaxSummary()->getTotalTax();
         $creditmemoResult->setTotalTax($totalTax);
         $documentCode = $result->getHeader()->getDocumentCode();
         $creditmemoResult->setDocumentCode($documentCode);
         //if not successful
     } else {
         $creditmemoResult->setErrors($result->getErrors());
     }
     return $creditmemoResult;
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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;
 }