MX-SAT 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +11 -0
  5. data/.yardopts +9 -0
  6. data/Gemfile +34 -0
  7. data/Guardfile +26 -0
  8. data/LICENSE.txt +22 -0
  9. data/MX-SAT.gemspec +26 -0
  10. data/README.md +89 -0
  11. data/REFERENCIAS.md +30 -0
  12. data/Rakefile +15 -0
  13. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/Anexo24_05012015.pdf +0 -0
  14. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/M_1aRMRMF_270215.pdf +0 -0
  15. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/RecomendacionesalSAT.pdf +0 -0
  16. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/catalogo_bancos.pdf +0 -0
  17. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/catalogo_metodos_pago.pdf +0 -0
  18. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/catalogo_monedas.pdf +0 -0
  19. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/codigo_agrupador.pdf +0 -0
  20. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/e_AuxiliarCtas.pdf +0 -0
  21. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/e_AuxiliarFolios.pdf +0 -0
  22. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/e_BalanzaComprobacion.pdf +0 -0
  23. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/e_CatalogoCuentas.pdf +0 -0
  24. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/e_PolizasPeriodo.pdf +0 -0
  25. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/e_SelloDigitalContElec.pdf +0 -0
  26. data/data/MX/SAT/contabilidad/archivos/v1.0/pdf/extracto_reglas.pdf +0 -0
  27. data/data/MX/SAT/contabilidad/archivos/v1.0/plantillas_xls/balanza_comprobacion.xlsx +0 -0
  28. data/data/MX/SAT/contabilidad/archivos/v1.0/plantillas_xls/catalogo_cuentas.xlsx +0 -0
  29. data/lib/MX/SAT.rb +8 -0
  30. data/lib/MX/SAT/Contabilidad/balanza_comprobacion.rb +141 -0
  31. data/lib/MX/SAT/Contabilidad/catalogo_cuentas.rb +117 -0
  32. data/lib/MX/SAT/Contabilidad/data/v1.1/xsd/AuxiliarCtas_1_1.xsd +215 -0
  33. data/lib/MX/SAT/Contabilidad/data/v1.1/xsd/AuxiliarFolios_1_2.xsd +342 -0
  34. data/lib/MX/SAT/Contabilidad/data/v1.1/xsd/BalanzaComprobacion_1_1.xsd +160 -0
  35. data/lib/MX/SAT/Contabilidad/data/v1.1/xsd/CatalogoCuentas_1_1.xsd +157 -0
  36. data/lib/MX/SAT/Contabilidad/data/v1.1/xsd/CatalogosParaEsqContE.xsd +1398 -0
  37. data/lib/MX/SAT/Contabilidad/data/v1.1/xsd/PolizasPeriodo_1_1.xsd +664 -0
  38. data/lib/MX/SAT/Contabilidad/data/v1.1/xsd/SelloDigitalContElec.xsd +80 -0
  39. data/lib/MX/SAT/Contabilidad/data/v1.1/xslt/AuxiliarCtas_1_1.xslt +63 -0
  40. data/lib/MX/SAT/Contabilidad/data/v1.1/xslt/AuxiliarFolios_1_1.xslt +104 -0
  41. data/lib/MX/SAT/Contabilidad/data/v1.1/xslt/BalanzaComprobacion_1_1.xslt +53 -0
  42. data/lib/MX/SAT/Contabilidad/data/v1.1/xslt/CatalogoCuentas_1_1.xslt +47 -0
  43. data/lib/MX/SAT/Contabilidad/data/v1.1/xslt/PolizasPeriodo_1_1.xslt +176 -0
  44. data/lib/MX/SAT/Contabilidad/data/v1.1/xslt/utilerias.xslt +22 -0
  45. data/lib/MX/SAT/certificacion.rb +36 -0
  46. data/lib/MX/SAT/version.rb +6 -0
  47. data/spec/MX/SAT/contabilidad/balanza_comprobacion_spec.rb +160 -0
  48. data/spec/MX/SAT/contabilidad/catalogo_cuentas_spec.rb +101 -0
  49. data/spec/spec_helper.rb +23 -0
  50. data/spec/support/archivos/xlsx/balanza_comprobacion_complementaria.xlsx +0 -0
  51. data/spec/support/archivos/xlsx/balanza_comprobacion_normal.xlsx +0 -0
  52. data/spec/support/archivos/xlsx/catalogo_cuentas.xlsx +0 -0
  53. data/spec/support/archivos/xml/MTS110304UT4201501BC.xml +8 -0
  54. data/spec/support/archivos/xml/MTS110304UT4201501BN.xml +8 -0
  55. data/spec/support/archivos/xml/MTS110304UT4201501CT.xml +8 -0
  56. metadata +152 -0
@@ -0,0 +1,117 @@
1
+ # encoding: UTF-8
2
+ module MX::SAT::Contabilidad
3
+ class CatalogoCuentas
4
+ VERSION = "1.1"
5
+
6
+ XSD_CATALOGO_CUENTAS = File.join(File.dirname(__FILE__), 'data', "v#{VERSION}", 'xsd', 'CatalogoCuentas_1_1.xsd')
7
+ XSLT_CATALOGO_CUENTAS = File.join(File.dirname(__FILE__), 'data', "v#{VERSION}", 'xslt', 'CatalogoCuentas_1_1.xslt')
8
+
9
+ # OJOOOOOO están mal las URLs, pero el SAT así las tiene en sus XSDs al 28 de Feb de 2015
10
+ NAMESPACE = {'xmlns:catalogocuentas' => "www.sat.gob.mx/esquemas/ContabilidadE/1_1/CatalogoCuentas"}.freeze
11
+ NAMESPACES = {'xsi:schemaLocation' => "www.sat.gob.mx/esquemas/ContabilidadE/1_1/CatalogoCuentas http://www.sat.gob.mx/esquemas/ContabilidadE/1_1/CatalogoCuentas/CatalogoCuentas_1_1.xsd",
12
+ 'xmlns:xsi' => "http://www.w3.org/2001/XMLSchema-instance"}.merge(NAMESPACE).freeze
13
+
14
+
15
+ attr_reader :xml, :xml_certificado, :nombre_archivo
16
+ attr_accessor :rfc, :año, :mes, :datos, :certificado, :llave_privada, :passwd_llave_privada
17
+
18
+ def initialize
19
+ @xml = nil
20
+ @xml_certificado = nil
21
+ @nombre_archivo = nil
22
+ @rfc = nil
23
+ @año = nil
24
+ @mes = nil
25
+ @datos = []
26
+ @certificado = nil
27
+ @llave_privada = nil
28
+ @passwd_llave_privada = nil
29
+ end
30
+
31
+ def cargar_xslx(archivo)
32
+ doc = ::SimpleXlsxReader.open(archivo)
33
+ filas = doc.sheets.find{ |s| s.name.downcase == "datos" }.rows[1..-1]
34
+ obtener_atributos_generales(filas.first)
35
+ @datos = filas.map { |fila| { CodAgrup: fila[3], NumCta: fila[4], Desc: fila[5], SubCtaDe: fila[6], Nivel: fila[7], Natur: fila[8] } }
36
+ end
37
+
38
+ def to_xml
39
+ return if @datos.empty?
40
+ builder = ::Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
41
+ xml['catalogocuentas'].Catalogo(atributos_nodo_catalogo) do
42
+ @datos.each do |dato|
43
+ xml.Ctas((dato[:SubCtaDe].nil? or dato[:SubCtaDe].empty?) ? dato.reject{|k,v| k == :SubCtaDe} : dato)
44
+ end
45
+ end
46
+ end
47
+ @xml = builder.to_xml
48
+ certificar_xml
49
+ end
50
+
51
+ def generar_archivo_xml
52
+ return unless @nombre_archivo
53
+ File.open("#{@nombre_archivo}.xml", "w") {|f| f.write(@xml_certifcado || @xml || self.to_xml) }
54
+ "#{@nombre_archivo}.xml"
55
+ end
56
+
57
+ def generar_archivo_zip
58
+ return unless @nombre_archivo
59
+ self.generar_archivo_xml unless File.exist?("#{@nombre_archivo}.xml")
60
+ ::Zip::File.open(File.join("#{@nombre_archivo}.zip"), ::Zip::File::CREATE) do |archivo_zip|
61
+ archivo_zip.add("#{@nombre_archivo}.xml", "#{@nombre_archivo}.xml")
62
+ end
63
+ "#{@nombre_archivo}.zip"
64
+ end
65
+
66
+ def xml_valido?
67
+ xsd_doc = Nokogiri::XML::Schema(File.open(XSD_CATALOGO_CUENTAS, 'rb'))
68
+ xml_doc = Nokogiri::XML(@xml_certificado || @xml || self.to_xml, nil, 'UTF-8')
69
+ errors = ""
70
+ xsd_doc.validate(xml_doc).each { |error| errors += " #{error.message}" }
71
+ doc_valido = xsd_doc.valid?(xml_doc)
72
+ puts "XML validado con #{xsd} es INVÁLIDO!: #{errors}" unless doc_valido
73
+ return doc_valido
74
+ end
75
+
76
+
77
+ private
78
+ def certificar_xml
79
+ if !@certificado.nil? and !@llave_privada.nil?
80
+ @xml_certificado = agregar_certificacion_xml
81
+ else
82
+ @xml
83
+ end
84
+ end
85
+
86
+ def agregar_certificacion_xml
87
+ xml_doc_sin_sello = Nokogiri::XML(@xml || to_xml, nil, 'UTF-8')
88
+ cadena = ::MX::SAT::Certificacion.generar_cadena_original(@xml, XSLT_CATALOGO_CUENTAS)
89
+ nodo_raiz = xml_doc_sin_sello.at_xpath('/catalogocuentas:Catalogo', NAMESPACE)
90
+ nodo_raiz['Sello'] = ::MX::SAT::Certificacion.firma_sha256(cadena, @llave_privada, @passwd_llave_privada)
91
+ nodo_raiz['noCertificado'] = ::MX::SAT::Certificacion.num_serial_certificado(@certificado)
92
+ nodo_raiz['Certificado'] = ::MX::SAT::Certificacion.certificado_b64(@certificado)
93
+ xml_doc_sin_sello.to_xml
94
+ end
95
+
96
+ def atributos_nodo_catalogo
97
+ atributos = { Version: VERSION, RFC: @rfc, Mes: @mes, Anio: @año }
98
+ atributos.merge(NAMESPACES)
99
+ end
100
+
101
+ def atributos_nodo_ctas(dato)
102
+ (dato[:SubCtaDe].nil? or dato[:SubCtaDe].empty?) ? dato.reject{|k,v| k == :SubCtaDe} : dato
103
+ end
104
+
105
+ def obtener_atributos_generales(fila)
106
+ arr = fila[0..2]
107
+ @rfc, mes, @año = *arr
108
+ @mes = fmto_mes(mes)
109
+ @nombre_archivo = "#{@rfc}#{@año}#{@mes}CT"
110
+ end
111
+
112
+ def fmto_mes(num)
113
+ "%02d" % num
114
+ end
115
+
116
+ end
117
+ end
@@ -0,0 +1,215 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:AuxiliarCtas="www.sat.gob.mx/esquemas/ContabilidadE/1_1/AuxiliarCtas" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="www.sat.gob.mx/esquemas/ContabilidadE/1_1/AuxiliarCtas" elementFormDefault="qualified" attributeFormDefault="unqualified">
3
+ <xs:element name="AuxiliarCtas">
4
+ <xs:annotation>
5
+ <xs:documentation>Estándar de auxiliar de la cuenta o subcuenta del periodo que se entrega como parte de la contabilidad electrónica</xs:documentation>
6
+ </xs:annotation>
7
+ <xs:complexType>
8
+ <xs:sequence maxOccurs="unbounded">
9
+ <xs:element name="Cuenta" maxOccurs="unbounded">
10
+ <xs:annotation>
11
+ <xs:documentation>Nodo obligatorio para expresar los movimientos del periodo de cada uno de los auxiliares de la cuenta y/o subcuenta.</xs:documentation>
12
+ </xs:annotation>
13
+ <xs:complexType>
14
+ <xs:sequence maxOccurs="unbounded">
15
+ <xs:element name="DetalleAux" maxOccurs="unbounded">
16
+ <xs:annotation>
17
+ <xs:documentation>Nodo obligatorio para expresar el detalle de los movimientos del periodo de cada uno de los auxiliares</xs:documentation>
18
+ </xs:annotation>
19
+ <xs:complexType>
20
+ <xs:attribute name="Fecha" type="xs:date" use="required">
21
+ <xs:annotation>
22
+ <xs:documentation>Atributo requerido para expresar la fecha de registro de la transacción que afecta la cuenta o subcuenta que integra el auxiliar.</xs:documentation>
23
+ </xs:annotation>
24
+ </xs:attribute>
25
+ <xs:attribute name="NumUnIdenPol" use="required">
26
+ <xs:annotation>
27
+ <xs:documentation>Atributo requerido para expresar el número único de identificación de la póliza. El campo deberá contener la clave o nombre utilizado por el contribuyente para diferenciar, el tipo de póliza y el número correspondiente. En un mes ordinario no debe repetirse un mismo número de póliza con la clave o nombre asignado por el contribuyente.</xs:documentation>
28
+ </xs:annotation>
29
+ <xs:simpleType>
30
+ <xs:restriction base="xs:string">
31
+ <xs:minLength value="1"/>
32
+ <xs:maxLength value="50"/>
33
+ </xs:restriction>
34
+ </xs:simpleType>
35
+ </xs:attribute>
36
+ <xs:attribute name="Concepto" use="required">
37
+ <xs:annotation>
38
+ <xs:documentation>Atributo requerido para expresar el concepto de la transacción que integra el auxiliar.</xs:documentation>
39
+ </xs:annotation>
40
+ <xs:simpleType>
41
+ <xs:restriction base="xs:string">
42
+ <xs:minLength value="1"/>
43
+ <xs:maxLength value="200"/>
44
+ </xs:restriction>
45
+ </xs:simpleType>
46
+ </xs:attribute>
47
+ <xs:attribute name="Debe" type="AuxiliarCtas:t_importe" use="required">
48
+ <xs:annotation>
49
+ <xs:documentation>Atributo requerido para expresar el monto del cargo de la cuenta o subcuenta de la transacción que integra el auxiliar. En caso de no existir dato, colocar cero (0)</xs:documentation>
50
+ </xs:annotation>
51
+ </xs:attribute>
52
+ <xs:attribute name="Haber" type="AuxiliarCtas:t_importe" use="required">
53
+ <xs:annotation>
54
+ <xs:documentation>Atributo requerido para expresar el monto del abono de la cuenta o subcuenta de la transacción que integra el auxiliar. En caso de no existir dato, colocar cero (0)</xs:documentation>
55
+ </xs:annotation>
56
+ </xs:attribute>
57
+ </xs:complexType>
58
+ </xs:element>
59
+ </xs:sequence>
60
+ <xs:attribute name="NumCta" use="required">
61
+ <xs:annotation>
62
+ <xs:documentation>Atributo requerido para expresar la clave con que se distingue la cuenta o subcuenta que se afecta por la transacción que integra el auxiliar.</xs:documentation>
63
+ </xs:annotation>
64
+ <xs:simpleType>
65
+ <xs:restriction base="xs:string">
66
+ <xs:minLength value="1"/>
67
+ <xs:maxLength value="100"/>
68
+ </xs:restriction>
69
+ </xs:simpleType>
70
+ </xs:attribute>
71
+ <xs:attribute name="DesCta" use="required">
72
+ <xs:annotation>
73
+ <xs:documentation>Atributo requerido para expresar el concepto de la cuenta o subcuenta que se afecta por la transacción que integra el auxiliar.</xs:documentation>
74
+ </xs:annotation>
75
+ <xs:simpleType>
76
+ <xs:restriction base="xs:string">
77
+ <xs:minLength value="1"/>
78
+ <xs:maxLength value="100"/>
79
+ </xs:restriction>
80
+ </xs:simpleType>
81
+ </xs:attribute>
82
+ <xs:attribute name="SaldoIni" type="AuxiliarCtas:t_importe" use="required">
83
+ <xs:annotation>
84
+ <xs:documentation>Atributo requerido para expresar el monto del saldo inicial de la cuenta o subcuenta del periodo del auxiliar. En caso de no existir dato, colocar cero (0)</xs:documentation>
85
+ </xs:annotation>
86
+ </xs:attribute>
87
+ <xs:attribute name="SaldoFin" type="AuxiliarCtas:t_importe" use="required">
88
+ <xs:annotation>
89
+ <xs:documentation>Atributo requerido para expresar el monto del saldo final de la cuenta o subcuenta del periodo del auxiliar. En caso de no existir dato, colocar cero (0)</xs:documentation>
90
+ </xs:annotation>
91
+ </xs:attribute>
92
+ </xs:complexType>
93
+ </xs:element>
94
+ </xs:sequence>
95
+ <xs:attribute name="Version" type="xs:string" use="required" fixed="1.1">
96
+ <xs:annotation>
97
+ <xs:documentation>Atributo requerido para expresar la versión del formato.</xs:documentation>
98
+ </xs:annotation>
99
+ </xs:attribute>
100
+ <xs:attribute name="RFC" use="required">
101
+ <xs:annotation>
102
+ <xs:documentation>Atributo requerido para expresar el RFC del contribuyente que envía los datos.</xs:documentation>
103
+ </xs:annotation>
104
+ <xs:simpleType>
105
+ <xs:restriction base="xs:string">
106
+ <xs:minLength value="12"/>
107
+ <xs:maxLength value="13"/>
108
+ <xs:pattern value="[A-ZÑ&amp;]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][A-Z0-9]?[A-Z0-9]?[0-9A-Z]?"/>
109
+ </xs:restriction>
110
+ </xs:simpleType>
111
+ </xs:attribute>
112
+ <xs:attribute name="Mes" use="required">
113
+ <xs:annotation>
114
+ <xs:documentation>Atributo requerido para expresar el mes en que inicia la vigencia del auxiliar de la cuenta o subcuenta.</xs:documentation>
115
+ </xs:annotation>
116
+ <xs:simpleType>
117
+ <xs:restriction base="xs:string">
118
+ <xs:enumeration value="01"/>
119
+ <xs:enumeration value="02"/>
120
+ <xs:enumeration value="03"/>
121
+ <xs:enumeration value="04"/>
122
+ <xs:enumeration value="05"/>
123
+ <xs:enumeration value="06"/>
124
+ <xs:enumeration value="07"/>
125
+ <xs:enumeration value="08"/>
126
+ <xs:enumeration value="09"/>
127
+ <xs:enumeration value="10"/>
128
+ <xs:enumeration value="11"/>
129
+ <xs:enumeration value="12"/>
130
+ </xs:restriction>
131
+ </xs:simpleType>
132
+ </xs:attribute>
133
+ <xs:attribute name="Anio" use="required">
134
+ <xs:annotation>
135
+ <xs:documentation>Atributo requerido para expresar el año al que inicia la vigencia del auxiliar de la cuenta o subcuenta.</xs:documentation>
136
+ </xs:annotation>
137
+ <xs:simpleType>
138
+ <xs:restriction base="xs:int">
139
+ <xs:minInclusive value="2015"/>
140
+ <xs:maxInclusive value="2099"/>
141
+ </xs:restriction>
142
+ </xs:simpleType>
143
+ </xs:attribute>
144
+ <xs:attribute name="TipoSolicitud" use="required">
145
+ <xs:annotation>
146
+ <xs:documentation>Atributo requerido para expresar el tipo de envío del auxiliar de la cuenta o subcuenta ( AF - Acto de Fiscalización; FC - Fiscalización Compulsa; DE - Devolución; CO - Compensación )</xs:documentation>
147
+ </xs:annotation>
148
+ <xs:simpleType>
149
+ <xs:restriction base="xs:string">
150
+ <xs:pattern value="AF|FC|DE|CO"/>
151
+ </xs:restriction>
152
+ </xs:simpleType>
153
+ </xs:attribute>
154
+ <xs:attribute name="NumOrden" use="optional">
155
+ <xs:annotation>
156
+ <xs:documentation>Atributo opcional para expresar el número de orden asignado al acto de fiscalización al que hace referencia la solicitud del auxiliar de la cuenta o subcuenta. Requerido para tipo de solicitud = AF y FC. Se convierte en requerido cuando se cuente con la información.</xs:documentation>
157
+ </xs:annotation>
158
+ <xs:simpleType>
159
+ <xs:restriction base="xs:string">
160
+ <xs:length value="13"/>
161
+ <xs:pattern value="[A-Z]{3}[0-6][0-9][0-9]{5}(/)[0-9]{2}"/>
162
+ </xs:restriction>
163
+ </xs:simpleType>
164
+ </xs:attribute>
165
+ <xs:attribute name="NumTramite" use="optional">
166
+ <xs:annotation>
167
+ <xs:documentation>Atributo opcional para expresar el número de trámite asignado a la solicitud de devolución o compensación al que hace referencia el auxiliar de la cuenta o subcuenta. Requerido para tipo de solicitud = DE o CO. Se convierte en requerido cuando se cuente con la información.</xs:documentation>
168
+ </xs:annotation>
169
+ <xs:simpleType>
170
+ <xs:restriction base="xs:string">
171
+ <xs:length value="10"/>
172
+ <xs:pattern value="[0-9]{10}"/>
173
+ </xs:restriction>
174
+ </xs:simpleType>
175
+ </xs:attribute>
176
+ <xs:attribute name="Sello" use="optional">
177
+ <xs:annotation>
178
+ <xs:documentation>Atributo opcional para contener el sello digital del archivo de contabilidad electrónica. El sello deberá ser expresado cómo una cadena de texto en formato Base 64</xs:documentation>
179
+ </xs:annotation>
180
+ <xs:simpleType>
181
+ <xs:restriction base="xs:string">
182
+ <xs:whiteSpace value="collapse"/>
183
+ </xs:restriction>
184
+ </xs:simpleType>
185
+ </xs:attribute>
186
+ <xs:attribute name="noCertificado" use="optional">
187
+ <xs:annotation>
188
+ <xs:documentation>Atributo opcional para expresar el número de serie del certificado de sello digital que ampara el archivo de contabilidad electrónica, de acuerdo al acuse correspondiente a 20 posiciones otorgado por el sistema del SAT.</xs:documentation>
189
+ </xs:annotation>
190
+ <xs:simpleType>
191
+ <xs:restriction base="xs:string">
192
+ <xs:length value="20"/>
193
+ </xs:restriction>
194
+ </xs:simpleType>
195
+ </xs:attribute>
196
+ <xs:attribute name="Certificado" use="optional">
197
+ <xs:annotation>
198
+ <xs:documentation>Atributo opcional que sirve para expresar el certificado de sello digital que ampara al archivo de contabilidad electrónica como texto, en formato base 64.</xs:documentation>
199
+ </xs:annotation>
200
+ <xs:simpleType>
201
+ <xs:restriction base="xs:string">
202
+ <xs:whiteSpace value="collapse"/>
203
+ </xs:restriction>
204
+ </xs:simpleType>
205
+ </xs:attribute>
206
+ </xs:complexType>
207
+ </xs:element>
208
+ <xs:simpleType name="t_importe">
209
+ <xs:restriction base="xs:decimal">
210
+ <xs:fractionDigits value="2"/>
211
+ <xs:minInclusive value="-99999999999999.99"/>
212
+ <xs:maxInclusive value="99999999999999.99"/>
213
+ </xs:restriction>
214
+ </xs:simpleType>
215
+ </xs:schema>
@@ -0,0 +1,342 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:RepAux="www.sat.gob.mx/esquemas/ContabilidadE/1_1/AuxiliarFolios" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:contelec_td="www.sat.gob.mx/esquemas/ContabilidadE/1_1/CatalogosParaEsqContE" targetNamespace="www.sat.gob.mx/esquemas/ContabilidadE/1_1/AuxiliarFolios" elementFormDefault="qualified" attributeFormDefault="unqualified">
3
+ <xs:import namespace="www.sat.gob.mx/esquemas/ContabilidadE/1_1/CatalogosParaEsqContE" schemaLocation="http://www.sat.gob.mx/esquemas/ContabilidadE/1_1/CatalogosParaEsqContE/CatalogosParaEsqContE.xsd"/>
4
+ <xs:element name="RepAuxFol">
5
+ <xs:annotation>
6
+ <xs:documentation>Estándar de reporte auxiliar de folios de los comprobantes fiscales de las pólizas que se entrega como parte de las pólizas de la contabilidad electrónica.</xs:documentation>
7
+ </xs:annotation>
8
+ <xs:complexType>
9
+ <xs:sequence>
10
+ <xs:element name="DetAuxFol" minOccurs="0" maxOccurs="unbounded">
11
+ <xs:annotation>
12
+ <xs:documentation>Nodo opcional para expresar el detalle de los folios de los comprobantes fiscales que integran la póliza.</xs:documentation>
13
+ </xs:annotation>
14
+ <xs:complexType>
15
+ <xs:sequence>
16
+ <xs:element name="ComprNal" minOccurs="0" maxOccurs="unbounded">
17
+ <xs:annotation>
18
+ <xs:documentation>Nodo opcional para relacionar el detalle de los comprobantes de origen nacional relacionados con la transacción. Se considera que se debe identificar, el soporte documental, tanto en la provisión, como en el pago y/o cobro de cada una de las cuentas y subcuentas que se vean afectadas. Se convierte en requerido cuando se cuente con la información.</xs:documentation>
19
+ </xs:annotation>
20
+ <xs:complexType>
21
+ <xs:attribute name="UUID_CFDI" use="required">
22
+ <xs:annotation>
23
+ <xs:documentation>Atributo requerido para expresar la clave UUID del CFDI soporte de la operación. (36 caracteres)</xs:documentation>
24
+ </xs:annotation>
25
+ <xs:simpleType>
26
+ <xs:restriction base="xs:string">
27
+ <xs:whiteSpace value="collapse"/>
28
+ <xs:length value="36"/>
29
+ <xs:pattern value="[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}"/>
30
+ </xs:restriction>
31
+ </xs:simpleType>
32
+ </xs:attribute>
33
+ <xs:attribute name="MontoTotal" type="RepAux:t_importe" use="required">
34
+ <xs:annotation>
35
+ <xs:documentation>Atributo requerido para expresar el monto total del CFDI que soporte la operación (Incluye IVA en su caso)</xs:documentation>
36
+ </xs:annotation>
37
+ </xs:attribute>
38
+ <xs:attribute name="RFC" use="required">
39
+ <xs:annotation>
40
+ <xs:documentation>Atributo requerido para expresar el RFC relacionado con la operación. El RFC al que se hace referencia, es el distinto del contribuyente que envía los datos, es decir, el RFC del tercero vinculado.</xs:documentation>
41
+ </xs:annotation>
42
+ <xs:simpleType>
43
+ <xs:restriction base="xs:string">
44
+ <xs:minLength value="12"/>
45
+ <xs:maxLength value="13"/>
46
+ <xs:whiteSpace value="collapse"/>
47
+ <xs:pattern value="[A-ZÑ&amp;]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][A-Z0-9]?[A-Z0-9]?[0-9A-Z]?"/>
48
+ </xs:restriction>
49
+ </xs:simpleType>
50
+ </xs:attribute>
51
+ <xs:attribute name="MetPagoAux" type="contelec_td:c_MetPagos" use="optional">
52
+ <xs:annotation>
53
+ <xs:documentation>Atributo opcional para expresar el método de pago de la operación, de acuerdo al catálogo publicado en la página de internet del SAT. Se convierte en requerido cuando se cuente con la información.</xs:documentation>
54
+ </xs:annotation>
55
+ </xs:attribute>
56
+ <xs:attribute name="Moneda" type="contelec_td:c_Moneda" use="optional">
57
+ <xs:annotation>
58
+ <xs:documentation>Atributo opcional para expresar el tipo de moneda utilizado en la transacción, de acuerdo al catálogo publicado en la página de internet del SAT. Este dato sólo se utiliza en el caso de que el tipo de moneda, sea diferente a la moneda nacional (peso). Se convierte en requerido cuando se cuente con la información.</xs:documentation>
59
+ </xs:annotation>
60
+ </xs:attribute>
61
+ <xs:attribute name="TipCamb" use="optional">
62
+ <xs:annotation>
63
+ <xs:documentation>Atributo opcional para expresar el tipo de cambio utilizado de acuerdo al tipo de moneda. Este dato sólo se utiliza en el caso de que el tipo de moneda, sea diferente a la moneda nacional (peso). Se convierte en requerido cuando se cuente con la información.</xs:documentation>
64
+ </xs:annotation>
65
+ <xs:simpleType>
66
+ <xs:restriction base="xs:decimal">
67
+ <xs:totalDigits value="19"/>
68
+ <xs:fractionDigits value="5"/>
69
+ <xs:minInclusive value="0"/>
70
+ </xs:restriction>
71
+ </xs:simpleType>
72
+ </xs:attribute>
73
+ </xs:complexType>
74
+ </xs:element>
75
+ <xs:element name="ComprNalOtr" minOccurs="0" maxOccurs="unbounded">
76
+ <xs:annotation>
77
+ <xs:documentation>Nodo opcional para relacionar el detalle de los comprobantes de origen nacional relacionados con la transacción, diferente a CFDI, es decir, CFD y/o CBB. Se considera que se debe identificar, el soporte documental, tanto en la provisión, como en el pago y/o cobro de cada una de las cuentas y subcuentas que se vean afectadas. Se convierte en requerido cuando se cuente con la información.</xs:documentation>
78
+ </xs:annotation>
79
+ <xs:complexType>
80
+ <xs:attribute name="CFD_CBB_Serie" use="optional">
81
+ <xs:annotation>
82
+ <xs:documentation>Atributo opcional para expresar la serie del comprobante CFD_CBB que soporte la operación.</xs:documentation>
83
+ </xs:annotation>
84
+ <xs:simpleType>
85
+ <xs:restriction base="xs:string">
86
+ <xs:minLength value="1"/>
87
+ <xs:maxLength value="10"/>
88
+ <xs:pattern value="[A-Z]+"/>
89
+ </xs:restriction>
90
+ </xs:simpleType>
91
+ </xs:attribute>
92
+ <xs:attribute name="CFD_CBB_NumFol" use="required">
93
+ <xs:annotation>
94
+ <xs:documentation>Atributo requerido para expresar el número de folio del comprobante CFD_CBB que soporte la operación.</xs:documentation>
95
+ </xs:annotation>
96
+ <xs:simpleType>
97
+ <xs:restriction base="xs:integer">
98
+ <xs:totalDigits value="20"/>
99
+ <xs:minInclusive value="1"/>
100
+ </xs:restriction>
101
+ </xs:simpleType>
102
+ </xs:attribute>
103
+ <xs:attribute name="MontoTotal" type="RepAux:t_importe" use="required">
104
+ <xs:annotation>
105
+ <xs:documentation>Atributo requerido para expresar el monto total del CFD y/o CBB que soporte la operación. (Incluye IVA en su caso)</xs:documentation>
106
+ </xs:annotation>
107
+ </xs:attribute>
108
+ <xs:attribute name="RFC" use="required">
109
+ <xs:annotation>
110
+ <xs:documentation>Atributo requerido para expresar el RFC relacionado con la operación. El RFC al que se hace referencia, es el distinto del contribuyente que envía los datos, es decir, el RFC del tercero vinculado.</xs:documentation>
111
+ </xs:annotation>
112
+ <xs:simpleType>
113
+ <xs:restriction base="xs:string">
114
+ <xs:minLength value="12"/>
115
+ <xs:maxLength value="13"/>
116
+ <xs:pattern value="[A-ZÑ&amp;]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][A-Z0-9]?[A-Z0-9]?[0-9A-Z]?"/>
117
+ </xs:restriction>
118
+ </xs:simpleType>
119
+ </xs:attribute>
120
+ <xs:attribute name="MetPagoAux" type="contelec_td:c_MetPagos" use="optional">
121
+ <xs:annotation>
122
+ <xs:documentation>Atributo opcional para expresar el método de pago de la operación, de acuerdo al catálogo publicado en la página de internet del SAT. Se convierte en requerido cuando se cuente con la información.</xs:documentation>
123
+ </xs:annotation>
124
+ </xs:attribute>
125
+ <xs:attribute name="Moneda" type="contelec_td:c_Moneda" use="optional">
126
+ <xs:annotation>
127
+ <xs:documentation>Atributo opcional para expresar el tipo de moneda utilizado en la transacción, de acuerdo al catálogo publicado en la página de internet del SAT. Este dato sólo se utiliza en el caso de que el tipo de moneda, sea diferente a la moneda nacional (peso). Se convierte en requerido cuando se cuente con la información.</xs:documentation>
128
+ </xs:annotation>
129
+ </xs:attribute>
130
+ <xs:attribute name="TipCamb" use="optional">
131
+ <xs:annotation>
132
+ <xs:documentation>Atributo opcional para expresar el tipo de cambio utilizado de acuerdo al tipo de moneda. Este dato sólo se utiliza en el caso de que el tipo de moneda, sea diferente a la moneda nacional (peso). Se convierte en requerido cuando se cuente con la información.</xs:documentation>
133
+ </xs:annotation>
134
+ <xs:simpleType>
135
+ <xs:restriction base="xs:decimal">
136
+ <xs:minInclusive value="0"/>
137
+ <xs:totalDigits value="19"/>
138
+ <xs:fractionDigits value="5"/>
139
+ </xs:restriction>
140
+ </xs:simpleType>
141
+ </xs:attribute>
142
+ </xs:complexType>
143
+ </xs:element>
144
+ <xs:element name="ComprExt" minOccurs="0" maxOccurs="unbounded">
145
+ <xs:annotation>
146
+ <xs:documentation>Nodo opcional para relacionar el detalle de los comprobantes de origen extranjero relacionados con la transacción. Se considera que se debe identificar, el soporte documental, tanto en la provisión, como en el pago y/o cobro de cada una de las cuentas y subcuentas que se vean afectadas. Se convierte en requerido cuando se cuente con la información.</xs:documentation>
147
+ </xs:annotation>
148
+ <xs:complexType>
149
+ <xs:attribute name="NumFactExt" use="required">
150
+ <xs:annotation>
151
+ <xs:documentation>Atributo requerido para expresar la clave numérico o alfanumérico del comprobante de origen extranjero que soporte la operación</xs:documentation>
152
+ </xs:annotation>
153
+ <xs:simpleType>
154
+ <xs:restriction base="xs:string">
155
+ <xs:whiteSpace value="collapse"/>
156
+ <xs:minLength value="1"/>
157
+ <xs:maxLength value="36"/>
158
+ </xs:restriction>
159
+ </xs:simpleType>
160
+ </xs:attribute>
161
+ <xs:attribute name="TaxID" use="optional">
162
+ <xs:annotation>
163
+ <xs:documentation>Atributo opcional que sirve para expresar el Identificador del contribuyente extranjero. Se convierte en requerido cuando se cuente con la información</xs:documentation>
164
+ </xs:annotation>
165
+ <xs:simpleType>
166
+ <xs:restriction base="xs:string">
167
+ <xs:minLength value="1"/>
168
+ <xs:maxLength value="30"/>
169
+ <xs:whiteSpace value="collapse"/>
170
+ </xs:restriction>
171
+ </xs:simpleType>
172
+ </xs:attribute>
173
+ <xs:attribute name="MontoTotal" type="RepAux:t_importe" use="required">
174
+ <xs:annotation>
175
+ <xs:documentation>Atributo requerido para expresar el monto total del comprobante de origen extranjero que soporte la operación. </xs:documentation>
176
+ </xs:annotation>
177
+ </xs:attribute>
178
+ <xs:attribute name="MetPagoAux" type="contelec_td:c_MetPagos" use="optional">
179
+ <xs:annotation>
180
+ <xs:documentation>Atributo opcional para expresar el método de pago de la operación, de acuerdo al catálogo publicado en la página de internet del SAT. Se convierte en requerido cuando se cuente con la información.</xs:documentation>
181
+ </xs:annotation>
182
+ </xs:attribute>
183
+ <xs:attribute name="Moneda" type="contelec_td:c_Moneda" use="optional">
184
+ <xs:annotation>
185
+ <xs:documentation>Atributo opcional para expresar el tipo de moneda utilizado en la transacción, de acuerdo al catálogo publicado en la página de internet del SAT. Este dato sólo se utiliza en el caso de que el tipo de moneda, sea diferente a la moneda nacional (peso). Se convierte en requerido cuando se cuente con la información.</xs:documentation>
186
+ </xs:annotation>
187
+ </xs:attribute>
188
+ <xs:attribute name="TipCamb" use="optional">
189
+ <xs:annotation>
190
+ <xs:documentation>Atributo opcional para expresar el tipo de cambio utilizado de acuerdo al tipo de moneda. Este dato sólo se utiliza en el caso de que el tipo de moneda, sea diferente a la moneda nacional (peso). Se convierte en requerido cuando se cuente con la información.</xs:documentation>
191
+ </xs:annotation>
192
+ <xs:simpleType>
193
+ <xs:restriction base="xs:decimal">
194
+ <xs:minInclusive value="0"/>
195
+ <xs:totalDigits value="19"/>
196
+ <xs:fractionDigits value="5"/>
197
+ </xs:restriction>
198
+ </xs:simpleType>
199
+ </xs:attribute>
200
+ </xs:complexType>
201
+ </xs:element>
202
+ </xs:sequence>
203
+ <xs:attribute name="NumUnIdenPol" use="required">
204
+ <xs:annotation>
205
+ <xs:documentation>Atributo requerido para expresar el número único de identificación de la póliza. El campo deberá contener la clave o nombre utilizado por el contribuyente para diferenciar, el tipo de póliza y el número correspondiente. En un mes ordinario no debe repetirse un mismo número de póliza con la clave o nombre asignado por el contribuyente.</xs:documentation>
206
+ </xs:annotation>
207
+ <xs:simpleType>
208
+ <xs:restriction base="xs:string">
209
+ <xs:minLength value="1"/>
210
+ <xs:maxLength value="50"/>
211
+ </xs:restriction>
212
+ </xs:simpleType>
213
+ </xs:attribute>
214
+ <xs:attribute name="Fecha" type="xs:date" use="required">
215
+ <xs:annotation>
216
+ <xs:documentation>Atributo requerido para expresar la fecha de registro de la póliza.</xs:documentation>
217
+ </xs:annotation>
218
+ </xs:attribute>
219
+ </xs:complexType>
220
+ </xs:element>
221
+ </xs:sequence>
222
+ <xs:attribute name="Version" type="xs:string" use="required" fixed="1.2">
223
+ <xs:annotation>
224
+ <xs:documentation>Atributo requerido para expresar la versión del formato.</xs:documentation>
225
+ </xs:annotation>
226
+ </xs:attribute>
227
+ <xs:attribute name="RFC" use="required">
228
+ <xs:annotation>
229
+ <xs:documentation>Atributo requerido para expresar el RFC del contribuyente que envía los datos</xs:documentation>
230
+ </xs:annotation>
231
+ <xs:simpleType>
232
+ <xs:restriction base="xs:string">
233
+ <xs:minLength value="12"/>
234
+ <xs:maxLength value="13"/>
235
+ <xs:pattern value="[A-ZÑ&amp;]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][A-Z0-9]?[A-Z0-9]?[0-9A-Z]?"/>
236
+ </xs:restriction>
237
+ </xs:simpleType>
238
+ </xs:attribute>
239
+ <xs:attribute name="Mes" use="required">
240
+ <xs:annotation>
241
+ <xs:documentation>Atributo requerido para expresar el mes en que inicia la vigencia del reporte auxiliar de los folios de los comprobantes fiscales de las pólizas.</xs:documentation>
242
+ </xs:annotation>
243
+ <xs:simpleType>
244
+ <xs:restriction base="xs:string">
245
+ <xs:enumeration value="01"/>
246
+ <xs:enumeration value="02"/>
247
+ <xs:enumeration value="03"/>
248
+ <xs:enumeration value="04"/>
249
+ <xs:enumeration value="05"/>
250
+ <xs:enumeration value="06"/>
251
+ <xs:enumeration value="07"/>
252
+ <xs:enumeration value="08"/>
253
+ <xs:enumeration value="09"/>
254
+ <xs:enumeration value="10"/>
255
+ <xs:enumeration value="11"/>
256
+ <xs:enumeration value="12"/>
257
+ </xs:restriction>
258
+ </xs:simpleType>
259
+ </xs:attribute>
260
+ <xs:attribute name="Anio" use="required">
261
+ <xs:annotation>
262
+ <xs:documentation>Atributo requerido para expresar el año al que inicia la vigencia del reporte auxiliar de los folios de los comprobantes fiscales de las pólizas.</xs:documentation>
263
+ </xs:annotation>
264
+ <xs:simpleType>
265
+ <xs:restriction base="xs:int">
266
+ <xs:minInclusive value="2015"/>
267
+ <xs:maxInclusive value="2099"/>
268
+ </xs:restriction>
269
+ </xs:simpleType>
270
+ </xs:attribute>
271
+ <xs:attribute name="TipoSolicitud" use="required">
272
+ <xs:annotation>
273
+ <xs:documentation>Atributo requerido para expresar el tipo de solicitud del reporte auxiliar de los folios de los comprobantes fiscales de las pólizas. ( AF - Acto de Fiscalización; FC - Fiscalización Compulsa; DE - Devolución; CO - Compensación )</xs:documentation>
274
+ </xs:annotation>
275
+ <xs:simpleType>
276
+ <xs:restriction base="xs:string">
277
+ <xs:pattern value="AF|DE|CO|FC"/>
278
+ </xs:restriction>
279
+ </xs:simpleType>
280
+ </xs:attribute>
281
+ <xs:attribute name="NumOrden" use="optional">
282
+ <xs:annotation>
283
+ <xs:documentation>Atributo opcional para expresar el número de orden asignado al acto de fiscalización al que hace referencia el reporte auxiliar de los folios de los comprobantes fiscales de las pólizas. Requerido para tipo de solicitud = AF y FC. Se convierte en requerido cuando se cuente con la información.</xs:documentation>
284
+ </xs:annotation>
285
+ <xs:simpleType>
286
+ <xs:restriction base="xs:string">
287
+ <xs:length value="13"/>
288
+ <xs:pattern value="[A-Z]{3}[0-6][0-9][0-9]{5}(/)[0-9]{2}"/>
289
+ </xs:restriction>
290
+ </xs:simpleType>
291
+ </xs:attribute>
292
+ <xs:attribute name="NumTramite" use="optional">
293
+ <xs:annotation>
294
+ <xs:documentation>Atributo opcional para expresar el número de trámite asignado a la solicitud de devolución o compensación al que hace referencia el reporte auxiliar de los folios de los comprobantes fiscales de las pólizas. Requerido para tipo de solicitud = DE o CO. Se convierte en requerido cuando se cuente con la información.</xs:documentation>
295
+ </xs:annotation>
296
+ <xs:simpleType>
297
+ <xs:restriction base="xs:string">
298
+ <xs:length value="10"/>
299
+ <xs:pattern value="[0-9]{10}"/>
300
+ </xs:restriction>
301
+ </xs:simpleType>
302
+ </xs:attribute>
303
+ <xs:attribute name="Sello" use="optional">
304
+ <xs:annotation>
305
+ <xs:documentation>Atributo opcional para contener el sello digital del archivo de contabilidad electrónica. El sello deberá ser expresado cómo una cadena de texto en formato Base 64</xs:documentation>
306
+ </xs:annotation>
307
+ <xs:simpleType>
308
+ <xs:restriction base="xs:string">
309
+ <xs:whiteSpace value="collapse"/>
310
+ </xs:restriction>
311
+ </xs:simpleType>
312
+ </xs:attribute>
313
+ <xs:attribute name="noCertificado" use="optional">
314
+ <xs:annotation>
315
+ <xs:documentation>Atributo opcional para expresar el número de serie del certificado de sello digital que ampara el archivo de contabilidad electrónica, de acuerdo al acuse correspondiente a 20 posiciones otorgado por el sistema del SAT.</xs:documentation>
316
+ </xs:annotation>
317
+ <xs:simpleType>
318
+ <xs:restriction base="xs:string">
319
+ <xs:length value="20"/>
320
+ </xs:restriction>
321
+ </xs:simpleType>
322
+ </xs:attribute>
323
+ <xs:attribute name="Certificado" use="optional">
324
+ <xs:annotation>
325
+ <xs:documentation>Atributo opcional que sirve para expresar el certificado de sello digital que ampara al archivo de contabilidad electrónica como texto, en formato base 64.</xs:documentation>
326
+ </xs:annotation>
327
+ <xs:simpleType>
328
+ <xs:restriction base="xs:string">
329
+ <xs:whiteSpace value="collapse"/>
330
+ </xs:restriction>
331
+ </xs:simpleType>
332
+ </xs:attribute>
333
+ </xs:complexType>
334
+ </xs:element>
335
+ <xs:simpleType name="t_importe">
336
+ <xs:restriction base="xs:decimal">
337
+ <xs:fractionDigits value="2"/>
338
+ <xs:minInclusive value="-99999999999999.99"/>
339
+ <xs:maxInclusive value="99999999999999.99"/>
340
+ </xs:restriction>
341
+ </xs:simpleType>
342
+ </xs:schema>