YASK#89430 Foutmelding VBXX.Fin_set_approver verschijnt dubbel op overzichtspagina

svn path=/Customer/trunk/; revision=69519
This commit is contained in:
Arthur Egberink
2025-06-23 11:48:47 +00:00
parent b41a9aab0f
commit f9084a4795

View File

@@ -734,6 +734,20 @@ AS
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Om foutmeldingen te voorkomen controleren we eerst of er wel een verplichting gekoppeld is.
SELECT count(*)
INTO v_count
FROM fin_factuur f
WHERE f.fin_factuur_key = p_factuur_key
AND ( f.mld_opdr_key IS NOT NULL
OR f.cnt_contract_key IS NOT NULL
OR f.bes_bestelopdr_key IS NOT NULL);
IF v_count = 0
THEN
RETURN;
END IF;
-- Nu bepalen we de locatie van de factuur. Adh daarvan kunnen we bepalen wie hier rechten op heeft.
v_errorhint := 'Bepaal locatie.';
SELECT l.alg_locatie_key, d.alg_regio_key
@@ -5542,7 +5556,7 @@ AS
---
--- Foutcodes: In het kenmerk FOUTCODE wordt een bitwise foutcode bijgehouden. Hieronder staat de uitleg per bitje
--- bit 0: bijlage kon niet opgeslagen worden.
--- bit 1: ontbrekende orderreferentie
--- bit 1: orderreferentie niet gevonden
--- bit 2: fout in bedrijfsherkenning
--- bit 3: overige fout uit import
--- bit 4: dubbele factuur
@@ -5550,6 +5564,8 @@ AS
--- bit 6: IBAN niet correct
--- bit 7: IBAN niet gevuld bij leverancier
--- bit 8: Proces fout (Oracle foutmelding)
--- bit 9: Ordernummer niet aanwezig via scanning
--- bit 10: 3 weg matching maar verplichting niet afgemeld
CURSOR ccor_0
IS
SELECT ordernr
@@ -5595,7 +5611,7 @@ IS
CURSOR cfactuur
IS
SELECT i.fin_factuur_key, factuurdatum, i.kenmerk1, i.kenmerk2, i.kenmerk3, i.kenmerk6, i.kenmerk7, i.kenmerk8, i.kenmerk9, i.kenmerk10, i.kenmerk11, i.kenmerk12, i.kenmerk13, i.factuurnr, i.fac_imp_file_index, f.fin_factuur_totaal, f.fin_factuur_totaal_btw, f.mld_opdr_key, f.cnt_contract_key, f.bes_bestelopdr_key
SELECT i.fin_factuur_key, factuurdatum, i.kenmerk1, i.kenmerk2, i.kenmerk3, i.kenmerk6, i.kenmerk7, i.kenmerk8, i.kenmerk9, i.kenmerk10, i.kenmerk11, i.kenmerk12, i.kenmerk13, i.factuurnr, i.ordernr, i.fac_imp_file_index, f.fin_factuur_totaal, f.fin_factuur_totaal_btw, f.mld_opdr_key, f.cnt_contract_key, f.bes_bestelopdr_key
FROM fac_imp_factuur i, fin_factuur f
WHERE i.fin_factuur_key IS NOT NULL
AND i.fac_import_key = p_import_key
@@ -5658,6 +5674,8 @@ IS
v_factuur_note_key FIN_FACTUUR_NOTE.FIN_FACTUUR_NOTE_KEY%TYPE;
v_bedrijf_iban FIN_KENMERKFACTUUR.FIN_KENMERKFACTUUR_WAARDE%TYPE;
v_bedrijf_key PRS_BEDRIJF.PRS_BEDRIJF_KEY%TYPE;
v_factmatchmode MLD_DISC_PARAMS.MLD_DISC_PARAMS_FACTMATCHMODE%TYPE;
v_statusopdr_key MLD_OPDR.MLD_STATUSOPDR_KEY%TYPE;
PROCEDURE track_error (p_error_str IN VARCHAR2, p_foutcode IN NUMBER, p_factuur_key IN NUMBER, p_perslid_key IN NUMBER)
IS
@@ -5829,7 +5847,7 @@ BEGIN
FOR rec IN cfactuur
LOOP
BEGIN
v_errorhint := 'Verwerken van de factuur';
SELECT REPLACE(fin_factuur_opmerking, '@@', CHR (13) || CHR (10))
INTO v_factuur_opmerking
FROM fin_factuur
@@ -5845,6 +5863,7 @@ BEGIN
END IF;
-- Als er een bijlage-flexprop en een bijlage is, dan gaan we deze PDF hier inzetten....
v_errorhint := 'Verwerken bijlage van de factuur';
IF c_kenmerk_key_bijlage IS NOT NULL AND rec.kenmerk1 IS NOT NULL
THEN
@@ -5883,17 +5902,8 @@ BEGIN
END IF;
-- Incomplete facturen, zonder orderreferentie, gaan we ook op controle zetten
IF (rec.mld_opdr_key IS NULL AND rec.cnt_contract_key IS NULL AND rec.bes_bestelopdr_key IS NULL)
THEN
v_aanduiding_controle := 'ERROR: Factuur incompleet i.v.m. ontbrekende orderreferentie (vanuit scanning)' ;
track_error (v_aanduiding_controle, 2, rec.fin_factuur_key, v_perslid_key); -- bit 1
END IF;
-- Fout gemeldt door Mareon
v_errorhint := 'Bedrijfsherkenning';
IF rec.kenmerk6 = '3'
THEN
v_foutcode := 0;
@@ -5922,148 +5932,180 @@ BEGIN
-- G rekening IBAN tonen in Facilitor bij Factuur
setkenmerkfactuur(rec.fin_factuur_key, 'GIBAN', rec.kenmerk13);
SELECT COALESCE(o.mld_uitvoerende_keys, bo.prs_bedrijf_key, c.cnt_prs_bedrijf_key, -1)
INTO v_bedrijf_key
FROM fin_factuur f,
mld_opdr o,
bes_bestelopdr bo,
cnt_contract c
WHERE f.mld_opdr_key = o.mld_opdr_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND f.fin_factuur_key = rec.fin_factuur_key;
SELECT FLX.getflex('PRS', k.prs_kenmerk_key, v_bedrijf_key, 'B', 1)
INTO v_bedrijf_iban
FROM prs_kenmerk k
WHERE k.prs_kenmerk_code = 'IBAN';
IF v_bedrijf_iban IS NULL
THEN
v_aanduiding_controle := 'ERROR: IBAN niet ingevuld bij leverancier.' ;
track_error (v_aanduiding_controle, POWER(2,7), rec.fin_factuur_key, v_perslid_key);
ELSE
IF COALESCE(UPPER(REPLACE(rec.kenmerk12, ' ')), 'QueQeLeQue') <> UPPER(REPLACE(v_bedrijf_iban, ' '))
THEN
-- dan gaan we ook de iban controleren
v_aanduiding_controle := 'ERROR: IBAN komt niet overeen!' ;
track_error (v_aanduiding_controle, POWER(2,6), rec.fin_factuur_key, v_perslid_key);
-- Incomplete facturen, zonder orderreferentie, gaan we ook op controle zetten
IF (rec.mld_opdr_key IS NULL AND rec.cnt_contract_key IS NULL AND rec.bes_bestelopdr_key IS NULL)
THEN
IF rec.ordernr = '00000'
THEN
v_aanduiding_controle := 'ERROR: Factuur incompleet i.v.m. ontbrekende orderreferentie vanuit scanning';
track_error (v_aanduiding_controle, 512, rec.fin_factuur_key, v_perslid_key); -- bit 9
ELSE
v_aanduiding_controle := 'ERROR: Factuur incompleet i.v.m. niet gevonden orderreferentie:' || rec.ordernr;
track_error (v_aanduiding_controle, 2, rec.fin_factuur_key, v_perslid_key); -- bit 1
END IF;
END IF;
ELSE
-- Controle of er al een factuur ontvangen is met hetzelfde factuurnummer en referentie
-- 1 Afgewezen
-- 2 Ingevoerd
-- 3 Incompleet
-- 5 Ter goedkeuring
-- 6 Akkoord
-- 7 Verwerkt
IF rec.mld_opdr_key IS NOT NULL
THEN
SELECT count(*)
INTO v_dubbele_facturen
FROM mld_opdr oa, fin_factuur f
WHERE oa.mld_opdr_key = f.mld_opdr_key
AND rec.factuurnr = f.fin_factuur_nr
AND rec.mld_opdr_key = oa.mld_opdr_key
AND f.fin_factuur_statuses_key NOT IN (1)
AND f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_key <> rec.fin_factuur_key;
END IF;
IF rec.bes_bestelopdr_key IS NOT NULL
THEN
SELECT count(*)
INTO v_dubbele_facturen
FROM bes_bestelopdr oa, fin_factuur f
WHERE oa.bes_bestelopdr_key = f.bes_bestelopdr_key
AND rec.factuurnr = f.fin_factuur_nr
AND rec.bes_bestelopdr_key = oa.bes_bestelopdr_key
AND f.fin_factuur_statuses_key NOT IN (1)
AND f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_key <> rec.fin_factuur_key;
END IF;
v_errorhint := 'IBAN controle';
SELECT COALESCE(o.mld_uitvoerende_keys, bo.prs_bedrijf_key, c.cnt_prs_bedrijf_key, -1)
INTO v_bedrijf_key
FROM fin_factuur f,
mld_opdr o,
bes_bestelopdr bo,
cnt_contract c
WHERE f.mld_opdr_key = o.mld_opdr_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND f.fin_factuur_key = rec.fin_factuur_key;
IF rec.cnt_contract_key IS NOT NULL
THEN
SELECT count(*)
INTO v_dubbele_facturen
FROM cnt_contract ca, fin_factuur f
WHERE ca.cnt_contract_key = f.cnt_contract_key
AND rec.factuurnr = f.fin_factuur_nr
AND rec.cnt_contract_key = ca.cnt_contract_key
AND f.fin_factuur_statuses_key NOT IN (1)
AND f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_key <> rec.fin_factuur_key;
SELECT FLX.getflex('PRS', k.prs_kenmerk_key, v_bedrijf_key, 'B', 1)
INTO v_bedrijf_iban
FROM prs_kenmerk k
WHERE k.prs_kenmerk_code = 'IBAN';
BEGIN
SELECT FAC.safe_to_number(FLX.getflex('CNT', k.cnt_kenmerk_key, rec.cnt_contract_key, 1))
INTO v_verdeelperiode_offset
FROM cnt_contract c, cnt_kenmerk k
WHERE c.ins_discipline_key = k.cnt_srtcontract_key
AND k.cnt_kenmerk_niveau = 'S'
AND k.cnt_kenmerk_code = 'VERDEELPERIODE_OFFSET'
AND c.cnt_contract_key = rec.cnt_contract_key;
UPDATE fin_factuur
SET fin_factuur_boekmaand = TO_CHAR(ADD_MONTHS(fin_factuur_datum, COALESCE(v_verdeelperiode_offset, 0)), 'yyyy-mm')
WHERE fin_factuur_key = rec.fin_factuur_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
NULL;
-- Niet erg als de waarde leeg is of het kenmerk niet gedefinieerd is. Dan hoeven we niets te doen.
END;
IF v_bedrijf_iban IS NULL
THEN
v_aanduiding_controle := 'ERROR: IBAN niet ingevuld bij leverancier.' ;
track_error (v_aanduiding_controle, POWER(2,7), rec.fin_factuur_key, v_perslid_key);
ELSE
IF COALESCE(UPPER(REPLACE(rec.kenmerk12, ' ')), 'QueQeLeQue') <> UPPER(REPLACE(v_bedrijf_iban, ' '))
THEN
-- dan gaan we ook de iban controleren
v_aanduiding_controle := 'ERROR: IBAN komt niet overeen!' ;
track_error (v_aanduiding_controle, POWER(2,6), rec.fin_factuur_key, v_perslid_key);
END IF;
END IF;
-- Bij YKPN wordt de beheerder van het contract als eerste goedkeurder aangewezen.
-- Voor de andere omgevingen wordt dit in het fin_set_approver proces uitgezocht.
IF vbxx.get_user = 'YKPN'
THEN
-- De beheerder van het contract gaat als eerste goedkeurder ingevuld worden.
-- Tenminste als deze rechten heeft op WEB_FINGOE
SELECT MAX(prs_perslid_key_beh)
INTO v_perslid_key_beh
FROM cnt_contract c, fac_v_webgebruiker g, fac_functie f
WHERE c.prs_perslid_key_beh = g.prs_perslid_key
AND g.fac_functie_key = f.fac_functie_key
AND f.fac_functie_code = 'WEB_FINGOE'
AND cnt_contract_key = rec.cnt_contract_key;
-- Controle of er al een factuur ontvangen is met hetzelfde factuurnummer en referentie
-- 1 Afgewezen
-- 2 Ingevoerd
-- 3 Incompleet
-- 5 Ter goedkeuring
-- 6 Akkoord
-- 7 Verwerkt
v_errorhint := 'Controle op dubbele facturen';
IF rec.mld_opdr_key IS NOT NULL
THEN
SELECT count(*)
INTO v_dubbele_facturen
FROM mld_opdr oa, fin_factuur f
WHERE oa.mld_opdr_key = f.mld_opdr_key
AND rec.factuurnr = f.fin_factuur_nr
AND rec.mld_opdr_key = oa.mld_opdr_key
AND f.fin_factuur_statuses_key NOT IN (1)
AND f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_key <> rec.fin_factuur_key;
IF v_perslid_key_beh IS NOT NULL
-- Nu we er toch zijn gaan we controleren of driewegmatching aanstaat voor de vakgroep.
SELECT mld_disc_params_factmatchmode, mld_statusopdr_key
INTO v_factmatchmode, v_statusopdr_key
FROM mld_disc_params dp, mld_stdmelding std, mld_melding m, mld_opdr o
WHERE o.mld_opdr_key = rec.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = dp.mld_ins_discipline_key;
IF v_factmatchmode = 3 AND v_statusopdr_key IN (1,2,3,4,5,8,10) -- afgewezen, niet akkoord, ter fiattering, gefiatteerd, toegekend, geaccepteerd, tergoedkeuring
THEN
v_aanduiding_controle := 'ERROR: 3 weg matching maar verplichting niet afgemeld.' ;
track_error (v_aanduiding_controle, POWER(2,1024), rec.fin_factuur_key, v_perslid_key);
END IF;
END IF;
IF rec.bes_bestelopdr_key IS NOT NULL
THEN
SELECT count(*)
INTO v_dubbele_facturen
FROM bes_bestelopdr oa, fin_factuur f
WHERE oa.bes_bestelopdr_key = f.bes_bestelopdr_key
AND rec.factuurnr = f.fin_factuur_nr
AND rec.bes_bestelopdr_key = oa.bes_bestelopdr_key
AND f.fin_factuur_statuses_key NOT IN (1)
AND f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_key <> rec.fin_factuur_key;
END IF;
IF rec.cnt_contract_key IS NOT NULL
THEN
SELECT count(*)
INTO v_dubbele_facturen
FROM cnt_contract ca, fin_factuur f
WHERE ca.cnt_contract_key = f.cnt_contract_key
AND rec.factuurnr = f.fin_factuur_nr
AND rec.cnt_contract_key = ca.cnt_contract_key
AND f.fin_factuur_statuses_key NOT IN (1)
AND f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_key <> rec.fin_factuur_key;
BEGIN
SELECT FAC.safe_to_number(FLX.getflex('CNT', k.cnt_kenmerk_key, rec.cnt_contract_key, 1))
INTO v_verdeelperiode_offset
FROM cnt_contract c, cnt_kenmerk k
WHERE c.ins_discipline_key = k.cnt_srtcontract_key
AND k.cnt_kenmerk_niveau = 'S'
AND k.cnt_kenmerk_code = 'VERDEELPERIODE_OFFSET'
AND c.cnt_contract_key = rec.cnt_contract_key;
UPDATE fin_factuur
SET fin_factuur_boekmaand = TO_CHAR(ADD_MONTHS(fin_factuur_datum, COALESCE(v_verdeelperiode_offset, 0)), 'yyyy-mm')
WHERE fin_factuur_key = rec.fin_factuur_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
NULL;
-- Niet erg als de waarde leeg is of het kenmerk niet gedefinieerd is. Dan hoeven we niets te doen.
END;
-- Bij YKPN wordt de beheerder van het contract als eerste goedkeurder aangewezen.
-- Voor de andere omgevingen wordt dit in het fin_set_approver proces uitgezocht.
IF vbxx.get_user = 'YKPN'
THEN
UPDATE fin_factuur
SET prs_perslid_key_goedkeur = v_perslid_key_beh
WHERE fin_factuur_key = rec.fin_factuur_key;
-- De beheerder van het contract gaat als eerste goedkeurder ingevuld worden.
-- Tenminste als deze rechten heeft op WEB_FINGOE
SELECT MAX(prs_perslid_key_beh)
INTO v_perslid_key_beh
FROM cnt_contract c, fac_v_webgebruiker g, fac_functie f
WHERE c.prs_perslid_key_beh = g.prs_perslid_key
AND g.fac_functie_key = f.fac_functie_key
AND f.fac_functie_code = 'WEB_FINGOE'
AND cnt_contract_key = rec.cnt_contract_key;
IF v_perslid_key_beh IS NOT NULL
THEN
UPDATE fin_factuur
SET prs_perslid_key_goedkeur = v_perslid_key_beh
WHERE fin_factuur_key = rec.fin_factuur_key;
END IF;
END IF;
END IF;
END IF;
END IF;
IF v_dubbele_facturen <> 0
IF v_dubbele_facturen <> 0
THEN
v_aanduiding_controle := 'ERROR: Dubbele facturen gevonden!' ;
track_error (v_aanduiding_controle, POWER(2,4), rec.fin_factuur_key, v_perslid_key);
END IF;
-- tot slot nog nette logging
v_aanduiding := 'Factuur geimporteerd vanuit Mareon' ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, v_perslid_key, NULL, v_aanduiding);
-- Bij YKPN gaan we nog niet het generieke proces af trappen.
IF vbxx.get_user <> 'YKPN' AND vbxx.get_user <> 'HEIN'
THEN
v_aanduiding_controle := 'ERROR: Dubbele facturen gevonden!' ;
track_error (v_aanduiding_controle, POWER(2,4), rec.fin_factuur_key, v_perslid_key);
vbxx.fin_set_approver(rec.fin_factuur_key);
END IF;
-- tot slot nog nette logging
v_aanduiding := 'Factuur geimporteerd vanuit Mareon' ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, v_perslid_key, NULL, v_aanduiding);
END;
-- Bij YKPN gaan we nog niet het generieke proces af trappen.
IF vbxx.get_user <> 'YKPN' AND vbxx.get_user <> 'HEIN'
THEN
vbxx.fin_set_approver(rec.fin_factuur_key);
END IF;
END IF;
END;
END LOOP;
-- We gaan nu beginnen met het verder verwerken van de factuur..
FOR rec IN cfactuurregel
LOOP
BEGIN
-- vul de locatiecode in de factuurregel
v_errorhint := 'Controle van de facuurregel';
-- vul de locatiecode in de factuurregel
IF rec.mld_opdr_key IS NOT NULL
THEN
BEGIN
@@ -6161,7 +6203,8 @@ EXCEPTION
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
v_errorhint || CHR(10) ||
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')' ;
SELECT MAX(i.fin_factuur_key) fin_factuur_key, 'Betreft factuur_key ' || TO_CHAR(i.fin_factuur_key) ||' - Factuurnr ' || i.factuurnr
INTO v_fin_factuur_key, v_errorhint
@@ -6197,7 +6240,7 @@ END;
/
--- bit 0: bijlage kon niet opgeslagen worden.
--- bit 1: ontbrekende orderreferentie
--- bit 1: niet gevonden orderreferentie
--- bit 2: fout in bedrijfsherkenning
--- bit 3: overige fout uit import
--- bit 4: dubbele factuur
@@ -6205,6 +6248,8 @@ END;
--- bit 6: IBAN niet correct
--- bit 7: IBAN niet gevuld bij leverancier
--- bit 8: Proces fout (Oracle foutmelding)
--- bit 9: ontbrekende orderreferentie uit scanning
--- bit 10: 3 weg matching maar verplichting niet afgemeld
CREATE OR REPLACE VIEW vbxx_v_fac_scan_result_detail
AS
SELECT f.fin_factuur_key factuur_key,
@@ -6224,7 +6269,7 @@ AS
AND k.fin_kenmerk_verwijder IS NULL
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 1) <> 0
UNION ALL
SELECT kf.fin_factuur_key, 'ontbrekende orderreferentie' foutmelding
SELECT kf.fin_factuur_key, 'niet gevonden orderreferentie' foutmelding
FROM fin_kenmerkfactuur kf, fin_kenmerk k
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_code = 'FOUTCODE'
@@ -6278,7 +6323,21 @@ AS
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_code = 'FOUTCODE'
AND k.fin_kenmerk_verwijder IS NULL
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 256) <> 0) bi,
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 256) <> 0
UNION ALL
SELECT kf.fin_factuur_key, 'geen orderreferentie uit scanning' foutmelding
FROM fin_kenmerkfactuur kf, fin_kenmerk k
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_code = 'FOUTCODE'
AND k.fin_kenmerk_verwijder IS NULL
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 512) <> 0
UNION ALL
SELECT kf.fin_factuur_key, '3 weg matching maar verplichting niet afgemeld' foutmelding
FROM fin_kenmerkfactuur kf, fin_kenmerk k
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_code = 'FOUTCODE'
AND k.fin_kenmerk_verwijder IS NULL
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 1024) <> 0) bi,
(SELECT fo.fin_factuur_key, mld_uitvoerende_keys prs_bedrijf_key
FROM mld_opdr o, fin_factuur fo
WHERE fo.mld_opdr_key = o.mld_opdr_key
@@ -6321,6 +6380,7 @@ CREATE OR REPLACE VIEW vbxx_v_rap_factuur_verplichting
AS
SELECT f.fin_factuur_key,
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
(SELECT t.fac_tracking_datum
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_tracking_refkey = f.fin_factuur_key
@@ -6328,6 +6388,7 @@ SELECT f.fin_factuur_key,
AND sn.fac_srtnotificatie_code = 'FINNEW')
fin_factuur_aanmaak,
fs.fin_factuur_statuses_omschr factuur_status,
DECODE(f.fin_factuur_flag, 1, 'Ja', 'Nee') dispuut,
(SELECT b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = COALESCE (o.mld_uitvoerende_keys, c.cnt_prs_bedrijf_key, bo.prs_bedrijf_key))