-- FUNCTION: public.sp_crud_especie_precio(character varying, character varying, integer, character varying[])

-- DROP FUNCTION public.sp_crud_especie_precio(character varying, character varying, integer, character varying[]);

CREATE OR REPLACE FUNCTION public.sp_crud_especie_precio(
	accion character varying,
	p_fecha character varying,
	p_id_usuario integer,
	p_especie character varying[])
    RETURNS character varying
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
AS $BODY$
declare
	p_id integer;
	p_especie_id integer;
	p_precio numeric;
	p_flag_reporte varchar;
	p_flag_ingreso varchar;
begin
	case accion
		when 'i' then
			if array_length(p_especie, 1)>0 then 
				for i in array_lower(p_especie, 1) .. array_upper(p_especie, 1) loop 
					p_id := p_especie[i][1];
					p_especie_id := p_especie[i][2];
					p_precio := p_especie[i][3];
					p_flag_reporte := p_especie[i][4];
					p_flag_ingreso := p_especie[i][5];
					if p_id=0 Then
						insert into especie_precios(especie_id,precio,fecha,flag_reporte,flag_ingreso,estado,created_at)
						values (p_especie_id,p_precio,p_fecha::date,p_flag_reporte,p_flag_ingreso,'1',now());
					else
						update especie_precios set
						precio=p_precio,
						flag_reporte=p_flag_reporte,
						flag_ingreso=p_flag_ingreso,
						updated_at=now()
						where id=p_id;
					end if;
				end loop;
			end if;
		end case;
	
	return 1;

/*EXCEPTION
	WHEN OTHERS THEN
        id_caja_ingreso:=-1;
	return id_caja_ingreso;
	*/
end;

$BODY$;

