All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jrimum.bopepo.campolivre.CLUnibancoCobrancaRegistrada Maven / Gradle / Ivy

Go to download

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 static org.jrimum.utilix.DateFormat.YYMMDD;

import java.util.Date;

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) * com registro. *

* *

* Layout: *

*

* Cobrança Direta (com registro) *

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
PosiçãoCampo Livre No Código De * Barras (20 a 44)
20 a 21Código da transação = 04
22 a 27Data do Vencimento do Título (AAMMDD)
28 a 31Agência do Cedente
32Dígito Verificador da Agência do Cedente
33 a 43Nosso Número
44Super Digito do Nosso Número (*)
*

* * * @author Gilmar P.S.L. * * @since 0.2 * * @version 0.2 */ class CLUnibancoCobrancaRegistrada extends AbstractCLUnibanco { /** * */ private static final long serialVersionUID = -2740172688796212239L; /** * */ private static final Integer FIELDS_LENGTH = 6; private static final String CODIGO_TRANSACAO = "04"; /** *

* Dado um título, cria um campo livre para o padrão do Banco Unibanco * que tenha o tipo de cobrança registrada. *

* @param titulo título com as informações para geração do campo livre */ CLUnibancoCobrancaRegistrada(Titulo titulo) { super(FIELDS_LENGTH); ContaBancaria conta = titulo.getContaBancaria(); Objects.checkNotNull(conta,"Conta Bancária NULA!"); Objects.checkNotNull(titulo.getDataDoVencimento(), "Data de vencimento do título NULA!"); Objects.checkNotNull(conta.getAgencia().getCodigo(), "Número da Agência Bancária NULO!"); Objects.checkNotNull(conta.getAgencia().getDigitoVerificador(),"Dígito da Agência Bancária NULO!"); Objects.checkNotNull(titulo.getNossoNumero(),"Nosso Número NULO!"); this.add(new FixedField(CODIGO_TRANSACAO, 2)); this.add(new FixedField(titulo.getDataDoVencimento(), 6, YYMMDD.copy())); if(conta.getAgencia().getCodigo() > 0){ this.add(new FixedField(conta.getAgencia().getCodigo(), 4, Fillers.ZERO_LEFT)); }else{ throw new CampoLivreException(new IllegalArgumentException("Agência bancária com valor inválido, a agência deve ser um número inteiro positivo, e não: "+conta.getNumeroDaConta().getCodigoDaConta())); } if (StringUtils.isNumeric(conta.getAgencia().getDigitoVerificador())) { Integer digitoDaAgencia = Integer.valueOf(conta.getAgencia().getDigitoVerificador()); if(digitoDaAgencia>=0){ this.add(new FixedField(Integer.valueOf(digitoDaAgencia), 1)); }else{ throw new CampoLivreException(new IllegalArgumentException("O dígito da agência deve ser um número interio não-negativo, e não: ["+conta.getAgencia().getDigitoVerificador()+"]")); } }else{ throw new CampoLivreException(new IllegalArgumentException("O dígito da agência deve ser numérico, e não: ["+conta.getAgencia().getDigitoVerificador()+"]")); } if(StringUtils.isNumeric(titulo.getNossoNumero())){ if(Long.valueOf(Strings.removeStartWithZeros(titulo.getNossoNumero()))>0){ this.add(new FixedField(titulo.getNossoNumero(), 11,Fillers.ZERO_LEFT)); }else{ throw new CampoLivreException(new IllegalArgumentException("O campo (nosso número) do título deve ser um número natural 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(calculeSuperDigito(titulo.getNossoNumero()), 1)); } /** *

* Calcula o Super Dígito do Nosso Número. *

* *

* Super dígito do “Nosso Número” [calculado com o MÓDULO 11 (de 2 a 9)] * obtido utilizando-se os algarismos do “Nosso Número” acrescido do número * 1 à esquerda = [1/NNNNNNNNNNN] e multiplicando-se a sequência obetem-se a * soma dos produtos. Em seguida multiplicando-se novamente a soma por 10 e * depois realizando-se o módulo 11. *

* * * @param nossoNumero * * @return Dígito verficador calculado * * @see #calculeDigitoEmModulo11(String) * @see org.jrimum.vallia.digitoverificador.Modulo * * @since 0.2 */ private String calculeSuperDigito(String nossoNumero) { return calculeDigitoEmModulo11("1" + nossoNumero); } @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!"); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy