BLOS#82278 1 check van de [U]pdate&[I]nsert-trigger verplaatst naar de [I]nsert-trigger van mld_opdr

svn path=/Database/trunk/; revision=64886
This commit is contained in:
2024-05-29 15:57:34 +00:00
parent af8fe47356
commit 6917fecd5e

View File

@@ -337,6 +337,32 @@ FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(mld_opdr_key, mld_s_mld_opdr_key);
/* Controleer of de opdracht bij een melding hoort die de goede status heeft,
* Het voorkomt dat er onverwachts opdrachten zijn op Afgewezen of nog niet Geaccepteerde meldingen
* namelijk: GEACCEPTEERD, UITGEGEVEN of AFGEMELD
* Sinds FSN#30228 hoort daar zelfs ook VERWERKT bij
* Zo niet, dan mag het alleen als de contract_key is ingevuld
*/
IF :new.mld_melding_key IS NOT NULL
THEN
DECLARE
dummy CHAR;
BEGIN
SELECT 'X'
INTO dummy
FROM mld_melding
WHERE mld_melding_key = :NEW.mld_melding_key
AND mld_melding_status IN (4, 5, 6, 7);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
IF :NEW.cnt_contract_key IS NULL
THEN
raise_application_error (-20000, 'mld_m201');
END IF;
END;
END IF;
BEGIN
IF fac.getSetting ('mld_opdr_discipline_mode') = 1
THEN -- altijd vakgroep discipline
@@ -364,32 +390,6 @@ CREATE_TRIGGER(mld_t_mld_opdr_B_IU)
BEFORE INSERT OR UPDATE ON mld_opdr
FOR EACH ROW
BEGIN
/* Controleer of de opdracht bij een melding hoort die de goede status heeft,
* Het voorkomt dat er onverwachts opdrachten zijn op Afgewezen of nog niet Geaccepteerde meldingen
* namelijk: GEACCEPTEERD, UITGEGEVEN of AFGEMELD
* Sinds FSN#30228 hoort daar zelfs ook VERWERKT bij
* Zo niet, dan mag het alleen als de contract_key is ingevuld
*/
IF (NOT UPDATING OR :old.mld_opdr_discipline_key = :new.mld_opdr_discipline_key) -- UPDATING & opdr discipline gewijzigd gebeurd alleen in de mld_t_mld_melding_B_IU alwaar de mld_status al gecheckt wordt
AND :new.mld_melding_key IS NOT NULL
THEN
DECLARE
dummy CHAR;
BEGIN
SELECT 'X'
INTO dummy
FROM mld_melding
WHERE mld_melding_key = :NEW.mld_melding_key
AND mld_melding_status IN (4, 5, 6, 7);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
IF :NEW.cnt_contract_key IS NULL
THEN
raise_application_error (-20000, 'mld_m201');
END IF;
END;
END IF;
CHECK_REFERENCE_UITVOERENDE (mld_uitvoerende_keys, 'mld_m37');
-- gooi fiatverzoeknotificaties weg als gefiatteerd of afgewezen-> opnemen in bovenste deel
IF :OLD.mld_statusopdr_key = 3 AND :new.mld_statusopdr_key IN (4, 2)