org.jrimum.bopepo.campolivre.CLBancoSantander 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 static org.jrimum.bopepo.parametro.ParametroBancoSantander.IOF_SEGURADORA;
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;
/**
*
* O campo livre do Banco Santander deve seguir esta forma:
*
*
*
*
*
* Posição
* Tamanho
* Picture
* Conteúdo
*
*
*
* 20-20
* 1
* 9(01)
* Fixo "9"
*
*
* 21-27
* 7
* 9(7)
* Conta do cedente padrão Santander
*
*
* 28-40
* 13
* 9(13)
*
*
* Nosso Número com zeros a esquerda. OBS: Caso o arquivo de
* registro para os títulos seja de 400 bytes (CNAB)
*
*
* - Banco 353 (Banco Santander) - Utilizar somente 08 posições do Nosso Numero (07 posições +
* DV), zerando os 05 primeiros dígitos
* - Banco 008 (Meridional do Brasil S/A) - Utilizar somente 09 posições do Nosso Numero (08 posições +
* DV), zerando os 04 primeiros dígitos
*
*
*
*
* 41-41
* 1
* 9(1)
*
*
* IOF – Seguradoras (Se 7% informar 7. Limitado a 9%)
*
*
* Demais clientes usar 0 (zero)
*
*
*
*
* 42-44
* 3
* 9(3)
*
*
* - 101 - Cobrança Simples Rápida COM Registro
* - 102 - Cobrança simples – SEM Registro
* - 104 - Cobrança Simples Eletrônica - COM Registro
* - 201 - Penhor Rápida com Registro
*
*
*
*
*
* @author Gilmar P.S.L.
* @author Misael Barreto
* @author Dani Schinniger
*/
class CLBancoSantander extends AbstractCLSantander implements CampoLivre {
/**
*
*/
private static final long serialVersionUID = -412221524249334574L;
/**
*
*/
private static final Integer FIELDS_LENGTH = 6;
/**
* Constante informada no manual.
*/
private static final Integer CONSTANTE = Integer.valueOf(9);
/**
* 101- Cobrança Simples Rápida COM Registro
*/
private static final int CARTEIRA_RAPIDA_COM_REGISTRO = 101;
/**
* 201- Penhor Rápida com Registro
*/
private static final int CARTEIRA_RAPIDA_SEM_REGISTRO = 201;
/**
* 102- Cobrança simples – SEM Registro
*/
private static final int CARTEIRA_SIMPLES_SEM_REGISTRO = 102;
/**
* 104- Cobrança Simples Eletrônica - COM Registro
*/
private static final int COBRANCA_SIMPLES_ELETRONICA_COM_REGISTRO = 104;
CLBancoSantander(Titulo titulo) {
super(FIELDS_LENGTH);
ContaBancaria conta = titulo.getContaBancaria();
StringBuilder nossoNumero = new StringBuilder(titulo.getNossoNumero());
nossoNumero.append(titulo.getDigitoDoNossoNumero());
this.add(new FixedField(CONSTANTE, 1));
this.add(new FixedField(conta.getNumeroDaConta().getCodigoDaConta(), 6, Fillers.ZERO_LEFT));
this.add(new FixedField(conta.getNumeroDaConta().getDigitoDaConta(), 1));
this.add(new FixedField(nossoNumero.toString(), 13, Fillers.ZERO_LEFT));
// IOF – Seguradoras
if (titulo.hasParametrosBancarios()
&& Objects.isNotNull(titulo.getParametrosBancarios().getValor(
IOF_SEGURADORA))) {
this.add(new FixedField(titulo
.getParametrosBancarios().getValor(IOF_SEGURADORA), 1));
} else {
this.add(new FixedField(0, 1));
}
// Tipo de Modalidade Carteira
switch (conta.getCarteira().getCodigo()) {
case CARTEIRA_RAPIDA_COM_REGISTRO:
case CARTEIRA_RAPIDA_SEM_REGISTRO:
case CARTEIRA_SIMPLES_SEM_REGISTRO:
case COBRANCA_SIMPLES_ELETRONICA_COM_REGISTRO:
this.add(new FixedField(conta.getCarteira().getCodigo(), 3,
Fillers.ZERO_LEFT));
break;
default:
Exceptions.throwIllegalArgumentException(String.format(
"CARTEIRA [%s] NÃO SUPORTADA!", conta.getCarteira()
.getCodigo()));
}
}
@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!");
}
}