Files
tradon/modules/purchase_trade/docs/business/coffee.md
2026-06-29 21:16:42 +02:00

118 lines
5.0 KiB
Markdown

<!-- Generated from docs_source/business by docs/tools/render_business_docs.py. -->
# Trading cafe - echantillons et qualite
Page miroir: [coffee.en.md](coffee.en.md)
## BR-PT-COF-001 - Phase 1 echantillons cafe
Statut: active
Source: decision projet du 2026-06-29
### Regle consultant
Le trading cafe doit pouvoir piloter les echantillons rattaches aux lignes
d'achat et de vente.
Chaque echantillon porte:
<ul style="margin:0.65rem 0 1rem 1.1rem; padding-left:1rem; list-style-type:disc;">
<li style="margin:0.38rem 0;">un type d&#x27;echantillon: offer, pre-shipment, shipment, arrival, stock, customer ou retained;
</li>
<li style="margin:0.38rem 0;">un sens purchase ou sale;
</li>
<li style="margin:0.38rem 0;">un cycle de vie: requested, received, sent to lab, under review, approved, rejected, expired, archived;
</li>
<li style="margin:0.38rem 0;">une date d&#x27;expiration calculee depuis la date de demande/reception et la duree de vie de l&#x27;echantillon;
</li>
<li style="margin:0.38rem 0;">des donnees de qualite physique et des liens vers les seances de cupping.
</li>
</ul>
La compatibilite cafe est inactive par defaut et doit etre activee dans la
configuration `purchase_trade.configuration` avec le champ `Active coffee
compatibility`. Tant que l'option est inactive, les menus cafe et les pages
qualite cafe des lignes ne doivent pas etre visibles.
Les resultats de cupping sont saisis dans des seances:
<ul style="margin:0.65rem 0 1rem 1.1rem; padding-left:1rem; list-style-type:disc;">
<li style="margin:0.38rem 0;">les proprietes/criteres de cupping sont parametrables;
</li>
<li style="margin:0.38rem 0;">une seance definit une capacite de salle en nombre de tasses et un nombre de tasses par echantillon;
</li>
<li style="margin:0.38rem 0;">chaque echantillon inscrit a la seance genere plusieurs tasses avec un code aveugle;
</li>
<li style="margin:0.38rem 0;">plusieurs personnes peuvent saisir un resultat par tasse;
</li>
<li style="margin:0.38rem 0;">les degustateurs voient uniquement l&#x27;origine et le type de cafe, pas le contrat ni le fournisseur;
</li>
<li style="margin:0.38rem 0;">l&#x27;ordre de preparation propose les arabicas avant les blends/autres cafes et garde les robustas en fin de seance;
</li>
<li style="margin:0.38rem 0;">la decision finale reste globale a l&#x27;echantillon de seance: approved, rejected ou re-cup.
</li>
</ul>
Les lignes `purchase.line` et `sale.line` portent les specifications qualite
cibles du cafe: origine, process, variete, crop year, screen size, humidite
maximum, nombre de defauts maximum et score cup minimum.
### Notes developpeur
<ul style="margin:0.65rem 0 1rem 1.1rem; padding-left:1rem; list-style-type:disc;">
<li style="margin:0.38rem 0;">Modeles/champs:
<ul style="margin:0.65rem 0 1rem 1.35rem; padding-left:1rem; list-style-type:circle;">
<li style="margin:0.38rem 0;"><code>coffee.sample</code>
</li>
<li style="margin:0.38rem 0;"><code>coffee.cupping.criterion</code>
</li>
<li style="margin:0.38rem 0;"><code>coffee.cupping.session</code>
</li>
<li style="margin:0.38rem 0;"><code>coffee.cupping.session.sample</code>
</li>
<li style="margin:0.38rem 0;"><code>coffee.cupping.cup</code>
</li>
<li style="margin:0.38rem 0;"><code>coffee.cupping.result</code>
</li>
<li style="margin:0.38rem 0;"><code>coffee.cupping.result.line</code>
</li>
<li style="margin:0.38rem 0;"><code>purchase_trade.configuration.active_coffee_compatibility</code>
</li>
<li style="margin:0.38rem 0;"><code>purchase.line.coffee_samples</code>
</li>
<li style="margin:0.38rem 0;"><code>sale.line.coffee_samples</code>
</li>
<li style="margin:0.38rem 0;">champs <code>coffee_*</code> sur <code>purchase.line</code> et <code>sale.line</code>
</li>
</ul>
</li>
<li style="margin:0.38rem 0;">Fichiers:
<ul style="margin:0.65rem 0 1rem 1.35rem; padding-left:1rem; list-style-type:circle;">
<li style="margin:0.38rem 0;"><code>modules/purchase_trade/coffee.py</code>
</li>
<li style="margin:0.38rem 0;"><code>modules/purchase_trade/coffee.xml</code>
</li>
<li style="margin:0.38rem 0;"><code>modules/purchase_trade/view/coffee_sample_*.xml</code>
</li>
<li style="margin:0.38rem 0;"><code>modules/purchase_trade/view/coffee_cupping_*.xml</code>
</li>
<li style="margin:0.38rem 0;"><code>modules/purchase_trade/view/purchase_line_form.xml</code>
</li>
<li style="margin:0.38rem 0;"><code>modules/purchase_trade/view/sale_line_form.xml</code>
</li>
</ul>
</li>
<li style="margin:0.38rem 0;">Points de vigilance:
<ul style="margin:0.65rem 0 1rem 1.35rem; padding-left:1rem; list-style-type:circle;">
<li style="margin:0.38rem 0;">l&#x27;expiration est pilotee par les domaines <code>Expired</code> et <code>Expiring soon</code>;
</li>
<li style="margin:0.38rem 0;">aucun blocage shipment/validation n&#x27;est introduit en phase 1;
</li>
<li style="margin:0.38rem 0;">la delegation labo reste une information de suivi, sans workflow labo complet;
</li>
<li style="margin:0.38rem 0;">les menus cafe sont inactifs par defaut et synchronises quand la configuration est sauvegardee.
</li>
</ul>
</li>
</ul>