Files
Customer/RTGS/RTGS.sql
Jos Groot Lipman 048b20f708 FCLT#83832 Customcode aanpassen ivm meldingsomschrijving van CHAR 4000 naar CLOB 32767
svn path=/Customer/trunk/; revision=64995
2024-06-05 13:33:40 +00:00

268 lines
8.7 KiB
SQL

--
-- $Id$
--
-- Script containing customer specific sql statements for the rtgs database
DEFINE thisfile = 'RTGS.SQL'
DEFINE dbuser = 'RTGS'
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 ------
--
-- Personen import
--
CREATE OR REPLACE PROCEDURE rtgs_import_perslid (p_import_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_newline FAC_IMP_FILE.FAC_IMP_FILE_LINE%TYPE;
BEGIN
BEGIN
SELECT fac_imp_file_line
INTO v_newline
FROM fac_imp_file
WHERE fac_import_key = p_import_key
AND fac_imp_file_index = 1;
IF v_newline LIKE
CHR (TO_NUMBER ('EF', 'xx'))
|| CHR (TO_NUMBER ('BB', 'xx'))
|| CHR (TO_NUMBER ('BF', 'xx'))
|| '%'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.'
);
v_newline := SUBSTR (v_newline, 4);
END IF;
-- Verwijder de dubbele quotes
v_newline := REPLACE (v_newline, '"');
UPDATE fac_imp_file
SET fac_imp_file_line = v_newline
WHERE fac_import_key = p_import_key
AND fac_imp_file_index = 1;
EXCEPTION WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'E',
'Fout bij controle op Byte Order Mark',
''
);
END;
v_errorhint := 'Generieke update';
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
prs.import_perslid (p_import_key,
'1;2;3;4;5;6;7;8;9;11;' ||
'10;0;0;0;0;13;14;15;0;17;' ||
'16;0;0;12;0;0;0;0;0;0;'||
'0;0;0;0;0;0;0;0;0;0;'||
'0;0;0;0;0;0',
'Locatiecode;Gebouwcode;Bouwlaagvolgnummer;Ruimtenummer;Werkplekvolgnummer;Omschrijving;Afdelingscode;PersoonAchternaam;Tussenvoegsel;Voorletters;Voornaam;Aanhef;Telefoonnummer;Mobiel;Email;Functie;Personeelsnummer;Loginnaam%'
);
COMMIT;
UPDATE fac_imp_perslid
SET prs_perslid_titel =
CASE
WHEN prs_perslid_titel LIKE '%heer%' THEN 'De heer'
WHEN prs_perslid_titel LIKE '%vrouw%' THEN 'Mevrouw'
ELSE NULL
END;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END rtgs_import_perslid;
/
CREATE OR REPLACE PROCEDURE rtgs_update_perslid (
p_import_key IN NUMBER
) IS
-- Alle personen verwijderen die niet meer in import bestand voorkomen.
CURSOR c_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_email
FROM prs_perslid p
WHERE p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_oslogin IS NULL
AND UPPER (p.prs_perslid_email) NOT IN (SELECT UPPER (prs_perslid_email) FROM fac_imp_perslid);
v_count NUMBER;
BEGIN
-- generic update
SELECT count(*)
INTO v_count
FROM fac_imp_perslid;
IF v_count < 100
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;
-- 'EMAIL' betekent dat op basis van email wordt gematched.
-- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
prs.update_perslid (p_import_key, 'EMAIL', NULL);
-- Verwijder personen die niet meer in de import voorkomen.
FOR rec IN c_del
LOOP
BEGIN
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END;
END LOOP;
END rtgs_update_perslid;
/
CREATE OR REPLACE VIEW rtgs_v_rap_kostenoverzicht
AS
SELECT DISTINCT
m.mld_melding_key,
ct.cnt_contract_key,
i.ins_deel_key,
isrt.ins_srtdiscipline_omschrijving
vakgroeptype,
md.ins_discipline_omschrijving
vakgroep,
std.mld_stdmelding_omschrijving
melding,
m.mld_melding_datum
melding_datum,
m.mld_melding_einddatum
datum_afgemeld,
m.mld_melding_onderwerp
melding_onderwerp,
TO_CHAR(SUBSTR(mld_melding_omschrijving, 1, 4000))
melding_omschrijving,
ms.MLD_STATUSES_OMSCHRIJVING
melding_status,
(SELECT pf.prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE pf.prs_perslid_key = m.prs_perslid_key)
melder,
(SELECT pf.prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE pf.prs_perslid_key = m.mld_melding_behandelaar_key)
behandelaar,
(SELECT mk.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mk
WHERE mk.MLD_MELDING_KEY = m.mld_melding_key
AND mk.mld_kenmerk_key = 922)
gemaakte_kosten,
dis.ins_discipline_omschrijving
obj_discipline,
srtg.ins_srtgroep_omschrijving
obj_groep,
srtd.ins_srtdeel_omschrijving
obj_soort,
i.ins_deel_omschrijving
obj,
ct.cnt_contract_nummer,
ct.cnt_contract_nummer_intern,
ct.cnt_contract_omschrijving,
ct.cnt_contract_opmerking,
ct.cnt_contract_looptijd_van,
ct.cnt_contract_looptijd_tot,
ct.cnt_contract_kosten,
(SELECT b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = ct.cnt_prs_bedrijf_key)
cnt_bedrijf,
(SELECT pk.prs_kostenplaats_omschrijving
FROM prs_kostenplaats pk
WHERE pk.prs_kostenplaats_key = ct.prs_kostenplaats_key)
kostenplaats,
(SELECT 'Boekmaand: ' || cf.cnt_factuurschema_boekmaand || ' Bedrag: ' || cf.cnt_factuurschema_bedrag
FROM cnt_factuurschema cf
WHERE ct.cnt_contract_key = cf.cnt_contract_key
AND UPPER (cf.cnt_factuurschema_opmerking) LIKE '%BETAALD%'
ORDER BY cf.cnt_factuurschema_aanmaak DESC
FETCH FIRST 1 ROW ONLY) laatste_betaling
FROM cnt_contract ct,
mld_melding m,
ins_deel i,
prs_bedrijf b,
ins_srtdeel srt,
mld_stdmelding std,
mld_discipline md,
ins_srtdiscipline isrt,
cnt_contract_object cco,
mld_melding_object mmo,
mld_statuses ms,
ins_srtdeel srtd,
ins_srtgroep srtg,
ins_discipline dis,
cnt_contract_plaats cntp,
alg_gebouw ag,
cnt_factuurschema cf
WHERE ct.cnt_contract_key = cco.cnt_contract_key
AND i.ins_srtdeel_key = cco.cnt_ins_srtdeel_key
AND i.ins_deel_key = mmo.ins_deel_key
AND i.ins_srtdeel_key = srt.ins_srtdeel_key
AND m.mld_melding_key = mmo.mld_melding_key
AND m.mld_melding_status = ms.mld_statuses_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = isrt.ins_srtdiscipline_key
AND i.ins_srtdeel_key = srtd.ins_srtdeel_key
AND srtd.ins_srtgroep_key = srtg.ins_srtgroep_key
AND srtg.ins_discipline_key = dis.ins_discipline_key
AND ct.cnt_contract_key = cntp.cnt_contract_key
AND cntp.cnt_alg_plaats_key = ag.alg_gebouw_key
AND ag.alg_locatie_key = m.mld_alg_locatie_key;
------ 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