alpha_full/pages/panier/_modeLivraison/modeLiv.calcul.php
2026-04-06 22:58:51 +02:00

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], '');}
?>