[RESOLU]Règle de calcul des frais de port pour panier |
Bienvenue invité ( Connexion | Inscription )
[RESOLU]Règle de calcul des frais de port pour panier |
20 Sep 2011, 20:15
Message
#1
|
|
Ceinture blanche OSC Groupe : Membres Messages : 8 Inscrit : 12-April 11 Membre no 29680 |
Bonsoir,
J'ai un petit problème que je retourne dans tous les sens depuis, plus d'une semaine, sans trouver de solutions ! Pour un site e-commerce (version oscommerce 2.3 modifiée), j'ai besoin de créer une règle de calcul des frais de port. Ci dessous un copie d’écran pour une explication simplifiée : Sur l'image on voit que j'ai 4 produits dans mon panier vendus par 2 vendeurs differents. Les frais de port par article sont stockés en session dans $_SESSION['ship'] Je cherche à faire une règle qui lorsque dans mon panier j'ai plus d'un article du vendeur X, les frais de port du deuxième article (colissimo seulement) du même vendeur uniquement soit égal à 1€ (au lieu du montant par défaut). En clair: Si la panier contient au moins 2 articles du vendeur X alors le coût de transport du 2eme article = 1€ Sachant que si un des deux articles est en sans frais de port (remise en main propre), le cout devra être de 0€ Voici le code mon shopping_cart.php Code <?php // on passe les valeurs postées en session $array = array_keys($_POST); foreach ($array as $value) { $_SESSION[$value] = $_POST[$value]; } ?> <div id="topmainimg"><img src="images/imgpanier.png" width="750" height="78" /></div> <?php if ($cart->count_contents() > 0) { ?> <div class="contentContainer"> <h1 class="gris"></h1> <div id="CartPage" class="contentText"> <?php $any_out_of_stock = 0; $products = $cart->get_products(); ?> <form method="post" name="shipping"> <table border="0" width="100%" cellspacing="2" cellpadding="2"> <tr> <td width="13%" class="headingCart">Photo</td> <td width="42%" class="headingCart">Désignation</td> <td width="28%" class="headingCart">Mode de livraison</td> <td width="10%" class="headingCart">Prix TTC</td> <td width="7%" align="center" class="headingCart">Supp</td> </tr> <?php for ($i=0, $n=sizeof($products); $i<$n; $i++) { $id = $products[$i]['id']; $remiseMainsPropres = ''; $colissimo = ''; $shippingCost = getShippingCost($id); $shippingMethods = getShippingMethods($id); $methods = explode(";", $shippingMethods); if(!isset($_SESSION['ship'][$id])) { // spu = remise en main prope // flat = colissimo if( (in_array('flat', $methods)) && (in_array('spu', $methods)) ) { $_SESSION['ship'][$id] = $shippingCost; } elseif( (!in_array('flat', $methods)) && (in_array('spu', $methods)) ) { $_SESSION['ship'][$id] = 0; } elseif( (in_array('flat', $methods)) && (!in_array('spu', $methods)) ) { $_SESSION['ship'][$id] = $shippingCost; } else { $_SESSION['ship'][$id] = 0; } } echo '<tr class="rowCart">'; echo '<td align="center"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '">' . tep_image(DIR_WS_IMAGES . $products[$i]['image'], $products[$i]['name'], 60, 60) . '</a></td>'; echo '<td class="main"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '">' . $products[$i]['name'] . '</a><br /><span class="rose">Vendeur:</span> '.getSeller( $products[$i]['id']); if (STOCK_CHECK == 'true') { $stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']); if (tep_not_null($stock_check)) { $any_out_of_stock = 1; echo '<br />' . $stock_check; } } echo '</td>'; echo '<td class="main">'; // si remise en main propre et colissmo sont proposés if( (in_array('spu', $methods)) && (in_array('flat', $methods)) ) { if($_SESSION['ship'][$products[$i]['id']] == 0) { $remiseMainsPropres .= 'checked="checked"'; $colissimo .= ''; } else { $remiseMainsPropres .= ''; $colissimo .= 'checked="checked"'; } echo '<input type="radio" name="ship['.$products[$i]['id'].']" onclick="this.form.submit()" value="0" '.$remiseMainsPropres.' /> Remise en main propre<br />'; echo '<input type="radio" name="ship['.$products[$i]['id'].']" onclick="this.form.submit()" value="'.$shippingCost.'" '.$colissimo.' /> Colissimo ('.$shippingCost.')'; // si remise en main propre seulement } elseif( (in_array('spu', $methods)) && (!in_array('flat', $methods)) ) { echo '<input type="radio" name="ship['.$products[$i]['id'].']" value="0" checked="checked" /> Remise en main propre<br />'; //echo '<input type="radio" value="0" disabled="disabled" /> Colissimo (N/A)'; // si colissimo seulement } elseif( (!in_array('spu', $methods)) && (in_array('flat', $methods)) ) { //echo '<input type="radio" value="0" disabled="disabled" /> Remise en main propre (N/A)<br />'; echo '<input type="radio" name="ship['.$products[$i]['id'].']" value="'.$shippingCost.'" checked="checked" /> Colissimo ('.$shippingCost.')'; } else { echo '<input type="radio" name="ship['.$products[$i]['id'].']" onclick="this.form.submit()" value="0" '.$remiseMainsPropres.' /> Remise en main propre'; echo '<input type="radio" name="ship['.$products[$i]['id'].']" onclick="this.form.submit()" value="'.$shippingCost.'" '.$colissimo.' /> Colissimo ('.$shippingCost.')'; } echo '</td>'; echo '<td class="main" align="center">' . $currencies->display_price($products[$i]['final_price'], tep_get_tax_rate($products[$i]['tax_class_id']), $products[$i]['quantity']) . '</td>'; echo '<td align="center"><a href="' . tep_href_link(FILENAME_SHOPPING_CART, 'products_id=' . $products[$i]['id'] . '&action=remove_product') . '"><img src="images/trash.png" border="0" alt="Supprimer cet article"></a></td>'; echo '</tr>'; } echo '</table>'; ?> </table> <p class="headingCart" align="right"><strong><?php echo SUB_TITLE_SUB_TOTAL; ?> <?php echo $currencies->format($cart->show_total()); ?></strong><br /> <?php echo 'Frais d\'expedition : '; if(isset($_SESSION['ship'])) $val = array_sum(array_values($_SESSION['ship'])); else $val = 0; echo sprintf("%.2f",$val). ' €<br />'; echo 'Total TTC : ' . $currencies->format($cart->show_total() + $val); ?> <p /> <p align="right"><noscript><input type="submit" name="sub" value="Mettre á jour" /></noscript> <?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT, '', 'SSL') . '"><img src="images/icons/btn_continuershop.png" /></a> '; echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL') . '"><img src="images/icons/passer_commande.gif" /></a>'; ?></p> </form> [...] Merci par avance ! Ce message a été modifié par kakalimero - 7 Oct 2011, 21:32. |
|
Version bas débit | Nous sommes le : 28th March 2024 - 18:11 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |