6 def self.leer_bdu(archivo)
7 lineas = archivo.read.scan(/^.*$/)
11 lineas.each do |linea|
13 codigo_banco = linea[0..2]
14 rut = linea[10..31].delete(' ').gsub(/^0*/,'')
15 mandatos << [rut, codigo_banco]
19 # TODO: comprobaciĆ³n de integridad del archivo
24 def self.generar_cargos(fecha, mandatos)
28 fecha=fecha.to_s.delete("-")
30 mandatos.each do |mandato|
31 nombre = "#{mandato[:apellido_paterno]} #{mandato[:apellido_materno]} #{mandato[:nombres]}".chars.upcase[0,10]
32 monto = "%011d"%(mandato[:monto]*100)
33 monto_total += mandato[:monto]
34 rut = RUT.reducir(mandato[:rut])
35 if mandato[:alineacion] == "izquierda"
36 rut = "0"*(9-rut.size)+rut+" "*13
38 rut = "0"*(22-rut.size)+rut
41 texto_archivo << "#{mandato[:banco]}596001D#{rut} #{nombre}#{monto}#{fecha}#{fecha}..........\n"
44 cantidad_registros = "%06d"%mandatos.size
45 monto_total = "%09d00"%monto_total
48 texto_archivo << "001596001T"+" "*33+"#{monto_total}#{cantidad_registros}"+"."*20+"\n"
49 texto_archivo = Iconv.conv("ISO-8859-1", "UTF-8", texto_archivo)
53 def self.leer_cargos(archivo) #TODO
54 lineas = archivo.read.scan(/^.*$/)
57 lineas.each do |linea|
59 codigo_banco = linea[0..2]
60 rut = linea[10..31].delete(' ').gsub(/^0*/,'')
61 monto = linea[33..41].to_i
62 codigo_respuesta = linea[60..60]
67 :codigo_banco => codigo_banco,
68 :codigo_respuesta => codigo_respuesta,
69 :respuesta => respuesta(codigo_respuesta)
78 def self.respuesta(codigo)
82 when '1', '2', '5', '6', '7', '8', 'A'