factur-x-builder 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/.rubocop.yml +29 -0
- data/CHANGELOG.md +25 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +55 -0
- data/LICENSE.txt +21 -0
- data/README.md +169 -0
- data/Rakefile +16 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/factur-x-builder.gemspec +37 -0
- data/lib/factur-x-builder.rb +5 -0
- data/lib/factur_x/address.rb +19 -0
- data/lib/factur_x/allowance_charge.rb +50 -0
- data/lib/factur_x/codes.rb +77 -0
- data/lib/factur_x/contact.rb +18 -0
- data/lib/factur_x/document.rb +400 -0
- data/lib/factur_x/errors.rb +39 -0
- data/lib/factur_x/formatting.rb +84 -0
- data/lib/factur_x/invoice.rb +81 -0
- data/lib/factur_x/line.rb +82 -0
- data/lib/factur_x/note.rb +41 -0
- data/lib/factur_x/party.rb +52 -0
- data/lib/factur_x/payment.rb +46 -0
- data/lib/factur_x/schemas/Factur-X_1.09_EN16931_QualifiedDataType_100.xsd +94 -0
- data/lib/factur_x/schemas/Factur-X_1.09_EN16931_ReusableAggregateBusinessInformationEntity_100.xsd +318 -0
- data/lib/factur_x/schemas/Factur-X_1.09_EN16931_UnqualifiedDataType_100.xsd +84 -0
- data/lib/factur_x/schemas/Factur-X_EN16931.xsd +20 -0
- data/lib/factur_x/tax_breakdown.rb +39 -0
- data/lib/factur_x/totals.rb +35 -0
- data/lib/factur_x/validation/rules.rb +349 -0
- data/lib/factur_x/validation/schema.rb +40 -0
- data/lib/factur_x/version.rb +5 -0
- data/lib/factur_x.rb +49 -0
- metadata +103 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "codes"
|
|
4
|
+
|
|
5
|
+
module FacturX
|
|
6
|
+
class Note
|
|
7
|
+
LATE_PAYMENT_PENALTIES = "Tout retard de paiement engendre une pénalité exigible à compter " \
|
|
8
|
+
"de la date d'échéance, calculée sur la base de trois fois le taux " \
|
|
9
|
+
"d'intérêt légal."
|
|
10
|
+
RECOVERY_INDEMNITY = "Indemnité forfaitaire pour frais de recouvrement en cas de retard " \
|
|
11
|
+
"de paiement : 40 €."
|
|
12
|
+
NO_EARLY_PAYMENT_DISCOUNT = "Les règlements reçus avant la date d'échéance ne donneront " \
|
|
13
|
+
"pas lieu à escompte."
|
|
14
|
+
|
|
15
|
+
attr_reader :content, :subject_code
|
|
16
|
+
|
|
17
|
+
def initialize(content:, subject_code: nil)
|
|
18
|
+
@content = content
|
|
19
|
+
@subject_code = subject_code
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class << self
|
|
23
|
+
def recovery_indemnity(content = RECOVERY_INDEMNITY)
|
|
24
|
+
new(content: content, subject_code: Codes::NoteSubject::PAYMENT_TERMS)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def late_payment_penalties(content = LATE_PAYMENT_PENALTIES)
|
|
28
|
+
new(content: content, subject_code: Codes::NoteSubject::PAYMENT_PENALTIES)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def no_early_payment_discount(content = NO_EARLY_PAYMENT_DISCOUNT)
|
|
32
|
+
new(content: content, subject_code: Codes::NoteSubject::DISCOUNT_TERMS)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# The three statements French law requires on every B2B invoice.
|
|
36
|
+
def french_legal_mentions
|
|
37
|
+
[recovery_indemnity, late_payment_penalties, no_early_payment_discount]
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "codes"
|
|
4
|
+
|
|
5
|
+
module FacturX
|
|
6
|
+
# A seller, buyer, payee or ship-to party.
|
|
7
|
+
#
|
|
8
|
+
# French identifiers are first-class: `siret` becomes the party GlobalID
|
|
9
|
+
# (scheme 0009), `siren` the legal organization ID (scheme 0002), and
|
|
10
|
+
# `routing_id` the electronic address (scheme 0225) used to route the
|
|
11
|
+
# invoice through the PPF, defaulting to the SIRET.
|
|
12
|
+
class Party
|
|
13
|
+
attr_reader :name, :trading_name, :siret, :siren, :vat_number, :tax_id,
|
|
14
|
+
:address, :contact, :global_id, :global_id_scheme,
|
|
15
|
+
:legal_id, :legal_id_scheme, :routing_id, :routing_id_scheme
|
|
16
|
+
|
|
17
|
+
def initialize(name:, address: nil, contact: nil, trading_name: nil,
|
|
18
|
+
siret: nil, siren: nil, vat_number: nil, tax_id: nil,
|
|
19
|
+
global_id: nil, global_id_scheme: nil,
|
|
20
|
+
legal_id: nil, legal_id_scheme: nil,
|
|
21
|
+
routing_id: :derive_from_siret, routing_id_scheme: nil)
|
|
22
|
+
@name = name
|
|
23
|
+
@trading_name = trading_name
|
|
24
|
+
@address = address
|
|
25
|
+
@contact = contact
|
|
26
|
+
@siret = siret
|
|
27
|
+
@siren = siren
|
|
28
|
+
@vat_number = vat_number
|
|
29
|
+
@tax_id = tax_id
|
|
30
|
+
|
|
31
|
+
@global_id = global_id || siret
|
|
32
|
+
@global_id_scheme = global_id_scheme || (Codes::Scheme::SIRET if @global_id && siret)
|
|
33
|
+
|
|
34
|
+
@legal_id = legal_id || siren
|
|
35
|
+
@legal_id_scheme = legal_id_scheme || (Codes::Scheme::SIREN if @legal_id && siren)
|
|
36
|
+
|
|
37
|
+
@routing_id = routing_id == :derive_from_siret ? siret : routing_id
|
|
38
|
+
@routing_id_scheme = routing_id_scheme || (Codes::Scheme::ROUTING_SIRET if @routing_id)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def contact?
|
|
42
|
+
!contact.nil? && !contact.empty?
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def tax_registrations
|
|
46
|
+
registrations = []
|
|
47
|
+
registrations << [vat_number, Codes::Scheme::VAT] if vat_number
|
|
48
|
+
registrations << [tax_id, Codes::Scheme::FISCAL] if tax_id
|
|
49
|
+
registrations
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "codes"
|
|
4
|
+
|
|
5
|
+
module FacturX
|
|
6
|
+
class PaymentMeans
|
|
7
|
+
attr_reader :type_code, :information, :iban, :account_name, :account_id, :bic,
|
|
8
|
+
:debtor_iban, :card_id, :cardholder_name
|
|
9
|
+
|
|
10
|
+
def initialize(type_code: Codes::PaymentMeansType::CREDIT_TRANSFER, information: nil,
|
|
11
|
+
iban: nil, account_name: nil, account_id: nil, bic: nil,
|
|
12
|
+
debtor_iban: nil, card_id: nil, cardholder_name: nil)
|
|
13
|
+
@type_code = type_code
|
|
14
|
+
@information = information
|
|
15
|
+
@iban = iban
|
|
16
|
+
@account_name = account_name
|
|
17
|
+
@account_id = account_id
|
|
18
|
+
@bic = bic
|
|
19
|
+
@debtor_iban = debtor_iban
|
|
20
|
+
@card_id = card_id
|
|
21
|
+
@cardholder_name = cardholder_name
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def creditor_account?
|
|
25
|
+
!(iban || account_name || account_id).nil?
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def card?
|
|
29
|
+
!card_id.nil?
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
class PaymentTerms
|
|
34
|
+
attr_reader :description, :due_on, :mandate_reference
|
|
35
|
+
|
|
36
|
+
def initialize(description: nil, due_on: nil, mandate_reference: nil)
|
|
37
|
+
@description = description
|
|
38
|
+
@due_on = due_on
|
|
39
|
+
@mandate_reference = mandate_reference
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def empty?
|
|
43
|
+
[description, due_on, mandate_reference].all?(&:nil?)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<xs:schema xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
|
3
|
+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
4
|
+
targetNamespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
|
5
|
+
elementFormDefault="qualified">
|
|
6
|
+
<xs:simpleType name="AllowanceChargeReasonCodeContentType">
|
|
7
|
+
<xs:restriction base="xs:token"/>
|
|
8
|
+
</xs:simpleType>
|
|
9
|
+
<xs:complexType name="AllowanceChargeReasonCodeType">
|
|
10
|
+
<xs:simpleContent>
|
|
11
|
+
<xs:extension base="qdt:AllowanceChargeReasonCodeContentType"/>
|
|
12
|
+
</xs:simpleContent>
|
|
13
|
+
</xs:complexType>
|
|
14
|
+
<xs:simpleType name="CountryIDContentType">
|
|
15
|
+
<xs:restriction base="xs:token"/>
|
|
16
|
+
</xs:simpleType>
|
|
17
|
+
<xs:complexType name="CountryIDType">
|
|
18
|
+
<xs:simpleContent>
|
|
19
|
+
<xs:extension base="qdt:CountryIDContentType"/>
|
|
20
|
+
</xs:simpleContent>
|
|
21
|
+
</xs:complexType>
|
|
22
|
+
<xs:simpleType name="CurrencyCodeContentType">
|
|
23
|
+
<xs:restriction base="xs:token"/>
|
|
24
|
+
</xs:simpleType>
|
|
25
|
+
<xs:complexType name="CurrencyCodeType">
|
|
26
|
+
<xs:simpleContent>
|
|
27
|
+
<xs:extension base="qdt:CurrencyCodeContentType"/>
|
|
28
|
+
</xs:simpleContent>
|
|
29
|
+
</xs:complexType>
|
|
30
|
+
<xs:simpleType name="DocumentCodeContentType">
|
|
31
|
+
<xs:restriction base="xs:token"/>
|
|
32
|
+
</xs:simpleType>
|
|
33
|
+
<xs:complexType name="DocumentCodeType">
|
|
34
|
+
<xs:simpleContent>
|
|
35
|
+
<xs:extension base="qdt:DocumentCodeContentType"/>
|
|
36
|
+
</xs:simpleContent>
|
|
37
|
+
</xs:complexType>
|
|
38
|
+
<xs:simpleType name="FormattedDateTimeFormatContentType">
|
|
39
|
+
<xs:restriction base="xs:string"/>
|
|
40
|
+
</xs:simpleType>
|
|
41
|
+
<xs:complexType name="FormattedDateTimeType">
|
|
42
|
+
<xs:sequence>
|
|
43
|
+
<xs:element name="DateTimeString">
|
|
44
|
+
<xs:complexType>
|
|
45
|
+
<xs:simpleContent>
|
|
46
|
+
<xs:extension base="xs:string">
|
|
47
|
+
<xs:attribute name="format" type="qdt:FormattedDateTimeFormatContentType" use="required"/>
|
|
48
|
+
</xs:extension>
|
|
49
|
+
</xs:simpleContent>
|
|
50
|
+
</xs:complexType>
|
|
51
|
+
</xs:element>
|
|
52
|
+
</xs:sequence>
|
|
53
|
+
</xs:complexType>
|
|
54
|
+
<xs:simpleType name="PaymentMeansCodeContentType">
|
|
55
|
+
<xs:restriction base="xs:token"/>
|
|
56
|
+
</xs:simpleType>
|
|
57
|
+
<xs:complexType name="PaymentMeansCodeType">
|
|
58
|
+
<xs:simpleContent>
|
|
59
|
+
<xs:extension base="qdt:PaymentMeansCodeContentType"/>
|
|
60
|
+
</xs:simpleContent>
|
|
61
|
+
</xs:complexType>
|
|
62
|
+
<xs:simpleType name="ReferenceCodeContentType">
|
|
63
|
+
<xs:restriction base="xs:token"/>
|
|
64
|
+
</xs:simpleType>
|
|
65
|
+
<xs:complexType name="ReferenceCodeType">
|
|
66
|
+
<xs:simpleContent>
|
|
67
|
+
<xs:extension base="qdt:ReferenceCodeContentType"/>
|
|
68
|
+
</xs:simpleContent>
|
|
69
|
+
</xs:complexType>
|
|
70
|
+
<xs:simpleType name="TaxCategoryCodeContentType">
|
|
71
|
+
<xs:restriction base="xs:token"/>
|
|
72
|
+
</xs:simpleType>
|
|
73
|
+
<xs:complexType name="TaxCategoryCodeType">
|
|
74
|
+
<xs:simpleContent>
|
|
75
|
+
<xs:extension base="qdt:TaxCategoryCodeContentType"/>
|
|
76
|
+
</xs:simpleContent>
|
|
77
|
+
</xs:complexType>
|
|
78
|
+
<xs:simpleType name="TaxTypeCodeContentType">
|
|
79
|
+
<xs:restriction base="xs:token"/>
|
|
80
|
+
</xs:simpleType>
|
|
81
|
+
<xs:complexType name="TaxTypeCodeType">
|
|
82
|
+
<xs:simpleContent>
|
|
83
|
+
<xs:extension base="qdt:TaxTypeCodeContentType"/>
|
|
84
|
+
</xs:simpleContent>
|
|
85
|
+
</xs:complexType>
|
|
86
|
+
<xs:simpleType name="TimeReferenceCodeContentType">
|
|
87
|
+
<xs:restriction base="xs:token"/>
|
|
88
|
+
</xs:simpleType>
|
|
89
|
+
<xs:complexType name="TimeReferenceCodeType">
|
|
90
|
+
<xs:simpleContent>
|
|
91
|
+
<xs:extension base="qdt:TimeReferenceCodeContentType"/>
|
|
92
|
+
</xs:simpleContent>
|
|
93
|
+
</xs:complexType>
|
|
94
|
+
</xs:schema>
|
data/lib/factur_x/schemas/Factur-X_1.09_EN16931_ReusableAggregateBusinessInformationEntity_100.xsd
ADDED
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<xs:schema xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
|
3
|
+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
4
|
+
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
|
5
|
+
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
|
6
|
+
targetNamespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
|
7
|
+
elementFormDefault="qualified">
|
|
8
|
+
<xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" schemaLocation="Factur-X_1.09_EN16931_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd"/>
|
|
9
|
+
<xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="Factur-X_1.09_EN16931_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
|
|
10
|
+
<xs:complexType name="CreditorFinancialAccountType">
|
|
11
|
+
<xs:sequence>
|
|
12
|
+
<xs:element name="IBANID" type="udt:IDType" minOccurs="0"/>
|
|
13
|
+
<xs:element name="AccountName" type="udt:TextType" minOccurs="0"/>
|
|
14
|
+
<xs:element name="ProprietaryID" type="udt:IDType" minOccurs="0"/>
|
|
15
|
+
</xs:sequence>
|
|
16
|
+
</xs:complexType>
|
|
17
|
+
<xs:complexType name="CreditorFinancialInstitutionType">
|
|
18
|
+
<xs:sequence>
|
|
19
|
+
<xs:element name="BICID" type="udt:IDType"/>
|
|
20
|
+
</xs:sequence>
|
|
21
|
+
</xs:complexType>
|
|
22
|
+
<xs:complexType name="DebtorFinancialAccountType">
|
|
23
|
+
<xs:sequence>
|
|
24
|
+
<xs:element name="IBANID" type="udt:IDType"/>
|
|
25
|
+
</xs:sequence>
|
|
26
|
+
</xs:complexType>
|
|
27
|
+
<xs:complexType name="DocumentContextParameterType">
|
|
28
|
+
<xs:sequence>
|
|
29
|
+
<xs:element name="ID" type="udt:IDType"/>
|
|
30
|
+
</xs:sequence>
|
|
31
|
+
</xs:complexType>
|
|
32
|
+
<xs:complexType name="DocumentLineDocumentType">
|
|
33
|
+
<xs:sequence>
|
|
34
|
+
<xs:element name="LineID" type="udt:IDType"/>
|
|
35
|
+
<xs:element name="IncludedNote" type="ram:NoteType" minOccurs="0"/>
|
|
36
|
+
</xs:sequence>
|
|
37
|
+
</xs:complexType>
|
|
38
|
+
<xs:complexType name="ExchangedDocumentContextType">
|
|
39
|
+
<xs:sequence>
|
|
40
|
+
<xs:element name="BusinessProcessSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType" minOccurs="0"/>
|
|
41
|
+
<xs:element name="GuidelineSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType"/>
|
|
42
|
+
</xs:sequence>
|
|
43
|
+
</xs:complexType>
|
|
44
|
+
<xs:complexType name="ExchangedDocumentType">
|
|
45
|
+
<xs:sequence>
|
|
46
|
+
<xs:element name="ID" type="udt:IDType"/>
|
|
47
|
+
<xs:element name="TypeCode" type="qdt:DocumentCodeType"/>
|
|
48
|
+
<xs:element name="IssueDateTime" type="udt:DateTimeType"/>
|
|
49
|
+
<xs:element name="IncludedNote" type="ram:NoteType" minOccurs="0" maxOccurs="unbounded"/>
|
|
50
|
+
</xs:sequence>
|
|
51
|
+
</xs:complexType>
|
|
52
|
+
<xs:complexType name="HeaderTradeAgreementType">
|
|
53
|
+
<xs:sequence>
|
|
54
|
+
<xs:element name="BuyerReference" type="udt:TextType" minOccurs="0"/>
|
|
55
|
+
<xs:element name="SellerTradeParty" type="ram:TradePartyType"/>
|
|
56
|
+
<xs:element name="BuyerTradeParty" type="ram:TradePartyType"/>
|
|
57
|
+
<xs:element name="SellerTaxRepresentativeTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
|
58
|
+
<xs:element name="SellerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
|
59
|
+
<xs:element name="BuyerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
|
60
|
+
<xs:element name="ContractReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
|
61
|
+
<xs:element name="AdditionalReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
|
|
62
|
+
<xs:element name="SpecifiedProcuringProject" type="ram:ProcuringProjectType" minOccurs="0"/>
|
|
63
|
+
</xs:sequence>
|
|
64
|
+
</xs:complexType>
|
|
65
|
+
<xs:complexType name="HeaderTradeDeliveryType">
|
|
66
|
+
<xs:sequence>
|
|
67
|
+
<xs:element name="ShipToTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
|
68
|
+
<xs:element name="ActualDeliverySupplyChainEvent" type="ram:SupplyChainEventType" minOccurs="0"/>
|
|
69
|
+
<xs:element name="DespatchAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
|
70
|
+
<xs:element name="ReceivingAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
|
71
|
+
</xs:sequence>
|
|
72
|
+
</xs:complexType>
|
|
73
|
+
<xs:complexType name="HeaderTradeSettlementType">
|
|
74
|
+
<xs:sequence>
|
|
75
|
+
<xs:element name="CreditorReferenceID" type="udt:IDType" minOccurs="0"/>
|
|
76
|
+
<xs:element name="PaymentReference" type="udt:TextType" minOccurs="0"/>
|
|
77
|
+
<xs:element name="TaxCurrencyCode" type="qdt:CurrencyCodeType" minOccurs="0"/>
|
|
78
|
+
<xs:element name="InvoiceCurrencyCode" type="qdt:CurrencyCodeType"/>
|
|
79
|
+
<xs:element name="PayeeTradeParty" type="ram:TradePartyType" minOccurs="0"/>
|
|
80
|
+
<xs:element name="SpecifiedTradeSettlementPaymentMeans" type="ram:TradeSettlementPaymentMeansType" minOccurs="0" maxOccurs="unbounded"/>
|
|
81
|
+
<xs:element name="ApplicableTradeTax" type="ram:TradeTaxType" maxOccurs="unbounded"/>
|
|
82
|
+
<xs:element name="BillingSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/>
|
|
83
|
+
<xs:element name="SpecifiedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
|
84
|
+
<xs:element name="SpecifiedTradePaymentTerms" type="ram:TradePaymentTermsType" minOccurs="0"/>
|
|
85
|
+
<xs:element name="SpecifiedTradeSettlementHeaderMonetarySummation" type="ram:TradeSettlementHeaderMonetarySummationType"/>
|
|
86
|
+
<xs:element name="InvoiceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
|
|
87
|
+
<xs:element name="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0"/>
|
|
88
|
+
</xs:sequence>
|
|
89
|
+
</xs:complexType>
|
|
90
|
+
<xs:complexType name="LegalOrganizationType">
|
|
91
|
+
<xs:sequence>
|
|
92
|
+
<xs:element name="ID" type="udt:IDType" minOccurs="0"/>
|
|
93
|
+
<xs:element name="TradingBusinessName" type="udt:TextType" minOccurs="0"/>
|
|
94
|
+
</xs:sequence>
|
|
95
|
+
</xs:complexType>
|
|
96
|
+
<xs:complexType name="LineTradeAgreementType">
|
|
97
|
+
<xs:sequence>
|
|
98
|
+
<xs:element name="BuyerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
|
99
|
+
<xs:element name="GrossPriceProductTradePrice" type="ram:TradePriceType" minOccurs="0"/>
|
|
100
|
+
<xs:element name="NetPriceProductTradePrice" type="ram:TradePriceType"/>
|
|
101
|
+
</xs:sequence>
|
|
102
|
+
</xs:complexType>
|
|
103
|
+
<xs:complexType name="LineTradeDeliveryType">
|
|
104
|
+
<xs:sequence>
|
|
105
|
+
<xs:element name="BilledQuantity" type="udt:QuantityType"/>
|
|
106
|
+
</xs:sequence>
|
|
107
|
+
</xs:complexType>
|
|
108
|
+
<xs:complexType name="LineTradeSettlementType">
|
|
109
|
+
<xs:sequence>
|
|
110
|
+
<xs:element name="ApplicableTradeTax" type="ram:TradeTaxType"/>
|
|
111
|
+
<xs:element name="BillingSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/>
|
|
112
|
+
<xs:element name="SpecifiedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/>
|
|
113
|
+
<xs:element name="SpecifiedTradeSettlementLineMonetarySummation" type="ram:TradeSettlementLineMonetarySummationType"/>
|
|
114
|
+
<xs:element name="AdditionalReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
|
|
115
|
+
<xs:element name="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0"/>
|
|
116
|
+
</xs:sequence>
|
|
117
|
+
</xs:complexType>
|
|
118
|
+
<xs:complexType name="NoteType">
|
|
119
|
+
<xs:sequence>
|
|
120
|
+
<xs:element name="Content" type="udt:TextType"/>
|
|
121
|
+
<xs:element name="SubjectCode" type="udt:CodeType" minOccurs="0"/>
|
|
122
|
+
</xs:sequence>
|
|
123
|
+
</xs:complexType>
|
|
124
|
+
<xs:complexType name="ProcuringProjectType">
|
|
125
|
+
<xs:sequence>
|
|
126
|
+
<xs:element name="ID" type="udt:IDType"/>
|
|
127
|
+
<xs:element name="Name" type="udt:TextType"/>
|
|
128
|
+
</xs:sequence>
|
|
129
|
+
</xs:complexType>
|
|
130
|
+
<xs:complexType name="ProductCharacteristicType">
|
|
131
|
+
<xs:sequence>
|
|
132
|
+
<xs:element name="Description" type="udt:TextType"/>
|
|
133
|
+
<xs:element name="Value" type="udt:TextType"/>
|
|
134
|
+
</xs:sequence>
|
|
135
|
+
</xs:complexType>
|
|
136
|
+
<xs:complexType name="ProductClassificationType">
|
|
137
|
+
<xs:sequence>
|
|
138
|
+
<xs:element name="ClassCode" type="udt:CodeType" minOccurs="0"/>
|
|
139
|
+
</xs:sequence>
|
|
140
|
+
</xs:complexType>
|
|
141
|
+
<xs:complexType name="ReferencedDocumentType">
|
|
142
|
+
<xs:sequence>
|
|
143
|
+
<xs:element name="IssuerAssignedID" type="udt:IDType" minOccurs="0"/>
|
|
144
|
+
<xs:element name="URIID" type="udt:IDType" minOccurs="0"/>
|
|
145
|
+
<xs:element name="LineID" type="udt:IDType" minOccurs="0"/>
|
|
146
|
+
<xs:element name="TypeCode" type="qdt:DocumentCodeType" minOccurs="0"/>
|
|
147
|
+
<xs:element name="Name" type="udt:TextType" minOccurs="0"/>
|
|
148
|
+
<xs:element name="AttachmentBinaryObject" type="udt:BinaryObjectType" minOccurs="0"/>
|
|
149
|
+
<xs:element name="ReferenceTypeCode" type="qdt:ReferenceCodeType" minOccurs="0"/>
|
|
150
|
+
<xs:element name="FormattedIssueDateTime" type="qdt:FormattedDateTimeType" minOccurs="0"/>
|
|
151
|
+
</xs:sequence>
|
|
152
|
+
</xs:complexType>
|
|
153
|
+
<xs:complexType name="SpecifiedPeriodType">
|
|
154
|
+
<xs:sequence>
|
|
155
|
+
<xs:element name="StartDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
|
156
|
+
<xs:element name="EndDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
|
157
|
+
</xs:sequence>
|
|
158
|
+
</xs:complexType>
|
|
159
|
+
<xs:complexType name="SupplyChainEventType">
|
|
160
|
+
<xs:sequence>
|
|
161
|
+
<xs:element name="OccurrenceDateTime" type="udt:DateTimeType"/>
|
|
162
|
+
</xs:sequence>
|
|
163
|
+
</xs:complexType>
|
|
164
|
+
<xs:complexType name="SupplyChainTradeLineItemType">
|
|
165
|
+
<xs:sequence>
|
|
166
|
+
<xs:element name="AssociatedDocumentLineDocument" type="ram:DocumentLineDocumentType"/>
|
|
167
|
+
<xs:element name="SpecifiedTradeProduct" type="ram:TradeProductType"/>
|
|
168
|
+
<xs:element name="SpecifiedLineTradeAgreement" type="ram:LineTradeAgreementType"/>
|
|
169
|
+
<xs:element name="SpecifiedLineTradeDelivery" type="ram:LineTradeDeliveryType"/>
|
|
170
|
+
<xs:element name="SpecifiedLineTradeSettlement" type="ram:LineTradeSettlementType"/>
|
|
171
|
+
</xs:sequence>
|
|
172
|
+
</xs:complexType>
|
|
173
|
+
<xs:complexType name="SupplyChainTradeTransactionType">
|
|
174
|
+
<xs:sequence>
|
|
175
|
+
<xs:element name="IncludedSupplyChainTradeLineItem" type="ram:SupplyChainTradeLineItemType" maxOccurs="unbounded"/>
|
|
176
|
+
<xs:element name="ApplicableHeaderTradeAgreement" type="ram:HeaderTradeAgreementType"/>
|
|
177
|
+
<xs:element name="ApplicableHeaderTradeDelivery" type="ram:HeaderTradeDeliveryType"/>
|
|
178
|
+
<xs:element name="ApplicableHeaderTradeSettlement" type="ram:HeaderTradeSettlementType"/>
|
|
179
|
+
</xs:sequence>
|
|
180
|
+
</xs:complexType>
|
|
181
|
+
<xs:complexType name="TaxRegistrationType">
|
|
182
|
+
<xs:sequence>
|
|
183
|
+
<xs:element name="ID" type="udt:IDType"/>
|
|
184
|
+
</xs:sequence>
|
|
185
|
+
</xs:complexType>
|
|
186
|
+
<xs:complexType name="TradeAccountingAccountType">
|
|
187
|
+
<xs:sequence>
|
|
188
|
+
<xs:element name="ID" type="udt:IDType"/>
|
|
189
|
+
</xs:sequence>
|
|
190
|
+
</xs:complexType>
|
|
191
|
+
<xs:complexType name="TradeAddressType">
|
|
192
|
+
<xs:sequence>
|
|
193
|
+
<xs:element name="PostcodeCode" type="udt:CodeType" minOccurs="0"/>
|
|
194
|
+
<xs:element name="LineOne" type="udt:TextType" minOccurs="0"/>
|
|
195
|
+
<xs:element name="LineTwo" type="udt:TextType" minOccurs="0"/>
|
|
196
|
+
<xs:element name="LineThree" type="udt:TextType" minOccurs="0"/>
|
|
197
|
+
<xs:element name="CityName" type="udt:TextType" minOccurs="0"/>
|
|
198
|
+
<xs:element name="CountryID" type="qdt:CountryIDType"/>
|
|
199
|
+
<xs:element name="CountrySubDivisionName" type="udt:TextType" minOccurs="0"/>
|
|
200
|
+
</xs:sequence>
|
|
201
|
+
</xs:complexType>
|
|
202
|
+
<xs:complexType name="TradeAllowanceChargeType">
|
|
203
|
+
<xs:sequence>
|
|
204
|
+
<xs:element name="ChargeIndicator" type="udt:IndicatorType"/>
|
|
205
|
+
<xs:element name="CalculationPercent" type="udt:PercentType" minOccurs="0"/>
|
|
206
|
+
<xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0"/>
|
|
207
|
+
<xs:element name="ActualAmount" type="udt:AmountType"/>
|
|
208
|
+
<xs:element name="ReasonCode" type="qdt:AllowanceChargeReasonCodeType" minOccurs="0"/>
|
|
209
|
+
<xs:element name="Reason" type="udt:TextType" minOccurs="0"/>
|
|
210
|
+
<xs:element name="CategoryTradeTax" type="ram:TradeTaxType" minOccurs="0"/>
|
|
211
|
+
</xs:sequence>
|
|
212
|
+
</xs:complexType>
|
|
213
|
+
<xs:complexType name="TradeContactType">
|
|
214
|
+
<xs:sequence>
|
|
215
|
+
<xs:element name="PersonName" type="udt:TextType" minOccurs="0"/>
|
|
216
|
+
<xs:element name="DepartmentName" type="udt:TextType" minOccurs="0"/>
|
|
217
|
+
<xs:element name="TelephoneUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0"/>
|
|
218
|
+
<xs:element name="EmailURIUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0"/>
|
|
219
|
+
</xs:sequence>
|
|
220
|
+
</xs:complexType>
|
|
221
|
+
<xs:complexType name="TradeCountryType">
|
|
222
|
+
<xs:sequence>
|
|
223
|
+
<xs:element name="ID" type="qdt:CountryIDType"/>
|
|
224
|
+
</xs:sequence>
|
|
225
|
+
</xs:complexType>
|
|
226
|
+
<xs:complexType name="TradePartyType">
|
|
227
|
+
<xs:sequence>
|
|
228
|
+
<xs:element name="ID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
|
229
|
+
<xs:element name="GlobalID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
|
|
230
|
+
<xs:element name="Name" type="udt:TextType" minOccurs="0"/>
|
|
231
|
+
<xs:element name="Description" type="udt:TextType" minOccurs="0"/>
|
|
232
|
+
<xs:element name="SpecifiedLegalOrganization" type="ram:LegalOrganizationType" minOccurs="0"/>
|
|
233
|
+
<xs:element name="DefinedTradeContact" type="ram:TradeContactType" minOccurs="0"/>
|
|
234
|
+
<xs:element name="PostalTradeAddress" type="ram:TradeAddressType" minOccurs="0"/>
|
|
235
|
+
<xs:element name="URIUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0"/>
|
|
236
|
+
<xs:element name="SpecifiedTaxRegistration" type="ram:TaxRegistrationType" minOccurs="0" maxOccurs="2"/>
|
|
237
|
+
</xs:sequence>
|
|
238
|
+
</xs:complexType>
|
|
239
|
+
<xs:complexType name="TradePaymentTermsType">
|
|
240
|
+
<xs:sequence>
|
|
241
|
+
<xs:element name="Description" type="udt:TextType" minOccurs="0"/>
|
|
242
|
+
<xs:element name="DueDateDateTime" type="udt:DateTimeType" minOccurs="0"/>
|
|
243
|
+
<xs:element name="DirectDebitMandateID" type="udt:IDType" minOccurs="0"/>
|
|
244
|
+
</xs:sequence>
|
|
245
|
+
</xs:complexType>
|
|
246
|
+
<xs:complexType name="TradePriceType">
|
|
247
|
+
<xs:sequence>
|
|
248
|
+
<xs:element name="ChargeAmount" type="udt:AmountType"/>
|
|
249
|
+
<xs:element name="BasisQuantity" type="udt:QuantityType" minOccurs="0"/>
|
|
250
|
+
<xs:element name="AppliedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0"/>
|
|
251
|
+
</xs:sequence>
|
|
252
|
+
</xs:complexType>
|
|
253
|
+
<xs:complexType name="TradeProductType">
|
|
254
|
+
<xs:sequence>
|
|
255
|
+
<xs:element name="GlobalID" type="udt:IDType" minOccurs="0"/>
|
|
256
|
+
<xs:element name="SellerAssignedID" type="udt:IDType" minOccurs="0"/>
|
|
257
|
+
<xs:element name="BuyerAssignedID" type="udt:IDType" minOccurs="0"/>
|
|
258
|
+
<xs:element name="Name" type="udt:TextType"/>
|
|
259
|
+
<xs:element name="Description" type="udt:TextType" minOccurs="0"/>
|
|
260
|
+
<xs:element name="ApplicableProductCharacteristic" type="ram:ProductCharacteristicType" minOccurs="0" maxOccurs="unbounded"/>
|
|
261
|
+
<xs:element name="DesignatedProductClassification" type="ram:ProductClassificationType" minOccurs="0" maxOccurs="unbounded"/>
|
|
262
|
+
<xs:element name="OriginTradeCountry" type="ram:TradeCountryType" minOccurs="0"/>
|
|
263
|
+
</xs:sequence>
|
|
264
|
+
</xs:complexType>
|
|
265
|
+
<xs:complexType name="TradeSettlementFinancialCardType">
|
|
266
|
+
<xs:sequence>
|
|
267
|
+
<xs:element name="ID" type="udt:IDType"/>
|
|
268
|
+
<xs:element name="CardholderName" type="udt:TextType" minOccurs="0"/>
|
|
269
|
+
</xs:sequence>
|
|
270
|
+
</xs:complexType>
|
|
271
|
+
<xs:complexType name="TradeSettlementHeaderMonetarySummationType">
|
|
272
|
+
<xs:sequence>
|
|
273
|
+
<xs:element name="LineTotalAmount" type="udt:AmountType"/>
|
|
274
|
+
<xs:element name="ChargeTotalAmount" type="udt:AmountType" minOccurs="0"/>
|
|
275
|
+
<xs:element name="AllowanceTotalAmount" type="udt:AmountType" minOccurs="0"/>
|
|
276
|
+
<xs:element name="TaxBasisTotalAmount" type="udt:AmountType"/>
|
|
277
|
+
<xs:element name="TaxTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="2"/>
|
|
278
|
+
<xs:element name="RoundingAmount" type="udt:AmountType" minOccurs="0"/>
|
|
279
|
+
<xs:element name="GrandTotalAmount" type="udt:AmountType"/>
|
|
280
|
+
<xs:element name="TotalPrepaidAmount" type="udt:AmountType" minOccurs="0"/>
|
|
281
|
+
<xs:element name="DuePayableAmount" type="udt:AmountType"/>
|
|
282
|
+
</xs:sequence>
|
|
283
|
+
</xs:complexType>
|
|
284
|
+
<xs:complexType name="TradeSettlementLineMonetarySummationType">
|
|
285
|
+
<xs:sequence>
|
|
286
|
+
<xs:element name="LineTotalAmount" type="udt:AmountType"/>
|
|
287
|
+
</xs:sequence>
|
|
288
|
+
</xs:complexType>
|
|
289
|
+
<xs:complexType name="TradeSettlementPaymentMeansType">
|
|
290
|
+
<xs:sequence>
|
|
291
|
+
<xs:element name="TypeCode" type="qdt:PaymentMeansCodeType"/>
|
|
292
|
+
<xs:element name="Information" type="udt:TextType" minOccurs="0"/>
|
|
293
|
+
<xs:element name="ApplicableTradeSettlementFinancialCard" type="ram:TradeSettlementFinancialCardType" minOccurs="0"/>
|
|
294
|
+
<xs:element name="PayerPartyDebtorFinancialAccount" type="ram:DebtorFinancialAccountType" minOccurs="0"/>
|
|
295
|
+
<xs:element name="PayeePartyCreditorFinancialAccount" type="ram:CreditorFinancialAccountType" minOccurs="0"/>
|
|
296
|
+
<xs:element name="PayeeSpecifiedCreditorFinancialInstitution" type="ram:CreditorFinancialInstitutionType" minOccurs="0"/>
|
|
297
|
+
</xs:sequence>
|
|
298
|
+
</xs:complexType>
|
|
299
|
+
<xs:complexType name="TradeTaxType">
|
|
300
|
+
<xs:sequence>
|
|
301
|
+
<xs:element name="CalculatedAmount" type="udt:AmountType" minOccurs="0"/>
|
|
302
|
+
<xs:element name="TypeCode" type="qdt:TaxTypeCodeType"/>
|
|
303
|
+
<xs:element name="ExemptionReason" type="udt:TextType" minOccurs="0"/>
|
|
304
|
+
<xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0"/>
|
|
305
|
+
<xs:element name="CategoryCode" type="qdt:TaxCategoryCodeType"/>
|
|
306
|
+
<xs:element name="ExemptionReasonCode" type="udt:CodeType" minOccurs="0"/>
|
|
307
|
+
<xs:element name="TaxPointDate" type="udt:DateType" minOccurs="0"/>
|
|
308
|
+
<xs:element name="DueDateTypeCode" type="qdt:TimeReferenceCodeType" minOccurs="0"/>
|
|
309
|
+
<xs:element name="RateApplicablePercent" type="udt:PercentType" minOccurs="0"/>
|
|
310
|
+
</xs:sequence>
|
|
311
|
+
</xs:complexType>
|
|
312
|
+
<xs:complexType name="UniversalCommunicationType">
|
|
313
|
+
<xs:sequence>
|
|
314
|
+
<xs:element name="URIID" type="udt:IDType" minOccurs="0"/>
|
|
315
|
+
<xs:element name="CompleteNumber" type="udt:TextType" minOccurs="0"/>
|
|
316
|
+
</xs:sequence>
|
|
317
|
+
</xs:complexType>
|
|
318
|
+
</xs:schema>
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<xs:schema xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
|
3
|
+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
4
|
+
targetNamespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
|
|
5
|
+
elementFormDefault="qualified">
|
|
6
|
+
<xs:complexType name="AmountType">
|
|
7
|
+
<xs:simpleContent>
|
|
8
|
+
<xs:extension base="xs:decimal">
|
|
9
|
+
<xs:attribute name="currencyID" type="xs:token"/>
|
|
10
|
+
</xs:extension>
|
|
11
|
+
</xs:simpleContent>
|
|
12
|
+
</xs:complexType>
|
|
13
|
+
<xs:complexType name="BinaryObjectType">
|
|
14
|
+
<xs:simpleContent>
|
|
15
|
+
<xs:extension base="xs:base64Binary">
|
|
16
|
+
<xs:attribute name="mimeCode" type="xs:token" use="required"/>
|
|
17
|
+
<xs:attribute name="filename" type="xs:string" use="required"/>
|
|
18
|
+
</xs:extension>
|
|
19
|
+
</xs:simpleContent>
|
|
20
|
+
</xs:complexType>
|
|
21
|
+
<xs:complexType name="CodeType">
|
|
22
|
+
<xs:simpleContent>
|
|
23
|
+
<xs:extension base="xs:token">
|
|
24
|
+
<xs:attribute name="listID" type="xs:token" use="optional"/>
|
|
25
|
+
<xs:attribute name="listVersionID" type="xs:token"/>
|
|
26
|
+
</xs:extension>
|
|
27
|
+
</xs:simpleContent>
|
|
28
|
+
</xs:complexType>
|
|
29
|
+
<xs:complexType name="DateTimeType">
|
|
30
|
+
<xs:choice>
|
|
31
|
+
<xs:element name="DateTimeString">
|
|
32
|
+
<xs:complexType>
|
|
33
|
+
<xs:simpleContent>
|
|
34
|
+
<xs:extension base="xs:string">
|
|
35
|
+
<xs:attribute name="format" type="xs:string" use="required"/>
|
|
36
|
+
</xs:extension>
|
|
37
|
+
</xs:simpleContent>
|
|
38
|
+
</xs:complexType>
|
|
39
|
+
</xs:element>
|
|
40
|
+
</xs:choice>
|
|
41
|
+
</xs:complexType>
|
|
42
|
+
<xs:complexType name="DateType">
|
|
43
|
+
<xs:choice>
|
|
44
|
+
<xs:element name="DateString">
|
|
45
|
+
<xs:complexType>
|
|
46
|
+
<xs:simpleContent>
|
|
47
|
+
<xs:extension base="xs:string">
|
|
48
|
+
<xs:attribute name="format" type="xs:string" use="required"/>
|
|
49
|
+
</xs:extension>
|
|
50
|
+
</xs:simpleContent>
|
|
51
|
+
</xs:complexType>
|
|
52
|
+
</xs:element>
|
|
53
|
+
</xs:choice>
|
|
54
|
+
</xs:complexType>
|
|
55
|
+
<xs:complexType name="IDType">
|
|
56
|
+
<xs:simpleContent>
|
|
57
|
+
<xs:extension base="xs:token">
|
|
58
|
+
<xs:attribute name="schemeID" type="xs:token"/>
|
|
59
|
+
</xs:extension>
|
|
60
|
+
</xs:simpleContent>
|
|
61
|
+
</xs:complexType>
|
|
62
|
+
<xs:complexType name="IndicatorType">
|
|
63
|
+
<xs:choice>
|
|
64
|
+
<xs:element name="Indicator" type="xs:boolean"/>
|
|
65
|
+
</xs:choice>
|
|
66
|
+
</xs:complexType>
|
|
67
|
+
<xs:complexType name="PercentType">
|
|
68
|
+
<xs:simpleContent>
|
|
69
|
+
<xs:extension base="xs:decimal"/>
|
|
70
|
+
</xs:simpleContent>
|
|
71
|
+
</xs:complexType>
|
|
72
|
+
<xs:complexType name="QuantityType">
|
|
73
|
+
<xs:simpleContent>
|
|
74
|
+
<xs:extension base="xs:decimal">
|
|
75
|
+
<xs:attribute name="unitCode" type="xs:token"/>
|
|
76
|
+
</xs:extension>
|
|
77
|
+
</xs:simpleContent>
|
|
78
|
+
</xs:complexType>
|
|
79
|
+
<xs:complexType name="TextType">
|
|
80
|
+
<xs:simpleContent>
|
|
81
|
+
<xs:extension base="xs:string"/>
|
|
82
|
+
</xs:simpleContent>
|
|
83
|
+
</xs:complexType>
|
|
84
|
+
</xs:schema>
|