FCLT#74284 DSMA0
svn path=/Customer/trunk/; revision=58334
This commit is contained in:
488
DSMA/dsma.sql
Normal file
488
DSMA/dsma.sql
Normal file
@@ -0,0 +1,488 @@
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
-- Script containing customer specific db-configuration for DSMA.
|
||||
DEFINE thisfile = 'DSMA.SQL'
|
||||
DEFINE dbuser = '^DSMA'
|
||||
|
||||
SET ECHO ON
|
||||
SET DEFINE ON
|
||||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||||
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
||||
WHENEVER SQLERROR CONTINUE;
|
||||
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||||
SPOOL &fcltlogfile
|
||||
WHENEVER SQLERROR EXIT;
|
||||
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
||||
WHENEVER SQLERROR CONTINUE;
|
||||
---------------------------------------
|
||||
PROMPT &fcltcusttxt
|
||||
---------------------------------------
|
||||
SET DEFINE OFF
|
||||
|
||||
------ payload begin ------
|
||||
|
||||
CREATE OR REPLACE VIEW dsma_v_rap_import_log
|
||||
(
|
||||
fclt_f_applicatie,
|
||||
datum,
|
||||
fclt_f_status,
|
||||
omschrijving,
|
||||
hint
|
||||
)
|
||||
AS
|
||||
SELECT COALESCE (fac_import_app_code, imp_log_applicatie),
|
||||
TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi'),
|
||||
imp_log_status,
|
||||
imp_log_omschrijving,
|
||||
imp_log_hint
|
||||
FROM imp_log il1, fac_import fi1, fac_import_app fia1
|
||||
WHERE il1.fac_import_key = fi1.fac_import_key(+)
|
||||
AND fi1.fac_import_app_key = fia1.fac_import_app_key(+)
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM imp_log il2, fac_import fi2
|
||||
WHERE il2.fac_import_key = fi2.fac_import_key
|
||||
AND fi2.fac_import_app_key = fi1.fac_import_app_key
|
||||
AND il2.fac_import_key > il1.fac_import_key);
|
||||
|
||||
CREATE OR REPLACE PROCEDURE dsma_import_prs (p_import_key IN NUMBER)
|
||||
AS
|
||||
v_errormsg VARCHAR2 (1000) := '-';
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
BEGIN
|
||||
-- Afdelingscode-kolom kopieren naar extra kolom 12 (= kenmerk5)!
|
||||
UPDATE fac_imp_file i
|
||||
SET i.fac_imp_file_line =
|
||||
i.fac_imp_file_line
|
||||
|| ';'
|
||||
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 2)
|
||||
+ 1, INSTR (fac_imp_file_line, ';', 1, 3)
|
||||
- INSTR (fac_imp_file_line, ';', 1, 2)
|
||||
- 1)
|
||||
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
|
||||
|
||||
-- Afdelingscode-kolom=3 resetten (op 'XXX' want verplicht)!
|
||||
UPDATE fac_imp_file i
|
||||
SET i.fac_imp_file_line =
|
||||
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 2))
|
||||
|| '"XXX"'
|
||||
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 3))
|
||||
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
|
||||
COMMIT;
|
||||
|
||||
-- Functie-kolom kopieren naar extra kolom 13 (= kenmerk6)!
|
||||
UPDATE fac_imp_file i
|
||||
SET i.fac_imp_file_line =
|
||||
i.fac_imp_file_line
|
||||
|| ';'
|
||||
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 3)
|
||||
+ 1, INSTR (fac_imp_file_line, ';', 1, 4)
|
||||
- INSTR (fac_imp_file_line, ';', 1, 3)
|
||||
- 1)
|
||||
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
|
||||
|
||||
-- Functie-kolom resetten=4 (op 'XXX' want verplicht)!
|
||||
UPDATE fac_imp_file i
|
||||
SET i.fac_imp_file_line =
|
||||
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 3))
|
||||
|| '"XXX"'
|
||||
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 4))
|
||||
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
|
||||
COMMIT;
|
||||
|
||||
-- Generieke import.
|
||||
-- De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
|
||||
-- Met Stamplaats wordt nog niets gedaan!
|
||||
--'%Achternaam;Voornaam;Afdelingscode;Functie;Email;Telefoonnr;Mobiel;Stamplaats;Indienst;Uitdienst;Leidinggevende%');
|
||||
prs.import_perslid (
|
||||
p_import_key,
|
||||
'0;0;0;0;0;0;3;1;0;2;'
|
||||
|| '0;0;0;0;0;6;7;5;0;0;'
|
||||
|| '4;0;0;0;0;0;8;9;10;11;'
|
||||
|| '12;13;0;0;0;0;0;0;0;0;'
|
||||
|| '0;0;0;0;0;0',
|
||||
'%Achternaam;Voornaam;Afdelingscode;Functie;Email;Telefoonnr;Mobiel;Stamplaats;Indienst;Uitdienst;Leidinggevende%');
|
||||
|
||||
-- Klantspecifieke aanpassingen.
|
||||
-- Afdeling-kolom altijd op 'DSM' (en kenmerk5 negeren)!
|
||||
UPDATE fac_imp_perslid i
|
||||
SET i.prs_afdeling_naam = 'DSM';
|
||||
COMMIT;
|
||||
|
||||
-- Functie-kolom volgens kenmerk6 of anders op Onbekend!
|
||||
UPDATE fac_imp_perslid i
|
||||
SET i.prs_srtperslid_omschrijving = COALESCE (SUBSTR (i.prs_kenmerk6, 1, 60), 'Onbekend');
|
||||
COMMIT;
|
||||
|
||||
-- Als geen Voornaam aangeleverd, dan handmatig toegekende niet wissen.
|
||||
UPDATE fac_imp_perslid i
|
||||
SET i.prs_perslid_voornaam =
|
||||
(SELECT MAX (prs_perslid_voornaam)
|
||||
FROM prs_v_aanwezigperslid
|
||||
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
||||
WHERE i.prs_perslid_voornaam IS NULL -- Aangeleverde Voornaam wint!
|
||||
AND EXISTS
|
||||
(SELECT 1
|
||||
FROM prs_v_aanwezigperslid
|
||||
WHERE prs_perslid_voornaam IS NOT NULL
|
||||
AND prs_perslid_nr = i.prs_perslid_nr);
|
||||
COMMIT;
|
||||
|
||||
-- Als geen Email aangeleverd, dan handmatig toegekende niet wissen.
|
||||
UPDATE fac_imp_perslid i
|
||||
SET i.prs_perslid_email =
|
||||
(SELECT MAX (prs_perslid_email)
|
||||
FROM prs_v_aanwezigperslid
|
||||
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
||||
WHERE i.prs_perslid_email IS NULL -- Aangeleverde Email wint!
|
||||
AND EXISTS
|
||||
(SELECT 1
|
||||
FROM prs_v_aanwezigperslid
|
||||
WHERE prs_perslid_email IS NOT NULL
|
||||
AND prs_perslid_nr = i.prs_perslid_nr);
|
||||
COMMIT;
|
||||
|
||||
-- Als geen Telefoonnr aangeleverd, dan handmatig toegekende niet wissen.
|
||||
UPDATE fac_imp_perslid i
|
||||
SET i.prs_perslid_telefoonnr =
|
||||
(SELECT MAX (prs_perslid_telefoonnr)
|
||||
FROM prs_v_aanwezigperslid
|
||||
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
||||
WHERE i.prs_perslid_telefoonnr IS NULL -- Aangeleverde Telefoonnr wint!
|
||||
AND EXISTS
|
||||
(SELECT 1
|
||||
FROM prs_v_aanwezigperslid
|
||||
WHERE prs_perslid_telefoonnr IS NOT NULL
|
||||
AND prs_perslid_nr = i.prs_perslid_nr);
|
||||
COMMIT;
|
||||
|
||||
-- Als geen Mobiel aangeleverd, dan handmatig toegekende niet wissen.
|
||||
UPDATE fac_imp_perslid i
|
||||
SET i.prs_perslid_mobiel =
|
||||
(SELECT MAX (prs_perslid_mobiel)
|
||||
FROM prs_v_aanwezigperslid
|
||||
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
||||
WHERE i.prs_perslid_mobiel IS NULL -- Aangeleverde Mobiel wint!
|
||||
AND EXISTS
|
||||
(SELECT 1
|
||||
FROM prs_v_aanwezigperslid
|
||||
WHERE prs_perslid_mobiel IS NOT NULL
|
||||
AND prs_perslid_nr = i.prs_perslid_nr);
|
||||
COMMIT;
|
||||
|
||||
-- Klantspecifieke aanpassingen.
|
||||
-- Locatie/Gebouw/Verdieping/Ruimte bepalen via Kenmerk1-kolom -> Eigen tabel (key = 1) ->
|
||||
-- Gebouw en daaronder Ruimte '_' op de verdieping met het laagste volgnummer!
|
||||
-- Als persoon al een WP heeft op import-locatie, dan is dat de juiste en blijft deze
|
||||
-- (handmatig gecorrigeerde WP) ongewijzigd. In alle andere gevallen verhuist persoon naar
|
||||
-- '_' op de meegegeven locatie.
|
||||
-- Eventuele WPs onder andere locaties dan import-locatie blijven ook ongewijzigd!
|
||||
UPDATE fac_imp_perslid i
|
||||
SET i.alg_locatie_code =
|
||||
(SELECT il.alg_locatie_code
|
||||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
||||
alg_v_aanweziggebouw ig,
|
||||
alg_locatie il
|
||||
WHERE ud.fac_usrtab_key = -1
|
||||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
||||
AND ig.alg_locatie_key = il.alg_locatie_key
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM alg_v_aanweziggebouw
|
||||
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
||||
AND alg_locatie_key < il.alg_locatie_key)),
|
||||
i.alg_gebouw_code =
|
||||
(SELECT ig.alg_gebouw_code
|
||||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
||||
alg_v_aanweziggebouw ig,
|
||||
alg_locatie il
|
||||
WHERE ud.fac_usrtab_key = -1
|
||||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
||||
AND ig.alg_locatie_key = il.alg_locatie_key
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM alg_v_aanweziggebouw
|
||||
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
||||
AND alg_locatie_key < il.alg_locatie_key)),
|
||||
i.alg_verdieping_volgnr =
|
||||
(SELECT iv.alg_verdieping_volgnr
|
||||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
||||
alg_v_aanweziggebouw ig,
|
||||
alg_locatie il,
|
||||
alg_verdieping iv,
|
||||
alg_ruimte ir
|
||||
WHERE ud.fac_usrtab_key = -1
|
||||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
||||
AND ig.alg_locatie_key = il.alg_locatie_key
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM alg_v_aanweziggebouw
|
||||
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
||||
AND alg_locatie_key < il.alg_locatie_key)
|
||||
AND ig.alg_gebouw_key = iv.alg_gebouw_key
|
||||
AND iv.alg_verdieping_key = ir.alg_verdieping_key
|
||||
AND ir.alg_ruimte_nr = '_000'
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM alg_v_aanwezigruimte r, alg_verdieping v
|
||||
WHERE r.alg_ruimte_nr = '_000'
|
||||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||||
AND v.alg_verdieping_volgnr < iv.alg_verdieping_volgnr)),
|
||||
i.alg_ruimte_nr =
|
||||
(SELECT '_000'
|
||||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
||||
alg_v_aanweziggebouw ig,
|
||||
alg_locatie il
|
||||
WHERE ud.fac_usrtab_key = -1
|
||||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
||||
AND ig.alg_locatie_key = il.alg_locatie_key
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM alg_v_aanweziggebouw
|
||||
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
||||
AND alg_locatie_key < il.alg_locatie_key))
|
||||
WHERE NOT EXISTS -- Nog geen werkplek op Locatie!
|
||||
(SELECT 1
|
||||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
||||
alg_v_aanweziggebouw ig,
|
||||
alg_locatie il,
|
||||
prs_v_aanwezigperslid p,
|
||||
prs_perslidwerkplek pw,
|
||||
prs_werkplek cw,
|
||||
alg_v_aanwezigruimte cr,
|
||||
alg_verdieping cv,
|
||||
alg_gebouw cg
|
||||
WHERE ud.fac_usrtab_key = -1
|
||||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
||||
AND ig.alg_locatie_key = il.alg_locatie_key
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM alg_v_aanweziggebouw
|
||||
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
||||
AND alg_locatie_key < il.alg_locatie_key)
|
||||
AND p.prs_perslid_nr = i.prs_perslid_nr
|
||||
AND p.prs_perslid_key = pw.prs_perslid_key
|
||||
AND pw.prs_werkplek_key = cw.prs_werkplek_key
|
||||
AND cw.prs_alg_ruimte_key = cr.alg_ruimte_key
|
||||
AND cr.alg_verdieping_key = cv.alg_verdieping_key
|
||||
AND cv.alg_gebouw_key = cg.alg_gebouw_key
|
||||
AND cg.alg_locatie_key = il.alg_locatie_key);
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- Resulteert in nette foutmelding als ruimte niet kan worden bepaald.
|
||||
UPDATE fac_imp_perslid
|
||||
SET alg_verdieping_volgnr = 0
|
||||
WHERE alg_gebouw_code IS NOT NULL
|
||||
AND alg_verdieping_volgnr IS NULL;
|
||||
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Inleesproces personen afgebroken!');
|
||||
END dsma_import_prs;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE dsma_update_prs (p_import_key IN NUMBER)
|
||||
IS
|
||||
-- Toevoegen Indienst-datum (= kenmerk2), Uitdienst-datum (= kenmerk3) en
|
||||
-- Leidinggevende-kenmerkveld (= kenmerk4).
|
||||
CURSOR c_prs
|
||||
IS
|
||||
SELECT x.prs_perslid_key,
|
||||
x.prs_perslid_email,
|
||||
x.prs_kenmerk2,
|
||||
x.prs_kenmerk3,
|
||||
x.prs_kenmerk4
|
||||
FROM fac_imp_perslid x
|
||||
WHERE (x.prs_kenmerk2 IS NOT NULL OR x.prs_kenmerk3 IS NOT NULL OR x.prs_kenmerk4 IS NOT NULL)
|
||||
AND EXISTS
|
||||
(SELECT 1
|
||||
FROM prs_v_aanwezigperslid
|
||||
WHERE prs_perslid_key > 10 -- Voor de zekerheid!
|
||||
AND prs_perslid_apikey IS NULL
|
||||
AND prs_perslid_oslogin2 IS NULL -- TODO:Of check op bepaalde afdeling?
|
||||
--AND LOWER (prs_perslid_email) = LOWER (x.prs_perslid_email)
|
||||
AND prs_perslid_key = x.prs_perslid_key)
|
||||
ORDER BY 1;
|
||||
|
||||
-- Verwijderen personen *binnen DSM* die niet meer in importbestand voorkomen.
|
||||
CURSOR c_del
|
||||
IS
|
||||
SELECT p.prs_perslid_key
|
||||
FROM prs_v_aanwezigperslid p
|
||||
WHERE p.prs_perslid_key > 10 -- Voor de zekerheid!
|
||||
AND p.prs_perslid_apikey IS NULL
|
||||
AND p.prs_perslid_oslogin2 IS NULL -- TODO:Of check op bepaalde afdeling?
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM fac_imp_perslid
|
||||
WHERE LOWER (prs_perslid_email) = LOWER (p.prs_perslid_email))
|
||||
ORDER BY 1;
|
||||
|
||||
v_errormsg VARCHAR2 (1000) := '';
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_count NUMBER (10);
|
||||
BEGIN
|
||||
-- Generic update
|
||||
SELECT COUNT(*) INTO v_count FROM fac_imp_perslid;
|
||||
|
||||
IF v_count < 250
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key, 'E',
|
||||
'Het aantal te importeren personen is te klein (' || TO_CHAR (v_count) || ')',
|
||||
'Zie specificatie');
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
-- Generieke update (op e-mail adres).
|
||||
prs.update_perslid (p_import_key, 'EMAIL', 'L');
|
||||
|
||||
-- Bijwerken extra persoonsvelden (niet ondersteund door standaard import).
|
||||
v_count := 0;
|
||||
FOR rec IN c_prs
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errormsg := '[' || TO_CHAR (rec.prs_perslid_key) || '|' || rec.prs_perslid_email || '] Fout bijwerken In/Uitdienst-datumveld';
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_ingangsdatum = fac.safe_to_date (rec.prs_kenmerk2, 'dd-mm-yyyy'),
|
||||
prs_perslid_einddatum = fac.safe_to_date (rec.prs_kenmerk3, 'dd-mm-yyyy')
|
||||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||||
|
||||
v_errormsg := '[' || TO_CHAR (rec.prs_perslid_key) || '|' || rec.prs_perslid_email || '] Fout bijwerken Leidinggevende-kenmerk';
|
||||
prs.upsertkenmerk (1000, rec.prs_perslid_key, rec.prs_kenmerk4); -- Leidinggevende
|
||||
|
||||
v_count := v_count + 1;
|
||||
END;
|
||||
END LOOP;
|
||||
--fac.imp_writelog (p_import_key, 'S', 'Personen/#bijgewerkt: ' || TO_CHAR (v_count), '');
|
||||
COMMIT;
|
||||
|
||||
-- Verwijderen personen *binnen DSM* die niet meer in importbestand voorkomen.
|
||||
v_errormsg := 'Fout verwijderen personen';
|
||||
FOR rec IN c_del
|
||||
LOOP
|
||||
BEGIN
|
||||
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
-- Verwijder ongebruikte functies; deze import bepaalt de functies!
|
||||
v_errormsg := 'Fout verwijderen functies';
|
||||
DELETE FROM prs_srtperslid sp
|
||||
WHERE NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM prs_perslid
|
||||
WHERE prs_srtperslid_key = sp.prs_srtperslid_key);
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Importproces PRS afgebroken!');
|
||||
END dsma_update_prs;
|
||||
/
|
||||
|
||||
-- DSMA#74832: Export naar Base27 die telkens voorafgaand aan putOrders het
|
||||
-- volgende doet:
|
||||
-- 1. Relevante wijzigingen in opdracht (anders dan door Base27
|
||||
-- via API) opnieuw uitgeven via orderqueue.
|
||||
-- 2. Laatste sync-datum registreren, zodat eerdere wijzigingen
|
||||
-- niet nogmaals worden doorgezet.
|
||||
CREATE OR REPLACE PROCEDURE DSMA_SELECT_BASE27 (p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2)
|
||||
AS
|
||||
-- Nieuwe notitie(s) sinds laatste sync!
|
||||
CURSOR c_sync
|
||||
IS
|
||||
SELECT '[' || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) || '] '
|
||||
aanduiding,
|
||||
o.mld_opdr_key,
|
||||
COALESCE (o.mld_opdr_externsyncdate, TRUNC (SYSDATE)) syncdate_old,
|
||||
MAX (GREATEST (mon.mld_opdr_note_aanmaak, mon.mld_opdr_note_wijzigdatum)) syncdate_new
|
||||
FROM mld_opdr o, mld_opdr_note mon
|
||||
WHERE o.mld_statusopdr_key IN (5, 8) -- Toegekend/Geaccepteerd
|
||||
AND o.mld_uitvoerende_keys = 101 -- Base27
|
||||
AND o.mld_opdr_key = mon.mld_opdr_key
|
||||
AND mon.prs_perslid_key != 682 -- API-user tbv. Base27
|
||||
AND GREATEST (mon.mld_opdr_note_aanmaak, mon.mld_opdr_note_wijzigdatum) > COALESCE (o.mld_opdr_externsyncdate, TRUNC (SYSDATE))
|
||||
GROUP BY '[' || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) || '] ',
|
||||
o.mld_opdr_key,
|
||||
COALESCE (o.mld_opdr_externsyncdate, TRUNC (SYSDATE));
|
||||
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
v_count := 0;
|
||||
|
||||
-- Sync-en wijziging(en)!
|
||||
FOR rec IN c_sync
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errormsg := 'Fout sync-en wijziging(en)';
|
||||
|
||||
-- TRUC: Zet wijzigdatum van te notificeren notities op syncdate_new!
|
||||
-- Bij 1 notitie zal gelden syncdate_new = wijzigdatum (en wijzigt er
|
||||
-- niets), maar truc gaat pas echt werken als er >1 notities zijn!
|
||||
UPDATE mld_opdr_note
|
||||
SET mld_opdr_note_wijzigdatum = rec.syncdate_new
|
||||
WHERE mld_opdr_key = rec.mld_opdr_key
|
||||
AND GREATEST (mld_opdr_note_aanmaak, mld_opdr_note_wijzigdatum) > rec.syncdate_old;
|
||||
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_teverzenden = 2,
|
||||
mld_opdr_verzonden = NULL,
|
||||
mld_opdr_externsyncdate = rec.syncdate_new
|
||||
WHERE mld_opdr_key = rec.mld_opdr_key;
|
||||
|
||||
fac.trackaction ('ORDUPD', rec.mld_opdr_key, NULL, NULL, 'Wijzigingen doorgezet naar Base27');
|
||||
v_count := v_count + 1;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, '');
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (p_applname, 'S', 'Opdrachten/#sync: ' || TO_CHAR (v_count), '');
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'E', 'Base27-export afgebroken!', v_errormsg);
|
||||
END DSMA_SELECT_BASE27;
|
||||
/
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
||||
/
|
||||
|
||||
COMMIT;
|
||||
SET ECHO OFF
|
||||
SPOOL OFF
|
||||
SET DEFINE ON
|
||||
PROMPT Logfile of this upgrade is: &fcltlogfile
|
||||
Reference in New Issue
Block a user