package gcom.util;
import java.math.BigDecimal;
import java.util.Date;
public class CodigoBarras {
public static String obterEspecificacaoCodigoBarraFichaCompensacao(String codigoBanco, String codigoMoeda, BigDecimal valorCodigoBarra, String nossoNumeroSemDV, String carteira, String fatorVencimento) {
// Cria a vari�vel que vai armazenar a representa��o n�merica do c�digo de barras
StringBuilder representacaoNumericaCodigoBarra = new StringBuilder();
// G.05.1 - C�digo do Banco
codigoBanco = Util.adicionarZerosEsquedaNumero(3,codigoBanco);
representacaoNumericaCodigoBarra.append(codigoBanco);
// G.05.2 - C�digo da Moeda
representacaoNumericaCodigoBarra.append(codigoMoeda);
// G.05.4 - Fator de Vencimento
fatorVencimento = Util.adicionarZerosEsquedaNumero(4,fatorVencimento);
representacaoNumericaCodigoBarra.append(fatorVencimento);
// G.05.5 - Valor do c�digo de barras
String valorCodigoBarraFormatado = Util.adicionarZerosEsquedaNumero(10, valorCodigoBarra.setScale(2).toString().replace(".", ""));
representacaoNumericaCodigoBarra.append(valorCodigoBarraFormatado);
// G.05.6 - Zeros
String zeros = "";
zeros = Util.adicionarZerosEsquedaNumero(6,zeros);
representacaoNumericaCodigoBarra.append(zeros);
// G.05.7 Nosso n�mero sem o DV
nossoNumeroSemDV = Util.adicionarZerosEsquedaNumero(17,nossoNumeroSemDV);
representacaoNumericaCodigoBarra.append(nossoNumeroSemDV);
// G.05.8 Tipo de Carteira
carteira = Util.adicionarZerosEsquedaNumero(2,carteira);
representacaoNumericaCodigoBarra.append(carteira);
// G.05.3 - D�gito verificador geral
// [SB0001] Obter D�gito verificador geral
String digitoVerificadorGeral = (Util.obterDigitoVerificadorModulo11(representacaoNumericaCodigoBarra.toString())).toString();
if(digitoVerificadorGeral.equalsIgnoreCase("0") ||
digitoVerificadorGeral.equalsIgnoreCase("10") ||
digitoVerificadorGeral.equalsIgnoreCase("11")){
digitoVerificadorGeral = "1";
}
// Monta a representa�a� n�merica com todos os campos informados
representacaoNumericaCodigoBarra = new StringBuilder(codigoBanco)
.append(codigoMoeda)
.append(digitoVerificadorGeral)
.append(fatorVencimento)
.append(valorCodigoBarraFormatado)
.append(zeros)
.append(nossoNumeroSemDV)
.append(carteira);
// Retorna a representa��o n�merica do c�digo de barras
return representacaoNumericaCodigoBarra.toString();
}
public static final String obterFatorVencimento(Date dataVencimento){
Date dataBase = Util.criarData(07, 10, 1997);
return String.valueOf(Util.obterQuantidadeDiasEntreDuasDatas(dataBase, dataVencimento));
}
public static String obterRepresentacaoNumericaCodigoBarraFichaCompensacao(String especificacaoCodigoBarra) {
String representacaoNumericaCodigoBarra = especificacaoCodigoBarra;
// Separa as 44 posi��es do c�digo de barras em 5 partes,
// sendo 3 primeiros constituidos por DV(m�dulo 10) e, entre cada campo,
// espa�o equivalente a uma posi��o.No quarto campo � indicado, isoladamente,
// o DV(m�dulo 11) do c�digo de barras.
String codigoBarraCampo1 = representacaoNumericaCodigoBarra.substring(0, 4) + representacaoNumericaCodigoBarra.substring(20, 21);
codigoBarraCampo1 = codigoBarraCampo1 + "." + representacaoNumericaCodigoBarra.substring(21, 25);
String codigoBarraDigitoVerificadorCampo1 = (Util.obterDigitoVerificadorModulo10(new Long(codigoBarraCampo1.replace(".","")))).toString();
codigoBarraDigitoVerificadorCampo1 = codigoBarraDigitoVerificadorCampo1 + " ";
String codigoBarraCampo2 = representacaoNumericaCodigoBarra.substring(24, 29);
codigoBarraCampo2 = codigoBarraCampo2 + "." + representacaoNumericaCodigoBarra.substring(29, 34);
String codigoBarraDigitoVerificadorCampo2 = (Util.obterDigitoVerificadorModulo10(new Long(codigoBarraCampo2.replace(".","")))).toString();
codigoBarraDigitoVerificadorCampo2 = codigoBarraDigitoVerificadorCampo2 + " ";
String codigoBarraCampo3 = representacaoNumericaCodigoBarra.substring(34, 39);
codigoBarraCampo3 = codigoBarraCampo3 + "." + representacaoNumericaCodigoBarra.substring(39, 44);
String codigoBarraDigitoVerificadorCampo3 = (Util.obterDigitoVerificadorModulo10(new Long(codigoBarraCampo3.replace(".","")))).toString();
codigoBarraDigitoVerificadorCampo3 = codigoBarraDigitoVerificadorCampo3 + " ";
String codigoBarraDigitoVerificadorCampo4 = representacaoNumericaCodigoBarra.substring(4,5) + " ";
String codigoBarraCampo5 = representacaoNumericaCodigoBarra.substring(5, 19);
// Monta a representa��o n�merica do c�digo de barras com os d�gitos verificadores
representacaoNumericaCodigoBarra = codigoBarraCampo1
+ codigoBarraDigitoVerificadorCampo1
+ codigoBarraCampo2
+ codigoBarraDigitoVerificadorCampo2
+ codigoBarraCampo3
+ codigoBarraDigitoVerificadorCampo3
+ codigoBarraDigitoVerificadorCampo4
+ codigoBarraCampo5;
// Retorna a representa��o n�merica do c�digo de barras
return representacaoNumericaCodigoBarra;
}
}