Subversion Repositories Integrator Subversion

Rev

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