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

svn path=/Customer/; revision=67841
This commit is contained in:
Erik Groener
2025-02-04 13:58:58 +00:00
parent 1672b07965
commit 61584ab3a0

View File

@@ -18,36 +18,82 @@ SET DEFINE OFF
------ payload begin ------
DECLARE
-- Maak in de GUI eerst een nieuw project aan.
-- Vul hieronder de namen van het bestaande project/deelproject in dat afgescheiden moet worden.
-- Vul ook de naam van het nieuwe project in waar het deelproject naar toe moet.
-- Vergeet niet de autorisatie op het nieuwe project te zetten.
oud_project_naam VARCHAR2(100) := 'Vredespaleis Den Haag Onderhoud';
oud_deelproject_naam VARCHAR2(100) := '521960 Achterstallig onderhoud';
deelproject_key NUMBER(10);
nieuw_project_naam VARCHAR2(100) := 'Vredespaleis A';
oud_deelproject_a_naam VARCHAR2(100) := '521950- deelproject A asbest';
oud_deelproject_b_naam VARCHAR2(100) := '521950 deelproject B asbest';
oud_deelproject_a_key NUMBER(10);
oud_deelproject_b_key NUMBER(10);
nieuw_project_naam VARCHAR2(100) := 'Vredespaleis Den Haag Asbest';
nieuw_project_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 = oud_project_naam
AND p.bgt_project_omschrijving = oud_deelproject_naam;
SELECT ins_discipline_key
INTO nieuw_project_key
FROM ins_tab_discipline
WHERE ins_discipline_omschrijving = nieuw_project_naam;
UPDATE bgt_project
SET ins_discipline_key = nieuw_project_key
WHERE bgt_project_key = deelproject_key;
FUNCTION getProject(p_project_naam IN VARCHAR2) RETURN NUMBER
AS
project_key NUMBER(10);
BEGIN
BEGIN
SELECT ins_discipline_key
INTO project_key
FROM ins_tab_discipline
WHERE ins_discipline_omschrijving = p_project_naam;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO ins_tab_discipline
( ins_discipline_module
, ins_discipline_omschrijving
, ins_discipline_btw
, ins_discipline_volgnr
, ins_discipline_image
, ins_discipline_externnr
)
VALUES
('BGT', p_project_naam, 1, 1, 'fa-eur', '521950')
RETURNING ins_discipline_key
INTO project_key;
END;
RETURN project_key;
END;
FUNCTION getDeelproject( p_oud_project_naam IN VARCHAR2
, p_oud_deelproject_naam IN VARCHAR2
) RETURN NUMBER
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;
RETURN deelproject_key;
END;
PROCEDURE splitsProject( p_nieuw_project_key IN NUMBER
, p_deelproject_key IN NUMBER
)
AS
BEGIN
UPDATE bgt_project
SET ins_discipline_key = p_nieuw_project_key
WHERE bgt_project_key = p_deelproject_key;
UPDATE bgt_budget
SET ins_discipline_key = nieuw_project_key
WHERE bgt_project_key = deelproject_key;
UPDATE bgt_budget
SET ins_discipline_key = p_nieuw_project_key
WHERE bgt_project_key = p_deelproject_key;
END;
BEGIN
nieuw_project_key := getProject(nieuw_project_naam);
oud_deelproject_a_key := getDeelproject(oud_project_naam, oud_deelproject_a_naam);
splitsProject(nieuw_project_key, oud_deelproject_a_key);
oud_deelproject_b_key := getDeelproject(oud_project_naam, oud_deelproject_b_naam);
splitsProject(nieuw_project_key, oud_deelproject_b_key);
END;
/