formatos-febraban 0.3.53 → 0.3.54

Sign up to get free protection for your applications and to get access to all the features.
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