package gcom.gui.arrecadacao; import gcom.arrecadacao.FiltroConsultarDadosDiariosArrecadacao; import gcom.arrecadacao.FiltroConsultarDadosDiariosArrecadacao.GROUP_BY; import gcom.arrecadacao.bean.FiltrarDadosDiariosArrecadacaoHelper; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.cobranca.DocumentoTipo; import gcom.fachada.Fachada; import gcom.gui.GcomAction; import gcom.util.Util; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.TreeMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * Description of the Class * * @author Fernanda Paiva * @created 24 de Maio de 2006 **/ public class ExibirConsultarDadosDiariosDocumentoAction extends GcomAction { /** * Description of the Method * * @param actionMapping * Description of the Parameter * @param actionForm * Description of the Parameter * @param httpServletRequest * Description of the Parameter * @param httpServletResponse * Description of the Parameter * @return Description of the Return Value */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping .findForward("exibirConsultarDadosDiariosDocumento"); Fachada fachada = Fachada.getInstancia(); // Mudar isso quando implementar a parte de seguran�a HttpSession sessao = httpServletRequest.getSession(false); FiltroConsultarDadosDiariosArrecadacao filtro = (FiltroConsultarDadosDiariosArrecadacao) sessao.getAttribute("filtroConsultarDadosDiariosArrecadacao"); Integer periodoArrecadacaoInicial = (Integer) sessao.getAttribute("periodoArrecadacaoInicial"); Integer periodoArrecadacaoFinal = (Integer) sessao.getAttribute("periodoArrecadacaoFinal"); FiltrarDadosDiariosArrecadacaoActionForm filtroDadosDiarios = (FiltrarDadosDiariosArrecadacaoActionForm) sessao.getAttribute("FiltrarDadosDiariosArrecadacaoActionForm"); String nomeArrecadador = filtroDadosDiarios.getNomeArrecadador(); Collection<BigDecimal> colecaoValorTotal = new ArrayList<BigDecimal>(); BigDecimal valorTotalPeriodo = new BigDecimal(0.0); if (filtro != null){ filtro = filtro.clone(); Map<Integer, FiltrarDadosDiariosArrecadacaoHelper> mapDadosProcessamento = new TreeMap<Integer, FiltrarDadosDiariosArrecadacaoHelper>(); filtro.setAgrupamento(GROUP_BY.TIPO_DOCUMENTO_AGREGADOR); Map<Integer, Collection<FiltrarDadosDiariosArrecadacaoHelper>> mapDadosDiariosAnoMes = fachada.filtrarDadosDiariosArrecadacao( periodoArrecadacaoInicial, periodoArrecadacaoFinal, filtro); Map<Integer, Boolean> flagDocumentoAgregador = new HashMap<Integer, Boolean>(); for(Integer itemAnoMes : mapDadosDiariosAnoMes.keySet()){ BigDecimal valorTotal = new BigDecimal(0.0); DocumentoTipo documentoTipoTodos = new DocumentoTipo(); documentoTipoTodos.setId(-1); documentoTipoTodos.setDescricaoDocumentoTipo("TODOS"); FiltrarDadosDiariosArrecadacaoHelper helperTodos = new FiltrarDadosDiariosArrecadacaoHelper(); helperTodos.setItemAgrupado(documentoTipoTodos); int qtdDocumentos = 0; int qtdPagamentos = 0; BigDecimal valorDebitos = new BigDecimal(0.0); BigDecimal valorDescontos = new BigDecimal(0.0); BigDecimal valorArrecadacao = new BigDecimal(0.0); BigDecimal valorDevolucoes = new BigDecimal(0.0); BigDecimal valorArrecadacaoLiquida = new BigDecimal(0.0); for (FiltrarDadosDiariosArrecadacaoHelper helper : mapDadosDiariosAnoMes.get(itemAnoMes)){ valorTotal = valorTotal.add(helper.getValorArrecadacaoLiquida()); DocumentoTipo documentoTipo = (DocumentoTipo) helper.getItemAgrupado(); boolean ehDocumentoTipoAgregador = false; // verificar se o tipo de documento � agregador if (documentoTipo.getIndicadorAgregador() != null && documentoTipo.getIndicadorAgregador().equals(new Short("1"))) { ehDocumentoTipoAgregador = true; } flagDocumentoAgregador.put(documentoTipo.getId(), ehDocumentoTipoAgregador); qtdDocumentos += helper.getQuantidadeDocumentos(); qtdPagamentos += helper.getQuantidadePagamentos(); valorDebitos = valorDebitos.add(helper.getValorDebitos()); valorDescontos = valorDescontos.add(helper.getValorDescontos()); valorArrecadacao = valorArrecadacao.add(helper.getValorArrecadacao()); valorDevolucoes = valorDevolucoes.add(helper.getValorDevolucoes()); valorArrecadacaoLiquida = valorArrecadacaoLiquida.add(helper.getValorArrecadacaoLiquida()); } helperTodos.setQuantidadeDocumentos(qtdDocumentos); helperTodos.setQuantidadePagamentos(qtdPagamentos); helperTodos.setValorDebitos(valorDebitos); helperTodos.setValorDescontos(valorDescontos); helperTodos.setValorArrecadacao(valorArrecadacao); helperTodos.setValorDevolucoes(valorDevolucoes); helperTodos.setValorArrecadacaoLiquida(valorArrecadacaoLiquida); helperTodos.setPercentual(new BigDecimal(100.00)); mapDadosDiariosAnoMes.get(itemAnoMes).add(helperTodos); flagDocumentoAgregador.put(documentoTipoTodos.getId(), true); colecaoValorTotal.add(valorTotal); valorTotalPeriodo = valorTotalPeriodo.add(valorTotal); Date dataMesInformado = fachada.pesquisarDataProcessamentoMes(itemAnoMes); Date dataAtual = fachada.pesquisarDataProcessamentoMes(this.getSistemaParametro().getAnoMesArrecadacao()); FiltrarDadosDiariosArrecadacaoHelper helperDadasProcessamento = new FiltrarDadosDiariosArrecadacaoHelper(); if(dataMesInformado!=null){ helperDadasProcessamento .setUltimoProcessamentoMesInformado(Util.formatarDataComHora(dataMesInformado)); } if(dataAtual!=null){ helperDadasProcessamento .setUltimoProcessamentoAtualSistema(Util.formatarDataComHora(dataAtual)); } if ( itemAnoMes >= this.getSistemaParametro().getAnoMesArrecadacao() ){ // httpServletRequest.setAttribute("tipoProcessamento","provisorio"); helperDadasProcessamento.setTipoProcessamento("provisorio"); }else{ // httpServletRequest.setAttribute("tipoProcessamento","definitivo"); helperDadasProcessamento.setTipoProcessamento("definitivo"); } Integer anoMesAnterior = Util.subtrairMesDoAnoMes(itemAnoMes, 1); BigDecimal faturamentoCobradoEmConta = fachada.pesquisarFaturamentoCobradoEmConta(anoMesAnterior); helperDadasProcessamento.setFaturamentoCobradoEmConta( Util.formatarMoedaReal(faturamentoCobradoEmConta)); mapDadosProcessamento.put(itemAnoMes, helperDadasProcessamento); } sessao.setAttribute("mapDadosProcessamento", mapDadosProcessamento); sessao.setAttribute("mapDocumentoAgregador", flagDocumentoAgregador); sessao.setAttribute("mapDadosDiariosAnoMes", mapDadosDiariosAnoMes); sessao.setAttribute("colecaoValorTotal", colecaoValorTotal); sessao.setAttribute("colecaoValorTotal", colecaoValorTotal); sessao.setAttribute("valorTotalPeriodo", valorTotalPeriodo); sessao.setAttribute("arrecadador", nomeArrecadador); SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema(); if (sistemaParametro.getCdDadosDiarios() != null && sistemaParametro.getCdDadosDiarios() == 1){ sessao.setAttribute("exibirFaturamentoCobrado", true); } } // BigDecimal valor = new BigDecimal("0.00"); // // // if(sessao.getAttribute("dadosArrecadacaoDocumento") == null){ // // Collection colecaoArrecadacaoDadosDiariosDocumento = null; // // colecaoArrecadacaoDadosDiariosDocumento = (Collection) sessao // .getAttribute("colecaoArrecadacaoDadosDiarios"); // // Comparator comparadorAnoMes = new Comparator(){ // public int compare(Object a, Object b) { // String codigo1 = ((ArrecadacaoDadosDiariosItemAcumuladorHelper) a) // .getAnoMesReferencia() + ""; // String codigo2 = ((ArrecadacaoDadosDiariosItemAcumuladorHelper) b) // .getAnoMesReferencia() + ""; // if (codigo1 == null || codigo1.equals("")) { // return -1; // } else { // return codigo1.compareTo(codigo2); // } // } // }; // // Map<ArrecadacaoDadosDiariosItemAcumuladorHelper, // Collection<ArrecadacaoDadosDiariosItemAcumuladorHelper>> mapAnoMes = new TreeMap(comparadorAnoMes); // // ArrecadacaoDadosDiariosAcumuladorHelper acumuladorHelper = new ArrecadacaoDadosDiariosAcumuladorHelper( // ArrecadacaoDadosDiariosItemAcumuladorHelper.GROUP_BY_ANO_MES); // // Collection<ArrecadacaoDadosDiariosItemAcumuladorHelper> itensAgrupadosAnoMes = // acumuladorHelper.aplicarFiltroEAcumularValores( // colecaoArrecadacaoDadosDiariosDocumento, null, null, null, null, // null, null, null, null, null, null, null, false, false, false,false, false); // // for (Iterator iter = itensAgrupadosAnoMes.iterator(); iter // .hasNext();) { // ArrecadacaoDadosDiariosItemAcumuladorHelper itemAnoMes = // (ArrecadacaoDadosDiariosItemAcumuladorHelper) iter.next(); // // ArrecadacaoDadosDiariosAcumuladorHelper acumuladorHelperDocumento = new ArrecadacaoDadosDiariosAcumuladorHelper( // ArrecadacaoDadosDiariosItemAcumuladorHelper.GROUP_BY_DOCUMENTO_AGREGADOR); // // Collection<ArrecadacaoDadosDiariosItemAcumuladorHelper> itensAgrupadosPorDocumentoEmAnoMes = // acumuladorHelperDocumento.aplicarFiltroEAcumularValores( // colecaoArrecadacaoDadosDiariosDocumento, itemAnoMes.getAnoMesReferencia() + "", null, null, null, // null, null, null, null, null, null, null, false, false, false, false, true); // // Collections.sort((List) itensAgrupadosPorDocumentoEmAnoMes, // new Comparator() { // public int compare(Object a, Object b) { // String codigo1 = ((ArrecadacaoDadosDiariosItemAcumuladorHelper) a) // .getDocumentoTipoAgregador().getDescricaoDocumentoTipo(); // String codigo2 = ((ArrecadacaoDadosDiariosItemAcumuladorHelper) b) // .getDocumentoTipoAgregador().getDescricaoDocumentoTipo(); // if (codigo1 == null || codigo1.equals("")) { // return -1; // } else { // return codigo1.compareTo(codigo2); // } // } // }); // // mapAnoMes.put(itemAnoMes, itensAgrupadosPorDocumentoEmAnoMes); // // System.out.println("ValorTotal.agrupadoporDocumento["+itemAnoMes.getAnoMesReferencia()+"]=" // +acumuladorHelperDocumento.getValorLiquidoTotal()); // } // // valor = acumuladorHelper.getValorLiquidoTotal(); // // sessao.setAttribute("dadosArrecadacaoDocumento",mapAnoMes); // sessao.setAttribute("valordadosArrecadacaoDocumento",valor); // // } return retorno; } }