package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao; import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoSituacao; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteFone; import gcom.cadastro.cliente.FiltroClienteFone; import gcom.cadastro.imovel.Categoria; import gcom.cadastro.imovel.FiltroImovel; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.imovel.ImovelSubcategoria; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.cobranca.bean.ContaValoresHelper; import gcom.cobranca.bean.GuiaPagamentoValoresHelper; import gcom.cobranca.bean.ObterDebitoImovelOuClienteHelper; import gcom.fachada.Fachada; import gcom.faturamento.credito.CreditoARealizar; import gcom.faturamento.credito.CreditoOrigem; import gcom.faturamento.debito.DebitoACobrar; import gcom.faturamento.debito.DebitoTipo; import gcom.gui.GcomAction; import gcom.micromedicao.medicao.MedicaoTipo; import gcom.util.ConstantesSistema; import gcom.util.ControladorException; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.Iterator; 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; public class ExibirEmitirOrdemFiscalizacaoPopupAction extends GcomAction { /** * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return forward */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping .findForward("exibirEmitirOrdemFiscalizacaoPopupAction"); EmitirOrdemFiscalizacaoForm form = (EmitirOrdemFiscalizacaoForm) actionForm; Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); form.setDataEmissao(Util.formatarData(new Date())); this.pesquisarValores(form,fachada,sessao); this.pesquisarEconomias(form,fachada,sessao); this.pesquisarDadosImovel(form,fachada,sessao,httpServletRequest); return retorno; } private void pesquisarDadosImovel(EmitirOrdemFiscalizacaoForm form, Fachada fachada, HttpSession sessao,HttpServletRequest httpServletRequest) { SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema(); FiltroImovel filtro = new FiltroImovel(); filtro.adicionarParametro(new ParametroSimples(FiltroImovel.ID, form.getMatriculaImovel())); filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.IMOVEL_PERFIL); filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.FATURAMENTO_GRUPO); filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LIGACAO_AGUA_SITUACAO); filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LIGACAO_ESGOTO_SITUACAO); filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LIGACAO_AGUA_HIDROMETRO_INSTALACAO_HISTORICO); filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.CLIENTES_IMOVEIS); filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.UNIDADE_FEDERACAO); Collection<Imovel> imoveis = fachada.pesquisar(filtro, Imovel.class.getName()); Imovel imovel = (Imovel) Util.retonarObjetoDeColecao(imoveis); form.setIdPerfilImovel(imovel.getImovelPerfil().getId().toString()); form.setDescricaoPerfilImovel(imovel.getImovelPerfil().getDescricao()); form.setUltimaAlteracao(Util.formatarData(imovel.getUltimaAlteracao())); form.setFaturamentoGrupo(imovel.getQuadra().getRota().getFaturamentoGrupo().getId().toString()); form.setSituacaoLigacaoAgua(imovel.getLigacaoAguaSituacao().getDescricao()); if(imovel.getLogradouroBairro()!=null && imovel.getLogradouroBairro().getBairro()!=null && imovel.getLogradouroBairro().getBairro().getMunicipio()!=null && imovel.getLogradouroBairro().getBairro().getMunicipio().getUnidadeFederacao()!=null){ form.setUf(imovel.getLogradouroBairro().getBairro().getMunicipio().getUnidadeFederacao().getSigla()); } if(imovel.getLigacaoAgua()!=null && imovel.getLigacaoAguaSituacao().getId().compareTo(LigacaoAguaSituacao.CORTADO)==0){ form.setDataCorte(Util.formatarData(imovel.getLigacaoAgua().getDataCorte())); } if(imovel.getLigacaoAgua()!=null && (imovel.getLigacaoAguaSituacao().getId().compareTo(LigacaoAguaSituacao.SUPR_PARC)==0 || imovel.getLigacaoAguaSituacao().getId().compareTo(LigacaoAguaSituacao.SUPR_PARC_PEDIDO)==0)){ form.setDataSupressaoParcial(Util.formatarData(imovel.getLigacaoAgua().getDataSupressao())); } if(imovel.getLigacaoAgua()!=null && imovel.getLigacaoAguaSituacao().getId().compareTo(LigacaoAguaSituacao.SUPRIMIDO)==0){ form.setDataSupressaoTotal(Util.formatarData(imovel.getLigacaoAgua().getDataSupressao())); } form.setSituacaoLigacaoEsgoto(imovel.getLigacaoEsgotoSituacao().getDescricao()); if(imovel.getLigacaoEsgoto()!=null && imovel.getLigacaoEsgoto().getConsumoMinimo()!=null && imovel.getLigacaoEsgotoSituacao()!=null && (imovel.getLigacaoEsgotoSituacao().getId().compareTo(LigacaoEsgotoSituacao.POTENCIAL)!=0 && imovel.getLigacaoEsgotoSituacao().getId().compareTo(LigacaoEsgotoSituacao.FACTIVEL)!=0)){ form.setVolumeFixoEsgoto(imovel.getLigacaoEsgoto().getConsumoMinimo().toString()); } /** * Alterando o c�lculo da m�dia */ MedicaoTipo medicao = new MedicaoTipo(); medicao.setId(new Integer(MedicaoTipo.LIGACAO_AGUA)); boolean houveIntslacaoHidrometro = false; try { houveIntslacaoHidrometro = fachada.verificarInstalacaoSubstituicaoHidrometro(imovel.getId(), medicao); } catch (ControladorException e) { e.printStackTrace(); } int idLigacaoTipo = fachada.verificarTipoLigacao(imovel); int[] retorno = fachada.obterVolumeMedioAguaEsgoto(imovel.getId(), sistemaParametro.getAnoMesFaturamento(), idLigacaoTipo, houveIntslacaoHidrometro); form.setConsumoMedioAgua(retorno[0]+""); Cliente clienteUsuario = imovel.getClienteUsuario(); if(clienteUsuario!=null){ form.setNomeCliente(clienteUsuario.getNome()); if(clienteUsuario.getCpf()!=null){ form.setCpfCnpj(clienteUsuario.getCpfFormatado()); }else if(clienteUsuario.getCnpj()!=null){ form.setCpfCnpj(clienteUsuario.getCnpjFormatado()); } if(clienteUsuario.getRg()!=null){ form.setRg(clienteUsuario.getRg()); } FiltroClienteFone filtroFone = new FiltroClienteFone(); filtroFone.adicionarParametro( new ParametroSimples(FiltroClienteFone.CLIENTE_ID, clienteUsuario.getId())); filtroFone.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteFone.FONE_TIPO); Collection<ClienteFone> clienteFones = fachada.pesquisar(filtroFone, ClienteFone.class.getName()); ClienteFone clienteFone = (ClienteFone) Util.retonarObjetoDeColecao(clienteFones); if(clienteFone!=null){ if(clienteFone.getTelefone()!=null){ form.setNumeroTelefone(clienteFone.getTelefone()); } if(clienteFone.getDdd()!=null){ form.setDdd(clienteFone.getDdd().toString()); } if(clienteFone.getRamal()!=null){ form.setRamal(clienteFone.getRamal()); } if(clienteFone.getFoneTipo()!=null){ form.setTipoTelefone(clienteFone.getFoneTipo().getDescricao()); } } } String indicadorAguaEsgoto = ConstantesSistema.CALCULAR_AGUA; String tipo = httpServletRequest.getParameter("tipo"); if(tipo!=null && !tipo.equals("")){ //Liga��o Agua if(tipo.equals("1")){ indicadorAguaEsgoto = ConstantesSistema.CALCULAR_AGUA; } //Po�o if(tipo.equals("2")){ indicadorAguaEsgoto = ConstantesSistema.CALCULAR_ESGOTO; } } String ocorrencia = fachada.pesquisarAnormalidadesImovel(new Integer(form.getMatriculaImovel()),indicadorAguaEsgoto); if(ocorrencia!=null && !ocorrencia.equals("")){ form.setOcorrencia(ocorrencia); }else{ form.setOcorrencia(null); } } private void pesquisarEconomias(EmitirOrdemFiscalizacaoForm form, Fachada fachada, HttpSession sessao) { Collection imovelSubcategorias = fachada.pesquisarCategoriasImovel( new Integer(form.getMatriculaImovel().trim())); sessao.setAttribute("imovelSubcategorias",imovelSubcategorias); form.setQtdeEconResidencial(new Integer(0)); form.setQtdeEconComercial(new Integer(0)); form.setQtdeEconIndustrial(new Integer(0)); form.setQtdeEconPublica(new Integer(0)); form.setQtdeEconTotal(new Integer(0)); for (Iterator iterator = imovelSubcategorias.iterator(); iterator .hasNext();) { ImovelSubcategoria imovelSubcategoria = (ImovelSubcategoria) iterator.next(); if(imovelSubcategoria .getComp_id().getSubcategoria() .getCategoria().getId().compareTo(Categoria.RESIDENCIAL)==0){ form.setQtdeEconResidencial(form.getQtdeEconResidencial()+ imovelSubcategoria.getQuantidadeEconomias()); form.setQtdeEconTotal(form.getQtdeEconTotal()+ imovelSubcategoria.getQuantidadeEconomias()); } if(imovelSubcategoria .getComp_id().getSubcategoria() .getCategoria().getId().compareTo(Categoria.COMERCIAL)==0){ form.setQtdeEconComercial(form.getQtdeEconComercial()+ imovelSubcategoria.getQuantidadeEconomias()); form.setQtdeEconTotal(form.getQtdeEconTotal()+ imovelSubcategoria.getQuantidadeEconomias()); } if(imovelSubcategoria .getComp_id().getSubcategoria() .getCategoria().getId().compareTo(Categoria.INDUSTRIAL)==0){ form.setQtdeEconIndustrial(form.getQtdeEconIndustrial()+ imovelSubcategoria.getQuantidadeEconomias()); form.setQtdeEconTotal(form.getQtdeEconTotal()+ imovelSubcategoria.getQuantidadeEconomias()); } if(imovelSubcategoria .getComp_id().getSubcategoria() .getCategoria().getId().compareTo(Categoria.PUBLICO)==0){ form.setQtdeEconPublica(form.getQtdeEconPublica()+ imovelSubcategoria.getQuantidadeEconomias()); form.setQtdeEconTotal(form.getQtdeEconTotal()+ imovelSubcategoria.getQuantidadeEconomias()); } } } private void pesquisarValores(EmitirOrdemFiscalizacaoForm form, Fachada fachada, HttpSession sessao) { String referenciaInicial = "01/0001"; String referenciaFinal = "12/9999"; String dataVencimentoInicial = "01/01/0001"; String dataVencimentoFinal = "31/12/9999"; // Para auxiliar na formata��o de uma data SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy"); String mesInicial = referenciaInicial.substring(0, 2); String anoInicial = referenciaInicial.substring(3, referenciaInicial.length()); String anoMesInicial = anoInicial + mesInicial; String mesFinal = referenciaFinal.substring(0, 2); String anoFinal = referenciaFinal.substring(3, referenciaFinal.length()); String anoMesFinal = anoFinal + mesFinal; Date dataVencimentoDebitoI; Date dataVencimentoDebitoF; try { dataVencimentoDebitoI = formatoData.parse(dataVencimentoInicial); } catch (ParseException ex) { dataVencimentoDebitoI = null; } try { dataVencimentoDebitoF = formatoData.parse(dataVencimentoFinal); } catch (ParseException ex) { dataVencimentoDebitoF = null; } // seta valores constantes para chamar o metodo que consulta debitos do imovel Integer tipoImovel = new Integer(1); Integer indicadorPagamento = new Integer(1); Integer indicadorConta = new Integer(1); Integer indicadorDebito = new Integer(1); Integer indicadorCredito = new Integer(1); Integer indicadorNotas = new Integer(1); Integer indicadorGuias = new Integer(1); Integer indicadorAtualizar = new Integer(1); // Obtendo os d�bitos do imovel ObterDebitoImovelOuClienteHelper colecaoDebitoImovel = fachada .obterDebitoImovelOuCliente(tipoImovel.intValue(), form.getMatriculaImovel().trim(), null, null, anoMesInicial, anoMesFinal, dataVencimentoDebitoI, dataVencimentoDebitoF, indicadorPagamento .intValue(), indicadorConta .intValue(), indicadorDebito .intValue(), indicadorCredito .intValue(), indicadorNotas .intValue(), indicadorGuias .intValue(), indicadorAtualizar .intValue(), null); Collection<ContaValoresHelper> colecaoContaValores = colecaoDebitoImovel.getColecaoContasValores(); ContaValoresHelper dadosConta = null; BigDecimal valorConta = new BigDecimal("0.00"); BigDecimal valorAcrescimo = new BigDecimal("0.00"); BigDecimal valorAgua = new BigDecimal("0.00"); BigDecimal valorEsgoto = new BigDecimal("0.00"); BigDecimal valorDebito = new BigDecimal("0.00"); BigDecimal valorCredito = new BigDecimal("0.00"); BigDecimal valorImposto = new BigDecimal("0.00"); if (colecaoContaValores != null && !colecaoContaValores.isEmpty()) { java.util.Iterator<ContaValoresHelper> colecaoContaValoresIterator = colecaoContaValores.iterator(); // percorre a colecao de conta somando o valor para obter um valor total while (colecaoContaValoresIterator.hasNext()) { dadosConta = (ContaValoresHelper) colecaoContaValoresIterator.next(); valorConta = valorConta.add(dadosConta.getConta().getValorTotal()); valorAcrescimo = valorAcrescimo.add(dadosConta.getValorTotalContaValores()); valorAgua = valorAgua.add(dadosConta.getConta().getValorAgua()); valorEsgoto = valorEsgoto.add(dadosConta.getConta().getValorEsgoto()); valorDebito = valorDebito.add(dadosConta.getConta().getDebitos()); valorCredito = valorCredito.add(dadosConta.getConta().getValorCreditos()); valorImposto = valorImposto.add(dadosConta.getConta().getValorImposto()); } } Collection<DebitoACobrar> colecaoDebitoACobrar = colecaoDebitoImovel.getColecaoDebitoACobrar(); BigDecimal valorDebitoACobrar = new BigDecimal("0.00"); BigDecimal valorDebitoACobrarSemJurosParcelamento = new BigDecimal("0.00"); DebitoACobrar dadosDebito = null; if (colecaoDebitoACobrar != null && !colecaoDebitoACobrar.isEmpty()) { java.util.Iterator<DebitoACobrar> colecaoDebitoACobrarIterator = colecaoDebitoACobrar.iterator(); // percorre a colecao de debito a cobrar somando o valor para obter um valor total while (colecaoDebitoACobrarIterator.hasNext()) { dadosDebito = (DebitoACobrar) colecaoDebitoACobrarIterator.next(); valorDebitoACobrar = valorDebitoACobrar.add(dadosDebito.getValorTotalComBonus()); if (dadosDebito.getDebitoTipo() != null && !dadosDebito.getDebitoTipo().getId().equals(DebitoTipo.JUROS_SOBRE_PARCELAMENTO)){ valorDebitoACobrarSemJurosParcelamento = valorDebitoACobrarSemJurosParcelamento.add(dadosDebito.getValorTotalComBonus()); } } } Collection<CreditoARealizar> colecaoCreditoARealizar = colecaoDebitoImovel.getColecaoCreditoARealizar(); BigDecimal valorCreditoARealizar = new BigDecimal("0.00"); BigDecimal valorCreditoARealizarSemDescontosParcelamento = new BigDecimal("0.00"); CreditoARealizar dadosCredito = null; if (colecaoCreditoARealizar != null && !colecaoCreditoARealizar.isEmpty()) { java.util.Iterator<CreditoARealizar> colecaoCreditoARealizarIterator = colecaoCreditoARealizar.iterator(); // percorre a colecao de credito a realizar somando o valor para obter um valor total while (colecaoCreditoARealizarIterator.hasNext()) { dadosCredito = (CreditoARealizar) colecaoCreditoARealizarIterator.next(); valorCreditoARealizar = valorCreditoARealizar.add(dadosCredito.getValorTotalComBonus()); if (dadosCredito.getCreditoOrigem() != null && !dadosCredito.getCreditoOrigem().getId().equals(CreditoOrigem.DESCONTOS_CONCEDIDOS_NO_PARCELAMENTO)){ valorCreditoARealizarSemDescontosParcelamento = valorCreditoARealizarSemDescontosParcelamento.add(dadosCredito.getValorTotalComBonus()); } } } Collection<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValores = colecaoDebitoImovel.getColecaoGuiasPagamentoValores(); BigDecimal valorGuiaPagamento = new BigDecimal("0.00"); GuiaPagamentoValoresHelper dadosGuiaPagamentoValoresHelper = null; if (colecaoGuiaPagamentoValores != null && !colecaoGuiaPagamentoValores.isEmpty()) { java.util.Iterator<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValoresHelperIterator = colecaoGuiaPagamentoValores.iterator(); // percorre a colecao de guia de pagamento somando o valor para obter um valor total while (colecaoGuiaPagamentoValoresHelperIterator.hasNext()) { dadosGuiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) colecaoGuiaPagamentoValoresHelperIterator.next(); valorGuiaPagamento = valorGuiaPagamento.add(dadosGuiaPagamentoValoresHelper.getGuiaPagamento().getValorDebito()); } } // Soma o valor total dos debitos e subtrai dos creditos BigDecimal valorTotalSemAcrescimo = valorConta.add(valorDebitoACobrar); valorTotalSemAcrescimo = valorTotalSemAcrescimo.add(valorGuiaPagamento); valorTotalSemAcrescimo = valorTotalSemAcrescimo.subtract(valorCreditoARealizar); form.setValorDebitosAteDataVencimento(Util .formatarMoedaReal(valorTotalSemAcrescimo)); form.setValorServicos(Util .formatarMoedaReal(valorDebitoACobrar)); } }