br_boleto 2.0.1 → 2.1.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/.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
|