package gcom.gui.atendimentopublico; 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.micromedicao.hidrometro.FiltroHidrometroLocalInstalacao; import gcom.micromedicao.hidrometro.FiltroHidrometroProtecao; import gcom.micromedicao.hidrometro.Hidrometro; import gcom.micromedicao.hidrometro.HidrometroLocalInstalacao; import gcom.micromedicao.hidrometro.HidrometroProtecao; 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 inserir bairro * * @author Leandro Cavalcanti * @created 20 de Junho de 2006 */ public class ExibirEfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping,ActionForm actionForm, HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) { // Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); Fachada fachada = Fachada.getInstancia(); // ----------------------------------------------------------- // Verificar permiss�o especial boolean temPermissaoMotivoNaoCobranca = fachada.verificarPermissaoInformarMotivoNaoCobranca(usuarioLogado); // ----------------------------------------------------------- // Set no mapeamento de retorno ActionForward retorno = actionMapping.findForward("efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometro"); EfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm = (EfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm) actionForm; if (httpServletRequest.getParameter("desfazer") != null) { efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setSituacaoCavalete(null); } Boolean veioEncerrarOS = null; if (httpServletRequest.getAttribute("veioEncerrarOS") != null || (efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getVeioEncerrarOS() != null && efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getVeioEncerrarOS().equals("true"))) { veioEncerrarOS = Boolean.TRUE; } else { if (efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getVeioEncerrarOS() != null && !efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getVeioEncerrarOS().equals("")) { if (efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getVeioEncerrarOS().toLowerCase().equals("true")) { veioEncerrarOS = veioEncerrarOS = Boolean.TRUE; } else { veioEncerrarOS = veioEncerrarOS = Boolean.FALSE; } } else { veioEncerrarOS = Boolean.FALSE; } } efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setVeioEncerrarOS("" + veioEncerrarOS); this.consultaSelectObrigatorio(sessao); // Variavel responsav�l pelo preenchimento do imovel no formul�rio String idOrdemServico = null; if (efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getIdOrdemServico() != null) { idOrdemServico = efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getIdOrdemServico(); } else { idOrdemServico = (String) httpServletRequest.getAttribute("veioEncerrarOS"); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setDataRestabelecimento((String) httpServletRequest.getAttribute("dataEncerramento")); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setDataInstalacao((String) httpServletRequest.getAttribute("dataEncerramento")); sessao.setAttribute("caminhoRetornoIntegracaoComercial",httpServletRequest.getAttribute("caminhoRetornoIntegracaoComercial")); } if (httpServletRequest.getAttribute("semMenu") != null) { sessao.setAttribute("semMenu", "SIM"); } else { sessao.removeAttribute("semMenu"); } OrdemServico ordemServico = null; String matriculaImovel = null; BigDecimal valorDebito = new BigDecimal(0.00); // [FS0001] Validar Ordem de Servi�o. if (idOrdemServico != null && !idOrdemServico.trim().equals("")) { ordemServico = fachada.recuperaOSPorId(new Integer(idOrdemServico)); if (ordemServico != null) { fachada.validarRestabelecimentoLigacaoAguaComInstalacaoHidrometroExibir(ordemServico, veioEncerrarOS); sessao.setAttribute("ordemServico", ordemServico); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setIdOrdemServico(idOrdemServico); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setNomeOrdemServico(ordemServico.getServicoTipo().getDescricao()); Imovel imovel = ordemServico.getRegistroAtendimento().getImovel(); ServicoTipo servicoTipo = ordemServico.getServicoTipo(); //BigDecimal valorDebito = new BigDecimal(0.00); if (servicoTipo != null && servicoTipo.getDebitoTipo() != null) { efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setIdTipoDebito(servicoTipo.getDebitoTipo().getId().toString()); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setDescricaoTipoDebito(servicoTipo.getDebitoTipo().getDescricao()); //[FS0013] - Altera��o de Valor this.permitirAlteracaoValor(ordemServico.getServicoTipo(), efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm); //Colocado por Raphael Rossiter em 04/05/2007 (Analista: Rosana Carvalho) valorDebito = this.calcularValores(httpServletRequest, ordemServico, efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm); /* * Comentado por Raphael Rossiter em 14/08/2008 * * valorDebito = fachada.obterValorDebito(servicoTipo.getId(), imovel.getId(), new Short(LigacaoTipo.LIGACAO_AGUA + "")); * efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setValorDebito(Util.formataBigDecimal(valorDebito,2, true)); */ if (ordemServico.getServicoNaoCobrancaMotivo() != null) { efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setMotivoNaoCobranca(ordemServico.getServicoNaoCobrancaMotivo().getId().toString()); } if (ordemServico.getPercentualCobranca() != null) { efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setPercentualCobranca(ordemServico.getPercentualCobranca().toString()); } } if (ordemServico.getDataEncerramento() != null) { efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setDataRestabelecimento(Util.formatarData(ordemServico.getDataEncerramento())); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setDataInstalacao(Util.formatarData(ordemServico.getDataEncerramento())); } sessao.setAttribute("imovel", imovel); matriculaImovel = imovel.getId().toString(); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setMatriculaImovel("" + matriculaImovel); /*-------------- In�cio dados do Im�vel---------------*/ sessao.setAttribute("imovel", ordemServico.getRegistroAtendimento().getImovel()); if (imovel != null) { // Matricula Im�vel efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setMatriculaImovel(imovel.getId().toString()); // Inscri��o Im�vel String inscricaoImovel = fachada.pesquisarInscricaoImovel(imovel.getId()); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setInscricaoImovel(inscricaoImovel); // Situa��o da Liga��o de Agua String situacaoLigacaoAgua = imovel.getLigacaoAguaSituacao().getDescricao(); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setSituacaoLigacaoAgua(situacaoLigacaoAgua); // Situa��o da Liga��o de Esgoto String situacaoLigacaoEsgoto = imovel.getLigacaoEsgotoSituacao().getDescricao(); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setSituacaoLigacaoEsgoto(situacaoLigacaoEsgoto); this.pesquisarCliente(efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm,new Integer(matriculaImovel)); } if (temPermissaoMotivoNaoCobranca) { httpServletRequest.setAttribute("permissaoMotivoNaoCobranca", temPermissaoMotivoNaoCobranca); }else{ efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setPercentualCobranca("100"); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setQuantidadeParcelas("1"); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setValorParcelas(Util.formataBigDecimal(valorDebito,2,true)); } } else { efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setNomeOrdemServico("Ordem de Servi�o inexistente"); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setIdOrdemServico(""); httpServletRequest.setAttribute("OrdemServioInexistente", true); } } else { httpServletRequest.setAttribute("nomeCampo", "idOrdemServico"); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setIdOrdemServico(""); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setMatriculaImovel(""); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setInscricaoImovel(""); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setClienteUsuario(""); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setCpfCnpjCliente(""); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setSituacaoLigacaoAgua(""); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setSituacaoLigacaoEsgoto(""); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setDataRestabelecimento(""); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setIdTipoDebito(""); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setDescricaoTipoDebito(""); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setQuantidadeParcelas(""); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setValorParcelas(""); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setPercentualCobranca("-1"); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setMotivoNaoCobranca("-1"); } String numeroHidrometro = efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getNumeroHidrometro(); // Verificar se o n�mero do hidr�metro n�o est� cadastrado if (numeroHidrometro != null && !numeroHidrometro.trim().equals("")) { // Pesquisa o hidr�metro Hidrometro hidrometro = fachada.pesquisarHidrometroPeloNumero(numeroHidrometro); if (hidrometro == null) { efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setNumeroHidrometro(""); throw new ActionServletException("atencao.hidrometro_inexistente"); } else { efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setNumeroHidrometro(hidrometro.getNumero()); if(ordemServico != null){ // Valor D�bito /*BigDecimal valorDebito = fachada.obterValorDebito(ordemServico.getServicoTipo().getId(),new Integer(matriculaImovel),hidrometro.getHidrometroCapacidade()); if (valorDebito != null) { efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setValorDebito(Util.formataBigDecimal(valorDebito,2,true)); } else { efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setValorDebito("0"); }*/ if (temPermissaoMotivoNaoCobranca) { httpServletRequest.setAttribute("permissaoMotivoNaoCobranca", temPermissaoMotivoNaoCobranca); }else{ efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setPercentualCobranca("100"); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setQuantidadeParcelas("1"); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.setValorParcelas(Util.formataBigDecimal(valorDebito,2,true)); } } } } return retorno; } /* * [FS0013 - Altera��o de Valor] * * autor: Raphael Rossiter * data: 19/04/2007 */ private void permitirAlteracaoValor(ServicoTipo servicoTipo, EfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm 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, EfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm 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; } /** * Pesquisa Cliente * * @author Rafael Corr�a * @date 27/11/2006 */ private void pesquisarCliente( EfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm, Integer matriculaImovel) { // Filtro para carregar 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"); Collection colecaoClienteImovel = Fachada.getInstancia().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 efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm .setClienteUsuario(cliente.getNome()); efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm .setCpfCnpjCliente(documento); } else { throw new ActionServletException("atencao.naocadastrado", null, "Cliente"); } } /** * Monta os select�s obrigatorios * * @author Rafael Corr�a * @date 27/11/2006 */ private void consultaSelectObrigatorio(HttpSession sessao) { Fachada fachada = Fachada.getInstancia(); // Filtro para o campo Tipo 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"); } } // Pesquisando local de instala��o FiltroHidrometroLocalInstalacao filtroHidrometroLocalInstalacao = new FiltroHidrometroLocalInstalacao(); filtroHidrometroLocalInstalacao .setCampoOrderBy(FiltroHidrometroLocalInstalacao.DESCRICAO); filtroHidrometroLocalInstalacao .adicionarParametro(new ParametroSimples( FiltroHidrometroLocalInstalacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection colecaoHidrometroLocalInstalacao = Fachada.getInstancia() .pesquisar(filtroHidrometroLocalInstalacao, HidrometroLocalInstalacao.class.getName()); if (colecaoHidrometroLocalInstalacao == null || colecaoHidrometroLocalInstalacao.isEmpty()) { throw new ActionServletException( "atencao.entidade_sem_dados_para_selecao", null, "Hidr�metro local de instala��o"); } sessao.setAttribute("colecaoHidrometroLocalInstalacao", colecaoHidrometroLocalInstalacao); // Pesquisando prote��o FiltroHidrometroProtecao filtroHidrometroProtecao = new FiltroHidrometroProtecao(); filtroHidrometroProtecao .setCampoOrderBy(FiltroHidrometroProtecao.DESCRICAO); filtroHidrometroProtecao.adicionarParametro(new ParametroSimples( FiltroHidrometroProtecao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection colecaoHidrometroProtecao = Fachada.getInstancia() .pesquisar(filtroHidrometroProtecao, HidrometroProtecao.class.getName()); if (colecaoHidrometroProtecao == null || colecaoHidrometroProtecao.isEmpty()) { throw new ActionServletException( "atencao.entidade_sem_dados_para_selecao", null, "Hidr�metro prote��o"); } sessao.setAttribute("colecaoHidrometroProtecao", colecaoHidrometroProtecao); } }