cfdi40 0.0.1.alfa → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.md +10 -5
  4. data/README_es-MX.md +62 -0
  5. data/cfdi40.gemspec +2 -2
  6. data/lib/cfdi40/comprobante.rb +215 -20
  7. data/lib/cfdi40/concepto.rb +126 -0
  8. data/lib/cfdi40/conceptos.rb +4 -0
  9. data/lib/cfdi40/emisor.rb +7 -0
  10. data/lib/cfdi40/impuestos.rb +28 -0
  11. data/lib/cfdi40/node.rb +122 -0
  12. data/lib/cfdi40/receptor.rb +11 -0
  13. data/lib/cfdi40/sat_csd.rb +83 -0
  14. data/lib/cfdi40/schema_validator.rb +29 -0
  15. data/lib/cfdi40/traslado.rb +9 -0
  16. data/lib/cfdi40/traslados.rb +17 -0
  17. data/lib/cfdi40/version.rb +1 -1
  18. data/lib/cfdi40.rb +12 -0
  19. data/lib/xsd/README.md +30 -0
  20. data/lib/xsd/catCFDI.xsd +162329 -0
  21. data/lib/xsd/cfdv40.xsd +856 -0
  22. data/lib/xsd/tdCFDI.xsd +157 -0
  23. data/lib/xslt/CartaPorte20.xslt +615 -0
  24. data/lib/xslt/GastosHidrocarburos10.xslt +171 -0
  25. data/lib/xslt/IngresosHidrocarburos.xslt +39 -0
  26. data/lib/xslt/Pagos20.xslt +233 -0
  27. data/lib/xslt/TuristaPasajeroExtranjero.xslt +40 -0
  28. data/lib/xslt/aerolineas.xslt +50 -0
  29. data/lib/xslt/cadenaoriginal.xslt +405 -0
  30. data/lib/xslt/cadenaoriginal_local.xslt +405 -0
  31. data/lib/xslt/certificadodedestruccion.xslt +60 -0
  32. data/lib/xslt/cfdiregistrofiscal.xslt +19 -0
  33. data/lib/xslt/consumodeCombustibles11.xslt +94 -0
  34. data/lib/xslt/detallista.xslt +42 -0
  35. data/lib/xslt/divisas.xslt +13 -0
  36. data/lib/xslt/donat11.xslt +13 -0
  37. data/lib/xslt/iedu.xslt +26 -0
  38. data/lib/xslt/implocal.xslt +39 -0
  39. data/lib/xslt/ine11.xslt +30 -0
  40. data/lib/xslt/leyendasFisc.xslt +28 -0
  41. data/lib/xslt/nomina12.xslt +412 -0
  42. data/lib/xslt/notariospublicos.xslt +301 -0
  43. data/lib/xslt/obrasarteantiguedades.xslt +33 -0
  44. data/lib/xslt/pagoenespecie.xslt +39 -0
  45. data/lib/xslt/pfic.xslt +13 -0
  46. data/lib/xslt/renovacionysustitucionvehiculos.xslt +152 -0
  47. data/lib/xslt/servicioparcialconstruccion.xslt +44 -0
  48. data/lib/xslt/utilerias.xslt +22 -0
  49. data/lib/xslt/valesdedespensa.xslt +70 -0
  50. data/lib/xslt/vehiculousado.xslt +63 -0
  51. metadata +50 -13
@@ -0,0 +1,405 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xsl:stylesheet version="2.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/4" 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: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:detallista="http://www.sat.gob.mx/detallista" xmlns:ecc12="http://www.sat.gob.mx/EstadoDeCuentaCombustible12" xmlns:consumodecombustibles11="http://www.sat.gob.mx/ConsumoDeCombustibles11" xmlns:gceh="http://www.sat.gob.mx/GastosHidrocarburos10" xmlns:ieeh="http://www.sat.gob.mx/IngresosHidrocarburos10" xmlns:cartaporte20="http://www.sat.gob.mx/CartaPorte20" xmlns:pago20="http://www.sat.gob.mx/Pagos20">
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="https://cfdiconfiguracion.blob.core.windows.net/xslt-complemento/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="http://www.sat.gob.mx/sitio_internet/cfd/donat/donat11.xslt"/>
15
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/divisas/divisas.xslt"/>
16
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xslt"/>
17
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/leyendasFiscales/leyendasFisc.xslt"/>
18
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/pfic/pfic.xslt"/>
19
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/TuristaPasajeroExtranjero/TuristaPasajeroExtranjero.xslt"/>
20
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina12.xslt"/>
21
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/cfdiregistrofiscal/cfdiregistrofiscal.xslt"/>
22
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/pagoenespecie/pagoenespecie.xslt"/>
23
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/aerolineas/aerolineas.xslt"/>
24
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/valesdedespensa/valesdedespensa.xslt"/>
25
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/notariospublicos/notariospublicos.xslt"/>
26
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/vehiculousado/vehiculousado.xslt"/>
27
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/servicioparcialconstruccion/servicioparcialconstruccion.xslt"/>
28
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/renovacionysustitucionvehiculos/renovacionysustitucionvehiculos.xslt"/>
29
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/certificadodestruccion/certificadodedestruccion.xslt"/>
30
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/arteantiguedades/obrasarteantiguedades.xslt"/>
31
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/ComercioExterior11/ComercioExterior11.xslt"/>
32
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/ine/ine11.xslt"/>
33
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/iedu/iedu.xslt"/>
34
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/ventavehiculos/ventavehiculos11.xslt"/>
35
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/detallista/detallista.xslt"/>
36
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/EstadoDeCuentaCombustible/ecc12.xslt"/>
37
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/consumodecombustibles/consumodeCombustibles11.xslt"/>
38
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/GastosHidrocarburos10/GastosHidrocarburos10.xslt"/>
39
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/IngresosHidrocarburos10/IngresosHidrocarburos.xslt"/>
40
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte20.xslt"/>
41
+ <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/Pagos/Pagos20.xslt"/>
42
+
43
+ <!-- Aquí iniciamos el procesamiento de la cadena original con su | inicial y el terminador || -->
44
+ <xsl:template match="/">|<xsl:apply-templates select="/cfdi:Comprobante"/>||</xsl:template>
45
+ <!-- Aquí iniciamos el procesamiento de los datos incluidos en el comprobante -->
46
+ <xsl:template match="cfdi:Comprobante">
47
+ <!-- Iniciamos el tratamiento de los atributos de comprobante -->
48
+ <xsl:call-template name="Requerido">
49
+ <xsl:with-param name="valor" select="./@Version"/>
50
+ </xsl:call-template>
51
+ <xsl:call-template name="Opcional">
52
+ <xsl:with-param name="valor" select="./@Serie"/>
53
+ </xsl:call-template>
54
+ <xsl:call-template name="Opcional">
55
+ <xsl:with-param name="valor" select="./@Folio"/>
56
+ </xsl:call-template>
57
+ <xsl:call-template name="Requerido">
58
+ <xsl:with-param name="valor" select="./@Fecha"/>
59
+ </xsl:call-template>
60
+ <xsl:call-template name="Opcional">
61
+ <xsl:with-param name="valor" select="./@FormaPago"/>
62
+ </xsl:call-template>
63
+ <xsl:call-template name="Requerido">
64
+ <xsl:with-param name="valor" select="./@NoCertificado"/>
65
+ </xsl:call-template>
66
+ <xsl:call-template name="Opcional">
67
+ <xsl:with-param name="valor" select="./@CondicionesDePago"/>
68
+ </xsl:call-template>
69
+ <xsl:call-template name="Requerido">
70
+ <xsl:with-param name="valor" select="./@SubTotal"/>
71
+ </xsl:call-template>
72
+ <xsl:call-template name="Opcional">
73
+ <xsl:with-param name="valor" select="./@Descuento"/>
74
+ </xsl:call-template>
75
+ <xsl:call-template name="Requerido">
76
+ <xsl:with-param name="valor" select="./@Moneda"/>
77
+ </xsl:call-template>
78
+ <xsl:call-template name="Opcional">
79
+ <xsl:with-param name="valor" select="./@TipoCambio"/>
80
+ </xsl:call-template>
81
+ <xsl:call-template name="Requerido">
82
+ <xsl:with-param name="valor" select="./@Total"/>
83
+ </xsl:call-template>
84
+ <xsl:call-template name="Requerido">
85
+ <xsl:with-param name="valor" select="./@TipoDeComprobante"/>
86
+ </xsl:call-template>
87
+ <xsl:call-template name="Requerido">
88
+ <xsl:with-param name="valor" select="./@Exportacion"/>
89
+ </xsl:call-template>
90
+ <xsl:call-template name="Opcional">
91
+ <xsl:with-param name="valor" select="./@MetodoPago"/>
92
+ </xsl:call-template>
93
+ <xsl:call-template name="Requerido">
94
+ <xsl:with-param name="valor" select="./@LugarExpedicion"/>
95
+ </xsl:call-template>
96
+ <xsl:call-template name="Opcional">
97
+ <xsl:with-param name="valor" select="./@Confirmacion"/>
98
+ </xsl:call-template>
99
+ <!--
100
+ Llamadas para procesar al los sub nodos del comprobante
101
+ -->
102
+ <xsl:apply-templates select="./cfdi:InformacionGlobal"/>
103
+ <xsl:apply-templates select="./cfdi:CfdiRelacionados"/>
104
+ <xsl:apply-templates select="./cfdi:Emisor"/>
105
+ <xsl:apply-templates select="./cfdi:Receptor"/>
106
+ <xsl:apply-templates select="./cfdi:Conceptos"/>
107
+ <xsl:apply-templates select="./cfdi:Impuestos"/>
108
+ <xsl:for-each select="./cfdi:Complemento">
109
+ <xsl:apply-templates select="."/>
110
+ </xsl:for-each>
111
+ </xsl:template>
112
+
113
+ <!-- Manejador de nodos tipo InformacionGlobal -->
114
+ <xsl:template match="cfdi:InformacionGlobal">
115
+ <!-- Iniciamos el tratamiento de los atributos del nodo tipo InformacionGlobal -->
116
+ <xsl:call-template name="Requerido">
117
+ <xsl:with-param name="valor" select="./@Periodicidad"/>
118
+ </xsl:call-template>
119
+ <xsl:call-template name="Requerido">
120
+ <xsl:with-param name="valor" select="./@Meses"/>
121
+ </xsl:call-template>
122
+ <xsl:call-template name="Requerido">
123
+ <xsl:with-param name="valor" select="./@Año"/>
124
+ </xsl:call-template>
125
+ </xsl:template>
126
+
127
+ <!-- Manejador de nodos tipo CFDIRelacionados -->
128
+ <xsl:template match="cfdi:CfdiRelacionados">
129
+ <!-- Iniciamos el tratamiento de los atributos del nodo tipo CFDIRelacionados -->
130
+ <xsl:call-template name="Requerido">
131
+ <xsl:with-param name="valor" select="./@TipoRelacion"/>
132
+ </xsl:call-template>
133
+ <xsl:for-each select="./cfdi:CfdiRelacionado">
134
+ <xsl:call-template name="Requerido">
135
+ <xsl:with-param name="valor" select="./@UUID"/>
136
+ </xsl:call-template>
137
+ </xsl:for-each>
138
+ </xsl:template>
139
+
140
+ <!-- Manejador de nodos tipo Emisor -->
141
+ <xsl:template match="cfdi:Emisor">
142
+ <!-- Iniciamos el tratamiento de los atributos del nodo tipo Emisor -->
143
+ <xsl:call-template name="Requerido">
144
+ <xsl:with-param name="valor" select="./@Rfc"/>
145
+ </xsl:call-template>
146
+ <xsl:call-template name="Requerido">
147
+ <xsl:with-param name="valor" select="./@Nombre"/>
148
+ </xsl:call-template>
149
+ <xsl:call-template name="Requerido">
150
+ <xsl:with-param name="valor" select="./@RegimenFiscal"/>
151
+ </xsl:call-template>
152
+ <xsl:call-template name="Opcional">
153
+ <xsl:with-param name="valor" select="./@FacAtrAdquirente"/>
154
+ </xsl:call-template>
155
+ </xsl:template>
156
+
157
+ <!-- Manejador de nodos tipo Receptor -->
158
+ <xsl:template match="cfdi:Receptor">
159
+ <!-- Iniciamos el tratamiento de los atributos del nodo tipo Receptor -->
160
+ <xsl:call-template name="Requerido">
161
+ <xsl:with-param name="valor" select="./@Rfc"/>
162
+ </xsl:call-template>
163
+ <xsl:call-template name="Requerido">
164
+ <xsl:with-param name="valor" select="./@Nombre"/>
165
+ </xsl:call-template>
166
+ <xsl:call-template name="Requerido">
167
+ <xsl:with-param name="valor" select="./@DomicilioFiscalReceptor"/>
168
+ </xsl:call-template>
169
+ <xsl:call-template name="Opcional">
170
+ <xsl:with-param name="valor" select="./@ResidenciaFiscal"/>
171
+ </xsl:call-template>
172
+ <xsl:call-template name="Opcional">
173
+ <xsl:with-param name="valor" select="./@NumRegIdTrib"/>
174
+ </xsl:call-template>
175
+ <xsl:call-template name="Requerido">
176
+ <xsl:with-param name="valor" select="./@RegimenFiscalReceptor"/>
177
+ </xsl:call-template>
178
+ <xsl:call-template name="Requerido">
179
+ <xsl:with-param name="valor" select="./@UsoCFDI"/>
180
+ </xsl:call-template>
181
+
182
+ </xsl:template>
183
+
184
+ <!-- Manejador de nodos tipo Conceptos -->
185
+ <xsl:template match="cfdi:Conceptos">
186
+ <!-- Llamada para procesar los distintos nodos tipo Concepto -->
187
+ <xsl:for-each select="./cfdi:Concepto">
188
+ <xsl:apply-templates select="."/>
189
+ </xsl:for-each>
190
+ </xsl:template>
191
+
192
+ <!--Manejador de nodos tipo Concepto-->
193
+ <xsl:template match="cfdi:Concepto">
194
+ <!-- Iniciamos el tratamiento de los atributos del Concepto -->
195
+ <xsl:call-template name="Requerido">
196
+ <xsl:with-param name="valor" select="./@ClaveProdServ"/>
197
+ </xsl:call-template>
198
+ <xsl:call-template name="Opcional">
199
+ <xsl:with-param name="valor" select="./@NoIdentificacion"/>
200
+ </xsl:call-template>
201
+ <xsl:call-template name="Requerido">
202
+ <xsl:with-param name="valor" select="./@Cantidad"/>
203
+ </xsl:call-template>
204
+ <xsl:call-template name="Requerido">
205
+ <xsl:with-param name="valor" select="./@ClaveUnidad"/>
206
+ </xsl:call-template>
207
+ <xsl:call-template name="Opcional">
208
+ <xsl:with-param name="valor" select="./@Unidad"/>
209
+ </xsl:call-template>
210
+ <xsl:call-template name="Requerido">
211
+ <xsl:with-param name="valor" select="./@Descripcion"/>
212
+ </xsl:call-template>
213
+ <xsl:call-template name="Requerido">
214
+ <xsl:with-param name="valor" select="./@ValorUnitario"/>
215
+ </xsl:call-template>
216
+ <xsl:call-template name="Requerido">
217
+ <xsl:with-param name="valor" select="./@Importe"/>
218
+ </xsl:call-template>
219
+ <xsl:call-template name="Opcional">
220
+ <xsl:with-param name="valor" select="./@Descuento"/>
221
+ </xsl:call-template>
222
+ <xsl:call-template name="Requerido">
223
+ <xsl:with-param name="valor" select="./@ObjetoImp"/>
224
+ </xsl:call-template>
225
+
226
+ <!-- Manejo de sub nodos de información Traslado de Conceptos:Concepto:Impuestos:Traslados-->
227
+ <xsl:for-each select="./cfdi:Impuestos/cfdi:Traslados/cfdi:Traslado">
228
+ <xsl:call-template name="Requerido">
229
+ <xsl:with-param name="valor" select="./@Base"/>
230
+ </xsl:call-template>
231
+ <xsl:call-template name="Requerido">
232
+ <xsl:with-param name="valor" select="./@Impuesto"/>
233
+ </xsl:call-template>
234
+ <xsl:call-template name="Requerido">
235
+ <xsl:with-param name="valor" select="./@TipoFactor"/>
236
+ </xsl:call-template>
237
+ <xsl:call-template name="Opcional">
238
+ <xsl:with-param name="valor" select="./@TasaOCuota"/>
239
+ </xsl:call-template>
240
+ <xsl:call-template name="Opcional">
241
+ <xsl:with-param name="valor" select="./@Importe"/>
242
+ </xsl:call-template>
243
+ </xsl:for-each>
244
+
245
+ <!-- Manejo de sub nodos de Retencion por cada una de los Conceptos:Concepto:Impuestos:Retenciones-->
246
+ <xsl:for-each select="./cfdi:Impuestos/cfdi:Retenciones/cfdi:Retencion">
247
+ <xsl:call-template name="Requerido">
248
+ <xsl:with-param name="valor" select="./@Base"/>
249
+ </xsl:call-template>
250
+ <xsl:call-template name="Requerido">
251
+ <xsl:with-param name="valor" select="./@Impuesto"/>
252
+ </xsl:call-template>
253
+ <xsl:call-template name="Requerido">
254
+ <xsl:with-param name="valor" select="./@TipoFactor"/>
255
+ </xsl:call-template>
256
+ <xsl:call-template name="Requerido">
257
+ <xsl:with-param name="valor" select="./@TasaOCuota"/>
258
+ </xsl:call-template>
259
+ <xsl:call-template name="Requerido">
260
+ <xsl:with-param name="valor" select="./@Importe"/>
261
+ </xsl:call-template>
262
+ </xsl:for-each>
263
+
264
+ <!-- Manejo de los distintos sub nodos a cuenta de terceros de forma indistinta a su grado de dependencia -->
265
+ <xsl:for-each select="./cfdi:ACuentaTerceros">
266
+ <xsl:apply-templates select="."/>
267
+ </xsl:for-each>
268
+
269
+ <!-- Manejo de los distintos sub nodos de información aduanera de forma indistinta a su grado de dependencia -->
270
+ <xsl:for-each select="./cfdi:InformacionAduanera">
271
+ <xsl:apply-templates select="."/>
272
+ </xsl:for-each>
273
+
274
+ <!-- Llamada al manejador de nodos de CuentaPredial en caso de existir -->
275
+ <xsl:if test="./cfdi:CuentaPredial">
276
+ <xsl:apply-templates select="./cfdi:CuentaPredial"/>
277
+ </xsl:if>
278
+
279
+ <!-- Llamada al manejador de nodos de ComplementoConcepto en caso de existir -->
280
+ <xsl:if test="./cfdi:ComplementoConcepto">
281
+ <xsl:apply-templates select="./cfdi:ComplementoConcepto"/>
282
+ </xsl:if>
283
+
284
+ <!-- Llamada al manejador de nodos de Parte en caso de existir -->
285
+ <xsl:for-each select=".//cfdi:Parte">
286
+ <xsl:apply-templates select="."/>
287
+ </xsl:for-each>
288
+ </xsl:template>
289
+
290
+ <!-- Manejador de nodos tipo ACuentaTerceros -->
291
+ <xsl:template match="cfdi:ACuentaTerceros">
292
+ <!-- Manejo de los atributos del nodo tipo ACuentaTerceros -->
293
+ <xsl:call-template name="Requerido">
294
+ <xsl:with-param name="valor" select="./@RfcACuentaTerceros"/>
295
+ </xsl:call-template>
296
+ <xsl:call-template name="Requerido">
297
+ <xsl:with-param name="valor" select="./@NombreACuentaTerceros"/>
298
+ </xsl:call-template>
299
+ <xsl:call-template name="Requerido">
300
+ <xsl:with-param name="valor" select="./@RegimenFiscalACuentaTerceros"/>
301
+ </xsl:call-template>
302
+ <xsl:call-template name="Requerido">
303
+ <xsl:with-param name="valor" select="./@DomicilioFiscalACuentaTerceros"/>
304
+ </xsl:call-template>
305
+ </xsl:template>
306
+
307
+ <!-- Manejador de nodos tipo Información Aduanera -->
308
+ <xsl:template match="cfdi:InformacionAduanera">
309
+ <!-- Manejo de los atributos de la información aduanera -->
310
+ <xsl:call-template name="Requerido">
311
+ <xsl:with-param name="valor" select="./@NumeroPedimento"/>
312
+ </xsl:call-template>
313
+ </xsl:template>
314
+
315
+ <!-- Manejador de nodos tipo Información CuentaPredial -->
316
+ <xsl:template match="cfdi:CuentaPredial">
317
+ <xsl:call-template name="Requerido">
318
+ <xsl:with-param name="valor" select="./@Numero"/>
319
+ </xsl:call-template>
320
+ </xsl:template>
321
+
322
+ <!-- Manejador de nodos tipo ComplementoConcepto -->
323
+ <xsl:template match="cfdi:ComplementoConcepto">
324
+ <xsl:for-each select="./*">
325
+ <xsl:apply-templates select="."/>
326
+ </xsl:for-each>
327
+ </xsl:template>
328
+
329
+ <!-- Manejador de nodos tipo Parte -->
330
+ <xsl:template match="cfdi:Parte">
331
+ <!-- Iniciamos el tratamiento de los atributos de Parte-->
332
+ <xsl:call-template name="Requerido">
333
+ <xsl:with-param name="valor" select="./@ClaveProdServ"/>
334
+ </xsl:call-template>
335
+ <xsl:call-template name="Opcional">
336
+ <xsl:with-param name="valor" select="./@NoIdentificacion"/>
337
+ </xsl:call-template>
338
+ <xsl:call-template name="Requerido">
339
+ <xsl:with-param name="valor" select="./@Cantidad"/>
340
+ </xsl:call-template>
341
+ <xsl:call-template name="Opcional">
342
+ <xsl:with-param name="valor" select="./@Unidad"/>
343
+ </xsl:call-template>
344
+ <xsl:call-template name="Requerido">
345
+ <xsl:with-param name="valor" select="./@Descripcion"/>
346
+ </xsl:call-template>
347
+ <xsl:call-template name="Opcional">
348
+ <xsl:with-param name="valor" select="./@ValorUnitario"/>
349
+ </xsl:call-template>
350
+ <xsl:call-template name="Opcional">
351
+ <xsl:with-param name="valor" select="./@Importe"/>
352
+ </xsl:call-template>
353
+
354
+ <!-- Manejador de nodos tipo InformacionAduanera-->
355
+ <xsl:for-each select=".//cfdi:InformacionAduanera">
356
+ <xsl:apply-templates select="."/>
357
+ </xsl:for-each>
358
+ </xsl:template>
359
+
360
+ <!-- Manejador de nodos tipo Complemento -->
361
+ <xsl:template match="cfdi:Complemento">
362
+ <xsl:for-each select="./*">
363
+ <xsl:apply-templates select="."/>
364
+ </xsl:for-each>
365
+ </xsl:template>
366
+
367
+ <!-- Manejador de nodos tipo Domicilio fiscal -->
368
+ <xsl:template match="cfdi:Impuestos">
369
+ <!-- Manejo de sub nodos de Retencion por cada una de los Impuestos:Retenciones-->
370
+ <xsl:for-each select="./cfdi:Retenciones/cfdi:Retencion">
371
+ <xsl:call-template name="Requerido">
372
+ <xsl:with-param name="valor" select="./@Impuesto"/>
373
+ </xsl:call-template>
374
+ <xsl:call-template name="Requerido">
375
+ <xsl:with-param name="valor" select="./@Importe"/>
376
+ </xsl:call-template>
377
+ </xsl:for-each>
378
+ <!-- Iniciamos el tratamiento de los atributos de TotalImpuestosRetenidos-->
379
+ <xsl:call-template name="Opcional">
380
+ <xsl:with-param name="valor" select="./@TotalImpuestosRetenidos"/>
381
+ </xsl:call-template>
382
+ <!-- Manejo de sub nodos de información Traslado de Impuestos:Traslados-->
383
+ <xsl:for-each select="./cfdi:Traslados/cfdi:Traslado">
384
+ <xsl:call-template name="Requerido">
385
+ <xsl:with-param name="valor" select="./@Base"/>
386
+ </xsl:call-template>
387
+ <xsl:call-template name="Requerido">
388
+ <xsl:with-param name="valor" select="./@Impuesto"/>
389
+ </xsl:call-template>
390
+ <xsl:call-template name="Requerido">
391
+ <xsl:with-param name="valor" select="./@TipoFactor"/>
392
+ </xsl:call-template>
393
+ <xsl:call-template name="Opcional">
394
+ <xsl:with-param name="valor" select="./@TasaOCuota"/>
395
+ </xsl:call-template>
396
+ <xsl:call-template name="Opcional">
397
+ <xsl:with-param name="valor" select="./@Importe"/>
398
+ </xsl:call-template>
399
+ </xsl:for-each>
400
+ <!-- Iniciamos el tratamiento de los atributos de TotalImpuestosTrasladados-->
401
+ <xsl:call-template name="Opcional">
402
+ <xsl:with-param name="valor" select="./@TotalImpuestosTrasladados"/>
403
+ </xsl:call-template>
404
+ </xsl:template>
405
+ </xsl:stylesheet>