HEIN#67252 -- Preventief onderhoud facturen direct naar de goedkeurder.

svn path=/Customer/trunk/; revision=51954
This commit is contained in:
Arthur Egberink
2021-06-16 10:09:42 +00:00
parent 7c3a79c963
commit 14f634b80f

View File

@@ -41,6 +41,8 @@ AS
p_tag IN VARCHAR2,
p_value IN VARCHAR2);
PROCEDURE fin_set_approver (p_factuur_key IN NUMBER);
END;
/
@@ -266,6 +268,91 @@ AS
|| xml.char_to_html(p_value)
|| '</' || p_tag || '>');
END;
PROCEDURE fin_set_approver (p_factuur_key IN NUMBER)
AS
v_count NUMBER;
v_perslid_key_goedkeur fin_factuur.prs_perslid_key_goedkeur%TYPE;
v_factuur_statuses_key fin_factuur.fin_factuur_statuses_key%TYPE;
v_factuur_totaal fin_factuur.fin_factuur_totaal%TYPE;
v_perslid_naam_goedkeur VARCHAR2 (100);
v_opdr_key mld_opdr.mld_opdr_key%TYPE;
v_contract_key cnt_contract.cnt_contract_key%TYPE;
v_bestelopdr_key bes_bestelopdr.bes_bestelopdr_key%TYPE;
v_srtdiscipline_key ins_tab_discipline.ins_srtdiscipline_key%TYPE;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_count := 0;
v_errorhint := 'Bepaal type factuur';
-- Laten we eens eerst kijken of we het over een contract of een opdracht hebben
SELECT mld_opdr_key, cnt_contract_key, bes_bestelopdr_key, fin_factuur_statuses_key, fin_factuur_totaal
INTO v_opdr_key, v_contract_key, v_bestelopdr_key, v_factuur_statuses_key, v_factuur_totaal
FROM fin_factuur
WHERE fin_factuur_key = p_factuur_key;
-- We kennen op dit moment nog geen functionaliteit voor contracten en bestelopdrachten
IF v_opdr_key IS NOT NULL
THEN
IF v_factuur_statuses_key = 2 -- ingevoerd
THEN
-- Opdrachten voor preventief onderhoud worden niet door de locatieverantwoordelijke
-- personen goedgekeurd. Deze gaan direct naar Joost
v_errorhint := 'Controleer rechten opdracht';
SELECT d.ins_srtdiscipline_key,
f.prs_perslid_key_goedkeur,
pf.prs_perslid_naam_friendly
INTO v_srtdiscipline_key,
v_perslid_key_goedkeur,
v_perslid_naam_goedkeur
FROM mld_opdr o, fin_factuur f, prs_v_perslid_fullnames_all pf,
mld_melding m, mld_stdmelding std, ins_tab_discipline d
WHERE f.mld_opdr_key = o.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 = d.ins_discipline_key
AND f.fin_factuur_key = p_factuur_key
AND f.prs_perslid_key_goedkeur = pf.prs_perslid_key;
IF v_srtdiscipline_key = 41 -- preventief onderhoud
THEN
-- Als status van de factuur nog ingevoerd is dan zetten we de status naar Ter goedkeuring (5)
v_errorhint := 'Zet de status naar Ter Goedkeuring';
fac.trackaction (
'FINFOK',
p_factuur_key,
3,
NULL,
'Expliciete goedkeuring door aangewezen goedkeurder: '
|| v_perslid_naam_goedkeur);
UPDATE fin_factuur
SET fin_factuur_statuses_key = 5
WHERE fin_factuur_key = p_factuur_key;
/* UPDATE fin_factuur
SET prs_perslid_key_goedkeur = v_perslid_key_beh
WHERE fin_factuur_key = p_factuur_key;
*/
END IF;
END IF;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('YASK.fin_set_approver', 'E', v_errormsg || ' (' || p_factuur_key || ')' , v_errorhint);
END;
END;
/