Subversion Repositories Integrator Subversion

Rev

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

package br.com.ec.domain.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.ec.core.exception.NegocioException;
import br.com.ec.core.generic.AbstractService;
import br.com.ec.core.generic.GenericRepository;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.core.validador.Validador;
import br.com.ec.domain.dto.AnaliseComprasProdutosDTO;
import br.com.ec.domain.dto.AnaliseVendaProdutoDTO;
import br.com.ec.domain.dto.FornecedorDTO;
import br.com.ec.domain.dto.ProdutoDTO;
import br.com.ec.domain.model.Compra;
import br.com.ec.domain.service.CompraService;
import br.com.ec.domain.service.ParcelaService;
import br.com.ec.domain.service.ProdutoService;
import br.com.ec.repository.CompraRepository;

@Service
public class CompraServiceImpl extends AbstractService<Compra> implements CompraService {
               
        private ParcelaService parcelaService;
        private ProdutoService produtoService;
        private CompraRepository compraRepository;

        @Autowired
        public CompraServiceImpl(Validador validador, ParcelaService parcelaService, ProdutoService produtoService,
                        CompraRepository compraRepository) {
                super(validador);
                this.parcelaService = parcelaService;
                this.produtoService = produtoService;
                this.compraRepository = compraRepository;
        }

        @Override
        protected GenericRepository<Compra> getRepository() {
                return compraRepository;
        }
       
        @Override
        public AnaliseComprasProdutosDTO gerarComprasAutomaticamente(FornecedorDTO fornecedorDTO) {
                if (VerificadorUtil.estaNulo(fornecedorDTO)) {
                        throw new NegocioException("INFORME O FORNECEDOR");
                }
               
                AnaliseComprasProdutosDTO analiseComprasProdutosDTO = new AnaliseComprasProdutosDTO();
               
                List<AnaliseVendaProdutoDTO> analisesVendaProdutoDTO = new ArrayList<AnaliseVendaProdutoDTO>();
               
                // CONSULTAR TODOS OS PRODUTOS DO FORNECEDOR INFORMADO
                // LISTAR PRODUTOS SEM PEDIDOS DE 'NÃO COMPRAR'
                List<ProdutoDTO> produtosParaAnalise = produtoService.consultarProdutosDoFornecedor(fornecedorDTO.getSequencial());
               
                for (ProdutoDTO produtoDTO : produtosParaAnalise) {
                        AnaliseVendaProdutoDTO analiseVendaProdutoDTO = new AnaliseVendaProdutoDTO();
                        analiseVendaProdutoDTO.setProdutoDTO(produtoDTO);
                       
                        // VERIFICAR ÚLTIMA DATA DE COMPRA DO PRODUTO
                        // VERIFICAR QUANTIDADE DE VENDAS REALIZADAS EM 3 MESES, APÓS A ÚLTIMA DATA DE COMPRA
                        // VERIFICAR A QUANTIDADE DE PRODUTOS VENDIDOS POR MÊS EM 3 MESES OU ATÉ A DATA DA ÚLTIMA VENDA, A QUE FOR MENOR;
                        analiseVendaProdutoDTO.setQuantidadeEstoque(5);
                        analiseVendaProdutoDTO.setQuantidadeVendas(15);
                        analiseVendaProdutoDTO.setQuantidadeDiasParaComprar(90);
                        analiseVendaProdutoDTO.setQuantidadeVendasAposCompra(20);
                        analiseVendaProdutoDTO.setDataUltimaCompra(DataUtils.converterStringParaData("16/03/2024"));
                        analiseVendaProdutoDTO.setDataUltimaVenda(DataUtils.converterStringParaData("16/03/2024"));
                       
                        analisesVendaProdutoDTO.add(analiseVendaProdutoDTO);
                }
               
                analiseComprasProdutosDTO.setAnalisesVendaProdutoDTO(analisesVendaProdutoDTO);
                // SUGERIR A COMPRA DE PRODUTOS POR 90 DIAS, COM UM TEMPO DE ESTOQUE INFERIOR À 15 DIAS
               
                /*
                ProdutoDTO produtoDTO = new ProdutoDTO(new Long(35479), "032132", "KIT CARREGADOR VEICULAR CABO DE DADOS MICRO USB V8 3.4A 1M HREBOS HS-98");
                analiseVendaProdutoDTO.setProdutoDTO(produtoDTO);
                analiseVendaProdutoDTO.setQuantidadeEstoque(5);
                analiseVendaProdutoDTO.setQuantidadeVendas(15);
                analiseVendaProdutoDTO.setQuantidadeDiasParaComprar(90);
                analiseVendaProdutoDTO.setQuantidadeVendasAposCompra(20);
                analiseVendaProdutoDTO.setDataUltimaCompra(DataUtils.converterStringParaData("16/03/2024"));
                analiseVendaProdutoDTO.setDataUltimaVenda(DataUtils.converterStringParaData("16/03/2024"));
               
//              FAZER EXEMPLOS SEM O PEDIDO DE COMPRA
//              ProdutoPedidoCompraDTO produtoPedidoCompraDTO = new ProdutoPedidoCompraDTO();
                analiseVendaProdutoDTO.setProdutoPedidoCompraDTO(null);
               
                FornecedorDTO fornecedorConsultaDTO = new FornecedorDTO();
                analiseVendaProdutoDTO.setFornecedorDTO(fornecedorConsultaDTO);
               
                analisesVendaProdutoDTO.add(analiseVendaProdutoDTO);
               
                analiseComprasProdutosDTO.setAnalisesVendaProdutoDTO(analisesVendaProdutoDTO);
                */

                return analiseComprasProdutosDTO;
        }
       
        /*
        @Override
        public Compra consultarCompraDaConta(Conta conta) {
                return compraRepository.consultarCompraDaConta(conta);
        }
       
        @Override
        public void adicionarParcelasNaCompra(Compra compra, List<Parcela> listaParcelas) {
                parcelaService.cadastrarContaComParcelasNaCompra(compra, listaParcelas);
                alterar(compra);
        }
       
        @Override
        public void vincularConta(Compra compra, Conta conta) {
                if (VerificadorUtil.estaNulo(conta)) {
                        throw new NegocioException("CONTA NÃO EXISTE");
                }
                compra.setConta(conta);
                alterar(compra);
        }
       
        @Override
        public void desvincularConta(Compra compra) {
                compra.setConta(null);
                alterar(compra);
        }
       
        @Override
        public void cadastrar(Compra compra) {
                if (VerificadorUtil.estaNulo(compra.getFornecedor())) {
                        throw new NegocioException("OBRIGATÓRIO INFORMAR O FORNECEDOR");
                }
                super.cadastrar(compra);
        }
        */

}