Flux d’activité

Flux d’activité de Messages

  1. Simon développeur PEEL


    Bonjour,

    Pour le premier problème, avez-vous modifié les requêtes de création/modification de produits ? Pour être sur d'avoir modifié l'ensemble du code nécessaire sur cette page, vous pouvez faire une recherche sur le nom du champ d'une fonctionnalité déjà en place, comme on_rollover (produit à la une). Pour chaque occurrence de ce terme, il faut ajouter votre nouveau champ. Si vous faites cette recherche, vous verrez qu'il faut modifier

    - la fonction affiche_formulaire_ajout_produit en ajoutant $frm['resupplying'] = ""; au début de cette fonction.

    - Ajouter la checbox dans le formulaire.

    - Ajouter $sqlProd .= ', resupplying'; et

    $sqlProd .= "

    , '" . nohtml_real_escape_string(vn($frm['resupplying'])) . "'"; dans la requête SQL de la fonction insere_produit.

    - Enfin ajouter

    $sql .= "

    , resupplying = '" . nohtml_real_escape_string(vn($frm['resupplying'])) . "'";

    Une fois les requêtes modifiées, la mise à jour du champ devrait fonctionner.

    Pour le second point, l'affichage d'un état de stock est indépendant de la mise au panier du produit. Pour forcer la rupture de stock si le champ resupplying est coché, il faut modifier la fonction affiche_critere_stock() dans le fichier lib/fonctions/display_product.php. Dans cette fonction, vous pouvez remplacer les 4 occurences du test :

    if (empty($product_object->on_rupture) || !empty($GLOBALS['site_parameters']['allow_add_product_with_no_stock_in_cart'])) {
    par
    if (empty($product_object->resupplying) && (empty($product_object->on_rupture) || !empty($GLOBALS['site_parameters']['allow_add_product_with_no_stock_in_cart']))) {
    Au sujet de
    Dans le back-office, on a la possibilité de forcer l'affichage du délais de livraison (une valeur en jours) Mais aucune distinction n'est faite selon la couleur.
    Un développement sera fait sur PEEL7 pour permettre de séléctionner la rupture de stock pour une association taille/produits/couleurs. Pour ce point
    j'active la possibilité d'ajouter au panier des produits qui ne sont pas en stock. Un Tshirt (par exemple) est dispo en jaune (stock à 10), mais pas en bleu (stock à 0) Dans la page catalogue et dans la fiche produit, le tshirt est marqué "en stock" (car effectivement dispo dans une certaine couleur) Une fois dans la fiche produits, je sélectionne ma couleur bleu. le statut visible est toujours "en stock" alors qu'il devrait se mettre à jour vers "livré sous 8 - 10 jours". En fait le statut ne se met pas à jour.
    => La correction consiste à ajouter un test sur la couleur lors du calcul du stock temporaire restant pour le produit. Dans la fonction affiche_critere stock, il faut remplacer

    foreach ($product_stock_infos as $stock_infos) {
    $stock_remain_all += $stock_infos['stock_temp'];
    }
    [/code] par
    [code]
    foreach ($product_stock_infos as $stock_infos) {
    if (empty($selected_color_id) || (!empty($selected_color_id) && ($selected_color_id == $stock_infos['couleur_id']))){
    $stock_remain_all += $stock_infos['stock_temp'];
    }
    }
    vers la ligne 1170. Au sujet de
    Pas de possibilité non plus de renseigner une référence différente selon la couleur...
    A moins de créer une fiche article pour chaque couleur, mais la ça devient complètement absurde.[/code]

    => La gestion de référence unique par couleur et par taille est un développement supplémentaire, qui consiste à ajouter une table de base de donnée supplémentaire, ainsi que la possibilité de les administrer, et d'exploiter et d'afficher ces références en front et back office. Si vous souhaitez cette fonctionnalité je vous invite à prendre contact avec le service commercial au 01 75 43 67 97.

  2. carcy


    HA !

    c'est bien (parce que ça se fera) mais c'est dommage à la fois, parce que j'ai pas mal de clients qui s'addressent à moi pour un devis, et quand je créé en backoffice, comme j'ai pas mal produits avec options, c'est dur de modifier manuellement...

    Tant pis, on attendra !! merci quand même !!

    bonne journée

    JL

  3. djespace


    Bonsoir,

    Bon alors, on va dire que j'ai du faire 90% de la modif comme il faut.

    - création du champ supplémentaire dans la table peel_produits (ok)

    - pour la classe product, j'ai supposé qu'il s'agissait du fichier lib/class/Product.php :

    donc ajout de la ligne : var $resupplying = null; (pas à la ligne 100 mais 71 juste après var $on_rupture = null;)

    puis dans la requete sql de la ligne 134, j'ai ajouté la ligne suivante : , p.resupplying

    - dans administrer/produits.php, j'ai dupliquer la checkbox de "on_rollover". je l'ai placée dans la partie "gestion du stock" comme ceci :

    
    if (is_stock_advanced_module_active ()) {
    
    			affiche_gestion_stock($frm);
    
       echo '
    
       <tr>
    
       <td valign="top" class="normal" style="font-weight:bold; font-size:13px;">Fonction resupplying' . BEFORE_TWO_POINTS . ':</td>
    
       <td><input type="checkbox" name="resupplying" value="1" ' . frmvalide(!empty($frm['resupplying'])) . ' /></td>
    
      </tr>';
    
       }
    
    

    Ensuite j'ai remplacé chaque lignes comme prévu dans display_product.php et modules\stock_advanced\fonctions.php.

    l'id de mon nouvel état de stock est bien le 3.

    Donc, la checkbox apparait bien dans les fiches produits, mais lorsque je la coche et valide mon formulaire, l'action n'est pas enregistrée.

    C'est à dire que si je reviens sur mon formulaire, la case est toujours décochée. Bien évidemment, l'état de stock du produit reste inchangé.

    En revanche, lorsque je change la valeur du champ dans la base, l'état de stock du produit concerné change bien.

    Et ma checkbox est cochée dans la fiche produit.

    En gros, j'ai juste un problème de liaison avec la base, mais juste dans un sens.

    Second problème mais je pense que vous ne l'aviez pas prévu donc normal:

    L'ajout au panier reste possible dans cet état de stock alors qu'il ne faudrait pas.

    Vous allez me dire que c'est parcequ'il est activé dans la config de la boutique mais c'est volontaire car j'en ai besoin pour permettre l'ajout au panier de mon etat de stock id=2 "livraison sou 8 - 10 jours".

    Merci

  4. Simon développeur PEEL


    Bonjour,

    Merci, mais que dois-je faire exactement ?

    Reste là à trouver comment définir quel produits sont concernés (une case à cocher par exemple).

    Le moyen le plus simple à mon sens serait de créer :

    - Un nouveau champ dans la table peel_produits, et prendre en compte ce nouveau champ dans la Class Product. Il faut aussi prévoir son administration.

    - Un nouveau paramètre dans la fonction affiche_etat_stock qui permettra de chercher le bon etat de stock, en fonction de ce qui est défini pour le produit.

    Concrètement, il faut ajouter le champ resupplying (ou autre nom qui vous convienne) TINYINT 1 NOT NULL DEFAULT 0 dans la table peel_produit. Il faut ensuite ajouter $resupplying au début de la classe Product (vers la ligne 100). Il faut aussi ajouter le champ dans la requête SQL de la ligne 134. Une fois que c'est fait, il faut modifier la page administrer/produits.php pour l'administration de ce champ. Vous pouvez dupliquer le fonctionnement d'une autre champ checbox, comme on_rollover.

    Une fois que le champ est administrable, et accessible depuis la classe Product, il faut modifier ensuite la fonction affiche_etat_stock(). Vous pouvez ajouter un paramètre $resupplying à cette fonction :

    function affiche_etat_stock($stock, $on_rupture = false, $return_mode = false, $resupplying=null)

    et ajouter ce paramètre dans la requête SQL :

    $resEtatStock = query("SELECT id, nom_" . $_SESSION['session_langue'] . " AS nom, image, valeur

    FROM peel_etatstock

    WHERE id='" . ($checked_value > 0 ? 1 : (!empty($resupplying)? 3 : 2 ) ) . "'");

    Je pars du principe que l'id de votre nouvel état de stock est 3, il faut modifier pour le bon id si ce n'est pas le cas.

    Enfin, à chaque appel de la fonction il faut spécifier le nouveau paramètre. Dans lib\class\Product.php, ligne 947 :

    return affiche_etat_stock($stock_remain_all, $this->on_rupture, true, $this->resupplying) ;

    et dans lib\fonctions\display_product.php :

    ligne 1177

    ' . affiche_etat_stock($stock_remain_all, false, true, $product_object->resupplying) . '';

    ligne 1217

    $output .= '' . affiche_etat_stock($stock_remain_all, false, true, $product_object->resupplying) . '';

    Les numéros de lignes sont données pour une 6.3.1

  5. Simon développeur PEEL


    Bonjour,

    le morceau de code


    <td style="text-align:center; width:12%;">
    ';
    if (empty($product_object->on_estimate)) {
    $output .= ((vn($GLOBALS['site_parameters']['category_order_on_catalog']) != 1)?$product_object->affiche_prix(display_prices_with_taxes_active(), is_reseller_module_active() && is_reseller(), true, false, null, false, true, 'full_expand_in_container', false):'');
    } else {
    $output .= display_on_estimate_information(true);
    }
    $output .= '
    </td>
    [/CODE]

    affiche le prix du produit, ou la mention 'Sur devis' si le checkbox "La mention "Sur devis" sera affichée à la place du prix :" est coché dans la fiche produit en back office. Ce morceau de code est utilisé uniquement pour l'affichage des produits en ligne dans les pages de catégorie.

  6. Simon développeur PEEL


    Bonjour,

    Lors de l'ouverture d'un fichier csv avec calc d'open office, une fenêtre s'affiche dans al quelle vous pouvez renseigner l'encodage, et le spérateur utilisé pour le fichier.

    Pour le fichier d'export, vous devez préciser UTF-8 pour l'encodage, et tabulation pour le séparateur. Une fois paramétrer de cette façon, les lignes de produits devrait être affichées clairement.

  7. djespace


    Bonjour,

    J'ai créé un nouvel état de stock dans la base. "en cous de réapprovisionnement"

    Reste à savoir comment le mettre en place dans:

    
    $resEtatStock = query("SELECT id, nom_" . $_SESSION['session_langue'] . " AS nom, image, valeur
    
    	    FROM peel_etatstock
    
    	    WHERE id='" . ($checked_value > 0 ? 1 : 2) . "'");
    
    

    Et comment lui dire si l'ajout au panier est possible ou non pour cet état.

    En fait, admettons que tous mes produit soit en stock :

    pour certains produits, une fois le stock à zéro, il faudrait qu'il passe en statut "livré sous 8-10 jours" avec ajout au panier possible

    pour d'autres, une fois le stock à zéro, il faudrait qu'il passe en statut "en cours de réapprovisionnement" avec ajout au panier impossible

    Reste là à trouver comment définir quel produits sont concernés (une case à cocher par exemple).

  8. djespace


    Bonsoir,

    J'ai finis par trouver le fichier concerné. "display_product.php"

    Effectivement, le problème de positionnement sous chrome est lié au titre.

    En le fixant avec une classe, je solutionne en partie le problème.

    Par contre pour arriver à libérer de la place pour celui-ci et obtenir le résultat souhaité, j'ai supprimé cette cellule du tableau :

    
    <td style="text-align:center; width:12%;">
    
    	  ';
    
    	 if (empty($product_object->on_estimate)) {
    
    	  $output .= ((vn($GLOBALS['site_parameters']['category_order_on_catalog']) != 1)?$product_object->affiche_prix(display_prices_with_taxes_active(), is_reseller_module_active() && is_reseller(), true, false, null, false, true, 'full_expand_in_container', false):'');
    
    	 } else {
    
    	  $output .= display_on_estimate_information(true);
    
    	 }
    
    	 $output .= '
    
    	 </td>
    
    

    N'ayant pas besoin d'activer le module revendeur, je pense pouvoir m'en passer;

    A moins que ce bout de code n'affecte autre chose ?

    Merci.

Twitter Advisto ecommerce

Facebook PEEL Shopping