br_boleto 2.0.1 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.travis.yml +1 -1
- data/Gemfile.lock +2 -2
- data/br_boleto.gemspec +2 -3
- data/lib/br_boleto/association/have_conta.rb +27 -25
- data/lib/br_boleto/association/have_pagador.rb +2 -0
- data/lib/br_boleto/boleto/base.rb +0 -4
- data/lib/br_boleto/boleto/bradesco.rb +80 -0
- data/lib/br_boleto/boleto/caixa.rb +10 -12
- data/lib/br_boleto/boleto/cecred.rb +76 -0
- data/lib/br_boleto/boleto/itau.rb +114 -0
- data/lib/br_boleto/boleto/sicredi.rb +101 -0
- data/lib/br_boleto/boleto/unicred.rb +21 -0
- data/lib/br_boleto/conta/base.rb +28 -3
- data/lib/br_boleto/conta/bradesco.rb +120 -0
- data/lib/br_boleto/conta/caixa.rb +22 -12
- data/lib/br_boleto/conta/cecred.rb +67 -0
- data/lib/br_boleto/conta/itau.rb +199 -0
- data/lib/br_boleto/conta/sicoob.rb +40 -11
- data/lib/br_boleto/conta/sicredi.rb +171 -0
- data/lib/br_boleto/conta/unicred.rb +38 -0
- data/lib/br_boleto/helper/default_codes.rb +535 -26
- data/lib/br_boleto/pagador.rb +4 -0
- data/lib/br_boleto/remessa/base.rb +2 -0
- data/lib/br_boleto/remessa/cnab240/base.rb +21 -6
- data/lib/br_boleto/remessa/cnab240/bradesco.rb +141 -0
- data/lib/br_boleto/remessa/cnab240/caixa.rb +8 -1
- data/lib/br_boleto/remessa/cnab240/cecred.rb +169 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +29 -21
- data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +4 -3
- data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +5 -5
- data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +4 -3
- data/lib/br_boleto/remessa/cnab240/itau.rb +186 -0
- data/lib/br_boleto/remessa/cnab240/sicoob.rb +4 -16
- data/lib/br_boleto/remessa/cnab240/sicredi.rb +205 -0
- data/lib/br_boleto/remessa/cnab240/unicred.rb +40 -0
- data/lib/br_boleto/remessa/cnab400/bradesco.rb +235 -0
- data/lib/br_boleto/remessa/cnab400/helper/detalhe.rb +6 -5
- data/lib/br_boleto/remessa/cnab400/itau.rb +190 -0
- data/lib/br_boleto/remessa/cnab400/sicoob.rb +3 -3
- data/lib/br_boleto/remessa/cnab400/sicredi.rb +276 -0
- data/lib/br_boleto/remessa/cnab400/unicred.rb +62 -0
- data/lib/br_boleto/remessa/pagamento.rb +93 -43
- data/lib/br_boleto/retorno/cnab240/base.rb +13 -12
- data/lib/br_boleto/retorno/cnab240/bradesco.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/caixa.rb +2 -3
- data/lib/br_boleto/retorno/cnab240/cecred.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/itau.rb +24 -0
- data/lib/br_boleto/retorno/cnab240/sicredi.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/unicred.rb +10 -0
- data/lib/br_boleto/retorno/cnab400/bradesco.rb +42 -0
- data/lib/br_boleto/retorno/cnab400/itau.rb +43 -0
- data/lib/br_boleto/retorno/cnab400/sicoob.rb +2 -2
- data/lib/br_boleto/retorno/cnab400/sicredi.rb +43 -0
- data/lib/br_boleto/retorno/cnab400/unicred.rb +10 -0
- data/lib/br_boleto/retorno/pagamento.rb +18 -4
- data/lib/br_boleto/version.rb +2 -2
- data/lib/br_boleto.rb +28 -0
- data/lib/config/locales/br-boleto-en.yml +1 -0
- data/lib/config/locales/br-boleto-pt-BR.yml +1 -0
- data/test/br_boleto/association/have_pagador_test.rb +24 -0
- data/test/br_boleto/boleto/bradesco_test.rb +125 -0
- data/test/br_boleto/boleto/caixa_test.rb +18 -18
- data/test/br_boleto/boleto/cecred_test.rb +115 -0
- data/test/br_boleto/boleto/itau_test.rb +160 -0
- data/test/br_boleto/boleto/sicredi_test.rb +136 -0
- data/test/br_boleto/boleto/unicred_test.rb +128 -0
- data/test/br_boleto/conta/base_test.rb +298 -3
- data/test/br_boleto/conta/bradesco_test.rb +142 -0
- data/test/br_boleto/conta/caixa_test.rb +7 -6
- data/test/br_boleto/conta/cecred_test.rb +119 -0
- data/test/br_boleto/conta/itau_test.rb +189 -0
- data/test/br_boleto/conta/sicoob_test.rb +32 -2
- data/test/br_boleto/conta/sicredi_test.rb +180 -0
- data/test/br_boleto/conta/unicred_test.rb +154 -0
- data/test/br_boleto/pagador_test.rb +22 -2
- data/test/br_boleto/remessa/cnab240/base_test.rb +24 -12
- data/test/br_boleto/remessa/cnab240/bradesco_test.rb +196 -0
- data/test/br_boleto/remessa/cnab240/caixa_test.rb +51 -0
- data/test/br_boleto/remessa/cnab240/cecred_test.rb +242 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +78 -71
- data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +4 -3
- data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +10 -18
- data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +6 -5
- data/test/br_boleto/remessa/cnab240/itau_test.rb +201 -0
- data/test/br_boleto/remessa/cnab240/sicoob_test.rb +1 -58
- data/test/br_boleto/remessa/cnab240/sicredi_test.rb +207 -0
- data/test/br_boleto/remessa/cnab240/unicred_test.rb +250 -0
- data/test/br_boleto/remessa/cnab400/base_test.rb +4 -4
- data/test/br_boleto/remessa/cnab400/bradesco_test.rb +164 -0
- data/test/br_boleto/remessa/cnab400/itau_test.rb +173 -0
- data/test/br_boleto/remessa/cnab400/sicoob_test.rb +2 -2
- data/test/br_boleto/remessa/cnab400/sicredi_test.rb +241 -0
- data/test/br_boleto/remessa/cnab400/unicred_test.rb +169 -0
- data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/bradesco_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/caixa_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/cecred_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/itau_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/sicoob_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/sicredi_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/unicred_test.rb +228 -0
- data/test/br_boleto/retorno/cnab400/bradesco_test.rb +255 -0
- data/test/br_boleto/retorno/cnab400/itau_test.rb +96 -0
- data/test/br_boleto/retorno/cnab400/sicoob_test.rb +10 -5
- data/test/br_boleto/retorno/cnab400/sicredi_test.rb +7 -0
- data/test/br_boleto/retorno/cnab400/unicred.rb +255 -0
- data/test/br_boleto/retorno/pagamento_test.rb +7 -0
- data/test/factories/boleto/boleto_bradesco.rb +18 -0
- data/test/factories/boleto/boleto_cecred.rb +18 -0
- data/test/factories/boleto/boleto_itau.rb +18 -0
- data/test/factories/boleto/boleto_sicredi.rb +18 -0
- data/test/factories/boleto/boleto_unicred.rb +18 -0
- data/test/factories/conta/bradesco.rb +16 -0
- data/test/factories/conta/caixa.rb +2 -1
- data/test/factories/conta/cecred.rb +15 -0
- data/test/factories/conta/itau.rb +15 -0
- data/test/factories/conta/sicoob.rb +2 -1
- data/test/factories/conta/sicredi.rb +15 -0
- data/test/factories/conta/unicred.rb +15 -0
- data/test/factories/remessa/cnab240/bradesco.rb +9 -0
- data/test/factories/remessa/cnab240/cecred.rb +9 -0
- data/test/factories/remessa/cnab240/itau.rb +9 -0
- data/test/factories/remessa/cnab240/sicredi.rb +9 -0
- data/test/factories/remessa/cnab240/unicred.rb +9 -0
- data/test/factories/remessa/cnab400/bradesco.rb +8 -0
- data/test/factories/remessa/cnab400/itau.rb +8 -0
- data/test/factories/remessa/cnab400/sicredi.rb +8 -0
- data/test/factories/remessa/cnab400/unicred.rb +8 -0
- data/test/fixtures/remessa/cnab240/caixa.rem +8 -0
- data/test/fixtures/remessa/cnab240/cecred.rem +8 -0
- data/test/fixtures/remessa/cnab240/sicoob.rem +8 -8
- data/test/fixtures/remessa/cnab240/unicred.rem +7 -0
- data/test/fixtures/retorno/cnab400/bradesco.ret +8 -0
- data/test/fixtures/retorno/cnab400/itau.ret +54 -0
- metadata +138 -3
@@ -1,33 +1,542 @@
|
|
1
1
|
module BrBoleto
|
2
2
|
module Helper
|
3
3
|
module DefaultCodes
|
4
|
+
########################################################################################
|
5
|
+
############################## ESPÉCIE DO TÍTULO #####################################
|
6
|
+
# Espécie do Título :
|
7
|
+
# Código adotado pela FEBRABAN para identificar o tipo de título de cobrança
|
8
|
+
# Códigos padrões da GEM
|
9
|
+
# 01 = CH – Cheque
|
10
|
+
# 02 = DM – Duplicata Mercantil
|
11
|
+
# 03 = DMI – Duplicata Mercantil p/ Indicação
|
12
|
+
# 04 = DS – Duplicata de Serviço
|
13
|
+
# 05 = DSI – Duplicata de Serviço p/ Indicação
|
14
|
+
# 06 = DR – Duplicata Rural
|
15
|
+
# 07 = LC – Letra de Câmbio
|
16
|
+
# 08 = NCC – Nota de Crédito Comercial
|
17
|
+
# 09 = NCE – Nota de Crédito a Exportação
|
18
|
+
# 10 = NCI – Nota de Crédito Industrial
|
19
|
+
# 11 = NCR – Nota de Crédito Rural
|
20
|
+
# 12 = NP – Nota Promissória
|
21
|
+
# 13 = NPR – Nota Promissória Rural
|
22
|
+
# 14 = TM – Triplicata Mercantil
|
23
|
+
# 15 = TS – Triplicata de Serviço
|
24
|
+
# 16 = NS – Nota de Seguro
|
25
|
+
# 17 = RC – Recibo
|
26
|
+
# 18 = FAT – Fatura
|
27
|
+
# 19 = ND – Nota de Débito
|
28
|
+
# 20 = AP – Apólice de Seguro
|
29
|
+
# 21 = ME – Mensalidade Escolar
|
30
|
+
# 22 = PC – Parcela de Consórcio
|
31
|
+
# 23 = NF – Nota Fiscal
|
32
|
+
# 24 = DD – Documento de Dívida
|
33
|
+
# 25 = Cédula de Produto Rural
|
34
|
+
# 26 = Warrant
|
35
|
+
# 27 = Dívida Ativa de Estado
|
36
|
+
# 28 = Dívida Ativa de Município
|
37
|
+
# 29 = Dívida Ativa da União
|
38
|
+
# 30 = Encargos condominiais
|
39
|
+
# 31 = CC – Cartão de Crédito
|
40
|
+
# 32 = BDP – Boleto de Proposta
|
41
|
+
# 99 = Outros
|
42
|
+
#
|
43
|
+
def get_especie_titulo(code, cnab)
|
44
|
+
"#{code}".adjust_size_to(2, '0', :right)
|
45
|
+
send("equivalent_especie_titulo_#{cnab}")[code] || '99'
|
46
|
+
end
|
47
|
+
def equivalent_especie_titulo_240
|
48
|
+
{
|
49
|
+
'01' => '01', # CH – Cheque
|
50
|
+
'02' => '02', # DM – Duplicata Mercantil
|
51
|
+
'03' => '03', # DMI – Duplicata Mercantil p/ Indicação
|
52
|
+
'04' => '04', # DS – Duplicata de Serviço
|
53
|
+
'05' => '05', # DSI – Duplicata de Serviço p/ Indicação
|
54
|
+
'06' => '06', # DR – Duplicata Rural
|
55
|
+
'07' => '07', # LC – Letra de Câmbio
|
56
|
+
'08' => '08', # NCC – Nota de Crédito Comercial
|
57
|
+
'09' => '09', # NCE – Nota de Crédito a Exportação
|
58
|
+
'10' => '10', # NCI – Nota de Crédito Industrial
|
59
|
+
'11' => '11', # NCR – Nota de Crédito Rural
|
60
|
+
'12' => '12', # NP – Nota Promissória
|
61
|
+
'13' => '13', # NPR – Nota Promissória Rural
|
62
|
+
'14' => '14', # TM – Triplicata Mercantil
|
63
|
+
'15' => '15', # TS – Triplicata de Serviço
|
64
|
+
'16' => '16', # NS – Nota de Seguro
|
65
|
+
'17' => '17', # RC – Recibo
|
66
|
+
'18' => '18', # FAT – Fatura
|
67
|
+
'19' => '19', # ND – Nota de Débito
|
68
|
+
'20' => '20', # AP – Apólice de Seguro
|
69
|
+
'21' => '21', # ME – Mensalidade Escolar
|
70
|
+
'22' => '22', # PC – Parcela de Consórcio
|
71
|
+
'23' => '23', # NF – Nota Fiscal
|
72
|
+
'24' => '24', # DD – Documento de Dívida
|
73
|
+
'25' => '25', # Cédula de Produto Rural
|
74
|
+
'26' => '26', # Warrant
|
75
|
+
'27' => '27', # Dívida Ativa de Estado
|
76
|
+
'28' => '28', # Dívida Ativa de Município
|
77
|
+
'29' => '29', # Dívida Ativa da União
|
78
|
+
'30' => '30', # Encargos condominiais
|
79
|
+
'31' => '31', # CC – Cartão de Crédito
|
80
|
+
'32' => '32', # BDP – Boleto de Proposta
|
81
|
+
'99' => '99', # Outros
|
82
|
+
}
|
83
|
+
end
|
84
|
+
def equivalent_especie_titulo_400
|
85
|
+
# Padrão Código para
|
86
|
+
{# da GEM o Banco
|
87
|
+
'01' => '10' , # Cheque
|
88
|
+
'02' => '01' , # Duplicata Mercantil
|
89
|
+
'04' => '12' , # Duplicata de Serviço
|
90
|
+
'06' => '06' , # Duplicata Rural
|
91
|
+
'07' => '08' , # Letra de Câmbio
|
92
|
+
'12' => '02' , # Nota Promissória
|
93
|
+
'14' => '14' , # Triplicata Mercantil
|
94
|
+
'15' => '15' , # Triplicata de Serviço
|
95
|
+
'16' => '03' , # Nota de Seguro
|
96
|
+
'17' => '05' , # Recibo
|
97
|
+
'18' => '18' , # Fatura
|
98
|
+
'19' => '13' , # Nota de Débito
|
99
|
+
'20' => '20' , # Apólice de Seguro
|
100
|
+
'21' => '21' , # Mensalidade Escolar
|
101
|
+
'22' => '22' , # Parcela de Consórcio
|
102
|
+
'26' => '09' , # Warrant
|
103
|
+
'99' => '99' , # Outros"
|
104
|
+
}
|
105
|
+
end
|
106
|
+
|
107
|
+
########################################################################################
|
108
|
+
########################### CÓDIGO DA MOVIMENTAÇÃO ###################################
|
109
|
+
# Código de Movimento Remessa / Identificacao Ocorrência:
|
110
|
+
# Código adotado pela FEBRABAN, para identificar o tipo de movimentação enviado nos registros do arquivo de remessa.
|
111
|
+
# Default: 01
|
112
|
+
# Códigos padrões da GEM
|
113
|
+
# 01 = Entrada de Títulos
|
114
|
+
# 02 = Pedido de Baixa
|
115
|
+
# 03 = Protesto para Fins Falimentares
|
116
|
+
# 04 = Concessão de Abatimento
|
117
|
+
# 05 = Cancelamento de Abatimento
|
118
|
+
# 06 = Alteração de Vencimento
|
119
|
+
# 07 = Concessão de Desconto
|
120
|
+
# 08 = Cancelamento de Desconto
|
121
|
+
# 09 = Pedido de protesto (Protestar)
|
122
|
+
# 10 = Sustar Protesto e Baixar Título
|
123
|
+
# 11 = Sustar Protesto e Manter em Carteira
|
124
|
+
# 12 = Alteração de Juros de Mora
|
125
|
+
# 13 = Dispensar Cobrança de Juros de Mora
|
126
|
+
# 14 = Alteração de Valor/Percentual de Multa
|
127
|
+
# 15 = Dispensar Cobrança de Multa
|
128
|
+
# 16 = Alteração do Valor de Desconto
|
129
|
+
# 17 = Não conceder Desconto
|
130
|
+
# 18 = Alteração do Valor de Abatimento
|
131
|
+
# 19 = Prazo Limite de Recebimento – Alterar
|
132
|
+
# 20 = Prazo Limite de Recebimento – Dispensar
|
133
|
+
# 21 = Alterar número do título dado pelo beneficiario (nosso número)
|
134
|
+
# 22 = Alterar número controle do Participante (seu número / número documento)
|
135
|
+
# 23 = Alterar dados do Pagador
|
136
|
+
# 24 = Alterar dados do Sacador/Avalista
|
137
|
+
# 30 = Recusa da Alegação do Pagador
|
138
|
+
# 31 = Alteração de Outros Dados
|
139
|
+
# 33 = Alteração dos Dados do Rateio de Crédito
|
140
|
+
# 34 = Pedido de Cancelamento dos Dados do Rateio de Crédito
|
141
|
+
# 35 = Pedido de Desagendamento do Débito Automático
|
142
|
+
# 40 = Alteração de Carteira
|
143
|
+
# 41 = Cancelar protesto
|
144
|
+
# 42 = Alteração de Espécie de Título
|
145
|
+
# 43 = Transferência de carteira/modalidade de cobrança
|
146
|
+
# 44 = Alteração de contrato de cobrança
|
147
|
+
# 45 = Negativação Sem Protesto
|
148
|
+
# 46 = Solicitação de Baixa de Título Negativado Sem Protesto
|
149
|
+
# 47 = Alteração do Valor Nominal do Título
|
150
|
+
# 48 = Alteração do Valor Mínimo/ Percentual
|
151
|
+
# 49 = Alteração do Valor Máximo/Percentua
|
152
|
+
|
153
|
+
def get_codigo_movimento_remessa(code, cnab)
|
154
|
+
"#{code}".adjust_size_to(2, '0', :right)
|
155
|
+
send("equivalent_codigo_movimento_remessa_#{cnab}")[code] || '31'
|
156
|
+
end
|
157
|
+
def equivalent_codigo_movimento_remessa_240
|
158
|
+
# Padrão Código para Descrição
|
159
|
+
{# da GEM o Banco
|
160
|
+
'01' => '01' , # Entrada de Títulos
|
161
|
+
'02' => '02' , # Pedido de Baixa
|
162
|
+
'03' => '03' , # Protesto para Fins Falimentares
|
163
|
+
'04' => '04' , # Concessão de Abatimento
|
164
|
+
'05' => '05' , # Cancelamento de Abatimento
|
165
|
+
'06' => '06' , # Alteração de Vencimento
|
166
|
+
'07' => '07' , # Concessão de Desconto
|
167
|
+
'08' => '08' , # Cancelamento de Desconto
|
168
|
+
'09' => '09' , # Pedido de protesto (Protestar)
|
169
|
+
'10' => '10' , # Sustar Protesto e Baixar Título
|
170
|
+
'11' => '11' , # Sustar Protesto e Manter em Carteira
|
171
|
+
'12' => '12' , # Alteração de Juros de Mora
|
172
|
+
'13' => '13' , # Dispensar Cobrança de Juros de Mora
|
173
|
+
'14' => '14' , # Alteração de Valor/Percentual de Multa
|
174
|
+
'15' => '15' , # Dispensar Cobrança de Multa
|
175
|
+
'16' => '16' , # Alteração do Valor de Desconto
|
176
|
+
'17' => '17' , # Não conceder Desconto
|
177
|
+
'18' => '18' , # Alteração do Valor de Abatimento
|
178
|
+
'19' => '19' , # Prazo Limite de Recebimento – Alterar
|
179
|
+
'20' => '20' , # Prazo Limite de Recebimento – Dispensar
|
180
|
+
'21' => '21' , # Alterar número do título dado pelo beneficiario (nosso número)
|
181
|
+
'22' => '22' , # Alterar número controle do Participante (seu número / número documento)
|
182
|
+
'23' => '23' , # Alterar dados do Pagador
|
183
|
+
'24' => '24' , # Alterar dados do Sacador/Avalista
|
184
|
+
'30' => '30' , # Recusa da Alegação do Pagador
|
185
|
+
'31' => '31' , # Alteração de Outros Dados
|
186
|
+
'33' => '33' , # Alteração dos Dados do Rateio de Crédito
|
187
|
+
'34' => '34' , # Pedido de Cancelamento dos Dados do Rateio de Crédito
|
188
|
+
'35' => '35' , # Pedido de Desagendamento do Débito Automático
|
189
|
+
'40' => '40' , # Alteração de Carteira
|
190
|
+
'41' => '41' , # Cancelar protesto
|
191
|
+
'42' => '42' , # Alteração de Espécie de Título
|
192
|
+
'43' => '43' , # Transferência de carteira/modalidade de cobrança
|
193
|
+
'44' => '44' , # Alteração de contrato de cobrança
|
194
|
+
'45' => '45' , # Negativação Sem Protesto
|
195
|
+
'46' => '46' , # Solicitação de Baixa de Título Negativado Sem Protesto
|
196
|
+
'47' => '47' , # Alteração do Valor Nominal do Título
|
197
|
+
'48' => '48' , # Alteração do Valor Mínimo/ Percentual
|
198
|
+
'49' => '49' , # Alteração do Valor Máximo/Percentua
|
199
|
+
}
|
200
|
+
end
|
201
|
+
def equivalent_codigo_movimento_remessa_400
|
202
|
+
# Padrão Código para Descrição
|
203
|
+
{# da GEM o Banco
|
204
|
+
'01' => '01' , # Registro de títulos / Remessa
|
205
|
+
'02' => '02' , # Pedido de Baixa
|
206
|
+
'03' => '03' , # Pedido de Protesto Falimentar
|
207
|
+
'04' => '04' , # Concessão de abatimento
|
208
|
+
'05' => '05' , # Cancelamento de abatimento concedido
|
209
|
+
'06' => '06' , # Alteração de vencimento
|
210
|
+
'09' => '09' , # Pedido de protesto (Protestar)
|
211
|
+
'21' => '07' , # Alterar número do título dado pelo beneficiario (nosso número)
|
212
|
+
'22' => '08' , # Alterar número controle do Participante (seu número / número documento)
|
213
|
+
'31' => '31' , # Alteração de outros dados
|
214
|
+
}
|
215
|
+
end
|
216
|
+
|
217
|
+
########################################################################################
|
218
|
+
############################### CÓDIGO DA CARTEIRA ###################################
|
219
|
+
# Código da Carteira :
|
220
|
+
# Default: 1
|
221
|
+
# Códigos padrões da GEM
|
222
|
+
# 1 = Cobrança Simples
|
223
|
+
# 2 = Cobrança Vinculada
|
224
|
+
# 3 = Cobrança Caucionada
|
225
|
+
# 4 = Cobrança Descontada
|
226
|
+
# 5 = Cobrança Vendor
|
227
|
+
#
|
228
|
+
def get_tipo_cobranca(code, cnab)
|
229
|
+
"#{code}".adjust_size_to(1, '0', :right)
|
230
|
+
send("equivalent_tipo_cobranca_#{cnab}")[code] || code
|
231
|
+
end
|
232
|
+
# Código adotado pela FEBRABAN, para identificar a característica dos títulos
|
233
|
+
# dentro das modalidades de cobrança existentes no banco.
|
234
|
+
def equivalent_tipo_cobranca_240
|
235
|
+
{
|
236
|
+
'1' => '1', # Cobrança Simples
|
237
|
+
'2' => '2', # Cobrança Vinculada
|
238
|
+
'3' => '3', # Cobrança Caucionada
|
239
|
+
'4' => '4', # Cobrança Descontada
|
240
|
+
'5' => '5', # Cobrança Vendor
|
241
|
+
}
|
242
|
+
end
|
243
|
+
def equivalent_tipo_cobranca_400
|
244
|
+
{
|
245
|
+
'1' => '1', # Cobrança Simples
|
246
|
+
'2' => '2', # Cobrança Vinculada
|
247
|
+
'3' => '3', # Cobrança Caucionada
|
248
|
+
'4' => '4', # Cobrança Descontada
|
249
|
+
'5' => '5', # Cobrança Vendor
|
250
|
+
}
|
251
|
+
end
|
252
|
+
|
253
|
+
#######################################################################################
|
254
|
+
##################### CÓDIGO DO TIPO DE IMPRESSÃO DO BLOQUETO ######################
|
255
|
+
# Identificação do Tipo de Impressão :
|
256
|
+
# Default: 2
|
257
|
+
# Códigos padrões da GEM
|
258
|
+
# 1 = Frente do Bloqueto
|
259
|
+
# 2 = Verso do Bloqueto
|
260
|
+
# 3 = Corpo de Instruções da Ficha de Compensação do Bloqueto
|
261
|
+
#
|
262
|
+
def get_tipo_impressao(code, cnab)
|
263
|
+
"#{code}".adjust_size_to(1, '0', :right)
|
264
|
+
send("equivalent_tipo_impressao_#{cnab}")[code] || code
|
265
|
+
end
|
266
|
+
# Código adotado pela FEBRABAN para identificar o responsável e a forma de emissão do Boleto de Pagamento.
|
267
|
+
# Os códigos '4' e '5' só serão aceitos para código de movimento para remessa '31'
|
268
|
+
def equivalent_tipo_impressao_240
|
269
|
+
{
|
270
|
+
'1' => '1', # Frente do Bloqueto
|
271
|
+
'2' => '2', # Verso do Bloqueto
|
272
|
+
'3' => '3', # Corpo de Instruções da Ficha de Compensação do Bloqueto
|
273
|
+
}
|
274
|
+
end
|
275
|
+
def equivalent_tipo_impressao_400
|
276
|
+
{
|
277
|
+
'1' => '1', # Frente do Bloqueto
|
278
|
+
'2' => '2', # Verso do Bloqueto
|
279
|
+
'3' => '3', # Corpo de Instruções da Ficha de Compensação do Bloqueto
|
280
|
+
}
|
281
|
+
end
|
282
|
+
|
283
|
+
#######################################################################################
|
284
|
+
##################### CÓDIGO DA IDENTIFICAÇÃO EMISSÃO DO BOLETO #####################
|
285
|
+
# Identificação da Emissão do Boleto de Pagamento :
|
286
|
+
# Default: 2
|
287
|
+
# Códigos padrões da GEM
|
288
|
+
# 1 = Banco Emite
|
289
|
+
# 2 = Cliente Emite
|
290
|
+
# 3 = Banco Pré-emite e Cliente Complementa
|
291
|
+
# 4 = Banco Reemite
|
292
|
+
# 5 = Banco Não Reemite
|
293
|
+
# 7 = Banco Emitente - Aberta
|
294
|
+
# 8 = Banco Emitente - Auto-envelopável
|
295
|
+
#
|
296
|
+
def get_identificacao_emissao(code, cnab)
|
297
|
+
"#{code}".adjust_size_to(1, '0', :right)
|
298
|
+
send("equivalent_identificacao_emissao_#{cnab}")[code] || code
|
299
|
+
end
|
300
|
+
# Código adotado pela FEBRABAN para identificar o responsável e a forma de emissão do Boleto de Pagamento.
|
301
|
+
# Os códigos '4' e '5' só serão aceitos para código de movimento para remessa '31'
|
302
|
+
def equivalent_identificacao_emissao_240
|
303
|
+
{
|
304
|
+
'1' => '1', # Banco Emite
|
305
|
+
'2' => '2', # Cliente Emite
|
306
|
+
'3' => '3', # Banco Pré-emite e Cliente Complementa
|
307
|
+
'4' => '4', # Banco Reemite
|
308
|
+
'5' => '5', # Banco Não Reemite
|
309
|
+
'7' => '7', # Banco Emitente - Aberta
|
310
|
+
'8' => '8', # Banco Emitente - Auto-envelopável
|
311
|
+
}
|
312
|
+
end
|
313
|
+
def equivalent_identificacao_emissao_400
|
314
|
+
{
|
315
|
+
'1' => '1', # Banco Emite
|
316
|
+
'2' => '2', # Cliente Emite
|
317
|
+
'3' => '3', # Banco Pré-emite e Cliente Complementa
|
318
|
+
'4' => '4', # Banco Reemite
|
319
|
+
'5' => '5', # Banco Não Reemite
|
320
|
+
'7' => '7', # Banco Emitente - Aberta
|
321
|
+
'8' => '8', # Banco Emitente - Auto-envelopável
|
322
|
+
}
|
323
|
+
end
|
324
|
+
|
325
|
+
########################################################################################
|
326
|
+
##################### CÓDIGO IDENTIFICAÇÃO DA DISTRIBUIÇÃO ###########################
|
327
|
+
# Identificação da Distribuição :
|
328
|
+
# Default: 2
|
329
|
+
# Códigos padrões da GEM
|
330
|
+
# 1 = Banco Distribui
|
331
|
+
# 2 = Cliente Distribui
|
332
|
+
# 3 = Banco envia e-mail
|
333
|
+
# 4 = Banco envia SMS
|
334
|
+
#
|
335
|
+
def get_distribuicao_boleto(code)
|
336
|
+
"#{code}".rjust(1, '0')
|
337
|
+
equivalent_distribuicao_boleto[code] || code
|
338
|
+
end
|
339
|
+
# Código adotado pela FEBRABAN para identificar o responsável pela distribuição do bloqueto.
|
340
|
+
def equivalent_distribuicao_boleto
|
341
|
+
{
|
342
|
+
'1' => '1', # Banco Distribui
|
343
|
+
'2' => '2', # Cliente Distribui
|
344
|
+
'3' => '3', # Banco envia e-mail
|
345
|
+
'4' => '4', # Banco envia SMS
|
346
|
+
}
|
347
|
+
end
|
348
|
+
|
349
|
+
########################################################################################
|
350
|
+
################################## CÓDIGO JUROS ######################################
|
351
|
+
# Código dos Juros de Mora :
|
352
|
+
# O cálculo de juros para cada código funciona da seguinte maneira:
|
353
|
+
# Valor do boleto = R$ 100,00
|
354
|
+
# Vencimento = dia 10
|
355
|
+
# 1 - Valor por Dia
|
356
|
+
# juros = R$ 1,00
|
357
|
+
# Valor no dia 10 = R$ 100,00 (Sem juros)
|
358
|
+
# Valor no dia 11 = R$ 101,00 (Juros de R$ 1,00)
|
359
|
+
# Valor no dia 12 = R$ 102,00 (Juros de R$ 2,00)
|
360
|
+
# 2 = Taxa Mensal
|
361
|
+
# juros = 5,00 %
|
362
|
+
# calculo juros/dia = (R$ 100,00*5%) / 30 dias(1 mês)
|
363
|
+
# juros ao dia = R$ 5,00
|
364
|
+
# Valor no dia 10 = R$ 100,00 (Sem juros)
|
365
|
+
# Valor no dia 11 = R$ 105,00 (Juros de R$ 5,00)
|
366
|
+
# Valor no dia 12 = R$ 110,00 (Juros de R$ 10,00)
|
367
|
+
#
|
368
|
+
# Default: 3
|
369
|
+
# Códigos padrões da GEM
|
370
|
+
# 1 = Valor por Dia (R$/dia)
|
371
|
+
# 2 = Taxa Mensal (%/mês)
|
372
|
+
# 3 = Isento
|
373
|
+
#
|
374
|
+
def get_codigo_juros(code)
|
375
|
+
"#{code}".adjust_size_to(1, '0', :right)
|
376
|
+
equivalent_codigo_juros[code] || default_codigo_juros
|
377
|
+
end
|
378
|
+
# Código adotado pela FEBRABAN para identificação do tipo de pagamento de juros de mora.
|
379
|
+
def equivalent_codigo_juros
|
380
|
+
{
|
381
|
+
'1' => '1', # Valor por Dia
|
382
|
+
'2' => '2', # Taxa Mensal
|
383
|
+
'3' => '3', # Isento
|
384
|
+
}
|
385
|
+
end
|
386
|
+
def default_codigo_juros
|
387
|
+
'3'
|
388
|
+
end
|
389
|
+
|
390
|
+
########################################################################################
|
391
|
+
################################## CÓDIGO MULTA ######################################
|
392
|
+
# Código de Multa :
|
393
|
+
# Default: 3
|
394
|
+
# Códigos padrões da GEM
|
395
|
+
# 1 = Valor fixo
|
396
|
+
# 2 = Percentual
|
397
|
+
# 3 = Isento
|
398
|
+
#
|
399
|
+
def get_codigo_multa(code)
|
400
|
+
"#{code}".adjust_size_to(1, '0', :right)
|
401
|
+
equivalent_codigo_multa[code] || default_codigo_multa
|
402
|
+
end
|
403
|
+
# Código adotado pela FEBRABAN para identificação do tipo de pagamento de multa.
|
404
|
+
def equivalent_codigo_multa
|
405
|
+
{
|
406
|
+
'1' => '1', # Valor fixo
|
407
|
+
'2' => '2', # Percentual
|
408
|
+
'3' => '3', # Isento
|
409
|
+
}
|
410
|
+
end
|
411
|
+
def default_codigo_multa
|
412
|
+
'3'
|
413
|
+
end
|
414
|
+
|
415
|
+
########################################################################################
|
416
|
+
################################ CÓDIGO DESCONTO #####################################
|
417
|
+
# Código do Desconto 1 / 2 / 3 :
|
418
|
+
# Default: 0
|
419
|
+
# Códigos padrões da GEM
|
420
|
+
# 0 = Sem Desconto
|
421
|
+
# 1 = Valor Fixo Até a Data Informada
|
422
|
+
# 2 = Percentual Até a Data Informada
|
423
|
+
# 3 = Valor por Antecipação Dia Corrido
|
424
|
+
# 4 = Valor por Antecipação Dia Úti
|
425
|
+
# 5 = Percentual Sobre o Valor Nominal Dia Corrido
|
426
|
+
# 6 = Percentual Sobre o Valor Nominal Dia Útil
|
427
|
+
# 7 = Cancelamento de Desconto
|
428
|
+
#
|
429
|
+
def get_codigo_desconto(code)
|
430
|
+
"#{code}".adjust_size_to(1, '0', :right)
|
431
|
+
equivalent_codigo_desconto[code] || code
|
432
|
+
end
|
433
|
+
# Código adotado pela FEBRABAN para identificação do tipo de desconto que deverá ser concedido.
|
434
|
+
def equivalent_codigo_desconto
|
435
|
+
{
|
436
|
+
'0' => '0', # Sem Desconto
|
437
|
+
'1' => '1', # Valor Fixo Até a Data Informada
|
438
|
+
'2' => '2', # Percentual Até a Data Informada
|
439
|
+
'3' => '3', # Valor por Antecipação Dia Corrido
|
440
|
+
'4' => '4', # Valor por Antecipação Dia Úti
|
441
|
+
'5' => '5', # Percentual Sobre o Valor Nominal Dia Corrido
|
442
|
+
'6' => '6', # Percentual Sobre o Valor Nominal Dia Útil
|
443
|
+
'7' => '7', # Cancelamento de Desconto
|
444
|
+
}
|
445
|
+
end
|
446
|
+
|
447
|
+
########################################################################################
|
448
|
+
################################# CÓDIGO PROTESTO ####################################
|
449
|
+
# Código para Protesto :
|
450
|
+
# Default: 1
|
451
|
+
# Códigos padrões da GEM
|
452
|
+
# 1 = Protestar Dias Corridos
|
453
|
+
# 2 = Protestar Dias Úteis
|
454
|
+
# 3 = Não Protesta
|
455
|
+
# 4 = Protestar Fim Falimentar - Dias Úteis
|
456
|
+
# 5 = Protestar Fim Falimentar - Dias Corridos
|
457
|
+
# 8 = Negativação sem Protesto
|
458
|
+
# 9 = Cancelamento Protesto Automático
|
459
|
+
#
|
460
|
+
def get_codigo_protesto(code)
|
461
|
+
"#{code}".adjust_size_to(1, '0', :right)
|
462
|
+
equivalent_codigo_protesto[code] || code
|
463
|
+
end
|
464
|
+
# Código adotado pela FEBRABAN para identificar o tipo de prazo a ser considerado para o protesto.
|
465
|
+
# O código '9' só sera aceito para código de movimento para remessa '31'
|
466
|
+
def equivalent_codigo_protesto
|
467
|
+
{
|
468
|
+
'1' => '1', # Protestar Dias Corridos
|
469
|
+
'2' => '2', # Protestar Dias Úteis
|
470
|
+
'3' => '3', # Não Protesta
|
471
|
+
'4' => '4', # Protestar Fim Falimentar - Dias Úteis
|
472
|
+
'5' => '5', # Protestar Fim Falimentar - Dias Corridos
|
473
|
+
'8' => '8', # Negativação sem Protesto
|
474
|
+
'9' => '9', # Cancelamento Protesto Automático
|
475
|
+
}
|
476
|
+
end
|
477
|
+
|
478
|
+
########################################################################################
|
479
|
+
#################################### CÓDIGO MOEDA ####################################
|
480
|
+
# Código da Moeda :
|
481
|
+
# Default: 09
|
482
|
+
# Códigos padrões da GEM
|
483
|
+
# 01 = Reservado para Uso Futuro
|
484
|
+
# 02 = Dólar Americano Comercial (Venda)
|
485
|
+
# 03 = Dólar Americano Turismo (Venda)
|
486
|
+
# 04 = ITRD
|
487
|
+
# 05 = IDTR
|
488
|
+
# 06 = UFIR Diária
|
489
|
+
# 07 = UFIR Mensal
|
490
|
+
# 08 = FAJ - TR
|
491
|
+
# 09 = Real
|
492
|
+
# 10 = TR
|
493
|
+
# 11 = IGPM
|
494
|
+
# 12 = CDI
|
495
|
+
# 13 = Percentual do CDI
|
496
|
+
# 14 = Euro
|
497
|
+
#
|
498
|
+
def get_codigo_moeda(code, cnab)
|
499
|
+
"#{code}".adjust_size_to(2, '0', :right)
|
500
|
+
send("equivalent_codigo_moeda_#{cnab}")[code] || code
|
501
|
+
end
|
502
|
+
# Código adotado pela FEBRABAN para identificar a moeda referenciada no Título
|
503
|
+
def equivalent_codigo_moeda_240
|
504
|
+
{
|
505
|
+
'01' => '01', # Reservado para Uso Futuro
|
506
|
+
'02' => '02', # Dólar Americano Comercial (Venda)
|
507
|
+
'03' => '03', # Dólar Americano Turismo (Venda)
|
508
|
+
'04' => '04', # ITRD
|
509
|
+
'05' => '05', # IDTR
|
510
|
+
'06' => '06', # UFIR Diária
|
511
|
+
'07' => '07', # UFIR Mensal
|
512
|
+
'08' => '08', # FAJ - TR
|
513
|
+
'09' => '09', # Real
|
514
|
+
'10' => '10', # TR
|
515
|
+
'11' => '11', # IGPM
|
516
|
+
'12' => '12', # CDI
|
517
|
+
'13' => '13', # Percentual do CDI
|
518
|
+
'14' => '14', # Euro
|
519
|
+
}
|
520
|
+
end
|
521
|
+
def equivalent_codigo_moeda_400
|
522
|
+
{
|
523
|
+
'01' => '01', # Reservado para Uso Futuro
|
524
|
+
'02' => '02', # Dólar Americano Comercial (Venda)
|
525
|
+
'03' => '03', # Dólar Americano Turismo (Venda)
|
526
|
+
'04' => '04', # ITRD
|
527
|
+
'05' => '05', # IDTR
|
528
|
+
'06' => '06', # UFIR Diária
|
529
|
+
'07' => '07', # UFIR Mensal
|
530
|
+
'08' => '08', # FAJ - TR
|
531
|
+
'09' => '09', # Real
|
532
|
+
'10' => '10', # TR
|
533
|
+
'11' => '11', # IGPM
|
534
|
+
'12' => '12', # CDI
|
535
|
+
'13' => '13', # Percentual do CDI
|
536
|
+
'14' => '14', # Euro
|
537
|
+
}
|
538
|
+
end
|
4
539
|
|
5
|
-
# "Espécie do Título :
|
6
|
-
def get_especie_titulo(code)
|
7
|
-
"#{code}".adjust_size_to(2, '0', :right)
|
8
|
-
equivalent_especie_titulo[code] || '99'
|
9
|
-
end
|
10
|
-
def equivalent_especie_titulo
|
11
|
-
{
|
12
|
-
'01' => '01', # Duplicata Mercantil
|
13
|
-
'02' => '02', # Nota Promissória
|
14
|
-
'03' => '03', # Nota de Seguro
|
15
|
-
'05' => '05', # Recibo
|
16
|
-
'06' => '06', # Duplicata Rural
|
17
|
-
'08' => '08', # Letra de Câmbio
|
18
|
-
'09' => '09', # Warrant
|
19
|
-
'10' => '10', # Cheque
|
20
|
-
'12' => '12', # Duplicata de Serviço
|
21
|
-
'13' => '13', # Nota de Débito
|
22
|
-
'14' => '14', # Triplicata Mercantil
|
23
|
-
'15' => '15', # Triplicata de Serviço
|
24
|
-
'18' => '18', # Fatura
|
25
|
-
'20' => '20', # Apólice de Seguro
|
26
|
-
'21' => '21', # Mensalidade Escolar
|
27
|
-
'22' => '22', # Parcela de Consórcio
|
28
|
-
'99' => '99', # Outros"
|
29
|
-
}
|
30
|
-
end
|
31
540
|
end
|
32
541
|
end
|
33
542
|
end
|
data/lib/br_boleto/pagador.rb
CHANGED
@@ -11,10 +11,14 @@ module BrBoleto
|
|
11
11
|
|
12
12
|
attr_accessor :nome_avalista
|
13
13
|
attr_accessor :documento_avalista
|
14
|
+
attr_accessor :endereco_avalista
|
14
15
|
|
15
16
|
###################### CUSTOM VALIDATIONS #################
|
16
17
|
attr_accessor :valid_endereco_required
|
17
18
|
validates :endereco, :bairro, :cep, :cidade, :uf, presence: true, if: :valid_endereco_required
|
19
|
+
|
20
|
+
attr_accessor :valid_avalista_required
|
21
|
+
validates :nome_avalista, :documento_avalista, presence: true, if: :valid_avalista_required
|
18
22
|
###########################################################
|
19
23
|
|
20
24
|
validates :nome, :cpf_cnpj, presence: true
|
@@ -60,6 +60,14 @@ module BrBoleto
|
|
60
60
|
1
|
61
61
|
end
|
62
62
|
|
63
|
+
def usa_segmento_R?
|
64
|
+
true
|
65
|
+
end
|
66
|
+
|
67
|
+
def usa_segmento_S?
|
68
|
+
true
|
69
|
+
end
|
70
|
+
|
63
71
|
validates_each :lotes do |record, attr, value|
|
64
72
|
record.errors.add(attr, :blank) if value.empty?
|
65
73
|
value.each do |lote|
|
@@ -108,12 +116,18 @@ module BrBoleto
|
|
108
116
|
itens_lote << monta_segmento_q(pagamento, nro_lote, sequencial_do_lote)
|
109
117
|
|
110
118
|
# Metodo 'monta_segmento_r' implementado no module -> BrBoleto::Remessa::Cnab240::Helper::SegmentoR
|
111
|
-
|
112
|
-
|
119
|
+
# Segmento R é opcional e não é utilizados por alguns bancos
|
120
|
+
if usa_segmento_R?
|
121
|
+
sequencial_do_lote += 1
|
122
|
+
itens_lote << monta_segmento_r(pagamento, nro_lote, sequencial_do_lote)
|
123
|
+
end
|
113
124
|
|
114
125
|
# Metodo 'monta_segmento_s' implementado no module -> BrBoleto::Remessa::Cnab240::Helper::SegmentoS
|
115
|
-
|
116
|
-
|
126
|
+
# Segmento S é opcional e não é utilizados por alguns bancos
|
127
|
+
if usa_segmento_S?
|
128
|
+
sequencial_do_lote += 1
|
129
|
+
itens_lote << monta_segmento_s(pagamento, nro_lote, sequencial_do_lote)
|
130
|
+
end
|
117
131
|
end
|
118
132
|
|
119
133
|
# total_de_registros_do_lote é a quantidade de registros(linhas) que constam em um lote
|
@@ -150,8 +164,9 @@ module BrBoleto
|
|
150
164
|
# Metodo 'monta_trailer_arquivo' implementado no module -> BrBoleto::Remessa::Cnab240::Helper::TrailerArquivo
|
151
165
|
arquivo << monta_trailer_arquivo(lotes.count, contador)
|
152
166
|
|
153
|
-
retorno = arquivo.join("\n")
|
154
|
-
|
167
|
+
retorno = ActiveSupport::Inflector.transliterate(arquivo.join("\n")).to_ascii.upcase
|
168
|
+
retorno << "\n"
|
169
|
+
retorno.encode(retorno.encoding, :universal_newline => true).encode(retorno.encoding, :crlf_newline => true)
|
155
170
|
end
|
156
171
|
|
157
172
|
# Número do Documento de Cobrança
|