Aller au contenu

Coffee trading - samples and quality

Mirror page: coffee.md

BR-PT-COF-001 - Coffee sample phase 1

Status: active Source: project decision on 2026-06-29

Business rule

Coffee trading must track samples linked to purchase and sale lines.

Each sample stores:

  • a sample type: offer, pre-shipment, shipment, arrival, stock, customer or retained;
  • a purchase or sale direction;
  • a lifecycle: requested, received, sent to lab, under review, approved, rejected, expired, archived;
  • an expiry date computed from the request/receipt date and the sample shelf life;
  • physical quality values and links to cupping sessions.

Coffee compatibility is disabled by default and must be enabled on purchase_trade.configuration with the Active coffee compatibility field. While the option is disabled, coffee menus and coffee quality pages on lines must not be visible.

Cupping results are entered through sessions:

  • cupping properties/criteria are configurable;
  • a session defines the room cup capacity and the number of cups per sample;
  • each sample added to the session generates several blind-coded cups;
  • multiple cuppers can enter a result for each cup;
  • cuppers see only the origin and coffee type, not the contract or supplier;
  • the preparation order proposes arabicas first, blends/other coffees next and robustas at the end of the session;
  • the final decision remains global on the session sample: approved, rejected or re-cup.

purchase.line and sale.line store the target coffee quality specifications: origin, process, variety, crop year, screen size, maximum moisture, maximum defect count and minimum cup score.

Developer notes

  • Models/fields:
    • 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
    • coffee_* fields on purchase.line and sale.line
  • Files:
    • 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
  • Caveats:
    • expiry is monitored through the Expired and Expiring soon domains;
    • phase 1 does not block shipment or contract validation;
    • lab delegation is a tracking field, not a complete lab workflow yet;
    • coffee menus are inactive by default and synchronized when the configuration is saved.

BR-PT-COF-002 - Phase 2 lab delegation

Status: active Source: project decision on 2026-06-29

Business rule

A coffee sample can be delegated to a laboratory. The delegation creates and tracks lab analyses linked to the sample:

  • analysis lifecycle: draft, sent, received, accepted, rejected, cancelled;
  • request, sent, due and received dates;
  • lab report reference;
  • physical and organoleptic results: moisture, screen size, defect count and cup score;
  • compliance check against the target purchase/sale line thresholds.

The sample Send to lab button creates an active lab request when a lab is set and no open analysis already exists.

BR-PT-COF-003 - Phase 3 consolidated quality decision

Status: active Source: project decision on 2026-06-29

Business rule

The quality decision of a sample is consolidated from:

  • the target line quality thresholds;
  • the latest non-cancelled lab analysis;
  • the average cupping results;
  • cupping session decisions, including re-cup and rejected.

The sample exposes a quality status (pending, pass, warning, fail) and a recommended decision (approve, re-cup, reject). The Evaluate quality button applies the recommendation: approval, rejection or review when the sample must be cupped again.

These features remain under Active coffee compatibility and do not add a cross-flow blocking rule for non-coffee flows.