Correctif franco de port

14 messages dans ce sujet

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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+

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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 !!!

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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();

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping