package gcom.gui.faturamento.credito;
import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao;
import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoSituacao;
import gcom.atendimentopublico.ordemservico.FiltroOrdemServico;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.registroatendimento.FiltroRegistroAtendimento;
import gcom.atendimentopublico.registroatendimento.RegistroAtendimento;
import gcom.cadastro.cliente.ClienteImovel;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.FiltroClienteImovel;
import gcom.cadastro.imovel.FiltroImovel;
import gcom.cadastro.imovel.FiltroImovelCobrancaSituacao;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.ImovelCobrancaSituacao;
import gcom.cobranca.CobrancaSituacao;
import gcom.fachada.Fachada;
import gcom.faturamento.credito.CreditoOrigem;
import gcom.faturamento.credito.CreditoTipo;
import gcom.faturamento.credito.FiltroCreditoARealizar;
import gcom.faturamento.credito.FiltroCreditoOrigem;
import gcom.faturamento.credito.FiltroCreditoTipo;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ParametroNulo;
import gcom.util.filtro.ParametroSimples;
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;
public class ExibirInserirCreditoARealizarAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("exibirInserirCreditoARealizar");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
FiltroCreditoTipo filtroCreditoTipo = new FiltroCreditoTipo();
filtroCreditoTipo.adicionarParametro(new ParametroSimples(FiltroCreditoARealizar.INDICADORUSO, ConstantesSistema.SIM.intValue()));
Collection<CreditoTipo> collectionCreditoTipo = fachada.pesquisar(
filtroCreditoTipo, CreditoTipo.class.getName());
httpServletRequest.setAttribute("collectionCreditoTipo",
collectionCreditoTipo);
FiltroCreditoOrigem filtroCreditoOrigem = new FiltroCreditoOrigem();
filtroCreditoOrigem.adicionarParametro(new ParametroSimples(FiltroCreditoARealizar.INDICADORUSO, ConstantesSistema.SIM.intValue()));
Collection<CreditoOrigem> collectionCreditoOrigem = fachada.pesquisar(filtroCreditoOrigem, CreditoOrigem.class.getName());
httpServletRequest.setAttribute("collectionCreditoOrigem",
collectionCreditoOrigem);
InserirCreditoARealizarActionForm inserirCreditoARealizarActionForm = (InserirCreditoARealizarActionForm) actionForm;
String limparForm = (String) httpServletRequest.getParameter("limparForm");
String idRegistroAtendimento = inserirCreditoARealizarActionForm.getRegistroAtendimento();
String idOrdemSerico = inserirCreditoARealizarActionForm.getOrdemServico();
String idImovel = null;
if (httpServletRequest.getParameter("objetoConsulta") != null
&& httpServletRequest.getParameter("objetoConsulta").equalsIgnoreCase("2")) {
//pesquisa o imovel pelo registro de atendimento
if(idRegistroAtendimento != null && !idRegistroAtendimento.trim().equals("")){
FiltroRegistroAtendimento filtroRegistroAtendimento = new FiltroRegistroAtendimento();
filtroRegistroAtendimento.adicionarParametro(new ParametroSimples(FiltroRegistroAtendimento.ID,idRegistroAtendimento));
filtroRegistroAtendimento.adicionarCaminhoParaCarregamentoEntidade(FiltroRegistroAtendimento.IMOVEL);
filtroRegistroAtendimento.adicionarCaminhoParaCarregamentoEntidade(FiltroRegistroAtendimento.ATENDIMENTO_MOTIVO_ENCERRAMENTO);
filtroRegistroAtendimento.adicionarCaminhoParaCarregamentoEntidade(FiltroRegistroAtendimento.SOLICITACAO_TIPO_ESPECIFICACAO);
Collection colecaoRegistroAtendimento = fachada.pesquisar(filtroRegistroAtendimento,RegistroAtendimento.class.getName());
if(colecaoRegistroAtendimento != null && !colecaoRegistroAtendimento.isEmpty()){
RegistroAtendimento registroAtendimento = (RegistroAtendimento) colecaoRegistroAtendimento.iterator().next();
//Registro de Atendimento n�o est� associado a um im�vel
if(registroAtendimento.getImovel() == null){
//FS0005 - Validar Registro de Atendimento
throw new ActionServletException(
"atencao.registro_atendimento.nao.associado.imovel");
}
//Registro de Atendimento est� encerrado
if(registroAtendimento.getAtendimentoMotivoEncerramento() != null){
//FS0005 - Validar Registro de Atendimento
throw new ActionServletException(
"atencao.registro_atendimento.esta.encerrado");
}
//Especifica��o do Tipo de Solicita��o do Registro de Atendimento n�o permite gera��o de credito
if(registroAtendimento.getSolicitacaoTipoEspecificacao().getIndicadorGeracaoCredito() == 2){
//FS0005 - Validar Registro de Atendimento
throw new ActionServletException(
"atencao.registro_atendimento.nao.permite.geracao.credito");
}
idImovel = registroAtendimento.getImovel().getId().toString();
inserirCreditoARealizarActionForm.setRegistroAtendimento(registroAtendimento.getId().toString());
inserirCreditoARealizarActionForm.setNomeRegistroAtendimento(registroAtendimento.getSolicitacaoTipoEspecificacao().getDescricao());
inserirCreditoARealizarActionForm.setMatriculaImovel(idImovel);
httpServletRequest.setAttribute("corRegistroAtendimento",
"valor");
httpServletRequest.setAttribute("nomeCampo",
"ordemServico");
sessao.setAttribute("travarRegistroAtendimento",
"nao");
sessao.setAttribute("travarOrdemServico",
null);
inserirCreditoARealizarActionForm.setOrdemServico("");
inserirCreditoARealizarActionForm.setNomeOrdemServico("");
sessao.setAttribute("travarTipoCredito",
"nao");
}else{
//FS0004-Validar Registro de Atendimento
inserirCreditoARealizarActionForm.setMatriculaImovel("");
inserirCreditoARealizarActionForm.setInscricaoImovel("");
inserirCreditoARealizarActionForm.setNomeCliente("");
inserirCreditoARealizarActionForm.setSituacaoAgua("");
inserirCreditoARealizarActionForm.setSituacaoEsgoto("");
inserirCreditoARealizarActionForm.setNomeRegistroAtendimento("RA inexistente");
httpServletRequest.setAttribute("corRegistroAtendimento",
"exception");
httpServletRequest.setAttribute("nomeCampo",
"registroAtendimento");
sessao.setAttribute("travarRegistroAtendimento",
"nao");
}
}
}else if (httpServletRequest.getParameter("objetoConsulta") != null
&& httpServletRequest.getParameter("objetoConsulta").equalsIgnoreCase("3")) {
//pesquisa o imovel pela ordem de servi�o
if(idOrdemSerico != null && !idOrdemSerico.trim().equals("")){
FiltroOrdemServico filtroOrdemServico = new FiltroOrdemServico();
filtroOrdemServico.adicionarParametro(new ParametroSimples(FiltroOrdemServico.ID,idOrdemSerico));
filtroOrdemServico.adicionarCaminhoParaCarregamentoEntidade(FiltroOrdemServico.IMOVEL);
filtroOrdemServico.adicionarCaminhoParaCarregamentoEntidade(FiltroOrdemServico.ATENDIMENTO_MOTIVO_ENCERRAMENTO);
filtroOrdemServico.adicionarCaminhoParaCarregamentoEntidade(FiltroOrdemServico.REGISTRO_ATENDIMENTO);
filtroOrdemServico.adicionarCaminhoParaCarregamentoEntidade(FiltroOrdemServico.CREDITO_TIPO);
filtroOrdemServico.adicionarCaminhoParaCarregamentoEntidade(FiltroOrdemServico.SOLICITACAO_TIPO_ESPECIFICACAO);
Collection colecaoOrdemServico = fachada.pesquisar(filtroOrdemServico,OrdemServico.class.getName());
if(colecaoOrdemServico != null && !colecaoOrdemServico.isEmpty()){
OrdemServico ordemServico = (OrdemServico) colecaoOrdemServico.iterator().next();
//Ordem de Servi�o n�o est� associada a um Registro de Atendimento
if(ordemServico.getRegistroAtendimento() == null){
//FS0005 - Validar Registro de Atendimento
throw new ActionServletException(
"atencao.ordem_servico.nao.esta.associado.registro_atendimento");
}
//Registro de Atendimento da Ordem de Servi�o n�o est� associado a um im�vel
if(ordemServico.getRegistroAtendimento().getImovel() == null){
//FS0007 - Validar Ordem de Servi�o
throw new ActionServletException(
"atencao.ordem_servico.imovel.registro_atendimento.nao.associado");
}
if(ordemServico.getImovel() != null){
idImovel = ordemServico.getImovel().getId().toString();
}
inserirCreditoARealizarActionForm.setOrdemServico(ordemServico.getId().toString());
inserirCreditoARealizarActionForm.setNomeOrdemServico(ordemServico.getServicoTipo().getDescricao());
inserirCreditoARealizarActionForm.setRegistroAtendimento(ordemServico.getRegistroAtendimento().getId().toString());
inserirCreditoARealizarActionForm.setNomeRegistroAtendimento(ordemServico.getRegistroAtendimento().getSolicitacaoTipoEspecificacao().getDescricao());
inserirCreditoARealizarActionForm.setMatriculaImovel(idImovel);
httpServletRequest.setAttribute("corRegistroAtendimento", "valor");
sessao.setAttribute("travarRegistroAtendimento", null);
httpServletRequest.setAttribute("corNomeOrdemServico", "valor");
sessao.setAttribute("nomeCampo", "tipoCredito");
sessao.setAttribute("travarOrdemServico", "nao");
//validar credito tipo
if(ordemServico.getServicoTipo().getCreditoTipo() != null){
inserirCreditoARealizarActionForm.setTipoCredito(ordemServico.getServicoTipo().getCreditoTipo().getId().toString());
sessao.setAttribute("travarTipoCredito", null);
}else{
sessao.setAttribute("travarTipoCredito", "valor");
}
//n�o encontrou a RA
}else{
//FS0004-Validar Registro de Atendimento
inserirCreditoARealizarActionForm.setMatriculaImovel("");
inserirCreditoARealizarActionForm.setInscricaoImovel("");
inserirCreditoARealizarActionForm.setNomeCliente("");
inserirCreditoARealizarActionForm.setSituacaoAgua("");
inserirCreditoARealizarActionForm.setSituacaoEsgoto("");
inserirCreditoARealizarActionForm.setNomeOrdemServico("OS inexistente");
httpServletRequest.setAttribute("corNomeOrdemServico",
"exception");
httpServletRequest.setAttribute("nomeCampo",
"ordemServico");
sessao.setAttribute("travarOrdemServico",
"nao");
sessao.setAttribute("travarTipoCredito",
"nao");
}
}
}else{
sessao.setAttribute("travarRegistroAtendimento",
"valor");
sessao.setAttribute("travarOrdemServico",
"valor");
sessao.setAttribute("travarTipoCredito",
"valor");
}
if (idImovel != null && !idImovel.trim().equals("")) {
// Pesquisa o imovel na base
FiltroImovel filtroImovel = new FiltroImovel();
filtroImovel.adicionarParametro(new ParametroSimples(
FiltroImovel.ID, idImovel));
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio.unidadeFederacao");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("localidade");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("setorComercial");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("quadra");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.cep");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTipo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTitulo");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoAguaSituacao");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoEsgotoSituacao");
Collection<Imovel> imovelPesquisado = fachada.pesquisar(
filtroImovel, Imovel.class.getName());
if (imovelPesquisado != null && imovelPesquisado.isEmpty()) {
sessao.setAttribute("corImovel","exception");
inserirCreditoARealizarActionForm
.setInscricaoImovel(ConstantesSistema.CODIGO_IMOVEL_INEXISTENTE);
inserirCreditoARealizarActionForm.setNomeCliente("");
inserirCreditoARealizarActionForm.setSituacaoAgua("");
inserirCreditoARealizarActionForm.setSituacaoEsgoto("");
}
if (imovelPesquisado != null && !imovelPesquisado.isEmpty()) {
Imovel imovel = imovelPesquisado.iterator().next();
if (imovel.getIndicadorExclusao() == Imovel.IMOVEL_EXCLUIDO) {
throw new ActionServletException(
"atencao.pesquisa.imovel.excluido");
}
}
// [FS0002 - Verificar usu�rio com d�bito em cobran�a administrativa
if (imovelPesquisado != null && !imovelPesquisado.isEmpty()) {
Imovel imovel = imovelPesquisado.iterator().next();
FiltroImovelCobrancaSituacao filtroImovelCobrancaSituacao = new FiltroImovelCobrancaSituacao();
filtroImovelCobrancaSituacao
.adicionarCaminhoParaCarregamentoEntidade("cobrancaSituacao");
filtroImovelCobrancaSituacao
.adicionarParametro(new ParametroSimples(FiltroImovelCobrancaSituacao.ID_COBRANCA_SITUACAO,CobrancaSituacao.COBRANCA_ADMINISTRATIVA));
filtroImovelCobrancaSituacao
.adicionarParametro(new ParametroNulo(FiltroImovelCobrancaSituacao.DATA_RETIRADA_COBRANCA));
filtroImovelCobrancaSituacao
.adicionarParametro(new ParametroSimples(
FiltroImovelCobrancaSituacao.IMOVEL_ID, imovel
.getId()));
Collection imovelCobrancaSituacaoEncontrada = fachada
.pesquisar(filtroImovelCobrancaSituacao,
ImovelCobrancaSituacao.class.getName());
// Verifica se o im�vel tem d�bito em cobran�a administrativa
if (imovelCobrancaSituacaoEncontrada != null
&& !imovelCobrancaSituacaoEncontrada.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.imovel.cobranca_administrativa");
}
}
// [FS0003 - Verificar situa��o liga��o de �giua e esgoto]
if (imovelPesquisado != null && !imovelPesquisado.isEmpty()) {
Imovel imovel = imovelPesquisado.iterator().next();
if ((imovel.getLigacaoAguaSituacao() != null)
&& ((imovel.getLigacaoAguaSituacao().getId() == LigacaoAguaSituacao.POTENCIAL) || (imovel
.getLigacaoEsgotoSituacao().getId() == LigacaoAguaSituacao.FACTIVEL))
&& (imovel.getLigacaoEsgotoSituacao().getId() != LigacaoEsgotoSituacao.LIGADO)) {
throw new ActionServletException(
"atencao.pesquisa.imovel.inativo");
}
}
// Obtem o cliente imovel do imovel pesquisado
if (imovelPesquisado != null && !imovelPesquisado.isEmpty()) {
Imovel imovel = imovelPesquisado.iterator().next();
sessao.setAttribute("imovelPesquisado", imovel);
FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();
filtroClienteImovel
.adicionarCaminhoParaCarregamentoEntidade("cliente");
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.IMOVEL_ID, idImovel));
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.CLIENTE_RELACAO_TIPO,
ClienteRelacaoTipo.USUARIO));
Collection<ClienteImovel> clienteImovelPesquisado = fachada
.pesquisar(filtroClienteImovel, ClienteImovel.class
.getName());
if (clienteImovelPesquisado != null
&& !clienteImovelPesquisado.isEmpty()) {
ClienteImovel clienteImovel = clienteImovelPesquisado
.iterator().next();
if (clienteImovel.getCliente() != null) {
inserirCreditoARealizarActionForm
.setNomeCliente(clienteImovel.getCliente()
.getNome());
}
}
if (imovel.getLigacaoAguaSituacao() != null) {
inserirCreditoARealizarActionForm.setSituacaoAgua(imovel
.getLigacaoAguaSituacao().getDescricao());
}
if (imovel.getLigacaoEsgotoSituacao() != null) {
inserirCreditoARealizarActionForm.setSituacaoEsgoto(imovel
.getLigacaoEsgotoSituacao().getDescricao());
}
inserirCreditoARealizarActionForm
.setMatriculaImovel(idImovel);
inserirCreditoARealizarActionForm.setInscricaoImovel(imovel
.getInscricaoFormatada());
}
}
if (limparForm != null && !limparForm.trim().equalsIgnoreCase("")) {
inserirCreditoARealizarActionForm.reset(actionMapping,
httpServletRequest);
if (sessao.getAttribute("imovelPesquisado") != null) {
sessao.removeAttribute("imovelPesquisado");
}
}
return retorno;
}
}