package gcom.gui.relatorio.faturamento;
import gcom.cadastro.funcionario.FiltroFuncionario;
import gcom.cadastro.funcionario.Funcionario;
import gcom.cadastro.localidade.FiltroUnidadeNegocio;
import gcom.cadastro.localidade.UnidadeNegocio;
import gcom.cadastro.sistemaparametro.FiltroSistemaParametro;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.faturamento.autoinfracao.GerarRelatorioAutoInfracaoActionForm;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.faturamento.autoinfracao.RelatorioAutoInfracao;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
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;
/**
* action respons�vel pela exibi��o do relat�rio de bairro manter
*
* @author S�vio Luiz
* @created 11 de Julho de 2005
*/
public class GerarRelatorioAutoInfracaoAction extends
ExibidorProcessamentoTarefaRelatorio {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// cria a vari�vel de retorno
ActionForward retorno = null;
GerarRelatorioAutoInfracaoActionForm gerarRelatorioAutoInfracaoActionForm = (GerarRelatorioAutoInfracaoActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
SistemaParametro sistemaParametro = this.getSistemaParametro();
boolean peloMenosUmParametroInformado = false;
// Inicio da parte que vai mandar os parametros para o relat�rio
UnidadeNegocio unidadeNegocio = new UnidadeNegocio();
Funcionario funcionario = new Funcionario();
String idUnidadeNegocio = gerarRelatorioAutoInfracaoActionForm.getIdUnidadeNegocio();
httpServletRequest.setAttribute("telaSucessoRelatorio",true);
if (idUnidadeNegocio != null && !idUnidadeNegocio.trim().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
peloMenosUmParametroInformado = true;
FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(FiltroUnidadeNegocio.ID, idUnidadeNegocio));
Collection colecaoUnidadeNegocio = fachada.pesquisar(filtroUnidadeNegocio, UnidadeNegocio.class.getName());
if (colecaoUnidadeNegocio != null && !colecaoUnidadeNegocio.isEmpty()) {
unidadeNegocio = (UnidadeNegocio) Util.retonarObjetoDeColecao(colecaoUnidadeNegocio);
}
}
String idFuncionario = gerarRelatorioAutoInfracaoActionForm.getIdFuncionario();
if (idFuncionario != null && !idFuncionario.trim().equals("")) {
peloMenosUmParametroInformado = true;
FiltroFuncionario filtroFuncionario = new FiltroFuncionario();
filtroFuncionario.adicionarParametro(new ParametroSimples(FiltroFuncionario.ID, idFuncionario));
Collection colecaoFuncionario = fachada.pesquisar(filtroFuncionario, Funcionario.class.getName());
if (colecaoFuncionario != null && !colecaoFuncionario.isEmpty()) {
funcionario = (Funcionario) Util.retonarObjetoDeColecao(colecaoFuncionario);
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null, "Funcion�rio");
}
}
String dataPagamentoInicialForm = gerarRelatorioAutoInfracaoActionForm.getDataPagamentoInicio();
String dataPagamentoFinalForm = gerarRelatorioAutoInfracaoActionForm.getDataPagamentoFim();
String dataPagamentoInicial = null;
String dataPagamentoFinal = null;
if (dataPagamentoInicialForm != null && !dataPagamentoInicialForm.trim().equals("")) {
peloMenosUmParametroInformado = true;
dataPagamentoInicial = Util.formatarMesAnoParaAnoMesSemBarra(dataPagamentoInicialForm);
dataPagamentoFinal = Util.formatarMesAnoParaAnoMesSemBarra(dataPagamentoFinalForm);
if (dataPagamentoInicial
.compareTo(dataPagamentoFinal) > 0) {
throw new ActionServletException(
"atencao.data.intervalo.invalido");
}
//Consulta a data referente ano mes arrecada��o direto da tabela e n�o quando sistema parametro � carregado.
FiltroSistemaParametro filtroSistemaParametro = new FiltroSistemaParametro();
filtroSistemaParametro.adicionarParametro( new ParametroSimples(
FiltroSistemaParametro.Parm_Id, sistemaParametro.getParmId() ) );
Collection colecaoSistemaParametro = fachada.pesquisar(filtroSistemaParametro, SistemaParametro.class.getName());
SistemaParametro sistParam = (SistemaParametro) Util.retonarObjetoDeColecao(colecaoSistemaParametro);
if(dataPagamentoFinal.compareTo(sistParam.getAnoMesArrecadacao().toString())>=0){
throw new ActionServletException(
"atencao.data.menor.sistema.parametro",null,Util.formatarAnoMesParaMesAno(sistemaParametro.getAnoMesArrecadacao().toString()));
}
}
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
// Fim da parte que vai mandar os parametros para o relat�rio
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
RelatorioAutoInfracao relatorioAutoInfracao = new RelatorioAutoInfracao((Usuario)(httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));
relatorioAutoInfracao.addParametro("unidadeNegocio",
unidadeNegocio);
relatorioAutoInfracao.addParametro("funcionario",
funcionario);
relatorioAutoInfracao.addParametro("dataPagamentoInicial",
new Integer(dataPagamentoInicial));
relatorioAutoInfracao.addParametro("dataPagamentoFinal",
new Integer(dataPagamentoFinal));
int count = fachada.countRelatorioAutoInfracao(
unidadeNegocio.getId(),
funcionario.getId(),
new Integer(dataPagamentoInicial),
new Integer(dataPagamentoFinal));
if(count==0){
throw new ActionServletException(
"atencao.relatorio.vazio");
}
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
relatorioAutoInfracao.addParametro("tipoFormatoRelatorio", Integer
.parseInt(tipoRelatorio));
retorno = processarExibicaoRelatorio(relatorioAutoInfracao, tipoRelatorio,
httpServletRequest, httpServletResponse, actionMapping);
// devolve o mapeamento contido na vari�vel retorno
return retorno;
}
}