package gcom.gui.atendimentopublico.ligacaoesgoto; import gcom.atendimentopublico.ligacaoesgoto.FiltroLigacaoEsgoto; import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgoto; import gcom.atendimentopublico.ordemservico.FiltroServicoNaoCobrancaMotivo; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.atendimentopublico.ordemservico.ServicoNaoCobrancaMotivo; import gcom.atendimentopublico.ordemservico.ServicoTipo; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteImovel; import gcom.cadastro.cliente.ClienteRelacaoTipo; import gcom.cadastro.cliente.FiltroClienteImovel; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.faturamento.debito.FiltroDebitoTipo; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.micromedicao.consumo.LigacaoTipo; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroNulo; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.util.Collection; 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 respons�vel pela pre-exibi��o da pagina de efetuar corte de liga��o de * �gua * * @author Leandro Cavalcanti * @created 20 de Junho de 2006 */ public class ExibirEfetuarMudancaSituacaoFaturamentoLigacaoEsgotoAction 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) { HttpSession sessao = httpServletRequest.getSession(false); ActionForward retorno = actionMapping .findForward("efetuarMudancaSituacaoFaturamentoLigacaoEsgoto"); EfetuarMudancaSituacaoFaturamentoLigacaoEsgotoActionForm mudancaFaturamentoLigacaoAguaActionForm = (EfetuarMudancaSituacaoFaturamentoLigacaoEsgotoActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); mudancaFaturamentoLigacaoAguaActionForm.setMostrarVolume(true); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); String idOrdemServico = null; if(mudancaFaturamentoLigacaoAguaActionForm.getIdOrdemServico() != null){ idOrdemServico = mudancaFaturamentoLigacaoAguaActionForm.getIdOrdemServico(); }else{ idOrdemServico = (String)httpServletRequest.getAttribute("veioEncerrarOS"); mudancaFaturamentoLigacaoAguaActionForm .setDataMudanca( (String) httpServletRequest.getAttribute("dataEncerramento")); sessao.setAttribute("caminhoRetornoIntegracaoComercial", httpServletRequest.getAttribute("caminhoRetornoIntegracaoComercial")); } OrdemServico ordemServico = null; if(httpServletRequest.getAttribute("semMenu") != null){ sessao.setAttribute("semMenu", "SIM"); }else{ sessao.removeAttribute("semMenu"); } mudancaFaturamentoLigacaoAguaActionForm.setVolumeMinimoFixado(null); Boolean veioEncerrarOS = null; if(httpServletRequest.getAttribute("veioEncerrarOS") != null){ veioEncerrarOS = Boolean.TRUE; }else{ if (mudancaFaturamentoLigacaoAguaActionForm.getVeioEncerrarOS() != null && !mudancaFaturamentoLigacaoAguaActionForm .getVeioEncerrarOS().equals("")) { if (mudancaFaturamentoLigacaoAguaActionForm.getVeioEncerrarOS() .toLowerCase().equals("true")) { veioEncerrarOS = veioEncerrarOS = Boolean.TRUE; } else { veioEncerrarOS = veioEncerrarOS = Boolean.FALSE; } } else { veioEncerrarOS = Boolean.FALSE; } } mudancaFaturamentoLigacaoAguaActionForm.setVeioEncerrarOS(""+veioEncerrarOS); //Filtro para o campo Tpo Debito Collection colecaoNaoCobranca = (Collection) sessao.getAttribute("colecaoNaoCobranca"); if(colecaoNaoCobranca == null){ FiltroServicoNaoCobrancaMotivo filtroServicoNaoCobrancaMotivo = new FiltroServicoNaoCobrancaMotivo(); filtroServicoNaoCobrancaMotivo.setCampoOrderBy(FiltroDebitoTipo.DESCRICAO); colecaoNaoCobranca = fachada.pesquisar(filtroServicoNaoCobrancaMotivo, ServicoNaoCobrancaMotivo.class.getName()); if (colecaoNaoCobranca != null && !colecaoNaoCobranca.isEmpty()) { sessao.setAttribute("colecaoNaoCobranca",colecaoNaoCobranca); } else { throw new ActionServletException("atencao.naocadastrado",null, "Motivo da N�o Cobran�a"); } } if (idOrdemServico != null && !idOrdemServico.trim().equals("")) { // FiltroOrdemServico filtroOrdemServico = new FiltroOrdemServico(); // filtroOrdemServico.adicionarParametro(new ParametroSimples( // FiltroOrdemServico.ID, idOrdemServico)); // filtroOrdemServico // .adicionarCaminhoParaCarregamentoEntidade("servicoTipo"); // filtroOrdemServico // .adicionarCaminhoParaCarregamentoEntidade("registroAtendimento.imovel"); // filtroOrdemServico // .adicionarCaminhoParaCarregamentoEntidade("registroAtendimento.imovel.localidade"); // filtroOrdemServico // .adicionarCaminhoParaCarregamentoEntidade("registroAtendimento.imovel.setorComercial"); // filtroOrdemServico // .adicionarCaminhoParaCarregamentoEntidade("registroAtendimento.imovel.quadra"); // filtroOrdemServico // .adicionarCaminhoParaCarregamentoEntidade("registroAtendimento.imovel.ligacaoAgua"); // filtroOrdemServico // .adicionarCaminhoParaCarregamentoEntidade("registroAtendimento.imovel.ligacaoAguaSituacao"); // filtroOrdemServico // .adicionarCaminhoParaCarregamentoEntidade("registroAtendimento.imovel.ligacaoEsgoto"); // filtroOrdemServico // .adicionarCaminhoParaCarregamentoEntidade("registroAtendimento.imovel.ligacaoEsgotoSituacao"); // filtroOrdemServico // .adicionarCaminhoParaCarregamentoEntidade("registroAtendimento.imovel.ligacaoAgua.hidrometroInstalacaoHistorico"); // // Collection colecaoOrdemServico = fachada.pesquisar( // filtroOrdemServico, OrdemServico.class.getName()); ordemServico = fachada.recuperaOSPorId( new Integer(idOrdemServico)); if (ordemServico != null) { // ordemServico = (OrdemServico) colecaoOrdemServico // .iterator().next(); // sessao.setAttribute("colecaoOrdemServico", colecaoOrdemServico); String tipoResultado = fachada.validarMudancaSituacaoFaturamentoLigacaoesgotoExibir(ordemServico,veioEncerrarOS); if (tipoResultado!= null){ if (tipoResultado.trim().equalsIgnoreCase("TAMPONADO")){ mudancaFaturamentoLigacaoAguaActionForm.setNovaSitLigacaoEsgoto("TAMPONADO"); mudancaFaturamentoLigacaoAguaActionForm.setMostrarVolume(false); }else if (tipoResultado.trim().equalsIgnoreCase("LIGADO FORA DE USO")){ mudancaFaturamentoLigacaoAguaActionForm.setMostrarVolume(false); mudancaFaturamentoLigacaoAguaActionForm.setNovaSitLigacaoEsgoto("LIGADO FORA DE USO"); }else{ mudancaFaturamentoLigacaoAguaActionForm.setMostrarVolume(true); mudancaFaturamentoLigacaoAguaActionForm.setNovaSitLigacaoEsgoto("LIGADO"); } } mudancaFaturamentoLigacaoAguaActionForm .setIdOrdemServico(idOrdemServico); mudancaFaturamentoLigacaoAguaActionForm .setNomeOrdemServico(ordemServico.getServicoTipo().getDescricao()); /*-------------- In�cio dados do Im�vel---------------*/ Imovel imovel = ordemServico.getRegistroAtendimento() .getImovel(); sessao.setAttribute("imovel", ordemServico .getRegistroAtendimento().getImovel()); FiltroLigacaoEsgoto filtroLigacaoEsgoto = new FiltroLigacaoEsgoto(); filtroLigacaoEsgoto.adicionarParametro(new ParametroSimples(FiltroLigacaoEsgoto.ID, imovel.getId())); Collection colecaoLigacaoEsgoto = fachada.pesquisar(filtroLigacaoEsgoto, LigacaoEsgoto.class.getName()); if(!colecaoLigacaoEsgoto.isEmpty()){ LigacaoEsgoto ligacaoEsgoto = (LigacaoEsgoto)Util.retonarObjetoDeColecao(colecaoLigacaoEsgoto); sessao.setAttribute("ligacaoEsgoto", ligacaoEsgoto); } sessao.setAttribute("ordemServico", ordemServico); BigDecimal valorDebito = new BigDecimal(0.00); if(ordemServico.getServicoTipo() != null && ordemServico.getServicoTipo().getDebitoTipo() != null){ mudancaFaturamentoLigacaoAguaActionForm.setIdTipoDebito(ordemServico.getServicoTipo().getDebitoTipo().getId().toString()); mudancaFaturamentoLigacaoAguaActionForm.setDescricaoTipoDebito(ordemServico.getServicoTipo().getDebitoTipo().getDescricao()); //[FS0013] - Altera��o de Valor this.permitirAlteracaoValor(ordemServico.getServicoTipo(), mudancaFaturamentoLigacaoAguaActionForm); //Colocado por Raphael Rossiter em 04/05/2007 (Analista: Rosana Carvalho) valorDebito = this.calcularValores(httpServletRequest, ordemServico, mudancaFaturamentoLigacaoAguaActionForm); if(ordemServico.getServicoNaoCobrancaMotivo() != null){ mudancaFaturamentoLigacaoAguaActionForm.setMotivoNaoCobranca(ordemServico.getServicoNaoCobrancaMotivo().getId().toString()); } if(ordemServico.getPercentualCobranca() != null){ mudancaFaturamentoLigacaoAguaActionForm.setPercentualCobranca(ordemServico.getPercentualCobranca().toString()); } } if (imovel != null) { //Matricula Im�vel String matriculaImovel = ordemServico .getRegistroAtendimento().getImovel().getId() .toString(); mudancaFaturamentoLigacaoAguaActionForm .setMatriculaImovel(matriculaImovel); //Inscri��o Im�vel String inscricaoImovel = fachada.pesquisarInscricaoImovel(ordemServico .getRegistroAtendimento().getImovel() .getId()); mudancaFaturamentoLigacaoAguaActionForm .setInscricaoImovel(inscricaoImovel); // Situa��o da Liga��o de Agua String situacaoLigacaoAgua = imovel .getLigacaoAguaSituacao().getDescricao(); mudancaFaturamentoLigacaoAguaActionForm .setSituacaoLigacaoAgua(situacaoLigacaoAgua); // Situa��o da Liga��o de Esgoto String situacaoLigacaoEsgoto = imovel .getLigacaoEsgotoSituacao().getDescricao(); mudancaFaturamentoLigacaoAguaActionForm .setSituacaoLigacaoEsgoto(situacaoLigacaoEsgoto); //Filtro para carregaar o Cliente FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel(); filtroClienteImovel .adicionarParametro(new ParametroSimples( FiltroClienteImovel.IMOVEL_ID, matriculaImovel)); filtroClienteImovel .adicionarParametro(new ParametroSimples( FiltroClienteImovel.CLIENTE_RELACAO_TIPO, ClienteRelacaoTipo.USUARIO)); filtroClienteImovel.adicionarParametro(new ParametroNulo( FiltroClienteImovel.DATA_FIM_RELACAO)); filtroClienteImovel .adicionarCaminhoParaCarregamentoEntidade("cliente"); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("clienteRelacaoTipo"); Collection colecaoClienteImovel = fachada.pesquisar( filtroClienteImovel, ClienteImovel.class.getName()); if (colecaoClienteImovel != null && !colecaoClienteImovel.isEmpty()) { ClienteImovel clienteImovel = (ClienteImovel) colecaoClienteImovel .iterator().next(); Cliente cliente = clienteImovel.getCliente(); String documento = ""; if (cliente.getCpf() != null && !cliente.getCpf().equals("")) { documento = cliente.getCpfFormatado(); } else { documento = cliente.getCnpjFormatado(); } //Cliente Nome/CPF-CNPJ mudancaFaturamentoLigacaoAguaActionForm .setClienteUsuario(cliente.getNome()); mudancaFaturamentoLigacaoAguaActionForm .setCpfCnpjCliente(documento); } else { throw new ActionServletException( "atencao.naocadastrado", null, "Cliente"); } } /*-------------- Fim dados do Im�vel---------------*/ /*-------------- Dados da Liga��o ----------------------------*/ // Carregando Data do Corte: Data recebida da execu��o da String dataEncerramentoOdServico= Util.formatarData(ordemServico.getDataEncerramento()); if(dataEncerramentoOdServico != null && !dataEncerramentoOdServico.equals("")){ mudancaFaturamentoLigacaoAguaActionForm .setDataMudanca(dataEncerramentoOdServico); } // Carregando campo Volume M�nimo Fixado if (imovel.getQuantidadeEconomias() != null) { mudancaFaturamentoLigacaoAguaActionForm .setQtdeEconomia(imovel.getQuantidadeEconomias() .toString()); } else { // Se entrar aqui � porque a Base est� inconsistente. mudancaFaturamentoLigacaoAguaActionForm .setQtdeEconomia("1"); } // ----------------------------------------------------------- // Verificar permiss�o especial boolean temPermissaoMotivoNaoCobranca = fachada.verificarPermissaoInformarMotivoNaoCobranca(usuarioLogado); // ----------------------------------------------------------- if (temPermissaoMotivoNaoCobranca) { httpServletRequest.setAttribute("permissaoMotivoNaoCobranca", temPermissaoMotivoNaoCobranca); }else{ mudancaFaturamentoLigacaoAguaActionForm.setPercentualCobranca("100"); mudancaFaturamentoLigacaoAguaActionForm.setQuantidadeParcelas("1"); mudancaFaturamentoLigacaoAguaActionForm.setValorParcelas(Util.formataBigDecimal(valorDebito,2,true)); } } else { mudancaFaturamentoLigacaoAguaActionForm.setNomeOrdemServico("Ordem de Servi�o inexistente"); mudancaFaturamentoLigacaoAguaActionForm.setIdOrdemServico(""); httpServletRequest.setAttribute("OrdemServioInexistente", true); } /*-------------------- Fim Dados da Liga��o ----------------------------*/ } else { httpServletRequest.setAttribute("nomeCampo", "idOrdemServico"); mudancaFaturamentoLigacaoAguaActionForm.setIdOrdemServico(""); mudancaFaturamentoLigacaoAguaActionForm.setMatriculaImovel(""); mudancaFaturamentoLigacaoAguaActionForm.setInscricaoImovel(""); mudancaFaturamentoLigacaoAguaActionForm.setClienteUsuario(""); mudancaFaturamentoLigacaoAguaActionForm.setCpfCnpjCliente(""); mudancaFaturamentoLigacaoAguaActionForm.setSituacaoLigacaoAgua(""); mudancaFaturamentoLigacaoAguaActionForm.setSituacaoLigacaoEsgoto(""); mudancaFaturamentoLigacaoAguaActionForm.setNomeOrdemServico(""); mudancaFaturamentoLigacaoAguaActionForm.setIdTipoDebito(""); mudancaFaturamentoLigacaoAguaActionForm.setDescricaoTipoDebito(""); mudancaFaturamentoLigacaoAguaActionForm.setQuantidadeParcelas(""); mudancaFaturamentoLigacaoAguaActionForm.setValorParcelas(""); mudancaFaturamentoLigacaoAguaActionForm.setPercentualCobranca("-1"); mudancaFaturamentoLigacaoAguaActionForm.setMotivoNaoCobranca("-1"); } return retorno; } /* * [FS0013 - Altera��o de Valor] * * autor: Raphael Rossiter * data: 19/04/2007 */ private void permitirAlteracaoValor(ServicoTipo servicoTipo, EfetuarMudancaSituacaoFaturamentoLigacaoEsgotoActionForm form){ if (servicoTipo.getIndicadorPermiteAlterarValor() == ConstantesSistema.INDICADOR_USO_ATIVO.shortValue()){ form.setAlteracaoValor("OK"); } else{ form.setAlteracaoValor(""); } } /* * Calcular valor da presta��o com juros * * return: Retorna o valor total do d�bito * * autor: Raphael Rossiter * data: 04/05/2007 */ private BigDecimal calcularValores(HttpServletRequest httpServletRequest, OrdemServico ordemServico, EfetuarMudancaSituacaoFaturamentoLigacaoEsgotoActionForm form){ String calculaValores = httpServletRequest.getParameter("calculaValores"); BigDecimal valorDebito = new BigDecimal(0); SistemaParametro sistemaParametro = this.getFachada().pesquisarParametrosDoSistema(); Integer qtdeParcelas = null; if(calculaValores != null && calculaValores.equals("S")){ //[UC0186] - Calcular Presta��o BigDecimal taxaJurosFinanciamento = null; qtdeParcelas = new Integer(form.getQuantidadeParcelas()); if(ordemServico.getServicoTipo().getIndicadorCobrarJuros() == ConstantesSistema.SIM.shortValue() && qtdeParcelas.intValue() > 1){ taxaJurosFinanciamento = sistemaParametro.getPercentualTaxaJurosFinanciamento(); }else{ taxaJurosFinanciamento = new BigDecimal(0); qtdeParcelas = 1; } BigDecimal valorPrestacao = null; if(taxaJurosFinanciamento != null){ valorDebito = new BigDecimal(form.getValorDebito().replace(",",".")); String percentualCobranca = form.getPercentualCobranca(); if(percentualCobranca.equals("70")){ valorDebito = valorDebito.multiply(new BigDecimal(0.7)); }else if (percentualCobranca.equals("50")){ valorDebito = valorDebito.multiply(new BigDecimal(0.5)); } valorPrestacao = this.getFachada().calcularPrestacao( taxaJurosFinanciamento, qtdeParcelas, valorDebito, new BigDecimal("0.00")); valorPrestacao.setScale(2,BigDecimal.ROUND_HALF_UP); } if (valorPrestacao != null) { String valorPrestacaoComVirgula = Util.formataBigDecimal(valorPrestacao,2,true); form.setValorParcelas(valorPrestacaoComVirgula); } else { form.setValorParcelas("0,00"); } }else{ valorDebito = Fachada.getInstancia().obterValorDebito(ordemServico.getServicoTipo().getId(), ordemServico.getRegistroAtendimento().getImovel().getId(), new Short(LigacaoTipo.LIGACAO_AGUA+"")); form.setValorDebito(Util.formataBigDecimal(valorDebito,2,true)); } return valorDebito; } }