Espace client

Modele de Donnees v11.0

30 entites · Paliers de quantite (D-11-04) : PriceList +min_quantity (prix degressifs fournisseur) + SuggestedPrice +min_quantity (grille tarifaire client 1-5/6-20/21+) — alimente le simulateur de prix Phase 6

~ PriceList — +min_quantity int (paliers prix achat fournisseur) ~ SuggestedPrice — +min_quantity int (grille tarifaire PVC client) v10 : SuggestedPrice NEW · PriceList +customer_id · Product +quality_suffix · ProductLink +VARIANT
Classification produit — 2 axes independants
Axe produit — classification (visible site web)
ProductType
Visible sur le site web
SPA EQU OPT SRV
ProductCategory
Rattachee au Type · OBLIGATOIRE
Optics Mechanics Chucks
ProductFamily
Porte l'URL site web · OBLIGATOIRE
Wafer Handling Probe Accessories
short_desc_guide affiche a la creation 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 · Present dans le code MDC (position 2) · Non visible sur le site web
31 Litho 32 Implant 33 Etch
La Division est un critere de codification, pas de classification.
MDC-SPA-31-0042-00
ProductFamily porte l'URL — liaison directe Nexus / site web. Ex: /products/spares/optics/wafer-handling
short_desc_guide — texte guide affiche a la creation d'un nouveau produit dans la famille.
Division ≠ hierarchie — visible dans Nexus (codification, sourcing interne) mais absente de la classification produit externe.
Format du code produit MDC (v3.0 — inchange)
MDC
Prefixe
SPA
Type · 3c
31
Division · 2c
0042
Sequence · 4c
00
Qualite · 2c
v10 — quality_suffix : champ complementaire char(1) sur Product — N (Neuf) ou R (Reconditionne). Permet la duplication rapide d'une fiche produit entre les deux qualites sans modifier le code de reference.
MDC-SPA-31-0042-00 → Spare Part · Litho · N°42 · Neuf MDC-EQU-34-0001-00 → Equipement · Epitaxie · Neuf MDC-SRV-00-0001-00 → Service (pas de division) MDC-SPA-37-0015-00 → Mercury spare vial · Metrologie · Neuf (reclassifie SPA en v8)
Entites v10.0 — 30 entites
Acteurs
🏢
Customer
Client MDC (Sold To)
UPD v7
  • idPK
  • namestring
  • vat_numberN° TVA intracommunautaire
  • vat_applicablev7boolean — ex: CERN exonere
  • bill_toaddress
  • contact_emailstring
  • currencyISO code (CHF/EUR/USD...)
  • payment_term_daysint — delai paiement (jours)
  • sirenv7string(9) — nullable
  • siretv7string(14) — nullable
  • chorus_pro_codev7string(110) — nullable
🏭
Supplier
Fournisseur
  • idPK
  • namestring
  • default_incotermEXW/CIF/DDP
  • default_discountdecimal %
  • payment_term_daysint — delai paiement (jours)
👤
Contact
Interlocuteur client ou fournisseur
UPD
  • idPK
  • customer_idFK→ Customer (nullable)
  • supplier_idFK→ Supplier (nullable)
  • contact_typeCUSTOMER / SUPPLIER / BOTH
  • first_name · last_namestring
  • email · phonestring
  • rolestring
Adresses de livraison
📦
ShipTo
Adresse de livraison (enrichie v7)
UPD v7
  • idPK
  • customer_idFK→ Customer (nullable — N:N possible)
  • labelstring — libelle site
  • address · city · zipstring
  • country_idFK→ Country
  • incotermv7.1string — ex: DDP, DAP, EXW (nullable)
  • incoterm_sourcev7.1string — lieu d'origine (nullable)
  • carrierv7string — ex: FedEx, DHL
  • carrier_accountv7string — n° compte client transporteur
Regle v7.0 — Hierarchie Sold To / Bill To / Ship To

Un Customer = un Sold To = 1 Bill To + N Ship To. Une meme adresse ShipTo peut etre partagee entre plusieurs Customers (N:N).

Cas confirme en v8 — ST Crolles x 4
ST Crolles 1 → Bill To A → ShipTo Crolles 1 / ShipTo ECTRA (partage)
ST Crolles 2 → Bill To B → ShipTo Crolles 2 / ShipTo ECTRA (partage)
ST Montrouge → Bill To C → ShipTo Montrouge (DAP)
ST ECTRA → Bill To D → ShipTo ECTRA (EXW Geneva) — partage ST Crolles 1+2
ShipTo ECTRA = partage entre ST Crolles 1 et ST Crolles 2

Incoterm + Carrier (v7.1) : chaque ShipTo porte ses conditions logistiques. Modifiables a la generation via Document.carrier_override et Document.incoterm_override.

Hierarchie produit
🏷️
ProductType
Table de reference
  • codePKstring(3)
  • labelstring
  • site_urlstring
🏭
ProductDivision
Ateliers fabrication
UPD
  • division_codePKint
  • division_namestring
📂
ProductCategory
Sous le Type
  • idPK
  • product_type_codeFK→ ProductType
  • code · labelstring
🔗
ProductFamily
Porte l'URL site web
UPD
  • idPK
  • category_idFK→ Category
  • labelstring
  • site_urlstring
  • short_desc_guidestring — guide nommage
QualityLevel
Referentiel qualite configurable
NEW v8
  • idPK
  • codev8string(2) — ex: 00, 01, 02
  • labelv8string — ex: Neuf, Rec. N1 — Reconditionne Niveau 1
  • descriptionv8text nullable — detail du niveau qualite
  • is_activev8boolean
  • sort_orderv8int — ordre d'affichage
📦
Product
Entite centrale — mise a jour v10
UPD v10
  • idPK
  • mdc_refMDC-TYP-DIV-SEQ-QAL
  • description_shortstring 64c
  • description_longtext 1000c
  • product_typeSPA/EQU/OPT/SRV
  • quality_level_idFKv8→ QualityLevel (remplace quality enum)
  • quality_suffixv10char(1) nullable — N (Neuf) / R (Reconditionne)
  • division_idFK→ Division
  • category_idFK→ Category
  • product_family_idFK→ Family
  • oem_refoptionnel
  • sourcing_originTRADING/MDC_DE/COPE
  • customs_tariff_idFK→ CustomsTariff
  • country_of_origin_idFK→ Country
  • shipping_containerCARTON/PALETTE
  • unit · weightstring / decimal
  • statusACTIVE/INACTIVE/OBSOLETE
Sales BOM, Substitutions & Variantes — UPD v10
🧩
ProductLink
Lien inter-produits (+VARIANT v10)
UPD v10
  • idPK
  • parent_product_idFKv8→ Product (produit mere)
  • child_product_idFKv8→ Product (composant / substitut / variante)
  • link_typev10COMPONENT / SUBSTITUTE / ACCESSORY / VARIANT
  • quantityv8decimal nullable — qte composant
  • notesv8text nullable
  • is_activev8boolean
Regle v10.0 — VARIANT : lien Neuf / Reconditionne

Contexte atelier 11 : MDC duplique de nombreuses fiches produit en version Neuf (N) et Reconditionne (R). Le link_type VARIANT lie ces deux versions pour permettre la navigation et la selection dans les ecrans NEXUS (ex: lors d'une cotation, proposer la version Rec. si Neuf est en rupture).

Cas concret — Duplication N/R
Product: LAM Chuck 8" Neuf (MDC-EQU-31-0020-00) · quality_suffix=N
↳ ProductLink (VARIANT): LAM Chuck 8" Reconditionne (MDC-EQU-31-0020-01) · quality_suffix=R
quality_suffix facilite la duplication rapide depuis l'outil
COMPONENT
Composant vendu avec le produit mere
SUBSTITUTE
Alternative si rupture (meme fonction)
ACCESSORY
Accessoire complementaire a la vente
VARIANT v10
Variante Neuf ↔ Reconditionne du meme produit
Mapping codes & Prix
🔄
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_idFK→ Country
🤝
ProductCustomerCode
Mapping codes clients
UPD
  • idPK
  • product_idFK→ Product
  • customer_idFK→ Customer
  • customer_refstring
  • customer_descriptionstring
  • matching_statusAUTO/MANUAL/UNMATCHED
  • is_primary · is_pseudoboolean
  • logistics_remarktext
  • contact_idFK→ Contact (referent produit)
💰
PriceList
Prix achat fournisseur — +client v10 · +paliers v11
UPD v11
  • idPK
  • product_id · supplier_idFK
  • customer_idFKv10→ Customer (nullable — prix specifique client)
  • min_quantityv11int DEFAULT 1 — palier de quantite
  • poa · pos · currencydecimal
  • valid_from · valid_todate
  • sourceMANUAL/SQ/INVOICE
Module Prix de Vente Conseille (PVC) — NEW v10 · +paliers quantite v11
📊
SuggestedPrice
PVC — +paliers quantite v11
UPD v11
  • idPK
  • product_idFKv10→ Product (NOT NULL)
  • supplier_idFKv10→ Supplier (nullable)
  • min_quantityv11int DEFAULT 1 — palier de quantite
  • suggested_pricev10decimal — prix conseille HT
  • reliability_weightv10float(0-1) — confiance source
  • source_typev10ORBIT / COMPETITOR / PARTNER / MANUAL
  • valid_fromv10date
  • valid_tov10date nullable
  • notesv10text nullable
  • created_atv10datetime
Regle v10.0 — Module PVC (Prix de Vente Conseille)

Contexte atelier 11 : MDC souhaite disposer d'un prix de vente conseille (PVC) par produit, derive des donnees marche (ORBIT, concurrents, partenaires) et saisie manuelle. Ce PVC sert de reference lors de la generation de devis — il est affiché en vis-a-vis du POA / POS pour aider l'operateur a positionner son prix de vente.

Flux d'alimentation PVC
ORBIT report (market data) → source_type=ORBIT · reliability_weight=0.85
Concurrent (scraping/veille) → source_type=COMPETITOR · reliability_weight=0.70
Partenaire (accord echange) → source_type=PARTNER · reliability_weight=0.90
Saisie manuelle (experience) → source_type=MANUAL · reliability_weight=0.60-1.0
Affiche dans Screen 02 Generate Customer Quote a cote du POS
reliability_weight
Coefficient de confiance 0-1. Permet de ponderer les sources multiples et d'afficher un indice de fiabilite dans l'UI.
valid_to nullable
Un PVC sans date de fin reste actif indefiniment. Plusieurs PVC peuvent coexister par produit (historique et comparaison multi-sources).
Referentiels douaniers & financiers — v4.0
🛃
CustomsTariff
Codes TARES douaniers
NEW
  • idPK
  • tariff_codestring — code TARES
  • descriptionstring
  • vat_ratedecimal %
  • eur1_applicableboolean
🌍
Country
Pays d'origine · TVA par defaut
NEW
  • idPK
  • iso_codestring(2) — ISO 3166
  • namestring
  • eur1_eligibleboolean
  • default_vat_ratev7decimal % — ex: FR 20 % · CH 8,1 %
💱
Currency
Devises
NEW
  • idPK
  • codestring(3) — ISO 4217
  • name · symbolstring
  • is_activeboolean
🏦
BankAccount
IBAN par devise
NEW
  • idPK
  • currency_idFK→ Currency
  • iban · bic_swift · bank_namestring
  • is_defaultboolean
📊
FinancialConfig
Dashboard couverture
NEW
  • idPK
  • config_key · config_valuestring
  • description · updated_atstring / datetime
📋
DocumentLine
Lignes factures douanieres
NEW
  • idPK
  • document_idFK→ Document
  • product_id · customs_tariff_id · country_of_origin_idFK
  • quantity · unit_pricedecimal
  • line_total_htCALC
Transactions & Workflow
↩️
RMA
Return Authorization
UPD
  • rma_numberRMA-2026-0001
  • typePRE_QUOTE / POST_PO
  • quotation_id · order_processing_idFKnullable
  • contact_idFK→ Contact (signataire RMA)
  • statusDRAFT→ANALYSED
  • vat_recoverableboolean
📄
Quotation
Devis client
  • quotation_numberDEVIS-2026-0001
  • versionA / B / C ...
  • customer_idFK
  • statusDRAFT→QUOTED
  • q_rma_switch · q_supplier_quote_switchboolean
📩
SupplierQuotation
Cotation fournisseur recue (PDF)
UPD v9
  • quotation_idFK→ Quotation (nullable)
  • supplier_idFK→ Supplier
  • statusRECEIVED / VALIDATED
  • supplier_quotation_numberv9ref doc fournisseur
  • mdc_request_refv9ref demande MDC (soft key)
  • quote_datev9date du devis fournisseur
  • validity_datev9date expiration absolue
  • validity_daysv9duree validite en jours
  • currencyv9EUR/USD/CHF/GBP
  • incoterm · payment_termsv9extraits PDF
  • lead_time_rawv9delai livraison texte brut
  • filename · pdf_urlv9PDF source
SUPPLIER QUOTATION LINE UPD v9
  • posv9n° ligne (entier)
  • supplier_ref · oem_refv9refs extraites PDF
  • descriptionv9description ligne extraite PDF
  • poa · discount_pct · discounted_priceCALC
  • unit · lead_time_daysv9unite + delai ligne
  • matching_statusAUTO_MATCHED / MANUALLY_MATCHED / UNMATCHED
⚙️
OrderProcessing
Machine d'etats centrale
UPD
  • op_number · customer_po_refstring
  • customer_idFK
  • quotation_idFKnullable
  • sourcing_strategySTOCK/EX_SUP/VIA_MDC
  • statusmachine d'etats
  • op_quotation_switch · op_rma_switchbool
  • customer_paid · supplier_paidboolean
  • transport_out_of_mdc · vat_recoverableboolean
  • OP LINE
  • qty_ordered · poa · pos · supplier_idFK
  • serial_numbers→ SerialNumber (0:N)
🔢
SerialNumber
Numero de serie par unite
NEW
  • idPK
  • op_line_idFK
  • serial_numberstring
  • noted_atdatetime
  • sourceRMA_CUSTOMER / SUPPLIER_OC / RECEPTION
📦
Stock
Disponibilite temps reel
  • product_idFK
  • on_hand · in_transit_in · reserveddecimal
  • availableCALCon_hand + transit - reserved
Documents
📁
Document
Table unifiee tous PDFs
UPD
  • typeSUPPLIER_PO · SUPPLIER_OC
  • CUSTOMER_INVOICE · DELIVERY_NOTICE
  • directionINBOUND / OUTBOUND
  • op_id · quotation_idFK
  • invoice_number · invoice_datestring / date
  • currency_id · bank_account_idFK
  • eur1_required · vat_recoverableboolean
  • total_htCALC
  • due_date_supplier · due_date_customerdate auto-calculees
  • carrier_overridev7.1string nullable
  • incoterm_overridev7.1string nullable
  • origin_statementv7.1string nullable — texte bas de facture
📋
DocumentLine
Lignes avec infos douanieres
NEW
  • idPK
  • document_id · product_id · customs_tariff_id · country_of_origin_idFK
  • quantity · unit_pricedecimal
  • line_total_htCALC
Log & Tracabilite
📝
StatusHistory
Journal des transitions
NEW
  • idPK
  • entity_typeOrderProcessing · RMA · Quotation
  • entity_idFKUUID de l'objet
  • status_from · status_tostring
  • changed_at · changed_by · notesdatetime / string / text
Principe metier — Timeline des statuts

Tout objet ayant un cycle de vie a 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 ecrans NEXUS.

[RECEIVED 01/03] → [VALIDATED 02/03] → [PRICED 05/03] → [SHIPPED 18/03] → [INVOICED 20/03]
Regles metier cles — v11.0
RegleDescriptionChamp / Entite
PriceList paliers quantite (v11) Ajout de min_quantity int NOT NULL DEFAULT 1 sur PriceList. Permet de stocker des grilles de prix degressifs fournisseur par palier. Resolution : WHERE min_quantity <= qty ORDER BY min_quantity DESC LIMIT 1. Index unique mis a jour : (product_id, supplier_id, customer_id, min_quantity, valid_from). Exemple : paliers 1/5/20 → commande de 8 = palier 5 applique. PriceList.min_quantity (int DEFAULT 1)
SuggestedPrice paliers quantite (v11) Ajout de min_quantity int NOT NULL DEFAULT 1 sur SuggestedPrice. Meme logique de resolution. Alimente le simulateur de prix Phase 6 (decision D-11-04 atelier 11) : grille tarifaire client par tranche (1-5 / 6-20 / 21+ pcs) + couts operationnels + stock a cout zero. SuggestedPrice.min_quantity (int DEFAULT 1)
SuggestedPrice — Module PVC (v10) Nouvelle entite SuggestedPrice : prix de vente conseille par produit, derive des donnees marche (ORBIT, concurrents, partenaires) ou saisi manuellement. Affiche dans Screen 02 a cote du POS pour aider l'operateur a positionner son prix de vente. reliability_weight (float 0-1) code la confiance de la source. Plusieurs PVC peuvent coexister par produit (historique, multi-sources). SuggestedPrice.product_id · SuggestedPrice.source_type · SuggestedPrice.reliability_weight
PriceList par client (v10) Ajout de customer_id FK nullable sur PriceList. Si NULL = prix catalogue general. Si renseigne = prix negocie specifique pour ce client (tarif preferentiel, contrat longue duree, accord commercial). Permet de gerer des grilles tarifaires differenciees sans dupliquer les produits. PriceList.customer_id (FK nullable → Customer)
quality_suffix — Duplication N/R (v10) Champ quality_suffix char(1) nullable sur Product : N=Neuf, R=Reconditionne. Facilite la duplication rapide d'une fiche produit entre les deux qualites dans l'outil. Complementaire de quality_level_id (reference canonique QualityLevel). La liaison entre les deux versions est capturee dans ProductLink (link_type=VARIANT). Product.quality_suffix · ProductLink (VARIANT)
ProductLink VARIANT (v10) Nouveau type de lien VARIANT dans l'enum link_type de ProductLink. Lie une version Neuf a sa version Reconditionne (ou inversement). Permet la navigation et la selection contextuelle dans NEXUS : lors d'une cotation, si la version Neuf est en rupture, NEXUS peut proposer automatiquement la version Rec. liee. ProductLink.link_type = VARIANT
QualityLevel migrée en DB (v9) Migration implementee en DB le 12/05/2026 — 130 produits migres. 4 niveaux : 00=Neuf · 01=Reconditionne · 02=Repare · 03=Grade B. L'enum quality est conservee en parallele pendant la periode de transition. quality_level · Product.quality_level_id (NOT NULL FK)
SupplierQuotation enrichi (v9) Phase 5 (Screen 01) a ajoute 9 champs documentes en v9. validity_date toujours renseignee : extraite du PDF si presente, sinon calculee = quote_date + validity_days. quotation_id nullable — devis spontane possible. SupplierQuotation.validity_date · validity_days · quotation_id nullable
QualityLevel configurable (v8) L'enum quality fixe remplace par QualityLevel editable. MDC peut ajouter de nouveaux niveaux sans modification du schema. QualityLevel · Product.quality_level_id
TVA par pays (v7) Country.default_vat_rate + Customer.vat_applicable pour les exonerations (CERN, organismes internationaux). Customer.vat_applicable · Country.default_vat_rate
Incoterm sur Ship To (v7.1) ShipTo.incoterm et ShipTo.incoterm_source portent les conditions de livraison par adresse. Pre-remplissent le document — modifiables via Document.incoterm_override. ShipTo.incoterm · ShipTo.carrier · Document.incoterm_override
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
Alerte EUR1 Si Document.total_ht > 6 000 EUR → bandeau d'alerte UI. EUR1 exige pour les expeditions hors UE au-dela de ce seuil. Document.eur1_required · Document.total_ht
Relations cles — v11.0
Customer (vat_applicable · siren · siret · chorus_pro_code) ──1:N──> ShipTo (incoterm · incoterm_source · carrier · carrier_account) ShipTo ──N:N──> Customer (partage — ex: ST Crolles 1+2 partagent ShipTo ECTRA) Country (default_vat_rate) ──1:N──> Customer · ShipTo.country_id ProductType ──> ProductCategory ──> ProductFamily (short_desc_guide) ──> Product ProductDivision ──> Product.division_id Product.quality_level_id ──> QualityLevel.code [v9 — MIGRE en DB · 130 produits] Product.quality_suffix (v10) ── N/R — facilite duplication Neuf/Reconditionne Product (parent) ──> ProductLink (COMPONENT / SUBSTITUTE / ACCESSORY / VARIANT) ──> Product (child) [v10 — +VARIANT] PriceList.customer_id (v10) ──0:1──> Customer (nullable — NULL=prix catalogue · renseigne=prix specifique client) PriceList.min_quantity (v11) — palier achat : WHERE min_quantity <= qty ORDER BY min_quantity DESC LIMIT 1 SuggestedPrice.product_id ──> Product (NOT NULL) — source_type: ORBIT/COMPETITOR/PARTNER/MANUAL [v10 — NEW] SuggestedPrice.supplier_id ──0:1──> Supplier (nullable — source contextuelle fournisseur) SuggestedPrice.min_quantity (v11) — palier PVC client : grille 1-5/6-20/21+ pcs — simulateur Phase 6 (D-11-04) SupplierQuotation.quotation_id ──0:1──> Quotation (nullable — devis spontane / liste prix annuelle) [v9] Contact (customer_id OR supplier_id · contact_type) ──> RMA.contact_id (signataire) └──> ProductCustomerCode.contact_id (referent produit) Customer (payment_term_days) ──1:1──> Document.due_date_customer Supplier (payment_term_days) ──1:1──> Document.due_date_supplier