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]Module de paiement spécifique selon client
mickael34
posté 18 Apr 2013, 10:53
Message #1


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 181
Inscrit : 3-January 08
Membre no 20263



Bonjour,

J'aurais besoin d'un peu d'aide pour m'aider à mettre en code ce dont j'ai besoin.

Je cherche à faire apparaitre sur la page checkout_payment, un module de paiement qui s'afficherais seulement pour certains clients.

Mon idée :
Je me créé un module de paiement qui par défaut serait désactive.

J'aurais alors un truc du genre dans mon module :
Si customers_id = 111 ou 222 ou 333
alors le module s'active.

Seulement je n'arrive pas coder la fonction pour aller "chercher" mes id clients.

Si quelqu'un à des idées, je suis preneur;

Merci

smile.gif

Ce message a été modifié par mickael34 - 21 May 2013, 21:55.


--------------------
Sur OsCommerce 2.2
Go to the top of the page
 
Bonbec
posté 19 Apr 2013, 07:57
Message #2


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1543
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonjour,
Perso, j'aurais une autre approche :
Vu que les modules de paiements présents dans le répertoire sont "scannés" pour être affichés si ils sont activés, je pense qu'il vaudrait mieux ajouter un champ à ta fiche client et que c'est dans ton module de paiement que tu vérifies si ce fameux champs contient la valeur que tu veux pour le faire afficher.
Avantages :
- ne touche pas au codage des checkout_*
- personnalisable pour chaque client directement dans sa fiche : selon la valeur du marqueur, un module de paiement spécifique s'affichera. Par exemple si marqueur=P alors Paypal, si marqueur=V alors Virement, etc ...
Inconvénient :
- le marqueur de la fiche client sera placé manuellement, ce qui sous-entend qu'il faudrait le placer à la création du compte AVANT la commande du dit client. Mais bon, l'inconvénient est relatif à ton activité ...


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc Phoenix
Go to the top of the page
 
mickael34
posté 19 Apr 2013, 08:28
Message #3


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 181
Inscrit : 3-January 08
Membre no 20263



Merci pour tes idées, je vais m'y pencher smile.gif


--------------------
Sur OsCommerce 2.2
Go to the top of the page
 
mickael34
posté 16 May 2013, 09:28
Message #4


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 181
Inscrit : 3-January 08
Membre no 20263



Bonjour,

Je reviens sur mon problème.

Quelqu'un pourrait-il m'aider ?

Je me suis servir du module "paiement à la livraison" : cod.php

Dans le module, j'ai modifié une partie du code par ça :

Code
function update_status() {
      global $order;

      if ( ($this->enabled == true) ) {
        $check_flag = false;
        $check_query = tep_db_query("select customers_id from " . TABLE_CUSTOMERS . "");
        while ($check = tep_db_fetch_array($check_query)) {
          if ($check['customers_id'] == 26021 || $check['customers_id'] == 28808 || $check['customers_id'] == 28809 || $check['customers_id'] == 32800) {
            $check_flag = true;
            break;
          }
        }

        if ($check_flag == false) {
          $this->enabled = false;
        }
      }


    }



En résumé : si client aaa ou bbb ou ccc ou ddd alors mon module s'affiche sinon non.


Sauf que mon module s'affiche tout le temps, ma condition de client n'est pas prise en compte !!!

Je ne comprend pas, j'ai fait une erreur dans mon code ?


D'avance merci pour votre aide smile.gif


--------------------
Sur OsCommerce 2.2
Go to the top of the page
 
FoxP2
posté 16 May 2013, 12:55
Message #5


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1665
Inscrit : 3-June 09
Membre no 25501



plutôt comme ça :
Code
if(in_array($_SESSION['customer_id'],$check))

, non?
Go to the top of the page
 
mickael34
posté 16 May 2013, 13:18
Message #6


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 181
Inscrit : 3-January 08
Membre no 20263



Merci de ton aide mais non toujours pas !!

Le module s'affiche quelque soit le client !!!

C'est incompréhensible.
Je bloque dessus depuis plusieurs heures.


--------------------
Sur OsCommerce 2.2
Go to the top of the page
 
mickael34
posté 21 May 2013, 22:01
Message #7


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 181
Inscrit : 3-January 08
Membre no 20263



J'ai fini par y arriver.

Voici mon code (je sais si pas si il est très propre) qui fait apparaitre un module de paiement selon un critère :

Code
function update_status() {
    global $order;
    
    if ($this->enabled == true) {
      $check_flag = false;
      $check_query = tep_db_query("select customers_telephone from " . TABLE_CUSTOMERS . " where customers_telephone = 00000000 order by customers_telephone");
      while ($check = tep_db_fetch_array($check_query)) {
        if ($check['customers_telephone'] == $order->customer['telephone']) {
          $check_flag = true;
          break;
        }
      }
      
      if ($check_flag == false) {
        $this->enabled = false;
      }
    }
  }


Le tri se fait par le telephone mais aurait pu se faire par un autre champs.
Tous les clients ayant le numéro de telephone : 00000000 verront le module de paiement s'afficher.
Les autres clients non.


--------------------
Sur OsCommerce 2.2
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 - 23:45
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)