package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.cadastro.imovel.FiltroImovel; import gcom.cadastro.imovel.Imovel; import gcom.cobranca.CobrancaAcao; import gcom.cobranca.CobrancaDocumento; import gcom.cobranca.DocumentoTipo; import gcom.cobranca.bean.ContaValoresHelper; import gcom.cobranca.bean.ObterDebitoImovelOuClienteHelper; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.text.ParseException; import java.text.SimpleDateFormat; 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; /** * [UC1054] Gerar Ordem de Corte * * Este Caso Uso permite realizar a emiss�o de Documentos de Ordem de Corte * de forma individual para um determinado im�vel. * * @author Hugo Amorim * @data 08/02/2010 * */ public class EmitirOrdemServicoCorteAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping .findForward("telaSucesso"); EmitirOrdemCorteForm form = (EmitirOrdemCorteForm) actionForm; Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); OrdemServico ordemServicoCorte = new OrdemServico(); if(form.getMatriculaImovel()!=null && !form.getMatriculaImovel().equals("")){ FiltroImovel filtro = new FiltroImovel(); filtro.adicionarParametro( new ParametroSimples( FiltroImovel.ID, form.getMatriculaImovel())); Collection colecaoimovel = fachada.pesquisar(filtro, Imovel.class.getName()); Imovel imovel = (Imovel) Util.retonarObjetoDeColecao(colecaoimovel); ordemServicoCorte.setImovel(imovel); } 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(2); Integer indicadorCredito = new Integer(2); Integer indicadorNotas = new Integer(2); Integer indicadorGuias = new Integer(2); Integer indicadorAtualizar = new Integer(1); // Obtendo os d�bitos do imovel ObterDebitoImovelOuClienteHelper colecaoDebitoImovel = fachada .obterDebitoImovelOuCliente(tipoImovel.intValue(), form.getMatriculaImovel().toString().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(); if(colecaoContaValores == null || colecaoContaValores .isEmpty()){ throw new ActionServletException("atencao.imovel.sem.debito",form.getMatriculaImovel().toString().trim()); } Collection<CobrancaDocumento> colecaoCobrancaDocumento = this.getFachada().pesquisarCobrancaDocumentoValidoImovel( Integer.parseInt(form.getMatriculaImovel()),DocumentoTipo.AVISO_CORTE, CobrancaAcao.AVISO_CORTE); if(Util.isVazioOrNulo(colecaoCobrancaDocumento)){ throw new ActionServletException("atencao.imovel_sem_documento_do_tipo", form.getMatriculaImovel().toString(),"AVISO CORTE"); } Integer idOsGerada = fachada.gerarOrdemServicoCorte(ordemServicoCorte, usuario); sessao.setAttribute("idOsGerada", idOsGerada.toString()); form.setIndicadorPermitirEmitir("sim"); form.setIndicadorPermitirGerarOs("nao"); form.setOrdemServico(idOsGerada.toString()); montarPaginaSucesso(httpServletRequest, "Ordem de Servi�o de Corte " +idOsGerada+ " gerada com sucesso.", "Emitir Ordem de Corte", "exibirEmitirOrdemCorteAction.do"); return retorno; } }