fdis 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +51 -0
  3. data/lib/cadena/ComercioExterior11.xslt +181 -0
  4. data/lib/cadena/Pagos10.xslt +165 -0
  5. data/lib/cadena/Pagos20.xsd +532 -0
  6. data/lib/cadena/Pagos20.xslt +233 -0
  7. data/lib/cadena/TuristaPasajeroExtranjero.xslt +40 -0
  8. data/lib/cadena/aerolineas.xslt +50 -0
  9. data/lib/cadena/cadena33.xslt +349 -0
  10. data/lib/cadena/cadenaoriginal_4_0.xslt +405 -0
  11. data/lib/cadena/catCFDI.xsd +162331 -0
  12. data/lib/cadena/certificadodedestruccion.xslt +60 -0
  13. data/lib/cadena/cfdiregistrofiscal.xslt +19 -0
  14. data/lib/cadena/cfdv33.xsd +737 -0
  15. data/lib/cadena/cfdv40.xsd +850 -0
  16. data/lib/cadena/consumodecombustibles.xslt +108 -0
  17. data/lib/cadena/detallista.xslt +42 -0
  18. data/lib/cadena/divisas.xslt +13 -0
  19. data/lib/cadena/donat11.xslt +13 -0
  20. data/lib/cadena/ecc11.xslt +102 -0
  21. data/lib/cadena/iedu.xslt +26 -0
  22. data/lib/cadena/implocal.xslt +39 -0
  23. data/lib/cadena/ine11.xslt +51 -0
  24. data/lib/cadena/leyendasFisc.xslt +28 -0
  25. data/lib/cadena/nomina12.xslt +412 -0
  26. data/lib/cadena/notariospublicos.xslt +301 -0
  27. data/lib/cadena/obrasarteantiguedades.xslt +33 -0
  28. data/lib/cadena/pagoenespecie.xslt +39 -0
  29. data/lib/cadena/pfic.xslt +13 -0
  30. data/lib/cadena/renovacionysustitucionvehiculos.xslt +152 -0
  31. data/lib/cadena/servicioparcialconstruccion.xslt +44 -0
  32. data/lib/cadena/terceros11.xslt +108 -0
  33. data/lib/cadena/utilerias.xslt +22 -0
  34. data/lib/cadena/valesdedespensa.xslt +70 -0
  35. data/lib/cadena/vehiculousado.xslt +63 -0
  36. data/lib/cadena/ventavehiculos11.xslt +53 -0
  37. data/lib/fdis/config.rb +94 -0
  38. data/lib/fdis/facturacion.rb +1028 -0
  39. data/lib/fdis/version.rb +3 -0
  40. data/lib/fdis.rb +17 -0
  41. metadata +139 -0
@@ -0,0 +1,349 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:cce11="http://www.sat.gob.mx/ComercioExterior11" xmlns:donat="http://www.sat.gob.mx/donat" xmlns:divisas="http://www.sat.gob.mx/divisas" xmlns:implocal="http://www.sat.gob.mx/implocal" xmlns:leyendasFisc="http://www.sat.gob.mx/leyendasFiscales" xmlns:pfic="http://www.sat.gob.mx/pfic" xmlns:tpe="http://www.sat.gob.mx/TuristaPasajeroExtranjero" xmlns:nomina12="http://www.sat.gob.mx/nomina12" xmlns:registrofiscal="http://www.sat.gob.mx/registrofiscal" xmlns:pagoenespecie="http://www.sat.gob.mx/pagoenespecie" xmlns:aerolineas="http://www.sat.gob.mx/aerolineas" xmlns:valesdedespensa="http://www.sat.gob.mx/valesdedespensa" xmlns:consumodecombustibles="http://www.sat.gob.mx/consumodecombustibles" xmlns:notariospublicos="http://www.sat.gob.mx/notariospublicos" xmlns:vehiculousado="http://www.sat.gob.mx/vehiculousado" xmlns:servicioparcial="http://www.sat.gob.mx/servicioparcialconstruccion" xmlns:decreto="http://www.sat.gob.mx/renovacionysustitucionvehiculos" xmlns:destruccion="http://www.sat.gob.mx/certificadodestruccion" xmlns:obrasarte="http://www.sat.gob.mx/arteantiguedades" xmlns:ine="http://www.sat.gob.mx/ine" xmlns:iedu="http://www.sat.gob.mx/iedu" xmlns:ventavehiculos="http://www.sat.gob.mx/ventavehiculos" xmlns:terceros="http://www.sat.gob.mx/terceros" xmlns:pago10="http://www.sat.gob.mx/Pagos" xmlns:detallista="http://www.sat.gob.mx/detallista">
3
+
4
+ <!-- Con el siguiente método se establece que la salida deberá ser en texto -->
5
+ <xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/>
6
+ <!--
7
+ En esta sección se define la inclusión de las plantillas de utilerías para colapsar espacios
8
+ -->
9
+ <xsl:include href="utilerias.xslt"/>
10
+ <!--
11
+ En esta sección se define la inclusión de las demás plantillas de transformación para
12
+ la generación de las cadenas originales de los complementos fiscales
13
+ -->
14
+ <xsl:include href="ecc11.xslt"/>
15
+ <xsl:include href="donat11.xslt"/>
16
+ <xsl:include href="divisas.xslt"/>
17
+ <xsl:include href="implocal.xslt"/>
18
+ <xsl:include href="leyendasFisc.xslt"/>
19
+ <xsl:include href="pfic.xslt"/>
20
+ <xsl:include href="TuristaPasajeroExtranjero.xslt"/>
21
+ <xsl:include href="nomina12.xslt"/>
22
+ <xsl:include href="cfdiregistrofiscal.xslt"/>
23
+ <xsl:include href="pagoenespecie.xslt"/>
24
+ <xsl:include href="aerolineas.xslt"/>
25
+ <xsl:include href="valesdedespensa.xslt"/>
26
+ <xsl:include href="consumodecombustibles.xslt"/>
27
+ <xsl:include href="notariospublicos.xslt"/>
28
+ <xsl:include href="vehiculousado.xslt"/>
29
+ <xsl:include href="servicioparcialconstruccion.xslt"/>
30
+ <xsl:include href="renovacionysustitucionvehiculos.xslt"/>
31
+ <xsl:include href="certificadodedestruccion.xslt"/>
32
+ <xsl:include href="obrasarteantiguedades.xslt"/>
33
+ <xsl:include href="ComercioExterior11.xslt"/>
34
+ <xsl:include href="ine11.xslt"/>
35
+ <xsl:include href="iedu.xslt"/>
36
+ <xsl:include href="ventavehiculos11.xslt"/>
37
+ <xsl:include href="terceros11.xslt"/>
38
+ <xsl:include href="Pagos10.xslt"/>
39
+ <xsl:include href="detallista.xslt"/>
40
+
41
+
42
+ <!-- Aquí iniciamos el procesamiento de la cadena original con su | inicial y el terminador || -->
43
+ <xsl:template match="/">|<xsl:apply-templates select="/cfdi:Comprobante"/>||</xsl:template>
44
+ <!-- Aquí iniciamos el procesamiento de los datos incluidos en el comprobante -->
45
+ <xsl:template match="cfdi:Comprobante">
46
+ <!-- Iniciamos el tratamiento de los atributos de comprobante -->
47
+ <xsl:call-template name="Requerido">
48
+ <xsl:with-param name="valor" select="./@Version"/>
49
+ </xsl:call-template>
50
+ <xsl:call-template name="Opcional">
51
+ <xsl:with-param name="valor" select="./@Serie"/>
52
+ </xsl:call-template>
53
+ <xsl:call-template name="Opcional">
54
+ <xsl:with-param name="valor" select="./@Folio"/>
55
+ </xsl:call-template>
56
+ <xsl:call-template name="Requerido">
57
+ <xsl:with-param name="valor" select="./@Fecha"/>
58
+ </xsl:call-template>
59
+ <xsl:call-template name="Opcional">
60
+ <xsl:with-param name="valor" select="./@FormaPago"/>
61
+ </xsl:call-template>
62
+ <xsl:call-template name="Requerido">
63
+ <xsl:with-param name="valor" select="./@NoCertificado"/>
64
+ </xsl:call-template>
65
+ <xsl:call-template name="Opcional">
66
+ <xsl:with-param name="valor" select="./@CondicionesDePago"/>
67
+ </xsl:call-template>
68
+ <xsl:call-template name="Requerido">
69
+ <xsl:with-param name="valor" select="./@SubTotal"/>
70
+ </xsl:call-template>
71
+ <xsl:call-template name="Opcional">
72
+ <xsl:with-param name="valor" select="./@Descuento"/>
73
+ </xsl:call-template>
74
+ <xsl:call-template name="Requerido">
75
+ <xsl:with-param name="valor" select="./@Moneda"/>
76
+ </xsl:call-template>
77
+ <xsl:call-template name="Opcional">
78
+ <xsl:with-param name="valor" select="./@TipoCambio"/>
79
+ </xsl:call-template>
80
+ <xsl:call-template name="Requerido">
81
+ <xsl:with-param name="valor" select="./@Total"/>
82
+ </xsl:call-template>
83
+ <xsl:call-template name="Requerido">
84
+ <xsl:with-param name="valor" select="./@TipoDeComprobante"/>
85
+ </xsl:call-template>
86
+ <xsl:call-template name="Opcional">
87
+ <xsl:with-param name="valor" select="./@MetodoPago"/>
88
+ </xsl:call-template>
89
+ <xsl:call-template name="Requerido">
90
+ <xsl:with-param name="valor" select="./@LugarExpedicion"/>
91
+ </xsl:call-template>
92
+ <xsl:call-template name="Opcional">
93
+ <xsl:with-param name="valor" select="./@Confirmacion"/>
94
+ </xsl:call-template>
95
+ <!--
96
+ Llamadas para procesar al los sub nodos del comprobante
97
+ -->
98
+ <xsl:apply-templates select="./cfdi:CfdiRelacionados"/>
99
+ <xsl:apply-templates select="./cfdi:Emisor"/>
100
+ <xsl:apply-templates select="./cfdi:Receptor"/>
101
+ <xsl:apply-templates select="./cfdi:Conceptos"/>
102
+ <xsl:apply-templates select="./cfdi:Impuestos"/>
103
+ <xsl:for-each select="./cfdi:Complemento">
104
+ <xsl:apply-templates select="."/>
105
+ </xsl:for-each>
106
+ </xsl:template>
107
+
108
+ <!-- Manejador de nodos tipo CFDIRelacionados -->
109
+ <xsl:template match="cfdi:CfdiRelacionados">
110
+ <!-- Iniciamos el tratamiento de los atributos del CFDIRelacionados -->
111
+ <xsl:call-template name="Requerido">
112
+ <xsl:with-param name="valor" select="./@TipoRelacion"/>
113
+ </xsl:call-template>
114
+ <xsl:for-each select="./cfdi:CfdiRelacionado">
115
+ <xsl:call-template name="Requerido">
116
+ <xsl:with-param name="valor" select="./@UUID"/>
117
+ </xsl:call-template>
118
+ </xsl:for-each>
119
+ </xsl:template>
120
+
121
+ <!-- Manejador de nodos tipo Emisor -->
122
+ <xsl:template match="cfdi:Emisor">
123
+ <!-- Iniciamos el tratamiento de los atributos del Emisor -->
124
+ <xsl:call-template name="Requerido">
125
+ <xsl:with-param name="valor" select="./@Rfc"/>
126
+ </xsl:call-template>
127
+ <xsl:call-template name="Opcional">
128
+ <xsl:with-param name="valor" select="./@Nombre"/>
129
+ </xsl:call-template>
130
+ <xsl:call-template name="Requerido">
131
+ <xsl:with-param name="valor" select="./@RegimenFiscal"/>
132
+ </xsl:call-template>
133
+ </xsl:template>
134
+
135
+ <!-- Manejador de nodos tipo Receptor -->
136
+ <xsl:template match="cfdi:Receptor">
137
+ <!-- Iniciamos el tratamiento de los atributos del Receptor -->
138
+ <xsl:call-template name="Requerido">
139
+ <xsl:with-param name="valor" select="./@Rfc"/>
140
+ </xsl:call-template>
141
+ <xsl:call-template name="Opcional">
142
+ <xsl:with-param name="valor" select="./@Nombre"/>
143
+ </xsl:call-template>
144
+ <xsl:call-template name="Opcional">
145
+ <xsl:with-param name="valor" select="./@ResidenciaFiscal"/>
146
+ </xsl:call-template>
147
+ <xsl:call-template name="Opcional">
148
+ <xsl:with-param name="valor" select="./@NumRegIdTrib"/>
149
+ </xsl:call-template>
150
+ <xsl:call-template name="Requerido">
151
+ <xsl:with-param name="valor" select="./@UsoCFDI"/>
152
+ </xsl:call-template>
153
+
154
+ </xsl:template>
155
+
156
+ <!-- Manejador de nodos tipo Conceptos -->
157
+ <xsl:template match="cfdi:Conceptos">
158
+ <!-- Llamada para procesar los distintos nodos tipo Concepto -->
159
+ <xsl:for-each select="./cfdi:Concepto">
160
+ <xsl:apply-templates select="."/>
161
+ </xsl:for-each>
162
+ </xsl:template>
163
+
164
+ <!--Manejador de nodos tipo Concepto-->
165
+ <xsl:template match="cfdi:Concepto">
166
+ <!-- Iniciamos el tratamiento de los atributos del Concepto -->
167
+ <xsl:call-template name="Requerido">
168
+ <xsl:with-param name="valor" select="./@ClaveProdServ"/>
169
+ </xsl:call-template>
170
+ <xsl:call-template name="Opcional">
171
+ <xsl:with-param name="valor" select="./@NoIdentificacion"/>
172
+ </xsl:call-template>
173
+ <xsl:call-template name="Requerido">
174
+ <xsl:with-param name="valor" select="./@Cantidad"/>
175
+ </xsl:call-template>
176
+ <xsl:call-template name="Requerido">
177
+ <xsl:with-param name="valor" select="./@ClaveUnidad"/>
178
+ </xsl:call-template>
179
+ <xsl:call-template name="Opcional">
180
+ <xsl:with-param name="valor" select="./@Unidad"/>
181
+ </xsl:call-template>
182
+ <xsl:call-template name="Requerido">
183
+ <xsl:with-param name="valor" select="./@Descripcion"/>
184
+ </xsl:call-template>
185
+ <xsl:call-template name="Requerido">
186
+ <xsl:with-param name="valor" select="./@ValorUnitario"/>
187
+ </xsl:call-template>
188
+ <xsl:call-template name="Requerido">
189
+ <xsl:with-param name="valor" select="./@Importe"/>
190
+ </xsl:call-template>
191
+ <xsl:call-template name="Opcional">
192
+ <xsl:with-param name="valor" select="./@Descuento"/>
193
+ </xsl:call-template>
194
+
195
+ <!-- Manejo de sub nodos de información Traslado de Conceptos:Concepto:Impuestos:Traslados-->
196
+ <xsl:for-each select="./cfdi:Impuestos/cfdi:Traslados/cfdi:Traslado">
197
+ <xsl:call-template name="Requerido">
198
+ <xsl:with-param name="valor" select="./@Base"/>
199
+ </xsl:call-template>
200
+ <xsl:call-template name="Requerido">
201
+ <xsl:with-param name="valor" select="./@Impuesto"/>
202
+ </xsl:call-template>
203
+ <xsl:call-template name="Requerido">
204
+ <xsl:with-param name="valor" select="./@TipoFactor"/>
205
+ </xsl:call-template>
206
+ <xsl:call-template name="Opcional">
207
+ <xsl:with-param name="valor" select="./@TasaOCuota"/>
208
+ </xsl:call-template>
209
+ <xsl:call-template name="Opcional">
210
+ <xsl:with-param name="valor" select="./@Importe"/>
211
+ </xsl:call-template>
212
+ </xsl:for-each>
213
+
214
+ <!-- Manejo de sub nodos de Retencion por cada una de los Conceptos:Concepto:Impuestos:Retenciones-->
215
+ <xsl:for-each select="./cfdi:Impuestos/cfdi:Retenciones/cfdi:Retencion">
216
+ <xsl:call-template name="Requerido">
217
+ <xsl:with-param name="valor" select="./@Base"/>
218
+ </xsl:call-template>
219
+ <xsl:call-template name="Requerido">
220
+ <xsl:with-param name="valor" select="./@Impuesto"/>
221
+ </xsl:call-template>
222
+ <xsl:call-template name="Requerido">
223
+ <xsl:with-param name="valor" select="./@TipoFactor"/>
224
+ </xsl:call-template>
225
+ <xsl:call-template name="Requerido">
226
+ <xsl:with-param name="valor" select="./@TasaOCuota"/>
227
+ </xsl:call-template>
228
+ <xsl:call-template name="Requerido">
229
+ <xsl:with-param name="valor" select="./@Importe"/>
230
+ </xsl:call-template>
231
+ </xsl:for-each>
232
+
233
+ <!-- Manejo de los distintos sub nodos de información aduanera de forma indistinta a su grado de dependencia -->
234
+ <xsl:for-each select="./cfdi:InformacionAduanera">
235
+ <xsl:apply-templates select="."/>
236
+ </xsl:for-each>
237
+
238
+ <!-- Llamada al manejador de nodos de CuentaPredial en caso de existir -->
239
+ <xsl:if test="./cfdi:CuentaPredial">
240
+ <xsl:apply-templates select="./cfdi:CuentaPredial"/>
241
+ </xsl:if>
242
+
243
+ <!-- Llamada al manejador de nodos de ComplementoConcepto en caso de existir -->
244
+ <xsl:if test="./cfdi:ComplementoConcepto">
245
+ <xsl:apply-templates select="./cfdi:ComplementoConcepto"/>
246
+ </xsl:if>
247
+
248
+ <!-- Llamada al manejador de nodos de Parte en caso de existir -->
249
+ <xsl:for-each select=".//cfdi:Parte">
250
+ <xsl:apply-templates select="."/>
251
+ </xsl:for-each>
252
+ </xsl:template>
253
+
254
+ <!-- Manejador de nodos tipo Información Aduanera -->
255
+ <xsl:template match="cfdi:InformacionAduanera">
256
+ <!-- Manejo de los atributos de la información aduanera -->
257
+ <xsl:call-template name="Requerido">
258
+ <xsl:with-param name="valor" select="./@NumeroPedimento"/>
259
+ </xsl:call-template>
260
+ </xsl:template>
261
+
262
+ <!-- Manejador de nodos tipo Información CuentaPredial -->
263
+ <xsl:template match="cfdi:CuentaPredial">
264
+ <xsl:call-template name="Requerido">
265
+ <xsl:with-param name="valor" select="./@Numero"/>
266
+ </xsl:call-template>
267
+ </xsl:template>
268
+
269
+ <!-- Manejador de nodos tipo ComplementoConcepto -->
270
+ <xsl:template match="cfdi:ComplementoConcepto">
271
+ <xsl:for-each select="./*">
272
+ <xsl:apply-templates select="."/>
273
+ </xsl:for-each>
274
+ </xsl:template>
275
+
276
+ <!-- Manejador de nodos tipo Parte -->
277
+ <xsl:template match="cfdi:Parte">
278
+ <!-- Iniciamos el tratamiento de los atributos de Parte-->
279
+ <xsl:call-template name="Requerido">
280
+ <xsl:with-param name="valor" select="./@ClaveProdServ"/>
281
+ </xsl:call-template>
282
+ <xsl:call-template name="Opcional">
283
+ <xsl:with-param name="valor" select="./@NoIdentificacion"/>
284
+ </xsl:call-template>
285
+ <xsl:call-template name="Requerido">
286
+ <xsl:with-param name="valor" select="./@Cantidad"/>
287
+ </xsl:call-template>
288
+ <xsl:call-template name="Opcional">
289
+ <xsl:with-param name="valor" select="./@Unidad"/>
290
+ </xsl:call-template>
291
+ <xsl:call-template name="Requerido">
292
+ <xsl:with-param name="valor" select="./@Descripcion"/>
293
+ </xsl:call-template>
294
+ <xsl:call-template name="Opcional">
295
+ <xsl:with-param name="valor" select="./@ValorUnitario"/>
296
+ </xsl:call-template>
297
+ <xsl:call-template name="Opcional">
298
+ <xsl:with-param name="valor" select="./@Importe"/>
299
+ </xsl:call-template>
300
+
301
+ <!-- Manejador de nodos tipo InformacionAduanera-->
302
+ <xsl:for-each select=".//cfdi:InformacionAduanera">
303
+ <xsl:apply-templates select="."/>
304
+ </xsl:for-each>
305
+ </xsl:template>
306
+
307
+ <!-- Manejador de nodos tipo Complemento -->
308
+ <xsl:template match="cfdi:Complemento">
309
+ <xsl:for-each select="./*">
310
+ <xsl:apply-templates select="."/>
311
+ </xsl:for-each>
312
+ </xsl:template>
313
+
314
+ <!-- Manejador de nodos tipo Domicilio fiscal -->
315
+ <xsl:template match="cfdi:Impuestos">
316
+ <!-- Manejo de sub nodos de Retencion por cada una de los Impuestos:Retenciones-->
317
+ <xsl:for-each select="./cfdi:Retenciones/cfdi:Retencion">
318
+ <xsl:call-template name="Requerido">
319
+ <xsl:with-param name="valor" select="./@Impuesto"/>
320
+ </xsl:call-template>
321
+ <xsl:call-template name="Requerido">
322
+ <xsl:with-param name="valor" select="./@Importe"/>
323
+ </xsl:call-template>
324
+ </xsl:for-each>
325
+ <!-- Iniciamos el tratamiento de los atributos de TotalImpuestosRetenidos-->
326
+ <xsl:call-template name="Opcional">
327
+ <xsl:with-param name="valor" select="./@TotalImpuestosRetenidos"/>
328
+ </xsl:call-template>
329
+ <!-- Manejo de sub nodos de información Traslado de Impuestos:Traslados-->
330
+ <xsl:for-each select="./cfdi:Traslados/cfdi:Traslado">
331
+ <xsl:call-template name="Requerido">
332
+ <xsl:with-param name="valor" select="./@Impuesto"/>
333
+ </xsl:call-template>
334
+ <xsl:call-template name="Requerido">
335
+ <xsl:with-param name="valor" select="./@TipoFactor"/>
336
+ </xsl:call-template>
337
+ <xsl:call-template name="Requerido">
338
+ <xsl:with-param name="valor" select="./@TasaOCuota"/>
339
+ </xsl:call-template>
340
+ <xsl:call-template name="Requerido">
341
+ <xsl:with-param name="valor" select="./@Importe"/>
342
+ </xsl:call-template>
343
+ </xsl:for-each>
344
+ <!-- Iniciamos el tratamiento de los atributos de TotalImpuestosTrasladados-->
345
+ <xsl:call-template name="Opcional">
346
+ <xsl:with-param name="valor" select="./@TotalImpuestosTrasladados"/>
347
+ </xsl:call-template>
348
+ </xsl:template>
349
+ </xsl:stylesheet>