package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.FiltroServicoTipo; import gcom.atendimentopublico.ordemservico.ServicoCobrancaValor; import gcom.atendimentopublico.ordemservico.ServicoTipo; import gcom.cadastro.imovel.Categoria; import gcom.cadastro.imovel.ImovelPerfil; import gcom.cadastro.imovel.Subcategoria; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.interceptor.RegistradorOperacao; import gcom.micromedicao.hidrometro.HidrometroCapacidade; import gcom.seguranca.acesso.Operacao; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioAcao; import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper; import gcom.util.ConstantesSistema; import gcom.util.Util; 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; /** * Inser��o de Valor de Cobran�a do Servi�o * * @author Leonardo Regis * @date 29/09/2006 */ public class InserirValorCobrancaServicoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Forward ActionForward retorno = actionMapping.findForward("telaSucesso"); Fachada fachada = Fachada.getInstancia(); // Form InserirValorCobrancaServicoActionForm cobrancaServicoActionForm = (InserirValorCobrancaServicoActionForm) actionForm; // Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); Usuario usuarioLogado = (Usuario)sessao.getAttribute(Usuario.USUARIO_LOGADO); // Filtra Tipo de Servi�o FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo(); filtroServicoTipo.adicionarParametro(new ParametroSimples( FiltroServicoTipo.ID, cobrancaServicoActionForm .getTipoServico())); filtroServicoTipo .adicionarCaminhoParaCarregamentoEntidade("debitoTipo"); // Recupera Tipo de Servi�o Collection colecaoServicoTipo = fachada.pesquisar( filtroServicoTipo, ServicoTipo.class.getName()); if (colecaoServicoTipo == null || colecaoServicoTipo.isEmpty()) { throw new ActionServletException("atencao.tipo_servico_inexistente"); } ServicoTipo servicoTipo = new ServicoTipo(); servicoTipo = (ServicoTipo) colecaoServicoTipo.iterator().next(); // if (servicoTipo.getDebitoTipo() == null) { // throw new ActionServletException( // "atencao.valor_cobranca_tipo_servico_sem_debito", null, // servicoTipo.getDescricao()); // } // Seta Objeto Servico Cobran�a Valor ServicoCobrancaValor servicoCobrancaValor = setServicoCobrancaValor(cobrancaServicoActionForm); // FS0008 - Verificar pr�-exist�ncia de vig�ncia para o Servi�o tipo fachada.verificarExistenciaVigenciaDebito(cobrancaServicoActionForm.getDataVigenciaInicial(), cobrancaServicoActionForm.getDataVigenciaFinal(), new Integer(cobrancaServicoActionForm.getTipoServico()), new Integer("1")); // FS0011 - Verificar pr�-exist�ncia de vig�ncia para o Servi�o tipo if(fachada.validarVigenciaValorCobrancaServico(servicoCobrancaValor)){ throw new ActionServletException("atencao.existe_valor_para_vigencia"); } // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_VALOR_COBRANCA_SERVICO_INSERIR, servicoCobrancaValor.getServicoTipo().getId(), servicoCobrancaValor.getServicoTipo().getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(servicoCobrancaValor); // [FS0001] Verificar Servi�o Geral D�bito. fachada.inserirValorCobrancaServico(servicoCobrancaValor); // [FS008] Monta a p�gina de sucesso montarPaginaSucesso(httpServletRequest, "Valor da Cobran�a do Servi�o " + servicoTipo.getDescricao() + " inserido com sucesso.", "Inserir outro Valor de Cobran�a do Servi�o", "exibirInserirValorCobrancaServicoAction.do?menu=sim"); return retorno; } /** * Preenche objeto com informa��es vindas da tela * * @author Leonardo Regis * @date 29/09/2006 * * @param form * @return servicoCobrancaValor */ private ServicoCobrancaValor setServicoCobrancaValor( InserirValorCobrancaServicoActionForm form) { Fachada fachada = Fachada.getInstancia(); ServicoCobrancaValor servicoCobrancaValor = new ServicoCobrancaValor(); // Tipo do Servi�o FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo(); filtroServicoTipo.adicionarParametro(new ParametroSimples(FiltroServicoTipo.ID, form.getTipoServico())); // Recupera Tipo de Servi�o Collection colecaoServicoTipo = fachada.pesquisar(filtroServicoTipo, ServicoTipo.class.getName()); ServicoTipo tipoServico = (ServicoTipo) colecaoServicoTipo.iterator().next(); servicoCobrancaValor.setServicoTipo(tipoServico); //Categoria Categoria categoria = null; if(form.getIdSubCategoria() != null && (!form.getIdCategoria().equals("") && !form.getIdCategoria().equals("-1"))){ categoria = new Categoria(); categoria.setId(new Integer(form.getIdCategoria())); } servicoCobrancaValor.setCategoria(categoria); // subCategoria Subcategoria subcategoria = null; if(form.getIdSubCategoria() != null && (!form.getIdSubCategoria().equals("") && !form.getIdSubCategoria().equals("-1"))){ subcategoria = new Subcategoria(); subcategoria.setId(new Integer(form.getIdSubCategoria())); } servicoCobrancaValor.setSubCategoria(subcategoria); // Perfil do Im�vel ImovelPerfil perfilImovel = null; if (form.getPerfilImovel() != null && (!form.getPerfilImovel().equals("") && !form .getPerfilImovel().equals("-1"))) { perfilImovel = new ImovelPerfil(); perfilImovel.setId(new Integer(form.getPerfilImovel())); } servicoCobrancaValor.setImovelPerfil(perfilImovel); // Indicador de Medido if (form.getIndicadorMedido().equals(ConstantesSistema.SIM.toString())) { servicoCobrancaValor.setIndicadorMedido(ConstantesSistema.SIM); } else { servicoCobrancaValor.setIndicadorMedido(ConstantesSistema.NAO); } // Indicativo Considera Economias if(form.getIndicativoTipoSevicoEconomias().equals(ConstantesSistema.SIM.toString())){ servicoCobrancaValor.setIndicadorConsideraEconomias(ConstantesSistema.SIM); }else{ servicoCobrancaValor.setIndicadorConsideraEconomias(ConstantesSistema.NAO); } // Hugo Leonardo - 19/04/2010 // Economia Inicial e Economia Final // [FS0005] - validar quantidade de economia inicial if(form.getQuantidadeEconomiasInicial() != null && !form.getQuantidadeEconomiasInicial().equals("") && !form.getQuantidadeEconomiasInicial().equals("0")){ // [FS0006] - validar quantidade de economia final if(form.getQuantidadeEconomiasFinal() != null && !form.getQuantidadeEconomiasFinal().equals("") && !form.getQuantidadeEconomiasFinal().equals("0")){ Integer economiasInicial = new Integer(form.getQuantidadeEconomiasInicial()); Integer economiasFinal = new Integer(form.getQuantidadeEconomiasFinal()); if(economiasFinal <= economiasInicial){ throw new ActionServletException("atencao.quatidade_economia_final_superior"); }else{ servicoCobrancaValor.setQuantidadeEconomiasInicial(new Integer(form.getQuantidadeEconomiasInicial())); servicoCobrancaValor.setQuantidadeEconomiasFinal(new Integer(form.getQuantidadeEconomiasFinal())); } }else if(form.getQuantidadeEconomiasFinal().equals("0")){ throw new ActionServletException("atencao.quatidade_economia_final_invalida"); } }else if(form.getQuantidadeEconomiasInicial() != null && form.getQuantidadeEconomiasInicial().equals("0")){ throw new ActionServletException("atencao.quatidade_economia_inicial_invalida"); } // Hugo Leonardo - 19/04/2010 // Vig�ncia do Valor do Servi�o // [FS0007] if (form.getDataVigenciaInicial() != null && !form.getDataVigenciaInicial().equals("")){ if (!Util.validarDiaMesAno(form.getDataVigenciaInicial())) { servicoCobrancaValor.setDataVigenciaInicial(Util.converteStringParaDate(form.getDataVigenciaInicial())); //[FS0008] � Validar data da vig�ncia final if (!Util.validarDiaMesAno(form.getDataVigenciaFinal())) { servicoCobrancaValor.setDataVigenciaFinal(Util.converteStringParaDate(form.getDataVigenciaFinal())); if(Util.compararData(servicoCobrancaValor.getDataVigenciaInicial(),servicoCobrancaValor.getDataVigenciaFinal()) == 1){ throw new ActionServletException("atencao.atencao.data_vigencia_final_menor"); } }else{ throw new ActionServletException("atencao.atencao.data_vigencia_final_invalida"); } }else{ throw new ActionServletException("atencao.data_vigencia_inicial_invalida"); } } // Capacidade do Hidr�metro HidrometroCapacidade capacidadeHidrometro = null; if (form.getCapacidadeHidrometro() != null && !form.getCapacidadeHidrometro().equals(ConstantesSistema.NUMERO_NAO_INFORMADO+"")) { capacidadeHidrometro = new HidrometroCapacidade(); capacidadeHidrometro.setId(new Integer(form .getCapacidadeHidrometro())); } // Valor do Servi�o servicoCobrancaValor.setHidrometroCapacidade(capacidadeHidrometro); String valorSemPontos = form.getValorServico().replace(".", ""); if(form.getIndicadorGeracaoDebito()!=null && form.getIndicadorGeracaoDebito().equals(ConstantesSistema.SIM.toString())){ servicoCobrancaValor.setValor(new BigDecimal(valorSemPontos.replace(",", "."))); servicoCobrancaValor.setIndicadorGeracaoDebito(ConstantesSistema.SIM); }else{ servicoCobrancaValor.setValor(BigDecimal.ZERO); servicoCobrancaValor.setIndicadorGeracaoDebito(ConstantesSistema.NAO); } servicoCobrancaValor.setUltimaAlteracao(new Date()); return servicoCobrancaValor; } }