# frozen_string_literal: true

#
# DEPRECATED
#
# Classe original desenvolvida a partir do layout do Itau.
# Movido para: cnab400/itau.rb
#
require 'parseline'
module Brcobranca
  module Retorno
    # Formato de Retorno CNAB 400

    # Baseado em: http://download.itau.com.br/bankline/layout_cobranca_400bytes_cnab_itau_mensagem.pdf
    class RetornoCnab400 < Base
      extend ParseLine::FixedWidth # Extendendo parseline

      def self.load_lines(file, options = {})
        default_options = { except: [1] } # por padrao ignora a primeira linha que é header
        options = default_options.merge!(options)

        super(file, options)
      end

      fixed_width_layout do |parse|
        parse.field :codigo_registro, 0..0
        parse.field :agencia_com_dv, 17..20 # FIXME: - SEM DIV
        parse.field :cedente_com_dv, 23..28
        parse.field :nosso_numero, 62..69
        parse.field :carteira_variacao, 82..84
        parse.field :carteira, 107..107
        parse.field :codigo_ocorrencia, 108..109
        parse.field :data_ocorrencia, 110..115
        parse.field :data_vencimento, 146..151
        parse.field :valor_titulo, 152..164
        parse.field :banco_recebedor, 165..167
        parse.field :agencia_recebedora_com_dv, 168..172
        parse.field :especie_documento, 173..174
        parse.field :valor_tarifa, 175..187
        parse.field :iof, 214..226
        parse.field :valor_abatimento, 227..239
        parse.field :desconto, 240..252
        parse.field :valor_recebido, 253..265
        parse.field :juros_mora, 266..278
        parse.field :outros_recebimento, 279..291
        parse.field :data_credito, 295..300
        parse.field :motivo_ocorrencia, 377..384, lambda { |motivos|
          motivos.scan(/.{2}/).reject(&:blank?).reject { |motivo| motivo == '00' }
        }
        parse.field :sequencial, 394..399

        # Campos da classe base que não encontrei a relação com CNAB400
        # parse.field :tipo_cobranca,80..80
        # parse.field :tipo_cobranca_anterior,81..81
        # parse.field :natureza_recebimento,86..87
        # parse.field :convenio,31..37
        # parse.field :comando,108..109
        # parse.field :juros_desconto,201..213
        # parse.field :iof_desconto,214..226
        # parse.field :desconto_concedito,240..252
        # parse.field :outras_despesas,279..291
        # parse.field :abatimento_nao_aproveitado,292..304
        # parse.field :data_liquidacao,295..300
        # parse.field :valor_lancamento,305..317
        # parse.field :indicativo_lancamento,318..318
        # parse.field :indicador_valor,319..319
        # parse.field :valor_ajuste,320..331
      end
    end
  end
end
