diff --git a/FAC/FAC_PACF.SRC b/FAC/FAC_PACF.SRC index 5bb6c452..5a1e7647 100644 --- a/FAC/FAC_PACF.SRC +++ b/FAC/FAC_PACF.SRC @@ -3244,7 +3244,7 @@ AS WHERE alg_kenmerk_upper = UPPER (kw) AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_niveau = 'R' - AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B' 'V'); + AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); ELSE -- kenmerkwaarde is numeriek (dus key)! SELECT alg_kenmerk_key INTO v_kenmerk_key @@ -3252,7 +3252,7 @@ AS WHERE alg_kenmerk_key = fac.safe_to_number (kw) AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_niveau = 'R' - AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B' 'V'); + AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); END IF; RETURN v_kenmerk_key; @@ -7422,13 +7422,13 @@ IS INTO v_srtkenmerk_key FROM ins_v_aanwezigsrtkenmerk WHERE ins_srtkenmerk_upper = UPPER (v_kw) - AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B' 'V'); + AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); ELSE -- kenmerkwaarde is numeriek (dus key)! SELECT ins_srtkenmerk_key INTO v_srtkenmerk_key FROM ins_v_aanwezigsrtkenmerk WHERE ins_srtkenmerk_key = fac.safe_to_number (v_kw) - AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B' 'V'); + AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); END IF; RETURN TO_CHAR(v_srtkenmerk_key) || '|' || TO_CHAR(v_kenmerk_groep); @@ -18445,14 +18445,14 @@ AS FROM cnt_srtkenmerk WHERE cnt_srtkenmerk_verwijder IS NULL AND cnt_srtkenmerk_upper = UPPER (kw) - AND cnt_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B' 'V'); + AND cnt_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); ELSE -- kenmerkwaarde is numeriek (dus key)! SELECT cnt_srtkenmerk_key INTO v_srtkenmerk_key FROM cnt_srtkenmerk WHERE cnt_srtkenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = fac.safe_to_number (kw) - AND cnt_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B' 'V'); + AND cnt_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); END IF; RETURN v_srtkenmerk_key; @@ -20492,6 +20492,7 @@ AS v_res_ruimte_key res_ruimte.res_ruimte_key%TYPE; v_syncstate VARCHAR2(4000); v_len NUMBER; + v_sync NUMBER; CURSOR c1 IS @@ -20512,11 +20513,28 @@ BEGIN FROM fac_import WHERE fac_import_key = p_import_key; - -- Syncstate leegmaken, zodat we 'n append kunnen doen. - UPDATE res_ruimte - SET res_ruimte_syncstate = NULL - WHERE res_ruimte_key = v_res_ruimte_key - AND res_ruimte_extern_id IS NOT NULL; + SELECT r.res_ruimte_key - COALESCE(s.res_ruimte_key, 0) + INTO v_sync + FROM res_ruimte r + , res_ruimte_sync s + WHERE r.res_ruimte_key = s.res_ruimte_key(+) + AND r.res_ruimte_extern_id IS NOT NULL + AND r.res_ruimte_key = v_res_ruimte_key; + -- + -- v_sync: no_data_found --> niet gevonden, niets doen. + -- 0 --> bestaat in res_ruimte en res_ruimte_sync. + -- >0 --> bestaat alleen in res_ruimte. + IF (v_sync = 0) + THEN + -- Syncstate leegmaken, zodat we 'n append kunnen doen. + UPDATE res_ruimte_sync + SET res_ruimte_syncstate = NULL + WHERE res_ruimte_key = v_res_ruimte_key; + ELSE + -- Voeg een res_ruimte_sync record toe. + INSERT INTO res_ruimte_sync (res_ruimte_key) + VALUES (v_res_ruimte_key); + END IF; FOR rec1 IN c1 LOOP BEGIN @@ -20536,11 +20554,10 @@ BEGIN -- Stylesheet knipt syncstates langer dan 4000 karakters op in meerdere delen -- Hier weer aan elkaar plakken. - UPDATE res_ruimte + UPDATE res_ruimte_sync SET res_ruimte_syncstate = res_ruimte_syncstate || TRIM(v_syncstate), res_ruimte_syncdate = SYSDATE - WHERE res_ruimte_key = v_res_ruimte_key - AND res_ruimte_extern_id IS NOT NULL; + WHERE res_ruimte_key = v_res_ruimte_key; END IF; END; END LOOP; @@ -20549,9 +20566,8 @@ BEGIN v_errormsg := 'Fout bij bepalen lengte syncstate'; SELECT LENGTH(res_ruimte_syncstate) INTO v_len - FROM res_ruimte - WHERE res_ruimte_key = v_res_ruimte_key - AND res_ruimte_extern_id IS NOT NULL; + FROM res_ruimte_sync + WHERE res_ruimte_key = v_res_ruimte_key; IF (v_len > 4000) THEN @@ -20560,8 +20576,10 @@ BEGIN 'Lange syncstate, ' || v_len || ' karakters', 'res_ruimte_key: ' || v_res_ruimte_key); END IF; - EXCEPTION + WHEN NO_DATA_FOUND + THEN + NULL; WHEN OTHERS THEN oracle_err_mes := SUBSTR (SQLERRM, 1, 1000); diff --git a/RES/RES_TAB.SRC b/RES/RES_TAB.SRC index 308fe1bd..160ae387 100644 --- a/RES/RES_TAB.SRC +++ b/RES/RES_TAB.SRC @@ -114,10 +114,6 @@ CREATE_TABLE(res_ruimte,0) CONSTRAINT res_c_res_status_fo2 CHECK(res_status_fo_key IN (1,2,3,4)), res_ruimte_extern_id VARCHAR2(256), - res_ruimte_syncstate - CLOB, - res_ruimte_syncdate - DATE, res_ruimte_cv NUMBER(1) DEFAULT 0 @@ -126,6 +122,15 @@ CREATE_TABLE(res_ruimte,0) CONSTRAINT res_u_res_ruimte_upper UNIQUE(res_ruimte_upper, res_ruimte_verwijder) ); +CREATE_TABLE(res_ruimte_sync,0) +( + res_ruimte_key + NUMBER(10), + res_ruimte_syncstate + CLOB, + res_ruimte_syncdate + DATE +); CREATE_TABLE(res_alg_ruimte,0) ( diff --git a/_UP/DB36to37.src b/_UP/DB36to37.src index 0867c625..5d0061d4 100644 --- a/_UP/DB36to37.src +++ b/_UP/DB36to37.src @@ -481,6 +481,25 @@ BEGIN END; / +/////////////////////////////////////////////////////////////////////////////////////////// FCLT#58249 +CREATE TABLE res_ruimte_sync +( + res_ruimte_key NUMBER(10), + res_ruimte_syncstate CLOB, + res_ruimte_syncdate DATE +); + +INSERT INTO res_ruimte_sync +( SELECT res_ruimte_key + , res_ruimte_syncstate + , res_ruimte_syncdate + FROM res_ruimte + WHERE res_ruimte_syncstate IS NOT NULL + OR res_ruimte_syncdate IS NOT NULL +); + +ALTER TABLE res_ruimte DROP COLUMN res_ruimte_syncstate; +ALTER TABLE res_ruimte DROP COLUMN res_ruimte_syncdate; /////////////////////////////////////////////////////////////////////////////////////////// XXXX#nnnnn