Subversion Repositories Integrator Subversion

Rev

Rev 182 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 espaco 1
package br.com.ec.controller.managedbean;
2
 
3
import java.io.Serializable;
4
import java.util.ArrayList;
5
import java.util.Date;
6
import java.util.List;
7
 
8
import javax.inject.Inject;
9
import javax.inject.Named;
10
 
11
import org.springframework.context.annotation.Scope;
12
 
13
import br.com.ec.controller.util.UtilBean;
14
import br.com.ec.domain.dto.CockpitDTO;
15
import br.com.ec.domain.dto.RankingLojaDTO;
16
import br.com.ec.domain.dto.RankingVendedorDTO;
17
import br.com.ec.domain.model.Loja;
18
import br.com.ec.domain.model.Vendedor;
19
import br.com.ec.domain.service.loja.LojaService;
20
import br.com.ec.domain.service.venda.VendaService;
21
import br.com.ec.domain.service.vendedor.VendedorService;
22
import br.com.ec.domain.shared.ConstantesSEC;
23
import br.edu.cesmac.core.generic.GenericService;
24
import br.edu.cesmac.core.util.DataUtils;
25
import br.edu.cesmac.core.util.StringUtil;
26
import br.edu.cesmac.core.util.VerificadorUtil;
27
import br.edu.cesmac.web.generic.AbstractBean;
28
import br.edu.cesmac.web.util.DataUtil;
29
 
30
@Named
31
@Scope("view")
32
public class CockpitBean extends AbstractBean<CockpitDTO> implements Serializable {
33
 
34
        private static final long serialVersionUID = 1L;
35
 
36
        private VendaService vendaService;
37
        private VendedorService vendedorService;
38
        private LojaService lojaService;
39
        private Date dataInicial;
40
        private Date dataFinal;
41
 
42
        private Double percentualVendidoMesAtual;
43
        private Double percentualPercorridoMesAtual;
44
 
45
        private Loja lojaParcial;
46
        private String parcialEmTexto;
47
 
48
        @Inject
49
        public CockpitBean(VendaService vendaService, VendedorService vendedorService, LojaService lojaService) {
50
                this.vendaService = vendaService;
51
                this.vendedorService = vendedorService;
52
                this.lojaService = lojaService;
53
        }
54
 
55
        @Override
56
        public void preCarregamento() {
57
                setDataInicial(DataUtils.getPrimeiroDiaDoMesAtual());
58
                setDataFinal(DataUtils.getUltimoDiaDoMesAtual());
59
                preencherPercentuais();
60
        }
61
 
62
        @Override
63
        public void limparEntidade() {
64
                setEntidade(new CockpitDTO());
65
        }
66
 
67
        @Override
68
        public GenericService<CockpitDTO> getService() {
69
                return null;
70
        }
71
 
72
        @Override
73
        public CockpitDTO getEntidade() {
74
                return entidade;
75
        }
76
 
77
        @Override
78
        public CockpitDTO getId() {
79
                return getEntidade();
80
        }
81
 
82
        public String estiloValor(Double valor) {
83
                return UtilBean.estiloValor(valor);
84
        }
85
 
86
        public Date getDataInicial() {
87
                return dataInicial;
88
        }
89
        public void setDataInicial(Date dataInicial) {
90
                this.dataInicial = dataInicial;
91
        }
92
 
93
        public Date getDataFinal() {
94
                return dataFinal;
95
        }
96
        public void setDataFinal(Date dataFinal) {
97
                this.dataFinal = dataFinal;
98
        }
99
 
100
        public Double getPercentualVendidoMesAtual() {
101
                return percentualVendidoMesAtual;
102
        }
103
        public void setPercentualVendidoMesAtual(Double percentualVendidoMesAtual) {
104
                this.percentualVendidoMesAtual = percentualVendidoMesAtual;
105
        }
106
 
107
        public Double getPercentualPercorridoMesAtual() {
108
                return percentualPercorridoMesAtual;
109
        }
110
        public void setPercentualPercorridoMesAtual(Double percentualPercorridoMesAtual) {
111
                this.percentualPercorridoMesAtual = percentualPercorridoMesAtual;
112
        }
113
 
114
        public Loja getLojaParcial() {
115
                return lojaParcial;
116
        }
117
        public void setLojaParcial(Loja lojaParcial) {
118
                this.lojaParcial = lojaParcial;
119
        }
120
 
121
        public String getParcialEmTexto() {
122
                return parcialEmTexto;
123
        }
124
        public void setParcialEmTexto(String parcialEmTexto) {
125
                this.parcialEmTexto = parcialEmTexto;
126
        }
127
 
128
        public void consultarRankingVendedores() {
129
                if (VerificadorUtil.estaNulo(getEntidade())) {
130
                        entidade = new CockpitDTO();
131
                }
132
                List<RankingVendedorDTO> rankingVendedor = new ArrayList<RankingVendedorDTO>();
133
                List<RankingVendedorDTO> rankingVendedorVivo = new ArrayList<RankingVendedorDTO>();
134
                List<RankingVendedorDTO> ranking = vendaService.consultarRankingVendedores(dataInicial, dataFinal, true);
135
                for (RankingVendedorDTO vendedor : ranking) {
136
                        if (vendedor.getValorTotalVendido() > new Double(0.0)) {
137
                                rankingVendedor.add(vendedor);
138
                        }
139
                        if (vendedor.getValorTotalVendidoVivo() > new Double(0.0)) {
140
                                rankingVendedorVivo.add(vendedor);
141
                        }
142
                }
143
                entidade.setRankingVendedores(rankingVendedor);
144
                entidade.setRankingVendedoresVivo(rankingVendedorVivo);
145
        }
146
 
147
        public void consultarRankingLojas() {
148
                if (VerificadorUtil.estaNulo(getEntidade())) {
149
                        entidade = new CockpitDTO();
150
                }
151
                entidade.setRankingLojas(vendaService.consultarRankingLojas(getDataInicial(), getDataFinal()));
152
                entidade.setRankingLojasExtras(vendaService.consultarRankingLojasExtras(getDataInicial(), getDataFinal()));
153
                Double valorTotalVendido = new Double(0.0);
154
                for (RankingLojaDTO rankingLoja : entidade.getRankingLojas()) {
155
                        valorTotalVendido = valorTotalVendido + rankingLoja.getValorTotalVendido();
156
                }
157
                setPercentualVendidoMesAtual(new Double(valorTotalVendido/entidade.getValorTotalMeta()));
158
        }
159
 
160
        public void consultarRankingPromocaoInterna() {
161
                if (VerificadorUtil.estaNulo(getEntidade())) {
162
                        entidade = new CockpitDTO();
163
                }
164
                entidade.setRankingPromocaoInterna(vendaService.consultarRankingPromocaoInterna(getDataInicial(), getDataFinal()));
165
        }
166
 
167
        private void preencherPercentuais() {
168
                Integer ultimoDiaDoMes = DataUtils.getUltimoDiaDoMesAtual().getDate();
169
                Integer diaAtual = DataUtils.getDataAtual().getDate();
170
                setPercentualPercorridoMesAtual(new Double(100*diaAtual/ultimoDiaDoMes));
171
        }
172
 
173
        public void consultarRankings() {
174
                consultarRankingVendedores();
175
                consultarRankingLojas();
176
                consultarRankingPromocaoInterna();
177
        }
178
 
179
        public String produtosPromocaoInterna() {
180
                return ConstantesSEC.ProdutosPromocaoInterna.PRODUTOS.replace("'", "");
181
        }
182
 
183
        public void consultarParciais() {
184
                StringBuilder parcial = new StringBuilder();
185
                List<Loja> lojas = new ArrayList<Loja>();
186
                if (VerificadorUtil.estaNulo(getLojaParcial())) {
187
                        lojas.addAll(lojaService.listarLojasAtivas());
188
                } else {
189
                        lojas.add(getLojaParcial());
190
                }
191
                for (Loja loja : lojas) {
192
                        parcial.append("PARCIAL DE ");
193
                        parcial.append(DataUtil.retornarDataFormatadaEmFormatoTexto("dd/MM", getDataInicial()));
194
                        parcial.append(" A ");
195
                        parcial.append(DataUtil.retornarDataFormatadaEmFormatoTexto("dd/MM", getDataFinal()));
196
                        parcial.append(": ");
197
                        parcial.append(loja.getDescricao());
198
                        parcial.append("\n");
199
                        List<Vendedor> vendedores = vendedorService.consultarVendedoresColaboradoresAtivos(loja);
200
                        for (Vendedor vendedor : vendedores) {
201
                                for (RankingVendedorDTO rankingVendedor : getEntidade().getRankingVendedores()) {
202
                                        if (loja.equals(vendedor.getLoja()) && vendedor.equals(rankingVendedor.getVendedor())) {
203
                                                parcial.append("\n");
204
                                                parcial.append(rankingVendedor.getVendedor().getNome());
205
                                                parcial.append(" = ");
206
                                                if (VerificadorUtil.naoEstaNulo(rankingVendedor.getPercentualMetaMensal())) {
207
                                                        parcial.append(StringUtil.formatarPercentual(rankingVendedor.getPercentualMetaMensal()));
208
                                                } else {
209
                                                        parcial.append("0");
210
                                                }
211
                                                parcial.append(" (TICKET MÉDIO: R$");
212
                                                parcial.append(StringUtil.formatarValor(rankingVendedor.getTicketMedio()));
213
                                                parcial.append(", CONTAGENS: ");
214
                                                parcial.append(rankingVendedor.getQuantidadeContagens());
215
                                                parcial.append(", PEDIDOS: ");
216
                                                parcial.append(rankingVendedor.getQuantidadePedidos());
217
                                                parcial.append(", PEDIDOS INVÁLIDOS: ");
218
                                                parcial.append(rankingVendedor.getQuantidadePedidosInvalidos());
219
                                                parcial.append(", ATENDIMENTOS: ");
220
                                                parcial.append(rankingVendedor.getQuantidadeAtendimentos());
221
                                                parcial.append(")");
222
                                        }
223
                                }
224
                        }
225
                        parcial.append("\n\n");
226
                        for (RankingLojaDTO rankingLoja : getEntidade().getRankingLojas()) {
227
                                if (loja.equals(rankingLoja.getLoja())) {
228
                                        parcial.append("META DA LOJA: ");
229
                                        parcial.append(StringUtil.formatarPercentual(rankingLoja.getPercentualMetaMensal()));
230
                                }
231
                        }
232
                        parcial.append("\n");
233
                        parcial.append("META IDEAL: ATÉ DIA 10: 33%. ATÉ DIA 20: 66%");
234
                        if (VerificadorUtil.estaNulo(getLojaParcial())) {
235
                                parcial.append("\n\n");
236
                        }
237
                }
238
                setParcialEmTexto(parcial.toString());
239
        }
240
 
241
}