Subversion Repositories Integrator Subversion

Rev

Rev 339 | 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;
339 espaco 5
import java.util.Date;
106 espaco 6
 
7
import javax.inject.Inject;
8
import javax.inject.Named;
9
 
10
import org.primefaces.model.StreamedContent;
11
import org.springframework.context.annotation.Scope;
12
 
13
import br.com.ec.controller.managedbean.consultademanda.PedidoConsultaPorDemanda;
195 espaco 14
import br.com.ec.core.exception.NegocioException;
15
import br.com.ec.core.generic.GenericService;
16
import br.com.ec.core.util.DataUtils;
17
import br.com.ec.core.util.StringUtil;
18
import br.com.ec.core.util.VerificadorUtil;
106 espaco 19
import br.com.ec.domain.dto.ParametrosConsultaPedidoDTO;
20
import br.com.ec.domain.dto.PedidoDTO;
21
import br.com.ec.domain.model.Cliente;
22
import br.com.ec.domain.model.Loja;
23
import br.com.ec.domain.model.Pedido;
24
import br.com.ec.domain.model.PedidoHistorico;
25
import br.com.ec.domain.model.PedidoProduto;
26
import br.com.ec.domain.model.Produto;
448 blopes 27
import br.com.ec.domain.model.Usuario;
106 espaco 28
import br.com.ec.domain.model.tipos.TipoPedido;
29
import br.com.ec.domain.model.tipos.TipoSituacaoPedido;
30
import br.com.ec.domain.model.tipos.TipoSituacaoPedidoResumido;
31
import br.com.ec.domain.service.cliente.ClienteService;
32
import br.com.ec.domain.service.loja.LojaService;
33
import br.com.ec.domain.service.pedido.PedidoService;
34
import br.com.ec.domain.service.produto.ProdutoService;
35
import br.com.ec.domain.service.usuario.UsuarioService;
195 espaco 36
import br.com.ec.web.exception.VerificadorLancamentoException;
37
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
38
import br.com.ec.web.exception.VerificadorLancamentoException.CommandRelatorioStreamedContent;
39
import br.com.ec.web.generic.AbstractBean;
40
import br.com.ec.web.message.LancadorMensagem;
41
import br.com.ec.web.util.TipoOperacao;
106 espaco 42
 
43
@Named
44
@Scope("view")
45
public class PedidoBean extends AbstractBean<Pedido> implements Serializable {
46
 
47
        private static final long serialVersionUID = 1L;
48
 
49
        private PedidoConsultaPorDemanda lazy;
50
        private Loja lojaSelecionada;
51
        private String senhaUsuario;
52
        private String cpfCliente;
53
        private String codigoProduto;
54
        private Produto produtoSelecionado;
55
        private Double valorProdutoSelecionado;
56
        private Integer quantidadeProdutoSelecionado;
57
        private String observacaoProdutoSelecionado;
58
        private PedidoHistorico pedidoHistorico;
59
        private PedidoDTO pedidoParaImpressao;
60
 
61
        private PedidoService pedidoService;
62
        private ClienteService clienteService;
63
        private ProdutoService produtoService;
64
        private UsuarioService usuarioService;
65
        private LojaService lojaService;
66
 
67
        @Inject
68
        public PedidoBean(PedidoConsultaPorDemanda lazy, PedidoService pedidoService, ClienteService clienteService,
69
                        ProdutoService produtoService, UsuarioService usuarioService, LojaService lojaService) {
70
                this.lazy = lazy;
71
                this.pedidoService = pedidoService;
72
                this.clienteService = clienteService;
73
                this.produtoService = produtoService;
74
                this.usuarioService = usuarioService;
75
                this.lojaService = lojaService;
76
        }
77
 
78
        @Override
79
        public void preCarregamento() {
80
                limparEntidade();
81
                preencherLojaPeloParametro();
82
                limparParametros();
83
                prepararConsultaDemanda();
84
        }
85
 
86
        @Override
87
        public void preConsultar() {
88
                setTipoOperacao(TipoOperacao.CONSULTAR);
89
                prepararConsultaDemanda();
90
        }
91
 
92
        @Override
93
        public void preCadastrar() {
94
                super.preCadastrar();
95
                getEntidade().setLoja(getLojaSelecionada());
96
                entidade.setTipoPedido(TipoPedido.RESERVA.getValor());
97
        }
98
 
99
        private void preencherLojaPeloParametro() {
100
                if (VerificadorUtil.naoEstaNulo(getParametro("sequencialLoja"))) {
101
                        setLojaSelecionada(lojaService.consultarPorId(new Loja(new Long(getParametro("sequencialLoja").toString()))));
102
                        getEntidade().setLoja(getLojaSelecionada());
103
                }
104
        }
105
 
106
        @Override
107
        public void preAlterar(Pedido pedido) {
108
                pedido = pedidoService.consultarPedidoCompleto(pedido);
109
                super.preAlterar(pedido);
110
        }
111
 
112
        public void prepararAtendimento(Pedido pedido) {
113
                limparEntidade();
114
                setTipoOperacao(TipoOperacao.REALIZAR);
115
                pedido = pedidoService.consultarPedidoCompleto(pedido);
116
                setEntidade(pedido);
117
                PedidoHistorico pedidoHistorico = new PedidoHistorico();
118
                pedidoHistorico.setTipoSituacao(pedido.getTipoSituacao());
119
                pedidoHistorico.setDataHistorico(DataUtils.getDataAtual());
120
                pedidoHistorico.setPedido(pedido);
121
                setPedidoHistorico(pedidoHistorico);
122
                prepararImpressao(pedido);
123
        }
124
 
125
        @Override
126
        public void limparEntidade() {
127
                entidade = new Pedido();
128
                setSenhaUsuario("");
129
                setQuantidadeProdutoSelecionado(1);
130
        }
131
 
132
        public void limparParametros() {
133
                parametrosConsulta = new ParametrosConsultaPedidoDTO();
134
                parametrosConsulta.setEntidade(entidade);
135
                ((ParametrosConsultaPedidoDTO)parametrosConsulta).setAtendido(false);
136
        }
137
 
138
        @Override
139
        public GenericService<Pedido> getService() {
140
                return pedidoService;
141
        }
142
 
143
        @Override
144
        public Pedido getEntidade() {
145
                return entidade;
146
        }
147
 
148
        @Override
149
        public Pedido getId() {
150
                return getEntidade();
151
        }
152
 
153
        public PedidoConsultaPorDemanda getLazy() {
154
                return lazy;
155
        }
156
        public void setLazy(PedidoConsultaPorDemanda lazy) {
157
                this.lazy = lazy;
158
        }
159
        public void prepararConsultaDemanda() {
160
                lazy.setarParametrosConsulta(getParametrosConsulta());
161
        }
162
 
163
        public Loja getLojaSelecionada() {
164
                return lojaSelecionada;
165
        }
166
        public void setLojaSelecionada(Loja lojaSelecionada) {
167
                this.lojaSelecionada = lojaSelecionada;
168
        }
169
 
170
        public String getSenhaUsuario() {
171
                return senhaUsuario;
172
        }
173
        public void setSenhaUsuario(String senhaUsuario) {
174
                this.senhaUsuario = senhaUsuario;
175
        }
176
 
177
        public String getCpfCliente() {
178
                return VerificadorUtil.naoEstaNulo(cpfCliente)? cpfCliente.replace(".", "").replace("-", "") : cpfCliente;
179
        }
180
        public void setCpfCliente(String cpfCliente) {
181
                this.cpfCliente = cpfCliente;
182
        }
183
 
184
        public String getCodigoProduto() {
185
                return codigoProduto;
186
        }
187
        public void setCodigoProduto(String codigoProduto) {
188
                this.codigoProduto = codigoProduto;
189
        }
190
 
191
        public Produto getProdutoSelecionado() {
192
                return produtoSelecionado;
193
        }
194
        public void setProdutoSelecionado(Produto produtoSelecionado) {
195
                this.produtoSelecionado = produtoSelecionado;
196
        }
197
 
198
        public Double getValorProdutoSelecionado() {
199
                return valorProdutoSelecionado;
200
        }
201
        public void setValorProdutoSelecionado(Double valorProdutoSelecionado) {
202
                this.valorProdutoSelecionado = valorProdutoSelecionado;
203
        }
204
 
205
        public Integer getQuantidadeProdutoSelecionado() {
206
                return quantidadeProdutoSelecionado;
207
        }
208
        public void setQuantidadeProdutoSelecionado(Integer quantidadeProdutoSelecionado) {
209
                this.quantidadeProdutoSelecionado = quantidadeProdutoSelecionado;
210
        }
211
 
212
        public String getObservacaoProdutoSelecionado() {
213
                return observacaoProdutoSelecionado;
214
        }
215
        public void setObservacaoProdutoSelecionado(String observacaoProdutoSelecionado) {
216
                this.observacaoProdutoSelecionado = StringUtil.setarUpperCaseComTrim(observacaoProdutoSelecionado);
217
        }
218
 
219
        public PedidoHistorico getPedidoHistorico() {
220
                return pedidoHistorico;
221
        }
222
        public void setPedidoHistorico(PedidoHistorico pedidoHistorico) {
223
                this.pedidoHistorico = pedidoHistorico;
224
        }
225
 
226
        public TipoSituacaoPedido[] getTiposSituacaoPedido() {
227
                return TipoSituacaoPedido.values();
228
        }
229
 
230
        public TipoSituacaoPedidoResumido[] getTiposSituacaoPedidoResumido() {
231
                return TipoSituacaoPedidoResumido.values();
232
        }
233
 
234
        public TipoPedido[] getTiposPedido() {
235
                return TipoPedido.values();
236
        }
237
 
238
        public PedidoDTO getPedidoParaImpressao() {
239
                return pedidoParaImpressao;
240
        }
241
        public void setPedidoParaImpressao(PedidoDTO pedidoParaImpressao) {
242
                this.pedidoParaImpressao = pedidoParaImpressao;
243
        }
244
        public Long getSequencialDoPedidoParaImpressao() {
245
                return VerificadorUtil.naoEstaNulo(getPedidoParaImpressao())? getPedidoParaImpressao().getSequencial() : null;
246
        }
247
 
248
        /***************************************************************/
249
 
250
        @Override
251
        public void cadastrar() {
252
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
253
                        public void execute() {
254
                                setEntidade(pedidoService.adicionarPedido(getEntidade(), senhaUsuario));
255
                                prepararImpressao(getEntidade());
256
                                LancadorMensagem.lancarSucesso("PEDIDO ADICIONADO COM SUCESSO: " + getEntidade().getSequencial());
257
                                limparEntidade();
258
                                getEntidade().setTipoPedido(TipoPedido.RESERVA.getValor());
259
                                getEntidade().setLoja(getLojaSelecionada());
260
                        }
261
                });
262
        }
263
 
264
        public PedidoDTO prepararImpressao(Pedido pedido) {
265
                PedidoDTO pedidoParaImpressao = new PedidoDTO();
266
                pedidoParaImpressao.preencher(pedido);
267
                setPedidoParaImpressao(pedidoParaImpressao);
268
                return pedidoParaImpressao;
269
        }
270
 
271
        @Override
272
        public void alterar() {
273
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
274
                        public void execute() {
448 blopes 275
                                Usuario usuarioAtendimento = usuarioService.consultarUsuarioPorSenha(senhaUsuario);
276
                                usuarioService.naoPermitirPerfilLoja(usuarioAtendimento);
277
 
106 espaco 278
                                getEntidade().setDataUltimaAlteracaoSituacao(DataUtils.getDataAtual());
448 blopes 279
                                getEntidade().setUsuarioAtendimento(usuarioAtendimento);
106 espaco 280
                                if (VerificadorUtil.naoEstaNuloOuVazio(getEntidade().getProdutos())) {
281
                                        Produto primeiroProduto = getEntidade().getProdutos().get(0).getProduto();
282
                                        if (primeiroProduto.getCodigo().equals("000000") && getEntidade().getProdutos().size() > 1) {
283
                                                primeiroProduto = getEntidade().getProdutos().get(1).getProduto();
284
                                        }
285
                                        getEntidade().setModelo(primeiroProduto.getModelo());
286
                                        getEntidade().setGenero(primeiroProduto.getGenero());
287
                                }
288
                                alterar(getEntidade());
289
                        }
290
                });
291
        }
292
 
293
        public void atenderPedido() {
294
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
295
                        public void execute() {
448 blopes 296
                                Usuario usuarioAtendimento = usuarioService.consultarUsuarioPorSenha(senhaUsuario);
297
                                usuarioService.naoPermitirPerfilLoja(usuarioAtendimento);
298
 
106 espaco 299
                                getEntidade().setDataUltimaAlteracaoSituacao(DataUtils.getDataAtual());
300
                                getEntidade().setTipoSituacao(getPedidoHistorico().getTipoSituacao());
448 blopes 301
                                getEntidade().setUsuarioAtendimento(usuarioAtendimento);
106 espaco 302
                                getPedidoHistorico().setUsuario(getEntidade().getUsuarioAtendimento());
303
                                if (VerificadorUtil.estaNulo(getEntidade().getHistorico())) {
304
                                        getEntidade().setHistorico(new ArrayList<PedidoHistorico>());
305
                                }
306
                                getEntidade().getHistorico().add(getPedidoHistorico());
307
                                pedidoService.alterar(getEntidade());
308
                                LancadorMensagem.lancarSucesso("ATENDIMENTO REALIZADO COM SUCESSO: " + getEntidade().getSequencial());
309
                                preConsultar();
310
                        }
311
                });
312
        }
313
 
314
        public void excluirPedido(final Pedido pedido) {
315
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
316
                        public void execute() {
317
                                Pedido pedidoParaExcluir = pedidoService.consultarPorId(pedido);
318
                                pedidoService.excluirHistoricosDoPedido(pedidoParaExcluir);
319
                                pedidoService.excluir(pedidoParaExcluir);
320
                                LancadorMensagem.lancarSucesso("PEDIDO EXCLUÍDO COM SUCESSO!");
321
                        }
322
                });
323
        }
324
 
325
        public void selecionarCliente(final Cliente cliente) {
326
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
327
                        public void execute() {
328
                                cliente.setAtivo(true);
329
                                clienteService.alterar(cliente);
330
                                getEntidade().setCliente(clienteService.consultarClientePorCpfCnpj(cliente.getCpfCnpj()));
331
                                getEntidade().setObservacao(getEntidade().getObservacao() + "\n" + getEntidade().getCliente().getEndereco());
332
                                setCpfCliente(null);
333
                                adicionandoParametroArgsConfirmandoAcao(true);
334
                        }
335
                });
336
        }
337
 
338
        public void retirarCliente() {
339
                getEntidade().setCliente(null);
340
        }
341
 
342
        public void consultarProduto() {
343
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
344
                        public void execute() {
345
                                Produto produtoSelecionado = produtoService.consultarProdutoPorCodigoOuCodigoEAN(getCodigoProduto());
346
                                if (VerificadorUtil.naoEstaNulo(produtoSelecionado)) {
347
                                        setObservacaoProdutoSelecionado("");
348
                                        setQuantidadeProdutoSelecionado(1);
349
                                        setProdutoSelecionado(produtoSelecionado);
350
                                        if (VerificadorUtil.naoEstaNulo(produtoSelecionado.getValorVarejoPromocional())) {
351
                                                setValorProdutoSelecionado(produtoSelecionado.getValorVarejoPromocional());
352
                                        } else {
353
                                                setValorProdutoSelecionado(produtoSelecionado.getValorVarejo());
354
                                        }
355
                                }
356
                        }
357
                });
358
        }
359
 
360
        public void selecionarProduto() {
361
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
362
                        public void execute() {
363
                                if (VerificadorUtil.estaNulo(getEntidade().getProdutos())) {
364
                                        getEntidade().setProdutos(new ArrayList<PedidoProduto>());
365
                                }
366
                                PedidoProduto pedidoProduto = new PedidoProduto();
367
                                pedidoProduto.setPedido(getEntidade());
368
                                pedidoProduto.setProduto(getProdutoSelecionado());
369
                                if (getEntidade().getProdutos().contains(pedidoProduto)) {
370
                                        throw new NegocioException("PRODUTO JÁ ADICIONADO");
371
                                }
372
                                pedidoProduto.setValor(getValorProdutoSelecionado());
373
                                pedidoProduto.setQuantidade(getQuantidadeProdutoSelecionado());
374
                                pedidoProduto.setObservacao(getObservacaoProdutoSelecionado());
375
                                getEntidade().getProdutos().add(pedidoProduto);
376
                                setCodigoProduto("");
377
                                getEntidade().setModelo(produtoSelecionado.getModelo());
378
                                getEntidade().setGenero(produtoSelecionado.getGenero());
379
                                LancadorMensagem.lancarSucesso("PRODUTO ADICIONADO COM SUCESSO");
380
                        }
381
                });
382
        }
383
 
384
        public void retirarProduto(final PedidoProduto pedidoProduto) {
385
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
386
                        public void execute() {
387
                                getEntidade().getProdutos().remove(pedidoProduto);
388
                                setCodigoProduto("");
389
                                LancadorMensagem.lancarSucesso("PRODUTO RETIRADO COM SUCESSO");
390
                        }
391
                });
392
        }
393
 
394
        public void solicitarCompra() {
395
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
396
                        public void execute() {
397
                                getEntidade().setDataSolicitadoParaComprar(DataUtils.getDataAtual());
398
                                pedidoService.alterar(getEntidade());
399
                                LancadorMensagem.lancarSucesso("PEDIDO SOLICITADO PARA COMPRAR");
400
                        }
401
                });
402
        }
403
 
404
        public void retirarSolicitacaoDeCompra() {
405
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
406
                        public void execute() {
407
                                getEntidade().setDataSolicitadoParaComprar(null);
408
                                pedidoService.alterar(getEntidade());
409
                                LancadorMensagem.lancarSucesso("PEDIDO RETIRADO DA SOLICITAÇÃO DE COMPRA");
410
                        }
411
                });
412
        }
413
 
414
        public void iniciarPedidoPadrao() {
415
                entidade.setTipoPedido(TipoPedido.RESERVA.getValor());
416
        }
417
        public void iniciarPedidoAssistencia() {
418
                entidade.setTipoPedido(TipoPedido.ASSISTENCIA.getValor());
419
        }
420
 
421
        public StreamedContent downloadPlanilha() {
422
                return new VerificadorLancamentoException().verificarLancamentoException(new CommandRelatorioStreamedContent() {
423
                        @Override
424
                        public StreamedContent execute() {
425
                                return pedidoService.gerarArquivoExcel(getParametrosConsulta());
426
//                              return RelatorioUtils.gerarArquivo(arquivo, "recibo", TipoExtensao.parse(extensao).getValue());
427
                        }
428
                });
429
        }
430
 
431
}