Class: Brcobranca::Remessa::Cnab400::Unicred
- Defined in:
- lib/brcobranca/remessa/cnab400/unicred.rb
Instance Attribute Summary collapse
-
#codigo_beneficiario ⇒ Object
codigo da beneficiario (informado pelo Unicred no cadastramento).
Attributes inherited from Base
#aceite, #agencia, #carteira, #conta_corrente, #documento_cedente, #empresa_mae, #pagamentos, #sequencial_remessa
Instance Method Summary collapse
- #agencia=(valor) ⇒ Object
- #carteira=(valor) ⇒ Object
- #cod_banco ⇒ Object
-
#complemento ⇒ String
Complemento do header.
- #conta_corrente=(valor) ⇒ Object
- #digito_agencia ⇒ Object
- #digito_conta ⇒ Object
-
#formata_nosso_numero(nosso_numero) ⇒ String
Retorna o nosso numero.
- #identificador_complemento ⇒ Object
- #info_conta ⇒ Object
-
#initialize(campos = {}) ⇒ Unicred
constructor
Nova instancia do Unicred.
- #mapeamento_para_modulo_11 ⇒ Object
-
#monta_detalhe(pagamento, sequencial) ⇒ String
Detalhe do arquivo.
-
#monta_header ⇒ String
Header do arquivo remessa.
- #nome_banco ⇒ Object
-
#nosso_numero(nosso_numero) ⇒ String
Numero sequencial utilizado para identificar o boleto.
- #nosso_numero_boleto(nosso_numero) ⇒ Object
-
#nosso_numero_dv(nosso_numero) ⇒ Integer
Digito verificador do nosso numero.
- #sequencial_remessa=(valor) ⇒ Object
Methods inherited from Base
#data_geracao, #gera_arquivo, #monta_trailer
Methods inherited from Base
#quantidade_titulos_cobranca, #totaliza_valor_titulos, #valor_titulos_carteira
Methods included from Validations
#errors, included, #invalid?, #valid?
Constructor Details
#initialize(campos = {}) ⇒ Unicred
Nova instancia do Unicred
29 30 31 32 33 34 35 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 29 def initialize(campos = {}) campos = { aceite: 'N' }.merge!(campos) super(campos) end |
Instance Attribute Details
#codigo_beneficiario ⇒ Object
codigo da beneficiario (informado pelo Unicred no cadastramento)
8 9 10 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 8 def codigo_beneficiario @codigo_beneficiario end |
Instance Method Details
#agencia=(valor) ⇒ Object
37 38 39 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 37 def agencia=(valor) @agencia = valor.to_s.rjust(4, '0') if valor end |
#carteira=(valor) ⇒ Object
45 46 47 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 45 def carteira=(valor) @carteira = valor.to_s.rjust(2, '0') if valor end |
#cod_banco ⇒ Object
49 50 51 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 49 def cod_banco '136' end |
#complemento ⇒ String
Complemento do header
96 97 98 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 96 def complemento 'codigo_beneficiario'.rjust(277, ' ') end |
#conta_corrente=(valor) ⇒ Object
41 42 43 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 41 def conta_corrente=(valor) @conta_corrente = valor.to_s.rjust(5, '0') if valor end |
#digito_agencia ⇒ Object
104 105 106 107 108 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 104 def digito_agencia # utilizando a agencia com 4 digitos # para calcular o digito agencia.modulo11(mapeamento: { 10 => 'X' }).to_s end |
#digito_conta ⇒ Object
110 111 112 113 114 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 110 def digito_conta # utilizando a conta corrente com 5 digitos # para calcular o digito conta_corrente.modulo11(mapeamento: { 10 => '0' }).to_s end |
#formata_nosso_numero(nosso_numero) ⇒ String
Retorna o nosso numero
80 81 82 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 80 def formata_nosso_numero(nosso_numero) nosso_numero_boleto(nosso_numero).to_s end |
#identificador_complemento ⇒ Object
57 58 59 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 57 def identificador_complemento ' ' end |
#info_conta ⇒ Object
88 89 90 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 88 def info_conta codigo_beneficiario end |
#mapeamento_para_modulo_11 ⇒ Object
116 117 118 119 120 121 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 116 def mapeamento_para_modulo_11 { 10 => 0, 11 => 0 } end |
#monta_detalhe(pagamento, sequencial) ⇒ String
Detalhe do arquivo
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 162 def monta_detalhe(pagamento, sequencial) raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid? # identificacao transacao 9[01] detalhe = '1' # Agencia do BENEFICIARIO na UNICRED 9[05] 002 a 006 detalhe += agencia.rjust(5, '0') # Digito da Agencia 9[01] 007 a 007 detalhe << digito_agencia # Conta Corrente 9[12] 008 a 019 detalhe << conta_corrente.rjust(12, '0') # Digito da Conta 9[1] 020 a 020 detalhe << digito_conta # Zero 9[1] 021 a 021 detalhe << '0' # Codigo da Carteira 9[3] 022 a 024 detalhe << carteira.rjust(3, '0') # Zeros 9[13] 025 a 037 detalhe << ''.rjust(13, '0') # No Controle do Participante Uso # da empresa 9[25] 038 a 062 detalhe << ''.rjust(25, ' ') # Codigo do Banco na Camara de Compensacao 9[3] 063 a 065 detalhe << cod_banco # Zeros 9[2] 066 a 067 detalhe << '00' # Branco 9[25] 068 a 092 detalhe << ''.rjust(25, ' ') # Filler 9[01] 093 a 093 detalhe << '0' # Codigo da multa 9[1] 094 a 094 detalhe << pagamento.codigo_multa # Valor/Percentual da Multa 9[1] 095 a 104 detalhe << pagamento.formata_percentual_multa(10) # Tipo de Valor Mora 9[1] 105 a 105 detalhe << pagamento.tipo_mora # Identificacao de Titulo Descontavel 9[1] 106 a 106 detalhe << 'N' # Branco 9[1] 107 a 108 detalhe << ' ' # Identificacao da Ocorrencia 9[2] 109 a 110 detalhe << pagamento.identificacao_ocorrencia # numero do documento X[10] 111 a 120 detalhe << pagamento.numero.to_s.rjust(10, '0') # data do vencimento 9[06] 121 a 126 detalhe << pagamento.data_vencimento.strftime('%d%m%y') # valor do documento 9[13] 127 a 139 detalhe << pagamento.formata_valor # Filler 9[10] 140 a 149 detalhe << ''.rjust(10, '0') # Codigo do Desconto 9[1] 150 a 150 detalhe << pagamento.cod_desconto # data de emissao 9[06] 151 a 156 detalhe << pagamento.data_emissao.strftime('%d%m%y') # Filler 9[01] 157 a 157 detalhe << '0' # Codigo para Protesto 9[1] 158 a 158 detalhe << pagamento.codigo_protesto # numero de dias para protesto 9[02] 159 a 160 detalhe << pagamento.dias_protesto.rjust(2, '0') # valor mora ao dia 9[13] 161 a 173 detalhe << pagamento.formata_valor_mora(13) # data limite para desconto 9[06] 174 a 179 detalhe << pagamento.formata_data_desconto # valor do desconto 9[13] 180 a 192 detalhe << pagamento.formata_valor_desconto # nosso numero X[11] 193 a 203 detalhe << formata_nosso_numero(pagamento.nosso_numero) # Zeros 9[2] 204 a 205 detalhe << '00' # valor do abatimento 9[13] 206 a 218 detalhe << pagamento.formata_valor_abatimento(13) # Identificacao do Tipo de Inscricao do Pagador 9[2] 219 a 220 detalhe << pagamento.identificacao_sacado # documento do pagador 9[14] 221 a 234 detalhe << pagamento.documento_sacado.to_s.rjust(14, '0') # nome do pagador X[40] 235 a 274 detalhe << pagamento.nome_sacado.format_size(40) # endereco do pagador X[40] 275 a 314 detalhe << pagamento.endereco_sacado.format_size(40) # bairro do pagador X[12] 315 a 326 detalhe << pagamento.bairro_sacado.format_size(12) # cep do pagador 9[08] 327 a 334 detalhe << pagamento.cep_sacado # cidade do pagador X[15] 335 a 354 detalhe << pagamento.cidade_sacado.format_size(20) # uf do pagador X[02] 355 a 356 detalhe << pagamento.uf_sacado # nome do sacador/avalista X[38] 357 a 394 detalhe << pagamento.nome_avalista.format_size(38) # numero do registro no arquivo 9[06] 395 a 400 detalhe << sequencial.to_s.rjust(6, '0') detalhe end |
#monta_header ⇒ String
Header do arquivo remessa
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 127 def monta_header # CAMPO TAMANHO VALOR # tipo do registro [1] 0 # operacao [1] 1 # literal remessa [7] REMESSA # Codigo do serviço [2] 01 # cod. servico [15] COBRANCA # info. conta [20] # empresa mae [30] # cod. banco [3] # nome banco [15] # data geracao [6] formato DDMMAA # branco [7] # Codigo da Variacaoo carteira da UNICRED 003 # Preencher com 000. [3] 000 # Numero Sequencial do arquivo [7] # complemento registro [277] # num. sequencial [6] 000001 header = "01REMESSA01COBRANCA #{info_conta}" header += "#{empresa_mae.format_size(30)}#{cod_banco}" header << "#{nome_banco}#{data_geracao} 000" header << "#{sequencial_remessa}#{complemento}000001" header end |
#nome_banco ⇒ Object
53 54 55 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 53 def nome_banco 'UNICRED'.ljust(15, ' ') end |
#nosso_numero(nosso_numero) ⇒ String
Numero sequencial utilizado para identificar o boleto.
63 64 65 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 63 def nosso_numero(nosso_numero) nosso_numero.to_s.rjust(10, '0') end |
#nosso_numero_boleto(nosso_numero) ⇒ Object
73 74 75 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 73 def nosso_numero_boleto(nosso_numero) "#{nosso_numero(nosso_numero)}#{nosso_numero_dv(nosso_numero)}" end |
#nosso_numero_dv(nosso_numero) ⇒ Integer
Digito verificador do nosso numero
69 70 71 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 69 def nosso_numero_dv(nosso_numero) nosso_numero.to_s.modulo11(mapeamento: mapeamento_para_modulo_11) end |
#sequencial_remessa=(valor) ⇒ Object
100 101 102 |
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 100 def sequencial_remessa=(valor) @sequencial_remessa = valor.to_s.rjust(7, '0') if valor end |