package gcom.relatorio.faturamento;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.relatorio.faturamento.RelatorioReceitasAFaturarActionForm;
import gcom.relatorio.ConstantesRelatorios;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionForm;
public class RelatorioReceitasAFaturarBO {
private RelatorioReceitasAFaturarActionForm form;
private Usuario usuario;
private String mesAno;
private Integer grupoFaturamentoID;
private String nomeRelatorio;
private Short indicadorCategoria;
public RelatorioReceitasAFaturarBO(ActionForm actionForm, HttpServletRequest httpServletRequest) {
this.form = (RelatorioReceitasAFaturarActionForm) actionForm;
this.usuario = (Usuario) httpServletRequest.getSession(false).getAttribute("usuarioLogado");
this.mesAno = form.getMesAno();
this.indicadorCategoria = form.getIndicadorCategoria();
if(form.getGrupoFaturamentoID() <= 0) {
this.grupoFaturamentoID = null;
nomeRelatorio = ConstantesRelatorios.RELATORIO_RECEITAS_A_FATURAR_SINTETICO_CATEGORIA;
} else {
this.grupoFaturamentoID = form.getGrupoFaturamentoID();
nomeRelatorio = ConstantesRelatorios.RELATORIO_RECEITAS_A_FATURAR_ANALITICO;
}
}
public RelatorioReceitasAFaturar getRelatorioReceitasAFaturar() {
if(getAnoMesReferencia().equals("")){
throw new ActionServletException("atencao.filtro.nenhum_parametro_informado");
}
RelatorioReceitasAFaturar relatorioReceitasAFaturar = new RelatorioReceitasAFaturar(usuario, nomeRelatorio);
relatorioReceitasAFaturar.addParametro("ano", this.mesAno.substring(3));
relatorioReceitasAFaturar.addParametro("mes", this.mesAno.substring(0, 2));
relatorioReceitasAFaturar.addParametro("idGrupo", this.grupoFaturamentoID);
relatorioReceitasAFaturar.addParametro("indicadorCategoria", this.indicadorCategoria);
if(this.grupoFaturamentoID != null) {
relatorioReceitasAFaturar = getRelatorioReceitasAFaturarAnalitico(relatorioReceitasAFaturar);
} else {
relatorioReceitasAFaturar = getRelatorioReceitasAFaturarSintetico(relatorioReceitasAFaturar);
}
return relatorioReceitasAFaturar;
}
public RelatorioReceitasAFaturar getRelatorioReceitasAFaturarSintetico(RelatorioReceitasAFaturar relatorioReceitasAFaturar) {
Collection<RelatorioReceitasAFaturarPorCategoriaHelper> colecaoDadosRelatorio = getColecaoDadosRelatorioSintetico();
relatorioReceitasAFaturar.addParametro("colecaoDadosRelatorio", colecaoDadosRelatorio);
getDataLeituraAnteriorAtualSintetico(relatorioReceitasAFaturar, colecaoDadosRelatorio);
return relatorioReceitasAFaturar;
}
public RelatorioReceitasAFaturar getRelatorioReceitasAFaturarAnalitico(RelatorioReceitasAFaturar relatorioReceitasAFaturar) {
Collection<RelatorioReceitasAFaturarHelper> colecaoDadosRelatorio = getColecaoDadosRelatorioAnalitico();
relatorioReceitasAFaturar.addParametro("colecaoDadosRelatorio", colecaoDadosRelatorio);
getDataLeituraAnteriorAtualAnalitico(relatorioReceitasAFaturar, colecaoDadosRelatorio);
return relatorioReceitasAFaturar;
}
private void getDataLeituraAnteriorAtualAnalitico(RelatorioReceitasAFaturar relatorioReceitasAFaturar, Collection<RelatorioReceitasAFaturarHelper> colecaoDadosRelatorio) {
ArrayList<RelatorioReceitasAFaturarHelper> lista = (ArrayList) colecaoDadosRelatorio;
Date dataLeituraAnterior = lista.get(0).getDataLeituraAnterior();
Date dataLeituraAtual = lista.get(0).getDataLeituraAtual();
relatorioReceitasAFaturar.addParametro("dataLeituraAnterior", dataLeituraAnterior);
relatorioReceitasAFaturar.addParametro("dataLeituraAtual", dataLeituraAtual);
}
private void getDataLeituraAnteriorAtualSintetico(RelatorioReceitasAFaturar relatorioReceitasAFaturar, Collection<RelatorioReceitasAFaturarPorCategoriaHelper> colecaoDadosRelatorio) {
ArrayList<RelatorioReceitasAFaturarPorCategoriaHelper> listaCategoria = (ArrayList) colecaoDadosRelatorio;
ArrayList<RelatorioReceitasAFaturarHelper> lista = (ArrayList) listaCategoria.get(0).getRelatorioReceitasAFaturarHelpers();
Date dataLeituraAnterior = lista.get(0).getDataLeituraAnterior();
Date dataLeituraAtual = lista.get(0).getDataLeituraAtual();
relatorioReceitasAFaturar.addParametro("dataLeituraAnterior", dataLeituraAnterior);
relatorioReceitasAFaturar.addParametro("dataLeituraAtual", dataLeituraAtual);
}
private Collection<RelatorioReceitasAFaturarHelper> getColecaoDadosRelatorioAnalitico() {
Collection<RelatorioReceitasAFaturarHelper> colecaoDadosRelatorio =
Fachada.getInstancia().pesquisarDadosRelatorioReceitasAFaturarAnalitico(this.grupoFaturamentoID, Integer.parseInt(getAnoMesReferencia()));
if (colecaoDadosRelatorio == null || colecaoDadosRelatorio.isEmpty()) {
throw new ActionServletException("atencao.relatorio.vazio");
}
return colecaoDadosRelatorio;
}
private Collection<RelatorioReceitasAFaturarPorCategoriaHelper> getColecaoDadosRelatorioSintetico() {
Collection<RelatorioReceitasAFaturarPorCategoriaHelper> colecaoDadosRelatorio =
Fachada.getInstancia().pesquisarDadosRelatorioReceitasAFaturarSintetico(Integer.parseInt(getAnoMesReferencia()), this.indicadorCategoria);
if (colecaoDadosRelatorio == null || colecaoDadosRelatorio.isEmpty()) {
throw new ActionServletException("atencao.relatorio.vazio");
}
return colecaoDadosRelatorio;
}
public String getAnoMesReferencia() {
String anoMes = "";
if (mesAno != null && !mesAno.trim().equals("")) {
anoMes = mesAno.substring(3, 7) + mesAno.substring(0, 2);
}
return anoMes;
}
}