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.CobrancaGrupo;
import gcom.cobranca.FiltroCobrancaAcao;
import gcom.cobranca.FiltroCobrancaCriterio;
import gcom.cobranca.FiltroCobrancaGrupo;
import gcom.cobranca.FiltroRotaAcaoCriterio;
import gcom.cobranca.RotaAcaoCriterio;
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.ParametroNaoNulo;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
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 de exibir atulizar a rota
* @author Vivianne Sousa
* @created 03/04/2006
*/
public class ExibirAtualizarRotaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Inicializando Variaveis
ActionForward retorno = actionMapping.findForward("atualizarRota");
InserirRotaActionForm inserirRotaActionForm = (InserirRotaActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
//Pesquisando grupo de cobran�a
FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo();
filtroCobrancaGrupo.setCampoOrderBy(FiltroCobrancaGrupo.DESCRICAO_ABREVIADA);
Collection<CobrancaGrupo> collectionCobrancaGrupo =
this.getFachada().pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName());
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 =
this.getFachada().pesquisar(filtroFaturamentoGrupo, FaturamentoGrupo.class.getName());
sessao.setAttribute("collectionFaturamentoGrupo", collectionFaturamentoGrupo);
//Fim de pesquisando grupo de faturamento
//Pesquisando tipo de leitura
FiltroLeituraTipo filtroLeituraTipo = new FiltroLeituraTipo();
filtroLeituraTipo.adicionarParametro(
new ParametroSimples(FiltroLeituraTipo.INDICADOR_USO,ConstantesSistema.INDICADOR_USO_ATIVO));
filtroLeituraTipo.setCampoOrderBy(FiltroLeituraTipo.DESCRICAO);
Collection<LeituraTipo> collectionLeituraTipo =
this.getFachada().pesquisar(filtroLeituraTipo, LeituraTipo.class.getName());
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 =
this.getFachada().pesquisar(filtroEmpresa, Empresa.class.getName());
sessao.setAttribute("collectionEmpresa", collectionEmpresa);
//Fim de pesquisando empresa leitur�stica
// crit�rio de cobran�a
Collection<RotaAcaoCriterio> collectionRotaAcaoCriterio =
(Collection<RotaAcaoCriterio>)sessao.getAttribute("collectionRotaAcaoCriterio");
if ((collectionRotaAcaoCriterio != null && collectionRotaAcaoCriterio.size()!= 0) &&
(sessao.getAttribute("UseCase") != null && sessao.getAttribute("UseCase").equals("ATUALIZARROTA"))) {
//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 ParametroNaoNulo(FiltroCobrancaAcao.COBRANCAO_CRITERIO));
filtroCobrancaAcao.adicionarParametro(
new ParametroSimples(FiltroCobrancaCriterio.INDICADOR_USO,ConstantesSistema.SIM));
Collection<CobrancaAcao> collectionAcaoCobranca =
this.getFachada().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName());
if (collectionRotaAcaoCriterio.size() < collectionAcaoCobranca.size()){
httpServletRequest.setAttribute("adicionar","habilitado");
}else{
httpServletRequest.setAttribute("adicionar","desabilitado");
}
}
// crit�rio de cobran�a
String idRota = null;
if ( httpServletRequest.getParameter("reloadPage") == null ||
httpServletRequest.getParameter("reloadPage").equals("")){
//Recupera o id do Rota que vai ser atualizado
if (httpServletRequest.getParameter("idRegistroInseridoAtualizar")!= null){
idRota = httpServletRequest.getParameter("idRegistroInseridoAtualizar");
//Definindo a volta do bot�o Voltar p Filtrar Rota
sessao.setAttribute("voltar", "filtrar");
sessao.setAttribute("idRegistroAtualizacao",idRota);
}else if(httpServletRequest.getParameter("idRegistroAtualizacao") == null){
idRota = (String)sessao.getAttribute("idRegistroAtualizacao");
//Definindo a volta do bot�o Voltar p Filtrar Rota
sessao.setAttribute("voltar", "filtrar");
}else if (httpServletRequest.getParameter("idRegistroAtualizacao")!= null) {
idRota = httpServletRequest.getParameter("idRegistroAtualizacao");
//Definindo a volta do bot�o Voltar p Manter Rota
sessao.setAttribute("voltar", "manter");
sessao.setAttribute("idRegistroAtualizacao",idRota);
sessao.setAttribute("indicadorAtualizar","1");
}
exibirRota(idRota, inserirRotaActionForm, sessao, collectionRotaAcaoCriterio, httpServletRequest);
}else {
idRota = (String)sessao.getAttribute("idRegistroAtualizacao");
}
//-------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);
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);
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);
}
//-------Fim de parte que trata do c�digo quando o usu�rio tecla enter
if (httpServletRequest.getParameter("desfazer") != null
&& httpServletRequest.getParameter("desfazer").equalsIgnoreCase("S")) {
//-------------- bt DESFAZER ---------------
sessao.removeAttribute("collectionRotaAcaoCriterio");
collectionRotaAcaoCriterio = null;
exibirRota(idRota, inserirRotaActionForm,sessao,collectionRotaAcaoCriterio,httpServletRequest);
}
sessao.removeAttribute("caminhoRetornoTelaPesquisa");
// DEFINI��O QUE IR� AUXILIAR O RETORNO DOS POPUPS
sessao.setAttribute("UseCase", "ATUALIZARROTA");
return retorno;
}
private void exibirRota(String idRota,
InserirRotaActionForm inserirRotaActionForm,
HttpSession sessao,
Collection collectionRotaAcaoCriterio,
HttpServletRequest httpServletRequest) {
//Cria a vari�vel que vai armazenar a rota para ser atualizada
Rota rota = null;
//Cria o filtro de rota e seta o id da rota para ser atualizado no filtro
//e indica quais objetos devem ser retornados pela pesquisa
FiltroRota filtroRota = new FiltroRota();
filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.ID_ROTA, idRota));
filtroRota.adicionarCaminhoParaCarregamentoEntidade("setorComercial.localidade");
filtroRota.adicionarCaminhoParaCarregamentoEntidade("faturamentoGrupo");
filtroRota.adicionarCaminhoParaCarregamentoEntidade("cobrancaGrupo");
filtroRota.adicionarCaminhoParaCarregamentoEntidade("empresa");
filtroRota.adicionarCaminhoParaCarregamentoEntidade("leiturista.funcionario");
filtroRota.adicionarCaminhoParaCarregamentoEntidade("leiturista.cliente");
Collection<Rota> collectionRota =
this.getFachada().pesquisar(filtroRota, Rota.class.getName()) ;
//Caso a pesquisa tenha retornado a rota
if (collectionRota != null && !collectionRota.isEmpty()){
//Recupera da cole��o a rota que vai ser atualizada
rota = (Rota) Util.retonarObjetoDeColecao(collectionRota);
//Seta no form os dados de rota
inserirRotaActionForm.setIdLocalidade("" + rota.getSetorComercial().getLocalidade().getId());
inserirRotaActionForm.setLocalidadeDescricao("" + rota.getSetorComercial().getLocalidade().getDescricao());
inserirRotaActionForm.setCodigoSetorComercial("" + rota.getSetorComercial().getCodigo());
inserirRotaActionForm.setSetorComercialDescricao("" + rota.getSetorComercial().getDescricao());
inserirRotaActionForm.setCodigoRota("" + rota.getCodigo());
inserirRotaActionForm.setCobrancaGrupo("" + rota.getCobrancaGrupo().getId());
inserirRotaActionForm.setFaturamentoGrupo("" + rota.getFaturamentoGrupo().getId());
inserirRotaActionForm.setLeituraTipo("" + rota.getLeituraTipo().getId());
inserirRotaActionForm.setIndicadorFiscalizarCortado("" + rota.getIndicadorFiscalizarCortado());
inserirRotaActionForm.setIndicadorFiscalizarSuprimido("" + rota.getIndicadorFiscalizarSuprimido());
inserirRotaActionForm.setIndicadorTransmissaoOffline("" + rota.getIndicadorTransmissaoOffline());
inserirRotaActionForm.setIndicadorSequencialLeitura("" + rota.getIndicadorSequencialLeitura());
inserirRotaActionForm.setIndicadorGerarFalsaFaixa("" + rota.getIndicadorGerarFalsaFaixa());
inserirRotaActionForm.setIndicadorAjusteConsumo( "" + rota.getIndicadorAjusteConsumo() );
inserirRotaActionForm.setIndicadorRotaAlternativa(""+rota.getIndicadorRotaAlternativa().shortValue());
if(rota.getNumeroDiasConsumoAjuste() != null && !rota.getNumeroDiasConsumoAjuste().equals("")){
inserirRotaActionForm.setNumeroDiasConsumoAjuste( "" + rota.getNumeroDiasConsumoAjuste() );
}else{
inserirRotaActionForm.setNumeroDiasConsumoAjuste( "" );
}
if ( rota.getLeiturista() != null ){
inserirRotaActionForm.setIdLeiturista( "" + rota.getLeiturista().getId() );
if ( rota.getLeiturista().getFuncionario() != null ){
inserirRotaActionForm.setNomeLeiturista( "" + rota.getLeiturista().getFuncionario().getNome() );
} else {
inserirRotaActionForm.setNomeLeiturista( "" + rota.getLeiturista().getCliente().getNome() );
}
}else{
inserirRotaActionForm.setIdLeiturista("");
inserirRotaActionForm.setNomeLeiturista("");
}
if ( rota.getEmpresa() != null ) {
inserirRotaActionForm.setEmpresaLeituristica("" + rota.getEmpresa().getId());
}
if ( rota.getEmpresaCobranca() != null ) {
inserirRotaActionForm.setEmpresaCobranca("" + rota.getEmpresaCobranca().getId());
}
if ( rota.getEmpresaEntregaContas() != null ) {
inserirRotaActionForm.setEmpresaEntregaContas("" + rota.getEmpresaEntregaContas().getId());
} else{
inserirRotaActionForm.setEmpresaEntregaContas("");
}
if (rota.getPercentualGeracaoFaixaFalsa() != null){
inserirRotaActionForm.setPercentualGeracaoFaixaFalsa("" +
rota.getPercentualGeracaoFaixaFalsa().toString().replace(".", ","));
}
inserirRotaActionForm.setIndicadorGerarFiscalizacao("" + rota.getIndicadorGerarFiscalizacao());
if (rota.getPercentualGeracaoFiscalizacao() != null){
inserirRotaActionForm.setPercentualGeracaoFiscalizacao("" +
rota.getPercentualGeracaoFiscalizacao().toString().replace(".", ","));
}
if ((rota.getIndicadorUso() != null) && (!rota.getIndicadorUso().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO))){
inserirRotaActionForm.setIndicadorUso("" + rota.getIndicadorUso());
}
if(rota.getIndicadorRotaAlternativa() != null){
inserirRotaActionForm.setIndicadorRotaAlternativa(""+rota.getIndicadorRotaAlternativa().shortValue());
}
if(rota.getNumeroLimiteImoveis() != null){
inserirRotaActionForm.setNumeroLimiteImoveis(""+ rota.getNumeroLimiteImoveis());
}else {
/*
* Data: 24/01/2011
*
* Setar como vazio, quando o valor do atributo for igual nulo.
*/
inserirRotaActionForm.setNumeroLimiteImoveis("");
}
inserirRotaActionForm.setUltimaAlteracao(Util.formatarDataComHora(rota.getUltimaAlteracao()));
//carregar grid Crit�rios de Cobran�a da Rota
if (collectionRotaAcaoCriterio == null ||
collectionRotaAcaoCriterio.isEmpty()){
FiltroRotaAcaoCriterio filtroRotaAcaoCriterio = new FiltroRotaAcaoCriterio();
filtroRotaAcaoCriterio.adicionarCaminhoParaCarregamentoEntidade("cobrancaAcao");
filtroRotaAcaoCriterio.adicionarCaminhoParaCarregamentoEntidade("cobrancaCriterio");
filtroRotaAcaoCriterio.adicionarParametro(new ParametroSimples
(FiltroRotaAcaoCriterio.ROTA_ID,rota.getId()));
collectionRotaAcaoCriterio = (Collection<RotaAcaoCriterio>)
this.getFachada().pesquisar(filtroRotaAcaoCriterio,RotaAcaoCriterio.class.getName());
sessao.setAttribute("collectionRotaAcaoCriterio", collectionRotaAcaoCriterio);
}
//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(FiltroCobrancaAcao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<CobrancaGrupo> collectionAcaoCobranca =
this.getFachada().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName());
sessao.setAttribute("collectionAcaoCobranca", collectionAcaoCobranca);
if (collectionRotaAcaoCriterio.size() < collectionAcaoCobranca.size()){
httpServletRequest.setAttribute("adicionar","habilitado");
}else{
httpServletRequest.setAttribute("adicionar","desabilitado");
}
}
}
private void verificaExistenciaCodLocalidade(String idDigitadoEnterLocalidade,
InserirRotaActionForm inserirRotaActionForm,
HttpServletRequest httpServletRequest) {
//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 =
this.getFachada().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) {
//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 = this.getFachada().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","cobrancaGrupo");
httpServletRequest.setAttribute("nomeCampo","idLocalidade");
} else {
//o setor comercial n�o foi encontrado
inserirRotaActionForm.setCodigoSetorComercial("");
httpServletRequest.setAttribute("idSetorComercialNaoEncontrada",
"exception");
inserirRotaActionForm
.setSetorComercialDescricao("SETOR COMERCIAL INEXISTENTE");
}
}
}
private void verificaExistenciaCodLeiturista(String idDigitadoEnterLeiturista,
InserirRotaActionForm inserirRotaActionForm,
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));
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);
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");
httpServletRequest.setAttribute( "idLeituristaEncontrado", "" );
} else {
//o leiturista n�o foi encontrado
inserirRotaActionForm.setIdLeiturista("");
inserirRotaActionForm.setNomeLeiturista("LEITURISTA INEXISTENTE");
httpServletRequest.removeAttribute("idLeituristaEncontrado");
httpServletRequest.setAttribute("nomeCampo","idLeiturista");
}
}
}
}