package gcom.gui.arrecadacao;
import gcom.arrecadacao.FiltroConsultarDadosDiariosArrecadacao;
import gcom.arrecadacao.FiltroConsultarDadosDiariosArrecadacao.GROUP_BY;
import gcom.arrecadacao.bean.FiltrarDadosDiariosArrecadacaoHelper;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.sistemaparametro.SistemaParametro;
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.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, Francisco Nascimento
* @created 20 de Maio de 2006, 14 de novembro de 2008
**/
public class ExibirConsultarDadosDiariosGerenciaAction 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("exibirConsultarDadosDiariosGerencia");
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.GERENCIA_REGIONAL);
Map<Integer, Collection<FiltrarDadosDiariosArrecadacaoHelper>>
mapDadosDiariosAnoMes = fachada.filtrarDadosDiariosArrecadacao(
periodoArrecadacaoInicial,
periodoArrecadacaoFinal,
filtro);
for(Integer itemAnoMes : mapDadosDiariosAnoMes.keySet()){
BigDecimal valorTotal = new BigDecimal(0.0);
BigDecimal totalDebitos = new BigDecimal(0.0);
BigDecimal totalDescontos = new BigDecimal(0.0);
BigDecimal totalArrecadacao = new BigDecimal(0.0);
BigDecimal totalDevolucoes = new BigDecimal(0.0);
BigDecimal totalArrecadacaoLiquida = new BigDecimal(0.0);
for (FiltrarDadosDiariosArrecadacaoHelper helper : mapDadosDiariosAnoMes.get(itemAnoMes)){
valorTotal = valorTotal.add(helper.getValorArrecadacaoLiquida());
totalDebitos = totalDebitos.add(helper.getValorDebitos());
totalDescontos = totalDescontos.add(helper.getValorDescontos());
totalArrecadacao = totalArrecadacao.add(helper.getValorArrecadacao());
totalDevolucoes = totalDevolucoes.add(helper.getValorDevolucoes());
totalArrecadacaoLiquida = totalArrecadacaoLiquida.add(helper.getValorArrecadacaoLiquida());
}
colecaoValorTotal.add(valorTotal);
valorTotalPeriodo = valorTotalPeriodo.add(valorTotal);
GerenciaRegional gerenciaTodos = new GerenciaRegional();
gerenciaTodos.setId(-1);
gerenciaTodos.setNomeAbreviado("");
gerenciaTodos.setNome("TODAS");
FiltrarDadosDiariosArrecadacaoHelper helperTodos = new FiltrarDadosDiariosArrecadacaoHelper();
helperTodos.setItemAgrupado(gerenciaTodos);
helperTodos.setValorDebitos(totalDebitos);
helperTodos.setValorDescontos(totalDescontos);
helperTodos.setValorArrecadacao(totalArrecadacao);
helperTodos.setValorDevolucoes(totalDevolucoes);
helperTodos.setValorArrecadacaoLiquida(totalArrecadacaoLiquida);
helperTodos.setPercentual(new BigDecimal(100.00));
mapDadosDiariosAnoMes.get(itemAnoMes).add(helperTodos);
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("mapDadosDiariosAnoMes", mapDadosDiariosAnoMes);
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);
}
}
// if(sessao.getAttribute("dadosArrecadacaoUnidadeNegocio") == null){
//
// Collection colecaoArrecadacaoDadosDiariosGerencia = null;
//
// colecaoArrecadacaoDadosDiariosGerencia = (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(
// colecaoArrecadacaoDadosDiariosGerencia, 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 acumuladorHelperGerencia = new ArrecadacaoDadosDiariosAcumuladorHelper(
// ArrecadacaoDadosDiariosItemAcumuladorHelper.GROUP_BY_GERENCIA);
//
// Collection<ArrecadacaoDadosDiariosItemAcumuladorHelper> itensAgrupadosPorGerenciaEmAnoMes =
// acumuladorHelperGerencia.aplicarFiltroEAcumularValores(
// colecaoArrecadacaoDadosDiariosGerencia, itemAnoMes.getAnoMesReferencia() + "", null, null, null,
// null, null, null, null, null, null, null, false, true, false, false,false);
//
// Collections.sort((List) itensAgrupadosPorGerenciaEmAnoMes,
// new Comparator() {
// public int compare(Object a, Object b) {
// String codigo1 = ((ArrecadacaoDadosDiariosItemAcumuladorHelper) a)
// .getGerenciaRegional().getNomeAbreviado();
// String codigo2 = ((ArrecadacaoDadosDiariosItemAcumuladorHelper) b)
// .getGerenciaRegional().getNomeAbreviado();
// if (codigo1 == null || codigo1.equals("")) {
// return -1;
// } else {
// return codigo1.compareTo(codigo2);
// }
// }
// });
//
// mapAnoMes.put(itemAnoMes, itensAgrupadosPorGerenciaEmAnoMes);
//
// System.out.println("ValorTotal.agrupadoporgerencia["+itemAnoMes.getAnoMesReferencia()+"]="
// +acumuladorHelperGerencia.getValorLiquidoTotal());
// }
//
// System.out.println("ValorTotal.agrupadoporanomes="+acumuladorHelper.getValorLiquidoTotal());
//
// sessao.setAttribute("dadosArrecadacaoUnidadeNegocio",mapAnoMes);//mapPrincipal);
// sessao.setAttribute("valordadosArrecadacaoUnidadeNegocio",acumuladorHelper.getValorLiquidoTotal());
// }
return retorno;
}
}