-
Notifications
You must be signed in to change notification settings - Fork 3
ONIX
ONIX 3.0 permet d'indiquer plusieurs prix dans l'avenir, ce qui permet de prévoir ces changements à l'avance. Cela implique que plusieurs balises sont renseignées, avec des sous éléments permettant d'isoler les dates où s'appliquent ces prix.
Par exemple, un titre qui aurait un prix initial de 6,99 euros puis une promotion à 2,99 entre le 14 avril et le 27 avril:
<Price>
<PriceType>04</PriceType>
<PriceAmount>6.99</PriceAmount>
<Tax>
<TaxType>01</TaxType>
<TaxRatePercent>7.0</TaxRatePercent>
<TaxAmount>0.46</TaxAmount>
</Tax>
<CurrencyCode>EUR</CurrencyCode>
<PriceDate>
<PriceDateRole>14</PriceDateRole>
<Date>20120215</Date>
</PriceDate>
<PriceDate>
<PriceDateRole>15</PriceDateRole>
<Date>20120513</Date>
</PriceDate>
</Price>
<Price>
<PriceType>04</PriceType>
<PriceAmount>2.99</PriceAmount>
<Tax>
<TaxType>01</TaxType>
<TaxRatePercent>7.0</TaxRatePercent>
<TaxAmount>0.20</TaxAmount>
</Tax>
<CurrencyCode>EUR</CurrencyCode>
<PriceDate>
<PriceDateRole>14</PriceDateRole>
<Date>20120514</Date>
</PriceDate>
<PriceDate>
<PriceDateRole>15</PriceDateRole>
<Date>20120527</Date>
</PriceDate>
</Price>
<Price>
<PriceType>04</PriceType>
<PriceAmount>6.99</PriceAmount>
<Tax>
<TaxType>01</TaxType>
<TaxRatePercent>7.0</TaxRatePercent>
<TaxAmount>0.46</TaxAmount>
</Tax>
<CurrencyCode>EUR</CurrencyCode>
<PriceDate>
<PriceDateRole>14</PriceDateRole>
<Date>20120528</Date>
</PriceDate>
</Price>
La balise <Price>
peut contenir d'aucune à deux balises <PriceDate>
, la balise
contient elle même une balise <PriceDateRole>
qui indique s'il
s'agit d'une date de début (14) ou une date de fin (15) :
- lorsque qu'il n'y a pas de balise
<PriceDate>
, cela signifie qu'il n'y a aucun changement de prix annoncé - lorsque qu'il n'y a qu'une balise
<PriceDate>
avec<PriceDateRole>14</PriceDateRole>
, cela signifie qu'il s'agit d'un changement de prix permanent à la<Date>
indiquée - lorsque qu'il n'y a qu'une balise
<PriceDate>
avec<PriceDateRole>15</PriceDateRole>
, cela signifie la fin du prix initial à la<Date>
indiquée - enfin, lorsque qu'il y a deux balises
<PriceDate>
avec les deux<PriceDateRole>
, il s'agit d'une promotion entre les deux dates.
Le prix courant peux ainsi être isolé en fonction de la date courante :
si pas de date_début ou date_courante >= date_debut alors
si pas de date_fin ou date_courante < date_fin alors
vrai
sinon
faux
sinon
faux
Même si les métadonnées sont renvoyées à chaque changement dans le prix courant, la meilleure solution consiste tout de même à sauvegarder ces changements de prix afin de les traiter localement à la date indiquée. Cela évite une durée delta de récupération des métadonnées (Dilicom).
Afin de modéliser le multi-formats (plusieurs fichiers pour une offre
commerciale), ONIX 3.0 permet l'utilisation de la balise <ProductPart>
. Cette
dernière étant plus limitée sémantiquement que la balise Product (pas de
description de la protection par exemple), il faut coupler ProductPart avec
des notice complète Product, indiqué comme "non vendu
séparément"(<ProductAvailability>45</ProductAvailability>
). Cela implique donc
de croiser les notices Product avec leurs références dans les balises
<ProductPart>
.
Par exemple, il est proposé une offre commerciale multi-formats comprenant un ePub avec watermark et un PDF avec watermark.
Une notice Product PDF non vendable séparément est donc renseignée :
<Product>
<RecordReference>immateriel.fr-RP11918</RecordReference>
<NotificationType>03</NotificationType>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDValue>RP11918</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>03</ProductIDType>
<IDValue>3600120419194</IDValue>
</ProductIdentifier>
<DescriptiveDetail>
<ProductComposition>00</ProductComposition>
<ProductForm>ED</ProductForm>
<ProductFormDetail>E107</ProductFormDetail>
<ProductFormDescription>PDF avec Tatouage</ProductFormDescription>
<ProductContentType>10</ProductContentType>
<EpubTechnicalProtection>02</EpubTechnicalProtection>
<EpubUsageConstraint>
<EpubUsageType>02</EpubUsageType>
<EpubUsageStatus>01</EpubUsageStatus>
</EpubUsageConstraint>
<EpubUsageConstraint>
<EpubUsageType>03</EpubUsageType>
<EpubUsageStatus>01</EpubUsageStatus>
</EpubUsageConstraint>
<EpubUsageConstraint>
<EpubUsageType>04</EpubUsageType>
<EpubUsageStatus>01</EpubUsageStatus>
</EpubUsageConstraint>
[...]
<ProductSupply>
<SupplyDetail>
<Supplier>
<SupplierRole>03</SupplierRole>
<SupplierIdentifier>
<SupplierIDType>02</SupplierIDType>
<IDValue>D1</IDValue>
</SupplierIdentifier>
<SupplierIdentifier>
<SupplierIDType>06</SupplierIDType>
<IDValue>3012410001000</IDValue>
</SupplierIdentifier>
<SupplierName>immatériel·fr</SupplierName>
</Supplier>
**<ProductAvailability>45</ProductAvailability>**
**<UnpricedItemType>03</UnpricedItemType>**
</SupplyDetail>
</ProductSupply>
</Product>
Et une notice Product pour l'ePub :
<Product>
<RecordReference>immateriel.fr-RP11919</RecordReference>
<NotificationType>03</NotificationType>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDValue>RP11919</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>03</ProductIDType>
<IDValue>3600120419200</IDValue>
</ProductIdentifier>
<DescriptiveDetail>
<ProductComposition>00</ProductComposition>
<ProductForm>ED</ProductForm>
<ProductFormDetail>E101</ProductFormDetail>
<ProductFormDescription>ePub avec Tatouage</ProductFormDescription>
<ProductContentType>10</ProductContentType>
<EpubTechnicalProtection>02</EpubTechnicalProtection>
<EpubUsageConstraint>
<EpubUsageType>02</EpubUsageType>
<EpubUsageStatus>01</EpubUsageStatus>
</EpubUsageConstraint>
<EpubUsageConstraint>
<EpubUsageType>03</EpubUsageType>
<EpubUsageStatus>01</EpubUsageStatus>
</EpubUsageConstraint>
<EpubUsageConstraint>
<EpubUsageType>04</EpubUsageType>
<EpubUsageStatus>01</EpubUsageStatus>
</EpubUsageConstraint>
[...]
<ProductSupply>
<SupplyDetail>
<Supplier>
<SupplierRole>03</SupplierRole>
<SupplierIdentifier>
<SupplierIDType>02</SupplierIDType>
<IDValue>D1</IDValue>
</SupplierIdentifier>
<SupplierIdentifier>
<SupplierIDType>06</SupplierIDType>
<IDValue>3012410001000</IDValue>
</SupplierIdentifier>
<SupplierName>immatériel·fr</SupplierName>
</Supplier>
**<ProductAvailability>45</ProductAvailability>**
**<UnpricedItemType>03</UnpricedItemType>**
</SupplyDetail>
</ProductSupply>
</Product>
Et enfin la notice Product de l'offre commerciale qui sera vendu, contenant les balises ProductPart faisant référence aux fiches précédentes :
<Product>
<RecordReference>immateriel.fr-O108385</RecordReference>
<NotificationType>03</NotificationType>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDValue>O108385</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>03</ProductIDType>
<IDValue>9782814504448</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>15</ProductIDType>
<IDValue>9782814504448</IDValue>
</ProductIdentifier>
<DescriptiveDetail>
<ProductComposition>10</ProductComposition>
<ProductForm>EA</ProductForm>
<ProductFormDescription>Multi-format incluant PDF avec Tatouage, ePub avec Tatouage</ProductFormDescription>
<ProductPart>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDValue>RP11918</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>03</ProductIDType>
**<IDValue>3600120419194</IDValue>**
</ProductIdentifier>
<ProductForm>ED</ProductForm>
<ProductFormDetail>E107</ProductFormDetail>
<ProductFormDescription>PDF avec Tatouage</ProductFormDescription>
<ProductContentType>10</ProductContentType>
<NumberOfCopies>1</NumberOfCopies>
</ProductPart>
<ProductPart>
<ProductIdentifier>
<ProductIDType>01</ProductIDType>
<IDValue>RP11919</IDValue>
</ProductIdentifier>
<ProductIdentifier>
<ProductIDType>03</ProductIDType>
**<IDValue>3600120419200</IDValue>**
</ProductIdentifier>
<ProductForm>ED</ProductForm>
<ProductFormDetail>E101</ProductFormDetail>
<ProductFormDescription>ePub avec Tatouage</ProductFormDescription>
<ProductContentType>10</ProductContentType>
<NumberOfCopies>1</NumberOfCopies>
</ProductPart>
...
Plusieurs manières de traiter ces données sont possibles :
- faire une lecture croisée de l'ONIX en référençant dans un premier temps les notices "non vendues séparément" à partir de leur EAN (3xxx), puis récupérer les informations de ces notices dans un second temps via les balises ProductPart de l'offre commerciale. Il faut noter que les notices "non vendues séparément" arrivent toujours avant dans le flux ONIX, ce qui permet éventuellement un traitement séquentiel.
- ignorer les notices "non vendues séparément" et s'en remettre aux balises description des balises ProductPart (exemple:
<ProductFormDescription>ePub avec Tatouage</ProductFormDescription>
) - ignorer les notices "non vendues séparément" ainsi que les balises ProductPart et s'en remettre à la balise description le l'offre commerciale (exemple:
<ProductFormDescription>Multi-format incluant PDF avec Tatouage, ePub avec Tatouage</ProductFormDescription>
)
<SupportingResource>
<ResourceContentType>01</ResourceContentType>
<ContentAudience>00</ContentAudience>
<ResourceMode>03</ResourceMode>
<ResourceVersion>
<ResourceForm>02</ResourceForm>
<ResourceLink>[http://images.immateriel.fr/covers/9782362310614.png](http://images.immateriel.fr/covers/9782362310614.png)</ResourceLink>
**<ContentDate>**
**<ContentDateRole>17</ContentDateRole>**
**<DateFormat>00</DateFormat>**
**<Date>20130319</Date>**
**</ContentDate>**
</ResourceVersion>
</SupportingResource>
La balise <ContentDate>
avec le <ContentDateRole>17
(dernière mise à jour)
permet de déterminer quand la couverture à été mise à jour et ainsi de ne la
télécharger que si nécessaire. Si la date est supérieure à la date de la
couverture dans votre système, vous devez la récupérer et la remplacer. Dans
l'exemple précédent, on voit ainsi que la couverture a été mise à jour le 19
mars 2013.
Il faut noter que les extraits utilisent également le même schema.
<MarketPublishingDetail>
<MarketPublishingStatus>04</MarketPublishingStatus>
<MarketDate>
**<MarketDateRole>01</MarketDateRole>**
<DateFormat>00</DateFormat>
**<Date>20130415</Date>**
</MarketDate>
</MarketPublishingDetail>
<SupplyDetail>
...
**<ProductAvailability>10</ProductAvailability>**
</SupplyDetail>
Les titres à paraître sont indiqués via ONIX avec le statut de disponibilité
<ProductAvailability>10
(pas encore disponible), la date de mise en vente
prévue est renseignée via <MarketDate>
. Dans l'exemple ci-dessus, le titre
sera effectivement en vente le 15 avril 2013.
Sans mise à jour entre temps, il est considéré que le produit doit être mis en
vente à cette date. Malgré tout, un message de mise à jour rendant le livre
disponible via <ProductAvailability>20
est envoyé le jour de la mise en vente.