sozsoft-platform/configs/seeds/postgres/object/Prc_P_MaterialRequestStockUndo.sql
2026-10-14 12:07:11 +03:00

24 lines
1.4 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Plan Takibi'nin Geri Al'ı (App.Prc.MaterialRequestPlanTrack › UpdateCommand): stoktan karşılamayı geri alır. Stoktan karşılama belge
-- açmadığı için geri dönüşü kalemin kendisidir: stoktan karşılanan miktar teslim edilenden düşülür ve sıfırlanır, kalanı yeniden açılan
-- kapalı kalem Bekliyor'a döner ve Planlama'da yeniden planlanır (Prc_P_MaterialRequestItemSync ile aynı kural).
CREATE OR REPLACE PROCEDURE public."Prc_P_MaterialRequestStockUndo"(
p_id uuid,
p_tenant_id uuid,
p_last_modifier_id uuid
)
LANGUAGE plpgsql AS $$
BEGIN
UPDATE "Prc_T_MaterialRequestItem"
SET "DeliveredQuantity" = GREATEST("DeliveredQuantity" - "FromStockQuantity", 0),
"FromStockQuantity" = 0, "LastModificationTime" = NOW() AT TIME ZONE 'UTC', "LastModifierId" = p_last_modifier_id
WHERE "Id" = p_id AND "IsDeleted" = false AND "FromStockQuantity" > 0 AND "LineStatus" IN ('Waiting', 'Done')
AND "TenantId" IS NOT DISTINCT FROM p_tenant_id;
IF NOT FOUND THEN
RAISE EXCEPTION 'Geri alınacak stoktan karşılama yok ya da kalem kapatılmış.' USING ERRCODE = 'P0001', DETAIL = '50202';
END IF;
UPDATE "Prc_T_MaterialRequestItem" i SET "LineStatus" = 'Waiting'
FROM public."Prc_V_MaterialRequestItemPlan" p
WHERE p."Id" = i."Id" AND i."Id" = p_id AND i."LineStatus" = 'Done' AND p."RemainingQuantity" > 0 AND i."DeliveredQuantity" < i."Quantity";
END;
$$;