package gcom.gui.cobranca; import gcom.cadastro.empresa.Empresa; import gcom.cadastro.empresa.FiltroEmpresa; import gcom.cadastro.localidade.FiltroGerenciaRegional; import gcom.cadastro.localidade.FiltroSetorComercial; import gcom.cadastro.localidade.FiltroUnidadeNegocio; import gcom.cadastro.localidade.GerenciaRegional; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.localidade.SetorComercial; import gcom.cadastro.localidade.UnidadeNegocio; import gcom.cobranca.CobrancaGrupo; import gcom.cobranca.FiltroCobrancaGrupo; 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.FiltroRota; import gcom.micromedicao.Leiturista; import gcom.micromedicao.Rota; import gcom.micromedicao.leitura.FiltroLeituraTipo; import gcom.micromedicao.leitura.LeituraTipo; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.Intervalo; import gcom.util.filtro.ParametroSimples; import gcom.util.filtro.ParametroSimplesIn; 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; /** * @date 20/10/09 * @author Anderson Italo * Pre-Processamento do UC0960 Transferir Rotas Entre Grupos e/ou Empresas */ public class ExibirTransferirRotaGrupoEmpresaAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping .findForward("filtrarTransferirRotaGrupoEmpresa"); HttpSession sessao = httpServletRequest.getSession(false); Fachada fachada = Fachada.getInstancia(); TransferirRotasGruposEmpresasActionForm form = (TransferirRotasGruposEmpresasActionForm) actionForm; //carrega os dados do formul�rio //grupo de cobran�a FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo(); filtroCobrancaGrupo.adicionarParametro(new ParametroSimples( FiltroCobrancaGrupo.INDICADOR_USO , ConstantesSistema.INDICADOR_USO_ATIVO)); filtroCobrancaGrupo.setCampoOrderBy(FiltroCobrancaGrupo.DESCRICAO); Collection colecaoCobrancaGrupo = fachada.pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName()); if (colecaoCobrancaGrupo == null || colecaoCobrancaGrupo.isEmpty()){ throw new ActionServletException("Atencao.Sem_dados_para_selecao"); } httpServletRequest.setAttribute("colecaoGrupoCobrancaFiltro",colecaoCobrancaGrupo); //grupo de faturamento FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo(); filtroFaturamentoGrupo.adicionarParametro(new ParametroSimples( FiltroFaturamentoGrupo.INDICADOR_USO , ConstantesSistema.INDICADOR_USO_ATIVO)); filtroFaturamentoGrupo.setCampoOrderBy(FiltroFaturamentoGrupo.DESCRICAO); Collection colecaoFaturamentoGrupo = fachada.pesquisar(filtroFaturamentoGrupo, FaturamentoGrupo.class.getName()); if (colecaoFaturamentoGrupo == null || colecaoFaturamentoGrupo.isEmpty()){ throw new ActionServletException("Atencao.Sem_dados_para_selecao"); } httpServletRequest.setAttribute("colecaoGrupoFaturamentoFiltro",colecaoFaturamentoGrupo); //empresa de faturamento/cobran�a FiltroEmpresa filtroEmpresa = new FiltroEmpresa(); filtroEmpresa.adicionarParametro(new ParametroSimples( FiltroEmpresa.INDICADORUSO , ConstantesSistema.INDICADOR_USO_ATIVO)); filtroEmpresa.setCampoOrderBy(FiltroEmpresa.DESCRICAO); Collection colecaoEmpresa = fachada.pesquisar(filtroEmpresa, Empresa.class.getName()); if (colecaoEmpresa == null || colecaoEmpresa.isEmpty()){ throw new ActionServletException("Atencao.Sem_dados_para_selecao"); } httpServletRequest.setAttribute("colecaoEmpresaFaturamentoFiltro",colecaoEmpresa); //gerencia regional FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional(); filtroGerenciaRegional.adicionarParametro(new ParametroSimples( FiltroGerenciaRegional.INDICADOR_USO , ConstantesSistema.INDICADOR_USO_ATIVO)); filtroGerenciaRegional.setCampoOrderBy(FiltroGerenciaRegional.NOME); Collection colecaoGerenciaRegional = fachada.pesquisar(filtroGerenciaRegional, GerenciaRegional.class.getName()); if (colecaoGerenciaRegional == null || colecaoGerenciaRegional.isEmpty()){ throw new ActionServletException("Atencao.Sem_dados_para_selecao"); } httpServletRequest.setAttribute("colecaoGerenciaRegional",colecaoGerenciaRegional); //unidade de negocio FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio(); filtroUnidadeNegocio.adicionarParametro(new ParametroSimples( FiltroUnidadeNegocio.INDICADOR_USO , ConstantesSistema.INDICADOR_USO_ATIVO)); filtroUnidadeNegocio.setCampoOrderBy(FiltroUnidadeNegocio.NOME); Collection colecaoUnidadeNegocio = fachada.pesquisar(filtroUnidadeNegocio, UnidadeNegocio.class.getName()); if (colecaoUnidadeNegocio == null || colecaoUnidadeNegocio.isEmpty()){ throw new ActionServletException("Atencao.Sem_dados_para_selecao"); } httpServletRequest.setAttribute("colecaoUnidadeNegocio",colecaoUnidadeNegocio); //Tipo Leitura FiltroLeituraTipo filtroLeituraTipo = new FiltroLeituraTipo(); filtroLeituraTipo.adicionarParametro(new ParametroSimples( FiltroLeituraTipo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroLeituraTipo.setCampoOrderBy(FiltroLeituraTipo.DESCRICAO); Collection<LeituraTipo> colecaoLeituraTipo = fachada.pesquisar(filtroLeituraTipo, LeituraTipo.class.getName()); httpServletRequest.setAttribute("colecaoTipoLeitura",colecaoLeituraTipo); if (httpServletRequest.getParameter("selecionar") != null && httpServletRequest.getParameter("selecionar").equalsIgnoreCase("1")) { //limpa dados sele��o caso estejam preenchidos limparDadosSelecao(form,httpServletRequest, sessao); //o usu�rio ciclou em selecionar ent�o faz a sele��o das rotas efetuarFiltroRotas(form, httpServletRequest, fachada, sessao); }else{ if (httpServletRequest.getParameter("desfazer") != null && httpServletRequest.getParameter("desfazer").equalsIgnoreCase("S")){ //limpa os dados do formul�rio form.setIdLocalidadeInicial(null); form.setDescricaoLocalidadeInicial(null); form.setIdLocalidadeFinal(null); form.setDescricaoLocalidadeFinal(null); form.setIdLocalidadeInicial(null); form.setDescricaoLocalidadeFinal(null); form.setIdSetorComercialInicial(null); form.setDescricaoSetorComercialInicial(null); form.setIdSetorComercialFinal(null); form.setDescricaoSetorComercialFinal(null); form.setIdRotaInicial(null); form.setIdRotaFinal(null); form.setIdGrupoCobrancaFiltro(null); form.setIdGrupoFaturamentoFiltro(null); form.setIdEmpresaCobrancaFiltro(null); form.setIdEmpresaFaturamentoFiltro(null); form.setIdLeiturista(null); form.setNomeLeiturista(null); form.setIdTipoLeitura(null); } //limpa dados sele��o caso estejam preenchidos limparDadosSelecao(form, httpServletRequest, sessao); //localidade inicial //-------Parte que trata do c�digo quando o usu�rio tecla enter String idDigitadoEnterLocalidadeInicial = form.getIdLocalidadeInicial(); if (form.getIdLocalidadeInicial() != null && !form.getIdLocalidadeInicial().equals("")){ if (idDigitadoEnterLocalidadeInicial != null && !idDigitadoEnterLocalidadeInicial.equalsIgnoreCase("") && Util.validarValorNaoNumerico(idDigitadoEnterLocalidadeInicial)){ //Localidade n�o num�rico. httpServletRequest.setAttribute("nomeCampo","idLocalidadeInicial"); throw new ActionServletException("atencao.nao.numerico", null,"Localidade Inicial "); } } verificaExistenciaCodLocalidade(idDigitadoEnterLocalidadeInicial,form, httpServletRequest,fachada,sessao, false); //localidade final String idDigitadoEnterLocalidadeFinal = ""; if (form.getIdLocalidadeFinal() != null && !form.getIdLocalidadeFinal().equals("")){ idDigitadoEnterLocalidadeFinal = form.getIdLocalidadeFinal(); if (idDigitadoEnterLocalidadeFinal != null && !idDigitadoEnterLocalidadeFinal.equalsIgnoreCase("") && Util.validarValorNaoNumerico(idDigitadoEnterLocalidadeFinal)){ //Localidade n�o num�rico. httpServletRequest.setAttribute("nomeCampo","idLocalidadeFinal"); throw new ActionServletException("atencao.nao.numerico", null,"Localidade Final "); } if (idDigitadoEnterLocalidadeInicial == null || idDigitadoEnterLocalidadeInicial.equals("") || (new Integer(idDigitadoEnterLocalidadeFinal).intValue() < new Integer(idDigitadoEnterLocalidadeInicial).intValue())){ throw new ActionServletException( "atencao.localidade.final.maior.localidade.inicial", null, "Localidade Final"); } verificaExistenciaCodLocalidade(idDigitadoEnterLocalidadeFinal,form, httpServletRequest,fachada,sessao, true); } if (form.getIdLocalidadeInicial() != null && form.getIdLocalidadeInicial().equals(form.getIdLocalidadeFinal())){ //setor comercial inicial String idDigitadoEnterSetorComercialInicial = form.getIdSetorComercialInicial(); if (form.getIdSetorComercialInicial() != null && !form.getIdSetorComercialInicial().equals("")){ if(idDigitadoEnterSetorComercialInicial != null && !idDigitadoEnterSetorComercialInicial.equalsIgnoreCase("")&& Util.validarValorNaoNumerico(idDigitadoEnterSetorComercialInicial)){ //Setor Comercial n�o num�rico. httpServletRequest.setAttribute("nomeCampo","idSetorComercialInicial"); throw new ActionServletException("atencao.nao.numerico", null,"Setor Comercial Inicial "); } verificaExistenciaCodSetorComercial(idDigitadoEnterLocalidadeInicial,idDigitadoEnterSetorComercialInicial,form, httpServletRequest,fachada,sessao, false); } //setor comercial final String idDigitadoEnterSetorComercialFinal = ""; if (form.getIdSetorComercialFinal() != null && !form.getIdSetorComercialFinal().equals("")){ idDigitadoEnterSetorComercialFinal = form.getIdSetorComercialFinal(); if(idDigitadoEnterSetorComercialFinal != null && !idDigitadoEnterSetorComercialFinal.equalsIgnoreCase("")&& Util.validarValorNaoNumerico(idDigitadoEnterSetorComercialFinal)){ //Setor Comercial n�o num�rico. httpServletRequest.setAttribute("nomeCampo","idSetorComercialFinal"); throw new ActionServletException("atencao.nao.numerico", null,"Setor Comercial Final "); } if (idDigitadoEnterSetorComercialInicial == null || idDigitadoEnterSetorComercialInicial.equals("") || (new Integer(idDigitadoEnterSetorComercialFinal).intValue() < new Integer(idDigitadoEnterSetorComercialInicial).intValue())){ throw new ActionServletException( "atencao.setor.comercial.final.maior.setor.comercial.inicial", null, "Setor Comercial Final"); } verificaExistenciaCodSetorComercial(idDigitadoEnterLocalidadeFinal,idDigitadoEnterSetorComercialFinal,form, httpServletRequest,fachada,sessao, true); } }else if (form.getIdLocalidadeInicial() != null && !form.getIdLocalidadeInicial().equals(form.getIdLocalidadeFinal())){ //limpa campos form.setIdSetorComercialInicial(""); form.setDescricaoSetorComercialInicial(""); form.setIdRotaInicial(""); form.setIdSetorComercialFinal(""); form.setDescricaoSetorComercialFinal(""); form.setIdRotaFinal(""); } } if ( httpServletRequest.getParameter("reloadPage") == null || !httpServletRequest.getParameter("reloadPage").equals("")){ verificaExistenciaCodLeiturista(form.getIdLeiturista(), form,httpServletRequest); } return retorno; } /** * @date 20/10/09 * @author Anderson Italo * limpa dados da sele��o de rotas */ private void limparDadosSelecao(TransferirRotasGruposEmpresasActionForm form, HttpServletRequest httpServletRequest, HttpSession sessao) { form.setQuantidadeRotas(null); form.setIdGrupoCobrancaSelecao(null); form.setIdGrupoCobrancaDestino(null); form.setIdGrupoFaturamentoSelecao(null); form.setIdGrupoFaturamentoDestino(null); form.setIdEmpresaCobrancaSelecao(null); form.setIdEmpresaCobrancaDestino(null); form.setIdEmpresaFaturamentoSelecao(null); form.setIdEmpresaFaturamentoDestino(null); sessao.removeAttribute("rotasSelecionadas"); httpServletRequest.removeAttribute("colecaoEmpresaCobrancaSelecao"); httpServletRequest.removeAttribute("colecaoEmpresaFaturamentoSelecao"); httpServletRequest.removeAttribute("colecaoGrupoCobrancaSelecao"); httpServletRequest.removeAttribute("colecaoGrupoFaturamentoSelecao"); httpServletRequest.removeAttribute("colecaoCobrancaGrupoDestino"); httpServletRequest.removeAttribute("colecaoFaturamentoGrupoDestino"); httpServletRequest.removeAttribute("colecaoEmpresaDestino"); httpServletRequest.removeAttribute("desabilitaFiltroESelecao"); } /** * @date 20/10/09 * @author Anderson Italo * pesquisar da localidade digitada */ private void verificaExistenciaCodLocalidade(String idDigitadoEnterLocalidade, TransferirRotasGruposEmpresasActionForm formulario, HttpServletRequest httpServletRequest, Fachada fachada, HttpSession sessao, boolean indicadorFinal) { //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 if (!indicadorFinal){ formulario.setIdLocalidadeInicial("" + (localidadeEncontrada.getId())); formulario.setDescricaoLocalidadeInicial(localidadeEncontrada.getDescricao()); if (formulario.getIdLocalidadeFinal() == null || formulario.getIdLocalidadeFinal().equals("") || formulario.getIdLocalidadeFinal().equals(localidadeEncontrada.getId().toString())){ formulario.setIdLocalidadeFinal("" + (localidadeEncontrada.getId())); formulario.setDescricaoLocalidadeFinal(localidadeEncontrada.getDescricao()); httpServletRequest.setAttribute("desabilitaSetor","false"); }else{ //limpa campos do setor comercial formulario.setIdSetorComercialFinal(""); formulario.setDescricaoSetorComercialFinal(""); formulario.setIdRotaFinal(""); httpServletRequest.setAttribute("desabilitaSetor","true"); } httpServletRequest.setAttribute("idLocalidadeInicialNaoEncontrada","true"); httpServletRequest.setAttribute("nomeCampo","idSetorComercialNaoEncontrada"); }else{ formulario.setIdLocalidadeFinal("" + (localidadeEncontrada.getId())); formulario.setDescricaoLocalidadeFinal(localidadeEncontrada.getDescricao()); httpServletRequest.setAttribute("idLocalidadeFinalNaoEncontrada","true"); httpServletRequest.setAttribute("nomeCampo","idSetorComercialNaoEncontrada"); } } else { //a localidade n�o foi encontrada if (!indicadorFinal){ formulario.setIdLocalidadeInicial(""); httpServletRequest.setAttribute("idLocalidadeInicialNaoEncontrada","exception"); formulario.setDescricaoLocalidadeInicial("LOCALIDADE INEXISTENTE"); httpServletRequest.setAttribute("nomeCampo","idLocalidadeInicial"); }else{ formulario.setIdLocalidadeFinal(""); httpServletRequest.setAttribute("idLocalidadeFinalNaoEncontrada","exception"); formulario.setDescricaoLocalidadeFinal("LOCALIDADE INEXISTENTE"); httpServletRequest.setAttribute("nomeCampo","idLocalidadeFinal"); } } } } /** * @date 20/10/09 * @author Anderson Italo * pesquisar do setor comercial informado */ private void verificaExistenciaCodSetorComercial(String idDigitadoEnterLocalidade, String idDigitadoEnterSetorComercial, TransferirRotasGruposEmpresasActionForm formulario, HttpServletRequest httpServletRequest, Fachada fachada, HttpSession sessao, boolean indicadorFinal) { // 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); if (!indicadorFinal){ //setor inicial formulario.setIdSetorComercialInicial( "" + (setorComercialEncontrado.getCodigo())); formulario.setDescricaoSetorComercialInicial(setorComercialEncontrado.getDescricao()); formulario.setIdRotaInicial(""); if (formulario.getIdLocalidadeInicial().equals(formulario.getIdLocalidadeInicial()) && (formulario.getIdSetorComercialFinal() == null || formulario.getIdSetorComercialFinal().equals(""))){ formulario.setIdSetorComercialFinal( "" + (setorComercialEncontrado.getCodigo())); formulario.setDescricaoSetorComercialFinal(setorComercialEncontrado.getDescricao()); formulario.setIdRotaFinal(""); } httpServletRequest.setAttribute("idSetorComercialInicialNaoEncontrado","true"); httpServletRequest.setAttribute("nomeCampo","idSetorComercialInicial"); }else{ //setor final formulario.setIdSetorComercialFinal( "" + (setorComercialEncontrado.getCodigo())); formulario.setDescricaoSetorComercialFinal(setorComercialEncontrado.getDescricao()); httpServletRequest.setAttribute("idSetorComercialFinalNaoEncontrado","true"); httpServletRequest.setAttribute("nomeCampo","idSetorComercialFinal"); } } else { //o setor comercial n�o foi encontrado if (!indicadorFinal){ formulario.setIdSetorComercialInicial(""); formulario.setDescricaoSetorComercialInicial("SETOR COMERCIAL INEXISTENTE"); httpServletRequest.setAttribute("idSetorComercialInicialNaoEncontrado","exception"); httpServletRequest.setAttribute("nomeCampo","idSetorComercialInicial"); }else{ formulario.setIdSetorComercialFinal(""); formulario.setDescricaoSetorComercialFinal("SETOR COMERCIAL INEXISTENTE"); httpServletRequest.setAttribute("idSetorComercialFinalNaoEncontrado","exception"); httpServletRequest.setAttribute("nomeCampo","idSetorComercialFinal"); } } } } /** * @date 20/10/09 * @author Anderson Italo * [FS0006] - Obter Lista de Rotas */ private void efetuarFiltroRotas(TransferirRotasGruposEmpresasActionForm formulario, HttpServletRequest httpServletRequest, Fachada fachada, HttpSession sessao){ boolean informouParametro = false; Collection rotasSelecionadas = null; FiltroRota filtroRota = null; //localidade if (formulario.getIdLocalidadeInicial() != null && !formulario.getIdLocalidadeInicial().equals("")){ //[FS0003] - Verificar exist�ncia da localidade //Recupera a localidade inicial informada pelo usu�rio Localidade localidadeInicialEncontrada = fachada.pesquisarLocalidadeDigitada(new Integer(formulario.getIdLocalidadeInicial())); if (localidadeInicialEncontrada == null){ throw new ActionServletException("pesquisa.localidade.inexistente", null,"Localidade Inicial "); } //Recupera a localidade final informada pelo usu�rio Localidade localidadeFinalEncontrada = null; if (formulario.getIdLocalidadeFinal() != null && !formulario.getIdLocalidadeFinal().equals("")){ localidadeFinalEncontrada = fachada.pesquisarLocalidadeDigitada(new Integer(formulario.getIdLocalidadeFinal())); if (localidadeFinalEncontrada == null){ throw new ActionServletException("pesquisa.localidade.inexistente", null,"Localidade Final "); }else{ //valida intervalo de localidade if (localidadeFinalEncontrada.getId().intValue() < localidadeInicialEncontrada.getId().intValue() ){ throw new ActionServletException("atencao.localidade.final.maior.localidade.inicial", null,"Localidade Final "); } } }else{ localidadeFinalEncontrada = localidadeInicialEncontrada; } //setor comercial if (formulario.getIdSetorComercialInicial() != null && !formulario.getIdSetorComercialInicial().equals("")){ //[FS0004] - Verificar exist�ncia do setor //Recupera o setor inicial informada pelo usu�rio FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial(); filtroSetorComercial.adicionarParametro(new ParametroSimples( FiltroSetorComercial.ID_LOCALIDADE, localidadeInicialEncontrada.getId())); filtroSetorComercial.adicionarParametro(new ParametroSimples( FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, new Integer( formulario.getIdSetorComercialInicial()))); Collection<SetorComercial> setorComerciais = fachada.pesquisar( filtroSetorComercial, SetorComercial.class.getName()); SetorComercial setorInicialEncontrado = null; if (setorComerciais == null || setorComerciais.isEmpty() ){ throw new ActionServletException("atencao.setor_comercial.inexistente", null,"Setor Comercial Inicial "); }else{ setorInicialEncontrado = (SetorComercial) Util.retonarObjetoDeColecao(setorComerciais); } //Recupera o setor final informada pelo usu�rio SetorComercial setorFinalEncontrado = null; if (formulario.getIdSetorComercialFinal() != null && !formulario.getIdSetorComercialFinal().equals("")){ filtroSetorComercial = new FiltroSetorComercial(); filtroSetorComercial.adicionarParametro(new ParametroSimples( FiltroSetorComercial.ID_LOCALIDADE, localidadeFinalEncontrada.getId())); filtroSetorComercial.adicionarParametro(new ParametroSimples( FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, new Integer( formulario.getIdSetorComercialFinal()))); Collection<SetorComercial> setorComerciaisAux = fachada.pesquisar( filtroSetorComercial, SetorComercial.class.getName()); if (setorComerciaisAux == null || setorComerciaisAux.isEmpty() ){ throw new ActionServletException("atencao.setor_comercial.inexistente", null,"Setor Comercial Final "); }else{ setorFinalEncontrado =(SetorComercial) Util.retonarObjetoDeColecao(setorComerciaisAux); //valida intervalo de setor comercial if (setorFinalEncontrado.getId().intValue() < setorInicialEncontrado.getId().intValue() ){ throw new ActionServletException("atencao.setor.comercial.final.maior.setor.comercial.inicial", null,"Setor Comercial Final "); } } }else{ setorFinalEncontrado = setorInicialEncontrado; } //rota /*1. Caso tenha informado o intervalo de rotas, * seleciona as rotas do intervalo (a partir da tabela ROTA com ROTA_ID BETWEEN * Id da Rota Inicial e Id da Rota Final) e retorna a lista de rotas para o passo * que chamou este subfluxo.*/ if (formulario.getIdRotaInicial() != null && !formulario.getIdRotaInicial().equals("")){ //[FS0005] - Verificar exist�ncia de rotas //Recupera a rota inicial informada pelo usu�rio filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new ParametroSimples( FiltroRota.LOCALIDADE_ID, localidadeInicialEncontrada.getId())); filtroRota.adicionarParametro(new ParametroSimples( FiltroRota.SETOR_COMERCIAL_ID, setorInicialEncontrado.getId())); filtroRota.adicionarParametro(new ParametroSimples( FiltroRota.CODIGO_ROTA, new Integer(formulario.getIdRotaInicial()))); Collection colecaoRotas = fachada.pesquisar(filtroRota, Rota.class.getName()); Rota rotaInicialEncontrada = null; if (colecaoRotas == null || colecaoRotas.isEmpty()){ throw new ActionServletException("atencao.pesquisa.rota_inexistente", null,"Rota Inicial "); }else{ rotaInicialEncontrada = (Rota) Util.retonarObjetoDeColecao(colecaoRotas); } //Recupera a rota final informada pelo usu�rio Rota rotaFinalEncontrada = null; if (formulario.getIdRotaFinal() != null && formulario.getIdRotaFinal().equals("")){ filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new ParametroSimples( FiltroRota.LOCALIDADE_ID, localidadeFinalEncontrada.getId())); filtroRota.adicionarParametro(new ParametroSimples( FiltroRota.SETOR_COMERCIAL_ID, setorFinalEncontrado.getId())); filtroRota.adicionarParametro(new ParametroSimples( FiltroRota.CODIGO_ROTA, new Integer(formulario.getIdRotaFinal()))); Collection colecaoRotasAux = fachada.pesquisar(filtroRota, Rota.class.getName()); if (colecaoRotas == null || colecaoRotas.isEmpty()){ throw new ActionServletException("atencao.pesquisa.rota_inexistente", null,"Rota Final "); }else{ rotaFinalEncontrada = (Rota) Util.retonarObjetoDeColecao(colecaoRotasAux); } }else{ rotaFinalEncontrada = rotaInicialEncontrada; } if (rotaInicialEncontrada != null){ if (rotaFinalEncontrada.getId().intValue() < rotaInicialEncontrada.getId().intValue() ){ formulario.setIdRotaFinal(""); throw new ActionServletException("atencao.rota.final.maior.rota.inicial", null,"Rota Final "); } informouParametro = true; filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new Intervalo( FiltroRota.ID_ROTA, rotaInicialEncontrada.getId(), rotaFinalEncontrada.getId())); } }else{ /*2. Caso contr�rio, caso tenha informado o intervalo de setores, * [seleciona as rotas de cada um dos setores do intervalo (ROTA_ID da * tabela ROTA com STCM_ID BETWEEN Id do Setor Comercial Inicial e Id * do Setor Comercial Inicial).*/ informouParametro = true; filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new Intervalo( FiltroRota.SETOR_COMERCIAL_ID, setorInicialEncontrado.getId(), setorFinalEncontrado.getId())); } }else{ /*3. Caso contr�rio, caso tenha informado o intervalo de localidade, seleciona * as rotas dos setores de cada uma das localidades do intervalo (ROTA_ID da * tabela ROTA com STCM_ID=STCM_ID da tabela SETOR_COMERCIAL com LOCA_ID=LOCA_ID * da tabela LOCALIDADE com LOCA_ID BETWEEN Id da Localidade Inicial * e Id da Localidade Inicial).*/ informouParametro = true; filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new Intervalo( FiltroRota.LOCALIDADE_ID, localidadeInicialEncontrada.getId(), localidadeFinalEncontrada.getId())); } }else if (formulario.getIdUnidadeNegocio() != null && formulario.getIdUnidadeNegocio().length > 0){ /*4. Caso contr�rio, caso tenha informado a Unidade de Neg�cio, seleciona as rotas * dos setores das localidades da Unidade de Neg�cio (ROTA_ID da tabela ROTA com * STCM_ID=STCM_ID da tabela SETOR_COMERCIAL com LOCA_ID=LOCA_ID da tabela * LOCALIDADE com UNEG_ID=Id da Unidade de Neg�cio).*/ Collection idsUnidadeNegocio = new ArrayList(); for (int i = 0; i < formulario.getIdUnidadeNegocio().length; i++) { if (!formulario.getIdUnidadeNegocio()[i].equals("-1") && !formulario.getIdUnidadeNegocio()[i].equals("")){ idsUnidadeNegocio.add(new Integer(formulario.getIdUnidadeNegocio()[i])); } } if (!idsUnidadeNegocio.isEmpty()){ informouParametro = true; filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new ParametroSimplesIn(FiltroRota.UNIDADE_NEGOCIO_ID, idsUnidadeNegocio)); } }else if (formulario.getIdGerenciaRegional() != null && formulario.getIdGerenciaRegional().length > 0){ /*5. Caso contr�rio, caso tenha informado a ger�ncia, seleciona * as rotas dos setores das localidades da ger�ncia (ROTA_ID da tabela * ROTA com STCM_ID=STCM_ID da tabela SETOR_COMERCIAL com LOCA_ID=LOCA_ * ID da tabela LOCALIDADE com UNEG_ID = UNEG_ID da tabela UNIDADE_NEGOCIO * com GREG_ID=Id da Ger�ncia).*/ Collection idsGerencia = new ArrayList(); for (int i = 0; i < formulario.getIdGerenciaRegional().length; i++) { if (!formulario.getIdGerenciaRegional()[i].equals("-1") && !formulario.getIdGerenciaRegional()[i].equals("")){ idsGerencia.add(new Integer(formulario.getIdGerenciaRegional()[i])); } } if (!idsGerencia.isEmpty()){ informouParametro = true; filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new ParametroSimplesIn(FiltroRota.GERENCIA_REGIONAL_ID, idsGerencia)); } } if (formulario.getIdGrupoFaturamentoFiltro() != null && formulario.getIdGrupoFaturamentoFiltro().length > 0){ /*6. Caso tenha informado grupo(s) de faturamento, seleciona as rotas * pertencentes ao(s) grupo(s) de faturamento (ROTA_ID da tabela ROTA com * FTGR_ID = FTGR_ID do(s) grupo(s) informado(s)).*/ Collection idsGrupoFaturamentoFiltro = new ArrayList(); for (int i = 0; i < formulario.getIdGrupoFaturamentoFiltro().length; i++) { if (!formulario.getIdGrupoFaturamentoFiltro()[i].equals("-1") && !formulario.getIdGrupoFaturamentoFiltro()[i].equals("")){ idsGrupoFaturamentoFiltro.add(new Integer(formulario.getIdGrupoFaturamentoFiltro()[i])); } } if (!idsGrupoFaturamentoFiltro.isEmpty()){ informouParametro = true; if (filtroRota == null){ filtroRota = new FiltroRota(); } filtroRota.adicionarParametro(new ParametroSimplesIn(FiltroRota.FATURAMENTO_GRUPO_ID, idsGrupoFaturamentoFiltro)); } } if (formulario.getIdGrupoCobrancaFiltro() != null && formulario.getIdGrupoCobrancaFiltro().length > 0){ /*7. Caso tenha informado grupo(s) de cobran�a, seleciona as rotas pertencentes * ao(s) grupo(s) de cobran�a (ROTA_ID da tabela ROTA com CBGR_ID = CBGR_ID do(s) * grupo(s) informado(s)).*/ Collection idsGrupoCobrancaFiltro = new ArrayList(); for (int i = 0; i < formulario.getIdGrupoCobrancaFiltro().length; i++) { if (!formulario.getIdGrupoCobrancaFiltro()[i].equals("-1") && !formulario.getIdGrupoCobrancaFiltro()[i].equals("")){ idsGrupoCobrancaFiltro.add(new Integer(formulario.getIdGrupoCobrancaFiltro()[i])); } } if (!idsGrupoCobrancaFiltro.isEmpty()){ informouParametro = true; if (filtroRota == null){ filtroRota = new FiltroRota(); } filtroRota.adicionarParametro(new ParametroSimplesIn(FiltroRota.COBRANCA_GRUPO_ID, idsGrupoCobrancaFiltro)); } } if (formulario.getIdEmpresaFaturamentoFiltro() != null && formulario.getIdEmpresaFaturamentoFiltro().length > 0){ /*8. Caso tenha informado empresa(s) de faturamento, seleciona * as rotas vinculadas a esta(s) empresa(s) de faturamento (ROTA_ID * da tabela ROTA com EMPR_ID = EMPR_ID da(s) empresa(s) de * faturamento informada(s)).*/ Collection idsEmpresaFaturamentoFiltro = new ArrayList(); for (int i = 0; i < formulario.getIdEmpresaFaturamentoFiltro().length; i++) { if (!formulario.getIdEmpresaFaturamentoFiltro()[i].equals("-1") && !formulario.getIdEmpresaFaturamentoFiltro()[i].equals("")){ idsEmpresaFaturamentoFiltro.add(new Integer(formulario.getIdEmpresaFaturamentoFiltro()[i])); } } if (!idsEmpresaFaturamentoFiltro.isEmpty()){ informouParametro = true; if (filtroRota == null){ filtroRota = new FiltroRota(); } filtroRota.adicionarParametro(new ParametroSimplesIn(FiltroRota.EMPRESA_ID, idsEmpresaFaturamentoFiltro)); } } if (formulario.getIdEmpresaCobrancaFiltro() != null && formulario.getIdEmpresaCobrancaFiltro().length > 0){ /*9. Caso tenha informado empresa(s) de cobran�a, seleciona as rotas * vinculadas a esta(s) empresa(s) de cobran�a (ROTA_ID da tabela ROTA * com EMPR_IDCOBRANCA = EMPR_ID da(s) empresa(s) de cobran�a * informada(s)).*/ Collection idsEmpresaCobrancaFiltro = new ArrayList(); for (int i = 0; i < formulario.getIdEmpresaCobrancaFiltro().length; i++) { if (!formulario.getIdEmpresaCobrancaFiltro()[i].equals("-1") && !formulario.getIdEmpresaCobrancaFiltro()[i].equals("")){ idsEmpresaCobrancaFiltro.add(new Integer(formulario.getIdEmpresaCobrancaFiltro()[i])); } } if (!idsEmpresaCobrancaFiltro.isEmpty()){ informouParametro = true; if (filtroRota == null){ filtroRota = new FiltroRota(); } filtroRota.adicionarParametro(new ParametroSimplesIn(FiltroRota.EMPRESA_COBRANCA_ID, idsEmpresaCobrancaFiltro)); } } if (formulario.getIdLeiturista() != null && !formulario.getIdLeiturista().toString().equals("")){ informouParametro = true; if (filtroRota == null){ filtroRota = new FiltroRota(); } filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.LEITURISTA_ID, new Integer(formulario.getIdLeiturista()))); } if (formulario.getIdTipoLeitura() != null && !formulario.getIdTipoLeitura().equals("-1")){ informouParametro = true; if (filtroRota == null){ filtroRota = new FiltroRota(); } filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.LEITURA_TIPO_ID, new Integer(formulario.getIdTipoLeitura()))); } if (informouParametro){ /*10. O sistema retorna a cole��o de rotas que satisfa�am * a todos os par�metros informados*/ filtroRota.adicionarParametro(new ParametroSimples( FiltroRota.INDICADOR_USO , ConstantesSistema.INDICADOR_USO_ATIVO)); rotasSelecionadas = fachada.pesquisar(filtroRota, Rota.class.getName()); }else{ //11. Caso n�o tenha informado nenhum par�metro seleciona todas as rotas. filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new ParametroSimples( FiltroRota.INDICADOR_USO , ConstantesSistema.INDICADOR_USO_ATIVO)); rotasSelecionadas = fachada.pesquisar(filtroRota, Rota.class.getName()); } //[FS0005] - Verificar exist�ncia de rotas if (rotasSelecionadas != null && !rotasSelecionadas.isEmpty()){ //4.1. A quantidade total de rotas no universo selecionado formulario.setQuantidadeRotas(String.valueOf(rotasSelecionadas.size())); sessao.setAttribute("rotasSelecionadas", rotasSelecionadas); httpServletRequest.setAttribute("desabilitaFiltroESelecao", true); /*4.2. Os grupos de faturamento aos quais pertencem as rotas * (Obter na tabela ROTA a partir de FTGR_ID aos grupos de faturamento * aos quais pertencem as rotas da selecionadas*/ Collection idsGrupoFaturamento = new ArrayList(); for (Iterator iter = rotasSelecionadas.iterator(); iter.hasNext();) { Rota rota = (Rota) iter.next(); idsGrupoFaturamento.add(rota.getFaturamentoGrupo().getId()); } FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo(); filtroFaturamentoGrupo.adicionarParametro(new ParametroSimplesIn(FiltroFaturamentoGrupo.ID , idsGrupoFaturamento)); filtroFaturamentoGrupo.setCampoOrderBy(FiltroFaturamentoGrupo.DESCRICAO); Collection colecaoGrupoFaturamento = fachada.pesquisar(filtroFaturamentoGrupo, FaturamentoGrupo.class.getName()); httpServletRequest.setAttribute("colecaoGrupoFaturamentoSelecao", colecaoGrupoFaturamento); /*4.3. Os grupos de cobran�a aos quais pertencem as rotas * (Obter na tabela ROTA a partir de CBGR_ID aos grupos de cobran�a * aos quais pertencem as rotas da selecionadas.*/ Collection idsGrupoCobranca = new ArrayList(); for (Iterator iter = rotasSelecionadas.iterator(); iter.hasNext();) { Rota rota = (Rota) iter.next(); idsGrupoCobranca.add(rota.getCobrancaGrupo().getId()); } FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo(); filtroCobrancaGrupo.adicionarParametro(new ParametroSimplesIn(FiltroCobrancaGrupo.ID , idsGrupoCobranca)); filtroCobrancaGrupo.setCampoOrderBy(FiltroCobrancaGrupo.DESCRICAO); Collection colecaoGrupoCobranca = fachada.pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName()); httpServletRequest.setAttribute("colecaoGrupoCobrancaSelecao", colecaoGrupoCobranca); /*4.4. As empresas de faturamento �s quais pertencem * as rotas (Obter na tabela ROTA a partir de EMPR_ID as * empresas de faturamento �s quais est�o vinculadas as * rotas da selecionadas)*/ Collection idsEmpresaFaturamento = new ArrayList(); for (Iterator iter = rotasSelecionadas.iterator(); iter.hasNext();) { Rota rota = (Rota) iter.next(); idsEmpresaFaturamento.add(rota.getEmpresa().getId()); } FiltroEmpresa filtroEmpresa = new FiltroEmpresa(); filtroEmpresa.adicionarParametro(new ParametroSimplesIn(FiltroEmpresa.ID , idsEmpresaFaturamento)); filtroEmpresa.setCampoOrderBy(FiltroEmpresa.DESCRICAO); Collection colecaoEmpresaFaturamento = fachada.pesquisar(filtroEmpresa, Empresa.class.getName()); httpServletRequest.setAttribute("colecaoEmpresaFaturamentoSelecao", colecaoEmpresaFaturamento); /*4.5. As empresas de cobran�a �s quais pertencem as rotas (Obter * na tabela ROTA a partir de EMPR_IDCOBRANCA as empresas de cobran�a * �s quais est�o vinculadas as rotas da selecionadas)*/ Collection idsEmpresaCobranca = new ArrayList(); for (Iterator iter = rotasSelecionadas.iterator(); iter.hasNext();) { Rota rota = (Rota) iter.next(); idsEmpresaCobranca.add(rota.getEmpresaCobranca().getId()); } filtroEmpresa = new FiltroEmpresa(); filtroEmpresa.adicionarParametro(new ParametroSimplesIn(FiltroEmpresa.ID , idsEmpresaCobranca)); filtroEmpresa.setCampoOrderBy(FiltroEmpresa.DESCRICAO); Collection colecaoEmpresaCobranca = fachada.pesquisar(filtroEmpresa, Empresa.class.getName()); httpServletRequest.setAttribute("colecaoEmpresaCobrancaSelecao", colecaoEmpresaCobranca); /*5.1. Grupo de Cobran�a (seleciona a partir da tabela COBRANCA_GRUPO) * [FS0001 - Verificar exist�ncia de dados].*/ filtroCobrancaGrupo = new FiltroCobrancaGrupo(); filtroCobrancaGrupo.adicionarParametro(new ParametroSimples( FiltroCobrancaGrupo.INDICADOR_USO , ConstantesSistema.INDICADOR_USO_ATIVO)); filtroCobrancaGrupo.setCampoOrderBy(FiltroCobrancaGrupo.DESCRICAO); Collection colecaoCobrancaGrupoDestino = fachada.pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName()); if (colecaoCobrancaGrupoDestino == null || colecaoCobrancaGrupoDestino.isEmpty()){ throw new ActionServletException("Atencao.Sem_dados_para_selecao"); } httpServletRequest.setAttribute("colecaoCobrancaGrupoDestino", colecaoCobrancaGrupoDestino); /*5.2. Grupo de Faturamento (seleciona a partir da tabela FATURAMENTO_GRUPO) * [FS0001 - Verificar exist�ncia de dados].*/ filtroFaturamentoGrupo = new FiltroFaturamentoGrupo(); filtroFaturamentoGrupo.adicionarParametro(new ParametroSimples( FiltroFaturamentoGrupo.INDICADOR_USO , ConstantesSistema.INDICADOR_USO_ATIVO)); filtroFaturamentoGrupo.setCampoOrderBy(FiltroFaturamentoGrupo.DESCRICAO); Collection colecaoFaturamentoGrupoDestino = fachada.pesquisar(filtroFaturamentoGrupo, FaturamentoGrupo.class.getName()); if (colecaoFaturamentoGrupoDestino == null || colecaoFaturamentoGrupoDestino.isEmpty()){ throw new ActionServletException("Atencao.Sem_dados_para_selecao"); } httpServletRequest.setAttribute("colecaoFaturamentoGrupoDestino",colecaoFaturamentoGrupoDestino); /*5.3. Empresa de Faturamento (seleciona a partir da tabela EMPRESA) * [FS0001 - Verificar exist�ncia de dados]; * 5.4. Empresa de Cobran�a (seleciona a partir da tabela EMPRESA) * [FS0001 - Verificar exist�ncia de dados];*/ filtroEmpresa = new FiltroEmpresa(); filtroEmpresa.adicionarParametro(new ParametroSimples( FiltroEmpresa.INDICADORUSO , ConstantesSistema.INDICADOR_USO_ATIVO)); filtroEmpresa.setCampoOrderBy(FiltroEmpresa.DESCRICAO); Collection colecaoEmpresaDestino = fachada.pesquisar(filtroEmpresa, Empresa.class.getName()); if (colecaoEmpresaDestino == null || colecaoEmpresaDestino.isEmpty()){ throw new ActionServletException("Atencao.Sem_dados_para_selecao"); } httpServletRequest.setAttribute("colecaoEmpresaDestino",colecaoEmpresaDestino); }else{ throw new ActionServletException("atencao.rotas_inexistentes_criterio_informado", null,"Pesquisa Nenhum Resultado"); } } private void verificaExistenciaCodLeiturista(String idDigitadoEnterLeiturista, TransferirRotasGruposEmpresasActionForm form, HttpServletRequest httpServletRequest) { //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)); if(form.getIdEmpresaCobrancaFiltro()!=null){ Collection<Integer> idsEmpresasCobranca = new ArrayList<Integer>(); for (int i = 0; i < form.getIdEmpresaCobrancaFiltro().length; i++) { Integer idEmpresaCobraca = new Integer(form.getIdEmpresaCobrancaFiltro()[i]); idsEmpresasCobranca.add(idEmpresaCobraca); } filtroLeiturista.adicionarParametro(new ParametroSimplesIn(FiltroLeiturista.EMPRESA_ID, idsEmpresasCobranca)); } if(form.getIdEmpresaFaturamentoFiltro()!=null){ Collection<Integer> idsEmpresasFaturamento = new ArrayList<Integer>(); for (int i = 0; i < form.getIdEmpresaFaturamentoFiltro().length; i++) { Integer idEmpresaCobraca = new Integer(form.getIdEmpresaFaturamentoFiltro()[i]); idsEmpresasFaturamento.add(idEmpresaCobraca); } filtroLeiturista.adicionarParametro(new ParametroSimplesIn(FiltroLeiturista.EMPRESA_ID, idsEmpresasFaturamento)); } Collection leituristaEncontrado = this.getFachada().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); form.setIdLeiturista("" + leiturista.getId()); if (leiturista.getFuncionario() != null){ form.setNomeLeiturista(leiturista.getFuncionario().getNome()); } else if (leiturista.getCliente() != null){ form.setNomeLeiturista(leiturista.getCliente().getNome()); } httpServletRequest.setAttribute("idLeituristaEncontrado","true"); httpServletRequest.setAttribute("nomeCampo","codigoSetorComercial"); httpServletRequest.setAttribute( "idLeituristaEncontrado", "" ); } else { //o leiturista n�o foi encontrado form.setIdLeiturista(""); form.setNomeLeiturista("LEITURISTA INEXISTENTE"); httpServletRequest.removeAttribute("idLeituristaEncontrado"); httpServletRequest.setAttribute("nomeCampo","idLeiturista"); } } } }