# BR-PT-002 - Le lot physique est le pont metier entre purchase, sale et shipment

## Intent

Disposer d'un chemin unique et stable pour retrouver les informations logistiques et de facturation reliees a un contrat d'achat ou de vente.

## Scope

- Domaine: `purchase_trade`
- Flux: navigation metier entre achat, vente, shipment et facture
- Priorite: `structurante`

## Expected Behavior

Le lot physique (`lot_type = physic`) porte simultanement le lien vers:

- la `purchase.line` via `lot.line`
- la `sale.line` via `lot.sale_line`
- le shipment via `lot.lot_shipment_in` / `lot.lot_shipment_internal` / `lot.lot_shipment_out`

Pour toute logique qui doit naviguer entre achat, vente, shipment et facture, il faut privilegier ce lot physique comme source de verite.

Depuis une facture d'achat:

- remonter a la `purchase.line`
- puis au lot physique de la ligne
- puis au shipment et aux donnees logistiques associees

Depuis une facture de vente:

- remonter a la `sale.line`
- puis au lot physique matchant qui porte aussi la `purchase.line`
- puis au shipment et aux donnees logistiques associees

## Typical Use Cases

- recuperer `bl_date`, `bl_number`, `controller`, `from_location`, `to_location`
- retrouver une facture provisoire liee au lot
- retrouver des fees rattaches au shipment

## Impacted Files

- `modules/purchase_trade/lot.py`
- `modules/purchase_trade/purchase.py`
- `modules/purchase_trade/sale.py`
- `modules/purchase_trade/invoice.py`
- Templates facture relies aux donnees logistiques, si le flux documentaire est concerne.

## Tests

Couvrir les changements au plus proche du flux modifie:

- navigation achat vers lot physique puis shipment
- navigation vente vers lot physique puis shipment
- cas sans lot physique pertinent

## Open Questions

- Documenter au cas par cas les champs exposes au reporting facture quand ils dependent de cette navigation.
