bonjour,
j’ai un peu testé le nouveau module BOM et la future GPAO c’est très intéressant… mais j’aimerai une fonction à l’envers :
Dans mon activité je revend des pièces détachées provenant d’appareils en partie défectueux.
Les pièces de ces appareils sont existantes en tant que produits dans mon dolibarr actuel.
Je peux donc facilement générer les BOM correspondant aux produits complets.
Sauf que je ne veux pas les assembler, mais les « déconstruire » ou les désassembler.
Une fois désassemblés, les pièces défecteuses partent au recyclage, et je souhaiterai pouvoir « ventiler » les pièces utilisables dans mon stock comme je le fait avec les commandes.
En somme plutôt que des « ordres de fabrication », je voudrait générer des « ordre de déconstruction »
Est-ce que les développeurs actuels peuvent me dire si la structure que vous avez prévu permettrai de mettre en place cette fonctionnalité ?
Selon la quantité de code, je pourrait en faire une partie, ou un financement est possible.
si je souhaite déconstruire, l’objet en lui même reste identique avec la gestion des lignes pour la BOM, seule la logique de stockage des infos remettrai en question le code actuel, qui n’est pas prévu pour gérer des quantités de fabrication négatives (j’ai essayé et ca créé des MO fantômes qu’on ne peut pas visualiser, mais ca ne fait pas planter dolibarr).
Du coup il me semblerait plus « propre » de créer une nouvelle classe « DMO » pour Demanufacturing Order, qui serait quasi similaire à MO, mais je crain que ca dépasse ma capacité à gérer cà tout seul.
donc si un développeur intéressé par ce travail passe par ici, qu’il me fasse signe
Hello il est déjà possible de réaliser ce genre de chose avec le module additionnel Factory (dans sa version gratuite et payante).
Je précise que la version gratuite sera à mise à jour compatible avec la V12 d’ici la rentrée.
bonjour @defrance peux-tu préciser ?
j’ai rapidement parcouru la doc du module Factory et j’ai simplement vu la notion de « déchets » ou de pièces non utilisées en fab qui sont remises en stock, mais pas vraiment d’ordre de dé-fabrication.
merci pour tes lumières, ca m’intéresse, et si c’est dans le core dolibarr à la rentrée c’est magique
@defrance en effet j’ai bien vu cette option dans la doc, mais ca ne correspond pas à ce que je souhaite faire.
imaginons le produit : Joli_Boitier_pour_sonette
composé des produits suivants dans la BOM Joli_Boitier_pour_sonette :
1x face_avant
1x face_arrière
1x carte_électronique
4x tampons_caoutchouc
Imaginon qu’un revendeur lamba me renvoi un de ces boitiers pour sonette qu’il a retrouvé sous une palette et qu’il ne peux pas le mettre en magasin, à réception chez moi je fais un diagnostic et me rend compte qu’il est quand même u peu abimé. Alors je veux déconstruire le Joli_Boitier_pour_sonette. Je ne veux pas 1/10eme de boitier, mais plutot :
1x face_avant à remettre en stock (occasion avec ref correspondante dans la bom)
1x face_arrière à jeter parcequ’en mauvais état
1x carte_électronique à remettre en stock (occasion avec ref correspondante dans la bom)
4x tampons_caoutchouc à jeter ca non réutilisable
est-ce que c’est plus explicite, ou c’est juste moi qui suis à côté de la plaque ?
@Arre intéressant merci, est-ce que c’est spécifié sur une roadmap ou autre que je puisse y jeter un coup d’oeil ? sur le github officiel je ne vois pas de tag v14, juste v13 ou develop. Si tu as une info ca m’intéresse
Non, il n’y a pas de roadmap publique car il n’y a pas d’equipe de dev dédiée « à temps plein » : ça sera selon le temps dispo des différents contributeurs. (l’info vient du lead dev @eldy sur un autre post du forum)
Mais surveiller la branche dev est une bonne idée : après… tu peux aussi manifester ton intérêt sur le github dolibarr et y contribuer
La fonction de décomposition est bien présente dans le module factory (y compris la version gratuite).
pour ce qui est du second besoin (la mise au rebut de certains composant) il est possible soit :
de ne pas les inclures dans la nomenclature de décomposition
de les inclure mais ensuite de les sortir du stock en rebut dans les meme proportions
merci pour vos réponses.
Ca reste flou pour moi … dans la documentation du module factory il n’est toujours mention que de gérer la déconstruction par 1/10e par sur la base d’une BOM par « Ordre de déconstruction », et la version gratuite en v10 que je peux tester n’est pas compatible avec ma v12 actuelle.
Le module payant (à prix tout à fait attractif) fait peut être le job, mais sans documentation claire je ne suis même pas sûr, vous comprenez ma position ?
Voici une requete SQL que j’utilise pour démonter une nomenclature jusqu’ a 3 niveaux :
$sql_nomenclature = 'SELECT ';
$sql_nomenclature.= 'CASE ';
$sql_nomenclature.= 'WHEN ndetfor.fk_product IS NOT NULL THEN ndetfor.fk_product ';
$sql_nomenclature.= 'WHEN ndetter.fk_product IS NOT NULL THEN ndetter.fk_product ';
$sql_nomenclature.= 'WHEN ndetbis.fk_product IS NOT NULL THEN ndetbis.fk_product ';
$sql_nomenclature.= 'WHEN ndet.fk_product IS NOT NULL THEN ndet.fk_product ';
$sql_nomenclature.= 'END ';
$sql_nomenclature.= 'AS id_composant, ';
$sql_nomenclature.= 'CASE ';
$sql_nomenclature.= 'WHEN pfive.ref IS NOT NULL THEN pfive.ref ';
$sql_nomenclature.= 'WHEN pfor.ref IS NOT NULL THEN pfor.ref ';
$sql_nomenclature.= 'WHEN pter.ref IS NOT NULL THEN pter.ref ';
$sql_nomenclature.= 'WHEN pbis.ref IS NOT NULL THEN pbis.ref ';
$sql_nomenclature.= 'END AS REFERENCE, ';
$sql_nomenclature.= 'CASE ';
$sql_nomenclature.= 'WHEN pfive.label IS NOT NULL THEN pfive.label ';
$sql_nomenclature.= 'WHEN pfor.label IS NOT NULL THEN pfor.label ';
$sql_nomenclature.= 'WHEN pter.label IS NOT NULL THEN pter.label ';
$sql_nomenclature.= 'WHEN pbis.label IS NOT NULL THEN pbis.label ';
$sql_nomenclature.= 'END AS DESIGNATION, ';
$sql_nomenclature.= 'CASE ';
$sql_nomenclature.= 'WHEN ndetfor.qty IS NOT NULL THEN ndetfor.qty * ndetter.qty * ndetbis.qty *ndet.qty ';
$sql_nomenclature.= 'WHEN ndetter.qty IS NOT NULL THEN ndetter.qty * ndetbis.qty *ndet.qty ';
$sql_nomenclature.= 'WHEN ndetbis.qty IS NOT NULL THEN ndetbis.qty *ndet.qty ';
$sql_nomenclature.= 'WHEN ndet.qty IS NOT NULL THEN ndet.qty ';
$sql_nomenclature.= 'END ';
$sql_nomenclature.= 'AS quantite ';
$sql_nomenclature.= 'FROM '.MAIN_DB_PREFIX.'nomenclaturedet AS ndet ';
$sql_nomenclature.= 'LEFT JOIN '.MAIN_DB_PREFIX.'nomenclature AS n ON ( n.rowid = ndet.fk_nomenclature) ';
$sql_nomenclature.= 'LEFT JOIN '.MAIN_DB_PREFIX.'product AS p ON (p.rowid = n.fk_object ) ';
$sql_nomenclature.= 'LEFT JOIN '.MAIN_DB_PREFIX.'product AS pbis ON (pbis.rowid = ndet.fk_product ) ';
$sql_nomenclature.= 'LEFT JOIN '.MAIN_DB_PREFIX.'nomenclature AS nbis ON ( nbis.fk_object = pbis.rowid ) ';
$sql_nomenclature.= 'LEFT JOIN '.MAIN_DB_PREFIX.'nomenclaturedet AS ndetbis ON ( ndetbis.fk_nomenclature = nbis.rowid ) ';
$sql_nomenclature.= 'LEFT JOIN '.MAIN_DB_PREFIX.'product AS pter ON (pter.rowid = ndetbis.fk_product ) ';
$sql_nomenclature.= 'LEFT JOIN '.MAIN_DB_PREFIX.'nomenclature AS nter ON ( nter.fk_object = pter.rowid ) ';
$sql_nomenclature.= 'LEFT JOIN '.MAIN_DB_PREFIX.'nomenclaturedet AS ndetter ON ( ndetter.fk_nomenclature = nter.rowid ) ';
$sql_nomenclature.= 'LEFT JOIN '.MAIN_DB_PREFIX.'product AS pfor ON (pfor.rowid = ndetter.fk_product ) ';
$sql_nomenclature.= 'LEFT JOIN '.MAIN_DB_PREFIX.'nomenclature AS nfor ON ( nfor.fk_object = pfor.rowid ) ';
$sql_nomenclature.= 'LEFT JOIN '.MAIN_DB_PREFIX.'nomenclaturedet AS ndetfor ON ( ndetfor.fk_nomenclature = nfor.rowid ) ';
$sql_nomenclature.= 'LEFT JOIN '.MAIN_DB_PREFIX.'product AS pfive ON (pfive.rowid = ndetfor.fk_product ) ';
$sql_nomenclature.= 'WHERE n.rowid ='.$idchoixNOM;// id de la nomenclature
@Maurice63200 merci pour ta contribution, on peut en effet toujours gérer cà directement en base sans interface dans dolibarr… mais du ocup il faudrait aussi gérer les mouvements de stocks à la mano