sw_fac 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 +8 -0
- data/.travis.yml +5 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +26 -0
- data/LICENSE.txt +21 -0
- data/README.md +39 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/cadena/ComercioExterior11.xslt +181 -0
- data/lib/cadena/Pagos10.xslt +165 -0
- data/lib/cadena/TuristaPasajeroExtranjero.xslt +40 -0
- data/lib/cadena/aerolineas.xslt +50 -0
- data/lib/cadena/cadena33.xslt +349 -0
- data/lib/cadena/certificadodedestruccion.xslt +60 -0
- data/lib/cadena/cfdiregistrofiscal.xslt +19 -0
- data/lib/cadena/cfdv33.xsd +737 -0
- data/lib/cadena/consumodecombustibles.xslt +108 -0
- data/lib/cadena/detallista.xslt +42 -0
- data/lib/cadena/divisas.xslt +13 -0
- data/lib/cadena/donat11.xslt +13 -0
- data/lib/cadena/ecc11.xslt +102 -0
- data/lib/cadena/iedu.xslt +26 -0
- data/lib/cadena/implocal.xslt +39 -0
- data/lib/cadena/ine11.xslt +51 -0
- data/lib/cadena/leyendasFisc.xslt +28 -0
- data/lib/cadena/nomina12.xslt +412 -0
- data/lib/cadena/notariospublicos.xslt +301 -0
- data/lib/cadena/obrasarteantiguedades.xslt +33 -0
- data/lib/cadena/pagoenespecie.xslt +39 -0
- data/lib/cadena/pfic.xslt +13 -0
- data/lib/cadena/renovacionysustitucionvehiculos.xslt +152 -0
- data/lib/cadena/servicioparcialconstruccion.xslt +44 -0
- data/lib/cadena/terceros11.xslt +108 -0
- data/lib/cadena/utilerias.xslt +22 -0
- data/lib/cadena/valesdedespensa.xslt +70 -0
- data/lib/cadena/vehiculousado.xslt +63 -0
- data/lib/cadena/ventavehiculos11.xslt +53 -0
- data/lib/sw_fac/config.rb +69 -0
- data/lib/sw_fac/facturacion.rb +616 -0
- data/lib/sw_fac/tools.rb +105 -0
- data/lib/sw_fac/version.rb +3 -0
- data/lib/sw_fac.rb +18 -0
- data/sw_fac.gemspec +38 -0
- data/test/sw_fac_test.rb +11 -0
- data/test/test_helper.rb +4 -0
- metadata +146 -0
@@ -0,0 +1,108 @@
|
|
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:terceros="http://www.sat.gob.mx/terceros">
|
3
|
+
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/>
|
4
|
+
<!-- Manejador de nodos tipo PorCuentadeTerceros -->
|
5
|
+
<xsl:template match="terceros:PorCuentadeTerceros">
|
6
|
+
<!--Iniciamos el tratamiento de los atributos del complemento concepto Por cuenta de Terceros -->
|
7
|
+
<xsl:call-template name="Requerido">
|
8
|
+
<xsl:with-param name="valor" select="./@version"/>
|
9
|
+
</xsl:call-template>
|
10
|
+
<xsl:call-template name="Requerido">
|
11
|
+
<xsl:with-param name="valor" select="./@rfc"/>
|
12
|
+
</xsl:call-template>
|
13
|
+
<xsl:call-template name="Opcional">
|
14
|
+
<xsl:with-param name="valor" select="./@nombre"/>
|
15
|
+
</xsl:call-template>
|
16
|
+
<!--Iniciamos el tratamiento de los atributos de la información fiscal del complemento de terceros -->
|
17
|
+
<xsl:apply-templates select=".//terceros:InformacionFiscalTercero"/>
|
18
|
+
<!-- Manejo de los atributos de la información aduanera del complemento de terceros -->
|
19
|
+
<xsl:for-each select=".//terceros:InformacionAduanera">
|
20
|
+
<xsl:apply-templates select="."/>
|
21
|
+
</xsl:for-each>
|
22
|
+
<!-- Manejo de los atributos de la cuenta predial del complento de terceros -->
|
23
|
+
<xsl:if test="./terceros:CuentaPredial">
|
24
|
+
<xsl:apply-templates select="./terceros:CuentaPredial"/>
|
25
|
+
</xsl:if>
|
26
|
+
<!-- Manejador de nodos tipo Impuestos-->
|
27
|
+
<xsl:for-each select=".//terceros:Retenciones/terceros:Retencion">
|
28
|
+
<xsl:apply-templates select="."/>
|
29
|
+
</xsl:for-each>
|
30
|
+
<xsl:for-each select=".//terceros:Traslados/terceros:Traslado">
|
31
|
+
<xsl:apply-templates select="."/>
|
32
|
+
</xsl:for-each>
|
33
|
+
</xsl:template>
|
34
|
+
<!-- Manejador de nodos tipo Retencion -->
|
35
|
+
<xsl:template match="terceros:Retencion">
|
36
|
+
<xsl:call-template name="Requerido">
|
37
|
+
<xsl:with-param name="valor" select="./@impuesto"/>
|
38
|
+
</xsl:call-template>
|
39
|
+
<xsl:call-template name="Requerido">
|
40
|
+
<xsl:with-param name="valor" select="./@importe"/>
|
41
|
+
</xsl:call-template>
|
42
|
+
</xsl:template>
|
43
|
+
<!-- Manejador de nodos tipo Traslado -->
|
44
|
+
<xsl:template match="terceros:Traslado">
|
45
|
+
<xsl:call-template name="Requerido">
|
46
|
+
<xsl:with-param name="valor" select="./@impuesto"/>
|
47
|
+
</xsl:call-template>
|
48
|
+
<xsl:call-template name="Requerido">
|
49
|
+
<xsl:with-param name="valor" select="./@tasa"/>
|
50
|
+
</xsl:call-template>
|
51
|
+
<xsl:call-template name="Requerido">
|
52
|
+
<xsl:with-param name="valor" select="./@importe"/>
|
53
|
+
</xsl:call-template>
|
54
|
+
</xsl:template>
|
55
|
+
<!-- Manejador de nodos tipo Información Aduanera -->
|
56
|
+
<xsl:template match="terceros:InformacionAduanera">
|
57
|
+
<!-- Manejo de los atributos de la información aduanera -->
|
58
|
+
<xsl:call-template name="Requerido">
|
59
|
+
<xsl:with-param name="valor" select="./@numero"/>
|
60
|
+
</xsl:call-template>
|
61
|
+
<xsl:call-template name="Requerido">
|
62
|
+
<xsl:with-param name="valor" select="./@fecha"/>
|
63
|
+
</xsl:call-template>
|
64
|
+
<xsl:call-template name="Opcional">
|
65
|
+
<xsl:with-param name="valor" select="./@aduana"/>
|
66
|
+
</xsl:call-template>
|
67
|
+
</xsl:template>
|
68
|
+
<!-- Manejador de nodos tipo Información CuentaPredial -->
|
69
|
+
<xsl:template match="terceros:CuentaPredial">
|
70
|
+
<xsl:call-template name="Requerido">
|
71
|
+
<xsl:with-param name="valor" select="./@numero"/>
|
72
|
+
</xsl:call-template>
|
73
|
+
</xsl:template>
|
74
|
+
<!-- Manejador de nodos tipo Domicilio fiscal -->
|
75
|
+
<xsl:template match="terceros:InformacionFiscalTercero">
|
76
|
+
<!-- Iniciamos el tratamiento de los atributos del Domicilio Fiscal -->
|
77
|
+
<xsl:call-template name="Requerido">
|
78
|
+
<xsl:with-param name="valor" select="./@calle"/>
|
79
|
+
</xsl:call-template>
|
80
|
+
<xsl:call-template name="Opcional">
|
81
|
+
<xsl:with-param name="valor" select="./@noExterior"/>
|
82
|
+
</xsl:call-template>
|
83
|
+
<xsl:call-template name="Opcional">
|
84
|
+
<xsl:with-param name="valor" select="./@noInterior"/>
|
85
|
+
</xsl:call-template>
|
86
|
+
<xsl:call-template name="Opcional">
|
87
|
+
<xsl:with-param name="valor" select="./@colonia"/>
|
88
|
+
</xsl:call-template>
|
89
|
+
<xsl:call-template name="Opcional">
|
90
|
+
<xsl:with-param name="valor" select="./@localidad"/>
|
91
|
+
</xsl:call-template>
|
92
|
+
<xsl:call-template name="Opcional">
|
93
|
+
<xsl:with-param name="valor" select="./@referencia"/>
|
94
|
+
</xsl:call-template>
|
95
|
+
<xsl:call-template name="Requerido">
|
96
|
+
<xsl:with-param name="valor" select="./@municipio"/>
|
97
|
+
</xsl:call-template>
|
98
|
+
<xsl:call-template name="Requerido">
|
99
|
+
<xsl:with-param name="valor" select="./@estado"/>
|
100
|
+
</xsl:call-template>
|
101
|
+
<xsl:call-template name="Requerido">
|
102
|
+
<xsl:with-param name="valor" select="./@pais"/>
|
103
|
+
</xsl:call-template>
|
104
|
+
<xsl:call-template name="Requerido">
|
105
|
+
<xsl:with-param name="valor" select="./@codigoPostal"/>
|
106
|
+
</xsl:call-template>
|
107
|
+
</xsl:template>
|
108
|
+
</xsl:stylesheet>
|
@@ -0,0 +1,22 @@
|
|
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">
|
3
|
+
|
4
|
+
<!-- Manejador de datos requeridos -->
|
5
|
+
<xsl:template name="Requerido">
|
6
|
+
<xsl:param name="valor"/>|<xsl:call-template name="ManejaEspacios">
|
7
|
+
<xsl:with-param name="s" select="$valor"/>
|
8
|
+
</xsl:call-template>
|
9
|
+
</xsl:template>
|
10
|
+
|
11
|
+
<!-- Manejador de datos opcionales -->
|
12
|
+
<xsl:template name="Opcional">
|
13
|
+
<xsl:param name="valor"/>
|
14
|
+
<xsl:if test="$valor">|<xsl:call-template name="ManejaEspacios"><xsl:with-param name="s" select="$valor"/></xsl:call-template></xsl:if>
|
15
|
+
</xsl:template>
|
16
|
+
|
17
|
+
<!-- Normalizador de espacios en blanco -->
|
18
|
+
<xsl:template name="ManejaEspacios">
|
19
|
+
<xsl:param name="s"/>
|
20
|
+
<xsl:value-of select="normalize-space(string($s))"/>
|
21
|
+
</xsl:template>
|
22
|
+
</xsl:stylesheet>
|
@@ -0,0 +1,70 @@
|
|
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:valesdedespensa="http://www.sat.gob.mx/valesdedespensa">
|
3
|
+
|
4
|
+
<!-- Manejador de nodos tipo valesdedespensa:ValesDeDespensa -->
|
5
|
+
<xsl:template match="valesdedespensa:ValesDeDespensa">
|
6
|
+
|
7
|
+
<!-- Iniciamos el tratamiento de los atributos de valesdedespensa:ValesDeDespensa -->
|
8
|
+
|
9
|
+
<xsl:call-template name="Requerido">
|
10
|
+
<xsl:with-param name="valor" select="./@version"/>
|
11
|
+
</xsl:call-template>
|
12
|
+
<xsl:call-template name="Requerido">
|
13
|
+
<xsl:with-param name="valor" select="./@tipoOperacion"/>
|
14
|
+
</xsl:call-template>
|
15
|
+
<xsl:call-template name="Opcional">
|
16
|
+
<xsl:with-param name="valor" select="./@registroPatronal"/>
|
17
|
+
</xsl:call-template>
|
18
|
+
<xsl:call-template name="Requerido">
|
19
|
+
<xsl:with-param name="valor" select="./@numeroDeCuenta"/>
|
20
|
+
</xsl:call-template>
|
21
|
+
<xsl:call-template name="Requerido">
|
22
|
+
<xsl:with-param name="valor" select="./@total"/>
|
23
|
+
</xsl:call-template>
|
24
|
+
|
25
|
+
<!-- Iniciamos el manejo de los nodos dependientes -->
|
26
|
+
<xsl:apply-templates select="./valesdedespensa:Conceptos"/>
|
27
|
+
|
28
|
+
</xsl:template>
|
29
|
+
|
30
|
+
<!-- Manejador de nodos tipo valesdedespensa:Conceptos -->
|
31
|
+
<xsl:template match="valesdedespensa:Conceptos">
|
32
|
+
|
33
|
+
<!-- Iniciamos el manejo de los nodos dependientes -->
|
34
|
+
|
35
|
+
<xsl:for-each select="./valesdedespensa:Concepto">
|
36
|
+
<xsl:apply-templates select="."/>
|
37
|
+
</xsl:for-each>
|
38
|
+
|
39
|
+
</xsl:template>
|
40
|
+
|
41
|
+
<!-- Manejador de nodos tipo valesdedespensa:Concepto -->
|
42
|
+
<xsl:template match="valesdedespensa:Concepto">
|
43
|
+
|
44
|
+
<!-- Iniciamos el tratamiento de los atributos de valesdedespensa:Concepto -->
|
45
|
+
|
46
|
+
<xsl:call-template name="Requerido">
|
47
|
+
<xsl:with-param name="valor" select="./@identificador"/>
|
48
|
+
</xsl:call-template>
|
49
|
+
<xsl:call-template name="Requerido">
|
50
|
+
<xsl:with-param name="valor" select="./@fecha"/>
|
51
|
+
</xsl:call-template>
|
52
|
+
<xsl:call-template name="Requerido">
|
53
|
+
<xsl:with-param name="valor" select="./@rfc"/>
|
54
|
+
</xsl:call-template>
|
55
|
+
<xsl:call-template name="Requerido">
|
56
|
+
<xsl:with-param name="valor" select="./@curp"/>
|
57
|
+
</xsl:call-template>
|
58
|
+
<xsl:call-template name="Requerido">
|
59
|
+
<xsl:with-param name="valor" select="./@nombre"/>
|
60
|
+
</xsl:call-template>
|
61
|
+
<xsl:call-template name="Opcional">
|
62
|
+
<xsl:with-param name="valor" select="./@numSeguridadSocial"/>
|
63
|
+
</xsl:call-template>
|
64
|
+
<xsl:call-template name="Requerido">
|
65
|
+
<xsl:with-param name="valor" select="./@importe"/>
|
66
|
+
</xsl:call-template>
|
67
|
+
|
68
|
+
</xsl:template>
|
69
|
+
|
70
|
+
</xsl:stylesheet>
|
@@ -0,0 +1,63 @@
|
|
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:vehiculousado="http://www.sat.gob.mx/vehiculousado">
|
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
|
+
<!-- Aquí iniciamos el procesamiento de la cadena original con su | inicial y el terminador || -->
|
8
|
+
<xsl:template match="/">|<xsl:apply-templates select="/vehiculousado:VehiculoUsado"/>||</xsl:template>
|
9
|
+
<!-- Aquí iniciamos el procesamiento de los datos incluidos en el comprobante -->
|
10
|
+
<xsl:template match="vehiculousado:VehiculoUsado">
|
11
|
+
<!-- Iniciamos el tratamiento de los atributos de comprobante -->
|
12
|
+
<xsl:call-template name="Requerido">
|
13
|
+
<xsl:with-param name="valor" select="./@Version"/>
|
14
|
+
</xsl:call-template>
|
15
|
+
<xsl:call-template name="Requerido">
|
16
|
+
<xsl:with-param name="valor" select="./@montoAdquisicion"/>
|
17
|
+
</xsl:call-template>
|
18
|
+
<xsl:call-template name="Requerido">
|
19
|
+
<xsl:with-param name="valor" select="./@montoEnajenacion"/>
|
20
|
+
</xsl:call-template>
|
21
|
+
<xsl:call-template name="Requerido">
|
22
|
+
<xsl:with-param name="valor" select="./@claveVehicular"/>
|
23
|
+
</xsl:call-template>
|
24
|
+
<xsl:call-template name="Requerido">
|
25
|
+
<xsl:with-param name="valor" select="./@marca"/>
|
26
|
+
</xsl:call-template>
|
27
|
+
<xsl:call-template name="Requerido">
|
28
|
+
<xsl:with-param name="valor" select="./@tipo"/>
|
29
|
+
</xsl:call-template>
|
30
|
+
<xsl:call-template name="Requerido">
|
31
|
+
<xsl:with-param name="valor" select="./@modelo"/>
|
32
|
+
</xsl:call-template>
|
33
|
+
<xsl:call-template name="Opcional">
|
34
|
+
<xsl:with-param name="valor" select="./@numeroMotor"/>
|
35
|
+
</xsl:call-template>
|
36
|
+
<xsl:call-template name="Opcional">
|
37
|
+
<xsl:with-param name="valor" select="./@numeroSerie"/>
|
38
|
+
</xsl:call-template>
|
39
|
+
<xsl:call-template name="Opcional">
|
40
|
+
<xsl:with-param name="valor" select="./@NIV"/>
|
41
|
+
</xsl:call-template>
|
42
|
+
<xsl:call-template name="Requerido">
|
43
|
+
<xsl:with-param name="valor" select="./@valor"/>
|
44
|
+
</xsl:call-template>
|
45
|
+
<!--
|
46
|
+
Llamadas para procesar al los sub nodos
|
47
|
+
-->
|
48
|
+
<xsl:apply-templates select="./vehiculousado:InformacionAduanera"/>
|
49
|
+
</xsl:template>
|
50
|
+
<!-- Manejador de nodos tipo informacionaduanera -->
|
51
|
+
<xsl:template match="vehiculousado:InformacionAduanera">
|
52
|
+
<!-- Iniciamos el tratamiento de los atributos del Emisor -->
|
53
|
+
<xsl:call-template name="Requerido">
|
54
|
+
<xsl:with-param name="valor" select="./@numero"/>
|
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="./@aduana"/>
|
61
|
+
</xsl:call-template>
|
62
|
+
</xsl:template>
|
63
|
+
</xsl:stylesheet>
|
@@ -0,0 +1,53 @@
|
|
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:ventavehiculos="http://www.sat.gob.mx/ventavehiculos">
|
3
|
+
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/>
|
4
|
+
|
5
|
+
<!-- Manejador de nodos tipo VentaVehiculos-->
|
6
|
+
|
7
|
+
<xsl:template match="ventavehiculos:VentaVehiculos">
|
8
|
+
|
9
|
+
<!--Iniciamos el tratamiento de los atributos del complemento concepto VentaVehiculos-->
|
10
|
+
|
11
|
+
<xsl:call-template name="Requerido">
|
12
|
+
<xsl:with-param name="valor" select="./@version"/>
|
13
|
+
</xsl:call-template>
|
14
|
+
|
15
|
+
<xsl:call-template name="Requerido">
|
16
|
+
<xsl:with-param name="valor" select="./@ClaveVehicular"/>
|
17
|
+
</xsl:call-template>
|
18
|
+
|
19
|
+
<xsl:if test="./@version='1.1'">
|
20
|
+
|
21
|
+
<xsl:call-template name="Requerido">
|
22
|
+
<xsl:with-param name="valor" select="./@Niv"/>
|
23
|
+
</xsl:call-template>
|
24
|
+
|
25
|
+
</xsl:if>
|
26
|
+
|
27
|
+
<!-- Manejo de los atributos de la información aduanera del complemento de terceros -->
|
28
|
+
|
29
|
+
<xsl:for-each select=".//ventavehiculos:InformacionAduanera">
|
30
|
+
<xsl:apply-templates select="."/>
|
31
|
+
</xsl:for-each>
|
32
|
+
|
33
|
+
</xsl:template>
|
34
|
+
|
35
|
+
<!-- Manejador de nodos tipo Información Aduanera -->
|
36
|
+
|
37
|
+
<xsl:template match="ventavehiculos:InformacionAduanera">
|
38
|
+
|
39
|
+
<!-- Manejo de los atributos de la información aduanera -->
|
40
|
+
|
41
|
+
<xsl:call-template name="Requerido">
|
42
|
+
<xsl:with-param name="valor" select="./@numero"/>
|
43
|
+
</xsl:call-template>
|
44
|
+
|
45
|
+
<xsl:call-template name="Requerido">
|
46
|
+
<xsl:with-param name="valor" select="./@fecha"/>
|
47
|
+
</xsl:call-template>
|
48
|
+
|
49
|
+
<xsl:call-template name="Opcional">
|
50
|
+
<xsl:with-param name="valor" select="./@aduana"/>
|
51
|
+
</xsl:call-template>
|
52
|
+
</xsl:template>
|
53
|
+
</xsl:stylesheet>
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module SwFac
|
2
|
+
class Config
|
3
|
+
# attr_accessor :production_token, :dev_token
|
4
|
+
attr_accessor :production_token, :dev_token, :doc_cer_path, :doc_key_path
|
5
|
+
attr_reader :pem, :serial, :cadena, :key_pass, :pem_cadena
|
6
|
+
|
7
|
+
def initialize(production_token, development_token, rfc, razon, regimen, doc_key_path, key_pass, doc_cer_path, production=false)
|
8
|
+
@production_token = production_token.to_s
|
9
|
+
@dev_token = development_token.to_s
|
10
|
+
@rfc = rfc.to_s
|
11
|
+
@razon = razon.to_s
|
12
|
+
@regimen_fiscal = regimen
|
13
|
+
@doc_key_path = doc_key_path.to_s
|
14
|
+
@key_pass = key_pass.to_s
|
15
|
+
@doc_cer_path = doc_cer_path
|
16
|
+
@production = production
|
17
|
+
|
18
|
+
key_to_pem
|
19
|
+
serial_number
|
20
|
+
cer_cadena
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
def key_to_pem
|
25
|
+
@pem = %x[openssl pkcs8 -inform DER -in #{@doc_key_path} -passin pass:#{@key_pass}]
|
26
|
+
@pem_cadena = @pem.clone
|
27
|
+
@pem_cadena.slice!("-----BEGIN PRIVATE KEY-----")
|
28
|
+
@pem_cadena.slice!("-----END PRIVATE KEY-----")
|
29
|
+
@pem_cadena.delete!("\n")
|
30
|
+
end
|
31
|
+
|
32
|
+
def serial_number
|
33
|
+
response = %x[openssl x509 -inform DER -in #{@doc_cer_path} -noout -serial]
|
34
|
+
d_begin = response.index(/\d/)
|
35
|
+
number = (response[d_begin..-1]).chomp
|
36
|
+
final_serial = ""
|
37
|
+
|
38
|
+
number.each_char do |s|
|
39
|
+
unless (s == "3")
|
40
|
+
final_serial << s
|
41
|
+
end
|
42
|
+
end
|
43
|
+
@serial = final_serial
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
def cer_cadena
|
48
|
+
file = File.read(@doc_cer_path)
|
49
|
+
text_certificate = OpenSSL::X509::Certificate.new(file)
|
50
|
+
cert_string = text_certificate.to_s
|
51
|
+
cert_string.slice!("-----BEGIN CERTIFICATE-----")
|
52
|
+
cert_string.slice!("-----END CERTIFICATE-----")
|
53
|
+
cert_string.delete!("\n")
|
54
|
+
@cadena = cert_string
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
UrlProduction = "http://services.sw.com.mx/"
|
62
|
+
UrlDev = "http://services.test.sw.com.mx/"
|
63
|
+
|
64
|
+
DocBase = %(<?xml version="1.0" encoding="utf-8"?><cfdi:Comprobante xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd" Version="3.3" xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><cfdi:Emisor /><cfdi:Receptor /><cfdi:Conceptos></cfdi:Conceptos><cfdi:Impuestos><cfdi:Traslados><cfdi:Traslado Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" /></cfdi:Traslados></cfdi:Impuestos></cfdi:Comprobante>)
|
65
|
+
|
66
|
+
Doc_concepto = %(<cfdi:Concepto ClaveProdServ="25172504" NoIdentificacion="COST37125R17" Cantidad="1" ClaveUnidad="H87" Unidad="Pieza" Descripcion="Producto de prueba" ValorUnitario="1000.00" Importe="1000.00"><cfdi:Impuestos><cfdi:Traslados><cfdi:Traslado Base="1000.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="160.00" /></cfdi:Traslados></cfdi:Impuestos></cfdi:Concepto>)
|
67
|
+
|
68
|
+
|
69
|
+
end
|