# myFAB Tracabilité documentaire

Ce module permet de :  
\- Récupérer tous les documents liées un enregistrement (et aux enregistrements liées)  
\- Générer des rapports Excel ou jasper liées à un enregistrement (et aux enregistrements liées)  
Exemple :   
Depuis un BL :   
\- Récupérer les document Open-Prod en pièces jointe des article PF et CP, client, Commande, OF, OT, Lot PF et CP, Etiquettes)  
\- Pouvoir générer des rapports pdf (exemple : certificat de conformité, rapport de contrôle… basé sur un rapport Excel ou rapport jasper)  
\- Stocker ces éléments dans le champs document joint du BL (soit tout dans un zip, soit tout en pièce jointe)

# myFAB Tracabilité documentaire

# <span style="mso-fareast-font-family: 'Calibri Light'; mso-fareast-theme-font: major-latin; mso-bidi-font-family: 'Calibri Light'; mso-bidi-theme-font: major-latin; mso-fareast-language: FR;"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Résumé</span>

<span style="mso-fareast-language: FR;">Ce module permet de :</span>

<span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-language: FR;"><span style="mso-list: Ignore;">-<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Récupérer tous les documents liées un enregistrement (et aux enregistrements liées)</span>

<span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-language: FR;"><span style="mso-list: Ignore;">-<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Générer des rapports Excel ou jasper liées à un enregistrement (et aux enregistrements liées)</span>

**<span style="mso-fareast-language: FR;">Exemple : </span>**

<span style="mso-fareast-language: FR;">Depuis un BL : </span>

<span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-language: FR;"><span style="mso-list: Ignore;">-<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Récupérer les document Open-Prod en pièces jointe des article PF et CP, client, Commande, OF, OT, Lot PF et CP, Etiquettes)</span>

<span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-language: FR;"><span style="mso-list: Ignore;">-<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Pouvoir générer des rapports pdf (exemple : certificat de conformité, rapport de contrôle… basé sur un rapport Excel ou rapport jasper)</span>

<span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-language: FR;"><span style="mso-list: Ignore;">-<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Stocker ces éléments dans le champs document joint du BL (soit tout dans un zip, soit tout en pièce jointe)</span>

# <span style="mso-fareast-font-family: 'Calibri Light'; mso-fareast-theme-font: major-latin; mso-bidi-font-family: 'Calibri Light'; mso-bidi-theme-font: major-latin; mso-fareast-language: FR;"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Utilisation</span>

<span style="mso-fareast-language: FR;">Depuis le menu Configuration&gt;Rapport&gt;Liasse documentaire</span>

<span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;"><span style="mso-list: Ignore;">Ø<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Créer une configuration :

![](https://docs.myfab.fr/uploads/images/gallery/2024-09/embedded-image-qm1vvvmd.png)

<span style="mso-no-proof: yes;"> </span>

**<u><span style="mso-fareast-language: FR;">Modèle :</span></u>**<span style="mso-fareast-language: FR;"> sélectionner le modèle au quel s’applique le paramétrage (exemple : stock.picking, mrp.manufacturingorder…)</span>

**<u><span style="mso-fareast-language: FR;">Champ :</span></u>**<span style="mso-fareast-language: FR;"> champ de type « Document Open-Prod » dans lequel les documents (ou le zip) résultant seront stockés.</span>

**<u><span style="mso-fareast-language: FR;">Générer un zip :</span></u>**<span style="mso-fareast-language: FR;"> si cette case est cochée, les documents récupéré seront mis dans un fichier zip. </span>

**<u><span style="mso-fareast-language: FR;">Nom du fichier zip :</span></u>**<span style="mso-fareast-language: FR;"> Modélisation du nom de fichier </span>

**<u><span style="mso-fareast-language: FR;">Type , Tag :</span></u>**<span style="mso-fareast-language: FR;"> type et tag du document Open-Prod contenant le zip généré. </span>

**<u><span style="mso-fareast-language: FR;">Liste des documents : </span></u>**

<span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-language: FR;"><span style="mso-list: Ignore;">-<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Type : Récupérer un document Open-Prod : </span>

<span style="mso-fareast-language: FR;">Grace à ce type on va récupérer la liste des documents Open-Prod dont les id sont renvoyées par la requête SQL.</span>

<span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-language: FR;"><span style="mso-list: Ignore;">-<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Type : Imprimer un rapport jasper</span>

<span style="mso-fareast-language: FR;">Grace à ce type on va lancer l’impression des documents dont on a précisé le modèle d’impression pour les id des enregistrements renvoyées par la requête. </span>

<span style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-language: FR;"><span style="mso-list: Ignore;">-<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Type : Imprimer un rapport Excel</span>

<span style="mso-fareast-language: FR;">Grace à ce type on va lancer l’impression des documents dont on a précisé le modèle d’impression pour les id des enregistrements renvoyées par la requête. </span>

**<span style="mso-fareast-language: FR;">Le bouton Générer action</span>**<span style="mso-fareast-language: FR;"> va créer une action serveur et ajouter l’action sur le modèle concerné</span>

<span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings;"><span style="mso-list: Ignore;">Ø<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Depuis le modèle concerné, on retrouve l’action

<span style="mso-no-proof: yes;"> </span>

<span style="mso-fareast-language: FR;"> </span>![](https://docs.myfab.fr/uploads/images/gallery/2024-09/embedded-image-pefkp50f.png)![](https://docs.myfab.fr/uploads/images/gallery/2024-09/embedded-image-k6p8oslp.png)

<span style="mso-no-proof: yes;"> </span>

**<u><span style="mso-fareast-language: FR;">Génère un zip</span></u>**<span style="mso-fareast-language: FR;"> : génèrera un zip contenant les documents récupères</span>

**<u><span style="mso-fareast-language: FR;">Nom du fichier zip</span></u>**<span style="mso-fareast-language: FR;"> : Nom du fichier zip calculé. </span>

<p class="callout danger">***<u><span style="mso-fareast-language: FR;"><span style="mso-spacerun: yes;">Attention </span></span></u>****<span style="mso-fareast-language: FR;">la génération d’un zip présente l’avantage de figer les données dans le système à un instant T. Cependant cela à pour effet de dupliquer tous les documents ged (un fois à son emplacement d’origine et une fois dans le zip) -&gt; il faudra donc bien surveiller l’espace disque du server hébergeant votre ged (filestore). </span>*</p>

**<u><span style="mso-fareast-language: FR;">Liste des documents :</span></u>**<span style="mso-fareast-language: FR;"> On visualise ici la liste des documents à récupérer/ générer. On peut ici décocher des lignes si on ne souhaite pas récupérer certain éléments</span>

**<u><span style="mso-fareast-language: FR;">Bouton charger :</span></u>**<span style="mso-fareast-language: FR;"> Permet de visualiser les documents récupérés</span>

**<u><span style="mso-fareast-language: FR;">Liste des documents récupérés :</span></u>**<span style="mso-fareast-language: FR;"> on peut ici décocher des lignes que l’on ne souhaite pas intégrer au zip. </span>

**<u><span style="mso-fareast-language: FR;">Télécharger le zip</span></u>**<span style="mso-fareast-language: FR;"> : permet de télécharger le zip (sans quitter la fenêtre) . </span>

**<u><span style="mso-fareast-language: FR;">Bouton Valider :</span></u>**<span style="mso-fareast-language: FR;"> permet de mettre les documents (ou le zip) dans le champs document sélectionné dans le paramétrage.</span>

<p class="callout success"><span style="mso-fareast-language: FR;">**<span style="text-decoration: underline;">Remarques :</span>**   
</span> - Il n’est pas nécessaire de charger les documents -&gt; dans ce cas tous les documents récupérer seront pris.  
 - Pour supprimer une liasse de documentaire de la liste, il suffit de supprimer l'action serveur correspondante. </p>

# <span style="mso-fareast-font-family: 'Calibri Light'; mso-fareast-theme-font: major-latin; mso-bidi-font-family: 'Calibri Light'; mso-bidi-theme-font: major-latin; mso-fareast-language: FR;"><span style="mso-list: Ignore;">3.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Exemple de configuration</span>

## <span style="mso-fareast-font-family: 'Calibri Light'; mso-fareast-theme-font: major-latin; mso-bidi-font-family: 'Calibri Light'; mso-bidi-theme-font: major-latin; mso-fareast-language: FR;"><span style="mso-list: Ignore;">3.1<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Bon de livraison :</span>

<span style="mso-fareast-language: FR;">![](https://docs.myfab.fr/uploads/images/gallery/2024-09/embedded-image-b16otxr0.png)</span>

<span style="mso-no-proof: yes;"> </span>

## <span style="mso-fareast-font-family: 'Calibri Light'; mso-fareast-theme-font: major-latin; mso-bidi-font-family: 'Calibri Light'; mso-bidi-theme-font: major-latin; mso-fareast-language: FR;"><span style="mso-list: Ignore;">3.2<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Bibliothèque de requêtes SQL </span>

- Récupérer les ID des documents liées au articles du BL :

> select doc.id from  
> stock\_picking as bl  
> join stock\_move sm on sm.picking\_id= bl.id  
> join internal\_plan\_document\_openprod\_rel as rel on rel.product\_id=sm.product\_id  
> join document\_openprod doc on rel.document\_id=doc.id  
> where bl.id = %object\_id

- Récupérer les ID des documents liées au étiquettes du BL :   
    select doc.id

> from stock\_picking as bl  
> join stock\_move sm on sm.picking\_id= bl.id  
> join stock\_move\_label sml on sm.id= sml.move\_id   
> join stock\_label sl on sl.id= sml.label\_id   
> join document\_openprod\_stock\_label\_rel as rel on rel.stock\_label\_id =sml.label\_id   
> join document\_openprod doc on rel.document\_openprod\_id =doc.id  
> where bl.id = %object\_id

- Récupérer les ID des documents liées aux étiquettes consommées dans les OF liées au étiquettes du BL :

> \-- liste documents liées étiquettes consommées dans l'OF liées à l'étiquette envoyée (sur 1 niveau)  
> select distinct doc.id   
> from stock\_picking as bl  
> join stock\_move sm on sm.picking\_id= bl.id  
> join stock\_move\_label sml on sm.id= sml.move\_id   
> join stock\_label sl on sl.id= sml.label\_id   
> join stock\_move fistmove on fistmove.id= sl.first\_move\_id   
> join mrp\_workorder wo on wo.id= fistmove.wo\_outgoing\_id   
> join mrp\_workorder wo\_all on wo.mo\_id=wo\_all.mo\_id   
> join stock\_move sm\_conso on sm\_conso.wo\_incoming\_id = wo\_all.id and sm\_conso.state&lt;&gt;'cancel'  
> join stock\_move\_label sml\_conso on sm\_conso.id= sml\_conso.move\_id   
> join document\_openprod\_stock\_label\_rel as rel on rel.stock\_label\_id =sml\_conso.label\_id   
> join document\_openprod doc on rel.document\_openprod\_id =doc.id  
> where bl.id=%object\_id

- Récupérer les ID des OF liées au étiquettes du BL (pour impression document) :

> \-- liste OF liées  
> select distinct wo.mo\_id   
> from stock\_picking as bl  
> join stock\_move sm on sm.picking\_id= bl.id  
> join stock\_move\_label sml on sm.id= sml.move\_id   
> join stock\_label sl on sl.id= sml.label\_id   
> join stock\_move fistmove on fistmove.id= sl.first\_move\_id   
> join mrp\_workorder wo on wo.id= fistmove.wo\_outgoing\_id   
> where bl.id=%object\_id

- Récupérer les ID contrôles qualité terminé liées OF liées au étiquettes du BL (pour impression document) :

> \-- liste contrôles qualité terminés liées aux OT liées  
> select distinct decla\_qualite.id   
> from stock\_picking as bl  
> join stock\_move sm on sm.picking\_id= bl.id  
> join stock\_move\_label sml on sm.id= sml.move\_id   
> join stock\_label sl on sl.id= sml.label\_id   
> join stock\_move fistmove on fistmove.id= sl.first\_move\_id   
> join mrp\_workorder wo on wo.id= fistmove.wo\_outgoing\_id   
> join mrp\_workorder wo\_all on wo.mo\_id=wo\_all.mo\_id   
> join quality\_control\_declaration decla\_qualite on decla\_qualite.wo\_id=wo\_all.id and decla\_qualite.state='done'  
> where bl.id=%object\_id

Récupérer les ID des documents liées aux contrôles qualité terminés liées aux OT liées au BL

> \-- liste document liées aux contrôles qualité terminés liées aux OT liées au BL  
> select distinct doc.id   
> from stock\_picking as bl  
> join stock\_move sm on sm.picking\_id= bl.id  
> join stock\_move\_label sml on sm.id= sml.move\_id   
> join stock\_label sl on sl.id= sml.label\_id   
> join stock\_move fistmove on fistmove.id= sl.first\_move\_id   
> join mrp\_workorder wo on wo.id= fistmove.wo\_outgoing\_id   
> join mrp\_workorder wo\_all on wo.mo\_id=wo\_all.mo\_id   
> join quality\_control\_declaration decla\_qualite on decla\_qualite.wo\_id=wo\_all.id and decla\_qualite.state='done'  
> join quality\_control\_document\_openprod\_rel as rel on decla\_qualite.id =rel.qcd\_id   
> join document\_openprod doc on rel.document\_id =doc.id  
> where bl.id=%object\_id

Récupérer les ID des documents liées à l'OF liées au BL

> SELECT DISTINCT doc.document\_id
> 
> FROM stock\_picking AS bl JOIN stock\_move AS sm ON sm.picking\_id = bl.id
> 
> JOIN stock\_move\_label AS sml ON sm.id = sml.move\_id
> 
> JOIN stock\_label AS sl ON sl.id = sml.label\_id
> 
> JOIN stock\_move AS fistmove ON fistmove.id = sl.first\_move\_id
> 
> JOIN mrp\_workorder AS wo ON wo.id = fistmove.wo\_outgoing\_id
> 
> LEFT OUTER JOIN mo\_document\_openprod\_rel AS doc ON doc.mo\_id = wo.mo\_id
> 
> WHERE bl.id = %object\_id

liste document liées aux contrôles qualité terminés liées aux MP consommés sur les OT liées au BL

> \-- liste document liées aux contrôles qualité terminés liées aux MP consommés sur les OT liées au BL   
> select distinct doc.id   
> from stock\_picking as bl   
> join stock\_move sm on sm.picking\_id= bl.id   
> join stock\_move\_label sml on sm.id= sml.move\_id   
> join stock\_label sl on sl.id= sml.label\_id   
> join stock\_move fistmove on fistmove.id= sl.first\_move\_id   
> join mrp\_workorder wo on wo.id= fistmove.wo\_outgoing\_id   
> join mrp\_workorder wo\_all on wo.mo\_id=wo\_all.mo\_id   
> join stock\_move sm\_conso on sm\_conso.wo\_incoming\_id = wo\_all.id and sm\_conso.state&lt;&gt;'cancel'   
> join stock\_move\_label sml\_conso on sm\_conso.id= sml\_conso.move\_id join stock\_label slconso on slconso.id = sml\_conso.label\_id   
> join stock\_move fistmove\_label\_conso on fistmove\_label\_conso.id = slconso.first\_move\_id   
> join quality\_control\_declaration decla\_qualite on decla\_qualite.id= fistmove\_label\_conso.control\_declaration\_id and decla\_qualite.state='done'   
> join quality\_control\_document\_openprod\_rel as rel on decla\_qualite.id =rel.qcd\_id   
> join document\_openprod doc on rel.document\_id =doc.id   
> where bl.id=%object\_id

Exemples depuis l'OF :

<table border="0" cellpadding="0" cellspacing="0" class="MsoNormalTable" id="bkmrk-nom-type-requ%C3%AAte-sql" style="border-collapse: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 0cm 0cm 0cm;"><tbody><tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;"><td style="width: 163.15pt; border: solid #A3A3A3 1.0pt; background: #EEEEEE; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="218">**<span style="color: black;">Nom</span>**

</td><td style="width: 106.85pt; border: solid #A3A3A3 1.0pt; border-left: none; background: #EEEEEE; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="142">**<span style="color: black;">Type</span>**

</td><td style="width: 344.9pt; border: solid #A3A3A3 1.0pt; border-left: none; background: #EEEEEE; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="460">**<span style="color: black;">Requête SQL</span>**

</td></tr><tr style="mso-yfti-irow: 1;"><td style="width: 163.15pt; border: solid #A3A3A3 1.0pt; border-top: none; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="218">Imprime les documents de contrôle qualité de l'OF

</td><td style="width: 108.2pt; border-top: none; border-left: none; border-bottom: solid #A3A3A3 1.0pt; border-right: solid #A3A3A3 1.0pt; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="144">Imprimer un rapport excel

</td><td style="width: 344.9pt; border-top: none; border-left: none; border-bottom: solid #A3A3A3 1.0pt; border-right: solid #A3A3A3 1.0pt; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="460">select distinct decla\_qualite.id

from mrp\_workorder wo\_all

join quality\_control\_declaration decla\_qualite on decla\_qualite.wo\_id=wo\_all.id and decla\_qualite.state='done'

where wo\_all.mo\_id=%object\_id

</td></tr><tr style="mso-yfti-irow: 2;"><td style="width: 163.15pt; border: solid #A3A3A3 1.0pt; border-top: none; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="218">Récupère les documents de l'OF

</td><td style="width: 108.2pt; border-top: none; border-left: none; border-bottom: solid #A3A3A3 1.0pt; border-right: solid #A3A3A3 1.0pt; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="144">Récupérer un document openprod

</td><td style="width: 344.9pt; border-top: none; border-left: none; border-bottom: solid #A3A3A3 1.0pt; border-right: solid #A3A3A3 1.0pt; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="460">SELECT docrel.document\_id

FROM mrp\_manufacturingorder AS mrp

FULL OUTER JOIN mo\_document\_openprod\_rel AS docrel ON docrel.mo\_id = mrp.id

left join document\_openprod as doc on (doc.id = docrel.document\_id )

left join document\_type\_openprod AS t0 on ( t0.id=doc.type\_id)

left join document\_tag\_rel AS DTR on (DTR.document\_id=doc.id)

 left join tracker\_tag AS TT on (DTR.tag\_id=TT.ID)

WHERE mrp.id = %object\_id

and TT.name = 'CLIENT'

</td></tr><tr style="mso-yfti-irow: 3;"><td style="width: 163.15pt; border: solid #A3A3A3 1.0pt; border-top: none; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="218">Récupère le certificat MP depuis contrôle qualité fournisseur

</td><td style="width: 108.2pt; border-top: none; border-left: none; border-bottom: solid #A3A3A3 1.0pt; border-right: solid #A3A3A3 1.0pt; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="144">Récupérer un document openprod

</td><td style="width: 346.25pt; border-top: none; border-left: none; border-bottom: solid #A3A3A3 1.0pt; border-right: solid #A3A3A3 1.0pt; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="462">select distinct doc.id

from mrp\_workorder wo\_all

join stock\_move sm\_conso on sm\_conso.wo\_incoming\_id = wo\_all.id and sm\_conso.state&lt;&gt;'cancel'

join stock\_move\_label sml\_conso on sm\_conso.id= sml\_conso.move\_id

join stock\_label slconso on slconso.id = sml\_conso.label\_id

join stock\_move fistmove\_label\_conso on fistmove\_label\_conso.id = slconso.first\_move\_id

join quality\_control\_declaration decla\_qualite on decla\_qualite.id= fistmove\_label\_conso.control\_declaration\_id and decla\_qualite.state='done'

join quality\_control\_document\_openprod\_rel as rel on decla\_qualite.id =rel.qcd\_id

join document\_openprod doc on rel.document\_id =doc.id

where wo\_all.mo\_id=%object\_id

</td></tr><tr style="mso-yfti-irow: 5; mso-yfti-lastrow: yes;"><td style="width: 163.15pt; border: solid #A3A3A3 1.0pt; border-top: none; background: white; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="218"><span style="color: black;">Imprime les étiquettes du PF</span>

</td><td style="width: 106.85pt; border-top: none; border-left: none; border-bottom: solid #A3A3A3 1.0pt; border-right: solid #A3A3A3 1.0pt; background: white; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="142"><span style="color: black;">Imprimer un rapport jasper</span>

</td><td style="width: 344.9pt; border-top: none; border-left: none; border-bottom: solid #A3A3A3 1.0pt; border-right: solid #A3A3A3 1.0pt; background: white; padding: 4.0pt 4.0pt 4.0pt 4.0pt;" valign="top" width="460"><span style="color: black;">select distinct sl.id</span>

<span style="color: black;">from stock\_label sl </span>

<span style="color: black;">join stock\_move fistmove on fistmove.id= sl.first\_move\_id </span>

<span style="color: black;">join mrp\_workorder wo on wo.id= fistmove.wo\_outgoing\_id </span>

<span style="color: black;">where wo.mo\_id=%object\_id</span>

</td></tr></tbody></table>

<span style="mso-fareast-language: FR;"> </span>

# <span style="mso-fareast-font-family: 'Calibri Light'; mso-fareast-theme-font: major-latin; mso-bidi-font-family: 'Calibri Light'; mso-bidi-theme-font: major-latin; mso-fareast-language: FR;"><span style="mso-list: Ignore;">4.<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Pour aller plus loin avec peu de travail ! </span>

## <span style="mso-fareast-font-family: 'Calibri Light'; mso-fareast-theme-font: major-latin; mso-bidi-font-family: 'Calibri Light'; mso-bidi-theme-font: major-latin; mso-fareast-language: FR;"><span style="mso-list: Ignore;">4.1<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Exemple d’une exécution automatique sans interface (pour mettre par exemple cette action serveur dans une action automatisée au traitement du BL)</span>

<span style="mso-no-proof: yes;"> </span>

<span style="mso-no-proof: yes;"> </span>![](https://docs.myfab.fr/uploads/images/gallery/2024-09/embedded-image-fxhdoilu.png)

<span style="mso-no-proof: yes;"> </span>

> \#----------------------------------------------------------------------------------  
> \# génère automatiquement la liasse documentaire ayant l'ID 1   
> \#----------------------------------------------------------------------------------  
> ctx=env.context.copy()  
> ctx\['default\_mf\_docu\_bundle\_id'\]=1 # id de la liasse documentaire  
> ctx\['default\_mf\_data\_ids'\]=str(objects.ids) # id des objets sur les quelles lancer la liasse  
> ctx\['default\_mf\_data\_model'\]=str(objects.\_model.\_name) # nom du modèle sur lequel lancer la liasse documentaire.
> 
> \# crée le wizard  
> liasse\_documentaire=env\['mf.docu.bundle.wiz'\].with\_context(ctx).create({})  
> \# valide le wizard  
> liasse\_documentaire.validate()

## <span style="mso-fareast-font-family: 'Calibri Light'; mso-fareast-theme-font: major-latin; mso-bidi-font-family: 'Calibri Light'; mso-bidi-theme-font: major-latin; mso-fareast-language: FR;"><span style="mso-list: Ignore;">4.2<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Exécute la liasse documentaire BL du client : </span>

<span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: FR;"><span style="mso-list: Ignore;">è<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Ajout champs perso « x\_liasse\_doc\_partenaire\_id » sur fiche partenaire (many2one) avec </span>

<span style="font-family: 'Courier New'; mso-fareast-font-family: 'Courier New'; mso-fareast-language: FR;"><span style="mso-list: Ignore;">o</span></span> Modèle <span style="mso-fareast-language: FR;">: mf.docu.bundle </span>

<span style="font-family: 'Courier New'; mso-fareast-font-family: 'Courier New'; mso-fareast-language: FR;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">domain : \[('mf\_model\_id','=','stock.picking')\] </span>

<span style="font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-language: FR;"><span style="mso-list: Ignore;">è<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="mso-fareast-language: FR;">Action server sur BL : </span>

<span style="mso-no-proof: yes;"> </span>

<span style="color: black; mso-color-alt: windowtext;">\#récupère la liasse documentaire du partenaire</span>

<span style="color: black; mso-color-alt: windowtext;">liasse\_doc\_id=object.partner\_id.x\_liasse\_doc\_partenaire\_id or 1</span>

<span style="color: black; mso-color-alt: windowtext;">\# lance le wizard avec la bonne config</span>

<span style="color: black; mso-color-alt: windowtext;">action={</span>

<span style="color: black; mso-color-alt: windowtext;"><span style="mso-spacerun: yes;"> </span>"name": "Liasse documentaire BL",</span>

<span style="color: black; mso-color-alt: windowtext;"><span style="mso-spacerun: yes;"> </span>"view\_mode": "form",</span>

<span style="color: black; mso-color-alt: windowtext;"><span style="mso-spacerun: yes;"> </span>"res\_model": "mf.docu.bundle.wiz",</span>

<span style="color: black; mso-color-alt: windowtext;"><span style="mso-spacerun: yes;"> </span>"type": "ir.actions.act\_window",</span>

<span style="color: black; mso-color-alt: windowtext;"><span style="mso-spacerun: yes;"> </span>"target": "new",</span>

<span style="color: black; mso-color-alt: windowtext;"><span style="mso-spacerun: yes;"> </span>"context": {"default\_mf\_docu\_bundle\_id": liasse\_doc\_id,"default\_mf\_data\_ids":str(objects.ids),"default\_mf\_data\_model":str(objects.\_model.\_name)}</span>

<span style="color: black; mso-color-alt: windowtext;">}</span>

<span style="mso-fareast-language: FR;"> </span>

<span style="mso-fareast-language: FR;"> </span>

<span style="mso-fareast-language: FR;"> </span>

<span style="mso-fareast-language: FR;"><span style="mso-spacerun: yes;"> </span></span>

<span style="mso-fareast-language: FR;"> </span>

<span style="mso-fareast-language: FR;"><span style="mso-spacerun: yes;"> </span></span>

<span style="mso-fareast-language: FR;"></span>