org.jrimum.bopepo.campolivre.CLUnibancoCobrancaNaoRegistrada 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!
package org.jrimum.bopepo.campolivre;
import org.apache.commons.lang3.StringUtils;
import org.jrimum.domkee.banco.ContaBancaria;
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.Objects;
import org.jrimum.utilix.Strings;
/**
*
*
* Representação do campo livre usado para boletos com carteiras (cobrança)
* sem registro.
*
*
*
* Layout:
*
*
* Cobrança Especial (sem registro)
*
*
*
*
* Posição
* Campo Livre No Código De
* Barras (20 a 44)
*
* 20
*
* Código da transação = 5
*
*
* 21 a 26
* Número do Cliente (Espécie de conta)
*
*
* 27
* Dígito Verificador do Número do Cliente
*
*
* 28 a 29
* zeros
*
*
* 30 a 43
* Referência do Cliente (Nosso Número Gerado Pelo
* Cliente)
*
*
* 44
* Dígito Verificador da Referência do Cliente
*
*
*
*
*
* @author Gilmar P.S.L.
*
* @since 0.2
*
* @version 0.2
*/
class CLUnibancoCobrancaNaoRegistrada extends AbstractCLUnibanco {
/**
*
*/
private static final long serialVersionUID = 487906631678160993L;
/**
*
*/
private static final Integer FIELDS_LENGTH = 6;
private static final Integer CODIGO_TRANSACAO = 5;
private static final Integer RESERVADO = 0;
/**
*
* Dado um título, cria um campo livre para o padrão do Banco Unibanco
* que tenha o tipo de cobrança não registrada.
*
* @param titulo título com as informações para geração do campo livre
*/
CLUnibancoCobrancaNaoRegistrada(Titulo titulo) {
super(FIELDS_LENGTH);
ContaBancaria conta = titulo.getContaBancaria();
Objects.checkNotNull(conta,"Conta Bancária NULA!");
Objects.checkNotNull(conta.getNumeroDaConta(),"Número da Conta Bancária NULO!");
Objects.checkNotNull(conta.getNumeroDaConta().getCodigoDaConta(),"Código da Conta Bancária NULO!");
Objects.checkNotNull(conta.getNumeroDaConta().getDigitoDaConta(),"Dígito da Conta Bancária NULO!");
Objects.checkNotNull(titulo.getNossoNumero(),"Nosso Número NULO!");
this.add(new FixedField(CODIGO_TRANSACAO, 1));
if(conta.getNumeroDaConta().getCodigoDaConta() > 0){
this.add(new FixedField(conta.getNumeroDaConta().getCodigoDaConta(), 6, Fillers.ZERO_LEFT));
}else{
throw new CampoLivreException(new IllegalArgumentException("Conta bancária com valor inválido, a conta deve ser um número inteiro positivo, e não: "+conta.getNumeroDaConta().getCodigoDaConta()));
}
if(StringUtils.isNumeric(conta.getNumeroDaConta().getDigitoDaConta())){
Integer digitoDaConta = Integer.valueOf(conta.getNumeroDaConta().getDigitoDaConta());
if(digitoDaConta >= 0){
this.add(new FixedField(Integer.valueOf(digitoDaConta), 1));
}else{
throw new CampoLivreException(new IllegalArgumentException("O dígito da conta deve ser um número inteiro não-negativo, e não: ["+conta.getNumeroDaConta().getDigitoDaConta()+"]"));
}
}else{
throw new CampoLivreException(new IllegalArgumentException("O dígito da conta deve ser numérico, e não: ["+conta.getNumeroDaConta().getDigitoDaConta()+"]"));
}
this.add(new FixedField(RESERVADO, 2, Fillers.ZERO_LEFT));
if(StringUtils.isNumeric(titulo.getNossoNumero())){
if(Long.valueOf(Strings.removeStartWithZeros(titulo.getNossoNumero()))>0){
this.add(new FixedField(titulo.getNossoNumero(), 14,Fillers.ZERO_LEFT));
}else{
throw new CampoLivreException(new IllegalArgumentException("O campo (nosso número) do título deve ser um número inteiro positivo, e não: ["+titulo.getNossoNumero()+"]"));
}
}else{
throw new CampoLivreException(new IllegalArgumentException("O campo (nosso número) do título deve ser numérico, e não: ["+titulo.getNossoNumero()+"]"));
}
this.add(new FixedField(calculeDigitoEmModulo11(titulo.getNossoNumero()), 1));
}
@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!");
}
}