package com.rjconsultores.ventaboletos.dao;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.rjconsultores.ventaboletos.entidad.Aidf;
import com.rjconsultores.ventaboletos.entidad.Caja;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.Marca;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.exception.VendaEmbarcadaBoletoException;
import com.rjconsultores.ventaboletos.exception.VendaEmbarcadaBoletoFormapagoException;
import com.rjconsultores.ventaboletos.exception.VendaEmbarcadaCajaException;
import com.rjconsultores.ventaboletos.exception.VendaEmbarcadaCajaFormapagoException;
import com.rjconsultores.ventaboletos.vo.caja.CajaDetalleVO;
import com.rjconsultores.ventaboletos.vo.caja.CajaVO;
import com.rjconsultores.ventaboletos.vo.caja.UsuarioVO;
import com.rjconsultores.ventaboletos.vo.caja.VendaEmbarcadaVO;
import com.rjconsultores.ventaboletos.vo.cashmonitor.RelatorioVendaCartaoCashMonitorVO;

public interface CajaDAO {
	public List<CajaVO> buscarCajaFecha(boolean yaCerrado, Date fechaDesde, Date fechaHasta);

	public List<UsuarioVO> buscarCajaCerrado(Date fecha, String cveusuario, String turnoid);

	List<UsuarioVO> buscarUsuarioCerrado(Date fecha);

	public void gerarVendaEmbarcada(VendaEmbarcadaVO vendaEmbarcada) throws VendaEmbarcadaBoletoException, VendaEmbarcadaBoletoFormapagoException, VendaEmbarcadaCajaException, VendaEmbarcadaCajaFormapagoException;

	public List<CajaDetalleVO> buscarDetalleCaja(Date fechaDesde, Date fechaHasta, Boolean sembilhetesPacote);

	Map<String, List<Caja>> buscarCajaYTarjeta(String... numoperacion);

	public Integer atualizaCajasIntegracaoTotvs(Marca marca, Date dataIncial, Date dataFinal, PuntoVenta puntoVenta) throws BusinessException;

	public List<RelatorioVendaCartaoCashMonitorVO> buscarVendaCartaoCashMonitor(Date dataIncial, Date dataFinal, Empresa empresa, PuntoVenta puntoVenta);

	public String validarEstoqueUtilizado(Aidf aidf, String folioInicial, String folioFinal);

}
