package gcom.gui.arrecadacao.aviso;
import gcom.arrecadacao.aviso.bean.AvisoBancarioHelper;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
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;
/**
* Realiza o filtro do aviso bancario de acordo com os par�metros informados
*
* @author Vivianne Sousa
* @created 13/03/2006
*/
public class FiltrarAvisoBancarioAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
/**
* Este caso de uso cria um filtro q ser� usado na pesquisa de aviso banc�rio
*
* [UC0239] Filtrar Aviso Banc�rio
*
*
* @author Vivianne Sousa
* @date 13/03/2006
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
ActionForward retorno = null;
FiltrarAvisoBancarioActionForm filtrarAvisoBancarioActionForm = (FiltrarAvisoBancarioActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
boolean peloMenosUmParametroInformado = false;
String atualizar = httpServletRequest.getParameter("atualizar");
validacaoFinal(filtrarAvisoBancarioActionForm);
String arrecadadorCodAgente = filtrarAvisoBancarioActionForm.getArrecadadorCodAgente();
String dataLancamentoInicioString = filtrarAvisoBancarioActionForm.getDataLancamentoInicio();
String dataLancamentoFimString = filtrarAvisoBancarioActionForm.getDataLancamentoFim();
String tipoAviso = filtrarAvisoBancarioActionForm.getTipoAviso();
String idContaBancaria = filtrarAvisoBancarioActionForm.getIdContaBancaria();
String idMovimento = filtrarAvisoBancarioActionForm.getIdMovimento();
String periodoArrecadacaoInicio = filtrarAvisoBancarioActionForm.getPeriodoArrecadacaoInicio();
String periodoArrecadacaoFim = filtrarAvisoBancarioActionForm.getPeriodoArrecadacaoFim();
String dataPrevisaoCreditoDebitoInicioString = filtrarAvisoBancarioActionForm.getDataPrevisaoCreditoDebitoInicio();
String dataPrevisaoCreditoDebitoFimString = filtrarAvisoBancarioActionForm.getDataPrevisaoCreditoDebitoFim();
String dataRealizacaoCreditoDebitoInicioString = filtrarAvisoBancarioActionForm.getDataRealizacaoCreditoDebitoInicio();
String dataRealizacaoCreditoDebitoFimString = filtrarAvisoBancarioActionForm.getDataRealizacaoCreditoDebitoFim();
String intervaloValorRealizadoInicio = filtrarAvisoBancarioActionForm.getIntervaloValorRealizadoInicio();
String intervaloValorRealizadoFim = filtrarAvisoBancarioActionForm.getIntervaloValorRealizadoFim();
String avisoAbertoFechado = filtrarAvisoBancarioActionForm.getAviso();
/*
* Acr�scimo desse campo para ser usado na pesquisa, na a��o manter aviso banc�rio
*/
String idAvisoBancario = filtrarAvisoBancarioActionForm.getIdAvisoBancario();
//Cria o formato da data
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
AvisoBancarioHelper avisoBancarioHelper = new AvisoBancarioHelper();
/*
* Acr�scimo desse campo para ser usado na pesquisa, na a��o manter aviso banc�rio
*/
if ((idAvisoBancario != null)
&& (!idAvisoBancario.trim().equals(""))) {
avisoBancarioHelper.setIdAvisoBancario(new Integer(idAvisoBancario));
peloMenosUmParametroInformado = true;
}
// Passando os Par�metros para os filtros...
if ((arrecadadorCodAgente != null)
&& (!arrecadadorCodAgente.trim().equals(""))) {
avisoBancarioHelper.setCodigoAgenteArrecadador(new Short(arrecadadorCodAgente));
peloMenosUmParametroInformado = true;
}
if ((dataLancamentoInicioString != null)
&& (!dataLancamentoInicioString.equals(""))) {
Date dataLancamentoInicio = null;
Date dataLancamentoFim = null;
if ((dataLancamentoFimString == null)|| (dataLancamentoFimString.equals(""))){
dataLancamentoFimString = dataLancamentoInicioString;
}
try {
dataLancamentoInicio = formato.parse(dataLancamentoInicioString);
} catch (ParseException e1) {
e1.printStackTrace();
}
try {
dataLancamentoFim = formato.parse(dataLancamentoFimString);
} catch (ParseException e) {
e.printStackTrace();
}
avisoBancarioHelper.setDataLancamentoInicial(dataLancamentoInicio);
avisoBancarioHelper.setDataLancamentoFinal(dataLancamentoFim);
peloMenosUmParametroInformado = true;
}
if ((tipoAviso != null) && (!tipoAviso.trim().equals(""))
&& (!tipoAviso.trim().equals("3"))) {
avisoBancarioHelper.setIndicadorCreditoDebito(new Short(tipoAviso));
peloMenosUmParametroInformado = true;
}
if ((idContaBancaria != null) && (!idContaBancaria.trim().equals(""))) {
avisoBancarioHelper.setIdContaBancaria(new Integer(idContaBancaria));
peloMenosUmParametroInformado = true;
}
if ((idMovimento != null) && (!idMovimento.trim().equals(""))) {
avisoBancarioHelper.setIdMovimentoArrecadador(new Integer(idMovimento));
peloMenosUmParametroInformado = true;
}
if ((dataPrevisaoCreditoDebitoInicioString != null)
&& (!dataPrevisaoCreditoDebitoInicioString.trim().equals(""))) {
Date dataPrevisaoCreditoDebitoInicio = null;
Date dataPrevisaoCreditoDebitoFim = null;
if ((dataPrevisaoCreditoDebitoFimString == null)|| (dataPrevisaoCreditoDebitoFimString.equals(""))){
dataPrevisaoCreditoDebitoFimString = dataPrevisaoCreditoDebitoInicioString;
}
dataPrevisaoCreditoDebitoInicio = Util.converteStringParaDate(dataPrevisaoCreditoDebitoInicioString);
dataPrevisaoCreditoDebitoFim = Util.converteStringParaDate(dataPrevisaoCreditoDebitoFimString);
avisoBancarioHelper.setDataPrevistaInicial(dataPrevisaoCreditoDebitoInicio);
avisoBancarioHelper.setDataPrevistaFinal(dataPrevisaoCreditoDebitoFim);
peloMenosUmParametroInformado = true;
}
if ((dataRealizacaoCreditoDebitoInicioString != null)
&& (!dataRealizacaoCreditoDebitoInicioString.trim().equals(""))) {
Date dataRealizacaoCreditoDebitoInicio = null;
Date dataRealizacaoCreditoDebitoFim = null;
if ((dataRealizacaoCreditoDebitoFimString == null)|| (dataRealizacaoCreditoDebitoFimString.equals(""))){
dataRealizacaoCreditoDebitoFimString = dataRealizacaoCreditoDebitoInicioString;
}
try {
dataRealizacaoCreditoDebitoInicio = formato.parse(dataRealizacaoCreditoDebitoInicioString);
} catch (ParseException e) {
e.printStackTrace();
}
try {
dataRealizacaoCreditoDebitoFim = formato.parse(dataRealizacaoCreditoDebitoFimString);
} catch (ParseException e) {
e.printStackTrace();
}
avisoBancarioHelper.setDataRealizadaInicial(dataRealizacaoCreditoDebitoInicio);
avisoBancarioHelper.setDataRealizadaFinal(dataRealizacaoCreditoDebitoFim);
peloMenosUmParametroInformado = true;
}
// Tratando os periodos (mes/ano) para que possam ser feitos os filtros
if ((periodoArrecadacaoInicio != null)
&& (!periodoArrecadacaoInicio.trim().equals(""))) {
int periodoArrecadacaoInicioTratado = Integer.parseInt(Util.formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoInicio)) ;
int periodoArrecadacaoFimTratado = Integer.parseInt(Util.formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoFim));
avisoBancarioHelper.setAnoMesReferenciaArrecadacaoInicial(periodoArrecadacaoInicioTratado);
avisoBancarioHelper.setAnoMesReferenciaArrecadacaoFinal(periodoArrecadacaoFimTratado);
peloMenosUmParametroInformado = true;
}
if ((intervaloValorRealizadoInicio != null)
&& (!intervaloValorRealizadoInicio.trim().equals(""))) {
avisoBancarioHelper.setValorRealizadoInicial(Util.formatarMoedaRealparaBigDecimal(intervaloValorRealizadoInicio));
avisoBancarioHelper.setValorRealizadoFinal(Util.formatarMoedaRealparaBigDecimal(intervaloValorRealizadoFim));
peloMenosUmParametroInformado = true;
}
// [FS0006] Verificar preenchimento dos campos
if ((!peloMenosUmParametroInformado) && (avisoAbertoFechado.equals("-1"))) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
if (avisoAbertoFechado != null && (!avisoAbertoFechado.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO))
&& !avisoAbertoFechado.equals("1")){
avisoBancarioHelper.setTipoAviso(avisoAbertoFechado);
}
// Filtrando os dados...
Collection collectionAvisoBancario = fachada.filtrarAvisoBancarioAbertoFechado(avisoBancarioHelper);
// AvisoBancarioHelper objetoAvisoBancario = null;
// AvisoBancarioHelper avisoBancarioHelperNovo = null;
Integer totalRegistros = 0;
// int count = 0;
if(collectionAvisoBancario != null && !collectionAvisoBancario.isEmpty()){
// Iterator iterator = collectionAvisoBancario.iterator();
//
// while (iterator.hasNext()) {
// objetoAvisoBancario = (AvisoBancarioHelper) iterator.next();
// avisoBancarioHelperNovo = new AvisoBancarioHelper();
//
// avisoBancarioHelperNovo
// .setAvisoBancario(objetoAvisoBancario.getAvisoBancario());
// avisoBancarioHelperNovo
// .setTipoAviso(avisoBancarioHelper.getTipoAviso());
// count++;
//
// }
// totalRegistros = count;
totalRegistros = collectionAvisoBancario.size();
sessao.setAttribute("totalRegistros",totalRegistros);
}
if (collectionAvisoBancario == null
|| collectionAvisoBancario.isEmpty()) {
// [FS0009] Nenhum registro encontrado
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "aviso banc�rio");
}
else {
if (atualizar != null && totalRegistros == 1)
{
AvisoBancarioHelper avisoBancario2Helper = (AvisoBancarioHelper) collectionAvisoBancario.iterator().next();
httpServletRequest.setAttribute("idAvisoBancario",
avisoBancario2Helper.getAvisoBancario().getId());
if(sessao.getAttribute("acao") != null){
retorno = actionMapping
.findForward("efetuarAnaliseAvisoBancario");
}else{
retorno = actionMapping
.findForward("atualizarAvisoBancario");
}
} else {
retorno = actionMapping.findForward("manter");
}
sessao.setAttribute("collectionAvisoBancario",
collectionAvisoBancario);
sessao.setAttribute("filtroAvisoBancarioHelper", avisoBancarioHelper);
sessao.setAttribute("filtrar_manter", "filtrar_manter");
}
return retorno;
}
private void validacaoFinal(FiltrarAvisoBancarioActionForm form) {
Date dataLancamentoInicio = null;
Date dataLancamentoFim = null;
Integer periodoArrecadacaoInicio = null;
Integer periodoArrecadacaoFim = null;
Date dataPrevisaoCreditoDebitoInicio = null;
Date dataPrevisaoCreditoDebitoFim = null;
BigDecimal intervaloValorPrevistoInicio = null;
BigDecimal intervaloValorPrevistoFim = null;
Date dataRealizacaoCreditoDebitoInicio = null;
Date dataRealizacaoCreditoDebitoFim = null;
BigDecimal intervaloValorRealizadoInicio = null;
BigDecimal intervaloValorRealizadoFim = null;
Fachada fachada = Fachada.getInstancia();
// per�odo de lan�amento do aviso inicial
// per�odo de lan�amento do aviso final
if (form.getDataLancamentoInicio() != null
&& form.getDataLancamentoFim() != null) {
if (!form.getDataLancamentoInicio().equals("")
&& !form.getDataLancamentoFim().equals("")) {
dataLancamentoInicio = Util.converteStringParaDate(form
.getDataLancamentoInicio());
dataLancamentoFim = Util.converteStringParaDate(form
.getDataLancamentoFim());
}
}
// per�odo de refer�ncia de arrecada��o inicial
// per�odo de refer�ncia de arrecada��o final
if (form.getPeriodoArrecadacaoInicio() != null
&& form.getPeriodoArrecadacaoFim() != null) {
if (!form.getPeriodoArrecadacaoInicio().equals("")
&& !form.getPeriodoArrecadacaoFim().equals("")) {
periodoArrecadacaoInicio = Integer.parseInt(Util
.formatarMesAnoParaAnoMesSemBarra(form
.getPeriodoArrecadacaoInicio()));
periodoArrecadacaoFim = Integer.parseInt(Util
.formatarMesAnoParaAnoMesSemBarra(form
.getPeriodoArrecadacaoFim()));
}
}
// per�odo de previs�o do cr�dito/d�bito inicial
// per�odo de previs�o do cr�dito/d�bito final
if (form.getDataPrevisaoCreditoDebitoInicio() != null
&& form.getDataPrevisaoCreditoDebitoFim() != null) {
if (!form.getDataPrevisaoCreditoDebitoInicio().equals("")
&& !form.getDataPrevisaoCreditoDebitoFim().equals("")) {
dataPrevisaoCreditoDebitoInicio = Util
.converteStringParaDate(form
.getDataPrevisaoCreditoDebitoInicio());
dataPrevisaoCreditoDebitoFim = Util.converteStringParaDate(form
.getDataPrevisaoCreditoDebitoFim());
}
}
// intervalo de valor previsto inicial
// intervalo de valor previsto final
if (form.getIntervaloValorPrevistoInicio() != null
&& form.getIntervaloValorPrevistoFim() != null) {
if (!form.getIntervaloValorPrevistoInicio().equals("")
&& !form.getIntervaloValorPrevistoFim().equals("")) {
intervaloValorPrevistoInicio = Util.formatarMoedaRealparaBigDecimal(form
.getIntervaloValorPrevistoInicio());
intervaloValorPrevistoFim = Util.formatarMoedaRealparaBigDecimal(form
.getIntervaloValorPrevistoFim());
}
}
// per�odo de realiza��o do cr�dito/d�bito inicial
// per�odo de previs�o do cr�dito/d�bito final
if (form.getDataRealizacaoCreditoDebitoInicio() != null
&& form.getDataRealizacaoCreditoDebitoFim() != null) {
if (!form.getDataRealizacaoCreditoDebitoInicio().equals("")
&& !form.getDataRealizacaoCreditoDebitoFim().equals("")) {
dataRealizacaoCreditoDebitoInicio = Util
.converteStringParaDate(form
.getDataRealizacaoCreditoDebitoInicio());
dataRealizacaoCreditoDebitoFim = Util
.converteStringParaDate(form
.getDataRealizacaoCreditoDebitoFim());
}
}
// intervalo de valor realizado inicial
// intervalo de valor realizado final
if (form.getIntervaloValorRealizadoInicio() != null
&& form.getIntervaloValorRealizadoFim() != null) {
if (!form.getIntervaloValorRealizadoInicio().equals("")
&& !form.getIntervaloValorRealizadoFim().equals("")) {
intervaloValorRealizadoInicio = Util.formatarMoedaRealparaBigDecimal(form
.getIntervaloValorRealizadoInicio());
intervaloValorRealizadoFim = Util.formatarMoedaRealparaBigDecimal(form
.getIntervaloValorRealizadoFim());
}
}
fachada.validacaoFinal(dataLancamentoInicio, dataLancamentoFim,
periodoArrecadacaoInicio, periodoArrecadacaoFim,
dataPrevisaoCreditoDebitoInicio, dataPrevisaoCreditoDebitoFim,
intervaloValorPrevistoInicio, intervaloValorPrevistoFim,
dataRealizacaoCreditoDebitoInicio,
dataRealizacaoCreditoDebitoFim, intervaloValorRealizadoInicio,
intervaloValorRealizadoFim);
}
}