package gcom.gui.micromedicao; import gcom.cadastro.empresa.Empresa; import gcom.cadastro.empresa.FiltroEmpresa; import gcom.cadastro.localidade.FiltroSetorComercial; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.localidade.SetorComercial; import gcom.cobranca.CobrancaAcao; import gcom.cobranca.CobrancaCriterio; import gcom.cobranca.CobrancaGrupo; import gcom.cobranca.FiltroCobrancaAcao; import gcom.cobranca.FiltroCobrancaCriterio; import gcom.cobranca.FiltroCobrancaGrupo; import gcom.cobranca.RotaAcaoCriterio; import gcom.fachada.Fachada; import gcom.faturamento.FaturamentoGrupo; import gcom.faturamento.FiltroFaturamentoGrupo; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.micromedicao.FiltroLeiturista; import gcom.micromedicao.Leiturista; import gcom.micromedicao.leitura.FiltroLeituraTipo; import gcom.micromedicao.leitura.LeituraTipo; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroNaoNulo; import gcom.util.filtro.ParametroSimples; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; 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; /** * Action que define o pr�-processamento da p�gina de inserir rota * * @author Vivianne Sousa * @created 21/03/2006 */ public class ExibirInserirRotaAction extends GcomAction { /** * Este caso de uso permite a inclus�o de uma nova rota * * [UC0038] Inserir Rota * * * @author Vivianne Sousa * @date 21/03/2006 * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("inserirRota"); InserirRotaActionForm inserirRotaActionForm = (InserirRotaActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); //Pesquisando grupo de cobran�a FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo(); filtroCobrancaGrupo.setCampoOrderBy(FiltroCobrancaGrupo.DESCRICAO_ABREVIADA); Collection<CobrancaGrupo> collectionCobrancaGrupo = fachada.pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName()); //httpServletRequest.setAttribute("collectionCobrancaGrupo", collectionCobrancaGrupo); sessao.setAttribute("collectionCobrancaGrupo", collectionCobrancaGrupo); //Fim de pesquisando grupo de cobran�a //Pesquisando grupo de faturamento FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo(); filtroFaturamentoGrupo.setCampoOrderBy(FiltroFaturamentoGrupo.DESCRICAO_ABREVIADA); Collection<FaturamentoGrupo> collectionFaturamentoGrupo = fachada.pesquisar(filtroFaturamentoGrupo, FaturamentoGrupo.class.getName()); //httpServletRequest.setAttribute("collectionFaturamentoGrupo", collectionFaturamentoGrupo); sessao.setAttribute("collectionFaturamentoGrupo", collectionFaturamentoGrupo); //Fim de pesquisando grupo de faturamento //Pesquisando tipo de leitura FiltroLeituraTipo filtroLeituraTipo = new FiltroLeituraTipo(); filtroLeituraTipo.setCampoOrderBy(FiltroLeituraTipo.DESCRICAO); filtroLeituraTipo.adicionarParametro(new ParametroSimples(FiltroLeituraTipo.INDICADOR_USO,ConstantesSistema.INDICADOR_USO_ATIVO)); Collection<LeituraTipo> collectionLeituraTipo = fachada.pesquisar(filtroLeituraTipo, LeituraTipo.class.getName()); //httpServletRequest.setAttribute("collectionLeituraTipo", collectionLeituraTipo); sessao.setAttribute("collectionLeituraTipo", collectionLeituraTipo); //Fim de pesquisando tipo de leitura //Pesquisando empresa leitur�stica FiltroEmpresa filtroEmpresa = new FiltroEmpresa(); filtroEmpresa.setCampoOrderBy(FiltroEmpresa.DESCRICAO); Collection<Empresa> collectionEmpresa = fachada.pesquisar(filtroEmpresa, Empresa.class.getName()); //httpServletRequest.setAttribute("collectionEmpresa", collectionEmpresa); sessao.setAttribute("collectionEmpresa", collectionEmpresa); //Fim de pesquisando empresa leitur�stica //c�digo p verificar se j� foram adicionadas todos os crit�rios de cobran�a da rota //se ainda falta adicionar HABILITA o bot�o adicionar //sen�o DESABILITA o bot�o adicionar FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaCriterio.INDICADOR_USO,ConstantesSistema.SIM)); Collection<CobrancaAcao> collectionCobrancaAcao = new ArrayList(); // crit�rio de cobran�a Collection<RotaAcaoCriterio> collectionRotaAcaoCriterio = (Collection<RotaAcaoCriterio>)sessao.getAttribute("collectionRotaAcaoCriterio"); String primeiraVez = httpServletRequest.getParameter("menu"); if (primeiraVez != null && !primeiraVez.equals("")) { criteriosCobrancaRotaInicial (collectionRotaAcaoCriterio,fachada,sessao,httpServletRequest); collectionCobrancaAcao = fachada.pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); sessao.setAttribute("collectionCobrancaAcao", collectionCobrancaAcao); }else if ((collectionRotaAcaoCriterio != null && collectionRotaAcaoCriterio.size()!= 0) && (sessao.getAttribute("UseCase") != null && sessao.getAttribute("UseCase").equals("INSERIRROTA"))) { collectionCobrancaAcao = fachada.pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); collectionRotaAcaoCriterio = (Collection) sessao .getAttribute("collectionRotaAcaoCriterio"); //manda para a sess�o a cole��o de collectionRotaAcaoCriterio sessao.setAttribute("collectionRotaAcaoCriterio", collectionRotaAcaoCriterio); if (collectionRotaAcaoCriterio.size() != collectionCobrancaAcao.size()){ httpServletRequest.setAttribute("adicionar","habilitado"); }else{ httpServletRequest.setAttribute("adicionar","desabilitado"); } }/* else { criteriosCobrancaRotaInicial (collectionRotaAcaoCriterio,fachada,sessao,httpServletRequest); }*/ // crit�rio de cobran�a if (httpServletRequest.getParameter("desfazer") != null && httpServletRequest.getParameter("desfazer").equalsIgnoreCase("S")) { //-------------- bt DESFAZER --------------- inserirRotaActionForm.setIdLocalidade(""); inserirRotaActionForm.setLocalidadeDescricao(""); inserirRotaActionForm.setCodigoSetorComercial(""); inserirRotaActionForm.setSetorComercialDescricao(""); inserirRotaActionForm.setCodigoRota(""); inserirRotaActionForm.setCobrancaGrupo("" + ConstantesSistema.NUMERO_NAO_INFORMADO); inserirRotaActionForm.setFaturamentoGrupo("" + ConstantesSistema.NUMERO_NAO_INFORMADO); inserirRotaActionForm.setLeituraTipo("" + ConstantesSistema.NUMERO_NAO_INFORMADO); inserirRotaActionForm.setEmpresaLeituristica("" + ConstantesSistema.NUMERO_NAO_INFORMADO); inserirRotaActionForm.setEmpresaCobranca("" + ConstantesSistema.NUMERO_NAO_INFORMADO); inserirRotaActionForm.setEmpresaEntregaContas("" + ConstantesSistema.NUMERO_NAO_INFORMADO); inserirRotaActionForm.setCobrancaCriterio("" + ConstantesSistema.NUMERO_NAO_INFORMADO); //inserirRotaActionForm.setDataAjusteLeitura(""); //inserirRotaActionForm.setIndicadorAjusteConsumo("" + ConstantesSistema.NUMERO_NAO_INFORMADO); inserirRotaActionForm.setIndicadorFiscalizarCortado(""); inserirRotaActionForm.setIndicadorFiscalizarSuprimido("" + ConstantesSistema.NUMERO_NAO_INFORMADO); inserirRotaActionForm.setIndicadorGerarFalsaFaixa("" + ConstantesSistema.NUMERO_NAO_INFORMADO); inserirRotaActionForm.setPercentualGeracaoFaixaFalsa(""); inserirRotaActionForm.setIndicadorGerarFiscalizacao("" + ConstantesSistema.NUMERO_NAO_INFORMADO); inserirRotaActionForm.setPercentualGeracaoFiscalizacao(""); inserirRotaActionForm.setIdLeiturista(""); inserirRotaActionForm.setNomeLeiturista(""); inserirRotaActionForm.setNumeroLimiteImoveis(""); criteriosCobrancaRotaInicial (collectionRotaAcaoCriterio,fachada,sessao,httpServletRequest); } inserirRotaActionForm.setIndicadorAjusteConsumo( ConstantesSistema.NAO+"" ); inserirRotaActionForm.setIndicadorRotaAlternativa( ConstantesSistema.NAO+""); inserirRotaActionForm.setIndicadorTransmissaoOffline(ConstantesSistema.NAO+""); inserirRotaActionForm.setIndicadorSequencialLeitura(ConstantesSistema.NAO+""); //-------Parte que trata do c�digo quando o usu�rio tecla enter String idDigitadoEnterLocalidade = inserirRotaActionForm.getIdLocalidade(); if (idDigitadoEnterLocalidade != null && !idDigitadoEnterLocalidade.equalsIgnoreCase("")&& Util.validarValorNaoNumerico(idDigitadoEnterLocalidade)){ //Localidade n�o num�rico. httpServletRequest.setAttribute("nomeCampo","idLocalidade"); throw new ActionServletException("atencao.nao.numerico", null,"Localidade "); } verificaExistenciaCodLocalidade(idDigitadoEnterLocalidade,inserirRotaActionForm, httpServletRequest,fachada); String idDigitadoEnterSetorComercial = inserirRotaActionForm.getCodigoSetorComercial(); if(idDigitadoEnterSetorComercial != null && !idDigitadoEnterSetorComercial.equalsIgnoreCase("")&& Util.validarValorNaoNumerico(idDigitadoEnterSetorComercial)){ //Setor Comercial n�o num�rico. httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial"); throw new ActionServletException("atencao.nao.numerico", null,"Setor Comercial "); } verificaExistenciaCodSetorComercial(idDigitadoEnterLocalidade,idDigitadoEnterSetorComercial,inserirRotaActionForm, httpServletRequest,fachada); String idDigitadoEnterLeiturista = inserirRotaActionForm.getIdLeiturista(); if (idDigitadoEnterLeiturista != null && !idDigitadoEnterLeiturista.equalsIgnoreCase("")&& Util.validarValorNaoNumerico(idDigitadoEnterLeiturista)){ //Leiturista n�o num�rico. httpServletRequest.setAttribute("nomeCampo","idLeiturista"); throw new ActionServletException("atencao.nao.numerico", null,"Leiturista "); } else { verificaExistenciaCodLeiturista(idDigitadoEnterLeiturista, inserirRotaActionForm, httpServletRequest,fachada); } //-------Fim de parte que trata do c�digo quando o usu�rio tecla enter sessao.removeAttribute("caminhoRetornoTelaPesquisa"); // DEFINI��O QUE IR� AUXILIAR O RETORNO DOS POPUPS sessao.setAttribute("UseCase", "INSERIRROTA"); return retorno; } private void verificaExistenciaCodLocalidade(String idDigitadoEnterLocalidade, InserirRotaActionForm inserirRotaActionForm, HttpServletRequest httpServletRequest, Fachada fachada) { //Verifica se o c�digo da Localidade foi digitado if (idDigitadoEnterLocalidade != null && !idDigitadoEnterLocalidade.trim().equals("") && Integer.parseInt(idDigitadoEnterLocalidade) > 0) { //Recupera a localidade informada pelo usu�rio Localidade localidadeEncontrada = fachada.pesquisarLocalidadeDigitada(new Integer(idDigitadoEnterLocalidade)); //Caso a localidade informada pelo usu�rio esteja cadastrada no sistema //Seta os dados da localidade no form //Caso contr�rio seta as informa��es da localidade para vazio //e indica ao usu�rio que a localidade n�o existe if (localidadeEncontrada != null) { //a localidade foi encontrada inserirRotaActionForm.setIdLocalidade("" + (localidadeEncontrada.getId())); inserirRotaActionForm .setLocalidadeDescricao(localidadeEncontrada.getDescricao()); httpServletRequest.setAttribute("idLocalidadeNaoEncontrada", "true"); httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial"); } else { //a localidade n�o foi encontrada inserirRotaActionForm.setIdLocalidade(""); httpServletRequest.setAttribute("idLocalidadeNaoEncontrada", "exception"); inserirRotaActionForm .setLocalidadeDescricao("LOCALIDADE INEXISTENTE"); } } } private void verificaExistenciaCodSetorComercial(String idDigitadoEnterLocalidade, String idDigitadoEnterSetorComercial, InserirRotaActionForm inserirRotaActionForm, HttpServletRequest httpServletRequest, Fachada fachada) { //Verifica se o c�digo do Setor Comercial foi digitado if ((idDigitadoEnterSetorComercial != null && !idDigitadoEnterSetorComercial.toString() .trim().equalsIgnoreCase("")) && (idDigitadoEnterLocalidade != null && !idDigitadoEnterLocalidade.toString().trim() .equalsIgnoreCase(""))) { FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial(); if (idDigitadoEnterLocalidade != null && !idDigitadoEnterLocalidade.toString().trim().equalsIgnoreCase("")) { filtroSetorComercial.adicionarParametro(new ParametroSimples( FiltroSetorComercial.ID_LOCALIDADE, new Integer( idDigitadoEnterLocalidade))); } filtroSetorComercial.adicionarParametro(new ParametroSimples( FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, new Integer( idDigitadoEnterSetorComercial))); Collection<SetorComercial> setorComerciais = fachada.pesquisar( filtroSetorComercial, SetorComercial.class.getName()); if (setorComerciais != null && !setorComerciais.isEmpty()) { //o setor comercial foi encontrado SetorComercial setorComercialEncontrado = (SetorComercial) Util.retonarObjetoDeColecao(setorComerciais); inserirRotaActionForm.setCodigoSetorComercial( "" + (setorComercialEncontrado.getCodigo())); inserirRotaActionForm.setSetorComercialDescricao(setorComercialEncontrado.getDescricao()); httpServletRequest.setAttribute("idSetorComercialNaoEncontrada","true"); httpServletRequest.setAttribute("nomeCampo","codigoRota"); // Retorna o maior c�digo de Rota existente para o setor comercial pesquisado int codigo = fachada.pesquisarMaximoCodigoRota(new Integer(setorComercialEncontrado.getId())); // Acrescenta 1 no valor do c�digo para setar o primeiro c�digo vazio para o usu�rio codigo = (codigo + 1); inserirRotaActionForm.setCodigoRota("" + codigo); httpServletRequest.setAttribute("nomeCampo", "codigoRota"); } else { //o setor comercial n�o foi encontrado inserirRotaActionForm.setCodigoSetorComercial(""); httpServletRequest.setAttribute("idSetorComercialNaoEncontrada", "exception"); inserirRotaActionForm .setSetorComercialDescricao("SETOR COMERCIAL INEXISTENTE"); } } } private void criteriosCobrancaRotaInicial (Collection collectionRotaAcaoCriterio, Fachada fachada, HttpSession sessao, HttpServletRequest httpServletRequest){ collectionRotaAcaoCriterio = new ArrayList(); FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroNaoNulo(FiltroCobrancaAcao.COBRANCAO_CRITERIO)); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaCriterio.INDICADOR_USO,ConstantesSistema.SIM)); Collection<CobrancaGrupo> collectionCobrancaAcao = fachada.pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); Iterator iterator = collectionCobrancaAcao.iterator(); while (iterator.hasNext()) { CobrancaAcao cobrancaAcao = (CobrancaAcao) iterator.next(); RotaAcaoCriterio rotaAcaoCriterioNova = new RotaAcaoCriterio(); rotaAcaoCriterioNova.setCobrancaAcao(cobrancaAcao); //Filtro p pesquisar o crit�rio cobran�a padr�o para cada a��o de cobran�a FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio(); filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(FiltroCobrancaCriterio.ID,cobrancaAcao.getCobrancaCriterio().getId())); Collection<CobrancaCriterio> collectionCobrancaCriterio = fachada.pesquisar(filtroCobrancaCriterio, CobrancaCriterio.class.getName()); CobrancaCriterio cobrancaCriterio = (CobrancaCriterio)Util.retonarObjetoDeColecao(collectionCobrancaCriterio); rotaAcaoCriterioNova.setCobrancaCriterio(cobrancaCriterio); collectionRotaAcaoCriterio.add(rotaAcaoCriterioNova); } //manda para a sess�o a cole��o de collectionRotaAcaoCriterio sessao.setAttribute("collectionRotaAcaoCriterio", collectionRotaAcaoCriterio); httpServletRequest.setAttribute("adicionar","desabilitado"); } private void verificaExistenciaCodLeiturista(String idDigitadoEnterLeiturista, InserirRotaActionForm inserirRotaActionForm, HttpServletRequest httpServletRequest, Fachada fachada) { //Verifica se o c�digo do Leiturista foi digitado if (idDigitadoEnterLeiturista != null && !idDigitadoEnterLeiturista.trim().equals("") && Integer.parseInt(idDigitadoEnterLeiturista) > 0) { //Recupera o leiturista informado pelo usu�rio FiltroLeiturista filtroLeiturista = new FiltroLeiturista(); filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.FUNCIONARIO); filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.CLIENTE); filtroLeiturista.adicionarParametro(new ParametroSimples( FiltroLeiturista.ID, idDigitadoEnterLeiturista)); filtroLeiturista.adicionarParametro(new ParametroSimples( FiltroLeiturista.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection leituristaEncontrado = fachada.pesquisar(filtroLeiturista, Leiturista.class.getName()); //Caso o leiturista informado pelo usu�rio esteja cadastrado no sistema //Seta os dados do leiturista no form //Caso contr�rio seta as informa��es de leiturista para vazio //e indica ao usu�rio que o leiturista n�o existe if (leituristaEncontrado != null && leituristaEncontrado.size() > 0) { //leiturista foi encontrado Leiturista leiturista = (Leiturista) ((List) leituristaEncontrado).get(0); inserirRotaActionForm.setIdLeiturista("" + leiturista.getId()); if (leiturista.getFuncionario() != null){ inserirRotaActionForm.setNomeLeiturista(leiturista.getFuncionario().getNome()); } else if (leiturista.getCliente() != null){ inserirRotaActionForm.setNomeLeiturista(leiturista.getCliente().getNome()); } httpServletRequest.setAttribute("idLeituristaEncontrado","true"); httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial"); } else { //o leiturista n�o foi encontrado inserirRotaActionForm.setIdLeiturista(""); inserirRotaActionForm.setNomeLeiturista("LEITURISTA INEXISTENTE"); httpServletRequest.setAttribute("nomeCampo","idLeiturista"); } } } }