CREATE OR REPLACE FUNCTION calcula_consumo_mes()
RETURNS integer AS
$BODY$
DECLARE
v_item RECORD; –Variable para iterar los historicos
var_pq BIGINT; –Variable contador
var_id BIGINT; –Variable temporar para conprobar si existe un calculo anterior
BEGIN
FOR v_item IN SELECT idestablecimiento,  idmedicina, date_part(‘year’, date_trunc(‘year’, fechaentrega)) AS “anyo”,  date_part(‘month’, date_trunc(‘month’, fechaentrega)) AS “mes”, SUM(cantidad) AS cantidad, AVG(cantidad) AS promedio FROM “farm_medicinarecetada” GROUP BY 1, 2, 3, 4 ORDER BY 1, 2, 3, 4 LOOP
var_id := 0;
SELECT id INTO var_id FROM ctl_abastecimiento WHERE id_establecimiento = v_item.idestablecimiento AND mes = v_item.mes AND anyo = v_item.anyo AND id_producto = v_item.idmedicina;
IF var_id > 0 THEN
RAISE INFO ‘ :: Nada que hacer por aca :: ‘;
ELSE
RAISE INFO ‘ :: Ingresando un nuevo consumo :: ‘;
var_pq := var_pq + 1;
INSERT INTO ctl_abastecimiento(id_producto, id_establecimiento, mes, cantidad, anyo) VALUES (v_item.idmedicina, v_item.idestablecimiento, v_item.mes, v_item.cantidad, v_item.anyo);
END IF;
END LOOP;
RETURN var_pq;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

Anuncios