TWYN#87300 Projectsplitsing Vredespaleis: Kopiëren budgetten en contracten mogelijk?

svn path=/Customer/; revision=67901
This commit is contained in:
Erik Groener
2025-02-07 08:21:15 +00:00
parent 27093834b7
commit b18d14962a

View File

@@ -29,15 +29,18 @@ DECLARE
nieuw_project_naam VARCHAR2(100) := 'Vredespaleis Den Haag Asbest';
nieuw_project_key NUMBER(10);
FUNCTION getProject(p_project_naam IN VARCHAR2) RETURN NUMBER
FUNCTION getProject( p_oud_project_naam IN VARCHAR2
, p_nieuw_project_naam IN VARCHAR2
) RETURN NUMBER
AS
project_key NUMBER(10);
project_key NUMBER(10);
bgt_params_key NUMBER(10);
BEGIN
BEGIN
SELECT ins_discipline_key
INTO project_key
FROM ins_tab_discipline
WHERE ins_discipline_omschrijving = p_project_naam;
WHERE ins_discipline_omschrijving = p_nieuw_project_naam;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO ins_tab_discipline
@@ -48,11 +51,33 @@ DECLARE
, ins_discipline_image
, ins_discipline_externnr
)
VALUES
('BGT', p_project_naam, 1, 1, 'fa-eur', '521950')
VALUES ('BGT', p_nieuw_project_naam, 1, 1, 'fa-eur', '521950')
RETURNING ins_discipline_key
INTO project_key;
END;
BEGIN
SELECT bgt_disc_params_key
INTO bgt_params_key
FROM bgt_disc_params
WHERE bgt_ins_discipline_key = project_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO bgt_disc_params
( bgt_ins_discipline_key
, bgt_disc_params_code
, bgt_disc_params_opdrachtgever
, bgt_disc_params_startdatum
)
SELECT project_key
, bgt_disc_params_code || 'A'
, bgt_disc_params_opdrachtgever
, bgt_disc_params_startdatum
FROM bgt_disc_params p
, ins_tab_discipline d
WHERE d.ins_discipline_key = p.bgt_ins_discipline_key
AND d.ins_discipline_omschrijving = p_oud_project_naam;
END;
RETURN project_key;
END;
@@ -62,13 +87,18 @@ DECLARE
AS
deelproject_key NUMBER(10);
BEGIN
SELECT bgt_project_key
INTO deelproject_key
FROM bgt_project p
, ins_tab_discipline d
WHERE d.ins_discipline_key = p.ins_discipline_key
AND d.ins_discipline_omschrijving = p_oud_project_naam
AND p.bgt_project_omschrijving = p_oud_deelproject_naam;
BEGIN
SELECT bgt_project_key
INTO deelproject_key
FROM bgt_project p
, ins_tab_discipline d
WHERE d.ins_discipline_key = p.ins_discipline_key
AND d.ins_discipline_omschrijving = p_oud_project_naam
AND p.bgt_project_omschrijving = p_oud_deelproject_naam;
EXCEPTION
WHEN NO_DATA_FOUND THEN
deelproject_key := -1;
END;
RETURN deelproject_key;
END;
@@ -84,16 +114,30 @@ DECLARE
UPDATE bgt_budget
SET ins_discipline_key = p_nieuw_project_key
WHERE bgt_project_key = p_deelproject_key;
UPDATE prs_kostenplaats
SET ins_discipline_key = p_nieuw_project_key
WHERE prs_kostenplaats_key IN
(SELECT prs_kostenplaats_key
FROM bgt_project
WHERE bgt_project_key = p_nieuw_project_key
);
END;
BEGIN
nieuw_project_key := getProject(nieuw_project_naam);
nieuw_project_key := getProject(oud_project_naam, nieuw_project_naam);
oud_deelproject_a_key := getDeelproject(oud_project_naam, oud_deelproject_a_naam);
splitsProject(nieuw_project_key, oud_deelproject_a_key);
IF (oud_deelproject_a_key > 0)
THEN
splitsProject(nieuw_project_key, oud_deelproject_a_key);
END IF;
oud_deelproject_b_key := getDeelproject(oud_project_naam, oud_deelproject_b_naam);
splitsProject(nieuw_project_key, oud_deelproject_b_key);
IF (oud_deelproject_b_key > 0)
THEN
splitsProject(nieuw_project_key, oud_deelproject_b_key);
END IF;
END;
/