From cd7d3a1827bfc14ab50fb1d4683d3c52eb2e995d Mon Sep 17 00:00:00 2001 From: Koen Reefman Date: Mon, 5 Jul 2021 20:41:06 +0000 Subject: [PATCH] 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 --- MLD/MLD_PAC.SRC | 55 +++++++++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/MLD/MLD_PAC.SRC b/MLD/MLD_PAC.SRC index 237767dc..bc255679 100644 --- a/MLD/MLD_PAC.SRC +++ b/MLD/MLD_PAC.SRC @@ -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/één bedrijf is dat deze dienst levert op deze locatie/dit gebouw + -- Controleer of er éé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.