Modèle de Données v4.0

26 entités · Axe douanier (CustomsTariff, Country) · Axe financier (Currency, BankAccount, FinancialConfig) · DocumentLine · Paiements client/fournisseur · Pseudo-codes clients · StatusHistory (timeline statuts)

+ CustomsTariff (codes TARES) + Country (pays d'origine) + Currency (devises) + BankAccount (IBAN par devise) + DocumentLine (lignes factures douanières) + FinancialConfig (tableau de bord couverture) + StatusHistory (journal transitions statuts — timeline OP / RMA / Quotation) ~ ProductDivision — 31=Litho, 35=Déposition ~ ProductFamily — short_desc_guide ~ Product — customs_tariff_id + country_of_origin_id ~ ProductSupplierCode — country_of_origin_id ~ ProductCustomerCode — is_pseudo ~ RMA — vat_recoverable ~ OrderProcessing — customer_paid + supplier_paid + transport_out_of_mdc + vat_recoverable (OP header) ~ Document — currency_id + bank_account_id + eur1_required + vat_recoverable + total_ht
Classification produit — 2 axes indépendants
🔺 Axe produit — classification (visible site web)
ProductType
Visible sur le site web
SPA EQU OPT SRV
ProductCategory
Rattachée au Type · OBLIGATOIRE
Optics Mechanics Cold Part
ProductFamily
Porte l'URL site web · OBLIGATOIRE
Wafer Handling Focus System
▸ short_desc_guide affiché à la création produit
Product
Feuille de la classification
MDC-SPA-31-0042-00
🏭 Axe code — Division (interne uniquement, dans le code MDC)
ProductDivision
Atelier de fabrication client · Présent dans le code MDC (position 2) · Non visible sur le site web
31 Litho 32 Implant 33 Etch 34 Épitaxie 35 Déposition
La Division est un critère de codification, pas de classification.
Un produit a une Division (atelier cible), mais la Division ne crée pas une branche dans l'arborescence produit.
MDC-SPA-31-0042-00
ProductFamily porte l'URL — liaison directe Nexus ↔ site web. Ex: /products/spares/optics/wafer-handling
short_desc_guide (v4.0) — texte guide affiché à la création d'un nouveau produit dans la famille.
Division ≠ hiérarchie — la Division est visible dans Nexus (codification, sourcing interne) mais absente de la classification produit externe. v4.0 : 31=Litho · 35=Déposition.
Format du code produit MDC (v3.0 — inchangé)
MDC
Préfixe
SPA
Type · 3c
31
Division · 2c
0042
Séquence · 4c
00
Qualité · 2c
MDC-SPA-31-0042-00 → Spare Part · Litho · N°42 · Neuf MDC-SPA-31-0042-01 → même pièce · Reconditionnée MDC-EQU-34-0001-00 → Équipement · Épitaxie · Neuf MDC-SRV-00-0001-00 → Service (pas de division)
Entités v4.0 — 26 entités
Acteurs
🏢
Customer
Client MDC
  • idPK
  • namestring
  • vat_numberdiscriminant
  • bill_to · ship_toaddress
  • contact_emailstring
🏭
Supplier
Fournisseur
  • idPK
  • namestring
  • default_incotermEXW/CIF/DDP
  • default_discountdecimal %
👤
Contact
Interlocuteur
  • idPK
  • customer_id · supplier_idFKnullable
  • first_name · last_namestring
  • email · phonestring
  • rolestring
Hiérarchie produit
🏷️
ProductType
Table de référence
  • codePKstring(3)
  • labelstring
  • site_urlstring
🏭
ProductDivision
Ateliers fabrication
UPD
  • division_codePKint
  • division_namev4string
📂
ProductCategory
Sous le Type
  • idPK
  • product_type_codeFK→ ProductType
  • codestring
  • labelstring
🔗
ProductFamily
Porte l'URL site web
UPD
  • idPK
  • category_idFK→ Category
  • labelstring
  • site_urlstring
  • short_desc_guidenewstring — guide nommage
📦
Product
Entité centrale — mise à jour v4.0
UPD
  • idPK
  • mdc_refMDC-TYP-DIV-SEQ-QAL
  • descriptionstring 256c
  • product_typeSPA/EQU/OPT/SRV
  • quality00/01
  • division_idFK→ Division
  • category_idFK→ Category
  • product_family_idFK→ Family
  • oem_refoptionnel
  • sourcing_originTRADING/MDC_DE/COPE
  • customs_tariff_idFKnew→ CustomsTariff
  • country_of_origin_idFKnew→ Country
  • shipping_containerCARTON/PALETTE
  • unit · weightstring / decimal
  • technical_datasheet_urlstring
  • statusnewACTIVE/INACTIVE/OBSOLETE
Mapping codes
🔄
ProductSupplierCode
Mapping codes fournisseurs
UPD
  • idPK
  • product_idFK→ Product
  • supplier_idFK→ Supplier
  • supplier_refstring
  • supplier_descriptionstring
  • matching_statusAUTO/MANUAL/UNMATCHED
  • is_primaryboolean
  • country_of_origin_idFKnew→ Country
🤝
ProductCustomerCode
Mapping codes clients
UPD
  • idPK
  • product_idFK→ Product
  • customer_idFK→ Customer
  • customer_refstring
  • customer_descriptionstring
  • matching_statusAUTO/MANUAL/UNMATCHED
  • is_primaryboolean
  • is_pseudonewboolean — pseudo-code client
💰
PriceList
Historique des prix
  • product_idFK
  • supplier_idFK
  • poa · pos · currencydecimal
  • valid_from · valid_todate
  • sourceMANUAL/SQ/INVOICE
Référentiels douaniers & financiers — Nouveaux v4.0
🛃
CustomsTariff
Codes TARES douaniers
NEW
  • idPK
  • tariff_codestring — code TARES
  • descriptionstring
  • vat_ratedecimal %
  • eur1_applicableboolean
🌍
Country
Pays d'origine
NEW
  • idPK
  • iso_codestring(2) — ISO 3166
  • namestring
  • eur1_eligibleboolean
💱
Currency
Devises
NEW
  • idPK
  • codestring(3) — ISO 4217
  • namestring
  • symbolstring
  • is_activeboolean
🏦
BankAccount
IBAN par devise
NEW
  • idPK
  • currency_idFK→ Currency
  • ibanstring
  • bic_swiftstring
  • bank_namestring
  • is_defaultboolean
📊
FinancialConfig
Tableau de bord couverture
NEW
  • idPK
  • config_keystring — clé paramètre
  • config_valuestring
  • descriptionstring
  • updated_atdatetime
📋
DocumentLine
Lignes factures douanières
NEW
  • idPK
  • document_idFK→ Document
  • product_idFK→ Product
  • customs_tariff_idFK→ CustomsTariff
  • country_of_origin_idFK→ Country
  • quantity · unit_pricedecimal
  • line_total_htCALCqty × unit_price
Transactions & Workflow
↩️
RMA
Return Authorization
UPD
  • rma_numberRMA-2026-0001
  • typePRE_QUOTE / POST_PO
  • quotation_idFKnullable
  • order_processing_idFKnullable
  • statusDRAFT→ANALYSED
  • vat_recoverablenewboolean
📄
Quotation
Devis client
  • quotation_numberDEVIS-2026-0001
  • versionA / B / C …
  • customer_idFK
  • statusDRAFT→QUOTED
  • q_rma_switch · q_supplier_quote_switchboolean
QUOTATION LINE
  • product_id · quantity · poa · posFK
📩
SupplierQuotation
Cotation fournisseur (PDF parsé)
  • quotation_idFK→ Quotation
  • supplier_idFK
  • statusRECEIVED / VALIDATED
SUPPLIER QUOTATION LINE
  • supplier_ref · product_idFK
  • poa · discount_pctdecimal
  • discounted_priceCALCpoa×(1-disc)
  • matching_statusAUTO/MANUAL/UNMATCH
⚙️
OrderProcessing
Machine d'états centrale — mise à jour v4.0
UPD
  • op_number · customer_po_refstring
  • customer_idFK
  • quotation_idFKnullable
  • sourcing_strategySTOCK/EX_SUP/VIA_MDC
  • statusmachine d'états
  • op_quotation_switch · op_rma_switchbool
  • customer_paidnewboolean — paiement client
  • supplier_paidnewboolean — paiement fournisseur
  • transport_out_of_mdcnewboolean — OP header, FROMSTOCK/VIA_MDC
  • vat_recoverablenewboolean — OP header, VIA_MDC
  • OP LINE
  • qty_ordered · poa · pos · supplier_idFK
  • qty_actual · date_confirmed · date_shipped
📦
Stock
Disponibilité temps réel
  • product_idFK
  • on_handStock physique
  • in_transit_inEn transit entrant
  • reservedRéservé commandes
  • availableCALCon_hand + transit - reserved
Documents
📁
Document
Table unifiée tous PDFs — mise à jour v4.0
UPD
  • typeSUPPLIER_PO · SUPPLIER_OC
  • SUPPLIER_INVOICE · CUSTOMER_OC
  • CUSTOMER_INVOICE · DELIVERY_NOTICE
  • PRO_FORMA · RMA
  • directionINBOUND / OUTBOUND
  • op_id · quotation_idFKnullable
  • invoice_number · invoice_datestring / date
  • currency_idFKnew→ Currency
  • bank_account_idFKnew→ BankAccount
  • eur1_requirednewboolean
  • vat_recoverablenewboolean
  • total_htnewCALCsomme lignes
📋
DocumentLine
Lignes document avec infos douanières
NEW
  • idPK
  • document_idFK→ Document
  • product_idFK→ Product
  • customs_tariff_idFK→ CustomsTariff
  • country_of_origin_idFK→ Country
  • quantitydecimal
  • unit_pricedecimal
  • line_total_htCALCqty × unit_price
  • description_overridestring nullable
Log & Traçabilité
📝
StatusHistory
Journal des transitions de statuts
NEW
  • idPK
  • entity_typeOrderProcessing · RMA · Quotation · SupplierQuotation
  • entity_idFKUUID de l'objet concerné
  • status_fromstring — null si création initiale
  • status_tostring — nouveau statut
  • changed_atdatetime — auto, non modifiable
  • changed_bystring — utilisateur NEXUS
  • notestext — optionnel
Principe métier — Timeline des statuts

Tout objet ayant un cycle de vie à statuts (OrderProcessing, RMA, Quotation, SupplierQuotation) enregistre chaque changement de statut dans cette table, avec sa date exacte et l'auteur. Ce log immuable permet de reconstituer graphiquement la timeline de vie d'un objet dans les écrans NEXUS.

Exemple — OrderProcessing OP-2026-0042
[RECEIVED 01/03] → [VALIDATED 02/03] → [PRICED 05/03] → [SHIPPED 18/03] → [INVOICED 20/03]

Usages : pilotage des délais · mesure des durées moyennes par étape · audit · traçabilité réglementaire. Les entrées ne sont jamais modifiées ni supprimées.

Règles métier clés — v4.0
RègleDescriptionChamp / Entité
Codes sur les documents Devis / Facture client / OC / Delivery notice → ProductCustomerCode.customer_ref. PO fournisseur → ProductSupplierCode.supplier_ref. Usage interne → Product.mdc_ref. Pseudo-codes clients (is_pseudo = true) : code factice utilisé quand le client n'a pas de référence propre. ProductCustomerCode · ProductSupplierCode · Product
Alerte EUR1 Si Document.total_ht > 6 000 EUR → bandeau d'alerte UI. Le formulaire EUR1 est exigé pour les expéditions hors UE au-delà de ce seuil. Champ eur1_required positionné automatiquement ou manuellement. Document.total_ht · Document.eur1_required
Paiements customer_paid et supplier_paid sont des booléens saisis manuellement sur OrderProcessing — ils alimentent le tableau de bord de couverture FinancialConfig. OrderProcessing.customer_paid · OrderProcessing.supplier_paid
Guide nommage produit ProductFamily.short_desc_guide est affiché à l'écran lors de la création d'un nouveau produit dans la famille, pour guider la saisie de la description courte. ProductFamily.short_desc_guide
Transport out of MDC OrderProcessing.transport_out_of_mdc indique que MDC prend en charge le transport final vers le client — champ sur l'OP header. Applicable sur FROMSTOCK et VIA_MDC uniquement. OrderProcessing.transport_out_of_mdc
Devise par document Chaque document sortant est lié à une Currency et un BankAccount — l'IBAN correspondant est imprimé sur la facture. Un seul BankAccount par devise est marqué is_default = true. Document.currency_id · Document.bank_account_id · BankAccount
Relations clés — v4.0
Currency ──1:N──> BankAccount ──1:N──> Document ──1:N──> DocumentLine │ currency_id bank_account_id └─────────────────────────────────> Document.currency_id CustomsTariff ──1:N──> Product ──1:N──> ProductSupplierCode │ │ └──1:N──> ProductCustomerCode (is_pseudo) └──────────────────> DocumentLine.customs_tariff_id Country ──1:N──> Product.country_of_origin_id └──1:N──> ProductSupplierCode.country_of_origin_id └──1:N──> DocumentLine.country_of_origin_id OrderProcessing (transport_out_of_mdc · vat_recoverable) ──1:N──> OrderProcessingLine │ customer_paid / supplier_paid ─────────────> FinancialConfig (dashboard couverture) └──1:N──> Document ProductType ──> ProductCategory ──> ProductFamily (short_desc_guide) ──> Product ProductDivision ──> Product.division_id (31=Litho · 35=Déposition)