Preprod mutu dc0edebeb0 tnt
2017-09-12 10:48:51 +02:00

121 lines
4.1 KiB
PHP

<?php
/**
* TNT OFFICIAL MODULE FOR PRESTASHOP
*
* @author GFI Informatique <www.gfi.fr>
* @copyright 2016-2017 GFI Informatique, 2016-2017 TNT
* @license https://opensource.org/licenses/MIT MIT License
*/
require_once _PS_MODULE_DIR_.'tntofficiel/tntofficiel.php';
require_once _PS_MODULE_DIR_.'tntofficiel/libraries/TNTOfficiel_Debug.php';
class TNTOfficiel_Cart
{
/**
* Is shipping free for cart, through configuration.
*
* @param $objArgCart
* @return bool
*/
public static function isCartShippingFree($objArgCart)
{
TNTOfficiel_Debug::log(array('msg' => '>>', 'file' => __FILE__, 'line' => __LINE__));
$arrConfigShipping = Configuration::getMultiple(array(
'PS_SHIPPING_FREE_PRICE',
'PS_SHIPPING_FREE_WEIGHT'
));
// Load current TNT carrier object.
$objCarrierTNT = TNTOfficiel_Carrier::loadGlobalCarrier();
// If TNT carrier object not available.
if ($objCarrierTNT === null) {
return true;
}
// If TNT carrier is inactive or free.
if (!$objCarrierTNT->active || $objCarrierTNT->getShippingMethod() == Carrier::SHIPPING_METHOD_FREE) {
return true;
}
// Get cart amount to reach for free shipping.
$fltFreeFeesPrice = 0;
if (isset($arrConfigShipping['PS_SHIPPING_FREE_PRICE'])) {
$fltFreeFeesPrice = (float)Tools::convertPrice(
(float)$arrConfigShipping['PS_SHIPPING_FREE_PRICE'],
Currency::getCurrencyInstance((int)$objArgCart->id_currency)
);
}
// Free shipping if cart amount, inc. taxes, inc. product & discount, exc. shipping > PS_SHIPPING_FREE_PRICE
if ($fltFreeFeesPrice > 0
&& $objArgCart->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING, null, null, false) >= $fltFreeFeesPrice
) {
return true;
}
// Free shipping if cart weight > PS_SHIPPING_FREE_WEIGHT
if (isset($arrConfigShipping['PS_SHIPPING_FREE_WEIGHT'])
&& $objArgCart->getTotalWeight() >= (float)$arrConfigShipping['PS_SHIPPING_FREE_WEIGHT']
&& (float)$arrConfigShipping['PS_SHIPPING_FREE_WEIGHT'] > 0
) {
return true;
}
return false;
}
/**
* Get additional shipping cost for cart (exc. taxes).
*
* @param $objArgCart
* @return float
*/
public static function getCartExtraShippingCost($objArgCart)
{
TNTOfficiel_Debug::log(array('msg' => '>>', 'file' => __FILE__, 'line' => __LINE__));
$fltShippingCost = 0;
$arrProducts = $objArgCart->getProducts();
// If no product, no shipping extra cost.
if (!count($arrProducts)) {
return 0;
}
// If only virtual products in cart, no extra shipping cost.
if ($objArgCart->isVirtualCart()) {
return 0;
}
// If TNT carrier is free.
$boolIsCartShippingFree = TNTOfficiel_Cart::isCartShippingFree($objArgCart);
if ($boolIsCartShippingFree) {
return 0;
}
// Load current TNT carrier object.
$objCarrierTNT = TNTOfficiel_Carrier::loadGlobalCarrier();
// If TNT carrier object not available, no extra shipping cost.
if ($objCarrierTNT === null) {
return 0;
}
// Adding handling charges.
$shipping_handling = Configuration::get('PS_SHIPPING_HANDLING');
if (isset($shipping_handling) && $objCarrierTNT->shipping_handling) {
$fltShippingCost += (float)$shipping_handling;
}
// Adding additional shipping cost per product.
foreach ($arrProducts as $product) {
if (!$product['is_virtual']) {
$fltShippingCost += $product['additional_shipping_cost'] * $product['cart_quantity'];
}
}
$fltShippingCost = (float)Tools::convertPrice($fltShippingCost, Currency::getCurrencyInstance((int)$objArgCart->id_currency));
return $fltShippingCost;
}
}