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

22 lines
1.5 KiB
MySQL
Raw Normal View History

2026-10-14 09:07:11 +00:00
-- Onaya gönderilmiş talebin başlığı değiştirilemez (Taleplerim ve talebi gösteren diğer ekranlar): değişiklik için talep Taslak adımına alınır,
-- düzenlenir ve yeniden onaya gönderilir. Kural ekranın UpdateBeforeCommand'ında değil burada, çünkü onay akışı da başlığı aynı güncelleme
-- yolundan yazar; yalnız iş alanları karşılaştırılır, onay alanları (durum, onaycı, tarih, açıklama, onaycı listeleri) ve silme serbesttir.
-- Satırların kuralı App.Prc.MaterialRequestLine'ın Insert/Update/DeleteBeforeCommand'ındadır.
CREATE OR REPLACE FUNCTION public."Prc_TR_MaterialRequestLock"() RETURNS trigger
LANGUAGE plpgsql AS $$
BEGIN
IF COALESCE(OLD."ApprovalStatus", '') <> '' AND NOT NEW."IsDeleted"
AND (NEW."Priority", NEW."RequesterUserId", NEW."BranchId", NEW."DepartmentId", NEW."WarehouseId", NEW."LocationId", NEW."RequestDate", NEW."Description")
IS DISTINCT FROM
(OLD."Priority", OLD."RequesterUserId", OLD."BranchId", OLD."DepartmentId", OLD."WarehouseId", OLD."LocationId", OLD."RequestDate", OLD."Description") THEN
RAISE EXCEPTION 'Onaya gönderilmiş talep değiştirilemez: önce talebi Taslak adımına alın, düzenleyip yeniden onaya gönderin.'
USING ERRCODE = 'P0001', DETAIL = '50004';
END IF;
RETURN NEW;
END;
$$;
DROP TRIGGER IF EXISTS "Prc_TR_MaterialRequestLock" ON public."Prc_T_MaterialRequest";
CREATE TRIGGER "Prc_TR_MaterialRequestLock" BEFORE UPDATE ON public."Prc_T_MaterialRequest"
FOR EACH ROW EXECUTE FUNCTION public."Prc_TR_MaterialRequestLock"();