package gcom.gui.relatorio.financeiro;
import gcom.batch.Processo;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.RelatorioVazioException;
import gcom.relatorio.financeiro.RelatorioContasBaixadasContabilmente;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* Gera��o do relat�rio [UC0726] Gerar Relat�rio das Contas Baixadas Contabilmente
*
* @author Vivianne Sousa
* @data 08/04/2008
*/
public class GerarRelatorioContasBaixadasContabilmenteAction extends
ExibidorProcessamentoTarefaRelatorio {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// ActionForward retorno = null;
ActionForward retorno = actionMapping.findForward("telaSucesso");
GerarRelatorioContasBaixadasContabilmenteActionForm form = (GerarRelatorioContasBaixadasContabilmenteActionForm) actionForm;
//Este map levar� todos os par�metros para a inicializa��o do relat�rio
Map parametros = new HashMap();
String referenciaInicial = form.getReferenciaInicial();
String referenciaFinal = form.getReferenciaFinal();
Integer referenciaInicialInt = 0;
Integer referenciaFinalInt = 0;
String tipoFormato = form.getTipoFormato();
if (referenciaInicial != null && !referenciaInicial.equals("") &&
!Util.validarMesAno(referenciaInicial)) {
throw new ActionServletException("atencao.adicionar_debito_ano_mes_referencia_invalido",null,"Inicial");
}
if (referenciaFinal != null && !referenciaFinal.equals("") &&
!Util.validarMesAno(referenciaFinal)) {
throw new ActionServletException("atencao.adicionar_debito_ano_mes_referencia_invalido",null,"Final");
}
//[FS0001] - Verificar tipo de relat�rio
if (form.getTipo() == null || form.getTipo().equalsIgnoreCase("")) {
throw new ActionServletException("atencao.required", null, "Tipo de Relat�rio");
}
//[FS0002] - Verificar a periodicidade
if (form.getPeriodicidade() == null || form.getPeriodicidade().equalsIgnoreCase("")) {
throw new ActionServletException("atencao.required", null, "Periodicidade");
}
Short tipo = new Short (form.getTipo());
Short periodicidade = new Short (form.getPeriodicidade());
//[FS0003] - Verificar atributos inicial e final
if ((periodicidade.equals(ConstantesSistema.ACUMULADO) || (periodicidade.equals(ConstantesSistema.MENSAL))) &&
(referenciaFinal == null || referenciaFinal.equalsIgnoreCase(""))) {
throw new ActionServletException("atencao.required", null, "Refer�ncia das Faturas Final");
}else{
referenciaFinalInt = new Integer(Util
.formatarMesAnoParaAnoMesSemBarra(referenciaFinal));
}
if (periodicidade.equals(ConstantesSistema.MENSAL)) {
if((referenciaInicial != null && !referenciaInicial.equalsIgnoreCase("")) &&
(referenciaFinal == null || referenciaFinal.equalsIgnoreCase(""))){
throw new ActionServletException("atencao.required", null, "Refer�ncia das Faturas Final");
}
if((referenciaFinal != null && !referenciaFinal.equalsIgnoreCase("")) &&
(referenciaInicial == null || referenciaInicial.equalsIgnoreCase(""))){
throw new ActionServletException("atencao.required", null, "Refer�ncia das Faturas Inicial");
}
if (referenciaInicial != null && !referenciaInicial.equalsIgnoreCase("")&&
referenciaFinal != null && !referenciaFinal.equalsIgnoreCase("")) {
referenciaInicialInt = new Integer(Util
.formatarMesAnoParaAnoMesSemBarra(referenciaInicial));
referenciaFinalInt = new Integer(Util
.formatarMesAnoParaAnoMesSemBarra(referenciaFinal));
if (Util.compararAnoMesReferencia(referenciaInicialInt, referenciaFinalInt, ">")) {
throw new ActionServletException(
"atencao.referencia_fatura_final_menor_referencia_fatura_inicial");
}
}
}
if (tipoFormato == null || tipoFormato.equals("")){
throw new ActionServletException(
"atencao.relatorio_tipo_nao_informado");
}
parametros.put("tipo",tipo);
parametros.put("periodicidade",periodicidade);
parametros.put("referenciaInicial",referenciaInicialInt);
parametros.put("referenciaFinal",referenciaFinalInt);
parametros.put("tipoFormatoRelatorio", tipoFormato);
if (tipoFormato.equals("TXT")){
Fachada.getInstancia().inserirProcessoIniciadoParametrosLivres(parametros,
Processo.GERAR_TXT_CONTAS_BAIXADAS_CONTABILMENTE ,
this.getUsuarioLogado(httpServletRequest));
} else
if (tipoFormato.equals("PDF")){
RelatorioContasBaixadasContabilmente relatorioContasBaixadasContabilmente = new RelatorioContasBaixadasContabilmente((Usuario)(httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));
relatorioContasBaixadasContabilmente.addParametro("tipo", tipo);
relatorioContasBaixadasContabilmente.addParametro("periodicidade", periodicidade);
relatorioContasBaixadasContabilmente.addParametro("referenciaInicial", referenciaInicialInt);
relatorioContasBaixadasContabilmente.addParametro("referenciaFinal", referenciaFinalInt);
relatorioContasBaixadasContabilmente.addParametro("tipoFormatoRelatorio", TarefaRelatorio.TIPO_PDF);
String tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
try {
retorno = processarExibicaoRelatorio(relatorioContasBaixadasContabilmente,
tipoRelatorio, httpServletRequest, httpServletResponse,
actionMapping);
} catch (RelatorioVazioException ex) {
// manda o erro para a p�gina no request atual
reportarErros(httpServletRequest, "atencao.relatorio.vazio");
// seta o mapeamento de retorno para a tela de aten��o de popup
retorno = actionMapping.findForward("telaAtencaoPopup");
}
}
montarPaginaSucesso(httpServletRequest, "Relat�rio foi para batch.",
"",
"");
return retorno;
}
}