osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> [RESOLU]Règle de calcul des frais de port pour panier
kakalimero
posté 20 Sep 2011, 20:15
Message #1


Ceinture blanche OSC
Icône de groupe

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&eacute;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). '&nbsp;&euro;<br />';
                                echo 'Total TTC : ' . $currencies->format($cart->show_total() + $val);
                                
    ?>
    <p />
    <p align="right"><noscript><input type="submit" name="sub" value="Mettre &aacute; jour" /></noscript>

    <?php
     echo '<a href="' . tep_href_link(FILENAME_DEFAULT, '', 'SSL') . '"><img src="images/icons/btn_continuershop.png" /></a>&nbsp;&nbsp;&nbsp;';
     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.
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 28th March 2024 - 18:22
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)