org.jrimum.bopepo.campolivre.CLBancoReal Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bpp-cobranca Show documentation
Show all versions of bpp-cobranca Show documentation
This is a fork and merge from JRimum ( http://www.jrimum.org ),
- Bopepo: https://github.com/jrimum/bopepo
- Texgit: https://github.com/jrimum/texgit
- Valia: https://github.com/jrimum/vallia
- Utilix: https://github.com/jrimum/utilix
- Domkee: https://github.com/jrimum/domkee
For Brazillian Boleto Payment Method. So much thanks for original authors:
Gilmar P. S. L, Misael Barreto and Rômulo Augusto.
The newest version!
/*
* Copyright 2008 JRimum Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
* applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
* OF ANY KIND, either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*
* Created at: 30/03/2008 - 18:09:11
*
* ================================================================================
*
* Direitos autorais 2008 JRimum Project
*
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
* haja exigência legal ou acordo por escrito, a distribuição de software sob
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
* reger permissões e limitações sob esta LICENÇA.
*
* Criado em: 30/03/2008 - 18:09:11
*
*/
package org.jrimum.bopepo.campolivre;
import org.jrimum.domkee.banco.Titulo;
import org.jrimum.texgit.Fillers;
import org.jrimum.texgit.FixedField;
import org.jrimum.utilix.Exceptions;
import org.jrimum.utilix.Strings;
import org.jrimum.vallia.Modulo;
import org.jrimum.vallia.TipoDeModulo;
/**
* *** COBRANÇA SEM REGISTRO ***
* O campo livre do Banco Real deve seguir esta forma:
*
*
*
* Posição
* Tamanho
* Picture
* Conteúdo (terminologia padrão)
* Conteúdo (terminologia do banco)
*
*
* 20-23
* 4
* 9(4)
* Código da agência (sem dígito)
* Agência - Código da agência do cedente
*
*
* 24-30
* 7
* 9(7)
* Código da conta (sem dígito)
* Conta - Número da conta do cedente
*
*
* 31-31
* 1
* 9(1)
* Dígito verificador
* Digitão - Dígito de cobrança
*
*
* 32-44
* 13
* 9(13)
* Número do título(máximo de 13 posições numéricas)
* Número do banco - Número do título no banco
*
*
*
* @author Gilmar P.S.L.
* @author Misael Barreto
* @author Rômulo Augusto
*
* @since 0.2
*
* @version 0.2
*/
class CLBancoReal extends AbstractCLBancoReal {
/**
*
*/
private static final long serialVersionUID = -5294809022535972391L;
private static final Modulo modulo10 = new Modulo(TipoDeModulo.MODULO10);
/**
* Tamanho deste campo.
*/
private static final Integer FIELDS_LENGTH = 4;
/**
*
* Dado um título, cria um campo livre para o padrão do Banco Real.
*
* @param titulo título com as informações para geração do campo livre
*/
CLBancoReal(Titulo titulo) {
super(FIELDS_LENGTH);
this.add(new FixedField(titulo.getContaBancaria().getAgencia().getCodigo(), 4, Fillers.ZERO_LEFT));
this.add(new FixedField(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), 7, Fillers.ZERO_LEFT));
this.add(new FixedField(calculeDigitoDaPosicao31(titulo.getNossoNumero(), titulo.getContaBancaria().getAgencia().getCodigo(), titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta()), 1, Fillers.ZERO_LEFT));
this.add(new FixedField(Strings.eliminateSymbols(titulo.getNossoNumero()), 13, Fillers.ZERO_LEFT));
}
/**
*
* Calcula o Dígito da posição 31 deste campo livre (CLBancoReal
).
*
*
*
* No cálculo do dígito da posição 31 são considerados, para a obtenção do
* dígito, os dados {[NOSSO NÚMERO],[AGÊNCIA],[CONTA]} calculado pelos
* critérios do Módulo 10.
*
* Exemplo:
*
*
*
* Nosso Número
* 1234567890123
*
*
* Agência
* 4444
*
*
* Conta Corrente
* 7777777
*
*
*
* @param nossoNumero
* @param agencia
* @param contaCorrente
* @return Dígito verficador calculado
*
* @see org.jrimum.vallia.Modulo
*
* @since 0.2
*/
private String calculeDigitoDaPosicao31(String nossoNumero,
Integer agencia, Integer contaCorrente) {
StringBuilder formula = new StringBuilder();
String dV = null;
formula.append(Fillers.ZERO_LEFT.fill(nossoNumero, 13));
formula.append(Fillers.ZERO_LEFT.fill(agencia, 4));
formula.append(Fillers.ZERO_LEFT.fill(contaCorrente, 7));
int restoDivisao = modulo10.calcule(formula.toString());
int restoSubtracao = (10 - restoDivisao);
if (restoSubtracao == 10) {
dV = "0";
} else {
dV = "" + restoSubtracao;
}
return dV;
}
@Override
protected void addFields(Titulo titulo) {
// TODO IMPLEMENTAR
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
}
@Override
protected void checkValues(Titulo titulo) {
// TODO IMPLEMENTAR
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
}
}