package gcom.financeiro; import gcom.financeiro.bean.GerarIntegracaoContabilidadeHelper; import gcom.financeiro.lancamento.LancamentoOrigem; import gcom.util.ConstantesSistema; import gcom.util.ControladorException; import gcom.util.ErroRepositorioException; import gcom.util.Util; import gcom.util.ZipUtil; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.zip.ZipOutputStream; import javax.ejb.SessionBean; /** * Controlador Financeiro CAERN * * @author Raphael Rossiter * @date 26/06/2006 */ public class ControladorFinanceiroCAERNSEJB extends ControladorFinanceiro implements SessionBean{ private static final long serialVersionUID = 1L; //============================================================================================================== // M�TODOS EXCLUSIVOS DA CAERN //============================================================================================================== /** * este caso de uso gera a integra��o para a contabilidade * * [UC0469] Gerar Integra��o para a Contabilidade * * @author Pedro Alexandre * @date 28/05/2007 * * @param idLancamentoOrigem * @param anoMes * @param data * @throws ControladorException */ public void gerarIntegracaoContabilidade(String idLancamentoOrigem, String anoMes, String data) throws ControladorException{ /* * Pesquisa os dados para gerar a integra��o para a contabilidade. * * 0 - n�mero do cart�o * 1 - c�digo tipo * 2 - n�mero folha * 3 - indicador linha * 4 - prefixo cont�bil * 5 - n�mero conta * 6 - n�mero d�gito * 7 - n�mero terceiros * 8 - c�digo refer�ncia * 9 - valor lan�amento * 10 - indicador d�bito cr�dito * 11 - n�mero cart�o 2 * 12 - n�mero vers�o * 13 - id da localidade * 14 - c�digo centro custo * */ Collection<Object[]> colecaoDadosGerarIntegracao = null; colecaoDadosGerarIntegracao = this.pesquisarGerarIntegracaoContabilidade(idLancamentoOrigem, anoMes); /** defini��o das vari�veis */ StringBuilder gerarIntegracaoTxt = new StringBuilder(); String dataFormatada = data.replace("/",""); /* * Caso a cole��o dos dados n�o esteja vazia */ if(colecaoDadosGerarIntegracao != null && !colecaoDadosGerarIntegracao.isEmpty()){ /** defini��o das vari�veis */ Short numeroCartao = null; String creditoDebito = ""; BigDecimal valorLancamento = null; /* * La�o para gerar o txt */ Iterator iterator = colecaoDadosGerarIntegracao.iterator(); while (iterator.hasNext()){ GerarIntegracaoContabilidadeHelper gerarIntegracaoContabilidadeHelper = (GerarIntegracaoContabilidadeHelper)iterator.next(); //n�mero do cart�o numeroCartao = gerarIntegracaoContabilidadeHelper.getNumeroCartao(); //CreditoDebito creditoDebito = gerarIntegracaoContabilidadeHelper.getCreditoDebito(); //valor do lan�amento valorLancamento = (BigDecimal) gerarIntegracaoContabilidadeHelper.getValorLancamento(); /* * Inicio da gera��o do txt */ //Cartao gerarIntegracaoTxt.append(Util.adicionarZerosEsquedaNumero(3,numeroCartao + "")); //Sequencial gerarIntegracaoTxt.append("01"); //Lote gerarIntegracaoTxt.append("8888"); //Documento gerarIntegracaoTxt.append("200001"); //Linha gerarIntegracaoTxt.append("01"); //data completa gerarIntegracaoTxt.append(Util.adicionarZerosEsquedaNumero(8,dataFormatada)); //CreditoDebito gerarIntegracaoTxt.append(Util.completaStringComEspacoAEsquerda(creditoDebito.trim(), 1)); //COnta Debito gerarIntegracaoTxt.append(Util.completaStringComEspacoAEsquerda(gerarIntegracaoContabilidadeHelper.getNumeroContaDebito()+"", 20)); //COnta Debito gerarIntegracaoTxt.append(Util.completaStringComEspacoAEsquerda(gerarIntegracaoContabilidadeHelper.getNumeroContaCredito()+"", 20)); //Moeda gerarIntegracaoTxt.append("SSSSS"); //Valor Lancamento gerarIntegracaoTxt.append(Util.completaStringComEspacoAEsquerda((valorLancamento + "").replace(".",""), 17)); //LCO_HISTORICO if(idLancamentoOrigem.equals(LancamentoOrigem.FATURAMENTO + "")){ gerarIntegracaoTxt.append(Util.completaStringComEspacoAEsquerda("VL FATURAMENTO", 15)); }else if(idLancamentoOrigem.equals(LancamentoOrigem.ARRECADACAO + "")){ gerarIntegracaoTxt.append(Util.completaStringComEspacoAEsquerda("VL ARRECADACAO", 15)); } //MesAno gerarIntegracaoTxt.append(Util.completaStringComEspacoAEsquerda(Util.formatarAnoMesParaMesAnoSemBarra(new Integer(anoMes))+"",6)); //COdigo Custo Debito gerarIntegracaoTxt.append(Util.completaStringComEspacoAEsquerda(gerarIntegracaoContabilidadeHelper.getCodigoCentroCustoDebito()+"", 9)); //COdigo Custo Debito gerarIntegracaoTxt.append(Util.completaStringComEspacoAEsquerda(gerarIntegracaoContabilidadeHelper.getCodigoCentroCustoCredito()+"", 9)); //dia mes ano fechamento gerarIntegracaoTxt.append(Util.adicionarZerosEsquedaNumero(8,dataFormatada)); //FILLER gerarIntegracaoTxt.append(Util.completaStringComEspacoAEsquerda("DDDD", 4)); //ANOMES gerarIntegracaoTxt.append(Util.adicionarZerosEsquedaNumero(6,anoMes)); //FILLER gerarIntegracaoTxt.append(Util.completaStringComEspacoAEsquerda("LANCAMENTO GCOM", 15)); //FILLER gerarIntegracaoTxt.append(Util.completaStringComEspacoAEsquerda("", 318)); //FILLER gerarIntegracaoTxt.append(Util.completaStringComEspacoAEsquerda("", 33)); //Quebra de Linha gerarIntegracaoTxt.append(System.getProperty("line.separator")); } /* * Determina se o arquivo � de faturamento ou arrecada��o * para concatenar no nome do arquivo .zip */ String descricaoLancamento = ""; if(idLancamentoOrigem.equals(LancamentoOrigem.FATURAMENTO + "")){ descricaoLancamento = "FATURAMENTO"; }else if(idLancamentoOrigem.equals(LancamentoOrigem.ARRECADACAO + "")){ descricaoLancamento = "ARRECADACAO"; } /* * Gerando o arquivo zip */ String nomeZip = "CONTABILIDADE_" + descricaoLancamento + "_" + (data.replace("/","_")); BufferedWriter out = null; ZipOutputStream zos = null; File compactadoTipo = new File(nomeZip + ".zip"); File leituraTipo = new File(nomeZip + ".txt"); /* * Caso oarquivo txt n�o esteja vazio * adiciona o txt ao arquivo zip. */ if (gerarIntegracaoTxt != null && gerarIntegracaoTxt.length() != 0) { try { System.out.println("CRIANDO ZIP"); zos = new ZipOutputStream(new FileOutputStream(compactadoTipo)); out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leituraTipo.getAbsolutePath()))); out.write(gerarIntegracaoTxt.toString()); out.flush(); ZipUtil.adicionarArquivo(zos, leituraTipo); zos.close(); leituraTipo.delete(); out.close(); } catch (IOException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } catch (Exception e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } //caso n�o exista informa��o para os dados informados }else{ if(idLancamentoOrigem.equals(LancamentoOrigem.FATURAMENTO + "")){ throw new ControladorException("atencao.pesquisa.nenhum_registro_tabela", null,"Resumo Faturamento"); }else if(idLancamentoOrigem.equals(LancamentoOrigem.ARRECADACAO + "")){ throw new ControladorException("atencao.pesquisa.nenhum_registro_tabela", null,"Resumo Faturamento"); } } } /** * Este metodo � utilizado para pesquisar os registros q ser�o * usados para contru��o do txt do caso de uso * * [UC0469] Gerar Integra��o para a Contabilidade * * @author Fl�vio Leonardo * @date 28/05/2007 * * @param idLancamentoOrigem * @param anoMes * @return * @throws ControladorException */ public Collection pesquisarGerarIntegracaoContabilidade(String idLancamentoOrigem, String anoMes) throws ControladorException{ Collection colecaoObjetoGerar = null; Collection colecaoGerarIntegracaoContabilidade = null; try { colecaoObjetoGerar = repositorioFinanceiro.pesquisarGerarIntegracaoContabilidadeCaern(idLancamentoOrigem, anoMes); if(!colecaoObjetoGerar.isEmpty()){ Iterator iteratorPesquisa = colecaoObjetoGerar.iterator(); colecaoGerarIntegracaoContabilidade = new ArrayList(); GerarIntegracaoContabilidadeHelper gerarIntegracaoContabilidadeHelper = null; Object[] objetoGerar = null; while(iteratorPesquisa.hasNext()){ gerarIntegracaoContabilidadeHelper = new GerarIntegracaoContabilidadeHelper(); objetoGerar = (Object[]) iteratorPesquisa.next(); //indicador debito credito if(objetoGerar[10] != null){ gerarIntegracaoContabilidadeHelper.setIndicadorDebitoConta(new Integer((Short) objetoGerar[10])); } //LCO_DEB_CRE if(gerarIntegracaoContabilidadeHelper.getIndicadorDebitoConta() != null && gerarIntegracaoContabilidadeHelper.getIndicadorDebitoConta().equals(1)){ gerarIntegracaoContabilidadeHelper.setCreditoDebito("C"); }else if(gerarIntegracaoContabilidadeHelper.getIndicadorDebitoConta() != null && gerarIntegracaoContabilidadeHelper.getIndicadorDebitoConta().equals(2)){ gerarIntegracaoContabilidadeHelper.setCreditoDebito("D"); } //numero cartao if(gerarIntegracaoContabilidadeHelper.getIndicadorDebitoConta() != null && gerarIntegracaoContabilidadeHelper.getIndicadorDebitoConta().equals(1)){ gerarIntegracaoContabilidadeHelper.setNumeroCartao(new Short("402")); }else if(gerarIntegracaoContabilidadeHelper.getIndicadorDebitoConta() != null && gerarIntegracaoContabilidadeHelper.getIndicadorDebitoConta().equals(2)){ gerarIntegracaoContabilidadeHelper.setNumeroCartao(new Short("401")); } //lancamento tipo if(objetoGerar[1] != null){ gerarIntegracaoContabilidadeHelper.setIdTipoLancamento(new Integer((Short) objetoGerar[1])); } //folha if(objetoGerar[2] != null){ gerarIntegracaoContabilidadeHelper.setFolha(new Integer((Short) objetoGerar[2])); } //linha if(objetoGerar[3] != null){ gerarIntegracaoContabilidadeHelper.setIndicadorLinha(new Integer((Short)objetoGerar[3])); } //prefixo contabil if(objetoGerar[4] != null){ gerarIntegracaoContabilidadeHelper.setNumeroPrefixoContabil((String) objetoGerar[4]); } //conta if(objetoGerar[5] != null && gerarIntegracaoContabilidadeHelper.getIndicadorDebitoConta().equals(1)){ String numero = ((String) objetoGerar[5]).trim(); gerarIntegracaoContabilidadeHelper.setNumeroContaCredito(numero); gerarIntegracaoContabilidadeHelper.setNumeroContaDebito(""); }else if(objetoGerar[5] != null && gerarIntegracaoContabilidadeHelper.getIndicadorDebitoConta() != null && gerarIntegracaoContabilidadeHelper.getIndicadorDebitoConta().equals(2)){ String numero = ((String) objetoGerar[5]).trim(); gerarIntegracaoContabilidadeHelper.setNumeroContaDebito(numero); gerarIntegracaoContabilidadeHelper.setNumeroContaCredito(""); } //digito if(objetoGerar[6] != null){ gerarIntegracaoContabilidadeHelper.setDigito(new Integer(((String) objetoGerar[6]).trim())); } //terceiros if(objetoGerar[7] != null){ gerarIntegracaoContabilidadeHelper.setTerceiros(new Integer(((String) objetoGerar[7]).trim())); } //referencia if(objetoGerar[8] != null){ gerarIntegracaoContabilidadeHelper.setReferencial(new Integer(((String) objetoGerar[8]).trim())); } //valor lancamento if(objetoGerar[9] != null){ gerarIntegracaoContabilidadeHelper.setValorLancamento((BigDecimal)objetoGerar[9]); } //Cartao2 if(objetoGerar[11] != null){ gerarIntegracaoContabilidadeHelper.setCartao2(new Integer((Short) objetoGerar[11])); } // Versao if(objetoGerar[12] != null){ gerarIntegracaoContabilidadeHelper.setVersao(new Integer((Short) objetoGerar[12])); } /*//id localidade if(objetoGerar[13] != null){ gerarIntegracaoContabilidadeHelper.setIdLocalidade((Integer)objetoGerar[13]); }*/ // Indicador Centro Custo if ( objetoGerar[14] != null){ gerarIntegracaoContabilidadeHelper.setIndicadorCentroCusto( "" + objetoGerar[14] ); } //codigo centro custo if(objetoGerar[13] != null && gerarIntegracaoContabilidadeHelper.getCreditoDebito().equalsIgnoreCase("C") && gerarIntegracaoContabilidadeHelper.getIndicadorCentroCusto()!=null && gerarIntegracaoContabilidadeHelper.getIndicadorCentroCusto().equals(ConstantesSistema.SIM+"")){ gerarIntegracaoContabilidadeHelper.setCodigoCentroCustoCredito(new Integer(((String) objetoGerar[13]).trim())); }else{ gerarIntegracaoContabilidadeHelper.setCodigoCentroCustoCredito(new Integer(0)); } if(objetoGerar[13] != null && gerarIntegracaoContabilidadeHelper.getCreditoDebito().equalsIgnoreCase("D") && gerarIntegracaoContabilidadeHelper.getIndicadorCentroCusto()!=null && gerarIntegracaoContabilidadeHelper.getIndicadorCentroCusto().equals(ConstantesSistema.SIM+"")){ gerarIntegracaoContabilidadeHelper.setCodigoCentroCustoDebito(new Integer(((String) objetoGerar[13]).trim())); }else{ gerarIntegracaoContabilidadeHelper.setCodigoCentroCustoDebito(new Integer(0)); } colecaoGerarIntegracaoContabilidade.add(gerarIntegracaoContabilidadeHelper); } } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } return colecaoGerarIntegracaoContabilidade; } }