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.generic.AbstractService;
import br.com.ec.core.generic.GenericRepository;
import br.com.ec.core.util.DataUtils;
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.repository.CompraRepository;
@Service
public class CompraServiceImpl
extends AbstractService
<Compra
> implements CompraService
{
private ParcelaService parcelaService
;
private CompraRepository compraRepository
;
@Autowired
public CompraServiceImpl
(Validador validador, ParcelaService parcelaService, CompraRepository compraRepository
) {
super(validador
);
this.
parcelaService = parcelaService
;
this.
compraRepository = compraRepository
;
}
@
Override
protected GenericRepository
<Compra
> getRepository
() {
return compraRepository
;
}
@
Override
public AnaliseComprasProdutosDTO gerarComprasAutomaticamente
(FornecedorDTO fornecedorDTO
) {
// VERIFICAR PRODUTOS:
// VENDAS À PARTIR DE 2023
// VERIFICAR ÚLTIMA DATA DE COMPRA DO PRODUTO
// VERIFICAR A QUANTIDADE DE PRODUTOS VENDIDOS POR MÊS EM 3 MESES OU ATÉ A DATA DA ÚLTIMA VENDA, A QUE FOR MENOR;
// LISTAR PRODUTOS COM UM TEMPO DE ESTOQUE INFERIOR À 15 DIAS, SEM INFORMAÇÃO DE PEDIDOS DE 'NÃO COMPRAR' OU 'SOLICITADO'
AnaliseComprasProdutosDTO analiseComprasProdutosDTO =
new AnaliseComprasProdutosDTO
();
List<AnaliseVendaProdutoDTO
> analisesVendaProdutoDTO =
new ArrayList<AnaliseVendaProdutoDTO
>();
AnaliseVendaProdutoDTO analiseVendaProdutoDTO =
new AnaliseVendaProdutoDTO
();
// 6 3 0 3 09/03/2022 2024-03-16 12:18:54.193-03 XINXIN CAPAS 35479 32132 KIT CARREGADOR VEICULAR CABO DE DADOS MICRO USB V8 3.4A 1M HREBOS HS-98 18.00 60.00 true 1 K U false BR true false 12 40.00 false false
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.
setDataUltimaCompra(DataUtils.
converterStringParaData("2024-03-16"));
analiseVendaProdutoDTO.
setDataUltimaVenda(DataUtils.
converterStringParaData("2024-03-16"));
// 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);
}
*/
}