package gcom.gui.cobranca.contratoparcelamento;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.FiltroClienteRelacaoTipo;
import gcom.cobranca.contratoparcelamento.ContratoParcelamento;
import gcom.cobranca.contratoparcelamento.ContratoParcelamentoCliente;
import gcom.cobranca.parcelamento.FiltroParcelamentoMotivoDesfazer;
import gcom.cobranca.parcelamento.ParcelamentoMotivoDesfazer;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
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;
/**
* [UC1140] Cancelar Contrato de Parcelamento por Cliente
*
* @author R�mulo Aur�lio
* @date 12/05/2011
*/
public class ExibirCancelarContratoParcelamentoClienteAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("exibirCancelarContratoParcelamentoClienteAction");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
CancelarContratoParcelamentoClienteActionForm form = (CancelarContratoParcelamentoClienteActionForm) actionForm;
if (sessao.getAttribute("fecharPopupCancelarContrato") != null
&& !sessao.getAttribute("fecharPopupCancelarContrato").equals("")) {
sessao.setAttribute("idContrato", form.getIdClienteContrato());
} else {
String numeroContratoParcelamento = httpServletRequest
.getParameter("numeroParcelamento");
String idClienteContrato = httpServletRequest
.getParameter("idClienteContrato");
form.setIdClienteContrato(idClienteContrato);
ContratoParcelamento contratoParcelamento = fachada
.pesquisarContratoParcelamento(numeroContratoParcelamento);
// [FS0003] � Verificar exist�ncia de contrato com o n�mero recebido
if (contratoParcelamento == null) {
throw new ActionServletException(
"atencao.numero_contrato_parcelamento_inexistente", null,
"" + numeroContratoParcelamento);
}
// [FS0008] - Verificar possibilidade de cancelamento do contrato de
// parcelamento por cliente
fachada.verificarPossibilidadeCancelamentoContratoParcelamento(contratoParcelamento);
//2.0
this.montarDadosExibicao(form, contratoParcelamento, fachada, sessao);
sessao.setAttribute("contratoParcelamento", contratoParcelamento);
}
return retorno;
}
//2
public void montarDadosExibicao(CancelarContratoParcelamentoClienteActionForm form,
ContratoParcelamento contratoParcelamento, Fachada fachada, HttpSession sessao){
//2.1
form.setNumeroContrato(contratoParcelamento.getNumero());
//2.1.2
this.montarDadosCliente(form, contratoParcelamento, fachada);
//2.1.3
form.setDataImplantacaoContrato(Util.formatarData(contratoParcelamento.getDataImplantacao()));
//2.2.1
form.setDataCancelamento(Util.formatarData(new Date()));
//2.2.2
FiltroParcelamentoMotivoDesfazer filtroParcelamentoMotivoDesfazer = new FiltroParcelamentoMotivoDesfazer();
filtroParcelamentoMotivoDesfazer.adicionarParametro(new ParametroSimples(
FiltroParcelamentoMotivoDesfazer.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroParcelamentoMotivoDesfazer.setCampoOrderBy(FiltroParcelamentoMotivoDesfazer.DESCRICAO);
Collection colecaoParcelamentoMotivoDesfazer = fachada.pesquisar(filtroParcelamentoMotivoDesfazer, ParcelamentoMotivoDesfazer.class.getName());
if (colecaoParcelamentoMotivoDesfazer == null
|| colecaoParcelamentoMotivoDesfazer.isEmpty()) {
throw new ActionServletException("atencao.sem_dados_para_selecao", null, "cobranca.parcel_motivo_desfazer");
}
sessao.setAttribute("colecaoParcelamentoMotivoDesfazer",colecaoParcelamentoMotivoDesfazer);
}
public void montarDadosCliente(CancelarContratoParcelamentoClienteActionForm form,
ContratoParcelamento contratoParcelamento, Fachada fachada) {
// 2.1.2 Dados Cliente
ContratoParcelamentoCliente contratoParcelamentoCliente = fachada.pesquisarClienteContrato(contratoParcelamento.getId());
// 2.1.2
form.setIdCliente("" + contratoParcelamentoCliente.getCliente().getId());
form.setNomeCliente(contratoParcelamentoCliente.getCliente().getNome());
form.setCnpjCliente(contratoParcelamentoCliente.getCliente().getCnpjFormatado());
if (contratoParcelamento.getRelacaoCliente() != null) {
FiltroClienteRelacaoTipo filtroClienteRelacaoTipo = new FiltroClienteRelacaoTipo();
filtroClienteRelacaoTipo.adicionarParametro(
new ParametroSimples(FiltroClienteRelacaoTipo.CLIENTE_RELACAO_TIPO_ID,
contratoParcelamento.getRelacaoCliente().getId()));
Collection colecaoClienteRelacaoTipo = fachada.pesquisar(filtroClienteRelacaoTipo,ClienteRelacaoTipo.class.getName());
ClienteRelacaoTipo clienteRelacaoTipo = (ClienteRelacaoTipo) colecaoClienteRelacaoTipo
.iterator().next();
form.setDescricaoClienteRelacaoTipo(clienteRelacaoTipo.getDescricao());
}
}
}