sozsoft-platform/configs/seeds/postgres/object/Prc_P_MaterialRequestPlanConfirm.sql

30 lines
1.5 KiB
MySQL
Raw Permalink Normal View History

2026-10-19 14:35:08 +00:00
-- Planla diyaloğunun Onayla'sı (Prc.MaterialRequestPlan › UpdateCommand): talep kaleminin taslak planındaki her satırı
-- Prc_P_MaterialRequestPlan ile belgeye çevirir (önce iç transferler ve Stoktan, sonra teklif talepleri) ve taslağı siler. Tek transaction'dır:
2026-10-14 09:07:11 +00:00
-- bir satır reddedilirse (stok, kalan, operasyon türü) hiçbir belge açılmaz ve taslak yerinde kalır.
CREATE OR REPLACE PROCEDURE public."Prc_P_MaterialRequestPlanConfirm"(
p_id uuid,
p_tenant_id uuid,
p_last_modifier_id uuid
)
LANGUAGE plpgsql AS $$
DECLARE r record;
BEGIN
PERFORM 1 FROM "Prc_T_MaterialRequestPlanLine" WHERE "MaterialRequestItemId" = p_id AND "IsDeleted" = false FOR UPDATE;
IF NOT FOUND THEN
RAISE EXCEPTION 'Onaylanacak taslak plan yok: önce Öner butonunu kullanın ya da İç Transfer veya Satınalma sekmesinde Plan Miktarı girin.'
USING ERRCODE = 'P0001', DETAIL = '50201';
END IF;
FOR r IN SELECT "PlanMethod", "Quantity", "SupplierId", "SourceLocationId", "LotNo"
2026-10-14 09:07:11 +00:00
FROM "Prc_T_MaterialRequestPlanLine"
WHERE "MaterialRequestItemId" = p_id AND "IsDeleted" = false
ORDER BY CASE "PlanMethod" WHEN 'Transfer' THEN 0 WHEN 'Stock' THEN 1 ELSE 2 END, "CreationTime"
LOOP
CALL public."Prc_P_MaterialRequestPlan"(p_id, r."PlanMethod", r."Quantity", r."SupplierId", r."SourceLocationId", r."LotNo",
p_tenant_id, p_last_modifier_id);
2026-10-14 09:07:11 +00:00
END LOOP;
DELETE FROM "Prc_T_MaterialRequestPlanLine" WHERE "MaterialRequestItemId" = p_id;
END;
$$;