Subversion Repositories Integrator Subversion

Rev

Rev 233 | Rev 305 | 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.List;
6
 
7
import javax.inject.Inject;
8
import javax.inject.Named;
9
 
10
import org.primefaces.context.RequestContext;
11
import org.springframework.context.annotation.Scope;
12
 
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.VerificadorUtil;
106 espaco 17
import br.com.ec.domain.dto.TransferenciaProdutoDTO;
18
import br.com.ec.domain.model.Fornecedor;
19
import br.com.ec.domain.model.Loja;
20
import br.com.ec.domain.model.NotaFiscal;
21
import br.com.ec.domain.model.NotaFiscalProduto;
22
import br.com.ec.domain.model.Produto;
23
import br.com.ec.domain.model.Transferencia;
24
import br.com.ec.domain.model.TransferenciaProduto;
25
import br.com.ec.domain.model.Usuario;
170 espaco 26
import br.com.ec.domain.model.tipos.nfe.TipoModeloNotaFiscal;
27
import br.com.ec.domain.model.tipos.nfe.TipoNotaFiscal;
106 espaco 28
import br.com.ec.domain.service.email.impl.GerenciadorEmailImpl;
29
import br.com.ec.domain.service.fornecedor.FornecedorService;
30
import br.com.ec.domain.service.loja.LojaService;
31
import br.com.ec.domain.service.notafiscal.NotaFiscalProdutoService;
32
import br.com.ec.domain.service.notafiscal.NotaFiscalService;
33
import br.com.ec.domain.service.produto.ProdutoService;
34
import br.com.ec.domain.service.produtodaloja.ProdutoLojaService;
35
import br.com.ec.domain.service.transferencia.TransferenciaService;
36
import br.com.ec.domain.service.transferenciaproduto.TransferenciaProdutoService;
37
import br.com.ec.domain.service.usuario.UsuarioService;
38
import br.com.ec.domain.shared.ConstantesSEC;
195 espaco 39
import br.com.ec.web.exception.VerificadorLancamentoException;
40
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
41
import br.com.ec.web.generic.AbstractBean;
42
import br.com.ec.web.message.LancadorMensagem;
43
import br.com.ec.web.util.TipoOperacao;
106 espaco 44
 
45
@Named
46
@Scope("view")
47
public class TransferirProdutoBean extends AbstractBean<Transferencia> implements Serializable {
48
 
49
        private static final long serialVersionUID = 1L;
50
 
51
        private Loja lojaSelecionada;
52
        private Long sequencialLojaSelecionada;
53
        private String senhaUsuarioTransferencia;
54
        private Usuario usuarioTransferencia;
55
 
56
        private String codigoProduto;
57
        private Produto produtoSelecionado;
58
        private TransferenciaProdutoDTO transferenciaProdutoSelecionadoDTO;
59
        private Integer quantidadeProdutoSelecionado;
60
 
231 espaco 61
        private String senhaUsuarioTransporte;
62
        private String senhaUsuarioReceptor;
63
 
106 espaco 64
        private TransferenciaService transferenciaService;
65
        private TransferenciaProdutoService transferenciaProdutoService;
66
        private LojaService lojaService;
67
        private UsuarioService usuarioService;
68
        private ProdutoService produtoService;
69
        private ProdutoLojaService produtoLojaService;
70
        private NotaFiscalService notaFiscalService;
71
        private NotaFiscalProdutoService notaFiscalProdutoService;
72
        private FornecedorService fornecedorService;
73
 
74
        @Inject
75
        public TransferirProdutoBean(TransferenciaService transferenciaService, TransferenciaProdutoService transferenciaProdutoService,
76
                        LojaService lojaService, UsuarioService usuarioService, ProdutoService produtoService, ProdutoLojaService produtoLojaService,
77
                        NotaFiscalService notaFiscalService, NotaFiscalProdutoService notaFiscalProdutoService, FornecedorService fornecedorService) {
78
                this.transferenciaService = transferenciaService;
79
                this.transferenciaProdutoService = transferenciaProdutoService;
80
                this.lojaService = lojaService;
81
                this.usuarioService = usuarioService;
82
                this.produtoService = produtoService;
83
                this.produtoLojaService = produtoLojaService;
84
                this.notaFiscalService = notaFiscalService;
85
                this.notaFiscalProdutoService = notaFiscalProdutoService;
86
                this.fornecedorService = fornecedorService;
87
        }
88
 
89
        @Override
90
        public void preCarregamento() {
91
                entidade = new Transferencia();
92
                entidade.setLojaEntrada(getLojaSelecionada());
93
                entidade.setLojaSaida(getLojaSelecionada());
94
                setSenhaUsuarioTransferencia("");
95
        }
96
 
97
        @Override
98
        public void limparEntidade() {
99
                setEntidade(new Transferencia());
100
                setSenhaUsuarioTransferencia("");
101
                setUsuarioTransferencia(null);
102
                setLojaSelecionada(null);
103
                setCodigoProduto("");
104
        }
105
 
106
        @Override
107
        public GenericService<Transferencia> getService() {
108
                return transferenciaService;
109
        }
110
 
111
        @Override
112
        public Transferencia getEntidade() {
113
                return entidade;
114
        }
115
 
116
        @Override
117
        public Transferencia getId() {
118
                return getEntidade();
119
        }
120
 
121
        public Loja getLojaSelecionada() {
122
                if (VerificadorUtil.estaNulo(lojaSelecionada)) {
123
                        if (VerificadorUtil.naoEstaNulo(getSequencialLojaSelecionada())) {
124
                                Loja loja = new Loja();
125
                                loja.setSequencial(getSequencialLojaSelecionada());
126
                                lojaSelecionada = lojaService.consultarPorId(loja);
127
                        }
128
                }
129
                return lojaSelecionada;
130
        }
131
        public void setLojaSelecionada(Loja lojaSelecionada) {
132
                this.lojaSelecionada = lojaSelecionada;
133
        }
134
 
135
        public Long getSequencialLojaSelecionada() {
136
                if (VerificadorUtil.naoEstaNulo(getParametro("sequencialLoja"))) {
137
                        setSequencialLojaSelecionada(new Long(getParametro("sequencialLoja").toString()));
138
                }
139
                return sequencialLojaSelecionada;
140
        }
141
        public void setSequencialLojaSelecionada(Long sequencialLojaSelecionada) {
142
                this.sequencialLojaSelecionada = sequencialLojaSelecionada;
143
        }
144
 
145
        public String getSenhaUsuarioTransferencia() {
146
                return senhaUsuarioTransferencia;
147
        }
148
        public void setSenhaUsuarioTransferencia(String senhaUsuarioTransferencia) {
149
                this.senhaUsuarioTransferencia = senhaUsuarioTransferencia;
150
        }
151
 
152
        public Usuario getUsuarioTransferencia() {
153
                return usuarioTransferencia;
154
        }
155
        public void setUsuarioTransferencia(Usuario usuarioTransferencia) {
156
                this.usuarioTransferencia = usuarioTransferencia;
157
        }
158
        public Boolean possuiUsuarioTransferencia() {
159
                return VerificadorUtil.naoEstaNulo(getUsuarioTransferencia());
160
        }
161
 
162
        public String getCodigoProduto() {
163
                return codigoProduto;
164
        }
165
        public void setCodigoProduto(String codigoProduto) {
166
                this.codigoProduto = codigoProduto;
167
        }
168
 
169
        public Produto getProdutoSelecionado() {
170
                return produtoSelecionado;
171
        }
172
        public void setProdutoSelecionado(Produto produtoSelecionado) {
173
                this.produtoSelecionado = produtoSelecionado;
174
        }
175
 
176
        public TransferenciaProdutoDTO getTransferenciaProdutoSelecionadoDTO() {
177
                return transferenciaProdutoSelecionadoDTO;
178
        }
179
        public void setTransferenciaProdutoSelecionadoDTO(TransferenciaProdutoDTO transferenciaProdutoSelecionadoDTO) {
180
                this.transferenciaProdutoSelecionadoDTO = transferenciaProdutoSelecionadoDTO;
181
        }
182
 
183
        public Integer getQuantidadeProdutoSelecionado() {
184
                return quantidadeProdutoSelecionado;
185
        }
186
        public void setQuantidadeProdutoSelecionado(Integer quantidadeProdutoSelecionado) {
187
                this.quantidadeProdutoSelecionado = quantidadeProdutoSelecionado;
188
        }
189
 
231 espaco 190
        public String getSenhaUsuarioTransporte() {
191
                return senhaUsuarioTransporte;
192
        }
193
        public void setSenhaUsuarioTransporte(String senhaUsuarioTransporte) {
194
                this.senhaUsuarioTransporte = senhaUsuarioTransporte;
195
        }
196
 
197
        public String getSenhaUsuarioReceptor() {
198
                return senhaUsuarioReceptor;
199
        }
200
        public void setSenhaUsuarioReceptor(String senhaUsuarioReceptor) {
201
                this.senhaUsuarioReceptor = senhaUsuarioReceptor;
202
        }
203
 
106 espaco 204
        /***************************************************************/
205
 
206
        public Integer quantidadeTransferencias(Loja loja) {
207
                return transferenciaService.obterQuantidadeDeTransferenciasAbertas(loja);
208
        }
209
 
210
        @Override
211
        public void preAlterar(Transferencia transferencia) {
212
                limparEntidade();
213
                transferencia.setProdutosDTO(transferenciaService.consultarProdutos(transferencia));
214
                super.preAlterar(transferencia);
215
        }
216
 
217
        @Override
218
        public void preDetalhar(Transferencia transferencia) {
219
                limparEntidade();
220
                transferencia.setProdutosDTO(transferenciaService.consultarProdutos(transferencia));
221
                super.preDetalhar(transferencia);
222
        }
223
 
224
        public Boolean todosProdutosRecebidos() {
225
                for (TransferenciaProdutoDTO produto : getEntidade().getProdutosDTO()) {
226
                        if (!produto.getRecebido()) {
227
                                return false;
228
                        }
229
                }
230
                return true;
231
        }
232
 
233
        public void retirarVerificacaoProdutos() {
234
                for (TransferenciaProdutoDTO produto : getEntidade().getProdutosDTO()) {
235
                        produto.setRecebido(false);
236
                }
237
        }
238
 
239
        public void escolherProduto() {
240
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
241
                        public void execute() {
242
                                Produto produtoConsultado = produtoService.consultarProdutoPorCodigoOuCodigoEAN(getCodigoProduto());
243
                                if (VerificadorUtil.estaNulo(produtoConsultado)) {
244
                                        LancadorMensagem.lancarErro("Produto não encontrado!");
245
                                } else {
246
                                        setProdutoSelecionado(produtoConsultado);
247
                                        setQuantidadeProdutoSelecionado(1);
248
                                        RequestContext.getCurrentInstance().addCallbackParam("confirmado", true);
249
                                }
250
                        }
251
                });
252
        }
253
 
254
        public void escolherProduto(Produto produto) {
255
                setProdutoSelecionado(produto);
256
                setQuantidadeProdutoSelecionado(1);
257
        }
258
 
259
        public void adicionarProduto() {
260
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
261
                        public void execute() {
262
                                Usuario usuarioTransferencia = getUsuarioTransferencia();
263
                                TransferenciaProduto transferenciaProduto = new TransferenciaProduto();
264
                                transferenciaProduto.setProduto(getProdutoSelecionado());
265
                                transferenciaProduto.setQuantidadeTransferir(getQuantidadeProdutoSelecionado());
266
                                transferenciaProduto.setIndicadorRecebido(false);
267
                                transferenciaProduto.setTransferencia(getEntidade());
268
                                transferenciaProduto.setUsuarioSaida(usuarioTransferencia);
269
                                verificarParametros(transferenciaProduto);
270
                                verificarAlertas(transferenciaProduto);
271
                                transferenciaProdutoService.alterar(transferenciaProduto);
272
                                preAlterar(getEntidade());
273
                                setCodigoProduto(null);
274
                                setUsuarioTransferencia(usuarioTransferencia);
275
                                LancadorMensagem.lancarSucesso("Produto adicionado, código: " + getProdutoSelecionado().getCodigoProdutoPadrao());
276
                        }
277
                });
278
        }
279
 
280
        private void verificarAlertas(TransferenciaProduto transferenciaProduto) {
281
                Integer estoqueProdutoLojaSaida = produtoLojaService.consultarEstoqueProdutoEeLoja(transferenciaProduto.getProduto(), transferenciaProduto.getTransferencia().getLojaSaida());
282
                if (estoqueProdutoLojaSaida < transferenciaProduto.getQuantidadeTransferir()) {
283
                        transferenciaProduto.setObservacao("QUANTIDADE SUPERIOR AO ESTOQUE");
284
                }
285
                if (estoqueProdutoLojaSaida < 0) {
286
                        transferenciaProduto.setObservacao("QUANTIDADE SUPERIOR AO ESTOQUE (ESTOQUE NEGATIVO)");
287
                }
288
        }
289
 
290
        private void verificarParametros(TransferenciaProduto transferenciaProduto) {
291
                if (VerificadorUtil.estaNulo(transferenciaProduto.getQuantidadeTransferir()) || transferenciaProduto.getQuantidadeTransferir().equals(0)) {
292
                        throw new NegocioException("Obrigatório informar a quantidade para transferência.");
293
                }
294
                verificarSeProdutoJaFoiAdicionado(transferenciaProduto.getSequencialDoProduto());
295
        }
296
 
297
        protected void verificarSeProdutoJaFoiAdicionado(Long sequencialProduto) {
298
                if (getEntidade().verificarSeProdutoJaConstaNaLista(sequencialProduto)) {
299
                        throw new NegocioException("Produto já foi adicionando anteriormente!");
300
                }
301
        }
302
 
303
        public void removerProduto(final TransferenciaProdutoDTO transferenciaProdutoDTO) {
304
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
305
                        public void execute() {
306
                                Usuario usuarioTransferencia = getUsuarioTransferencia();
307
                                transferenciaProdutoService.excluirTransferenciaProduto(transferenciaProdutoDTO);
308
                                preAlterar(getEntidade());
309
                                setUsuarioTransferencia(usuarioTransferencia);
310
                                LancadorMensagem.lancarSucesso("Produto removido, código: " + transferenciaProdutoDTO.getCodigoProdutoPadrao());
311
                        }
312
                });
313
        }
314
 
315
        public void escolherTransferenciaProduto() {
316
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
317
                        public void execute() {
318
                                if (VerificadorUtil.estaNuloOuVazio(getCodigoProduto())) {
319
                                        LancadorMensagem.lancarErro("Informe o código do produto!");
320
                                } else {
321
                                        boolean produtoLocalizado = false;
322
                                        for (TransferenciaProdutoDTO transferenciaProdutoDTO : getEntidade().getProdutosDTO()) {
323
                                                if (transferenciaProdutoDTO.verificarSeCodigoEhIgual(getCodigoProduto())) {
324
                                                        setTransferenciaProdutoSelecionadoDTO(transferenciaProdutoDTO);
325
                                                        produtoLocalizado = true;
326
                                                        break;
327
                                                }
328
                                        }
329
                                        if (produtoLocalizado) {
330
                                                RequestContext.getCurrentInstance().addCallbackParam("confirmado", true);
331
                                        } else {
332
                                                LancadorMensagem.lancarErro("Produto não localizado!");
333
                                        }
334
                                }
335
                        }
336
                });
337
        }
338
 
339
        public void receberProduto() {
340
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
341
                        public void execute() {
342
                                for (TransferenciaProdutoDTO transferenciaProdutoDTO : getEntidade().getProdutosDTO()) {
343
                                        if (transferenciaProdutoDTO.verificarSeCodigoEhIgual(getCodigoProduto())) {
344
                                                if (transferenciaProdutoDTO.getRecebido()) {
345
                                                        LancadorMensagem.lancarErro("Produto já foi recebido anteriormente!");
346
                                                        break;
347
                                                }
348
                                                transferenciaProdutoDTO.setRecebido(true);
349
                                                receberProduto(transferenciaProdutoDTO);
350
                                                setCodigoProduto(null);
351
                                                LancadorMensagem.lancarSucesso("Produto recebido com sucesso!");
352
                                                break;
353
                                        }
354
                                }
355
                        }
356
                });
357
        }
358
 
359
        public void receberProduto(final TransferenciaProdutoDTO transferenciaProdutoDTO) {
360
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
361
                        public void execute() {
362
                                Usuario usuarioTransferencia = getUsuarioTransferencia();
363
                                transferenciaProdutoDTO.setUsuarioEntrada(usuarioTransferencia);
364
                                transferenciaProdutoService.receberProduto(transferenciaProdutoDTO, transferenciaProdutoDTO.getRecebido());
365
                                preDetalhar(getEntidade());
366
                                setUsuarioTransferencia(usuarioTransferencia);
367
                        }
368
                });
369
        }
370
 
371
        public void verificarTodasTransferenciaProduto() {
372
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
373
                        public void execute() {
374
                                Usuario usuarioTransferencia = getUsuarioTransferencia();
375
                                setEntidade(transferenciaService.detalharTransferencia(getEntidade()));
376
                                List<TransferenciaProduto> produtosRecebidosPosteriormente = new ArrayList<TransferenciaProduto>();
377
                                for (TransferenciaProduto transferenciaProduto : getEntidade().getListaProdutos()) {
378
                                        if (!transferenciaProduto.getIndicadorRecebido()) {
379
                                                produtosRecebidosPosteriormente.add(transferenciaProduto);
380
                                                transferenciaProduto.setUsuarioEntrada(usuarioTransferencia);
381
                                                transferenciaProduto.setIndicadorRecebido(true);
382
                                        }
383
                                }
384
                                getService().alterar(getEntidade());
385
                                preDetalhar(getEntidade());
386
                                setUsuarioTransferencia(usuarioTransferencia);
387
                                enviarEmailProcedimentoVerificarTudo(getEntidade(), usuarioTransferencia, produtosRecebidosPosteriormente);
388
                        }
389
 
390
                        private void enviarEmailProcedimentoVerificarTudo(Transferencia tranferencia, Usuario usuarioTransferencia, List<TransferenciaProduto> produtosRecebidosPosteriormente) {
391
                                String diaAtual = DataUtils.converterDataParaString(DataUtils.getDataAtual());
392
                                new GerenciadorEmailImpl()
393
                                        .comEmailsDestino(ConstantesSEC.DESTINATARIOS_EMAIL_SUPERVISAO)
394
                                        .comAssunto("ESPAÇO CASE - RECEBIMENTO VERIFICANDO TUDO : " + diaAtual)
395
                                        .comConteudo(montarDadosDaTransferencia(tranferencia, usuarioTransferencia, produtosRecebidosPosteriormente))
396
                                        .enviar();
397
                        }
398
 
399
                        private String montarDadosDaTransferencia(Transferencia tranferencia, Usuario usuarioTransferencia, List<TransferenciaProduto> produtosRecebidosPosteriormente) {
400
                                StringBuilder conteudo = new StringBuilder();
401
                                conteudo.append("OPERAÇÃO REALIZADA POR: " + usuarioTransferencia.getNome() + "\n");
402
                                conteudo.append("LOJA ORIGEM: " + tranferencia.getLojaSaida().getDescricao() + "\n");
403
                                conteudo.append("LOJA DESTINO: " + tranferencia.getLojaEntrada().getDescricao() + "\n");
404
                                conteudo.append("DATA DA SOLICITAÇÃO: " + DataUtils.converterDataComHorarioParaString(tranferencia.getDataSolicitacao()) + "\n");
405
                                conteudo.append("__________________________________________________\n\n");
406
                                conteudo.append("ITENS RECEBIDOS VERIFICANDO TUDO: " + produtosRecebidosPosteriormente.size() + "\n");
407
                                conteudo.append("__________________________________________________\n");
408
                                for (TransferenciaProduto produtoRecebido : produtosRecebidosPosteriormente) {
409
                                        conteudo.append(produtoRecebido.getProduto().getCodigoProdutoPadrao() + " | ");
410
                                        conteudo.append(produtoRecebido.getProduto().getDescricaoComModeloCompleta() + ", ");
411
                                        conteudo.append("QUANTIDADE: " + produtoRecebido.getQuantidadeTransferir());
412
                                        conteudo.append("\n");
413
                                }
414
                                conteudo.append("__________________________________________________\n\n");
415
                                conteudo.append("TRANSFERÊNCIA:\n");
416
                                conteudo.append("__________________________________________________\n");
417
                                for (TransferenciaProduto transferenciaProduto : tranferencia.getListaProdutos()) {
418
                                        conteudo.append(transferenciaProduto.getProduto().getCodigoProdutoPadrao() + " | ");
419
                                        conteudo.append(transferenciaProduto.getProduto().getDescricaoComModeloCompleta() + ", ");
420
                                        conteudo.append("QUANTIDADE: " + transferenciaProduto.getQuantidadeTransferir());
421
                                        conteudo.append("\n");
422
                                }
423
                                conteudo.append("__________________________________________________\n\n");
424
                                return conteudo.toString();
425
                        }
426
                });
427
        }
428
 
429
        public void solicitarTransferencia() {
430
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
431
                        public void execute() {
432
                                getEntidade().setConferido(false);
433
                                cadastrar();
434
                        }
435
                });
436
        }
437
 
438
        public void cadastrarTransferencia() {
439
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
440
                        public void execute() {
441
                                getEntidade().setConferido(true);
442
                                cadastrar();
443
                        }
444
                });
445
        }
446
 
447
        public void cadastrar() {
448
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
449
                        public void execute() {
450
                                Usuario usuarioTransferencia = verificarSenhaUsuario(getSenhaUsuarioTransferencia());
451
                                getEntidade().setLojaSaida(getLojaSelecionada());
452
                                getService().cadastrar(getEntidade());
453
                                preAlterar(getEntidade());
454
                                setLojaSelecionada(getEntidade().getLojaSaida());
455
                                setUsuarioTransferencia(usuarioTransferencia);
456
                                LancadorMensagem.lancarSucesso("TRANSFERÊNCIA INICIADA");
457
                        }
458
                });
459
        }
460
 
461
        public void alterarSolicitacaoTransferencia() {
462
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
463
                        public void execute() {
464
                                setUsuarioTransferencia(verificarSenhaUsuario(getSenhaUsuarioTransferencia()));
465
                        }
466
                });
467
        }
468
 
469
        public void iniciarTransferencia() {
470
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
471
                        public void execute() {
472
                                getEntidade().setConferido(true);
473
                                retirarVerificacaoProdutos();
474
                                alterar();
475
                                LancadorMensagem.lancarSucesso("TRANSFERÊNCIA INICIADA");
476
                        }
477
                });
478
        }
479
 
480
        public void solicitarNovamenteTransferencia() {
481
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
482
                        public void execute() {
483
                                getEntidade().setConferido(false);
484
                                retirarVerificacaoProdutos();
485
                                alterar();
486
                                LancadorMensagem.lancarSucesso("SOLICITAÇÃO DE TRANSFERÊNCIA INICIADA");
487
                        }
488
                });
489
        }
490
 
491
        private Usuario verificarSenhaUsuario(String senha) {
492
                return usuarioService.consultarUsuarioPorSenha(senha);
493
        }
494
 
495
        public void receberProdutos() {
496
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
497
                        public void execute() {
498
                                transferenciaService.receberProdutos(getEntidade());
499
                                setTipoOperacao(TipoOperacao.CONSULTAR);
500
                                LancadorMensagem.lancarSucesso("TRANSFERÊNCIA CONCLUÍDA COM SUCESSO");
501
                                Transferencia transferencia = transferenciaService.detalharTransferencia(getEntidade());
502
                                gerarNotaFiscalRemessa(transferencia);
503
                                limparEntidade();
504
                        }
505
                });
506
        }
507
 
508
        public void excluirTransferencia(final Transferencia transferencia) {
509
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
510
                        public void execute() {
511
                                excluir(transferencia);
512
                                LancadorMensagem.lancarSucesso("RANSFERÊNCIA EXCLUÍDA COM SUCESSO");
513
                        }
514
                });
515
        }
516
 
517
        public void verificarTodosProdutos() {
518
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
519
                        public void execute() {
520
                                for (TransferenciaProdutoDTO transferenciaProdutoDTO : getEntidade().getProdutosDTO()) {
521
                                        transferenciaProdutoDTO.setRecebido(true);
522
                                }
523
                                LancadorMensagem.lancarSucesso("Produtos verificados com sucesso!");
524
                        }
525
                });
526
        }
527
 
528
        public void gerarNotaFiscalRemessa(final Transferencia transferencia) {
529
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
530
                        public void execute() {
531
                                if (sePermitidoEnvio(transferencia)) {
532
                                        String numeroNota = "" + notaFiscalService.consultarProximoNumeroNotaFiscal(TipoNotaFiscal.NFE_REMESSA.getValor(), transferencia.getLojaSaida().getPessoaJuridica());
533
                                        NotaFiscal notaFiscal = new NotaFiscal();
534
                                        notaFiscal.setNumeroNotaFiscal(new Long(numeroNota));
535
                                        notaFiscal.setTipoModeloNotaFiscal(TipoModeloNotaFiscal.MODELO_NFE_55.getValor());
536
                                        notaFiscal.setTipoNotaFiscal(TipoNotaFiscal.NFE_REMESSA.getValor());
537
                                        notaFiscal.setSerie(TipoNotaFiscal.NFE_REMESSA.getSerie());
538
                                        notaFiscal.setDataHoraEmissao(DataUtils.getDataAtual());
170 espaco 539
                                        notaFiscal.setPessoaEmitente(transferencia.getLojaSaida().getPessoaJuridica());
540
                                        notaFiscal.setPessoaDestinatario(transferencia.getLojaEntrada().getPessoaJuridica());
106 espaco 541
                                        notaFiscalService.cadastrar(notaFiscal);
542
 
543
                                        // ADICIONAR PRODUTOS COM FORNECEDORES APTOS
544
                                        NotaFiscal notaFiscalRemessa = notaFiscalService.consultarPeloNumeroEeTipo(notaFiscal.getNumeroNotaFiscal(), notaFiscal.getTipoNotaFiscal());
545
                                        List<Fornecedor> fornecedoresEmitemNota = fornecedorService.consultarFornecedoresComEmissaoNota();
546
                                        List<TransferenciaProduto> transferenciaProdutos = transferenciaService.consultarProdutosVerificandoFornecedores(transferencia, fornecedoresEmitemNota);
547
                                        for (TransferenciaProduto transferenciaProduto : transferenciaProdutos) {
548
                                                NotaFiscalProduto notaFiscalProduto = new NotaFiscalProduto();
549
                                                notaFiscalProduto.setNotaFiscal(notaFiscalRemessa);
550
                                                notaFiscalProduto.setProduto(transferenciaProduto.getProduto());
551
                                                notaFiscalProduto.setQuantidade(transferenciaProduto.getQuantidadeTransferir());
552
                                                notaFiscalProdutoService.cadastrar(notaFiscalProduto);
553
                                        }
554
                                        transferencia.setNotaFiscalRemessa(notaFiscalRemessa);
555
                                        transferenciaService.alterar(transferencia);
556
 
557
                                        LancadorMensagem.lancarSucesso("NOTA DE REMESSA: INICIADA COM SUCESSO");
558
                                }
559
                        }
560
 
561
                        private boolean sePermitidoEnvio(Transferencia transferencia) {
562
                                if (VerificadorUtil.estaNulo(transferencia.getLojaEntrada().getPessoaJuridica())
563
                                                || VerificadorUtil.estaNulo(transferencia.getLojaSaida().getPessoaJuridica())) {
564
                                        return false;
565
                                }
566
                                return seEmitenteForMatriz(transferencia) && transferencia.getLojaEntrada().getReceberNotaFiscalRemessa() && !seCnpjsIguais(transferencia);
567
                        }
568
 
569
                        private boolean seEmitenteForMatriz(final Transferencia transferencia) {
570
                                return transferencia.getLojaSaida().getPessoaJuridica().getCpfCnpj().equals(ConstantesSEC.Empresa.CNPJ_21494821000100);
571
                        }
572
 
573
                        private boolean seCnpjsIguais(final Transferencia transferencia) {
574
                                return transferencia.getLojaSaida().getPessoaJuridica().getCpfCnpj().equals(transferencia.getLojaEntrada().getPessoaJuridica().getCpfCnpj());
575
                        }
576
 
577
                });
578
        }
231 espaco 579
 
580
        public void iniciarTransporte(Transferencia transferencia) {
581
                setEntidade(transferencia);
235 espaco 582
                transferencia.setProdutosDTO(transferenciaService.consultarProdutos(transferencia));
231 espaco 583
        }
106 espaco 584
 
231 espaco 585
        public void iniciarTransporte() {
586
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
587
                        public void execute() {
588
                                Usuario usuarioTransporte = usuarioService.consultarUsuarioPorSenha(getSenhaUsuarioTransporte());
589
                                getEntidade().setUsuarioTransportador(usuarioTransporte);
590
                                getEntidade().setDataHoraInicioTransporte(DataUtils.getDataAtual());
591
                                transferenciaService.alterar(getEntidade());
592
                                setSenhaUsuarioTransporte("");
233 espaco 593
                                LancadorMensagem.lancarSucesso("Iniciando transporte da transferência ID: " + getEntidade().getSequencial());
231 espaco 594
                        }
595
                });
596
        }
597
 
598
        public void receberTransporte() {
599
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
600
                        public void execute() {
601
                                Usuario usuarioReceptor = usuarioService.consultarUsuarioPorSenha(getSenhaUsuarioReceptor());
602
                                getEntidade().setUsuarioReceptor(usuarioReceptor);
603
                                transferenciaService.alterar(getEntidade());
604
                                setSenhaUsuarioReceptor("");
605
                                LancadorMensagem.lancarSucesso("Transferência recebida com sucesso, ID: " + getEntidade().getSequencial());
606
                        }
607
                });
608
        }
609
 
106 espaco 610
}