Subversion Repositories Integrator Subversion

Rev

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