Links para agregar respuestas fuera de los divs
[donaciones.git] / lib / archivos_pat.rb
blob02ff0606eae272e98303500c7b6e5c007cf25409
1 require 'rut'
3 class ArchivosPAT
5   def self.generar_cargos(fecha, mandatos)
6     texto_archivo = ""
7     monto_total = 0
9     fecha=fecha.to_s.delete("-")
11     mandatos.each do |mandato|
12       nombre = "#{mandato[:apellido_paterno]} #{mandato[:apellido_materno]} #{mandato[:nombres]}".chars.upcase[0,10]
13       monto = "%011d"%(mandato[:monto]*100)
14       monto_total += mandato[:monto]
15       rut = RUT.reducir(mandato[:rut])
16       if mandato[:alineacion] == "izquierda"
17         rut = "0"*(9-rut.size)+rut+" "*13
18       else
19         rut = "0"*(22-rut.size)+rut
20       end
22       texto_archivo << "#{mandato[:banco]}596001D#{rut} #{nombre}#{monto}#{fecha}#{fecha}..........\n"
23     end
25     cantidad_registros = "%06d"%mandatos.size
26     monto_total = "%09d00"%monto_total
28     # reg. control
29     texto_archivo << "001596001T"+" "*33+"#{monto_total}#{cantidad_registros}"+"."*20+"\n"
30   end
33   def self.leer_cargos(archivo) #TODO
34     lineas = archivo.read.scan(/^.*$/)
35     cargos = []
37     lineas.each do |linea|
38       linea=linea.split(";")
39       numero_tarjeta = linea[2]
40       monto = linea[1].to_i
41       fecha_expiracion = linea[3]
42       codigo_respuesta = linea[12]
43       respuesta = linea[13]
44       rut = linea[8]
46       cargos << {
47         :rut => rut,
48         :numero_tarjeta => numero_tarjeta,
49         :fecha_expiracion => fecha_expiracion,
50         :monto => monto,
51         :codigo_respuesta => codigo_respuesta,
52         :respuesta => respuesta
53       }
54     end
56     # TODO: comprobaciĆ³n de integridad del archivo
58     cargos
59   end
60 end