PCHX#75973 -- Herimplementatie PCH
svn path=/Customer/trunk/; revision=63105
This commit is contained in:
291
PCHX/pchx.sql
291
PCHX/pchx.sql
@@ -45,11 +45,13 @@ AS
|
||||
p_link_key IN NUMBER)
|
||||
RETURN VARCHAR2;
|
||||
|
||||
FUNCTION fin_get_locatie_code (p_factuur_key IN NUMBER)
|
||||
RETURN VARCHAR2;
|
||||
PROCEDURE fin_set_locatie_code (p_factuur_key IN NUMBER, p_factuurregel_key IN NUMBER);
|
||||
|
||||
FUNCTION fin_get_projectloc_code (p_factuur_key IN NUMBER)
|
||||
RETURN VARCHAR2;
|
||||
PROCEDURE fin_set_projectloc_code (p_factuur_key IN NUMBER);
|
||||
|
||||
PROCEDURE fin_set_kostensoort (p_factuur_key IN NUMBER, p_factuurregel_key IN NUMBER, p_kostensoort_oms IN VARCHAR2);
|
||||
|
||||
PROCEDURE fin_update_factuur (p_factuur_key IN NUMBER);
|
||||
|
||||
END;
|
||||
/
|
||||
@@ -272,40 +274,38 @@ AS
|
||||
v_kenmerk_waarde);
|
||||
END;
|
||||
|
||||
FUNCTION fin_get_locatie_code (p_factuur_key IN NUMBER)
|
||||
RETURN VARCHAR2
|
||||
PROCEDURE fin_set_locatie_code (p_factuur_key IN NUMBER, p_factuurregel_key IN NUMBER)
|
||||
AS
|
||||
v_bestelopdr_key NUMBER;
|
||||
v_contract_key NUMBER;
|
||||
v_opdr_key NUMBER;
|
||||
v_locatie_code VARCHAR2 (100);
|
||||
BEGIN
|
||||
SELECT bes_bestelopdr_key, cnt_contract_key, mld_opdr_key
|
||||
INTO v_bestelopdr_key, v_contract_key, v_opdr_key
|
||||
FROM fin_factuur
|
||||
WHERE fin_factuur_key = p_factuur_key;
|
||||
BEGIN
|
||||
SELECT bes_bestelopdr_key, cnt_contract_key, mld_opdr_key
|
||||
INTO v_bestelopdr_key, v_contract_key, v_opdr_key
|
||||
FROM fin_factuur
|
||||
WHERE fin_factuur_key = p_factuur_key;
|
||||
|
||||
IF v_bestelopdr_key IS NOT NULL
|
||||
THEN
|
||||
SELECT DISTINCT alg_locatie_code
|
||||
INTO v_locatie_code
|
||||
FROM bes_bestelopdr_item boi,
|
||||
IF v_bestelopdr_key IS NOT NULL
|
||||
THEN
|
||||
SELECT DISTINCT alg_locatie_code
|
||||
INTO v_locatie_code
|
||||
FROM bes_bestelopdr_item boi,
|
||||
bes_bestelling_item bi,
|
||||
bes_bestelling b,
|
||||
mld_adres a,
|
||||
alg_locatie l
|
||||
WHERE bes_bestelopdr_key = v_bestelopdr_key
|
||||
AND boi.BES_BESTELOPDR_ITEM_KEY = bi.BES_BESTELOPDR_ITEM_KEY
|
||||
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
||||
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
||||
AND b.mld_adres_key_lev = a.mld_adres_key
|
||||
AND a.alg_locatie_key = l.alg_locatie_key;
|
||||
END IF;
|
||||
|
||||
RETURN v_locatie_code;
|
||||
END IF;
|
||||
|
||||
IF v_contract_key IS NOT NULL
|
||||
THEN
|
||||
BEGIN
|
||||
IF v_contract_key IS NOT NULL
|
||||
THEN
|
||||
BEGIN
|
||||
SELECT DISTINCT alg_locatie_code
|
||||
INTO v_locatie_code
|
||||
FROM cnt_contract_plaats cp, alg_locatie l
|
||||
@@ -313,85 +313,80 @@ AS
|
||||
AND cp.cnt_alg_plaats_code = 'L'
|
||||
AND cp.cnt_alg_plaats_key = l.alg_locatie_key
|
||||
AND cp.cnt_contract_plaats_verwijder IS NULL;
|
||||
EXCEPTION
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
BEGIN
|
||||
SELECT DISTINCT alg_locatie_code
|
||||
INTO v_locatie_code
|
||||
FROM cnt_contract_plaats cp, alg_locatie l, alg_gebouw g
|
||||
WHERE cp.cnt_contract_key = v_contract_key
|
||||
AND cp.cnt_alg_plaats_code = 'G'
|
||||
AND cp.cnt_alg_plaats_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;
|
||||
BEGIN
|
||||
SELECT DISTINCT alg_locatie_code
|
||||
INTO v_locatie_code
|
||||
FROM cnt_contract_plaats cp, alg_locatie l, alg_gebouw g
|
||||
WHERE cp.cnt_contract_key = v_contract_key
|
||||
AND cp.cnt_alg_plaats_code = 'G'
|
||||
AND cp.cnt_alg_plaats_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 IF;
|
||||
|
||||
RETURN v_locatie_code;
|
||||
END IF;
|
||||
IF v_opdr_key IS NOT NULL
|
||||
THEN
|
||||
SELECT alg_locatie_code
|
||||
INTO v_locatie_code
|
||||
FROM alg_locatie l, mld_melding m, mld_opdr o
|
||||
WHERE o.mld_opdr_key = v_opdr_key
|
||||
AND o.mld_melding_key = m.mld_melding_key
|
||||
AND m.mld_alg_locatie_key = l.alg_locatie_key;
|
||||
END IF;
|
||||
|
||||
IF v_opdr_key IS NOT NULL
|
||||
THEN
|
||||
SELECT alg_locatie_code
|
||||
INTO v_locatie_code
|
||||
FROM alg_locatie l, mld_melding m, mld_opdr o
|
||||
WHERE o.mld_opdr_key = v_opdr_key
|
||||
AND o.mld_melding_key = m.mld_melding_key
|
||||
AND m.mld_alg_locatie_key = l.alg_locatie_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
v_locatie_code := 'Geen referentie';
|
||||
WHEN TOO_MANY_ROWS
|
||||
THEN
|
||||
v_locatie_code := 'Meerdere';
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
v_locatie_code := 'Onbekend';
|
||||
END;
|
||||
|
||||
RETURN v_locatie_code;
|
||||
END IF;
|
||||
|
||||
RETURN 'Geen referentie';
|
||||
EXCEPTION
|
||||
WHEN TOO_MANY_ROWS
|
||||
THEN
|
||||
RETURN 'Meerdere';
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
RETURN NULL;
|
||||
UPDATE fin_factuurregel SET fin_factuurregel_referentie = v_locatie_code
|
||||
WHERE fin_factuurregel_key = p_factuurregel_key;
|
||||
END;
|
||||
|
||||
FUNCTION fin_get_projectloc_code (p_factuur_key IN NUMBER)
|
||||
RETURN VARCHAR2
|
||||
PROCEDURE fin_set_projectloc_code (p_factuur_key IN NUMBER)
|
||||
AS
|
||||
v_contract_key NUMBER;
|
||||
v_opdr_key NUMBER;
|
||||
v_ruimte_nr VARCHAR2 (100);
|
||||
BEGIN
|
||||
v_ruimte_nr := FLX.getflex('FIN', 121, p_factuur_key);
|
||||
SELECT cnt_contract_key, mld_opdr_key
|
||||
INTO v_contract_key, v_opdr_key
|
||||
FROM fin_factuur
|
||||
WHERE fin_factuur_key = p_factuur_key;
|
||||
|
||||
IF v_contract_key IS NOT NULL
|
||||
THEN
|
||||
BEGIN
|
||||
SELECT MAX(FLX.getflex ('ALG', 2340, r.alg_ruimte_key, 'R')) -- sublocatiecode
|
||||
INTO v_ruimte_nr
|
||||
FROM cnt_contract_plaats cp, alg_ruimte r
|
||||
WHERE cp.cnt_contract_key = v_contract_key
|
||||
AND cp.cnt_alg_plaats_code = 'R'
|
||||
AND cp.cnt_alg_plaats_key = r.alg_ruimte_key
|
||||
AND r.alg_srtruimte_key = 241 -- projectlocatie
|
||||
AND cp.cnt_contract_plaats_verwijder IS NULL;
|
||||
RETURN v_ruimte_nr;
|
||||
EXCEPTION
|
||||
WHEN TOO_MANY_ROWS
|
||||
THEN
|
||||
RETURN 'Meerdere';
|
||||
END;
|
||||
IF v_contract_key IS NOT NULL
|
||||
THEN
|
||||
SELECT MAX(FLX.getflex ('ALG', 2340, r.alg_ruimte_key, 'R')) -- sublocatiecode
|
||||
INTO v_ruimte_nr
|
||||
FROM cnt_contract_plaats cp, alg_ruimte r
|
||||
WHERE cp.cnt_contract_key = v_contract_key
|
||||
AND cp.cnt_alg_plaats_code = 'R'
|
||||
AND cp.cnt_alg_plaats_key = r.alg_ruimte_key
|
||||
AND r.alg_srtruimte_key = 241 -- projectlocatie
|
||||
AND cp.cnt_contract_plaats_verwijder IS NULL;
|
||||
END IF;
|
||||
|
||||
IF v_opdr_key IS NOT NULL
|
||||
@@ -403,14 +398,82 @@ AS
|
||||
AND o.mld_melding_key = m.mld_melding_key
|
||||
AND r.alg_srtruimte_key = 241 -- projectlocatie
|
||||
AND m.mld_alg_onroerendgoed_keys = r.alg_ruimte_key;
|
||||
|
||||
RETURN v_ruimte_nr;
|
||||
END IF;
|
||||
|
||||
RETURN NULL;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN RETURN NULL;
|
||||
IF v_ruimte_nr IS NOT NULL
|
||||
THEN
|
||||
FLX.setflex('FIN', 121, p_factuur_key, v_ruimte_nr);
|
||||
END IF;
|
||||
END;
|
||||
|
||||
|
||||
PROCEDURE fin_set_kostensoort (p_factuur_key IN NUMBER, p_factuurregel_key IN NUMBER, p_kostensoort_oms IN VARCHAR2)
|
||||
AS
|
||||
v_kostensoort_key FIN_FACTUURREGEL.PRS_KOSTENSOORT_KEY%TYPE;
|
||||
BEGIN
|
||||
--Kostensoort (factuurregel)
|
||||
SELECT prs_kostensoort_key
|
||||
INTO v_kostensoort_key
|
||||
FROM fin_factuurregel fr
|
||||
WHERE fin_factuurregel_key = p_factuurregel_key;
|
||||
|
||||
-- alleen als we de kosten gaan doorbelasten gaan we op zoek naar de juiste kostensoort als deze nog niet gevuld was.
|
||||
IF SUBSTR(FLX.getflex('FIN', 3, p_factuur_key),2,2) <> '71' -- boekstuknummer / dagboek
|
||||
AND v_kostensoort_key IS NULL
|
||||
THEN
|
||||
IF p_kostensoort_oms IS NULL
|
||||
THEN
|
||||
-- Kostensoort opzoeken in de verplichting
|
||||
SELECT prs_kostensoort_key
|
||||
INTO v_kostensoort_key
|
||||
FROM fin_factuur
|
||||
WHERE fin_factuur_key = p_factuur_key;
|
||||
|
||||
IF v_kostensoort_key IS NOT NULL
|
||||
THEN
|
||||
UPDATE fin_factuurregel
|
||||
SET prs_kostensoort_key = v_kostensoort_key
|
||||
WHERE fin_factuurregel_key = p_factuurregel_key;
|
||||
ELSE
|
||||
-- zet de factuur op incompeet als de kostensoort niet gevonden kan worden.
|
||||
UPDATE fin_factuur
|
||||
SET fin_factuur_statuses_key = 3,
|
||||
fin_factuur_opmerking = 'Kostensoort niet gevonden' || CHR(10) || fin_factuur_opmerking
|
||||
WHERE fin_factuur_key = p_factuur_key;
|
||||
END IF;
|
||||
ELSE
|
||||
UPDATE fin_factuurregel
|
||||
SET prs_kostensoort_key =
|
||||
(SELECT MAX (ks.prs_kostensoort_key)
|
||||
FROM prs_kostensoort ks
|
||||
WHERE ks.prs_kostensoort_upper =
|
||||
UPPER (p_kostensoort_oms))
|
||||
WHERE fin_factuurregel_key = p_factuurregel_key;
|
||||
END IF;
|
||||
END IF;
|
||||
END;
|
||||
|
||||
PROCEDURE fin_update_factuur (p_factuur_key IN NUMBER)
|
||||
AS
|
||||
v_factuur_statuses_key FIN_FACTUUR.FIN_FACTUUR_STATUSES_KEY%TYPE;
|
||||
BEGIN
|
||||
SELECT fin_factuur_statuses_key
|
||||
INTO v_factuur_statuses_key
|
||||
FROM fin_factuur
|
||||
WHERE fin_factuur_key = p_factuur_key;
|
||||
|
||||
IF v_factuur_statuses_key IN (2,3) -- Ingevoerd en incompleet.
|
||||
THEN
|
||||
PCHX.fin_set_projectloc_code (p_factuur_key);
|
||||
|
||||
FOR rec IN (SELECT fin_factuurregel_key FROM fin_factuurregel WHERE fin_factuur_key = p_factuur_key)
|
||||
LOOP
|
||||
PCHX.fin_set_locatie_code (p_factuur_key, rec.fin_factuurregel_key);
|
||||
PCHX.fin_set_kostensoort (p_factuur_key, rec.fin_factuurregel_key, '');
|
||||
END LOOP;
|
||||
END IF;
|
||||
END;
|
||||
|
||||
END;
|
||||
/
|
||||
|
||||
@@ -984,7 +1047,7 @@ AS
|
||||
prs_kostenplaats kp
|
||||
WHERE kp.prs_kostenplaats_key = COALESCE(afw_kostenplaats_key, fg.prs_kostenplaats_org)
|
||||
-- Alleen als de kosten doorbelast moeten worden gaan we controleren of de werkmaatschappij wel aan de locatie gekoppeld is.
|
||||
AND ( SUBSTR(boekstuknummer,3,2) <> '70'
|
||||
AND ( SUBSTR(boekstuknummer,2,2) <> '70'
|
||||
OR
|
||||
EXISTS (SELECT 1 FROM pchx_v_wm_loc wl
|
||||
WHERE wl.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
||||
@@ -4625,10 +4688,7 @@ BEGIN
|
||||
|| rec.kenmerk1);
|
||||
END IF;
|
||||
|
||||
IF PCHX.fin_get_projectloc_code (rec.fin_factuur_key) IS NOT NULL
|
||||
THEN
|
||||
FLX.setflex('FIN', 121, rec.fin_factuur_key, PCHX.fin_get_projectloc_code (rec.fin_factuur_key));
|
||||
END IF;
|
||||
PCHX.fin_set_projectloc_code (rec.fin_factuur_key);
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
@@ -4748,42 +4808,9 @@ BEGIN
|
||||
v_errorhint := 'Geen kostensoort factuurregel';
|
||||
|
||||
--Kostensoort (factuurregel)
|
||||
IF SUBSTR(rec.kenmerk1,3,2) <> '71' -- boekstuknummer / dagboek
|
||||
THEN
|
||||
IF rec.kenmerk2 IS NULL
|
||||
THEN
|
||||
v_errorhint := 'Kostensoort opzoeken in de verplichting';
|
||||
SELECT prs_kostensoort_key
|
||||
INTO v_kostensoort_key
|
||||
FROM fin_factuur
|
||||
WHERE fin_factuur_key = rec.fin_factuur_key;
|
||||
|
||||
IF v_kostensoort_key IS NOT NULL
|
||||
THEN
|
||||
UPDATE fin_factuurregel
|
||||
SET prs_kostensoort_key = v_kostensoort_key
|
||||
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
|
||||
ELSE
|
||||
-- zet de factuur op incompeet als de kostensoort niet gevonden kan worden.
|
||||
UPDATE fin_factuur
|
||||
SET fin_factuur_statuses_key = 3,
|
||||
fin_factuur_opmerking = 'Kostensoort niet gevonden' || CHR(10) || fin_factuur_opmerking
|
||||
WHERE fin_factuur_key = rec.fin_factuur_key;
|
||||
END IF;
|
||||
ELSE
|
||||
UPDATE fin_factuurregel
|
||||
SET prs_kostensoort_key =
|
||||
(SELECT MAX (ks.prs_kostensoort_key)
|
||||
FROM prs_kostensoort ks
|
||||
WHERE ks.prs_kostensoort_upper =
|
||||
UPPER (rec.kenmerk2))
|
||||
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
PCHX.fin_set_kostensoort (rec.fin_factuur_key, rec.fin_factuurregel_key, rec.kenmerk2);
|
||||
|
||||
v_errorhint := 'Geen regelnummer factuurregel';
|
||||
|
||||
--Regelnummer (factuurregel)
|
||||
IF rec.kenmerk9 IS NULL
|
||||
THEN
|
||||
@@ -4795,7 +4822,6 @@ BEGIN
|
||||
END IF;
|
||||
|
||||
v_errorhint := 'Geen afw. boekdatum factuurregel';
|
||||
|
||||
--Afw. boekdatum (factuurregel)
|
||||
IF rec.kenmerk13 IS NULL
|
||||
THEN
|
||||
@@ -4815,12 +4841,7 @@ BEGIN
|
||||
v_afw_boekdatum);
|
||||
END IF;
|
||||
|
||||
IF PCHX.fin_get_locatie_code (rec.fin_factuur_key) IS NOT NULL
|
||||
THEN
|
||||
UPDATE fin_factuurregel SET fin_factuurregel_referentie = PCHX.fin_get_locatie_code (rec.fin_factuur_key)
|
||||
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
|
||||
|
||||
END IF;
|
||||
PCHX.fin_set_locatie_code (rec.fin_factuur_key, rec.fin_factuurregel_key);
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
Reference in New Issue
Block a user