Subversion Repositories Integrator Subversion

Rev

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