PCHX#75973 -- Herimplementatie PCH

svn path=/Customer/trunk/; revision=63204
This commit is contained in:
Arthur Egberink
2024-01-17 11:13:41 +00:00
parent 24a35ca3ba
commit d6cf3933b9

View File

@@ -45,6 +45,9 @@ AS
p_link_key IN NUMBER)
RETURN VARCHAR2;
FUNCTION fin_get_locatie_code (p_factuur_key IN NUMBER, p_factuurregel_key IN NUMBER)
RETURN VARCHAR2;
PROCEDURE fin_set_locatie_code (p_factuur_key IN NUMBER, p_factuurregel_key IN NUMBER);
PROCEDURE fin_set_projectloc_code (p_factuur_key IN NUMBER);
@@ -274,7 +277,8 @@ AS
v_kenmerk_waarde);
END;
PROCEDURE fin_set_locatie_code (p_factuur_key IN NUMBER, p_factuurregel_key IN NUMBER)
FUNCTION fin_get_locatie_code (p_factuur_key IN NUMBER, p_factuurregel_key IN NUMBER)
RETURN VARCHAR2
AS
v_bestelopdr_key NUMBER;
v_contract_key NUMBER;
@@ -328,13 +332,27 @@ AS
EXCEPTION
WHEN NO_DATA_FOUND
THEN
SELECT DISTINCT alg_locatie_code
INTO v_locatie_code
FROM cnt_contract_plaats cp, alg_v_ruimte_gegevens ar
WHERE cp.cnt_contract_key = v_contract_key
AND cp.cnt_alg_plaats_code = 'R'
AND cp.cnt_alg_plaats_key = ar.alg_ruimte_key
AND cp.cnt_contract_plaats_verwijder IS NULL;
BEGIN
SELECT DISTINCT alg_locatie_code
INTO v_locatie_code
FROM cnt_contract_plaats cp, alg_locatie l, alg_gebouw g, alg_verdieping v
WHERE cp.cnt_contract_key = v_contract_key
AND cp.cnt_alg_plaats_code = 'V'
AND cp.cnt_alg_plaats_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND l.alg_locatie_key = g.alg_locatie_key
AND cp.cnt_contract_plaats_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
SELECT DISTINCT alg_locatie_code
INTO v_locatie_code
FROM cnt_contract_plaats cp, alg_v_ruimte_gegevens ar
WHERE cp.cnt_contract_key = v_contract_key
AND cp.cnt_alg_plaats_code = 'R'
AND cp.cnt_alg_plaats_key = ar.alg_ruimte_key
AND cp.cnt_contract_plaats_verwijder IS NULL;
END;
END;
END;
END IF;
@@ -361,8 +379,29 @@ AS
v_locatie_code := 'Onbekend';
END;
UPDATE fin_factuurregel SET fin_factuurregel_referentie = v_locatie_code
WHERE fin_factuurregel_key = p_factuurregel_key;
RETURN v_locatie_code;
END;
PROCEDURE fin_set_locatie_code (p_factuur_key IN NUMBER, p_factuurregel_key IN NUMBER)
AS
v_locatie_code VARCHAR2 (100);
v_locatie_count NUMBER;
BEGIN
SELECT count(*)
INTO v_locatie_count
FROM fin_factuurregel fr, alg_locatie l
WHERE fr.fin_factuurregel_referentie = l.alg_locatie_code
AND l.alg_locatie_verwijder IS NULL
AND fr.fin_factuurregel_key = p_factuurregel_key;
v_locatie_code := fin_get_locatie_code (p_factuur_key, p_factuurregel_key);
-- We gaan het referentie veld aanpassen als het veld nog niet met een geldige locatiecode gevuld was.
IF v_locatie_count = 0
THEN
UPDATE fin_factuurregel SET fin_factuurregel_referentie = v_locatie_code
WHERE fin_factuurregel_key = p_factuurregel_key;
END IF;
END;
PROCEDURE fin_set_projectloc_code (p_factuur_key IN NUMBER)
@@ -689,12 +728,7 @@ AS
'Onbekend' vk_prs_kostensoort_refcode,
kr.prs_kostensoort_key,
COALESCE (
(SELECT prs_kostenplaats_key
FROM prs_kostenplaats kpr, fin_kenmerkfactregel kfr
WHERE kfr.fin_kenmerk_key = 26
AND kfr.fin_factuurregel_key = fr.fin_factuurregel_key
AND fac.safe_to_number (fin_kenmerkfactregel_waarde) =
kpr.prs_kostenplaats_key),
fr_afwk.afw_kostenplaats_key,
o.prs_kostenplaats_key,
c.prs_kostenplaats_key,
(SELECT DISTINCT b.prs_kostenplaats_key
@@ -706,18 +740,6 @@ AS
bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key))
prs_kostenplaats_key,
COALESCE (
o.prs_kostenplaats_key,
c.prs_kostenplaats_key,
(SELECT DISTINCT b.prs_kostenplaats_key
FROM bes_bestelling b,
bes_bestelopdr_item boi,
bes_bestelling_item bi
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key =
bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key))
prs_kostenplaats_org,
o.mld_opdr_key,
c.cnt_contract_key,
bo.bes_bestelopdr_key,
@@ -1040,18 +1062,44 @@ AS
administratie,
fin_factuur_key,
fin_factuurregel_nr,
afw_kostenplaats_key prs_kostenplaats_nr,
fin_factuur_statuses_key,
alg_locatie_code
FROM pchx_v_factuur_gegevens fg,
prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = COALESCE(afw_kostenplaats_key, fg.prs_kostenplaats_org)
WHERE kp.prs_kostenplaats_key = fg.prs_kostenplaats_key
-- Alleen als de kosten doorbelast moeten worden gaan we controleren of de werkmaatschappij wel aan de locatie gekoppeld is.
AND ( SUBSTR(boekstuknummer,2,2) <> '70'
OR
EXISTS (SELECT 1 FROM pchx_v_wm_loc wl
( EXISTS (SELECT 1 FROM pchx_v_wm_loc wl
WHERE wl.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND wl.alg_locatie_code = fg.alg_locatie_code));
AND wl.alg_locatie_code = fg.alg_locatie_code))
AND prs_kostensoort_oms IS NOT NULL);
-- View om ongeldige facturen boven water te krijgen. Een ongeldige factuur is een factuur zonder kostensoort
CREATE OR REPLACE VIEW pchx_v_rap_ongeldige_factuur
AS
SELECT fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
fin_factuurregel_omschrijving,
fin_factuurregel_totaal,
fin_btwtabelwaarde_code,
fin_factuur_opmerking,
boekstuknummer,
SUBSTR (boekstuknummer, 2, 2) dagboek,
prs_kostensoort_oms,
PCHX.fin_get_locatie_code (fin_factuur_key, fin_factuurregel_key) locatie,
k.prs_kostenplaats_nr,
s.fin_factuur_statuses_omschr
FROM pchx_v_factuur_gegevens f, fin_factuur_statuses s, prs_kostenplaats k
WHERE f.fin_factuur_statuses_key IN (2, 5, 6)
AND f.fin_factuur_statuses_key = s.fin_factuur_statuses_key
AND NOT EXISTS
(SELECT 1
FROM PCHX_V_BRON_EXPORT_EXACT_XML x
WHERE f.fin_factuur_key = x.fin_factuur_key)
AND f.prs_kostenplaats_key = k.prs_kostenplaats_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - Export exact verwerk
@@ -2194,7 +2242,7 @@ AS
prs_kostenplaats k,
prs_v_perslid_fullnames pf
WHERE fin_factuur_statuses_key = 2
AND fg.prs_kostenplaats_org = k.prs_kostenplaats_key
AND fg.prs_kostenplaats_key = k.prs_kostenplaats_key
AND k.prs_perslid_key = pf.prs_perslid_key
GROUP BY prs_perslid_naam_full, boekstuknummer)
GROUP BY prs_perslid_naam_full;
@@ -2214,7 +2262,7 @@ AS
prs_kostenplaats k,
prs_v_perslid_fullnames pf
WHERE fin_factuur_statuses_key = 2
AND fg.prs_kostenplaats_org = k.prs_kostenplaats_key
AND fg.prs_kostenplaats_key = k.prs_kostenplaats_key
AND k.prs_perslid_key = pf.prs_perslid_key
GROUP BY prs_perslid_naam_full, boekstuknummer)
GROUP BY prs_perslid_naam_full;