Package ecar.dao

Source Code of ecar.dao.ItemEstruturaRealizadoDao

/*
* Created on 20/04/2005
*
*/
package ecar.dao;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

import comum.database.Dao;
import comum.util.Data;
import comum.util.Pagina;

import ecar.bean.DetalhamentoTotaisConta;
import ecar.exception.ECARException;
import ecar.login.SegurancaECAR;
import ecar.pojo.ConfigExecFinanCef;
import ecar.pojo.ConfigSisExecFinanCsef;
import ecar.pojo.ConfigSisExecFinanCsefv;
import ecar.pojo.ConfiguracaoCfg;
import ecar.pojo.EfItemEstContaEfiec;
import ecar.pojo.EfItemEstRealizadoEfier;
import ecar.pojo.ExercicioExe;
import gov.pr.celepar.framework.exception.ApplicationException;

/**
* @author garten
*
*/
public class ItemEstruturaRealizadoDao extends Dao {
   
    /**
     *
     * @param request
     */
    public ItemEstruturaRealizadoDao(HttpServletRequest request) {
    super();
    this.request = request;
  }
 
  /**
   *
   * @param item
   * @param request
   * @throws ECARException
   */
  public void setEfItemEstRealizadoEfier(EfItemEstRealizadoEfier item, HttpServletRequest request) throws ECARException{
    ConfigSisExecFinanCsefvDao versaoDao = new ConfigSisExecFinanCsefvDao(null);
    ItemEstruturaContaOrcamentoDao itemEstContaDao = new ItemEstruturaContaOrcamentoDao(null);
   
    SegurancaECAR usuarioLogado = (SegurancaECAR) request.getSession().getAttribute("seguranca");

    Long anoReferencia = Long.valueOf(Pagina.getParamStr(request, "anoReferenciaEfier"));
    Long mesReferencia = Long.valueOf(Pagina.getParamStr(request, "mesReferenciaEfier"));
   
    item.setAnoReferenciaEfier(anoReferencia);
    item.setMesReferenciaEfier(mesReferencia);

    ConfigSisExecFinanCsefv versao = (ConfigSisExecFinanCsefv) versaoDao.buscar(ConfigSisExecFinanCsefv.class, Long.valueOf(Pagina.getParamStr(request, "codVersaoEscolhida")));
    if(versao == null)
      throw new ECARException("integracaoFinanceira.manual.inclusao.versaoInexistente");
       
//    TODO MANTIS  0011017
//    INICIO - MANTIS  0011017   
    item.setConfigSisExecFinanCsefv(versao);
//     FIM - MANTIS  0011017
   
    //Verificar se o sistema permite inclus�o manual
    //ConfigSisExecFinanCsef sistema = (ConfigSisExecFinanCsef) new ConfigSisExecFinanDao(request).buscar(ConfigSisExecFinanCsef.class, Long.valueOf(Pagina.getParamStr(request, "configSisExecFinanCsef")));
    ConfigSisExecFinanCsef sistema = versao.getConfigSisExecFinanCsef();
    if(!"S".equals(sistema.getIndPermiteValormanualorcCsef()))
      throw new ECARException("integracaoFinanceira.manual.inclusao.naoPermiteManual");
   
    List estruturasContabil = new ConfigExecFinanDao(request).getConfigExecFinanByVersao(versao);
        String estrutura = "";
        if (estruturasContabil != null) {
           
            Iterator it = estruturasContabil.iterator();
            while(it.hasNext()){
                ConfigExecFinanCef estruturaContabil = (ConfigExecFinanCef) it.next();
                if(estrutura.length() > 0)
                    estrutura += " ";
                //estrutura += Pagina.getParamStr(request, "e" + estruturaContabil.getCodCef().toString() + mes + ano + verSistema);               
                estrutura += Pagina.getParamStr(request, "e" + estruturaContabil.getCodCef().toString() + String.valueOf(versao.getCodCsefv()));               
            }
            /*
             * Por causa destes ifs neste m�todo os valores da Estrutura n�o s�o perdidos na altera��o. Motivo: na tela de alterar
             * conta todos os campos, com a exce��o do Acumulado est�o desabilitados e por isso n�o s�o enviados por request.
             * Quando fa�o essa compara��o, ao verificar que estes campos est�o vazios, mantenho os valores existentes originalmente
             * no objeto conta ( no caso s�o os valores que vieram do banco ) e por isso n�o s�o perdidos mesmo que venha vazio no
             * request.
             */      
            if(!"".equals(estrutura)){
            List contasOrcamentarias = itemEstContaDao.listar(EfItemEstContaEfiec.class, new String[] {"contaSistemaOrcEfiec", "asc"});
        estrutura = estrutura.trim();
        boolean existeConta = false;
        Iterator itConta = contasOrcamentarias.iterator();
        while(itConta.hasNext()){
          EfItemEstContaEfiec con = (EfItemEstContaEfiec) itConta.next();
          if(estrutura.equals(con.getContaSistemaOrcEfiec())){
            existeConta = true;
            break;
          }
        }
       
        if(!existeConta){
        //  throw new ECARException("integracaoFinanceira.manual.inclusao.contaInexistente");
        }

                item.setContaSistemaOrcEfier(estrutura.toUpperCase());
            }
        }   
   
    item.setDataHoraInfoEfier(Data.getDataAtual());
   
    if(item.getDataInclusaoEfier() == null)
      item.setDataInclusaoEfier(Data.getDataAtual());
   
    item.setIndContabilidadeEfier("A");
    item.setIndManualEfier(Pagina.getParamStr(request, "indManualEfier"));
   

    item.setUsuarioUsu(usuarioLogado.getUsuario());
   
    String valor1 = Pagina.getParamStr(request, "valor1Efier");
    if(!"".equals(valor1)){
      item.setValor1Efier(new Double(valor1.replaceAll(",",".")));
    }

    String valor2 = Pagina.getParamStr(request, "valor2Efier");
    if(!"".equals(valor2)){
      item.setValor2Efier(new Double(valor2.replaceAll(",",".")));
    }
   
    String valor3 = Pagina.getParamStr(request, "valor3Efier");
    if(!"".equals(valor3)){
      item.setValor3Efier(new Double(valor3.replaceAll(",",".")));
    }
   
    String valor4 = Pagina.getParamStr(request, "valor4Efier");
    if(!"".equals(valor4)){
      item.setValor4Efier(new Double(valor4.replaceAll(",",".")));
    }
   
    String valor5 = Pagina.getParamStr(request, "valor5Efier");
    if(!"".equals(valor5)){
      item.setValor5Efier(new Double(valor5.replaceAll(",",".")));
    }
   
    String valor6 = Pagina.getParamStr(request, "valor6Efier");
    if(!"".equals(valor6)){
      item.setValor6Efier(new Double(valor6.replaceAll(",",".")));
    }
   
  }
 
 
  /**
   *
   * @param item
   * @param request
   * @param iteracao numero da iteracao para inser��o de multiplos parametros
   * @throws ECARException
   */
  public void setEfItemEstRealizadoEfier(EfItemEstRealizadoEfier item, HttpServletRequest request, int iteracao) throws ECARException{
    ConfigSisExecFinanCsefvDao versaoDao = new ConfigSisExecFinanCsefvDao(null);
    ItemEstruturaContaOrcamentoDao itemEstContaDao = new ItemEstruturaContaOrcamentoDao(null);
   
    SegurancaECAR usuarioLogado = (SegurancaECAR) request.getSession().getAttribute("seguranca");

    Long anoReferencia = Long.valueOf(Pagina.getParamStr(request, "anoReferenciaEfier"));
    Long mesReferencia = Long.valueOf(Pagina.getParamStr(request, "mesReferenciaEfier"));
   
    item.setAnoReferenciaEfier(anoReferencia);
    item.setMesReferenciaEfier(mesReferencia);

    ConfigSisExecFinanCsefv versao = (ConfigSisExecFinanCsefv) versaoDao.buscar(ConfigSisExecFinanCsefv.class, Long.valueOf(Pagina.getParamStr(request, "codVersaoEscolhida")));
    if(versao == null)
      throw new ECARException("integracaoFinanceira.manual.inclusao.versaoInexistente");

   
//    TODO MANTIS  0011017
//    INICIO - MANTIS  0011017   
    item.setConfigSisExecFinanCsefv(versao);
//     FIM - MANTIS  0011017
   
    //Verificar se o sistema permite inclus�o manual
    //ConfigSisExecFinanCsef sistema = (ConfigSisExecFinanCsef) new ConfigSisExecFinanDao(request).buscar(ConfigSisExecFinanCsef.class, Long.valueOf(Pagina.getParamStr(request, "configSisExecFinanCsef")));
    ConfigSisExecFinanCsef sistema = versao.getConfigSisExecFinanCsef();
    if(!"S".equals(sistema.getIndPermiteValormanualorcCsef()))
      throw new ECARException("integracaoFinanceira.manual.inclusao.naoPermiteManual");
   
    List estruturasContabil = new ConfigExecFinanDao(request).getConfigExecFinanByVersao(versao);
        String estrutura = "";
        if (estruturasContabil != null) {
           
            Iterator it = estruturasContabil.iterator();
            while(it.hasNext()){
                ConfigExecFinanCef estruturaContabil = (ConfigExecFinanCef) it.next();
                if(estrutura.length() > 0)
                    estrutura += " ";
                //estrutura += Pagina.getParamStr(request, "e" + estruturaContabil.getCodCef().toString() + mes + ano + verSistema);               
                //estrutura += Pagina.getParamStr(request, "e" + estruturaContabil.getCodCef().toString() + String.valueOf(versao.getCodCsefv()));
                estrutura += request.getParameterValues("e" + estruturaContabil.getCodCef().toString() + String.valueOf(versao.getCodCsefv()))[iteracao - 1];
            }
            /*
             * Por causa destes ifs neste m�todo os valores da Estrutura n�o s�o perdidos na altera��o. Motivo: na tela de alterar
             * conta todos os campos, com a exce��o do Acumulado est�o desabilitados e por isso n�o s�o enviados por request.
             * Quando fa�o essa compara��o, ao verificar que estes campos est�o vazios, mantenho os valores existentes originalmente
             * no objeto conta ( no caso s�o os valores que vieram do banco ) e por isso n�o s�o perdidos mesmo que venha vazio no
             * request.
             */      
            if(!"".equals(estrutura)){
            List contasOrcamentarias = itemEstContaDao.listar(EfItemEstContaEfiec.class, new String[] {"contaSistemaOrcEfiec", "asc"});
        estrutura = estrutura.trim();
        boolean existeConta = false;
        Iterator itConta = contasOrcamentarias.iterator();
        while(itConta.hasNext()){
          EfItemEstContaEfiec con = (EfItemEstContaEfiec) itConta.next();
          if(estrutura.equals(con.getContaSistemaOrcEfiec())){
            existeConta = true;
            break;
          }
        }
       
        if(!existeConta){
        //  throw new ECARException("integracaoFinanceira.manual.inclusao.contaInexistente");
        }

                item.setContaSistemaOrcEfier(estrutura.toUpperCase());
            }
        }
       

    item.setDataHoraInfoEfier(Data.getDataAtual());
   
    if(item.getDataInclusaoEfier() == null)
      item.setDataInclusaoEfier(Data.getDataAtual());
   
    item.setIndContabilidadeEfier("A");
    item.setIndManualEfier(Pagina.getParamStr(request, "indManualEfier"));
   

    item.setUsuarioUsu(usuarioLogado.getUsuario());
   
    String valor1 = Pagina.getParamStr(request, "valor" + iteracao+ "_1Efier");
    if(!"".equals(valor1)){
      item.setValor1Efier(new Double(valor1.replaceAll(",",".")));
    }

    String valor2 = Pagina.getParamStr(request, "valor" + iteracao+ "_2Efier");
    if(!"".equals(valor2)){
      item.setValor2Efier(new Double(valor2.replaceAll(",",".")));
    }
   
    String valor3 = Pagina.getParamStr(request, "valor" + iteracao+ "_3Efier");
    if(!"".equals(valor3)){
      item.setValor3Efier(new Double(valor3.replaceAll(",",".")));
    }
   
    String valor4 = Pagina.getParamStr(request, "valor" + iteracao+ "_4Efier");
    if(!"".equals(valor4)){
      item.setValor4Efier(new Double(valor4.replaceAll(",",".")));
    }
   
    String valor5 = Pagina.getParamStr(request, "valor" + iteracao+ "_5Efier");
    if(!"".equals(valor5)){
      item.setValor5Efier(new Double(valor5.replaceAll(",",".")));
    }
   
    String valor6 = Pagina.getParamStr(request, "valor" + iteracao+ "_6Efier");
    if(!"".equals(valor6)){
      item.setValor6Efier(new Double(valor6.replaceAll(",",".")));
    }
  }
 
        /**
         *
         * @param efier
         * @param tx
         * @throws ECARException
         */
        public void gravar(EfItemEstRealizadoEfier efier, Transaction tx) throws ECARException{
    Long mes = efier.getMesReferenciaEfier();
    Long ano = efier.getAnoReferenciaEfier();
    String conta = efier.getContaSistemaOrcEfier();

    try{
      StringBuilder sql = new StringBuilder("from EfItemEstRealizadoEfier efier")
              .append(" where efier.mesReferenciaEfier = :mes")
              .append(" and efier.anoReferenciaEfier = :ano")
              .append(" and efier.contaSistemaOrcEfier = :conta");
     
      Query q  = this.session.createQuery(sql.toString());
      q.setLong("mes", mes.longValue());
      q.setLong("ano", ano.longValue());
      q.setString("conta", conta);
     
      List lista = q.list();
     
      if(lista != null && !lista.isEmpty()){
        throw new ECARException("integracaoFinanceira.manual.inclusao.contaCadastrada");
      }
     
      if(tx != null) {
        session.save(efier);
      } else {
        super.salvar(efier);
      }
    }
    catch (HibernateException e) {
            this.logger.error(e);
          throw new ECARException("integracaoFinanceira.manual.inclusao.erro");
    }
  }
 
        /**
         *
         * @param efier
         * @throws ECARException
         */
        public void alterar(EfItemEstRealizadoEfier efier) throws ECARException{
    super.alterar(efier);
  }

        /**
         *
         * @param codigosParaExcluir
         * @throws ECARException
         * @throws HibernateException
         */
        public void excluir(String[] codigosParaExcluir) throws ECARException, HibernateException{
    Transaction tx = null;
    try {
      tx = this.session.beginTransaction();
      for(int i = 0; i < codigosParaExcluir.length; i++){
        EfItemEstRealizadoEfier efier = (EfItemEstRealizadoEfier) buscar(EfItemEstRealizadoEfier.class, Long.valueOf(codigosParaExcluir[i]));
        session.delete(efier);
      }
      tx.commit();
    } catch (Exception e) {
      if(tx != null)
        tx.rollback();
            this.logger.error(e);
          throw new ECARException("integracaoFinanceira.manual.exclusao.erro");
    }
  }
 
    /**
     * Devolve um array de 6 posicoes com a soma dos valores de um ItemEstruturaRealizadoDao
     *
     * Se por algum motivo esse m�todo mudar sua forma de consulta,
     * ent�o analisar a possibilidade tamb�m de alterar o m�todo "getSomaDetalhadaItemEstruturaRealizado()",
     * que � praticamente um clone desse m�todo, mudando apenas a forma de retorno das informa��es.
     *
     * clausula where da query montada, per�odo trabalhado somente em cima de M�s e Ano
     * pois no HQL do hibernate n�o encontramos alternativa para data
     *
     *   AnoX = Ano Refer�ncia
     *   AnoI = Ano de In�cio do Exerc�cio
     *   AnoF = Ano Fim do Exerc�cio
     *   MexX = M�s Refer�ncia
     *   MesI = M�s de In�cio do Exerc�cio
     *   MesF = M�s Fim do Exerc�cio
     *
     *    ((AnoX = AnoI E MesX >= MesI) OU (AnoX > AnoI)
     *     E
     *     ((AnoX = AnoF E MesX <= MesF) OU (AnoX < AnoF)
     *
     * explica��o:
     *     Quando Ano Refer�ncia igual ao Inicial, o M�s deve ser maior ou igual
     *     Quando Ano Refer�ncia maior que o Inicial, o M�s n�o importa
     *     Quando Ano Refer�ncia igual ao Final, o M�s deve ser menor ou igual
     *     Quando Ano Refer�ncia menor que o Final, o M�s n�o importa
     *
     * @param efItem
     * @param exercicio
     * @return Double[]
     * @throws ECARException
     * @throws HibernateException
     */
    public Double[] getSomaItemEstruturaRealizado(EfItemEstContaEfiec efItem, ExercicioExe exercicio) throws ECARException, HibernateException {
     
        try{
         
          StringBuilder baseQuery = new StringBuilder();
          StringBuilder where = new StringBuilder();
          Double[] efier = new Double[]{new Double(0), new Double(0), new Double(0), new Double(0), new Double(0), new Double(0)};
         
          if(efItem.getIndAcumuladoEfiec() == null || "".equals(efItem.getIndAcumuladoEfiec().trim())) {
            return efier;
          }
         
          Calendar dataIniExe = Data.getGregorianCalendar(exercicio.getDataInicialExe());
          Calendar dataFimExe = Data.getGregorianCalendar(exercicio.getDataFinalExe());
         
          /* O Calendar retorna os meses de 0 a 11 */
          /* e para comparar no HQL soma-se 1 */
          int mesIniExe = dataIniExe.get(Calendar.MONTH) + 1;
          int mesFimExe = dataFimExe.get(Calendar.MONTH) + 1;
         
          Query query = null;
         
          if("S".equals(efItem.getIndAcumuladoEfiec())) {

            baseQuery.append("select itemEstRealizado.valor1Efier, ")
         .append("itemEstRealizado.valor2Efier,")
         .append("itemEstRealizado.valor3Efier,")
         .append("itemEstRealizado.valor4Efier,")
         .append("itemEstRealizado.valor5Efier,")
         .append("itemEstRealizado.valor6Efier ")
         .append("from EfItemEstRealizadoEfier itemEstRealizado ");
   
        where.append(" where itemEstRealizado.contaSistemaOrcEfier = :conta ")
           .append(" and (((itemEstRealizado.anoReferenciaEfier = :anoIni and itemEstRealizado.mesReferenciaEfier >= :mesIni)")
           .append(" or itemEstRealizado.anoReferenciaEfier > :anoIni )")
           .append(" and ((itemEstRealizado.anoReferenciaEfier = :anoFim and itemEstRealizado.mesReferenciaEfier <= :mesFim)")
           .append(" or itemEstRealizado.anoReferenciaEfier < :anoFim))")
           .append(" order by itemEstRealizado.anoReferenciaEfier desc, itemEstRealizado.mesReferenciaEfier desc");
           
          } else if("N".equals(efItem.getIndAcumuladoEfiec())) {
           
              baseQuery.append("select sum(itemEstRealizado.valor1Efier), ")
            .append("sum(itemEstRealizado.valor2Efier),")
            .append("sum(itemEstRealizado.valor3Efier),")
            .append("sum(itemEstRealizado.valor4Efier),")
            .append("sum(itemEstRealizado.valor5Efier),")
            .append("sum(itemEstRealizado.valor6Efier)")
            .append("from EfItemEstRealizadoEfier itemEstRealizado ");
     
              where.append(" where itemEstRealizado.contaSistemaOrcEfier = :conta ")
         .append(" and (((itemEstRealizado.anoReferenciaEfier = :anoIni and itemEstRealizado.mesReferenciaEfier >= :mesIni)")
         .append(" or itemEstRealizado.anoReferenciaEfier > :anoIni )")
         .append(" and ((itemEstRealizado.anoReferenciaEfier = :anoFim and itemEstRealizado.mesReferenciaEfier <= :mesFim)")
         .append(" or itemEstRealizado.anoReferenciaEfier < :anoFim))");
           
          }

          query = this.getSession().createQuery(baseQuery.toString() + where);
          query.setString("conta", efItem.getContaSistemaOrcEfiec());
          query.setLong("anoIni", Long.parseLong(String.valueOf(dataIniExe.get(Calendar.YEAR))));
          query.setLong("mesIni", Long.parseLong(String.valueOf(mesIniExe)));
          query.setLong("anoFim", Long.parseLong(String.valueOf(dataFimExe.get(Calendar.YEAR))));
          query.setLong("mesFim", Long.parseLong(String.valueOf(mesFimExe)));
         
          List lista = query.list();
         
          Iterator it = lista.iterator();
         
          /* �nica forma que funcionou, receber o objeto e depois CAST p/ Double */
          if (it.hasNext()){
            Object aux[] = (Object[]) it.next();

            if (aux[0] != null)
              efier[0] = (Double) aux[0];
            if (aux[1] != null)
              efier[1] = (Double) aux[1];
            if (aux[2] != null)
              efier[2] = (Double) aux[2];
            if (aux[3] != null)
              efier[3] = (Double) aux[3];
            if (aux[4] != null)
              efier[4] = (Double) aux[4];
            if (aux[5] != null)
              efier[5] = (Double) aux[5];
          }
         
            return (efier);
         
        } catch(Exception e){
            this.logger.error(e);
          throw new ECARException("relAcompanhamento.financeiro.consulta.erro");
        }
    }
   
    /**
     * Retorna os totais da contas detalhadas em inser��es manuais e via importa��o de arquivo txt.
     * @param efItem
     * @param exercicio
     * @return DetalhamentoTotaisConta
     * @throws ECARException
     * @throws HibernateException
     */
    public DetalhamentoTotaisConta getSomaDetalhadaItemEstruturaRealizado(EfItemEstContaEfiec efItem, ExercicioExe exercicio) throws ECARException, HibernateException {
     
        try{
         
          StringBuilder baseQuery = null;
          StringBuilder where = null;
         
          DetalhamentoTotaisConta detalheConta = new DetalhamentoTotaisConta();
         
          if(efItem.getIndAcumuladoEfiec() == null || "".equals(efItem.getIndAcumuladoEfiec().trim())) {
            return detalheConta;
          }
                             
          Calendar dataIniExe = Data.getGregorianCalendar(exercicio.getDataInicialExe());
          Calendar dataFimExe = Data.getGregorianCalendar(exercicio.getDataFinalExe());
         
          /* O Calendar retorna os meses de 0 a 11 */
          /* e para comparar no HQL soma-se 1 */
          int mesIniExe = dataIniExe.get(Calendar.MONTH) + 1;
          int mesFimExe = dataFimExe.get(Calendar.MONTH) + 1;
         
          Query query = null;
          String indManual = "N";
          List lista = new ArrayList();
         
          if("S".equals(efItem.getIndAcumuladoEfiec())) {           
           
            for(int i=0; i<=1; i++) {
           
              baseQuery = new StringBuilder();
              where = new StringBuilder();
             
              baseQuery.append("select itemEstRealizado.valor1Efier, ")
           .append("itemEstRealizado.valor2Efier,")
           .append("itemEstRealizado.valor3Efier,")
           .append("itemEstRealizado.valor4Efier,")
           .append("itemEstRealizado.valor5Efier,")
           .append("itemEstRealizado.valor6Efier,")
           .append("itemEstRealizado.indManualEfier ")
           .append("from EfItemEstRealizadoEfier itemEstRealizado ");
     
          where.append(" where itemEstRealizado.contaSistemaOrcEfier like :conta ")
             .append(" and (((itemEstRealizado.anoReferenciaEfier = :anoIni and itemEstRealizado.mesReferenciaEfier >= :mesIni)")
             .append(" or itemEstRealizado.anoReferenciaEfier > :anoIni )")
             .append(" and ((itemEstRealizado.anoReferenciaEfier = :anoFim and itemEstRealizado.mesReferenciaEfier <= :mesFim)")
             .append(" or itemEstRealizado.anoReferenciaEfier < :anoFim))")
             .append(" and itemEstRealizado.indManualEfier = :indManualEfier))")
             .append(" order by itemEstRealizado.anoReferenciaEfier desc, itemEstRealizado.mesReferenciaEfier desc");
         
            query = this.getSession().createQuery(baseQuery.toString() + where);
            //N�o apagar essas linhas de forma nenhuma.
            query.setString("conta", efItem.getContaSistemaOrcEfiec());
//            String[] parametros = efItem.getContaSistemaOrcEfiec().split(" ");
//            query.setString("conta", parametros[0] + "%" + parametros[2] + " " + parametros[3]);
//            query.setString("conta", parametros[0] + "%" + parametros[1] + " " + parametros[2]);
              query.setLong("anoIni", Long.parseLong(String.valueOf(dataIniExe.get(Calendar.YEAR))));
              query.setLong("mesIni", Long.parseLong(String.valueOf(mesIniExe)));
              query.setLong("anoFim", Long.parseLong(String.valueOf(dataFimExe.get(Calendar.YEAR))));
              query.setLong("mesFim", Long.parseLong(String.valueOf(mesFimExe)));
              query.setString("indManualEfier", indManual);
             
              query.setMaxResults(1);
              lista.addAll(query.list());
             
              if("S".equals(indManual)) {
                indManual = "S";
              }
            }
       
           
          } else if("N".equals(efItem.getIndAcumuladoEfiec())) {
           
              baseQuery.append("select sum(itemEstRealizado.valor1Efier), ")
            .append("sum(itemEstRealizado.valor2Efier),")
            .append("sum(itemEstRealizado.valor3Efier),")
            .append("sum(itemEstRealizado.valor4Efier),")
            .append("sum(itemEstRealizado.valor5Efier),")
            .append("sum(itemEstRealizado.valor6Efier),")
            .append("itemEstRealizado.indManualEfier ")
            .append("from EfItemEstRealizadoEfier itemEstRealizado ");
     
              where.append(" where itemEstRealizado.contaSistemaOrcEfier like :conta ")
           .append(" and (((itemEstRealizado.anoReferenciaEfier = :anoIni and itemEstRealizado.mesReferenciaEfier >= :mesIni)")
           .append(" or itemEstRealizado.anoReferenciaEfier > :anoIni )")
           .append(" and ((itemEstRealizado.anoReferenciaEfier = :anoFim and itemEstRealizado.mesReferenciaEfier <= :mesFim)")
           .append(" or itemEstRealizado.anoReferenciaEfier < :anoFim))")
           .append(" group by itemEstRealizado.indManualEfier")
                .append(" order by itemEstRealizado.indManualEfier asc");
             
            query = this.getSession().createQuery(baseQuery.toString() + where);           
          //N�o apagar essas linhas de forma nenhuma.
          query.setString("conta", efItem.getContaSistemaOrcEfiec());
//          String[] parametros = efItem.getContaSistemaOrcEfiec().split(" ");
//          query.setString("conta", parametros[0] + "%" + parametros[2] + " " + parametros[3]);
//          query.setString("conta", parametros[0] + "%" + parametros[1] + " " + parametros[2]);
            query.setLong("anoIni", Long.parseLong(String.valueOf(dataIniExe.get(Calendar.YEAR))));
            query.setLong("mesIni", Long.parseLong(String.valueOf(mesIniExe)));
            query.setLong("anoFim", Long.parseLong(String.valueOf(dataFimExe.get(Calendar.YEAR))));
            query.setLong("mesFim", Long.parseLong(String.valueOf(mesFimExe)));

            lista.addAll(query.list());
          }
                  
          Iterator it = lista.iterator();

          Double[][] arrayDetalhesContas = detalheConta.getDetalhesContas();
         
          int linha = 0;
          while (it.hasNext()){
           
            Object aux[] = (Object[]) it.next();

            if ((aux[6] != null) && ("S".equals((String)aux[6])) && (linha == 0))
              linha++;
           
            if (aux[0] != null)
              arrayDetalhesContas[linha][0] = (Double) aux[0];
            if (aux[1] != null)
              arrayDetalhesContas[linha][1] = (Double) aux[1];
            if (aux[2] != null)
              arrayDetalhesContas[linha][2] = (Double) aux[2];
            if (aux[3] != null)
              arrayDetalhesContas[linha][3] = (Double) aux[3];
            if (aux[4] != null)
              arrayDetalhesContas[linha][4] = (Double) aux[4];
            if (aux[5] != null)
              arrayDetalhesContas[linha][5] = (Double) aux[5];
           
            linha++;
          }
         
            return (detalheConta);
         
        } catch(Exception e){
            this.logger.error(e);
          throw new ECARException("relAcompanhamento.financeiro.consulta.erro");
        }
    }

   
    /**
     * M�todo que verifica se � para apresentar o valor na devida posi��o, conforme a configura��o.
     * O Crit�rio para apresentar o valor ou n�o, depende se existe conte�do no campo financeiroDescValor<posicao>Cfg.
     * Ex.: Se existir conte�do em ConfiguracaoCfg.getFinanceiroDescValor1Cfg(), ent�o deve mostrar o valor1Efier.
     *
     * Obs.: O par�metro "posicao" � verificado em um array, portanto, para o valor1Efier, deve-se passar posicao=0,
     * para valor2Efier deve-se passar posicao=1, e assim por diante.
     *
     * @param posicao
     * @return
     * @throws ECARException
     */
    public boolean getVerificarMostrarValorByPosicaoCfg(int posicao) throws ECARException{
      ConfiguracaoCfg cfg = (new ConfiguracaoDao(null)).getConfiguracao();
      posicao++; //Incremento a posi��o porque ela � passada em array[0,1,2,3,4,5]
      boolean retorno = false;
     
      switch (posicao) {
    case 1:{
      if(cfg.getFinanceiroDescValor1Cfg() != null && !"".equals(cfg.getFinanceiroDescValor1Cfg().trim()))
        retorno = true;
      break;
    }
    case 2:{
      if(cfg.getFinanceiroDescValor2Cfg() != null && !"".equals(cfg.getFinanceiroDescValor2Cfg().trim()))
        retorno = true;
      break;
    }
    case 3:{
      if(cfg.getFinanceiroDescValor3Cfg() != null && !"".equals(cfg.getFinanceiroDescValor3Cfg().trim()))
        retorno = true;
      break;
    }
    case 4:{
      if(cfg.getFinanceiroDescValor4Cfg() != null && !"".equals(cfg.getFinanceiroDescValor4Cfg().trim()))
        retorno = true;
      break;
    }
    case 5:{
      if(cfg.getFinanceiroDescValor5Cfg() != null && !"".equals(cfg.getFinanceiroDescValor5Cfg().trim()))
        retorno = true;
      break;
    }
    case 6:{
      if(cfg.getFinanceiroDescValor6Cfg() != null && !"".equals(cfg.getFinanceiroDescValor6Cfg().trim()))
        retorno = true;
      break;
    }

    default:
      break;
    }
      return retorno;
    }
   
    /**
     * Verifica na configura��o se � para mostrar o campo recursoDescValor1, recursoDescValor2 ou recursoDescValor3.
     * @author aleixo
     * @version 0.1 - 26/03/2007
     * @param posicao
     * @return boolean
     * @throws ECARException
     */
    public boolean getVerificarMostrarRecursoByPosicaoCfg(int posicao) throws ECARException{
      ConfiguracaoCfg cfg = (new ConfiguracaoDao(null)).getConfiguracao();
      posicao++; //Incremento a posi��o porque ela � passada em array[0,1,2,3,4,5]
      boolean retorno = false;
     
      switch (posicao) {
    case 1:{
      if(cfg.getRecursoDescValor1Cfg() != null && !"".equals(cfg.getRecursoDescValor1Cfg().trim()))
        retorno = true;
      break;
    }
    case 2:{
      if(cfg.getRecursoDescValor2Cfg() != null && !"".equals(cfg.getRecursoDescValor2Cfg().trim()))
        retorno = true;
      break;
    }
    case 3:{
      if(cfg.getRecursoDescValor3Cfg() != null && !"".equals(cfg.getRecursoDescValor3Cfg().trim()))
        retorno = true;
      break;
    }

    default:
      break;
    }
      return retorno;
    }
   
    /**
     * Retorna os valores (registros) das contas para o arquivo de exporta��o
     * @param mesIni
     * @param anoIni
     * @param mesFim
     * @param anoFim
     * @return Lista de contas
     * @throws ECARException
     * @throws HibernateException
     */
    public List getValoresParaExportacao(String mesIni, String anoIni, String mesFim, String anoFim) throws ECARException, HibernateException{
      try{
           StringBuilder baseQuery = new StringBuilder("from EfItemEstRealizadoEfier itemEstRealizado ")
                   .append(" where (((itemEstRealizado.anoReferenciaEfier = :anoIni and itemEstRealizado.mesReferenciaEfier >= :mesIni)")
                   .append(" or itemEstRealizado.anoReferenciaEfier > :anoIni)")
                   .append(" and ((itemEstRealizado.anoReferenciaEfier = :anoFim and itemEstRealizado.mesReferenciaEfier <= :mesFim)")
                   .append(" or itemEstRealizado.anoReferenciaEfier < :anoFim))");
          
           Query objQuery = this.getSession().createQuery(baseQuery.toString());
          
           objQuery.setLong("mesIni", Long.valueOf(mesIni).longValue());
           objQuery.setLong("anoIni", Long.valueOf(anoIni).longValue());
           objQuery.setLong("mesFim", Long.valueOf(mesFim).longValue());
           objQuery.setLong("anoFim", Long.valueOf(anoFim).longValue());
          
        return objQuery.list();
        } catch(Exception e){
            this.logger.error(e);
          throw new ECARException("integracaoFinanceira.exportarArquivo.consultaDados.erro");
        }  
    }
   
    /**
     * Retorna uma lista de EfItemEstRealizadoEfier referente � conta/mes/ano.
     * @param conta
     * @param mes
     * @param ano
     * @return
     * @throws ECARException
     */
    public List getItemEstRealizadoEfierToImportacao(String conta, Long mes, Long ano) throws ECARException{
      try{
           StringBuilder baseQuery = new StringBuilder("from EfItemEstRealizadoEfier itemEstRealizado ")
                     .append(" where itemEstRealizado.anoReferenciaEfier = :ano")
                     .append("   and itemEstRealizado.mesReferenciaEfier = :mes")
                     .append("   and itemEstRealizado.contaSistemaOrcEfier = :conta");
          
           Query objQuery = this.getSession().createQuery(baseQuery.toString());
          
           objQuery.setString("conta", conta);
           objQuery.setLong("ano", ano.longValue());
           objQuery.setLong("mes", mes.longValue());
          
        return objQuery.list();
      }
      catch (HibernateException e) {
            this.logger.error(e);
          throw new ECARException("integracaoFinanceira.importarArquivo.importacao.erro");
    }
    }
   
    /**
     * Retorna uma lista de EfItemEstRealizadoEfier referente � Ano Inicio e M�s Inicio/Ano Fim M�s Fim.
     * Onde itemEstRealizado n�o seja entrada manual.
     * @author carlos
     * @since 16/04/2007
     * @param inicio
     * @param fim
     * @param sistema
     * @return List
     * @throws ECARException
     */
    public List getItemEstRealizadoEfierToImportacao(Date inicio, Date fim, ConfigSisExecFinanCsef sistema) throws ECARException{
     
    
      Long anoIni = Long.valueOf(new SimpleDateFormat("yyyy").format(inicio));
      Long mesIni = Long.valueOf(new SimpleDateFormat("MM").format(inicio));
      Long anoFim = Long.valueOf(new SimpleDateFormat("yyyy").format(fim));
      Long mesFim = Long.valueOf(new SimpleDateFormat("MM").format(fim));
     
      try{
           StringBuilder baseQuery = new StringBuilder("from EfItemEstRealizadoEfier itemEstRealizado ")
                     .append(" where itemEstRealizado.indManualEfier = 'N'")
                     .append(" and (itemEstRealizado.anoReferenciaEfier >= :anoIni and itemEstRealizado.anoReferenciaEfier <= :anoFim)")
                     .append(" and (itemEstRealizado.mesReferenciaEfier >= :mesIni and itemEstRealizado.mesReferenciaEfier <= :mesFim)")
                     .append(" and itemEstRealizado.configSisExecFinanCsefv.configSisExecFinanCsef.codCsef = :codSistema");
          
           Query objQuery = this.getSession().createQuery(baseQuery.toString());
           objQuery.setLong("anoIni", anoIni.longValue());
           objQuery.setLong("mesIni", mesIni.longValue());
           objQuery.setLong("anoFim", anoFim.longValue());
           objQuery.setLong("mesFim", mesFim.longValue());
           objQuery.setLong("codSistema", sistema.getCodCsef());
          
        return objQuery.list();
      }
      catch (HibernateException e) {
            this.logger.error(e);
          throw new ECARException("integracaoFinanceira.importarArquivo.importacao.erro");
    }
    }
   
    /**
     * Retorna uma lista de EfItemEstRealizadoEfier
     * @param conta
     * @param mes
     * @param indManualEfier
     * @param ano
     * @param codSistema
     * @return
     * @throws ECARException
     */
    public List getItemEstRealizadoEfier(String conta, String mes, String ano, String codSistema, String indManualEfier) throws ECARException{
     
      try
      {       

        Criteria crits = session.createCriteria(EfItemEstRealizadoEfier.class);
       
        if(!"".equals(conta.trim()))
          crits.add(Restrictions.eq("contaSistemaOrcEfier", conta));
       
        if(!"".equals(mes.trim()))
          crits.add(Restrictions.eq("mesReferenciaEfier", Long.valueOf(mes).longValue()));
       
        if(!"".equals(ano.trim()))
          crits.add(Restrictions.eq("anoReferenciaEfier", Long.valueOf(ano).longValue()));
       
        if(!"".equals(indManualEfier.trim()))
          crits.add(Restrictions.eq("indManualEfier", indManualEfier));
       
        if(!"".equals(codSistema.trim())){        
          Criteria crits2 = crits.createCriteria("configSisExecFinanCsefv");
          crits2.add(Restrictions.eq("configSisExecFinanCsef.codCsef", Long.valueOf(codSistema).longValue()));
        }
       
        return crits.list();

      }catch (Exception e) {
            this.logger.error(e);
          throw new ECARException("integracaoFinanceira.manual.buscar.erro");
    }
    }
}
TOP

Related Classes of ecar.dao.ItemEstruturaRealizadoDao

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.