cXML QuoteMessage / QuoteRequest
Flux d'appel d'offres B2B. Le QuoteRequest est émis par l'acheteur
vers ses fournisseurs candidats ; le QuoteMessage est la
proposition de prix renvoyée par chaque fournisseur — éventuellement plusieurs
fois si l'enchère ou la négociation se prolonge.
Objet de la transaction
Le couple QuoteRequest/QuoteMessage matérialise un
appel d'offres : l'acheteur publie son besoin (volumes, dates, spécifications),
et un ou plusieurs fournisseurs répondent avec leurs propositions de prix et de
délais. L'attribut type sur QuoteMessageHeader est
#REQUIRED et prend cinq valeurs : accept (accepte
la dernière proposition), reject, update (nouvelle
proposition au cours d'une négociation), final (proposition finale
une fois l'event clos), award (l'acheteur attribue le marché à ce
fournisseur).
L'attribut quoteReceivingPreference sur le QuoteRequestHeader
contrôle quand l'acheteur souhaite recevoir les QuoteMessage du
système de sourcing : winningOnly, finalBidsFromAll,
ou all (au fil de l'eau).
Structure XML
QuoteRequest
Le DTD : QuoteRequest (QuoteRequestHeader, QuoteItemOut*). Le
contenu de QuoteRequestHeader : (Name?, SupplierSelector?,
Total?, Description?, ShipTo?, Contact*, Comments?, QuoteHeaderInfo?, Extrinsic*,
QuoteRequestHeaderIndustry?). Aucun élément n'est obligatoire par
cardinalité.
Attributs #REQUIRED : requestID,
requestDate, openDate, closeDate,
currency, xml:lang. Donc tout RFQ a une fenêtre temporelle
obligatoire et une langue+devise figées.
QuoteMessage
Le DTD : QuoteMessage (QuoteMessageHeader, QuoteItemIn*). Le
QuoteMessageHeader contient : (OrganizationID, Total,
ShipTo?, Contact*, QuoteRequestReference?, Comments?, QuoteHeaderInfo?,
SupplierProductionFacilityRelations?, Extrinsic*). Deux éléments
obligatoires : OrganizationID (l'identité du fournisseur qui
soumet) et Total (le montant proposé).
Attributs #REQUIRED sur le QuoteMessageHeader :
type, quoteID, quoteDate,
currency, xml:lang.
QuoteItemIn
Le DTD : QuoteItemIn (ItemID?, ItemDetail, ShipTo?, Shipping?, Tax?,
SpendDetail?, Total?, TermsOfDelivery?, ReferenceDocumentInfo*, Contact*,
Comments?, Alternative?, SupplierProductionFacilityRelations?, Extrinsic*).
Seul ItemDetail est obligatoire par cardinalité ;
ItemID est optionnel mais en pratique fourni.
Attributs : type #REQUIRED (cinq valeurs identiques
à QuoteMessageHeader), quantity #REQUIRED,
lineNumber #IMPLIED, rank pour le classement
si plusieurs fournisseurs sont comparés.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.069/cXML.dtd">
<cXML payloadID="260510.100000.qreq@buyer.example"
timestamp="2026-05-10T10:00:00+02:00"
version="1.2.069">
<Header>
<From>
<Credential domain="DUNS"><Identity>123456789</Identity></Credential>
</From>
<To>
<Credential domain="DUNS"><Identity>987654321</Identity></Credential>
</To>
<Sender>
<Credential domain="DUNS">
<Identity>123456789</Identity>
<SharedSecret>shared-secret-here</SharedSecret>
</Credential>
<UserAgent>ediverse-sourcing/1.0</UserAgent>
</Sender>
</Header>
<Request>
<QuoteRequest>
<QuoteRequestHeader requestID="RFQ-2026-0017"
requestDate="2026-05-10T10:00:00+02:00"
type="new"
openDate="2026-05-10T10:00:00+02:00"
closeDate="2026-05-17T18:00:00+02:00"
currency="EUR"
xml:lang="fr">
<Name xml:lang="fr">Marché chaises de bureau Q3 2026</Name>
<Description xml:lang="fr">Appel d'offres pour 500 chaises ergonomiques</Description>
</QuoteRequestHeader>
<QuoteItemOut quantity="500" lineNumber="1">
<ItemID>
<SupplierPartID>RFQ-LINE-1</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice><Money currency="EUR">0.00</Money></UnitPrice>
<Description xml:lang="fr">Chaise de bureau ergonomique, soutien lombaire</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
<Classification domain="UNSPSC">56101504</Classification>
</ItemDetail>
</QuoteItemOut>
</QuoteRequest>
</Request>
</cXML> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.069/cXML.dtd">
<cXML payloadID="260515.140000.qmsg@supplier.example"
timestamp="2026-05-15T14:00:00+02:00"
version="1.2.069">
<Header>
<From>
<Credential domain="DUNS"><Identity>987654321</Identity></Credential>
</From>
<To>
<Credential domain="DUNS"><Identity>123456789</Identity></Credential>
</To>
<Sender>
<Credential domain="DUNS">
<Identity>987654321</Identity>
<SharedSecret>shared-secret-here</SharedSecret>
</Credential>
<UserAgent>supplier-sourcing/1.0</UserAgent>
</Sender>
</Header>
<Message>
<QuoteMessage>
<QuoteMessageHeader type="final"
quoteID="Q-2026-0042"
quoteDate="2026-05-15T14:00:00+02:00"
currency="EUR"
xml:lang="fr">
<OrganizationID>
<Credential domain="DUNS"><Identity>987654321</Identity></Credential>
</OrganizationID>
<Total>
<Money currency="EUR">12500.00</Money>
</Total>
<QuoteRequestReference requestID="17" requestDate="2026-05-10T10:00:00+02:00">
<DocumentReference payloadID="260510.100000.qreq@buyer.example"/>
</QuoteRequestReference>
</QuoteMessageHeader>
<QuoteItemIn type="update" quantity="500" lineNumber="1">
<ItemID>
<SupplierPartID>SKU-A100</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice><Money currency="EUR">25.00</Money></UnitPrice>
<Description xml:lang="fr">Chaise ergonomique noire — proposition fournisseur</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
<Classification domain="UNSPSC">56101504</Classification>
<LeadTime>14</LeadTime>
</ItemDetail>
<Total>
<Money currency="EUR">12500.00</Money>
</Total>
</QuoteItemIn>
</QuoteMessage>
</Message>
</cXML> Requis vs optionnel
- QuoteRequestHeader — 6 attributs
#REQUIRED:requestID,requestDate,openDate,closeDate,currency,xml:lang.typepar défaut"new". Contenu : zéro élément obligatoire par cardinalité. - QuoteMessageHeader — 5 attributs
#REQUIRED:type,quoteID,quoteDate,currency,xml:lang. Contenu :OrganizationIDetTotalobligatoires. - QuoteItemIn —
typeetquantity#REQUIRED. Contenu :ItemDetailobligatoire.
Patterns courants
Négociation à plusieurs tours : chaque proposition
intermédiaire est un QuoteMessage type="update". La proposition
finale après clôture est type="final". L'attribution (validation par
l'acheteur) se fait via un QuoteMessage type="award" émis par
l'acheteur cette fois.
Lien vers le RFQ original : utiliser
QuoteRequestReference avec son DocumentReference. La
DTD accepte aussi un requestID et requestDate
redondants pour permettre un traitement indépendant.
Variantes / alternatives : le fournisseur peut proposer un
article différent via l'élément Alternative dans
QuoteItemIn. Utile pour des chaises de remplacement ou des modèles
de génération suivante.
Documentation
- Quote.dtd — version courante
— chercher
ELEMENT QuoteRequest,QuoteMessage,QuoteRequestHeader,QuoteMessageHeader,QuoteItemIn. - cXML Reference Guide (PDF) — chapitre Quote / RFQ, types d'événement (forward auction, reverse auction, sealed bid).
- OrderRequest — la commande émise une fois le marché attribué.