Subversion Repositories Integrator Subversion

Rev

Rev 468 | Rev 538 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 468 Rev 537
Line 3... Line 3...
3
import java.util.List;
3
import java.util.List;
4
4
5
import org.springframework.beans.factory.annotation.Autowired;
5
import org.springframework.beans.factory.annotation.Autowired;
6
import org.springframework.stereotype.Service;
6
import org.springframework.stereotype.Service;
7
7
-
 
8
import br.com.ec.core.exception.NegocioException;
8
import br.com.ec.core.generic.AbstractService;
9
import br.com.ec.core.generic.AbstractService;
9
import br.com.ec.core.generic.GenericRepository;
10
import br.com.ec.core.generic.GenericRepository;
10
import br.com.ec.core.util.StringUtil;
-
 
-
 
11
import br.com.ec.core.util.DataUtils;
11
import br.com.ec.core.util.VerificadorUtil;
12
import br.com.ec.core.util.VerificadorUtil;
12
import br.com.ec.core.validador.Validador;
13
import br.com.ec.core.validador.Validador;
13
import br.com.ec.domain.dto.CompraProdutoDTO;
14
import br.com.ec.domain.dto.CompraProdutoDTO;
-
 
15
import br.com.ec.domain.dto.LojaDTO;
14
import br.com.ec.domain.dto.ProdutoDTO;
16
import br.com.ec.domain.dto.ProdutoDTO;
-
 
17
import br.com.ec.domain.dto.UsuarioDTO;
-
 
18
import br.com.ec.domain.model.EstoqueAuditoria;
15
import br.com.ec.domain.model.Produto;
19
import br.com.ec.domain.model.Produto;
-
 
20
import br.com.ec.domain.model.ProdutoLoja;
-
 
21
import br.com.ec.domain.model.Usuario;
-
 
22
import br.com.ec.domain.model.tipos.TipoEstoqueAuditoria;
-
 
23
import br.com.ec.domain.model.tipos.TipoEstoqueAuditoriaVerificacao;
-
 
24
import br.com.ec.domain.service.EstoqueAuditoriaService;
-
 
25
import br.com.ec.domain.service.PerfilService;
-
 
26
import br.com.ec.domain.service.ProdutoLojaService;
16
import br.com.ec.domain.service.ProdutoService;
27
import br.com.ec.domain.service.ProdutoService;
17
import br.com.ec.domain.shared.UtilBean;
-
 
18
import br.com.ec.repository.ProdutoRepository;
28
import br.com.ec.repository.ProdutoRepository;
19
29
20
@Service
30
@Service
21
public class ProdutoServiceImpl extends AbstractService<Produto> implements ProdutoService {
31
public class ProdutoServiceImpl extends AbstractService<Produto> implements ProdutoService {
-
 
32
       
-
 
33
        private PerfilService perfilService;
-
 
34
        private ProdutoLojaService produtoLojaService;
-
 
35
        private EstoqueAuditoriaService estoqueAuditoriaService;
22
       
36
       
23
        private ProdutoRepository produtoRepository;
37
        private ProdutoRepository produtoRepository;
24
        /*
38
        /*
25
        private TransferenciaRepository transferenciaRepository;
39
        private TransferenciaRepository transferenciaRepository;
26
        private ProdutoLojaService produtoLojaService;
-
 
27
        private EstoqueAuditoriaService estoqueAuditoriaService;
-
 
28
        private PerfilService perfilService;
-
 
29
        private CupomService cupomService;
40
        private CupomService cupomService;
30
        private PagamentoService pagamentoService;
41
        private PagamentoService pagamentoService;
31
        private PedidoService pedidoService;
42
        private PedidoService pedidoService;
32
        private PendenciaService pendenciaService;
43
        private PendenciaService pendenciaService;
33
        */
44
        */
34
45
35
        @Autowired
46
        @Autowired
36
        public ProdutoServiceImpl(Validador validador, ProdutoRepository produtoRepository/*,
-
 
-
 
47
        public ProdutoServiceImpl(Validador validador, PerfilService perfilService,
-
 
48
                        ProdutoLojaService produtoLojaService, EstoqueAuditoriaService estoqueAuditoriaService,
-
 
49
                        ProdutoRepository produtoRepository
-
 
50
                        /*,
37
                        TransferenciaRepository transferenciaRepository, ProdutoLojaService produtoLojaService,
51
                        TransferenciaRepository transferenciaRepository, ProdutoLojaService produtoLojaService,
38
                        EstoqueAuditoriaService estoqueAuditoriaService, PerfilService perfilService, CupomService cupomService,
-
 
-
 
52
                        , CupomService cupomService,
39
                        PagamentoService pagamentoService, PedidoService pedidoService, PendenciaService pendenciaService*/) {
53
                        PagamentoService pagamentoService, PedidoService pedidoService, PendenciaService pendenciaService*/) {
40
                super(validador);
54
                super(validador);
-
 
55
                this.perfilService = perfilService;
-
 
56
                this.produtoLojaService = produtoLojaService;
41
                this.produtoRepository = produtoRepository;
57
                this.produtoRepository = produtoRepository;
-
 
58
                this.estoqueAuditoriaService = estoqueAuditoriaService;
42
                /*
59
                /*
43
                this.transferenciaRepository = transferenciaRepository;
60
                this.transferenciaRepository = transferenciaRepository;
44
                this.produtoLojaService = produtoLojaService;
-
 
45
                this.estoqueAuditoriaService = estoqueAuditoriaService;
-
 
46
                this.perfilService = perfilService;
-
 
47
                this.cupomService = cupomService;
61
                this.cupomService = cupomService;
48
                this.pagamentoService = pagamentoService;
62
                this.pagamentoService = pagamentoService;
49
                this.pedidoService = pedidoService;
63
                this.pedidoService = pedidoService;
50
                this.pendenciaService = pendenciaService;
64
                this.pendenciaService = pendenciaService;
51
                */
65
                */
Line 53... Line 67...
53
67
54
        @Override
68
        @Override
55
        protected GenericRepository<Produto> getRepository() {
69
        protected GenericRepository<Produto> getRepository() {
56
                return produtoRepository;
70
                return produtoRepository;
57
        }
71
        }
-
 
72
       
-
 
73
        @Override
-
 
74
        public Produto consultarProdutoPorCodigo(String codigoProduto) {
-
 
75
                return produtoRepository.consultarProdutoPorCodigo(codigoProduto.trim());
-
 
76
        }
-
 
77
       
-
 
78
        @Override
-
 
79
        public ProdutoDTO consultarProdutoDTOPorCodigoOuCodigoEAN(String codigoProduto) {
-
 
80
                return produtoRepository.consultarProdutoDTOPorCodigoOuEAN(codigoProduto.trim());
-
 
81
        }
-
 
82
       
-
 
83
        @Override
-
 
84
        public List<CompraProdutoDTO> consultarComprasDoProduto(Long sequencialProduto) {
-
 
85
                return produtoRepository.consultarComprasDoProduto(sequencialProduto);
-
 
86
        }
-
 
87
       
-
 
88
        @Override
-
 
89
        public void realizarProducao(LojaDTO lojaDTO, ProdutoDTO produtoParaProduzir, ProdutoDTO produtoProduzido,
-
 
90
                        Integer quantidadeParaProduzir, UsuarioDTO usuarioDTO) {
-
 
91
                if (VerificadorUtil.estaNulo(quantidadeParaProduzir)) {
-
 
92
                        throw new NegocioException("É preciso informar a quantidade produzida");
-
 
93
                }
-
 
94
               
-
 
95
                if (quantidadeParaProduzir < 1) {
-
 
96
                        throw new NegocioException("É preciso informar a quantidade produzida");
-
 
97
                }
-
 
98
               
-
 
99
                // ALTERANDO ESTOQUE
-
 
100
                ProdutoLoja produtoLojaParaProduzir = produtoLojaService.consultarPorProdutoEeLoja(produtoParaProduzir.getSequencial(), lojaDTO.getSequencial());
-
 
101
                Integer estoqueAnteriorProdutoParaProduzir = produtoLojaParaProduzir.getQuantidadeEstoque();
-
 
102
                               
-
 
103
                ProdutoLoja produtoLojaProduzido = produtoLojaService.consultarPorProdutoEeLoja(produtoProduzido.getSequencial(), lojaDTO.getSequencial());
-
 
104
                Integer estoqueAnteriorProdutoProduzido = produtoLojaProduzido.getQuantidadeEstoque();
-
 
105
               
-
 
106
                if (estoqueAnteriorProdutoParaProduzir - quantidadeParaProduzir < 0) {
-
 
107
                        throw new NegocioException("Não há estoque suficiente para produzir");
-
 
108
                }
-
 
109
               
-
 
110
                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(quantidadeParaProduzir * -1, produtoParaProduzir.getSequencial(), lojaDTO.getSequencial());
-
 
111
                produtoLojaService.alterarEstoqueAcrescentandoQuantidadeInformada(quantidadeParaProduzir, produtoProduzido.getSequencial(), lojaDTO.getSequencial());
-
 
112
               
-
 
113
                // CADASTRANDO AUDITORIAS
-
 
114
                cadastrarAuditoria(usuarioDTO.getSequencial(), produtoLojaParaProduzir, TipoEstoqueAuditoria.PRODUCAO.getValor(),
-
 
115
                                estoqueAnteriorProdutoParaProduzir, produtoLojaParaProduzir.getQuantidadeEstoque(), "",
-
 
116
                                TipoEstoqueAuditoriaVerificacao.VERIFICADO_SEM_PENDENCIA.getValor());
-
 
117
                cadastrarAuditoria(usuarioDTO.getSequencial(), produtoLojaProduzido, TipoEstoqueAuditoria.PRODUCAO.getValor(),
-
 
118
                                estoqueAnteriorProdutoProduzido, produtoLojaProduzido.getQuantidadeEstoque(), "",
-
 
119
                                TipoEstoqueAuditoriaVerificacao.VERIFICADO_SEM_PENDENCIA.getValor());
-
 
120
        }
-
 
121
       
-
 
122
        private EstoqueAuditoria cadastrarAuditoria(Long sequencialUsuario, ProdutoLoja produtoLoja, String tipoEstoqueAuditoria, Integer quantidadeEstoqueAnterior, Integer quantidadeEstoqueNovo, /*Cliente cliente, */String observacao, String tipoVerificacao) {
-
 
123
                return estoqueAuditoriaService.cadastrarAuditoria(sequencialUsuario, produtoLoja, quantidadeEstoqueAnterior, quantidadeEstoqueNovo, DataUtils.getDataAtual(), tipoEstoqueAuditoria, /*cliente, */observacao, tipoVerificacao);
-
 
124
        }
-
 
125
       
58
        /*
126
        /*
59
        @Override
127
        @Override
60
        public void cadastrar(Produto produto) {
128
        public void cadastrar(Produto produto) {
61
                setarNovoCodigoDoProduto(produto);
129
                setarNovoCodigoDoProduto(produto);
62
                super.cadastrar(produto);
130
                super.cadastrar(produto);
Line 177... Line 245...
177
                        return this.consultarProdutoPorCodigo("000000");
245
                        return this.consultarProdutoPorCodigo("000000");
178
                }
246
                }
179
                return produtoSelecionado;
247
                return produtoSelecionado;
180
        }
248
        }
181
*/     
249
*/     
182
        @Override
-
 
183
        public Produto consultarProdutoPorCodigo(String codigoProduto) {
-
 
184
                return produtoRepository.consultarProdutoPorCodigo(codigoProduto.trim());
-
 
185
        }
-
 
186
       
250
       
187
        @Override
-
 
188
        public ProdutoDTO consultarProdutoDTOPorCodigoOuCodigoEAN(String codigoProduto) {
-
 
189
                return produtoRepository.consultarProdutoDTOPorCodigoOuEAN(codigoProduto.trim());
-
 
190
        }
-
 
191
       
-
 
192
        @Override
-
 
193
        public List<CompraProdutoDTO> consultarComprasDoProduto(Long sequencialProduto) {
-
 
194
                return produtoRepository.consultarComprasDoProduto(sequencialProduto);
-
 
195
        }
-
 
196
       
251
       
197
        /*
252
        /*
198
        @Override
253
        @Override
199
        public Produto consultarProdutoPorCodigoEAN(String codigoEAN) {
254
        public Produto consultarProdutoPorCodigoEAN(String codigoEAN) {
200
                codigoEAN = StringUtil.retornarApenasNumeros(codigoEAN);
255
                codigoEAN = StringUtil.retornarApenasNumeros(codigoEAN);
Line 434... Line 489...
434
                                }
489
                                }
435
                        }
490
                        }
436
                }
491
                }
437
        }
492
        }
438

493

439
        private EstoqueAuditoria cadastrarAuditoria(Usuario usuario, ProdutoLoja produtoLoja, String tipoEstoqueAuditoria, Integer quantidadeEstoqueAnterior, Integer quantidadeEstoqueNovo, Cliente cliente, String observacao, String tipoVerificacao) {
-
 
440
                return estoqueAuditoriaService.cadastrarAuditoria(usuario, produtoLoja, quantidadeEstoqueAnterior, quantidadeEstoqueNovo, DataUtils.getDataAtual(), tipoEstoqueAuditoria, cliente, observacao, tipoVerificacao);
-
 
441
        }
-
 
442
       
-
 
443
        @Override
494
        @Override
444
        public void desativarProduto(Produto produto) {
495
        public void desativarProduto(Produto produto) {
445
                produto.setAtivo(false);
496
                produto.setAtivo(false);
446
                this.alterar(produto);
497
                this.alterar(produto);
447
        }
498
        }
Line 495... Line 546...
495
                        }
546
                        }
496
                } else {
547
                } else {
497
                        throw new NegocioException("Contagem indisponível, informe à gestão");
548
                        throw new NegocioException("Contagem indisponível, informe à gestão");
498
                }
549
                }
499
        }
550
        }
500
       
-
 
-
 
551

501
        private Boolean diferencaMaiorEmDias(Integer quantidadeDias, Date dataAnterior, Date dataPosterior) {
552
        private Boolean diferencaMaiorEmDias(Integer quantidadeDias, Date dataAnterior, Date dataPosterior) {
502
                Date dataComDias = DataUtils.acrescentarDias(dataAnterior, quantidadeDias);
553
                Date dataComDias = DataUtils.acrescentarDias(dataAnterior, quantidadeDias);
503
                return dataComDias.before(dataPosterior);
554
                return dataComDias.before(dataPosterior);
504
        }
555
        }
505

556

Line 533... Line 584...
533
        @Override
584
        @Override
534
        public void realizarContagemDireta(ProdutoLoja produtoLoja, Integer quantidadeEstoque, String localizacao, Usuario usuario, Boolean indicadorAvaria) {
585
        public void realizarContagemDireta(ProdutoLoja produtoLoja, Integer quantidadeEstoque, String localizacao, Usuario usuario, Boolean indicadorAvaria) {
535
                if (VerificadorUtil.estaNulo(quantidadeEstoque)) {
586
                if (VerificadorUtil.estaNulo(quantidadeEstoque)) {
536
                        throw new NegocioException("É preciso informar o estoque");
587
                        throw new NegocioException("É preciso informar o estoque");
537
                }
588
                }
538
                verificarSeUsuarioLogadoEhVendedorOuSuperior(usuario);
-
 
539
                verificarSeProdutoPossuiTransferenciasAbertas(produtoLoja);
-
 
-
 
589
//              verificarSeUsuarioLogadoEhVendedorOuSuperior(usuario);
-
 
590
//              verificarSeProdutoPossuiTransferenciasAbertas(produtoLoja);
540
                Integer quantidadeEstoqueAnterior = produtoLoja.getQuantidadeEstoque();
591
                Integer quantidadeEstoqueAnterior = produtoLoja.getQuantidadeEstoque();
541
                Integer quantidadeEstoqueNovo = quantidadeEstoque;
592
                Integer quantidadeEstoqueNovo = quantidadeEstoque;
542
                produtoLoja.setLocalizacao(localizacao);
593
                produtoLoja.setLocalizacao(localizacao);
543
                produtoLoja.setDataContagemPreparacao(DataUtils.getDataAtual());
594
                produtoLoja.setDataContagemPreparacao(DataUtils.getDataAtual());
544
                produtoLoja.setDataContagem(DataUtils.getDataAtual());
595
                produtoLoja.setDataContagem(DataUtils.getDataAtual());