/**
 * 
 */
package com.ejie.ad74a.service;

import java.util.List;

import com.ejie.ad74a.model.Ayuntamiento;
import com.ejie.ad74a.model.FacturacionAyuntamiento;
import com.ejie.ad74a.model.TipoRelanzamientoFacturacionAyto;

/**
 * Interfaz de servicio para el procesamiento y emision de facturas a
 * ayuntamientos
 * 
 * @author BICUGUAL
 *
 */
public interface CopagoAytoService {

	/**
	 * Devuelve la lista de ayuntamientos a los que emitir facturas
	 * 
	 * @return
	 */
	List<Ayuntamiento> getLstAyuntamientos();

	/**
	 * Procesa ayuntamiento creando registro en la tabla FACTURACIONES AYUNTAMIENTO
	 * y devuelve un objeto para crear Excel
	 * 
	 * @param ayto
	 * @throws Exception 
	 */
	void generarFacturacionAyto(Ayuntamiento ayto) throws Exception;
	
	/**
	 * Genera una nueva liquidacion para el ayuntamiento
	 * @param factura
	 * @param tipoRelanzamiento
	 * @throws Exception 
	 */
	void relanzarFacturacionAyto(FacturacionAyuntamiento factura, TipoRelanzamientoFacturacionAyto tipoRelanzamiento) throws Exception;
	
	/**
	 * Devuelve una factura (registro de tabla FACTURACIONES AYUNTAMIENTO) en base a su id
	 * @param idFactura
	 * @return
	 */
	FacturacionAyuntamiento getFacturaById(Long idFactura);
	

	/**
	 * Procesa los cargos para el ayuntamiento registrando mensualidades e informes
	 * 
	 * @param facturacion
	 * @return
	 */
	FacturacionAyuntamiento createFacturacionAyuntamiento(FacturacionAyuntamiento facturacion);


}
