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.
@@ -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>
@@ -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>