Files
Customer/GDFS/gdfs.sql
Arthur Egberink 12cf195b4a GDFS#73348 -- Error op GDFS_SELECT_DAILY_TASK
svn path=/Customer/trunk/; revision=56476
2022-07-05 06:09:22 +00:00

627 lines
22 KiB
SQL

-- Script containing customer specific configuration sql statements for GDFS: Gaz de France Suez
-- (c) 2011 SG facilitor
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
DEFINE thisfile = 'GDFS.SQL'
DEFINE dbuser = 'GDFS'
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 PACKAGE gdfs
AS
FUNCTION find_str (p_string IN VARCHAR2, p_search IN VARCHAR2)
RETURN VARCHAR2;
FUNCTION find_oud (p_string IN VARCHAR2, p_default IN VARCHAR2)
RETURN VARCHAR2;
FUNCTION find_nieuw (p_string IN VARCHAR2, p_default IN VARCHAR2)
RETURN VARCHAR2;
END;
/
CREATE OR REPLACE PACKAGE BODY gdfs
AS
FUNCTION find_str (p_string IN VARCHAR2, p_search IN VARCHAR2)
RETURN VARCHAR2
AS
v_index NUMBER;
v_van NUMBER;
v_tot NUMBER;
BEGIN
v_index := INSTR (p_string, p_search);
IF v_index > 0
THEN
v_van := v_index + LENGTH (p_search);
v_tot := INSTR (p_string, CHR (10), v_index + LENGTH (p_search));
-- dbms_output.put_line ('van:' || to_char(v_van));
-- dbms_output.put_line ('tot:' || to_char(v_tot));
-- als v_tot gelijk is aan 0 dan zitten we op het einde van de string. Geef
-- dan alles maar terug tot het einde van de string (maar even op 1000 gezet.
IF v_tot = 0
THEN
v_tot := 1000;
END IF;
RETURN SUBSTR (p_string, v_van + 1, v_tot - v_van - 1);
ELSE
RETURN NULL;
END IF;
END;
FUNCTION find_oud (p_string IN VARCHAR2, p_default IN VARCHAR2)
RETURN VARCHAR2
AS
v_dummy NUMBER;
v_result VARCHAR2 (100);
BEGIN
IF p_string IS NOT NULL
THEN
v_result := TRIM (SUBSTR (p_string, 1, INSTR (p_string, ' --> ')));
IF v_result = '(leeg)'
THEN
v_result := NULL;
END IF;
RETURN v_result;
ELSE
RETURN p_default;
END IF;
END;
FUNCTION find_nieuw (p_string IN VARCHAR2, p_default IN VARCHAR2)
RETURN VARCHAR2
AS
v_dummy NUMBER;
v_van NUMBER;
v_tot NUMBER;
v_token VARCHAR (10);
v_result VARCHAR (100);
BEGIN
v_token := ' --> ';
v_van := INSTR (p_string, v_token) + LENGTH (v_token);
IF v_van > 0
THEN
v_result := TRIM (SUBSTR (p_string, v_van));
IF v_result = '(gewist)' OR v_result = '(Leeg)'
THEN
v_result := NULL;
END IF;
RETURN v_result;
ELSE
RETURN p_default;
END IF;
END;
END;
/
CREATE OR REPLACE VIEW gdfs_v_rap_bezoekers
(
fclt_d_datum_in,
tijd_in,
datum_uit,
tijd_uit,
naam,
bedrijf,
fclt_f_gebouw,
gastheer,
duur
)
AS
SELECT TO_CHAR (COALESCE (bez_bezoekers_done, TRUNC (bez_afspraak_datum)),
'dd-mm-yyyy')
datum_in,
TO_CHAR (COALESCE (bez_bezoekers_done, TRUNC (bez_afspraak_datum)),
'hh24:mi:ss')
tijd_in,
TO_CHAR (
COALESCE (bez_bezoekers_out, TRUNC (bez_afspraak_eind + 1)),
'dd-mm-yyyy')
datum_uit,
TO_CHAR (
COALESCE (bez_bezoekers_out, TRUNC (bez_afspraak_eind + 1)),
'hh24:mi:ss')
tijd_uit,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf,
aog.alg_gebouw_naam,
a.bez_afspraak_gastheer,
TO_CHAR (
TRUNC( (COALESCE (bez_bezoekers_out,
TRUNC (bez_afspraak_eind + 1))
- COALESCE (bez_bezoekers_done,
TRUNC (bez_afspraak_datum)))
* 24),
'FM00')
|| ':'
|| TO_CHAR (
MOD (
( (COALESCE (bez_bezoekers_out,
TRUNC (bez_afspraak_eind + 1))
- COALESCE (bez_bezoekers_done,
TRUNC (bez_afspraak_datum)))
* 24),
1)
* 60,
'FM00')
duur
FROM bez_bezoekers b, bez_afspraak a, alg_v_onroerendgoed_gegevens aog
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND A.ALG_ONRGOED_KEYS = AOG.ALG_ONROERENDGOED_KEYS
AND (bez_bezoekers_out IS NOT NULL
OR bez_bezoekers_done IS NOT NULL);
CREATE OR REPLACE VIEW gdfs_v_contactpersoon_perslid
(
code,
omschrijving
)
AS
SELECT 90000000 + prs_contactpersoon_key,
cp.prs_contactpersoon_naam
|| NVL2 (cp.prs_contactpersoon_voorletters,
', ' || cp.prs_contactpersoon_voorletters,
'')
|| NVL2 (cp.prs_contactpersoon_tussenv,
' ' || cp.prs_contactpersoon_tussenv,
'')
|| NVL2 (cp.prs_contactpersoon_voornaam,
' (' || cp.prs_contactpersoon_voornaam || ')',
'')
|| ' ['
|| prs_bedrijf_naam
|| ']'
FROM prs_contactpersoon cp, prs_bedrijf b
WHERE cp.prs_bedrijf_key = b.prs_bedrijf_key
AND cp.prs_contactpersoon_verwijder IS NULL
UNION ALL
SELECT prs_perslid_key,
p.prs_perslid_naam
|| NVL2 (p.prs_perslid_voorletters,
', ' || p.prs_perslid_voorletters,
'')
|| NVL2 (p.prs_perslid_tussenvoegsel,
' ' || p.prs_perslid_tussenvoegsel,
'')
|| NVL2 (p.prs_perslid_voornaam,
' (' || p.prs_perslid_voornaam || ')',
'')
|| ' [Intern]'
FROM prs_perslid p
WHERE prs_perslid_verwijder IS NULL;
CREATE OR REPLACE VIEW gdfs_v_rap_ins_uitgifte
(
fclt_d_datum,
fclt_f_object,
uitgegevenaan,
uitleendatum,
innamedatum,
ingeleverddoor
)
AS
SELECT TO_CHAR (uitleen.fac_tracking_datum, 'dd-mm-yyyy') fclt_f_datum,
ins_deel_omschrijving,
SUBSTR (
uitleen.fac_tracking_oms,
INSTR (uitleen.fac_tracking_oms, 'is uitgegeven aan') + 18,
DECODE (
INSTR (uitleen.fac_tracking_oms, CHR (10)),
0,
50,
INSTR (uitleen.fac_tracking_oms, CHR (10))
- (INSTR (uitleen.fac_tracking_oms, 'is uitgegeven aan') + 18))),
TO_CHAR (uitleen.fac_tracking_datum, 'dd-mm-yyyy hh24:mi:ss')
uitleendatum,
TO_CHAR (inname.fac_tracking_datum, 'dd-mm-yyyy hh24:mi:ss')
innamedatum,
(SELECT omschrijving
FROM gdfs_v_contactpersoon_perslid
WHERE code =
fac.safe_to_number(SUBSTR (
inname.fac_tracking_oms,
INSTR (inname.fac_tracking_oms,
'Ingel')
+ 28)))
ingeleverddoor
FROM fac_tracking uitleen,
fac_tracking inname,
(SELECT t.fac_tracking_key uitleen,
(SELECT MIN (fac_tracking_key)
FROM fac_tracking inname
WHERE inname.fac_tracking_key > t.fac_tracking_key
AND inname.fac_srtnotificatie_key = 63
AND inname.fac_tracking_refkey = t.fac_tracking_refkey)
inname,
d.ins_deel_omschrijving
FROM fac_tracking t, ins_deel d
WHERE fac_srtnotificatie_key = 62
AND fac_tracking_refkey = d.ins_deel_key) uitlening
WHERE uitlening.uitleen = uitleen.fac_tracking_key
AND uitlening.inname = inname.fac_tracking_key(+)
UNION ALL
SELECT TO_CHAR (inname.fac_tracking_datum, 'dd-mm-yyyy') fclt_f_datum,
ins_deel_omschrijving,
SUBSTR (
uitleen.fac_tracking_oms,
INSTR (uitleen.fac_tracking_oms, 'is uitgegeven aan') + 18,
DECODE (
INSTR (uitleen.fac_tracking_oms, CHR (10)),
0,
50,
INSTR (uitleen.fac_tracking_oms, CHR (10))
- (INSTR (uitleen.fac_tracking_oms, 'is uitgegeven aan') + 18))),
TO_CHAR (uitleen.fac_tracking_datum, 'dd-mm-yyyy hh24:mi:ss')
uitleendatum,
TO_CHAR (inname.fac_tracking_datum, 'dd-mm-yyyy hh24:mi:ss')
innamedatum,
(SELECT omschrijving
FROM gdfs_v_contactpersoon_perslid
WHERE code =
fac.safe_to_number(SUBSTR (
inname.fac_tracking_oms,
INSTR (inname.fac_tracking_oms,
'Ingel')
+ 28)))
ingeleverddoor
FROM fac_tracking uitleen,
fac_tracking inname,
(SELECT t.fac_tracking_key uitleen,
(SELECT MIN (fac_tracking_key)
FROM fac_tracking inname
WHERE inname.fac_tracking_key > t.fac_tracking_key
AND inname.fac_srtnotificatie_key = 63
AND inname.fac_tracking_refkey = t.fac_tracking_refkey)
inname,
d.ins_deel_omschrijving
FROM fac_tracking t, ins_deel d
WHERE fac_srtnotificatie_key = 62
AND fac_tracking_refkey = d.ins_deel_key) uitlening
WHERE uitlening.uitleen = uitleen.fac_tracking_key
AND uitlening.inname = inname.fac_tracking_key
AND TRUNC (uitleen.fac_tracking_datum) <>
TRUNC (inname.fac_tracking_datum);
-- voorbeeld rapport voor als we de kilometers ook bij gaan houden.
-- blijkt nu echter erg traag te worden.
CREATE OR REPLACE VIEW gdfs_v_rap_uitgifte_basis
(
objectx,
uitgegevenaan,
uitleendatum,
innamedatum,
ingeleverddoor,
km_begin,
km_eind
)
AS
SELECT ins_deel_omschrijving objectx,
SUBSTR (
uitleen.fac_tracking_oms,
INSTR (uitleen.fac_tracking_oms, 'is uitgegeven aan') + 18,
DECODE (
INSTR (uitleen.fac_tracking_oms, CHR (10)),
0,
50,
INSTR (uitleen.fac_tracking_oms, CHR (10))
- (INSTR (uitleen.fac_tracking_oms, 'is uitgegeven aan') + 18))),
uitleen.fac_tracking_datum uitleendatum,
inname.fac_tracking_datum innamedatum,
(SELECT omschrijving
FROM gdfs_v_contactpersoon_perslid
WHERE code =
fac.safe_to_number(SUBSTR (
inname.fac_tracking_oms,
INSTR (inname.fac_tracking_oms,
'Ingel')
+ 28)))
ingeleverddoor,
fac.safe_to_number(SUBSTR (inname.kilometers,
0,
INSTR (inname.kilometers, ' --> ') - 1))
km_begin,
fac.safe_to_number(SUBSTR (
inname.kilometers,
INSTR (inname.kilometers, ' --> ') + 5,
INSTR (inname.kilometers, CHR (10))
- (INSTR (inname.kilometers, ' --> ') + 5)))
km_eind
FROM fac_tracking uitleen,
(SELECT fac_tracking_key,
fac_tracking_datum,
fac_tracking_oms,
SUBSTR (
fac_tracking_oms,
INSTR (fac_tracking_oms, 'Kilometerstand: ') + 16,
DECODE (INSTR (fac_tracking_oms, 'Kilometerstand: '),
0, 0,
100))
kilometers
FROM fac_tracking) inname,
(SELECT t.fac_tracking_key uitleen,
(SELECT MIN (fac_tracking_key)
FROM fac_tracking inname
WHERE inname.fac_tracking_key > t.fac_tracking_key
AND inname.fac_srtnotificatie_key = 63
AND inname.fac_tracking_refkey = t.fac_tracking_refkey)
inname,
d.ins_deel_omschrijving
FROM fac_tracking t, ins_deel d
WHERE fac_srtnotificatie_key = 62
AND fac_tracking_refkey = d.ins_deel_key) uitlening
WHERE uitlening.uitleen = uitleen.fac_tracking_key
AND uitlening.inname = inname.fac_tracking_key(+);
CREATE OR REPLACE VIEW gdfs_v_rap_ins_tracking
(
hide_f_datum,
fclt_d_datum,
tijdstip,
fclt_f_type,
fclt_f_object,
actie,
omschrijving
)
AS
SELECT TO_CHAR (fac_tracking_datum, 'yyyymmdd hh24mi'),
TO_CHAR (fac_tracking_datum, 'dd-mm-yyyy'),
TO_CHAR (fac_tracking_datum, 'hh24:mi'),
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
DECODE (fac_srtnotificatie_key, 62, 'Uitgifte', 'Inname') actie,
fac_tracking_oms
FROM ins_deel d, ins_srtdeel sd, fac_tracking t
WHERE d.ins_deel_key = t.fac_tracking_refkey
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND t.fac_srtnotificatie_key IN (62, 63);
CREATE OR REPLACE VIEW GDFS_V_RAP_DIENSTRAPPORT
(
HIDE_F_DATUM,
FCLT_D_DATUM,
DIENSTRAPPORT,
PERSOON
)
AS
SELECT to_char(mld_melding_datum, 'yyyymmddhh24'),
to_char(m.mld_melding_datum, 'dd-mm-yyyy'),
m.mld_melding_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE pf.prs_perslid_key = m.prs_perslid_key)
FROM mld_melding m
WHERE mld_stdmelding_key = 2;
CREATE OR REPLACE VIEW gdfs_v_export_kenteken
(
prs_contactpersoon_key,
kenteken_nieuw,
kenteken_oud,
prs_kenmerklink_key,
result,
result_order
)
AS
SELECT b.prs_contactpersoon_key,
k.bez_kenmerkwaarde_waarde,
kl.prs_kenmerklink_waarde,
kl.prs_kenmerklink_key,
b.prs_contactpersoon_key || ';' || k.bez_kenmerkwaarde_waarde || ';' || kl.prs_kenmerklink_waarde || ';' || kl.prs_kenmerklink_key,
NULL
FROM bez_bezoekers b,
bez_afspraak a,
bez_kenmerkwaarde k,
(SELECT prs_kenmerklink_key, prs_kenmerklink_waarde, prs_link_key
FROM prs_kenmerklink
WHERE prs_kenmerklink_niveau = 'C' AND prs_kenmerk_key = 1002) kl
WHERE b.bez_afspraak_key = a.bez_afspraak_key
AND TRUNC (a.bez_afspraak_datum) = TRUNC (SYSDATE)
AND k.bez_kenmerk_key = 1000
AND k.bez_bezoekers_key = b.bez_bezoekers_key
AND b.prs_contactpersoon_key = kl.prs_link_key(+);
CREATE OR REPLACE PROCEDURE gdfs_export_kenteken (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
BEGIN
UPDATE prs_kenmerklink kl
SET prs_kenmerklink_waarde =
(SELECT MAX(kenteken_nieuw)
FROM gdfs_v_export_kenteken gk
WHERE gk.prs_kenmerklink_key = kl.prs_kenmerklink_key)
WHERE EXISTS (SELECT kenteken_nieuw
FROM gdfs_v_export_kenteken gk
WHERE gk.prs_kenmerklink_key = kl.prs_kenmerklink_key);
INSERT INTO prs_kenmerklink (prs_link_key,
prs_kenmerklink_niveau,
prs_kenmerklink_waarde,
prs_kenmerk_key)
SELECT prs_contactpersoon_key,
'C',
MAX(kenteken_nieuw),
1002
FROM gdfs_v_export_kenteken
WHERE prs_kenmerklink_key IS NULL
GROUP BY prs_contactpersoon_key;
END;
/
CREATE OR REPLACE PROCEDURE gdfs_export_daily_task (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR c
IS
SELECT *
FROM fac_tracking t, ins_deel d
WHERE fac_tracking_refkey = d.ins_deel_key
AND d.ins_srtdeel_key = 7 -- autos
AND fac_srtnotificatie_key IN (62, 63) -- uitgifte en inname
ORDER BY ins_deel_key, fac_tracking_datum;
v_bestuurder VARCHAR2 (60);
v_uitgifte DATE;
v_inname DATE;
v_reden VARCHAR2 (100);
v_van VARCHAR2 (100);
v_naar VARCHAR2 (100);
v_km_uitgifte NUMBER (10);
v_km_inname NUMBER (10);
v_fac_tracking_uitgifte_key NUMBER (10);
v_fac_tracking_inname_key NUMBER (10);
v_dummy VARCHAR2 (1000);
v_search VARCHAR2 (1000);
BEGIN
DELETE gdfs_autorit_registratie;
RETURN; -- GDFS#73348 Autorittenregistratie wordt niet meer gebruikt.
FOR rec IN c
LOOP
BEGIN
v_search := 'Reden van gebruik:';
v_dummy := gdfs.find_str (rec.fac_tracking_oms, v_search);
v_reden := gdfs.find_nieuw (v_dummy, v_reden);
v_search := 'Van:';
v_dummy := gdfs.find_str (rec.fac_tracking_oms, v_search);
v_van := gdfs.find_nieuw (v_dummy, v_van);
v_search := 'Naar:';
v_dummy := gdfs.find_str (rec.fac_tracking_oms, v_search);
v_naar := gdfs.find_nieuw (v_dummy, v_naar);
v_search := 'Kilometerstand:';
v_dummy := gdfs.find_str (rec.fac_tracking_oms, v_search);
IF v_dummy IS NULL
THEN
v_km_uitgifte := v_km_inname;
ELSE
v_km_uitgifte := gdfs.find_oud (v_dummy, v_km_uitgifte);
v_km_inname := gdfs.find_nieuw (v_dummy, v_km_inname);
END IF;
v_search := 'is uitgegeven aan';
v_dummy := gdfs.find_str (rec.fac_tracking_oms, v_search);
v_bestuurder := v_dummy;
IF rec.fac_srtnotificatie_key = 62
THEN
-- Uitgifte
v_uitgifte := rec.fac_tracking_datum;
INSERT INTO gdfs_autorit_registratie (ins_deel_key,
bestuurder,
uitgifte,
reden,
van,
naar,
km_uitgifte,
fac_tracking_uitgifte_key)
VALUES (rec.fac_tracking_refkey,
v_bestuurder,
v_uitgifte,
v_reden,
v_van,
v_naar,
v_km_uitgifte,
rec.fac_tracking_key);
v_fac_tracking_uitgifte_key := rec.fac_tracking_key;
ELSE
v_inname := rec.fac_tracking_datum;
UPDATE gdfs_autorit_registratie
SET inname = v_inname,
reden = COALESCE (v_reden, reden),
van = COALESCE (v_van, van),
naar = COALESCE (v_naar, naar),
km_uitgifte = COALESCE (v_km_uitgifte, km_uitgifte),
km_inname = v_km_inname,
fac_tracking_inname_key = rec.fac_tracking_key
WHERE fac_tracking_uitgifte_key = v_fac_tracking_uitgifte_key;
END IF;
END;
END LOOP;
END;
/
CREATE OR REPLACE VIEW gdfs_v_rap_auto_registratie
(
timestamp,
maand,
auto,
bestuurder,
fclt_d_datum,
uitgifte_datum,
uitgifte_tijd,
inname_datum,
inname_tijd,
reden,
van,
naar,
km_uitgifte,
km_inname,
km_verschil
)
AS
SELECT TO_CHAR (uitgifte, 'yyyymmddhh24mi') timestamp,
TO_CHAR (uitgifte, 'Month') maand,
ins_deel_omschrijving auto,
bestuurder,
TO_CHAR (uitgifte, 'dd-mm-yyyy') filter,
TO_CHAR (uitgifte, 'dd-mm-yyyy') uitgifte_datum,
TO_CHAR (uitgifte, 'hh24:mi') uitgifte_tijd,
TO_CHAR (inname, 'dd-mm-yyyy') inname_datum,
TO_CHAR (inname, 'hh24:mi') inname_tijd,
reden,
van,
naar,
km_uitgifte,
km_inname,
km_inname - km_uitgifte km_verschil
FROM gdfs_autorit_registratie a, ins_deel d
WHERE a.ins_deel_key = d.ins_deel_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