Module jonix.onix3

Class Price

java.lang.Object
com.tectonica.jonix.onix3.Price
All Implemented Interfaces:
OnixComposite, OnixComposite.OnixSuperComposite, OnixTag, Serializable

public class Price extends Object implements OnixComposite.OnixSuperComposite, Serializable

Price composite

An optional group of data elements which together specify a unit price, repeatable in order to specify multiple prices. Each <SupplyDetail> composite must include either one or more prices, or a single <UnpricedItemType> element (see P.26.42).

Where multiple prices are specified for a product, each price option should specify a distinct combination of its terms of trade and the group of end customers it is applicable to, any relevant price conditions, periods of time, currency and territory etc, so that the data recipient can clearly select the correct pricing option. If, under a particular combination, the product is free of charge or its price is not yet set, an <UnpricedItemType> element (P.26.70b) must be used in place of a <PriceAmount>. Each pricing option may optionally be given an identifier for use in subsequent revenue reporting or for other internal purposes.

Reference name <Price>
Short tag <price>
Cardinality 0…n

This tag may be included in the following composites:

Possible placements within ONIX message:

See Also:
  • Field Details

  • Constructor Details

    • Price

      public Price()
    • Price

      public Price(Element element)
  • Method Details

    • _initialize

      public void _initialize()
      Description copied from interface: OnixComposite
      This is an internal API. Since Jonix 8.0, composite objects are being populated lazily. This method initiates the population process, and is invoked internally by the accessor APIs of the composites
      Specified by:
      _initialize in interface OnixComposite
    • exists

      public boolean exists()
      Description copied from interface: OnixTag
      indicates whether this tag exists in the ONIX record
      Specified by:
      exists in interface OnixTag
      Returns:
      whether this tag (<Price> or <price>) is explicitly provided in the ONIX XML
    • ifExists

      public void ifExists(Consumer<Price> action)
    • getXmlElement

      public Element getXmlElement()
      Description copied from interface: OnixComposite
      For advanced use-cases only.
      Specified by:
      getXmlElement in interface OnixComposite
      Returns:
      native representation of the XML element underlying to this tag
    • priceType

      public PriceType priceType()

      An ONIX code indicating the type of the price in the <PriceAmount> field within the <Price> composite. Mandatory unless a <DefaultPriceType> has been specified in the message header, and non-repeating.

      Jonix-Comment: this field is optional
    • priceQualifier

      public PriceQualifier priceQualifier()

      An ONIX code which further specifies the type of price, eg member price, reduced price when purchased as part of a set. Optional and non-repeating.

      Jonix-Comment: this field is optional
    • epubLicense

      public EpubLicenseType epubLicense()
      Jonix-Comment: this field is optional
    • pricePer

      public PricePer pricePer()

      An ONIX code indicating the unit of product which is the basis for the price carried in an occurrence of the <Price> composite. Optional and non-repeating. Where the price applies to a copy of the whole product, this field is normally omitted.

      Jonix-Comment: this field is optional
    • minimumOrderQuantity

      public MinimumOrderQuantity minimumOrderQuantity()

      The minimum number of copies which must be ordered to obtain the price carried in an occurrence of the <Price> composite. Optional and non-repeating. If the field is present, the price is a quantity price (and only whole multiples of the qualifying quantity may be ordered at that price). If the field is omitted, the price applies to a single unit.

      Note the similarity between <MinimumOrderQuantity> and <OrderQuantityMinimum> in P.26.41b: only <MinimumOrderQuantity> has an effect on the specification of <Price>. Use of <MinimumOrderQuantity> is close in effect to a multi-item trade pack (see <ProductComposition>).

      Jonix-Comment: this field is optional
    • priceStatus

      public PriceStatus priceStatus()

      An ONIX code which specifies the status of a price. Optional and non-repeating. If the field is omitted, the default ‘unspecified’ will apply.

      Jonix-Comment: this field is optional
    • priceAmount

      public PriceAmount priceAmount()

      The amount of a price. Optional and non-repeating, but each occurrence of the <Price> composite must include either a <PriceAmount> or a <PriceCoded> composite, with optional tax details, or an <UnpricedItemType> element. Note that free-of-charge products must use <UnpricedItemType> rather than a zero price.

      Jonix-Comment: this field is optional
    • priceCoded

      public PriceCoded priceCoded()

      An optional group of data elements to carry a price that is expressed as one of a discrete set of price points, tiers or bands, rather than actual currency amounts. Each occurrence of the <Price> composite must include either a <PriceAmount> or a <PriceCoded> composite, with optional tax details, or an <UnpricedItemType> element.

      Jonix-Comment: this field is optional
    • taxExempt

      public TaxExempt taxExempt()

      An empty element that identifies a product price as being specifically exempted from tax. Optional, and used only when <PriceType> indicates an exc-tax price.

      Note that tax exempt status is rare: it applies in only a very few countries. Tax exempt is distinct from the case where tax details are not specified (as is the case with most North American Prices) and also distinct from the case where tax is levied at zero percent (as is the case for physical books in the UK, for example).

      Jonix-Comment: this field is optional
    • isTaxExempt

      public boolean isTaxExempt()
    • unpricedItemType

      public UnpricedItemType unpricedItemType()

      An ONIX code which specifies that the product is free of charge, or a reason why a price amount or price code is not sent. If code value 02 is used to send advance information without giving a price, the price must be confirmed as soon as possible. Optional and non-repeating, but required if the <Price> composite does not carry a price amount or price code.

      Use here in preference to P.26.42 when the product is available under a variety of priced and unpriced terms from the same supplier.

      Jonix-Comment: this field is optional
    • currencyCode

      public CurrencyCode currencyCode()

      An ONIX code identifying the currency in which all monetary amounts in an occurrence of the <Price> composite are stated. Optional and non-repeating, but required if the currency is not the default currency for the message (this default may be set in <DefaultCurrencyCode> – but doing so is deprecated). All ONIX messages must include an explicit statement of the currency used for any prices. To avoid any possible ambiguity, it is strongly recommended that the currency should be stated here for each individual price.

      Jonix-Comment: this field is optional
    • territory

      public Territory territory()

      A group of data elements which together identify a territory within which the price stated in an occurrence of the <Price> composite is applicable. Optional and non-repeating.

      For valid combinations of <CountriesIncluded>, <RegionsIncluded> etc within <Territory>, see the notes describing the use of <Territory> within Group P.21.

      Additional guidance on the description of price territories in ONIX 3.0 and 3.1 will be found in a separate document ONIX for Books Product Information Message: How to Specify Markets and Suppliers in ONIX 3.

      Jonix-Comment: this field is optional
    • printedOnProduct

      public PrintedOnProduct printedOnProduct()

      An ONIX code indicating whether the price in a <Price> composite is printed on the product. Optional and non-repeating. Omission of this element must not be interpreted as indicating that the price is not printed on the product.

      Jonix-Comment: this field is optional
    • positionOnProduct

      public PositionOnProduct positionOnProduct()

      An ONIX code indicating a position on a product; in this case, the position in which a price appears. Optional, but must be included if (and only if) the <PrintedOnProduct> element indicates that the price appears on the product, even if the position is ‘unknown’. Non-repeating.

      Jonix-Comment: this field is optional
    • priceIdentifiers

      An optional group of elements that provide an identifier, reference or persistent label for a particular price. For products that may be available at potentially many different prices, to different groups of purchasers or under different terms and conditions, this identifier may then be used in subsequent revenue reporting to specify which price the product was traded at.

      Note that the price identifier will always be proprietary and must be unique across multiple pricing options for one product, but need not be unique across all products, nor need it be the same across all products offered at the same price point or under the same terms.

      The composite is repeatable in order to provide multiple identifiers for the same price.

      Jonix-Comment: this list may be empty
    • epubTechnicalProtections

      An ONIX code specifying whether a digital product has DRM or other technical protection features that form or enforce part of the commercial offer for a product. Optional, and repeatable if a product has two or more kinds of protection.

      The Digital product technical protection element is also present in Group P.3. Use here where a single product is available under multiple commercial offers with differing Price constraints, to indicate whether the constraints are enforced via technical protection measures.

      Jonix-Comment: this list may be empty
    • priceConstraints

      public ListOfOnixComposite<PriceConstraint> priceConstraints()

      An optional group of data elements which together describe a contractual term or constraint (or the absence of such a constraint) that forms part of the commercial offer for a product. Repeatable in order to describe multiple constraints on usage.

      The Price constraint composite has the same structure as <EpubUsageConstraint>. Use <EpubUsageConstraint> for constraints that limit the user experience of the product, whether or not they are enforced by technical protection measures (DRM). Use <PriceConstraint> where a single product is available under multiple terms and conditions (ie multiple commercial offers for the same product which differ in their Price constraints, and whether or not they are enforced by DRM).

      Jonix-Comment: this list may be empty
    • priceTypeDescriptions

      public ListOfOnixElement<PriceTypeDescription,String> priceTypeDescriptions()

      Free text which further describes the price type, qualifier, constraints and other parameters of the price. Optional, and repeatable if parallel descriptions are provided in multiple languages. The language attribute is optional for a single instance of <PriceTypeDescription>, but must be included in each instance if <PriceTypeDescription> is repeated in multiple languages. In the Netherlands and elsewhere, when the <PriceQualifier> code identifies a ‘voucher price’, the <PriceTypeDescription> should give the ‘EAN action number’ that identifies the offer.

      Jonix-Comment: this list may be empty
    • priceConditions

      public ListOfOnixComposite<PriceCondition> priceConditions()

      An optional group of data elements which together specify a condition relating to a price, repeatable in order to specify multiple conditions.

      Jonix-Comment: this list may be empty
    • batchBonuss

      A repeatable group of data elements which together specify a batch bonus, ie a quantity of free copies which are supplied (typically to a reseller) with a certain order quantity. The <BatchBonus> composite is optional.

      Jonix-Comment: this list may be empty
    • discountCodeds

      An optional group of data elements which together define a discount code from a specified scheme, and repeatable to allow different discount code schemes to be supported without defining additional data elements. For prices specified as Agency prices in <PriceType>, this code is interpreted as a ‘commission code’.

      A discount code is generally used when the exact percentage discount (or commission, in an agency business model) that a code represents may vary from reseller to reseller (or from agent to agent), or if terms must be kept confidential. If the discount (or commission) is the same for all resellers (or agents) and need not be kept confidential, use <Discount> and <DiscountPercent> instead.

      Jonix-Comment: this list may be empty
    • discounts

      An optional group of data elements which together define a discount either as a percentage or as an absolute amount. Repeatable in order to specify a more complex arrangement such as a progressive or tiered discount. Used only when an ONIX message is sent within the context of a specific trading relationship.

      Jonix-Comment: this list may be empty
    • taxs

      public ListOfOnixComposite<Tax> taxs()

      A repeatable group of data elements which together specify tax included within a price amount. Optional, and used only when <PriceType> indicates an inc-tax price. For items to which different taxes or tax rates apply (eg mixed media products in the UK which are partly taxed at standard rate and partly at zero rate), the composite is repeated for each separate tax or tax rate. Although only one of <TaxRatePercent> or <TaxAmount> is mandatory within the composite, it is recommended that all tax elements in the composite should be explicitly populated.

      If the tax regime requires separate tax rates and amounts linked explicitly to particular product parts (eg in Germany), the <ProductIdentifier> composite may be included in each <Tax> composite. Where tax is payable on multiple product parts, each should have its own instance of the <Tax> composite.

      Jonix-Comment: this list may be empty
    • comparisonProductPrices

      public ListOfOnixComposite<ComparisonProductPrice> comparisonProductPrices()

      Optional group of data elements that together define a price for a directly comparable product, to facilitate supply of price data to retailers who do not receive a full ONIX record for that comparable product. This is primarily intended for use within a <Product> record for a digital product, to provide a price for a comparable physical product. The composite is repeatable in order to define multiple comparison prices.

      Those using this composite should be wary of the volatile nature of product prices: special note should be taken of the risk of stale data being stored in data recipients’ systems when prices for the comparison product are updated, as those updates to the comparison product may occur outside the context of the main product being described in the <Product> record. Because of this, ONIX suppliers are cautioned of the risk of contradictory data in separate data feeds. This composite should not be supplied unless specifically requested by a particular recipient.

      The inclusion of a comparison price in itself implies nothing about the availability or status of the comparable product. However, there may be legal requirements in particular territories relating to the use of comparison prices in promotion that users of this data must comply with.

      Note that the comparison product price composite does not include all the features of the <Price> composite: for example, <PriceQualifier> is not included. Thus data providers should ensure that any conditions attached to the comparison product price are such that it is directly comparable to the price of the main product being described.

      Jonix-Comment: this list may be empty
    • priceDates

      An optional group of data elements which together specify a date associated with a price, repeatable in order to specify multiple associated dates.

      Note that if no dates are specified, the price is effective at the time the ONIX message is sent.

      Jonix-Comment: this list may be empty