<?xml version="1.0" encoding="UTF-8"?>
<!--
  T-24.2.3-021 · F3.4-UiComponents.md §9.2.10 (SCR-08)

  Common Basic Components — делот од UBL 2.1 што профилот на eArhiva го користи.
  Придружен фајл на `ubl21-earhiva.xsd`; се презема во ИСТАТА папка како него,
  инаку главната шема не може да ги разреши увозите.

  ⛔ Ова НЕ е целиот UBL 2.1 cbc простор — тука се само елементите што профилот
     ги именува. Документ со cbc елемент што го нема тука ќе падне на валидација
     против оваа шема, но сепак може да биде примен: при прием се судат точно
     шестте проверки EARH-2001…2006, ништо повеќе.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
           targetNamespace="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">

  <!-- ── Основни типови ──────────────────────────────────────────────────── -->

  <xs:simpleType name="NonEmptyTextType">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>

  <!--
    Износ со задолжителна ознака на валутата. `PayableAmount` го чита проверката
    при прием: недостасува ли елементот — EARH-2006; `currencyID` од него оди во
    полето `currency` на документот.
  -->
  <xs:complexType name="AmountType">
    <xs:simpleContent>
      <xs:extension base="xs:decimal">
        <xs:attribute name="currencyID" type="xs:string" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="QuantityType">
    <xs:simpleContent>
      <xs:extension base="xs:decimal">
        <xs:attribute name="unitCode" type="xs:string" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!--
    Вграден прилог. `mimeCode="application/pdf"` е она по што се препознава PDF-от
    што се чува покрај документот; прилог со друг тип се прескокнува без грешка.
  -->
  <xs:complexType name="BinaryObjectType">
    <xs:simpleContent>
      <xs:extension base="xs:base64Binary">
        <xs:attribute name="mimeCode" type="xs:string" use="required"/>
        <xs:attribute name="filename" type="xs:string" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!-- ── Елементи ────────────────────────────────────────────────────────── -->

  <xs:element name="ID" type="cbc:NonEmptyTextType"/>
  <xs:element name="Name" type="cbc:NonEmptyTextType"/>
  <xs:element name="Note" type="xs:string"/>

  <xs:element name="IssueDate" type="xs:date"/>
  <xs:element name="DueDate" type="xs:date"/>

  <!-- Шифрата на типот ВО документот — EARH-2005 кога ја нема. -->
  <xs:element name="InvoiceTypeCode" type="cbc:NonEmptyTextType"/>
  <xs:element name="CreditNoteTypeCode" type="cbc:NonEmptyTextType"/>

  <xs:element name="DocumentCurrencyCode" type="cbc:NonEmptyTextType"/>

  <!-- ЕДБ на примачот — EARH-2003 кога го нема, EARH-2004 кога обликот е погрешен. -->
  <xs:element name="CompanyID" type="cbc:NonEmptyTextType"/>

  <xs:element name="TaxAmount" type="cbc:AmountType"/>
  <xs:element name="LineExtensionAmount" type="cbc:AmountType"/>
  <xs:element name="TaxExclusiveAmount" type="cbc:AmountType"/>
  <xs:element name="TaxInclusiveAmount" type="cbc:AmountType"/>
  <xs:element name="PayableAmount" type="cbc:AmountType"/>
  <xs:element name="PriceAmount" type="cbc:AmountType"/>

  <xs:element name="InvoicedQuantity" type="cbc:QuantityType"/>
  <xs:element name="CreditedQuantity" type="cbc:QuantityType"/>

  <xs:element name="EmbeddedDocumentBinaryObject" type="cbc:BinaryObjectType"/>

</xs:schema>
