first commit
This commit is contained in:
215
classes/checkout/CheckoutDeliveryStep.php
Normal file
215
classes/checkout/CheckoutDeliveryStep.php
Normal file
@@ -0,0 +1,215 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Open Software License (OSL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/OSL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
|
||||
*/
|
||||
use PrestaShop\PrestaShop\Adapter\Product\PriceFormatter;
|
||||
|
||||
class CheckoutDeliveryStepCore extends AbstractCheckoutStep
|
||||
{
|
||||
protected $template = 'checkout/_partials/steps/shipping.tpl';
|
||||
|
||||
private $recyclablePackAllowed = false;
|
||||
private $giftAllowed = false;
|
||||
private $giftCost = 0;
|
||||
private $includeTaxes = false;
|
||||
private $displayTaxesLabel = false;
|
||||
|
||||
public function setRecyclablePackAllowed($recyclablePackAllowed)
|
||||
{
|
||||
$this->recyclablePackAllowed = $recyclablePackAllowed;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function isRecyclablePackAllowed()
|
||||
{
|
||||
return $this->recyclablePackAllowed;
|
||||
}
|
||||
|
||||
public function setGiftAllowed($giftAllowed)
|
||||
{
|
||||
$this->giftAllowed = $giftAllowed;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function isGiftAllowed()
|
||||
{
|
||||
return $this->giftAllowed;
|
||||
}
|
||||
|
||||
public function setGiftCost($giftCost)
|
||||
{
|
||||
$this->giftCost = $giftCost;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getGiftCost()
|
||||
{
|
||||
return $this->giftCost;
|
||||
}
|
||||
|
||||
public function setIncludeTaxes($includeTaxes)
|
||||
{
|
||||
$this->includeTaxes = $includeTaxes;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getIncludeTaxes()
|
||||
{
|
||||
return $this->includeTaxes;
|
||||
}
|
||||
|
||||
public function setDisplayTaxesLabel($displayTaxesLabel)
|
||||
{
|
||||
$this->displayTaxesLabel = $displayTaxesLabel;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getDisplayTaxesLabel()
|
||||
{
|
||||
return $this->displayTaxesLabel;
|
||||
}
|
||||
|
||||
public function getGiftCostForLabel()
|
||||
{
|
||||
if ($this->getGiftCost() != 0) {
|
||||
$taxLabel = '';
|
||||
$priceFormatter = new PriceFormatter();
|
||||
|
||||
if ($this->getIncludeTaxes() && $this->getDisplayTaxesLabel()) {
|
||||
$taxLabel .= $this->getTranslator()->trans('tax incl.', [], 'Shop.Theme.Checkout');
|
||||
} elseif ($this->getDisplayTaxesLabel()) {
|
||||
$taxLabel .= $this->getTranslator()->trans('tax excl.', [], 'Shop.Theme.Checkout');
|
||||
}
|
||||
|
||||
return $this->getTranslator()->trans(
|
||||
'(additional cost of %giftcost% %taxlabel%)',
|
||||
[
|
||||
'%giftcost%' => $priceFormatter->convertAndFormat($this->getGiftCost()),
|
||||
'%taxlabel%' => $taxLabel,
|
||||
],
|
||||
'Shop.Theme.Checkout'
|
||||
);
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
public function handleRequest(array $requestParams = [])
|
||||
{
|
||||
if (isset($requestParams['delivery_option'])) {
|
||||
$this->setComplete(false);
|
||||
$this->getCheckoutSession()->setDeliveryOption(
|
||||
$requestParams['delivery_option']
|
||||
);
|
||||
$this->getCheckoutSession()->setRecyclable(
|
||||
isset($requestParams['recyclable']) ? $requestParams['recyclable'] : false
|
||||
);
|
||||
|
||||
$useGift = isset($requestParams['gift']) ? $requestParams['gift'] : false;
|
||||
$this->getCheckoutSession()->setGift(
|
||||
$useGift,
|
||||
($useGift && isset($requestParams['gift_message'])) ? $requestParams['gift_message'] : ''
|
||||
);
|
||||
}
|
||||
|
||||
if (isset($requestParams['delivery_message'])) {
|
||||
$this->getCheckoutSession()->setMessage($requestParams['delivery_message']);
|
||||
}
|
||||
|
||||
if ($this->isReachable() && isset($requestParams['confirmDeliveryOption'])) {
|
||||
// we're done if
|
||||
// - the step was reached (= all previous steps complete)
|
||||
// - user has clicked on "continue"
|
||||
// - there are delivery options
|
||||
// - the is a selected delivery option
|
||||
// - the module associated to the delivery option confirms
|
||||
$deliveryOptions = $this->getCheckoutSession()->getDeliveryOptions();
|
||||
$this->setNextStepAsCurrent();
|
||||
$this->setComplete(
|
||||
!empty($deliveryOptions)
|
||||
&& $this->getCheckoutSession()->getSelectedDeliveryOption()
|
||||
&& $this->isModuleComplete($requestParams)
|
||||
);
|
||||
}
|
||||
|
||||
$this->setTitle($this->getTranslator()->trans('Shipping Method', [], 'Shop.Theme.Checkout'));
|
||||
|
||||
Hook::exec('actionCarrierProcess', ['cart' => $this->getCheckoutSession()->getCart()]);
|
||||
}
|
||||
|
||||
public function render(array $extraParams = [])
|
||||
{
|
||||
return $this->renderTemplate(
|
||||
$this->getTemplate(),
|
||||
$extraParams,
|
||||
[
|
||||
'hookDisplayBeforeCarrier' => Hook::exec('displayBeforeCarrier', ['cart' => $this->getCheckoutSession()->getCart()]),
|
||||
'hookDisplayAfterCarrier' => Hook::exec('displayAfterCarrier', ['cart' => $this->getCheckoutSession()->getCart()]),
|
||||
'id_address' => $this->getCheckoutSession()->getIdAddressDelivery(),
|
||||
'delivery_options' => $this->getCheckoutSession()->getDeliveryOptions(),
|
||||
'delivery_option' => $this->getCheckoutSession()->getSelectedDeliveryOption(),
|
||||
'recyclable' => $this->getCheckoutSession()->isRecyclable(),
|
||||
'recyclablePackAllowed' => $this->isRecyclablePackAllowed(),
|
||||
'delivery_message' => $this->getCheckoutSession()->getMessage(),
|
||||
'gift' => [
|
||||
'allowed' => $this->isGiftAllowed(),
|
||||
'isGift' => $this->getCheckoutSession()->getGift()['isGift'],
|
||||
'label' => $this->getTranslator()->trans(
|
||||
'I would like my order to be gift wrapped %cost%',
|
||||
['%cost%' => $this->getGiftCostForLabel()],
|
||||
'Shop.Theme.Checkout'
|
||||
),
|
||||
'message' => $this->getCheckoutSession()->getGift()['message'],
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
protected function isModuleComplete($requestParams)
|
||||
{
|
||||
$deliveryOptions = $this->getCheckoutSession()->getDeliveryOptions();
|
||||
$currentDeliveryOption = $deliveryOptions[$this->getCheckoutSession()->getSelectedDeliveryOption()];
|
||||
if (!$currentDeliveryOption['is_module']) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$isComplete = true;
|
||||
Hook::exec(
|
||||
'actionValidateStepComplete',
|
||||
[
|
||||
'step_name' => 'delivery',
|
||||
'request_params' => $requestParams,
|
||||
'completed' => &$isComplete,
|
||||
],
|
||||
Module::getModuleIdByName($currentDeliveryOption['external_module_name'])
|
||||
);
|
||||
|
||||
return $isComplete;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user