package br.com.ec.infrastructure.repository;
import java.util.Date;
import java.util.List;
import br.com.ec.core.generic.GenericRepository;
import br.com.ec.domain.dto.ParametrosConsultaProdutoDTO;
import br.com.ec.domain.dto.ProdutoHistoricoDTO;
import br.com.ec.domain.dto.ProdutoHistoricoDetalhesDTO;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Modelo;
import br.com.ec.domain.model.Produto;
public interface ProdutoRepository
extends GenericRepository
<Produto
> {
List<Produto
> consultarProdutoPorParametros
(ParametrosConsultaProdutoDTO parametrosConsultaProduto
);
List<Produto
> consultarCompativeis
(Produto produto
);
Produto detalharProduto
(Produto produto
);
Produto consultarProdutoPorCodigo
(String codigoProduto
);
Produto consultarProdutoPorCodigoEAN
(String codigoEAN
);
Produto consultarProdutoPorCodigoRapido
(String codigoRapido
);
Long consultarUltimoCodigo
();
Integer quantidadeTotalEstoque
(Loja loja
);
Double valorTotalEstoque
(Loja loja, Modelo modelo
);
Integer quantidadeEstoque
(ParametrosConsultaProdutoDTO parametrosConsulta
);
Integer quantidadeEstoque
(ParametrosConsultaProdutoDTO parametrosConsulta,
Long sequencialLoja
);
List<ProdutoHistoricoDTO
> consultarHistoricoDeEntradas
(Produto produto, Loja loja,
Date dataInicial,
Date dataFinal
);
List<ProdutoHistoricoDTO
> consultarHistoricoDeSaidas
(Produto produto, Loja loja,
Date dataInicial,
Date dataFinal
);
List<ProdutoHistoricoDTO
> consultarHistorico
(Produto produto,
Date dataInicial,
Date dataFinal
);
List<ProdutoHistoricoDetalhesDTO
> detalharHistorico
(ProdutoHistoricoDTO produtoHistorico,
Date dataInicial,
Date dataFinal
);
Date dataUltimaVenda
(Produto produto
);
Integer quantidadeProdutosAdicionadosSite
(Date dataInicial,
Date dataFinal
);
Integer quantidadeProdutosOnline
();
Integer quantidadeProdutosFavoritosOffline
(Loja loja
);
// Integer quantidadeContagens(Long sequencialLoja);
}