package br.com.ec.domain.service.venda;
import java.util.Date;
import java.util.List;
import java.util.Map;
import br.com.ec.core.consulta.ParametrosConsulta;
import br.com.ec.core.generic.GenericService;
import br.com.ec.domain.dto.GraficoAcumuladoDTO;
import br.com.ec.domain.dto.ParametrosConsultaModelosMaisVendidosDTO;
import br.com.ec.domain.dto.ParametrosConsultaParaComprasTransferenciasDTO;
import br.com.ec.domain.dto.ParametrosConsultaProdutosVendidosDTO;
import br.com.ec.domain.dto.ParametrosConsultaVendasDTO;
import br.com.ec.domain.dto.ParametrosVendaDTO;
import br.com.ec.domain.dto.RankingComprasTransferenciasDTO;
import br.com.ec.domain.dto.RankingComprasTransferenciasEstiloDTO;
import br.com.ec.domain.dto.RankingLojaDTO;
import br.com.ec.domain.dto.RankingModeloDTO;
import br.com.ec.domain.dto.RankingProdutoDTO;
import br.com.ec.domain.dto.RankingVendedorDTO;
import br.com.ec.domain.dto.VendasDTO;
import br.com.ec.domain.model.FormaPagamento;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Marca;
import br.com.ec.domain.model.Modelo;
import br.com.ec.domain.model.Produto;
import br.com.ec.domain.model.Usuario;
import br.com.ec.domain.model.Venda;
import br.com.ec.domain.model.Vendedor;
import br.com.ec.domain.model.Vigencia;
public interface VendaService
extends GenericService
<Venda
> {
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
);
Double obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento
(ParametrosConsultaVendasDTO parametrosConsultaVendas,
List<FormaPagamento
> formasDePagamento
);
Double obterValorTotalLiquidoDeVendasPorLojaEePeriodo
(ParametrosConsultaVendasDTO parametrosConsultaVendas
);
Integer obterQuantidadeProdutosVendidosPorLojaEePeriodo
(ParametrosConsultaVendasDTO parametrosConsultaVendas
);
Integer obterQuantidadeProdutosVendidosPorLojaEePeriodoNaoVivo
(ParametrosConsultaVendasDTO parametrosConsultaVendas
);
Double obterValorProdutosUtilizadosEmVendasPorLojaEePeriodo
(ParametrosConsultaVendasDTO parametrosConsulta
);
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
> consultarProdutosVendidos
(ParametrosConsultaProdutosVendidosDTO parametrosConsulta
);
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
(ParametrosConsultaModelosMaisVendidosDTO parametrosConsulta
);
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
);
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
);
}