# 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: - un type d'echantillon: offer, pre-shipment, shipment, arrival, stock, customer ou retained; - un sens purchase ou sale; - un cycle de vie: requested, received, sent to lab, under review, approved, rejected, expired, archived; - une date d'expiration calculee depuis la date de demande/reception et la duree de vie de l'echantillon; - des donnees de qualite physique et des liens vers les seances de cupping. 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: - les proprietes/criteres de cupping sont parametrables; - une seance definit une capacite de salle en nombre de tasses et un nombre de tasses par echantillon; - chaque echantillon inscrit a la seance genere plusieurs tasses avec un code aveugle; - plusieurs personnes peuvent saisir un resultat par tasse; - les degustateurs voient uniquement l'origine et le type de cafe, pas le contrat ni le fournisseur; - l'ordre de preparation propose les arabicas avant les blends/autres cafes et garde les robustas en fin de seance; - la decision finale reste globale a l'echantillon de seance: approved, rejected ou re-cup. 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 - Modeles/champs: - `coffee.sample` - `coffee.cupping.criterion` - `coffee.cupping.session` - `coffee.cupping.session.sample` - `coffee.cupping.cup` - `coffee.cupping.result` - `coffee.cupping.result.line` - `purchase_trade.configuration.active_coffee_compatibility` - `purchase.line.coffee_samples` - `sale.line.coffee_samples` - champs `coffee_*` sur `purchase.line` et `sale.line` - Fichiers: - `modules/purchase_trade/coffee.py` - `modules/purchase_trade/coffee.xml` - `modules/purchase_trade/view/coffee_sample_*.xml` - `modules/purchase_trade/view/coffee_cupping_*.xml` - `modules/purchase_trade/view/purchase_line_form.xml` - `modules/purchase_trade/view/sale_line_form.xml` - Points de vigilance: - l'expiration est pilotee par les domaines `Expired` et `Expiring soon`; - aucun blocage shipment/validation n'est introduit en phase 1; - la delegation labo reste une information de suivi, sans workflow labo complet; - les menus cafe sont inactifs par defaut et synchronises quand la configuration est sauvegardee.