invoice.xml 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2">
  3. <cbc:UBLVersionID>{{ invoice.ubl_version_id }}</cbc:UBLVersionID>
  4. <cbc:CustomizationID>{{ invoice.ubl_version_id }}</cbc:CustomizationID>
  5. <cbc:ProfileID>{{ invoice.profile_id }}</cbc:ProfileID>
  6. <cbc:ID>{{ invoice.invoice_id }}</cbc:ID>
  7. <cbc:IssueDate>{{ invoice.issue_date.strftime("%Y-%m-%d") }}</cbc:IssueDate>
  8. {% if invoice.due_date is defined -%}
  9. <cbc:DueDate>{{ invoice.due_date.strftime("%Y-%m-%d") }}</cbc:DueDate>
  10. {% endif -%}
  11. <cbc:InvoiceTypeCode>{{ invoice.invoice_type_code }}</cbc:InvoiceTypeCode>
  12. <cbc:DocumentCurrencyCode>{{ invoice.currency }}</cbc:DocumentCurrencyCode>
  13. <cbc:TaxCurrencyCode>{{ invoice.currency }}</cbc:TaxCurrencyCode>
  14. <cac:AccountingSupplierParty>
  15. <cac:Party>
  16. <cbc:EndpointID schemeID="{{ invoice.seller_party.endpoint_scheme or 'ES:VAT' }}">{{ invoice.seller_party.party_legal_entity_id }}</cbc:EndpointID>
  17. <cac:PartyName>
  18. <cbc:Name>{{ invoice.seller_party.name }}</cbc:Name>
  19. </cac:PartyName>
  20. <cac:PostalAddress>
  21. <cbc:StreetName>{{ invoice.seller_party.postal_address.address }}</cbc:StreetName>
  22. <cbc:CityName>{{ invoice.seller_party.postal_address.city_name }}</cbc:CityName>
  23. <cbc:PostalZone>{{ invoice.seller_party.postal_address.postal_zone }}</cbc:PostalZone>
  24. <cac:Country>
  25. <cbc:IdentificationCode listID="ISO3166-1:Alpha2">{{ invoice.seller_party.postal_address.country }}</cbc:IdentificationCode>
  26. </cac:Country>
  27. </cac:PostalAddress>
  28. <cac:PartyTaxScheme>
  29. <cbc:CompanyID>{{ invoice.seller_party.party_legal_entity_id }}</cbc:CompanyID>
  30. <cac:TaxScheme>
  31. <cbc:ID>VAT</cbc:ID>
  32. </cac:TaxScheme>
  33. </cac:PartyTaxScheme>
  34. <cac:PartyLegalEntity>
  35. <cbc:RegistrationName>{{ invoice.seller_party.name }}</cbc:RegistrationName>
  36. <cbc:CompanyID>{{ invoice.seller_party.party_legal_entity_id }}</cbc:CompanyID>
  37. </cac:PartyLegalEntity>
  38. <cac:Contact>
  39. <cbc:ElectronicMail>{{ invoice.seller_party.mail }}</cbc:ElectronicMail>
  40. </cac:Contact>
  41. </cac:Party>
  42. </cac:AccountingSupplierParty>
  43. <cac:AccountingCustomerParty>
  44. <cac:Party>
  45. <cbc:EndpointID schemeID="{{ invoice.buyer_party.endpoint_scheme or 'ES:VAT' }}">{{ invoice.buyer_party.party_legal_entity_id }}</cbc:EndpointID>
  46. <cac:PartyName>
  47. <cbc:Name>{{ invoice.buyer_party.name }}</cbc:Name>
  48. </cac:PartyName>
  49. <cac:PostalAddress>
  50. <cbc:StreetName>{{ invoice.buyer_party.postal_address.address }}</cbc:StreetName>
  51. <cbc:CityName>{{ invoice.buyer_party.postal_address.city_name }}</cbc:CityName>
  52. <cbc:PostalZone>{{ invoice.buyer_party.postal_address.postal_zone }}</cbc:PostalZone>
  53. <cac:Country>
  54. <cbc:IdentificationCode listID="ISO3166-1:Alpha2">{{ invoice.buyer_party.postal_address.country }}</cbc:IdentificationCode>
  55. </cac:Country>
  56. </cac:PostalAddress>
  57. <cac:PartyTaxScheme>
  58. <cbc:CompanyID>{{ invoice.buyer_party.party_legal_entity_id }}</cbc:CompanyID>
  59. <cac:TaxScheme>
  60. <cbc:ID>VAT</cbc:ID>
  61. </cac:TaxScheme>
  62. </cac:PartyTaxScheme>
  63. <cac:PartyLegalEntity>
  64. <cbc:RegistrationName>{{ invoice.buyer_party.name }}</cbc:RegistrationName>
  65. <cbc:CompanyID>{{ invoice.buyer_party.party_legal_entity_id }}</cbc:CompanyID>
  66. </cac:PartyLegalEntity>
  67. <cac:Contact>
  68. <cbc:ElectronicMail>{{ invoice.buyer_party.mail }}</cbc:ElectronicMail>
  69. </cac:Contact>
  70. </cac:Party>
  71. </cac:AccountingCustomerParty>
  72. {%- if invoice.payment_means_code is defined %}
  73. <cac:PaymentMeans>
  74. <cbc:PaymentMeansCode>{{ invoice.payment_means_code }}</cbc:PaymentMeansCode>
  75. {%- if invoice.payment_means_code == "49" and invoice.buyer_party.bank_info.iban is defined %}
  76. <cac:PaymentMandate>
  77. {%- if invoice.buyer_party.bank_info.mandate_reference_identifier is defined %}
  78. <cbc:ID>{{ invoice.buyer_party.bank_info.mandate_reference_identifier }}</cbc:ID>
  79. {%- endif %}
  80. <cac:PayerFinancialAccount>
  81. <cbc:ID>{{ invoice.buyer_party.bank_info.iban }}</cbc:ID>
  82. </cac:PayerFinancialAccount>
  83. </cac:PaymentMandate>
  84. {%- elif invoice.payment_means_code == "49" and invoice.buyer_party.bank_info.account is defined %}
  85. <cac:PaymentMandate>
  86. {%- if invoice.buyer_party.bank_info.mandate_reference_identifier is defined %}
  87. <cbc:ID>{{ invoice.buyer_party.bank_info.mandate_reference_identifier }}</cbc:ID>
  88. {%- endif %}
  89. <cac:PayerFinancialAccount>
  90. <cbc:ID>{{ invoice.buyer_party.bank_info.account }}</cbc:ID>
  91. </cac:PayerFinancialAccount>
  92. </cac:PaymentMandate>
  93. {%- elif invoice.payment_means_code == "31" and invoice.seller_party.bank_info.iban is defined and invoice.seller_party.bank_info.bic is defined %}
  94. <cac:PayeeFinancialAccount>
  95. <cbc:ID>{{ invoice.seller_party.bank_info.iban }}</cbc:ID>
  96. <cac:FinancialInstitutionBranch>
  97. <cbc:ID>{{ invoice.seller_party.bank_info.bic }}</cbc:ID>
  98. </cac:FinancialInstitutionBranch>
  99. </cac:PayeeFinancialAccount>
  100. {%- elif invoice.payment_means_code == "31" and invoice.seller_party.bank_info.account is defined -%}
  101. <cac:PayeeFinancialAccount>
  102. <cbc:ID>{{ invoice.seller_party.bank_info.account }}</cbc:ID>
  103. </cac:PayeeFinancialAccount>
  104. {%- endif %}
  105. </cac:PaymentMeans>
  106. {%- endif %}
  107. {%- if invoice.discount_amount.amount > 0 %}
  108. <cac:AllowanceCharge>
  109. <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  110. <cbc:AllowanceChargeReason>discount</cbc:AllowanceChargeReason>
  111. <cbc:MultiplierFactorNumeric>{{ invoice.discount_percent * 100 }}</cbc:MultiplierFactorNumeric>
  112. <cbc:Amount currencyID="{{ invoice.currency }}">{{ invoice.discount_amount }}</cbc:Amount>
  113. <cbc:BaseAmount currencyID="{{ invoice.currency }}">{{ invoice.discount_base_amount }}</cbc:BaseAmount>
  114. {%- for tax in invoice.unique_taxes -%}
  115. <cac:TaxCategory>
  116. <cbc:ID>{{ tax.category }}</cbc:ID>
  117. <cbc:Percent>{{ tax.percent * 100 }}</cbc:Percent>
  118. <cac:TaxScheme>
  119. <cbc:ID>VAT</cbc:ID>
  120. </cac:TaxScheme>
  121. </cac:TaxCategory>
  122. {%- endfor %}
  123. </cac:AllowanceCharge>
  124. {%- endif %}
  125. {%- if invoice.charge_amount.amount > 0 %}
  126. <cac:AllowanceCharge>
  127. <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  128. <cbc:AllowanceChargeReason>charge</cbc:AllowanceChargeReason>
  129. <cbc:MultiplierFactorNumeric>{{ invoice.charge_percent * 100 }}</cbc:MultiplierFactorNumeric>
  130. <cbc:Amount currencyID="{{ invoice.currency }}">{{ invoice.charge_amount }}</cbc:Amount>
  131. <cbc:BaseAmount currencyID="{{ invoice.currency }}">{{ invoice.charge_base_amount }}</cbc:BaseAmount>
  132. {%- for tax in invoice.unique_taxes %}
  133. <cac:TaxCategory>
  134. <cbc:ID>{{ tax.category }}</cbc:ID>
  135. <cbc:Percent>{{ tax.percent * 100 }}</cbc:Percent>
  136. <cac:TaxScheme>
  137. <cbc:ID>VAT</cbc:ID>
  138. </cac:TaxScheme>
  139. </cac:TaxCategory>
  140. {%- endfor %}
  141. </cac:AllowanceCharge>
  142. {%- endif %}
  143. <cac:TaxTotal>
  144. <cbc:TaxAmount currencyID="{{ invoice.currency }}">{{ invoice.tax_amount() }}</cbc:TaxAmount>
  145. {% for tax in invoice.unique_taxes -%}
  146. <cac:TaxSubtotal>
  147. <cbc:TaxableAmount currencyID="{{ invoice.currency }}">{{ invoice.taxable_base(tax) }}</cbc:TaxableAmount>
  148. <cbc:TaxAmount currencyID="{{ invoice.currency }}">{{ invoice.tax_amount(tax) }}</cbc:TaxAmount>
  149. <cac:TaxCategory>
  150. <cbc:ID>{{ tax.category }}</cbc:ID>
  151. <cbc:Percent>{{ tax.percent * 100 }}</cbc:Percent>
  152. <cac:TaxScheme>
  153. <cbc:ID>VAT</cbc:ID>
  154. </cac:TaxScheme>
  155. </cac:TaxCategory>
  156. </cac:TaxSubtotal>
  157. {% endfor -%}
  158. </cac:TaxTotal>
  159. <cac:LegalMonetaryTotal>
  160. <cbc:LineExtensionAmount currencyID="{{ invoice.currency }}">{{ invoice.line_extension_amount }}</cbc:LineExtensionAmount>
  161. <cbc:TaxExclusiveAmount currencyID="{{ invoice.currency }}">{{ invoice.tax_exclusive_amount }}</cbc:TaxExclusiveAmount>
  162. <cbc:TaxInclusiveAmount currencyID="{{ invoice.currency }}">{{ invoice.tax_inclusive_amount }}</cbc:TaxInclusiveAmount>
  163. {% if invoice.discount_amount.amount > 0 -%}
  164. <cbc:AllowanceTotalAmount currencyID="EUR">{{ invoice.discount_amount }}</cbc:AllowanceTotalAmount>
  165. {% endif -%}
  166. {% if invoice.charge_amount.amount > 0 -%}
  167. <cbc:ChargeTotalAmount currencyID="{{ invoice.currency }}">{{ invoice.charge_amount }}</cbc:ChargeTotalAmount>
  168. {% endif -%}
  169. <cbc:PayableAmount currencyID="{{ invoice.currency }}">{{ invoice.payable_amount }}</cbc:PayableAmount>
  170. </cac:LegalMonetaryTotal>
  171. {% for line in invoice.lines -%}
  172. <cac:InvoiceLine>
  173. <cbc:ID>{{ loop.index }}</cbc:ID>
  174. <cbc:InvoicedQuantity unitCode="{{ line.unit_code }}">{{ line.quantity }}</cbc:InvoicedQuantity>
  175. <cbc:LineExtensionAmount currencyID="{{ invoice.currency }}">{{ line.line_extension_amount }}</cbc:LineExtensionAmount>
  176. <cac:Item>
  177. <cbc:Name>{{ line.item_name }}</cbc:Name>
  178. <cac:ClassifiedTaxCategory>
  179. <cbc:ID>{{ line.tax.category }}</cbc:ID>
  180. <cbc:Percent>{{ line.tax.percent * 100 }}</cbc:Percent>
  181. <cac:TaxScheme>
  182. <cbc:ID>VAT</cbc:ID>
  183. </cac:TaxScheme>
  184. </cac:ClassifiedTaxCategory>
  185. </cac:Item>
  186. <cac:Price>
  187. <cbc:PriceAmount currencyID="EUR">{{ line.price }}</cbc:PriceAmount>
  188. </cac:Price>
  189. </cac:InvoiceLine>
  190. {% endfor -%}
  191. </Invoice>