package gcom.gui.arrecadacao.aviso;
import java.util.Date;
import gcom.arrecadacao.FiltroDevolucao;
import gcom.arrecadacao.pagamento.FiltroPagamento;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
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;
/**
* [UC0611] Movimentar Pagamentos/ Devolu��es entre Avisos Banc�rios
*
* @author Ana Maria
*
* @date 07/06/2007
*/
public class SelecionarPagamentosAvisoBancarioAction extends
GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("exibirMovimentarPagamentosDevolucoesAvisoBancario");
HttpSession sessao = httpServletRequest.getSession(false);
SelecionarPagamentosAvisoBancarioActionForm form = (SelecionarPagamentosAvisoBancarioActionForm) actionForm;
// Recupera os par�metros do form
Integer avisoBancarioO = new Integer(form.getAvisoBancarioO());
Integer avisoBancarioD = new Integer(form.getAvisoBancarioD());
String dataDevolucao = form.getDataDevolucao();
String dataPagamento = form.getDataPagamento();
Integer idArrecadacaoForma = new Integer(form.getIdArrecadacaoForma());
boolean peloMenosUmParametroInformado = false;
FiltroDevolucao filtroDevolucao = null;
if(dataDevolucao != null && !dataDevolucao.equals("")){
peloMenosUmParametroInformado = true;
Date data = Util.converteStringParaDate(dataDevolucao);
filtroDevolucao = new FiltroDevolucao();
filtroDevolucao.adicionarParametro(new ParametroSimples(FiltroDevolucao.AVISO_BANCARIO_ID, avisoBancarioO));
filtroDevolucao.adicionarParametro(new ParametroSimples(FiltroDevolucao.DATA_DEVOLUCAO, data));
}
FiltroPagamento filtroPagamento = null;
if((dataPagamento != null && !dataPagamento.equals("")) ||
(idArrecadacaoForma != null && !idArrecadacaoForma.equals("0"))){
peloMenosUmParametroInformado = true;
filtroPagamento = new FiltroPagamento();
filtroPagamento.adicionarParametro(new ParametroSimples(FiltroPagamento.AVISO_BANCARIO_ID, avisoBancarioO));
if(dataPagamento != null && !dataPagamento.equals("")){
Date data = Util.converteStringParaDate(dataPagamento);
filtroPagamento.adicionarParametro(new ParametroSimples(FiltroPagamento.DATA_PAGAMENTO, data));
}
if(idArrecadacaoForma != null && !idArrecadacaoForma.equals(ConstantesSistema.NUMERO_NAO_INFORMADO)){
filtroPagamento.adicionarParametro(new ParametroSimples(FiltroPagamento.PAGAMENTO_ARRECADACAO_FORMA, idArrecadacaoForma));
}
}
// Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException("atencao.filtro.nenhum_parametro_informado");
}
// Manda o filtro pela sess�o
sessao.setAttribute("filtroDevolucao", filtroDevolucao);
sessao.setAttribute("filtroPagamento", filtroPagamento);
sessao.setAttribute("avisoBancarioO", avisoBancarioO);
sessao.setAttribute("avisoBancarioD", avisoBancarioD);
String descricaoABOrigem = form.getCodigoAgenteArrecadadorO()+" - "+form.getDataLancamentoAvisoO()+" - "+form.getNumeroSequencialAvisoO();
String descricaoABDestino = form.getCodigoAgenteArrecadadorD()+" - "+form.getDataLancamentoAvisoD()+" - "+form.getNumeroSequencialAvisoD();
sessao.setAttribute("descricaoABOrigem", descricaoABOrigem);
sessao.setAttribute("descricaoABDestino", descricaoABDestino);
return retorno;
}
}