27 entités · Incoterm déplacé Customer → ShipTo · Document enrichi (carrier/incoterm override + origin statement)
Un Customer = un Sold To = 1 Bill To (adresse de facturation sur l'entité Customer) + N Ship To (adresses de livraison distinctes).
Incoterm + Carrier (v7.1) : chaque adresse Ship To porte ses propres conditions logistiques (incoterm, lieu incoterm, transporteur, n° compte). Pré-remplis sur la facture, modifiables à la génération via Document.carrier_override et Document.incoterm_override.
Tout objet ayant un cycle de vie à statuts (OrderProcessing, RMA, Quotation) enregistre chaque changement de statut avec sa date et l'auteur. Log immuable permettant de reconstituer la timeline de vie dans les écrans NEXUS.
| Règle | Description | Champ / Entité |
|---|---|---|
| TVA par pays (v7) | La TVA est gérée à deux niveaux : Country.default_vat_rate (taux par défaut, ex: France 20 %, Suisse 8,1 %) et Customer.vat_applicable (boolean) qui permet d'exonérer un client spécifique (ex: CERN, organisme international). Le champ vat_number stocke le numéro d'identification TVA intracommunautaire. |
Customer.vat_applicable · Customer.vat_number · Country.default_vat_rate |
| Identifiants légaux FR (v7) | Pour les clients publics français (type CNRS), trois champs nullables sur Customer : siren (9 caractères), siret (14 caractères), chorus_pro_code (jusqu'à 110 caractères — plateforme dématérialisée factures publiques). Ces champs sont obligatoires sur les factures émises vers ces entités. |
Customer.siren · Customer.siret · Customer.chorus_pro_code |
| Incoterm sur Ship To (v7.1) | ShipTo.incoterm et ShipTo.incoterm_source portent les conditions de livraison par adresse Ship To (ex: Montrouge = DDP, ECTRA = EXW Genève). ShipTo.carrier et ShipTo.carrier_account complètent avec le transporteur habituel. Ces valeurs pré-remplissent le document — modifiables via Document.incoterm_override et Document.carrier_override (nullable). |
ShipTo.incoterm · ShipTo.incoterm_source · ShipTo.carrier · ShipTo.carrier_account · Document.incoterm_override · Document.carrier_override |
| Texte d'origine sur facture (v7.1) | Document.origin_statement (string nullable) permet d'ajouter un texte libre en bas de facture indiquant l'origine des marchandises (ex: "Goods of Swiss origin"). Pré-rempli automatiquement si tous les produits du document partagent le même country_of_origin_id, sinon saisi manuellement à la génération. |
Document.origin_statement · DocumentLine.country_of_origin_id |
| Sold To / Bill To / Ship To | Un Customer = 1 Sold To (entité légale donneuse d'ordre) = 1 Bill To (adresse facturation sur l'entité Customer) + N Ship To (entités ShipTo). Une même adresse ShipTo peut être partagée entre plusieurs Customers (ex: ST Crolles 1 et ST Crolles 2 partagent un Ship To Extra). |
Customer.bill_to · ShipTo (N:N via table liaison) |
| Codes sur les documents | Devis / Facture client / OC / Delivery notice → ProductCustomerCode.customer_ref. PO fournisseur → ProductSupplierCode.supplier_ref. Usage interne → Product.mdc_ref. |
ProductCustomerCode · ProductSupplierCode · Product |
| Délais de paiement | due_date_customer = invoice_date + Customer.payment_term_days. due_date_supplier = invoice_date + Supplier.payment_term_days. Alimentent le Financial Management Dashboard. |
Document.due_date_customer · Document.due_date_supplier |
| Alerte EUR1 | Si Document.total_ht > 6 000 EUR → bandeau d'alerte UI. EUR1 exigé pour les expéditions hors UE au-delà de ce seuil. |
Document.eur1_required · Document.total_ht |