INLO#87051 -- Uitbreiding scanproces voor wagens tbv gevangenis haren om prestatie te monitoren - procedure import en dwh-view voor value portal + gestylde weergave affiches

svn path=/Customer/trunk/; revision=70819
This commit is contained in:
Jos Migo
2025-11-05 06:54:32 +00:00
parent 537de93277
commit 6a726bb8e9

View File

@@ -5966,6 +5966,7 @@ AS
v_ins_deel_key NUMBER(10); -- key eenheid/unit
v_alg_ruimte_key NUMBER(10);
v_alg_ruimte_key_i NUMBER(10);
v_ruimte_vorige_scan NUMBER(10);
v_datum DATE;
v_datum_dag_code NUMBER (1);
v_datum_vorige_scan DATE;
@@ -5977,12 +5978,16 @@ AS
v_gescand_door_vorige VARCHAR2 (200);
v_afwijking_dag VARCHAR2 (200);
v_afwijking_dag_i VARCHAR2 (200);
v_afwijking_ruimte VARCHAR2 (200);
v_afwijking_ruimte_i VARCHAR2 (200);
v_afwijking_eenheid VARCHAR2 (200);
v_opmerking VARCHAR2 (4000);
v_temperatuur VARCHAR2 (200);
v_cnt_contract_key NUMBER (10);
v_ins_srtdeel_key NUMBER (10);
v_afspraak_bezorging_dag VARCHAR2 (60); -- Op contract de dag_code waarop levering minimaal gedaan moet worden
v_afspraak_bezorging_voor VARCHAR2 (10); -- Op contract het tijdstip waarvoor die dag de levering gedaan moet worden (bijv 11:00)
CURSOR c IS
SELECT *
@@ -6005,7 +6010,7 @@ BEGIN
UPDATE fac_imp_file
SET fac_imp_file_line = REPLACE (fac_imp_file_line, ':', '')
WHERE fac_import_key = p_import_key
AND UPPER(SUBSTR(fac_imp_file_line, 1, 13)) = 'STREEPJESCODE' ;
AND UPPER(SUBSTR(fac_imp_file_line, 1, 21)) = 'CODE (RUIMTE/EENHEID)' ;
-- Bepaal hoogste rownumb
SELECT COALESCE(MAX(rownumb),0)
@@ -6028,9 +6033,7 @@ BEGIN
v_aanduiding := '';
IF (UPPER (v_newline) LIKE
'STREEPJESCODE;DAG;TIJD;PERSOON DIE SCANT;AFWIJKING HELE DAG;AFWIJKING EENHEID;OPMERKING%')
-- WAS: Streepjescode:;Datum;Tijd;IN / UIT;Temp;Opmerking
-- WORDT STREEPJESCODE;DAG;TIJD;PERSOON DIE SCANT;AFWIJKING HELE DAG;AFWIJKING EENHEID;OPMERKING
'CODE (RUIMTE/EENHEID);DATUM;TIJD;GESCAND DOOR;AFWIJKING HELE DAG;AFWIJKING RUIMTE;AFWIJKING EENHEID;OPMERKING%')
THEN
v_header_is_valid := 1;
@@ -6040,7 +6043,7 @@ BEGIN
v_cnt_contract_key := NULL ;
-- Lees alle veldwaarden
v_errormsg := 'Fout opvragen te importeren rij (streepjescode)';
v_errormsg := 'Fout opvragen te importeren rij (code (ruimte/eenheid))';
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_scancode := UPPER(SUBSTR (v_dummy, 1, 60));
@@ -6099,7 +6102,6 @@ BEGIN
v_errormsg := 'Fout opvragen te importeren rij (datum) ';
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_datum := fac.safe_to_date (v_dummy, 'dd-mm-yyyy');
v_datum_dag_code := fac.getweekdaynum (v_datum)-1;
v_errormsg := 'Fout opvragen te importeren rij (tijd) ';
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
@@ -6121,14 +6123,25 @@ BEGIN
v_errormsg := 'Fout opvragen te importeren rij (afwijking_dag) ';
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_afwijking_dag := SUBSTR (v_dummy, 1, 200);
-- Deze wordt in principe bij start dag op eerste scanregel door medewerker ingevoerd en geldt voor alle onderliggende scans
IF v_datum = v_datum_vorige_scan
-- Deze wordt in principe bij start dag op eerste scanregel door medewerker ingevoerd en geldt voor alle onderliggende scans van die persoon
IF v_datum = v_datum_vorige_scan AND v_gescand_door_i = v_gescand_door_vorige
THEN
v_afwijking_dag_i := COALESCE(v_afwijking_dag, v_afwijking_dag_i) ;
ELSE
v_afwijking_dag_i := v_afwijking_dag ;
END IF;
v_errormsg := 'Fout opvragen te importeren rij (afwijking_ruimte) ';
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_afwijking_ruimte := SUBSTR (v_dummy, 1, 200);
-- Deze geldt voor alle eenheden die gescand worden onder deze zelfde ruimte
IF v_alg_ruimte_key_i = v_ruimte_vorige_scan
THEN
v_afwijking_ruimte_i := COALESCE(v_afwijking_ruimte, v_afwijking_ruimte_i) ;
ELSE
v_afwijking_ruimte_i := v_afwijking_ruimte ;
END IF;
v_errormsg := 'Fout opvragen te importeren rij (afwijking_eenheid) ';
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_afwijking_eenheid := SUBSTR (v_dummy, 1, 200);
@@ -6146,6 +6159,8 @@ BEGIN
-- op zoek naar actuele contract op desbetreffende eenheid
IF v_ins_deel_key IS NOT NULL
THEN
v_errormsg := 'Fout bij opvragen actueel contract bij eenheid ';
-- eerst ins_srt_deel ophalen
SELECT ins_srtdeel_key
@@ -6166,6 +6181,68 @@ BEGIN
END IF;
v_errormsg := 'Fout bij bepalen juiste dag_code voor bepaling levering op tijd ';
-- Dag_code bepalen - deze gebruiken we voor bepalen of levering op tijd (conform SLA contract) is gedaan
---- Zie eigen tabel key 1501 - PPS SLA Dag waarin maandag = 1, dinsdag = 2 ... t/m zondag = 7
-- de standaard dag_code is:
v_datum_dag_code := fac.getweekdaynum (v_datum-1); -- onze fac.getweekdaynum geeft standaard voor zondag 1, maandag 2, etc, ECHTER in pps-systematiek willen we dus de MA standaard op 1 en zondag op 7, daarom v_datum -1
-- Op contract staat de 'Afspraak - bezorging dag' en bij afspraak 'next week' moet er nog correctie op dag_code gedaan worden om op-tijd-bepaling goed te laten doorlopen
v_afspraak_bezorging_dag := NULL ;
v_afspraak_bezorging_voor := NULL ;
IF v_cnt_contract_key IS NOT NULL
THEN
-- gaan we eerste de 'Afspraak - bezorging dag' bij dat contract ophalen
SELECT ud.fac_usrdata_omschr dag
INTO v_afspraak_bezorging_dag
FROM cnt_contract c,
cnt_kenmerkcontract kw,
cnt_kenmerk k,
cnt_srtkenmerk sk,
fac_usrtab ut,
fac_usrdata ud
WHERE c.cnt_contract_key = v_cnt_contract_key
AND c.cnt_contract_key = kw.cnt_contract_key
AND kw.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND fac.safe_to_number (kw.cnt_kenmerkcontract_waarde) = ud.fac_usrdata_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND ut.fac_usrtab_key = 1501 -- PPS - SLA DAG
AND k.cnt_kenmerk_key = 4261 -- AFSPRAAK - bezorging dag
;
-- en de 'Afspraak-bezorging voor'
SELECT kw.cnt_kenmerkcontract_waarde bezorging_voor
INTO v_afspraak_bezorging_voor
FROM cnt_contract c,
cnt_kenmerkcontract kw,
cnt_kenmerk k,
cnt_srtkenmerk sk
WHERE c.cnt_contract_key = v_cnt_contract_key
AND c.cnt_contract_key = kw.cnt_contract_key
AND kw.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND k.cnt_kenmerk_key = 4223 -- AFSPRAAK - bezorging tijd
;
-- vervolgens dus nog een correctie op dag_code doorvoeren voor die eenheden/contracten met afspraak_bezoring_dag is in 'next week' (bijv. ze leveren standaard op VR maar volgens contract mogen ze het ook op MA voor 11:00 leveren)
IF INSTR(v_afspraak_bezorging_dag, 'next week') > 0 AND v_datum_dag_code IN (1, 2)
THEN
-- ALS CNT maand-next_week
-- THEN dagcode_scanning =
-- - Ma = 8 (ipv 1)
-- - DI = 9 (ipv 2)
-- Wo, Do, Vr, Zat, Zon = 3 , 4, 5, 6, 7
v_datum_dag_code := v_datum_dag_code + 7 ;
END IF;
END IF;
-- ongedlige regel als er geen ruimte_key of eenheid_key of gekoppelde contract_key gevonden wordt
---- we lezen deze scanactie wel in maar met een invalid zodat deze wel in rapportage naar boven kan komen en er mensen op aangesproken kunnen worden...
IF COALESCE(v_alg_ruimte_key, v_ins_deel_key) IS NULL OR v_cnt_contract_key IS NULL
@@ -6175,8 +6252,8 @@ BEGIN
END IF;
-- we lezen alleen de scanregels van de eenheid in
IF SUBSTR(v_scanregel, 1, 7) = 'eenheid'
-- we lezen alleen de scanregels van de eenheid in en als er scandatum gevuld is
IF SUBSTR(v_scanregel, 1, 7) = 'eenheid' AND v_datum IS NOT NULL
THEN
v_errormsg :=
@@ -6197,6 +6274,7 @@ BEGIN
tijd,
gescand_door,
afwijking_dag,
afwijking_ruimte,
afwijking_eenheid,
opmerking,
temperatuur,
@@ -6208,7 +6286,10 @@ BEGIN
actief,
alg_ruimte_key,
ins_deel_key,
cnt_contract_key)
cnt_contract_key,
cnt_afspraak_bezorging_dag,
cnt_afspraak_bezorging_voor
)
VALUES (v_rownumb,
v_datum_import,
v_soort_scan,
@@ -6220,6 +6301,7 @@ BEGIN
v_tijd,
v_gescand_door_i,
v_afwijking_dag_i,
v_afwijking_ruimte_i,
v_afwijking_eenheid,
v_opmerking,
v_temperatuur,
@@ -6231,12 +6313,17 @@ BEGIN
0,
v_alg_ruimte_key_i,
v_ins_deel_key,
v_cnt_contract_key);
v_cnt_contract_key,
v_afspraak_bezorging_dag,
v_afspraak_bezorging_voor
);
END IF;
-- Zet vorige_dag en vorige persoon die gescand heeft
v_datum_vorige_scan := v_datum ;
v_gescand_door_vorige := v_gescand_door ;
v_gescand_door_vorige := v_gescand_door_i ;
v_ruimte_vorige_scan := v_alg_ruimte_key_i ;
END IF;
END;
@@ -6361,13 +6448,13 @@ CREATE OR REPLACE VIEW inlo_v_rap_scan_haren2
DATUM_IMPORT,
SOORT_SCAN,
SCANDATUM,
SCANDATUM_DAG_CODE, -- MA = 1 ... ZON = 7
SCANCODE_RUIMTE,
TIJD_RUIMTE,
SCANCODE_EENHEID,
TIJD,
GESCAND_DOOR,
AFWIJKING_DAG,
AFWIJKING_RUIMTE,
AFWIJKING_EENHEID,
OPMERKING,
TEMPERATUUR,
@@ -6387,8 +6474,10 @@ CREATE OR REPLACE VIEW inlo_v_rap_scan_haren2
SLA_CONTRACT_DAG,
SLA_CONTRACT_DAG_CODE,
SLA_CONTRACT_BEZORGING_VOOR,
AFWIJKING_UITSCAN,
OP_TIJD
SCANDATUM_DAG_CODE, -- MA = 1 ... ZON = 7
SCANDATUM_TIJD,
OP_TIJD,
AFWIJKING_UITSCAN
)
AS
SELECT -- velden uit cust-tabel pps haren
@@ -6396,13 +6485,13 @@ AS
v.datum_import,
v.soort_scan,
v.datum scandatum,
v.datum_dag_code scandatum_dag_code, -- MA = 1
v.scancode_ruimte,
v.tijd_ruimte,
v.scancode_eenheid,
v.tijd,
v.gescand_door,
v.afwijking_dag,
v.afwijking_ruimte,
v.afwijking_eenheid,
v.opmerking,
v.temperatuur,
@@ -6425,23 +6514,31 @@ AS
cnt_d.dag sla_contract_dag,
cnt_d.dag_code sla_contract_dag_code,
cnt_t.bezorging_voor sla_contract_bezorging_voor,
CASE WHEN COALESCE(v.afwijking_dag, v.afwijking_eenheid) = NULL
THEN ''
WHEN v.afwijking_dag IS NOT NULL AND v.afwijking_eenheid IS NULL
THEN 'Dag: - ' || v.afwijking_dag
WHEN v.afwijking_dag IS NULL AND v.afwijking_eenheid IS NOT NULL
THEN 'Eenheid: - ' || v.afwijking_eenheid || DECODE(v.opmerking, NULL, '', ' - ' || v.opmerking)
WHEN v.afwijking_dag IS NOT NULL AND v.afwijking_eenheid IS NOT NULL
THEN 'Dag/Eenheid: - ' || v.afwijking_dag || ' / ' || v.afwijking_eenheid
ELSE ''
END
afwijking_uitscan,
v.datum_dag_code scandatum_dag_code, -- MA = 1 en voor 'next week' MA = 8
v.tijd scandatum_tijd,
CASE WHEN v.datum_dag_code < cnt_d.dag_code THEN 'ja'
WHEN v.datum_dag_code > cnt_d.dag_code THEN 'nee'
WHEN v.datum_dag_code = cnt_d.dag_code AND v.tijd <= cnt_t.bezorging_voor THEN 'ja'
WHEN v.datum_dag_code = cnt_d.dag_code AND v.tijd > cnt_t.bezorging_voor THEN 'nee'
ELSE ''
END sla_op_tijd
END sla_op_tijd,
CASE WHEN COALESCE(v.afwijking_dag, v.afwijking_ruimte, v.afwijking_eenheid) = NULL
THEN ''
WHEN v.afwijking_dag IS NOT NULL AND v.afwijking_ruimte IS NULL AND v.afwijking_eenheid IS NULL
THEN 'Dag: - ' || v.afwijking_dag
WHEN v.afwijking_dag IS NULL AND v.afwijking_ruimte IS NOT NULL AND v.afwijking_eenheid IS NULL
THEN 'Ruimte: - ' || v.afwijking_ruimte
WHEN v.afwijking_dag IS NULL AND v.afwijking_ruimte IS NULL AND v.afwijking_eenheid IS NOT NULL
THEN 'Eenheid: - ' || v.afwijking_eenheid || DECODE(v.opmerking, NULL, '', ' - ' || v.opmerking)
WHEN v.afwijking_dag IS NOT NULL AND v.afwijking_ruimte IS NULL AND v.afwijking_eenheid IS NOT NULL
THEN 'Dag/Eenheid: - ' || v.afwijking_dag || ' / ' || v.afwijking_eenheid
WHEN v.afwijking_dag IS NOT NULL AND v.afwijking_ruimte IS NOT NULL AND v.afwijking_eenheid IS NULL
THEN 'Dag/Ruimte: - ' || v.afwijking_dag || ' / ' || v.afwijking_ruimte
WHEN v.afwijking_dag IS NULL AND v.afwijking_ruimte IS NOT NULL AND v.afwijking_eenheid IS NOT NULL
THEN 'Ruimte/Eenheid: - ' || v.afwijking_ruimte || ' / ' || v.afwijking_eenheid
ELSE ''
END
afwijking_uitscan
FROM inlo_imp_scan_haren2 v, ins_v_deel_gegevens d, cnt_contract c, alg_ruimte r,
(SELECT kw.cnt_contract_key, ud.fac_usrdata_code dag_code, ud.fac_usrdata_omschr dag
FROM cnt_contract c, cnt_kenmerkcontract kw, cnt_kenmerk k, cnt_srtkenmerk sk,
@@ -6469,6 +6566,72 @@ AS
ORDER BY rownumb
;
-- AFFICHES VOOR DE WASSERIJ - AFGIFTE WAS
---- betreft de eenheden/units die in Facilitor als object zijn opgenomen en waar men op de karren een print van heeft met naast de QRC-code van de scan ook de standaard inhoud van de te leveren goederen
CREATE OR REPLACE VIEW inlo_v_rap_haren_affiche_was
(
INS_DEEL_KEY,
INS_DEEL_OMSCHRIJVING,
INS_SRTDEEL_OMSCHRIJVING,
INS_DEEL_VERVALDATUM,
-- overige gegevens van dit deel
AANTAL_EXTRA,
AANTAL_WASZAKKEN,
WASHANDJES,
BADHANDDOEKEN_KLEIN,
BADHANDDOEKEN_GROOT,
DWEIL,
KUSSENSLOOP,
LAKEN,HOESLAKEN,
KEUKENHANDDOEK,
-- nog veel meer kenmerken
-- organisatiegegevens van deze unit inclusief afbeelding
PRS_AFDELING_KEY,
AFDELING_NAAM,
AFDELING_THEMA,
AANTAL_CONTRACTUEEL, -- aantal gedetinieerde (standaard)
EENHEID_SYMBOOL,
KLEURCODE,
KLEURCODE_BALK
)
AS
SELECT v.ins_deel_key,
v.ins_deel_omschrijving,
v.ins_srtdeel_omschrijving,
v.ins_deel_vervaldatum,
flx.getflex ('INS', 1662, v.ins_deel_key) aantal_extra,
flx.getflex ('INS', 1681, v.ins_deel_key) aantal_waszakken,
flx.getflex ('INS', 1701, v.ins_deel_key) washandjes,
flx.getflex ('INS', 1703, v.ins_deel_key) badhanddoeken_klein,
flx.getflex ('INS', 1705, v.ins_deel_key) badhanddoeken_groot,
flx.getflex ('INS', 1707, v.ins_deel_key) dweil,
flx.getflex ('INS', 1741, v.ins_deel_key) kussensloop,
flx.getflex ('INS', 1743, v.ins_deel_key) laken,
flx.getflex ('INS', 1746, v.ins_deel_key) hoeslaken,
flx.getflex ('INS', 1749, v.ins_deel_key) keukenhanddoek,
-- nog veel meer kenmerken
-- organisatiegegevens van deze unit inclusief afbeelding
a.prs_afdeling_key,
v.prs_afdeling_omschrijving afdeling_naam,
flx.getdomeinwaarde (1601, flx.getflex ('PRS', 1541, a.prs_afdeling_key, 'A')) afdeling_thema,
flx.getflex ('PRS', 1560, a.prs_afdeling_key, 'A') aantal_contractueel,
1542 eenheid_symbool,
/* (SELECT prs_kenmerk_key
FROM prs_kenmerk
WHERE prs_kenmerk_niveau = 'A'
AND prs_kenmerk_code = 'PPS_HAREN_SYMBOOL')
eenheid_symbool */
flx.getflex ('PRS', 1544, a.prs_afdeling_key, 'A') kleurcode,
1543 kleurcode_balk
FROM ins_v_deel_gegevens v,
prs_afdeling a
WHERE v.ins_srtgroep_key = 541 -- EENHEDEN/UNITS
AND v.prs_afdeling_key = a.prs_afdeling_key
-- TEST - ALLEEN AFFICHES UNIT 412 TONEN
AND a.prs_afdeling_upper = '412'
;
------------------------------
-- EXACT - BUNDEL CATERING ---
------------------------------