From b6360bb29c8ecef7a54fb024770484e5d94e0994 Mon Sep 17 00:00:00 2001 From: Jos Migo Date: Wed, 2 Oct 2024 18:09:15 +0000 Subject: [PATCH] SINN#82298 -- Implementatie MJOB - Import objectaken - migratie OPrognose naar Facilitor op productie svn path=/Customer/; revision=66435 --- .../SINN/SINN#82298_objecttaken_oprognose.sql | 194 ++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 onces/SINN/SINN#82298_objecttaken_oprognose.sql diff --git a/onces/SINN/SINN#82298_objecttaken_oprognose.sql b/onces/SINN/SINN#82298_objecttaken_oprognose.sql new file mode 100644 index 000000000..84856341e --- /dev/null +++ b/onces/SINN/SINN#82298_objecttaken_oprognose.sql @@ -0,0 +1,194 @@ +-- +-- $Id$ +-- +-- Korte beschrijving wat het script doet +---- De objecttaken uit OPrognose worden geimporteerd +---- Levert tevens een restlijst op van dubbele-taken die men handmatig moet toevoegen aan facilitor + +-- +DEFINE thisfile = 'SINN#82298_objecttaken_oprognose.sql' +DEFINE dbuser = 'SINN' + +SET ECHO ON +SET DEFINE ON +COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; +COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT; +WHENEVER SQLERROR CONTINUE; +SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; +SPOOL &fcltlogfile +WHENEVER SQLERROR EXIT; +SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL; +WHENEVER SQLERROR CONTINUE; +PROMPT &fcltcusterr +SET DEFINE OFF + +------ payload begin ------ + +DECLARE + v_errormsg VARCHAR (200); + v_errorhint VARCHAR (200); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (150); + currentversion fac_module.fac_module_version%TYPE; + v_aanduiding VARCHAR (200); + v_count NUMBER; + v_teller_verwerkt NUMBER := 0 ; + p_import_key NUMBER; + -- importvelden + v_ins_deel_key NUMBER; + v_ins_srtcontrole_key NUMBER; + v_teller_xcptaak NUMBER; + + -- Alle records die we willen meenemen, gaan we verder langs om aan te vullen en te kijken of res overgezet kan worden.. + CURSOR C + IS + SELECT * + FROM fac_imp_csv + WHERE fac_import_key = (SELECT max(fac_import_key) FROM fac_import WHERE fac_import_app_key = 61 AND fac_import_datum_verwerkt IS NULL) -- GENREICCSV - FIP: Generieke CSV import + AND fac_imp_csv_index > 1 + -- TEST + -- AND fac_imp_csv_index IN (47) + ORDER BY fac_imp_csv_index; + +BEGIN + + SELECT MAX (fac_import_key) + INTO p_import_key + FROM fac_import + WHERE fac_import_app_key = 61 AND fac_import_datum_verwerkt IS NULL ; + + FOR rec IN c + LOOP + BEGIN + + -- Starten met aanvullen records.... + + v_aanduiding := 'Record ' || rec.fac_imp_csv_key || ' - ' ; + v_errorhint := 'Records in fac_imp_csv aanvullen'; + + -- 1. ins_deel_key erbij zoeken... + SELECT max(d.ins_deel_key) + INTO v_ins_deel_key + FROM ins_deel d + WHERE ins_deel_upper = UPPER(rec.fac_imp_csv_col01) ; + + UPDATE fac_imp_csv + SET fac_imp_csv_col11 = v_ins_deel_key + WHERE fac_imp_csv_key = rec.fac_imp_csv_key ; + COMMIT; + + -- 2. ins_srtcontrole_key erbij zoeken + SELECT max(sc.ins_srtcontrole_key) + INTO v_ins_srtcontrole_key + FROM ins_srtcontrole sc + WHERE UPPER(sc.ins_srtcontrole_omschrijving) = UPPER(rec.fac_imp_csv_col03) ; + + UPDATE fac_imp_csv + SET fac_imp_csv_col12 = v_ins_srtcontrole_key + WHERE fac_imp_csv_key = rec.fac_imp_csv_key ; + COMMIT; + + -- Objecttaak (xcp-record) toevoegen + IF v_ins_deel_key IS NOT NULL AND v_ins_srtcontrole_key IS NOT NULL + THEN + + -- eerst checken of dezelfde taak al onder hetzelfde gebouwobject is aangemaakt + ----- In oPrognose zijn soms taken dubbel op element omdat men zaken gesplits heeft op ruimte (trap 1 vervangen in ruimte x + trap 2 t/m 3 vervangen in andere ruimtes) + + SELECT COUNT(*) + INTO v_teller_xcptaak + FROM ins_srtcontroledl_xcp + WHERE ins_deel_key = v_ins_deel_key AND ins_srtcontrole_key = v_ins_srtcontrole_key ; + + IF v_teller_xcptaak > 0 + THEN + -- vullen fac_imp_csv zodat we dit na de migratie als naslagwerk kunnen hanteren om de ontbrekende taken nog handmatig toe te voegen aan SINN-facilitor + + UPDATE fac_imp_csv + SET fac_imp_csv_col13 = 'dubbele taak - record niet aangemaakt' + WHERE fac_imp_csv_key = rec.fac_imp_csv_key ; + COMMIT; + + END IF ; + + IF v_teller_xcptaak = 0 + THEN + + v_teller_verwerkt := v_teller_verwerkt + 1 ; + + -- INSERT OBJECTTAAK + INSERT INTO ins_srtcontroledl_xcp ( + ins_deel_key, + ins_srtcontrole_key, + ins_srtcontroledl_xcp_eenheid, + ins_srtcontroledl_xcp_periode, + prs_kostenplaats_key, + ins_srtcontroledl_xcp_bits, + ins_srtcontroledl_xcp_uren, + ins_srtcontroledl_xcp_perc, + ins_srtcontroledl_xcp_groep, + ins_srtcontroledl_xcp_opmerk, + ins_srtcontroledl_xcp_startdat, + ins_srtcontroledl_xcp_eind, + ins_srtcontroledl_xcp_aantal, + ins_srtcontroledl_xcp_aanteh, + ins_srtcontroledl_xcp_kosten, + ins_srtcontroledl_xcp_kosten2, + ins_srtcontroledl_xcp_kosten3, + ins_srtcontroledl_xcp_materia) + VALUES ( + v_ins_deel_key, + v_ins_srtcontrole_key, + NULL, + fac.safe_to_number(rec.fac_imp_csv_col07), + NULL, + NULL, + NULL, + NULL, + rec.fac_imp_csv_col08, -- 'Groot onderhoud', + rec.fac_imp_csv_col02, --'hier nog extra opmerking bij objecttaak', + TO_DATE (rec.fac_imp_csv_col09, 'DD-MM-YYYY HH24:MI'), + NULL, + fac.safe_to_number(replace(rec.fac_imp_csv_col04,',','.')), -- aantal + rec.fac_imp_csv_col05, -- 'st', + fac.safe_to_number(replace(replace(rec.fac_imp_csv_col06,'.',''),',','.')) -- kosten - eerst scheidings-1000-tal-teken verwijderen en dan decimaal komma vervangen door punt anders wordt het niet als number herkend..!! + NULL, + NULL, + NULL); + + -- LOGGING OP OBJECT + BEGIN fac.trackaction('#INSUPD', v_ins_deel_key, 3, NULL, rec.fac_imp_csv_col01 || ' is gewijzigd' || CHR(13) || CHR(10) || 'Taak ' || rec.fac_imp_csv_col03 || ' toegevoegd vanuit OPrognose-migratie.'); END; + + END IF; + + END IF; + + + END; + + END LOOP; + + -- kunnen/moeten we buiten de loop om nog zaken doen? + -- eventueel logging wegschrijven op import generic_csv + fac.imp_writelog (p_import_key, + 'I', + 'Totaal aantal verwerkte records: ' || TO_CHAR(v_teller_verwerkt), + ''); + + +END; +/ + + + +------ payload end ------ + +SET DEFINE OFF +BEGIN adm.systrackscriptId ('$Id$', 1); END; +/ + +COMMIT; +SET ECHO OFF +SPOOL OFF +SET DEFINE ON +PROMPT Logfile of this upgrade is: &fcltlogfile