Beispiel #1
0
 /**
  * Load invoice by increment id
  *
  * @param OnePica_AvaTax_Model_Records_Queue $queue
  * @param int $invoiceIncrementId
  * @return $this
  */
 public function loadInvoiceByIncrementId($queue, $invoiceIncrementId)
 {
     $adapter = $this->_getReadAdapter();
     $select = $adapter->select()->from($this->getMainTable())->where('entity_increment_id = ?', $invoiceIncrementId)->where('type = ?', OnePica_AvaTax_Model_Records_Queue::QUEUE_TYPE_INVOICE);
     $data = $adapter->fetchRow($select);
     $queue->setData($data);
     return $this;
 }
Beispiel #2
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;
 }
Beispiel #3
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;
 }