Mouvement de stock en masse étendu

Je travaille actuellement sur une extension de gestion de fabrication/BOM avec Dolibarr, en me basant sur le travail initial fait par Charles-Fr BENKE sur la fabrication de produits virtuels.
Pour faire court, je créé un produit « officiel » qui peut être acheté et vendu, et son compagnon « interne » qui est un produit virtuel qui comporte tous les composant d’un produit, ceci me donne la BOM (Bill Of Material) du produit final ainsi que la valorisation de celle-ci (très bien pour connaître le prix de revient). J’utilise la fonction de fabrication pour créer en interne un certain nombre de produits. Maintenant, il me suffit de transférer ces produits « internes » virtuels vers le stock réel en déplaçant le stock du produit « interne » vers le produit « officiel » (avec le prix de revient dans le prix d’achat).
La fonction de mouvement de stock en masse doit donc être modifiée pour ajouter une référence produit de destination qui peut être différente de la référence produit de départ, si la référence de destination est laissée vide, celle de départ est utilisée. De même si les références produits sont différentes alors le même entrepôt peut être utilisé en source et destination.
De plus, la quantité à transférer est vérifiée afin de refuser de déplacer des produits qui ne sont pas en stock.
J’ai donc commencé la modification, ça fonctionne mais…
J’ai remarqué que l’utilisation en double de la méthode select_products() dans le même formulaire est instable.
En effet, si on clique sur chaque champ d’entrée, tout va bien. Par contre si on navigue de champ en champ en utilisant la touche TAB du clavier, la référence du produit n’est plus reconnue par le POST.
Je joins le fichier massstockmove.php correspondant.

Intéressant,
A l’époque j’avais pensé utiliser la notion de type de produit (matière première/manufacturé) pour gérer la chose mais cela n’était pas passé auprès des « hautes instances ». Je pense depuis m’attaquer à la chose en créant un ‹ VRAI › module dédié à la Fabrication de produit basé sur ma précédente extension. Cela devrait plus avancer durant ce mois (j’ai un projet sur le sujet).
Pour en revenir au sujet, ce qui me gène dans cette vision c’est le principe de démultiplier les refs produits, quand on en a beaucoup cela devient ingérable, si en plus on s’amuse à changer les ref à la volé lors des mouvements de stock… brrrr

Pour résumer, ne serait-il pas plus pertinent de réaliser un « Vrai » module de fabrication qu’une bricole sur les mouvements de stock?

Tu as probablement raison, mais je n’ai installé et je n’utilise Dolibarr que depuis 3 jours, alors je n’ai pas encore pris le temps d’essayer de comprendre comment faire un nouveau module.
La multiplication des références produits est quelquefois souhaitable: imaginons le cas d’une société (comme moi) qui fait fabriquer des produits sur plusieurs sites, y compris en interne, et re-dispatche ensuite la prod sur des produits réels mais avec une réf différente pour garder une sorte de traçabilité.
Toutefois, cela n’explique pas le défaut constaté en utilisant le clavier pour naviguer… Peut-être un événement onBlur() défectueux ou absent… Je vais y jeter un oeil mais si tu as une idée, je suis preneur (tu connais mieux le code que moi).

En attendant, j’ai ré-intégré sur mon serveur le code de Charles-Fr BENKE dans les fichiers product/class/product.class.php et product/composition/fiche.php en le modifiant un peu pour lui donner le « look&feel » Dolibarr (Titres du tableau, bulle d’aide, etc.).
Si tu es intéressé…
Par contre je regarde comment l’intégrer comme un hook pour commencer de façon à ne pas toucher aux fichiers de base.

Je comprends que mon idée ne fait pas l’unanimité. Alors je clos le débat et j’ai ré-écrit un module « SimpleFab » qui fait tout ça.