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.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.travis.yml +1 -1
  4. data/Gemfile.lock +2 -2
  5. data/br_boleto.gemspec +2 -3
  6. data/lib/br_boleto/association/have_conta.rb +27 -25
  7. data/lib/br_boleto/association/have_pagador.rb +2 -0
  8. data/lib/br_boleto/boleto/base.rb +0 -4
  9. data/lib/br_boleto/boleto/bradesco.rb +80 -0
  10. data/lib/br_boleto/boleto/caixa.rb +10 -12
  11. data/lib/br_boleto/boleto/cecred.rb +76 -0
  12. data/lib/br_boleto/boleto/itau.rb +114 -0
  13. data/lib/br_boleto/boleto/sicredi.rb +101 -0
  14. data/lib/br_boleto/boleto/unicred.rb +21 -0
  15. data/lib/br_boleto/conta/base.rb +28 -3
  16. data/lib/br_boleto/conta/bradesco.rb +120 -0
  17. data/lib/br_boleto/conta/caixa.rb +22 -12
  18. data/lib/br_boleto/conta/cecred.rb +67 -0
  19. data/lib/br_boleto/conta/itau.rb +199 -0
  20. data/lib/br_boleto/conta/sicoob.rb +40 -11
  21. data/lib/br_boleto/conta/sicredi.rb +171 -0
  22. data/lib/br_boleto/conta/unicred.rb +38 -0
  23. data/lib/br_boleto/helper/default_codes.rb +535 -26
  24. data/lib/br_boleto/pagador.rb +4 -0
  25. data/lib/br_boleto/remessa/base.rb +2 -0
  26. data/lib/br_boleto/remessa/cnab240/base.rb +21 -6
  27. data/lib/br_boleto/remessa/cnab240/bradesco.rb +141 -0
  28. data/lib/br_boleto/remessa/cnab240/caixa.rb +8 -1
  29. data/lib/br_boleto/remessa/cnab240/cecred.rb +169 -0
  30. data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +29 -21
  31. data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +4 -3
  32. data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +5 -5
  33. data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +4 -3
  34. data/lib/br_boleto/remessa/cnab240/itau.rb +186 -0
  35. data/lib/br_boleto/remessa/cnab240/sicoob.rb +4 -16
  36. data/lib/br_boleto/remessa/cnab240/sicredi.rb +205 -0
  37. data/lib/br_boleto/remessa/cnab240/unicred.rb +40 -0
  38. data/lib/br_boleto/remessa/cnab400/bradesco.rb +235 -0
  39. data/lib/br_boleto/remessa/cnab400/helper/detalhe.rb +6 -5
  40. data/lib/br_boleto/remessa/cnab400/itau.rb +190 -0
  41. data/lib/br_boleto/remessa/cnab400/sicoob.rb +3 -3
  42. data/lib/br_boleto/remessa/cnab400/sicredi.rb +276 -0
  43. data/lib/br_boleto/remessa/cnab400/unicred.rb +62 -0
  44. data/lib/br_boleto/remessa/pagamento.rb +93 -43
  45. data/lib/br_boleto/retorno/cnab240/base.rb +13 -12
  46. data/lib/br_boleto/retorno/cnab240/bradesco.rb +10 -0
  47. data/lib/br_boleto/retorno/cnab240/caixa.rb +2 -3
  48. data/lib/br_boleto/retorno/cnab240/cecred.rb +10 -0
  49. data/lib/br_boleto/retorno/cnab240/itau.rb +24 -0
  50. data/lib/br_boleto/retorno/cnab240/sicredi.rb +10 -0
  51. data/lib/br_boleto/retorno/cnab240/unicred.rb +10 -0
  52. data/lib/br_boleto/retorno/cnab400/bradesco.rb +42 -0
  53. data/lib/br_boleto/retorno/cnab400/itau.rb +43 -0
  54. data/lib/br_boleto/retorno/cnab400/sicoob.rb +2 -2
  55. data/lib/br_boleto/retorno/cnab400/sicredi.rb +43 -0
  56. data/lib/br_boleto/retorno/cnab400/unicred.rb +10 -0
  57. data/lib/br_boleto/retorno/pagamento.rb +18 -4
  58. data/lib/br_boleto/version.rb +2 -2
  59. data/lib/br_boleto.rb +28 -0
  60. data/lib/config/locales/br-boleto-en.yml +1 -0
  61. data/lib/config/locales/br-boleto-pt-BR.yml +1 -0
  62. data/test/br_boleto/association/have_pagador_test.rb +24 -0
  63. data/test/br_boleto/boleto/bradesco_test.rb +125 -0
  64. data/test/br_boleto/boleto/caixa_test.rb +18 -18
  65. data/test/br_boleto/boleto/cecred_test.rb +115 -0
  66. data/test/br_boleto/boleto/itau_test.rb +160 -0
  67. data/test/br_boleto/boleto/sicredi_test.rb +136 -0
  68. data/test/br_boleto/boleto/unicred_test.rb +128 -0
  69. data/test/br_boleto/conta/base_test.rb +298 -3
  70. data/test/br_boleto/conta/bradesco_test.rb +142 -0
  71. data/test/br_boleto/conta/caixa_test.rb +7 -6
  72. data/test/br_boleto/conta/cecred_test.rb +119 -0
  73. data/test/br_boleto/conta/itau_test.rb +189 -0
  74. data/test/br_boleto/conta/sicoob_test.rb +32 -2
  75. data/test/br_boleto/conta/sicredi_test.rb +180 -0
  76. data/test/br_boleto/conta/unicred_test.rb +154 -0
  77. data/test/br_boleto/pagador_test.rb +22 -2
  78. data/test/br_boleto/remessa/cnab240/base_test.rb +24 -12
  79. data/test/br_boleto/remessa/cnab240/bradesco_test.rb +196 -0
  80. data/test/br_boleto/remessa/cnab240/caixa_test.rb +51 -0
  81. data/test/br_boleto/remessa/cnab240/cecred_test.rb +242 -0
  82. data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +78 -71
  83. data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +4 -3
  84. data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +10 -18
  85. data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +6 -5
  86. data/test/br_boleto/remessa/cnab240/itau_test.rb +201 -0
  87. data/test/br_boleto/remessa/cnab240/sicoob_test.rb +1 -58
  88. data/test/br_boleto/remessa/cnab240/sicredi_test.rb +207 -0
  89. data/test/br_boleto/remessa/cnab240/unicred_test.rb +250 -0
  90. data/test/br_boleto/remessa/cnab400/base_test.rb +4 -4
  91. data/test/br_boleto/remessa/cnab400/bradesco_test.rb +164 -0
  92. data/test/br_boleto/remessa/cnab400/itau_test.rb +173 -0
  93. data/test/br_boleto/remessa/cnab400/sicoob_test.rb +2 -2
  94. data/test/br_boleto/remessa/cnab400/sicredi_test.rb +241 -0
  95. data/test/br_boleto/remessa/cnab400/unicred_test.rb +169 -0
  96. data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
  97. data/test/br_boleto/retorno/cnab240/bradesco_test.rb +228 -0
  98. data/test/br_boleto/retorno/cnab240/caixa_test.rb +20 -10
  99. data/test/br_boleto/retorno/cnab240/cecred_test.rb +228 -0
  100. data/test/br_boleto/retorno/cnab240/itau_test.rb +228 -0
  101. data/test/br_boleto/retorno/cnab240/sicoob_test.rb +20 -10
  102. data/test/br_boleto/retorno/cnab240/sicredi_test.rb +228 -0
  103. data/test/br_boleto/retorno/cnab240/unicred_test.rb +228 -0
  104. data/test/br_boleto/retorno/cnab400/bradesco_test.rb +255 -0
  105. data/test/br_boleto/retorno/cnab400/itau_test.rb +96 -0
  106. data/test/br_boleto/retorno/cnab400/sicoob_test.rb +10 -5
  107. data/test/br_boleto/retorno/cnab400/sicredi_test.rb +7 -0
  108. data/test/br_boleto/retorno/cnab400/unicred.rb +255 -0
  109. data/test/br_boleto/retorno/pagamento_test.rb +7 -0
  110. data/test/factories/boleto/boleto_bradesco.rb +18 -0
  111. data/test/factories/boleto/boleto_cecred.rb +18 -0
  112. data/test/factories/boleto/boleto_itau.rb +18 -0
  113. data/test/factories/boleto/boleto_sicredi.rb +18 -0
  114. data/test/factories/boleto/boleto_unicred.rb +18 -0
  115. data/test/factories/conta/bradesco.rb +16 -0
  116. data/test/factories/conta/caixa.rb +2 -1
  117. data/test/factories/conta/cecred.rb +15 -0
  118. data/test/factories/conta/itau.rb +15 -0
  119. data/test/factories/conta/sicoob.rb +2 -1
  120. data/test/factories/conta/sicredi.rb +15 -0
  121. data/test/factories/conta/unicred.rb +15 -0
  122. data/test/factories/remessa/cnab240/bradesco.rb +9 -0
  123. data/test/factories/remessa/cnab240/cecred.rb +9 -0
  124. data/test/factories/remessa/cnab240/itau.rb +9 -0
  125. data/test/factories/remessa/cnab240/sicredi.rb +9 -0
  126. data/test/factories/remessa/cnab240/unicred.rb +9 -0
  127. data/test/factories/remessa/cnab400/bradesco.rb +8 -0
  128. data/test/factories/remessa/cnab400/itau.rb +8 -0
  129. data/test/factories/remessa/cnab400/sicredi.rb +8 -0
  130. data/test/factories/remessa/cnab400/unicred.rb +8 -0
  131. data/test/fixtures/remessa/cnab240/caixa.rem +8 -0
  132. data/test/fixtures/remessa/cnab240/cecred.rem +8 -0
  133. data/test/fixtures/remessa/cnab240/sicoob.rem +8 -8
  134. data/test/fixtures/remessa/cnab240/unicred.rem +7 -0
  135. data/test/fixtures/retorno/cnab400/bradesco.ret +8 -0
  136. data/test/fixtures/retorno/cnab400/itau.ret +54 -0
  137. metadata +138 -3
@@ -0,0 +1,171 @@
1
+ # encoding: utf-8
2
+ module BrBoleto
3
+ module Conta
4
+ class Sicredi < BrBoleto::Conta::Base
5
+
6
+ # MODALIDADE CARTEIRA:
7
+ # _______________________________________________
8
+ # | Carteira | Descrição |
9
+ # | 1 | Cobrança Simples Com registro |
10
+ # | 3 | Cobrança SimplesSem registro |
11
+ # ------------------------------------------------
12
+
13
+ # Código do posto da cooperativa de crédito
14
+ attr_accessor :posto
15
+
16
+ # Byte de identificação do cedente do bloqueto utilizado para compor o nosso número.
17
+ # Valores aceitos de 2 a 9, somente será "1" se forem boletos pré-impressos.
18
+ attr_accessor :byte_id
19
+
20
+ ############################### VALIDAÇÕES DINÂMICAS ###############################
21
+ attr_accessor :valid_byte_id_length
22
+ attr_accessor :valid_byte_id_required
23
+ attr_accessor :valid_byte_id_inclusion
24
+ attr_accessor :valid_posto_maximum
25
+ attr_accessor :valid_posto_required
26
+ #####################################################################################
27
+
28
+ # Byte de identificação
29
+ validates :byte_id, custom_length: {is: :valid_byte_id_length}, if: :valid_byte_id_length
30
+ validates :byte_id, custom_inclusion: {in: :valid_byte_id_inclusion}, if: :valid_byte_id_inclusion
31
+ validates :byte_id, presence: true, if: :valid_byte_id_required
32
+
33
+ # Posto
34
+ validates :posto, custom_length: {maximum: :valid_posto_maximum}, if: :valid_posto_maximum
35
+ validates :posto, presence: true, if: :valid_posto_required
36
+
37
+
38
+ def default_values
39
+ super.merge({
40
+ carteira: '1',
41
+ valid_carteira_required: true, # <- Validação dinâmica que a modalidade é obrigatória
42
+ valid_carteira_length: 1, # <- Validação dinâmica que a modalidade deve ter 1 digito
43
+ valid_carteira_inclusion: %w[1 3], # <- Validação dinâmica de valores aceitos para a modalidade
44
+ valid_conta_corrente_required: true, # <- Validação dinâmica que a conta_corrente é obrigatória
45
+ valid_conta_corrente_maximum: 5, # <- Validação que a conta_corrente deve ter no máximo 5 digitos
46
+ valid_convenio_required: true, # <- Validação que a convenio deve ter obrigatório
47
+ valid_convenio_maximum: 5, # <- Validação que a convenio deve ter no máximo 5 digitos
48
+ codigo_carteira: '1', # Cobrança Simples
49
+ valid_codigo_carteira_length: 1, # <- Validação dinâmica que a modalidade deve ter 1 digito
50
+ posto: '0',
51
+ valid_posto_maximum: 2, # <- Validação que a posto deve ter no máximo 2 digitos
52
+ valid_posto_required: true, # <- Validação que a posto deve ter obrigatório
53
+ byte_id: '2',
54
+ valid_byte_id_length: 1, # <- Validação dinâmica que o byte identificador deve ter 1 digito
55
+ valid_byte_id_required: true, # <- Validação que a byte_id deve ter obrigatório
56
+ valid_byte_id_inclusion: %w[2 3 4 5 6 7 8 9], # <- Validação dinâmica de valores aceitos para o byte identificador
57
+ })
58
+ end
59
+
60
+ def codigo_banco
61
+ '748'
62
+ end
63
+
64
+ # Dígito do código do banco descrito na documentação
65
+ def codigo_banco_dv
66
+ 'X'
67
+ end
68
+
69
+ def nome_banco
70
+ @nome_banco ||= 'SICREDI'
71
+ end
72
+
73
+ def versao_layout_arquivo_cnab_240
74
+ '081'
75
+ end
76
+
77
+ def versao_layout_lote_cnab_240
78
+ '040'
79
+ end
80
+
81
+ def posto
82
+ "#{@posto}".rjust(2, '0') if @posto.present?
83
+ end
84
+
85
+ def byte_id
86
+ "#{@byte_id}".rjust(1, '2') if @byte_id.present?
87
+ end
88
+
89
+ def agencia_dv
90
+ @agencia_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9.new(agencia).to_s
91
+ end
92
+
93
+ # Campo Agência / Código do Cedente
94
+ # @return [String] Agência com 4 caracteres . Posto do beneficiário com 2 caracteres . Código do beneficiário com 5 caracteres
95
+ # Exemplo: AAAA.PP.CCCCC
96
+ def agencia_codigo_cedente
97
+ "#{agencia}.#{posto}.#{codigo_cedente}"
98
+ end
99
+
100
+ # Espécie do Título CNAB 240
101
+ def equivalent_especie_titulo_240
102
+ super.merge(
103
+ # Padrão Código para
104
+ {# da GEM o Banco
105
+ '01' => '03', # Duplicata Mercantil por Indicação (DMI)
106
+ '02' => '03' # Duplicata Mercantil por Indicação (DMI)
107
+ })
108
+ end
109
+
110
+ # Espécie do Título CNAB 400
111
+ def equivalent_especie_titulo_400
112
+ super.merge(
113
+ # Padrão Código para
114
+ {# da GEM o Banco
115
+ '01' => 'A',
116
+ '02' => 'A',
117
+ '03' => 'A', # Duplicata Mercantil por Indicação (DMI)
118
+ '06' => 'B', # Duplicata Rural (DR)
119
+ '12' => 'C', # Nota Promissória (NP)
120
+ '13' => 'D', # Nota Promissória Rural (NR)
121
+ '16' => 'E', # Nota de Seguros (NS)
122
+ '17' => 'G', # Recibo (RC)
123
+ '07' => 'H', # Letra de Câmbio (LC)
124
+ '19' => 'I', # Nota de Débito (ND)
125
+ '05' => 'J', # Duplicata de Serviço por Indicação (DSI)
126
+ '99' => 'K', # Outros (OS)
127
+ '32' => 'O' # Boleto de Proposta (BDP)
128
+ })
129
+ end
130
+
131
+ # Código da Carteira
132
+ def equivalent_tipo_cobranca_400
133
+ super.merge({ '1' => 'A' }) # Cobrança Simples
134
+ end
135
+
136
+ # Identificação do Tipo de Impressão :
137
+ def equivalent_tipo_impressao_400
138
+ super.merge({ '1' => 'A' }) # Frente do Bloqueto
139
+ end
140
+
141
+ # Código da Moeda :
142
+ def equivalent_codigo_moeda_400
143
+ super.merge({ '09' => 'A' }) # Real
144
+ end
145
+
146
+ # Identificação da Emissão do Boleto de Pagamento
147
+ def equivalent_identificacao_emissao_400
148
+ super.merge(
149
+ # Padrão Código para
150
+ {# da GEM o Banco
151
+ '1' => 'A', # Impressão é feita pelo Sicredi
152
+ '2' => 'B', # Impressão é feita pelo Beneficiário
153
+ })
154
+ end
155
+
156
+ # Código adotado pelo SICREDI para identificação do tipo de desconto que deverá ser concedido.
157
+ def equivalent_codigo_desconto
158
+ {
159
+ '0' => '1', # Valor Fixo Até a Data Informada
160
+ '1' => '1', # Valor Fixo Até a Data Informada
161
+ '2' => '2', # Percentual Até a Data Informada
162
+ '3' => '3', # Valor por Antecipação Dia Corrido
163
+ '4' => '3', # Valor por Antecipação Dia Úti
164
+ '5' => '2', # Percentual Sobre o Valor Nominal Dia Corrido
165
+ '6' => '2', # Percentual Sobre o Valor Nominal Dia Útil
166
+ '7' => '7', # Cancelamento de Desconto
167
+ }
168
+ end
169
+ end
170
+ end
171
+ end
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+ module BrBoleto
3
+ module Conta
4
+
5
+ # A Unicred (através do CobExpress) utiliza e o layout de boleto os arquivos de remessa/retorno disponibilizados pelo Banco Bradesco.
6
+ class Unicred < BrBoleto::Conta::Bradesco
7
+
8
+ def default_values
9
+ super.merge({
10
+ carteira: '09',
11
+ })
12
+ end
13
+
14
+ def versao_layout_arquivo_cnab_240
15
+ '082'
16
+ end
17
+
18
+ def versao_layout_lote_cnab_240
19
+ '041'
20
+ end
21
+
22
+ # Código adotado pelo UNICRED para identificar o tipo de prazo a ser considerado para o protesto.
23
+ # Segundo documentação, é permitido somente os códigos '1' = Protestar dias corridos e '3' = Não protestar
24
+ def equivalent_codigo_protesto
25
+ {
26
+ '1' => '1', # Protestar Dias Corridos
27
+ '2' => '1', # Protestar Dias Úteis
28
+ '3' => '3', # Não Protesta
29
+ '4' => '1', # Protestar Fim Falimentar - Dias Úteis
30
+ '5' => '1', # Protestar Fim Falimentar - Dias Corridos
31
+ '8' => '3', # Negativação sem Protesto
32
+ '9' => '3', # Cancelamento Protesto Automático
33
+ }
34
+ end
35
+
36
+ end
37
+ end
38
+ end