Afip 1.4.6 → 1.4.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,115 +0,0 @@
1
- module Afip
2
- CBTE_TIPO = {
3
- "01"=>"Factura A",
4
- "02"=>"Nota de Débito A",
5
- "03"=>"Nota de Crédito A",
6
- "06"=>"Factura B",
7
- "07"=>"Nota de Debito B",
8
- "08"=>"Nota de Credito B",
9
- "11"=>"Factura C",
10
- "12"=>"Nota de Debito C",
11
- "13"=>"Nota de Credito C",
12
- "201" => "Factura de Crédito electrónica MiPyMEs (FCE) A",
13
- "202" => "Nota de Débito electrónica MiPyMEs (FCE) A",
14
- "203" => "Nota de Crédito electrónica MiPyMEs (FCE) A",
15
- "206" => "Factura de Crédito electrónica MiPyMEs (FCE) B",
16
- "207" => "Nota de Débito electrónica MiPyMEs (FCE) B",
17
- "208" => "Nota de Crédito electrónica MiPyMEs (FCE) B",
18
- "211" => "Factura de Crédito electrónica MiPyMEs (FCE) C",
19
- "212" => "Nota de Débito electrónica MiPyMEs (FCE) C",
20
- "213" => "Nota de Crédito electrónica MiPyMEs (FCE) C",
21
- }
22
-
23
- OPCIONALES = [
24
- {:id=>"2", :desc=>"RG Empresas Promovidas - Indentificador de proyecto vinculado a Régimen de Promoción Industrial"},
25
- {:id=>"91", :desc=>"RG Bienes Usados 3411 - Nombre y Apellido o Denominación del vendedor del bien usado."},
26
- {:id=>"92", :desc=>"RG Bienes Usados 3411 - Nacionalidad del vendedor del bien usado."},
27
- {:id=>"93", :desc=>"RG Bienes Usados 3411 - Domicilio del vendedor del bien usado."},
28
- {:id=>"5", :desc=>"Excepcion computo IVA Credito Fiscal"},
29
- {:id=>"61", :desc=>"RG 3668 Impuesto al Valor Agregado - Art.12 IVA Firmante Doc Tipo"},
30
- {:id=>"62", :desc=>"RG 3668 Impuesto al Valor Agregado - Art.12 IVA Firmante Doc Nro"},
31
- {:id=>"7", :desc=>"RG 3668 Impuesto al Valor Agregado - Art.12 IVA Carácter del Firmante"},
32
- {:id=>"10", :desc=>"RG 3.368 Establecimientos de educación pública de gestión privada - Actividad Comprendida"},
33
- {:id=>"1011", :desc=>"RG 3.368 Establecimientos de educación pública de gestión privada - Tipo de Documento"},
34
- {:id=>"1012", :desc=>"RG 3.368 Establecimientos de educación pública de gestión privada - Número de Documento"},
35
- {:id=>"11", :desc=>"RG 2.820 Operaciones económicas vinculadas con bienes inmuebles - Actividad Comprendida"},
36
- {:id=>"12", :desc=>"RG 3.687 Locación temporaria de inmuebles con fines turísticos - Actividad Comprendida"},
37
- {:id=>"13", :desc=>"RG 2.863 Representantes de Modelos"},
38
- {:id=>"14", :desc=>"RG 2.863 Agencias de publicidad"},
39
- {:id=>"15", :desc=>"RG 2.863 Personas físicas que desarrollen actividad de modelaje"},
40
- {:id=>"17", :desc=>"RG 4004-E Locación de inmuebles destino 'casa-habitación'. Dato 2 (dos) = facturación directa / Dato 1 (uno) = facturación a través de intermediario"},
41
- {:id=>"1801", :desc=>"RG 4004-E Locación de inmuebles destino 'casa-habitación'. Clave Única de Identificación Tributaria (CUIT)."},
42
- {:id=>"1802", :desc=>"RG 4004-E Locación de inmuebles destino 'casa-habitación'. Apellido y nombres, denominación y/o razón social."},
43
- {:id=>"2101", :desc=>"Factura de Crédito Electrónica MiPyMEs (FCE) - CBU del Emisor"},
44
- {:id=>"2102", :desc=>"Factura de Crédito Electrónica MiPyMEs (FCE) - Alias del Emisor"},
45
- {:id=>"22", :desc=>"Factura de Crédito Electrónica MiPyMEs (FCE) - Anulación"},
46
- {:id=>"23", :desc=>"Factura de Crédito Electrónica MiPyMEs (FCE) - Referencia Comercial"}
47
- ]
48
-
49
- CONCEPTOS = {"Productos"=>"01", "Servicios"=>"02", "Productos y Servicios"=>"03"}
50
-
51
- DOCUMENTOS = {"CUIT"=>"80", "CUIL"=>"86", "CDI"=>"87", "LE"=>"89", "LC"=>"90", "CI Extranjera"=>"91", "en tramite"=>"92", "Acta Nacimiento"=>"93", "CI Bs. As. RNP"=>"95", "DNI"=>"96", "Pasaporte"=>"94", "Doc. (Otro)"=>"99"}
52
-
53
- MONEDAS = {
54
- :peso => {:codigo => "PES", :nombre =>"Pesos Argentinos"},
55
- :dolar => {:codigo => "DOL", :nombre =>"Dolar Estadounidense"},
56
- :real => {:codigo => "012", :nombre =>"Real"},
57
- :euro => {:codigo => "060", :nombre =>"Euro"},
58
- :oro => {:codigo => "049", :nombre =>"Gramos de Oro Fino"}
59
- }
60
-
61
- ALIC_IVA = [["01", "No gravado"], ["02", "Exento"],["03", 0], ["04", 0.105], ["05", 0.21], ["06", 0.27]]
62
-
63
- IVA_COND = ["Responsable Inscripto", "Responsable Monotributo"]
64
-
65
- BILL_TYPE = {
66
- :responsable_inscripto => {
67
- :responsable_inscripto => "01",
68
- :consumidor_final => "06",
69
- :exento => "06",
70
- :responsable_monotributo => "06",
71
- :nota_credito_a => "03",
72
- :nota_credito_b => "08",
73
- :nota_debito_a => "02",
74
- :nota_debito_b => "07"
75
- },
76
- :responsable_monotributo => {
77
- :responsable_inscripto => "11",
78
- :consumidor_final => "11",
79
- :exento => "11",
80
- :responsable_monotributo => "11",
81
- :nota_credito_c => "13",
82
- :nota_debito_c => "12"
83
- }
84
- }
85
-
86
- AVAILABLE_TYPES = {
87
- :responsable_inscripto => {
88
- :responsable_inscripto => ["01", "02", "03", "201", "202", "203"],
89
- :consumidor_final => ["06", "07", "08", "206", "207", "208"],
90
- :exento => ["06", "07", "08", "206", "207", "208"],
91
- :responsable_monotributo => ["06", "07", "08", "206", "207", "208"],
92
- },
93
- :responsable_monotributo => {
94
- :responsable_inscripto => ["11", "12", "13", "211", "212", "213"],
95
- :consumidor_final => ["11", "12", "13", "211", "212", "213"],
96
- :exento => ["11", "12", "13", "211", "212", "213"],
97
- :responsable_monotributo => ["11", "12", "13", "211", "212", "213"]
98
- }
99
- }
100
-
101
- URLS =
102
- {
103
- :test => {
104
- :wsaa => 'https://wsaahomo.afip.gov.ar/ws/services/LoginCms',
105
- :padron => "https://awshomo.afip.gov.ar/sr-padron/webservices/personaServiceA5?WSDL",
106
- :wsfe => 'https://wswhomo.afip.gov.ar/wsfev1/service.asmx?WSDL'
107
- },
108
- :production => {
109
- :wsaa => 'https://wsaa.afip.gov.ar/ws/services/LoginCms',
110
- :padron => "https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA5?WSDL",
111
- :wsfe => 'https://servicios1.afip.gov.ar/wsfev1/service.asmx'
112
- }
113
- }
114
-
115
- end
@@ -1,8 +0,0 @@
1
- class Float
2
- def round_with_precision(precision = nil)
3
- precision.nil? ? round : (self * (10 ** precision)).round / (10 ** precision).to_f
4
- end
5
- def round_up_with_precision(precision = nil)
6
- precision.nil? ? round : ((self * (10 ** precision)).round + 1) / (10 ** precision).to_f
7
- end
8
- end
@@ -1,23 +0,0 @@
1
- class Hash
2
- def symbolize_keys!
3
- keys.each do |key|
4
- self[(key.to_sym rescue key) || key] = delete(key)
5
- end
6
- self
7
- end unless method_defined?(:symbolize_keys!)
8
-
9
- def symbolize_keys
10
- dup.symbolize_keys!
11
- end unless method_defined?(:symbolize_keys)
12
-
13
- def underscore_keys!
14
- keys.each do |key|
15
- self[(key.underscore rescue key) || key] = delete(key)
16
- end
17
- self
18
- end unless method_defined?(:underscore_keys!)
19
-
20
- def underscore_keys
21
- dup.underscore_keys!
22
- end unless method_defined?(:underscore_keys)
23
- end
@@ -1,12 +0,0 @@
1
- # Stolen from activesupport/lib/active_support/inflector/methods.rb, line 48
2
- class String
3
- def underscore
4
- word = self.to_s.dup
5
- word.gsub!(/::/, '/')
6
- word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
7
- word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
8
- word.tr!("-", "_")
9
- word.downcase!
10
- word
11
- end
12
- end
data/lib/Afip/ctg.rb DELETED
@@ -1,234 +0,0 @@
1
- module Afip
2
- class CTG
3
- attr_reader :client, :base_imp, :total
4
- attr_accessor :ctg_num, :cp_num, :cod_especie, :cuit_canjeador,:rccc, :cuit_destino, :cuit_destinatario, :localidad_origen, :localidad_destino,
5
- :cosecha, :peso, :cuit_transportista, :horas, :patente, :km, :cuit_corredor, :remitente_com, :body
6
-
7
- def initialize(attrs = {})
8
- Afip::AuthData.fetch("wsctg")
9
- @client = Savon.client(
10
- ssl_cert_key_file: Afip.pkey,
11
- ssl_cert_file: Afip.cert,
12
- env_namespace: :soapenv,
13
- namespace_identifier: :ctg,
14
- log: true,
15
- logger: Rails.logger,
16
- log_level: :debug,
17
- pretty_print_xml: true,
18
- encoding: 'UTF-8',
19
- ssl_version: :TLSv1,
20
- wsdl: Afip.service_url
21
- )
22
-
23
- @ctg_num = attrs[:ctg_num]
24
- @cp_num = attrs[:cp_num]
25
- @cod_especie = attrs[:cod_especie]
26
- @cuit_canjeador = attrs[:cuit_canjeador]
27
- @rccc = attrs[:rccc]
28
- @cuit_destino = attrs[:cuit_destino]
29
- @cuit_destinatario = attrs[:cuit_destinatario]
30
- @localidad_origen = attrs[:localidad_origen]
31
- @localidad_destino = attrs[:localidad_destino]
32
- @cosecha = attrs[:cosecha]
33
- @peso = attrs[:peso]
34
- @cuit_transportista = attrs[:cuit_transportista]
35
- @horas = attrs[:horas]
36
- @patente = attrs[:patente]
37
- @km = attrs[:km]
38
- @cuit_corredor = attrs[:cuit_corredor]
39
- @remitente_com = attrs[:remitente_com]
40
- @cuit_chofer = attrs[:cuit_chofer]
41
- @cant_kilos_carta_porte = attrs[:cant_kilos_carta_porte]
42
- @establecimiento = attrs[:establecimiento]
43
- @cuit_solicitante = attrs[:cuit_solicitante]
44
- @fecha_desde = attrs[:fecha_desde]
45
- @fecha_hasta = attrs[:fecha_hasta]
46
-
47
- @body = {"request" =>{"auth" => Afip.auth_hash("wsctg")}}
48
- end
49
-
50
- def solicitar_ctg_inicial
51
- pp body = setup_ctg
52
-
53
- pp response = client.call(:solicitar_ctg_inicial,message: body)
54
-
55
- setup_response(response.to_hash)
56
-
57
- self.authorized?
58
- end
59
-
60
- def setup_ctg
61
-
62
- datos = {
63
- "datosSolicitarCTGInicial" =>{
64
- "cartaPorte" => @cp_num, #long
65
- "codigoEspecie" => @cod_especie, #int
66
- #"cuitCanjeador" => @cuit_canjeador.to_i, #long
67
- #"remitenteComercialComoCanjeador" => @rccc,
68
- "cuitDestino" => @cuit_destino, #long
69
- "cuitDestinatario" => @cuit_destinatario, #long
70
- "codigoLocalidadOrigen" => @localidad_origen, #int
71
- "codigoLocalidadDestino" => @localidad_destino, #int
72
- "codigoCosecha" => @cosecha, #string
73
- "pesoNeto" => @peso.to_i, #long
74
- #"cuitTransportista" => @cuit_transportista.to_i, #long
75
- #"cantHoras" => @horas, #int
76
- #"patente" => @patente, #string
77
- "kmARecorrer" => @km, #unsignedint
78
- #"cuitCorredor" => @cuit_corredor.to_i, #long
79
- #"remitenteComercialcomoProductor" => @remitente_com
80
- }
81
- }
82
-
83
- @body["request"].merge!(datos)
84
- return @body
85
- end
86
-
87
- def authorized?
88
- !response.nil?
89
- end
90
-
91
- def anular_ctg
92
- request = {
93
- "datosAnularCTG" =>{
94
- "cartaPorte" => @cp_num,
95
- "ctg" => @ctg_num
96
- }
97
- }
98
- body["request"].merge(request)
99
-
100
- response = client.call(:anular_ctg, message: body)
101
- end
102
-
103
- def cambiar_destino_detinatario_ctg_rechazado
104
- request = {
105
- "datosCambiarDestinoDestinatarioCTGRechazado" =>{
106
- "cartaPorte" => @cp_num,
107
- "ctg" => @ctg_num,
108
- "codigoLocalidadDestino" => @destino,
109
- "codigoLocalidadDestinatario" => @destinatario,
110
- "kmARecorrer" => @km
111
- }
112
- }
113
- body["request"].merge(request)
114
-
115
- response = client.call(:cambiar_destino_detinatario_ctg_rechazado, message: body)
116
- end
117
-
118
- def confirmar_arribo
119
- request = {
120
- "datosConfirmarArribo" =>{
121
- "cartaPorte" => @cp_num,
122
- "ctg" => @ctg_num,
123
- "cuitTransportista" => @cuit_transportista,
124
- "cuitChofer" => @cuit_chofer,
125
- "cantKilosCartaPorte" => @cant_kilos_carta_porte
126
- }
127
- }
128
- body["request"].merge(request)
129
-
130
- response = client.call(:confirmar_arribo, message: body)
131
- end
132
-
133
- def confirmar_definitivo
134
- request = {
135
- "datosConfirmarDefinitivo" =>{
136
- "cartaPorte" => @cp_num,
137
- "ctg" => @ctg_num,
138
- "establecimiento" => @establecimiento,
139
- "codigoCosecha" => @cosecha,
140
- "pesoNeto" => @peso
141
- }
142
- }
143
- body["request"].merge(request)
144
-
145
- response = client.call(:confirmar_definitivo, message: body)
146
- end
147
-
148
- def consultar_cosechas
149
- response = client.call(:obtener_cosechas, message: body)
150
- return response["arrayCosechas"]
151
- end
152
-
153
- def consultar_constancia_ctg_pdf
154
- request = {
155
- "ctg" => @ctg_num
156
- }
157
-
158
- body["request"].merge(request)
159
-
160
- pp response = client.call(:consultar_constancia_ctgpdf, message: body)
161
- end
162
-
163
- def consultar_ctg
164
- request = {
165
- "consultarCTGDatos" =>{
166
- "cartaPorte" => @cp_num,
167
- "ctg" => @ctg_num,
168
- "patente" => @patente,
169
- "cuitSolicitante" => @cuit_solicitante,
170
- "cuitDestino" => @destino,
171
- "fechaEmisionDesde" => @fecha_desde,
172
- "fechaEmisionHsta" => @fecha_hasta,
173
- "cuitCorredor" => @cuit_corredor
174
- }
175
- }
176
- body["request"].merge(request)
177
-
178
- response = client.call(:consultar_ctg, message: body)
179
- end
180
-
181
- def consultar_ctg_rechazados
182
- response = client.call(:consultar_ctg_rechazados, message: body)
183
- return response.to_hash["response"]["arrayConsultarCTGRechazados"]
184
- end
185
-
186
- def consultar_detalle_ctg
187
- request = {
188
- "ctg" => @ctg_num
189
- }
190
-
191
- body["request"].merge(request)
192
-
193
- response = client.call(:consultar_constancia_ctg_pdf, message: body)
194
- return response.to_hash["response"]["consultarDetalleCTGDatos"]
195
- end
196
-
197
- def consultar_especies
198
- response = client.call(:consultar_especies, message: body)
199
- response.body[:consultar_especies_response][:response][:array_especies][:especie].map{|c| [c[:codigo],c[:descripcion]]}
200
- end
201
-
202
- def consultar_establecimientos
203
- response = client.call(:consultar_establecimientos, message: body)
204
- response.body[:consultar_especies_response][:response][:array_establecimientos][:establecimiento].map{|c| [c]}
205
- end
206
-
207
- def consultar_provincias
208
- response = client.call(:consultar_provincias, message: body)
209
- response.body[:consultar_provincias_response][:consultar_provincias_response][:array_provincias][:provincia].map{|c| [c[:codigo],c[:descripcion]]}
210
- end
211
-
212
- def consultar_cosechas
213
- response = client.call(:consultar_cosechas, message: body)
214
- response.body[:consultar_cosechas_response][:response][:array_cosechas][:cosecha].map{|c| [c[:codigo],c[:descripcion]]}
215
- end
216
-
217
- def consultar_localidades(city)
218
- body["request"]["codigoProvincia"] = city
219
- response = client.call(:consultar_localidades_por_provincia, message: body)
220
- if response.body[:consultar_localidades_por_provincia_response][:response][:array_localidades][:localidad].class.name != "Array"
221
- [response.body[:consultar_localidades_por_provincia_response][:response][:array_localidades][:localidad]].map{|c| [c[:codigo],c[:descripcion]]}
222
- else
223
- response.body[:consultar_localidades_por_provincia_response][:response][:array_localidades][:localidad].map{|c| [c[:codigo],c[:descripcion]]}
224
- end
225
- end
226
-
227
- private
228
-
229
- def setup_response(response)
230
- # TODO: turn this into an all-purpose Response class
231
- pp response
232
- end
233
- end
234
- end
data/lib/Afip/padron.rb DELETED
@@ -1,184 +0,0 @@
1
- module Afip
2
- class Padron
3
- attr_reader :client, :body, :fault_code
4
- attr_accessor :dni, :tipo, :data
5
- def initialize(attrs = {})
6
- Afip::AuthData.environment = Afip.environment || :production
7
- url = Afip::AuthData.environment == :production ? "aws" : "awshomo"
8
- Afip.service_url = "https://#{url}.afip.gov.ar/sr-padron/webservices/personaServiceA4?WSDL"
9
- Afip.cuit ||= "20368642682"
10
- Afip.cert ||= "#{Afip.root}/lib/Afip/certs/desideral_prod.crt"
11
- Afip.pkey ||= "#{Afip.root}/lib/Afip/certs/desideral.key"
12
- Afip::AuthData.fetch("ws_sr_padron_a4")
13
-
14
- @client = Savon.client(
15
- ssl_cert_key_file: Afip.pkey,
16
- ssl_cert_file: Afip.cert,
17
- env_namespace: :soapenv,
18
- namespace_identifier: :a4,
19
- encoding: 'UTF-8',
20
- wsdl: Afip.service_url
21
- )
22
-
23
- @dni = attrs[:dni].rjust(8, "0")
24
- @tipo = attrs[:tipo]
25
- @cuit = get_cuit
26
- end
27
-
28
- def get_persona
29
- body = setup_body
30
-
31
- response = client.call(:get_persona,message: body)
32
- rescue Savon::SOAPFault => error
33
- if !error.blank?
34
- @fault_code = error.to_hash[:fault][:faultstring]
35
- else
36
- @fault_code = nil
37
- end
38
- return response
39
- end
40
-
41
- def get_data
42
- @data = get_persona
43
- if fault_code.nil?
44
- set_data
45
- else
46
- return nil
47
- end
48
-
49
- end
50
-
51
- def set_data
52
- if not data.body[:get_persona_response][:persona_return][:persona][:actividad].nil?
53
- {
54
- :name => set_name(data),
55
- :cuit => data.body[:get_persona_response][:persona_return][:persona][:id_persona],
56
- :cp => data.body[:get_persona_response][:persona_return][:persona][:domicilio].last[:cod_postal],
57
- :address => data.body[:get_persona_response][:persona_return][:persona][:domicilio].last[:direccion],
58
- :city_id => data.body[:get_persona_response][:persona_return][:persona][:domicilio].last[:id_provincia],
59
- :city => PROVINCIAS[data.body[:get_persona_response][:persona_return][:persona][:domicilio].last[:id_provincia]],
60
- :locality => data.body[:get_persona_response][:persona_return][:persona][:domicilio].last[:localidad],
61
- :birthday => data.body[:get_persona_response][:persona_return][:persona][:fecha_nacimiento].to_date
62
- }
63
- else
64
- {
65
- :name => data.body[:get_persona_response][:persona_return][:persona][:apellido])
66
- :cuit => data.body[:get_persona_response][:persona_return][:persona][:id_persona],
67
- :cp => data.body[:get_persona_response][:persona_return][:persona].try(:[], :domicilio).try(:[], :cod_postal),
68
- :address => data.body[:get_persona_response][:persona_return][:persona].try(:[], :domicilio).try(:[], :direccion),
69
- :city_id => data.body[:get_persona_response][:persona_return][:persona].try(:[], :domicilio).try(:[], :id_provincia),
70
- :city => PROVINCIAS[data.body[:get_persona_response][:persona_return][:persona].try(:[], :domicilio).try(:[], :id_provincia)],
71
- :locality => data.body[:get_persona_response][:persona_return][:persona].try(:[], :domicilio).try(:[], :localidad),
72
- :birthday => data.body[:get_persona_response][:persona_return][:persona][:fecha_nacimiento].to_date
73
- }
74
- end
75
- end
76
-
77
- def set_name(data)
78
- return data.body[:get_persona_response][:persona_return][:persona][:nombre] + data.body[:get_persona_response][:persona_return][:persona][:apellido]
79
- end
80
-
81
- def self.divide_name(full_name)
82
- full_name = full_name.strip.split(/\s+/)
83
- last_name = ''
84
- last = (full_name.count / 2) - 1
85
- (0..last).each do |i|
86
- if i != last
87
- last_name += full_name[i] + ' '
88
- else
89
- last_name += full_name[i]
90
- end
91
- end
92
- full_name = full_name - (last_name.strip.split(/\s+/))
93
- first_name = full_name.join(", ").gsub(",","").split.map(&:capitalize).join(' ')
94
- last_name = last_name.split.map(&:capitalize).join(' ')
95
- return [last_name, first_name]
96
- end
97
-
98
- def get_cuit
99
- if dni.length == 11
100
- @cuit = @dni
101
- else
102
- @cuit = calculate_cuit
103
- end
104
- end
105
-
106
- def calculate_cuit
107
- multiplicador = "2345672345"
108
-
109
- case tipo
110
- when "F"
111
- xy = 27
112
- xy_dni = "27#{dni}"
113
- when "M"
114
- xy = 20
115
- xy_dni = "20#{dni}"
116
- end
117
- verificador = 0
118
- (0..9).each do |i|
119
- verificador += (xy_dni.reverse[i].to_i * multiplicador[i].to_i)
120
- end
121
- verificador
122
- z = verificador - (verificador / 11 * 11)
123
-
124
- case z
125
- when 0
126
- z = 0
127
- when 1
128
- if tipo == "M"
129
- z = 9
130
- xy = 23
131
- elsif tipo == "F"
132
- z = 4
133
- xy = 23
134
- else
135
- z = 11 - z
136
- end
137
- else
138
- z = 11 - z
139
- end
140
-
141
- return "#{xy}#{dni}#{z}"
142
- end
143
-
144
- def setup_body
145
- body = {
146
- 'token' => Afip::TOKEN,
147
- 'sign' => Afip::SIGN,
148
- 'cuitRepresentada' => Afip.cuit,
149
- 'idPersona' => @cuit.to_s
150
- }
151
- end
152
-
153
- PROVINCIAS = {
154
- "0" => 'CIUDAD AUTONOMA BUENOS AIRES',
155
- "1" => 'BUENOS AIRES',
156
- "2" => 'CATAMARCA',
157
- "3" => 'CORDOBA',
158
- "4" => 'CORRIENTES',
159
- "5" => 'ENTRE RIOS',
160
- "6" => 'JUJUY',
161
- "7" => 'MENDOZA',
162
- "8" => 'LA RIOJA',
163
- "9" => 'SALTA',
164
- "10" => 'SAN JUAN',
165
- "11" => 'SAN LUIS',
166
- "12" => 'SANTA FE',
167
- "13" => 'SANTIAGO DEL ESTERO',
168
- "14" => 'TUCUMAN',
169
- "16" => 'CHACO',
170
- "17" => 'CHUBUT',
171
- "18" => 'FORMOSA',
172
- "19" => 'MISIONES',
173
- "20" => 'NEUQUEN',
174
- "21" => 'LA PAMPA',
175
- "22" => 'RIO NEGRO',
176
- "23" => 'SANTA CRUZ',
177
- "24" => 'TIERRA DEL FUEGO'
178
- }
179
- end
180
- end
181
-
182
-
183
-
184
-