package com.rjconsultores.ventaboletos.dao;

import java.sql.SQLException;
import java.util.Date;
import java.util.List;

import com.rjconsultores.ventaboletos.ArquivoRemessa;
import com.rjconsultores.ventaboletos.blocos.DetalheRetorno;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.FechamentoBoleto;

public interface RemessaCNABBancosDAO extends GenericDAO<FechamentoBoleto, Long>{

	public String findBanco(Empresa empresa);
	
	public ArquivoRemessa remessaBradesco(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
	
	public ArquivoRemessa remessaSantander(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
	
	public ArquivoRemessa remessaSicoob(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
	
	public ArquivoRemessa remessaCaixa(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
	
	public ArquivoRemessa remessaMercantil(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
	
	public ArquivoRemessa remessaItau(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
	
	public ArquivoRemessa remessaBancoBrasil(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
	
	public ArquivoRemessa remessaSafra(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;

	public List<FechamentoBoleto> obtenerTodosParaRemessa(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar);

	public List<Empresa> getEmpresas();

	public Boolean atualizaRemessa(Empresa empresa, ArquivoRemessa arquivoRemessa) throws Exception;

	public FechamentoBoleto obtenerFechamentoBoletoPorNossoNumero(String nossoNumero, Integer empresaId);

	public boolean quitarFechamentoBoleto(Long fechamentoboletoId, Integer usuarioId, DetalheRetorno detalhe) throws SQLException;

	public FechamentoBoleto obtenerFechamentoBoletoPorId(Integer idBoletoFechamento);

	public boolean quitarFechamentoBoleto(DetalheRetorno detalhe, Integer usuarioId) throws SQLException;
	
}
