package br.com.ec.domain.service;
import java.util.Date;
import java.util.List;
import br.com.ec.core.generic.GenericService;
import br.com.ec.domain.dto.AuditoriaVendaDTO;
import br.com.ec.domain.dto.FormaPagamentoDTO;
import br.com.ec.domain.dto.RankingComprasTransferenciasDTO;
import br.com.ec.domain.dto.RankingComprasTransferenciasEstiloDTO;
import br.com.ec.domain.dto.RankingComprasTransferenciasEstiloPorLojaDTO;
import br.com.ec.domain.dto.RankingModeloDTO;
import br.com.ec.domain.dto.RankingProdutoDTO;
import br.com.ec.domain.dto.RankingProdutoDTONovo;
import br.com.ec.domain.dto.RankingTransferenciasModeloDTO;
import br.com.ec.domain.dto.VendaDTO;
import br.com.ec.domain.dto.consulta.ParametrosConsultaModelosMaisVendidosDTO;
import br.com.ec.domain.dto.consulta.ParametrosConsultaPorPeriodoDTO;
import br.com.ec.domain.dto.consulta.ParametrosConsultaProdutosVendidosDTO;
import br.com.ec.domain.dto.consulta.ParametrosConsultaVendasDTO;
import br.com.ec.domain.model.Venda;
public interface VendaService
extends GenericService
<Venda
> {
Double obterValorTotalBrutoDeVendas
(ParametrosConsultaVendasDTO parametrosConsultaVendas
);
Integer obterQuantidadeDeVendasPorLojaEePeriodo
(Long sequencialLoja,
Date dataInicial,
Date dataFinal
);
Integer obterQuantidadeDeVendasNovasPorLojaEePeriodo
(Long sequencialLoja,
Date dataInicial,
Date dataFinal
);
Double obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento
(ParametrosConsultaVendasDTO parametrosConsultaVendas,
List<FormaPagamentoDTO
> formasDePagamento
);
Double obterValorDeMaquinetasPorPessoa
(Long sequencialPessoaMaquineta,
Date dataInicio,
Date dataFim
);
Double obterValorTotalLiquidoDeVendas
(ParametrosConsultaVendasDTO parametrosConsultaVendas
);
Double obterValorProdutosUtilizadosEmVendas
(ParametrosConsultaVendasDTO parametrosConsulta
);
List<AuditoriaVendaDTO
> consultarAuditoriaVenda
(Date dataSelecionada,
Long sequencialLojaSelecionada
);
List<RankingComprasTransferenciasDTO
> consultarRankingComprasTransferencias
(Integer quantidadeDiasVendas,
Integer quantidadeDiasParaAlerta,
List<RankingModeloDTO
> rankingModelosMaisVendidos,
Boolean consultarPorLoja
);
List<RankingModeloDTO
> consultarRankingModelos
(ParametrosConsultaModelosMaisVendidosDTO parametrosConsulta,
Boolean adicionarTodosModelosFavoritos
);
List<RankingComprasTransferenciasEstiloDTO
> consultarRankingPorEstilo
(Long sequencialModelo, ParametrosConsultaPorPeriodoDTO parametrosConsultaPorPeriodoDTO
);
List<RankingComprasTransferenciasEstiloPorLojaDTO
> consultarRankingPorEstiloPorLoja
(Long sequencialLoja,
String tipoEstilo, ParametrosConsultaPorPeriodoDTO parametrosConsultaPorPeriodoDTO
);
List<RankingProdutoDTO
> consultarProdutosVendidos
(ParametrosConsultaProdutosVendidosDTO parametrosConsulta
);
List<RankingProdutoDTONovo
> consultarProdutosDTOVendidos
(ParametrosConsultaProdutosVendidosDTO parametrosConsulta
);
List<RankingTransferenciasModeloDTO
> consultarModelosParaRedistribuicao
();
VendaDTO detalharPorSequencial
(Long sequencialVenda
);
/*
Venda detalharVenda(Venda venda);
Venda detalharVendaCompleta(Venda venda);
void excluirVenda(Venda venda, Usuario usuario);
Venda cadastrarVendaPeloPDV(ParametrosVendaDTO parametrosVenda);
void alterarVenda(ParametrosVendaDTO parametrosVenda, Usuario usuario, Boolean verificarJustificativa);
List<Venda> consultarVendasDoDia(Long sequencialLoja, Date dataVendas);
Integer obterQuantidadeDeVendasPorLojaEePeriodo(Venda venda, Date dataInicial, Date dataFinal);
Double obterValorTotalBrutoDeVendasPorLojaEePeriodo(Loja loja, Date dataInicial, Date dataFinal);
Double obterValorTotalBrutoDeVendasPorLojaEePeriodo(ParametrosConsultaVendasDTO parametrosConsultaVendas);
Double obterValorTotalBrutoDeVendasPorLojaEePeriodoServicos(ParametrosConsultaVendasDTO parametrosConsultaVendas);
Double obterValorTotalDeDescontosPorLojaEePeriodo(ParametrosConsultaVendasDTO parametrosConsultaVendas);
Integer obterQuantidadeProdutosVendidosPorLojaEePeriodo(ParametrosConsultaVendasDTO parametrosConsultaVendas);
Integer obterQuantidadeProdutosVendidosPorLojaEePeriodoNaoVivo(ParametrosConsultaVendasDTO parametrosConsultaVendas);
List<Venda> consultarVendasPorDemanda(ParametrosConsulta<Venda> parametrosConsulta, Integer primeiroRegistro,
Integer tamanhoPagina, String sortField, String orderSort, Map<String, Object> filters);
List<Venda> consultarVendaPorParametros(ParametrosConsultaVendasDTO parametrosConsultaVendas);
GraficoAcumuladoDTO consultarGrafico(String mes, String ano);
List<RankingVendedorDTO> consultarRankingVendedores(Date dataInicial, Date dataFinal, Boolean produtosComissionados, Loja lojaSelecionada);
RankingVendedorDTO consultarRankingVendedor(Vendedor vendedor, Vigencia vigencia, Boolean produtosComissionados);
RankingVendedorDTO consultarRankingVendedor(Vendedor vendedor, Date dataInicial, Date dataFinal, Boolean produtosComissionados);
List<RankingLojaDTO> consultarRankingLojas(Date dataInicial, Date dataFinal);
List<RankingLojaDTO> consultarRankingLojasCompleto(Date dataInicial, Date dataFinal);
List<RankingLojaDTO> consultarRankingLojasExtras(Date dataInicial, Date dataFinal);
List<RankingProdutoDTO> consultarProdutosVendidosResumido(ParametrosConsultaProdutosVendidosDTO parametrosConsulta);
List<RankingProdutoDTO> consultarProdutosParaTransferir(ParametrosConsultaProdutosVendidosDTO parametrosConsulta);
List<RankingProdutoDTO> consultarRankingProdutos(Date dataInicial, Date dataFinal, Integer quantidadeProdutos, String tipoOrdenacao, Long sequencialLoja, String tipoProduto, Produto produto, Marca marca);
List<RankingModeloDTO> consultarRankingModelos(Date dataInicial, Date dataFinal, Integer quantidadeModelos, String tipoOrdenacao, String tipoProduto, Long sequencialLoja);
List<RankingComprasTransferenciasDTO> consultarPlanejamentoParaCompras(ParametrosConsultaParaComprasTransferenciasDTO parametrosParaConsulta);
List<RankingComprasTransferenciasEstiloDTO> consultarDetalhamentoPlanejamentoParaCompras(ParametrosConsultaParaComprasTransferenciasDTO parametrosParaConsulta, Modelo modelo);
List<RankingVendedorDTO> consultarRankingPromocaoInterna(Date dataInicial, Date dataFinal, List<Produto> produtosPromocaoInterna);
RankingVendedorDTO consultarRankingPromocaoInternaDoVendedor(Vendedor vendedor, Date dataInicial, Date dataFinal, List<Produto> produtosPromocaoInterna);
List<VendasDTO> consultarVendas(ParametrosConsultaVendasDTO parametrosConsultaVendasDTO);
Integer obterQuantidadeProdutosVendidosPorEstiloEeGenero(Date dataInicial, Date dataFinal, Long sequencialLoja, Long sequencialModelo, String tipoProduto, String estiloProduto, String tipoGenero);
*/
}