YASK#85687 -- Updates in de koppeling worden nu ook ondersteund.

svn path=/Customer/trunk/; revision=68181
This commit is contained in:
Arthur Egberink
2025-02-25 10:25:06 +00:00
parent 85fb00dd8a
commit e163c7e617

View File

@@ -5553,6 +5553,14 @@ AS
v_ruimte_key NUMBER;
v_kenmerk_key NUMBER;
v_discipline_key NUMBER;
v_rsv_ruimte_omschrijving_prev RES_RSV_RUIMTE.RES_RSV_RUIMTE_OMSCHRIJVING%TYPE;
v_ruimte_key_prev NUMBER;
v_rsv_ruimte_van_prev DATE;
v_rsv_ruimte_tot_prev DATE;
v_gebouw_code ALG_GEBOUW.ALG_GEBOUW_CODE%TYPE;
v_gebouw_code_prev ALG_GEBOUW.ALG_GEBOUW_CODE%TYPE;
v_tracking FAC_TRACKING.FAC_TRACKING_OMS%TYPE;
v_status_bo_key NUMBER;
v_aanduiding VARCHAR2 (200);
v_errormsg VARCHAR (200);
@@ -5560,25 +5568,58 @@ AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
PROCEDURE add_catering (p_rsv_ruimte_key IN NUMBER, p_artikel_code IN VARCHAR2, p_levering IN DATE, p_bedrag IN NUMBER)
PROCEDURE add_catering (p_rsv_ruimte_key IN NUMBER, p_perslid_key IN NUMBER, p_artikel_code IN VARCHAR2, p_levering IN DATE, p_bedrag IN NUMBER)
AS
v_artikel_key NUMBER;
v_artikel_btw res_artikel.res_artikel_btw%TYPE;
v_artikel_key NUMBER;
v_artikel_btw RES_ARTIKEL.RES_ARTIKEL_BTW%TYPE;
v_artikel_omschrijving RES_ARTIKEL.RES_ARTIKEL_OMSCHRIJVING%TYPE;
v_rsv_artikel_inkoopprijs RES_RSV_ARTIKEL.RES_RSV_ARTIKEL_INKOOPPRIJS%TYPE;
v_rsv_artikel_key NUMBER;
BEGIN
-- zoek het artikel op.
SELECT res_artikel_key, res_artikel_btw
INTO v_artikel_key, v_artikel_btw
SELECT res_artikel_key, res_artikel_btw, res_artikel_omschrijving
INTO v_artikel_key, v_artikel_btw, v_artikel_omschrijving
FROM res_artikel
WHERE res_artikel_verwijder IS NULL
AND res_artikel_externnr = p_artikel_code;
IF COALESCE(p_bedrag, 0) <> 0
BEGIN
-- Bestaat het artikel al?
SELECT res_rsv_artikel_key, res_rsv_artikel_inkoopprijs
INTO v_rsv_artikel_key, v_rsv_artikel_inkoopprijs
FROM res_rsv_artikel rra
WHERE rra.res_artikel_key = v_artikel_key
AND rra.res_rsv_ruimte_key = p_rsv_ruimte_key
AND rra.res_rsv_artikel_verwijder IS NULL;
IF COALESCE(p_bedrag, 0) = 0
THEN
DELETE FROM res_rsv_artikel WHERE res_rsv_artikel_key = v_rsv_artikel_key;
fac.trackaction('RESUPD', p_rsv_ruimte_key, p_perslid_key, NULL, 'Artikel: ' || v_artikel_omschrijving || ' is verwijderd.');
ELSE
IF p_bedrag <> v_rsv_artikel_inkoopprijs
THEN
UPDATE res_rsv_artikel
SET res_rsv_artikel_prijs = p_bedrag,
res_rsv_artikel_inkoopprijs = p_bedrag,
res_rsv_artikel_levering = p_levering
WHERE res_rsv_artikel_key = v_rsv_artikel_key;
vbxx.set_opslag_perc_cat(v_rsv_artikel_key);
fac.trackaction('RESUPD', p_rsv_ruimte_key, p_perslid_key, NULL, 'Artikel: ' || v_artikel_omschrijving || ' is gewijzigd.' || CHR(10)
|| 'Prijs: ' || v_rsv_artikel_inkoopprijs || ' --> ' || p_bedrag);
END IF;
END IF;
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO res_rsv_artikel (res_rsv_ruimte_key, res_artikel_key, res_rsv_artikel_aantal, res_rsv_artikel_prijs, res_rsv_artikel_inkoopprijs, res_rsv_artikel_btw, res_rsv_artikel_levering, res_status_bo_key, res_rsv_artikel_afgemeld)
VALUES (p_rsv_ruimte_key, v_artikel_key, 1, p_bedrag, p_bedrag, v_artikel_btw, p_levering, 5, SYSDATE)
RETURNING res_rsv_artikel_key INTO v_rsv_artikel_key;
END IF;
vbxx.set_opslag_perc_cat(v_rsv_artikel_key);
IF COALESCE(p_bedrag, 0) <> 0
THEN
INSERT INTO res_rsv_artikel (res_rsv_ruimte_key, res_artikel_key, res_rsv_artikel_aantal, res_rsv_artikel_prijs, res_rsv_artikel_inkoopprijs, res_rsv_artikel_btw, res_rsv_artikel_levering, res_status_bo_key, res_rsv_artikel_afgemeld)
VALUES (p_rsv_ruimte_key, v_artikel_key, 1, p_bedrag, p_bedrag, v_artikel_btw, p_levering, 5, SYSDATE)
RETURNING res_rsv_artikel_key INTO v_rsv_artikel_key;
END IF;
vbxx.set_opslag_perc_cat(v_rsv_artikel_key);
END;
END;
@@ -5655,45 +5696,108 @@ BEGIN
fac.imp_writelog (p_import_key, 'E', 'Kostenplaatsgroep kan niet gevonden worden.', rec.id);
RETURN; -- dan hebben we hier niets meer te zoeken.
END IF;
v_errorhint := 'Voeg de reservering toe';
INSERT INTO res_reservering (res_reservering_aanmaak) VALUES (SYSDATE)
RETURNING res_reservering_key INTO v_reservering_key;
v_errorhint := 'Voeg de deelreservering toe';
INSERT INTO res_rsv_ruimte (res_reservering_key,
res_rsv_ruimte_volgnr,
res_rsv_ruimte_omschrijving,
prs_kostenplaats_key,
res_rsv_ruimte_contact_key,
res_rsv_ruimte_host_key,
alg_ruimte_key,
res_rsv_ruimte_cvab_mode,
res_activiteit_key,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
res_status_fo_key)
VALUES (v_reservering_key,
1,
rec.omschrijving,
v_kostenplaats_key,
v_perslid_key, -- API user
v_perslid_key,
v_ruimte_key,
1,
150,
rec.datum,
rec.einddatum,
2)
RETURNING res_rsv_ruimte_key INTO v_rsv_ruimte_key;
-- Kenmerk toevoegen met de externe referentie
-- Kenmerk key opzoeken van de externe referentie
v_errorhint := 'Zoek het kenmerk RABONUMMER';
SELECT res_kenmerk_key
INTO v_kenmerk_key
FROM res_kenmerk
WHERE res_kenmerk_code = 'RABONUMMER';
BEGIN
-- Kijk of de reservering al bestaat
SELECT rrr.res_rsv_ruimte_key, rrr.res_reservering_key, rrr.res_rsv_ruimte_omschrijving, rrr.alg_ruimte_key, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot
INTO v_rsv_ruimte_key, v_reservering_key, v_rsv_ruimte_omschrijving_prev, v_ruimte_key_prev, v_rsv_ruimte_van_prev, v_rsv_ruimte_tot_prev
FROM res_rsv_ruimte rrr, res_kenmerkwaarde kw
WHERE rrr.res_rsv_ruimte_key = kw.res_rsv_ruimte_key
AND kw.res_kenmerk_key = v_kenmerk_key
AND kw.res_kenmerkreservering_waarde = rec.id
AND rrr.res_rsv_ruimte_verwijder IS NULL;
SELECT MAX(res_status_bo_key)
INTO v_status_bo_key
FROM res_rsv_artikel rra
WHERE res_rsv_artikel_verwijder IS NULL
AND rra.res_rsv_ruimte_key = v_rsv_ruimte_key;
-- Controleer of de catering al verwerkt is. Dan accepteren we geen aanpassingen meer.
IF v_status_bo_key = 6
THEN
fac.imp_writelog (p_import_key, 'E', 'Catering is doorgezet naar de leverancier en kan niet meer aangepast worden.', rec.id);
RETURN; -- dan hebben we hier niets meer te zoeken.
END IF;
v_errorhint := 'Pas de deelreservering aan';
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_omschrijving = rec.omschrijving,
prs_kostenplaats_key = v_kostenplaats_key,
alg_ruimte_key = v_ruimte_key,
res_rsv_ruimte_van = rec.datum,
res_rsv_ruimte_tot = rec.einddatum
WHERE res_rsv_ruimte_key = v_rsv_ruimte_key;
-- Voeg tracking toe
IF v_rsv_ruimte_omschrijving_prev <> rec.omschrijving
THEN
v_tracking := CHR(10) || 'Omschrijving: ' || v_rsv_ruimte_omschrijving_prev || ' --> ' || rec.omschrijving;
END IF;
IF v_ruimte_key_prev <> v_ruimte_key
THEN
SELECT alg_gebouw_upper INTO v_gebouw_code_prev FROM alg_v_ruimte_gegevens WHERE alg_ruimte_key = v_ruimte_key_prev;
SELECT alg_gebouw_upper INTO v_gebouw_code FROM alg_v_ruimte_gegevens WHERE alg_ruimte_key = v_ruimte_key;
v_tracking := v_tracking || CHR(10) || 'Ruimte: ' || v_gebouw_code_prev || ' --> ' || v_gebouw_code;
END IF;
IF v_rsv_ruimte_van_prev <> rec.datum
THEN
v_tracking := v_tracking || CHR(10) || 'Van: ' || TO_CHAR(v_rsv_ruimte_van_prev, 'DD-MM-YYYY HH24:MI') || ' --> ' || TO_CHAR(rec.datum, 'DD-MM-YYYY HH24:MI');
END IF;
IF v_rsv_ruimte_tot_prev <> rec.einddatum
THEN
v_tracking := v_tracking || CHR(10) || 'Van: ' || TO_CHAR(v_rsv_ruimte_tot_prev, 'DD-MM-YYYY HH24:MI') || ' --> ' || TO_CHAR(rec.einddatum, 'DD-MM-YYYY HH24:MI');
END IF;
IF v_tracking IS NOT NULL
THEN
fac.trackaction('RESUPD', v_rsv_ruimte_key, v_perslid_key, NULL, 'Reservering ' || v_reservering_key || '/1 is gewijzigd' || v_tracking);
END IF;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_errorhint := 'Voeg de reservering toe';
INSERT INTO res_reservering (res_reservering_aanmaak) VALUES (SYSDATE)
RETURNING res_reservering_key INTO v_reservering_key;
v_errorhint := 'Voeg de deelreservering toe';
INSERT INTO res_rsv_ruimte (res_reservering_key,
res_rsv_ruimte_volgnr,
res_rsv_ruimte_omschrijving,
prs_kostenplaats_key,
res_rsv_ruimte_contact_key,
res_rsv_ruimte_host_key,
alg_ruimte_key,
res_rsv_ruimte_cvab_mode,
res_activiteit_key,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
res_status_fo_key)
VALUES (v_reservering_key,
1,
rec.omschrijving,
v_kostenplaats_key,
v_perslid_key, -- API user
v_perslid_key,
v_ruimte_key,
1,
150,
rec.datum,
rec.einddatum,
2)
RETURNING res_rsv_ruimte_key INTO v_rsv_ruimte_key;
END;
-- Kenmerk toevoegen met de externe referentie
v_errorhint := 'Zet het kenmerk RABONUMMER';
FLX.setflex ('RES', v_kenmerk_key, v_rsv_ruimte_key, NULL, rec.id);
@@ -5709,9 +5813,9 @@ BEGIN
-- Nu nog de catering toevoegen
v_errorhint := 'Voeg de catering toe';
add_catering (v_rsv_ruimte_key, 'RABOCATHOOG', rec.datum, rec.bedrag_hoog);
add_catering (v_rsv_ruimte_key, 'RABOCATLAAG', rec.datum, rec.bedrag_laag);
add_catering (v_rsv_ruimte_key, 'RABOCATNUL', rec.datum, rec.bedrag_nul);
add_catering (v_rsv_ruimte_key, v_perslid_key, 'RABOCATHOOG', rec.datum, rec.bedrag_hoog);
add_catering (v_rsv_ruimte_key, v_perslid_key, 'RABOCATLAAG', rec.datum, rec.bedrag_laag);
add_catering (v_rsv_ruimte_key, v_perslid_key, 'RABOCATNUL', rec.datum, rec.bedrag_nul);
END LOOP;
EXCEPTION