package br.com.ec.controller.managedbean;
import java.io.Serializable;
import java.util.Date;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import br.com.ec.core.consulta.ParametrosConsulta;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.DataUtils;
import br.com.ec.domain.dto.DashboardComprasDTO;
import br.com.ec.domain.model.tipos.TipoPedido;
import br.com.ec.domain.model.tipos.TipoSituacaoPedido;
import br.com.ec.domain.service.estoqueauditoria.EstoqueAuditoriaService;
import br.com.ec.domain.service.pedido.PedidoService;
import br.com.ec.domain.service.produto.ProdutoService;
import br.com.ec.web.generic.AbstractBean;
@Named
@Scope
("view")
public class DashboardComprasBean
extends AbstractBean
<DashboardComprasDTO
> implements Serializable {
private static final long serialVersionUID = 1L
;
private PedidoService pedidoService
;
private EstoqueAuditoriaService estoqueAuditoriaService
;
private DashboardComprasDTO acompanhamentoDia
;
@Inject
public DashboardComprasBean
(PedidoService pedidoService, ProdutoService produtoService, EstoqueAuditoriaService estoqueAuditoriaService
) {
this.
pedidoService = pedidoService
;
this.
estoqueAuditoriaService = estoqueAuditoriaService
;
}
@PostConstruct
private void iniciarDashboard
() {
Integer quantidePedidosPendentesAnaliseDeCompras = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
PENDENTE_ANALISE_COMPRAS.
getValor());
Integer quantidadePedidosEmCompras = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
PEDIDO_EM_COMPRAS.
getValor());
//INDICADORES
setAcompanhamentoDia
(new DashboardComprasDTO
());
getAcompanhamentoDia
().
setQuantidadePedidosPendentesAnaliseDeCompras(quantidePedidosPendentesAnaliseDeCompras
);
getAcompanhamentoDia
().
setQuantidadePedidosEmCompras(quantidadePedidosEmCompras
);
getAcompanhamentoDia
().
setQuantidadeAuditoriasAvariaTrocaDevolucaoNaoVerificadas(estoqueAuditoriaService.
quantidadeAuditoriasAvariaTrocaDevolucaoNaoVerificadas(null));
// ALERTAS
Date tresDiasAntes = DataUtils.
acrescentarDias(DataUtils.
getDataAtual(), -
3);
Integer pedidosAlertasPendentesAnaliseDeComprasComTresDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
PENDENTE_ANALISE_COMPRAS.
getValor(), tresDiasAntes, DataUtils.
getDataAtual());
Date quinzeDiasAntes = DataUtils.
acrescentarDias(DataUtils.
getDataAtual(), -
15);
Integer pedidosAlertasEmComprasComQuinzeDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
PEDIDO_EM_COMPRAS.
getValor(), quinzeDiasAntes, DataUtils.
getDataAtual());
Date seteDiasPassados = DataUtils.
acrescentarDias(DataUtils.
getDataAtual(), -
7);
Integer auditoriasAvariaTrocaDevolucaoPendentesComSeteDiasPassados = estoqueAuditoriaService.
quantidadeAuditoriasAvariaTrocaDevolucaoNaoVerificadas(seteDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosPendentesAnaliseDeCompras(pedidosAlertasPendentesAnaliseDeComprasComTresDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosEmCompras(pedidosAlertasEmComprasComQuinzeDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAuditoriasAvariaTrocaDevolucaoNaoVerificadas(auditoriasAvariaTrocaDevolucaoPendentesComSeteDiasPassados
);
}
@
Override
public void preCarregamento
() {
entidade =
new DashboardComprasDTO
();
parametrosConsulta =
new ParametrosConsulta
<DashboardComprasDTO
>();
parametrosConsulta.
setEntidade(entidade
);
}
@
Override
public void limparEntidade
() {
DashboardComprasDTO consolidado =
new DashboardComprasDTO
();
setEntidade
(consolidado
);
}
@
Override
public GenericService
<DashboardComprasDTO
> getService
() {
return null;
}
@
Override
public DashboardComprasDTO getEntidade
() {
return entidade
;
}
@
Override
public DashboardComprasDTO getId
() {
return getEntidade
();
}
public DashboardComprasDTO getAcompanhamentoDia
() {
return acompanhamentoDia
;
}
public void setAcompanhamentoDia
(DashboardComprasDTO consolidadoDia
) {
this.
acompanhamentoDia = consolidadoDia
;
}
}