CREATE OR REPLACE FUNCTION almacenajeconfactur(date, smallint, smallint, smallint, integer) RETURNS boolean
    AS $_$
declare
fecha		 alias for $1;
dias		 alias for $2;
anio 		 alias for $3;
mes 		 alias for $4;
usuario		 alias for $5;
ret 		 boolean;
ultfec 		 date;
registro	 record;
regi		 record;
hay	 	 int4;
begin

ret:='t';

if(int4eq(usuario,0::int4)) then
	delete from confactur where cfc_idart in (5,7,8,11) and cfc_anio=anio and cfc_mes=mes;
	for registro in select 
	    * from almacenaje where al_estado=1 and al_tiprod=1 
	    loop
		ret:='f';
		insert into confactur (cfc_usuario,cfc_fecha,cfc_idart,cfc_canti,cfc_precio,cfc_importe,cfc_leyen,cfc_estado,cfc_anio,cfc_mes,cfc_dias,cfc_idalm) values (registro.al_idusu,fecha,8,1,(registro.al_importe / dias * registro.al_dias * registro.al_tarifa)::numeric,(registro.al_importe / dias * registro.al_dias * registro.al_tarifa)::numeric,registro.al_leyenda,1::int2,anio,mes,registro.al_dias,registro.al_id);
	    end loop; 

	for regi in select 
	    * from almacenaje where al_estado=1 and al_tiprod!=1 
	    loop
		ret:='f';
		insert into confactur (cfc_usuario,cfc_fecha,cfc_idart,cfc_canti,cfc_precio,cfc_importe,cfc_leyen,cfc_estado,cfc_anio,cfc_mes,cfc_dias,cfc_idalm) values (regi.al_idusu,fecha,idartdetipp(regi.al_tiprod),(regi.al_canti * regi.al_dias),regi.al_tarifa::numeric,(regi.al_tarifa * regi.al_dias * regi.al_canti)::numeric,regi.al_leyenda,1::int2,anio,mes,regi.al_dias,regi.al_id);
	    end loop; 

    else
	delete from confactur where cfc_idart in (5,7,8,11) and cfc_anio=anio and cfc_mes=mes and cfc_usuario=usuario;
	for registro in select 
	    * from almacenaje where al_estado=1 and al_tiprod=1 and cfc_usurio=usuario
	    loop
		ret:='f';
		insert into confactur (cfc_usuario,cfc_fecha,cfc_idart,cfc_canti,cfc_precio,cfc_importe,cfc_leyen,cfc_estado,cfc_anio,cfc_mes,cfc_dias,cfc_idalm) values (registro.al_idusu,fecha,8,1,(registro.al_importe / dias * registro.al_dias * registro.al_tarifa)::numeric,(registro.al_importe / dias * registro.al_dias * registro.al_tarifa)::numeric,registro.al_leyenda,1::int2,anio,mes,registro.al_dias,registro.al_id);
	    end loop; 

	for regi in select 
	    * from almacenaje where al_estado=1 and al_tiprod!=1 and al_idusu=usuario
	    loop
		ret:='f';
		insert into confactur (cfc_usuario,cfc_fecha,cfc_idart,cfc_canti,cfc_precio,cfc_importe,cfc_leyen,cfc_estado,cfc_anio,cfc_mes,cfc_dias,cfc_idalm) values (regi.al_idusu,fecha,idartdetipp(regi.al_tiprod),(regi.al_canti * regi.al_dias),regi.al_tarifa::numeric,(regi.al_tarifa * regi.al_dias * regi.al_canti)::numeric,regi.al_leyenda,1::int2,anio,mes,regi.al_dias,regi.al_id);
	    end loop; 


    end if;

return ret;
end;$_$
    LANGUAGE plpgsql;


ALTER FUNCTION public.almacenajeconfactur(date, smallint, smallint, smallint, integer) OWNER TO zona;
