Module perso : stock d'option d'attribut dynamique : griser un select

5 posts in this topic

Posted · Report post

Bonjour.

J'ai déjà fais la création produit et la mise à jour des stock à la commande.

Je dois maintenant gérer le panier et le module d'ajout au panier.

 

Module d'ajout au panier : étape 1

L'attribut 1 me permet de choisir les options d'attribut 1, 2 et 3.

J'ai créé un stock pour chacune de ces options.
Seul cet attribut à des options avec stock.

Si le stock de cet option d'attribut est à zéro en comptant le panier,  je veux retirer cette option du menu/select de l'attribut correspondant.

Je pensais au plus simple à l'évincé lors de l'affichage.

Je veux être certain de partir dans le bon sens, vers les bon fichiers, dans les bonnes fonctions.
Pourriez-vous me guidez à nouveau svp ?

Code d'exemple (qui n'a pas les bonne variables)

Problématique que je vais rencontrer ; je n'ai jamais rien compris aux paniers et aux sessions.
Les informations panier (produit en attente) sont elles en base de données ?

<?php

// ma nouvelle table pour gérer les stock d'options
  $query = query("
           SELECT attributs_id, produit_id, stock  
           FROM peel_produits_attributs_stock 
           WHERE produit_id =".$this_produit_id); 

          // Récupération des stock pour chaque option.
          $attributs_stock=array();
          while ($res = fetch_assoc($query)) 
          {            
           $attribut_id    = $res['attributs_id'];
           $stock          = $res['stock'];
           $attribut_stock[$attribut_id]=$stock;
          }
          
          // Par défaut 0 quantité en panier pour chaque attribut_stock de ce produit.
          $attributs_1_panier = 0;
          $attributs_2_panier = 0;
          $attributs_3_panier = 0;
          
          // Si panier non vide
          if (!empty($session_panier))
          {
              // pour chaque insertion dans le panier
              foreach($session_panier as $key => $value)
              {
                  // S'il s'agit du produit en cours
                  if ($key['produit_id'] == $this_produit_id)
                  {
                      // Quelle quantité en attente dans le panier ?
                      $panier_qté = $key['qte'];
                      
                      // Liste des attributs en panier pour ce produit
                      $attributs_list = $key['attribut_list'];
                      
                      // Quel quantité attribut de stock pour ce produit en panier ?
                      // On cumule si cet attributs_stock a été ajouté dans d'autres tailles par exemple.  
                      if     (stripos($attributs_list, '1|1') == true){$attributs_1_panier = $attributs_1_panier + $panier_qté;}
                      elseif (stripos($attributs_list, '1|2') == true){$attributs_2_panier = $attributs_2_panier + $panier_qté;}
                      elseif (stripos($attributs_list, '1|3') == true){$attributs_3_panier = $attributs_3_panier + $panier_qté;}
                  }
              }
          }
          
          // si quantité panier < à stock => l'option sera activé non grisée.
          $attributs=array(1=>'',2=>'',3=>'');
          if ($attribut_stock[1] - $attributs_1_panier < 1){$attributs[1] = ' disabled';}
          if ($attribut_stock[2] - $attributs_2_panier < 1){$attributs[2] = ' disabled';}
          if ($attribut_stock[2] - $attributs_2_panier < 1){$attributs[3] = ' disabled';}
         
          

          // PUIS DANS LA CONSTRUCTION DU SELECTION / OPTION                               
          foreach ($attributs as $key => $value)
          {
          if($this_attribut_id == 1 && $this_attribut_option == $key){$attribut_statut = $attributs[$value];}
          }
          
          // Juste après l'insertion de la value de l'option
          echo $attribut_statut; 

?>

 

 

Ci dessous des explications facultatives


Explication de ma gestion des stock avec une parabole
1 produit = 40 unité et 1 gadget dans un carton.
Vente du carton entier (attribut 1) => vide les stock de tous les attributs.
Vente du gadget (attribut 2) => stock gadget = 0 ; stock carton = 0 car il a été entamé ; stock unités non impacté
Vente d'une unité normale (attribut 3) => stock unité -1 ; stock carton = 0 car il a été entamé ; stock gadget non impacté

 

Nouvelle table : peel_produits_attributs_stock : ok

id = sa seul utilité est de pouvoir modifier les stocks sous phpmyadmin
produit_id = l'id du produit, pour chaque prduit
Attribut_id = l'option d' attribut ayant un stock
Stock = le stock pour chaque attribut_id.

 

Chez moi ca donne ceci :

Textes complets

 id produit_id attribut_id stock
Modifier Modifier Copier Copier Effacer Effacer1111
Modifier Modifier Copier Copier Effacer Effacer2121
Modifier Modifier Copier Copier Effacer Effacer31340
Modifier Modifier Copier Copier Effacer Effacer4711
Modifier Modifier Copier Copier Effacer Effacer5721
Modifier Modifier Copier Copier Effacer Effacer67340

 

C'est donc un code très perso car je dois toujours conserver ces attributs_id.

 

Création de produit : ok

J'ai créer un module pour générée un produit selon un modèle donné.
Ca m'ajoute automatiquement un produit avec les attributs et les options désirées.
J'ai inclue l'ajout des insertion dans cette nouvelle table avec les valeur de stock par défaut.

 

Mise à jour de stock : ok

J'ai ajouté la fonction jointe en fin de message dans lib/fonctions/order.php
Je la lance à la fin de  create_or_update_order avant le return

 

Merci grandement pour votre aide.
Je vous souhaite d'agréables journées.
 

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Pour supprimer les fonctions d'attribut selon le stock disponible, je vous propose de modifier la fonction get_possible_attributs dans le modules/attributs/fonctions.php. Vous pouvez ajouter un morceau de code spécifique pour filtrer les résultats des requêtes SQL.
Sinon pour connaitre la quantité d'un produit dans le panier, vous pouvez utiliser $_SESSION['session_caddie']->quantite[$numero_ligne], où $numero_ligne correspond à l'id de la ligne de produit dans le panier.

Comme vous l'avez compris, c'est un sujet complexe qui nécessite des modifications à différents endroits du code, et ajouter du code spécifique au milieu des fonctions de gestion d'attributs ou de stock nécessite une bonne compréhension du code, et cela demande également du temps.
Pour vous aidez dans votre développement je peux vous donner des orientations, mais si vous souhaitez que l'on s'investisse plus dans votre projet il faudra prendre contact avec notre service commercial au 01 75 43 67 97

 

Share this post


: post
Share on other sites

Posted · Report post

Je vais devoir me débrouiller "seul", je suis loin d'avoir les moyens financier adéquates (proche de zéro).

 

Pourquoi supprimer les "fonctions d'attribut selon le stock disponible".

Je suis en PEEL shopping donc je n'ai pas le module.

 

Je vais déjà essayer de récupérer les quantités.

Histoire de ne pas travailler en aveugle, est-ce qu'il y a un code permettant de faire une alert ou une popup, pour les codes php pour faire apparaitre une variable par exemple..

Car si je fais un classique <? echo "<script>alert ... Ca ne passe pas.

 

MErci

Bonne journée

 

 

Share this post


: post
Share on other sites

Posted · Report post

Merci.

C'est fait.

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

Twitter Advisto ecommerce

Facebook PEEL Shopping