Example #1
0
 /**
  * Set entity
  *
  * @param Mage_Sales_Model_Order_Invoice|Mage_Sales_Model_Order_Creditmemo $object
  * @return $this
  */
 public function setEntity($object)
 {
     $this->setEntityId($object->getId());
     $this->setEntityIncrementId($object->getIncrementId());
     $this->setStoreId($object->getStoreId());
     return $this;
 }
Example #2
0
 /**
  * Get document code for creditmemo
  *
  * @param Mage_Sales_Model_Order_Creditmemo $creditmemo
  * @return string
  */
 protected function _getCreditmemoDocumentCode($creditmemo)
 {
     return self::DOCUMENT_CODE_CREDITMEMO_PREFIX . $creditmemo->getIncrementId();
 }
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
 /**
  * Returns the refund appendix and substitutes the placeholders, as far as possible
  *
  * @param Mage_Sales_Model_Order_Creditmemo $creditmemo
  * @return string
  */
 public function getInvoiceAppendixRefund(Mage_Sales_Model_Order_Creditmemo $creditmemo)
 {
     $order = $this->getOrder();
     /** @var $customer Mage_Customer_Model_Customer */
     $customer = $this->getFactory()->getModelCustomer();
     $customer->load($order->getCustomerId());
     /** @var $invoice Mage_Sales_Model_Order_Invoice */
     $invoice = $creditmemo->getInvoice();
     $substitutionArray = array('{{order_increment_id}}' => $order->getIncrementId(), '{{order_id}}' => $order->getId(), '{{creditmemo_increment_id}}' => $creditmemo->getIncrementId(), '{{invoice_increment_id}}' => $invoice->getIncrementId(), '{{invoice_id}}' => $invoice->getId(), '{{customer_increment_id}}' => $customer->getIncrementId(), '{{customer_id}}' => $order->getCustomerId());
     $appendix = $this->getConfigParameterInvoice()->getInvoiceAppendixRefund();
     $appendix = str_replace(array_keys($substitutionArray), array_values($substitutionArray), $appendix);
     return $appendix;
 }
 public static function storeCreditMemoCalculation(Mage_Sales_Model_Order_Creditmemo $creditMemo)
 {
     $params = array();
     $params['calculation_id'] = $creditMemo->getDcOrderId();
     $params['order_id'] = $creditMemo->getOrder()->getIncrementId();
     $params['order_type'] = 'credit_note';
     $params['credit_note_id'] = $creditMemo->getIncrementId();
     $params['assign_addresses'] = 1;
     $params['output_currency'] = $creditMemo->getOrderCurrencyCode();
     $params['seller_first_name'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-first-name');
     $params['seller_last_name'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-last-name');
     $params['seller_country'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-country');
     $params['seller_address_line_1'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-address-line');
     $params['seller_city'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-city');
     $params['seller_zip'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-postcode');
     $params['seller_phone'] = Mage::getStoreConfig('dc_charge_extension/dccharge/seller-phone');
     $shippingAddress = $creditMemo->getOrder()->getShippingAddress();
     $billingAddress = $creditMemo->getOrder()->getBillingAddress();
     $params['shipto_first_name'] = $shippingAddress->getFirstname();
     $params['shipto_last_name'] = $shippingAddress->getLastname();
     $params['shipto_address_line_1'] = $shippingAddress->getStreet(-1);
     $params['shipto_city'] = $shippingAddress->getCity();
     $params['shipto_zip'] = $shippingAddress->getPostcode();
     $params['shipto_country'] = $shippingAddress->getCountryId();
     $params['shipto_phone'] = $shippingAddress->getTelephone();
     $params['soldto_first_name'] = $billingAddress->getFirstname();
     $params['soldto_last_name'] = $billingAddress->getLastname();
     $params['soldto_address_line_1'] = $billingAddress->getStreet(-1);
     $params['soldto_city'] = $billingAddress->getCity();
     $params['soldto_zip'] = $billingAddress->getPostcode();
     $params['soldto_country'] = $billingAddress->getCountryId();
     $params['soldto_phone'] = $billingAddress->getTelephone();
     /* @var $helper Dutycalculator_Charge_Helper_Data */
     $helper = Mage::helper('dccharge');
     $rawXml = $helper->sendRequest('store_calculation', $params);
     try {
         if (stripos($rawXml, '<?xml') === false) {
             throw new Exception($rawXml);
         }
         new SimpleXMLElement($rawXml);
         return true;
     } catch (Exception $ex) {
         return false;
     }
 }
Example #6
0
 public function getCreditmemoDocCode(Mage_Sales_Model_Order_Creditmemo $creditmemo)
 {
     $prefix = trim($this->getConfig('creditmemo_prefix', $creditmemo->getStore()), self::DOC_CODE_SEPARATOR);
     $prefix = (empty($prefix) ? 'R' : $prefix) . self::DOC_CODE_SEPARATOR;
     if ($creditmemo->getAvataxDocument()) {
         return $creditmemo->getAvataxDocument();
     } elseif ($creditmemo->getIncrementId()) {
         return $prefix . $creditmemo->getIncrementId();
     } else {
         return null;
     }
 }
Example #7
0
 /**
  * @param Mage_Sales_Model_Order_Creditmemo $creditmemo
  *
  * @return Bronto_Common_Model_Email_Template_Filter
  */
 protected function _filterCreditmemo(Mage_Sales_Model_Order_Creditmemo $creditmemo)
 {
     if (!in_array('creditmemo', $this->_filteredObjects)) {
         $index = 1;
         foreach ($creditmemo->getAllItems() as $item) {
             $_item = $item->getOrderItem();
             if (!$_item->getParentItem()) {
                 $this->_filterOrderItem($_item, $index);
                 $index++;
             }
         }
         $createdAt = $creditmemo->getCreatedAtStoreDate();
         if (empty($createdAt)) {
             // unset the blank string to force current timestamp
             $createdAt = null;
         }
         // Add Related Content
         $this->_items = $creditmemo->getAllItems();
         $this->setField('creditmemoIncrementId', $creditmemo->getIncrementId());
         $this->setField('creditmemoCreatedAt', Mage::helper('core')->formatDate($createdAt, 'long', true));
         // TODO: needed?
         $this->setField('creditmemoItems', $this->_filterCreditmemoItems($creditmemo));
         $this->_filteredObjects[] = 'creditmemo';
     }
     return $this;
 }
Example #8
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;
 }