package gcom.gui.arrecadacao.pagamento;
import gcom.arrecadacao.FiltroAvisoBancario;
import gcom.arrecadacao.aviso.AvisoBancario;
import gcom.arrecadacao.pagamento.bean.InserirPagamentoViaCanetaHelper;
import gcom.batch.Processo;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.filtro.ParametroSimples;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
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;
/**
* Action respons�vel por inseri os pagamentos no sistema
*
* [UC0971] Inserir Pagamentos para Faturas Especiais
*
* @author Vivianne Sousa
* @created 21/12/2009
*/
public class InserirPagamentosFaturasEspeciaisAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Cria a vari�vel de retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
//Cria uma inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
//Cria uma inst�ncia da sess�o
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
//Recupera o form
PagamentosFaturasEspeciaisActionForm pagamentoActionForm = (PagamentosFaturasEspeciaisActionForm) actionForm;
Integer idFormaArrecadacao = new Integer(pagamentoActionForm.getIdFormaArrecadacao());
//[FS0001] - Validar data do pagamento
//Recupera a data de pagamento e verifica se a data � uma data v�lida
String dataPagamentoString = pagamentoActionForm.getDataPagamento();
Date dataPagamento = null;
SimpleDateFormat dataFormato = new SimpleDateFormat("dd/MM/yyyy");
try {
dataPagamento = dataFormato.parse(dataPagamentoString);
} catch (ParseException ex) {
throw new ActionServletException("atencao.data_pagamento_invalida");
}
//Recupera o aviso banc�rio e pequisa o objeto no sistema
String idAvisoBancario = pagamentoActionForm.getIdAvisoBancario();
FiltroAvisoBancario filtroAvisoBancario = new FiltroAvisoBancario();
filtroAvisoBancario.adicionarParametro(new ParametroSimples(FiltroAvisoBancario.ID, idAvisoBancario));
filtroAvisoBancario.adicionarCaminhoParaCarregamentoEntidade(FiltroAvisoBancario.ARRECADADOR);
AvisoBancario avisoBancario = (AvisoBancario)(fachada.pesquisar(filtroAvisoBancario,AvisoBancario.class.getName())).iterator().next();
//Recupera a cole�a� de documentos da sess�o contendo o c�digo de barras e o valor do pagamento
Collection<InserirPagamentoViaCanetaHelper> colecaoInserirPagamentoViaCanetaHelper =
(Collection<InserirPagamentoViaCanetaHelper>) sessao.getAttribute("colecaoInserirPagamentoViaCanetaHelper");
//[FS0006] - Verificar exist�ncia de documento na lista
//Caso n�o exista nenhum documento na lista, levanta uma exce��o
//para o usu�rio indicando que nenhum documento foi informado
if(colecaoInserirPagamentoViaCanetaHelper == null || colecaoInserirPagamentoViaCanetaHelper.isEmpty()){
throw new ActionServletException("atencao.documento_naoinformado");
}
//Limpa a sess�o
sessao.removeAttribute("colecaoFormaArrecadacao");
sessao.removeAttribute("colecaoInserirPagamentoViaCanetaHelper");
//Este map levar� todos os par�metros para a inicializa��o do processo
Map parametros = new HashMap();
parametros.put("colecaoInserirPagamentoViaCanetaHelper",colecaoInserirPagamentoViaCanetaHelper);
parametros.put("usuarioLogado",usuarioLogado);
parametros.put("avisoBancario",avisoBancario);
parametros.put("idFormaArrecadacao",idFormaArrecadacao);
parametros.put("dataPagamento",dataPagamento);
Fachada.getInstancia().inserirProcessoIniciadoParametrosLivres(parametros,
Processo.INSERIR_PAGAMENTOS_FATURAS_ESPECIAIS, this.getUsuarioLogado(httpServletRequest));
montarPaginaSucesso(httpServletRequest, "A inser��o de pagamentos para os itens da(s) fatura(s) informada(s) foi direcionado para processamento batch com sucesso.", "", "");
return retorno;
}
}