formatos-febraban 0.3.53 → 0.3.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 30af7d3fc8e55fa61c8221fba2d94b9d8ddd8182
4
- data.tar.gz: 0442378d46bcdc47622fa00dd09a44df7d847f93
3
+ metadata.gz: 26483895d20cb7b5698292c7864e599131ed6401
4
+ data.tar.gz: 190769f39ae1965365ab9b79f216306ae673f440
5
5
  SHA512:
6
- metadata.gz: d7dbcd60915188038f889a7acfeac384fe984b9b5ea4e62beaf6d3354a77dc61c9107919ec37a41a5d55930f47ab3cd4a2d50dcaeb972fac0106f092805d1ea3
7
- data.tar.gz: 47102c6d5cc2354036d0805764b2d191ff79996b14bd1cbef63ee815a7f271a007d70c383a1cc7918151225e934f1e2bebc3dc38ed03fae5823757ebc438574d
6
+ metadata.gz: ad6d8158996b37e5654d97159f8f1aa8c2fe3c05a4685018ffa0dc3cf110e2ad80885d928fb3d4ec3c05fe5f57c632cba914c3c8ab31e6810057addb54b45f81
7
+ data.tar.gz: 4b480f6dcc6d8e6da56d9bce68084d61a12949179a759401383cc7af51eea7841f0f8d11824b949005ccfe47863380be87817f18f1809d9ace6d4595ab776d3a
@@ -8,7 +8,7 @@ class Position
8
8
  @position = position
9
9
  @length = length
10
10
  @numbers_only = numbers_only
11
- @content = content
11
+ @content = adjust_content(content)
12
12
  @immutable = immutable
13
13
  @obligatory = obligatory
14
14
  end
@@ -52,7 +52,7 @@ class Position
52
52
  def set_content(content)
53
53
  if not @immutable
54
54
  if self.is_numbers_only? and !self.is_number(content)
55
- raise "Apenas valores numéricos
55
+ raise "#{@position} aceita apenas valores numéricos
56
56
  Valor: #{content}"
57
57
  end
58
58
 
@@ -2,11 +2,11 @@
2
2
  class Cnab400
3
3
  require 'date'
4
4
 
5
- SECTION_TYPES = {header: '00', client: "01", trailler: '99'}
5
+ SECTION_TYPES = {header: '0', client: "1", trailler: '9'}
6
6
 
7
- VERSAO = "05"
7
+ VERSAO = {remessa: "remessa", retorno: "retorno"}
8
8
 
9
- # Carrega todas as dependências de Layout
9
+ # Carrega todas as dependências de Layout
10
10
  Dir[File.join(File.dirname(__FILE__), '../..', 'base', '**/*.rb')].sort.each do |file|
11
11
  require file
12
12
  end
@@ -19,11 +19,12 @@ class Cnab400
19
19
  #-------------------------------------------------------------------
20
20
  #-------------------------------------------------------------------
21
21
  # Construtor
22
- def initialize file = ""
22
+ def initialize(params = {})
23
23
  @sections = []
24
+ @versao = params[:versao].present? ? VERSAO.key(params[:versao]) : :retorno
24
25
 
25
- if file.size > 0
26
- self.process_file file
26
+ if params[:file] && params[:file].size > 0
27
+ self.process_file params[:file]
27
28
  end
28
29
  end
29
30
 
@@ -32,13 +33,16 @@ class Cnab400
32
33
  # Geral
33
34
  protected
34
35
  def add_section section
36
+
35
37
  if section.is_valid?
36
38
  self.sections << section
37
39
  else
40
+
38
41
  raise "Seção #{section.get_id} está inválida:
39
42
  #{section.errors.inspect}
40
43
  #{section.to_s}"
41
44
  end
45
+
42
46
  end
43
47
 
44
48
  def add_section_from_business section
@@ -48,7 +52,8 @@ class Cnab400
48
52
 
49
53
  #-------------------------------------------------------------------
50
54
  #-------------------------------------------------------------------
51
- # Criação das Partes
55
+ # Criacao das Partes
56
+
52
57
  public
53
58
 
54
59
  def create_header(params = {})
@@ -56,19 +61,14 @@ class Cnab400
56
61
  if self.get_header.nil?
57
62
  section = self.get_new_section(:header)
58
63
 
59
- section.set_codigo_arquivo params[:codigo_arquivo]
60
- section.set_identificacao_arquivo params[:tipo_literal]
61
- section.set_codigo_servico params[:codigo_servico]
62
- section.set_literal_servico params[:servico_literal]
63
- section.set_codigo_empresa params[:codigo_empresa]
64
- section.set_nome_empresa params[:nome_empresa]
65
- section.set_numero_banco params[:numero_banco]
66
- section.set_nome_banco params[:nome_banco]
67
- section.set_data_gravacao Date.today
64
+ section.set_codigo_empresa params[:codigo]
65
+ section.set_nome_empresa params[:nome_empresa]
66
+ section.set_numero_banco params[:numero_banco]
67
+ section.set_nome_banco params[:nome_banco]
68
+ section.set_data_gravacao Date.today
68
69
  section.set_reservado_1
69
- section.set_identificacao_sistema params[:id_sistema]
70
+ section.set_sequencial_remessa params[:sequencial]
70
71
  section.set_reservado_2
71
- section.set_sequencial
72
72
 
73
73
  self.add_section_from_business section
74
74
 
@@ -77,12 +77,66 @@ class Cnab400
77
77
  end
78
78
  end
79
79
 
80
+ # Seção Client
81
+ def add_clients(params = {})
82
+
83
+ self.valida_existe_header
84
+
85
+ section = self.get_new_section(:client)
86
+
87
+ section.set_identificacao_empresa params[:identificacao_empresa]
88
+ section.set_nosso_numero params[:nosso_numero]
89
+ section.set_codigo_banco_debitado params[:codigo_banco_debitado]
90
+ section.set_reservado_1
91
+ section.set_indicador_rateio
92
+ section.set_enderecamento
93
+ section.set_reservado_2
94
+ section.set_numero_documento params[:numero_documento]
95
+ section.set_vencimento_titulo params[:vencimento]
96
+ section.set_valor_titulo params[:valor]
97
+ section.set_data_emissao_titulo Date.today
98
+ section.set_1_instrucao
99
+ section.set_2_instrucao
100
+ section.set_valor_por_atraso
101
+ section.set_id_inscricao_sacado params[:tipo_inscricao]
102
+ section.set_numero_inscricao_sacado params[:numero_inscricao]
103
+ section.set_nome_sacado params[:nome_sacado]
104
+ section.set_endereco params[:endereco]
105
+ section.set_1_mensagem
106
+ section.set_cep params[:cep]
107
+ section.set_2_mensagem
108
+ section.set_sequencial params[:sequencial]
109
+
110
+ self.add_section_from_business section
111
+ end
112
+
113
+ # Seção Trailler
114
+ def create_trailler
115
+
116
+ self.valida_existe_header
117
+
118
+ if self.get_trailler.nil?
119
+ if self.get_section(SECTION_TYPES[:client]).length > 0
120
+ section = self.get_new_section(:trailler)
121
+
122
+ section.set_reservado
123
+ section.set_sequencial self.sections.length + 1
124
+
125
+ self.sections << section
126
+ else
127
+ raise "Nenhum valor declarado!"
128
+ end
129
+ else
130
+ raise "Trailler já declarado!"
131
+ end
132
+ end
133
+
80
134
  #-------------------------------------------------------------------
81
135
  #-------------------------------------------------------------------
82
136
  # Validações
83
- protected
137
+
84
138
  def valida_existe_header
85
- raise "Header (Seção A) ainda não declarado" if self.get_header.nil?
139
+ raise "Header ainda não declarado" if self.get_header.nil?
86
140
  end
87
141
 
88
142
  public
@@ -121,7 +175,7 @@ class Cnab400
121
175
  end
122
176
 
123
177
  def to_s
124
- self.sections.map{|a| a.to_s.concat("\r\n")}.join("")
178
+ self.sections.map{|a| a.to_s}.join("\r\n")
125
179
  end
126
180
 
127
181
  def get_header
@@ -139,11 +193,11 @@ class Cnab400
139
193
  def get_new_section section_type
140
194
  case section_type
141
195
  when :header
142
- Cnab4000Header.new(self)
196
+ Cnab4000Header.new(self, @versao)
143
197
  when :client
144
- Cnab4000Detalhe.new(self)
198
+ Cnab4000Detalhe.new(self, @versao)
145
199
  when :trailler
146
- Cnab4000Trailler.new(self)
200
+ Cnab4000Trailler.new(self, @versao)
147
201
  end
148
202
  end
149
203
  end
@@ -5,272 +5,655 @@
5
5
  class Cnab4000Detalhe < FormatSection
6
6
  require 'date'
7
7
 
8
- def initialize master
8
+ def initialize(master, tipo)
9
9
  super(master, true, true, false)
10
10
 
11
+
12
+ @versao = tipo
13
+
14
+ case @versao
15
+ when :remessa
16
+ detalhe_remessa
17
+ when :retorno
18
+ detalhe_retorno
19
+ else
20
+ raise "Versão não suportada: #{tipo}"
21
+ end
22
+
23
+ end
24
+
25
+ def detalhe_remessa
11
26
  @section = Section.new({
12
27
  0 => Position.new(1, 1, false, "1", true), # Código do Registro
13
- 1 => Position.new(2, 5, true), # Agencia
14
- 2 => Position.new(3, 3, false), # Reservado - Zeros
15
- 3 => Position.new(4, 7, false), # Conta Corrente
16
- 4 => Position.new(5, 1, true), # Dv
17
- 5 => Position.new(6, 2, false), # Carteira
18
- 6 => Position.new(7, 3, true), # Reservado - Zeros
19
- 7 => Position.new(8, 12, true), # Nosso numero
20
- 8 => Position.new(9, 4, true), # Reservado - Zeros
21
- 9 => Position.new(10, 11, false), # Documento
22
- 10 => Position.new(11, 4, false), # Reservado - Zeros
23
- 11 => Position.new(12, 6, false), # Data do documento (DDMMAA)
24
- 12 => Position.new(13, 4, false), # Reservado - Zeros
25
- 13 => Position.new(14, 6, false), # Data de validade (DDMMAA)
26
- 14 => Position.new(15, 40, false), # Nome do cliente
27
- 15 => Position.new(16, 60, false), # Logradouro
28
- 16 => Position.new(17, 10, false), # Número
29
- 17 => Position.new(18, 10, false), # Complemento
30
- 18 => Position.new(19, 30, false), # Bairro
31
- 19 => Position.new(20, 30, false), # Cidade
32
- 20 => Position.new(21, 2, false), # Estado
33
- 21 => Position.new(22, 8, false), # Cep
34
- 22 => Position.new(23, 15, false), # Valor
35
- 23 => Position.new(24, 44, false), # Codigo de Barras
36
- 24 => Position.new(25, 4, false), # Reservado - Zeros
37
- 25 => Position.new(26, 56, false), # Linha digitada
38
- 26 => Position.new(27, 14, false), # Reservado - Brancos
39
- 27 => Position.new(128, 6, false) # Sequencial
28
+ 1 => Position.new(2, 5, false), # Agencia de Débito (opcional)
29
+ 2 => Position.new(3, 1, false), # Digito Agencia (opcional)
30
+ 3 => Position.new(4, 5, false), # Razao da Conta Corrente (opcional)
31
+ 4 => Position.new(5, 7, false), # Conta Corrente (opcional)
32
+ 5 => Position.new(6, 1, false), # Digito da CC (opcional)
33
+ 6 => Position.new(7, 17, false), # Identificação da empresa (zero, carteira, agencia e CC )
34
+ 7 => Position.new(8, 25, false), # Numero controle do participante
35
+ 8 => Position.new(9, 3, false), # Numero do Banco ("237")
36
+ 9 => Position.new(10, 1, true), # Campo de multa (0: Sem Multa/ 2: Com multa)
37
+ 10 => Position.new(11, 4, true), # Percentual de multa
38
+ 11 => Position.new(12, 11, true), # Identificação do titulo no banco
39
+ 12 => Position.new(13, 1, true), # Digito de AutoConferencia
40
+ 13 => Position.new(14, 10, true), # Desconto Bonificacao por dia
41
+ 14 => Position.new(15, 1, false, "2"), # Condicao para emissao da cobranca
42
+ 15 => Position.new(16, 1, false), # Id se emite Boleto para Debito Automatico (Diferente de N registra e emite boleto)
43
+ 16 => Position.new(17, 10, false), # Reservado - Brancos
44
+ 17 => Position.new(18, 1, false), # Indicador Rateio (opcional)
45
+ 18 => Position.new(19, 1, false), # Enderecamento para aviso de Debito em Cc (opcional)
46
+ 19 => Position.new(20, 2, false), # Reservado - Brancos
47
+ 20 => Position.new(21, 2, false, "01"), # Identificacao de ocorrencias
48
+ 21 => Position.new(22, 10, false), # Numero do documento
49
+ 22 => Position.new(23, 6, false), # Data vencimento do titulo (DDMMAA)
50
+ 23 => Position.new(24, 13, true), # Valor do titulo
51
+ 24 => Position.new(25, 3, true, "0"), # Banco cobrador - Zeros
52
+ 25 => Position.new(26, 5, true, "0"), # Agencia depositaria - Zeros
53
+ 26 => Position.new(27, 2, false, "99"), # Tipo do titulo
54
+ 27 => Position.new(28, 1, false, "N"), # Identificação
55
+ 28 => Position.new(29, 6, false), # Data emissao do titulo (DDMMAA)
56
+ 29 => Position.new(30, 2, true), # 1º instrucao
57
+ 30 => Position.new(31, 2, true), # 2º instrucao
58
+ 31 => Position.new(32, 13, true, "0"), # Valor por dia de atraso
59
+ 32 => Position.new(33, 6, false), # Data Limite para Concessao Desconto (DDMMAA)
60
+ 33 => Position.new(34, 13, true, "0"), # Valor desconto
61
+ 34 => Position.new(35, 13, true, "0"), # Valor IOF
62
+ 35 => Position.new(36, 13, true, "0"), # Valor Abatimento
63
+ 36 => Position.new(37, 2, false), # Tipo de inscrição (1:CPF, 2: CNPJ)
64
+ 37 => Position.new(38, 14, true), # Numero da inscricao
65
+ 38 => Position.new(39, 40, false), # Nome do sacado
66
+ 39 => Position.new(40, 40, false), # End. do sacado
67
+ 40 => Position.new(41, 12, false), # 1º mensagem
68
+ 41 => Position.new(42, 8, false), # CEP do sacado
69
+ 42 => Position.new(43, 60, false), # Sacador/Avalista ou 2º mensagem
70
+ 43 => Position.new(44, 6, true) # Numero sequencial
71
+
40
72
  })
41
73
  end
42
74
 
75
+ def detalhe_retorno
76
+ @section = Section.new({
77
+ 0 => Position.new(1, 1, false, "1", true), # Código do Registro
78
+ 1 => Position.new(2, 2, true), # Tipo de inscrição da empresa (01:CPF, 02: CNPJ)
79
+ 2 => Position.new(3, 14, false), # Numero da inscricao da empresa
80
+ 3 => Position.new(4, 3, false), # Reservado - Zeros
81
+ 4 => Position.new(5, 17, true), # Identificação da empresa (zero, carteira, agencia e CC )
82
+ 5 => Position.new(6, 25, false), # Numero controle do participante
83
+ 6 => Position.new(7, 8, false), # Reservado - Zeros
84
+ 7 => Position.new(8, 12, true), # Identificação do titulo no banco
85
+ 8 => Position.new(9, 10, false), # Reservado - Zeros
86
+ 9 => Position.new(10, 12, false), # Reservado - Zeros
87
+ 10 => Position.new(11, 1, false), # Indicador Rateio
88
+ 11 => Position.new(12, 2, false), # Reservado - Zeros
89
+ 12 => Position.new(13, 1, false), # Carteira
90
+ 13 => Position.new(14, 2, false), # Id da Ocorrencia
91
+ 14 => Position.new(15, 6, false), # Data da Ocorrencia
92
+ 15 => Position.new(16, 10, false), # Numero Documento
93
+ 16 => Position.new(17, 20, false), # Id do titulo no banco
94
+ 17 => Position.new(18, 6, false), # Data vencimento do titulo (DDMMAA)
95
+ 18 => Position.new(19, 13, false), # Valor do titulo
96
+ 19 => Position.new(20, 3, false), # Banco cobrador
97
+ 20 => Position.new(21, 5, false), # Agencia Cobradora
98
+ 21 => Position.new(22, 2, false), # Especie de titulo - branco
99
+ 22 => Position.new(23, 13, false), # Valor despesa das ocorrencias
100
+ 23 => Position.new(24, 13, false), # Outras despesas
101
+ 24 => Position.new(25, 13, false), # Juros operação em atraso
102
+ 25 => Position.new(26, 13, false), # IOF devido
103
+ 26 => Position.new(27, 13, false), # Valor abatimento
104
+ 27 => Position.new(28, 13, false), # Valor desconto concedido
105
+ 28 => Position.new(29, 13, false), # Valor pago
106
+ 29 => Position.new(30, 13, false), # Juros de mora
107
+ 30 => Position.new(31, 13, false), # Outros creditos
108
+ 31 => Position.new(32, 2, false), # Reservado - branco
109
+ 32 => Position.new(33, 1, false), # Motivo do codigo de ocorrencia
110
+ 33 => Position.new(34, 6, false), # Data do credito
111
+ 34 => Position.new(35, 3, false), # Origem pagamento
112
+ 35 => Position.new(36, 10, false), # Reservado - brancos
113
+ 36 => Position.new(37, 4, false), # Codigo do banco - quando cheque
114
+ 37 => Position.new(38, 10, false), # Motivo das rejeicoes
115
+ 38 => Position.new(39, 40, false), # Reservado - brancos
116
+ 39 => Position.new(40, 2, false), # numero do cartorio
117
+ 40 => Position.new(41, 10, false), # numero do protocolo
118
+ 41 => Position.new(42, 14, false), # Reservado - brancos
119
+ 42 => Position.new(43, 6, false) # Numero sequencial
120
+ })
121
+
122
+ end
123
+
43
124
  #-------------------------------------------------------------------
44
125
  #-------------------------------------------------------------------
45
126
  # Gerais
46
- def process_section file
127
+ def process_section(file)
128
+ case @versao
129
+ when :remessa
130
+ processa_remessa file
131
+ when :retorno
132
+ processa_retorno file
133
+ end
134
+ end
135
+
136
+ def processa_remessa file
47
137
  self.set_agencia file[1..5]
48
- self.set_reservado_1 file[6..8]
49
- self.set_conta_corrente file[9..15]
50
- self.set_dv file[16..16]
51
- self.set_carteira file[17..18]
52
- self.set_reservado_2 file[19..21]
53
- self.set_nosso_numero file[22..33]
54
- self.set_reservado_3 file[34..37]
55
- self.set_documento file[38..48]
56
- self.set_reservado_4 file[49..52]
57
- self.set_data_documento file[53..58]
58
- self.set_reservado_5 file[59..62]
59
- self.set_data_validade file[63..68]
60
- self.set_nome_cliente file[69..108]
61
- self.set_logradouro file[109..168]
62
- self.set_numero file[169..178]
63
- self.set_complemento file[179..188]
64
- self.set_bairro file[189..218]
65
- self.set_cidade file[219..248]
66
- self.set_estado file[249..250]
67
- self.set_cep file[251..258]
68
- self.set_valor file[259..273]
69
- self.set_codigo_barras file[274..317]
70
- self.set_reservado_6 file[318..321]
71
- self.set_linha file[322..377]
72
- self.set_reservado_7 file[378..391]
73
- self.set_sequencial file[392..399]
138
+ self.set_dv_agencia file[6..6]
139
+ self.set_razao_conta_corrente file[7..11]
140
+ self.set_conta_corrente file[13..18]
141
+ self.set_dv_conta_corrente file[19..19]
142
+ self.set_identificacao_empresa file[20..36]
143
+ self.set_nosso_numero file[37..61]
144
+ self.set_codigo_banco_debitado file[62..64]
145
+ self.set_campo_multa file[65..65]
146
+ self.set_percentual_multa file[66..69]
147
+ self.set_identificacao_titulo file[70..80]
148
+ self.set_digito_conferencia file[81..81]
149
+ self.set_desconto_bonificacao file[82..91]
150
+ self.set_condicao_emissao file[92..92]
151
+ self.set_id_boleto_debito file[93..93]
152
+ self.set_reservado_1 file[94..103]
153
+ self.set_indicador_rateio file[104..104]
154
+ self.set_enderecamento file[105..105]
155
+ self.set_reservado_2 file[106..107]
156
+ self.set_indicador_ocorrencia file[108..109]
157
+ self.set_numero_documento file[110..119]
158
+ self.set_vencimento_titulo file[120..125]
159
+ self.set_valor_titulo file[126..138]
160
+ self.set_banco_cobrador file[139..141]
161
+ self.set_agencia_depositaria file[142..146]
162
+ self.set_especie_titulo file[147..148]
163
+ self.set_identificacao file[149..149]
164
+ self.set_data_emissao_titulo file[150..155]
165
+ self.set_1_instrucao file[156..157]
166
+ self.set_2_instrucao file[158..159]
167
+ self.set_valor_por_atraso file[160..172]
168
+ self.set_data_limite_desconto file[173..178]
169
+ self.set_valor_desconto file[179..191]
170
+ self.set_valor_iof file[192..204]
171
+ self.set_valor_abatimento file[205..217]
172
+ self.set_id_inscricao_sacado file[218..219]
173
+ self.set_numero_inscricao_sacado file[220..233]
174
+ self.set_nome_sacado file[234..273]
175
+ self.set_endereco file[274..313]
176
+ self.set_1_mensagem file[314..325]
177
+ self.set_cep file[326..333]
178
+ self.set_2_mensagem file[334..393]
179
+ self.set_sequencial file[394..399]
180
+ end
181
+
182
+ def processa_retorno file
183
+ self.set_tipo_inscricao file[1..2]
184
+ self.set_numero_inscricao file[3..16]
185
+ self.set_zeros_1 file[17..19]
186
+ self.set_id_empresa file[20..36]
187
+ self.set_controle_participante file[37..61]
188
+ self.set_zeros_2 file[62..69]
189
+ self.set_id_titulo file[70..81]
190
+ self.set_zeros_3 file[82..91]
191
+ self.set_zeros_4 file[93..103]
192
+ self.set_indicador_rateio_retorno file[104..104]
193
+ self.set_zeros_5 file[105..106]
194
+ self.set_carteira_retorno file[107..107]
195
+ self.set_ocorrencia_retorno file[108..109]
196
+ self.set_data_ocorrencia file[110..115]
197
+ self.set_numero_documento_retorno file[116..125]
198
+ self.set_id_titulo file[126..145]
199
+ self.set_data_titulo file[146..151]
200
+ self.set_valor_titulo_retorno file[152..164]
201
+ self.set_banco_cobrador_retorno file[165..167]
202
+ self.set_agencia_cobradora file[168..172]
203
+ self.set_especie_titulo_retorno file[173..174]
204
+ self.set_despesas file[175..187]
205
+ self.set_outras_despesas file[188..200]
206
+ self.set_juros file[201..213]
207
+ self.set_iof file[214..226]
208
+ self.set_abatimento_concedido file[227..239]
209
+ self.set_desconto_concedido file[240..252]
210
+ self.set_valor_pago file[253..265]
211
+ self.set_juros_mora file[266..278]
212
+ self.set_outros_creditos file[279..291]
213
+ self.set_brancos_1 file[292..293]
214
+ self.set_motivo_ocorrencia file[294..294]
215
+ self.set_data_credito file[295..300]
216
+ self.set_origem_pagamento file[301..303]
217
+ self.set_brancos_2 file[304..313]
218
+ self.set_codigo_banco_retorno file[314..317]
219
+ self.set_motivo_rejeicoes file[318..327]
220
+ self.set_brancos_3 file[328..367]
221
+ self.set_numero_cartorio file[368..369]
222
+ self.set_numero_protocolo file[370..379]
223
+ self.set_brancos_4 file[380..393]
224
+ self.set_sequencial_retorno file[394..399]
74
225
  end
75
226
 
76
227
  #-------------------------------------------------------------------
77
228
  #-------------------------------------------------------------------
78
229
  # Validações
79
230
  def is_valid?
80
- result = (self.get_codigo_remessa > 0 and
81
- self.get_codigo_convenio.length > 0 and
82
- self.get_nome_empresa.length > 0 and
83
- self.get_codigo_banco > 0 and
84
- self.get_nome_banco.length > 0 and
85
- !self.get_data_geracao.nil? and
86
- self.get_numero_sequencial > 0 and
87
- self.get_versao_layout > 0 and
88
- self.get_identificacao_servico.length > 0)
231
+ self.get_identificacao_empresa.length > 0 and
232
+ self.get_nosso_numero.length > 0 and
233
+ self.get_numero_documento.length > 0 and
234
+ self.get_sequencial.length > 0
89
235
  end
90
236
 
91
237
  #-------------------------------------------------------------------
92
238
  #-------------------------------------------------------------------
93
239
  # Getters
94
- def get_codigo_remessa
95
- self.get_section_value(1).to_i
96
- end
97
-
98
- def get_identificacao_arquivo
99
- self.get_section_value(2)
100
- end
101
-
102
- def get_codigo_servico
103
- self.get_section_value(3)
240
+ def get_agencia
241
+ self.get_section_value(1)
104
242
  end
105
243
 
106
- def get_literal_servico
107
- self.get_section_value(4)
108
- end
109
-
110
- def get_codigo_empresa
111
- self.get_section_value(5)
112
- end
113
-
114
- def get_nome_empresa
244
+ def get_identificacao_empresa
115
245
  self.get_section_value(6)
116
246
  end
117
247
 
118
- def get_numero_banco
248
+ def get_nosso_numero
119
249
  self.get_section_value(7)
120
250
  end
121
251
 
122
- def get_nome_banco
123
- self.get_section_value(8)
252
+ def get_numero_documento
253
+ self.get_section_value(21)
254
+ end
255
+
256
+ def get_vencimento_titulo
257
+ self.get_section_value(22)
124
258
  end
125
259
 
126
- def get_data_gravacao
127
- self.get_section_value(9)
260
+ def get_nome_sacado
261
+ self.get_section_value(38)
128
262
  end
129
263
 
130
- def get_identificacao_sistema
131
- self.get_section_value(11)
264
+ def get_endereco
265
+ self.get_section_value(39)
132
266
  end
133
267
 
134
268
  def get_sequencial
135
- self.get_section_value(13)
269
+ self.get_section_value(43)
136
270
  end
137
271
 
138
272
 
139
273
  #-------------------------------------------------------------------
140
274
  #-------------------------------------------------------------------
141
275
  # Setters
142
- def set_agencia valor
276
+ def set_agencia valor = ""
143
277
  self.set_section_value(1, valor)
144
278
  end
145
279
 
146
- def set_reservado_1 valor
280
+ def set_tipo_inscricao valor = ""
281
+ self.set_section_value(1, valor)
282
+ end
283
+
284
+ def set_dv_agencia valor = ""
147
285
  self.set_section_value(2, valor)
148
286
  end
149
287
 
150
- def set_conta_corrente valor
288
+ def set_numero_inscricao valor = ""
289
+ self.set_section_value(2, valor)
290
+ end
291
+
292
+ def set_razao_conta_corrente valor = ""
151
293
  self.set_section_value(3, valor)
152
294
  end
153
295
 
154
- def set_dv valor
296
+ def set_zeros_1 valor = ""
297
+ self.set_section_value(3, valor)
298
+ end
299
+
300
+ def set_conta_corrente valor = ""
301
+ self.set_section_value(4, valor)
302
+ end
303
+
304
+ def set_id_empresa valor
155
305
  self.set_section_value(4, valor)
156
306
  end
157
307
 
158
- def set_carteira valor
308
+ def set_dv_conta_corrente valor = ""
309
+ self.set_section_value(5, valor)
310
+ end
311
+
312
+ def set_controle_participante valor
159
313
  self.set_section_value(5, valor)
160
314
  end
161
315
 
162
- def set_reservado_2 valor
316
+ def set_identificacao_empresa valor = ""
163
317
  self.set_section_value(6, valor)
164
318
  end
165
319
 
166
- def set_nosso_numero valor
320
+ def set_zeros_2 valor
321
+ self.set_section_value(6, valor)
322
+ end
323
+
324
+ def set_nosso_numero valor = ""
167
325
  self.set_section_value(7, valor)
168
326
  end
169
327
 
170
- def set_reservado_3 valor
328
+ def set_id_titulo valor
329
+ self.set_section_value(7, valor)
330
+ end
331
+
332
+ def set_codigo_banco_debitado valor = ""
333
+ self.set_section_value(8, valor)
334
+ end
335
+
336
+ def set_zeros_3 valor
171
337
  self.set_section_value(8, valor)
172
338
  end
173
339
 
174
- def set_documento valor
340
+ def set_campo_multa valor = "0"
341
+ self.set_section_value(9, valor)
342
+ end
343
+
344
+ def set_zeros_4 valor
175
345
  self.set_section_value(9, valor)
176
346
  end
177
347
 
178
- def set_reservado_4 valor
348
+ def set_percentual_multa valor = "0"
349
+ self.set_section_value(10, valor)
350
+ end
351
+
352
+ def set_percentual_multa valor = "0"
353
+ self.set_section_value(10, valor)
354
+ end
355
+
356
+ def set_indicador_rateio_retorno valor
179
357
  self.set_section_value(10, valor)
180
358
  end
181
359
 
182
- def set_data_documento valor
360
+ def set_identificacao_titulo valor = "0"
361
+ self.set_section_value(11, valor)
362
+ end
363
+
364
+ def set_zeros_5 valor
365
+ self.set_section_value(11, valor)
366
+ end
367
+
368
+ def set_digito_conferencia valor = "0"
369
+ self.set_section_value(12, valor)
370
+ end
371
+
372
+ def set_carteira_retorno valor
373
+ self.set_section_value(12, valor)
374
+ end
375
+
376
+ def set_desconto_bonificacao valor = "0"
377
+ self.set_section_value(13, valor)
378
+ end
379
+
380
+ def set_ocorrencia_retorno valor
381
+ self.set_section_value(13, valor)
382
+ end
383
+
384
+ def set_condicao_emissao valor
385
+ self.set_section_value(14, valor)
386
+ end
387
+
388
+ def set_data_ocorrencia valor
389
+ self.set_section_value(14, valor)
390
+ end
391
+
392
+ def set_id_boleto_debito valor = " "
393
+ self.set_section_value(15, valor)
394
+ end
395
+
396
+ def set_numero_documento_retorno valor
397
+ self.set_section_value(15, valor)
398
+ end
399
+
400
+ def set_reservado_1 valor = " "
401
+ self.set_section_value(16, valor)
402
+ end
403
+
404
+ def set_id_titulo valor
405
+ self.set_section_value(16, valor)
406
+ end
407
+
408
+ def set_indicador_rateio valor = ""
409
+ self.set_section_value(17, valor)
410
+ end
411
+
412
+ def set_data_titulo valor = ""
413
+ self.set_section_value(17, valor)
414
+ end
415
+
416
+ def set_enderecamento valor = ""
417
+ self.set_section_value(18, valor)
418
+ end
419
+
420
+ def set_valor_titulo_retorno valor
421
+ self.set_section_value(18, valor)
422
+ end
423
+
424
+ def set_reservado_2 valor = " "
425
+ self.set_section_value(19, valor)
426
+ end
427
+
428
+ def set_banco_cobrador_retorno valor
429
+ self.set_section_value(19, valor)
430
+ end
431
+
432
+ def set_indicador_ocorrencia valor
433
+ self.set_section_value(20, valor)
434
+ end
435
+
436
+ def set_agencia_cobradora valor
437
+ self.set_section_value(20, valor)
438
+ end
439
+
440
+ def set_numero_documento valor = ""
441
+ self.set_section_value(21, valor)
442
+ end
443
+
444
+ def set_especie_titulo_retorno valor
445
+ self.set_section_value(21, valor)
446
+ end
447
+
448
+ def set_vencimento_titulo valor
183
449
  begin
184
450
  valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
185
451
  real_data = valor.strftime("%d%m%y")
186
452
 
187
453
  if real_data.length == 6
188
- self.set_section_value(11, real_data)
454
+ self.set_section_value(22, real_data)
189
455
  else
190
456
  raise "tamanho de data incorreto"
191
457
  end
192
458
 
193
459
  rescue
194
- raise "#{get_id}: Data do Documento Inválida
460
+ raise "#{get_id}: Data de Geração Inválida
195
461
  Valor: #{valor}"
196
462
  end
197
463
  end
198
464
 
199
- def set_reservado_5 valor
200
- self.set_section_value(12, valor)
465
+ def set_despesas valor
466
+ self.set_section_value(22, valor)
467
+ end
468
+
469
+ def set_valor_titulo valor
470
+ self.set_section_value(23, valor)
471
+ end
472
+
473
+ def set_outras_despesas valor
474
+ self.set_section_value(23, valor)
475
+ end
476
+
477
+ def set_banco_cobrador valor = "0"
478
+ self.set_section_value(24, valor)
201
479
  end
202
480
 
203
- def set_data_validade valor
481
+ def set_juros valor
482
+ self.set_section_value(24, valor)
483
+ end
484
+
485
+ def set_agencia_depositaria valor = "0"
486
+ self.set_section_value(25, valor)
487
+ end
488
+
489
+ def set_iof valor
490
+ self.set_section_value(25, valor)
491
+ end
492
+
493
+ def set_especie_titulo valor = ""
494
+ self.set_section_value(26, valor)
495
+ end
496
+
497
+ def set_abatimento_concedido valor = ""
498
+ self.set_section_value(26, valor)
499
+ end
500
+
501
+ def set_identificacao valor = ""
502
+ self.set_section_value(27, valor)
503
+ end
504
+
505
+ def set_desconto_concedido valor = ""
506
+ self.set_section_value(27, valor)
507
+ end
508
+
509
+ def set_data_emissao_titulo valor
204
510
  begin
205
511
  valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
206
512
  real_data = valor.strftime("%d%m%y")
207
513
 
208
514
  if real_data.length == 6
209
- self.set_section_value(13, real_data)
515
+ self.set_section_value(28, real_data)
210
516
  else
211
517
  raise "tamanho de data incorreto"
212
518
  end
213
519
 
214
520
  rescue
215
- raise "#{get_id}: Data de Validade Inválida
521
+ raise "#{get_id}: Data de Geração Inválida
216
522
  Valor: #{valor}"
217
523
  end
218
524
  end
219
525
 
220
- def set_nome_cliente valor
221
- self.set_section_value(14, valor)
526
+ def set_valor_pago valor = ""
527
+ self.set_section_value(28, valor)
222
528
  end
223
529
 
224
- def set_logradouro valor
225
- self.set_section_value(15, valor)
530
+ def set_1_instrucao valor = "0"
531
+ self.set_section_value(29, valor)
226
532
  end
227
533
 
228
- def set_numero valor
229
- self.set_section_value(16, valor)
534
+ def set_juros_mora valor
535
+ self.set_section_value(29, valor)
230
536
  end
231
537
 
232
- def set_complemento valor
233
- self.set_section_value(17, valor)
538
+ def set_2_instrucao valor = "0"
539
+ self.set_section_value(30, valor)
540
+ end
541
+
542
+ def set_outros_creditos valor
543
+ self.set_section_value(30, valor)
234
544
  end
235
545
 
546
+ def set_valor_por_atraso valor = "0"
547
+ self.set_section_value(31, valor)
548
+ end
236
549
 
237
- def set_bairro valor
238
- self.set_section_value(18, valor)
550
+ def set_brancos_1 valor
551
+ self.set_section_value(31, valor)
239
552
  end
240
553
 
241
- def set_cidade valor
242
- self.set_section_value(19, valor)
554
+ def set_data_limite_desconto valor = ""
555
+ begin
556
+ valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
557
+ real_data = valor.strftime("%d%m%y")
558
+
559
+ if real_data.length == 6
560
+ self.set_section_value(32, real_data)
561
+ else
562
+ raise "tamanho de data incorreto"
563
+ end
564
+
565
+ rescue
566
+ raise "#{get_id}: Data de Geração Inválida
567
+ Valor: #{valor}"
568
+ end
243
569
  end
244
570
 
245
- def set_estado valor
246
- self.set_section_value(20, valor)
571
+ def set_motivo_ocorrencia valor
572
+ self.set_section_value(32, valor)
247
573
  end
248
574
 
249
- def set_cep valor
250
- self.set_section_value(21, valor)
575
+ def set_valor_desconto valor = "0"
576
+ self.set_section_value(33, valor)
251
577
  end
252
578
 
253
- def set_valor valor
254
- self.set_section_value(22, valor)
579
+ def set_data_credito valor = ""
580
+ self.set_section_value(33, valor)
255
581
  end
256
582
 
257
- def set_codigo_barras valor
258
- self.set_section_value(23, valor)
583
+ def set_valor_iof valor = "0"
584
+ self.set_section_value(34, valor)
259
585
  end
260
586
 
261
- def set_reservado_6 valor
262
- self.set_section_value(24, valor)
587
+ def set_origem_pagamento valor = ""
588
+ self.set_section_value(34, valor)
263
589
  end
264
590
 
265
- def set_linha valor
266
- self.set_section_value(25, valor)
591
+ def set_valor_abatimento valor
592
+ self.set_section_value(35, valor)
267
593
  end
268
594
 
269
- def set_reservado_7 valor
270
- self.set_section_value(26, valor)
595
+ def set_brancos_2 valor
596
+ self.set_section_value(35, valor)
271
597
  end
272
598
 
273
- def set_sequencial valor
274
- self.set_section_value(27, valor)
599
+ def set_id_inscricao_sacado valor = ""
600
+ self.set_section_value(36, valor)
275
601
  end
602
+
603
+ def set_codigo_banco_retorno valor = ""
604
+ self.set_section_value(36, valor)
605
+ end
606
+
607
+ def set_numero_inscricao_sacado valor = ""
608
+ self.set_section_value(37, valor)
609
+ end
610
+
611
+ def set_motivo_rejeicoes valor = ""
612
+ self.set_section_value(37, valor)
613
+ end
614
+
615
+ def set_nome_sacado valor = ""
616
+ self.set_section_value(38, valor)
617
+ end
618
+
619
+ def set_brancos_3 valor = ""
620
+ self.set_section_value(38, valor)
621
+ end
622
+
623
+ def set_endereco valor = ""
624
+ self.set_section_value(39, valor)
625
+ end
626
+
627
+ def set_numero_cartorio valor = ""
628
+ self.set_section_value(39, valor)
629
+ end
630
+
631
+ def set_1_mensagem valor = ""
632
+ self.set_section_value(40, valor)
633
+ end
634
+
635
+ def set_numero_protocolo valor = ""
636
+ self.set_section_value(40, valor)
637
+ end
638
+
639
+ def set_cep valor = ""
640
+ self.set_section_value(41, valor)
641
+ end
642
+
643
+ def set_brancos_4 valor = ""
644
+ self.set_section_value(41, valor)
645
+ end
646
+
647
+ def set_2_mensagem valor = ""
648
+ self.set_section_value(42, valor)
649
+ end
650
+
651
+ def set_sequencial_retorno valor = ""
652
+ self.set_section_value(42, valor)
653
+ end
654
+
655
+ def set_sequencial valor = ""
656
+ self.set_section_value(43, valor)
657
+ end
658
+
276
659
  end