YASK#86818 Fout bij aanpassen maximumwaarde numeriek kenmerk in YASK productieomgeving

svn path=/Database/trunk/; revision=67567
This commit is contained in:
Erik Groener
2025-01-13 08:10:43 +00:00
parent 68e2ada5d5
commit 06be3fadc9
3 changed files with 78 additions and 39 deletions

View File

@@ -525,7 +525,7 @@ BEGIN
IF :new.prs_kenmerk_kenmerktype IN ('C', 'N') AND :new.prs_kenmerk_lengte IS NULL
THEN
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_LENGTE');
raise_application_error(-20000, 'PRS_C_PRS_KENMERK_LENGTE');
END IF;
IF :new.prs_kenmerk_kenmerktype = 'N' AND :new.prs_kenmerk_lengte > 20
THEN
@@ -538,29 +538,38 @@ BEGIN
(:old.prs_kenmerk_nmin IS NULL AND :new.prs_kenmerk_nmin IS NOT NULL)
THEN
DECLARE
Dummy CHAR;
aantal NUMBER;
BEGIN
SELECT 'X'
INTO Dummy
SELECT COUNT(*)
INTO aantal
FROM prs_kenmerkLink
WHERE FAC.SAFE_TO_NUMBER(prs_kenmerkLink_waarde) < :new.prs_kenmerk_nmin
AND prs_kenmerk_key = :old.prs_kenmerk_key;
IF :new.prs_kenmerk_niveau = 'G' THEN
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MIN_G');
ELSE
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MIN_R');
AND prs_kenmerk_key = :old.prs_kenmerk_key
AND prs_link_key IN
(SELECT prs_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND :new.prs_kenmerk_niveau = 'A'
UNION
SELECT prs_bedrijf_key
FROM prs_bedrijf
WHERE prs_bedrijf_verwijder IS NULL
AND :new.prs_kenmerk_niveau = 'B'
UNION
SELECT prs_contactpersoon_key
FROM prs_contactpersoon
WHERE prs_contactpersoon_verwijder IS NULL
AND :new.prs_kenmerk_niveau = 'C'
UNION
SELECT prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
AND :new.prs_kenmerk_niveau = 'P'
);
IF aantal > 0
THEN
raise_application_error(-20000, 'PRS_C_PRS_KENMERK_MIN_' || :new.prs_kenmerk_niveau);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL;
WHEN TOO_MANY_ROWS THEN
BEGIN
IF :new.prs_kenmerk_niveau = 'G' THEN
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MIN_G');
ELSE
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MIN_R');
END IF;
END;
END;
END IF;
@@ -568,29 +577,38 @@ BEGIN
(:old.prs_kenmerk_nmax IS NULL AND :new.prs_kenmerk_nmax IS NOT NULL)
THEN
DECLARE
Dummy CHAR;
aantal NUMBER;
BEGIN
SELECT 'X'
INTO Dummy
SELECT COUNT(*)
INTO aantal
FROM prs_kenmerkLink
WHERE FAC.SAFE_TO_NUMBER(prs_kenmerkLink_waarde) > :new.prs_kenmerk_nmax
AND prs_kenmerk_key = :old.prs_kenmerk_key;
IF :new.prs_kenmerk_niveau = 'G' THEN
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MAX_G');
ELSE
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MAX_R');
AND prs_kenmerk_key = :old.prs_kenmerk_key
AND prs_link_key IN
(SELECT prs_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND :new.prs_kenmerk_niveau = 'A'
UNION
SELECT prs_bedrijf_key
FROM prs_bedrijf
WHERE prs_bedrijf_verwijder IS NULL
AND :new.prs_kenmerk_niveau = 'B'
UNION
SELECT prs_contactpersoon_key
FROM prs_contactpersoon
WHERE prs_contactpersoon_verwijder IS NULL
AND :new.prs_kenmerk_niveau = 'C'
UNION
SELECT prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
AND :new.prs_kenmerk_niveau = 'P'
);
IF aantal > 0
THEN
raise_application_error(-20000, 'PRS_C_PRS_KENMERK_MAX_' || :new.prs_kenmerk_niveau);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL;
WHEN TOO_MANY_ROWS THEN
BEGIN
IF :new.prs_kenmerk_niveau = 'G' THEN
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MAX_G');
ELSE
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MAX_R');
END IF;
END;
END;
END IF;
END IF;