Subversion Repositories Integrator Subversion

Rev

Rev 574 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
574 blopes 1
package br.com.ec.domain.service.impl;
2
 
3
import java.util.ArrayList;
4
import java.util.List;
5
 
6
import org.springframework.beans.factory.annotation.Autowired;
7
import org.springframework.stereotype.Service;
8
 
575 blopes 9
import br.com.ec.core.exception.NegocioException;
574 blopes 10
import br.com.ec.core.generic.AbstractService;
11
import br.com.ec.core.generic.GenericRepository;
12
import br.com.ec.core.util.DataUtils;
575 blopes 13
import br.com.ec.core.util.VerificadorUtil;
574 blopes 14
import br.com.ec.core.validador.Validador;
15
import br.com.ec.domain.dto.AnaliseComprasProdutosDTO;
16
import br.com.ec.domain.dto.AnaliseVendaProdutoDTO;
17
import br.com.ec.domain.dto.FornecedorDTO;
18
import br.com.ec.domain.dto.ProdutoDTO;
19
import br.com.ec.domain.model.Compra;
20
import br.com.ec.domain.service.CompraService;
21
import br.com.ec.domain.service.ParcelaService;
575 blopes 22
import br.com.ec.domain.service.ProdutoService;
574 blopes 23
import br.com.ec.repository.CompraRepository;
24
 
25
@Service
26
public class CompraServiceImpl extends AbstractService<Compra> implements CompraService {
27
 
28
        private ParcelaService parcelaService;
575 blopes 29
        private ProdutoService produtoService;
574 blopes 30
        private CompraRepository compraRepository;
31
 
32
        @Autowired
575 blopes 33
        public CompraServiceImpl(Validador validador, ParcelaService parcelaService, ProdutoService produtoService,
34
                        CompraRepository compraRepository) {
574 blopes 35
                super(validador);
36
                this.parcelaService = parcelaService;
575 blopes 37
                this.produtoService = produtoService;
574 blopes 38
                this.compraRepository = compraRepository;
39
        }
40
 
41
        @Override
42
        protected GenericRepository<Compra> getRepository() {
43
                return compraRepository;
44
        }
45
 
46
        @Override
47
        public AnaliseComprasProdutosDTO gerarComprasAutomaticamente(FornecedorDTO fornecedorDTO) {
575 blopes 48
                if (VerificadorUtil.estaNulo(fornecedorDTO)) {
49
                        throw new NegocioException("INFORME O FORNECEDOR");
50
                }
574 blopes 51
 
52
                AnaliseComprasProdutosDTO analiseComprasProdutosDTO = new AnaliseComprasProdutosDTO();
53
 
54
                List<AnaliseVendaProdutoDTO> analisesVendaProdutoDTO = new ArrayList<AnaliseVendaProdutoDTO>();
55
 
575 blopes 56
                // CONSULTAR TODOS OS PRODUTOS DO FORNECEDOR INFORMADO
57
                // LISTAR PRODUTOS SEM PEDIDOS DE 'NÃO COMPRAR' 
58
                List<ProdutoDTO> produtosParaAnalise = produtoService.consultarProdutosDoFornecedor(fornecedorDTO.getSequencial());
59
 
60
                for (ProdutoDTO produtoDTO : produtosParaAnalise) {
61
                        AnaliseVendaProdutoDTO analiseVendaProdutoDTO = new AnaliseVendaProdutoDTO();
62
                        analiseVendaProdutoDTO.setProdutoDTO(produtoDTO);
63
 
64
                        // VERIFICAR ÚLTIMA DATA DE COMPRA DO PRODUTO
65
                        // VERIFICAR QUANTIDADE DE VENDAS REALIZADAS EM 3 MESES, APÓS A ÚLTIMA DATA DE COMPRA
66
                        // VERIFICAR A QUANTIDADE DE PRODUTOS VENDIDOS POR MÊS EM 3 MESES OU ATÉ A DATA DA ÚLTIMA VENDA, A QUE FOR MENOR;
67
                        analiseVendaProdutoDTO.setQuantidadeEstoque(5);
68
                        analiseVendaProdutoDTO.setQuantidadeVendas(15);
69
                        analiseVendaProdutoDTO.setQuantidadeDiasParaComprar(90);
70
                        analiseVendaProdutoDTO.setQuantidadeVendasAposCompra(20);
71
                        analiseVendaProdutoDTO.setDataUltimaCompra(DataUtils.converterStringParaData("16/03/2024"));
72
                        analiseVendaProdutoDTO.setDataUltimaVenda(DataUtils.converterStringParaData("16/03/2024"));
73
 
74
                        analisesVendaProdutoDTO.add(analiseVendaProdutoDTO);
75
                }
76
 
77
                analiseComprasProdutosDTO.setAnalisesVendaProdutoDTO(analisesVendaProdutoDTO);
78
                // SUGERIR A COMPRA DE PRODUTOS POR 90 DIAS, COM UM TEMPO DE ESTOQUE INFERIOR À 15 DIAS
79
 
80
                /*
574 blopes 81
                ProdutoDTO produtoDTO = new ProdutoDTO(new Long(35479), "032132", "KIT CARREGADOR VEICULAR CABO DE DADOS MICRO USB V8 3.4A 1M HREBOS HS-98");
82
                analiseVendaProdutoDTO.setProdutoDTO(produtoDTO);
83
                analiseVendaProdutoDTO.setQuantidadeEstoque(5);
84
                analiseVendaProdutoDTO.setQuantidadeVendas(15);
575 blopes 85
                analiseVendaProdutoDTO.setQuantidadeDiasParaComprar(90);
86
                analiseVendaProdutoDTO.setQuantidadeVendasAposCompra(20);
87
                analiseVendaProdutoDTO.setDataUltimaCompra(DataUtils.converterStringParaData("16/03/2024"));
88
                analiseVendaProdutoDTO.setDataUltimaVenda(DataUtils.converterStringParaData("16/03/2024"));
574 blopes 89
 
90
//              FAZER EXEMPLOS SEM O PEDIDO DE COMPRA
91
//              ProdutoPedidoCompraDTO produtoPedidoCompraDTO = new ProdutoPedidoCompraDTO();
92
                analiseVendaProdutoDTO.setProdutoPedidoCompraDTO(null);
93
 
94
                FornecedorDTO fornecedorConsultaDTO = new FornecedorDTO();
95
                analiseVendaProdutoDTO.setFornecedorDTO(fornecedorConsultaDTO);
96
 
97
                analisesVendaProdutoDTO.add(analiseVendaProdutoDTO);
98
 
99
                analiseComprasProdutosDTO.setAnalisesVendaProdutoDTO(analisesVendaProdutoDTO);
575 blopes 100
                */
574 blopes 101
                return analiseComprasProdutosDTO;
102
        }
103
 
104
        /*
105
        @Override
106
        public Compra consultarCompraDaConta(Conta conta) {
107
                return compraRepository.consultarCompraDaConta(conta);
108
        }
109
 
110
        @Override
111
        public void adicionarParcelasNaCompra(Compra compra, List<Parcela> listaParcelas) {
112
                parcelaService.cadastrarContaComParcelasNaCompra(compra, listaParcelas);
113
                alterar(compra);
114
        }
115
 
116
        @Override
117
        public void vincularConta(Compra compra, Conta conta) {
118
                if (VerificadorUtil.estaNulo(conta)) {
119
                        throw new NegocioException("CONTA NÃO EXISTE");
120
                }
121
                compra.setConta(conta);
122
                alterar(compra);
123
        }
124
 
125
        @Override
126
        public void desvincularConta(Compra compra) {
127
                compra.setConta(null);
128
                alterar(compra);
129
        }
130
 
131
        @Override
132
        public void cadastrar(Compra compra) {
133
                if (VerificadorUtil.estaNulo(compra.getFornecedor())) {
134
                        throw new NegocioException("OBRIGATÓRIO INFORMAR O FORNECEDOR");
135
                }
136
                super.cadastrar(compra);
137
        }
138
        */
139
}