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

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Free Shipping By Categories, Le modifier pour offrir le port à partir d'un montant
xavkick
posté 24 Apr 2008, 10:21
Message #1


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 461
Inscrit : 16-June 05
Lieu : 22980
Membre no 6229



Je suis sur la contribution Free Shipping by Categories

Le principe est de pouvoir offrir les frais de port mais uniquement sur des catégories précises. Je voudrait pouvoir ajouter la possbilité de définir un montant minimum d'achat pour que ce module soit actif.


--------------------

MS2 machin truc (thema 3) 6.1.2 Patchée + QTPRO 4.2 + Discount Plus + Fancier Invoice + Master Pasword + Dangling Carrot + Kelkoo + SEO urls + SEO assisstant + diverses contrib
Go to the top of the page
 
delete
posté 24 Apr 2008, 13:31
Message #2


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Dans ta contrib et à cet endroit :
// class methods
function quote($method = '') {
global $cart, $shipping_weight;

Rajoute

if ( $cart->show_total() < MINIMUN_AMOUNT_FOR_FREE_SHIPPING )
{
$this->enabled = false;
return ;
}

Et dans ton configure.php tu définis la valeur, ici 99 euro, par exemple :

define(MINIMUN_AMOUNT_FOR_FREE_SHIPPING, '99') ;
Go to the top of the page
 
xavkick
posté 24 Apr 2008, 15:16
Message #3


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 461
Inscrit : 16-June 05
Lieu : 22980
Membre no 6229



CITATION(delete @ 24 Apr 2008, 14:31) [snapback]279120[/snapback]
Dans ta contrib et à cet endroit :
// class methods
function quote($method = '') {
global $cart, $shipping_weight;

Rajoute

if ( $cart->show_total() < MINIMUN_AMOUNT_FOR_FREE_SHIPPING )
{
$this->enabled = false;
return ;
}

Et dans ton configure.php tu définis la valeur, ici 99 euro, par exemple :

define(MINIMUN_AMOUNT_FOR_FREE_SHIPPING, '99') ;



Merci ton aide cela marche nickel.... tu me sauves les derniers cheveux qu'il me reste.....
Maintenant, reste plus qu'a comprendre pourquoi la contribe ne retire pas le poids des produits offerts si le client achètes des produits mixtes ( port offerts et payant )


--------------------

MS2 machin truc (thema 3) 6.1.2 Patchée + QTPRO 4.2 + Discount Plus + Fancier Invoice + Master Pasword + Dangling Carrot + Kelkoo + SEO urls + SEO assisstant + diverses contrib
Go to the top of the page
 
delete
posté 24 Apr 2008, 15:20
Message #4


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



là c'est différent il faut traiter au cas par cas les produits et non pas sur la globalité du caddie et du module d'expé.
Go to the top of the page
 
xavkick
posté 24 Apr 2008, 15:44
Message #5


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 461
Inscrit : 16-June 05
Lieu : 22980
Membre no 6229



pourtant dans la contribution il semble que cela semble prévu... mais dnas la pratique ça ne fonctionne pas

CODE
// If everything in the cart gets free shipping
                if($free_count==$x){
                    $is_free = true;
                } else { // don't offer free shipping but subtract the weight of the item that gets free shipping
                    $is_free = false;
                    $cart->weight = $cart->weight-$free_weight;
                    $shipping_weight = $cart->weight;
                }
            } else {        
                if (MODULE_SHIPPING_FREECATS_ALL_OR_ONE == 'One'){
                  $products = $cart->get_products();
                        for($i=0, $x=sizeof($products); $i<$x; $i++){
                                        $check_query = tep_db_query('select * from '.TABLE_PRODUCTS_TO_CATEGORIES.' where categories_id in ('.implode(',',$cats_array).') and products_id="'.(int)$products[$i]['id'].'"');
                                        if (tep_db_num_rows($check_query))
                                          $is_free = true;
                        }
                 } elseif (MODULE_SHIPPING_FREECATS_ALL_OR_ONE == 'All'){
                    $count = 0;
                    for($i=0, $x=sizeof($cats_array); $i<$x; $i++){
                                        $check_query = tep_db_query('select * from '.TABLE_PRODUCTS_TO_CATEGORIES.' where categories_id="'.$cats_array[$i].'" and products_id in ('.$pID_list.')');
                                        if (tep_db_num_rows($check_query))
                                                $count++;
                    }
                    if ($count == sizeof($cats_array))
                                          $is_free = true;
                 } else {
                       $this->enabled = false;
                       return false;
                 }

                 if ( MODULE_SHIPPING_FREECATS_ONLY_OR_ANY == 'Only' ){
                    $check_query = tep_db_query('select * from '.TABLE_PRODUCTS_TO_CATEGORIES.' where categories_id not in ('.MODULE_SHIPPING_FREECATS_CATEGORIES.') and products_id in ('.$pID_list.')');
                    if (tep_db_num_rows($check_query))
                              $is_free = false;
                 }
            }
            
          if (!$is_free) {
                if (MODULE_SHIPPING_FREECATS_DISPLAY == 'True'){
                     if (MODULE_SHIPPING_FREECATS_ALL_OR_ONE == 'One') {
                        if ( MODULE_SHIPPING_FREECATS_ONLY_OR_ANY == 'Only' )
                                $this->quotes['error'] = '<b>'.MODULE_SHIPPING_FREECATS_TEXT_TITLE.'</b><br />'.sprintf(MODULE_SHIPPING_FREECATS_TEXT_ERROR_ONE_ONLY, $cat_names);
                            else
                                $this->quotes['error'] = '<b>'.MODULE_SHIPPING_FREECATS_TEXT_TITLE.'</b><br />'.sprintf(MODULE_SHIPPING_FREECATS_TEXT_ERROR_ONE_ANY, $cat_names);
                     } elseif (MODULE_SHIPPING_FREECATS_ALL_OR_ONE == 'All') {
                        if ( MODULE_SHIPPING_FREECATS_ONLY_OR_ANY == 'Only' )
                                $this->quotes['error'] = '<b>'.MODULE_SHIPPING_FREECATS_TEXT_TITLE.'</b><br />'.sprintf(MODULE_SHIPPING_FREECATS_TEXT_ERROR_ALL_ONLY, $cat_names);
                            else
                                $this->quotes['error'] = '<b>'.MODULE_SHIPPING_FREECATS_TEXT_TITLE.'</b><br />'.sprintf(MODULE_SHIPPING_FREECATS_TEXT_ERROR_ONE_ANY, $cat_names);
                     }
               }
        }

          if ($shipping_weight > MODULE_SHIPPING_FREECATS_WEIGHT_MAX && MODULE_SHIPPING_FREECATS_WEIGHT_MAX > 0) {
            if (MODULE_SHIPPING_FREECATS_DISPLAY == 'True'){
                   $this->quotes['error'] = '<b>'.MODULE_SHIPPING_FREECATS_TEXT_TITLE.'</b><br />
                             '.sprintf(MODULE_SHIPPING_FREECATS_TEXT_TO_WEIGHT, $cat_names);
                   
            }
            $get_weight = false;
        } else {
            $get_weight = true;
        }


        if (($is_free && $get_weight)){
    
            $this->quotes = array('id' => $this->code,
                                                'module' => MODULE_SHIPPING_FREECATS_TEXT_TITLE,
                                                'methods' => array(array('id' => $this->code,
                                                'title' => sprintf(MODULE_SHIPPING_FREECATS_TEXT_WAY, $cat_names),
                                                'cost' => MODULE_SHIPPING_FREECATS_COST)));
            $title = '';
        }
      

      if ($this->tax_class > 0) {
        $this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
      }
      
      if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title);

      return $this->quotes;

    }


--------------------

MS2 machin truc (thema 3) 6.1.2 Patchée + QTPRO 4.2 + Discount Plus + Fancier Invoice + Master Pasword + Dangling Carrot + Kelkoo + SEO urls + SEO assisstant + diverses contrib
Go to the top of the page
 
delete
posté 24 Apr 2008, 16:04
Message #6


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Une idée à la volée mais je sais pas si ca marche ... c'est une piste, ne m'en veut pas si ce n'est pas tout a fait exact ... car je ne connais pas la contrib et son analyse me prendrais un peu de temps ! wink.gif

if ( $cart->show_total() < MINIMUN_AMOUNT_FOR_FREE_SHIPPING )
{
$this->enabled = false;
$offered_shipping_weight = $shipping_weight ;
$shipping_weight = offered_shipping_weight * -1 ;
tep_session_register('offered_shipping_weight') ;
return ;
}
else if ( tep_is_session_registered('offered_shipping_weight'))
{
$shipping_weight = offered_shipping_weight * -1 ;
tep_session_unregister('offered_shipping_weight') ;
}
Go to the top of the page
 
xavkick
posté 26 Apr 2008, 15:52
Message #7


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 461
Inscrit : 16-June 05
Lieu : 22980
Membre no 6229



merci de ton aide mais la fonction offered_shipping_weight n'existe pas sur cette contrib.


--------------------

MS2 machin truc (thema 3) 6.1.2 Patchée + QTPRO 4.2 + Discount Plus + Fancier Invoice + Master Pasword + Dangling Carrot + Kelkoo + SEO urls + SEO assisstant + diverses contrib
Go to the top of the page
 
delete
posté 26 Apr 2008, 16:23
Message #8


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Citation (xavkick @ 26 Apr 2008, 16:52) *
merci de ton aide mais la fonction offered_shipping_weight n'existe pas sur cette contrib.


Pardon de me creuser la tête pour toi et relis le présent post s'il te plait. blink.gif

Je m'y reprendrais à deux fois avant de m'aventurer à essayer de t'aider twisted.gif mrgreen.gif
Go to the top of the page
 
xavkick
posté 3 May 2008, 02:07
Message #9


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 461
Inscrit : 16-June 05
Lieu : 22980
Membre no 6229



J'ai modifier un peu le code, mais j'ai toujours le soucis de
Citation
Fatal error: Call to undefined function: tep_is_session_registered() in /*******/includes/modules/shipping/freecats.php on line 73


Code
if ( $cart->show_total() < MINIMUN_AMOUNT_FOR_FREE_SHIPPING )
{
$this->enabled = false;
$is_free = $shipping_weight;
$shipping_weight = is_free * -1;
tep_session_register('is_free');
return;
}
else if ( tep_is_session_registered('is_free'))
{
$shipping_weight = is_free * -1;
tep_session_unregister('is_free');
}


Ce message a été modifié par xavkick - 3 May 2008, 02:09.


--------------------

MS2 machin truc (thema 3) 6.1.2 Patchée + QTPRO 4.2 + Discount Plus + Fancier Invoice + Master Pasword + Dangling Carrot + Kelkoo + SEO urls + SEO assisstant + diverses contrib
Go to the top of the page
 
delete
posté 3 May 2008, 02:18
Message #10


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Oup's pardon c'est "tep_session_is_registered()" ... j'ai écrit on the fly ...
Go to the top of the page
 
xavkick
posté 4 May 2008, 00:03
Message #11


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 461
Inscrit : 16-June 05
Lieu : 22980
Membre no 6229



merci, je viens de faire la modif, effectivement j(ai plus l'erreur.. Par contre ça ne fonctionne toujours pas.
Je regarde encore un couple d'heure et je reviens pour te donner mes avancées

xav


--------------------

MS2 machin truc (thema 3) 6.1.2 Patchée + QTPRO 4.2 + Discount Plus + Fancier Invoice + Master Pasword + Dangling Carrot + Kelkoo + SEO urls + SEO assisstant + diverses contrib
Go to the top of the page
 
delete
posté 4 May 2008, 09:53
Message #12


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Ca ne peut pas marcher.

Car tu utilises une variable qui a comme valeur soit true ou false.

Alors que dans ton cas il faut décrémenter un poids.

Pour déduire un poids on fait comme ca ;

$shipping_weight = $poids_a_deduire * -1 ;

le * -1 servant à mettre le poids à déduire en négatif afin que ta variable soit décrémentée.

Je t'ai mis sur la piste, maintenant je ne connais pas ta contrib a toi de fouiner. wink.gif

Bon code
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 : 24th May 2013 - 03:54
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)