NYBU#55434: Flexkenmerken per artikelregel.

svn path=/Database/trunk/; revision=41321
This commit is contained in:
Maykel Geerdink
2019-03-05 14:27:26 +00:00
parent c7add5c0e9
commit f8bd5c3f3e
7 changed files with 400 additions and 127 deletions

View File

@@ -1096,6 +1096,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
DELETE FROM res_kenmerkwaarde; DELETE FROM res_kenmerkwaarde;
DELETE FROM res_kenmerkartikel;
DELETE FROM res_alg_ruimte; DELETE FROM res_alg_ruimte;
DELETE FROM res_ruimte_opstelling; DELETE FROM res_ruimte_opstelling;

View File

@@ -3742,7 +3742,7 @@ AS
LOOP LOOP
createopentag ('note'); createopentag ('note');
createxmltagvalue ('key', rec1.mld_melding_note_key); createxmltagvalue ('key', rec1.mld_melding_note_key);
createxmltagvalue ('flag', rec1.mld_melding_note_flag); createxmltagvalue ('flag', BITAND(rec1.mld_melding_note_flag, 191)); -- reset de hier irrelevante 64-bit om compatibel te blijven
mydatetochar ('aanmaak', rec1.mld_melding_note_aanmaak); mydatetochar ('aanmaak', rec1.mld_melding_note_aanmaak);
createxmltagvalue ('omschrijving', createxmltagvalue ('omschrijving',
rec1.mld_melding_note_omschrijving); rec1.mld_melding_note_omschrijving);
@@ -7058,6 +7058,72 @@ AS
END LOOP; END LOOP;
END; END;
PROCEDURE create_res_kenmerken_rsv_art (p_key IN NUMBER)
AS
CURSOR c1
IS
SELECT k.res_kenmerk_key,
lcl.x ('res_srtkenmerk_omschrijving', s.res_srtkenmerk_key, res_srtkenmerk_omschrijving) res_srtkenmerk_omschrijving,
s.res_srtkenmerk_kenmerktype,
s.fac_kenmerkdomein_key,
s.res_srtkenmerk_lengte,
s.res_srtkenmerk_dec,
s.res_srtkenmerk_nmin,
s.res_srtkenmerk_nmax,
k.res_kenmerk_default,
NVL (k.res_kenmerk_volgnummer, 0) volgnummer,
lcl.x ('res_srtkenmerk_dimensie',
s.res_srtkenmerk_key,
res_srtkenmerk_dimensie)
dimensie,
lcl.x ('res_kenmerk_hint',
k.res_kenmerk_key,
res_kenmerk_hint)
hint,
v.res_kenmerkartikel_waarde
FROM res_kenmerk k,
res_srtkenmerk s,
res_rsv_artikel a,
(SELECT v.res_kenmerk_key, v.res_kenmerkartikel_waarde
FROM res_kenmerkartikel v
WHERE v.res_rsv_artikel_key = p_key
AND v.res_kenmerkartikel_verwijder IS NULL) v
WHERE k.res_artikel_key = a.res_artikel_key
AND a.res_rsv_artikel_key = p_key
AND k.res_activiteit_key IS NULL
AND k.res_kenmerk_verwijder IS NULL
AND k.res_srtkenmerk_key = s.res_srtkenmerk_key
AND v.res_kenmerk_key(+) = k.res_kenmerk_key
ORDER BY k.res_kenmerk_volgnummer;
v_kenmerk_waarde res_kenmerkartikel.res_kenmerkartikel_waarde%TYPE;
BEGIN
FOR rec1 IN c1
LOOP
v_kenmerk_waarde :=
find_kenmerk_waarde (rec1.res_kenmerkartikel_waarde,
rec1.res_kenmerk_default,
rec1.res_srtkenmerk_kenmerktype,
rec1.fac_kenmerkdomein_key,
rec1.res_srtkenmerk_nmin,
rec1.res_srtkenmerk_nmax);
createxmltagvalueattributes ('kenmerk',
'naam',
rec1.res_srtkenmerk_omschrijving,
'type',
rec1.res_srtkenmerk_kenmerktype,
'volgnummer',
rec1.volgnummer,
'key',
rec1.res_kenmerk_key,
'dimensie',
rec1.dimensie,
rec1.fac_kenmerkdomein_key,
v_kenmerk_waarde);
END LOOP;
END;
PROCEDURE create_res_ruimte_node (p_opstelkey IN NUMBER) PROCEDURE create_res_ruimte_node (p_opstelkey IN NUMBER)
AS AS
v_bezoekers res_ruimte_opstelling.res_ruimte_opstel_bezoekers%TYPE; v_bezoekers res_ruimte_opstelling.res_ruimte_opstel_bezoekers%TYPE;
@@ -7421,6 +7487,7 @@ AS
createxmltagvalue ('prijs', v_prijs); createxmltagvalue ('prijs', v_prijs);
mydatetochar ('aanmaak', v_aanmaak); mydatetochar ('aanmaak', v_aanmaak);
mydatetochar ('verwijder', v_verwijder); mydatetochar ('verwijder', v_verwijder);
create_res_kenmerken_rsv_art (p_key);
createclosetag ('rsv_artikel'); createclosetag ('rsv_artikel');
END; END;

View File

@@ -368,6 +368,64 @@ AS
+ (ra.res_rsv_artikel_levering - TRUNC (ra.res_rsv_artikel_levering)) BETWEEN new_ruimte_van AND new_ruimte_tot + (ra.res_rsv_artikel_levering - TRUNC (ra.res_rsv_artikel_levering)) BETWEEN new_ruimte_van AND new_ruimte_tot
AND ra.res_rsv_ruimte_key = prsv_ruimte_key_from; AND ra.res_rsv_ruimte_key = prsv_ruimte_key_from;
END; END;
-- Kenmerken ook kopieren.
IF BITAND (flags, 1024) = 1024
THEN
-- Verwijder eerst de oude niet-file kenmerken
-- Artikel kenmerken.
DELETE FROM res_kenmerkartikel
WHERE res_rsv_artikel_key = (SELECT res_rsv_artikel_key FROM res_rsv_artikel WHERE res_rsv_ruimte_key = prsv_ruimte_key_to)
AND res_kenmerk_key IN
(SELECT k.res_kenmerk_key
FROM res_kenmerkartikel w, res_kenmerk k, res_srtkenmerk sk
WHERE w.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key
AND w.res_rsv_artikel_key = (SELECT res_rsv_artikel_key FROM res_rsv_artikel WHERE res_rsv_ruimte_key = prsv_ruimte_key_to)
AND sk.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E'));
--
-- Artikel kenmerken.
INSERT INTO res_kenmerkartikel (res_rsv_artikel_key, res_kenmerk_key, res_kenmerkartikel_waarde)
SELECT a.res_rsv_artikel_key,
k.res_kenmerk_key,
waarde_from.res_kenmerkartikel_waarde
FROM res_srtkenmerk t,
res_kenmerk k,
res_srtkenmerk s,
res_rsv_ruimte r,
res_rsv_artikel a,
(SELECT w1.res_kenmerkartikel_waarde,
k1.res_kenmerk_groep,
k1.res_srtkenmerk_key,
k1.res_artikel_key,
k1.res_kenmerk_key
FROM res_kenmerkartikel w1,
res_kenmerk k1,
res_srtkenmerk s1,
res_rsv_ruimte r1,
res_rsv_artikel a1
WHERE w1.res_kenmerk_key = k1.res_kenmerk_key
AND k1.res_srtkenmerk_key = s1.res_srtkenmerk_key
AND k1.res_artikel_key = a1.res_artikel_key
AND k1.res_activiteit_key IS NULL
AND w1.res_rsv_artikel_key = a1.res_rsv_artikel_key
AND a1.res_rsv_ruimte_key = r1.res_rsv_ruimte_key
AND w1.res_kenmerkartikel_verwijder IS NULL
AND s1.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E')
AND r1.res_rsv_ruimte_key = prsv_ruimte_key_from
) waarde_from
WHERE k.res_artikel_key = a.res_artikel_key
AND a.res_rsv_ruimte_key = r.res_rsv_ruimte_key
AND k.res_kenmerk_niveau = 'D'
AND k.res_kenmerk_volgnummer < 900
AND k.res_kenmerk_verwijder IS NULL
AND k.res_srtkenmerk_key = t.res_srtkenmerk_key
AND t.res_srtkenmerk_verwijder IS NULL
AND k.res_srtkenmerk_key = s.res_srtkenmerk_key
AND s.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E')
AND waarde_from.res_srtkenmerk_key = k.res_srtkenmerk_key
AND waarde_from.res_kenmerk_groep = k.res_kenmerk_groep
AND r.res_rsv_ruimte_key = prsv_ruimte_key_to;
END IF;
END IF; END IF;
-- 512 Bezoekers -- 512 Bezoekers
IF BITAND (flags, 512) = 512 IF BITAND (flags, 512) = 512
@@ -391,16 +449,6 @@ AS
AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key
AND w.res_rsv_ruimte_key = prsv_ruimte_key_to AND w.res_rsv_ruimte_key = prsv_ruimte_key_to
AND sk.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E')); AND sk.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E'));
-- Artikel kenmerken.
DELETE FROM res_kenmerkartikel
WHERE res_rsv_ruimte_key = prsv_ruimte_key_to
AND res_kenmerk_key IN
(SELECT k.res_kenmerk_key
FROM res_kenmerkartikel w, res_kenmerk k, res_srtkenmerk sk
WHERE w.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key
AND w.res_rsv_ruimte_key = prsv_ruimte_key_to
AND sk.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E'));
-- --
-- Ruimte kenmerken. -- Ruimte kenmerken.
INSERT INTO res_kenmerkwaarde (res_rsv_ruimte_key, res_kenmerk_key, res_kenmerkreservering_waarde) INSERT INTO res_kenmerkwaarde (res_rsv_ruimte_key, res_kenmerk_key, res_kenmerkreservering_waarde)
@@ -423,7 +471,8 @@ AS
WHERE w1.res_kenmerk_key = k1.res_kenmerk_key WHERE w1.res_kenmerk_key = k1.res_kenmerk_key
AND k1.res_srtkenmerk_key = s1.res_srtkenmerk_key AND k1.res_srtkenmerk_key = s1.res_srtkenmerk_key
AND k1.res_activiteit_key = r1.res_activiteit_key AND k1.res_activiteit_key = r1.res_activiteit_key
and w1.res_rsv_ruimte_key = r1.res_rsv_ruimte_key AND k1.res_artikel_key IS NULL
AND w1.res_rsv_ruimte_key = r1.res_rsv_ruimte_key
AND w1.res_kenmerkwaarde_verwijder IS NULL AND w1.res_kenmerkwaarde_verwijder IS NULL
AND s1.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E') AND s1.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E')
AND r1.res_rsv_ruimte_key = prsv_ruimte_key_from AND r1.res_rsv_ruimte_key = prsv_ruimte_key_from
@@ -439,43 +488,6 @@ AS
AND waarde_from.res_srtkenmerk_key = k.res_srtkenmerk_key AND waarde_from.res_srtkenmerk_key = k.res_srtkenmerk_key
AND waarde_from.res_kenmerk_groep = k.res_kenmerk_groep AND waarde_from.res_kenmerk_groep = k.res_kenmerk_groep
AND r.res_rsv_ruimte_key = prsv_ruimte_key_to; AND r.res_rsv_ruimte_key = prsv_ruimte_key_to;
-- Artikel kenmerken.
INSERT INTO res_kenmerkartikel (res_rsv_ruimte_key, res_kenmerk_key, res_kenmerkartikel_waarde)
SELECT prsv_ruimte_key_to
, k.res_kenmerk_key
, waarde_from.res_kenmerkartikel_waarde
FROM res_srtkenmerk t
, res_kenmerk k
, res_srtkenmerk s
, res_rsv_ruimte r
, ( SELECT w1.res_kenmerkartikel_waarde
, k1.res_kenmerk_groep
, k1.res_srtkenmerk_key
, k1.res_activiteit_key
, k1.res_kenmerk_key
FROM res_kenmerkartikel w1
, res_kenmerk k1
, res_srtkenmerk s1
, res_rsv_ruimte r1
WHERE w1.res_kenmerk_key = k1.res_kenmerk_key
AND k1.res_srtkenmerk_key = s1.res_srtkenmerk_key
AND k1.res_activiteit_key = r1.res_activiteit_key
and w1.res_rsv_ruimte_key = r1.res_rsv_ruimte_key
AND w1.res_kenmerkartikel_verwijder IS NULL
AND s1.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E')
AND r1.res_rsv_ruimte_key = prsv_ruimte_key_from
) waarde_from
WHERE k.res_activiteit_key = r.res_activiteit_key
AND k.res_kenmerk_niveau = 'D'
AND k.res_kenmerk_volgnummer < 900
AND k.res_kenmerk_verwijder IS NULL
AND k.res_srtkenmerk_key = t.res_srtkenmerk_key
AND t.res_srtkenmerk_verwijder IS NULL
AND k.res_srtkenmerk_key = s.res_srtkenmerk_key
AND s.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E')
AND waarde_from.res_srtkenmerk_key = k.res_srtkenmerk_key
AND waarde_from.res_kenmerk_groep = k.res_kenmerk_groep
AND r.res_rsv_ruimte_key = prsv_ruimte_key_to;
END IF; END IF;
-- Opmerking en/of Flexkenmerken (2 en/of 1024) aanpassen als de setting "res_copy_to_bez" dit aangeeft -- Opmerking en/of Flexkenmerken (2 en/of 1024) aanpassen als de setting "res_copy_to_bez" dit aangeeft
IF (BITAND (flags, 2) = 2 OR BITAND (flags, 1024) = 1024) AND BITAND(pres_copy_to_bez, 4) = 4 IF (BITAND (flags, 2) = 2 OR BITAND (flags, 1024) = 1024) AND BITAND(pres_copy_to_bez, 4) = 4
@@ -983,7 +995,7 @@ AS
newtot res_rsv_ruimte.res_rsv_ruimte_tot%TYPE; newtot res_rsv_ruimte.res_rsv_ruimte_tot%TYPE;
BEGIN BEGIN
SELECT res_rsv_ruimte_van, res_rsv_ruimte_tot SELECT res_rsv_ruimte_van, res_rsv_ruimte_tot
INTO newvan,newtot INTO newvan, newtot
FROM res_rsv_ruimte FROM res_rsv_ruimte
WHERE res_rsv_ruimte_key = prsv_ruimte_key; WHERE res_rsv_ruimte_key = prsv_ruimte_key;
IF oldvan <> newvan OR oldtot <> newtot IF oldvan <> newvan OR oldtot <> newtot
@@ -1067,7 +1079,6 @@ AS
locatiekey alg_locatie.alg_locatie_key%TYPE; locatiekey alg_locatie.alg_locatie_key%TYPE;
oldloc bez_afspraak.alg_locatie_key%TYPE; oldloc bez_afspraak.alg_locatie_key%TYPE;
waarde res_kenmerkwaarde.res_kenmerkreservering_waarde%TYPE; waarde res_kenmerkwaarde.res_kenmerkreservering_waarde%TYPE;
artwaarde res_kenmerkartikel.res_kenmerkartikel_waarde%TYPE;
bezremark VARCHAR2(2100); -- bez_afspraak.bez_afspraak_opmerking%TYPE is te kort bezremark VARCHAR2(2100); -- bez_afspraak.bez_afspraak_opmerking%TYPE is te kort
lremarkfilled BOOLEAN; lremarkfilled BOOLEAN;
@@ -1088,27 +1099,7 @@ AS
AND k.res_srtkenmerk_key = t.res_srtkenmerk_key AND k.res_srtkenmerk_key = t.res_srtkenmerk_key
AND k.res_kenmerk_verwijder IS NULL AND k.res_kenmerk_verwijder IS NULL
AND t.res_srtkenmerk_verwijder IS NULL AND t.res_srtkenmerk_verwijder IS NULL
AND v.res_rsv_ruimte_key = prsv_ruimte_key AND k.res_kenmerk_niveau = 'A'
ORDER BY k.res_kenmerk_volgnummer
, UPPER(lcl.x ('t.res_srtkenmerk_omschrijving', t.res_srtkenmerk_key, res_srtkenmerk_omschrijving));
CURSOR ckenmerkart
IS
SELECT k.res_kenmerk_key
, t.res_srtkenmerk_kenmerktype
, t.res_srtkenmerk_nmin nmin
, t.res_srtkenmerk_nmax nmax
, t.fac_kenmerkdomein_key
, k.res_kenmerk_volgnummer
, t.res_srtkenmerk_omschrijving
, v.res_kenmerkartikel_waarde
FROM res_srtkenmerk t
, res_kenmerk k
, res_kenmerkartikel v
WHERE v.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = t.res_srtkenmerk_key
AND k.res_kenmerk_verwijder IS NULL
AND t.res_srtkenmerk_verwijder IS NULL
AND v.res_rsv_ruimte_key = prsv_ruimte_key AND v.res_rsv_ruimte_key = prsv_ruimte_key
ORDER BY k.res_kenmerk_volgnummer ORDER BY k.res_kenmerk_volgnummer
, UPPER(lcl.x ('t.res_srtkenmerk_omschrijving', t.res_srtkenmerk_key, res_srtkenmerk_omschrijving)); , UPPER(lcl.x ('t.res_srtkenmerk_omschrijving', t.res_srtkenmerk_key, res_srtkenmerk_omschrijving));
@@ -1210,42 +1201,6 @@ AS
END IF; END IF;
END IF; END IF;
END LOOP; END LOOP;
FOR cka IN ckenmerkart
LOOP
artwaarde := cka.res_kenmerkartikel_waarde;
IF artwaarde IS NOT NULL AND artwaarde <> '-1'
-- gevuld
THEN
IF cka.res_srtkenmerk_kenmerktype IN ('N', 'B') AND cka.nmin = 0 AND cka.nmax = 1
-- checkbox
THEN
IF artwaarde = '0'
THEN
artwaarde := lcl.l ('lcl_check_0');
ELSIF artwaarde = '1'
THEN
artwaarde := lcl.l ('lcl_check_1');
END IF;
ELSIF cka.res_srtkenmerk_kenmerktype = 'R' OR cka.res_srtkenmerk_kenmerktype = 'S'
-- referentie
THEN
artwaarde := flx.getdomeinwaarde (cka.fac_kenmerkdomein_key, TO_NUMBER (artwaarde));
END IF;
-- In het zeldzame geval dat de tekst te lang zou worden slaan we sommige
-- kenmerken gewoon silent over. Niet ideaal maar toch vrij theoretisch
IF (COALESCE(LENGTH(bezremark),0) + LENGTH(cka.res_srtkenmerk_omschrijving) + LENGTH(artwaarde) < 3990)
THEN
IF lremarkfilled
THEN
bezremark := bezremark || CHR(10) || cka.res_srtkenmerk_omschrijving || ': ' || artwaarde;
ELSE
bezremark := cka.res_srtkenmerk_omschrijving || ': ' || artwaarde;
lremarkfilled := TRUE;
END IF;
END IF;
END IF;
END LOOP;
END IF; END IF;
END IF; END IF;

View File

@@ -23,6 +23,7 @@ CREATE SEQUENCE res_s_res_rsv_ruimte_key MINVALUE 1;
CREATE SEQUENCE res_s_res_srtkenmerk_key MINVALUE 1; CREATE SEQUENCE res_s_res_srtkenmerk_key MINVALUE 1;
CREATE SEQUENCE res_s_res_kenmerk_key MINVALUE 1; CREATE SEQUENCE res_s_res_kenmerk_key MINVALUE 1;
CREATE SEQUENCE res_s_res_kenmerkwaarde_key MINVALUE 1; CREATE SEQUENCE res_s_res_kenmerkwaarde_key MINVALUE 1;
CREATE SEQUENCE res_s_res_kenmerkartikel_key MINVALUE 1;
CREATE SEQUENCE res_s_res_srtartikel_og_key MINVALUE 1; CREATE SEQUENCE res_s_res_srtartikel_og_key MINVALUE 1;
CREATE SEQUENCE res_s_res_disc_params_key MINVALUE 1; CREATE SEQUENCE res_s_res_disc_params_key MINVALUE 1;
CREATE SEQUENCE res_s_res_activiteitdisc_key MINVALUE 1; CREATE SEQUENCE res_s_res_activiteitdisc_key MINVALUE 1;

View File

@@ -708,8 +708,11 @@ CREATE_TABLE(res_kenmerk, 0)
NUMBER(10) NUMBER(10)
, res_activiteit_key , res_activiteit_key
NUMBER(10) NUMBER(10)
, res_kenmerk_niveau , res_artikel_key
NUMBER(10)
, res_kenmerk_niveau /* "A"=Activiteit of "D"=Discipline/Catalogus artikel */
VARCHAR2(1) VARCHAR2(1)
DEFAULT 'A'
, res_kenmerk_toonbaar , res_kenmerk_toonbaar
NUMBER(1) NUMBER(1)
, res_kenmerk_uniek , res_kenmerk_uniek
@@ -737,9 +740,10 @@ CREATE_TABLE(res_kenmerk, 0)
, CONSTRAINT res_r_res_srtkenmerk_key1 CHECK(res_srtkenmerk_key IS NOT NULL) , CONSTRAINT res_r_res_srtkenmerk_key1 CHECK(res_srtkenmerk_key IS NOT NULL)
, CONSTRAINT res_r_res_srtkenmerk_key2 FOREIGN KEY(res_srtkenmerk_key) REFERENCES res_srtkenmerk(res_srtkenmerk_key) , CONSTRAINT res_r_res_srtkenmerk_key2 FOREIGN KEY(res_srtkenmerk_key) REFERENCES res_srtkenmerk(res_srtkenmerk_key)
, CONSTRAINT res_c_res_kenmerk_niveau1 CHECK(res_kenmerk_niveau IS NOT NULL) , CONSTRAINT res_c_res_kenmerk_niveau1 CHECK(res_kenmerk_niveau IS NOT NULL)
, CONSTRAINT res_c_res_kenmerk_niveau2 CHECK(res_kenmerk_niveau IN ('A')) , CONSTRAINT res_c_res_kenmerk_niveau2 CHECK(res_kenmerk_niveau IN ('A', 'D')) /* Activiteit of Discipline/Catalogus artikel */
, CONSTRAINT res_c_res_kenmerk_aanmaak CHECK(res_kenmerk_aanmaak IS NOT NULL) , CONSTRAINT res_c_res_kenmerk_aanmaak CHECK(res_kenmerk_aanmaak IS NOT NULL)
, CONSTRAINT res_r_res_activiteit_key FOREIGN KEY(res_activiteit_key) REFERENCES res_activiteit(res_activiteit_key) , CONSTRAINT res_r_res_activiteit_key FOREIGN KEY(res_activiteit_key) REFERENCES res_activiteit(res_activiteit_key)
, CONSTRAINT res_r_res_artikel_key FOREIGN KEY(res_artikel_key) REFERENCES res_artikel(res_artikel_key)
, CONSTRAINT res_u_res_kenmerk UNIQUE(res_activiteit_key, res_srtkenmerk_key, res_kenmerk_groep, res_kenmerk_verwijder) , CONSTRAINT res_u_res_kenmerk UNIQUE(res_activiteit_key, res_srtkenmerk_key, res_kenmerk_groep, res_kenmerk_verwijder)
); );
@@ -766,6 +770,29 @@ CREATE_TABLE(res_kenmerkwaarde, 0)
, CONSTRAINT res_u_res_kenmerkwaarde UNIQUE(res_rsv_ruimte_key, res_kenmerk_key, res_kenmerkwaarde_verwijder) , CONSTRAINT res_u_res_kenmerkwaarde UNIQUE(res_rsv_ruimte_key, res_kenmerk_key, res_kenmerkwaarde_verwijder)
); );
CREATE_TABLE(res_kenmerkartikel, 0)
( res_kenmerkartikel_key
NUMBER(10)
CONSTRAINT res_k_res_kenmerkartikel_key PRIMARY KEY
, res_rsv_artikel_key
NUMBER(10)
, res_kenmerk_key
NUMBER(10)
, res_kenmerkartikel_waarde
VARCHAR2(4000)
, res_kenmerkartikel_aanmaak
DATE
DEFAULT SYSDATE
, res_kenmerkartikel_verwijder
DATE
DEFAULT NULLDATUM
, CONSTRAINT res_r_res_rsv_artikel_key CHECK(res_rsv_artikel_key IS NOT NULL)
, CONSTRAINT res_r_res_kenmerk_key2 CHECK(res_kenmerk_key IS NOT NULL)
, CONSTRAINT res_r_res_rsv_artikel_key2 FOREIGN KEY(res_rsv_artikel_key) REFERENCES res_rsv_artikel(res_rsv_artikel_key) ON DELETE CASCADE
, CONSTRAINT res_c_res_kenmerkartikel_aanm CHECK(res_kenmerkartikel_aanmaak IS NOT NULL)
, CONSTRAINT res_u_res_kenmerkartikel UNIQUE(res_rsv_artikel_key, res_kenmerk_key, res_kenmerkartikel_verwijder)
);
CREATE_TABLE(res_srtartikel_onrgoed, 0) CREATE_TABLE(res_srtartikel_onrgoed, 0)
( res_srtartikel_onrgoed_key ( res_srtartikel_onrgoed_key
NUMBER(10) NUMBER(10)

View File

@@ -299,14 +299,24 @@ BEGIN
Dummy CHAR; Dummy CHAR;
BEGIN BEGIN
SELECT 'X' SELECT 'X'
INTO Dummy INTO Dummy
FROM res_kenmerkwaarde FROM (SELECT 'X'
WHERE FAC.SAFE_TO_NUMBER(res_kenmerkreservering_waarde) < :new.res_srtkenmerk_nmin FROM res_kenmerkwaarde
AND res_kenmerk_key IN WHERE FAC.SAFE_TO_NUMBER(res_kenmerkreservering_waarde) < :new.res_srtkenmerk_nmin
(SELECT res_kenmerk_key AND res_kenmerk_key IN
FROM res_kenmerk (SELECT res_kenmerk_key
WHERE res_srtkenmerk_key = :old.res_srtkenmerk_key FROM res_kenmerk
); WHERE res_srtkenmerk_key = :old.res_srtkenmerk_key
)
UNION
SELECT 'X'
FROM res_kenmerkartikel
WHERE FAC.SAFE_TO_NUMBER(res_kenmerkartikel_waarde) < :new.res_srtkenmerk_nmin
AND res_kenmerk_key IN
(SELECT res_kenmerk_key
FROM res_kenmerk
WHERE res_srtkenmerk_key = :old.res_srtkenmerk_key
));
raise_application_error(-20000, 'res_C_res_SRTKENMERK_MIN'); raise_application_error(-20000, 'res_C_res_SRTKENMERK_MIN');
EXCEPTION EXCEPTION
WHEN NO_DATA_FOUND WHEN NO_DATA_FOUND
@@ -323,14 +333,24 @@ BEGIN
Dummy CHAR; Dummy CHAR;
BEGIN BEGIN
SELECT 'X' SELECT 'X'
INTO Dummy INTO Dummy
FROM res_kenmerkwaarde FROM (SELECT 'X'
WHERE FAC.SAFE_TO_NUMBER(res_kenmerkreservering_waarde) > :new.res_srtkenmerk_nmax FROM res_kenmerkwaarde
AND res_kenmerk_key IN WHERE FAC.SAFE_TO_NUMBER(res_kenmerkreservering_waarde) > :new.res_srtkenmerk_nmax
(SELECT res_kenmerk_key AND res_kenmerk_key IN
FROM res_kenmerk (SELECT res_kenmerk_key
WHERE res_srtkenmerk_key = :old.res_srtkenmerk_key FROM res_kenmerk
); WHERE res_srtkenmerk_key = :old.res_srtkenmerk_key
)
UNION
SELECT 'X'
FROM res_kenmerkartikel
WHERE FAC.SAFE_TO_NUMBER(res_kenmerkartikel_waarde) > :new.res_srtkenmerk_nmax
AND res_kenmerk_key IN
(SELECT res_kenmerk_key
FROM res_kenmerk
WHERE res_srtkenmerk_key = :old.res_srtkenmerk_key
));
raise_application_error(-20000, 'res_C_res_SRTKENMERK_MAX'); raise_application_error(-20000, 'res_C_res_SRTKENMERK_MAX');
EXCEPTION EXCEPTION
WHEN NO_DATA_FOUND WHEN NO_DATA_FOUND
@@ -408,7 +428,8 @@ BEGIN
kenmerkverplicht kenmerkverplicht
FROM res_srtkenmerk res_sk, res_kenmerk res_k FROM res_srtkenmerk res_sk, res_kenmerk res_k
WHERE res_sk.res_srtkenmerk_key = res_k.res_srtkenmerk_key WHERE res_sk.res_srtkenmerk_key = res_k.res_srtkenmerk_key
AND res_k.res_kenmerk_key = :new.res_kenmerk_key; AND res_k.res_kenmerk_niveau = 'A'
AND res_k.res_kenmerk_key = :new.res_kenmerk_key;
-- --
-- Controleer eerst of het verplichte veld ingevuld is. -- Controleer eerst of het verplichte veld ingevuld is.
@@ -501,6 +522,141 @@ BEGIN
END; END;
/ /
CREATE_TRIGGER(res_t_res_kenmerkartikel_b_iu)
BEFORE INSERT OR UPDATE ON res_kenmerkartikel
FOR EACH ROW
BEGIN
-- Controleer eerst of de ingevulde waarde goed is.
--
IF :new.res_kenmerkartikel_waarde <> :old.res_kenmerkartikel_waarde
OR:old.res_kenmerkartikel_waarde IS NULL
OR:new.res_kenmerkartikel_waarde IS NULL
THEN
DECLARE
srtkenmerkomschr res_srtkenmerk.res_srtkenmerk_omschrijving%TYPE;
srtkenmerktype res_srtkenmerk.res_srtkenmerk_kenmerktype%TYPE;
srtkenmerklengte res_srtkenmerk.res_srtkenmerk_lengte%TYPE;
srtkenmerkdec res_srtkenmerk.res_srtkenmerk_dec%TYPE;
srtkenmerknmin res_srtkenmerk.res_srtkenmerk_nmin%TYPE;
srtkenmerknmax res_srtkenmerk.res_srtkenmerk_nmax%TYPE;
kenmerkverplicht res_kenmerk.res_kenmerk_verplicht%TYPE;
numberwaarde NUMBER (25, 5);
formatmask VARCHAR2 (60);
kenmerkreswaarde res_kenmerkartikel.res_kenmerkartikel_waarde%TYPE;
BEGIN
kenmerkreswaarde := :new.res_kenmerkartikel_waarde;
--
SELECT res_sk.res_srtkenmerk_omschrijving,
res_sk.res_srtkenmerk_kenmerktype,
res_sk.res_srtkenmerk_lengte,
res_sk.res_srtkenmerk_dec,
res_sk.res_srtkenmerk_nmin,
res_sk.res_srtkenmerk_nmax,
res_k.res_kenmerk_verplicht
INTO srtkenmerkomschr,
srtkenmerktype,
srtkenmerklengte,
srtkenmerkdec,
srtkenmerknmin,
srtkenmerknmax,
kenmerkverplicht
FROM res_srtkenmerk res_sk, res_kenmerk res_k
WHERE res_sk.res_srtkenmerk_key = res_k.res_srtkenmerk_key
AND res_k.res_kenmerk_niveau = 'D'
AND res_k.res_kenmerk_key = :new.res_kenmerk_key;
--
-- Controleer eerst of het verplichte veld ingevuld is.
--
IF kenmerkverplicht IS NOT NULL AND kenmerkreswaarde IS NULL
THEN
raise_application_error (-20004, 'res_m244,' || srtkenmerkomschr);
--
-- Kijk welk KenmerkType gebruikt wordt.
-- Aan de hand daarvan moet een controle uitgevoerd worden.
--
ELSIF srtkenmerktype = 'C'
THEN
-- CHAR
-- Controleer of de lengte te groot of goed is.
IF LENGTH (kenmerkreswaarde) > srtkenmerklengte
THEN
raise_application_error (
-20004,
'res_m245,' || srtkenmerkomschr || ',' || TO_CHAR (srtkenmerklengte));
END IF;
ELSIF srtkenmerktype IN ('N', 'B')
THEN
-- NUMBER
-- Controleer of er een numerieke waarde ingevuld is.
IF srtkenmerkdec IS NULL OR srtkenmerkdec = 0
THEN
formatmask := RPAD ('9', srtkenmerklengte, '9');
ELSE
formatmask :=
RPAD ('9', srtkenmerklengte - srtkenmerkdec, '9')
|| 'D'
|| RPAD ('9', srtkenmerkdec, '9');
END IF;
--
BEGIN
numberwaarde := TO_NUMBER (kenmerkreswaarde);
EXCEPTION
WHEN OTHERS
THEN
formatmask := REPLACE (formatmask, '9', '#');
formatmask := REPLACE (formatmask, '0', '#');
formatmask := REPLACE (formatmask, 'D', '.');
raise_application_error (
-20004,
'res_m246,' || srtkenmerkomschr || ',' || formatmask);
END;
-- Controleer of de waarde binnen NMin en NMax ligt.
IF (srtkenmerknmin IS NOT NULL AND numberwaarde < srtkenmerknmin)
OR (srtkenmerknmax IS NOT NULL AND numberwaarde > srtkenmerknmax)
THEN
raise_application_error (
-20004,
'res_m247,'
|| srtkenmerkomschr
|| ','
|| TO_CHAR (srtkenmerknmin)
|| ','
|| TO_CHAR (srtkenmerknmax));
ELSE
-- Controleer of de waarde aan het formaat voldoet.
kenmerkreswaarde := LTRIM (TO_CHAR (numberwaarde, formatmask));
IF INSTR (kenmerkreswaarde, '#') <> 0
THEN
formatmask := REPLACE (formatmask, '9', '#');
formatmask := REPLACE (formatmask, '0', '#');
formatmask := REPLACE (formatmask, 'D', '.');
raise_application_error (
-20004,
'res_m246,' || srtkenmerkomschr || ',' || formatmask);
END IF;
END IF;
-- Zet de geconverteerde waarde terug.
:new.res_kenmerkartikel_waarde := kenmerkreswaarde;
ELSIF srtkenmerktype = 'D'
THEN
-- DATUM
kenmerkreswaarde := TO_CHAR (TO_DATE (kenmerkreswaarde, 'DD-MM-YY'), 'DD-MM-YYYY');
-- Zet de geconverteerde waarde terug.
:new.res_kenmerkartikel_waarde := kenmerkreswaarde;
END IF;
END;
UPDATE_PRIMARY_KEY(res_kenmerkartikel_key, res_s_res_kenmerkartikel_key);
END IF;
END;
/
CREATE_TRIGGER(res_t_res_srtartikel_og_B_IU) CREATE_TRIGGER(res_t_res_srtartikel_og_B_IU)
BEFORE INSERT OR UPDATE ON res_srtartikel_onrgoed BEFORE INSERT OR UPDATE ON res_srtartikel_onrgoed
FOR EACH ROW FOR EACH ROW

View File

@@ -272,6 +272,12 @@ UPDATE fac_setting
/////////////////////////////////////////////////////////////////////////////////////////// NYBU#56537 /////////////////////////////////////////////////////////////////////////////////////////// NYBU#56537
ALTER TABLE cnt_disc_params ADD cnt_disc_params_binding NUMBER(3) DEFAULT (3) NOT NULL; ALTER TABLE cnt_disc_params ADD cnt_disc_params_binding NUMBER(3) DEFAULT (3) NOT NULL;
/////////////////////////////////////////////////////////////////////////////////////////// YKPN#55980
ALTER TABLE FIN_FACTUUR
ADD cnt_contract_plaats_key
NUMBER(10)
CONSTRAINT fin_r_fin_factuur8 REFERENCES cnt_contract_plaats(cnt_contract_plaats_key);
/////////////////////////////////////////////////////////////////////////////////////////// RWSN#55076 /////////////////////////////////////////////////////////////////////////////////////////// RWSN#55076
ALTER TABLE fac_nieuws ALTER TABLE fac_nieuws
ADD fac_groep_key ADD fac_groep_key
@@ -485,11 +491,70 @@ UPDATE mld_melding
ALTER TRIGGER mld_t_mld_melding_B_IU ENABLE; ALTER TRIGGER mld_t_mld_melding_B_IU ENABLE;
INSERT INTO fac_setting (fac_setting_module,
fac_setting_name,
fac_setting_description,
fac_setting_pvalue)
VALUES('MLD',
'mld_melding_actiecode',
'Dummy',
CASE WHEN fac.getSetting('mld_flag_on_fenote') > 0 OR fac.getSetting('mld_flag_on_fenote') > 0 THEN 1 ELSE NULL END);
DEF_FAC_SRTNOT('MLDA2B', 0, 'lcl_noti_MLDA2B', 'mld/mld_melding.asp?urole=bo&mld_key=', '0', 'melding', 10);
DEF_FAC_SRTNOT('MLDA2M', 0, 'lcl_noti_MLDA2M', 'mld/mld_melding.asp?urole=fe&mld_key=', '0', 'melding', 10);
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#56113 /////////////////////////////////////////////////////////////////////////////////////////// FCLT#56113
ALTER TABLE mld_melding ALTER TABLE mld_melding
ADD mld_melding_externsyncdate /* voor koppelingen met externe systemen */ ADD mld_melding_externsyncdate /* voor koppelingen met externe systemen */
DATE; DATE;
/////////////////////////////////////////////////////////////////////////////////////////// NYBU#55434
ALTER TABLE res_kenmerk
DROP CONSTRAINT res_c_res_kenmerk_niveau2;
ALTER TABLE res_kenmerk
ADD CONSTRAINT res_c_res_kenmerk_niveau2 CHECK(res_kenmerk_niveau IN ('A', 'D')); /* Activiteit of Discipline/Catalogus */
ALTER TABLE res_kenmerk
MODIFY res_kenmerk_niveau DEFAULT 'A';
ALTER TABLE res_kenmerk
ADD res_artikel_key
NUMBER(10)
CONSTRAINT res_r_res_artikel_key REFERENCES res_artikel(res_artikel_key);
CREATE SEQUENCE res_s_res_kenmerkartikel_key MINVALUE 1;
CREATE_TABLE(res_kenmerkartikel, 0)
( res_kenmerkartikel_key
NUMBER(10)
CONSTRAINT res_k_res_kenmerkartikel_key PRIMARY KEY
, res_rsv_artikel_key
NUMBER(10)
, res_kenmerk_key
NUMBER(10)
, res_kenmerkartikel_waarde
VARCHAR2(4000)
, res_kenmerkartikel_aanmaak
DATE
DEFAULT SYSDATE
, res_kenmerkartikel_verwijder
DATE
DEFAULT NULLDATUM
, CONSTRAINT res_r_res_rsv_artikel_key CHECK(res_rsv_artikel_key IS NOT NULL)
, CONSTRAINT res_r_res_kenmerk_key2 CHECK(res_kenmerk_key IS NOT NULL)
, CONSTRAINT res_r_res_rsv_artikel_key2 FOREIGN KEY(res_rsv_artikel_key) REFERENCES res_rsv_artikel(res_rsv_artikel_key) ON DELETE CASCADE
, CONSTRAINT res_c_res_kenmerkartikel_aanm CHECK(res_kenmerkartikel_aanmaak IS NOT NULL)
, CONSTRAINT res_u_res_kenmerkartikel UNIQUE(res_rsv_artikel_key, res_kenmerk_key, res_kenmerkartikel_verwijder)
);
/////////////////////////////////////////////////////////////////////////////////////////// MNNL#55706
ALTER TABLE mld_workflowstep ADD
mld_workflowstep_eindtype
NUMBER(2)
DEFAULT 0
NOT_NULL(mld_workflowstep_eindtype, mld_c_mld_workflowstep_eindtype);
/////////////////////////////////////////////////////////////////////////////////////////// XXXX#nnnnn /////////////////////////////////////////////////////////////////////////////////////////// XXXX#nnnnn
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////