-- 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ı 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"();