Example #1
0
 /**
  * Process invoice or credit memo
  *
  * @param \Magento\Sales\Api\Data\InvoiceInterface|\Magento\Sales\Api\Data\CreditmemoInterface $object
  * @return \ClassyLlama\AvaTax\Api\Data\GetTaxResponseInterface
  * @throws \ClassyLlama\AvaTax\Exception\TaxCalculationException
  */
 public function processSalesObject($object)
 {
     $storeId = $object->getStoreId();
     $taxService = $this->taxService;
     try {
         /** @var $getTaxRequest GetTaxRequest */
         $getTaxRequest = $this->interactionTax->getGetTaxRequestForSalesObject($object);
     } catch (\Exception $e) {
         $message = __('Error while building the request to send to AvaTax. ');
         $this->avaTaxLogger->error($message, ['entity_id' => $object->getEntityId(), 'object_class' => get_class($object), 'exception' => sprintf('Exception message: %s%sTrace: %s', $e->getMessage(), "\n", $e->getTraceAsString())]);
         throw new \ClassyLlama\AvaTax\Exception\TaxCalculationException($message . $e->getMessage(), $e->getCode(), $e);
     }
     if (is_null($getTaxRequest)) {
         $message = '$getTaxRequest was empty so not running getTax request.';
         $this->avaTaxLogger->warning($message);
         throw new \ClassyLlama\AvaTax\Exception\TaxCalculationException($message);
     }
     try {
         $getTaxResult = $taxService->getTax($getTaxRequest, $storeId);
         if ($getTaxResult->getResultCode() == \AvaTax\SeverityLevel::$Success) {
             // Since credit memo tax amounts come back from AvaTax as negative numbers, get absolute value
             $avataxTaxAmount = abs($getTaxResult->getTotalTax());
             $unbalanced = $avataxTaxAmount != $object->getBaseTaxAmount();
             /** @var $response \ClassyLlama\AvaTax\Api\Data\GetTaxResponseInterface */
             $response = $this->getTaxResponseFactory->create();
             $response->setIsUnbalanced($unbalanced)->setBaseAvataxTaxAmount($avataxTaxAmount);
             return $response;
         } else {
             $message = $this->getErrorMessageFromGetTaxResult($getTaxResult);
             $this->avaTaxLogger->warning($message, ['request' => var_export($getTaxRequest, true), 'result' => var_export($getTaxResult, true)]);
             throw new \ClassyLlama\AvaTax\Exception\TaxCalculationException($message);
         }
     } catch (\SoapFault $exception) {
         $message = "Exception: \n";
         if ($exception) {
             $message .= $exception->faultstring;
         }
         $message .= $taxService->__getLastRequest() . "\n";
         $message .= $taxService->__getLastResponse() . "\n";
         $this->avaTaxLogger->critical("Exception: \n" . $exception ? $exception->faultstring : "", ['request' => var_export($taxService->__getLastRequest(), true), 'result' => var_export($taxService->__getLastResponse(), true)]);
         throw new \ClassyLlama\AvaTax\Exception\TaxCalculationException($message);
     }
 }