ticketbai 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +32 -0
  4. data/CHANGELOG.md +13 -0
  5. data/Gemfile +6 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +107 -0
  8. data/Rakefile +12 -0
  9. data/bin/console +15 -0
  10. data/bin/setup +8 -0
  11. data/lib/ticketbai/api/client.rb +63 -0
  12. data/lib/ticketbai/api/registry.rb +34 -0
  13. data/lib/ticketbai/api/request.rb +125 -0
  14. data/lib/ticketbai/api/response_parser.rb +36 -0
  15. data/lib/ticketbai/checksum_calculator.rb +15 -0
  16. data/lib/ticketbai/document.rb +21 -0
  17. data/lib/ticketbai/document_validator.rb +42 -0
  18. data/lib/ticketbai/documents/annulment.rb +45 -0
  19. data/lib/ticketbai/documents/api_payload.rb +47 -0
  20. data/lib/ticketbai/documents/issuance.rb +55 -0
  21. data/lib/ticketbai/documents/issuance_unsigned.rb +58 -0
  22. data/lib/ticketbai/errors.rb +27 -0
  23. data/lib/ticketbai/nodes/breakdown_type.rb +72 -0
  24. data/lib/ticketbai/nodes/invoice_chaining.rb +22 -0
  25. data/lib/ticketbai/nodes/invoice_data.rb +24 -0
  26. data/lib/ticketbai/nodes/invoice_header.rb +26 -0
  27. data/lib/ticketbai/nodes/issuer.rb +18 -0
  28. data/lib/ticketbai/nodes/lroe_header.rb +29 -0
  29. data/lib/ticketbai/nodes/lroe_issued_invoices.rb +28 -0
  30. data/lib/ticketbai/nodes/receiver.rb +36 -0
  31. data/lib/ticketbai/nodes/software.rb +17 -0
  32. data/lib/ticketbai/operation.rb +59 -0
  33. data/lib/ticketbai/operations/annulment.rb +41 -0
  34. data/lib/ticketbai/operations/issuance.rb +93 -0
  35. data/lib/ticketbai/operations/issuance_unsigned.rb +89 -0
  36. data/lib/ticketbai/signer.rb +273 -0
  37. data/lib/ticketbai/tbai_identifier.rb +33 -0
  38. data/lib/ticketbai/tbai_qr.rb +50 -0
  39. data/lib/ticketbai/version.rb +5 -0
  40. data/lib/ticketbai/xmldsig-core-schema.xsd +318 -0
  41. data/lib/ticketbai/xsd_validators/annulment.xsd +392 -0
  42. data/lib/ticketbai/xsd_validators/issuance.xsd +865 -0
  43. data/lib/ticketbai.rb +89 -0
  44. data/ticketbai.gemspec +42 -0
  45. metadata +186 -0
@@ -0,0 +1,392 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:T="urn:ticketbai:anulacion" targetNamespace="urn:ticketbai:anulacion">
3
+
4
+ <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="lib/ticketbai/xmldsig-core-schema.xsd"/>
5
+
6
+ <element name="AnulaTicketBai">
7
+ <complexType>
8
+ <sequence>
9
+ <element name="Cabecera" type="T:Cabecera"/>
10
+ <element name="IDFactura" type="T:IDFactura"/>
11
+ <element name="HuellaTBAI" type="T:HuellaTBAI"/>
12
+ <element ref="ds:Signature"/>
13
+ </sequence>
14
+ </complexType>
15
+ </element>
16
+ <complexType name="Cabecera">
17
+ <sequence>
18
+ <element name="IDVersionTBAI" type="T:IDVersionTicketBaiType"/>
19
+ </sequence>
20
+ </complexType>
21
+ <complexType name="Emisor">
22
+ <sequence>
23
+ <element name="NIF" type="T:NIFType"/>
24
+ <element name="ApellidosNombreRazonSocial" type="T:TextMax120Type"/>
25
+ </sequence>
26
+ </complexType>
27
+ <complexType name="IDFactura">
28
+ <sequence>
29
+ <element name="Emisor" type="T:Emisor"/>
30
+ <element name="CabeceraFactura" type="T:CabeceraFacturaType"/>
31
+ </sequence>
32
+ </complexType>
33
+ <complexType name="CabeceraFacturaType">
34
+ <sequence>
35
+ <element name="SerieFactura" type="T:TextMax20Type" minOccurs="0"/>
36
+ <element name="NumFactura" type="T:TextMax20Type"/>
37
+ <element name="FechaExpedicionFactura" type="T:FechaType"/>
38
+ </sequence>
39
+ </complexType>
40
+ <complexType name="HuellaTBAI">
41
+ <sequence>
42
+ <element name="Software" type="T:SoftwareFacturacionType"/>
43
+ <element name="NumSerieDispositivo" type="T:TextMax30Type" minOccurs="0"/>
44
+ </sequence>
45
+ </complexType>
46
+ <complexType name="SoftwareFacturacionType">
47
+ <sequence>
48
+ <element name="LicenciaTBAI" type="T:TextMax20Type"/>
49
+ <element name="EntidadDesarrolladora" type="T:EntidadDesarrolladoraType"/>
50
+ <element name="Nombre" type="T:TextMax120Type"/>
51
+ <element name="Version" type="T:TextMax20Type"/>
52
+ </sequence>
53
+ </complexType>
54
+ <complexType name="EntidadDesarrolladoraType">
55
+ <sequence>
56
+ <choice>
57
+ <element name="NIF" type="T:NIFType"/>
58
+ <element name="IDOtro" type="T:IDOtro"/>
59
+ </choice>
60
+ </sequence>
61
+ </complexType>
62
+ <complexType name="IDOtro">
63
+ <sequence>
64
+ <element name="CodigoPais" type="T:CountryType2" minOccurs="0"/>
65
+ <element name="IDType" type="T:IDTypeType"/>
66
+ <element name="ID" type="T:TextMax20Type"/>
67
+ </sequence>
68
+ </complexType>
69
+ <simpleType name="NIFType">
70
+ <annotation>
71
+ <documentation >NIF: Secuencia de 9 dígitos o
72
+ letras mayúsculas
73
+ </documentation>
74
+ </annotation>
75
+ <restriction base="string">
76
+ <length value="9" />
77
+ <pattern
78
+ value="(([a-z|A-Z]{1}\d{7}[a-z|A-Z]{1})|(\d{8}[a-z|A-Z]{1})|([a-z|A-Z]{1}\d{8}))" />
79
+ </restriction>
80
+ <!-- ([A-Z]|\d){9} -->
81
+ </simpleType>
82
+ <simpleType name="FechaType">
83
+ <restriction base="string">
84
+ <length value="10" />
85
+ <pattern value="\d{2,2}-\d{2,2}-\d{4,4}"/>
86
+ </restriction>
87
+ </simpleType>
88
+ <!-- Cadena de 20 caracteres -->
89
+ <simpleType name="TextMax20Type">
90
+ <restriction base="string">
91
+ <maxLength value="20"/>
92
+ </restriction>
93
+ </simpleType>
94
+ <!-- Cadena de 30 caracteres -->
95
+ <simpleType name="TextMax30Type">
96
+ <restriction base="string">
97
+ <maxLength value="30"/>
98
+ </restriction>
99
+ </simpleType>
100
+ <!-- Cadena de 120 caracteres -->
101
+ <simpleType name="TextMax120Type">
102
+ <restriction base="string">
103
+ <maxLength value="120"/>
104
+ </restriction>
105
+ </simpleType>
106
+ <!-- IDTicketBaiBertsioa - IDVersionTicketBai -->
107
+ <simpleType name="IDVersionTicketBaiType">
108
+ <restriction base="string">
109
+ <enumeration value="1.2"/>
110
+ </restriction>
111
+ </simpleType>
112
+ <!-- Herrialdearen kodea - Código de país -->
113
+ <simpleType name="CountryType2">
114
+ <restriction base="string">
115
+ <enumeration value="AF"/>
116
+ <enumeration value="AL"/>
117
+ <enumeration value="DE"/>
118
+ <enumeration value="AD"/>
119
+ <enumeration value="AO"/>
120
+ <enumeration value="AI"/>
121
+ <enumeration value="AQ"/>
122
+ <enumeration value="AG"/>
123
+ <enumeration value="SA"/>
124
+ <enumeration value="DZ"/>
125
+ <enumeration value="AR"/>
126
+ <enumeration value="AM"/>
127
+ <enumeration value="AW"/>
128
+ <enumeration value="AU"/>
129
+ <enumeration value="AT"/>
130
+ <enumeration value="AZ"/>
131
+ <enumeration value="BS"/>
132
+ <enumeration value="BH"/>
133
+ <enumeration value="BD"/>
134
+ <enumeration value="BB"/>
135
+ <enumeration value="BE"/>
136
+ <enumeration value="BZ"/>
137
+ <enumeration value="BJ"/>
138
+ <enumeration value="BM"/>
139
+ <enumeration value="BY"/>
140
+ <enumeration value="BO"/>
141
+ <enumeration value="BA"/>
142
+ <enumeration value="BW"/>
143
+ <enumeration value="BV"/>
144
+ <enumeration value="BR"/>
145
+ <enumeration value="BN"/>
146
+ <enumeration value="BG"/>
147
+ <enumeration value="BF"/>
148
+ <enumeration value="BI"/>
149
+ <enumeration value="BT"/>
150
+ <enumeration value="CV"/>
151
+ <enumeration value="KY"/>
152
+ <enumeration value="KH"/>
153
+ <enumeration value="CM"/>
154
+ <enumeration value="CA"/>
155
+ <enumeration value="CF"/>
156
+ <enumeration value="CC"/>
157
+ <enumeration value="CO"/>
158
+ <enumeration value="KM"/>
159
+ <enumeration value="CG"/>
160
+ <enumeration value="CD"/>
161
+ <enumeration value="CK"/>
162
+ <enumeration value="KP"/>
163
+ <enumeration value="KR"/>
164
+ <enumeration value="CI"/>
165
+ <enumeration value="CR"/>
166
+ <enumeration value="HR"/>
167
+ <enumeration value="CU"/>
168
+ <enumeration value="TD"/>
169
+ <enumeration value="CZ"/>
170
+ <enumeration value="CL"/>
171
+ <enumeration value="CN"/>
172
+ <enumeration value="CY"/>
173
+ <enumeration value="CW"/>
174
+ <enumeration value="DK"/>
175
+ <enumeration value="DM"/>
176
+ <enumeration value="DO"/>
177
+ <enumeration value="EC"/>
178
+ <enumeration value="EG"/>
179
+ <enumeration value="AE"/>
180
+ <enumeration value="ER"/>
181
+ <enumeration value="SK"/>
182
+ <enumeration value="SI"/>
183
+ <enumeration value="ES"/>
184
+ <enumeration value="US"/>
185
+ <enumeration value="EE"/>
186
+ <enumeration value="ET"/>
187
+ <enumeration value="FO"/>
188
+ <enumeration value="PH"/>
189
+ <enumeration value="FI"/>
190
+ <enumeration value="FJ"/>
191
+ <enumeration value="FR"/>
192
+ <enumeration value="GA"/>
193
+ <enumeration value="GM"/>
194
+ <enumeration value="GE"/>
195
+ <enumeration value="GS"/>
196
+ <enumeration value="GH"/>
197
+ <enumeration value="GI"/>
198
+ <enumeration value="GD"/>
199
+ <enumeration value="GR"/>
200
+ <enumeration value="GL"/>
201
+ <enumeration value="GU"/>
202
+ <enumeration value="GT"/>
203
+ <enumeration value="GG"/>
204
+ <enumeration value="GN"/>
205
+ <enumeration value="GQ"/>
206
+ <enumeration value="GW"/>
207
+ <enumeration value="GY"/>
208
+ <enumeration value="HT"/>
209
+ <enumeration value="HM"/>
210
+ <enumeration value="HN"/>
211
+ <enumeration value="HK"/>
212
+ <enumeration value="HU"/>
213
+ <enumeration value="IN"/>
214
+ <enumeration value="ID"/>
215
+ <enumeration value="IR"/>
216
+ <enumeration value="IQ"/>
217
+ <enumeration value="IE"/>
218
+ <enumeration value="IM"/>
219
+ <enumeration value="IS"/>
220
+ <enumeration value="IL"/>
221
+ <enumeration value="IT"/>
222
+ <enumeration value="JM"/>
223
+ <enumeration value="JP"/>
224
+ <enumeration value="JE"/>
225
+ <enumeration value="JO"/>
226
+ <enumeration value="KZ"/>
227
+ <enumeration value="KE"/>
228
+ <enumeration value="KG"/>
229
+ <enumeration value="KI"/>
230
+ <enumeration value="KW"/>
231
+ <enumeration value="LA"/>
232
+ <enumeration value="LS"/>
233
+ <enumeration value="LV"/>
234
+ <enumeration value="LB"/>
235
+ <enumeration value="LR"/>
236
+ <enumeration value="LY"/>
237
+ <enumeration value="LI"/>
238
+ <enumeration value="LT"/>
239
+ <enumeration value="LU"/>
240
+ <enumeration value="XG"/>
241
+ <enumeration value="MO"/>
242
+ <enumeration value="MK"/>
243
+ <enumeration value="MG"/>
244
+ <enumeration value="MY"/>
245
+ <enumeration value="MW"/>
246
+ <enumeration value="MV"/>
247
+ <enumeration value="ML"/>
248
+ <enumeration value="MT"/>
249
+ <enumeration value="FK"/>
250
+ <enumeration value="MP"/>
251
+ <enumeration value="MA"/>
252
+ <enumeration value="MH"/>
253
+ <enumeration value="MU"/>
254
+ <enumeration value="MR"/>
255
+ <enumeration value="YT"/>
256
+ <enumeration value="UM"/>
257
+ <enumeration value="MX"/>
258
+ <enumeration value="FM"/>
259
+ <enumeration value="MD"/>
260
+ <enumeration value="MC"/>
261
+ <enumeration value="MN"/>
262
+ <enumeration value="ME"/>
263
+ <enumeration value="MS"/>
264
+ <enumeration value="MZ"/>
265
+ <enumeration value="MM"/>
266
+ <enumeration value="NA"/>
267
+ <enumeration value="NR"/>
268
+ <enumeration value="CX"/>
269
+ <enumeration value="NP"/>
270
+ <enumeration value="NI"/>
271
+ <enumeration value="NE"/>
272
+ <enumeration value="NG"/>
273
+ <enumeration value="NU"/>
274
+ <enumeration value="NF"/>
275
+ <enumeration value="NO"/>
276
+ <enumeration value="NC"/>
277
+ <enumeration value="NZ"/>
278
+ <enumeration value="IO"/>
279
+ <enumeration value="OM"/>
280
+ <enumeration value="NL"/>
281
+ <enumeration value="BQ"/>
282
+ <enumeration value="PK"/>
283
+ <enumeration value="PW"/>
284
+ <enumeration value="PA"/>
285
+ <enumeration value="PG"/>
286
+ <enumeration value="PY"/>
287
+ <enumeration value="PE"/>
288
+ <enumeration value="PN"/>
289
+ <enumeration value="PF"/>
290
+ <enumeration value="PL"/>
291
+ <enumeration value="PT"/>
292
+ <enumeration value="PR"/>
293
+ <enumeration value="QA"/>
294
+ <enumeration value="GB"/>
295
+ <enumeration value="RW"/>
296
+ <enumeration value="RO"/>
297
+ <enumeration value="RU"/>
298
+ <enumeration value="SB"/>
299
+ <enumeration value="SV"/>
300
+ <enumeration value="WS"/>
301
+ <enumeration value="AS"/>
302
+ <enumeration value="KN"/>
303
+ <enumeration value="SM"/>
304
+ <enumeration value="SX"/>
305
+ <enumeration value="PM"/>
306
+ <enumeration value="VC"/>
307
+ <enumeration value="SH"/>
308
+ <enumeration value="LC"/>
309
+ <enumeration value="ST"/>
310
+ <enumeration value="SN"/>
311
+ <enumeration value="RS"/>
312
+ <enumeration value="SC"/>
313
+ <enumeration value="SL"/>
314
+ <enumeration value="SG"/>
315
+ <enumeration value="SY"/>
316
+ <enumeration value="SO"/>
317
+ <enumeration value="LK"/>
318
+ <enumeration value="SZ"/>
319
+ <enumeration value="ZA"/>
320
+ <enumeration value="SD"/>
321
+ <enumeration value="SS"/>
322
+ <enumeration value="SE"/>
323
+ <enumeration value="CH"/>
324
+ <enumeration value="SR"/>
325
+ <enumeration value="TH"/>
326
+ <enumeration value="TW"/>
327
+ <enumeration value="TZ"/>
328
+ <enumeration value="TJ"/>
329
+ <enumeration value="PS"/>
330
+ <enumeration value="TF"/>
331
+ <enumeration value="TL"/>
332
+ <enumeration value="TG"/>
333
+ <enumeration value="TK"/>
334
+ <enumeration value="TO"/>
335
+ <enumeration value="TT"/>
336
+ <enumeration value="TN"/>
337
+ <enumeration value="TC"/>
338
+ <enumeration value="TM"/>
339
+ <enumeration value="TR"/>
340
+ <enumeration value="TV"/>
341
+ <enumeration value="UA"/>
342
+ <enumeration value="UG"/>
343
+ <enumeration value="UY"/>
344
+ <enumeration value="UZ"/>
345
+ <enumeration value="VU"/>
346
+ <enumeration value="VA"/>
347
+ <enumeration value="VE"/>
348
+ <enumeration value="VN"/>
349
+ <enumeration value="VG"/>
350
+ <enumeration value="VI"/>
351
+ <enumeration value="WF"/>
352
+ <enumeration value="YE"/>
353
+ <enumeration value="DJ"/>
354
+ <enumeration value="ZM"/>
355
+ <enumeration value="ZW"/>
356
+ <enumeration value="QU"/>
357
+ <enumeration value="XB"/>
358
+ <enumeration value="XU"/>
359
+ <enumeration value="XN"/>
360
+ </restriction>
361
+ </simpleType>
362
+ <!-- Egoitza herrialdeko identifikazio motak - Tipos de identificación en el país de residencia -->
363
+ <simpleType name="IDTypeType">
364
+ <restriction base="string">
365
+ <enumeration value="02">
366
+ <annotation>
367
+ <documentation >IFZ BEZ - NIF IVA</documentation>
368
+ </annotation>
369
+ </enumeration>
370
+ <enumeration value="03">
371
+ <annotation>
372
+ <documentation >Pasaportea - Pasaporte</documentation>
373
+ </annotation>
374
+ </enumeration>
375
+ <enumeration value="04">
376
+ <annotation>
377
+ <documentation >Egoitza dagoen herrialdeak edo lurraldeak emandako nortasun agiri ofiziala - Documento oficial de identificación expedido por el país o territorio de residencia</documentation>
378
+ </annotation>
379
+ </enumeration>
380
+ <enumeration value="05">
381
+ <annotation>
382
+ <documentation >Egoitza ziurtagiria - Certificado de residencia</documentation>
383
+ </annotation>
384
+ </enumeration>
385
+ <enumeration value="06">
386
+ <annotation>
387
+ <documentation >Beste frogagiri bat - Otro documento probatorio</documentation>
388
+ </annotation>
389
+ </enumeration>
390
+ </restriction>
391
+ </simpleType>
392
+ </schema>