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

org.jrimum.bopepo.campolivre.CLHSBCCobrancaNaoRegistrada 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!
/*
 * 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:27
 * 
 * ================================================================================
 * 
 * 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:27
 * 
 */

package org.jrimum.bopepo.campolivre;

import static org.jrimum.bopepo.parametro.ParametroHSBC.IDENTIFICADOR_CNR;

import java.util.Calendar;
import java.util.Date;

import org.jrimum.domkee.banco.ParametrosBancariosMap;
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 HSBC, para cobrança não registrada(CNR), deve seguir esta forma: *

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Posição TamanhoPictureConteúdo (terminologia padrão)Conteúdo (terminologia do banco)
20-2679(7) Conta do cedente (sem dígito)Código do cedente
27-39139(13) Nosso número (sem dígito) * Número bancário - Código do documento, sem os dígitos * verificadores e tipo identificador. *
40-4349(4) Fator de vencimentoou Data do vencimento no formato juliano
44-4419(1) 2 FIXOCódigo do Aplicativo CNR = 2
* * * @see org.jrimum.bopepo.campolivre.AbstractCampoLivre * * @author Gilmar P.S.L * @author Misael Barreto * @author Rômulo Augusto * @author Nordeste Fomento Mercantil * * @since 0.2 * * @version 0.2 */ class CLHSBCCobrancaNaoRegistrada extends AbstractCLHSBC { /** * */ private static final long serialVersionUID = -1253549781074159862L; /** * */ private static final Integer FIELDS_LENGTH = 4; /** *

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

* * @param titulo * título com as informações para geração do campo livre */ CLHSBCCobrancaNaoRegistrada(Titulo titulo) { super(FIELDS_LENGTH); checkExistsParametrosBancarios(titulo); checkExistsParametroTipoIdentificadorCNR(titulo .getParametrosBancarios()); Integer tipoIdentificadorCNR = titulo .getParametrosBancarios().getValor(IDENTIFICADOR_CNR); ContaBancaria conta = titulo.getContaBancaria(); String nossoNumero = titulo.getNossoNumero(); // Conta do cedente (sem dígito) this.add(new FixedField( conta.getNumeroDaConta().getCodigoDaConta(), 7, Fillers.ZERO_LEFT)); // Nosso número (sem dígito) this.add(new FixedField(nossoNumero, 13, Fillers.ZERO_LEFT)); this.add(new FixedField(getDataVencimentoFormatoJuliano( tipoIdentificadorCNR, titulo.getDataDoVencimento()), 4, Fillers.ZERO_LEFT)); // 2 FIXO (Código do Aplicativo CNR - Cob. Não Registrada) this.add(new FixedField(2, 1)); } private String getDataVencimentoFormatoJuliano(Integer tipoIdentificadorCNR, Date vencimento) { final int SEM_VENCIMENTO = 5; final int COM_VENCIMENTO = 4; switch (tipoIdentificadorCNR) { case SEM_VENCIMENTO: return "0000"; case COM_VENCIMENTO: return getVencimentoFormatoJuliano(vencimento); default: return Exceptions.throwIllegalStateException("Tipo de identificador CNR desconhecido!"); } } private String getVencimentoFormatoJuliano(Date vencimento) { Calendar c = Calendar.getInstance(); c.setTime(vencimento); return new StringBuilder(String.valueOf(c.get(Calendar.DAY_OF_YEAR))) .append(String.valueOf(c.get(Calendar.YEAR) % 10)) .toString(); } private void checkExistsParametrosBancarios(Titulo titulo) { if (Objects.isNull(titulo.getParametrosBancarios()) && titulo.getParametrosBancarios().isVazio()) { throw new CampoLivreException( "Parâmetros bancários nulos em \"Titulo.parametrosBancarios\". O parâmetro bancário de nome e tipo [ IDENTIFICADOR_CNR ] deve ser fornecido para este caso."); } } private void checkExistsParametroTipoIdentificadorCNR(ParametrosBancariosMap parametros) { Integer tipoIdentificadorCNR = parametros .getValor(IDENTIFICADOR_CNR); if (Objects.isNull(tipoIdentificadorCNR)) { throw new CampoLivreException( "Parâmetro bancário [ IDENTIFICADOR_CNR ] não encontrado em \"Titulo.parametrosBancarios\". O nome do parâmetro deve ser IDENTIFICADOR_CNR."); } } @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