-
-
Notifications
You must be signed in to change notification settings - Fork 238
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Atualização do Boleto, Remessa/Retorno CNAB400 do banco UNICRED. #215
Changes from all commits
772e7b2
f28e389
d69b124
15de190
9cbce18
b2d9f0f
2b0ccd5
85a8f87
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,129 +3,104 @@ | |
module Brcobranca | ||
module Boleto | ||
class Unicred < Base # Banco Unicred | ||
# <b>REQUERIDO</b>: Código do posto da cooperativa de crédito | ||
attr_accessor :posto | ||
|
||
# <b>REQUERIDO</b>: Byte de identificação do cedente do bloqueto utilizado para compor o nosso número. | ||
attr_accessor :byte_idt | ||
|
||
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.' | ||
validates_length_of :nosso_numero, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.' | ||
validates_length_of :conta_corrente, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.' | ||
# Carteira | ||
# 1 – Com Registro | ||
# 3 – Sem Registro | ||
# Obs.: O Unicred não validará este campo. | ||
validates_length_of :carteira, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.' | ||
validates_length_of :posto, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.' | ||
validates_length_of :byte_idt, is: 1, message: 'deve ser 1 se o numero foi gerado pela agencia ou 2-9 se foi gerado pelo beneficiário' | ||
validates_length_of :convenio, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.' | ||
validates_length_of :agencia, maximum: 4, message: | ||
"deve ser menor ou igual a 4 dígitos." | ||
validates_length_of :nosso_numero, maximum: 10, message: | ||
"deve ser menor ou igual a 10 dígitos." | ||
# validates_length_of :conta_corrente, maximum: 5, message: | ||
# 'deve ser menor ou igual a 5 dígitos.' | ||
# Carteira com 2(dois) caracteres ( SEMPRE 21 ) | ||
validates_length_of :carteira, maximum: 2, message: | ||
"deve ser menor ou igual a 2 dígitos." | ||
validates_length_of :convenio, maximum: 10, message: | ||
"deve ser menor ou igual a 10 dígitos." | ||
|
||
# Nova instancia do Unicred | ||
# @param (see Brcobranca::Boleto::Base#initialize) | ||
def initialize(campos = {}) | ||
campos = { carteira: '3', | ||
especie_documento: 'DM', | ||
local_pagamento: 'PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS DA UNICRED' | ||
campos = { | ||
carteira: "21", | ||
local_pagamento: "PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS DA UNICRED", | ||
aceite: "N", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Style/TrailingCommaInHashLiteral: Avoid comma after the last item of a hash. |
||
}.merge!(campos) | ||
super(campos) | ||
end | ||
|
||
# Codigo do banco emissor (3 dígitos sempre) | ||
# Codigo do banco emissor 3 digitos sempre | ||
# | ||
# @return [String] 3 caracteres numéricos. | ||
# @return [String] 3 caracteres numericos. | ||
def banco | ||
'748' | ||
end | ||
|
||
# Carteira | ||
# | ||
# @return [String] 2 caracteres numéricos. | ||
def carteira=(valor) | ||
@carteira = valor.to_s.rjust(1, '0') if valor | ||
"136" | ||
end | ||
|
||
# Posto | ||
# | ||
# @return [String] 2 caracteres numéricos. | ||
def posto=(valor) | ||
@posto = valor.to_s.rjust(2, '0') if valor | ||
end | ||
|
||
# Número da conta corrente | ||
# @return [String] 5 caracteres numéricos. | ||
# Numero da conta corrente | ||
# @return [String] 9 caracteres numericos. | ||
def conta_corrente=(valor) | ||
@conta_corrente = valor.to_s.rjust(5, '0') if valor | ||
@conta_corrente = valor.to_s.rjust(9, "0") if valor | ||
end | ||
|
||
# Código Beneficiário | ||
# @return [String] 5 caracteres numéricos. | ||
# Codigo Beneficiario | ||
# @return [String] 5 caracteres numericos. | ||
def convenio=(valor) | ||
@convenio = valor.to_s.rjust(5, '0') if valor | ||
@convenio = valor.to_s.rjust(5, "0") if valor | ||
end | ||
|
||
# Dígito verificador do banco | ||
# Digito verificador do banco | ||
# @return [String] 1 caractere. | ||
def banco_dv | ||
'X' | ||
"8" | ||
end | ||
|
||
# Nosso número para exibir no boleto. | ||
# O campo Nosso Número deve ser apresentado no formato AA/BXXXXX-D, onde: | ||
# AA = Ano atual | ||
# B = Byte que pode ser de 2 a 9. Somente será 1 se forem boletos pré-impressos. | ||
# XXXXX = número sequencial | ||
# D = dígito verificador calculado | ||
# Nosso numero para exibir no boleto. Nosso Numero e formado com 11 onze | ||
# caracteres, sendo 10 digitos para o nosso numero e um digito para o | ||
# digito verificador. Ex.: 9999999999-D. Obs.: O Nosso Numero e um | ||
# identificador do boleto, devendo ser atribuido Nosso Numero diferenciado | ||
# para cada um. D = digito verificador calculado | ||
# @return [String] | ||
# @example | ||
# boleto.nosso_numero_boleto #=> "14/200022-5" | ||
# boleto.nosso_numero_boleto #=> "9999999999-D" | ||
def nosso_numero_boleto | ||
"#{nosso_numero_with_byte_idt[0..1]}/#{nosso_numero_with_byte_idt[2..-1]}-#{nosso_numero_dv}" | ||
"#{nosso_numero}-#{nosso_numero_dv}" | ||
end | ||
|
||
def nosso_numero_codigo_barra | ||
nosso_numero_boleto.gsub(/\D/, '') | ||
end | ||
|
||
def nosso_numero_with_byte_idt | ||
"#{data_processamento.strftime('%y')}#{byte_idt}#{nosso_numero}" | ||
end | ||
|
||
# Número seqüencial utilizado para identificar o boleto. | ||
# @return [String] 5 caracteres numéricos. | ||
# Numero sequencial utilizado para identificar o boleto. | ||
# @return [String] 10 caracteres numericos. | ||
def nosso_numero=(valor) | ||
@nosso_numero = valor.to_s.rjust(5, '0') if valor | ||
@nosso_numero = valor.to_s.rjust(10, '0') if valor | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Style/StringLiterals: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping. |
||
end | ||
|
||
# Dígito verificador do nosso número | ||
# @return [Integer] 1 caracteres numéricos. | ||
# Digito verificador do nosso numero | ||
# @return [Integer] 1 caracteres numericos. | ||
def nosso_numero_dv | ||
"#{agencia_posto_conta}#{nosso_numero_with_byte_idt}" | ||
.modulo11(mapeamento: mapeamento_para_modulo_11) | ||
"#{nosso_numero}".modulo11(mapeamento: mapeamento_para_modulo_11) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Style/UnneededInterpolation: Prefer to_s over string interpolation. |
||
end | ||
|
||
def agencia_conta_boleto | ||
"#{agencia}.#{posto}.#{convenio}" | ||
def conta_corrente_codigo_barra | ||
"#{conta_corrente}#{conta_corrente_dv}" | ||
end | ||
|
||
def agencia_posto_conta | ||
"#{agencia}#{posto}#{convenio}" | ||
# AGENCIA / CODIGO DO BENEFICIARIO: devera ser preenchido com o codigo da | ||
# agencia, contendo 4 quatro caracteres / Conta Corrente com 10 dez | ||
# caracteres. Ex. 9999/999999999-9. Obs.: Preencher com zeros a direita | ||
# quando necessario. | ||
def agencia_conta_boleto | ||
"#{agencia} / #{conta_corrente}-#{conta_corrente_dv}" | ||
end | ||
|
||
# Segunda parte do código de barras. | ||
# Posição Tamanho Conteúdo | ||
# 20 – 20 01 Código numérico correspondente ao tipo de cobrança: “1” – Com Registro “3 – Sem Registro”. Obs.: O SICREDI não validará este campo. | ||
# 21 – 21 01 Código numérico correspondente ao tipo de carteira: “1” - carteira simples | ||
# 22 – 30 09 Nosso número | ||
# 31 – 34 # 04 # Cooperativa de crédito/agência beneficiária | ||
# 35 – 36 # 02 # Posto da cooperativa de crédito/agência beneficiária | ||
# 37 – 41 # 05 # Código do beneficiário | ||
# 42 – 42 # 01 # Será 1 (um) quando houver valor expresso no campo “valor do documento” | ||
# 43 – 43 # 01 # Filler – zeros “0” | ||
# 44 – 44 # 01 # DV do campo livre calculado por módulo 11 com aproveitamento total (resto igual a 0 ou 1 DV cai para 0) | ||
# Segunda parte do codigo de barras. | ||
# Posicao Tamanho Conteudo | ||
# 20 - 23 04 Agencia BENEFICIARIO Sem o digito verificador, | ||
# completar com zeros a esquerda quando necessario | ||
# 24 - 33 10 Conta do BENEFICIARIO Com o digito verificador - | ||
# Completar com zeros a esquerda quando necessario | ||
# 34 – 44 11 Nosso Numero Com o digito verificador | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Style/AsciiComments: Use only ascii symbols in comments. |
||
def codigo_barras_segunda_parte | ||
campo_livre = "#{carteira}1#{nosso_numero_codigo_barra}#{agencia_posto_conta}10" | ||
campo_livre + campo_livre.modulo11(mapeamento: mapeamento_para_modulo_11).to_s | ||
"#{agencia}#{conta_corrente_codigo_barra}#{nosso_numero_codigo_barra}" | ||
end | ||
|
||
private | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Style/AsciiComments: Use only ascii symbols in comments.