We will be off from 27/1 (Monday) to 31/1 (Friday) (GMT +7) for our Tet Holiday (Lunar New Year) in our country

Commit ade2e9e7 authored by Rik ter Beek's avatar Rik ter Beek

Fixes #142 add discount and shipping costs into request

parent 488161ba
...@@ -58,6 +58,13 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -58,6 +58,13 @@ class Redirect extends \Magento\Payment\Block\Form
*/ */
protected $_adyenLogger; protected $_adyenLogger;
/**
* @var \Magento\Tax\Model\Config
*/
protected $_taxConfig;
protected $_taxCalculation;
/** /**
* Redirect constructor. * Redirect constructor.
* *
...@@ -74,7 +81,9 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -74,7 +81,9 @@ class Redirect extends \Magento\Payment\Block\Form
\Magento\Checkout\Model\Session $checkoutSession, \Magento\Checkout\Model\Session $checkoutSession,
\Adyen\Payment\Helper\Data $adyenHelper, \Adyen\Payment\Helper\Data $adyenHelper,
\Magento\Framework\Locale\ResolverInterface $resolver, \Magento\Framework\Locale\ResolverInterface $resolver,
\Adyen\Payment\Logger\AdyenLogger $adyenLogger \Adyen\Payment\Logger\AdyenLogger $adyenLogger,
\Magento\Tax\Model\Config $taxConfig,
\Magento\Tax\Model\Calculation $taxCalculation
) { ) {
$this->_orderFactory = $orderFactory; $this->_orderFactory = $orderFactory;
$this->_checkoutSession = $checkoutSession; $this->_checkoutSession = $checkoutSession;
...@@ -88,6 +97,8 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -88,6 +97,8 @@ class Redirect extends \Magento\Payment\Block\Form
$incrementId = $this->_getCheckout()->getLastRealOrderId(); $incrementId = $this->_getCheckout()->getLastRealOrderId();
$this->_order = $this->_orderFactory->create()->loadByIncrementId($incrementId); $this->_order = $this->_orderFactory->create()->loadByIncrementId($incrementId);
} }
$this->_taxConfig = $taxConfig;
$this->_taxCalculation = $taxCalculation;
} }
...@@ -306,6 +317,10 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -306,6 +317,10 @@ class Redirect extends \Magento\Payment\Block\Form
} catch(Exception $e) { } catch(Exception $e) {
// do nothing for now // do nothing for now
} }
// echo "GENDER" . $this->_order->getCustomerGender();
//
// print_r($formFields);die();
return $formFields; return $formFields;
} }
...@@ -430,15 +445,11 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -430,15 +445,11 @@ class Redirect extends \Magento\Payment\Block\Form
foreach ($this->_order->getAllVisibleItems() as $item) { foreach ($this->_order->getAllVisibleItems() as $item) {
++$count; ++$count;
$linename = "line".$count;
$formFields['openinvoicedata.' . $linename . '.currencyCode'] = $currency;
$formFields['openinvoicedata.' . $linename . '.description'] =
str_replace("\n", '', trim($item->getName()));
$formFields['openinvoicedata.' . $linename . '.itemAmount'] =
$this->_adyenHelper->formatAmount($item->getPrice(), $currency);
$formFields['openinvoicedata.' . $linename . '.itemVatAmount'] = $description = str_replace("\n", '', trim($item->getName()));
$itemAmount = $this->_adyenHelper->formatAmount($item->getPrice(), $currency);
$itemVatAmount =
($item->getTaxAmount() > 0 && $item->getPriceInclTax() > 0) ? ($item->getTaxAmount() > 0 && $item->getPriceInclTax() > 0) ?
$this->_adyenHelper->formatAmount( $this->_adyenHelper->formatAmount(
$item->getPriceInclTax(), $item->getPriceInclTax(),
...@@ -447,23 +458,57 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -447,23 +458,57 @@ class Redirect extends \Magento\Payment\Block\Form
$item->getPrice(), $item->getPrice(),
$currency $currency
) : $this->_adyenHelper->formatAmount($item->getTaxAmount(), $currency); ) : $this->_adyenHelper->formatAmount($item->getTaxAmount(), $currency);
// Calculate vat percentage // Calculate vat percentage
$percentageMinorUnits = $this->_adyenHelper->getMinorUnitTaxPercent($item->getTaxPercent()); $itemVatPercentage = $this->_adyenHelper->getMinorUnitTaxPercent($item->getTaxPercent());
$formFields['openinvoicedata.' . $linename . '.itemVatPercentage'] = $percentageMinorUnits;
$formFields['openinvoicedata.' . $linename . '.numberOfItems'] = (int) $item->getQtyOrdered();
if ($this->_adyenHelper->isVatCategoryHigh($this->_order->getPayment()->getAdditionalInformation( $numberOfItems = (int) $item->getQtyOrdered();
\Adyen\Payment\Observer\AdyenHppDataAssignObserver::BRAND_CODE))) {
$formFields['openinvoicedata.' . $linename . '.vatCategory'] = "High";
} else {
$formFields['openinvoicedata.' . $linename . '.vatCategory'] = "None";
}
if ($item->getSku() != "") { $formFields = $this->setOpenInvoiceLineData($formFields, $count, $currency, $description, $itemAmount,
$formFields['openinvoicedata.' . $linename . '.itemId'] = $item->getSku(); $itemVatAmount, $itemVatPercentage, $numberOfItems);
} }
// Discount cost
if ($this->_order->getDiscountAmount() > 0 || $this->_order->getDiscountAmount() < 0) {
++$count;
$description = __('Total Discount');
$itemAmount = $this->_adyenHelper->formatAmount($this->_order->getDiscountAmount(), $currency);
$itemVatAmount = "0";
$itemVatPercentage = "0";
$numberOfItems = 1;
$formFields = $this->setOpenInvoiceLineData($formFields, $count, $currency, $description, $itemAmount,
$itemVatAmount, $itemVatPercentage, $numberOfItems);
}
// Shipping cost
if ($this->_order->getShippingAmount() > 0 || $this->_order->getShippingTaxAmount() > 0) {
++$count;
$description = $this->_order->getShippingDescription();
$itemAmount = $this->_adyenHelper->formatAmount($this->_order->getShippingAmount(), $currency);
$itemVatAmount = $this->_adyenHelper->formatAmount($this->_order->getShippingTaxAmount(), $currency);
// Create RateRequest to calculate the Tax class rate for the shipping method
$rateRequest = $this->_taxCalculation->getRateRequest(
$this->_order->getShippingAddress(),
$this->_order->getBillingAddress(),
null,
$this->_order->getStoreId(), $this->_order->getCustomerId()
);
$taxClassId = $this->_taxConfig->getShippingTaxClass($this->_order->getStoreId());
$rateRequest->setProductClassId($taxClassId);
$rate = $this->_taxCalculation->getRate($rateRequest);
$itemVatPercentage = $this->_adyenHelper->getMinorUnitTaxPercent($rate);
$numberOfItems = 1;
$formFields = $this->setOpenInvoiceLineData($formFields, $count, $currency, $description, $itemAmount,
$itemVatAmount, $itemVatPercentage, $numberOfItems);
} }
$formFields['openinvoicedata.refundDescription'] = "Refund / Correction for ".$formFields['merchantReference']; $formFields['openinvoicedata.refundDescription'] = "Refund / Correction for ".$formFields['merchantReference'];
...@@ -472,6 +517,38 @@ class Redirect extends \Magento\Payment\Block\Form ...@@ -472,6 +517,38 @@ class Redirect extends \Magento\Payment\Block\Form
return $formFields; return $formFields;
} }
/**
* Set the openinvoice line
*
* @param $count
* @param $currencyCode
* @param $description
* @param $itemAmount
* @param $itemVatAmount
* @param $itemVatPercentage
* @param $numberOfItems
*/
protected function setOpenInvoiceLineData($formFields, $count, $currencyCode, $description, $itemAmount,
$itemVatAmount, $itemVatPercentage, $numberOfItems
) {
$linename = "line".$count;
$formFields['openinvoicedata.' . $linename . '.currencyCode'] = $currencyCode;
$formFields['openinvoicedata.' . $linename . '.description'] = $description;
$formFields['openinvoicedata.' . $linename . '.itemAmount'] = $itemAmount;
$formFields['openinvoicedata.' . $linename . '.itemVatAmount'] = $itemVatAmount;
$formFields['openinvoicedata.' . $linename . '.itemVatPercentage'] = $itemVatPercentage;
$formFields['openinvoicedata.' . $linename . '.numberOfItems'] = $numberOfItems;
if ($this->_adyenHelper->isVatCategoryHigh($this->_order->getPayment()->getAdditionalInformation(
\Adyen\Payment\Observer\AdyenHppDataAssignObserver::BRAND_CODE))) {
$formFields['openinvoicedata.' . $linename . '.vatCategory'] = "High";
} else {
$formFields['openinvoicedata.' . $linename . '.vatCategory'] = "None";
}
return $formFields;
}
/** /**
* @param $genderId * @param $genderId
* @return string * @return string
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment