package gcom.gui.atendimentopublico.ligacaoagua; import gcom.atendimentopublico.ligacaoagua.CorteTipo; import gcom.atendimentopublico.ligacaoagua.FiltroCorteTipo; 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.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 java.util.Date; 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 Thiago Ten�rio * @created 20 de Junho de 2006 */ public class ExibirEfetuarCorteAdministrativoLigacaoAguaAction 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 = getSessao(httpServletRequest); ActionForward retorno = actionMapping .findForward("efetuarCorteAdministrativoLigacaoAgua"); EfetuarCorteAdministrativoLigacaoAguaActionForm corteAdministrativoLigacaoAguaActionForm = (EfetuarCorteAdministrativoLigacaoAguaActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); Boolean veioEncerrarOS = null; if (httpServletRequest.getAttribute("veioEncerrarOS") != null) { veioEncerrarOS = Boolean.TRUE; } else { if (corteAdministrativoLigacaoAguaActionForm.getVeioEncerrarOS() != null && !corteAdministrativoLigacaoAguaActionForm .getVeioEncerrarOS().equals("")) { if (corteAdministrativoLigacaoAguaActionForm.getVeioEncerrarOS() .toLowerCase().equals("true")) { veioEncerrarOS = veioEncerrarOS = Boolean.TRUE; } else { veioEncerrarOS = veioEncerrarOS = Boolean.FALSE; } } else { veioEncerrarOS = Boolean.FALSE; } } if (corteAdministrativoLigacaoAguaActionForm.getReset().equals("true")) { corteAdministrativoLigacaoAguaActionForm.reset(); } getTipoCorteCollection(sessao); String idOrdemServico = null; if(corteAdministrativoLigacaoAguaActionForm.getIdOrdemServico() != null){ idOrdemServico = corteAdministrativoLigacaoAguaActionForm.getIdOrdemServico(); }else{ idOrdemServico = (String)httpServletRequest.getAttribute("veioEncerrarOS"); corteAdministrativoLigacaoAguaActionForm.setDataCorte((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; if (idOrdemServico != null && !idOrdemServico.trim().equals("")) { ordemServico = fachada.recuperaOSPorId(new Integer(idOrdemServico)); if (ordemServico != null) { fachada.validarExibirCorteAdministrativoLigacaoAgua( ordemServico, veioEncerrarOS); sessao.setAttribute("ordemServico", ordemServico); corteAdministrativoLigacaoAguaActionForm.setVeioEncerrarOS("" + veioEncerrarOS); corteAdministrativoLigacaoAguaActionForm.setIdOrdemServico("" + ordemServico.getId()); corteAdministrativoLigacaoAguaActionForm .setNomeOrdemServico(ordemServico.getServicoTipo() .getDescricao()); //Comentado por Raphael Rossiter em 28/02/2007 //Imovel imovel = ordemServico.getRegistroAtendimento().getImovel(); Imovel imovel = ordemServico.getImovel(); /* * Validar campo Leitura do Corte Verefica se existe hidrometro * na ligacao de �gua, pois se true o usu�rio poderar ou n�o * informar o n�mero de leitura do corte, mas se false a caixa * de texto ser� desabilitada */ if (imovel.getLigacaoAgua().getHidrometroInstalacaoHistorico() != null) { corteAdministrativoLigacaoAguaActionForm .setHidrometro(imovel.getLigacaoAgua() .getHidrometroInstalacaoHistorico().getId() .toString()); } // Matricula Imovel String matriculaImovel = imovel.getId().toString(); corteAdministrativoLigacaoAguaActionForm .setMatriculaImovel(matriculaImovel); // Inscri��o Im�vel String inscricaoImovel = fachada .pesquisarInscricaoImovel(imovel.getId()); corteAdministrativoLigacaoAguaActionForm .setInscricaoImovel(inscricaoImovel); corteAdministrativoLigacaoAguaActionForm .setMatriculaImovel(matriculaImovel); // Cliente Usu�rio this.pesquisarCliente(corteAdministrativoLigacaoAguaActionForm); // Situa��o da Liga��o de Agua String situacaoLigacaoAgua = imovel.getLigacaoAguaSituacao() .getDescricao(); corteAdministrativoLigacaoAguaActionForm .setSituacaoLigacaoAgua(situacaoLigacaoAgua); // Situa��o da Liga��o de Esgoto String situacaoLigacaoEsgoto = imovel .getLigacaoEsgotoSituacao().getDescricao(); corteAdministrativoLigacaoAguaActionForm .setSituacaoLigacaoEsgoto(situacaoLigacaoEsgoto); Date dataCorte = ordemServico.getDataEncerramento(); if(dataCorte != null && !dataCorte.equals("")){ corteAdministrativoLigacaoAguaActionForm.setDataCorte("" + Util.formatarData(dataCorte)); } if (imovel != null && imovel.getLigacaoAgua() != null && imovel.getLigacaoAgua().getCorteTipo() != null) { corteAdministrativoLigacaoAguaActionForm.setTipoCorte("" + imovel.getLigacaoAgua().getCorteTipo().getId()); } if (ordemServico.getServicoTipo().getDebitoTipo() != null) { corteAdministrativoLigacaoAguaActionForm .setIdTipoDebito(ordemServico.getServicoTipo() .getDebitoTipo().getId() + ""); corteAdministrativoLigacaoAguaActionForm .setDescricaoTipoDebito(ordemServico .getServicoTipo().getDebitoTipo() .getDescricao()); }else{ corteAdministrativoLigacaoAguaActionForm.setIdTipoDebito(""); corteAdministrativoLigacaoAguaActionForm.setDescricaoTipoDebito(""); } //[FS0013] - Altera��o de Valor this.permitirAlteracaoValor(ordemServico.getServicoTipo(), corteAdministrativoLigacaoAguaActionForm); 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(corteAdministrativoLigacaoAguaActionForm.getQuantidadeParcelas()); if(ordemServico.getServicoTipo().getIndicadorCobrarJuros() == ConstantesSistema.SIM.shortValue() && qtdeParcelas.intValue() != 1){ taxaJurosFinanciamento = sistemaParametro.getPercentualTaxaJurosFinanciamento(); }else{ taxaJurosFinanciamento = new BigDecimal(0); } BigDecimal valorPrestacao = null; if(taxaJurosFinanciamento != null){ valorDebito = new BigDecimal(corteAdministrativoLigacaoAguaActionForm.getValorDebito().replace(",",".")); String percentualCobranca = corteAdministrativoLigacaoAguaActionForm.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); corteAdministrativoLigacaoAguaActionForm.setValorParcelas(valorPrestacaoComVirgula); } else { corteAdministrativoLigacaoAguaActionForm.setValorParcelas("0,00"); } }else{ // Valor D�bito valorDebito = fachada.obterValorDebito(ordemServico .getServicoTipo().getId(), new Integer(matriculaImovel), new Short("1")); if (valorDebito != null) { corteAdministrativoLigacaoAguaActionForm .setValorDebito(valorDebito + ""); } else { corteAdministrativoLigacaoAguaActionForm .setValorDebito("0"); } } // 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"); } } corteAdministrativoLigacaoAguaActionForm .setQtdeMaxParcelas(sistemaParametro .getNumeroMaximoParcelasFinanciamento() + ""); // ----------------------------------------------------------- // Verificar permiss�o especial boolean temPermissaoMotivoNaoCobranca = fachada.verificarPermissaoInformarMotivoNaoCobranca(usuarioLogado); // ----------------------------------------------------------- if (temPermissaoMotivoNaoCobranca) { httpServletRequest.setAttribute("permissaoMotivoNaoCobranca", temPermissaoMotivoNaoCobranca); }else{ corteAdministrativoLigacaoAguaActionForm.setPercentualCobranca("100"); corteAdministrativoLigacaoAguaActionForm.setQuantidadeParcelas("1"); corteAdministrativoLigacaoAguaActionForm.setValorParcelas(Util.formataBigDecimal(valorDebito,2,true)); } } else { corteAdministrativoLigacaoAguaActionForm.setNomeOrdemServico("Ordem de Servi�o inexistente"); corteAdministrativoLigacaoAguaActionForm.setIdOrdemServico(""); } } else { httpServletRequest.setAttribute("nomeCampo", "idOrdemServico"); corteAdministrativoLigacaoAguaActionForm.reset(); } return retorno; } /* * [FS0013 - Altera��o de Valor] * * autor: Raphael Rossiter * data: 19/04/2007 */ private void permitirAlteracaoValor(ServicoTipo servicoTipo, EfetuarCorteAdministrativoLigacaoAguaActionForm form){ if (servicoTipo.getIndicadorPermiteAlterarValor() == ConstantesSistema.INDICADOR_USO_ATIVO.shortValue()){ form.setAlteracaoValor("OK"); } else{ form.setAlteracaoValor(""); } } private void getTipoCorteCollection(HttpSession sessao) { // Filtro para o campo Motivo do Corte FiltroCorteTipo filtroTipoCorteLigacaoAgua = new FiltroCorteTipo(); filtroTipoCorteLigacaoAgua.adicionarParametro(new ParametroSimples(FiltroCorteTipo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroTipoCorteLigacaoAgua.adicionarParametro(new ParametroSimples(FiltroCorteTipo.INDICADOR_CORTE_ADMINISTRATIVO, ConstantesSistema.SIM)); filtroTipoCorteLigacaoAgua.setCampoOrderBy(FiltroCorteTipo.DESCRICAO); Collection colecaoTipoCorteLigacaoAgua = Fachada.getInstancia().pesquisar(filtroTipoCorteLigacaoAgua, CorteTipo.class.getName()); if (colecaoTipoCorteLigacaoAgua != null && !colecaoTipoCorteLigacaoAgua.isEmpty()) { sessao.setAttribute("colecaoTipoCorteLigacaoAgua",colecaoTipoCorteLigacaoAgua); } else { throw new ActionServletException("atencao.naocadastrado",null, "Tipo do Corte"); } } /** * Pesquisa Cliente * * @author Rafael Pinto * @date 25/08/2006 */ private void pesquisarCliente( EfetuarCorteAdministrativoLigacaoAguaActionForm corteAdministrativoLigacaoAguaActionForm) { // Filtro para carregar o Cliente FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel(); filtroClienteImovel.adicionarParametro(new ParametroSimples( FiltroClienteImovel.IMOVEL_ID, corteAdministrativoLigacaoAguaActionForm.getMatriculaImovel())); 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 corteAdministrativoLigacaoAguaActionForm.setClienteUsuario(cliente .getNome()); corteAdministrativoLigacaoAguaActionForm .setCpfCnpjCliente(documento); } else { throw new ActionServletException("atencao.naocadastrado", null, "Cliente"); } } }