package br.com.ec.domain.service.produto;
import java.util.Date;
import java.util.List;
import br.com.ec.core.generic.GenericService;
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.EstoqueAuditoria;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Modelo;
import br.com.ec.domain.model.Produto;
import br.com.ec.domain.model.ProdutoLoja;
import br.com.ec.domain.model.Usuario;
public interface ProdutoService
extends GenericService
<Produto
> {
List<Produto
> consultarProdutoPorParametros
(ParametrosConsultaProdutoDTO parametrosConsultaProduto
);
List<Produto
> consultarCompativeis
(Produto produto
);
Produto detalharProduto
(Produto produto
);
Produto consultarProdutoPorCodigoOuCodigoEAN
(String codigoProduto
);
Produto consultarProdutoPorCodigoRapidoOuCodigoEAN
(String codigoRapidoOuCodigoEAN
);
Produto consultarProdutoPorCodigo
(String codigoProduto
);
Produto consultarProdutoPorCodigoEAN
(String codigoEAN
);
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 lancarAvarias
(EstoqueAuditoria estoqueAuditoria, Loja loja, Produto produto, Usuario usuario,
Integer quantidadeParaAvaria
);
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
);
}