Subversion Repositories Integrator Subversion

Rev

Rev 252 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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