
CREATE OR REPLACE FUNCTION public.sp_crud_automatico_exclusivo(
	fecha character varying)
    RETURNS character varying
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
AS $BODY$
declare
	entradas record;
	idp integer;
	v_cant_dia numeric;
begin	
		For entradas In 
		select t1.id,t2.id val_ubicacion,0 val_persona,2 vsm_modulo,23 vsm_smodulo,'E' val_tipo
		,t1.precio val_total,t1.fecha_inicio
		from estacionamiento_empresas t1
		inner join ubicacion_trabajos t2 on t2.ubicacion_empresa_id=t1.empresa_id
		where t1.estado='1'
		And t1.flag_deuda='1'
		And date_part('day',age(fecha::date, t1.fecha_inicio::date))=0
		Order by t1.id
		Loop
			select count(*) into v_cant_dia
			from valorizaciones t1
			inner join val_atencion_modulos t2 on t1.val_estab = t2.vm_vestab And t1.val_codigo = t2.vm_vnumero
			inner join val_atencion_smodulos t3 on t2.vm_vestab = t3.vsm_vestab And t2.vm_vnumero = t3.vsm_vnumero And t2.vm_modulo = t3.vsm_modulo
			Where t1.val_estab=1 
			And t1.val_tipo=entradas.val_tipo 
			And t1.val_plan=0
			And t1.val_anulado='N' And t1.val_facturado='N' And t2.vm_estado='A' And t2.vm_eliminado='N' And t3.vsm_estado='A' And t3.vsm_eliminado='N'
			And t1.val_persona = entradas.val_persona::integer 
			And t1.val_ubicacion = entradas.val_ubicacion::integer 
			And t3.vsm_modulo = entradas.vsm_modulo::integer 
			And t3.vsm_smodulo = entradas.vsm_smodulo::integer 
			And to_char(t1.val_fecha,'dd/mm/YYYY')=fecha;

			if v_cant_dia = 0 then
				idp:= (Select sp_crud_ind_atencion_valoriza_automatico_add(1,entradas.val_persona::integer,entradas.vsm_modulo::integer,entradas.vsm_smodulo::integer,entradas.val_ubicacion::integer,entradas.val_total::numeric,'derecho de estacionamiento',fecha));
				update valorizaciones set val_estado_atencion='A' Where id=entradas.id;
			End if;
		End Loop;
		
	return idp;
	/*EXCEPTION
	WHEN OTHERS THEN
        idp:=-1;
	return idp;*/
end;
$BODY$;

