package br.com.ec.domain.service;
import java.util.List;
import br.com.ec.core.generic.GenericService;
import br.com.ec.domain.dto.CompraProdutoDTO;
import br.com.ec.domain.dto.LojaDTO;
import br.com.ec.domain.dto.ProdutoDTO;
import br.com.ec.domain.dto.UsuarioDTO;
import br.com.ec.domain.model.Produto;
public interface ProdutoService
extends GenericService
<Produto
> {
Produto consultarProdutoPorCodigo
(String codigoProduto
);
ProdutoDTO consultarProdutoDTOPorCodigoOuCodigoEAN
(String codigoProduto
);
List<CompraProdutoDTO
> consultarComprasDoProduto
(Long sequencial
);
void realizarProducao
(LojaDTO lojaDTO, ProdutoDTO produtoParaProduzir, ProdutoDTO produtoProduzido,
Integer quantidadeParaProduzir, UsuarioDTO usuarioContagemDTO
);
List<ProdutoDTO
> consultarProdutosDoFornecedor
(Long sequencialFornecedor
);
/*
List<Produto> consultarProdutoPorParametros(ParametrosConsultaProdutoDTO parametrosConsultaProduto);
List<Produto> consultarCompativeis(Produto produto);
Produto detalharProduto(Produto produto);
Produto consultarProdutoPorCodigoRapidoOuCodigoEAN(String codigoRapidoOuCodigoEAN);
Produto consultarProdutoPorCodigoEAN(String codigoEAN);
Produto consultarProdutoPorCodigoOuCodigoEAN(String codigoProduto);
Produto consultarProdutoPorCodigoRapido(String codigoProdutoRapido);
Long consultarUltimoCodigo();
Produto consultarProdutoPorCodigoParaContagem(String codigoProduto, Loja loja, Usuario usuario);
void lancarAvaria(EstoqueAuditoria estoqueAuditoria, Loja loja, Produto produto, Usuario usuario);
void lancarTroca(EstoqueAuditoria estoqueAuditoria, Loja loja, Produto produto, Usuario usuario);
void desativarProduto(Produto entidade);
void ativarProduto(Produto entidade);
void realizarContagem(ProdutoLoja produtoLoja, Integer quantidadeEstoque, String localizacao, Usuario usuario, Boolean indicadorAvaria);
void realizarContagemDireta(ProdutoLoja produtoLoja, Integer quantidadeEstoque, String localizacao, Usuario usuario, Boolean indicadorAvaria);
@Deprecated
void realizarContagem(Produto produto, Loja loja);
void transferirEstoque(Loja lojaEntrada, Loja lojaSaida, Usuario obterUsuario, Produto entidade, Integer quantidadeEstoque);
Integer quantidadeTotalEstoque(Loja loja);
Double valorTotalEstoque(Loja loja, Modelo modelo);
Integer quantidadeEstoque(ParametrosConsultaProdutoDTO parametrosConsulta);
Integer quantidadeEstoque(ParametrosConsultaProdutoDTO parametrosConsulta, Long sequencialLoja);
Integer quantidadeParaContagem(Loja loja);
Integer solicitarContagem(ParametrosConsultaProdutoDTO parametrosConsulta);
void cancelarContagem(ParametrosConsultaProdutoDTO parametrosConsulta);
void zerarEstoque(ParametrosConsultaProdutoDTO parametrosConsulta, Usuario usuario);
List<ProdutoHistoricoDTO> consultarHistorico(Produto produto, Integer ultimosMeses);
List<ProdutoHistoricoDetalhesDTO> detalharHistorico(ProdutoHistoricoDTO produtoHistorico);
Integer quantidadeProdutosParaRetirarDoOnline(Loja loja);
Integer quantidadeProdutosParaRetirarDoOnlineMatriz();
Integer quantidadeProdutosParaRetirarDoOnlineShoplog();
Date dataUltimaVenda(Produto produto);
Integer quantidadeProdutosAdicionadosSite(Date dataInicial, Date dataFinal);
Integer quantidadeProdutosOnline();
Integer quantidadeProdutosFavoritosOffline(Loja loja);
void verificarPedidosProdutoParaEntrarEmContato(Produto produto, Long sequencialCompra);
*/
}