# Journal de migration et sessions

Statut: `non canonique`

Cette page sert de routeur vers les notes historiques. Une note devient
canonique seulement quand elle est reprise dans une page thematique.

## Sources historiques

- `modules/purchase_trade/docs/business-rules.md`
- `modules/purchase_trade/docs/business-rules-architecture-proposal.md`
- `notes/business_rules.md`
- `notes/template_business_rules.md`

## Notes deja partiellement promues

- Session `2026-06-02`: demurrage / charter conditions et clauses de contrat,
  a promouvoir dans une page thematique avant de devenir canonique.
  - Demurrage / charter conditions:
    - Les conditions de charter sont portees par `charter.condition`, avec
      clauses laytime/NOR/demurrage/despatch, responsabilite, partie concernee
      et lignes de rates via `charter.condition.rate`.
    - Les contrats Sale et Purchase ont un onglet `Charter Conditions` au
      niveau entete et ligne. Une ligne sans conditions propres herite des
      conditions de l'entete; des conditions de ligne remplacent l'heritage.
    - Les conditions creees depuis une Sale ou une Sale Line sont limitees au
      role `Customer`; celles creees depuis une Purchase ou Purchase Line sont
      limitees au role `Supplier`. Les conditions creees depuis une
      Charter Party ne peuvent pas utiliser les roles `Supplier` ou `Customer`
      afin d'eviter la confusion entre conditions armateur/charte et conditions
      contractuelles achat/vente.
    - Les shipments et SOF exposent les conditions Owner, Supplier et Customer
      retrouvees depuis le charter party et les lots/lignes physiques.
    - Le calcul SOF privilegie la condition appliquee: laytime allowed,
      evenement de debut de laytime, offset de debut, evenement de fin,
      pumping rate, rate demurrage et rate despatch. Les clauses texte
      laytime/NOR/demurrage/despatch restent contractuelles et ne doivent pas
      servir de source de calcul.
    - Un solde de laytime negatif cree une compensation `demurrage`; un solde
      positif peut creer une compensation `despatch` si un rate despatch est
      defini.
  - Contract clauses:
    - Structure ajoutee autour de `contract.clause`, `contract.template`,
      `contract.template.line` et `contract.clause.selection`, visible dans les
      onglets Sale/Purchase et dans les menus globaux Sales/Purchases.
    - Les clauses et templates de reference sont generes depuis
      `STANDARDIZED CONTRACTS - REFERENCE BOOK 2012 (Official version).docx`
      dans `contract_clause_reference.xml`: 53 clauses, 6 templates Sale et
      120 lignes de template.
    - Un script SQL direct PostgreSQL existe dans
      `docs/sql/import_contract_clause_reference.sql` pour alimenter la base
      quand les tables existent deja; il ne remplace pas la mise a jour module
      necessaire pour creer/mettre a jour le schema.
    - Les templates generes sont `direction = sale`, car le document source
      parle de Sales Agreement avec Seller/Buyer. Les variantes Purchase
      doivent etre adaptees avant import si on veut les afficher cote achat.
    - Les variables reconnues sont rendues depuis le contexte contrat
      (`[Contract_Number]`, `[reference]`, `[party]`, `[company]`,
      `[currency]`, `[incoterm]`, `[incoterm_location]`, `[payment_term]`,
      `[product]`, `[quantity]`, `[unit]`, `[product_origin]`, `[del_from]`,
      `[del_to]`). Les variables inconnues restent litterales pour override.
    - Sens metier attendu de `Optional`: une clause optional peut etre retiree
      sans validation juridique; une clause non optional est obligatoire et ne
      devrait pouvoir etre que surchargee. Les overrides devront declencher une
      validation Legal/Juridique dans le workflow; l'utilisation d'un template
      sans modification ne devrait pas la declencher.
- Session `2026-04-30`: PnL fees ouverts et `% rate`, promue dans
  [fees.md](fees.md) et [valuation-pnl-mtm.md](valuation-pnl-mtm.md).
- Session `2026-05-01`: solde ouvert apres lots physiques et lots effectifs
  des fees, promue dans [lots-and-quantities.md](lots-and-quantities.md) et
  [fees.md](fees.md).
- Session `2026-05-06`: Remove physical lot, promue dans
  [lots-and-quantities.md](lots-and-quantities.md).
- Session `2026-05-09`: Lots Management, promue partiellement dans
  [lots-management.md](lots-management.md).
- Session `2026-05-13`: cadrage `quantity_theorical` / `quantity`, amount de
  ligne, Weight basis, invariants de quantite, checks Python bloquants et
  diagnostic SQL. Promue dans
  [lots-and-quantities.md](lots-and-quantities.md),
  [lots-and-quantities.en.md](lots-and-quantities.en.md),
  [invariants.md](invariants.md) et [sql/README.md](sql/README.md).
