public function getOrderShippingCost($params, $shipping_cost)
 {
     if (!$this->active) {
         return false;
     }
     if (!Configuration::get('TNT_CARRIER_LOGIN') || !Configuration::get('TNT_CARRIER_PASSWORD') || !Configuration::get('TNT_CARRIER_NUMBER_ACCOUNT')) {
         return false;
     }
     if (!Configuration::get('TNT_CARRIER_SHIPPING_ADDRESS1') || !Configuration::get('TNT_CARRIER_SHIPPING_ZIPCODE') || !Configuration::get('TNT_CARRIER_SHIPPING_CITY')) {
         return false;
     }
     if (!extension_loaded('soap')) {
         return false;
     }
     $product = $params->getProducts();
     $weight = 0;
     $add = 0;
     $id_customer = $params->id_customer;
     $id_adress_delivery = $params->id_address_delivery;
     $info = Db::getInstance()->getRow('SELECT postcode, city, company FROM `' . _DB_PREFIX_ . 'address` WHERE `id_address` = "' . (int) $id_adress_delivery . '"');
     foreach ($product as $k => $v) {
         $weight += (double) ($v['weight'] * (int) $v['cart_quantity']);
     }
     $serviceCache = new serviceCache($params->id, $info['postcode'], $info['city'], $info['company'], Configuration::get('TNT_CARRIER_SHIPPING_ZIPCODE'), Configuration::get('TNT_CARRIER_SHIPPING_CITY'));
     $serviceCache->clean();
     if (!$serviceCache->getFaisabilityAtThisTime()) {
         $serviceCache->deletePreviousServices();
         $tntWebService = new TntWebService();
         $typeDestinataire = array();
         $typeDestinataire[] = 'INDIVIDUAL';
         $typeDestinataire[] = 'DROPOFFPOINT';
         if ($info['company'] != '') {
             $typeDestinataire[] = 'ENTERPRISE';
         }
         $faisability = $tntWebService->getFaisability($typeDestinataire, $info['postcode'], $this->putCityInNormeTnt($info['city']), date("Y-m-d", strtotime("now")));
         //"2012-05-02");
         if (!is_array($faisability) && strrpos($faisability, "(zip code / city)") === 0) {
             $serviceCache->errorCodePostal();
         } else {
             if (is_array($faisability)) {
                 $serviceCache->putInCache($faisability);
             }
         }
         if ($faisability == null) {
             return false;
         }
     }
     $service = $serviceCache->getServices();
     if ($service != NULL) {
         foreach ($service as $v) {
             if (Configuration::get('TNT_CARRIER_' . pSQL($v['code']) . '_ID')) {
                 if (Configuration::get('TNT_CARRIER_' . pSQL($v['code']) . '_ID') == $this->id_carrier) {
                     $priceCarrier = Configuration::get('TNT_CARRIER_' . pSQL($v['code']) . '_OVERCOST');
                 }
             } else {
                 if (Configuration::get('TNT_CARRIER_' . substr(pSQL($v['code']), 0, 2) . '_ID')) {
                     if (Configuration::get('TNT_CARRIER_' . substr(pSQL($v['code']), 0, 2) . '_ID') == $this->id_carrier) {
                         $priceCarrier = Configuration::get('TNT_CARRIER_' . substr(pSQL($v['code']), 0, 2) . '_OVERCOST');
                     }
                 }
             }
         }
     }
     $zero = 0;
     $weightLimit = Db::getInstance()->getRow('SELECT additionnal_charges FROM `' . _DB_PREFIX_ . 'tnt_carrier_weight` WHERE `weight_min` < "' . (double) $weight . '" AND (`weight_max` > "' . (double) $weight . '" OR `weight_max` = "' . (double) $zero . '")');
     $currency = Db::getInstance()->getRow('SELECT conversion_rate FROM `' . _DB_PREFIX_ . 'currency` WHERE `id_currency` = "' . (int) $params->id_currency . '"');
     if ($weightLimit != null) {
         $add += (double) $weightLimit['additionnal_charges'];
     }
     if (substr($info['postcode'], 0, 2) == "20") {
         $add += (double) Configuration::get('TNT_CARRIER_CORSE_OVERCOST');
     }
     if (isset($priceCarrier)) {
         return ($priceCarrier + $add) * $currency['conversion_rate'] + $shipping_cost;
     }
     return false;
 }