svn path=/Customer/trunk/; revision=25463

This commit is contained in:
Arthur Egberink
2015-06-15 15:13:08 +00:00
parent bb237243f3
commit 22e2561ad9

View File

@@ -50,6 +50,7 @@ CREATE OR REPLACE VIEW asle_v_schoonmaak_bron
mld_melding_key,
mld_stdmelding_omschrijving,
mld_stdmelding_key,
mld_discipline_key,
mld_melding_einddatum,
mld_melding_afgerond,
mld_opdr_key,
@@ -74,6 +75,7 @@ AS
SELECT m.mld_melding_key,
std.mld_stdmelding_omschrijving,
std.mld_stdmelding_key,
std.mld_ins_discipline_key,
m.mld_melding_einddatum,
m.mld_melding_afgerond,
o.mld_opdr_key,
@@ -159,7 +161,8 @@ AS
WHERE mld_stdmelding_omschrijving <> 'DND'
AND mld_stdmelding_omschrijving <> 'NoService'
AND mld_stdmelding_omschrijving <> 'Check'
AND mld_stdmelding_omschrijving <> 'Blocked';
AND mld_stdmelding_omschrijving <> 'Blocked'
AND mld_discipline_key = 21; -- schoonmaak
-- view voor gisteren, vandaag en morgen
CREATE OR REPLACE VIEW asle_v_arrival
@@ -262,7 +265,7 @@ AS
WHERE p.prs_perslid_key = s.prs_perslid_key)
prs_perslid_naam,
'K' || rg.alg_ruimte_nr alg_ruimte_nr,
mld_stdmelding_omschrijving type_schoonmaak,
DECODE(mld_typeopdr_key, 101, 'Herschoonmaak', mld_stdmelding_omschrijving) type_schoonmaak,
rg.opmerking_sup,
rg.alg_locatie_omschrijving,
DECODE (mld_statusopdr_omschrijving,
@@ -298,7 +301,8 @@ AS
mld_statusopdr_omschrijving,
plan_eind,
b.mld_opdr_key,
b.mld_melding_key
b.mld_melding_key,
b.mld_typeopdr_key
FROM asle_v_schoonmaak_bron b, mld_statusopdr so, mld_melding m
WHERE b.mld_statusopdr_key = so.mld_statusopdr_key(+)
AND b.mld_melding_key = m.mld_melding_key
@@ -308,11 +312,35 @@ AS
asle_v_ruimte_gegevens rg
WHERE rg.alg_ruimte_key = s.alg_ruimte_key);
-- Lijst met kamers die alleen maar gecontroleerd moeten worden.
CREATE OR REPLACE VIEW asle_v_work_list_chk_superv
(
ruimte,
type_schoonmaak,
mld_melding_key
)
AS
SELECT 'K' || alg_ruimte_nr, mld_stdmelding_omschrijving, m.mld_melding_key
FROM asle_v_schoonmaak_bron b, mld_melding m
WHERE m.mld_stdmelding_key = 62 -- Check
AND b.mld_melding_key = m.mld_melding_key
AND mld_melding_status in (2,4) -- nieuw, geaccepteerd
AND TRUNC (b.mld_melding_einddatum) = TRUNC (SYSDATE)
UNION ALL
SELECT 'K' || alg_ruimte_nr, mld_stdmelding_omschrijving, m.mld_melding_key
FROM asle_v_schoonmaak_bron b, mld_melding m
WHERE m.mld_stdmelding_key = 41 -- DND
AND b.mld_melding_key = m.mld_melding_key
AND mld_melding_status in (2,4) -- nieuw, geaccepteerd
AND TRUNC (b.mld_melding_einddatum) = TRUNC (SYSDATE);
CREATE OR REPLACE VIEW asle_v_work_list_coordinator
(
hide_f_timestamp,
mld_melding_key,
kamernr,
naam,
prs_perslid_key,
type_schoonmaak,
mld_melding_einddatum,
opdrachten,
@@ -325,6 +353,10 @@ AS
timestamp,
mld_melding_key,
alg_ruimte_nr,
(SELECT prs_perslid_voornaam
FROM prs_perslid p
WHERE p.prs_perslid_key = s.prs_perslid_key) naam,
s.prs_perslid_key,
mld_stdmelding_omschrijving,
mld_melding_einddatum,
listagg (mld_typeopdr_omschrijving, CHR (10))
@@ -335,7 +367,7 @@ AS
WITHIN GROUP (ORDER BY mld_opdr_bedrijfopdr_volgnr)
AS opmerking,
-- MIN (opdr_status),
DECODE (MIN (opdr_status),
DECODE (MAX (opdr_status),
1, 'Gecontroleerd',
2, 'Afgemeld',
3, 'Gestart',
@@ -360,8 +392,9 @@ AS
WHERE TRUNC (mld_melding_einddatum) = TRUNC (SYSDATE)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND s.mld_opdr_key = o.mld_opdr_key(+)
AND s.mld_melding_afgerond <> 1)
AND s.mld_melding_afgerond <> 1) s
GROUP BY mld_melding_key,
prs_perslid_key,
mld_stdmelding_omschrijving,
mld_melding_einddatum,
alg_ruimte_nr;
@@ -609,11 +642,27 @@ CREATE OR REPLACE VIEW asle_v_rap_wie_zit_waar
kamer
)
AS
SELECT prs_perslid_voornaam,
alg_ruimte_nr || DECODE (fac_srtnotificatie_key, 58, '*')
SELECT p.prs_perslid_voornaam,
alg_ruimte_nr
|| DECODE (
fac_srtnotificatie_key,
58, -- afgemeld
(SELECT ' --> ' || alg_ruimte_nr
FROM asle_v_schoonmaak s
WHERE s.prs_perslid_key = p.prs_perslid_key
AND s.mld_opdr_key = o.mld_opdr_key
AND o.mld_statusopdr_key = 5 -- uitgegeven
AND NOT EXISTS
(SELECT mld_opdr_key
FROM asle_v_schoonmaak s2
WHERE s2.prs_perslid_key = p.prs_perslid_key
AND mld_statusopdr_key = 5 -- uitgegeven
AND coalesce(s.plan_start, trunc(sysdate)) > coalesce(s2.plan_start, trunc(sysdate))
AND s.mld_opdr_key <> s2.mld_opdr_key)))
plaats
FROM ( SELECT prs_perslid_key, MAX (fac_tracking_key) fac_tracking_key
FROM fac_tracking
WHERE fac_srtnotificatie_key IN (65, 58)
WHERE fac_srtnotificatie_key IN (65, 58) -- geaccepteerd, afgemeld
AND TRUNC (fac_tracking_datum) = TRUNC (SYSDATE)
GROUP BY prs_perslid_key) tp,
fac_tracking t,
@@ -626,91 +675,44 @@ AS
AND t.fac_tracking_refkey = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = r.alg_ruimte_key
AND p.prs_perslid_key <> 4;
-- rapportages om de ingelezen gegevens te exporteren en ze op een andere
-- omgeving voor testdoeleinden weer in te lezen.
CREATE OR REPLACE VIEW asle_v_rap_exp_werkschema
-- basisrapport voor schoonmaakactiviteiten.
CREATE OR REPLACE VIEW asle_v_rap_schoonmaak_result
(
objectnummer,
fclt_f_datum,
begin_tijd,
personeelsnummer,
naam,
groep,
trollynr,
voorkeurzone,
min_uren,
max_uren,
last_zone,
last_clean,
num_clean,
min_num_clean
datum,
typeschoonmaak,
opdracht,
tijd,
stop
)
AS
SELECT (SELECT alg_locatie_code
FROM alg_locatie l
WHERE l.alg_locatie_key = w.alg_locatie_key)
objectnummer,
TO_CHAR (start_inzet, 'dd-mm-yyyy') datum,
TO_CHAR (start_inzet, 'hh24:mi') begin_tijd,
(SELECT prs_perslid_nr
FROM prs_perslid p
WHERE p.prs_perslid_key = w.prs_perslid_key)
personeelsnummer,
(SELECT prs_perslid_voornaam
FROM prs_perslid p
WHERE p.prs_perslid_key = w.prs_perslid_key)
SELECT (SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = s.prs_perslid_key)
naam,
NULL groep,
NULL trollynr,
voorkeurzone,
min_uren min_uren,
NULL max_uren,
last_zone,
last_clean,
num_clean,
min_num_clean
FROM asle_imp_werkschema w;
CREATE OR REPLACE VIEW asle_v_rap_exp_kamerschema
(
fclt_f_timestamp,
hotel,
room_number,
room_type,
occupancy,
status,
ad,
ju,
ch,
bb,
arrival_day,
departure_day,
group_name
)
AS
SELECT to_char(timestamp, 'dd-mm-yyyy') timestamp,
(SELECT alg_locatie_code
FROM alg_locatie l
WHERE l.alg_locatie_key = k.alg_locatie_key)
hotel,
(SELECT alg_ruimte_nr
FROM alg_ruimte r
WHERE r.alg_ruimte_key = k.alg_ruimte_key)
ruimte,
'STDDBL' roomtype,
ruimte_status occupancy,
schoonmaak_status status,
aantal_personen ad,
0 ju,
0 ch,
0 bb,
to_char(aankomst_datum, 'dd-mm-yyyy') arrival_day,
to_char(vertrek_datum, 'dd-mm-yyyy') departure_day,
REPLACE(groep_naam, 'DL', 'DELTA ') group_name
FROM asle_imp_kamerschema k;
s.mld_melding_einddatum,
s.mld_stdmelding_omschrijving,
s.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr,
TRUNC( ( (SELECT fac_tracking_datum
FROM fac_tracking
WHERE fac_tracking_refkey = o.mld_opdr_key
AND fac_srtnotificatie_key = 58) -- afgemeld
- (SELECT fac_tracking_datum
FROM fac_tracking
WHERE fac_tracking_refkey = o.mld_opdr_key
AND fac_srtnotificatie_key = 65)) -- geaccepteerd
* 24
* 60)
tijd,
(SELECT COUNT ( * )
FROM fac_tracking t
WHERE fac_tracking_oms LIKE '%Stopgezet%'
AND t.fac_tracking_refkey = o.mld_opdr_key)
stop
FROM mld_opdr o, asle_v_schoonmaak s
WHERE o.mld_opdr_key = s.mld_opdr_key;
CREATE OR REPLACE PACKAGE ASLE
AS
@@ -993,7 +995,8 @@ AS
CURSOR c_find_room (
c_last_clean DATE,
c_zone VARCHAR2,
c_mode VARCHAR2) -- Match, DontCare
c_mode VARCHAR2, -- Match, DontCare
c_tolerantie_plus NUMBER) -- Extra tolerantie als ik van verdieping moet wisselen.
IS
SELECT *
FROM (SELECT s.*,
@@ -1008,7 +1011,7 @@ AS
FROM asle_v_schoonmaak s
WHERE s.alg_locatie_key = p_locatie_key
AND TRUNC (mld_melding_einddatum) = p_date
AND ( (s.zone = c_zone AND s.mld_melding_einddatum <= (c_last_clean + (p_tolerantie / (24*60))))
AND ( (s.zone = c_zone AND s.mld_melding_einddatum <= (c_last_clean + ((p_tolerantie + c_tolerantie_plus)/ (24*60))))
OR c_mode = 'DontCare') -- als er geen aansluitende kamer gevonden kan worden is een zoneovergang ook niet meer belangrijk.
AND s.mld_opdr_key IS NULL)
ORDER BY mld_melding_einddatum, costs, aantal;
@@ -1018,18 +1021,24 @@ AS
c_last_zone VARCHAR2,
c_mode NUMBER)
IS
SELECT zone, number_rooms, costs
FROM ( SELECT zone,
ASLE.number_seq_rooms (s.zone,
c_last_clean,
p_locatie_key,
c_efficiency,
p_tolerantie)
number_rooms,
ASLE.calc_zone_costs (p_locatie_key,
c_last_zone,
s.zone)
costs
SELECT zone,
ASLE.number_seq_rooms (zone,
c_last_clean,
p_locatie_key,
c_efficiency,
p_tolerantie)
number_rooms,
ASLE.calc_zone_costs (p_locatie_key,
c_last_zone,
zone)
costs,
(SELECT count(*)
FROM asle_imp_werkschema w
WHERE alg_locatie_key = p_locatie_key
AND TRUNC (start_inzet) = p_date
AND COALESCE (num_clean, 0) < min_num_clean
AND w.last_zone = zone) aantal_mdw
FROM ( SELECT zone
FROM asle_v_schoonmaak s
WHERE s.alg_locatie_key = p_locatie_key
AND TRUNC(mld_melding_einddatum) = p_date
@@ -1039,12 +1048,12 @@ AS
FROM asle_imp_werkschema
WHERE alg_locatie_key = p_locatie_key
AND TRUNC (start_inzet) = p_date
AND COALESCE (num_clean, 0) <=
AND COALESCE (num_clean, 0) <
min_num_clean) -- nog niet klaar met werken
)
OR c_mode = 1) -- ook als er al iemand werkt.
GROUP BY s.zone)
ORDER BY number_rooms DESC, costs;
ORDER BY number_rooms / (1+aantal_mdw) DESC, costs;
v_efficiency NUMBER; -- efficientie van de medewekers. Kenmerk bij persoon???????
@@ -1059,7 +1068,12 @@ AS
v_schoonmaaktijd NUMBER;
v_start_clean DATE;
v_rooms_tb_cleaned NUMBER; -- aantal ruimten dat door deze medewerker nog schoongemaakt moet worden.
v_rooms_that_can_be_cleaned NUMBER; -- aantal ruimten dat in die zone schoongemaakt kan worden
v_count NUMBER;
v_start_inzet DATE;
v_voornaam prs_perslid.prs_perslid_voornaam%TYPE;
v_aantal_schoonmakers NUMBER;
v_pauze NUMBER;
BEGIN
v_found_mld := NULL;
@@ -1076,14 +1090,16 @@ AS
END;
BEGIN
SELECT voorkeurzone, last_zone, last_clean, min_num_clean - num_clean
INTO v_voorkeurzone, v_last_zone, v_last_clean, v_rooms_tb_cleaned
FROM asle_imp_werkschema
WHERE prs_perslid_key = p_perslid_key
AND alg_locatie_key = p_locatie_key
AND TRUNC (start_inzet) = p_date;
SELECT voorkeurzone, last_zone, last_clean, min_num_clean - num_clean, start_inzet, prs_perslid_voornaam
INTO v_voorkeurzone, v_last_zone, v_last_clean, v_rooms_tb_cleaned, v_start_inzet, v_voornaam
FROM asle_imp_werkschema w, prs_perslid p
WHERE p.prs_perslid_key = p_perslid_key
AND w.prs_perslid_key = p_perslid_key
AND w.alg_locatie_key = p_locatie_key
AND TRUNC (w.start_inzet) = p_date;
DBMS_OUTPUT.put_line( 'v_voorkeurzone, v_last_zone, last_clean:'
DBMS_OUTPUT.put_line( '(' || p_perslid_key || ' ' || v_voornaam || ')'
|| ' v_voorkeurzone, v_last_zone, last_clean:'
|| v_voorkeurzone
|| ','
|| v_last_zone
@@ -1097,7 +1113,36 @@ AS
RETURN -1;
END;
FOR rec IN c_find_room (v_last_clean, v_voorkeurzone, 'Match')
v_pauze := 0;
-- Om 12 uur is er lunchpauze, voor de mensen die voor xxx uur beginnen ???
IF TO_NUMBER (TO_CHAR (v_last_clean, 'hh24')) < 12 -- start voor 12 uur
AND TO_NUMBER (TO_CHAR (v_last_clean + 1/48, 'hh24')) >= 12 -- einde na 12 uur
THEN
v_pauze := 30;
END IF;
-- *** Als mensen eerder dan 6 uur beginnen krijgen ze verplicht een pauze van een kwartier
-- om 10 uur.
IF v_start_inzet <= p_date + 0.25 -- 6 uur
AND v_last_clean < p_date + 10/24 -- lastclean < 10 uur
AND v_last_clean + (1/96) > p_date + 10/24 -- lastclean + 15 minuten groter dan 10 uur
THEN
v_pauze := 15;
END IF;
IF v_pauze > 0
THEN
UPDATE asle_imp_werkschema
SET last_clean = last_clean + v_pauze/(24*60)
WHERE prs_perslid_key = p_perslid_key
AND alg_locatie_key = p_locatie_key
AND TRUNC (start_inzet) = p_date;
DBMS_OUTPUT.put_line ( '(' || p_perslid_key || ' ' || v_voornaam || ') '
|| v_pauze || ' minuten pauze toegevoegd voor: ' || p_perslid_key);
RETURN NULL;
END IF;
FOR rec IN c_find_room (v_last_clean, v_voorkeurzone, 'Match', 0)
LOOP
BEGIN
v_found_mld := rec.mld_melding_key;
@@ -1106,11 +1151,11 @@ AS
END;
END LOOP;
DBMS_OUTPUT.put_line ('melding in voorkeurzone:' || v_found_mld);
DBMS_OUTPUT.put_line ('(' || p_perslid_key || ' ' || v_voornaam || ') melding in voorkeurzone:' || v_found_mld);
IF v_found_mld IS NULL
THEN
FOR rec IN c_find_room (v_last_clean, v_last_zone, 'Match')
FOR rec IN c_find_room (v_last_clean, v_last_zone, 'Match', 0)
LOOP
BEGIN
v_found_mld := rec.mld_melding_key;
@@ -1120,11 +1165,13 @@ AS
END LOOP;
END IF;
DBMS_OUTPUT.put_line ('melding in last_zone:' || v_found_mld);
DBMS_OUTPUT.put_line ('(' || p_perslid_key || ' ' || v_voornaam || ') melding in last_zone:' || v_found_mld);
IF v_found_mld IS NULL
THEN
v_zone := NULL;
v_rooms_that_can_be_cleaned := 0;
v_aantal_schoonmakers := 0;
FOR rec IN c_find_zone (v_last_clean,
v_efficiency,
@@ -1132,22 +1179,18 @@ AS
0) -- zonder dat er iemand in de zone werkt
LOOP
BEGIN
IF rec.number_rooms >= v_rooms_tb_cleaned
IF rec.number_rooms <> 0
THEN
v_zone := rec.zone;
ELSE
IF v_zone IS NULL AND rec.number_rooms <> 0
THEN
v_zone := rec.zone;
END IF;
EXIT;
v_rooms_that_can_be_cleaned := rec.number_rooms;
END IF;
EXIT;
END;
END LOOP;
DBMS_OUTPUT.put_line ('zone zonder schoonmaker:' || v_zone);
DBMS_OUTPUT.put_line ('(' || p_perslid_key || ' ' || v_voornaam || ') zone zonder schoonmaker:' || v_zone || ' aantal kamers: ' || v_rooms_that_can_be_cleaned);
IF v_zone IS NULL
THEN
@@ -1160,6 +1203,8 @@ AS
IF rec.number_rooms > 0
THEN
v_zone := rec.zone;
v_rooms_that_can_be_cleaned := rec.number_rooms;
v_aantal_schoonmakers := rec.aantal_mdw;
EXIT;
END IF;
END;
@@ -1167,19 +1212,38 @@ AS
IF v_zone IS NULL
THEN
DBMS_OUTPUT.put_line ('*** geen schoonmaakactie gevonden');
DBMS_OUTPUT.put_line ('(' || p_perslid_key || ' ' || v_voornaam || ') *** geen schoonmaakactie gevonden');
-- log
END IF;
END IF;
DBMS_OUTPUT.put_line ('zone met schoonmaker:' || v_zone);
DBMS_OUTPUT.put_line ('(' || p_perslid_key || ' ' || v_voornaam || ') zone met schoonmaker:' || v_zone || ' aantal kamers: ' || v_rooms_that_can_be_cleaned || ' Medew: ' || v_aantal_schoonmakers);
-- *** als nu blijkt dat we voor <20><>n kamer een zonewisseling over gaan, dan toch maar even proberen
-- of ik op mijn eigen zone met een langere (leegloop) tijd nog iets kan schoonmaken
-- dit wordt pas interessant na half tien
IF v_rooms_that_can_be_cleaned <2 AND to_number(to_char(v_last_clean, 'hh24mi')) > 930
THEN
FOR rec IN c_find_room (v_last_clean, v_last_zone, 'Match', 15)
LOOP
BEGIN
v_found_mld := rec.mld_melding_key;
v_zone := v_last_zone;
DBMS_OUTPUT.put_line ('(' || p_perslid_key || ' ' || v_voornaam || ') *** toch schoonmaakactie gevonden in zone: ' || v_zone);
EXIT;
END;
END LOOP;
END IF;
IF v_found_mld IS NULL
THEN -- *** check
-- geen zone gevonden waar gewerkt kan worden. Dit betekent dat we op zoek gaan naar de
-- eerst mogelijke melding waarbij we de leegloop moeten accepteren.
IF v_zone IS NULL
THEN
v_count := 0;
FOR rec IN c_find_room (v_last_clean, v_last_zone, 'DontCare')
FOR rec IN c_find_room (v_last_clean, v_last_zone, 'DontCare', 0)
LOOP
BEGIN
v_found_mld := rec.mld_melding_key;
@@ -1199,7 +1263,7 @@ AS
END;
END LOOP;
ELSE
FOR rec IN c_find_room (v_last_clean, COALESCE(v_zone, v_last_zone), 'Match')
FOR rec IN c_find_room (v_last_clean, COALESCE(v_zone, v_last_zone), 'Match', 0)
LOOP
BEGIN
v_found_mld := rec.mld_melding_key;
@@ -1207,9 +1271,13 @@ AS
END;
END LOOP;
END IF;
END IF; -- *** end loop
END IF;
DBMS_OUTPUT.put_line ('volgende schoonmaakmelding:' || v_found_mld);
DBMS_OUTPUT.put_line ('(' || p_perslid_key || ' ' || v_voornaam || ') volgende schoonmaakmelding:' || v_found_mld);
-- maak schoonmaakopdracht aan
IF v_found_mld IS NOT NULL
@@ -1229,16 +1297,16 @@ AS
END IF;
-- *** v_start_clean op de begin van de beschikbaarheid zetten als ik zit te wachten.
/*IF v_melding_einddatum > v_start_clean
THEN
v_start_clean := v_melding_einddatum;
ELSE
v_start_clean := v_last_clean;
END IF; */ -- ***
v_start_clean := v_last_clean;
v_last_clean := v_last_clean + (v_schoonmaaktijd * v_efficiency) / (24 * 60);
IF TO_NUMBER (TO_CHAR (v_start_clean, 'hh24')) < 12 -- start voor 12 uur
AND TO_NUMBER (TO_CHAR (v_last_clean, 'hh24')) >= 12 -- einde na 12 uur
THEN
v_start_clean := v_start_clean + 0.5 / (24); -- lunchpauze toevoegen.
v_last_clean := v_last_clean + 0.5 / (24); -- lunchpauze toevoegen.
END IF;
UPDATE asle_imp_werkschema
SET last_clean = v_last_clean,
last_zone = v_zone,
@@ -1764,6 +1832,8 @@ BEGIN
v_groep_naam := REPLACE(v_groep_naam, 'DELTA ', 'DL');
END IF;
-- Kijk of het een werkdag is of het weekend
-- afhankelijk daarvan gebruiken we de weekend eigen tabel key 62 of de werkdagen eigen tabel key = 61
SELECT DECODE( to_char(v_timestamp, 'D'), 1,62,7,62,61)
INTO v_usrtab_key
FROM DUAL;
@@ -1798,41 +1868,30 @@ BEGIN
END IF;
v_errormsg := 'Bepalen type schoonmaak';
IF v_schoonmaak_status = 'Clean' AND p_offset = 0
THEN
CASE v_ruimte_status
WHEN 'Blocked' THEN v_type_schoonmaak := 'Blocked';
CASE v_ruimte_status
WHEN 'Blocked' THEN v_type_schoonmaak := 'Blocked';
WHEN 'Departure' THEN v_type_schoonmaak := 'Checkout';
WHEN 'Free' THEN
IF v_schoonmaak_status = 'Dirty' AND p_offset = 0
THEN
v_type_schoonmaak := 'Checkout';
ELSE
v_type_schoonmaak := NULL;
END CASE;
ELSIF v_schoonmaak_status = 'Pending to check'
THEN
v_type_schoonmaak := 'Check';
ELSE
CASE v_ruimte_status
WHEN 'Departure' THEN v_type_schoonmaak := 'Checkout';
WHEN 'Free' THEN
IF v_schoonmaak_status = 'Dirty' AND p_offset = 0
THEN
v_type_schoonmaak := 'Checkout';
ELSE
v_type_schoonmaak := NULL;
END IF;
WHEN 'Blocked' THEN v_type_schoonmaak := 'Blocked';
WHEN 'Stay' THEN
IF v_type_gast = 'Crew'
THEN
v_type_schoonmaak := 'DND';
ELSIF (TRUNC(SYSDATE + p_offset) - TRUNC(v_aankomst_datum)) MOD 2 = 0
THEN
v_type_schoonmaak := 'Stay LC';
ELSE
v_type_schoonmaak := 'Stay NLC';
END IF;
END IF;
WHEN 'Stay' THEN
IF v_type_gast = 'Crew'
THEN
v_type_schoonmaak := 'DND';
ELSIF (TRUNC(SYSDATE + p_offset) - TRUNC(v_aankomst_datum)) MOD 2 = 0
THEN
v_type_schoonmaak := 'Stay LC';
ELSE
v_type_schoonmaak := 'Onbekend';
END CASE;
END IF;
v_type_schoonmaak := 'Stay NLC';
END IF;
ELSE
v_type_schoonmaak := NULL;
END CASE;
v_errormsg := 'Bepalen verw start schoonmaak';
IF v_vertrek_datum_txt IS NULL THEN
@@ -1842,13 +1901,13 @@ BEGIN
IF v_schoonmaak_status = 'Clean' AND v_ruimte_status = 'Free'
THEN
v_verw_start_schoonmaak := TRUNC(SYSDATE + p_offset);
ELSIF v_checkout_status = 'checked out'
ELSIF v_checkout_status = 'checked out' -- nog niet in gebruik
THEN
v_verw_start_schoonmaak := SYSDATE;
ELSIF v_verw_checkout IS NOT NULL
THEN
v_verw_start_schoonmaak := v_verw_checkout;
ELSIF v_late_checkout = 1 AND v_type_schoonmaak = 'Checkout'
ELSIF v_late_checkout = 1 AND v_type_schoonmaak = 'Checkout' -- nog niet in gebruik
THEN
v_verw_start_schoonmaak := to_date (v_vertrek_datum_txt || ' ' || '17:00', 'dd-mm-yyyy hh24:mi');
ELSE
@@ -2096,6 +2155,7 @@ BEGIN
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = 21 -- schoonmaak
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND mld_alg_onroerendgoed_keys = rec.alg_ruimte_key
@@ -2273,7 +2333,6 @@ BEGIN
BEGIN
FOR rec IN c_opdr (v_locatie_key)
LOOP
DBMS_OUTPUT.put_line ('Start');
v_opdr_key :=
ASLE.find_next_room (p_import_key,
rec.alg_locatie_key,
@@ -2281,15 +2340,14 @@ BEGIN
rec.prs_perslid_key,
v_tolerantie);
IF v_opdr_key <> -1
IF v_opdr_key <> -1 OR v_opdr_key IS NULL
THEN
v_room_planned := 1;
END IF;
DBMS_OUTPUT.put_line (v_opdr_key);
-- DBMS_OUTPUT.put_line (v_opdr_key);
EXIT;
END LOOP;
-- Verdeel de nog overgebleven opdrachten
END;