brcobranca 6.1.12 → 6.2.0
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 +4 -4
- data/Gemfile.lock +2 -2
- data/lib/brcobranca/remessa/cnab240/sicoob.rb +5 -10
- data/lib/brcobranca/remessa/cnab400/base.rb +3 -0
- data/lib/brcobranca/remessa/cnab400/citibank.rb +0 -2
- data/lib/brcobranca/remessa/cnab400/itau.rb +0 -3
- data/lib/brcobranca/remessa/cnab400/santander.rb +1 -4
- data/lib/brcobranca/remessa/cnab400/sicoob.rb +307 -0
- data/lib/brcobranca/remessa/pagamento.rb +14 -1
- data/lib/brcobranca/version.rb +1 -1
- data/lib/brcobranca.rb +2 -1
- data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +2 -10
- data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +178 -0
- data/spec/fixtures/remessa/remessa-bancoob-cnab240.rem +1 -1
- data/spec/fixtures/remessa/remessa-sicoob-cnab400.rem +3 -0
- data/spec/support/shared_examples/cnab400.rb +10 -1
- metadata +7 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6b06f755fa56ec27a52b74780c9470deacbe804d
|
|
4
|
+
data.tar.gz: 2ce84cf00772023ba39dd87bb45a42e025ce655e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cfba8123e3794caaba45f98559b9e958b14cb8031691b7a85285b2aba6ce416a1ce0d1795fc736d72ddc3d06b06d216f006320370870cef95fd106b9f4b27400
|
|
7
|
+
data.tar.gz: a428a6bd1979c68b0fb5d0be4e2d17df9c8bd880b9003c5a2670c91d569d7dcec21f2dda55ec94d3fb38d08926d9e99ba00d48249d99549e797254561e853666
|
data/Gemfile.lock
CHANGED
|
@@ -22,10 +22,7 @@ module Brcobranca
|
|
|
22
22
|
# "4" -A4 sem envelopamento
|
|
23
23
|
# "6" -A4 sem envelopamento 3 vias
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
# Parcela - 02 posições (11 a 12) - "01" se parcela única
|
|
27
|
-
|
|
28
|
-
validates_presence_of :modalidade_carteira, :tipo_formulario, :parcela, message: 'não pode estar em branco.'
|
|
25
|
+
validates_presence_of :modalidade_carteira, :tipo_formulario, message: 'não pode estar em branco.'
|
|
29
26
|
# Remessa 400 - 8 digitos
|
|
30
27
|
# Remessa 240 - 12 digitos
|
|
31
28
|
validates_length_of :conta_corrente, maximum: 8, message: 'deve ter 8 dígitos.'
|
|
@@ -35,9 +32,7 @@ module Brcobranca
|
|
|
35
32
|
def initialize(campos = {})
|
|
36
33
|
campos = { emissao_boleto: '2',
|
|
37
34
|
distribuicao_boleto: '2',
|
|
38
|
-
especie_titulo: '02',
|
|
39
35
|
tipo_formulario: '4',
|
|
40
|
-
parcela: '01',
|
|
41
36
|
modalidade_carteira: '01',
|
|
42
37
|
forma_cadastramento: '0' }.merge!(campos)
|
|
43
38
|
super(campos)
|
|
@@ -120,7 +115,7 @@ module Brcobranca
|
|
|
120
115
|
segmento_p << pagamento.formata_valor(15) # valor documento 15
|
|
121
116
|
segmento_p << ''.rjust(5, '0') # agencia cobradora 5
|
|
122
117
|
segmento_p << '0' # dv agencia cobradora 1
|
|
123
|
-
segmento_p << especie_titulo # especie do titulo 2
|
|
118
|
+
segmento_p << pagamento.especie_titulo # especie do titulo 2
|
|
124
119
|
segmento_p << aceite # aceite 1
|
|
125
120
|
segmento_p << pagamento.data_emissao.strftime('%d%m%Y') # data de emissao titulo 8
|
|
126
121
|
segmento_p << '0' # cod. do juros 1 *
|
|
@@ -148,7 +143,7 @@ module Brcobranca
|
|
|
148
143
|
# digito conta 1
|
|
149
144
|
# digito agencia/conta 1
|
|
150
145
|
# ident. titulo no banco 20
|
|
151
|
-
"#{conta_corrente.rjust(12, '0')}#{digito_conta} #{formata_nosso_numero(pagamento
|
|
146
|
+
"#{conta_corrente.rjust(12, '0')}#{digito_conta} #{formata_nosso_numero(pagamento)}"
|
|
152
147
|
end
|
|
153
148
|
|
|
154
149
|
# Retorna o nosso numero
|
|
@@ -166,8 +161,8 @@ module Brcobranca
|
|
|
166
161
|
# "4" -A4 sem envelopamento
|
|
167
162
|
# "6" -A4 sem envelopamento 3 vias
|
|
168
163
|
# Em branco - 05 posições (16 a 20)
|
|
169
|
-
def formata_nosso_numero(
|
|
170
|
-
"#{nosso_numero.to_s.rjust(10, '0')}#{parcela}#{modalidade_carteira}#{tipo_formulario}#{''.to_s.rjust(5, ' ')}"
|
|
164
|
+
def formata_nosso_numero(pagamento)
|
|
165
|
+
"#{pagamento.nosso_numero.to_s.rjust(10, '0')}#{pagamento.parcela.to_s.rjust(2, '0')}#{modalidade_carteira}#{tipo_formulario}#{''.to_s.rjust(5, ' ')}"
|
|
171
166
|
end
|
|
172
167
|
end
|
|
173
168
|
end
|
|
@@ -3,6 +3,9 @@ module Brcobranca
|
|
|
3
3
|
module Remessa
|
|
4
4
|
module Cnab400
|
|
5
5
|
class Base < Brcobranca::Remessa::Base
|
|
6
|
+
# documento do cedente
|
|
7
|
+
attr_accessor :documento_cedente
|
|
8
|
+
|
|
6
9
|
validates_presence_of :carteira, message: 'não pode estar em branco.'
|
|
7
10
|
|
|
8
11
|
# Data da geracao do arquivo seguindo o padrao DDMMAA
|
|
@@ -3,8 +3,6 @@ module Brcobranca
|
|
|
3
3
|
module Remessa
|
|
4
4
|
module Cnab400
|
|
5
5
|
class Citibank < Brcobranca::Remessa::Cnab400::Base
|
|
6
|
-
# documento do cedente
|
|
7
|
-
attr_accessor :documento_cedente
|
|
8
6
|
# Identificação do portfolio.
|
|
9
7
|
# Necessário consultar o Citibank para informações referentes à conta cobrança e carteira do cliente.
|
|
10
8
|
attr_accessor :portfolio
|
|
@@ -3,9 +3,6 @@ module Brcobranca
|
|
|
3
3
|
module Remessa
|
|
4
4
|
module Cnab400
|
|
5
5
|
class Itau < Brcobranca::Remessa::Cnab400::Base
|
|
6
|
-
# documento do cedente
|
|
7
|
-
attr_accessor :documento_cedente
|
|
8
|
-
|
|
9
6
|
validates_presence_of :agencia, :conta_corrente, message: 'não pode estar em branco.'
|
|
10
7
|
validates_presence_of :documento_cedente, :digito_conta, message: 'não pode estar em branco.'
|
|
11
8
|
validates_length_of :agencia, maximum: 4, message: 'deve ter 4 dígitos.'
|
|
@@ -3,9 +3,6 @@ module Brcobranca
|
|
|
3
3
|
module Remessa
|
|
4
4
|
module Cnab400
|
|
5
5
|
class Santander < Brcobranca::Remessa::Cnab400::Base
|
|
6
|
-
# documento do cedente
|
|
7
|
-
attr_accessor :documento_cedente
|
|
8
|
-
|
|
9
6
|
# Código de Transmissão
|
|
10
7
|
# Consultar seu gerente para pegar esse código. Geralmente está no e-mail enviado pelo banco.
|
|
11
8
|
attr_accessor :codigo_transmissao
|
|
@@ -100,7 +97,7 @@ module Brcobranca
|
|
|
100
97
|
detalhe << ''.rjust(6, '0') # data limite para o segundo desconto 9[06]
|
|
101
98
|
detalhe << ' ' # brancos X[01]
|
|
102
99
|
detalhe << pagamento.codigo_multa # Com multa = 4, Sem multa = 0 9[01]
|
|
103
|
-
detalhe << pagamento.
|
|
100
|
+
detalhe << pagamento.formata_valor_multa(4) # Percentual multa por atraso % 9[04]
|
|
104
101
|
detalhe << '00' # Unidade de valor moeda corrente = 00 9[02]
|
|
105
102
|
detalhe << '0'.rjust(13, '0') # Valor do título em outra unidade 9[13]
|
|
106
103
|
detalhe << ''.rjust(4, ' ') # brancos X[04]
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
module Brcobranca
|
|
3
|
+
module Remessa
|
|
4
|
+
module Cnab400
|
|
5
|
+
class Sicoob < Brcobranca::Remessa::Cnab400::Base
|
|
6
|
+
# convenio do cedente
|
|
7
|
+
attr_accessor :convenio
|
|
8
|
+
|
|
9
|
+
attr_accessor :modalidade_carteira
|
|
10
|
+
# identificacao da emissao do boleto (attr na classe base)
|
|
11
|
+
# opcoes:
|
|
12
|
+
# ‘1’ = Banco Emite
|
|
13
|
+
# ‘2’ = Cliente Emite
|
|
14
|
+
|
|
15
|
+
attr_accessor :distribuicao_boleto
|
|
16
|
+
#
|
|
17
|
+
# identificacao da distribuicao do boleto (attr na classe base)
|
|
18
|
+
# opcoes:
|
|
19
|
+
# ‘1’ = Banco distribui
|
|
20
|
+
# ‘2’ = Cliente distribui
|
|
21
|
+
|
|
22
|
+
attr_accessor :tipo_formulario
|
|
23
|
+
# Tipo Formulário - 01 posição (15 a 15):
|
|
24
|
+
# "1" -auto-copiativo
|
|
25
|
+
# "3" -auto-envelopável
|
|
26
|
+
# "4" -A4 sem envelopamento
|
|
27
|
+
# "6" -A4 sem envelopamento 3 vias
|
|
28
|
+
|
|
29
|
+
# convenio do cedente
|
|
30
|
+
attr_accessor :convenio
|
|
31
|
+
|
|
32
|
+
validates_presence_of :agencia, :conta_corrente, :carteira, :convenio, :modalidade_carteira, :tipo_formulario, :digito_conta, :sequencial_remessa, :documento_cedente, message: 'não pode estar em branco.'
|
|
33
|
+
# Remessa 400 - 8 digitos
|
|
34
|
+
# Remessa 240 - 12 digitos
|
|
35
|
+
validates_length_of :conta_corrente, is: 8, message: 'deve ter 8 dígitos.'
|
|
36
|
+
validates_length_of :agencia, is: 4, message: 'deve ter 4 dígitos.'
|
|
37
|
+
validates_length_of :modalidade_carteira, is: 1, message: 'deve ter 1 dígitos.'
|
|
38
|
+
validates_length_of :digito_conta, maximum: 1, message: 'deve ter 1 dígito.'
|
|
39
|
+
validates_length_of :sequencial_remessa, maximum: 7, message: 'deve ter 7 dígitos.'
|
|
40
|
+
validates_length_of :carteira, is: 2, message: 'deve ter 2 dígitos.'
|
|
41
|
+
validates_length_of :documento_cedente, minimum: 11, maximum: 14, message: 'deve ter entre 11 e 14 dígitos.'
|
|
42
|
+
|
|
43
|
+
# Com DV
|
|
44
|
+
validates_length_of :convenio, is: 9, message: 'deve ter 9 dígitos.'
|
|
45
|
+
|
|
46
|
+
def initialize(campos = {})
|
|
47
|
+
campos = {
|
|
48
|
+
distribuicao_boleto: '2',
|
|
49
|
+
tipo_formulario: '4',
|
|
50
|
+
modalidade_carteira: '2',
|
|
51
|
+
sequencial_remessa: '0000001',
|
|
52
|
+
carteira: '01'
|
|
53
|
+
}.merge!(campos)
|
|
54
|
+
super(campos)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def cod_banco
|
|
58
|
+
'756'
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def nome_banco
|
|
62
|
+
'BANCOOBCED'.format_size(15)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Informacoes do Código de Transmissão
|
|
66
|
+
#
|
|
67
|
+
# @return [String]
|
|
68
|
+
#
|
|
69
|
+
def info_conta
|
|
70
|
+
# CAMPO TAMANHO
|
|
71
|
+
# 030 004 9(004) Prefixo da Cooperativa: vide planilha "Capa" deste arquivo
|
|
72
|
+
# 031 001 A(001) Dígito Verificador do Prefixo: vide planilha "Capa" deste arquivo
|
|
73
|
+
# 039 008 9(008) Código do Cliente/Beneficiário: vide planilha "Capa" deste arquivo
|
|
74
|
+
# 040 001 A(001) Dígito Verificador do Código: vide planilha "Capa" deste arquivo
|
|
75
|
+
# 046 006 9(006) Número do convênio líder: Brancos
|
|
76
|
+
"#{agencia}#{digito_agencia}#{convenio} "
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def digito_agencia
|
|
80
|
+
# utilizando a agencia com 4 digitos
|
|
81
|
+
# para calcular o digito
|
|
82
|
+
agencia.modulo11(mapeamento: { 10 => 'X' }).to_s
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Complemento do header
|
|
86
|
+
#
|
|
87
|
+
# @return [String]
|
|
88
|
+
#
|
|
89
|
+
def complemento
|
|
90
|
+
''.rjust(287, ' ')
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Header do arquivo remessa
|
|
94
|
+
#
|
|
95
|
+
# @return [String]
|
|
96
|
+
#
|
|
97
|
+
def monta_header
|
|
98
|
+
# CAMPO TAMANHO VALOR
|
|
99
|
+
# 001 001 9(001) Identificação do Registro Header: “0” (zero)
|
|
100
|
+
# 002 001 9(001) Tipo de Operação: “1” (um)
|
|
101
|
+
# 009 007 A(007) Identificação por Extenso do Tipo de Operação: "REMESSA"
|
|
102
|
+
# 011 002 9(002) Identificação do Tipo de Serviço: “01” (um)
|
|
103
|
+
# 019 008 A(008) Identificação por Extenso do Tipo de Serviço: “COBRANÇA”
|
|
104
|
+
# 026 007 A(007) Complemento do Registro: Brancos
|
|
105
|
+
# 030 004 9(004) Prefixo da Cooperativa: vide planilha "Capa" deste arquivo
|
|
106
|
+
# 031 001 A(001) Dígito Verificador do Prefixo: vide planilha "Capa" deste arquivo
|
|
107
|
+
# 039 008 9(008) Código do Cliente/Beneficiário: vide planilha "Capa" deste arquivo
|
|
108
|
+
# 040 001 A(001) Dígito Verificador do Código: vide planilha "Capa" deste arquivo
|
|
109
|
+
# 046 006 9(006) Número do convênio líder: Brancos
|
|
110
|
+
# 076 030 A(030) Nome do Beneficiário: vide planilha "Capa" deste arquivo
|
|
111
|
+
# 094 018 A(018) Identificação do Banco: "756BANCOOBCED"
|
|
112
|
+
# 100 006 9(006) Data da Gravação da Remessa: formato ddmmaa
|
|
113
|
+
# 107 007 9(007) Seqüencial da Remessa: número seqüencial acrescido de 1 a cada remessa. Inicia com "0000001"
|
|
114
|
+
# 394 287 A(287) Complemento do Registro: Brancos
|
|
115
|
+
# 400 006 9(006) Seqüencial do Registro:”000001”
|
|
116
|
+
|
|
117
|
+
"01REMESSA01COBRANCA #{info_conta}#{empresa_mae.format_size(30)}#{cod_banco}#{nome_banco}#{data_geracao}#{sequencial_remessa}#{complemento}000001"
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# Detalhe do arquivo
|
|
121
|
+
#
|
|
122
|
+
# @param pagamento [PagamentoCnab400]
|
|
123
|
+
# objeto contendo as informacoes referentes ao boleto (valor, vencimento, cliente)
|
|
124
|
+
# @param sequencial
|
|
125
|
+
# num. sequencial do registro no arquivo
|
|
126
|
+
#
|
|
127
|
+
# @return [String]
|
|
128
|
+
#
|
|
129
|
+
def monta_detalhe(pagamento, sequencial)
|
|
130
|
+
fail Brcobranca::RemessaInvalida.new(pagamento) if pagamento.invalid?
|
|
131
|
+
|
|
132
|
+
detalhe = '1' # identificacao transacao 9[01]
|
|
133
|
+
detalhe << Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
|
|
134
|
+
detalhe << documento_cedente.to_s.rjust(14, '0') # cpf/cnpj da empresa 9[14]
|
|
135
|
+
detalhe << agencia # Prefixo da Cooperativa 9[4]
|
|
136
|
+
detalhe << digito_agencia # Digito da Cooperativa 9[1]
|
|
137
|
+
detalhe << conta_corrente # Conta corrente 9[8]
|
|
138
|
+
detalhe << digito_conta # Digito da conta corrente 9[1]
|
|
139
|
+
detalhe << '000000' # Convênio de Cobrança do Beneficiário: "000000" 9[6]
|
|
140
|
+
detalhe << ''.rjust(25, ' ') # Número de Controle do Participante: Brancos X[25]
|
|
141
|
+
detalhe << pagamento.nosso_numero.to_s.rjust(12, '0') # nosso numero com DV 9[12]
|
|
142
|
+
detalhe << pagamento.parcela.to_s.rjust(2, '0') # Número da Parcela: "01" se parcela única 9[02]
|
|
143
|
+
detalhe << '00' # Grupo de Valor: "00" 9[02]
|
|
144
|
+
detalhe << ' ' # Complemento do Registro: Brancos X[03]
|
|
145
|
+
|
|
146
|
+
# "Indicativo de Mensagem ou Sacador/Avalista:
|
|
147
|
+
# Brancos: Poderá ser informada nas posições 352 a 391 (SEQ 50) qualquer mensagem para ser impressa no boleto;
|
|
148
|
+
# “A”: Deverá ser informado nas posições 352 a 391 (SEQ 50) o nome e CPF/CNPJ do sacador"
|
|
149
|
+
detalhe << ' ' # X[01]
|
|
150
|
+
detalhe << ' ' # Prefixo do Título: Brancos X[03]
|
|
151
|
+
detalhe << '000' # Variação da Carteira: "000" 9[03]
|
|
152
|
+
detalhe << '0' # Conta Caução: "0" 9[01]
|
|
153
|
+
|
|
154
|
+
# "Número do Contrato Garantia:
|
|
155
|
+
# Para Carteira 1 preencher ""00000"";
|
|
156
|
+
# Para Carteira 3 preencher com o número do contrato sem DV."
|
|
157
|
+
detalhe << '00000' # Número do Contrato Garantia 9[05]
|
|
158
|
+
detalhe << '0' # DV do contrato 9[01]
|
|
159
|
+
detalhe << '000000' # Numero do borderô: preencher em caso de carteira 3 9[06]
|
|
160
|
+
detalhe << ' ' # Complemento do Registro: Brancos X[04]
|
|
161
|
+
|
|
162
|
+
# "Tipo de Emissão:
|
|
163
|
+
# 1 - Cooperativa
|
|
164
|
+
# 2 - Cliente"
|
|
165
|
+
detalhe << modalidade_carteira # Tipo de Emissão 9[01]
|
|
166
|
+
|
|
167
|
+
# "Carteira/Modalidade:
|
|
168
|
+
# 01 = Simples Com Registro
|
|
169
|
+
# 02 = Simples Sem Registro
|
|
170
|
+
# 03 = Garantida Caucionada "
|
|
171
|
+
detalhe << carteira # codigo da carteira 9[02]
|
|
172
|
+
|
|
173
|
+
# "Comando/Movimento:
|
|
174
|
+
# 01 = Registro de Títulos
|
|
175
|
+
# 02 = Solicitação de Baixa
|
|
176
|
+
# 04 = Concessão de Abatimento
|
|
177
|
+
# 05 = Cancelamento de Abatimento
|
|
178
|
+
# 06 = Alteração de Vencimento
|
|
179
|
+
# 08 = Alteração de Seu Número
|
|
180
|
+
# 09 = Instrução para Protestar
|
|
181
|
+
# 10 = Instrução para Sustar Protesto
|
|
182
|
+
# 11 = Instrução para Dispensar Juros
|
|
183
|
+
# 12 = Alteração de Pagador
|
|
184
|
+
# 31 = Alteração de Outros Dados
|
|
185
|
+
# 34 = Baixa - Pagamento Direto ao Beneficiário
|
|
186
|
+
|
|
187
|
+
detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02]
|
|
188
|
+
detalhe << pagamento.numero_documento.to_s.rjust(10, '0') # numero do documento X[10]
|
|
189
|
+
detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data do vencimento 9[06]
|
|
190
|
+
detalhe << pagamento.formata_valor # valor do documento 9[13]
|
|
191
|
+
detalhe << cod_banco # codigo banco 9[03]
|
|
192
|
+
detalhe << agencia # Prefixo da Cooperativa 9[4]
|
|
193
|
+
detalhe << digito_agencia # Digito da Cooperativa 9[1]
|
|
194
|
+
|
|
195
|
+
# "Espécie do Título :
|
|
196
|
+
# 01 = Duplicata Mercantil
|
|
197
|
+
# 02 = Nota Promissória
|
|
198
|
+
# 03 = Nota de Seguro
|
|
199
|
+
# 05 = Recibo
|
|
200
|
+
# 06 = Duplicata Rural
|
|
201
|
+
# 08 = Letra de Câmbio
|
|
202
|
+
# 09 = Warrant
|
|
203
|
+
# 10 = Cheque
|
|
204
|
+
# 12 = Duplicata de Serviço
|
|
205
|
+
# 13 = Nota de Débito
|
|
206
|
+
# 14 = Triplicata Mercantil
|
|
207
|
+
# 15 = Triplicata de Serviço
|
|
208
|
+
# 18 = Fatura
|
|
209
|
+
# 20 = Apólice de Seguro
|
|
210
|
+
# 21 = Mensalidade Escolar
|
|
211
|
+
# 22 = Parcela de Consórcio
|
|
212
|
+
# 99 = Outros"
|
|
213
|
+
detalhe << pagamento.especie_titulo # Espécie de documento 9[02]
|
|
214
|
+
detalhe << '0' # aceite (A=1/N=0) X[01]
|
|
215
|
+
detalhe << pagamento.data_emissao.strftime('%d%m%y') # data de emissao 9[06]
|
|
216
|
+
|
|
217
|
+
# "Primeira instrução codificada:
|
|
218
|
+
# Regras de impressão de mensagens nos boletos:
|
|
219
|
+
# * Primeira instrução (SEQ 34) = 00 e segunda (SEQ 35) = 00, não imprime nada.
|
|
220
|
+
# * Primeira instrução (SEQ 34) = 01 e segunda (SEQ 35) = 01, desconsidera-se as instruções CNAB e imprime as mensagens relatadas no trailler do arquivo.
|
|
221
|
+
# * Primeira e segunda instrução diferente das situações acima, imprimimos o conteúdo CNAB:
|
|
222
|
+
# 00 = AUSENCIA DE INSTRUCOES
|
|
223
|
+
# 01 = COBRAR JUROS
|
|
224
|
+
# 03 = PROTESTAR 3 DIAS UTEIS APOS VENCIMENTO
|
|
225
|
+
# 04 = PROTESTAR 4 DIAS UTEIS APOS VENCIMENTO
|
|
226
|
+
# 05 = PROTESTAR 5 DIAS UTEIS APOS VENCIMENTO
|
|
227
|
+
# 07 = NAO PROTESTAR
|
|
228
|
+
# 10 = PROTESTAR 10 DIAS UTEIS APOS VENCIMENTO
|
|
229
|
+
# 15 = PROTESTAR 15 DIAS UTEIS APOS VENCIMENTO
|
|
230
|
+
# 20 = PROTESTAR 20 DIAS UTEIS APOS VENCIMENTO
|
|
231
|
+
# 22 = CONCEDER DESCONTO SO ATE DATA ESTIPULADA
|
|
232
|
+
# 42 = DEVOLVER APOS 15 DIAS VENCIDO
|
|
233
|
+
# 43 = DEVOLVER APOS 30 DIAS VENCIDO"
|
|
234
|
+
detalhe << '00' # Instrução para o título 9[02]
|
|
235
|
+
detalhe << '00' # Número de dias válidos para instrução 9[02]
|
|
236
|
+
detalhe << pagamento.formata_valor_mora(6) # valor mora ao dia 9[06]
|
|
237
|
+
detalhe << pagamento.formata_valor_multa(6) # taxa de multa 9[06]
|
|
238
|
+
detalhe << distribuicao_boleto # indentificacao entrega 9[01]
|
|
239
|
+
detalhe << pagamento.formata_data_desconto # data limite para desconto 9[06]
|
|
240
|
+
detalhe << pagamento.formata_valor_desconto # valor do desconto 9[13]
|
|
241
|
+
|
|
242
|
+
# "193-193 – Código da moeda
|
|
243
|
+
# 194-205 – Valor IOF / Quantidade Monetária: ""000000000000""
|
|
244
|
+
# Se o código da moeda for REAL, o valor restante representa o IOF.
|
|
245
|
+
# Se o código da moeda for diferente de REAL, o valor restante será a quantidade monetária.
|
|
246
|
+
detalhe << pagamento.formata_valor_iof # valor do iof 9[13]
|
|
247
|
+
detalhe << pagamento.formata_valor_abatimento # valor do abatimento 9[13]
|
|
248
|
+
detalhe << pagamento.identificacao_sacado.rjust(2, '0') # identificacao do pagador 9[02]
|
|
249
|
+
detalhe << pagamento.documento_sacado.to_s.rjust(14, '0') # documento do pagador 9[14]
|
|
250
|
+
detalhe << pagamento.nome_sacado.format_size(40).ljust(40, ' ') # nome do pagador X[40]
|
|
251
|
+
detalhe << pagamento.endereco_sacado.format_size(37).ljust(37, ' ')# endereco do pagador X[37]
|
|
252
|
+
detalhe << pagamento.bairro_sacado.format_size(15).ljust(15, ' ') # bairro do pagador X[15]
|
|
253
|
+
detalhe << pagamento.cep_sacado # cep do pagador 9[08]
|
|
254
|
+
detalhe << pagamento.cidade_sacado.format_size(15) # cidade do pagador X[15]
|
|
255
|
+
detalhe << pagamento.uf_sacado # uf do pagador X[02]
|
|
256
|
+
|
|
257
|
+
# "Observações/Mensagem ou Sacador/Avalista:
|
|
258
|
+
# Quando o SEQ 14 – Indicativo de Mensagem ou Sacador/Avalista - for preenchido com Brancos,
|
|
259
|
+
# as informações constantes desse campo serão impressas no campo “texto de responsabilidade da Empresa”,
|
|
260
|
+
# no Recibo do Sacado e na Ficha de Compensação do boleto de cobrança.
|
|
261
|
+
# Quando o SEQ 14 – Indicativo de Mensagem ou Sacador/Avalista - for preenchido com “A” ,
|
|
262
|
+
# este campo deverá ser preenchido com o nome/razão social do Sacador/Avalista"
|
|
263
|
+
detalhe << ''.rjust(40, ' ') # X[40]
|
|
264
|
+
|
|
265
|
+
# "Número de Dias Para Protesto:
|
|
266
|
+
# Quantidade dias para envio protesto. Se = ""0"",
|
|
267
|
+
# utilizar dias protesto padrão do cliente cadastrado na cooperativa. "
|
|
268
|
+
detalhe << '00' # Número de Dias Para Protesto x[02]
|
|
269
|
+
detalhe << ' ' # Brancos X[1]
|
|
270
|
+
detalhe << sequencial.to_s.rjust(6, '0') # numero do registro no arquivo 9[06]
|
|
271
|
+
detalhe
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
# Trailer do arquivo remessa
|
|
275
|
+
#
|
|
276
|
+
# @param sequencial
|
|
277
|
+
# num. sequencial do registro no arquivo
|
|
278
|
+
#
|
|
279
|
+
# @return [String]
|
|
280
|
+
#
|
|
281
|
+
def monta_trailer(sequencial)
|
|
282
|
+
# CAMPO TAMANHO VALOR
|
|
283
|
+
# 1 001 001 001 9(01) Identificação Registro Trailler: "9"
|
|
284
|
+
# 2 002 194 193 X(193) Complemento do Registro: Brancos
|
|
285
|
+
# 3 195 234 040 X(40) "Mensagem responsabilidade Beneficiário:
|
|
286
|
+
# Quando o SEQ 34 = ""01"" e o SEQ 35 = ""01"", preencher com mensagens/intruções de responsabilidade do Beneficiário
|
|
287
|
+
# Quando o SEQ 34 e SEQ 35 forem preenchidos com valores diferentes destes, preencher com Brancos"
|
|
288
|
+
# 4 235 274 040 X(40) "Mensagem responsabilidade Beneficiário:
|
|
289
|
+
# Quando o SEQ 34 = ""01"" e o SEQ 35 = ""01"", preencher com mensagens/intruções de responsabilidade do Beneficiário
|
|
290
|
+
# Quando o SEQ 34 e SEQ 35 forem preenchidos com valores diferentes destes, preencher com Brancos"
|
|
291
|
+
# 5 275 314 040 X(40) "Mensagem responsabilidade Beneficiário:
|
|
292
|
+
# Quando o SEQ 34 = ""01"" e o SEQ 35 = ""01"", preencher com mensagens/intruções de responsabilidade do Beneficiário
|
|
293
|
+
# Quando o SEQ 34 e SEQ 35 forem preenchidos com valores diferentes destes, preencher com Brancos"
|
|
294
|
+
# 6 315 354 040 X(40) "Mensagem responsabilidade Beneficiário:
|
|
295
|
+
# Quando o SEQ 34 = ""01"" e o SEQ 35 = ""01"", preencher com mensagens/intruções de responsabilidade do Beneficiário
|
|
296
|
+
# Quando o SEQ 34 e SEQ 35 forem preenchidos com valores diferentes destes, preencher com Brancos"
|
|
297
|
+
# 7 355 394 040 X(40) "Mensagem responsabilidade Beneficiário:
|
|
298
|
+
# Quando o SEQ 34 = ""01"" e o SEQ 35 = ""01"", preencher com mensagens/intruções de responsabilidade do Beneficiário
|
|
299
|
+
# Quando o SEQ 34 e SEQ 35 forem preenchidos com valores diferentes destes, preencher com Brancos"
|
|
300
|
+
# 8 395 400 006 9(06) Seqüencial do Registro: Incrementado em 1 a cada registro
|
|
301
|
+
|
|
302
|
+
"9#{''.rjust(393, '0')}#{sequencial.to_s.rjust(6, '0')}"
|
|
303
|
+
end
|
|
304
|
+
end
|
|
305
|
+
end
|
|
306
|
+
end
|
|
307
|
+
end
|
|
@@ -67,6 +67,8 @@ module Brcobranca
|
|
|
67
67
|
attr_accessor :percentual_multa
|
|
68
68
|
# <b>OPCIONAL</b>: Data para cobrança de multa
|
|
69
69
|
attr_accessor :data_multa
|
|
70
|
+
# <b>OPCIONAL</b>: Número da Parcela
|
|
71
|
+
attr_accessor :parcela
|
|
70
72
|
|
|
71
73
|
validates_presence_of :nosso_numero, :data_vencimento, :valor,
|
|
72
74
|
:documento_sacado, :nome_sacado, :endereco_sacado,
|
|
@@ -93,7 +95,8 @@ module Brcobranca
|
|
|
93
95
|
especie_titulo: '01',
|
|
94
96
|
identificacao_ocorrencia: '01',
|
|
95
97
|
codigo_multa: '0',
|
|
96
|
-
percentual_multa:
|
|
98
|
+
percentual_multa: 0.0,
|
|
99
|
+
parcela: '01'
|
|
97
100
|
}
|
|
98
101
|
|
|
99
102
|
campos = padrao.merge!(campos)
|
|
@@ -166,6 +169,16 @@ module Brcobranca
|
|
|
166
169
|
format_value(valor_mora, tamanho)
|
|
167
170
|
end
|
|
168
171
|
|
|
172
|
+
# Formata o campo valor da multa
|
|
173
|
+
#
|
|
174
|
+
# @param tamanho [Integer]
|
|
175
|
+
# quantidade de caracteres a ser retornado
|
|
176
|
+
#
|
|
177
|
+
def formata_valor_multa(tamanho = 6)
|
|
178
|
+
format_value(percentual_multa, tamanho)
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
|
|
169
182
|
# Formata o campo valor do desconto
|
|
170
183
|
#
|
|
171
184
|
# @param tamanho [Integer]
|
data/lib/brcobranca/version.rb
CHANGED
data/lib/brcobranca.rb
CHANGED
|
@@ -147,7 +147,8 @@ module Brcobranca
|
|
|
147
147
|
autoload :Bradesco, 'brcobranca/remessa/cnab400/bradesco'
|
|
148
148
|
autoload :Itau, 'brcobranca/remessa/cnab400/itau'
|
|
149
149
|
autoload :Citibank, 'brcobranca/remessa/cnab400/citibank'
|
|
150
|
-
autoload :Santander,
|
|
150
|
+
autoload :Santander, 'brcobranca/remessa/cnab400/santander'
|
|
151
|
+
autoload :Sicoob, 'brcobranca/remessa/cnab400/sicoob'
|
|
151
152
|
end
|
|
152
153
|
|
|
153
154
|
module Cnab240
|
|
@@ -47,14 +47,6 @@ RSpec.describe Brcobranca::Remessa::Cnab240::Sicoob do
|
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
context '@parcela' do
|
|
51
|
-
it 'deve ser invalido se nao possuir a parcela' do
|
|
52
|
-
objeto = subject.class.new(params.merge(parcela: nil))
|
|
53
|
-
expect(objeto.invalid?).to be true
|
|
54
|
-
expect(objeto.errors.full_messages).to include('Parcela não pode estar em branco.')
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
50
|
context '@agencia' do
|
|
59
51
|
it 'deve ser invalido se a agencia tiver mais de 4 digitos' do
|
|
60
52
|
sicoob.agencia = '12345'
|
|
@@ -137,8 +129,8 @@ RSpec.describe Brcobranca::Remessa::Cnab240::Sicoob do
|
|
|
137
129
|
end
|
|
138
130
|
|
|
139
131
|
it 'formata o nosso numero' do
|
|
140
|
-
nosso_numero = sicoob.formata_nosso_numero
|
|
141
|
-
expect(nosso_numero).to eq "
|
|
132
|
+
nosso_numero = sicoob.formata_nosso_numero pagamento
|
|
133
|
+
expect(nosso_numero).to eq "000000001201014 "
|
|
142
134
|
end
|
|
143
135
|
end
|
|
144
136
|
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
RSpec.describe Brcobranca::Remessa::Cnab400::Sicoob do
|
|
5
|
+
let(:pagamento) do
|
|
6
|
+
Brcobranca::Remessa::Pagamento.new(valor: 199.9,
|
|
7
|
+
data_vencimento: Date.today,
|
|
8
|
+
nosso_numero: 123,
|
|
9
|
+
documento_sacado: '12345678901',
|
|
10
|
+
nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
|
|
11
|
+
endereco_sacado: 'RUA RIO GRANDE DO SUL São paulo Minas caçapa da silva junior',
|
|
12
|
+
bairro_sacado: 'São josé dos quatro apostolos magros',
|
|
13
|
+
cep_sacado: '12345678',
|
|
14
|
+
cidade_sacado: 'Santa rita de cássia maria da silva',
|
|
15
|
+
uf_sacado: 'SP')
|
|
16
|
+
end
|
|
17
|
+
let(:params) do
|
|
18
|
+
{ carteira: '01',
|
|
19
|
+
agencia: '4327',
|
|
20
|
+
conta_corrente: '12345678',
|
|
21
|
+
digito_conta: '1',
|
|
22
|
+
convenio: '123456789',
|
|
23
|
+
empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
|
|
24
|
+
documento_cedente: '12345678910',
|
|
25
|
+
pagamentos: [pagamento] }
|
|
26
|
+
end
|
|
27
|
+
let(:sicoob) { subject.class.new(params) }
|
|
28
|
+
|
|
29
|
+
context 'validacoes dos campos' do
|
|
30
|
+
context '@agencia' do
|
|
31
|
+
it 'deve ser invalido se nao possuir uma agencia' do
|
|
32
|
+
objeto = subject.class.new(params.merge!(agencia: nil))
|
|
33
|
+
expect(objeto.invalid?).to be true
|
|
34
|
+
expect(objeto.errors.full_messages).to include('Agencia não pode estar em branco.')
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'deve ser invalido se a agencia tiver mais de 4 digitos' do
|
|
38
|
+
sicoob.agencia = '12345'
|
|
39
|
+
expect(sicoob.invalid?).to be true
|
|
40
|
+
expect(sicoob.errors.full_messages).to include('Agencia deve ter 4 dígitos.')
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
context '@digito_conta' do
|
|
45
|
+
it 'deve ser invalido se nao possuir um digito da conta corrente' do
|
|
46
|
+
objeto = subject.class.new(params.merge!(digito_conta: nil))
|
|
47
|
+
expect(objeto.invalid?).to be true
|
|
48
|
+
expect(objeto.errors.full_messages).to include('Digito conta não pode estar em branco.')
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it 'deve ser invalido se a carteira tiver mais de 1 digito' do
|
|
52
|
+
sicoob.digito_conta = '12'
|
|
53
|
+
expect(sicoob.invalid?).to be true
|
|
54
|
+
expect(sicoob.errors.full_messages).to include('Digito conta deve ter 1 dígito.')
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
context '@conta_corrente' do
|
|
59
|
+
it 'deve ser invalido se nao possuir uma conta corrente' do
|
|
60
|
+
objeto = subject.class.new(params.merge!(conta_corrente: nil))
|
|
61
|
+
expect(objeto.invalid?).to be true
|
|
62
|
+
expect(objeto.errors.full_messages).to include('Conta corrente não pode estar em branco.')
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it 'deve ser invalido se a conta corrente tiver mais de 8 digitos' do
|
|
66
|
+
sicoob.conta_corrente = '123456789'
|
|
67
|
+
expect(sicoob.invalid?).to be true
|
|
68
|
+
expect(sicoob.errors.full_messages).to include('Conta corrente deve ter 8 dígitos.')
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
context '@carteira' do
|
|
73
|
+
it 'deve ser invalido se nao possuir uma carteira' do
|
|
74
|
+
objeto = subject.class.new(params.merge!(carteira: nil))
|
|
75
|
+
expect(objeto.invalid?).to be true
|
|
76
|
+
expect(objeto.errors.full_messages).to include('Carteira não pode estar em branco.')
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it 'deve ser invalido se a carteira tiver mais de 2 digitos' do
|
|
80
|
+
sicoob.carteira = '123'
|
|
81
|
+
expect(sicoob.invalid?).to be true
|
|
82
|
+
expect(sicoob.errors.full_messages).to include('Carteira deve ter 2 dígitos.')
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
context '@sequencial_remessa' do
|
|
87
|
+
it 'deve ser invalido se nao possuir um num. sequencial de remessa' do
|
|
88
|
+
objeto = subject.class.new(params.merge!(sequencial_remessa: nil))
|
|
89
|
+
expect(objeto.invalid?).to be true
|
|
90
|
+
expect(objeto.errors.full_messages).to include('Sequencial remessa não pode estar em branco.')
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it 'deve ser invalido se sequencial de remessa tiver mais de 8 digitos' do
|
|
94
|
+
sicoob.sequencial_remessa = '12345678'
|
|
95
|
+
expect(sicoob.invalid?).to be true
|
|
96
|
+
expect(sicoob.errors.full_messages).to include('Sequencial remessa deve ter 7 dígitos.')
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
context '@convenio' do
|
|
101
|
+
it 'deve ser invalido se nao possuir um convenio' do
|
|
102
|
+
objeto = subject.class.new(params.merge!(convenio: nil))
|
|
103
|
+
expect(objeto.invalid?).to be true
|
|
104
|
+
expect(objeto.errors.full_messages).to include('Convenio não pode estar em branco.')
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it 'deve ser invalido se convenio tiver mais de 9 digitos' do
|
|
108
|
+
sicoob.convenio = '1234567890'
|
|
109
|
+
expect(sicoob.invalid?).to be true
|
|
110
|
+
expect(sicoob.errors.full_messages).to include('Convenio deve ter 9 dígitos.')
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
context 'formatacoes dos valores' do
|
|
116
|
+
it 'cod_banco deve ser 756' do
|
|
117
|
+
expect(sicoob.cod_banco).to eq '756'
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it 'nome_banco deve ser SICOOB com 15 posicoes' do
|
|
121
|
+
nome_banco = sicoob.nome_banco
|
|
122
|
+
expect(nome_banco.size).to eq 15
|
|
123
|
+
expect(nome_banco.strip).to eq 'BANCOOBCED'
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it 'complemento deve ter 287 brancos' do
|
|
127
|
+
complemento = sicoob.complemento
|
|
128
|
+
expect(complemento.size).to eq 287
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it 'info_conta deve ter 20 posicoes' do
|
|
132
|
+
expect(sicoob.info_conta.size).to eq 20
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it 'identificacao da empresa deve ter as informacoes nas posicoes corretas' do
|
|
136
|
+
id_empresa = sicoob.info_conta
|
|
137
|
+
expect(id_empresa[0..3]).to eq '4327' # agencia
|
|
138
|
+
expect(id_empresa[4]).to eq '3' # digito_agencia
|
|
139
|
+
expect(id_empresa[5..13]).to eq '123456789' # convenio
|
|
140
|
+
expect(id_empresa[14..19]).to eq ' ' # brancos
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
context 'monta remessa' do
|
|
145
|
+
it_behaves_like 'cnab400'
|
|
146
|
+
|
|
147
|
+
context 'header' do
|
|
148
|
+
it 'informacoes devem estar posicionadas corretamente no header' do
|
|
149
|
+
header = sicoob.monta_header
|
|
150
|
+
expect(header[1]).to eq '1' # tipo operacao (1 = remessa)
|
|
151
|
+
expect(header[2..8]).to eq 'REMESSA' # literal da operacao
|
|
152
|
+
expect(header[26..45]).to eq sicoob.info_conta # informacoes da conta
|
|
153
|
+
expect(header[76..78]).to eq '756' # codigo do banco
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
context 'detalhe' do
|
|
158
|
+
it 'informacoes devem estar posicionadas corretamente no detalhe' do
|
|
159
|
+
detalhe = sicoob.monta_detalhe pagamento, 1
|
|
160
|
+
expect(detalhe[62..72]).to eq '00000000012' # nosso numero
|
|
161
|
+
expect(detalhe[73]).to eq '3' # digito nosso numero
|
|
162
|
+
expect(detalhe[74..75]).to eq '01' # parcela
|
|
163
|
+
expect(detalhe[120..125]).to eq Date.today.strftime('%d%m%y') # data de vencimento
|
|
164
|
+
expect(detalhe[126..138]).to eq '0000000019990' # valor do documento
|
|
165
|
+
expect(detalhe[220..233]).to eq '00012345678901' # documento do pagador
|
|
166
|
+
expect(detalhe[234..273]).to eq 'PABLO DIEGO JOSE FRANCISCO DE PAULA JUAN' # nome do pagador
|
|
167
|
+
expect(detalhe[274..310]).to eq 'RUA RIO GRANDE DO SUL Sao paulo Minas' # endereco do pagador
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
context 'arquivo' do
|
|
172
|
+
before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
|
|
173
|
+
after { Timecop.return }
|
|
174
|
+
|
|
175
|
+
it { expect(sicoob.gera_arquivo).to eq(read_remessa('remessa-sicoob-cnab400.rem', sicoob.gera_arquivo)) }
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
75600000 274576177000177 0432730000000036668 SOCIEDADE BRASILEIRA DE ZOOLOGSICOOB 114072015161515000000081000000000000000000000000000000000000000000000
|
|
2
2
|
75600011R01 040 2074576177000177 0432730000000036668 SOCIEDADE BRASILEIRA DE ZOOLOG 000000001407201500000000
|
|
3
|
-
7560001300001P 010432730000000036668 000000001201014 10
|
|
3
|
+
7560001300001P 010432730000000036668 000000001201014 10 220000000000000001407201500000000000500000000001N14072015000000000000000000000000000000000000000000000000000000000000000000000000000000 1000000090000000000
|
|
4
4
|
7560001300002Q 011000082136760505PABLO DIEGO JOSE FRANCISCO DE PAULA JUANRUA RIO GRANDE DO SUL SAO PAULO MINAS CASAO JOSE DOS QU12345678SANTA RITA DE CRJ0000000000000000 000
|
|
5
5
|
75600015 000004
|
|
6
6
|
75699999 000001000006
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
01REMESSA01COBRANCA 43273123456789 SOCIEDADE BRASILEIRA DE ZOOLOG756BANCOOBCED 1407150000001 000001
|
|
2
|
+
1010001234567891043273123456781000000 0000000001230100 0000000000000000 201010000000000140715000000001999075643273010140715000000000000000020000000000000000000000000000000000000000000000100012345678901PABLO DIEGO JOSE FRANCISCO DE PAULA JUANRUA RIO GRANDE DO SUL SAO PAULO MINASSAO JOSE DOS QU12345678SANTA RITA DE CSP 00 000002
|
|
3
|
+
9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003
|
|
@@ -41,9 +41,18 @@ shared_examples_for 'cnab400' do
|
|
|
41
41
|
digito_conta: '8',
|
|
42
42
|
pagamentos: [pagamento]
|
|
43
43
|
}
|
|
44
|
+
elsif subject.class == Brcobranca::Remessa::Cnab400::Sicoob
|
|
45
|
+
{ carteira: '01',
|
|
46
|
+
agencia: '1234',
|
|
47
|
+
conta_corrente: '12345678',
|
|
48
|
+
digito_conta: '1',
|
|
49
|
+
empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
|
|
50
|
+
documento_cedente: '12345678910',
|
|
51
|
+
convenio: '123456789',
|
|
52
|
+
pagamentos: [pagamento] }
|
|
44
53
|
else
|
|
45
54
|
{ carteira: '123',
|
|
46
|
-
agencia: '
|
|
55
|
+
agencia: '4327',
|
|
47
56
|
conta_corrente: '12345',
|
|
48
57
|
digito_conta: '1',
|
|
49
58
|
empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: brcobranca
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 6.
|
|
4
|
+
version: 6.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kivanio Barbosa
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-02-
|
|
11
|
+
date: 2016-02-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rghost
|
|
@@ -152,6 +152,7 @@ files:
|
|
|
152
152
|
- lib/brcobranca/remessa/cnab400/citibank.rb
|
|
153
153
|
- lib/brcobranca/remessa/cnab400/itau.rb
|
|
154
154
|
- lib/brcobranca/remessa/cnab400/santander.rb
|
|
155
|
+
- lib/brcobranca/remessa/cnab400/sicoob.rb
|
|
155
156
|
- lib/brcobranca/remessa/pagamento.rb
|
|
156
157
|
- lib/brcobranca/retorno/base.rb
|
|
157
158
|
- lib/brcobranca/retorno/cnab240/base.rb
|
|
@@ -198,6 +199,7 @@ files:
|
|
|
198
199
|
- spec/brcobranca/remessa/cnab400/citibank_spec.rb
|
|
199
200
|
- spec/brcobranca/remessa/cnab400/itau_spec.rb
|
|
200
201
|
- spec/brcobranca/remessa/cnab400/santander_spec.rb
|
|
202
|
+
- spec/brcobranca/remessa/cnab400/sicoob_spec.rb
|
|
201
203
|
- spec/brcobranca/remessa/pagamento_spec.rb
|
|
202
204
|
- spec/brcobranca/retorno/cnab240/base_spec.rb
|
|
203
205
|
- spec/brcobranca/retorno/cnab240/sicoob_spec.rb
|
|
@@ -218,6 +220,7 @@ files:
|
|
|
218
220
|
- spec/fixtures/remessa/remessa-citibank-cnab400.rem
|
|
219
221
|
- spec/fixtures/remessa/remessa-itau-cnab400.rem
|
|
220
222
|
- spec/fixtures/remessa/remessa-santander-cnab400.rem
|
|
223
|
+
- spec/fixtures/remessa/remessa-sicoob-cnab400.rem
|
|
221
224
|
- spec/spec.opts
|
|
222
225
|
- spec/spec_helper.rb
|
|
223
226
|
- spec/support/remessa_helpers.rb
|
|
@@ -282,6 +285,7 @@ test_files:
|
|
|
282
285
|
- spec/brcobranca/remessa/cnab400/citibank_spec.rb
|
|
283
286
|
- spec/brcobranca/remessa/cnab400/itau_spec.rb
|
|
284
287
|
- spec/brcobranca/remessa/cnab400/santander_spec.rb
|
|
288
|
+
- spec/brcobranca/remessa/cnab400/sicoob_spec.rb
|
|
285
289
|
- spec/brcobranca/remessa/pagamento_spec.rb
|
|
286
290
|
- spec/brcobranca/retorno/cnab240/base_spec.rb
|
|
287
291
|
- spec/brcobranca/retorno/cnab240/sicoob_spec.rb
|
|
@@ -302,6 +306,7 @@ test_files:
|
|
|
302
306
|
- spec/fixtures/remessa/remessa-citibank-cnab400.rem
|
|
303
307
|
- spec/fixtures/remessa/remessa-itau-cnab400.rem
|
|
304
308
|
- spec/fixtures/remessa/remessa-santander-cnab400.rem
|
|
309
|
+
- spec/fixtures/remessa/remessa-sicoob-cnab400.rem
|
|
305
310
|
- spec/spec.opts
|
|
306
311
|
- spec/spec_helper.rb
|
|
307
312
|
- spec/support/remessa_helpers.rb
|