Aide - Recherche - Membres - Calendrier
Version complète : faire payer en ligne un article qui n'existe pas...
Forum osCommerce-fr > Adapter OsCommerce MS2 > Contributions
pitchou
ouais... je vais essayer de me faire comprendre...

voilà je vais proposer sur mon site des articles normaux, comme tout le monde, un article bien précis avec un prix bien précis... jusque là tout va bien...

mais, car oui il y a un mais, je propose aussi des produits de création originale que mes clients peuvent personnaliser à volonté sur simple demande... donc on définie par mail ou par téléphone la commande et après on passe par le site... ce que je faisais sans problème jusque là mais je n'avais pas le paiement en ligne... donc pas de problème...

alors ce que je voudrais savoir c'est s'il y a un moyen pour le client d'acheter en ligne cet objet personnalisé qui donc... ne sera pas sur le catalog et n'aura pas un prix fixe... si je peux en fait créér une sorte d'article batard sans prix, dans les remarques sur le bon de commande le client me fait un rappel de l'objet qu'il veut, et après faire quelques chose du genre j'envoie au client une demande de paiement pour tel article tel prix avec tout le suivit habituel et surtout mon numero de facturation qui suit...

par ce que sinon je peux passer par paypal en dehors du circuit de mon site mais là il n'y a ni suivi ni facture...

est-ce que vous me suivez? blush.gif

est ce que quelqu'un peut m'aider?
nemrod34
Il y a des contribs qui permettent au client d'envoyer une photo ou un texte pour un t-shirt par exemple.
Ensuite pour un peintre pour je fait la boutique des tableaux n'ont pas de prix fixes, donc j'utilise "ask a question" = un clic et de la boutique le client envois un e-mail avec le nom du produit et lien de sa fiche à l'admin de la boutique, et donc peut demmander le prix ou autre chose.
Ensuite j'utilise "hide price if 0$" pour afficher "nous consulter cliquez ici" à l'emplacement du prix quand le prix est de zéro, et j'ai mis le même lien que "ask a question" sur ce texte.
exemple:
http://bbrice.eu/boutique/product_info.php...products_id=123

Ainsi le peintre communique avec le client , une fois entendus sur le prix, le paiement se fait via cic car le module permet des montants définis classiques (prix fixe de la boutique) et des paiements avec un prix entré par le payeur.
Coté facture en éffet je ne sais pas ce qu'il a prévus, peut être faire une facture à part mais pas de suivi par la boutique du coup (ça m'y fait penser du coup).
Si ça peut t'aider déjà un peu, je vais moi aussi réfléchir au problème de la facture car c'est intéressant quand même d'avoir ça dans la boutique.


Donc une petite partie donnée avec ces contribs reste la facture et tout à récuppérrer dans la boutique.
Gnidhal
Ou alors créer un produit réservé à un client unique.
Ainsi ton produit sera au catalogue, mais visible que par le client avec qui tu as un accord.

Les autres ne verront rien
pitchou
merci NEMROD34, si j'ai bien compris, en fait c'est ton module de paiement qui te permet de personnaliser le montant en fait? (entre parenthèse joli site...)

Gnidhal, ça peut être une solution en effet, mais comment fait on? blush.gif
nemrod34
Oui c'est bien le module de paiment qui permet d'entrer un montant non envoyé par boutique.
Et en effet si on peu cacher un produit aux autres clients il ne reste plus q'a entrer le montant définis et lui seul peut faire l'achat ce qui fait des factures et tout.
pitchou
par ce que je pense passer par paypal pour le paiement... et je ne pense pas que paypal propose ce service... dommage ta solution était sympa... à moins que je ne passe par un autre moyen de paiement... de toute façon je dois étudier la question...

par contre je ne sais pas comment créér un article unique pour un client...
nemrod34
Ca peut se faire avec séparate price per customers mais c'est un peu lourd il y a peut-être plus simple.
Parce que en éffet une fois entendus sur le prix, tu donne à ce produit le prix en question, et seul le bon client peut acheter.
Gnidhal
C'est une adaptation perso que j'ai faite.
Je vais essayer de la détailler ici
1/ ajouter un champ dans la table products :
SQL
ALTER TABLE `products` ADD `customers_id` INT( 11 ) NOT NULL DEFAULT '0' AFTER `manufacturers_id` ;

Après il faut modifier le fichier categories.php de l'admin :
rechercher la section qui commence par :
CODE
$sql_data_array = array('products_quantity' => tep_db_prepare_input($HTTP_POST_VARS['products_quantity']),
et modifier la fin en ajoutant le nouveau champ, ça doit ressembler à ça pour finir :
CODE
                                  'manufacturers_id' => tep_db_prepare_input($HTTP_POST_VARS['manufacturers_id']),
                                  'customers_id' => tep_db_prepare_input($HTTP_POST_VARS['customers_id']));

Plus loin dans la section qui commence par
CODE
  } elseif ($action == 'new_product') {
    $parameters = array('products_name' => '',
modifier la fin pour insérer le nouveau champ :
CODE
                       'manufacturers_id' => '',
                       'customers_id' => '');

Juste après on a une requête select qui est précédée par
CODE
    $pInfo = new objectInfo($parameters);

    if (isset($HTTP_GET_VARS['pID']) && empty($HTTP_POST_VARS)) {
dans la requête qui commence par $product_query = tep_db_query("select pd.products_name, pd.products_description, .... juste après p.manufacturers_id, on ajoute p.customers_id,

plus bas juste après la section
CODE
    $manufacturers_array = array(array('id' => '', 'text' => TEXT_NONE));
    $manufacturers_query = tep_db_query("select manufacturers_id, manufacturers_name from " . TABLE_MANUFACTURERS . " order by manufacturers_name");
    while ($manufacturers = tep_db_fetch_array($manufacturers_query)) {
      $manufacturers_array[] = array('id' => $manufacturers['manufacturers_id'],
                                     'text' => $manufacturers['manufacturers_name']);
    }
on ajoute ceci :
CODE
//########Ajout sélection clients    
    $customers_array = array(array('id' => '', 'text' => TEXT_NONE));
    $customers_query = tep_db_query("select customers_id, customers_firstname, customers_lastname from " . TABLE_CUSTOMERS . " order by customers_lastname");
    while ($customers = tep_db_fetch_array($customers_query)) {
      $customers_array[] = array('id' => $customers['customers_id'],
                                     'text' => strtoupper($customers['customers_lastname']).', '.$customers['customers_firstname']);
    }
//######## FIN Ajout sélection clients
plus bas, après la section (ou avant comme tu veux)
CODE
          <tr>
            <td class="main"><?php echo TEXT_PRODUCTS_MANUFACTURER; ?></td>
            <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_pull_down_menu('manufacturers_id', $manufacturers_array, $pInfo->manufacturers_id); ?></td>
          </tr>
on ajoute
CODE
          <tr>
            <td class="main"><?php echo TEXT_PRODUCTS_CUSTOMER; ?></td>
            <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '24', '15') . ' ' . tep_draw_pull_down_menu('customers_id', $customers_array, $pInfo->customers_id); ?></td>
          </tr>

dans la suite du code on ajoute dans chaque requête où il y a p.products_status, on ajoute p.customers_id, ce qui doit donner : p.products_status, p.customers_id,

Bon pour la partie admin ça devrait être terminé.
Pour la partie catalogue, il faut filtrer les produits de la même manière que si le produit était inactif :
on recherche dans tous les fichier (racine, rep includes/boxes et includes/module) les requêtes qui contiennent : where p.products_status = '1' et on remplace par where p.products_status = '1' and ( p.customers_id = '" . (int)$customer_id . "' or p.customers_id = '0')

voilà, ça devrait le faire dry.gif

Pour faire ces modifs, il faut un bon éditeur de texte qui permet des recherches comme PsPad (lien dans ma signature)
pitchou
wow! blink.gif

ben merci beaucoup... je vais essayer ça... demain à tête reposée après une bonne nuit de sommeil et un bon café! blush.gif

mais merci de votre aide!!!
nemrod34
Un très grand merci!
Ca fonctionne parfaitement !
Seul le client désigné voit le produit en question , ce qui est pour moi très utile !!!

Il manque juste dans admin/french/categories.php
define('TEXT_PRODUCTS_CUSTOMER', 'Client unique qui<br> voit le produit:');


Un très grand merci!

Attention beaucoup de pages à modifier voici pour moi (selon les contribs utilisées) la liste:

catalog:

remplacer :
where p.products_status = '1'
par:
where p.products_status = '1' and ( p.customers_id = '" . (int)$customer_id . "' or p.customers_id = '0')

dans (si vous ne trouvez pas la page c'est que c'est une contrib que vous n'utilisez pas, vérifiez aussi vos pages de vos contribs):

includes/boxes/categories.php
includes/boxes/whats_new.php
includes/boxes/specials.php
includes/boxes/rewiews.php
includes/boxes/featured.php
includes/boxes/boxe_defilante.php
includes/boxes/best_sellers.php
includes/specials.php
includes/rewiews.php
includes/best_sellers.php
includes/modules/featured.php
includes/modules/new_product.php
includes/languages/tout les languages utilisés/advanced_shearch_result.php
categories.php
tell_a_friend.php
specials.php
rewiews.php
product_new.php
product_info.php
popup_image.php
index.php
header_shearch.php
featured_product.php
featured.php
advanced_shearch_result.php
ask_a_question.php
Gnidhal
cool de dire que ça marche wink.gif

je sais que chez moi ça marche, mais j'avais un doute quant à la retranscription ici.
Faudrait presque en faire une contribution, mais le temps me manque pour réaliser un truc propre.



nemrod34
Je viens de faire la liste des pages qui ont été modifiés pour moi, ça devrait aussi être utile mais c'est sur qu'un éditeur qui a une fonction rechercher/remplacer est parfait et du coup c'est vite installé. wink.gif
corbin
CITATION(Gnidhal @ 13 Mar 2007, 18:13) [snapback]225639[/snapback]
C'est une adaptation perso que j'ai faite.
Je vais essayer de la détailler ici
/.../
j'espère que celà figurera dans "bouts de code" wink.gif biggrin.gif
Centel
Juste un remerciement,

à chaque fois que je cherche une info je tombe sur une solution de NEMROD34 ou Gnidhal.

Un grand merci pour tous ce que vous faites

wub.gif
pitchou
je n'ai pas encore eu le temps de me pencher sur le problème... blush.gif mais merci!!!
minou
Bonjour,

Mon besoin est assez proche de cette solution. A part que je veux mettre les droit de voir certains produits non pas sur un client en particulier mais sur une catégorie de clients (j'utilise B2B).

Côté admin, j'ai fait les modifs qui semblent bien aller.

Par contre, côté catalogue j'ai du mal à modifier la requête pour qu'elle prenne bien en compte la catégorie de client associée d'un côté au client identifié pour la comparer à celle des produits pour l'afficher ou non, bref pour filter les produits à afficher ou non pour le client identifié.

Je dois par exemple modifier dans catalog/products_new.php :

$products_new_query_raw = "select p.products_id, pd.products_name, p.products_image, p.products_price, p.products_quantity, p.products_plus, p.products_tax_class_id, p.products_date_added, m.manufacturers_name from " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on (p.manufacturers_id = m.manufacturers_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added DESC, pd.products_name";



Avec un petit coup de pouce sur cette requête, je devrais pouvoir me débrouiller pour les autres fichiers.

Merci d'avance de votre aide. smile.gif
minou
Bon, j'ai un peu progressé. A la place de la ligne ci-dessus, j'ai maintenant :

$products_new_query_raw = "select p.products_id, pd.products_name, p.products_image, p.products_price, p.products_quantity, p.products_plus, p.products_tax_class_id, p.products_date_added, m.manufacturers_name, p.customers_groups_id, customers.customers_id, customers.customers_groups_id from " . TABLE_CUSTOMERS . ", " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on (p.manufacturers_id = m.manufacturers_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and ( customers.customers_id = '" . (int)$customer_id . "' and customers.customers_groups_id =p.customers_groups_id or p.customers_groups_id = '0') and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added DESC, pd.products_name";


Apparement, ça gère bien l'affichage d'un produit pour une catégorie spécifique de client.

Mais le problème est chacun des produits suivant est affiché plusieurs fois (de nombreuses fois).

D'autre part, je pense que c'est vraiment bidouillé. D'ailleurs, il me semble que ça allonge le temps d'affichage.

J'espère qu'avec cette ébauche blush.gif , ce que je souhaite faire semblera plus clair à ceux qui lisent couramment le php et qui passeraient par là.
nemrod34
Je crois qu'il existe une contrib pour b2b hide catégorie quelque chose comme ça.
minou
Ok NEMROD,

Merci du tuyau smile.gif . Je l'ai trouvée, elle s'appelle en fait "Hide products from groups of customers" et elle doit effectivement fonctionner avec B2B (jusque là je n'avais trouvé que celle pour SPPC). Je vais la tester et je mettrai mes remarques ici.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.