package br.com.ec.domain.service;
import java.util.List;
import org.primefaces.model.StreamedContent;
import br.com.ec.core.generic.GenericService;
import br.com.ec.domain.dto.NotaFiscalDTO;
import br.com.ec.domain.dto.NotaFiscalProdutoDTO;
import br.com.ec.domain.dto.NotasFiscaisEmitidasDTO;
import br.com.ec.domain.dto.VigenciaDTO;
import br.com.ec.domain.dto.consulta.ParametrosConsultaNotaFiscal;
import br.com.ec.domain.model.NotaFiscal;
import br.com.ec.domain.model.Pessoa;
import br.com.ec.domain.model.Venda;
public interface NotaFiscalService
extends GenericService
<NotaFiscal
> {
NotaFiscal detalhar
(Long sequencialNotaFiscal
);
List<String> consultarNcms
(ParametrosConsultaNotaFiscal parametrosConsultaNotaFiscalDTO
);
NotasFiscaisEmitidasDTO consultarValores
(VigenciaDTO vigenciaDTO
);
void desvincularVenda
(Long sequencialNotaFiscal
);
Venda vincularVenda
(Long sequencialNotaFiscal,
Long sequencialVendaParaVinculo
);
StreamedContent gerarDanfeNfe
(Long sequencialNotaFiscal
);
StreamedContent gerarDanfeNfePreVisualizacao
(Long sequencialNotaFiscal
);
List<NotaFiscalProdutoDTO
> consultarProdutosVinculados
(Long sequencialNotaFiscal
);
NotaFiscalDTO consultarPorChave
(String chave
);
void emitirNotaFiscalEletronica
(NotaFiscal notaFiscal
);
void cancelarNotaFiscalEletronica
(NotaFiscal notaFiscal
);
String retornarStatusSefaz
();
Long consultarProximoNumeroNotaFiscal
(String tipoNotaFiscal, Pessoa pessoaEmitente
);
// List<String> consultarXmlsNotasFiscais(ParametrosConsultaNotaFiscalDTO parametrosConsultaNotaFiscalDTO);
// List<nfce.TNfeProc> consultarNotasFiscais(ParametrosConsultaNotaFiscalDTO parametrosConsultaNotaFiscalDTO);
/*
NotaFiscal consultarPelaChaveEeTipo(String chave, String tipoNotaFiscal);
NotaFiscal consultarPeloNumeroEeTipo(Long numeroNotaFiscal, String tipoNotaFiscal);
NotaFiscal consultarPelaChave(String chave);
NotaFiscal importarXml(UploadedFile arquivo, Fornecedor fornecedor);
NotaFiscal importarXml(String textoXml, Fornecedor fornecedor);
List<NotaFiscal> consultarNotasFiscais(Venda venda);
List<NotaFiscal> consultarNotasFiscais(ParametrosConsultaNotaFiscalDTO parametros);
StreamedContent gerarCupom(Venda venda);
StreamedContent retornarCupomEmitido(NotaFiscal notaFiscal);
StreamedContent retornarCupomEmitidoEmPDF(NotaFiscal notaFiscal);
JasperPrint retornarRelatorio(Venda venda);
StreamedContent downloadXmls(Date dataInicio, Date dataFim, String tipoNotaFiscal, Pessoa pessoaEmissor);
Boolean verificarSeNotaFiscalJaVinculadaComVenda(Venda venda, String tipoModeloNotaFiscal, String tipoNotaFiscal);
*/
}