org.jrimum.bopepo.campolivre.CLItauComCarteirasEspeciais 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: 16/04/2008 - 23:09:08
*
* ================================================================================
*
* 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: 16/04/2008 - 23:09:08
*
*/
package org.jrimum.bopepo.campolivre;
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;
/**
* Campo livre padrão do Banco Itaú
*
*
* Constrói o campo livre no caso especial, ou seja, quando a carteira for:
* 106, 107, 122, 142, 143, 195, 196 ou 198.
*
*
*
*
Layout do Banco Itaú para o campo livre ESPECIAL
*
*
*
*
* Posição
* Tamanho
* Picture
* Conteúdo
*
*
*
*
* 20 a 22
* 3
* 9(03)
* Carteira
*
*
* 23 a 30
* 8
* 9(08)
* Nosso número
*
*
* 31 a 37
* 7
* 9(07)
* Seu Número (Número do Documento)
*
*
* 38 a 42
* 5
* 9(05)
* Código do Cliente (fornecido pelo Banco)
*
*
* 43 a 43
* 1
* 9(01)
* DAC dos campos acima (posições 20 a 42 veja anexo 3)
*
*
*
* 44 a 44
* 1
* 9(01)
* Zero
*
*
*
*
*
*
* @author Rômulo Augusto
*
* @since 0.2
*
* @version 0.2
*/
class CLItauComCarteirasEspeciais extends AbstractCLItau {
/**
*
*/
private static final long serialVersionUID = -1532454262023154419L;
/**
* Tamanho do campo livre para carteiras especiais.
*/
private static final Integer FIELDS_LENGTH = 6;
/**
* Dado um título, cria o campo livre do Banco Itaú para carteiras
* especiais.
*
* @param titulo
* título com as informações para geração do campo livre
*/
public CLItauComCarteirasEspeciais(Titulo titulo) {
super(FIELDS_LENGTH);
ContaBancaria conta = titulo.getContaBancaria();
this.add(new FixedField(conta.getCarteira().getCodigo(), 3, Fillers.ZERO_LEFT));
this.add(new FixedField(titulo.getNossoNumero(), 8, Fillers.ZERO_LEFT));
this.add(new FixedField(titulo.getNumeroDoDocumento(), 7, Fillers.ZERO_LEFT));
//Aqui é o código do cedente, simbolizado pelo código da conta bancária.
this.add(new FixedField(conta.getNumeroDaConta().getCodigoDaConta(), 5, Fillers.ZERO_LEFT));
this.add(new FixedField(calculeDigitoDoCampoLivreEspecial(
conta.getCarteira().getCodigo(),
titulo.getNossoNumero(),
titulo.getNumeroDoDocumento(),
conta.getNumeroDaConta().getCodigoDaConta()), 1));
this.add(new FixedField(0, 1));
}
/**
* Calcula o dígito verificador para o campo livre especial a partir do
* código da carteira, do nosso número, do número do documento e do código
* da conta.
*
* @param codigoDaCarteira
* @param nossoNumero
* @param numeroDoDocumento
* @param codigoDaConta
* @return Integer digito
*
* @since 0.2
*/
private Integer calculeDigitoDoCampoLivreEspecial(Integer codigoDaCarteira,
String nossoNumero, String numeroDoDocumento, Integer codigoDaConta) {
StringBuilder campo = new StringBuilder();
campo.append(Fillers.ZERO_LEFT.fill(codigoDaCarteira.intValue(), 3));
campo.append(Fillers.ZERO_LEFT.fill(nossoNumero, 8));
campo.append(Fillers.ZERO_LEFT.fill(numeroDoDocumento, 7));
campo.append(Fillers.ZERO_LEFT.fill(codigoDaConta, 5));
return calculeDigitoVerificador(campo.toString());
}
@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!");
}
}