YASK#87601 Opslagpercentage en verkoopprijs RABO catering rapportage toevoegen

svn path=/Customer/trunk/; revision=67974
This commit is contained in:
Arthur Egberink
2025-02-13 15:58:56 +00:00
parent dae3b09937
commit 88216d14ee

View File

@@ -30,6 +30,8 @@ AS
PROCEDURE set_opslag_perc (p_opdr_key IN NUMBER);
PROCEDURE set_opslag_perc_cat (p_rsv_artikel_key IN NUMBER);
FUNCTION get_opslag_perc (p_opdr_key IN NUMBER)
RETURN NUMBER;
@@ -271,6 +273,114 @@ AS
RETURN;
END;
PROCEDURE set_opslag_perc_cat (p_rsv_artikel_key IN NUMBER)
AS
v_geen_opslag NUMBER;
v_opslag NUMBER;
v_locatie_key ALG_LOCATIE.ALG_LOCATIE_KEY%TYPE;
v_discipline_key INS_TAB_DISCIPLINE.INS_DISCIPLINE_KEY%TYPE;
v_rsv_ruimte_van RES_RSV_RUIMTE.RES_RSV_RUIMTE_VAN%TYPE;
v_opslag_kenmerk_key RES_KENMERK.RES_KENMERK_KEY%TYPE;
PROCEDURE upsertkenmerk (p_kenmerk_key IN NUMBER, p_opslag IN NUMBER)
AS
v_kenmerkartikel_key RES_KENMERKARTIKEL.RES_KENMERKARTIKEL_KEY%TYPE;
BEGIN
SELECT res_kenmerkartikel_key
INTO v_kenmerkartikel_key
FROM res_kenmerkartikel
WHERE res_kenmerkartikel_verwijder IS NULL
AND res_kenmerk_key = p_kenmerk_key
AND res_rsv_artikel_key = p_rsv_artikel_key;
UPDATE res_kenmerkartikel
SET res_kenmerkartikel_waarde = TO_CHAR(p_opslag)
WHERE res_kenmerkartikel_key = v_kenmerkartikel_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO res_kenmerkartikel (res_rsv_artikel_key, res_kenmerk_key, res_kenmerkartikel_waarde)
VALUES (p_rsv_artikel_key, p_kenmerk_key, TO_CHAR(p_opslag));
END;
BEGIN
-- Bepaal de locatie en de catalogus
SELECT ab.alg_locatie_key, ra.res_discipline_key, rrr.res_rsv_ruimte_van
INTO v_locatie_key, v_discipline_key, v_rsv_ruimte_van
FROM res_rsv_artikel rra,
res_artikel ra,
res_rsv_ruimte rrr,
res_v_rsv_ruimte_2_alg_ruimte r2a,
alg_v_onrgoed_boom ab
WHERE rra.res_artikel_key = ra.res_artikel_key
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+)
AND ab.alg_ruimte_key = COALESCE(rrr.alg_ruimte_key, r2a.alg_ruimte_key)
AND rra.res_rsv_artikel_key = p_rsv_artikel_key;
BEGIN
SELECT res_kenmerk_key
INTO v_opslag_kenmerk_key
FROM res_kenmerk
WHERE res_discipline_key = v_discipline_key
AND res_kenmerk_niveau = 'D'
AND res_kenmerk_code = 'OPSLAGPERC';
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_opslag_kenmerk_key := NULL;
END;
-- Controleer of het locatienummer en de catalogus is ingevuld in de opslag tabel. Dan
-- geldt deze als eerste.
SELECT MAX(opslag)
INTO v_opslag
FROM vbxx_imp_opslag
WHERE alg_locatie_key = v_locatie_key
AND ins_discipline_key = v_discipline_key
AND ( (ingangsdatum IS NULL AND einddatum IS NULL)
OR (ingangsdatum IS NOT NULL AND einddatum IS NULL AND v_rsv_ruimte_van >= ingangsdatum)
OR (ingangsdatum IS NULL AND einddatum IS NOT NULL AND v_rsv_ruimte_van < einddatum+1)
OR (ingangsdatum IS NOT NULL AND einddatum IS NOT NULL AND v_rsv_ruimte_van BETWEEN ingangsdatum AND einddatum+1)
)
AND imp_opslag_verwijder IS NULL;
IF v_opslag IS NOT NULL
THEN
UPDATE res_rsv_artikel SET res_rsv_artikel_prijs = (1 + v_opslag / 100) * res_rsv_artikel_inkoopprijs WHERE res_rsv_artikel_key = p_rsv_artikel_key;
upsertkenmerk (v_opslag_kenmerk_key, v_opslag);
RETURN;
END IF;
-- Controleer of de catalogus is ingevuld in de opslag tabel.
SELECT MAX(opslag)
INTO v_opslag
FROM vbxx_imp_opslag
WHERE ins_discipline_key = v_discipline_key
AND alg_locatie_key IS NULL
AND ( (ingangsdatum IS NULL AND einddatum IS NULL)
OR (ingangsdatum IS NOT NULL AND einddatum IS NULL AND v_rsv_ruimte_van >= ingangsdatum)
OR (ingangsdatum IS NULL AND einddatum IS NOT NULL AND v_rsv_ruimte_van < einddatum+1)
OR (ingangsdatum IS NOT NULL AND einddatum IS NOT NULL AND v_rsv_ruimte_van BETWEEN ingangsdatum AND einddatum+1)
)
AND imp_opslag_verwijder IS NULL;
IF v_opslag IS NOT NULL
THEN
UPDATE res_rsv_artikel SET res_rsv_artikel_prijs = (1 + v_opslag / 100) * res_rsv_artikel_inkoopprijs WHERE res_rsv_artikel_key = p_rsv_artikel_key;
upsertkenmerk (v_opslag_kenmerk_key, v_opslag);
RETURN;
END IF;
RETURN;
EXCEPTION WHEN NO_DATA_FOUND
THEN
UPDATE res_rsv_artikel SET res_rsv_artikel_prijs = res_rsv_artikel_inkoopprijs WHERE res_rsv_artikel_key = p_rsv_artikel_key;
RETURN;
END;
FUNCTION get_opslag_perc (p_opdr_key IN NUMBER)
RETURN NUMBER
@@ -1617,6 +1727,7 @@ AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_skipfield VARCHAR2 (100);
v_ongeldig NUMBER;
-- De importvelden
v_imp_opslag_key NUMBER (10);
v_begin_txt VARCHAR2 (100);
@@ -1649,6 +1760,7 @@ BEGIN
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := v_newline;
v_ongeldig := 0;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
@@ -1706,74 +1818,95 @@ BEGIN
|| ' | '
|| v_eind_txt;
v_errorhint := 'Controleer locatie';
v_errorhint := 'Locatie niet gevonden: ' || v_locatie_code;
v_locatie_key := NULL;
IF v_locatie_code IS NOT NULL
THEN
BEGIN
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_locatie
WHERE alg_locatie_verwijder IS NULL
AND UPPER (alg_locatie_code) =
UPPER (TRIM (v_locatie_code));
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'E', v_errorhint, '');
END;
END IF;
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_locatie
WHERE alg_locatie_verwijder IS NULL
AND UPPER (alg_locatie_code) =
UPPER (TRIM (v_locatie_code));
v_errorhint := 'Vakgroeptype niet gevonden: ' || v_srtdiscipline_omschrijving;
v_srtdiscipline_key := NULL;
IF v_srtdiscipline_omschrijving IS NOT NULL
THEN
BEGIN
SELECT ins_srtdiscipline_key
INTO v_srtdiscipline_key
FROM ins_srtdiscipline
WHERE ins_srtdiscipline_verwijder IS NULL
AND UPPER (ins_srtdiscipline_omschrijving) =
UPPER (TRIM (v_srtdiscipline_omschrijving));
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'E', v_errorhint, '');
END;
END IF;
BEGIN
v_errorhint := 'Controleer vakgroeptype';
v_errorhint := 'Vakgroep niet gevonden: ' || v_discipline_omschrijving;
v_discipline_key := NULL;
IF v_discipline_omschrijving IS NOT NULL
THEN
BEGIN
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_tab_discipline
WHERE ins_discipline_verwijder IS NULL
AND (ins_srtdiscipline_key = v_srtdiscipline_key OR v_srtdiscipline_key IS NULL)
AND UPPER (ins_discipline_omschrijving) =
UPPER (TRIM (v_discipline_omschrijving));
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'E', v_errorhint, '');
END;
END IF;
SELECT ins_srtdiscipline_key
INTO v_srtdiscipline_key
FROM ins_srtdiscipline
WHERE ins_srtdiscipline_verwijder IS NULL
AND UPPER (ins_srtdiscipline_omschrijving) =
UPPER (TRIM (v_srtdiscipline_omschrijving));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_srtdiscipline_key := NULL;
END;
v_errorhint := 'NEN code niet gevonden: ' || v_kostensoort_refcode;
v_kostensoort_key := NULL;
IF v_kostensoort_refcode IS NOT NULL
THEN
BEGIN
SELECT prs_kostensoort_key
INTO v_kostensoort_key
FROM prs_kostensoort
WHERE UPPER (prs_kostensoort_refcode) =
UPPER (TRIM (v_kostensoort_refcode));
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'E', v_errorhint, '');
END;
END IF;
BEGIN
v_errorhint := 'Controleer vakgroep';
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_tab_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_srtdiscipline_key = v_srtdiscipline_key
AND UPPER (ins_discipline_omschrijving) =
UPPER (TRIM (v_discipline_omschrijving));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_discipline_key := NULL;
END;
BEGIN
v_errorhint := 'Controleer nen code';
SELECT prs_kostensoort_key
INTO v_kostensoort_key
FROM prs_kostensoort
WHERE UPPER (prs_kostensoort_refcode) =
UPPER (TRIM (v_kostensoort_refcode));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_kostensoort_key := NULL;
END;
BEGIN
v_errorhint := 'Controleer leverancier';
SELECT prs_bedrijf_key
v_errorhint := 'Leverancier niet gevonden: ' || v_leverancier_nr;
v_bedrijf_key := NULL;
IF v_leverancier_nr IS NOT NULL
THEN
BEGIN
SELECT prs_bedrijf_key
INTO v_bedrijf_key
FROM prs_bedrijf
WHERE prs_bedrijf_verwijder IS NULL
AND UPPER (prs_leverancier_nr) =
UPPER (TRIM (v_leverancier_nr));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_bedrijf_key := NULL;
END;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'E', v_errorhint, '');
END;
END IF;
v_errorhint := 'Controleer opslag';
v_opslag_txt := REPLACE (v_opslag_txt, ',', '.');
@@ -1785,6 +1918,8 @@ BEGIN
v_errorhint := 'Controleer vervaldatum';
v_eind := TO_DATE (v_eind_txt, 'dd-mm-yyyy');
IF v_ongeldig = 0
THEN
INSERT INTO vbxx_imp_opslag (
imp_opslag_key,
alg_locatie_key,
@@ -1806,6 +1941,7 @@ BEGIN
v_begin,
v_eind,
SYSDATE);
END IF;
ELSE
IF rec1.fac_imp_file_index = 1 THEN
fac.imp_writelog (p_import_key,
@@ -1882,7 +2018,7 @@ AS
FROM vbxx_imp_opslag o,
alg_locatie l,
ins_srtdiscipline sd,
mld_discipline d,
ins_tab_discipline d,
prs_kostensoort k,
prs_bedrijf b
WHERE o.alg_locatie_key = l.alg_locatie_key(+)
@@ -5350,11 +5486,11 @@ BEGIN
AND fin_kenmerk_verwijder IS NULL;
-- CUST: Voor vullen van het gebouwkenmerk op factuurregelniveau
SELECT MIN (fin_kenmerk_key)
INTO c_kenmerk_key_gebouw
FROM fin_kenmerk
WHERE fin_kenmerk_code = 'GEBOUW'
AND fin_kenmerk_verwijder IS NULL;
SELECT MIN (fin_kenmerk_key)
INTO c_kenmerk_key_gebouw
FROM fin_kenmerk
WHERE fin_kenmerk_code = 'GEBOUW'
AND fin_kenmerk_verwijder IS NULL;
-- We gaan nu beginnen met het verder verwerken van de factuur..
FOR rec IN cfactuur
@@ -5572,7 +5708,7 @@ BEGIN
SET fr.fin_factuurregel_referentie = v_locatie_code
WHERE fr.fin_factuurregel_key = rec.fin_factuurregel_key;
IF v_gebouw_key IS NOT NULL
IF v_gebouw_key IS NOT NULL AND c_kenmerk_key_gebouw IS NOT NULL
THEN
INSERT INTO fin_kenmerkfactregel (fin_kenmerk_key,
fin_factuurregel_key,