package gcom.gui.faturamento.conta;
import gcom.atendimentopublico.ligacaoagua.FiltroLigacaoAguaSituacao;
import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao;
import gcom.atendimentopublico.ligacaoesgoto.FiltroLigacaoEsgotoPerfil;
import gcom.atendimentopublico.ligacaoesgoto.FiltroLigacaoEsgotoSituacao;
import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoPerfil;
import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoSituacao;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.Subcategoria;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.faturamento.FaturamentoGrupo;
import gcom.faturamento.FiltroFaturamentoGrupo;
import gcom.faturamento.consumotarifa.ConsumoTarifa;
import gcom.faturamento.consumotarifa.FiltroConsumoTarifa;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroNaoNulo;
import gcom.util.filtro.ParametroSimples;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
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;
public class ExibirSimularCalculoContaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Define a a��o de retorno
ActionForward retorno = actionMapping
.findForward("exibirSimularCalculoConta");
SimularCalculoContaActionForm form = (SimularCalculoContaActionForm) actionForm;
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
/*
* Costante que informa o ano limite para o campo anoMesReferencia da conta
*/
httpServletRequest.setAttribute("anoLimite", ConstantesSistema.ANO_LIMITE);
String limparForm = httpServletRequest.getParameter("limparForm");
//Removendo cole��es da sess�o
if (limparForm != null && !limparForm.equalsIgnoreCase("")){
sessao.removeAttribute("colecaoLigacaoAguaSituacao");
sessao.removeAttribute("colecaoLigacaoEsgotoSituacao");
sessao.removeAttribute("colecaoConsumoTarifa");
sessao.removeAttribute("colecaoFaturamentoGrupo");
sessao.removeAttribute("colecaoCategoria");
}
Fachada fachada = Fachada.getInstancia();
// Verifica se existe a cole��o de liga��o de �gua
if (sessao.getAttribute("colecaoLigacaoAguaSituacao") == null) {
// Cria��o do filtro para liga��o �gua situa��o
FiltroLigacaoAguaSituacao filtroLigacaoAguaSituacao = new FiltroLigacaoAguaSituacao(
FiltroLigacaoAguaSituacao.DESCRICAO);
filtroLigacaoAguaSituacao.adicionarParametro(new ParametroSimples(
FiltroLigacaoAguaSituacao.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// Pesquisa liga��o �gua situa��o
Collection colecaoLigacaoAguaSituacao = fachada.pesquisar(
filtroLigacaoAguaSituacao, LigacaoAguaSituacao.class
.getName());
sessao.setAttribute("colecaoLigacaoAguaSituacao",
colecaoLigacaoAguaSituacao);
}
if (sessao.getAttribute("colecaoLigacaoEsgotoSituacao") == null) {
// Cria��o do filtro para liga��o esgoto situa��o
FiltroLigacaoEsgotoSituacao filtroLigacaoEsgotoSituacao = new FiltroLigacaoEsgotoSituacao(
FiltroLigacaoEsgotoSituacao.DESCRICAO);
filtroLigacaoEsgotoSituacao
.adicionarParametro(new ParametroSimples(
FiltroLigacaoEsgotoSituacao.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// Pesquisa liga��o esgoto situa��o
Collection colecaoLigacaoEsgotoSituacao = fachada.pesquisar(
filtroLigacaoEsgotoSituacao, LigacaoEsgotoSituacao.class
.getName());
sessao.setAttribute("colecaoLigacaoEsgotoSituacao",
colecaoLigacaoEsgotoSituacao);
}
if (sessao.getAttribute("colecaoConsumoTarifa") == null) {
// Cria��o do filtro para consumo tarifa
FiltroConsumoTarifa filtroConsumoTarifa = new FiltroConsumoTarifa(
FiltroConsumoTarifa.DESCRICAO);
filtroConsumoTarifa.adicionarParametro(new ParametroSimples(
FiltroConsumoTarifa.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// Pesquisa consumo tarifa
Collection colecaoConsumoTarifa = fachada.pesquisar(filtroConsumoTarifa,
ConsumoTarifa.class.getName());
sessao.setAttribute("colecaoConsumoTarifa", colecaoConsumoTarifa);
}
if (sessao.getAttribute("colecaoFaturamentoGrupo") == null) {
// Cria��o do filtro para faturamento grupo
FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo(
FiltroFaturamentoGrupo.DESCRICAO);
filtroFaturamentoGrupo.adicionarParametro(new ParametroSimples(
FiltroFaturamentoGrupo.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoFaturamentoGrupo = fachada.pesquisar(filtroFaturamentoGrupo,
FaturamentoGrupo.class.getName());
sessao.setAttribute("colecaoFaturamentoGrupo", colecaoFaturamentoGrupo);
}
Map<String, String[]> requestMap = httpServletRequest.getParameterMap();
if(sessao.getAttribute("colecaoCategoria") != null)
{
Collection colecao = (Collection) sessao.getAttribute("colecaoCategoria");
Iterator iteratorColecaoCategoria = colecao.iterator();
Categoria categoria = null;
String quantidadeEconomia = null;
Integer qtdEconnomia = 0;
while (iteratorColecaoCategoria.hasNext()) {
categoria = (Categoria) iteratorColecaoCategoria.next();
// valor minimo
if (requestMap.get("categoria"
+ categoria.getId()) != null) {
quantidadeEconomia = (requestMap.get("categoria" + categoria.getId()))[0];
if (quantidadeEconomia == null
|| quantidadeEconomia.equalsIgnoreCase("")) {
throw new ActionServletException(
"atencao.required", null,
"Quantidade de Economias");
}
categoria.setQuantidadeEconomiasCategoria(new Integer(quantidadeEconomia));
qtdEconnomia = Util.somaInteiros(qtdEconnomia,new Integer(quantidadeEconomia));
}
}
if(!sessao.getAttribute("retorno").equals("sim")){
sessao.setAttribute("totalEconomia",qtdEconnomia);
}
}
// DEFINI��O QUE IR� AUXILIAR O RETORNO DOS POPUPS
sessao.setAttribute("UseCase", "SIMULARCALCULOCONTA");
if(sessao.getAttribute("retorno") == null){
sessao.setAttribute("existeColecao","nao");
sessao.removeAttribute("colecao");
}else if (sessao.getAttribute("colecao") == null){
sessao.removeAttribute("existeColecao");
}else if(sessao.getAttribute("colecao") != null && sessao.getAttribute("adicionar") == null){
sessao.setAttribute("existeColecao","nao");
}else if(sessao.getAttribute("adicionar") != null){
sessao.removeAttribute("existeColecao");
}
/*
* Colocado por Raphael Rossiter em 14/03/2007
* Objetivo: Manipula��o dos objetos que ser�o exibidos no formul�rio de acordo com a empresa
*/
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
//httpServletRequest.setAttribute("empresaNome", sistemaParametro.getNomeAbreviadoEmpresa().trim());
httpServletRequest.setAttribute("indicadorTarifaCategoria", sistemaParametro.getIndicadorTarifaCategoria().toString());
/*
* Colocado por Raphael Rossiter em 02/09/2008
* Objetivo: Obtendo o percentual default de esgoto
*/
String percentualDefault = Util.formatarMoedaReal(ConstantesSistema.CEM);
FiltroLigacaoEsgotoPerfil filtroLigacaoEsgotoPerfil = new FiltroLigacaoEsgotoPerfil();
filtroLigacaoEsgotoPerfil.adicionarParametro(new ParametroSimples(
FiltroLigacaoEsgotoPerfil.INDICADOR_PRINCIPAL, ConstantesSistema.SIM));
filtroLigacaoEsgotoPerfil.adicionarParametro(new ParametroNaoNulo(
FiltroLigacaoEsgotoPerfil.PERCENTUAL));
Collection colecaoLigacaoEsgotoPerfil = fachada.pesquisar(filtroLigacaoEsgotoPerfil,
LigacaoEsgotoPerfil.class.getName());
if (colecaoLigacaoEsgotoPerfil != null && !colecaoLigacaoEsgotoPerfil.isEmpty()){
LigacaoEsgotoPerfil ligacaoEsgotoPerfil = (LigacaoEsgotoPerfil)
Util.retonarObjetoDeColecao(colecaoLigacaoEsgotoPerfil);
percentualDefault = Util.formatarMoedaReal(ligacaoEsgotoPerfil
.getPercentualEsgotoConsumidaColetada());
}
httpServletRequest.setAttribute("percentualEsgotoDefault", percentualDefault);
String areaInformada = form.getArea();
String mesAnoInformado = form.getMesAnoReferencia();
String pontosUtilizacaoInformado = form.getPontosUtilizacao();
String numeroMoradoresInformado = form.getNumeroMoradores();
/*
* [SB0001] - Determinar consumo m�nimo por �rea
*/
if (mesAnoInformado != null && !mesAnoInformado.trim().equals("")
&& (areaInformada != null && !areaInformada.trim().equals("")
|| pontosUtilizacaoInformado != null && !pontosUtilizacaoInformado.trim().equals("")
|| numeroMoradoresInformado != null && !numeroMoradoresInformado.trim().equals(""))) {
Integer anoMes = Util.formatarMesAnoComBarraParaAnoMes(mesAnoInformado);
BigDecimal areaTotal = null;
if (areaInformada != null && !areaInformada.trim().equals("")) {
areaTotal = Util.formatarMoedaRealparaBigDecimal(areaInformada);
}
BigDecimal pontosUtilizacao = null;
if (pontosUtilizacaoInformado != null && !pontosUtilizacaoInformado.trim().equals("")) {
pontosUtilizacao = Util.formatarMoedaRealparaBigDecimal(pontosUtilizacaoInformado);
}
BigDecimal numeroMoradores = null;
if (numeroMoradoresInformado != null && !numeroMoradoresInformado.trim().equals("")) {
numeroMoradores = Util.formatarMoedaRealparaBigDecimal(numeroMoradoresInformado);
}
Collection<Categoria> colecaoCategoria = (Collection<Categoria>) sessao.getAttribute("colecaoCategoria");
Collection<Subcategoria> colecaoSubcategoria = (Collection<Subcategoria>) sessao.getAttribute("colecaoSubcategoria");
Integer consumoMinimo = fachada.calcularConsumoMinimo(areaTotal, anoMes, colecaoCategoria, colecaoSubcategoria,
pontosUtilizacao, numeroMoradores);
if (consumoMinimo != null) {
form.setConsumoFaturadoAgua(consumoMinimo.toString());
form.setConsumoFaturadoEsgoto(consumoMinimo.toString());
} else {
form.setConsumoFaturadoAgua("");
form.setConsumoFaturadoEsgoto("");
}
}
return retorno;
}
}