<?xml version="1.0" encoding="utf-8"?>
<!--
  Shema XML cjenika za objavu prema Odluci o objavi cjenika proizvoda i usluga kao mjeri izravne
  kontrole cijena (NN 101/2026-1213). Elementi proizvoda odgovaraju t. III., elementi usluga t. IV.

  Shema je naša, ne propisana: Odluka nabraja podatke, ne oblik datoteke. Zato je verzija i u
  imenskom prostoru i u atributu `verzija`, pa se kasniji oblik može dodati bez lomljenja čitača
  koji poznaje samo ovaj.

  Objavljena je na /schema/cjenik-v1.xsd i nikad se ne mijenja retroaktivno: datoteka objavljena
  prije godinu dana mora se i danas provjeravati prema shemi po kojoj je nastala.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="urn:aestus:cjenik:1"
           targetNamespace="urn:aestus:cjenik:1"
           elementFormDefault="qualified">

  <!-- Dvije decimale: koliko obrazac prima, toliko datoteka nosi. Objavljena cijena obvezuje
       trgovca (Zakon NN 40/25, čl. 12. st. 7.), pa zaokruživanje pri ispisu nije dopušteno. -->
  <xs:simpleType name="Novac">
    <xs:restriction base="xs:decimal">
      <xs:minInclusive value="0"/>
      <xs:fractionDigits value="2"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="Dostupnost">
    <xs:restriction base="xs:string">
      <xs:enumeration value="dostupno"/>
      <xs:enumeration value="nedostupno"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="PosebniOblikTip">
    <xs:simpleContent>
      <xs:extension base="xs:boolean">
        <xs:attribute name="naziv" type="xs:string" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!-- Dodatne komponente cijene. Bazna cijena koja se najavljuje od 17. 11. 2026. ulazi ovuda,
       kao nova vrsta, a ne kao novi element: propis još nema pravilnik, a datoteka mora ostati
       provjerljiva i prije i poslije tog datuma. -->
  <xs:complexType name="KomponentaTip">
    <xs:simpleContent>
      <xs:extension base="Novac">
        <xs:attribute name="vrsta" type="xs:string" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="KomponenteTip">
    <xs:sequence>
      <xs:element name="Komponenta" type="KomponentaTip" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Cjenik">
    <xs:complexType>
      <!-- Prazan cjenik je dopušten: prodajno mjesto bez ijedne cijene svejedno mora objaviti
           datoteku, inače se ne razlikuje propust od praznog asortimana. -->
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Proizvod">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Naziv" type="xs:string"/>
              <xs:element name="Sifra" type="xs:string"/>
              <xs:element name="Marka" type="xs:string" minOccurs="0"/>
              <xs:element name="JedinicaMjere" type="xs:string" minOccurs="0"/>
              <xs:element name="CijenaZaJedinicuMjere" type="Novac" minOccurs="0"/>
              <xs:element name="MaloprodajnaCijena" type="Novac"/>
              <xs:element name="PosebniOblikProdaje" type="PosebniOblikTip"/>
              <xs:element name="SidrenaCijena" type="Novac" minOccurs="0"/>
              <xs:element name="Barkod" type="xs:string" minOccurs="0"/>
              <xs:element name="Dostupnost" type="Dostupnost"/>
              <xs:element name="Komponente" type="KomponenteTip" minOccurs="0"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Usluga">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Naziv" type="xs:string"/>
              <xs:element name="Sifra" type="xs:string" minOccurs="0"/>
              <xs:element name="MaloprodajnaCijena" type="Novac"/>
              <xs:element name="PosebniOblikProdaje" type="PosebniOblikTip"/>
              <xs:element name="SidrenaCijena" type="Novac" minOccurs="0"/>
              <xs:element name="Komponente" type="KomponenteTip" minOccurs="0"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
      <xs:attribute name="verzija" type="xs:string" use="required"/>
      <xs:attribute name="vrsta" type="xs:string" use="required"/>
      <xs:attribute name="obveznik" type="xs:string" use="required"/>
      <xs:attribute name="oib" type="xs:string"/>
      <xs:attribute name="oblikObjekta" type="xs:string" use="required"/>
      <xs:attribute name="adresa" type="xs:string" use="required"/>
      <xs:attribute name="oznakaObjekta" type="xs:string" use="required"/>
      <xs:attribute name="brojPohrane" type="xs:long" use="required"/>
      <xs:attribute name="vrijeme" type="xs:dateTime" use="required"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
