/**
  * @param Queue $queue
  * @param \Magento\Sales\Api\Data\InvoiceInterface|\Magento\Sales\Api\Data\CreditmemoInterface $entity
  * @param \ClassyLlama\AvaTax\Api\Data\GetTaxResponseInterface $processSalesResponse
  */
 protected function completeQueueProcessing(Queue $queue, $entity, GetTaxResponseInterface $processSalesResponse)
 {
     $message = __('%1 #%2 was submitted to AvaTax', ucfirst($queue->getEntityTypeCode()), $entity->getIncrementId());
     $queueMessage = '';
     if ($processSalesResponse->getIsUnbalanced()) {
         $adjustmentMessage = null;
         if ($entity instanceof CreditmemoInterface) {
             if (abs($entity->getBaseAdjustmentNegative()) > 0 || abs($entity->getBaseAdjustmentPositive()) > 0) {
                 $adjustmentMessage = __('The difference was at least partly caused by the fact that the creditmemo ' . 'contained an adjustment of %1 and Magento doesn\'t factor that into its calculation, ' . 'but AvaTax does.', $entity->getBaseAdjustment());
             }
         }
         $queueMessage = __('Unbalanced Response - Collected: %1, AvaTax Actual: %2', $entity->getBaseTaxAmount(), $processSalesResponse->getBaseAvataxTaxAmount());
         if ($adjustmentMessage) {
             $queueMessage .= ' — ' . $adjustmentMessage;
         }
         // add comment about unbalanced amount
         $message .= '<br/>' . __('When submitting the %1 to AvaTax the amount calculated for tax differed from what was' . ' recorded in Magento.', $queue->getEntityTypeCode()) . '<br/>' . __('There was a difference of %1', $entity->getBaseTaxAmount() - $processSalesResponse->getBaseAvataxTaxAmount()) . '<br/>';
         if ($adjustmentMessage) {
             $message .= '<strong>' . $adjustmentMessage . '</strong><br/>';
         }
         $message .= __('Magento listed a tax amount of %1', $entity->getBaseTaxAmount()) . '<br/>' . __('AvaTax calculated the tax to be %1', $processSalesResponse->getBaseAvataxTaxAmount()) . '<br/>';
     }
     $queue->setMessage($queueMessage);
     $queue->setQueueStatus(Queue::QUEUE_STATUS_COMPLETE);
     $queue->save();
     // Add comment to order
     $this->addOrderComment($entity->getOrderId(), $message);
 }
Example #2
0
 /**
  * Accepts an invoice or creditmemo and returns an \AvaTax\Line object
  *
  * @param \Magento\Sales\Api\Data\InvoiceInterface|\Magento\Sales\Api\Data\CreditmemoInterface $data
  * @return \AvaTax\Line|bool
  */
 public function getPositiveAdjustmentLine($data)
 {
     $amount = $data->getBaseAdjustmentPositive();
     if ($amount == 0) {
         return false;
     }
     // Credit memo amounts need to be sent to AvaTax as negative numbers
     $amount *= -1;
     $storeId = $data->getStoreId();
     $itemCode = $this->config->getSkuAdjustmentPositive($storeId);
     $data = ['No' => $this->getLineNumber(), 'ItemCode' => $itemCode, 'Description' => self::ADJUSTMENT_POSITIVE_LINE_DESCRIPTION, 'Qty' => 1, 'Amount' => $amount, 'Discounted' => false, 'TaxIncluded' => true];
     try {
         $data = $this->metaDataObject->validateData($data);
     } catch (ValidationException $e) {
         $this->avaTaxLogger->error('Error validating line: ' . $e->getMessage(), ['data' => var_export($data, true)]);
     }
     /** @var $line \AvaTax\Line */
     $line = $this->lineFactory->create();
     $this->populateLine($data, $line);
     return $line;
 }