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

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

  ⛔ Разликата меѓу испраќачот и примачот е изразена во СТРУКТУРАТА, не во проза:
     `AccountingCustomerParty` бара `cac:PartyTaxScheme/cbc:CompanyID`, а
     `AccountingSupplierParty` не го бара. Токму таа разлика ги дава EARH-2003 и
     EARH-2004 — ЕДБ-то на примачот е она што се чита при прием.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
           xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
           targetNamespace="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">

  <xs:import namespace="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
             schemaLocation="ubl21-earhiva-cbc.xsd"/>

  <!-- ── Страни ──────────────────────────────────────────────────────────── -->

  <xs:complexType name="PartyNameType">
    <xs:sequence>
      <xs:element ref="cbc:Name"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="TaxSchemeType">
    <xs:sequence>
      <xs:element ref="cbc:ID" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PartyTaxSchemeType">
    <xs:sequence>
      <xs:element ref="cbc:CompanyID"/>
      <xs:element ref="cac:TaxScheme" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Испраќачот: ЕДБ во документот не се бара — испраќачот е познат по клучот. -->
  <xs:complexType name="SupplierPartyType">
    <xs:sequence>
      <xs:element ref="cac:PartyName" minOccurs="0"/>
      <xs:element ref="cac:PartyTaxScheme" minOccurs="0"/>
      <xs:element ref="cac:PostalAddress" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Примачот: `cac:PartyTaxScheme/cbc:CompanyID` е ЗАДОЛЖИТЕЛЕН (EARH-2003). -->
  <xs:complexType name="CustomerPartyType">
    <xs:sequence>
      <xs:element ref="cac:PartyName" minOccurs="0"/>
      <xs:element ref="cac:PartyTaxScheme"/>
      <xs:element ref="cac:PostalAddress" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PostalAddressType">
    <xs:sequence>
      <xs:element ref="cbc:Name" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SupplierPartyWrapperType">
    <xs:sequence>
      <xs:element name="Party" type="cac:SupplierPartyType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CustomerPartyWrapperType">
    <xs:sequence>
      <xs:element name="Party" type="cac:CustomerPartyType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="PartyName" type="cac:PartyNameType"/>
  <xs:element name="PartyTaxScheme" type="cac:PartyTaxSchemeType"/>
  <xs:element name="PostalAddress" type="cac:PostalAddressType"/>
  <xs:element name="TaxScheme" type="cac:TaxSchemeType"/>

  <xs:element name="AccountingSupplierParty" type="cac:SupplierPartyWrapperType"/>
  <xs:element name="AccountingCustomerParty" type="cac:CustomerPartyWrapperType"/>

  <!-- ── Износи ──────────────────────────────────────────────────────────── -->

  <xs:complexType name="TaxTotalType">
    <xs:sequence>
      <xs:element ref="cbc:TaxAmount"/>
    </xs:sequence>
  </xs:complexType>

  <!-- `cbc:PayableAmount` е ЗАДОЛЖИТЕЛЕН — без него приемот враќа EARH-2006. -->
  <xs:complexType name="MonetaryTotalType">
    <xs:sequence>
      <xs:element ref="cbc:LineExtensionAmount" minOccurs="0"/>
      <xs:element ref="cbc:TaxExclusiveAmount" minOccurs="0"/>
      <xs:element ref="cbc:TaxInclusiveAmount" minOccurs="0"/>
      <xs:element ref="cbc:PayableAmount"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="TaxTotal" type="cac:TaxTotalType"/>
  <xs:element name="LegalMonetaryTotal" type="cac:MonetaryTotalType"/>

  <!-- ── Ставки ──────────────────────────────────────────────────────────── -->

  <xs:complexType name="ItemType">
    <xs:sequence>
      <xs:element ref="cbc:Name"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PriceType">
    <xs:sequence>
      <xs:element ref="cbc:PriceAmount"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="InvoiceLineType">
    <xs:sequence>
      <xs:element ref="cbc:ID"/>
      <xs:element ref="cbc:InvoicedQuantity" minOccurs="0"/>
      <xs:element ref="cbc:LineExtensionAmount" minOccurs="0"/>
      <xs:element ref="cac:Item"/>
      <xs:element ref="cac:Price" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CreditNoteLineType">
    <xs:sequence>
      <xs:element ref="cbc:ID"/>
      <xs:element ref="cbc:CreditedQuantity" minOccurs="0"/>
      <xs:element ref="cbc:LineExtensionAmount" minOccurs="0"/>
      <xs:element ref="cac:Item"/>
      <xs:element ref="cac:Price" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Item" type="cac:ItemType"/>
  <xs:element name="Price" type="cac:PriceType"/>
  <xs:element name="InvoiceLine" type="cac:InvoiceLineType"/>
  <xs:element name="CreditNoteLine" type="cac:CreditNoteLineType"/>

  <!-- ── Прилог ──────────────────────────────────────────────────────────── -->

  <xs:complexType name="AttachmentType">
    <xs:sequence>
      <xs:element ref="cbc:EmbeddedDocumentBinaryObject"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DocumentReferenceType">
    <xs:sequence>
      <xs:element ref="cbc:ID" minOccurs="0"/>
      <xs:element ref="cac:Attachment"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Attachment" type="cac:AttachmentType"/>
  <xs:element name="AdditionalDocumentReference" type="cac:DocumentReferenceType"/>

</xs:schema>
