2026-10-19 14:35:08 +00:00
|
|
|
|
-- Planla diyaloğunun Onayla'sı (Prc.MaterialRequestPlan › UpdateCommand): talep kaleminin taslak planındaki her satırı
|
2026-10-14 19:26:03 +00:00
|
|
|
|
-- 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;
|
|
|
|
|
|
|
2026-10-14 19:26:03 +00:00
|
|
|
|
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
|
2026-10-14 19:26:03 +00:00
|
|
|
|
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;
|
|
|
|
|
|
$$;
|