890 lines
39 KiB
SQL
890 lines
39 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific sql statements for the FACILITOR database
|
|
|
|
DEFINE thisfile = 'TWYN_PAC.SQL'
|
|
DEFINE dbuser = '^TWYN'
|
|
DEFINE custid = 'TWYN'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SPOOL &fcltlogfile
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
--
|
|
-- Eigen logfile voor BGT
|
|
--
|
|
CREATE OR REPLACE PROCEDURE twyn_log ( p_actie IN VARCHAR2
|
|
, p_level IN VARCHAR2
|
|
, p_msg IN VARCHAR2
|
|
, p_disc_key IN NUMBER DEFAULT NULL
|
|
, p_prj_key IN NUMBER DEFAULT NULL
|
|
, p_rub_key IN NUMBER DEFAULT NULL
|
|
, p_grp_key IN NUMBER DEFAULT NULL
|
|
, p_srt_key IN NUMBER DEFAULT NULL
|
|
, p_bgt_key IN NUMBER DEFAULT NULL
|
|
, p_mut_key IN NUMBER DEFAULT NULL
|
|
, p_opdr_key IN NUMBER DEFAULT NULL
|
|
, p_fact_key IN NUMBER DEFAULT NULL
|
|
, p_bedr_key IN NUMBER DEFAULT NULL
|
|
, p_kpls_key IN NUMBER DEFAULT NULL
|
|
, p_kgrp_key IN NUMBER DEFAULT NULL
|
|
)
|
|
AS
|
|
v_volgnr NUMBER(10);
|
|
BEGIN
|
|
SELECT COALESCE(MAX(volgnr), 0) + 1
|
|
INTO v_volgnr
|
|
FROM twyn_bgtlog;
|
|
--
|
|
INSERT INTO twyn_bgtlog VALUES
|
|
( v_volgnr
|
|
, p_actie
|
|
, p_level
|
|
, SYSDATE
|
|
, p_msg
|
|
, p_disc_key, p_prj_key, p_rub_key, p_grp_key, p_srt_key
|
|
, p_bgt_key, p_mut_key
|
|
, p_opdr_key, p_fact_key, p_bedr_key
|
|
, p_kpls_key, p_kgrp_key
|
|
);
|
|
-- COMMIT;
|
|
END twyn_log;
|
|
/
|
|
|
|
--
|
|
--
|
|
--
|
|
CREATE OR REPLACE PROCEDURE twyn_delete_deelproject ( p_deelproject_key IN NUMBER
|
|
, p_alleen_fin IN BOOLEAN DEFAULT FALSE
|
|
)
|
|
AS
|
|
-- Verwijder het deelproject met bgt_project_key = n.
|
|
-- Met parameter p_alleen_fin worden alleen de budget- en contractgegevens verwijderd.
|
|
-- Default is het hele deelproject verwijderen, dus ook kostenplaatsen, kosten- rubriek, soortgrp en soort.
|
|
v_delete_str VARCHAR2 (100) := 'DELETE prj=' || TO_CHAR(p_deelproject_key);
|
|
v_err_count NUMBER;
|
|
|
|
|
|
PROCEDURE log_info( p_code IN VARCHAR2 DEFAULT NULL
|
|
, p_msg IN VARCHAR2 DEFAULT NULL
|
|
, p_prj_key IN NUMBER DEFAULT NULL
|
|
, p_rub_key IN NUMBER DEFAULT NULL
|
|
, p_grp_key IN NUMBER DEFAULT NULL
|
|
, p_srt_key IN NUMBER DEFAULT NULL
|
|
, p_bgt_key IN NUMBER DEFAULT NULL
|
|
, p_mut_key IN NUMBER DEFAULT NULL
|
|
, p_opdr_key IN NUMBER DEFAULT NULL
|
|
, p_fact_key IN NUMBER DEFAULT NULL
|
|
, p_bedr_key IN NUMBER DEFAULT NULL
|
|
)
|
|
AS
|
|
v_ora_err_num NUMBER;
|
|
v_ora_err_msg VARCHAR2(200);
|
|
v_err_msg VARCHAR2(1000);
|
|
v_msg VARCHAR2(2000);
|
|
BEGIN
|
|
IF (p_code IN ('W', 'E')) THEN
|
|
v_ora_err_num := SQLCODE;
|
|
v_ora_err_msg := SUBSTR (SQLERRM, 1, 200);
|
|
v_msg := 'ORACLE (error ' || v_ora_err_num || '/' || v_ora_err_msg || ')';
|
|
IF (p_msg IS NOT NULL) THEN
|
|
v_msg := v_msg || ': ' || p_msg;
|
|
END IF;
|
|
ELSE
|
|
v_msg := p_msg;
|
|
END IF;
|
|
twyn_log (v_delete_str, p_code, v_msg, NULL, p_prj_key, p_rub_key, p_grp_key, p_srt_key, p_bgt_key, p_mut_key, p_opdr_key, p_fact_key, p_bedr_key);
|
|
END;
|
|
|
|
|
|
PROCEDURE delete_contracten(p_bgt_project_key IN NUMBER)
|
|
AS
|
|
CURSOR c_project_opdr
|
|
IS
|
|
SELECT s.prs_kostensoort_key
|
|
FROM bgt_project p
|
|
, bgt_kostenrubriek r
|
|
, prs_kostensoortgrp g
|
|
, prs_kostensoort s
|
|
WHERE p.bgt_project_key = r.bgt_project_key
|
|
AND r.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key
|
|
AND g.prs_kostensoortgrp_key = s.prs_kostensoortgrp_key
|
|
AND p.bgt_project_key = p_bgt_project_key;
|
|
|
|
CURSOR c_opdracht(p_kostensoort_key IN NUMBER)
|
|
IS
|
|
SELECT o.mld_uitvoerende_keys
|
|
, o.mld_opdr_key
|
|
FROM mld_opdr o
|
|
WHERE o.prs_kostensoort_key = p_kostensoort_key;
|
|
|
|
iprj NUMBER;
|
|
iopd NUMBER;
|
|
ibdr NUMBER;
|
|
|
|
PROCEDURE delete_prs_bedrijf( p_project_key IN NUMBER
|
|
, p_mld_opdr_key IN NUMBER
|
|
, p_bedrijf_key IN NUMBER
|
|
)
|
|
AS
|
|
i NUMBER;
|
|
xprj NUMBER;
|
|
opdr NUMBER;
|
|
bedr NUMBER;
|
|
v_aantal_projecten NUMBER;
|
|
v_aantal_opdrachten NUMBER;
|
|
BEGIN
|
|
xprj := p_project_key;
|
|
opdr := p_mld_opdr_key;
|
|
bedr := p_bedrijf_key;
|
|
SELECT COUNT(DISTINCT p.bgt_project_key) aantal_projecten
|
|
, COUNT(o.mld_opdr_key) aantal_opdrachten
|
|
INTO v_aantal_projecten
|
|
, v_aantal_opdrachten
|
|
FROM bgt_project p
|
|
, bgt_kostenrubriek r
|
|
, prs_kostensoortgrp g
|
|
, prs_kostensoort s
|
|
, mld_opdr o
|
|
WHERE p.bgt_project_key = r.bgt_project_key
|
|
AND r.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key
|
|
AND g.prs_kostensoortgrp_key = s.prs_kostensoortgrp_key
|
|
AND s.prs_kostensoort_key = o.prs_kostensoort_key
|
|
AND o.mld_uitvoerende_keys = p_bedrijf_key;
|
|
--
|
|
-- Om een bedrijf die alleen in het project gebruikt wordt te kunnen verwijderen
|
|
-- mogen er geen referenties meer bestaan.
|
|
BEGIN
|
|
--
|
|
IF (v_aantal_projecten = 1 AND v_aantal_opdrachten = 1) THEN
|
|
-- bedrijf wordt alleen in het huidige project
|
|
-- en in de huidige contract gebruikt, dus kan verwijderd worden.
|
|
DELETE
|
|
FROM prs_bedrijf
|
|
WHERE prs_bedrijf_key = p_bedrijf_key;
|
|
--
|
|
log_info('I', 'Bedrijf verwijderd'
|
|
, xprj, NULL, NULL, NULL, NULL, NULL, opdr, NULL, bedr
|
|
);
|
|
--
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN log_info('W', NULL, xprj, NULL, NULL, NULL, NULL, NULL, opdr, NULL, bedr);
|
|
-- xmsg, xprj, xrub, xgrp, xsrt, xbgt, xmut, opdr, fact, bedr
|
|
END;
|
|
END;
|
|
|
|
PROCEDURE delete_fin_factuur( p_project_key IN NUMBER
|
|
, p_mld_opdr_key IN NUMBER)
|
|
AS
|
|
i NUMBER;
|
|
xprj NUMBER;
|
|
opdr NUMBER;
|
|
BEGIN
|
|
xprj := p_project_key;
|
|
opdr := p_mld_opdr_key;
|
|
BEGIN
|
|
DELETE
|
|
FROM fin_factuur
|
|
WHERE mld_opdr_key = p_mld_opdr_key;
|
|
--
|
|
i := sql%rowcount;
|
|
log_info( 'I', 'Aantal facturen verwijderd: ' || TO_CHAR(i)
|
|
, xprj, NULL, NULL, NULL, NULL, NULL, opdr
|
|
);
|
|
EXCEPTION
|
|
WHEN OTHERS THEN log_info('W', NULL, xprj, NULL, NULL, NULL, NULL, NULL, opdr);
|
|
-- xmsg, xprj, xrub, xgrp, xsrt, xbgt, xmut, opdr, fact, bedr
|
|
END;
|
|
END;
|
|
|
|
PROCEDURE delete_fin_factuur_onbekend(p_project_key IN NUMBER)
|
|
AS
|
|
i NUMBER;
|
|
BEGIN
|
|
-- Factuur verwijst naar een kostensoort binnen het te verwijderen project,
|
|
-- maar is niet via de mld_opdr verwijderd.
|
|
DELETE
|
|
FROM fin_factuur
|
|
WHERE prs_kostensoort_key IN
|
|
(SELECT s.prs_kostensoort_key
|
|
FROM prs_kostensoort s
|
|
, prs_kostensoortgrp g
|
|
, bgt_kostenrubriek r
|
|
WHERE s.prs_kostensoortgrp_key = g.prs_kostensoortgrp_key
|
|
AND g.bgt_kostenrubriek_key = r.bgt_kostenrubriek_key
|
|
AND r.bgt_project_key = p_project_key
|
|
);
|
|
--
|
|
i := sql%rowcount;
|
|
log_info( 'I', 'Aantal facturen alleen aan kostensoort gebonden verwijderd: ' || TO_CHAR(i)
|
|
, p_project_key
|
|
);
|
|
END;
|
|
|
|
PROCEDURE delete_mld_opdr( p_project_key IN NUMBER
|
|
, p_mld_opdr_key IN NUMBER)
|
|
AS
|
|
xprj NUMBER;
|
|
opdr NUMBER;
|
|
BEGIN
|
|
xprj := p_project_key;
|
|
opdr := p_mld_opdr_key;
|
|
BEGIN
|
|
DELETE
|
|
FROM mld_opdr
|
|
WHERE mld_opdr_key = p_mld_opdr_key;
|
|
--
|
|
log_info('I', 'Opdracht verwijderd'
|
|
, xprj, NULL, NULL, NULL, NULL, NULL, opdr
|
|
);
|
|
EXCEPTION
|
|
WHEN OTHERS THEN log_info('W', NULL, xprj, NULL, NULL, NULL, NULL, NULL, opdr);
|
|
-- xmsg, xprj, xrub, xgrp, xsrt, xbgt, xmut, opdr, fact, bedr
|
|
END;
|
|
END;
|
|
|
|
BEGIN -- delete_contracten
|
|
iprj := p_bgt_project_key;
|
|
log_info('I', 'Bedrijven, facturen en contracten:');
|
|
BEGIN
|
|
FOR l_prj IN c_project_opdr
|
|
LOOP
|
|
FOR l_opdr IN c_opdracht(l_prj.prs_kostensoort_key)
|
|
LOOP
|
|
iopd := l_opdr.mld_opdr_key;
|
|
ibdr := l_opdr.mld_uitvoerende_keys;
|
|
delete_prs_bedrijf (p_bgt_project_key, l_opdr.mld_opdr_key, l_opdr.mld_uitvoerende_keys);
|
|
delete_fin_factuur (p_bgt_project_key, l_opdr.mld_opdr_key);
|
|
delete_mld_opdr (p_bgt_project_key, l_opdr.mld_opdr_key);
|
|
END LOOP;
|
|
END LOOP;
|
|
delete_fin_factuur_onbekend(p_bgt_project_key);
|
|
EXCEPTION
|
|
WHEN OTHERS THEN log_info('W', NULL, iprj, NULL, NULL, NULL, NULL, NULL, iopd, NULL, ibdr);
|
|
-- xmsg, iprj, irub, igrp, isrt, ibgt, imut, iopd, ifac, ibdr
|
|
END;
|
|
END; -- delete_contracten
|
|
|
|
|
|
PROCEDURE delete_budgetten(p_bgt_project_key IN NUMBER)
|
|
AS
|
|
CURSOR c_project_bud
|
|
IS
|
|
SELECT b.bgt_budget_key
|
|
, b.bgt_kostenrubriek_key
|
|
, b.prs_kostensoortgrp_key
|
|
, b.prs_kostensoort_key
|
|
FROM bgt_budget b
|
|
WHERE b.bgt_project_key = p_bgt_project_key;
|
|
|
|
ibgt NUMBER;
|
|
iprj NUMBER;
|
|
irub NUMBER;
|
|
igrp NUMBER;
|
|
isrt NUMBER;
|
|
v_budget_key NUMBER;
|
|
i NUMBER;
|
|
|
|
PROCEDURE delete_mutaties( p_project_key IN NUMBER
|
|
, p_budget_key IN NUMBER
|
|
)
|
|
AS
|
|
i NUMBER;
|
|
xprj NUMBER;
|
|
xbgt NUMBER;
|
|
BEGIN
|
|
xprj := p_project_key;
|
|
xbgt := p_budget_key;
|
|
BEGIN
|
|
DELETE
|
|
FROM bgt_budgetmutatie
|
|
WHERE bgt_budget_key_van = p_budget_key
|
|
OR bgt_budget_key_naar = p_budget_key;
|
|
--
|
|
i := sql%rowcount;
|
|
log_info('I', 'Aantal budgetmutaties verwijderd: ' || TO_CHAR(i)
|
|
, xprj, NULL, NULL, NULL, xbgt
|
|
);
|
|
EXCEPTION
|
|
WHEN OTHERS THEN log_info('W', NULL, xprj, NULL, NULL, NULL, xbgt);
|
|
-- xmsg, xprj, xrub, xgrp, xsrt, xbgt, xmut, opdr, fact, bedr
|
|
END;
|
|
END;
|
|
|
|
PROCEDURE delete_budget( p_project_key IN NUMBER
|
|
, p_budget_key IN NUMBER
|
|
)
|
|
AS
|
|
xprj NUMBER;
|
|
xbgt NUMBER;
|
|
BEGIN
|
|
xprj := p_project_key;
|
|
xbgt := p_budget_key;
|
|
BEGIN
|
|
DELETE
|
|
FROM bgt_budget
|
|
WHERE bgt_budget_key = p_budget_key;
|
|
--
|
|
log_info('I', 'Budget verwijderd'
|
|
, xprj, NULL, NULL, NULL, xbgt
|
|
);
|
|
EXCEPTION
|
|
WHEN OTHERS THEN log_info('W', NULL, xprj, NULL, NULL, NULL, xbgt);
|
|
-- xmsg, xprj, xrub, xgrp, xsrt, xbgt, xmut, opdr, fact, bedr
|
|
END;
|
|
END;
|
|
|
|
BEGIN -- delete_budgetten
|
|
-- Ongeldige budgetten verwijderen.
|
|
BEGIN
|
|
DELETE
|
|
FROM bgt_budgetmutatie
|
|
WHERE bgt_budget_key_van IN (SELECT bgt_budget_key FROM bgt_budget WHERE bgt_kostenrubriek_key IS NULL)
|
|
OR bgt_budget_key_naar IN (SELECT bgt_budget_key FROM bgt_budget WHERE bgt_kostenrubriek_key IS NULL);
|
|
--
|
|
DELETE
|
|
FROM bgt_budget
|
|
WHERE bgt_kostenrubriek_key IS NULL;
|
|
i := sql%rowcount;
|
|
log_info('I', 'Aantal ongeldige budgetten verwijderd: ' || TO_CHAR(i));
|
|
EXCEPTION
|
|
WHEN OTHERS THEN log_info('W', 'Ongeldige budgetten');
|
|
END;
|
|
--
|
|
log_info('I', 'Budgetmutaties en budgetten:');
|
|
FOR l_prj IN c_project_bud
|
|
LOOP
|
|
iprj := p_bgt_project_key;
|
|
irub := l_prj.bgt_kostenrubriek_key;
|
|
igrp := l_prj.prs_kostensoortgrp_key;
|
|
isrt := l_prj.prs_kostensoort_key;
|
|
ibgt := l_prj.bgt_budget_key;
|
|
BEGIN
|
|
delete_mutaties(iprj, ibgt);
|
|
delete_budget (iprj, ibgt);
|
|
EXCEPTION
|
|
WHEN OTHERS THEN log_info('W', NULL, iprj, irub, igrp, isrt, ibgt);
|
|
-- xmsg, iprj, irub, igrp, isrt, ibgt, imut, iopd, ifac, ibdr
|
|
END;
|
|
END LOOP;
|
|
END; -- delete_budgetten
|
|
|
|
-- Voor verwijderen van deelproject is delete_kostenplaatsen niet meer van toepassing
|
|
-- omdat een kostenplaats nu bij een project (ins_discipline) hoort.
|
|
-- Alleen als de discipline wordt verwijderd zouden ook de bijbehorende kostenplaatsen kunnen worden verwijderd.
|
|
PROCEDURE delete_kostenplaatsen(p_bgt_project_key IN NUMBER)
|
|
AS
|
|
CURSOR c_kostenplaats(p_kpgrp_key In NUMBER)
|
|
IS
|
|
SELECT prs_kostenplaats_key
|
|
FROM prs_kostenplaats
|
|
WHERE prs_kostenplaatsgrp_key = p_kpgrp_key;
|
|
|
|
iprj NUMBER;
|
|
iopd NUMBER;
|
|
ibdr NUMBER;
|
|
v_kpgrp_key NUMBER;
|
|
i NUMBER;
|
|
BEGIN -- delete_kostenplaatsen
|
|
iprj := p_bgt_project_key;
|
|
log_info('I', 'Kostenplaatsen en kostenplaatsgroep:');
|
|
-- Eerst even wat referenties verwijderen.
|
|
log_info('I', 'referenties vanuit bgt_project wissen..');
|
|
--
|
|
UPDATE bgt_project
|
|
SET prs_kostenplaats_key = NULL
|
|
WHERE bgt_project_key = p_bgt_project_key;
|
|
--
|
|
log_info('I', 'Referenties vanuit kostensoort wissen..');
|
|
--
|
|
UPDATE prs_kostensoort
|
|
SET prs_kostenplaats_key = NULL
|
|
WHERE prs_kostensoort_key IN
|
|
(SELECT s.prs_kostensoort_key
|
|
FROM prs_kostensoort s
|
|
, prs_kostensoortgrp g
|
|
, bgt_kostenrubriek r
|
|
WHERE s.prs_kostensoortgrp_key = g.prs_kostensoortgrp_key
|
|
AND g.bgt_kostenrubriek_key = r.bgt_kostenrubriek_key
|
|
AND r.bgt_project_key = p_bgt_project_key
|
|
);
|
|
--
|
|
BEGIN
|
|
SELECT g.prs_kostenplaatsgrp_key
|
|
INTO v_kpgrp_key
|
|
FROM prs_kostenplaatsgrp g
|
|
WHERE g.bgt_project_key = p_bgt_project_key;
|
|
--
|
|
-- Foutieve verwijzingen verwijderen.
|
|
-- (vanuit een ander deelproject wordt naar een kostenplaats verwezen die hier verwijderd wordt.)
|
|
log_info('I', 'Referenties vanuit ander project wissen..');
|
|
--
|
|
UPDATE bgt_project
|
|
SET prs_kostenplaats_key = NULL
|
|
WHERE prs_kostenplaats_key IN
|
|
(SELECT prs_kostenplaats_key
|
|
FROM prs_kostenplaats
|
|
WHERE prs_kostenplaatsgrp_key = v_kpgrp_key
|
|
);
|
|
--
|
|
log_info('I', 'Referenties vanuit andere kostensoort wissen..');
|
|
--
|
|
UPDATE prs_kostensoort
|
|
SET prs_kostenplaats_key = NULL
|
|
WHERE prs_kostenplaats_key IN
|
|
(SELECT prs_kostenplaats_key
|
|
FROM prs_kostenplaats
|
|
WHERE prs_kostenplaatsgrp_key = v_kpgrp_key
|
|
);
|
|
--
|
|
log_info('I', 'Referenties vanuit opdracht wissen..');
|
|
--
|
|
UPDATE mld_opdr
|
|
SET prs_kostenplaats_key = NULL
|
|
WHERE prs_kostenplaats_key IN
|
|
(SELECT kp.prs_kostenplaats_key
|
|
FROM prs_kostenplaats kp
|
|
WHERE kp.prs_kostenplaatsgrp_key = v_kpgrp_key
|
|
);
|
|
--
|
|
log_info('I', 'Referenties vanuit budget wissen..');
|
|
UPDATE bgt_budget
|
|
SET prs_kostenplaats_key = NULL
|
|
WHERE prs_kostenplaats_key IN
|
|
(SELECT kp.prs_kostenplaats_key
|
|
FROM prs_kostenplaats kp
|
|
WHERE kp.prs_kostenplaatsgrp_key = v_kpgrp_key
|
|
);
|
|
--
|
|
-- kostenplaatsen van dit project verwijderen
|
|
DELETE
|
|
FROM prs_kostenplaats
|
|
WHERE prs_kostenplaatsgrp_key = v_kpgrp_key;
|
|
--
|
|
i := sql%rowcount;
|
|
log_info('I', 'Aantal kostenplaatsen verwijderd: ' || TO_CHAR(i)
|
|
, iprj
|
|
);
|
|
-- kostenplaatsgroep van dit project verwijderen
|
|
DELETE
|
|
FROM prs_kostenplaatsgrp
|
|
WHERE prs_kostenplaatsgrp_key = v_kpgrp_key;
|
|
log_info('I', 'Kostenplaatsgroep verwijderd: ' || TO_CHAR(v_kpgrp_key)
|
|
, iprj
|
|
);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN log_info('I', 'Geen kostenplaatsgroep aanwezig.');
|
|
WHEN OTHERS THEN log_info('W', NULL, iprj, NULL, NULL, NULL, NULL);
|
|
-- xmsg, iprj, irub, igrp, isrt, ibgt, imut, iopd, ifac, ibdr
|
|
|
|
END;
|
|
END; -- delete_kostenplaatsen
|
|
|
|
PROCEDURE delete_deelproject(p_bgt_project_key IN NUMBER)
|
|
AS
|
|
i NUMBER;
|
|
BEGIN -- delete_deelproject
|
|
log_info('I', 'Kostensoort, kostensoortgroep, kostenrubriek en project:');
|
|
BEGIN
|
|
DELETE
|
|
FROM prs_kostensoort
|
|
WHERE prs_kostensoortgrp_key IN
|
|
(SELECT g.prs_kostensoortgrp_key
|
|
FROM bgt_kostenrubriek r
|
|
, prs_kostensoortgrp g
|
|
WHERE g.bgt_kostenrubriek_key = r.bgt_kostenrubriek_key
|
|
AND r.bgt_project_key = p_bgt_project_key
|
|
);
|
|
i := sql%rowcount;
|
|
log_info('I', 'Aantal kostensoorten verwijderd: ' || TO_CHAR(i));
|
|
--
|
|
DELETE
|
|
FROM prs_kostensoortgrp
|
|
WHERE bgt_kostenrubriek_key IN
|
|
(SELECT r.bgt_kostenrubriek_key
|
|
FROM bgt_kostenrubriek r
|
|
WHERE r.bgt_project_key = p_bgt_project_key
|
|
);
|
|
i := sql%rowcount;
|
|
log_info('I', 'Aantal kostensoortgroepen verwijderd: ' || TO_CHAR(i));
|
|
--
|
|
DELETE
|
|
FROM bgt_kostenrubriek
|
|
WHERE bgt_project_key = p_bgt_project_key;
|
|
i := sql%rowcount;
|
|
log_info('I', 'Aantal kostenrubrieken verwijderd: ' || TO_CHAR(i));
|
|
--
|
|
DELETE
|
|
FROM bgt_project
|
|
WHERE bgt_project_key = p_bgt_project_key;
|
|
--
|
|
log_info('I', 'Deelproject verwijderd', p_bgt_project_key);
|
|
EXCEPTION
|
|
WHEN OTHERS THEN log_info('W', NULL, p_bgt_project_key);
|
|
END;
|
|
END; -- delete_deelproject
|
|
|
|
BEGIN
|
|
log_info('I', 'START');
|
|
delete_contracten(p_deelproject_key);
|
|
delete_budgetten(p_deelproject_key);
|
|
IF (NOT p_alleen_fin) THEN
|
|
delete_deelproject(p_deelproject_key);
|
|
END IF;
|
|
log_info('I', 'EINDE');
|
|
SELECT COUNT(*)
|
|
INTO v_err_count
|
|
FROM twyn_bgtlog
|
|
WHERE loglevel IN ('W','E')
|
|
AND actie = 'DELETE prj=' || TO_CHAR(p_deelproject_key);
|
|
log_info('I', 'Aantal fouten: '|| TO_CHAR(v_err_count) );
|
|
END;
|
|
/
|
|
--
|
|
--
|
|
--
|
|
CREATE OR REPLACE PACKAGE twyn
|
|
AS
|
|
TYPE t_cursor IS REF CURSOR;
|
|
|
|
PROCEDURE twyn_v_detailoverzicht ( user_key IN NUMBER
|
|
, p_datum_van IN VARCHAR2
|
|
, p_datum_tot IN VARCHAR2
|
|
, p_cursor OUT t_cursor
|
|
, p_where IN VARCHAR2
|
|
);
|
|
PROCEDURE twyn_v_contract_rubriek ( user_key IN NUMBER
|
|
, p_datum_van IN VARCHAR2
|
|
, p_datum_tot IN VARCHAR2
|
|
, p_cursor OUT t_cursor
|
|
, p_where IN VARCHAR2
|
|
);
|
|
PROCEDURE twyn_v_contr_fact_bedrijf ( user_key IN NUMBER
|
|
, p_datum_van IN VARCHAR2
|
|
, p_datum_tot IN VARCHAR2
|
|
, p_cursor OUT t_cursor
|
|
, p_where IN VARCHAR2
|
|
);
|
|
END twyn;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY twyn
|
|
AS
|
|
PROCEDURE twyn_v_detailoverzicht ( user_key IN NUMBER
|
|
, p_datum_van IN VARCHAR2
|
|
, p_datum_tot IN VARCHAR2
|
|
, p_cursor OUT t_cursor
|
|
, p_where IN VARCHAR2
|
|
)
|
|
AS
|
|
v_datum_van DATE;
|
|
v_datum_tot DATE;
|
|
|
|
v_part_A VARCHAR2(32767);
|
|
v_part_B VARCHAR2(32767);
|
|
v_part_W VARCHAR2(32767);
|
|
v_part_T VARCHAR2(32767);
|
|
v_where VARCHAR2(32767);
|
|
|
|
BEGIN
|
|
v_datum_van := TO_DATE(p_datum_van, 'dd-mm-yyyy');
|
|
v_datum_tot := TO_DATE(p_datum_tot, 'dd-mm-yyyy');
|
|
v_part_W := SUBSTR(p_where, INSTR(p_where, 'WHERE')+6);
|
|
v_where := CASE WHEN v_part_W IS NOT NULL THEN 'AND ' || v_part_W ELSE '' END;
|
|
|
|
v_part_A := 'SELECT f.*'
|
|
|| ' , 0 budget_origineel_exc'
|
|
|| ' , 0 budget_origineel_btw'
|
|
|| ' , 0 budget_actueel_exc'
|
|
|| ' , 0 budget_actueel_btw'
|
|
|| ' , 0 budget_reserve_exc'
|
|
|| ' , 0 budget_reserve_btw'
|
|
|| ' , 0 budget_mutatie_exc'
|
|
|| ' , 0 budget_mutatie_btw'
|
|
|| ' , BGT.getGecontracteerd(o.mld_opdr_key, 0, null, to_date(''' || p_datum_tot || ''', ''dd-mm-yyyy'')) gecontracteerd_exc'
|
|
|| ' , BGT.getGecontracteerd(o.mld_opdr_key, 1, null, to_date(''' || p_datum_tot || ''', ''dd-mm-yyyy'')) gecontracteerd_btw'
|
|
|| ' , BGT.getGefactureerd (o.mld_opdr_key, 0, null, to_date(''' || p_datum_tot || ''', ''dd-mm-yyyy'')) gefactureerd_exc'
|
|
|| ' , BGT.getGefactureerd (o.mld_opdr_key, 1, null, to_date(''' || p_datum_tot || ''', ''dd-mm-yyyy'')) gefactureerd_btw'
|
|
|| ' , p.startdatum_p'
|
|
|| ' , ''' || p_datum_tot || ''' bgt_datum'
|
|
|| ' , o.mld_opdr_key'
|
|
|| ' FROM bgt_v_project_full f'
|
|
|| ' , bgt_budget b'
|
|
|| ' , twyn_v_bgt_projectdatum p'
|
|
|| ' , mld_opdr o'
|
|
|| ' WHERE ( f.prs_kostensoort_key = b.prs_kostensoort_key'
|
|
|| ' OR ( f.bgt_kostenrubriek_key = b.bgt_kostenrubriek_key'
|
|
|| ' AND b.prs_kostensoort_key IS NULL'
|
|
|| ' )'
|
|
|| ' )'
|
|
|| ' AND f.bgt_project_key = p.bgt_project_key'
|
|
|| ' AND f.prs_kostensoort_key = o.prs_kostensoort_key'
|
|
|| ' AND f.ins_discipline_verwijder IS NULL'
|
|
|| ' AND f.bgt_project_verwijder IS NULL'
|
|
|| ' '|| v_where;
|
|
|
|
v_part_B := 'SELECT f.*'
|
|
|| ' , BGT.getBudgetOpDatum(b.bgt_budget_key, 0, null) budget_origineel_exc'
|
|
|| ' , BGT.getBudgetOpDatum(b.bgt_budget_key, 1, null) budget_origineel_btw'
|
|
|| ' , BGT.getBudgetOpDatum(b.bgt_budget_key, 0, to_date(''' || p_datum_tot || ''', ''dd-mm-yyyy'')) budget_actueel_exc'
|
|
|| ' , BGT.getBudgetOpDatum(b.bgt_budget_key, 1, to_date(''' || p_datum_tot || ''', ''dd-mm-yyyy'')) budget_actueel_btw'
|
|
|| ' , BGT.getBudgetSoortMutatie(b.bgt_kostenrubriek_key, b.prs_kostensoortgrp_key, b.prs_kostensoort_key, 0, ''AR'', to_date(''' || p_datum_tot || ''', ''dd-mm-yyyy'')) budget_reserve_exc'
|
|
|| ' , BGT.getBudgetSoortMutatie(b.bgt_kostenrubriek_key, b.prs_kostensoortgrp_key, b.prs_kostensoort_key, 1, '''', to_date(''' || p_datum_tot || ''', ''dd-mm-yyyy'')) budget_reserve_btw'
|
|
|| ' , BGT.getBudgetSoortMutatie(b.bgt_kostenrubriek_key, b.prs_kostensoortgrp_key, b.prs_kostensoort_key, 0, ''EM'', to_date(''' || p_datum_tot || ''', ''dd-mm-yyyy'')) budget_mutatie_exc'
|
|
|| ' , BGT.getBudgetSoortMutatie(b.bgt_kostenrubriek_key, b.prs_kostensoortgrp_key, b.prs_kostensoort_key, 1, ''EM'', to_date(''' || p_datum_tot || ''', ''dd-mm-yyyy'')) budget_mutatie_btw'
|
|
|| ' , 0 gecontracteerd_exc'
|
|
|| ' , 0 gecontracteerd_btw'
|
|
|| ' , 0 gefactureerd_exc'
|
|
|| ' , 0 gefactureerd_btw'
|
|
|| ' , p.startdatum_p'
|
|
|| ' , ''' || p_datum_tot || ''' bgt_datum'
|
|
|| ' , null mld_opdr_key'
|
|
|| ' FROM bgt_v_project_full f'
|
|
|| ' , bgt_budget b'
|
|
|| ' , twyn_v_bgt_projectdatum p'
|
|
|| ' WHERE ( f.prs_kostensoort_key = b.prs_kostensoort_key'
|
|
|| ' OR ( f.bgt_kostenrubriek_key = b.bgt_kostenrubriek_key'
|
|
|| ' AND b.prs_kostensoort_key IS NULL'
|
|
|| ' )'
|
|
|| ' )'
|
|
|| ' AND f.bgt_project_key = p.bgt_project_key'
|
|
|| ' AND f.ins_discipline_verwijder IS NULL'
|
|
|| ' AND f.bgt_project_verwijder IS NULL'
|
|
|| ' '|| v_where;
|
|
|
|
v_part_T := 'SELECT opdrachtgever'
|
|
|| ' , pcode'
|
|
|| ' , project'
|
|
|| ' , projectnaam'
|
|
|| ' , dcode'
|
|
|| ' , subproject'
|
|
|| ' , subprojectnaam'
|
|
|| ' , rcode'
|
|
|| ' , kostenrubriek'
|
|
|| ' , gcode'
|
|
|| ' , kostengroep'
|
|
|| ' , scode'
|
|
|| ' , kostensoort'
|
|
|| ' , startdatum_p'
|
|
|| ' , bgt_datum'
|
|
|| ' , bgt_kostenrubriek_key'
|
|
|| ' , sum(budget_origineel_exc) org_bedrag_exc'
|
|
|| ' , sum(budget_origineel_btw) org_bedrag_btw'
|
|
|| ' , sum(budget_actueel_exc) bgt_bedrag_exc'
|
|
|| ' , sum(budget_actueel_btw) bgt_bedrag_btw'
|
|
|| ' , sum(budget_reserve_exc) res_bedrag_exc'
|
|
|| ' , sum(budget_reserve_btw) res_bedrag_btw'
|
|
|| ' , sum(budget_mutatie_exc) mut_bedrag_exc'
|
|
|| ' , sum(budget_mutatie_btw) mut_bedrag_btw'
|
|
|| ' , sum(gecontracteerd_exc) cnt_bedrag_exc'
|
|
|| ' , sum(gecontracteerd_btw) cnt_bedrag_btw'
|
|
|| ' , sum(gefactureerd_exc) fin_bedrag_exc'
|
|
|| ' , sum(gefactureerd_btw) fin_bedrag_btw'
|
|
|| ' FROM (' || v_part_A || ' UNION ' || v_part_B || ')'
|
|
|| ' GROUP BY opdrachtgever'
|
|
|| ' , pcode'
|
|
|| ' , project'
|
|
|| ' , projectnaam'
|
|
|| ' , dcode'
|
|
|| ' , subproject'
|
|
|| ' , subprojectnaam'
|
|
|| ' , rcode'
|
|
|| ' , kostenrubriek'
|
|
|| ' , gcode'
|
|
|| ' , kostengroep'
|
|
|| ' , scode'
|
|
|| ' , kostensoort'
|
|
|| ' , startdatum_p'
|
|
|| ' , bgt_datum'
|
|
|| ' , bgt_kostenrubriek_key'
|
|
|| ' ORDER BY rcode';
|
|
|
|
OPEN p_cursor FOR 'SELECT * FROM '
|
|
|| '( SELECT * FROM (' || v_part_T || ')'
|
|
|| ')';
|
|
END;
|
|
|
|
PROCEDURE twyn_v_contract_rubriek ( user_key IN NUMBER
|
|
, p_datum_van IN VARCHAR2
|
|
, p_datum_tot IN VARCHAR2
|
|
, p_cursor OUT t_cursor
|
|
, p_where IN VARCHAR2
|
|
)
|
|
AS
|
|
v_datum_van DATE;
|
|
v_datum_tot DATE;
|
|
|
|
v_part_W VARCHAR2(32767);
|
|
v_part_T VARCHAR2(32767);
|
|
v_where VARCHAR2(32767);
|
|
|
|
BEGIN
|
|
v_datum_van := TO_DATE(p_datum_van, 'dd-mm-yyyy');
|
|
v_datum_tot := TO_DATE(p_datum_tot, 'dd-mm-yyyy');
|
|
v_part_W := SUBSTR(p_where, INSTR(p_where, 'WHERE')+6);
|
|
v_where := CASE WHEN v_part_W IS NOT NULL THEN 'AND ' || v_part_W ELSE '' END;
|
|
|
|
v_part_T := 'SELECT tp.opdrachtgever'
|
|
|| ' , tp.pcode'
|
|
|| ' , tp.project'
|
|
|| ' , tp.projectnaam'
|
|
|| ' , tp.dcode'
|
|
|| ' , tp.subproject'
|
|
|| ' , tp.subprojectnaam'
|
|
|| ' , tp.rcode'
|
|
|| ' , tp.kostenrubriek'
|
|
|| ' , tp.gcode'
|
|
|| ' , tp.kostengroep'
|
|
|| ' , tp.scode'
|
|
|| ' , tp.kostensoort'
|
|
|| ' , tp.versienummer'
|
|
|| ' , tp.kostencode'
|
|
|| ' , tp.kostennaam'
|
|
|| ' , b.prs_leverancier_nr'
|
|
|| ' , o.mld_opdr_ordernr'
|
|
|| ' , COALESCE(o.mld_opdr_bedrijfopdr_volgnr, 0) mld_opdr_ordervolgnr'
|
|
|| ' , o.mld_opdr_meerwerk mld_opdr_meerwerk'
|
|
|| ' , o.mld_opdr_id kenmerk'
|
|
|| ' , o.mld_opdr_omschrijving mld_opdr_omschrijving'
|
|
|| ' , kp.prs_kostenplaats_nr accountcode'
|
|
|| ' , kp.prs_kostenplaats_omschrijving account'
|
|
|| ' , TO_CHAR (o.mld_opdr_datumbegin, ''DD-MM-YYYY'') datum_p'
|
|
|| ' , BGT.getGecontracteerd(o.mld_opdr_key, 0, null, to_date(''' || p_datum_tot || ''', ''dd-mm-yyyy'')) kosten'
|
|
|| ' , BGT.getGecontracteerd(o.mld_opdr_key, 1, null, to_date(''' || p_datum_tot || ''', ''dd-mm-yyyy'')) btw'
|
|
|| ' , BGT.getGefactureerd (o.mld_opdr_key, 0, null, to_date(''' || p_datum_tot || ''', ''dd-mm-yyyy'')) facturen'
|
|
|| ' , p.startdatum_p'
|
|
|| ' FROM bgt_v_project_full tp'
|
|
|| ' , prs_kostenplaats kp'
|
|
|| ' , mld_opdr o'
|
|
|| ' , prs_bedrijf b'
|
|
|| ' , twyn_v_bgt_projectdatum p'
|
|
|| ' WHERE o.prs_kostensoort_key = tp.prs_kostensoort_key'
|
|
|| ' AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)'
|
|
|| ' AND o.mld_uitvoerende_keys = b.prs_bedrijf_key'
|
|
|| ' AND o.mld_statusopdr_key <> 10' -- ter goedkeuring (=raming) hier niet in meenemen
|
|
|| ' AND tp.bgt_project_key = p.bgt_project_key'
|
|
|| ' AND tp.ins_discipline_verwijder IS NULL'
|
|
|| ' AND tp.bgt_project_verwijder IS NULL'
|
|
|| ' '|| v_where;
|
|
|
|
OPEN p_cursor FOR 'SELECT * FROM (' || v_part_T || ')';
|
|
END;
|
|
|
|
PROCEDURE twyn_v_contr_fact_bedrijf ( user_key IN NUMBER
|
|
, p_datum_van IN VARCHAR2
|
|
, p_datum_tot IN VARCHAR2
|
|
, p_cursor OUT t_cursor
|
|
, p_where IN VARCHAR2
|
|
)
|
|
AS
|
|
v_datum_van DATE;
|
|
v_datum_tot DATE;
|
|
|
|
v_part_D VARCHAR2(32767);
|
|
v_part_W VARCHAR2(32767);
|
|
v_part_T VARCHAR2(32767);
|
|
v_where VARCHAR2(32767);
|
|
|
|
BEGIN
|
|
v_datum_van := TO_DATE(p_datum_van, 'dd-mm-yyyy');
|
|
v_datum_tot := TO_DATE(p_datum_tot, 'dd-mm-yyyy');
|
|
v_part_W := SUBSTR(p_where, INSTR(p_where, 'WHERE')+6);
|
|
v_where := CASE WHEN v_part_W IS NOT NULL THEN 'AND ' || v_part_W ELSE '' END;
|
|
|
|
v_part_D := CASE WHEN p_datum_van IS NOT NULL
|
|
THEN ' AND f.fin_factuur_advies >= TO_DATE('''|| p_datum_van ||''', ''dd-mm-yyyy'')'
|
|
|| ' AND o.mld_opdr_datumbegin >= TO_DATE('''|| p_datum_van ||''', ''dd-mm-yyyy'')'
|
|
ELSE ''
|
|
END
|
|
|| CASE WHEN p_datum_tot IS NOT NULL
|
|
THEN ' AND f.fin_factuur_advies < TO_DATE('''|| p_datum_tot ||''', ''dd-mm-yyyy'')'
|
|
|| ' AND o.mld_opdr_datumbegin < TO_DATE('''|| p_datum_tot ||''', ''dd-mm-yyyy'')'
|
|
ELSE ''
|
|
END;
|
|
|
|
v_part_T := 'SELECT tp.opdrachtgever'
|
|
|| ' , tp.pcode'
|
|
|| ' , tp.project'
|
|
|| ' , tp.subproject'
|
|
|| ' , tp.rcode'
|
|
|| ' , tp.kostenrubriek'
|
|
|| ' , tp.kostengroep'
|
|
|| ' , tp.scode'
|
|
|| ' , tp.kostensoort'
|
|
|| ' , tp.versienummer'
|
|
|| ' , b.prs_bedrijf_naam'
|
|
|| ' , b.prs_leverancier_nr'
|
|
|| ' , o.mld_opdr_ordernr'
|
|
|| ' , COALESCE(o.mld_opdr_bedrijfopdr_volgnr, 0) mld_opdr_ordervolgnr'
|
|
|| ' , o.mld_opdr_id kenmerk'
|
|
|| ' , o.mld_opdr_omschrijving'
|
|
|| ' , COALESCE(kp.prs_kostenplaats_nr, '' '') accountcode'
|
|
|| ' , COALESCE(kp.prs_kostenplaats_omschrijving, ''zonder account'') account'
|
|
|| ' , o.mld_opdr_kosten'
|
|
|| ' , o.mld_opdr_kosten_btw'
|
|
|| ' , o.mld_opdr_meerwerk'
|
|
|| ' , CASE WHEN fin_factuur_key IS NULL'
|
|
|| ' THEN 1'
|
|
|| ' WHEN (SELECT MIN(fc.fin_factuur_key)'
|
|
|| ' FROM fin_factuur fc'
|
|
|| ' WHERE fc.mld_opdr_key = f.mld_opdr_key) = f.fin_factuur_key'
|
|
|| ' THEN 1'
|
|
|| ' ELSE 0'
|
|
|| ' END contractwaarde'
|
|
|| ' , f.fin_factuur_nr'
|
|
|| ' , f.fin_factuur_opmerking'
|
|
|| ' , f.fin_factuur_totaal'
|
|
|| ' , f.fin_factuur_totaal_btw'
|
|
|| ' , o.mld_opdr_datumbegin contractdatum'
|
|
|| ' , f.fin_factuur_datum factuurdatum'
|
|
|| ' , f.fin_factuur_advies adviesdatum'
|
|
|| ' , TO_CHAR (o.mld_opdr_datumbegin, ''DD-MM-YYYY'') contractdatum_p'
|
|
|| ' , TO_CHAR (f.fin_factuur_datum, ''DD-MM-YYYY'') factuurdatum_p'
|
|
|| ' , TO_CHAR (f.fin_factuur_advies, ''DD-MM-YYYY'') adviesdatum_p'
|
|
|| ' , p.startdatum_p'
|
|
|| ' FROM fin_factuur f'
|
|
|| ' , mld_opdr o'
|
|
|| ' , prs_bedrijf b'
|
|
|| ' , prs_kostenplaats kp'
|
|
|| ' , bgt_v_project_full tp'
|
|
|| ' , twyn_v_bgt_projectdatum p'
|
|
|| ' WHERE o.mld_opdr_key = f.mld_opdr_key(+)'
|
|
|| ' AND o.prs_kostensoort_key = tp.prs_kostensoort_key'
|
|
|| ' AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)'
|
|
|| ' AND o.mld_uitvoerende_keys = b.prs_bedrijf_key'
|
|
|| ' AND o.mld_statusopdr_key <> 10'
|
|
|| ' AND tp.bgt_project_key = p.bgt_project_key'
|
|
|| ' AND tp.ins_discipline_verwijder IS NULL'
|
|
|| ' AND tp.bgt_project_verwijder IS NULL'
|
|
|| ' '|| v_part_D
|
|
|| ' '|| v_where;
|
|
|
|
OPEN p_cursor FOR 'SELECT * FROM (' || v_part_T || ')';
|
|
END;
|
|
|
|
END;
|
|
/
|
|
---
|
|
---
|
|
---
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile
|