<?php
namespace Magecomp\Surcharge\Block\Sales\Order;
use Magecomp\Surcharge\Helper\Data as HelperData;
use Magento\Framework\DataObject;
use Magento\Framework\Registry;
use Magento\Framework\View\Element\Template\Context;
use Magento\Sales\Block\Order\Totals as OrderTotals;
class Totals extends OrderTotals {
/**
* @var HelperData
*/
protected $_helperData;
public function __construct(Context $context,
Registry $registry,
HelperData $helperData,
array $data = [])
{
$this->_helperData = $helperData;
parent::__construct($context, $registry, $data);
}
public function initTotals()
{
if ($this->getSource()->getMagecompSurchargeAmount() != 0)
{
$parent = $this->getParentBlock();
if ($this->_helperData->displayBothSales())
{
$surcharge = new DataObject([
'code' => 'surcharge',
'value' => $this->getSource()->getMagecompSurchargeAmount(),
'base_value'=> $this->getSource()->getBaseMagecompSurchargeAmount(),
'label' => __('%1 (Excl. Tax)', $this->getSource()->getMagecompSurchargeDescription())
]);
$surchargeIncl = new DataObject([
'code' => 'surcharge_incl',
'value' => $this->getSource()->getMagecompSurchargeAmount() + $this->getSource()->getMagecompSurchargeTaxAmount(),
'base_value'=> $this->getSource()->getBaseMagecompSurchargeAmount()+ $this->getSource()->getBaseMagecompSurchargeTaxAmount(),
'label' => __('%1 (Incl. Tax)', $this->getSource()->getMagecompSurchargeDescription())
]);
//Work out where to slot in surcharge totals
if ($parent->getTotal('shipping_incl')) {
$parent->addTotal($surcharge,'shipping_incl');
} elseif ($parent->getTotal('shipping')) {
$parent->addTotal($surcharge,'shipping');
} elseif ($parent->getTotal('subtotal_incl')) {
$parent->addTotal($surcharge,'subtotal_incl');
} else {
$parent->addTotal($surcharge,'subtotal');
}
//add the inclusive surcharge after the excl surcharge
$parent->addTotal($surchargeIncl,'surcharge');
}
elseif ($this->_helperData->displayIncludeTaxSales())
{
$surchargeIncl = new DataObject([
'code' => 'surcharge_incl',
'value' => $this->getSource()->getMagecompSurchargeAmount() + $this->getSource()->getMagecompSurchargeTaxAmount(),
'base_value'=> $this->getSource()->getBaseMagecompSurchargeAmount()+ $this->getSource()->getBaseMagecompSurchargeTaxAmount(),
'label' => $this->getSource()->getMagecompSurchargeDescription()
]);
//Work out where to slot in surcharge totals
if ($parent->getTotal('shipping_incl')) {
$parent->addTotal($surchargeIncl,'shipping_incl');
} elseif ($parent->getTotal('shipping')) {
$parent->addTotal($surchargeIncl,'shipping');
} elseif ($parent->getTotal('subtotal_incl')) {
$parent->addTotal($surchargeIncl,'subtotal_incl');
} else {
$parent->addTotal($surchargeIncl,'subtotal');
}
}
else
{
$surcharge = new DataObject([
'code' => 'surcharge',
'value' => $this->getSource()->getMagecompSurchargeAmount(),
'base_value'=> $this->getSource()->getBaseMagecompSurchargeAmount(),
'label' => $this->getSource()->getMagecompSurchargeDescription()
]);
//Work out where to slot in surcharge totals
if ($parent->getTotal('shipping_incl')) {
$parent->addTotal($surcharge,'shipping_incl');
} elseif ($parent->getTotal('shipping')) {
$parent->addTotal($surcharge,'shipping');
} elseif ($parent->getTotal('subtotal_incl')) {
$parent->addTotal($surcharge,'subtotal_incl');
} else {
$parent->addTotal($surcharge,'subtotal');
}
}
}
return $this;
}
} |