fdis 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +51 -0
- data/lib/cadena/ComercioExterior11.xslt +181 -0
- data/lib/cadena/Pagos10.xslt +165 -0
- data/lib/cadena/Pagos20.xsd +532 -0
- data/lib/cadena/Pagos20.xslt +233 -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/cadenaoriginal_4_0.xslt +405 -0
- data/lib/cadena/catCFDI.xsd +162331 -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/cfdv40.xsd +850 -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/fdis/config.rb +94 -0
- data/lib/fdis/facturacion.rb +1028 -0
- data/lib/fdis/version.rb +3 -0
- data/lib/fdis.rb +17 -0
- metadata +139 -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>
|
data/lib/fdis/config.rb
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
module Fdis
|
2
|
+
class Config
|
3
|
+
attr_accessor :production_token, :dev_token, :doc_cer_path, :doc_key_path
|
4
|
+
attr_reader :pem, :serial, :cadena, :key_pass, :pem_cadena
|
5
|
+
|
6
|
+
def initialize(id_servicio, rfc, razon, regimen, doc_key_path, key_pass, doc_cer_path, production=false)
|
7
|
+
puts "---- Fdis:config:initialize"
|
8
|
+
|
9
|
+
@id_servicio = id_servicio.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
|
+
puts "---- Fdis:config:key_to_pem"
|
26
|
+
|
27
|
+
puts "-- 1"
|
28
|
+
@pem = %x[openssl pkcs8 -inform DER -in #{@doc_key_path} -passin pass:#{@key_pass}]
|
29
|
+
# @pem = %x[openssl rsa -inform DER -in #{@doc_key_path} -passin pass:#{@key_pass}]
|
30
|
+
puts "-- 2"
|
31
|
+
@pem_cadena = @pem.clone
|
32
|
+
@pem_cadena.slice!("-----BEGIN PRIVATE KEY-----")
|
33
|
+
@pem_cadena.slice!("-----END PRIVATE KEY-----")
|
34
|
+
@pem_cadena.delete!("\n")
|
35
|
+
end
|
36
|
+
|
37
|
+
def serial_number
|
38
|
+
puts "---- Fdis:config:serial_number"
|
39
|
+
|
40
|
+
response = %x[openssl x509 -inform DER -in #{@doc_cer_path} -noout -serial]
|
41
|
+
d_begin = response.index(/\d/)
|
42
|
+
number = (response[d_begin..-1]).chomp
|
43
|
+
final_serial = ""
|
44
|
+
|
45
|
+
number.each_char.with_index do |s, index|
|
46
|
+
if (index + 1).even?
|
47
|
+
final_serial << s
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
@serial = final_serial
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
def cer_cadena
|
57
|
+
puts "---- Fdis:config:cer_cadena"
|
58
|
+
|
59
|
+
file = File.read(@doc_cer_path)
|
60
|
+
text_certificate = OpenSSL::X509::Certificate.new(file)
|
61
|
+
cert_string = text_certificate.to_s
|
62
|
+
cert_string.slice!("-----BEGIN CERTIFICATE-----")
|
63
|
+
cert_string.slice!("-----END CERTIFICATE-----")
|
64
|
+
cert_string.delete!("\n")
|
65
|
+
@cadena = cert_string
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
UrlPro = "https://v4.cfdis.mx/api/Cfdi"
|
73
|
+
UrlDev = "https://v4.cfdis.mx/api/Cfdi/Timbrar40"
|
74
|
+
|
75
|
+
DocBase = %(<?xml version="1.0" encoding="utf-8"?>
|
76
|
+
<cfdi:Comprobante xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd" Version="4.0" xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
77
|
+
<cfdi:Emisor />
|
78
|
+
<cfdi:Receptor />
|
79
|
+
<cfdi:Conceptos></cfdi:Conceptos>
|
80
|
+
<cfdi:Impuestos></cfdi:Impuestos>
|
81
|
+
</cfdi:Comprobante>)
|
82
|
+
|
83
|
+
|
84
|
+
Doc_concepto = %(
|
85
|
+
<cfdi:Concepto ClaveProdServ="25172504" NoIdentificacion="COST37125R17" Cantidad="1" ClaveUnidad="H87" Unidad="Pieza" Descripcion="Producto de prueba" ValorUnitario="1000.00" Importe="1000.00">
|
86
|
+
<cfdi:Impuestos>
|
87
|
+
<cfdi:Traslados>
|
88
|
+
<cfdi:Traslado Base="1000.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="160.00" />
|
89
|
+
</cfdi:Traslados>
|
90
|
+
</cfdi:Impuestos>
|
91
|
+
</cfdi:Concepto>)
|
92
|
+
|
93
|
+
|
94
|
+
end
|