Bug affichage stock virtuel Ordre de Fabrication

Bonjour à tous,

alors j’avais quelques soucis avec le stock virtuel qui ne s’affichait pas bien et j’ai fait de nombreuses recherches et je suis arrivé à une anomalie que je vous décris ci-dessous. Sans doute cette anomalie est systémique et cela serait bien d’y trouver une solution pour ceux qui comme moi veulent utiliser Dolibarr à fond.

Alors dans le stock virtuel d’un de mes produits, n’apparaissait pas la quantité d’un OF pourtant validée.

Alors je suis allé voir dans les différents codes dont:
product.class.php

Ou vers la ligne 5767 commence la fonction
public function load_virtual_stock($includedraftpoforvirtual = null, $dateofvirtualstock = null)
au niveau if (isModEnabled(‹ mrp ›))
la variable ne renvoyait aucune valeur (0) $stock_inproduction

Alors j’en ai déduit que c’était la fonction load_stats_inproduction qui devait ne pas marcher correctement.

Ligne 3467 je trouve donc load_stats_inproduction($socid = 0, $filtrestatut = ‹  ›, $forVirtualStock = 0, $dateofvirtualstock = null)

Je fais alors le début de la SQL:
SELECT COUNT(DISTINCT m.fk_soc) as nb_customers, COUNT(DISTINCT m.rowid) as nb, COUNT(mp.rowid) as nb_rows, SUM(mp.qty) as qty, role FROM llx_mrp_production as mp, llx_mrp_mo as m LEFT JOIN llx_societe as s ON s.rowid = m.fk_soc WHERE m.rowid = mp.fk_mo AND m.entity IN (1) AND mp.fk_product = 12619 AND mp.disable_stock_change IN (0) AND m.status IN (1,2)AND EXISTS (SELECT p.rowid FROM llx_product AS p WHERE p.rowid = 12619 AND p.fk_product_type IN (0)) GROUP BY role

En en triturant mon MyadminPHP je trouve donc l’erreur.

Le produit 12619 s’est inséré dans ma base de donnée avec NULL au niveau du champ disable_stock_change. La fonction requiert uniquement les valeurs 0.

En mettant à la main à 0, cela fonctionne alors parfaitement.

Alors je décide de supprimer l’OF la recrée et je regarde bien ma base de donnée.
Il semblerait que la première ligne insérée soit toujours avec une valeur NULL.

Comme Origin et Origin_Type qui sont à NULL.

Est-ce que vous avez ce même type d’erreur chez vous ? Est-ce un pb chez moi uniquement ?

J’ai la V19.0.2 issue d’une première installation V18.0.5

Merci à vous,
Cyril.

En effet, la valeur ne doit jamais être nul. Mais 0 ou 1.
Reste à voir à quel moment on cré une ligne sans positionner la valeur ->disable_stock_change à 0.

Estce que sit u change la ligne dans mrp/class/mo.class.php
'disable_stock_change' => array('type'=>'smallint', 'label'=>'DisableStockChange', 'enabled'=>1, 'visible'=>1, 'default'=>0, 'position'=>108, 'css'=>'maxwidth50imp', 'help'=>'DisableStockChangeHelp'),
par
'disable_stock_change' => array('type'=>'smallint', 'label'=>'DisableStockChange', 'enabled'=>1, 'visible'=>1, 'default'=>0, 'notnull' => 1, 'position'=>108, 'css'=>'maxwidth50imp', 'help'=>'DisableStockChangeHelp'),

cela résoud ton problème ?

Bonjour Eldy,

un immense merci car j’ai fait quelques tests et cela fonctionne a priori très bien.
Je vais continuer ce jour avec la mise en avant d’une centaines de produits et des BOM et des sous BOM, des OF, validés ou non, des OF fabriqués ou non… On verra si je trouve des incohérences.

En tout cas merci grandement.
Le seul truc que je trouve incohérent dans la base de données c’est que la première ligne de l’OF a des valeurs NULL.

Comme tu peux le voir dans mon tableau issu de ma BDD.
Je pense que la valeur NULL se créait également pour le champ stock virtuel sur le premier élément de la ligne.
Tu vois que le fk_mo est le même of a 27, mais le origine_id et type sont a NULL. Les lignes d’après sont correctement renseignées.
donc l’erreur provient de l’insertion de la ligne de l’OF pour moi.
Maintenant cela ne gêne pas à priori.

Bonne journée à vous, et bonne réunion à Montpellier.

Pour que cela soit modifié définitivement dans le source, il faut que je fasse un sujet sur GITHUB ?

Pas besoin, je l’ai fait…

Merci à toi. C’est super.
En fait j’ai plein de petits bugs que je vois que je pourrai aider à solutionner avec votre aide. J’ai l’impression que vous êtes super réactifs sur ce forum. Je peux donc continuer à vous montrer des petits bugs?

Oui, mais je garanti pas d’etre tjs aussi réactif, je ne passe sur le forum que de temps en temps…

1 « J'aime »