206 lines
8.5 KiB
PHP
Executable File
206 lines
8.5 KiB
PHP
Executable File
<?php
|
|
$nomFicAppelant = basename(__FILE__);
|
|
$continuer=0;
|
|
if (empty($tabIdMl)) include ($includePath. "/req/31-modeLiv.reqSelectList.php");
|
|
|
|
// ---------------------------------------------------
|
|
// D'abord voir si les frais vont s'appliquer
|
|
// ---------------------------------------------------
|
|
include ("regleLiv.reqSelect.php");
|
|
|
|
// ---------------------------------------------------
|
|
// avantages debug
|
|
// ---------------------------------------------------
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { { $debugMsg .= monDebug (1, [ '$_SESSION[conditionsRemplies]' => $_SESSION['conditionsRemplies'], 'theAvantage' => $theAvantage ] ,'modeLiveCalcul.php'); }
|
|
}
|
|
|
|
if ($_SESSION['conditionsRemplies'] != 1) {
|
|
|
|
// ---------------------------------------------------
|
|
// Trouver la zone en fonction du pays
|
|
// Trouver le tarif en fonction du poids/zone
|
|
// ---------------------------------------------------
|
|
|
|
$idZoneTab=array();
|
|
$poidsMinTab=array();
|
|
$poidsMaxTab=array();
|
|
$prixTab=array();
|
|
$tabResult=array();
|
|
$zoneTrouvée='';
|
|
$prixTrouve='';
|
|
$fpCdeHt=0;
|
|
$fpCdeTva=0;
|
|
$fpCdeTTC=0;
|
|
if (empty($idModeLivCde)) {$idModeLivCde=$_SESSION['idModeLivCde'];}
|
|
|
|
// ---------------------------------------------------
|
|
// Recup liste des zones selon mode de livraison
|
|
// ---------------------------------------------------
|
|
$reqSelect="SELECT idZone, paysListe FROM zones WHERE idMl=" .$idModeLivCde. ";";
|
|
if (isset($debug[2]) && $debug[2] == '1' ) { $debugMsg .= monDebug (1, [ '$idZoneTab[$i]' => $idModeLivCde, 'reqSelect' => $reqSelect ], '');}
|
|
|
|
$resConn='';
|
|
$resConn=$idPdo->query($reqSelect);
|
|
if ($resConn) {
|
|
$i=0;
|
|
While ($tabResult=$resConn->fetch(PDO::FETCH_ASSOC)) {
|
|
$idZoneTab[$i]=$tabResult['idZone'];
|
|
$paysListeTab[$i]=$tabResult['paysListe'];
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { $debugMsg .= monDebug (1, [ '$idZoneTab[$i]' => $idZoneTab[$i], 'paysListeTab[$i]' => $paysListeTab[$i] ], '');}
|
|
$i++;
|
|
}
|
|
}
|
|
|
|
// ---------------------------------------------------
|
|
// Trouver la grille selon ville (qui peut être dans paysListeTab)
|
|
// ---------------------------------------------------
|
|
$test=false;
|
|
$villeLiv=strtolower($_SESSION['villeLiv']);
|
|
for($i=0; $i<count($idZoneTab); $i++) {
|
|
if (isset($paysListeTab[$i]) && isset($villeLiv)) $test= strpos (strtolower($paysListeTab[$i]), strtolower($villeLiv) ,0);
|
|
// $test= strpos ('France', 'France' );
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { $debugMsg .= monDebug (1, [ '$villeLiv' => $villeLiv, 'test' => $test ], '');}
|
|
// zone trouvée
|
|
if ($test!==false) {
|
|
$zoneTrouvée=$idZoneTab[$i];
|
|
$continuer=1;
|
|
if (isset($debug[2]) && $debug[2] == '1' ) { $debugMsg .= monDebug (1, [ '$zoneTrouvée' => $zoneTrouvée], '');}
|
|
$i=count($idZoneTab);
|
|
}
|
|
else {
|
|
if (isset($debug[2]) && $debug[2] == '1' ) { $debugMsg .= monDebug (1, [ '$zoneTrouvée' => $paysListeTab[$i] ,'$test' => $test ], '');}
|
|
}
|
|
}
|
|
|
|
// ---------------------------------------------------
|
|
// Trouver la grille selon pays
|
|
// ---------------------------------------------------
|
|
if (empty($zoneTrouvée)) {
|
|
$paysLibelleLiv=strtolower($_SESSION['paysLibelleLiv']);
|
|
$test=false;
|
|
for($i=0; $i<count($idZoneTab); $i++) {
|
|
$test= strpos (strtolower($paysListeTab[$i]), ($paysLibelleLiv) ,0);
|
|
// $test= strpos ('France', 'France' );
|
|
if (isset($debug[2]) && $debug[2] == '1' ) { $debugMsg .= monDebug (1, [ '$idZoneTab[$i]' => $idZoneTab[$i], 'paysListeTab[$i]' => $paysListeTab[$i] ], '');}
|
|
// zone trouvée
|
|
if ($test!==false) {
|
|
$zoneTrouvée=$idZoneTab[$i];
|
|
$continuer=1;
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { $debugMsg .= monDebug (1, ['Pays trouvé' => $zoneTrouvée ],''); }
|
|
$i=count($idZoneTab)-1;
|
|
}
|
|
else {
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { $debugMsg .= monDebug (1, [ 'paysLibelleLiv' => $paysListeTab[$i], 'test' => $test ], '');}
|
|
}
|
|
}
|
|
}
|
|
|
|
// ---------------------------------------------------
|
|
// Si pas de zone trouvée => faire changer de modeLiv
|
|
// Sauf si mondial relay
|
|
|
|
if (empty($idZoneTab) || empty($zoneTrouvée) ) {
|
|
$continuer=0;
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { $debugMsg .= monDebug (1, ['continuer' => $continuer ],''); }
|
|
}
|
|
else {
|
|
// ---------------------------------------------------
|
|
// Recup grille tarifaire
|
|
// ---------------------------------------------------
|
|
$reqSelect="SELECT * FROM tranchesprix WHERE idZone=" .$zoneTrouvée. " and idMl=" .$idModeLivCde. ";";
|
|
if (isset($debug[2]) && $debug[2] == '1' ) { $debugMsg .= monDebug (1, ['reqSelect' => $reqSelect ],''); }
|
|
$resConn=$idPdo->query($reqSelect);
|
|
if ($resConn) {
|
|
$i=0;
|
|
While ($result=$resConn->fetch(PDO::FETCH_ASSOC)) {
|
|
$poidsMinTab[$i]=$result['poidsMin'];
|
|
$poidsMaxTab[$i]=$result['poidsMax'];
|
|
$prixTab[$i]=$result['prix'];
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { $debugMsg .= monDebug (1, [ 'poidsMinTab' => $poidsMinTab[$i], 'poidsMaxTab' => $poidsMaxTab[$i], 'prixTab' => $prixTab[$i] ], '' ); }
|
|
$i++;
|
|
}
|
|
}
|
|
|
|
// ---------------------------------------------------
|
|
// Trouver le tarif selon le poids
|
|
// ---------------------------------------------------
|
|
if (empty($poidsCde) && isset($_SESSION['poidsCde'])) $poidsCde=$_SESSION['poidsCde'];
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { $debugMsg .= monDebug (1, [ 'poidsCde' => $poidsCde ],''); }
|
|
for($i=0;$i<count($prixTab);$i++) {
|
|
// zone trouvée
|
|
if ($poidsCde >= $poidsMinTab[$i] && $poidsCde < $poidsMaxTab[$i]) {
|
|
$prixTrouve=$prixTab[$i];
|
|
$i=count($prixTab)-1;
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { $debugMsg .= monDebug (1, [ 'prixTab' => $prixTab ],''); }
|
|
}
|
|
else {
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { $debugMsg .= monDebug (1, [ 'poidsCde' => $poidsCde, 'poidsMax' => $poidsMinTab[$i] , ' poidsMax' => $poidsMaxTab[$i] ],''); }
|
|
}
|
|
}
|
|
|
|
// ---------------------------------------------------
|
|
// Formule frais de livraison
|
|
// ---------------------------------------------------
|
|
$prixTrouve=(float)$prixTrouve;
|
|
$fpCdeHt=number_format($prixTrouve , 2 , "." , "" );
|
|
if (isset($debug[1]) && $debug[1] == '1' ) {$debugMsg .= monDebug (1, [ 'fpCde Ht' => $fpCdeHt],''); }
|
|
if (empty($tabIdMl)) $tabIdMl=$_SESSION['tabIdMl'];
|
|
if (empty($tabIdTvaML)) $tabIdTvaML=$_SESSION['tabIdTvaML'];
|
|
$idTvaML=0;
|
|
|
|
// Recherche du id du taux de tva associé a ce modeliv et le mettre dans idTvaML
|
|
for($i=0;$i<count($tabIdMl);$i++) {
|
|
// idModeLivCde trouvé
|
|
if ($tabIdMl[$i] == $idModeLivCde) {
|
|
$idTvaML=$tabIdTvaML[$i];
|
|
if (isset($debug[1]) && $debug[1] == '1' ) {{ $debugMsg .= monDebug (1, [ 'idTvaML' => $idTvaML], '');}
|
|
$usrSiteMsg .='<br><span class="msgOk">idTvaML = ' .$idTvaML. '</span>';
|
|
}
|
|
$i=count($tabIdMl)-1;
|
|
}
|
|
}
|
|
|
|
// Recherche du taux de tva associé a ce modeliv et la mettre dans tauxTvaLiv
|
|
include ("modeLiv.reqSelectTva.php");
|
|
if ($tauxTvaLiv!=0) {
|
|
if ($fpCdeHt!=0) {
|
|
$fpCdeTva=$fpCdeHt*($tauxTvaLiv/100);
|
|
$fpCdeTTC=$fpCdeHt+$fpCdeTva;
|
|
}
|
|
}
|
|
|
|
// tva a zero
|
|
else {
|
|
$fpCdeTva=0;
|
|
$fpCdeTTC=$fpCdeHt;
|
|
}
|
|
|
|
// ---------------------------------------------------
|
|
// Appliquer tva + impacter totalCde
|
|
// ---------------------------------------------------
|
|
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { $debugMsg .= monDebug (1, [
|
|
'idModeLivCde = ' .$idModeLivCde. '',
|
|
' fpCde Ht =' .$fpCdeHt. '',
|
|
'fpCde Tva =' .$fpCdeTva. '',
|
|
'fpCde TTC=' .$fpCdeTTC. '</spmonDebug (1, [ an>',
|
|
'$_SESSION[totalTtcCde]=' .$_SESSION['totalTtcCde']
|
|
],''); }
|
|
|
|
if (empty($totalTtcCde) && isset($_SESSION['totalTtcCde'])) {$totalTtcCde= (float)$_SESSION['totalTtcCde'];}
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { $debugMsg .= monDebug (1, [ 'totalTtcCde dans modeLiv.calcul avant frais de port' =>$totalTtcCde], '');}
|
|
|
|
// t% tva sur frais de port ? flag edt
|
|
(float)$totalCde=(float)$totalTtcCde + (float)$fpCdeTTC;
|
|
$totalCde=formatNB($totalCde , $lg );
|
|
$_SESSION['totalCde']= $totalCde;
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { $debugMsg .= monDebug (1, [ 'totalCde final frais de ports' => $totalCde], '');}
|
|
}//empty zone
|
|
}//frais liv offerts
|
|
|
|
|
|
// si retrait en magasin pas de frais mais c'est normal, donc on continue
|
|
// si mondialRelay : pas de zone dans le backOffice, donc on continue
|
|
if ($idModeLivCde==6 || $idModeLivCde==8) {$continuer=1;}
|
|
if (isset($debug[1]) && $debug[1] == '1' ) { $debugMsg .= monDebug (1, [ 'continuer' => $continuer], '');}
|
|
?>
|