package com.mx.dla.dda.factura.general.daos;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.mx.dla.dda.factura.general.dtos.ContratoFacturaDTO;
import com.mx.dla.dda.factura.general.dtos.EstudioConsultaDTO;
import com.mx.dla.dda.factura.general.dtos.FacturaGeneralDTO;
import com.mx.dla.dda.factura.general.dtos.MesFacturaDTO;
import com.mx.dla.dda.factura.general.dtos.PagoMesContratoBD;

public interface FacturacionDAO {

	/*
	public void creaFacturaDetalle(FacturaAdeudoDTO param);

	public void actualizaFacturaDetalle(FacturaAdeudoDTO param);

	public void eliminaFacturaDetalle(FacturaAdeudoDTO param);
	
	public void eliminaFacturaGeneral(FacturaGeneralDTO param);

	List<FacturaDetalleLDTO> consultaDetalleIndividualFactura(
			@Param("facturacionKeys") FacturacionKeysDTO param);

	FacturaDetalleLDTO consultaPagoIndividualFactura(
			@Param("facturacionKeys") FacturacionKeysDTO param);

	FacturaAdeudoDTO consultaAdeudoIndividualFactura(
			@Param("facturacionKeys") FacturacionKeysDTO param);
		
	FacturaDetalleLDTO consultaPagoContratoTotalDLA(
			@Param("facturacionKeys") FacturacionKeysDTO param);
	
	FacturaDetalleLDTO consultaPagoContratoTotalSAP(
			@Param("facturacionKeys") FacturacionKeysDTO param);
	
	List<FacturaDetalleLDTO> consultaContratosPorFactura(
			@Param("facturacionKeys") FacturacionKeysDTO param);

	*/

	public FacturaGeneralDTO consultaFacturaGeneral(@Param("facturaGeneral") FacturaGeneralDTO param);
	
	public void creaFacturaGeneral(FacturaGeneralDTO param);

	public void actualizaFacturaGeneral(FacturaGeneralDTO param);

	public EstudioConsultaDTO consultaEstudio(@Param("idEstudio")Long idContrato);

	public List<PagoMesContratoBD> obtenerCostoMesContrato(@Param("idContrato")Long idContrato);
	
	public List<PagoMesContratoBD> obtenerPagoMesContrato(@Param("idContrato")Long idContrato, @Param("idFactura")Long idFactura);
	
	public List<PagoMesContratoBD> obtenerPagoMesFacturaCto(@Param("idContrato")Long idContrato, @Param("idFactura")Long idFactura);
	
	public List<ContratoFacturaDTO> obtenerContratosEstudio(@Param("idEstudio")Long idEstudio, @Param("indicadorIVA")String indicadorIVA);
	
	public List<ContratoFacturaDTO> obtenerContratosFacturaEstudio(@Param("idEstudio")Long idEstudio, @Param("idFactura")Long idFactura);

	public ContratoFacturaDTO obtenerContratoEnmAden(@Param("idCto")Long idCto);
	
	public void actualizarFacturaDetalle(@Param("idFactura")Long idFactura, @Param("idCtoOri")Long idCtoOri, @Param("mes") MesFacturaDTO mes);
	
	public void guardarFacturaDetalle(@Param("idFactura")Long idFactura, @Param("idCtoOri")Long idCtoOri, @Param("mes") MesFacturaDTO mes);
	
	public String consultaIsoMedida(@Param("codigoSap")String codigoSap);
	
	public void actualizaFacturaGeneralNotificada(FacturaGeneralDTO param);
	
}
