BLST#75097 Rapportage uitlenen dienstfietsen

svn path=/Customer/trunk/; revision=60484
This commit is contained in:
Suzan Wiegerinck
2023-05-23 12:55:47 +00:00
parent 05a1420695
commit 7bf39b5dc8

View File

@@ -100,6 +100,8 @@ AS
PROCEDURE controleer_bestelling (p_bestelling_key IN NUMBER);
PROCEDURE archiveer_uitleen;
END;
/
@@ -1571,6 +1573,182 @@ AS
END;
PROCEDURE archiveer_uitleen
AS
CURSOR c IS
SELECT TRUNC (SYSDATE),
d.alg_ruimte_key,
d.ins_deel_key
object_key,
in_uit.fac_tracking_key_uit,
in_uit.datum_uitgifte
datum_uitgeleend,
fac.safe_to_date (in_uit.datum_uitgifte, 'dd-mm-yy')
datum_uit,
TO_CHAR (in_uit.datum_uitgifte, 'hh24:mi')
tijdstip_uit,
in_uit.omschrijving_uitgifte,
SUBSTR (
in_uit.omschrijving_uitgifte,
INSTR (in_uit.omschrijving_uitgifte,
'is uitgegeven aan ')
+ 18)
uitgeleend_aan,
in_uit.uitgegeven_door,
in_uit.fac_tracking_key_in,
in_uit.datum_inname
datum_ingenomen,
fac.safe_to_date (in_uit.datum_inname, 'dd-mm-yy')
datum_in,
TO_CHAR (in_uit.datum_inname, 'hh24:mi')
tijdstip_in,
in_uit.ingenomen_door,
ROUND ((in_uit.datum_inname - in_uit.datum_uitgifte) * 24, 1)
uren_gebruik
FROM (SELECT disc.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_key,
sd.ins_srtdeel_omschrijving,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
d.ins_alg_ruimte_key alg_ruimte_key
FROM ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline disc
WHERE d.ins_deel_verwijder IS NULL
AND d.ins_alg_ruimte_type = 'R'
AND sd.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND disc.ins_discipline_key = sg.ins_discipline_key
UNION ALL
SELECT disc.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_key,
sd.ins_srtdeel_omschrijving,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
d.ins_alg_ruimte_key_org alg_ruimte_key
FROM ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline disc
WHERE d.ins_deel_verwijder IS NULL
AND d.ins_alg_ruimte_type_org = 'R'
AND sd.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND disc.ins_discipline_key = sg.ins_discipline_key) d,
( SELECT ins_uit.fac_tracking_key_uit,
ins_uit.ins_deel_key,
ins_uit.datum_uitgifte,
ins_uit.omschrijving_uitgifte,
ins_uit.uitgegeven_door,
ins_in.fac_tracking_key_in,
ins_in.datum_inname,
ins_in.ingenomen_door
FROM ( SELECT t.fac_tracking_key
fac_tracking_key_uit,
t.fac_tracking_refkey
ins_deel_key,
t.fac_tracking_datum
datum_uitgifte,
t.fac_tracking_oms
omschrijving_uitgifte,
p.prs_perslid_naam_full
uitgegeven_door,
RANK ()
OVER (PARTITION BY t.fac_tracking_refkey
ORDER BY t.fac_tracking_datum ASC)
ranking
FROM fac_tracking t, prs_v_perslid_fullnames_all p
WHERE t.prs_perslid_key = p.prs_perslid_key
AND t.fac_srtnotificatie_key = 130
GROUP BY t.fac_tracking_refkey,
t.fac_tracking_key,
t.fac_tracking_datum,
t.fac_tracking_oms,
p.prs_perslid_naam_full) ins_uit
FULL OUTER JOIN
( SELECT t.fac_tracking_key fac_tracking_key_in,
t.fac_tracking_refkey ins_deel_key,
t.fac_tracking_datum datum_inname,
t.fac_tracking_oms omschrijving_inname,
p.prs_perslid_naam_full ingenomen_door,
RANK ()
OVER (PARTITION BY t.fac_tracking_refkey
ORDER BY t.fac_tracking_datum ASC) ranking
FROM fac_tracking t, prs_v_perslid_fullnames_all p
WHERE t.prs_perslid_key = p.prs_perslid_key
AND t.fac_srtnotificatie_key = 131
GROUP BY t.fac_tracking_refkey,
t.fac_tracking_key,
t.fac_tracking_datum,
t.fac_tracking_oms,
p.prs_perslid_naam_full) ins_in
ON ( ins_uit.ranking = ins_in.ranking
AND ins_uit.ins_deel_key = ins_in.ins_deel_key)
ORDER BY ins_uit.ins_deel_key, ins_uit.ranking) In_uit
WHERE in_uit.ins_deel_key = d.ins_deel_key
AND ( in_uit.fac_tracking_key_in IS NULL
OR NOT EXISTS
(SELECT a.fac_tracking_key_in
FROM blst_uitleen_archief a
WHERE a.fac_tracking_key_in =
in_uit.fac_tracking_key_in));
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_onderwerp VARCHAR2 (100);
BEGIN
--- Alleen complete sets uit/in kunnen we in het archief laten staan
--- Als een object was uitgeleend maar nog niet ingenomen, dan gooien we die regel weg en voegen we de huidige stavaza toe
--- daarom importeren we alleen regels waarbij tracking in is nog steeds leeg of tracking in komt nog niet voor in het archief
--- Net zo lang tot de set uit/in compleet is
DELETE blst_uitleen_archief
WHERE fac_tracking_key_in IS NULL;
FOR rec IN c
LOOP
v_onderwerp :=
'Archivering uitleenregistratie ' || rec.archiveerdatum;
INSERT INTO blst_uitleen_archief (alg_ruimte_key,
object_key,
fac_tracking_key_uit,
datum_uitgeleend,
fac_tracking_key_in,
datum_ingenomen)
VALUES (rec.alg_ruimte_key,
rec.object_key,
rec.fac_tracking_key_uit,
rec.datum_uitgeleend,
rec.fac_tracking_key_in,
rec.datum_ingenomen);
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog ('Archiveer uitleen',
'E',
v_errormsg,
'');
END;
END;
/
@@ -6084,6 +6262,10 @@ BEGIN
-- notificatiejob voor bezoekers die 'morgen' een afspraak hebben of vandaag en nog niet genotificeerd (lastminute)
blst.noti_bezoek ();
-- archiveren uitleenregistratie
blst.archiveer_uitleen();
END;
/
@@ -9254,7 +9436,110 @@ AS
2,
3,
4));
CREATE OR REPLACE VIEW BLST_GEBRUIK_OBJECTEN
(
HIDE_F_locatie,
HIDE_F_deel,
HIDE_F_tracking_uit,
locatie_code,
locatie_omschrijving,
gebouwcode,
gebouw_omschrijving,
discipline,
groep,
objectsoort,
ins_deel_key,
object_id,
object_beschrijving,
datum_uitgeleend,
datum_uit,
tijdstip_uit,
omschrijving_uitgifte,
uitgeleend_aan,
uitgegeven_door,
datum_ingenomen,
datum_in,
tijdstip_in,
ingenomen_door,
gebruik
)
AS
SELECT l.alg_locatie_code
sort_locatie,
d.ins_deel_key
sort_deel,
uitg.fac_tracking_key_uit
sort_uitgifte,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
g.alg_gebouw_code,
g.alg_gebouw_omschrijving,
disc.ins_discipline_omschrijving,
og.ins_srtgroep_omschrijving,
os.ins_srtdeel_omschrijving,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
uitg.datum_uitgifte
datum_uitgeleend,
fac.safe_to_date (uitg.datum_uitgifte, 'dd-mm-yy')
datum_uit,
TO_CHAR (uitg.datum_uitgifte, 'hh24:mi')
tijdstip_uit,
uitg.omschrijving_uitgifte,
SUBSTR (
uitg.omschrijving_uitgifte,
INSTR (uitg.omschrijving_uitgifte, 'is uitgegeven aan ') + 18)
uitgeleend_aan,
uitg.uitgegeven_door,
inn.datum_inname
datum_ingenomen,
fac.safe_to_date (inn.datum_inname, 'dd-mm-yy')
datum_in,
TO_CHAR (inn.datum_inname, 'hh24:mi')
tijdstip_in,
inn.ingenomen_door,
ROUND ((inn.datum_inname - uitg.datum_uitgifte) * 24, 1)
uren_gebruik
FROM blst_uitleen_archief a,
ins_deel d,
ins_srtdeel os,
ins_srtgroep og,
ins_tab_discipline disc,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l,
(SELECT t.fac_tracking_key fac_tracking_key_uit,
t.fac_tracking_datum datum_uitgifte,
t.fac_tracking_oms omschrijving_uitgifte,
p.prs_perslid_naam_full uitgegeven_door
FROM fac_tracking t, prs_v_perslid_fullnames_all p
WHERE t.prs_perslid_key = p.prs_perslid_key) uitg,
( SELECT t.fac_tracking_key fac_tracking_key_in,
t.fac_tracking_datum datum_inname,
t.fac_tracking_oms omschrijving_inname,
p.prs_perslid_naam_full ingenomen_door
FROM fac_tracking t, prs_v_perslid_fullnames_all p
WHERE t.prs_perslid_key = p.prs_perslid_key
GROUP BY t.fac_tracking_refkey,
t.fac_tracking_key,
t.fac_tracking_datum,
t.fac_tracking_oms,
p.prs_perslid_naam_full) inn
WHERE a.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND g.alg_locatie_key = l.alg_locatie_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND a.fac_tracking_key_in = inn.fac_tracking_key_in(+)
AND a.fac_tracking_key_uit = uitg.fac_tracking_key_uit
AND a.object_key = d.ins_deel_key
AND d.ins_srtdeel_key = os.ins_srtdeel_key
AND os.ins_srtgroep_key = og.ins_srtgroep_key
AND og.ins_discipline_key = disc.ins_discipline_key
ORDER BY a.object_key, datum_uitgeleend;
------ payload end ------
SET DEFINE OFF