Merge DB46c changes

svn path=/Database/trunk/; revision=62465
This commit is contained in:
Jos Groot Lipman
2023-11-06 10:50:39 +00:00
parent ee126d390e
commit a5331d4cbd
13 changed files with 416 additions and 175 deletions

View File

@@ -76,169 +76,276 @@ AS
vervaldatum,
ins_deelsrtcontrole_key)
AS
( -- 1a) Eerste deel bepaald de laatste inspectie (geplande(0), gestarte(2), afgemeld(5) of verwerkt(6)).
SELECT di.deel_key ins_deel_key,
xcp.ins_srtcontrole_key,
di.ins_deelsrtcontrole_datum,
xcp.ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_periode,
COALESCE(di.ins_deelsrtcontrole_plandatum,
CASE
WHEN di.ins_deelsrtcontrole_status IN (2, 3)
AND di.ins_deelsrtcontrole_datum_org IS NULL
THEN -- Gestart(2) en de allereerste inspectie (ins_deelsrtcontrole_datum_org is NULL).
-- Periodieke taken:
-- De startdatum is MAX(startdatum, aanmaakdatum/registratiedatum) en heeft altijd een waarde (ins_deel_aanmaak is altijd gevuld).
-- Er is nog geen inspectie geweest en de startdatum is ingevuld of de registratiedatum ligt in de toekomst.
-- Er geldt dan het volgende:
-- Voor Controle(1): Eerste inspectie tonen op MAX(startdatum, registratiedatum) van het object.
-- Voor Vervanging(2) of Certificering(3):
-- a) Als de startdatum het verst ligt: Eerste inspectie tonen op de startdatum.
-- b) Als registratiedatum het verst in de toekomst ligt: Eerste inspectie tonen op 1 periode verder dan de registratiedatum.
-- De aanmaakdatum/Registratiedatum is altijd ingevuld en als er al een inspectie is geweest,
-- zijn de startdatum en registratiedatum niet meer van belang.
CASE
-- Er geldt dat (ctr_ismjob = 0), dus de eerste when is toch niet geldig.
--WHEN di.ctr_ismjob = 1
--THEN
-- ins_deelsrtcontrole_freezedate
WHEN xcp.ctr_controle_type = 1
THEN -- Controle(1).
(SELECT *
FROM (
-- 1a) Dit deel bepaald de laatste inspectie (geplande(0), gestarte(2), afgemeld(5) of verwerkt(6)),
-- inclusief de allereerste inspectie die nog niet gereed gemeld is.
SELECT di.deel_key ins_deel_key,
xcp.ins_srtcontrole_key,
di.ins_deelsrtcontrole_datum,
xcp.ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_periode,
COALESCE(di.ins_deelsrtcontrole_plandatum,
CASE
WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
THEN
xcp.ins_srtcontroledl_xcp_startdat
ELSE
xcp.ins_deel_aanmaak
END
ELSE -- Vervanging(2), Certificering(3).
CASE
WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
THEN
xcp.ins_srtcontroledl_xcp_startdat
ELSE
fac.nextcyclusdate(
-- er is nog geen inspectie geweest, dus de laatste inspectie is null
COALESCE(
NULL,
GREATEST(
COALESCE(xcp.ins_srtcontroledl_xcp_startdat,
xcp.ins_deel_aanmaak),
COALESCE(xcp.ins_deel_aanmaak,
xcp.ins_srtcontroledl_xcp_startdat))),
xcp.ins_srtcontrole_mode,
xcp.ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_periode,
xcp.ins_srtcontrole_bits,
1, -- steps. De eerste inspectie is nog niet geweest dus 1 periode verder dan startdatum/aanmaakdatum.
0) -- Er geldt dat (ctr_ismjob = 0)
END
END
WHEN di.ins_deelsrtcontrole_status IN (2, 3)
AND di.ins_deelsrtcontrole_datum_org IS NOT NULL
THEN -- Gestart(2) en niet de allereerste inspectie.
di.ins_deelsrtcontrole_datum_org
ELSE -- Status is Gereed gemeld(5) of Voltooid(6).
CASE xcp.ins_srtcontrole_mode
WHEN 0
THEN -- Moment mode: ga uit van de originele berekende inspectiedatum.
di.ins_deelsrtcontrole_datum_org
ELSE -- Interval mode: ga uit van de werkelijke inspectiedatum.
di.ins_deelsrtcontrole_datum
END
END) volgendedatum,
discipline,
soort,
groep,
soortcode,
omschrijving,
opmerking,
locatie_omschrijving,
gebouw,
ruimtenr,
aantal,
srtcontrole_omschrijving,
ctr_discipline_omschrijving taaksoort,
ins_deelsrtcontrole_datum_org,
controlemode_omschrijving,
ins_deelsrtcontrole_opmerking,
perslid,
ins_deelsrtcontrole_plandatum,
di.ins_deelsrtcontrole_status,
COALESCE(
(SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key =
(SELECT di2.ins_controlemode_key
FROM ins_deelsrtcontrole di2
WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)),
-1) ins_controlemode_success,
CASE di.ins_deelsrtcontrole_status
WHEN 0
THEN
lcl.L('lcl_ins_controle_pending')
WHEN 2
THEN
lcl.L('lcl_ins_controle_gestart')
WHEN 3
THEN
lcl.L('lcl_ins_controle_ter_uitvoer')
WHEN 5
THEN
CASE
WHEN ((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key =
(SELECT di2.ins_controlemode_key
FROM ins_deelsrtcontrole di2
WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) =
1)
THEN
lcl.L('lcl_ins_controlemode_approved')
ELSE
lcl.L('lcl_ins_controlemode_deprecated')
END
WHEN 6
THEN
CASE
WHEN ((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key =
(SELECT ins_controlemode_key
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) =
1)
THEN
lcl.L('lcl_ins_controlemode_approved')
ELSE
lcl.L('lcl_ins_controlemode_deprecated')
END
END deelsrtcontrole_status,
xcp.ins_srtcontrole_eind vervaldatum,
di.ins_deelsrtcontrole_key
FROM ins_v_udr_deelinspect di,
ins_v_defined_inspect_xcp xcp,
ctr_disc_params dp
WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key
AND di.deel_key = xcp.ins_deel_key
AND xcp.ctr_discipline_key = dp.ctr_ins_discipline_key
AND dp.ctr_disc_params_ismjob = 0
AND xcp.ins_srtcontrole_eenheid > 2
AND xcp.ins_scenario_key = 1
AND xcp.ins_srtcontrole_periode > 0
AND di.ins_deelsrtcontrole_key = (SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole id2
WHERE id2.ins_deel_key = di.deel_key
AND id2.ins_srtcontrole_key = di.ins_srtcontrole_key
AND id2.ins_scenario_key = 1)
AND COALESCE(di.ins_deelsrtcontrole_datum,
di.ins_deelsrtcontrole_plandatum,
di.ins_deelsrtcontrole_datum_org)
IS NOT NULL
WHEN di.ins_deelsrtcontrole_status IN (2, 3)
AND di.ins_deelsrtcontrole_datum_org IS NULL
THEN -- Gestart(2) en de allereerste inspectie (ins_deelsrtcontrole_datum_org is NULL).
-- Periodieke taken:
-- De startdatum is MAX(startdatum, aanmaakdatum/registratiedatum) en heeft altijd een waarde (ins_deel_aanmaak is altijd gevuld).
-- Er is nog geen inspectie geweest en de startdatum is ingevuld of de registratiedatum ligt in de toekomst.
-- Er geldt dan het volgende:
-- Voor Controle(1): Eerste inspectie tonen op MAX(startdatum, registratiedatum) van het object.
-- Voor Vervanging(2) of Certificering(3):
-- a) Als de startdatum het verst ligt: Eerste inspectie tonen op de startdatum.
-- b) Als registratiedatum het verst in de toekomst ligt: Eerste inspectie tonen op 1 periode verder dan de registratiedatum.
-- De aanmaakdatum/Registratiedatum is altijd ingevuld en als er al een inspectie is geweest,
-- zijn de startdatum en registratiedatum niet meer van belang.
CASE
-- Er geldt dat (ctr_ismjob = 0), dus de eerste when is toch niet geldig.
--WHEN di.ctr_ismjob = 1
--THEN
-- ins_deelsrtcontrole_freezedate
WHEN xcp.ctr_controle_type = 1
THEN -- Controle(1).
CASE
WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
THEN
xcp.ins_srtcontroledl_xcp_startdat
ELSE
xcp.ins_deel_aanmaak
END
ELSE -- Vervanging(2), Certificering(3).
CASE
WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
THEN
xcp.ins_srtcontroledl_xcp_startdat
ELSE
fac.nextcyclusdate(
-- er is nog geen inspectie geweest, dus de laatste inspectie is null
COALESCE(
NULL,
GREATEST(
COALESCE(xcp.ins_srtcontroledl_xcp_startdat,
xcp.ins_deel_aanmaak),
COALESCE(xcp.ins_deel_aanmaak,
xcp.ins_srtcontroledl_xcp_startdat))),
xcp.ins_srtcontrole_mode,
xcp.ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_periode,
xcp.ins_srtcontrole_bits,
1, -- steps. De eerste inspectie is nog niet geweest dus 1 periode verder dan startdatum/aanmaakdatum.
0) -- Er geldt dat (ctr_ismjob = 0)
END
END
WHEN di.ins_deelsrtcontrole_status IN (2, 3)
AND di.ins_deelsrtcontrole_datum_org IS NOT NULL
THEN -- Gestart(2) en niet de allereerste inspectie.
di.ins_deelsrtcontrole_datum_org
ELSE -- Status is Gereed gemeld(5) of Voltooid(6).
CASE xcp.ins_srtcontrole_mode
WHEN 0
THEN -- Moment mode: ga uit van de originele berekende inspectiedatum.
di.ins_deelsrtcontrole_datum_org
ELSE -- Interval mode: ga uit van de werkelijke inspectiedatum.
di.ins_deelsrtcontrole_datum
END
END) volgendedatum,
discipline,
soort,
groep,
soortcode,
omschrijving,
opmerking,
locatie_omschrijving,
gebouw,
ruimtenr,
aantal,
srtcontrole_omschrijving,
ctr_discipline_omschrijving taaksoort,
ins_deelsrtcontrole_datum_org,
controlemode_omschrijving,
ins_deelsrtcontrole_opmerking,
perslid,
ins_deelsrtcontrole_plandatum,
di.ins_deelsrtcontrole_status,
COALESCE(
(SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key =
(SELECT di2.ins_controlemode_key
FROM ins_deelsrtcontrole di2
WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)),
-1) ins_controlemode_success,
CASE di.ins_deelsrtcontrole_status
WHEN 0
THEN
lcl.L('lcl_ins_controle_pending')
WHEN 2
THEN
lcl.L('lcl_ins_controle_gestart')
WHEN 3
THEN
lcl.L('lcl_ins_controle_ter_uitvoer')
WHEN 5
THEN
CASE
WHEN ((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key =
(SELECT di2.ins_controlemode_key
FROM ins_deelsrtcontrole di2
WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) =
1)
THEN
lcl.L('lcl_ins_controlemode_approved')
ELSE
lcl.L('lcl_ins_controlemode_deprecated')
END
WHEN 6
THEN
CASE
WHEN ((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key =
(SELECT ins_controlemode_key
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) =
1)
THEN
lcl.L('lcl_ins_controlemode_approved')
ELSE
lcl.L('lcl_ins_controlemode_deprecated')
END
END deelsrtcontrole_status,
xcp.ins_srtcontrole_eind vervaldatum,
di.ins_deelsrtcontrole_key
FROM ins_v_udr_deelinspect di,
ins_v_defined_inspect_xcp xcp,
ctr_disc_params dp
WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key
AND di.deel_key = xcp.ins_deel_key
AND xcp.ctr_discipline_key = dp.ctr_ins_discipline_key
AND dp.ctr_disc_params_ismjob = 0
AND xcp.ins_srtcontrole_eenheid > 2
AND xcp.ins_scenario_key = 1
AND xcp.ins_srtcontrole_periode > 0
AND di.ins_deelsrtcontrole_key = (SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole id2
WHERE id2.ins_deel_key = di.deel_key
AND id2.ins_srtcontrole_key = di.ins_srtcontrole_key
AND id2.ins_scenario_key = 1)
UNION ALL
-- 1b) Dit deel bepaald de allereerste inspectie van een taak die nog niet ingepland of gestart is. Er is dus nog geen ins_deelsrtcontrole record van
SELECT d.deel_key ins_deel_key,
xcp.ins_srtcontrole_key,
NULL,
xcp.ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_periode,
-- Gestart(2) en de allereerste inspectie (ins_deelsrtcontrole_datum_org is NULL).
-- Periodieke taken:
-- De startdatum is MAX(startdatum, aanmaakdatum/registratiedatum) en heeft altijd een waarde (ins_deel_aanmaak is altijd gevuld).
-- Er is nog geen inspectie geweest en de startdatum is ingevuld of de registratiedatum ligt in de toekomst.
-- Er geldt dan het volgende:
-- Voor Controle(1): Eerste inspectie tonen op MAX(startdatum, registratiedatum) van het object.
-- Voor Vervanging(2) of Certificering(3):
-- a) Als de startdatum het verst ligt: Eerste inspectie tonen op de startdatum.
-- b) Als registratiedatum het verst in de toekomst ligt: Eerste inspectie tonen op 1 periode verder dan de registratiedatum.
-- De aanmaakdatum/Registratiedatum is altijd ingevuld en als er al een inspectie is geweest,
-- zijn de startdatum en registratiedatum niet meer van belang.
CASE
-- Er geldt dat (ctr_ismjob = 0), dus de eerste when is toch niet geldig.
--WHEN xcp.ctr_ismjob = 1
--THEN
-- xcp.ins_deelsrtcontrole_freezedate
WHEN xcp.ctr_controle_type = 1
THEN -- Controle(1).
CASE
WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
THEN
xcp.ins_srtcontroledl_xcp_startdat
ELSE
xcp.ins_deel_aanmaak
END
ELSE -- Vervanging(2), Certificering(3).
CASE
WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
THEN
xcp.ins_srtcontroledl_xcp_startdat
ELSE
fac.nextcyclusdate(
-- er is nog geen inspectie geweest, dus de laatste inspectie is null
COALESCE(
NULL,
GREATEST(
COALESCE(xcp.ins_srtcontroledl_xcp_startdat,
xcp.ins_deel_aanmaak),
COALESCE(xcp.ins_deel_aanmaak,
xcp.ins_srtcontroledl_xcp_startdat))),
xcp.ins_srtcontrole_mode,
xcp.ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_periode,
xcp.ins_srtcontrole_bits,
1, -- steps. De eerste inspectie is nog niet geweest dus 1 periode verder dan startdatum/aanmaakdatum.
0) -- Er geldt dat (ctr_ismjob = 0)
END
END
volgendedatum,
d.discipline,
d.soort,
d.groep,
d.soortcode,
d.omschrijving,
d.opmerking,
d.locatie_omschrijving,
d.gebouw,
d.ruimtenr,
d.aantal,
(SELECT isc.ins_srtcontrole_omschrijving
FROM ins_srtcontrole isc
WHERE isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key) srtcontrole_omschrijving,
(SELECT cd.ins_discipline_omschrijving
FROM ctr_discipline cd,
ins_srtcontrole isc
WHERE isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key
AND isc.ctr_discipline_key = cd.ins_discipline_key) taaksoort,
ins_deelsrtcontrole_datum_org,
NULL controlemode_omschrijving,
ins_deelsrtcontrole_opmerking,
NULL perslid,
ins_deelsrtcontrole_plandatum,
-1 ins_deelsrtcontrole_status,
-1 ins_controlemode_success,
lcl.L('lcl_ins_controlemode_notplaned') deelsrtcontrole_status,
xcp.ins_srtcontrole_eind vervaldatum,
NULL ins_deelsrtcontrole_key
FROM ins_v_udr_deel d,
ins_deelsrtcontrole idsc,
ins_v_defined_inspect_xcp xcp,
ctr_disc_params dp
WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)
AND xcp.ins_deel_key = idsc.ins_deel_key(+)
AND xcp.ins_scenario_key = idsc.ins_scenario_key(+)
AND xcp.ins_deel_key = d.deel_key
AND xcp.ctr_discipline_key = dp.ctr_ins_discipline_key
AND dp.ctr_disc_params_ismjob = 0
AND xcp.ins_srtcontrole_eenheid > 2
AND xcp.ins_scenario_key = 1
AND idsc.ins_deel_key IS NULL
AND idsc.ins_srtcontrole_key IS NULL
AND xcp.ins_srtcontrole_periode > 0
AND (idsc.ins_deelsrtcontrole_key IS NULL
OR idsc.ins_deelsrtcontrole_key =
(SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole id2
WHERE id2.ins_deel_key = d.deel_key
AND id2.ins_srtcontrole_key = xcp.ins_srtcontrole_key
AND id2.ins_scenario_key = 1)))
UNION ALL
-- 1b) Tweede deel bepaalt/berekent de toekomstige inspecties van dit jaar en volgend jaar.
-- 1c) Dit deel bepaalt/berekent de toekomstige inspecties van dit jaar en volgend jaar.
SELECT m.ins_deel_key,
m.ins_srtcontrole_key,
NULL ins_deelsrtcontrole_datum,
@@ -284,6 +391,7 @@ AS
WHERE (ig.vervaldatum IS NULL
OR ig.vervaldatum > ig.volgendedatum)
AND ig.volgendedatum BETWEEN TRUNC(ADD_MONTHS(SYSDATE, -12), 'YYYY') AND TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY')
AND TRUNC(ig.volgendedatum, 'YYYY') < TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY') -- 1 januari in het jaar dat 2 jaar verder ligt niet meetellen.
UNION ALL
-- 2) Inspecties die vorig jaar en dit jaar zijn uitgevoerd, uitgezonderd de laatste.
SELECT di.discipline,

View File

@@ -46,8 +46,6 @@ AS
WHERE res_ruimte_opstel_verwijder IS NULL) ro2
WHERE UPPER(r.res_ruimte_extern_id) = UPPER(p_room_id)
AND r.res_ruimte_verwijder IS NULL
AND (r.res_ruimte_startdatum IS NULL OR r.res_ruimte_startdatum <= SYSDATE)
AND (r.res_ruimte_vervaldatum IS NULL OR r.res_ruimte_vervaldatum > SYSDATE)
AND ro1.res_ruimte_key(+) = r.res_ruimte_key
AND ro2.res_ruimte_key = r.res_ruimte_key
AND ro2.res_ruimte_opstel_key =

View File

@@ -514,8 +514,9 @@ FAC_LCL('lcl_about', 'Licentieinformatie', 'License information')
FAC_LCL('lcl_fac_usage_frame', 'Gebruik', 'Usage')
FAC_LCL('lcl_key_users', 'Key-users', 'Key users')
FAC_LCL('lcl_fe_users', 'Frontend-users', 'Frontend users')
FAC_LCL('lcl_sys_users', 'System-users', 'System users')
FAC_LCL('lcl_sys_users', 'Apparaat-users', 'Device users')
FAC_LCL('lcl_passive_users', 'Passieve users', 'Passive users')
FAC_LCL('lcl_api_users', 'API-users', 'API-users')
FAC_LCL('lcl_admin_users', 'Beheer-users', 'Admin users')
FAC_LCL('lcl_usrs_licensed', 'Aantal in licentie', 'Number licensed')
FAC_LCL('lcl_usrs_actual', 'Aantal in gebruik', 'Number in use')
@@ -821,7 +822,7 @@ FAC_LCL('lcl_mld_is_mldafr', 'Afmelding is definitief gemaakt', 'Closing is fina
FAC_LCL('lcl_mld_is_mldver', 'Administratief verwerkt', 'Accounted (processed)')
FAC_LCL('lcl_mld_is_mldrej', 'Melding is afgewezen', 'Call is rejected')
FAC_LCL('lcl_mld_is_mldbwd', 'In behandeling bij de frontoffice', 'Assigned to front office')
FAC_LCL('lcl_mld_is_mldnot', 'Notitie is toegevoegd', 'Note has been added')
FAC_LCL('lcl_mld_is_mldnot', 'Notitie is genotificeerd', 'Note has been notified')
FAC_LCL('lcl_mld_is_mlda2b', 'Actie is bij backoffice gezet', 'Action assigned to back office')
FAC_LCL('lcl_mld_is_mlda2m', 'Actie is bij aanvrager gezet', 'Action assigned to issuer')
FAC_LCL('lcl_mld_note_detail', 'Detailniveau', 'Detail level')
@@ -1080,6 +1081,7 @@ FAC_LCL('lcl_ord_is_ordook', 'Offerte geaccepteerd', 'Offer accepted')
FAC_LCL('lcl_ord_is_ordono', 'Offerte afgewezen', 'Offer rejected')
FAC_LCL('lcl_ord_is_orda2b', 'Actie is bij backoffice gezet', 'Action assigned to back office')
FAC_LCL('lcl_ord_is_orda2u', 'Actie is bij uitvoerder gezet', 'Action assigned to contractor')
FAC_LCL('lcl_ord_is_ordnob', 'Notitie is genotificeerd', 'Note has been notified')
FAC_LCL('lcl_ord_is_updatedbysoap', 'Opdracht is gewijzigd door extern systeem', 'Order has been updated by an external system')
FAC_LCL('lcl_ord_is_upd_material', 'Opdrachtregel {0} is aangepast.', 'Order line {0} is adjusted.')
FAC_LCL('lcl_ord_notification_sent_to', 'Notificatie ''{0}'' verstuurd aan {1}', 'Notification ''{0}'' sent to {1}')
@@ -1374,6 +1376,7 @@ FAC_LCL('lcl_mjb_status_mjob', 'Taakfilter', 'Task filter')
FAC_LCL('lcl_mjb_overruled_xcp', 'Aangepast', 'Overruled')
FAC_LCL('lcl_mjb_moved', 'Verschoven', 'Moved')
FAC_LCL('lcl_mjb_started', 'Geaccordeerd', 'Approved')
FAC_LCL('lcl_mjb_started_in_execution', 'Geaccordeerd + Ter uitvoering', 'Approved + In execution')
FAC_LCL('lcl_mjb_notstarted', 'Niet geaccordeerd', 'Unapproved')
FAC_LCL('lcl_mjb_year', 'Jaar', 'Year')
FAC_LCL('lcl_mjb_years', 'Jaar(tal)', 'Year')
@@ -1487,6 +1490,9 @@ FAC_LCL('lcl_order_description', 'Opdracht', 'Order')
FAC_LCL('lcl_orders_title', 'Opdrachtenbeheer', 'Order management')
FAC_LCL('lcl_contract', 'Contract', 'Contract')
FAC_LCL('lcl_edit', 'Details', 'Details')
FAC_LCL('lcl_schedule', 'Plannen', 'Schedule')
FAC_LCL('lcl_schedule_start', 'Plannen begin', 'Schedule start')
FAC_LCL('lcl_schedule_end', 'Plannen eind', 'Schedule end')
FAC_LCL('lcl_reject', 'Afwijzen', 'Reject')
FAC_LCL('lcl_forward', 'Doorsturen', 'Forward')
FAC_LCL('lcl_forwarded', 'De melding is doorgestuurd.', 'The call has been forwarded')
@@ -4951,6 +4957,9 @@ FAC_LCL('lcl_mld_opdr_regvalidate', 'De opdracht wordt ter goedkeuring aangebode
FAC_LCL('lcl_mld_opdr_offerte_accept', 'Accepteren offerte ', 'Accept offer ')
FAC_LCL('lcl_mld_opdr_close', 'Opdracht(en) afmelden', 'Close order(s)')
FAC_LCL('lcl_mld_opdr_cancel', 'Opdracht annuleren', 'Cancel order')
FAC_LCL('lcl_mld_opdr_edit_plandate', 'Geplande aanvang wijzigen', 'Edit planned date')
FAC_LCL('lcl_mld_opdr_edit_plandate2', 'Einddatum wijzigen', 'Edit end date')
FAC_LCL('lcl_mld_opdr_no_date_change', 'U heeft geen andere datum gekozen', 'You have not chosen a different date')
FAC_LCL('lcl_mld_opdr_finish_1', 'Wilt u opdracht ', 'Do you want to close order ')
FAC_LCL('lcl_mld_opdr_finish_2', ' qua kosten gereedmelden?', ' financially?')
FAC_LCL('lcl_mld_opdr_cancelled_1', 'Opdracht ', 'Order ')
@@ -5408,6 +5417,7 @@ FAC_LCL('lcl_shared_othertabactive', 'Sla eerst de wijzigingen op (of annuleer z
FAC_LCL('lcl_shared_use_caller_werkplek', 'Werkplekgegevens van de beller invullen?', 'Enter workplace details of the caller?')
FAC_LCL('lcl_shared_no_auth', 'Op grond van de u toegekende rechten heeft u hiervoor geen bevoegdheid.'||CHR(10)||CHR(10)||'Als u van mening bent dat dat niet terecht is kunt u het beste contact opnemen met uw Facilitor contactpersoon.', 'You are not authorised for this function'||CHR(10)||CHR(10)||'Please contact your Facilitor contact if you think you should be able to access to this function.')
FAC_LCL('lcl_shared_no_action', 'Deze actie kan niet worden uitgevoerd, bijvoorbeeld omdat de actie al eerder werd uitgevoerd of omdat u niet voldoende rechten heeft.', 'The action you specified cannot be performed (any longer).'||CHR(10)||'This usually is because the action has already been executed.'||CHR(10)||'Sometimes this is because you do not have sufficient authorisation.')
FAC_LCL('lcl_shared_old_freeze', 'Deze actie kan niet worden uitgevoerd, omdat er in {0} nog een onafgeronde taak is.', 'The action you specified cannot be performed, because there is still an unfinished task in {0}.')
FAC_LCL('lcl_shared_needed_info', 'Benodigde gegevens', 'Required details')
FAC_LCL('lcl_shared_send_email', 'Stuur via e-mail', 'Send via e-mail')
FAC_LCL('lcl_shared_order', 'Opdracht', 'Order')

View File

@@ -2133,7 +2133,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
pbedrijfadreskey NUMBER DEFAULT NULL, pqueue VARCHAR2 DEFAULT 'DEFAULT',
pgeturl VARCHAR2 DEFAULT NULL)
AS
lemail prs_perslid.prs_perslid_email%TYPE;
lemail fac_notificatie.fac_notificatie_receiver_email%TYPE;
lphone prs_perslid.prs_perslid_mobiel%TYPE;
llang prs_perslid.prs_perslid_lang%TYPE;
lsysteem prs_perslid.prs_perslid_systeemadres%TYPE;
@@ -3746,7 +3746,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
lworkflowstep_key mld_melding.mld_workflowstep_key%TYPE;
lstart_key mld_melding.mld_melding_start_key%TYPE;
luitvtype mld_v_uitvoerende.TYPE%TYPE;
lemail prs_bedrijf.prs_bedrijf_email%TYPE;
lemail fac_notificatie.fac_notificatie_receiver_email%TYPE;
lemail3 alg_gebouw.alg_gebouw_email%TYPE;
lphone prs_bedrijf.prs_bedrijf_telefoon2%TYPE;
lreskey res_rsv_ruimte.res_reservering_key%TYPE;

View File

@@ -407,7 +407,6 @@ CREATE OR REPLACE PACKAGE BODY ano AS
SET mld_melding_omschrijving = CASE WHEN mld_melding_omschrijving IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, mld_melding_opmerking = CASE WHEN mld_melding_opmerking IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, mld_melding_document = CASE WHEN mld_melding_document IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, mld_melding_externnr = CASE WHEN mld_melding_externnr IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, mld_melding_satisfaction_op = CASE WHEN mld_melding_satisfaction_op IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, mld_melding_naam_ext = CASE WHEN mld_melding_naam_ext IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, mld_melding_email_ext = CASE WHEN mld_melding_email_ext IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
@@ -467,7 +466,6 @@ CREATE OR REPLACE PACKAGE BODY ano AS
, mld_opdr_contactpersoon = CASE WHEN mld_opdr_contactpersoon IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, mld_opdr_opmerking_fiat = CASE WHEN mld_opdr_opmerking_fiat IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, mld_opdr_opmerking = CASE WHEN mld_opdr_opmerking IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, mld_opdr_externnr = CASE WHEN mld_opdr_externnr IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
WHERE mld_opdr_key = rec_o.mld_opdr_key;
-- Anonimiseren van tekstvelden in opdrachtregels van de melding.
@@ -478,7 +476,6 @@ CREATE OR REPLACE PACKAGE BODY ano AS
, mld_opdr_materiaal_extra2 = CASE WHEN mld_opdr_materiaal_extra2 IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, mld_opdr_materiaal_extra3 = CASE WHEN mld_opdr_materiaal_extra3 IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, mld_opdr_materiaal_extra4 = CASE WHEN mld_opdr_materiaal_extra4 IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, mld_opdr_materiaal_externnr = CASE WHEN mld_opdr_materiaal_extra4 IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
WHERE mld_opdr_key = rec_o.mld_opdr_key;
END IF;

View File

@@ -60,6 +60,11 @@ BEGIN
rec_count := rec_count + 1;
FOR f IN 1 .. a_fields.COUNT
LOOP
a_fields (f) := NULL;
END LOOP;
FOR f IN 1 .. 100
LOOP
IF (rec_count = 1) -- eerste (header) regel bepaalt het aantal kolommen

View File

@@ -684,6 +684,7 @@ DEFINE_SETTING('MLD', 0001, 'WEB_PRSSYS', 'mld_uren_weeks_back'
DEFINE_SETTING('MLD', 0000, 'WEB_PRSSYS', 'mld_use_department' , 'number' , '0' , 'MLD also registers a department. You can see MLD of your department scope and below (0=don''t use | 1=use)')
DEFINE_SETTING('MLD', 0001, 'WEB_PRSSYS', 'mld_use_order_approval' , 'number' , '0' , 'Approval mechanism is used for mld orders (0=disabled | 1=enabled)')
DEFINE_SETTING('MLD', 0001, 'WEB_PRSSYS', 'mld_use_plandate2' , 'number' , '0' , '*Allow use of planned end date {0=no | 1=only show in list | 2=yes, but don''t show in list | 3=yes and show in list}')
DEFINE_SETTING('MLD', 0001, 'WEB_PRSSYS', 'mld_ord_edit_plandates' , 'number' , '1' , 'Edit plandates { 1=in order (default), 2=with buttons, 3=both }')
DEFINE_SETTING('MLD', 0001, 'WEB_PRSSYS', 'mld_workflow_set_defaults' , 'number' , '0' , 'Set defaults for flexkenmerken if they weren''t set by the predecessor (0=do not set | 1=set defaults)')
DEFINE_SETTING('MLD', 0001, 'WEB_PRSSYS', 'mld_workflowstep_in_xml' , 'number' , '0' , 'Include all data of all other workflowsteps in XML for prints of a call from a workflow (0=no | 1=yes)')
DEFINE_SETTING('MLD', 0001, 'WEB_PRSSYS', 'nightly_mld2bo_emailaddress' , 'string' , '' , 'Notification email address outside office hours')

View File

@@ -342,6 +342,7 @@ CREATE_TRIGGER(fac_t_fac_notificatie_B_I)
DECLARE
loms web_user_messages.web_user_mess_dsc%TYPE;
lxmlnode fac_srtnotificatie.fac_srtnotificatie_xmlnode%TYPE;
lparamkey web_user_messages.web_user_mess_action_params%TYPE;
BEGIN
-- Kopieer direct naar statusinformatie op de portal indien van toepassing
-- Daarbij worden alle oude berichten (eerst) verwijderd
@@ -363,6 +364,13 @@ BEGIN
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_key = :NEW.fac_srtnotificatie_key;
IF lxmlnode IN ('melding', 'opdracht')
THEN
lparamkey := :new.fac_notificatie_refkey; -- de optionele tracking-key is geen goede
ELSE
lparamkey := COALESCE (:new.fac_notificatie_extrakey, :new.fac_notificatie_refkey);
END IF;
DELETE FROM web_user_messages
WHERE fac_srtnotificatie_key IN
(SELECT fac_srtnotificatie_key
@@ -377,7 +385,7 @@ BEGIN
web_user_mess_action_params, fac_srtnotificatie_key, web_user_mess_prioriteit
)
VALUES (:NEW.prs_perslid_key_sender, :NEW.prs_perslid_key_receiver, loms, 1,
COALESCE (:NEW.fac_notificatie_extrakey, :NEW.fac_notificatie_refkey), :NEW.fac_srtnotificatie_key,
lparamkey, :NEW.fac_srtnotificatie_key,
:NEW.fac_notificatie_prioriteit
);

View File

@@ -1136,6 +1136,28 @@ AS
fac.safe_to_number (fac.getsetting ('xd_primary_bedrijfkey'))) b
ON x.prs_perslid_key = b.prs_perslid_key;
-- Dit gaan we hanteren om API-users te tellen (zijn dan geen normale keyusers meer)
CREATE_VIEW (fac_v_lcrap_apiusers, 0)
AS
SELECT apiuser, apinaam, LISTAGG (module, ', ') modules
FROM ( SELECT prs_perslid_oslogin apiuser, prs_perslid_naam apinaam, fac_functie_module module
FROM ( SELECT gg.prs_perslid_key, g.fac_functie_key, g.ins_discipline_key
FROM fac_groeprechten g, fac_gebruikersgroep gg, fac_groep fg
WHERE g.fac_groep_key = gg.fac_groep_key
AND gg.fac_groep_key = fg.fac_groep_key
AND fac_groep_upper <> '_DEFAULT'
GROUP BY gg.prs_perslid_key, g.fac_functie_key, g.ins_discipline_key) w,
fac_functie f,
prs_perslid p
WHERE w.fac_functie_key = f.fac_functie_key
AND p.prs_perslid_key = w.prs_perslid_key
AND prs_perslid_apikey IS NOT NULL
AND BITAND (prs_perslid_flags, 36) = 0 --AND prs_perslid_oslogin NOT IN ('_HMAIL', '_PUTORDERS', 'SENSORS')
AND prs_perslid_verwijder IS NULL
GROUP BY prs_perslid_oslogin, prs_perslid_naam, fac_functie_module)
GROUP BY apiuser, apinaam
ORDER BY 1;
-- totaliseer data uit bovenstaande view tot in principe 1 samenvattingsregel
-- (voor crossdomain (xd) fe-users bestaat geen definitie)
-- personen zonder rechten worden als passive_user toegevoegd

View File

@@ -8,6 +8,7 @@ START_LOCALEITEMS('INS_DISCIPLINE_KEY')
DEFINE_LOCALEITEM(lcl_bld_terra)
DEFINE_LOCALEITEM(lcl_deel_state)
DEFINE_LOCALEITEM(lcl_discipline)
DEFINE_LOCALEITEM(lcl_select_discipline)
DEFINE_LOCALEITEM(lcl_estate_locatie_man_descr)
DEFINE_LOCALEITEM(lcl_fg_gotofgheader)
DEFINE_LOCALEITEM(lcl_floor)
@@ -29,12 +30,14 @@ DEFINE_LOCALEITEM(lcl_obj_bind_r)
DEFINE_LOCALEITEM(lcl_obj_geoxcoord)
DEFINE_LOCALEITEM(lcl_obj_geoycoord)
DEFINE_LOCALEITEM(lcl_obj_group)
DEFINE_LOCALEITEM(lcl_select_srtgroep)
DEFINE_LOCALEITEM(lcl_obj_identification)
DEFINE_LOCALEITEM(lcl_obj_owner)
DEFINE_LOCALEITEM(lcl_obj_photo)
DEFINE_LOCALEITEM(lcl_obj_position)
DEFINE_LOCALEITEM(lcl_obj_reserveerbaar)
DEFINE_LOCALEITEM(lcl_obj_sort)
DEFINE_LOCALEITEM(lcl_select_srtdeel)
DEFINE_LOCALEITEM(lcl_obj_uitleensrtdeel)
DEFINE_LOCALEITEM(lcl_owner_info)
DEFINE_LOCALEITEM(lcl_prs_address_bezoek_adres)

View File

@@ -8,6 +8,7 @@ CREATE OR REPLACE PACKAGE ins AS
FUNCTION delete_deelkoppeling( DeelKey IN NUMBER ) RETURN BOOLEAN;
FUNCTION get_description(pentityname IN VARCHAR2, pparentkey IN NUMBER, pprefix IN VARCHAR2) RETURN VARCHAR2;
FUNCTION nextdescription(pprefix IN VARCHAR2, pparentkey IN NUMBER, pseparator IN VARCHAR2 DEFAULT 'default') RETURN VARCHAR2;
PROCEDURE copyInsKenmerken(pdeel_key IN NUMBER, ptosrtdeel_key IN NUMBER);
PROCEDURE altersrtdeel(pdeel_key IN NUMBER, ptosrtdeel_key IN NUMBER);
FUNCTION sprintf (ps IN varchar2, pins_deel_key IN number) RETURN varchar2;
FUNCTION contrsprintf (ps IN varchar2, pins_deelsrtcontr_key IN NUMBER) RETURN varchar2;
@@ -101,6 +102,81 @@ CREATE OR REPLACE PACKAGE BODY ins AS
RETURN returnstring;
END;
PROCEDURE copyInsKenmerken(pdeel_key IN NUMBER, ptosrtdeel_key IN NUMBER)
AS
CURSOR c_kenmerkdeel (pdeel_key IN NUMBER, ptosrtdeel_key IN NUMBER)
IS
SELECT kd1.ins_kenmerkdeel_key, k2.ins_kenmerk_key
FROM ins_kenmerk k1,
ins_kenmerk k2,
ins_kenmerkdeel kd1,
ins_srtdeel sd2,
ins_srtgroep sg2,
ins_srtkenmerk sk
WHERE k1.ins_srtkenmerk_key = k2.ins_srtkenmerk_key
AND k1.ins_kenmerk_key <> k2.ins_kenmerk_key
AND sk.ins_srtkenmerk_key = k1.ins_srtkenmerk_key
AND COALESCE (k1.ins_kenmerk_omschrijving,
sk.ins_srtkenmerk_omschrijving) =
COALESCE (k2.ins_kenmerk_omschrijving,
sk.ins_srtkenmerk_omschrijving)
AND sd2.ins_srtgroep_key = sg2.ins_srtgroep_key
AND k1.ins_kenmerk_niveau = k2.ins_kenmerk_niveau
AND k1.ins_kenmerk_niveau <> 'C'
AND kd1.ins_kenmerk_key = k1.ins_kenmerk_key
AND k2.ins_srtinstallatie_key =
(CASE
WHEN k2.ins_kenmerk_niveau = 'D' THEN sg2.ins_discipline_key
WHEN k2.ins_kenmerk_niveau = 'G' THEN sg2.ins_srtgroep_key
WHEN k2.ins_kenmerk_niveau = 'S' THEN sd2.ins_srtdeel_key
END)
AND kd1.ins_deel_key = pdeel_key
AND sd2.ins_srtdeel_key = ptosrtdeel_key;
CURSOR c_facbijlagen (pdeel_key IN NUMBER, ptosrtdeel_key IN NUMBER)
IS
SELECT fb1.fac_bijlagen_key, k2.ins_kenmerk_key
FROM ins_kenmerk k1,
ins_kenmerk k2,
fac_bijlagen fb1,
ins_srtdeel sd2,
ins_srtgroep sg2,
ins_srtkenmerk sk
WHERE k1.ins_srtkenmerk_key = k2.ins_srtkenmerk_key
AND k1.ins_kenmerk_key <> k2.ins_kenmerk_key
AND sk.ins_srtkenmerk_key = k1.ins_srtkenmerk_key
AND COALESCE (k1.ins_kenmerk_omschrijving,
sk.ins_srtkenmerk_omschrijving) =
COALESCE (k2.ins_kenmerk_omschrijving,
sk.ins_srtkenmerk_omschrijving)
AND sd2.ins_srtgroep_key = sg2.ins_srtgroep_key
AND k1.ins_kenmerk_niveau = k2.ins_kenmerk_niveau
AND k1.ins_kenmerk_niveau <> 'C'
AND fb1.fac_bijlagen_kenmerk_key = k1.ins_kenmerk_key
AND k2.ins_srtinstallatie_key =
(CASE
WHEN k2.ins_kenmerk_niveau = 'D' THEN sg2.ins_discipline_key
WHEN k2.ins_kenmerk_niveau = 'G' THEN sg2.ins_srtgroep_key
WHEN k2.ins_kenmerk_niveau = 'S' THEN sd2.ins_srtdeel_key
END)
AND fb1.fac_bijlagen_refkey = pdeel_key
AND sd2.ins_srtdeel_key = ptosrtdeel_key;
BEGIN
FOR kd_upd IN c_kenmerkdeel (pdeel_key, ptosrtdeel_key)
LOOP
UPDATE ins_kenmerkdeel
SET ins_kenmerk_key = kd_upd.ins_kenmerk_key
WHERE ins_kenmerkdeel_key = kd_upd.ins_kenmerkdeel_key;
END LOOP;
FOR fb_upd IN c_facbijlagen (pdeel_key, ptosrtdeel_key)
LOOP
UPDATE fac_bijlagen
SET fac_bijlagen_kenmerk_key = fb_upd.ins_kenmerk_key
WHERE fac_bijlagen_key = fb_upd.fac_bijlagen_key;
END LOOP;
END;
-- omkatten van het objectsoort van een object. Controleert wat technische voorwaarden qua binding
-- maar kijkt niet naar bv autorisaties. Trackt alleen als er ook echt iets verandert
PROCEDURE altersrtdeel(pdeel_key IN NUMBER, ptosrtdeel_key IN NUMBER)
@@ -140,10 +216,10 @@ CREATE OR REPLACE PACKAGE BODY ins AS
-- de redundante ins_deel.ins_discipline_key wordt door de trigger bijgewerkt
copyInsKenmerken(pdeel_key, ptosrtdeel_key);
-- het is nu mogelijk dat er kenmerken (ins_kenmerkdeel) zijn die qua definitie niet horen
-- tot de kenmerken van de nieuwe soort. Ik vind dat niet erg. Het maximale wat we zouden
-- kunnen doen is immers kenmerken weggooien, we kunnen niet aanpassen of bijverzinnen
-- vooralsnog kunnen we dat nog laten, bij editen komt dit goed.
-- tot de kenmerken van de nieuwe soort. Ik vind dat niet erg.
-- de tracking zou discipline/srtgroep/srtdeel -> discipline/srtgroep/srtdeel kunnen zijn
-- voor de volledigheid, maar daar mag iemand om gaan vragen, zo essentieel is dat niet

View File

@@ -337,6 +337,19 @@ BEGIN
END;
/
-- vul de sensorwaarde datumtijd (alleen) als die met een mutatie van de waarde niet werd meegegeven
CREATE_TRIGGER(ins_t_ins_deel_b_u)
BEFORE UPDATE
ON ins_deel
FOR EACH ROW
BEGIN
IF UPDATING ('ins_deel_state') AND NOT UPDATING ('ins_deel_statedate')
THEN
:new.ins_deel_statedate := SYSDATE;
END IF;
END;
/
CREATE_TRIGGER(ins_t_ins_deel_A_U)
AFTER UPDATE
ON ins_deel

View File

@@ -2241,7 +2241,7 @@ CREATE OR REPLACE PACKAGE BODY mld AS
END IF;
-- ook standaardondersteuning voor p.alg_gebouw_key, p.alg_verdieping_key, p.alg_ruimte_key en p.alg_terreinsector_key in de conditie
l_sql := 'select 1 from mld_melding, alg_v_onroerendgoed p where mld_melding.mld_alg_onroerendgoed_keys = p.alg_onroerendgoed_keys(+) AND mld_melding_key = :mld_key AND ' || p_where;
l_sql := 'select 1 from mld_melding, alg_v_onroerendgoed p where mld_melding.mld_alg_onroerendgoed_keys = p.alg_onroerendgoed_keys(+) AND mld_melding_key = :mld_key AND (' || p_where ||')';
DBMS_OUTPUT.put_line (l_sql);
DBMS_SQL.parse (l_cursor, l_sql, DBMS_SQL.native);
DBMS_SQL.bind_variable (l_cursor, ':mld_key', p_mld_key);