package gcom.gui.atendimentopublico.registroatendimento;
import gcom.atendimentopublico.ordemservico.FiltroServicoNaoCobrancaMotivo;
import gcom.atendimentopublico.ordemservico.ServicoNaoCobrancaMotivo;
import gcom.atendimentopublico.registroatendimento.AtendimentoMotivoEncerramento;
import gcom.atendimentopublico.registroatendimento.FiltroAtendimentoMotivoEncerramento;
import gcom.atendimentopublico.registroatendimento.RegistroAtendimento;
import gcom.atendimentopublico.registroatendimento.RegistroAtendimentoSolicitante;
import gcom.atendimentopublico.registroatendimento.SolicitacaoTipoEspecificacao;
import gcom.atendimentopublico.registroatendimento.bean.ObterDadosRegistroAtendimentoHelper;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.geografico.BairroArea;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.Quadra;
import gcom.cadastro.localidade.SetorComercial;
import gcom.cadastro.unidade.UnidadeOrganizacional;
import gcom.fachada.Fachada;
import gcom.faturamento.debito.FiltroDebitoTipo;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.operacional.DivisaoEsgoto;
import gcom.seguranca.acesso.usuario.Usuario;
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;
/**
* ExibirTramitarRegistroAtendimentoAction
*
* @author Leonardo Regis
* @date 16/08/2006
*
*/
public class ExibirEncerrarRegistroAtendimentoAction extends GcomAction {
/**
* Exibe a Tela para Encerrar o RA
*
* @author Leonardo Regis
* @date 25/08/2006
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("encerrarRegistroAtendimento");
HttpSession sessao = httpServletRequest.getSession(false);
// Usuario logado no sistema
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
// pega o parametro "confirmado" passado na tela de confirmacao de encerrar RA para o Imovel.
String confirmarEncerramento = (String) httpServletRequest.getParameter("confirmado");
// Caso o usuario na tela de confirmacao(mostrada depois da tela de atualizar imovel),
// escolha a opcao NAO, ou seja, nao ecerra o RA, mostra a tela de sucesso da atualizacao
// do Imovel(fluxo normal).
if(confirmarEncerramento != null && confirmarEncerramento.equalsIgnoreCase("cancelar")){
retorno = actionMapping.findForward("telaSucesso");
String idImove = (String) sessao.getAttribute("idImovel");
sessao.removeAttribute("idImovel");
String linkSucesso = (String)sessao.getAttribute("linkSucesso");
if(linkSucesso != null && !linkSucesso.equals("")){
montarPaginaSucesso(httpServletRequest, "Im�vel de matr�cula "
+ idImove
+ " atualizado com sucesso.",
"Realizar outra Manuten��o de Im�vel",
"exibirFiltrarImovelAction.do?menu=sim",
"exibirInformarOcorrenciaCadastroAnormalidadeEloAction.do?idImovel="
+ idImove,
"Informar Ocorr�ncias / Anormalidades",
"Retornar ao Consultar Im�vel.",
linkSucesso);
sessao.removeAttribute("linkSucesso");
}else if(sessao.getAttribute("caminhoVoltarPromais")!=null){
montarPaginaSucesso(httpServletRequest, "Im�vel de matr�cula "
+ idImove
+ " atualizado com sucesso.",
"Realizar outra Manuten��o de Im�vel",
"exibirFiltrarImovelAction.do?menu=sim",
"exibirInformarOcorrenciaCadastroAnormalidadeEloAction.do?idImovel="
+ idImove,
"Informar Ocorr�ncias / Anormalidades",
"Retornar ao Consultar Im�vel.",
(String)sessao.getAttribute("caminhoVoltarPromais")+".do?promais=nao");
sessao.setAttribute("promaisExecutado", "sim");
sessao.setAttribute("idImovelPromaisExecutado", idImove);
}else{
montarPaginaSucesso(httpServletRequest, "Im�vel de matr�cula "
+ idImove
+ " atualizado com sucesso.",
"Realizar outra Manuten��o de Im�vel",
"exibirFiltrarImovelAction.do?menu=sim",
"exibirInformarOcorrenciaCadastroAnormalidadeEloAction.do?idImovel="
+ idImove,
"Informar Ocorr�ncias / Anormalidades");
}
return retorno;
}
EncerrarRegistroAtendimentoActionForm encerrarRegistroAtendimentoActionForm = (EncerrarRegistroAtendimentoActionForm) actionForm;
// Reseta Tramita��o
if (encerrarRegistroAtendimentoActionForm.getResetarEncerramento().equalsIgnoreCase("true")) {
encerrarRegistroAtendimentoActionForm.resetarEncerramento();
}
Fachada fachada = Fachada.getInstancia();
ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper = null;
if (encerrarRegistroAtendimentoActionForm.getNumeroRA() != null) {
registroAtendimentoHelper = fachada.obterDadosRegistroAtendimento(new Integer(encerrarRegistroAtendimentoActionForm.getNumeroRA()));
} else if(httpServletRequest.getAttribute("numeroRA") != null){
registroAtendimentoHelper = fachada.obterDadosRegistroAtendimento(new Integer(httpServletRequest.getAttribute("numeroRA").toString()));
} else if(sessao.getAttribute("numeroRA") != null){
registroAtendimentoHelper = fachada.obterDadosRegistroAtendimento(new Integer(sessao.getAttribute("numeroRA").toString()));
}
setUsuarioRegistro(encerrarRegistroAtendimentoActionForm, usuario);
setDadosRA(encerrarRegistroAtendimentoActionForm, registroAtendimentoHelper);
setDadosSolicitante(encerrarRegistroAtendimentoActionForm, registroAtendimentoHelper);
setDadosEnderecoOcorrencia(encerrarRegistroAtendimentoActionForm, registroAtendimentoHelper);
setUnidades(encerrarRegistroAtendimentoActionForm, registroAtendimentoHelper);
encerrarRegistroAtendimentoActionForm.setDataEncerramento(Util.formatarData(new Date()));
encerrarRegistroAtendimentoActionForm.setHoraEncerramento(Util.formatarHoraSemSegundos(new Date()));
//Colocado por Raphael Rossiter em 05/02/2008
this.setDadosDebito(encerrarRegistroAtendimentoActionForm, registroAtendimentoHelper,
fachada, sessao, usuario, httpServletRequest);
this.calcularValores(httpServletRequest, registroAtendimentoHelper.getRegistroAtendimento()
.getSolicitacaoTipoEspecificacao(), encerrarRegistroAtendimentoActionForm);
// Valida Pr�-Encerramento
fachada.validarPreEncerramentoRASemTarifaSocial(registroAtendimentoHelper.getRegistroAtendimento(), usuario, new Short(encerrarRegistroAtendimentoActionForm.getIndicadorAutorizacaoManutencaoRA()));
getMotivoEncerramentoCollection(encerrarRegistroAtendimentoActionForm, sessao);
// N�mero do RA de Refer�ncia
if (encerrarRegistroAtendimentoActionForm.getNumeroRAReferencia() != null &&
!encerrarRegistroAtendimentoActionForm.getNumeroRAReferencia().equals("")) {
getNumeroRAReferencia(encerrarRegistroAtendimentoActionForm, sessao);
}
// Valida Indicador Duplicidade
if (encerrarRegistroAtendimentoActionForm.getMotivoEncerramentoId() != null &&
!encerrarRegistroAtendimentoActionForm.getMotivoEncerramentoId().equals("")) {
if (!encerrarRegistroAtendimentoActionForm.getMotivoEncerramentoId().equals("-1")) {
getIndicadorDuplicidade(encerrarRegistroAtendimentoActionForm, sessao);
} else {
encerrarRegistroAtendimentoActionForm.setIndicadorDuplicidade("2");
}
} else {
encerrarRegistroAtendimentoActionForm.setIndicadorDuplicidade("2");
}
return retorno;
}
/**
* Carrega Usu�rio de Registro
*
* @author Leonardo Regis
* @date 18/08/2006
*
* @param form
*/
private void setUsuarioRegistro(EncerrarRegistroAtendimentoActionForm form, Usuario usuario) {
form.setUsuarioRegistroId(usuario.getId()+"");
form.setUsuarioRegistroNome(usuario.getNomeUsuario());
form.setUsuarioRegistroUnidade(usuario.getUnidadeOrganizacional().getId()+"");
form.setUsuarioRegistroUnidadeIndicadorTarifaSocial(usuario.getUnidadeOrganizacional().getIndicadorTarifaSocial()+"");
form.setUsuarioRegistroUnidadeIndicadorCentralAtendimento(usuario.getUnidadeOrganizacional().getIndicadorCentralAtendimento()+"");
}
/**
* Carrega Unidades (Atendimento e Atual)
*
* @author Leonardo Regis
* @date 18/08/2006
*
* @param form
* @param registroAtendimentoHelper
*/
private void setUnidades(EncerrarRegistroAtendimentoActionForm form, ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper) {
UnidadeOrganizacional unidadeAtendimento = registroAtendimentoHelper.getUnidadeAtendimento();
if(unidadeAtendimento != null){
form.setUnidadeAtendimentoId(""+unidadeAtendimento.getId());
form.setUnidadeAtendimentoDescricao(unidadeAtendimento.getDescricao());
}
UnidadeOrganizacional unidadeAtual = registroAtendimentoHelper.getUnidadeAtual();
Fachada fachada = Fachada.getInstancia();
if(unidadeAtual != null){
form.setUnidadeAtualId(""+unidadeAtual.getId());
form.setIndicadorAutorizacaoManutencaoRA(fachada.obterIndicadorAutorizacaoManutencaoRA(unidadeAtual.getId(), new Integer(form.getUsuarioRegistroId()))+"");
form.setUnidadeAtualDescricao(unidadeAtual.getDescricao());
if (unidadeAtual.getUnidadeTipo() != null) {
form.setUnidadeAtualCodigoTipo(unidadeAtual.getUnidadeTipo().getCodigoTipo());
}
if (unidadeAtual.getUnidadeCentralizadora() != null) {
form.setUnidadeAtualIdCentralizadora(unidadeAtual.getUnidadeCentralizadora().getId()+"");
}
}
}
/**
* Carrega Dados do RA
*
* @author Leonardo Regis
* @date 18/08/2006
*
* @param form
* @param registroAtendimentoHelper
*/
private void setDadosRA(EncerrarRegistroAtendimentoActionForm form, ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper) {
RegistroAtendimento registroAtendimento = registroAtendimentoHelper.getRegistroAtendimento();
//Dados Gerais do Registro de Atendimento
form.setDataConcorrenciaRA(registroAtendimento.getUltimaAlteracao());
form.setNumeroRA(""+registroAtendimento.getId());
form.setSituacaoRA(registroAtendimentoHelper.getDescricaoSituacaoRA());
form.setCodigoSituacaoRA(registroAtendimento.getCodigoSituacao()+"");
if(registroAtendimentoHelper.getRAAssociado() != null) {
form.setNumeroRaAssociado(""+registroAtendimentoHelper.getRAAssociado().getId());
form.setSituacaoRaAssociado(registroAtendimentoHelper.getDescricaoSituacaoRAAssociado());
}
SolicitacaoTipoEspecificacao solicitacaoTipoEspecificacao = registroAtendimento.getSolicitacaoTipoEspecificacao();
if(solicitacaoTipoEspecificacao != null){
if(solicitacaoTipoEspecificacao.getSolicitacaoTipo() != null){
form.setTipoSolicitacaoId(solicitacaoTipoEspecificacao.getSolicitacaoTipo().getId()+"");
form.setTipoSolicitacaoDescricao(solicitacaoTipoEspecificacao.getSolicitacaoTipo().getDescricao());
form.setTipoSolicitacaoIndicadorTarifaSocial(solicitacaoTipoEspecificacao.getSolicitacaoTipo().getIndicadorTarifaSocial()+"");
}
form.setEspecificacaoId(solicitacaoTipoEspecificacao.getId()+"");
form.setEspecificacaoDescricao(solicitacaoTipoEspecificacao.getDescricao());
form.setEspecificacaoIndicadorParecer(solicitacaoTipoEspecificacao.getIndicadorParecerEncerramento()+"");
}
if(registroAtendimento.getMeioSolicitacao() != null){
form.setMeioSolicitacaoId(registroAtendimento.getMeioSolicitacao().getId()+"");
form.setMeioSolicitacaoDescricao(registroAtendimento.getMeioSolicitacao().getDescricao());
}
//Imovel
Imovel imovel = registroAtendimento.getImovel();
if(imovel != null){
form.setMatriculaImovel(""+imovel.getId());
form.setInscricaoImovel(imovel.getInscricaoFormatada());
}
Date dataAtendimento = registroAtendimento.getRegistroAtendimento();
form.setDataAtendimento(Util.formatarData(dataAtendimento));
form.setHoraAtendimento(Util.formatarHoraSemData(dataAtendimento));
form.setDataPrevista(Util.formatarData(registroAtendimento.getDataPrevistaAtual()));
// Encerramento
setDadosEncerramento(form, registroAtendimento);
}
/**
* Carrega Dados do RA
*
* @author Leonardo Regis
* @date 18/08/2006
*
* @param form
* @param registroAtendimento
*/
private void setDadosEncerramento(EncerrarRegistroAtendimentoActionForm form, RegistroAtendimento registroAtendimento) {
AtendimentoMotivoEncerramento atendimentoMotivoEncerramento = registroAtendimento.getAtendimentoMotivoEncerramento();
if(atendimentoMotivoEncerramento != null){
form.setIdMotivoEncerramento(""+atendimentoMotivoEncerramento.getId());
form.setMotivoEncerramento(atendimentoMotivoEncerramento.getDescricao());
Date dataEncerramento = registroAtendimento.getDataEncerramento();
form.setDataEncerramentoRA(Util.formatarData(dataEncerramento));
form.setDataEncerramento(Util.formatarData(new Date()));
form.setHoraEncerramento(Util.formatarHoraSemSegundos(new Date()));
}
}
/**
* Carrega Dados do Solicitante
*
* @author Leonardo Regis
* @date 18/08/2006
*
* @param form
* @param registroAtendimentoHelper
*/
private void setDadosSolicitante(EncerrarRegistroAtendimentoActionForm form, ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper) {
//Dados do Solicitante
RegistroAtendimentoSolicitante registroAtendimentoSolicitante = registroAtendimentoHelper.getSolicitante();
if(registroAtendimentoSolicitante != null){
Cliente cliente = registroAtendimentoSolicitante.getCliente();
UnidadeOrganizacional unidadeSolicitante = registroAtendimentoSolicitante.getUnidadeOrganizacional();
//Caso o principal solicitante do registro de atendimento seja um cliente
//obter os dados do cliente
if(cliente != null){
form.setIdClienteSolicitante(""+cliente.getId());
form.setClienteSolicitante(cliente.getNome());
//Caso o principal solicitante do registro de atendimento seja uma unidade
//obter os dados da unidade
}else if(unidadeSolicitante != null){
form.setIdUnidadeSolicitante(""+unidadeSolicitante.getId());
form.setUnidadeSolicitante(unidadeSolicitante.getDescricao());
//Caso o principal solicitante do registro de atendimento n�o seja um cliente, nem uma unidade
//obter os dados do solicitante
}else{
form.setNomeSolicitante(registroAtendimentoSolicitante.getSolicitante());
}
}
}
/**
* Carrega Dados do Endere�o de Ocorr�ncia
*
* @author Leonardo Regis
* @date 18/08/2006
*
* @param form
* @param registroAtendimentoHelper
*/
private void setDadosEnderecoOcorrencia(EncerrarRegistroAtendimentoActionForm form, ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper) {
String enderecoOcorrencia = registroAtendimentoHelper.getEnderecoOcorrencia();
form.setEnderecoOcorrencia(enderecoOcorrencia);
form.setPontoReferencia(registroAtendimentoHelper.getRegistroAtendimento().getPontoReferencia());
//Caso o registro atendimento esteja associado a uma �rea de bairro,
//obter os dados da �rea do bairro
BairroArea bairroArea = registroAtendimentoHelper.getRegistroAtendimento().getBairroArea();
if(bairroArea != null){
form.setBairroId(""+bairroArea.getBairro().getId());
form.setBairroDescricao(bairroArea.getBairro().getNome());
form.setAreaBairroId(""+bairroArea.getId());
form.setAreaBairroDescricao(bairroArea.getNome());
}
Localidade localidade = registroAtendimentoHelper.getRegistroAtendimento().getLocalidade();
if(localidade != null){
form.setLocalidadeId(""+localidade.getId());
form.setLocalidadeDescricao(localidade.getDescricao());
}
SetorComercial setorComercial = registroAtendimentoHelper.getRegistroAtendimento().getSetorComercial();
if(setorComercial != null){
form.setSetorComercialId(""+setorComercial.getId());
form.setSetorComercialDescricao(setorComercial.getDescricao());
}
Quadra quadra = registroAtendimentoHelper.getRegistroAtendimento().getQuadra();
if(quadra != null){
form.setQuadraId(""+quadra.getId());
form.setQuadraDescricao(""+quadra.getNumeroQuadra());
}
DivisaoEsgoto divisaoEsgoto = registroAtendimentoHelper.getRegistroAtendimento().getDivisaoEsgoto();
if(divisaoEsgoto != null){
form.setDivisaoEsgotoId(""+divisaoEsgoto.getId());
form.setDivisaoEsgotoDescricao(divisaoEsgoto.getDescricao());
}
}
/**
* Carrega cole��o de motivo de encerramento.
*
* @author Leonardo Regis
* @date 25/08/2006
* @param sessao
*/
private void getMotivoEncerramentoCollection(EncerrarRegistroAtendimentoActionForm form, HttpSession sessao) {
Fachada fachada = Fachada.getInstancia();
// Filtra Motivo de Encerramento
FiltroAtendimentoMotivoEncerramento filtroAtendimentoMotivoEncerramento = new FiltroAtendimentoMotivoEncerramento();
filtroAtendimentoMotivoEncerramento.adicionarParametro(new ParametroSimples(FiltroAtendimentoMotivoEncerramento.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroAtendimentoMotivoEncerramento.setCampoOrderBy(FiltroAtendimentoMotivoEncerramento.DESCRICAO);
Collection colecaoAtendimentoMotivoEncerramento = fachada.pesquisar(filtroAtendimentoMotivoEncerramento, AtendimentoMotivoEncerramento.class.getName());
if (colecaoAtendimentoMotivoEncerramento != null && !colecaoAtendimentoMotivoEncerramento.isEmpty()) {
sessao.setAttribute("colecaoMotivoEncerramento", colecaoAtendimentoMotivoEncerramento);
} else {
throw new ActionServletException("atencao.naocadastrado", null, "Motivo do Encerramento");
}
}
/**
* Recupera RA de Refer�ncia
*
* @author Leonardo Regis
* @date 25/08/2006
*
* @param form
* @param sessao
*/
private void getNumeroRAReferencia(EncerrarRegistroAtendimentoActionForm form, HttpSession sessao) {
// [F0003] Valida RA de Refer�ncia
//if (isValidateObject(form)) {
Fachada fachada = Fachada.getInstancia();
RegistroAtendimento registroAtendimento = fachada.validarRAReferencia(new Integer(form.getNumeroRA()), new Integer(form.getNumeroRAReferencia()));
if (registroAtendimento != null) {
form.setNumeroRAReferenciaRetorno(registroAtendimento.getSolicitacaoTipoEspecificacao().getDescricao());
form.setValidaNumeroRAReferencia("false");
sessao.setAttribute("raEncontrada","true");
} else {
sessao.removeAttribute("raEncontrada");
form.setNumeroRAReferencia("");
form.setNumeroRAReferenciaRetorno("Registro de Atendimento Inexistente");
}
//}
}
/**
* Valida Objeto com <Enter> da tela
*
* @author Leonardo Regis
* @date 24/08/2006
*
* @return est� validando algum objeto atrav�s do enter?
*/
/*private boolean isValidateObject(EncerrarRegistroAtendimentoActionForm form) {
boolean toReturn = false;
if (form.getValidaNumeroRAReferencia().equalsIgnoreCase("true")) {
toReturn = true;
}
return toReturn;
}*/
/**
* Seta indicador de duplicidade.
*
* @author Leonardo Regis
* @date 28/09/2006
*
* @param form
* @param sessao
*/
private void getIndicadorDuplicidade(EncerrarRegistroAtendimentoActionForm form, HttpSession sessao) {
Fachada fachada = Fachada.getInstancia();
// Filtra Motivo de Encerramento
FiltroAtendimentoMotivoEncerramento filtroAtendimentoMotivoEncerramento = new FiltroAtendimentoMotivoEncerramento();
filtroAtendimentoMotivoEncerramento.adicionarParametro(new ParametroSimples(FiltroAtendimentoMotivoEncerramento.ID, form.getMotivoEncerramentoId()));
filtroAtendimentoMotivoEncerramento.adicionarParametro(new ParametroSimples(FiltroAtendimentoMotivoEncerramento.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroAtendimentoMotivoEncerramento.setCampoOrderBy(FiltroAtendimentoMotivoEncerramento.DESCRICAO);
AtendimentoMotivoEncerramento atendimentoMotivoEncerramento = null;
Collection colecaoAtendimentoMotivoEncerramento = fachada.pesquisar(filtroAtendimentoMotivoEncerramento, AtendimentoMotivoEncerramento.class.getName());
if (colecaoAtendimentoMotivoEncerramento != null && !colecaoAtendimentoMotivoEncerramento.isEmpty()) {
atendimentoMotivoEncerramento = (AtendimentoMotivoEncerramento)Util.retonarObjetoDeColecao(colecaoAtendimentoMotivoEncerramento);
form.setIndicadorDuplicidade(atendimentoMotivoEncerramento.getIndicadorDuplicidade()+"");
}
}
/**
* Carrega Dados do Solicitante
*
* @author Leonardo Regis
* @date 18/08/2006
*
* @param form
* @param registroAtendimentoHelper
*/
private void setDadosDebito(EncerrarRegistroAtendimentoActionForm form,
ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper, Fachada fachada, HttpSession sessao,
Usuario usuarioLogado, HttpServletRequest httpServletRequest) {
String calculaValores = httpServletRequest.getParameter("calculaValores");
/*
* S� permitir informar o d�bito, se for CONCLUS�O DO SERVI�O
*/
if (form.getMotivoEncerramentoId() != null &&
!form.getMotivoEncerramentoId().equals(String.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO)) &&
form.getMotivoEncerramentoId().equals(String.valueOf(
AtendimentoMotivoEncerramento.CONCLUSAO_SERVICO.toString()))){
SolicitacaoTipoEspecificacao solicitacaoTipoEspecificacao =
registroAtendimentoHelper.getRegistroAtendimento().getSolicitacaoTipoEspecificacao();
//Tipo do d�bito
if (solicitacaoTipoEspecificacao.getDebitoTipo() != null){
form.setIdTipoDebito(solicitacaoTipoEspecificacao.getDebitoTipo().getId().toString());
form.setDescricaoTipoDebito(solicitacaoTipoEspecificacao.getDebitoTipo().getDescricao());
//Valor do d�bito
BigDecimal valorDebito = null;
if (solicitacaoTipoEspecificacao.getValorDebito() != null){
valorDebito = solicitacaoTipoEspecificacao.getValorDebito();
form.setValorDebito(Util.formataBigDecimal(valorDebito,2,true));
}
//Motivo da n�o cobran�a
Collection colecaoServicoNaoCobrancaMotivo = (Collection)
sessao.getAttribute("colecaoServicoNaoCobrancaMotivo");
if (colecaoServicoNaoCobrancaMotivo == null) {
FiltroServicoNaoCobrancaMotivo filtroServicoNaoCobrancaMotivo = new FiltroServicoNaoCobrancaMotivo();
filtroServicoNaoCobrancaMotivo.setCampoOrderBy(FiltroDebitoTipo.DESCRICAO);
colecaoServicoNaoCobrancaMotivo = fachada.pesquisar(filtroServicoNaoCobrancaMotivo,ServicoNaoCobrancaMotivo.class.getName());
if (colecaoServicoNaoCobrancaMotivo != null && !colecaoServicoNaoCobrancaMotivo.isEmpty()) {
sessao.setAttribute("colecaoServicoNaoCobrancaMotivo", colecaoServicoNaoCobrancaMotivo);
} else {
throw new ActionServletException("atencao.naocadastrado", null,
"Motivo da N�o Cobran�a");
}
}
//-----------------------------------------------------------
// Verificar permiss�o especial
boolean temPermissaoMotivoNaoCobranca = fachada.verificarPermissaoInformarMotivoNaoCobranca(usuarioLogado);
if (temPermissaoMotivoNaoCobranca) {
httpServletRequest.setAttribute("permissaoMotivoNaoCobranca", temPermissaoMotivoNaoCobranca);
}else{
form.setPercentualCobranca("100");
form.setQuantidadeParcelas("1");
if (valorDebito != null){
form.setValorParcelas(Util.formataBigDecimal(valorDebito,2,true));
}
}
// -----------------------------------------------------------
//------------------------------------------------------------
//[Altera��o de Valor]
this.permitirAlteracaoValor(solicitacaoTipoEspecificacao, form);
//------------------------------------------------------------
}
}
else if (calculaValores == null || calculaValores.equals("")){
this.limparDadosDebito(form, sessao);
}
}
/*
* [Altera��o de Valor]
* autor: Raphael Rossiter
*/
private void permitirAlteracaoValor(SolicitacaoTipoEspecificacao solicitacaoTipoEspecificacao,
EncerrarRegistroAtendimentoActionForm form){
if (solicitacaoTipoEspecificacao.getValorDebito() == null ||
solicitacaoTipoEspecificacao.getIndicadorPermiteAlterarValor() ==
ConstantesSistema.INDICADOR_USO_ATIVO.shortValue()){
form.setAlteracaoValor("OK");
}
else{
form.setAlteracaoValor("");
}
}
/*
* [UC0435] Encerrar Registro de Atendimento
*
* Calcular valor da presta��o com juros para encerramento de RA
*
* autor: Raphael Rossiter
* data: 07/03/2008
*/
private BigDecimal calcularValores(HttpServletRequest httpServletRequest,
SolicitacaoTipoEspecificacao solicitacaoTipoEspecificacao, EncerrarRegistroAtendimentoActionForm form){
BigDecimal valorDebito = new BigDecimal(0);
if (form.getValorDebito() != null && !form.getValorDebito().equals("")){
valorDebito = new BigDecimal(form.getValorDebito().replace(",","."));
}
String calculaValores = httpServletRequest.getParameter("calculaValores");
if(calculaValores != null && calculaValores.equals("S")){
BigDecimal[] valorCalculo = this.getFachada().calcularValorPrestacaoAtendimentoPublico(
solicitacaoTipoEspecificacao.getIndicadorCobrarJuros(), valorDebito,
new Integer(form.getQuantidadeParcelas()), form.getPercentualCobranca());
BigDecimal valorPrestacao = valorCalculo[0];
if (valorPrestacao != null) {
String valorPrestacaoComVirgula = Util.formataBigDecimal(valorPrestacao,2,true);
form.setValorParcelas(valorPrestacaoComVirgula);
} else {
form.setValorParcelas("0,00");
}
}
return valorDebito;
}
/*
* [UC0435] Encerrar Registro de Atendimento
*
* Limpar as informa��es relacionadas a gera��o do d�bito
*
* autor: Raphael Rossiter
* data: 13/03/2008
*/
private void limparDadosDebito(EncerrarRegistroAtendimentoActionForm form, HttpSession sessao){
form.setIdTipoDebito("");
form.setDescricaoTipoDebito("");
form.setValorDebito("");
form.setValorParcelas("");
form.setQuantidadeParcelas("");
form.setPercentualCobranca("-1");
form.setMotivoNaoCobranca("-1");
sessao.removeAttribute("colecaoServicoNaoCobrancaMotivo");
}
}