From a2dd7d97b7edf9df5d8d9716c2fcdf833c74555a Mon Sep 17 00:00:00 2001 From: Jos Groot Lipman Date: Thu, 12 Dec 2024 08:14:32 +0000 Subject: [PATCH] FCLT#86661 Savepoint global tsk_master_schema voor scheduling svn path=/Database/trunk/; revision=67371 --- BES/BES_PAC.SRC | 4 +- CNT/CNT_PAC.SRC | 4 +- FAC/FAC_PAC.SRC | 47 +++++++++------ FAC/FAC_PACTSK.SRC | 145 +++++++++++++++++++++++++++++++++++++++++++++ FAC/FAC_SEQ.SRC | 2 + FAC/FAC_SET.SRC | 4 +- FAC/FAC_TAB.SRC | 26 +++++++- FAC/FAC_TRI.SRC | 39 ++++++++++++ FCLT.NMK | 1 + _UP/DB49to50.src | 35 +++++++++++ 10 files changed, 285 insertions(+), 22 deletions(-) create mode 100644 FAC/FAC_PACTSK.SRC diff --git a/BES/BES_PAC.SRC b/BES/BES_PAC.SRC index fd236070..583492e9 100644 --- a/BES/BES_PAC.SRC +++ b/BES/BES_PAC.SRC @@ -2250,7 +2250,9 @@ AS OR EXISTS (SELECT 1 FROM prs_bedrijfadres ba - WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'BOG'))) + WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key + AND ba.prs_bedrijfadres_startdatum <= SYSDATE + AND ba.prs_bedrijfadres_type = 'BOG'))) LOOP fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key, pbedrijfadres_type => bedrijfrec.bedrijfadres_type, diff --git a/CNT/CNT_PAC.SRC b/CNT/CNT_PAC.SRC index 9cd22483..e8e335f8 100644 --- a/CNT/CNT_PAC.SRC +++ b/CNT/CNT_PAC.SRC @@ -716,7 +716,9 @@ CREATE OR REPLACE PACKAGE BODY cnt AS OR EXISTS (SELECT 1 FROM prs_bedrijfadres ba - WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'CG'))) + WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key + AND ba.prs_bedrijfadres_startdatum <= SYSDATE + AND ba.prs_bedrijfadres_type = 'CG'))) LOOP fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key, pbedrijfadres_type => bedrijfrec.bedrijfadres_type, diff --git a/FAC/FAC_PAC.SRC b/FAC/FAC_PAC.SRC index 8651041f..436c4d56 100644 --- a/FAC/FAC_PAC.SRC +++ b/FAC/FAC_PAC.SRC @@ -36,6 +36,7 @@ #include "fac_pacflex.src" #include "fac_pacano.src" #include "fac_pacdel.src" +#include "fac_pactsk.src" CREATE OR REPLACE PACKAGE fac AUTHID CURRENT_USER -- zodat CREATE TABLE lukt @@ -61,6 +62,7 @@ CREATE OR REPLACE PACKAGE fac FUNCTION safe_To_Number( str IN VARCHAR2 ) RETURN NUMBER; FUNCTION safe_To_Date ( pchar IN VARCHAR2, pfmt IN VARCHAR2 ) RETURN DATE; FUNCTION safe_concat ( pchar1 IN VARCHAR2, pchar2 IN VARCHAR2, pmaxlen NUMBER DEFAULT 4000 ) RETURN VARCHAR2; + FUNCTION safe_least ( p1 IN DATE, p2 IN DATE ) RETURN DATE; FUNCTION getweekdaynum (d IN DATE) RETURN NUMBER; FUNCTION getdomeinwaarde (dkey IN NUMBER, waarde IN VARCHAR2, ignorewhenxmlnode IN NUMBER DEFAULT 0) RETURN VARCHAR2; FUNCTION getscopeleveltext (plevel IN NUMBER, ptype IN VARCHAR) RETURN VARCHAR; @@ -115,8 +117,6 @@ CREATE OR REPLACE PACKAGE fac pbedrijfadreskey NUMBER DEFAULT NULL, pqueue VARCHAR2 DEFAULT 'DEFAULT', pgeturl VARCHAR2 DEFAULT NULL); - PROCEDURE putnotification (pfrom NUMBER, pto NUMBER, pmessage VARCHAR2, pmode NUMBER, - poptemail VARCHAR2, poptmobile VARCHAR2); PROCEDURE putsystemnotification (pmessage VARCHAR2, pmode NUMBER); PROCEDURE putnotificationsrtprio (pfrom NUMBER, pto NUMBER, pcode VARCHAR2, pref NUMBER, poptmessage VARCHAR2, poptstatus NUMBER, poptemail VARCHAR2, poptmobile VARCHAR2, pxref NUMBER, @@ -159,8 +159,7 @@ CREATE OR REPLACE PACKAGE fac psender VARCHAR2 DEFAULT NULL, plocatie_key NUMBER DEFAULT NULL, pdiscipline_key NUMBER DEFAULT NULL, - ptypeopdr_key NUMBER DEFAULT NULL, - teverzenden_datum DATE DEFAULT SYSDATE); + ptypeopdr_key NUMBER DEFAULT NULL); FUNCTION gettrackingdate (peventcode IN VARCHAR2, pkey IN number) RETURN date; FUNCTION gettrackinguserkey (peventcode IN VARCHAR2, pkey IN number) RETURN number; PROCEDURE initsession (flcode IN VARCHAR2); @@ -366,6 +365,19 @@ CREATE OR REPLACE PACKAGE BODY fac AS RETURN SUBSTR(v_result, 1, pmaxlen); END; + -- Lever de andere waarde op als er een parameter NULL is + FUNCTION safe_least ( p1 IN DATE, p2 IN DATE ) RETURN DATE + IS + BEGIN + IF p1 IS NULL THEN + RETURN p2; + ELSIF p2 IS NULL THEN + RETURN p1; + ELSE + RETURN LEAST(p1, p2); + END IF; + END; + -- Levert het dow-nummer op (1-7), op een nls-onafhankelijke wijze FUNCTION getweekdaynum (d IN DATE) RETURN NUMBER IS BEGIN @@ -2229,14 +2241,6 @@ CREATE OR REPLACE PACKAGE BODY fac AS END IF; END; - /* for code compatibility only */ - PROCEDURE putnotification (pfrom NUMBER, pto NUMBER, pmessage VARCHAR2, pmode NUMBER, - poptemail VARCHAR2, poptmobile VARCHAR2) - AS - BEGIN - putnotificationprio (pfrom, pto, pmessage, pmode, poptemail, poptmobile, 2); - END; - -- Zet een bericht in de queue ter verspreiding aan de applicatiebeheerders PROCEDURE putsystemnotification (pmessage VARCHAR2, pmode NUMBER) AS @@ -2249,7 +2253,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS BEGIN FOR rec1 IN c1 LOOP - putnotification (NULL, rec1.prs_perslid_key, pmessage, pmode, NULL, NULL); + putnotificationprio (NULL, rec1.prs_perslid_key, pmessage, pmode, NULL, NULL, 2); END LOOP; END; @@ -2742,6 +2746,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS AS BEGIN -- Ruim alle totaal verwerkte notificaties op. + -- Putorders heeft de meeste al wel gedaan maar iets als portal only komt niet per se langs putorders DELETE FROM fac_notificatie WHERE fac_notificatie_status IN (0, 16) AND fac_notificatie_systeemadres IS NULL @@ -4839,13 +4844,13 @@ CREATE OR REPLACE PACKAGE BODY fac AS psender VARCHAR2 DEFAULT NULL, plocatie_key NUMBER DEFAULT NULL, pdiscipline_key NUMBER DEFAULT NULL, - ptypeopdr_key NUMBER DEFAULT NULL, - teverzenden_datum DATE DEFAULT SYSDATE) + ptypeopdr_key NUMBER DEFAULT NULL) AS l_bdradr_key prs_bedrijfadres.prs_bedrijfadres_key%TYPE; l_basrt_key prs_bedrijfadres_srtnoti.prs_bedrijfadres_srtnoti_key%TYPE; l_srtnoti_code fac_srtnotificatie.fac_srtnotificatie_code%TYPE; l_srtnoti_key fac_srtnotificatie.fac_srtnotificatie_key%TYPE; + l_srtnoti_delay fac_srtnotificatie.fac_srtnotificatie_delay%TYPE; nn_noti NUMBER (10); BEGIN -- Merk op: per bedrijf notificeren we hooguit één enkel technisch adres @@ -4890,8 +4895,14 @@ CREATE OR REPLACE PACKAGE BODY fac AS DBMS_OUTPUT.Put_line ('Gevonden technisch adres key ' || l_bdradr_key); -- Nu de srtnotifictie zoeken - SELECT basrt.prs_bedrijfadres_srtnoti_key, srtnoti.fac_srtnotificatie_code, srtnoti.fac_srtnotificatie_key - INTO l_basrt_key, l_srtnoti_code, l_srtnoti_key + SELECT basrt.prs_bedrijfadres_srtnoti_key, + srtnoti.fac_srtnotificatie_code, + srtnoti.fac_srtnotificatie_delay, + srtnoti.fac_srtnotificatie_key + INTO l_basrt_key, + l_srtnoti_code, + l_srtnoti_delay, + l_srtnoti_key FROM prs_bedrijfadres_srtnoti basrt, fac_srtnotificatie srtnoti, fac_tracking ft WHERE basrt.prs_bedrijfadres_key(+) = l_bdradr_key AND basrt.fac_srtnotificatie_key(+) = srtnoti.fac_srtnotificatie_key @@ -4931,7 +4942,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS psender, 0, l_bdradr_key, - teverzenden_datum); + SYSDATE); -- nooit delay, we ontdubbelen toch niet? + NVL(l_srtnoti_delay/ 60/ 60/ 24, 0)); END; -- Levert de (nieuwste) datum op van een getrackt event op key diff --git a/FAC/FAC_PACTSK.SRC b/FAC/FAC_PACTSK.SRC new file mode 100644 index 00000000..e06d8604 --- /dev/null +++ b/FAC/FAC_PACTSK.SRC @@ -0,0 +1,145 @@ +/* $Revision$ + * $Id$ + */ + +/* FAC_PACTSK + * + * Contains all functions for tasker. + * + */ + +CREATE OR REPLACE PACKAGE tsk +AS + PROCEDURE registercust (p_customerid VARCHAR2 DEFAULT NULL, + p_schema VARCHAR2 DEFAULT NULL); + PROCEDURE registertask (p_taskcode VARCHAR2, + p_customerid VARCHAR2 DEFAULT NULL); + PROCEDURE starttask (p_taskcode VARCHAR2, + p_nextrun DATE DEFAULT SYSDATE, + p_customerid VARCHAR2 DEFAULT NULL); +END tsk; +/ + +CREATE OR REPLACE PACKAGE BODY tsk +AS + PROCEDURE registercust (p_customerid VARCHAR2 DEFAULT NULL, + p_schema VARCHAR2 DEFAULT NULL) + AS + tsk_master_schema VARCHAR(32); + custid fac_version.fac_version_cust%TYPE; + selfid fac_version.fac_version_cust%TYPE; + selfschema fac_version.fac_version_schema%TYPE; + tsksql VARCHAR2 (4000); + cursor_name INTEGER; + rows_processed INTEGER; + BEGIN + SELECT fac_version_cust, + fac_version_schema + INTO selfid, + selfschema + FROM fac_version; + custid := COALESCE(p_customerid, selfid); + tsk_master_schema := fac.getsetting ('tsk_master_schema'); + + IF tsk_master_schema IS NULL OR tsk_master_schema = USER + THEN -- zelf oplossen + BEGIN + INSERT INTO fac_cust(fac_cust_customerid, fac_cust_schema) + VALUES(custid, COALESCE(p_schema, selfschema)); + EXCEPTION + WHEN DUP_VAL_ON_INDEX + THEN + NULL; + END; + -- Schema bijwerken + UPDATE fac_cust + SET fac_cust_schema = COALESCE(p_schema, selfschema) + WHERE fac_cust_customerid = custid; + ELSE -- Remote register + tsksql := 'BEGIN ' || tsk_master_schema || '.tsk.registercust(:custid, :schema); END;'; + + cursor_name := DBMS_SQL.open_cursor; + DBMS_SQL.PARSE (cursor_name, tsksql, DBMS_SQL.NATIVE); + DBMS_SQL.BIND_VARIABLE (cursor_name, ':custid', selfid); + DBMS_SQL.BIND_VARIABLE (cursor_name, ':schema', selfschema); + rows_processed := DBMS_SQL.EXECUTE (cursor_name); + DBMS_SQL.CLOSE_CURSOR (cursor_name); + END IF; + END; + + PROCEDURE registertask (p_taskcode VARCHAR2, + p_customerid VARCHAR2 DEFAULT NULL) + AS + tsk_master_schema VARCHAR(32); + selfid fac_version.fac_version_cust%TYPE; + tsksql VARCHAR2 (4000); + cursor_name INTEGER; + rows_processed INTEGER; + BEGIN + SELECT fac_version_cust INTO selfid FROM fac_version; + tsk_master_schema := fac.getsetting ('tsk_master_schema'); + + IF tsk_master_schema IS NULL OR tsk_master_schema = USER + THEN -- zelf oplossen + BEGIN + INSERT INTO fac_task(fac_cust_key, fac_task_code) + SELECT fac_cust_key, p_taskcode + FROM fac_cust + WHERE fac_cust_customerid = COALESCE(p_customerid, selfid); + EXCEPTION + WHEN DUP_VAL_ON_INDEX + THEN + NULL; + END; + ELSE -- start remote tasker + tsksql := 'BEGIN ' || tsk_master_schema || '.tsk.registertask(:taskcode, :custid); END;'; + + cursor_name := DBMS_SQL.open_cursor; + DBMS_SQL.PARSE (cursor_name, tsksql, DBMS_SQL.NATIVE); + DBMS_SQL.BIND_VARIABLE (cursor_name, ':custid', selfid); + DBMS_SQL.BIND_VARIABLE (cursor_name, ':taskcode', p_taskcode); + rows_processed := DBMS_SQL.EXECUTE (cursor_name); + DBMS_SQL.CLOSE_CURSOR (cursor_name); + END IF; + END; + + -- veronderstelt dat taak al correct is geregistreerd + PROCEDURE starttask (p_taskcode VARCHAR2, + p_nextrun DATE DEFAULT SYSDATE, + p_customerid VARCHAR2 DEFAULT NULL) + AS + tsk_master_schema VARCHAR(32); + selfid fac_version.fac_version_cust%TYPE; + tsksql VARCHAR2 (4000); + cursor_name INTEGER; + rows_processed INTEGER; + BEGIN + SELECT fac_version_cust INTO selfid FROM fac_version; + tsk_master_schema := fac.getsetting ('tsk_master_schema'); + + IF tsk_master_schema IS NULL OR tsk_master_schema = USER + THEN -- zelf oplossen + UPDATE fac_task + SET fac_task_nextrun = fac.safe_LEAST (p_nextrun, fac_task_nextrun) + WHERE fac_task_code = p_taskcode + AND fac_cust_key = (SELECT fac_cust_key + FROM fac_cust + WHERE fac_cust_customerid = COALESCE(p_customerid, selfid)); + ELSE -- start remote tasker + tsksql := 'BEGIN ' || tsk_master_schema || '.tsk.starttask(:taskcode, :nextrun, :custid); END;'; + + cursor_name := DBMS_SQL.open_cursor; + DBMS_SQL.PARSE (cursor_name, tsksql, DBMS_SQL.NATIVE); + DBMS_SQL.BIND_VARIABLE (cursor_name, ':custid', selfid); + DBMS_SQL.BIND_VARIABLE (cursor_name, ':taskcode', p_taskcode); + DBMS_SQL.BIND_VARIABLE (cursor_name, ':nextrun', p_nextrun); + rows_processed := DBMS_SQL.EXECUTE (cursor_name); + DBMS_SQL.CLOSE_CURSOR (cursor_name); + END IF; + END; +END tsk; +/ +-- tsk_master_schema needs: +-- GRANT EXECUTE ON tsk TO PUBLIC + +REGISTERRUN('$Id$') diff --git a/FAC/FAC_SEQ.SRC b/FAC/FAC_SEQ.SRC index f257850b..2a1bd886 100644 --- a/FAC/FAC_SEQ.SRC +++ b/FAC/FAC_SEQ.SRC @@ -55,6 +55,8 @@ CREATE SEQUENCE fac_s_fac_session_key MINVALUE 1; CREATE SEQUENCE fac_s_fac_sequence_key MINVALUE 1; CREATE SEQUENCE fac_s_fac_bijlagen_key MINVALUE 1; CREATE SEQUENCE fac_s_fac_layout_key MINVALUE 100; +CREATE SEQUENCE fac_s_fac_cust_key MINVALUE 1; +CREATE SEQUENCE fac_s_fac_task_key MINVALUE 1; -- CREATE SEQUENCE fac_s_fac_queue_key MINVALUE 1; -- Some free to use sequence to generate unique and sequential numbers diff --git a/FAC/FAC_SET.SRC b/FAC/FAC_SET.SRC index a719b375..544a54b8 100644 --- a/FAC/FAC_SET.SRC +++ b/FAC/FAC_SET.SRC @@ -63,6 +63,8 @@ DEFINE_SETTING('FAC', 0000, 'WEB_FACFAC', 'sys_ip_restrict_internal' DEFINE_SETTING('FAC', 0000, 'WEB_FACFAC', 'fac_imagecharts_account_id' , 'string' , '' , 'Image-charts account_id (future use)') DEFINE_SETTING('FAC', 0000, 'WEB_FACFAC', 'fac_imagecharts_secret_key' , 'string' , '' , 'Image-charts secret_key (future use)') +DEFINE_SETTING('PUO', 0000, 'WEB_FACTAB', 'tsk_master_schema' , 'string' , '' , 'Task master schema name (not necessarily customerId)') + DEFINE_SETTING('FAC', 0001, 'WEB_FACTAB', 'fac_api2_compatibility' , 'number' , '0' , '0=latest and greatest, bit 1=backwards compatible') DEFINE_SETTING('ALG', 0001, 'WEB_FACFAC', 'alg_ruimte_comm_opp_key' , 'number' , '-1' , 'Key to be used for commercial ruimte oppervlakte') @@ -354,7 +356,7 @@ DEFINE_SETTING('BEZ', 0001, 'WEB_PRSSYS', 'vis_show_alg_level' DEFINE_SETTING('BEZ', 0001, 'WEB_PRSSYS', 'vis_t1' , 'float' , '8' , 'visitors day start (hour)') DEFINE_SETTING('BEZ', 0001, 'WEB_PRSSYS', 'vis_t1_fo' , 'float' , '-1' , 'visitors day start (hour) frontoffice') DEFINE_SETTING('BEZ', 0001, 'WEB_PRSSYS', 'vis_t1_std' , 'float' , '8' , 'standard visiting begin time of visitors (hour)') -DEFINE_SETTING('BEZ', 0001, 'WEB_PRSSYS', 'vis_t2' , 'float' , '18' , 'visitors day end (hour)') +DEFINE_SETTING('BEZ', 0001, 'WEB_PRSSYS', 'vis_t2' , 'float' , '18' , 'visitors day end (hour, max. 23.99)') DEFINE_SETTING('BEZ', 0001, 'WEB_PRSSYS', 'vis_t2_fo' , 'float' , '-1' , 'visitors day end (hour) frontoffice') DEFINE_SETTING('BEZ', 0001, 'WEB_PRSSYS', 'vis_t2_std' , 'float' , '18' , 'standard visiting end time of visitors (hour)') DEFINE_SETTING('BEZ', 0001, 'WEB_PRSSYS', 'vis_user_history' , 'number' , '7' , 'number of days in the past the FE can see his vistors') diff --git a/FAC/FAC_TAB.SRC b/FAC/FAC_TAB.SRC index e5296d25..f1d6fea9 100644 --- a/FAC/FAC_TAB.SRC +++ b/FAC/FAC_TAB.SRC @@ -1526,7 +1526,8 @@ CREATE_TABLE (fac_version, 0) ( fac_version_putorders_date DATE, fac_version_scheduler_date DATE, fac_version_notify_date DATE, - fac_version_cleanup_date DATE + fac_version_cleanup_date DATE, + fac_version_tasker_date DATE ); CREATE_TABLE(fac_typestaffel, 0) @@ -2431,4 +2432,27 @@ CREATE_TABLE(fac_layout, 0) DEFAULT SYSDATE ); +CREATE_TABLE(fac_cust, 0) +( + fac_cust_key NUMBER(10) + CONSTRAINT fac_k_fac_cust_key PRIMARY KEY, + fac_cust_customerid VARCHAR(4) NOT NULL, + fac_cust_schema VARCHAR(30) DEFAULT '00' NOT NULL, // kopie fac_version_schema van de gebruiker + fac_cust_enabled NUMBER(1) DEFAULT 1 NOT NULL, // future use, disable during upgrades? + fac_cust_aanmaak DATE DEFAULT SYSDATE NOT NULL, + CONSTRAINT fac_u_fac_cust UNIQUE(fac_cust_customerid) +); + +CREATE_TABLE(fac_task, 0) +( + fac_task_key NUMBER(10) + CONSTRAINT fac_k_fac_task_key PRIMARY KEY, + fac_cust_key NUMBER(10) REFERENCES fac_cust(fac_cust_key) ON DELETE CASCADE, + fac_task_code VARCHAR(32) NOT NULL, + fac_task_nextrun DATE, + fac_task_lastrun DATE, + CONSTRAINT fac_u_fac_task UNIQUE(fac_cust_key, fac_task_code) +); + + REGISTERONCE('$Id$') diff --git a/FAC/FAC_TRI.SRC b/FAC/FAC_TRI.SRC index bf7758c5..2aa08343 100644 --- a/FAC/FAC_TRI.SRC +++ b/FAC/FAC_TRI.SRC @@ -394,6 +394,13 @@ BEGIN -- Always clear the notify_to_statinfo bit, even when no :new.prs_perslid_key_receiver :NEW.fac_notificatie_status := BITAND (:NEW.fac_notificatie_status, 255 - 1); :NEW.fac_notificatie_queue:=UPPER(:NEW.fac_notificatie_queue); + + IF BITAND(:NEW.fac_notificatie_status, 255 - 64) > 0 -- Alleen custom-queue negeren we + OR :NEW.prs_bedrijfadres_key IS NOT NULL + OR :NEW.fac_notificatie_systeemadres IS NOT NULL + THEN + tsk.starttask(p_taskcode => 'PUTORDERS', p_nextrun => :NEW.fac_notificatie_notbefore); + END IF; END; / @@ -1063,6 +1070,38 @@ BEGIN END; / +CREATE_TRIGGER(fac_t_fac_cust_B_I) +BEFORE INSERT ON fac_cust +FOR EACH ROW +BEGIN + UPDATE_PRIMARY_KEY(fac_cust_key, fac_s_fac_cust_key); +END; +/ + +CREATE_TRIGGER(fac_t_fac_cust_B_IU) +BEFORE INSERT OR UPDATE ON fac_cust +FOR EACH ROW +BEGIN + :new.fac_cust_customerid := UPPER(:new.fac_cust_customerid); +END; +/ + +CREATE_TRIGGER(fac_t_fac_task_B_I) +BEFORE INSERT ON fac_task +FOR EACH ROW +BEGIN + UPDATE_PRIMARY_KEY(fac_task_key, fac_s_fac_task_key); +END; +/ + +CREATE_TRIGGER(fac_t_fac_task_B_IU) +BEFORE INSERT OR UPDATE ON fac_task +FOR EACH ROW +BEGIN + :new.fac_task_code := UPPER(:new.fac_task_code); +END; +/ + -- CREATE_TRIGGER(fac_t_fac_queue_B_I) -- BEFORE INSERT ON fac_queue -- FOR EACH ROW diff --git a/FCLT.NMK b/FCLT.NMK index 11efcae7..3069d5ac 100644 --- a/FCLT.NMK +++ b/FCLT.NMK @@ -193,6 +193,7 @@ $(EXE)\$(NEXTROOT)\FCLT$(NEXTVERSION)$(FILEVERSION).SQL: \ $(MSRC)\fac\fac_pacl.src \ $(MSRC)\fac\fac_pacflex.src \ $(MSRC)\fac\fac_pacdel.src \ + $(MSRC)\fac\fac_pactsk.src \ $(MSRC)\fac\fac_seq.src \ $(MSRC)\fac\fac_tab.src \ $(MSRC)\fac\fac_tri.src \ diff --git a/_UP/DB49to50.src b/_UP/DB49to50.src index 0877d85d..24b7ba00 100644 --- a/_UP/DB49to50.src +++ b/_UP/DB49to50.src @@ -53,6 +53,9 @@ ALTER TABLE fac_notificatie ALTER TABLE fac_notificatie ADD fac_notificatie_failmessage VARCHAR(4000); // de laatste +ALTER TABLE fac_notificatie + ADD fac_notificatie_faildatum DATE; // de laatste + ALTER TABLE prs_bedrijfadres ADD ins_discipline_key NUMBER(10) REFERENCES ins_tab_discipline(ins_discipline_key) ON DELETE CASCADE; // Scherpere bedrijfadres bepaling, vooral reserveringen? @@ -60,6 +63,34 @@ ALTER TABLE prs_bedrijfadres ALTER TABLE prs_bedrijfadres MODIFY prs_bedrijfadres_type VARCHAR2(3); // Ook ruimte voor BOG voor BestelOpdrachten Generiek +ALTER TABLE fac_version + ADD fac_version_tasker_date DATE; + +CREATE_TABLE(fac_cust, 0) +( + fac_cust_key NUMBER(10) + CONSTRAINT fac_k_fac_cust_key PRIMARY KEY, + fac_cust_customerid VARCHAR(4) NOT NULL, + fac_cust_schema VARCHAR(30) DEFAULT '00' NOT NULL, // kopie fac_version_schema van de gebruiker + fac_cust_enabled NUMBER(1) DEFAULT 1 NOT NULL, // future use, disable during upgrades? + fac_cust_aanmaak DATE DEFAULT SYSDATE NOT NULL, + CONSTRAINT fac_u_fac_cust UNIQUE(fac_cust_customerid) +); + +CREATE_TABLE(fac_task, 0) +( + fac_task_key NUMBER(10) + CONSTRAINT fac_k_fac_task_key PRIMARY KEY, + fac_cust_key NUMBER(10) REFERENCES fac_cust(fac_cust_key) ON DELETE CASCADE, + fac_task_code VARCHAR(32) NOT NULL, + fac_task_nextrun DATE, + fac_task_lastrun DATE, + CONSTRAINT fac_u_fac_task UNIQUE(fac_cust_key, fac_task_code) +); + +CREATE SEQUENCE fac_s_fac_cust_key MINVALUE 1; +CREATE SEQUENCE fac_s_fac_task_key MINVALUE 1; + /////////////////////////////////////////////////////////////////////////////////////////// FCLT#80469 @@ -143,6 +174,10 @@ DELETE FROM fac_menuitems /////////////////////////////////////////////////////////////////////////////////////////// FCLT#86343 // Sinds HSLE#36898 (2016.3) al niet meer in gebruik. + +ALTER PACKAGE fac COMPILE; // anders (nog) invalid en lukt het volgende niet niet +ALTER PACKAGE fac COMPILE BODY; + UPDATE prs_perslid SET prs_perslid_options = NULL WHERE prs_perslid_options IS NOT NULL;