FCLT#63760 Sommige meldingen hebben geen locatie/adres, daarvoor nu 'NO_DATA_FOUND' afgevangen en tevens zoeken we dan nog even of er mogelijk maar 1 bedrijf is die deze dienst ongescoped levert (om uitvoerende te bepalen), mld_stdmelding_vereisdienst niet nodig en dienst in de 1ste query ophalen.

svn path=/Database/trunk/; revision=52219
This commit is contained in:
2021-07-05 20:41:06 +00:00
parent ea67566afd
commit cd7d3a1827

View File

@@ -1390,7 +1390,6 @@ CREATE OR REPLACE PACKAGE BODY mld AS
l_alg_gebouw_key alg_v_allonrgoed_gegevens.alg_gebouw_key%TYPE;
l_alg_verdieping_key alg_v_allonrgoed_gegevens.alg_verdieping_key %TYPE;
l_alg_ruimte_key alg_v_allonrgoed_gegevens.alg_ruimte_key%TYPE;
l_mld_stdmelding_vereisdienst mld_stdmelding.mld_stdmelding_vereisdienst%TYPE;
l_prs_dienst_key NUMBER;
l_prs_bedrijf_key prs_v_aanwezigbedrijf.prs_bedrijf_key%TYPE;
l_aantal NUMBER;
@@ -1419,6 +1418,7 @@ CREATE OR REPLACE PACKAGE BODY mld AS
, m.mld_melding_omschrijving
, m.mld_melding_onderwerp
, k.prs_kostenplaats_fiat
, sm.prs_dienst_key
, mdp.mld_disc_params_bestellimiet
INTO l_autoorder
, l_prs_perslid_key
@@ -1434,6 +1434,7 @@ CREATE OR REPLACE PACKAGE BODY mld AS
, l_mld_melding_omschrijving
, l_mld_melding_onderwerp
, l_prs_kostenplaats_fiat
, l_prs_dienst_key
, l_mld_disc_params_bestellimiet
FROM mld_melding m
, mld_stdmelding sm
@@ -1595,15 +1596,23 @@ CREATE OR REPLACE PACKAGE BODY mld AS
THEN
-- Daarvoor zijn plaatsgegevens relevant.
-- Eerst kijken of er een locatie key bepaald kan worden.
SELECT mld_alg_locatie_key
, mld_adres_key
, mld_alg_onroerendgoed_keys
INTO l_mld_alg_locatie_key
, l_mld_adres_key
, l_mld_alg_onroerendgoed_keys
FROM mld_melding
WHERE mld_melding_key = p_melding_key
AND (mld_alg_locatie_key IS NOT NULL OR mld_adres_key IS NOT NULL);
BEGIN
SELECT mld_alg_locatie_key
, mld_adres_key
, mld_alg_onroerendgoed_keys
INTO l_mld_alg_locatie_key
, l_mld_adres_key
, l_mld_alg_onroerendgoed_keys
FROM mld_melding
WHERE mld_melding_key = p_melding_key
AND (mld_alg_locatie_key IS NOT NULL OR mld_adres_key IS NOT NULL);
EXCEPTION
WHEN NO_DATA_FOUND
THEN -- Geen locatie of adres
l_mld_alg_locatie_key := NULL;
l_mld_adres_key := NULL;
l_mld_alg_onroerendgoed_keys := NULL;
END;
IF l_mld_alg_locatie_key IS NULL AND l_mld_adres_key IS NOT NULL
THEN
@@ -1640,18 +1649,9 @@ CREATE OR REPLACE PACKAGE BODY mld AS
-- of een afdeling die een parent van ons is.
-- De controles kunnen hier overgeslagen worden en kan de prs bedrijf_key direct bepalen.
SELECT ms.mld_stdmelding_vereisdienst
, ms.prs_dienst_key
INTO l_mld_stdmelding_vereisdienst
, l_prs_dienst_key
FROM mld_stdmelding ms
, prs_dienst pd
WHERE mld_stdmelding_key = l_mld_stdmelding_key
AND pd.prs_dienst_key(+) = ms.prs_dienst_key;
IF l_prs_dienst_key IS NOT NULL
THEN
-- Controleer of er een/<EFBFBD><EFBFBD>n bedrijf is dat deze dienst levert op deze locatie/dit gebouw
-- Controleer of er <20><>n bedrijf is dat deze dienst levert (op deze locatie/dit gebouw)
IF l_alg_gebouw_key IS NOT NULL
THEN
SELECT MIN(bdl.prs_bedrijf_key) prs_bedrijf_key
@@ -1686,6 +1686,21 @@ CREATE OR REPLACE PACKAGE BODY mld AS
AND bdl.prs_dienst_key = l_prs_dienst_key
AND (bdl.alg_locatie_key = l_mld_alg_locatie_key
OR bdl.alg_locatie_key IS NULL);
ELSE
SELECT MIN(bdl.prs_bedrijf_key) prs_bedrijf_key
, COUNT(DISTINCT bdl.prs_bedrijf_key) aantal
, MIN(bdl.prs_bdl_t_uitvoertijd.tijdsduur) tijdsduur
, MIN(bdl.prs_bdl_t_uitvoertijd.eenheid) eenheid
INTO l_prs_bedrijf_key
, l_aantal
, l_bdl_tijdsduur
, l_bdl_eenheid
FROM prs_bedrijfdienstlocatie bdl
, prs_v_aanwezigbedrijf b
WHERE bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND bdl.prs_dienst_key = l_prs_dienst_key
AND bdl.alg_gebouw_key IS NULL
AND bdl.alg_locatie_key IS NULL; -- Bestaat er dan misschien maar 1 bedrijf voor deze dienst zonder loc/geb scope ?
END IF;
-- Indien dienst vereist en aantal is 0, dan is de dienst niet beschikbaar voor deze locatie/dit gebouw.
-- Indien aantal groter is dan 0, dan kan ik geen goede keuze maken.