Correctif franco de port

14 posts in this topic

Posted · Report post

En effet il y a un soucis dans achat/caddie_affichage.php.

Le franco de port est appliqué dès que le cout total du caddie dépasse le seuil de franco de port, mais on ne tient pas compte de la variable franco de port par destination renseignée dans la partie administration du site.

On trouve:

			if ($_SESSION['caddie']->total_produit > $seuil) {$expedition = 0; $expedition_ht = 0;} #- Frais de port gratuit si le total TTC des produits est > au seuil.


			$_SESSION['caddie']->expedition($expedition, $expedition_ht); #- On place le cout du transport dans le caddie
Donc aucune notion de zode et de "on_franco" qui est la colonne correspondante au franco de port. je propose donc de remplacer:
			$queryZone = mysql_query("SELECT id FROM peel_zones WHERE nom_".$_SESSION['langue']." = '".htmlspecialchars($_SESSION['caddie']->zone, ENT_QUOTES)."'")

			or DIE('Une erreur de connexion &agrave; la base s est produite ' . __LINE__ . '.<p>' . MYSQL_ERROR());
Par:
			$queryZone = mysql_query("SELECT id, on_franco FROM peel_zones WHERE nom_".$_SESSION['langue']." = '".htmlspecialchars($_SESSION['caddie']->zone, ENT_QUOTES)."'")

			or DIE('Une erreur de connexion &agrave; la base s est produite ' . __LINE__ . '.<p>' . MYSQL_ERROR());
ET de remplacer:
if ($_SESSION['caddie']->total_produit > $seuil) {$expedition = 0; $expedition_ht = 0;} #- Frais de port gratuit si le total TTC des produits est > au seuil.
Par:
if ($_SESSION['caddie']->total_produit > $seuil && $Zone->on_franco ==1) {$expedition = 0; $expedition_ht = 0;} #- Frais de port gratuit si le total TTC des produits est > au seuil.

Dites nous si c'est OK.

Willy

Share this post


: post
Share on other sites

Posted · Report post

Salut Willy,

je l'ai testé sur une Premium 3.6.

Beau boulot et correctif approuvé.

Je le déplace dans les messages épinglés

Share this post


: post
Share on other sites

Posted · Report post

Merci,

j'avais aussi ajouté à la liste des correctifs de la version 3 a 3.5 comme ts mes correctifs.

Si c'est testé et approuvé c'est bon :)

Willy

Share this post


: post
Share on other sites

Posted · Report post

Merci,

j'avais aussi ajouté à la liste des correctifs de la version 3 a 3.5 comme ts mes correctifs.

Si c'est testé et approuvé c'est bon :)

Willy

Bonjour Willy,

Est-ce que cela permet que par exemple, seul la france dispose des frais de port gratuit à partir de 100 € de commande par exemple ?

Merci de votre réponse.

Cordialement,

Balam

Share this post


: post
Share on other sites

Posted · Report post

Oui tout à fait ca prend en compte le pays et le seuil alors qu'avant seul le seuil était pris en compte.

Willy

Share this post


: post
Share on other sites

Posted · Report post

Willy, et si il n'y a que des produits téléchargeables, c'est ridicule de garder un frais de port non?

Toutefois, à certains moments, on aura bien un panier mixte.. alors que faire?

Share this post


: post
Share on other sites

Posted · Report post

Pour moi, il faut parcourir le caddie, regarder si la totalité des produits est téléchargeable et si oui, pas de frais de ports, on passe directement à la commande. Pour ca il faut renseigner par defaut les variables de pays et de type de port à l'appel de la page.

Sinon utiliser le poids du produit et le mettre à 0 , mais ca demandera quand même pour le pays et le type d'expédition.

Willy

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Je confirme que cette modif fonctionne bien (je l ai eu à faire sur la version 3.9).

Pour ce qui cherche, c'est à faire dans la page caddie_affichage.php dans le dossier "achat".

a+

Share this post


: post
Share on other sites

Posted · Report post

Moi j'ai essayé, ça ne fonctionne pas. Faut il mettre un poid minimum dans le tarif des frais de port pour que cela fonctionne?

Share this post


: post
Share on other sites

Posted · Report post

Moi j'ai essayé, ça ne fonctionne pas. Faut il mettre un poid minimum dans le tarif des frais de port pour que cela fonctionne?

Allez dans le back office, Dans configuration boutique puis Transport et enfin Gérer les zones

Dans les zones créés, cliquez sur celle que vous voulez en franco de port et cocher en face de 'Le Franco de port s'applique t'il dans cette zone ?'

Voilà c'est tout !!!

Share this post


: post
Share on other sites

Posted · Report post

Existe t-il le meme correctif pour la version 4.9 ?

Share this post


: post
Share on other sites

Posted · Report post

Existe t-il le meme correctif pour la version 4.9 ?

Bonjour a toutes et tous et d'abord bonne année 2009!

j'ai besoin de modifier la fonction calcul_frais_expedition sur la version version 5.2 pour mettre le montant total comme critère de tarifs pour les frais de transport au lieu du poids.

si qqu'un peut m'indiquer les lignes de codes à modifier dans lib/class/caddie.php

Merci

Share this post


: post
Share on other sites

Posted · Report post

En faite votre demande ne suffit pas, il faut en plus

1. Créer la table peel_tranches dans phpMyAdmin

CREATE TABLE IF NOT EXISTS `peel_tranches` (

  `id` int(11) NOT NULL,

  `borne_min` float(15,5) NOT NULL,

  `borne_max` float(15,5) NOT NULL,

  `tarif_ht` float(15,5) NOT NULL,

  `tva` float(5,2) NOT NULL,

  PRIMARY KEY  (`id`)

) TYPE=MyISAM;
2. Créer le fichier tranches.php avec le code suivant :
<?

include("../configuration.inc.php");

necessite_identification();

necessite_priv("admin");


$DOC_TITLE = "Gestion des tarifs d'exp&eacute;dition par zone, type, poids";


include("modeles/haut.php");


$start = vn($_REQUEST['start']);// D&eacute;termine la variable start (d&eacute;but de page)


switch (vb($_REQUEST['mode'])) {


	case "ajout" :

		affiche_formulaire_ajout_tarif();

		break;



	case "modif" :

		affiche_formulaire_modif_tarif($_GET['id']);

		break;


	case "suppr" :

		supprime_tarif($_GET['id']);

		affiche_liste_tarif($start);

		break;


	case "insere" :

		insere_tarif($_POST['id'], $_POST);

		affiche_liste_tarif($start);

		break;


	case "maj" :

		maj_tarif($_POST['id'], $_POST);

		affiche_liste_tarif($start);

		break;


	default :

		affiche_liste_tarif($start);

		break;

}


include("modeles/bas.php");


/******************************************************************************

 * FONCTIONS

 *****************************************************************************/


function affiche_formulaire_ajout_tarif() {

/* Affiche un formulaire vierge pour ajouter un tarif */


	global $frm;


	/* Valeurs par d&eacute;faut */

	$frm['nouveau_mode'] = "insere";

	$frm['id'] = "";

	$frm['borne_min'] = "";

	$frm['borne_max'] = "";

	$frm['tarif_ht'] = "";

	$frm['tva'] = 0;

	$frm['titre_bouton'] = "Ajouter un tarif";


	affiche_formulaire_tarif();

}


function affiche_formulaire_modif_tarif($id) {

  /* Affiche le formulaire de modification pour le tarif s&eacute;lectionn&eacute; */


	global $frm;


	/* Charge les informations du produit */

	$qid = mysql_query("SELECT * FROM peel_tranches WHERE id = $id");


	$frm = mysql_fetch_array($qid);

	$frm['id'] = $id;



	$frm["nouveau_mode"] = "maj";

	$frm["titre_bouton"] = "Sauvegarder changements";


	affiche_formulaire_tarif();

}


function affiche_formulaire_tarif() {

	GLOBAL $frm,$wwwroot;

	?>

		<form name="entryform" method="post" action="<?=$_SERVER['PHP_SELF']?>?start=0">

		<input type="hidden" name="mode" value="<?=$frm["nouveau_mode"]?>">

		<input type="hidden" name="id" value="<?=$frm['id']?>">

			<table class="tablespace" border=0 width="760">

				<tr>

					<td class="entete" colspan="2">Ajouter ou modifier un tarif</td>

				</tr>

				<tr>

					<td class="normal">Borne min (en &euro; H.T.) :</td>

					<td><input class="formulaire1" tarif="text" name="borne_min" style="width:250px" value="<?=$frm["borne_min"] ?>"></td>

				</tr>

				<tr>

					<td class="normal">Borne max (en &euro; H.T.) :</td>

					<td><input class="formulaire1" tarif="text" name="borne_max" style="width:250px" value="<?=$frm["borne_max"] ?>"></td>

				</tr>

				<tr>

					<td class="normal">Tarif (en &euro; H.T.):</td>

					<td>

					<input class="formulaire1" tarif="text" name="tarif_ht" style="width:250px" value="<?=$frm["tarif_ht"] ?>">


					</td>

				</tr>


				<tr>

					<td class="normal">Taux de TVA :</td>

					<td>

					<select class="formulaire1" name="tva">


						<?php


						$sql = "SELECT tva FROM peel_tva ORDER BY tva DESC";


						$result = mysql_query($sql);


						if (mysql_num_rows($result)) {


							if (mysql_num_rows($result) > 0) {


								while ($arr = mysql_fetch_array($result)) {


									if ($arr['tva'] == vb($frm['tva'])) {$selectionne = "selected";} else {$selectionne = "";}


									echo "<option value=\"".$arr['tva']."\" $selectionne>".$arr['tva']."</option>";


								}

							}

						}

						?>

					</select>

					</td>

				</tr>


				<tr>

					<td colspan="2" align="center"><input class="bouton" type="submit" value="<?=$frm["titre_bouton"] ?>"></td>

				</tr>

				</table>

		</form>

	<?

}


function supprime_tarif($id) {

/* Supprime le tarif sp&eacute;cifici&eacute; par $id. Il faut supprimer le tarif

 * puis les entr&eacute;es correspondantes de la table tarif_categories. */


 	/* Efface le tarif */

	$qid = mysql_query("DELETE FROM peel_tranches WHERE id = $id");


	?>

		<p class=normal>

		Le tarif a &eacute;t&eacute; effac&eacute;.


	<?

}


function insere_tarif($id, $frm) {

	/*ajoute le tarif dans la table tarif */

	$qid = mysql_query("

	INSERT INTO peel_tranches (

	borne_min

	, borne_max

	, tarif_ht

	, tva

	)

	VALUES (

	'".str_replace(",",".",$frm['borne_min'])."'

	,'".str_replace(",",".",$frm['borne_max'])."'

	,'".str_replace(",",".",$frm['tarif_ht'])."'

	,'".$frm['tva']."'

	)

	") or DIE('Une erreur de connexion &agrave; la base s est produite ' . __LINE__ . '.<p>' . MYSQL_ERROR());


}


function maj_tarif($id, $frm) {

/* Met &agrave; jour le tarif $id avec de nouvelles valeurs. Les champs sont dans $frm */


	/* Met &agrave; jour la table tarif */

	$qid = mysql_query("

	UPDATE peel_tranches SET

		borne_min = '".str_replace(",",".",$frm['borne_min'])."'

	,borne_max = '".str_replace(",",".",$frm['borne_max'])."'

	,tarif_ht = '".str_replace(",",".",$frm['tarif_ht'])."'

	,tva = '".$frm['tva']."'

	WHERE id = '$id'

	") or DIE('Une erreur de connexion &agrave; la base s est produite ' . __LINE__ . '.<p>' . MYSQL_ERROR());


}


function affiche_liste_tarif($start) 

{

global $wwwroot;

?>

<table border="0" class="tablespace" width="760">


<tr>

	<td class="entete" colspan="5">G&eacute;stion des tarifs d'exp&eacute;dition par pallier</td>

</tr>


<tr>

	<td colspan="5">

	<a class="normal" href="<?=$_SERVER['PHP_SELF']?>?mode=ajout">

	Ajouter un tarif</a><br />

	Merci de veillez à ce que la borne max. de vos tranches soient égale au franco de port défini dans <a href="sites.php?mode=modif&id=<?php echo $_SESSION['ecom']['id']?>">Paramètres de la boutique</a></td>

</tr>

			<? 

			$result=mysql_query("SELECT * FROM peel_tranches"); 


			if (mysql_num_rows($result) == 0) {echo "<tr><td class=normal><b>Aucun tarif enregistr&eacute; dans la base.</b></td></tr>"; } 

			else {

			?>

			<tr bgcolor="#6699ff">

				<td class="menu">Action</td>

				<td class="menu">De (en &euro; H.T.)</td>

				<td class="menu">A (en &euro; H.T.)</td>

				<td class="menu">Tarif (en &euro; H.T.)</td>

				<td class="menu">Tva</td>

			</tr>

			<? 

			$i = 0;


			while ($ligne = mysql_fetch_array($result)) { 


			?>

					<tr bgcolor="<?echo ($i % 2 == 0 ? '#eeeeee' : '#ffffff' );?>">

						<td class=petit><a class=petit onClick="java script:return confirm('&ecirc;tes-vous s&ucirc;r de vouloir supprimer la tarif ?');" title="Supprimer <?=$ligne['poidsmax']."gr - ".$ligne['tarif']." &euro; TTC";?>" href="<?=$_SERVER['PHP_SELF']?>?mode=suppr&id=<?=$ligne['id'] ?>"><img src="<?=$wwwroot?>/administrer/images/b_drop.png" width="16" height="16" alt="" border="0"></a>

						<a class=petit title="Modifier ce tarif" href="<?=$_SERVER['PHP_SELF']?>?mode=modif&id=<?=$ligne['id'] ?>"><img src="<?=$wwwroot?>/administrer/images/b_edit.png" width="16" height="16" alt="" border="0"></a>

						</td>

						<td class=petit align="center"><?php echo fprix($ligne['borne_min'])?> &euro;</td>

						<td class=petit align="center"><?php echo fprix($ligne['borne_max'])?> &euro;</td>

						<td class=petit align="center"><?php echo fprix($ligne['tarif_ht']);?></td>

						<td class=petit align="center"><?php echo fprix($ligne['tva'])?> %</td>

					</tr>

<?

			$i++;


			}


		}

				echo "</table>";

	}

?>
3. Dans lib/class/caddie.php Remplacer la méthode calcul_frais_expedition par
function calcul_frais_expedition() {


global $seuil_total;

global $seuil_total_reve;


$sql = "SELECT tarif_ht, tva FROM peel_tranches WHERE borne_min <= ".$this->total_produit_ht." AND borne_max > '".$this->total_produit_ht."'";


$query = mysql_query($sql) or die('Une erreur de connexion &agrave; la base s est produite ' . __LINE__ . '.<p>' . mysql_error());


if (mysql_num_rows($query) > 0) {


$t = mysql_fetch_object($query);


$this->cout_transport_ht = $t->tarif_ht;


$this->cout_transport = $t->tarif_ht * (1+$t->tva/100);


$this->tva_cout_transport = $this->cout_transport - $this->cout_transport_ht;


$seuil = (isset($_SESSION['utilisateur']['priv']) && $_SESSION['utilisateur']['priv'] == "reve")  ? $seuil_total_reve : $seuil_total;


if ($this->total_produit > $seuil && $this->zoneFranco == 1) {$this->cout_transport = $this->cout_transport_ht = $this->tva_cout_transport = 0;} #- Frais de port gratuit si le total TTC des produits est > au seuil.


} else {


$this->cout_transport = $this->cout_transport_ht = $this->tva_cout_transport = 0;


}

4. Pensez ensuite à appeler cette méthode dans recalc_total avec $this->calcul_frais_expedition();

Share this post


: post
Share on other sites

Posted · Report post

Merci beaucoup Patrice de cette réponse complète et rapide.

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

Twitter Advisto ecommerce

Facebook PEEL Shopping