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

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Recherche développeur MS2.2 -> Papier Cadeau, Choix individuel par produits du panier
mickael34
posté 17 Sep 2020, 13:18
Message #1


Ceinture orange OSC
Icône de groupe

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



Bonjour,

J'ai des besoins bien précis en terme de Gestion de Papier Cadeaux payant.

Après recherches, j'ai trouvé ces 2 contributions :
- osC_GiftWrap_v1.0
- Gift Wrap Module

On peut gérer l'option papier cadeau de 2 façons : forfaitaire ou au coût par produits.


De mon côté j'ai 2 soucis :

- Tous mes produits ne sont pas emballables -> pas de problème à priori, je crée une case à cocher côté admin dans mes fiches produits qui va dire on accepte ou non l'option côté site.

- Je souhaite que le client puisse choisir pour quel produit de son panier il souhaite un emballage payant ou non -> c'est là que je bloque et c'est quelque chose que ne font pas les 2 contributions existantes.


L'idée serait donc d'avoir :
- sur le panier une case à cocher ligne par ligne.
- ou via un module (comme le font les contrib existantes) qui me détaille le contenu du panier avec une case à cocher individuellement.

L'information du ou des choix devant évidemment être récupérable côté admin dans la commande.


Tout cela dépassant mes compétences, si un développeur connaissant bien OsCommerce est intéressé, me contacter en MP.

Merci beaucoup smile.gif



--------------------
Sur OsCommerce 2.2
Go to the top of the page
 
Bonbec
posté 17 Sep 2020, 13:37
Message #2


Ceinture marron OSC
Icône de groupe

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



Bonjour,

Il y a peut-être une autre solution : les options (products_attributes).
Cela permet au commerçant :
- de ne mettre l'option "papier cadeau" qu'aux articles qui peuvent être emballés.
- d'avoir des tarifs différents selon la taille du papier à utiliser (c'est un exemple)

Cela permet au client :
- de sélectionner l'option "papier cadeau" lors qu'il met l'article dans le panier.

Cela ne nécessite pas de programmation ...


--------------------
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
 
SaphyraK
posté 17 Sep 2020, 13:50
Message #3


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 100
Inscrit : 6-November 12
Membre no 31715



Citation (Bonbec @ 17 Sep 2020, 13:37) *
Bonjour,

Il y a peut-être une autre solution : les options (products_attributes).
Cela permet au commerçant :
- de ne mettre l'option "papier cadeau" qu'aux articles qui peuvent être emballés.
- d'avoir des tarifs différents selon la taille du papier à utiliser (c'est un exemple)

Cela permet au client :
- de sélectionner l'option "papier cadeau" lors qu'il met l'article dans le panier.

Cela ne nécessite pas de programmation ...


Haha astucieux.
J'étais en train de regarder les contributions (leur code), et effectivement, les options pourraient coller.

De plus, dans le fichier du panier (shopping_cart.php) et dans le fichier de la page produit (product_info.php) on peut ajouter un if conditionnel pour check si l'option pour le produit existe et on peut afficher un message: "Ce produit peut être emballé comme cadeau, sélectionnez l'option si vous souhaitez en bénéficier!" wink.gif

Ce message a été modifié par SaphyraK - 17 Sep 2020, 13:59.


--------------------
We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...)
Go to the top of the page
 
mickael34
posté 17 Sep 2020, 14:10
Message #4


Ceinture orange OSC
Icône de groupe

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



smile.gif

J'ai oublié de préciser que pour diverses raisons je ne souhaite pas passer pour le système d'options qui je vous l'accorde aurait été bien bien bien plus simple !
J'ai déjà pas mal de produits à options : couleur, taille... et je ne souhaite pas charger l'ergonomie de mes fiches.


J'ai pendant un moment creusé l'idée de "jouer" avec la fonction :
Code
add_cart($products_id, $qty = '1', $attributes = '', $notify = true)


A côté de chaque produit de mon panier, j'aurais eu un lien "ajouter un papier cadeau" qui aurait ajouté un nouveau produit dans mon panier : le produit "papier cadeau" en question.

C'était nickel mais je ne savais pas depuis quelle ligne produit de mon panier, le "papier cadeau" était ajouté :
- J'ai 3 produits dans mon panier.
- Je clique sur ajouter un papier cadeau sur mon premier produit puis le deuxième.
- Dans mon panier s'ajoute donc le produit papier cadeau en quantité 1 puis encore 1 soit =2.
- Mais impossible de savoir quels sont les 2 produits sur 3 concernés par l'emballage cadeau !

J'ai donc abandonné cette idée.


--------------------
Sur OsCommerce 2.2
Go to the top of the page
 
SaphyraK
posté 17 Sep 2020, 16:03
Message #5


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 100
Inscrit : 6-November 12
Membre no 31715



Citation (mickael34 @ 17 Sep 2020, 14:10) *


J'ai oublié de préciser que pour diverses raisons je ne souhaite pas passer pour le système d'options ...


Hahahaha, ok, dommage, c'eût été plus simple biggrin.gif

Cela-dit, là, comme ça, je ne connais absolument pas comment est conçu le fonctionnement du module (enfin, des modules) que tu cites.
L'idée en revanche, qui bourgeonne dans ma tête est simple (attention, c'est un draft, les codes tels quels ne fonctionneront absolument pas, c'est juste une ébauche):

Ajout d'une colonne à customers_order, 'giftwrap_per_products'

Sur la page du panier, un champ de formulaire caché avec pour nom: "giftwrap_per_products"
Sur la page du panier, une case ajoutée par produit.
Chaque case produirait ce code (au sein d'une boucle listant chaque produit dans le panier):
->
Code
id="giftwrapPerProducts_cb_<?php echo $shopping_cart['id']; ?>"

->
Code
onclick="giftwrapPerProducts_fn('<?php echo $shopping_cart['id']; ?>', this.id);"


et un .js injecté:

Code
function giftwrapPerProducts_fn(product_id, case_dom) {

checkboxToTest = case_dom.checked;
elementToParseOrUpdate = document.getElementById('giftwrap_per_products').value;
regexPattern = new RegExp('\|wrap\['+product_id+'\]', 'g');

switch (checkboxToTest) {

   default:
   case false:
   case '';
         // si la case était décochée, on ajoute un tag d'emballage, uniquement  si le terme précis d'emballage n'est déjà pas trouvé:
        if (!elementToParseOrUpdate.match(regexPattern)) { elementToParseOrUpdate += '|wrap['+product_id+']'; }
     break;

   case true:
   case 'checked':
        // si la case était cochée, on supprimer juste le tag d'emballage,  uniquement si le terme précis d'emballage est trouvé:
        if (elementToParseOrUpdate.match(regexPattern)) { elementToParseOrUpdate.replace(regexPattern, ''); }
    break;
}


En fait, maintenant, plus qu'à ne jamais oublier de passer le champ caché à la classe order, elle a pour name 'giftwrap_per_products'
A partir de la page panier, sera injecté dans l'instance actuelle '$order' un index au tableau php:
Code
giftWrapPerProducts' =>  $order['giftwrap_per_products']


Depuis l'administration maintenant:

Dans edit_orders, à un endroit, on créé une structure HTML:

Code
<table>
  <tr>
    <td>
       Le client veut que les produits suivants soit emballés: <?php /* on  récupère le champ giftwrap_per_products depuis la base de données */ et on le liste: echo  str_replace(array('|wrap[', ']'), array('', ''),  $order['giftwrap_per_products']); ?>
    </td>
  </tr>
</table>


Et ainsi, on sait quels produits sont ou non à emballer.
Evidemment, c'est très "brouillon", c'est un proof-of-concept, mais, la logique est bien là.
Il faut mettre en développement chaque partie importante: base de données, classe order, fichier de transitions: shopping_cart.php, checkout_shipping.php, checkout_payment.php et checkout_process.php.
Aussi, la partie de récupération de qupi doit être emballé dans l'administration, peut se faire plus joliement, directement inclu dans le listing du $order->cart(), puis, si le wrap[XXX] (où XXX = id du produit), coincide avec la ligne actuelle du produit, alors, ça ajoute la mention: "-- Le client veut que ce produit soit emballé!".

Voilà.
EDIT: il se peut que des erreurs de syntaxe JS/PHP soit apparente, ceci car, ce n'est pas un code testé, mais une logique de concept.

Ce message a été modifié par SaphyraK - 17 Sep 2020, 16:04.


--------------------
We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...)
Go to the top of the page
 
mickael34
posté 18 Sep 2020, 09:13
Message #6


Ceinture orange OSC
Icône de groupe

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



biggrin.gif

Je te remercie pour l'idée, je vais creuser cette piste !

Je sens que je m'amuser quand même tongue.gif


--------------------
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 : 21st October 2020 - 20:18
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)