package br.com.ec.controller.managedbean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
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.core.util.VerificadorUtil;
import br.com.ec.domain.dto.FluxoDeCaixaDTO;
import br.com.ec.domain.dto.QuadroResumosDTO;
import br.com.ec.domain.dto.RankingLojaDTO;
import br.com.ec.domain.model.AvaliacaoLoja;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.service.acompanhamento.AcompanhamentoService;
import br.com.ec.domain.service.avaliacaoloja.AvaliacaoLojaService;
import br.com.ec.domain.service.loja.LojaService;
import br.com.ec.domain.service.venda.VendaService;
import br.com.ec.web.generic.AbstractBean;
@Named
@Scope
("view")
public class QuadroResumoBean
extends AbstractBean
<QuadroResumosDTO
> implements Serializable {
private static final long serialVersionUID = 1L
;
private Date dataInicial
;
private Date dataFinal
;
private List<RankingLojaDTO
> rankingLojas
;
private FluxoDeCaixaDTO fluxoMatriz
;
private List<FluxoDeCaixaDTO
> fluxosDeCaixa
;
private VendaService vendaService
;
private LojaService lojaService
;
private AcompanhamentoService acompanhamentoService
;
private AvaliacaoLojaService avaliacaoLojaService
;
@Inject
public QuadroResumoBean
(VendaService vendaService, LojaService lojaService, AcompanhamentoService acompanhamentoService,
AvaliacaoLojaService avaliacaoLojaService
) {
this.
vendaService = vendaService
;
this.
lojaService = lojaService
;
this.
acompanhamentoService = acompanhamentoService
;
this.
avaliacaoLojaService = avaliacaoLojaService
;
}
@
Override
public void preCarregamento
() {
try {
if (VerificadorUtil.
estaNulo(parametrosConsulta
)) {
entidade =
new QuadroResumosDTO
();
parametrosConsulta =
new ParametrosConsulta
<QuadroResumosDTO
>();
parametrosConsulta.
setEntidade(entidade
);
}
setDataInicial
(DataUtils.
getPrimeiroDiaDoMesAtual());
setDataFinal
(DataUtils.
getUltimoDiaDoMesAtual());
consultarQuadroResumos
();
} catch (Exception e
) {
e.
printStackTrace();
}
}
@
Override
public GenericService
<QuadroResumosDTO
> getService
() {
return null;
}
@
Override
public void limparEntidade
() {
setEntidade
(new QuadroResumosDTO
());
}
@
Override
public QuadroResumosDTO getEntidade
() {
return entidade
;
}
@
Override
public QuadroResumosDTO getId
() {
return getEntidade
();
}
public Date getDataInicial
() {
return dataInicial
;
}
public void setDataInicial
(Date dataInicial
) {
this.
dataInicial = dataInicial
;
}
public Date getDataFinal
() {
return dataFinal
;
}
public void setDataFinal
(Date dataFinal
) {
this.
dataFinal = dataFinal
;
}
public List<RankingLojaDTO
> getRankingLojas
() {
return rankingLojas
;
}
public void setRankingLojas
(List<RankingLojaDTO
> rankingLojas
) {
this.
rankingLojas = rankingLojas
;
}
public FluxoDeCaixaDTO getFluxoMatriz
() {
return fluxoMatriz
;
}
public void setFluxoMatriz
(FluxoDeCaixaDTO fluxoMatriz
) {
this.
fluxoMatriz = fluxoMatriz
;
}
public List<FluxoDeCaixaDTO
> getFluxosDeCaixa
() {
return fluxosDeCaixa
;
}
public void setFluxosDeCaixa
(List<FluxoDeCaixaDTO
> fluxosDeCaixa
) {
this.
fluxosDeCaixa = fluxosDeCaixa
;
}
/********************************************************************/
public void consultarQuadroResumos
() {
setRankingLojas
(vendaService.
consultarRankingLojasCompleto(getDataInicial
(), getDataFinal
()));
}
public Double valorTotalVendas
() {
Double valorTotal =
0.0;
for (RankingLojaDTO rankingLoja : getRankingLojas
()) {
if (VerificadorUtil.
naoEstaNulo(rankingLoja.
getValorTotalVendido())) {
if (rankingLoja.
getValorTotalVendido() > 0.0) {
valorTotal = valorTotal + rankingLoja.
getValorTotalVendido();
}
}
}
return valorTotal
;
}
public Double valorTotalMetas
() {
Double valorTotal =
0.0;
for (RankingLojaDTO rankingLoja : getRankingLojas
()) {
if (VerificadorUtil.
naoEstaNulo(rankingLoja.
getValorMetaMensal())) {
if (rankingLoja.
getValorMetaMensal() > 0.0) {
valorTotal = valorTotal + rankingLoja.
getValorMetaMensal();
}
}
}
return valorTotal
;
}
public Double valorMedioTicketMedio
() {
Double valorTotal =
0.0;
Integer quantidadeSomas =
0;
for (RankingLojaDTO rankingLoja : getRankingLojas
()) {
if (VerificadorUtil.
naoEstaNulo(rankingLoja.
valorTicketMedio())) {
if (rankingLoja.
valorTicketMedio() > 0.0) {
quantidadeSomas++
;
valorTotal = valorTotal + rankingLoja.
valorTicketMedio();
}
}
}
return valorTotal / quantidadeSomas
;
}
public Integer quantidadeTotalAtendimentos
() {
Integer valorTotal =
0;
for (RankingLojaDTO rankingLoja : getRankingLojas
()) {
if (VerificadorUtil.
naoEstaNulo(rankingLoja.
getQuantidadeAtendimentos())) {
if (rankingLoja.
getQuantidadeAtendimentos() > 0.0) {
valorTotal = valorTotal + rankingLoja.
getQuantidadeAtendimentos();
}
}
}
return valorTotal
;
}
public Integer quantidadeTotalPedidos
() {
Integer valorTotal =
0;
for (RankingLojaDTO rankingLoja : getRankingLojas
()) {
if (VerificadorUtil.
naoEstaNulo(rankingLoja.
getQuantidadePedidos())) {
if (rankingLoja.
getQuantidadePedidos() > 0.0) {
valorTotal = valorTotal + rankingLoja.
getQuantidadePedidos();
}
}
}
return valorTotal
;
}
public Integer quantidadeTotalPedidosInvalidos
() {
Integer valorTotal =
0;
for (RankingLojaDTO rankingLoja : getRankingLojas
()) {
if (VerificadorUtil.
naoEstaNulo(rankingLoja.
getQuantidadePedidosInvalidos())) {
if (rankingLoja.
getQuantidadePedidosInvalidos() > 0.0) {
valorTotal = valorTotal + rankingLoja.
getQuantidadePedidosInvalidos();
}
}
}
return valorTotal
;
}
public Integer quantidadeTotalAvarias
() {
Integer valorTotal =
0;
for (RankingLojaDTO rankingLoja : getRankingLojas
()) {
if (VerificadorUtil.
naoEstaNulo(rankingLoja.
getQuantidadeAvarias())) {
if (rankingLoja.
getQuantidadeAvarias() > 0.0) {
valorTotal = valorTotal + rankingLoja.
getQuantidadeAvarias();
}
}
}
return valorTotal
;
}
public Integer quantidadeTotalTrocas
() {
Integer valorTotal =
0;
for (RankingLojaDTO rankingLoja : getRankingLojas
()) {
if (VerificadorUtil.
naoEstaNulo(rankingLoja.
getQuantidadeTrocas())) {
if (rankingLoja.
getQuantidadeTrocas() > 0.0) {
valorTotal = valorTotal + rankingLoja.
getQuantidadeTrocas();
}
}
}
return valorTotal
;
}
public Double valorTotalPercentualDescontos
() {
Double valorTotal = valorTotalDescontos
();
if (valorTotal
> 0.0) {
return (valorTotal
* 100) / valorTotalVendas
();
}
return 0.0;
}
public Double valorTotalDescontos
() {
Double valorTotal =
0.0;
for (RankingLojaDTO rankingLoja : getRankingLojas
()) {
if (VerificadorUtil.
naoEstaNulo(rankingLoja.
getValorTotalDescontos())) {
if (rankingLoja.
getValorTotalDescontos() > 0.0) {
valorTotal = valorTotal + rankingLoja.
getValorTotalDescontos();
}
}
}
return valorTotal
;
}
public Double valorTotalCustoProdutosVendidos
() {
Double valorTotal =
0.0;
for (RankingLojaDTO rankingLoja : getRankingLojas
()) {
if (VerificadorUtil.
naoEstaNulo(rankingLoja.
getCustoProdutosVendidos())) {
if (rankingLoja.
getCustoProdutosVendidos() > 0.0) {
valorTotal = valorTotal + rankingLoja.
getCustoProdutosVendidos();
}
}
}
return valorTotal
;
}
public Integer quantidadeTotalPatrimonioAtual
() {
Integer valorTotal =
0;
for (RankingLojaDTO rankingLoja : getRankingLojas
()) {
if (VerificadorUtil.
naoEstaNulo(rankingLoja.
getQuantidadeTotalEstoque())) {
if (rankingLoja.
getQuantidadeTotalEstoque() > 0.0) {
valorTotal = valorTotal + rankingLoja.
getQuantidadeTotalEstoque();
}
}
}
return valorTotal
;
}
public Double valorTotalPatrimonioAtual
() {
Double valorTotal =
0.0;
for (RankingLojaDTO rankingLoja : getRankingLojas
()) {
if (VerificadorUtil.
naoEstaNulo(rankingLoja.
getValorTotalEstoque())) {
if (rankingLoja.
getValorTotalEstoque() > 0.0) {
valorTotal = valorTotal + rankingLoja.
getValorTotalEstoque();
}
}
}
return valorTotal
;
}
public void consultarQuadroResumosOld
() {
fluxoMatriz =
new FluxoDeCaixaDTO
();
fluxoMatriz.
setDataInicial(getDataInicial
());
fluxoMatriz.
setDataFinal(getDataFinal
());
fluxoMatriz = acompanhamentoService.
consultarFluxoDeCaixa(fluxoMatriz
);
fluxosDeCaixa =
new ArrayList<FluxoDeCaixaDTO
>();
List<Loja
> lojasAtivas = lojaService.
listarLojasAtivas();
for (Loja lojaAtiva : lojasAtivas
) {
FluxoDeCaixaDTO fluxoCaixa =
new FluxoDeCaixaDTO
();
fluxoCaixa.
setCentroDeCustos(lojaAtiva
);
fluxoCaixa.
setDataInicial(getDataInicial
());
fluxoCaixa.
setDataFinal(getDataFinal
());
fluxoCaixa.
setValorMetaMensal(0.0);
fluxoCaixa.
setValorMargemContribuicao(0.0);
AvaliacaoLoja avaliacaoLoja = avaliacaoLojaService.
consultarAvaliacaoLojaPelaData(lojaAtiva, getDataFinal
());
if (VerificadorUtil.
naoEstaNulo(avaliacaoLoja
)) {
if (VerificadorUtil.
naoEstaNulo(avaliacaoLoja.
getValorMetaMensal())) {
fluxoCaixa.
setValorMetaMensal(avaliacaoLoja.
getValorMetaMensal());
}
if (VerificadorUtil.
naoEstaNulo(avaliacaoLoja.
getValorMargemContribuicao())) {
fluxoCaixa.
setValorMargemContribuicao(avaliacaoLoja.
getValorMargemContribuicao());
}
}
fluxoCaixa = acompanhamentoService.
consultarFluxoDeCaixa(fluxoCaixa
);
fluxosDeCaixa.
add(fluxoCaixa
);
}
}
public Double getValorTotalFluxo
() {
Double totalFluxo =
new Double(0);
for (FluxoDeCaixaDTO fluxoCaixa : fluxosDeCaixa
) {
if (VerificadorUtil.
naoEstaNulo(fluxoCaixa.
getValorTotalFluxo())) {
totalFluxo = totalFluxo + fluxoCaixa.
getValorTotalFluxo();
}
}
return totalFluxo
;
}
public Double getValorTotalMargemContribuicao
() {
Double totalMargemContribuicao =
new Double(0);
for (FluxoDeCaixaDTO fluxoCaixa : fluxosDeCaixa
) {
if (VerificadorUtil.
naoEstaNulo(fluxoCaixa.
getCentroDeCustos())) {
totalMargemContribuicao = totalMargemContribuicao + fluxoCaixa.
getValorMargemContribuicao();
}
}
return totalMargemContribuicao
;
}
public Double calcularValorTotalMargemContribuicao
() {
Double totalMargemContribuicao =
new Double(0);
for (FluxoDeCaixaDTO fluxoCaixa : fluxosDeCaixa
) {
totalMargemContribuicao = totalMargemContribuicao + fluxoCaixa.
calcularValorMargemContribuicao(fluxoMatriz.
getValorTotalFluxo());
}
return totalMargemContribuicao
;
}
public Double calcularValorTotalFluxoComMargemContribuicao
() {
Double totalFluxoComMargemContribuicao =
new Double(0);
for (FluxoDeCaixaDTO fluxoCaixa : fluxosDeCaixa
) {
totalFluxoComMargemContribuicao = totalFluxoComMargemContribuicao + fluxoCaixa.
calcularValorFluxoComMargemContribuicao(fluxoMatriz.
getValorTotalFluxo());
}
return totalFluxoComMargemContribuicao
;
}
public Double getValorTotalProdutosUtilizados
() {
Double totalProdutosUtilizados =
new Double(0);
for (FluxoDeCaixaDTO fluxoCaixa : fluxosDeCaixa
) {
if (VerificadorUtil.
naoEstaNulo(fluxoCaixa.
getValorTotalProdutosUtilizados())) {
totalProdutosUtilizados = totalProdutosUtilizados + fluxoCaixa.
getValorTotalProdutosUtilizados();
}
}
return totalProdutosUtilizados
;
}
}