Files
Customer/TWYN/twyn.sql
Sander Schepers 4f28955650 TWYN#58844 Views mbt budgetrapportages RTM
svn path=/Customer/trunk/; revision=44295
2019-09-23 07:54:12 +00:00

3337 lines
147 KiB
SQL

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
--
-- NB: Overbodig geworden: alle BCS2000 projecten zijn ingelezen.
-- Met script TWYN#55541.sql zijn de procedures en de tabellen die hiervoor gebruikt worden gedropt.
--
DEFINE thisfile = 'TWYN.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 ------
--=============================================================================
-- IMPORTFUNCTIES
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE twyn_import_reportdbf (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';';
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_searchline fac_imp_file.fac_imp_file_line%TYPE; -- Input line voor zoeken op kolomnummer
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
header_is_valid NUMBER (1) := 0;
v_ongeldig NUMBER (1) := 0;
v_imp_count NUMBER (5) := 0;
-- Importvelden staan in de procedures.
-- Overige velden:
-- Keys
k_project_code VARCHAR2(20) := NULL;
k_subproject_code VARCHAR2(20) := NULL;
k_rubriek_nr VARCHAR2(20) := NULL;
k_groep_nr VARCHAR2(60) := NULL;
k_onderdeel_nr VARCHAR2(5) := NULL;
k_budget_nr VARCHAR2(5) := NULL;
k_bedrijf_code VARCHAR2(4) := NULL;
k_contract_nr NUMBER(5);
k_contract_volgnr NUMBER(5);
k_factuur_nr NUMBER(10);
k_factuur_volgnr NUMBER(10);
CURSOR c1
IS
SELECT fac_imp_file_line
, LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, ''))) regellengte
FROM FAC_IMP_FILE
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
FUNCTION isDate(p_date IN VARCHAR2) RETURN NUMBER IS
v_date DATE;
BEGIN
SELECT TO_DATE(p_date) INTO v_date FROM DUAL;
RETURN 1;
EXCEPTION
WHEN OTHERS THEN RETURN 0;
END; --isDate
FUNCTION isNumeric(p_number IN VARCHAR2) RETURN NUMBER IS
v_number NUMBER := 0;
BEGIN
IF (LENGTH(TRIM(TRANSLATE(p_number, ' +-.0123456789', ' '))) IS NULL) THEN
v_number := 1;
END IF;
RETURN v_number;
END; --isNumeric
PROCEDURE imp_skip( p_line IN OUT VARCHAR2
, p_aantal NUMBER)
IS
--v_nn_001 VARCHAR2 (256); --001 DIUNITNO
--v_nn_002 VARCHAR2 (256); --002 DIDIR
v_nn VARCHAR2 (256);
BEGIN
FOR i IN 1.. p_aantal
LOOP
fac.imp_getfield (p_line, c_delim, v_nn);
END LOOP;
END; --imp_skip
PROCEDURE imp_project( p_line IN OUT VARCHAR2
, p_project_nummer OUT VARCHAR2)
IS
v_project_nummer VARCHAR2 (256); --003 PRNUMMER :projectnummer
v_project_omschr VARCHAR2 (256); --004 PROMSCHR :omschrijving project
v_project_fullnr VARCHAR2 (256); --005 PRFULLNR :(samenvoeging van projectnummer en omschrijving)
v_project_opdrachtgever VARCHAR2 (256); --006 PROPDRGVR :opdractgever
v_project_startdatum VARCHAR2 (256); --007 PRSTRTDAT :startdatum project
v_project_code VARCHAR2 (256); --008 PRCODEINT :internationaal projectcode
v_project_leider VARCHAR2 (256); --009 PRLEIDER :projectleider
v_project_incl_btw VARCHAR2 (256); --010 PRINCBTW :bedragen inclusief btw
v_project_indextabel VARCHAR2 (256); --011 PRIDXTABEL :naam indextabel
v_project_valuta VARCHAR2 (256); --012 PRVALUTA :valuta
v_count_project NUMBER (3);
BEGIN
fac.imp_getfield (p_line, c_delim, v_project_nummer);
fac.imp_getfield (p_line, c_delim, v_project_omschr);
fac.imp_getfield (p_line, c_delim, v_project_fullnr);
fac.imp_getfield (p_line, c_delim, v_project_opdrachtgever);
fac.imp_getfield (p_line, c_delim, v_project_startdatum);
fac.imp_getfield (p_line, c_delim, v_project_code);
fac.imp_getfield (p_line, c_delim, v_project_leider);
fac.imp_getfield (p_line, c_delim, v_project_incl_btw);
fac.imp_getfield (p_line, c_delim, v_project_indextabel);
fac.imp_getfield (p_line, c_delim, v_project_valuta);
--
p_project_nummer := NULL;
v_project_nummer := TRIM(v_project_nummer);
IF (v_project_nummer IS NOT NULL) THEN
SELECT COUNT(*)
INTO v_count_project
FROM twyn_imp_discipline
WHERE bgt_disc_params_code = v_project_nummer;
IF (v_count_project = 0) THEN
INSERT INTO twyn_imp_discipline
( bgt_disc_params_code
, ins_discipline_omschrijving
, bgt_disc_params_opdrachtgever
, bgt_disc_params_startdatum
, ins_discipline_btw
, bgt_disc_params_leider
)
VALUES
( v_project_nummer
, SUBSTR(v_project_omschr, 1, 30)
, v_project_opdrachtgever
, fac.safe_to_date(v_project_startdatum, 'dd-mm-yyyy')
, CASE WHEN v_project_incl_btw = 'WAAR' THEN 1 ELSE 0 END
, v_project_leider
);
p_project_nummer := v_project_nummer;
END IF;
END IF;
END; --imp_project
PROCEDURE imp_subproject( p_line IN OUT VARCHAR2
, p_subproject_nummer OUT VARCHAR2)
IS
v_nn_013 VARCHAR2 (256); --013 VANAAM :valuta naam
v_subproject_nummer VARCHAR2 (256); --014 SPNUMMER :code subproject
v_nn_015 VARCHAR2 (256); --015 SPNR
v_nn_016 VARCHAR2 (256); --016 SPNRs
v_subproject_omschr VARCHAR2 (256); --017 SPOMSCHR :omschrijving subproject
v_nn_018 VARCHAR2 (256); --018 SPFULLNR :(samenvoeging van subprojectnummer en omschrijving)
v_subproject_fase_nr VARCHAR2 (256); --019 SPPSTATUS :projectfase nummer
v_subproject_prijspeildatum VARCHAR2 (256); --020 SPDATPP :datum prijsniveau
v_nn_021 VARCHAR2 (256); --021 SPBOUWTIJD :bouwtijd
v_nn_022 VARCHAR2 (256); --022 SPCAPAC :capaciteit
v_nn_023 VARCHAR2 (256); --023 SPBRUVLOPP :vloeroppervlak
v_nn_024 VARCHAR2 (256); --024 SPINHOUD :inhoud
v_nn_025 VARCHAR2 (256); --025 SPIPSPJ
v_nn_026 VARCHAR2 (256); --026 SPRESOFONV
v_nn_027 VARCHAR2 (256); --027 SPRENTE
v_nn_028 VARCHAR2 (256); --028 SPDIRKOST
v_nn_029 VARCHAR2 (256); --029 SPBIJKOMENDREPORT
v_subproject_soort_nr VARCHAR2 (256); --030 SPPROSOORT :projectsoort nummer
v_subproject_notes VARCHAR2 (256); --031 SPOPMERKINGREPORT :opmerking
v_subproject_fase_omschr VARCHAR2 (256); --032 PSSTATUS :projectfase omschrijving
v_subproject_soort_omschr VARCHAR2 (256); --033 PSRTSOORT :projesctsoort omschrijving
s_project_nummer VARCHAR2 (256); --003 PRNUMMER :projectnummer
v_count_subproject NUMBER (3);
BEGIN
fac.imp_getfield (p_line, c_delim, v_nn_013);
fac.imp_getfield (p_line, c_delim, v_subproject_nummer);
fac.imp_getfield (p_line, c_delim, v_nn_015);
fac.imp_getfield (p_line, c_delim, v_nn_016);
fac.imp_getfield (p_line, c_delim, v_subproject_omschr);
fac.imp_getfield (p_line, c_delim, v_nn_018);
fac.imp_getfield (p_line, c_delim, v_subproject_fase_nr);
fac.imp_getfield (p_line, c_delim, v_subproject_prijspeildatum);
fac.imp_getfield (p_line, c_delim, v_nn_021);
fac.imp_getfield (p_line, c_delim, v_nn_022);
fac.imp_getfield (p_line, c_delim, v_nn_023);
fac.imp_getfield (p_line, c_delim, v_nn_024);
fac.imp_getfield (p_line, c_delim, v_nn_025);
fac.imp_getfield (p_line, c_delim, v_nn_026);
fac.imp_getfield (p_line, c_delim, v_nn_027);
fac.imp_getfield (p_line, c_delim, v_nn_028);
fac.imp_getfield (p_line, c_delim, v_nn_029);
fac.imp_getfield (p_line, c_delim, v_subproject_soort_nr);
fac.imp_getfield (p_line, c_delim, v_subproject_notes);
fac.imp_getfield (p_line, c_delim, v_subproject_fase_omschr);
fac.imp_getfield (p_line, c_delim, v_subproject_soort_omschr);
--
p_subproject_nummer := NULL;
v_subproject_nummer := TRIM(v_subproject_nummer);
IF (v_subproject_nummer IS NOT NULL) THEN
fac.imp_getfield_nr(v_searchline, c_delim, 3, s_project_nummer);
SELECT COUNT(*)
INTO v_count_subproject
FROM twyn_imp_project
WHERE bgt_project_discipline = s_project_nummer
AND bgt_project_code = v_subproject_nummer;
IF (v_count_subproject = 0) THEN
INSERT INTO twyn_imp_project
( bgt_project_code
, bgt_project_omschrijving
, bgt_project_volgnr
, bgt_project_discipline
, bgt_project_prijspeildatum
, bgt_project_notes
, bgt_project_fase_nr
, bgt_project_fase_omschr
, bgt_project_soort_nr
, bgt_project_soort_omschr
)
VALUES
( v_subproject_nummer
, TRIM(v_subproject_omschr)
, 1
, s_project_nummer
, fac.safe_to_date(v_subproject_prijspeildatum, 'dd-mm-yyyy')
, v_subproject_notes
, fac.safe_To_Integer(v_subproject_fase_nr)
, v_subproject_fase_omschr
, fac.safe_To_Integer(v_subproject_soort_nr)
, v_subproject_soort_omschr
);
p_subproject_nummer := v_subproject_nummer;
END IF;
END IF;
END; --imp_subproject
PROCEDURE imp_rubriek( p_line IN OUT VARCHAR2
, p_rubriek_nr OUT VARCHAR2)
IS
v_rubriek_nr VARCHAR2 (256); --034 RUNUMMER :rubriek volgnummer
v_rubriek_omschr VARCHAR2 (256); --035 RUOMSCHR :rubriek omschrijving
s_project_nummer VARCHAR2 (256); --003 PRNUMMER :projectnummer (discipline)
s_subproject_code VARCHAR2 (256); --014 SPNUMMER :code subproject (project)
v_count_rubriek NUMBER (3);
BEGIN
fac.imp_getfield (p_line, c_delim, v_rubriek_nr);
fac.imp_getfield (p_line, c_delim, v_rubriek_omschr);
--
p_rubriek_nr := NULL;
v_rubriek_nr := TRIM(v_rubriek_nr);
IF (v_rubriek_nr IS NOT NULL) THEN
fac.imp_getfield_nr(v_searchline, c_delim, 3, s_project_nummer);
fac.imp_getfield_nr(v_searchline, c_delim, 14, s_subproject_code);
SELECT COUNT(*)
INTO v_count_rubriek
FROM twyn_imp_kostenrubriek
WHERE bgt_project_code = s_subproject_code
AND bgt_kostenrubriek_code = v_rubriek_nr;
IF (v_count_rubriek = 0) THEN
INSERT INTO twyn_imp_kostenrubriek
( bgt_project_discipline
, bgt_project_code
, bgt_kostenrubriek_code
, bgt_kostenrubriek_oms
)
VALUES
( s_project_nummer
, s_subproject_code
, v_rubriek_nr
, TRIM(v_rubriek_omschr)
);
p_rubriek_nr := v_rubriek_nr;
END IF;
END IF;
END; --imp_rubriek
PROCEDURE imp_groep( p_line IN OUT VARCHAR2
, p_groep_nr OUT VARCHAR2)
IS
v_groep_nr VARCHAR2 (256); --036 GRNUMMER :groep volgnummer
v_groep_omschr VARCHAR2 (256); --037 GrOMSCHR :groep omoschrijving
s_project_nummer VARCHAR2 (256); --003 PRNUMMER :projectnummer (discipline)
s_subproject_code VARCHAR2 (256); --014 SPNUMMER :code subproject (project)
s_rubriek_nr VARCHAR2 (256); --034 RUNUMMER :rubriek volgnummer (rubriek)
v_count_groep NUMBER (3);
BEGIN
fac.imp_getfield (p_line, c_delim, v_groep_nr);
fac.imp_getfield (p_line, c_delim, v_groep_omschr);
--
p_groep_nr := NULL;
v_groep_nr := TRIM(v_groep_nr);
IF (v_groep_nr IS NOT NULL) THEN
fac.imp_getfield_nr(v_searchline, c_delim, 3, s_project_nummer);
fac.imp_getfield_nr(v_searchline, c_delim, 14, s_subproject_code);
fac.imp_getfield_nr(v_searchline, c_delim, 34, s_rubriek_nr);
SELECT COUNT(*)
INTO v_count_groep
FROM twyn_imp_kostensoortgrp
WHERE bgt_project_code = s_subproject_code
AND bgt_kostenrubriek_code = s_rubriek_nr
AND prs_kostensoortgrp_altcode = v_groep_nr;
IF (v_count_groep = 0) THEN
INSERT INTO twyn_imp_kostensoortgrp
( bgt_project_discipline
, bgt_project_code
, bgt_kostenrubriek_code
, prs_kostensoortgrp_altcode
, prs_kostensoortgrp_oms
)
VALUES
( s_project_nummer
, s_subproject_code
, s_rubriek_nr
, v_groep_nr
, TRIM(v_groep_omschr)
);
p_groep_nr := v_groep_nr;
END IF;
END IF;
END; --imp_groep
PROCEDURE imp_onderdeel( p_line IN OUT VARCHAR2
, p_onderdeel_nr OUT VARCHAR2)
IS
v_onderdeel_nr VARCHAR2 (256); --038 ONNUMMER :onderdeel nummer
v_onderdeel_omschr VARCHAR2 (256); --039 ONOMSCHR :onderdeel omschrijving
v_nn_040 VARCHAR2 (256); --040 ONOPMERK :onderdeel opmerking
v_nn_041 VARCHAR2 (256); --041 ONIDXTABEL :indextabel
v_nn_042 VARCHAR2 (256); --042 ONI_EDATUM :einddatum
s_project_nummer VARCHAR2 (256); --003 PRNUMMER :projectnummer (discipline)
s_subproject_code VARCHAR2 (256); --014 SPNUMMER :code subproject (project)
s_rubriek_nr VARCHAR2 (256); --034 RUNUMMER :rubriek volgnummer (rubriek)
s_groep_nr VARCHAR2 (256); --036 GRNUMMER :groep volgnummer (groep)
s_btw_code VARCHAR2 (256); --094 COBTCODE :btw code
s_btw_waarde VARCHAR2 (256); --095 COBTBTW :btw waarde
v_count_onderdeel NUMBER (3);
BEGIN
fac.imp_getfield (p_line, c_delim, v_onderdeel_nr);
fac.imp_getfield (p_line, c_delim, v_onderdeel_omschr);
fac.imp_getfield (p_line, c_delim, v_nn_040);
fac.imp_getfield (p_line, c_delim, v_nn_041);
fac.imp_getfield (p_line, c_delim, v_nn_042);
--
p_onderdeel_nr := NULL;
v_onderdeel_nr := TRIM(v_onderdeel_nr);
IF (v_onderdeel_nr IS NOT NULL) THEN
fac.imp_getfield_nr(v_searchline, c_delim, 3, s_project_nummer);
fac.imp_getfield_nr(v_searchline, c_delim, 14, s_subproject_code);
fac.imp_getfield_nr(v_searchline, c_delim, 34, s_rubriek_nr);
fac.imp_getfield_nr(v_searchline, c_delim, 36, s_groep_nr);
fac.imp_getfield_nr(v_searchline, c_delim, 94, s_btw_code);
fac.imp_getfield_nr(v_searchline, c_delim, 95, s_btw_waarde);
SELECT COUNT(*)
INTO v_count_onderdeel
FROM twyn_imp_kostensoort
WHERE bgt_project_code = s_subproject_code
AND bgt_kostenrubriek_code = s_rubriek_nr
AND prs_kostensoortgrp_altcode = s_groep_nr
AND prs_kostensoort_oms = v_onderdeel_nr;
IF (v_count_onderdeel = 0) THEN
INSERT INTO twyn_imp_kostensoort
( bgt_project_discipline
, bgt_project_code
, bgt_kostenrubriek_code
, prs_kostensoortgrp_altcode
, prs_kostensoort_oms
, prs_kostensoort_opmerking
, bgt_btw_code
, bgt_btw_waarde
)
VALUES
( s_project_nummer
, s_subproject_code
, s_rubriek_nr
, s_groep_nr
, v_onderdeel_nr
, TRIM(v_onderdeel_omschr)
, s_btw_code
, fac.safe_To_Integer(s_btw_waarde)
);
END IF;
p_onderdeel_nr := v_onderdeel_nr;
--
IF (s_btw_code IS NOT NULL) THEN
UPDATE twyn_imp_kostensoort
SET bgt_btw_code = s_btw_code
, bgt_btw_waarde = fac.safe_To_Integer(s_btw_waarde)
WHERE bgt_btw_code IS NULL
AND bgt_project_discipline = s_project_nummer
AND bgt_project_code = s_subproject_code
AND bgt_kostenrubriek_code = s_rubriek_nr
AND prs_kostensoortgrp_altcode = s_groep_nr
AND prs_kostensoort_oms = v_onderdeel_nr;
END IF;
END IF;
END; --imp_onderdeel
PROCEDURE imp_budget( p_line IN OUT VARCHAR2
, p_budget_nr OUT VARCHAR2)
IS
v_budget_nr VARCHAR2 (256); --043 BUNUMMER :budgetnummer/meer-minder-code/reserve-code
v_budget_omschr VARCHAR2 (256); --044 BUOMSCHR :omschrijving
v_budget_meerminder VARCHAR2 (256); --045 BUMEERMIND :is meer-minder werk
v_budget_init VARCHAR2 (256); --046 BUBEDRINIT :startbedrag
v_nn_047 VARCHAR2 (256); --047 BUWBRBINIT :
v_nn_048 VARCHAR2 (256); --048 BUPSTIJGIN :prijsstijging
v_budget_mutatie VARCHAR2 (256); --049 BUBEDRMUT :bedrag mutatie
v_nn_050 VARCHAR2 (256); --050 BUWBRBMUT :
v_budget_reserve_mut VARCHAR2 (256); --051 BUBEDRMUTR :bedrag mutatie reserve
v_nn_052 VARCHAR2 (256); --052 BUBEDRMMW :bedrag meer-minder werk
v_nn_053 VARCHAR2 (256); --053 BUWBRBMMW
v_budget_reserve VARCHAR2 (256); --054 BURESERVE :bedrag reserve
v_nn_055 VARCHAR2 (256); --055 BUWBRRESRV
v_nn_056 VARCHAR2 (256); --056 BUWBRRESR
v_nn_057 VARCHAR2 (256); --057 BUWBRRES
v_nn_058 VARCHAR2 (256); --058 BUWBRRESR2
v_nn_059 VARCHAR2 (256); --059 BURESERVE2
v_budget_type VARCHAR2 (256); --060 BUTYPE :budget type
v_budget_datum VARCHAR2 (256); --061 BUDATUM :datum
v_nn_062 VARCHAR2 (256); --062 BUSTATUS :status
v_nn_063 VARCHAR2 (256); --063 BUKSOORT :kostensoort
v_nn_064 VARCHAR2 (256); --064 BUSORTNR :
v_nn_065 VARCHAR2 (256); --065 KOOMSCHR
v_nn_066 VARCHAR2 (256); --066 BSSTATUS
s_project_nummer VARCHAR2 (256); --003 PRNUMMER :projectnummer (discipline)
s_subproject_code VARCHAR2 (256); --014 SPNUMMER :code subproject (project)
s_rubriek_nr VARCHAR2 (256); --034 RUNUMMER :rubriek volgnummer (rubriek)
s_groep_nr VARCHAR2 (256); --036 GRNUMMER :groep volgnummer (groep)
s_onderdeel_nr VARCHAR2 (256); --038 ONNUMMER :onderdeel nummer (soort)
BEGIN
fac.imp_getfield (p_line, c_delim, v_budget_nr);
fac.imp_getfield (p_line, c_delim, v_budget_omschr);
fac.imp_getfield (p_line, c_delim, v_budget_meerminder);
fac.imp_getfield (p_line, c_delim, v_budget_init);
fac.imp_getfield (p_line, c_delim, v_nn_047);
fac.imp_getfield (p_line, c_delim, v_nn_048);
fac.imp_getfield (p_line, c_delim, v_budget_mutatie);
fac.imp_getfield (p_line, c_delim, v_nn_050);
fac.imp_getfield (p_line, c_delim, v_budget_reserve_mut);
fac.imp_getfield (p_line, c_delim, v_nn_052);
fac.imp_getfield (p_line, c_delim, v_nn_053);
fac.imp_getfield (p_line, c_delim, v_budget_reserve);
fac.imp_getfield (p_line, c_delim, v_nn_055);
fac.imp_getfield (p_line, c_delim, v_nn_056);
fac.imp_getfield (p_line, c_delim, v_nn_057);
fac.imp_getfield (p_line, c_delim, v_nn_058);
fac.imp_getfield (p_line, c_delim, v_nn_059);
fac.imp_getfield (p_line, c_delim, v_budget_type);
fac.imp_getfield (p_line, c_delim, v_budget_datum);
fac.imp_getfield (p_line, c_delim, v_nn_062);
fac.imp_getfield (p_line, c_delim, v_nn_063);
fac.imp_getfield (p_line, c_delim, v_nn_064);
fac.imp_getfield (p_line, c_delim, v_nn_065);
fac.imp_getfield (p_line, c_delim, v_nn_066);
p_budget_nr := NULL;
v_budget_nr := TRIM(v_budget_nr);
-- geldige budgetrecords hebben een geldige datum (anders nl "0-1-1900")
IF (isDate(v_budget_datum) = 1 ) THEN
fac.imp_getfield_nr(v_searchline, c_delim, 3, s_project_nummer);
fac.imp_getfield_nr(v_searchline, c_delim, 14, s_subproject_code);
fac.imp_getfield_nr(v_searchline, c_delim, 34, s_rubriek_nr);
fac.imp_getfield_nr(v_searchline, c_delim, 36, s_groep_nr);
fac.imp_getfield_nr(v_searchline, c_delim, 38, s_onderdeel_nr);
IF (v_budget_type IN ('N','R','P','B')) THEN
INSERT INTO twyn_imp_budget
( bgt_nr
, bgt_oms
, bgt_discipline
, bgt_project
, bgt_kostenrubriek
, bgt_kostensoortgrp
, bgt_kostensoort
, bgt_meerminder
, bgt_datum
, bedr_init_excl
, bedr_mut_excl
, bedr_res_mut_excl
, bedr_mmw_excl
, reserve
, reserve2
, type
, status
, kostensoort
, soortnr
)
VALUES
( v_budget_nr
, v_budget_omschr
, s_project_nummer
, s_subproject_code
, s_rubriek_nr
, s_groep_nr
, s_onderdeel_nr
, CASE WHEN v_budget_meerminder = 'WAAR' THEN 1 ELSE 0 END
, fac.safe_to_date(v_budget_datum, 'dd-mm-yyyy')
, fac.safe_To_Number( REPLACE(v_budget_init, ',', '.') )
, fac.safe_To_Number( REPLACE(v_budget_mutatie, ',', '.') )
, fac.safe_To_Number( REPLACE(v_budget_reserve, ',', '.') )
, fac.safe_To_Number( REPLACE(v_nn_052, ',', '.') )
, fac.safe_To_Number( REPLACE(v_budget_reserve_mut, ',', '.') )
, fac.safe_To_Number( REPLACE(v_nn_059, ',', '.') )
, TRIM(v_budget_type)
, fac.safe_To_Integer(v_nn_062)
, v_nn_063
, fac.safe_To_Integer(v_nn_064)
);
p_budget_nr := v_budget_nr;
END IF;
END IF;
END; --imp_budget
PROCEDURE imp_contract( p_line IN OUT VARCHAR2
, p_contract_nr OUT NUMBER
, p_contract_volgnr OUT NUMBER)
IS
v_contract_nr VARCHAR2 (256); --067 CONUMMER
v_contract_volgnr VARCHAR2 (256); --068 COSUBNUMME
v_contract_meerminder VARCHAR2 (256); --069 COMEERMIND
v_bedrijf_code VARCHAR2 (256); --070 COCONTTNT
v_contract_omschr VARCHAR2 (256); --071 COOMSCHR
v_contract_datum VARCHAR2 (256); --072 CODATUM
v_contract_bedrag_excl VARCHAR2 (256); --073 COBEDRAG
v_nn_074 VARCHAR2 (256); --074 COWBRBEDR
v_nn_075 VARCHAR2 (256); --075 COBEDRMMW
v_nn_076 VARCHAR2 (256); --076 COBEDRBMMW
v_nn_077 VARCHAR2 (256); --077 COWBRBEMMW
v_contract_bedrag_btw VARCHAR2 (256); --078 COBEDRAGBT
v_nn_079 VARCHAR2 (256); --079 COWBRBBTW
v_nn_080 VARCHAR2 (256); --080 COBWTTARIE
v_contract_bedrag_incl VARCHAR2 (256); --081 COEBEDRAG
v_nn_082 VARCHAR2 (256); --082 COOLDBEDRA
v_nn_083 VARCHAR2 (256); --083 COOLDBTW
v_nn_084 VARCHAR2 (256); --084 COOLDPSTIJ
v_nn_085 VARCHAR2 (256); --085 COPSTIJGIN
v_nn_086 VARCHAR2 (256); --086 COEDATUM
v_contract_kenmerk VARCHAR2 (256); --087 COKENMERK
v_nn_088 VARCHAR2 (256); --088 COMMWNR
v_nn_089 VARCHAR2 (256); --089 COMMWSTATU
v_nn_090 VARCHAR2 (256); --090 COBEDRRAM
v_nn_091 VARCHAR2 (256); --091 COBEDRDEF
v_contract_status VARCHAR2 (256); --092 COSTATUS :contractstatus key
v_nn_093 VARCHAR2 (256); --093 COWITHFA
v_nn_094 VARCHAR2 (256); --094 COBTCODE :btw code
v_nn_095 VARCHAR2 (256); --095 COBTBTW :btw waarde
v_nn_096 VARCHAR2 (256); --096 CSSTATUS :contractstatus omschrijving
v_is_contract VARCHAR2 (256); --097 COISCONTR :iscontract
s_factuur_nr VARCHAR2 (256); --107 FANUMMER :factuurnummer
s_grootboek_nr VARCHAR2 (256); --121 GRB :grootboek nummer
s_grootboek_oms VARCHAR2 (256); --124 GRB_OMSCHR :grootboek omschrijving
s_project_nummer VARCHAR2 (256); --003 PRNUMMER :projectnummer (discipline)
s_subproject_code VARCHAR2 (256); --014 SPNUMMER :code subproject (project)
s_rubriek_nr VARCHAR2 (256); --034 RUNUMMER :rubriek volgnummer (rubriek)
s_groep_nr VARCHAR2 (256); --036 GRNUMMER :groep volgnummer (groep)
s_onderdeel_nr VARCHAR2 (256); --038 ONNUMMER :onderdeel nummer (soort)
v_count_contract NUMBER(3);
v_i_contract_nr NUMBER(10);
v_i_factuur_nr NUMBER(10);
v_i_grootboek_nr NUMBER(10);
v_i_iscontract NUMBER(1);
BEGIN
fac.imp_getfield (p_line, c_delim, v_contract_nr);
fac.imp_getfield (p_line, c_delim, v_contract_volgnr);
fac.imp_getfield (p_line, c_delim, v_contract_meerminder);
fac.imp_getfield (p_line, c_delim, v_bedrijf_code);
fac.imp_getfield (p_line, c_delim, v_contract_omschr);
fac.imp_getfield (p_line, c_delim, v_contract_datum);
fac.imp_getfield (p_line, c_delim, v_contract_bedrag_excl);
fac.imp_getfield (p_line, c_delim, v_nn_074);
fac.imp_getfield (p_line, c_delim, v_nn_075);
fac.imp_getfield (p_line, c_delim, v_nn_076);
fac.imp_getfield (p_line, c_delim, v_nn_077);
fac.imp_getfield (p_line, c_delim, v_contract_bedrag_btw);
fac.imp_getfield (p_line, c_delim, v_nn_079);
fac.imp_getfield (p_line, c_delim, v_nn_080);
fac.imp_getfield (p_line, c_delim, v_contract_bedrag_incl);
fac.imp_getfield (p_line, c_delim, v_nn_082);
fac.imp_getfield (p_line, c_delim, v_nn_083);
fac.imp_getfield (p_line, c_delim, v_nn_084);
fac.imp_getfield (p_line, c_delim, v_nn_085);
fac.imp_getfield (p_line, c_delim, v_nn_086);
fac.imp_getfield (p_line, c_delim, v_contract_kenmerk);
fac.imp_getfield (p_line, c_delim, v_nn_088);
fac.imp_getfield (p_line, c_delim, v_nn_089);
fac.imp_getfield (p_line, c_delim, v_nn_090);
fac.imp_getfield (p_line, c_delim, v_nn_091);
fac.imp_getfield (p_line, c_delim, v_contract_status);
fac.imp_getfield (p_line, c_delim, v_nn_093);
fac.imp_getfield (p_line, c_delim, v_nn_094);
fac.imp_getfield (p_line, c_delim, v_nn_095);
fac.imp_getfield (p_line, c_delim, v_nn_096);
fac.imp_getfield (p_line, c_delim, v_is_contract);
fac.imp_getfield_nr(v_searchline, c_delim, 107, s_factuur_nr);
fac.imp_getfield_nr(v_searchline, c_delim, 121, s_grootboek_nr);
fac.imp_getfield_nr(v_searchline, c_delim, 124, s_grootboek_oms);
p_contract_nr := fac.safe_To_Integer(v_contract_nr);
p_contract_volgnr := fac.safe_To_Integer(v_contract_volgnr);
v_i_contract_nr := fac.safe_To_Integer(v_contract_nr);
v_i_factuur_nr := fac.safe_To_Integer(s_factuur_nr);
v_i_grootboek_nr := fac.safe_To_Integer(s_grootboek_nr);
v_i_iscontract := fac.safe_To_Integer(v_is_contract);
IF ( (v_i_iscontract = 1)
AND (v_i_contract_nr > 0)
AND (v_i_factuur_nr = 0)
) THEN
fac.imp_getfield_nr(v_searchline, c_delim, 3, s_project_nummer);
fac.imp_getfield_nr(v_searchline, c_delim, 14, s_subproject_code);
fac.imp_getfield_nr(v_searchline, c_delim, 34, s_rubriek_nr);
fac.imp_getfield_nr(v_searchline, c_delim, 36, s_groep_nr);
fac.imp_getfield_nr(v_searchline, c_delim, 38, s_onderdeel_nr);
SELECT COUNT(*)
INTO v_count_contract
FROM twyn_imp_contract
WHERE bgt_contract_nr = p_contract_nr
AND bgt_contract_volgnr = p_contract_volgnr;
IF (v_count_contract = 0) THEN
INSERT INTO twyn_imp_contract
( bgt_contract_nr
, bgt_contract_volgnr
, bgt_contract_meerminder
, bgt_bedrijf_code
, bgt_contract_omschr
, bgt_contract_datum
, bgt_contract_bedrag_excl
, bgt_contract_bedrag_btw
, bgt_contract_bedrag_incl
, bgt_contract_status
, bgt_contract_referentie
, bgt_discipline_code
, bgt_project_code
, bgt_kostenrubriek_code
, prs_kostensoortgrp_code
, prs_kostensoort_code
, prs_kostenplaats_nr
, prs_kostenplaats_oms
)
VALUES
( p_contract_nr
, p_contract_volgnr
, fac.safe_To_Integer(v_contract_meerminder)
, v_bedrijf_code
, v_contract_omschr
, fac.safe_to_date(v_contract_datum, 'dd-mm-yyyy')
, fac.safe_To_Number( REPLACE(v_contract_bedrag_excl, ',', '.') )
, fac.safe_To_Number( REPLACE(v_contract_bedrag_btw, ',', '.') )
, fac.safe_To_Number( REPLACE(v_contract_bedrag_incl, ',', '.') )
, fac.safe_To_Number(v_contract_status)
, v_contract_kenmerk
, s_project_nummer
, s_subproject_code
, s_rubriek_nr
, s_groep_nr
, s_onderdeel_nr
, fac.safe_To_Integer(s_grootboek_nr)
, s_grootboek_oms
);
END IF;
END IF;
END; --imp_contract
PROCEDURE imp_contractant( p_line IN OUT VARCHAR2
, p_bedrijf_code OUT VARCHAR2)
IS
v_bedrijf_code VARCHAR2 (256); --098 CNNUMMER
v_bedrijf_naam VARCHAR2 (256); --099 CNNAAM
v_bedrijf_adres VARCHAR2 (256); --100 CNADRES
v_bedrijf_postcode VARCHAR2 (256); --101 CNPOSTCODE
v_bedrijf_plaats VARCHAR2 (256); --102 CNPLAATS
v_bedrijf_contactpers VARCHAR2 (256); --103 CNCTCTPERS
v_bedrijf_telnr VARCHAR2 (256); --104 CNTELNR
v_bedrijf_faxnr VARCHAR2 (256); --105 CNFAXNR
v_bedrijf_debiteurnr VARCHAR2 (256); --106 CNDEBNR
v_count_bedrijf NUMBER (3);
BEGIN
fac.imp_getfield (p_line, c_delim, v_bedrijf_code);
fac.imp_getfield (p_line, c_delim, v_bedrijf_naam);
fac.imp_getfield (p_line, c_delim, v_bedrijf_adres);
fac.imp_getfield (p_line, c_delim, v_bedrijf_postcode);
fac.imp_getfield (p_line, c_delim, v_bedrijf_plaats);
fac.imp_getfield (p_line, c_delim, v_bedrijf_contactpers);
fac.imp_getfield (p_line, c_delim, v_bedrijf_telnr);
fac.imp_getfield (p_line, c_delim, v_bedrijf_faxnr);
fac.imp_getfield (p_line, c_delim, v_bedrijf_debiteurnr);
--
p_bedrijf_code := NULL;
IF (v_bedrijf_code IS NOT NULL) THEN
SELECT COUNT(*)
INTO v_count_bedrijf
FROM fac_imp_ext_bedrijf
WHERE prs_bedrijf_overig1 = v_bedrijf_code;
IF (v_count_bedrijf = 0) THEN
INSERT INTO fac_imp_ext_bedrijf
( prs_bedrijf_naam
, prs_bedrijf_bezoek_adres
, prs_bedrijf_bezoek_postcode
, prs_bedrijf_bezoek_plaats
, prs_bedrijf_telefoon
, prs_bedrijf_fax
, prs_bedrijf_contact_persoon
, prs_bedrijf_overig1
)
VALUES
( v_bedrijf_naam
, v_bedrijf_adres
, v_bedrijf_postcode
, v_bedrijf_plaats
, v_bedrijf_telnr
, v_bedrijf_faxnr
, v_bedrijf_contactpers
, v_bedrijf_code
);
ELSE
UPDATE (SELECT prs_bedrijf_bezoek_adres
, prs_bedrijf_bezoek_postcode
, prs_bedrijf_bezoek_plaats
, prs_bedrijf_telefoon
, prs_bedrijf_fax
, prs_bedrijf_contact_persoon
, prs_bedrijf_overig1
FROM fac_imp_ext_bedrijf
WHERE prs_bedrijf_overig1 = v_bedrijf_code
)
SET prs_bedrijf_bezoek_adres = COALESCE(v_bedrijf_adres, prs_bedrijf_bezoek_adres)
, prs_bedrijf_bezoek_postcode = COALESCE(v_bedrijf_postcode, prs_bedrijf_bezoek_postcode)
, prs_bedrijf_bezoek_plaats = COALESCE(v_bedrijf_plaats, prs_bedrijf_bezoek_plaats)
, prs_bedrijf_telefoon = COALESCE(v_bedrijf_telnr, prs_bedrijf_telefoon)
, prs_bedrijf_fax = COALESCE(v_bedrijf_faxnr, prs_bedrijf_fax)
, prs_bedrijf_contact_persoon = COALESCE(v_bedrijf_contactpers, prs_bedrijf_contact_persoon);
END IF;
p_bedrijf_code := v_bedrijf_code;
END IF;
END; --imp_contractant
PROCEDURE imp_factuur( p_line IN OUT VARCHAR2
, p_factuur_nr OUT NUMBER
, p_factuur_volgnr OUT NUMBER)
IS
v_factuur_nr VARCHAR2 (256); --107 FANUMMER
v_factuur_volgnr VARCHAR2 (256); --108 FASUBNUMME
v_factuur_refnr VARCHAR2 (256); --109 FACNTTNTNR
v_factuur_omschr VARCHAR2 (256); --110 FAOMSCHR
v_factuur_datum VARCHAR2 (256); --111 FADATUM
v_nn_112 VARCHAR2 (256); --112 FACOBEDRAG
v_nn_113 VARCHAR2 (256); --113 FACOEBEDRA
v_nn_114 VARCHAR2 (256); --114 FACOBEDRBT
v_factuur_bedrag_excl VARCHAR2 (256); --115 FABEDRAG
v_factuur_bedrag_btw VARCHAR2 (256); --116 FABEDRAGBT
v_nn_117 VARCHAR2 (256); --117 FABTWTARIE
v_factuur_bedrag_incl VARCHAR2 (256); --118 FAEBEDRAG
v_factuur_adviesdatum VARCHAR2 (256); --119 FAADVDAT
v_nn_120 VARCHAR2 (256); --120 FASTATUS
v_factuur_grootboek VARCHAR2 (256); --121 GRB
v_nn_122 VARCHAR2 (256); --122 GRB2
v_nn_123 VARCHAR2 (256); --123 GRBNummer
v_nn_124 VARCHAR2 (256); --124 GRB_OMSCHR
v_nn_125 VARCHAR2 (256); --125 FABTCODE
v_nn_126 VARCHAR2 (256); --126 FABTBTW
v_factuur_status VARCHAR2 (256); --127 FSSTATUS
v_nn_128 VARCHAR2 (256); --128 INNUMMER
v_nn_129 VARCHAR2 (256); --129 INNAAM
v_nn_130 VARCHAR2 (256); --130 INPERIODE
v_nn_131 VARCHAR2 (256); --131 INCIJFER
v_nn_132 VARCHAR2 (256); --132 RecordType
s_project_nummer VARCHAR2 (256); --003 PRNUMMER :projectnummer (discipline)
s_subproject_code VARCHAR2 (256); --014 SPNUMMER :code subproject (project)
s_rubriek_nr VARCHAR2 (256); --034 RUNUMMER :rubriek volgnummer (rubriek)
s_groep_nr VARCHAR2 (256); --036 GRNUMMER :groep volgnummer (groep)
s_onderdeel_nr VARCHAR2 (256); --038 ONNUMMER :onderdeel nummer (soort)
s_contract_nr VARCHAR2 (256); --067 CONUMMER
s_contract_volgnr VARCHAR2 (256); --068 COSUBNUMME
s_contract_kenmerk VARCHAR2 (256); --087 COKENMERK
BEGIN
fac.imp_getfield (v_newline, c_delim, v_factuur_nr);
fac.imp_getfield (v_newline, c_delim, v_factuur_volgnr);
fac.imp_getfield (v_newline, c_delim, v_factuur_refnr);
fac.imp_getfield (v_newline, c_delim, v_factuur_omschr);
fac.imp_getfield (v_newline, c_delim, v_factuur_datum);
fac.imp_getfield (v_newline, c_delim, v_nn_112);
fac.imp_getfield (v_newline, c_delim, v_nn_113);
fac.imp_getfield (v_newline, c_delim, v_nn_114);
fac.imp_getfield (v_newline, c_delim, v_factuur_bedrag_excl);
fac.imp_getfield (v_newline, c_delim, v_factuur_bedrag_btw);
fac.imp_getfield (v_newline, c_delim, v_nn_117);
fac.imp_getfield (v_newline, c_delim, v_factuur_bedrag_incl);
fac.imp_getfield (v_newline, c_delim, v_factuur_adviesdatum);
fac.imp_getfield (v_newline, c_delim, v_nn_120);
fac.imp_getfield (v_newline, c_delim, v_factuur_grootboek);
fac.imp_getfield (v_newline, c_delim, v_nn_122);
fac.imp_getfield (v_newline, c_delim, v_nn_123);
fac.imp_getfield (v_newline, c_delim, v_nn_124);
fac.imp_getfield (v_newline, c_delim, v_nn_125);
fac.imp_getfield (v_newline, c_delim, v_nn_126);
fac.imp_getfield (v_newline, c_delim, v_factuur_status);
fac.imp_getfield (v_newline, c_delim, v_nn_128);
fac.imp_getfield (v_newline, c_delim, v_nn_129);
fac.imp_getfield (v_newline, c_delim, v_nn_130);
fac.imp_getfield (v_newline, c_delim, v_nn_131);
fac.imp_getfield (v_newline, c_delim, v_nn_132);
p_factuur_nr := fac.safe_To_Integer(v_factuur_nr);
p_factuur_volgnr := fac.safe_To_Integer(v_factuur_volgnr);
IF (isDate(v_factuur_datum) = 1 AND p_factuur_nr > 0) THEN
fac.imp_getfield_nr(v_searchline, c_delim, 3, s_project_nummer);
fac.imp_getfield_nr(v_searchline, c_delim, 14, s_subproject_code);
fac.imp_getfield_nr(v_searchline, c_delim, 34, s_rubriek_nr);
fac.imp_getfield_nr(v_searchline, c_delim, 36, s_groep_nr);
fac.imp_getfield_nr(v_searchline, c_delim, 38, s_onderdeel_nr);
fac.imp_getfield_nr(v_searchline, c_delim, 67, s_contract_nr);
fac.imp_getfield_nr(v_searchline, c_delim, 68, s_contract_volgnr);
fac.imp_getfield_nr(v_searchline, c_delim, 87, s_contract_kenmerk);
INSERT INTO twyn_imp_factuur
( bgt_factuur_nr
, bgt_factuur_volgnr
, bgt_factuur_refnr
, bgt_factuur_omschr
, bgt_factuur_datum
, bgt_factuur_bedrag_excl
, bgt_factuur_bedrag_btw
, bgt_factuur_bedrag_incl
, bgt_factuur_adviesdatum
, bgt_factuur_grootboek
, bgt_factuur_status
, bgt_contract_nr
, bgt_contract_volgnr
, bgt_contract_referentie
, bgt_discipline_code
, bgt_project_code
, bgt_kostenrubriek_code
, prs_kostensoortgrp_code
, prs_kostensoort_code
)
VALUES
( p_factuur_nr
, p_factuur_volgnr
, SUBSTR(v_factuur_refnr, 1, 12)
, v_factuur_omschr
, fac.safe_to_date(v_factuur_datum, 'dd-mm-yyyy')
, fac.safe_To_Number( REPLACE(v_factuur_bedrag_excl, ',', '.') )
, fac.safe_To_Number( REPLACE(v_factuur_bedrag_btw , ',', '.') )
, fac.safe_To_Number( REPLACE(v_factuur_bedrag_incl, ',', '.') )
, fac.safe_to_date(v_factuur_adviesdatum, 'dd-mm-yyyy')
, fac.safe_To_Integer(v_factuur_grootboek)
, v_factuur_status
, s_contract_nr
, s_contract_volgnr
, s_contract_kenmerk
, s_project_nummer
, s_subproject_code
, s_rubriek_nr
, s_groep_nr
, s_onderdeel_nr
);
END IF;
END; --imp_factuur
PROCEDURE nabewerken_budget(p_import_key IN NUMBER)
AS
CURSOR c_budget
IS
SELECT key
, bgt_discipline
, bgt_project
, bgt_kostenrubriek
, bgt_kostensoortgrp
, bgt_kostensoort
, bgt_datum
, bedr_init_excl
, bedr_mut_excl
, bedr_init_btw
, bedr_mut_btw
, type
FROM twyn_imp_budget
WHERE type IN ('N','R');
v_discipline twyn_imp_budget.bgt_discipline%TYPE;
v_project twyn_imp_budget.bgt_project%TYPE;
v_rubriek twyn_imp_budget.bgt_kostenrubriek%TYPE;
v_groep twyn_imp_budget.bgt_kostensoortgrp%TYPE;
v_soort twyn_imp_budget.bgt_kostensoort%TYPE;
v_datum twyn_imp_budget.bgt_datum%TYPE;
v_init_excl twyn_imp_budget.bedr_init_excl%TYPE;
v_mut_excl twyn_imp_budget.bedr_mut_excl%TYPE;
v_type twyn_imp_budget.type%TYPE;
BEGIN
fac.imp_writelog (p_import_key, 'I', 'Nabewerken budget', NULL);
v_errormsg := 'Fout bij nabewerken budget ';
DELETE FROM twyn_imp_budget WHERE bgt_datum IS NULL;
--
UPDATE twyn_imp_budget i
SET bedr_init_btw = (SELECT COALESCE(MAX(b.bedr_init_excl), 0)
FROM twyn_imp_budget b
WHERE b.type = 'B'
AND b.bgt_datum = i.bgt_datum
AND b.bgt_discipline = i.bgt_discipline
AND b.bgt_project = i.bgt_project
AND ((b.bgt_kostenrubriek = i.bgt_kostenrubriek AND i.bgt_kostenrubriek IS NOT NULL) OR (b.bgt_kostenrubriek IS NULL AND i.bgt_kostenrubriek IS NULL))
AND ((b.bgt_kostensoortgrp = i.bgt_kostensoortgrp AND i.bgt_kostensoortgrp IS NOT NULL) OR (b.bgt_kostensoortgrp IS NULL AND i.bgt_kostensoortgrp IS NULL))
AND ((b.bgt_kostensoort = i.bgt_kostensoort AND i.bgt_kostensoort IS NOT NULL) OR (b.bgt_kostensoort IS NULL AND i.bgt_kostensoort IS NULL))
)
, bedr_mut_btw = (SELECT COALESCE(MAX(b.bedr_mut_excl), 0)
FROM twyn_imp_budget b
WHERE b.type = 'B'
AND b.bgt_datum IS NOT NULL
AND b.bgt_datum = i.bgt_datum
AND b.bgt_discipline = i.bgt_discipline
AND b.bgt_project = i.bgt_project
AND ((b.bgt_kostenrubriek = i.bgt_kostenrubriek AND i.bgt_kostenrubriek IS NOT NULL) OR (b.bgt_kostenrubriek IS NULL AND i.bgt_kostenrubriek IS NULL))
AND ((b.bgt_kostensoortgrp = i.bgt_kostensoortgrp AND i.bgt_kostensoortgrp IS NOT NULL) OR (b.bgt_kostensoortgrp IS NULL AND i.bgt_kostensoortgrp IS NULL))
AND ((b.bgt_kostensoort = i.bgt_kostensoort AND i.bgt_kostensoort IS NOT NULL) OR (b.bgt_kostensoort IS NULL AND i.bgt_kostensoort IS NULL))
AND (b.bgt_nr = i.bgt_nr)
)
WHERE type IN ('N','R');
--
-- verrekenen btw van reserve en prijsstijging die samen zijn genomen.
UPDATE twyn_imp_budget
SET bedr_init_btw = (bedr_init_excl * (SELECT SUM(COALESCE(b.bedr_init_btw, 0)) / SUM(COALESCE(b.bedr_init_excl, 0))
FROM twyn_imp_budget b
WHERE b.type in ('R','P')
AND b.bedr_init_excl > 0
)
)
WHERE type in ('R','P')
AND bedr_init_excl > 0;
--
-- De P-regels mogen er nu uit.
DELETE FROM twyn_imp_budget WHERE type = 'P';
--
DELETE FROM twyn_imp_budget WHERE type = 'B';
UPDATE twyn_imp_budget SET key = ROWNUM;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ' r.'|| v_imp_count || ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding ||' * '|| v_errormsg,
v_errorhint);
END; --nabewerken_budget;
--
--
BEGIN
-- Eerst opruiming
DELETE FROM twyn_imp_discipline;
DELETE FROM twyn_imp_project;
DELETE FROM twyn_imp_kostenrubriek;
DELETE FROM twyn_imp_kostensoortgrp;
DELETE FROM twyn_imp_kostensoort;
DELETE FROM twyn_imp_budget;
DELETE FROM twyn_imp_contract;
DELETE FROM fac_imp_ext_bedrijf;
DELETE FROM twyn_imp_factuur;
FOR rec IN c1
LOOP
BEGIN
v_aanduiding := NULL;
v_errorhint := 'Fout inlezen importregel';
v_newline := rec.fac_imp_file_line;
v_ongeldig := 0;
v_imp_count := v_imp_count + 1;
IF (header_is_valid = 0)
THEN
-- Sla voorlopig de eerste regel gewoon over.
-- Later misschien controleren of het een geldige header is.
header_is_valid := 1;
ELSIF rec.regellengte > 1 -- Lege regels overslaan!
THEN
-- Lees alle veldwaarden
v_searchline := v_newline; -- bewaar de oorspronkelijke regel om in te kunnen zoeken.
--
v_aanduiding := 'START';
imp_skip(v_newline, 2);
--
v_aanduiding := 'PROJECT';
imp_project(v_newline, k_project_code);
--
v_aanduiding := 'SUBPROJECT';
imp_subproject(v_newline, k_subproject_code);
--
v_aanduiding := 'RUBRIEK';
imp_rubriek(v_newline, k_rubriek_nr);
--
v_aanduiding := 'GROEP';
imp_groep(v_newline, k_groep_nr);
--
v_aanduiding := 'ONDERDEEL';
imp_onderdeel(v_newline, k_onderdeel_nr);
--
v_aanduiding := 'BUDGET';
imp_budget(v_newline, k_budget_nr);
--
v_aanduiding := 'CONTRACT';
imp_contract(v_newline, k_contract_nr, k_contract_volgnr);
--
v_aanduiding := 'CONTRACTANT';
imp_contractant(v_newline, k_bedrijf_code);
--
v_aanduiding := 'FACTUUR';
imp_factuur(v_newline, k_factuur_nr, k_factuur_volgnr);
--
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ' r.'|| v_imp_count || ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding ||' * '|| v_errormsg,
v_errorhint);
END;
END LOOP;
--
nabewerken_budget(p_import_key);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ' r.'|| v_imp_count || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inlezen bgt conversie afgebroken!');
END twyn_import_reportdbf;
/
CREATE OR REPLACE PROCEDURE twyn_update_reportdbf (p_import_key IN NUMBER)
AS
g_errormsg VARCHAR2 (1000);
g_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
g_aanduiding VARCHAR2 (200);
g_perslid_key NUMBER (10);
TYPE budget_rec IS RECORD
(
bgt_discipline twyn_imp_budget.bgt_discipline%TYPE,
bgt_project twyn_imp_budget.bgt_project%TYPE,
bgt_kostenrubriek twyn_imp_budget.bgt_kostenrubriek%TYPE,
bgt_kostensoortgrp twyn_imp_budget.bgt_kostensoortgrp%TYPE,
bgt_kostensoort twyn_imp_budget.bgt_kostensoort%TYPE,
type VARCHAR2(1),
bgt_datum twyn_imp_budget.bgt_datum%TYPE,
bedr_init_excl twyn_imp_budget.bedr_init_excl%TYPE,
bedr_init_btw twyn_imp_budget.bedr_init_btw%TYPE,
key NUMBER(10)
);
TYPE kosten_keys IS RECORD
(
bgt_discipline_key bgt_disc_params.bgt_ins_discipline_key%TYPE,
bgt_project_key bgt_project.bgt_project_key%TYPE,
bgt_kostenrubriek_key bgt_kostenrubriek.bgt_kostenrubriek_key%TYPE,
prs_kostensoortgrp_key prs_kostensoortgrp.prs_kostensoortgrp_key%TYPE,
prs_kostensoort_key prs_kostensoort.prs_kostensoort_key%TYPE,
is_reserve NUMBER(1),
status NUMBER(1),
type VARCHAR2(1)
);
FUNCTION get_kosten_keys( p_import_key IN NUMBER
, p_prefix IN VARCHAR2
, p_discipline IN VARCHAR2
, p_project IN VARCHAR2
, p_rubriek IN VARCHAR2
, p_groep IN VARCHAR2
, p_soort IN VARCHAR2
, p_type IN VARCHAR2 DEFAULT NULL
) RETURN kosten_keys
IS
a_rubriek_code bgt_kostenrubriek.bgt_kostenrubriek_code%TYPE;
a_groep_code prs_kostensoortgrp.prs_kostensoortgrp_altcode%TYPE;
a_soort_code prs_kostensoort.prs_kostensoort_oms%TYPE;
a_kosten_keys KOSTEN_KEYS;
BEGIN
a_kosten_keys.status := -1;
g_errormsg := 'Fout bij ophalen ('|| p_prefix ||')kosten-keys ['|| NVL(p_discipline, 'k')
||'.'|| NVL(p_project, 'k')
||'.'|| NVL(p_rubriek, 'k')
||'.'|| NVL(p_groep, 'k')
||'.'|| NVL(p_soort, 'k')
||'.'|| NVL(p_type, 'k')
||']';
BEGIN
IF (p_rubriek IS NULL) THEN
SELECT d.bgt_ins_discipline_key
, p.bgt_project_key
, r.bgt_kostenrubriek_key
, NULL
, NULL
, p_type
INTO a_kosten_keys.bgt_discipline_key
, a_kosten_keys.bgt_project_key
, a_kosten_keys.bgt_kostenrubriek_key
, a_kosten_keys.prs_kostensoortgrp_key
, a_kosten_keys.prs_kostensoort_key
, a_kosten_keys.type
FROM bgt_disc_params d
, bgt_project p
, bgt_kostenrubriek r
WHERE d.bgt_ins_discipline_key = p.ins_discipline_key
AND p.bgt_project_key = r.bgt_project_key
AND r.bgt_kostenrubriek_code = 'R'
AND d.bgt_disc_params_code = p_discipline
AND p.bgt_project_code = p_project;
ELSE
a_rubriek_code := p_rubriek;
SELECT DECODE(a_rubriek_code, NULL, NULL, DECODE(p_groep, NULL, NULL, a_rubriek_code ||'.'|| p_groep)) INTO a_groep_code FROM DUAL;
SELECT DECODE(a_groep_code, NULL, NULL, DECODE(p_soort, NULL, NULL, a_groep_code ||'.'|| p_soort)) INTO a_soort_code FROM DUAL;
SELECT DISTINCT
d.bgt_ins_discipline_key
, p.bgt_project_key
, DECODE(p_rubriek, NULL, NULL, r.bgt_kostenrubriek_key)
, DECODE(p_groep, NULL, NULL, g.prs_kostensoortgrp_key)
, DECODE(p_soort, NULL, NULL, s.prs_kostensoort_key)
INTO a_kosten_keys.bgt_discipline_key
, a_kosten_keys.bgt_project_key
, a_kosten_keys.bgt_kostenrubriek_key
, a_kosten_keys.prs_kostensoortgrp_key
, a_kosten_keys.prs_kostensoort_key
FROM bgt_disc_params d
, bgt_project p
, bgt_kostenrubriek r
, prs_kostensoortgrp g
, prs_kostensoort s
WHERE d.bgt_ins_discipline_key = p.ins_discipline_key
AND 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 d.bgt_disc_params_code = p_discipline
AND p.bgt_project_code = p_project
AND r.bgt_kostenrubriek_code = NVL(a_rubriek_code, r.bgt_kostenrubriek_code)
AND g.prs_kostensoortgrp_altcode = NVL(a_groep_code, g.prs_kostensoortgrp_altcode)
AND s.prs_kostensoort_altcode = NVL(a_soort_code, s.prs_kostensoort_altcode);
END IF;
--
a_kosten_keys.status := 1;
a_kosten_keys.is_reserve := 0;
IF ( p_rubriek IS NULL
AND p_groep IS NULL
AND p_soort IS NULL
) THEN
a_kosten_keys.is_reserve := 1;
END IF;
EXCEPTION
WHEN TOO_MANY_ROWS THEN
fac.imp_writelog ( p_import_key, 'W', g_errormsg, NULL);
WHEN NO_DATA_FOUND THEN
a_kosten_keys.status := 0;
END;
RETURN a_kosten_keys;
END; --get_kosten_keys
FUNCTION get_opdr_key( p_kostensoort_key IN NUMBER
, p_contract_nr IN NUMBER
, p_contract_volgnr IN NUMBER
) RETURN NUMBER
IS
a_opdr_key mld_opdr.mld_opdr_key%TYPE;
BEGIN
g_errormsg := 'Fout bij ophalen opdracht-key ['|| TO_CHAR(p_contract_nr) ||'/'|| TO_CHAR(p_contract_volgnr) ||'] '||p_kostensoort_key;
BEGIN
SELECT mld_opdr_key
INTO a_opdr_key
FROM mld_opdr
WHERE mld_opdr_ordernr = TO_CHAR(p_contract_nr)
AND mld_opdr_bedrijfopdr_volgnr = TO_CHAR(p_contract_volgnr)
AND prs_kostensoort_key = p_kostensoort_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
a_opdr_key := -1;
END;
RETURN a_opdr_key;
END;
FUNCTION get_btw_perc( p_excl IN NUMBER
, p_btw IN NUMBER
) RETURN NUMBER
IS
a_perc NUMBER (3);
a_btw_key fin_btwtabelwaarde.fin_btwtabelwaarde_key%TYPE;
BEGIN
-- Bepaal de btw-key door het percentage te berekenen
IF ((p_excl = p_btw) OR (NVL(p_btw, 0) = 0) OR (NVL(p_excl, 0) = 0)) THEN
a_perc := 0;
ELSE
SELECT ROUND((p_btw / p_excl) * 100)
INTO a_perc
FROM DUAL;
END IF;
BEGIN
SELECT fin_btwtabelwaarde_key
INTO a_btw_key
FROM fin_btwtabelwaarde
WHERE fin_btwtabelwaarde_perc = a_perc;
EXCEPTION
WHEN NO_DATA_FOUND THEN
a_btw_key := NULL;
END;
RETURN a_btw_key;
END; --get_btw_perc
FUNCTION get_btw_key( p_code IN VARCHAR2
, p_perc IN NUMBER
) RETURN NUMBER
IS
a_btw_key fin_btwtabelwaarde.fin_btwtabelwaarde_key%TYPE;
BEGIN
BEGIN
SELECT fin_btwtabelwaarde_key
INTO a_btw_key
FROM fin_btwtabelwaarde
WHERE fin_btwtabelwaarde_perc = p_perc;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO fin_btwtabelwaarde
( fin_btwtabelwaarde_code
, fin_btwtabelwaarde_oms
, fin_btwtabelwaarde_perc
, fin_btwtabel_key
)
VALUES
( SUBSTR(p_code,1,1) || TO_CHAR(p_perc)
, p_code
, p_perc
, (SELECT MAX(fin_btwtabel_key) FROM fin_btwtabel)
)
RETURNING fin_btwtabelwaarde_key INTO a_btw_key;
END;
RETURN a_btw_key;
END; -- get_btw_key
PROCEDURE update_discipline(p_import_key IN NUMBER)
AS
CURSOR c_discipline
IS
SELECT bgt_disc_params_code
, ins_discipline_omschrijving
, bgt_disc_params_opdrachtgever
, bgt_disc_params_startdatum
, ins_discipline_btw
, bgt_disc_params_leider
FROM twyn_imp_discipline;
l_disc_key bgt_disc_params.bgt_ins_discipline_key%TYPE;
l_count NUMBER(3) := 0;
BEGIN
g_errormsg := NULL;
FOR l_rec IN c_discipline
LOOP
g_errormsg := 'Fout bij toevoegen discipline ' || l_rec.bgt_disc_params_code;
BEGIN
SELECT dp.bgt_ins_discipline_key
INTO l_disc_key
FROM bgt_disc_params dp
, ins_tab_discipline td
WHERE dp.bgt_ins_discipline_key = td.ins_discipline_key
AND td.ins_discipline_verwijder IS NULL
AND dp.bgt_disc_params_code = l_rec.bgt_disc_params_code;
--
fac.imp_writelog ( p_import_key
, 'W'
, 'Discipline [' || l_rec.bgt_disc_params_code || '] bestaat al'
, NULL
);
EXCEPTION
WHEN NO_DATA_FOUND THEN
g_errorhint := 'Toevoegen discipline';
INSERT INTO ins_tab_discipline
( ins_discipline_module
, ins_discipline_omschrijving
, ins_discipline_btw
)
VALUES
( 'BGT'
, l_rec.ins_discipline_omschrijving
, l_rec.ins_discipline_btw
)
RETURNING ins_discipline_key INTO l_disc_key;
--
INSERT INTO bgt_disc_params
( bgt_ins_discipline_key
, bgt_disc_params_code
, bgt_disc_params_startdatum
, bgt_disc_params_opdrachtgever
)
VALUES
( l_disc_key
, l_rec.bgt_disc_params_code
, l_rec.bgt_disc_params_startdatum
, l_rec.bgt_disc_params_opdrachtgever
);
--
fac.imp_writelog ( p_import_key
, 'I'
, 'Discipline [' || l_rec.bgt_disc_params_code || '] toegevoegd'
, NULL
);
l_count := l_count + 1;
END;
END LOOP;
fac.imp_writelog ( p_import_key, 'S', 'Discipline: aantal regels toegevoegd: ' || TO_CHAR(l_count), NULL);
COMMIT;
END; --update_discipline
PROCEDURE update_project(p_import_key IN NUMBER)
AS
CURSOR c_project
IS
SELECT bgt_project_discipline
, bgt_project_code
, bgt_project_volgnr
, bgt_project_omschrijving
, bgt_project_prijspeildatum
, bgt_project_notes
, bgt_project_fase_nr
, bgt_project_fase_omschr
, bgt_project_soort_nr
, bgt_project_soort_omschr
FROM twyn_imp_project
ORDER BY bgt_project_code;
l_disc_key bgt_disc_params.bgt_ins_discipline_key%TYPE;
l_project_key bgt_project.bgt_project_key%TYPE;
l_count NUMBER(3) := 0;
BEGIN
g_errormsg := NULL;
FOR l_rec in c_project
LOOP
BEGIN
g_errormsg := 'Fout bij opvragen discipline ' || l_rec.bgt_project_discipline;
SELECT dp.bgt_ins_discipline_key
INTO l_disc_key
FROM bgt_disc_params dp
, ins_tab_discipline td
WHERE dp.bgt_ins_discipline_key = td.ins_discipline_key
AND td.ins_discipline_verwijder IS NULL
AND dp.bgt_disc_params_code = l_rec.bgt_project_discipline;
--
g_errormsg := 'Fout bij toevoegen project ' || l_rec.bgt_project_code;
BEGIN
SELECT bgt_project_key
INTO l_project_key
FROM bgt_project
WHERE ins_discipline_key = l_disc_key
AND bgt_project_code = l_rec.bgt_project_code
AND bgt_project_volgnr = l_rec.bgt_project_volgnr
AND bgt_project_verwijder IS NULL;
--
fac.imp_writelog ( p_import_key
, 'W'
, 'Project [' || l_rec.bgt_project_code || '] bestaat al in discipline [' || l_rec.bgt_project_discipline || ']'
, NULL
);
EXCEPTION
WHEN NO_DATA_FOUND THEN
g_errorhint := 'Toevoegen project';
INSERT INTO bgt_project
( ins_discipline_key
, bgt_project_code
, bgt_project_omschrijving
, bgt_project_volgnr
, bgt_project_prijspeildatum
, bgt_project_notes
)
VALUES
( l_disc_key
, l_rec.bgt_project_code
, l_rec.bgt_project_omschrijving
, l_rec.bgt_project_volgnr
, l_rec.bgt_project_prijspeildatum
, l_rec.bgt_project_notes
)
RETURNING bgt_project_key INTO l_project_key;
--
fac.imp_writelog ( p_import_key
, 'I'
, 'Project [' || l_rec.bgt_project_code || '] toegevoegd'
, NULL
);
l_count := l_count + 1;
END;
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog ( p_import_key, 'W', 'Onbekende discipline [' || l_rec.bgt_project_discipline || ']', NULL);
END;
END LOOP;
fac.imp_writelog ( p_import_key, 'S', 'Project: aantal regels toegevoegd: ' || TO_CHAR(l_count), NULL);
COMMIT;
END; --update_project
PROCEDURE update_rubriek(p_import_key IN NUMBER)
AS
CURSOR c_rubriek
IS
SELECT bgt_project_discipline
, bgt_project_code
, bgt_kostenrubriek_code
, bgt_kostenrubriek_oms
FROM twyn_imp_kostenrubriek
ORDER BY bgt_kostenrubriek_code;
l_project_key bgt_project.bgt_project_key%TYPE;
l_rubriek_key bgt_kostenrubriek.bgt_kostenrubriek_key%TYPE;
l_count NUMBER(3) := 0;
BEGIN
g_errormsg := NULL;
FOR l_rec IN c_rubriek
LOOP
BEGIN
g_errormsg := 'Fout bij opvragen project ' || l_rec.bgt_project_code;
SELECT bgt_project_key
INTO l_project_key
FROM bgt_project p
, bgt_disc_params d
WHERE p.ins_discipline_key = d.bgt_ins_discipline_key
AND p.bgt_project_code = l_rec.bgt_project_code
AND d.bgt_disc_params_code = l_rec.bgt_project_discipline;
--
g_errormsg := 'Fout bij toevoegen rubriek ' || l_rec.bgt_kostenrubriek_code;
BEGIN
IF (l_count = 0) THEN
-- Discipline/project bevat geen enkele rubriek. Maak eerst rubriek Reserve aan.
BEGIN
SELECT bgt_kostenrubriek_key
INTO l_rubriek_key
FROM bgt_kostenrubriek
WHERE bgt_kostenrubriek_code = 'R'
AND bgt_project_key = l_project_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO bgt_kostenrubriek
( bgt_kostenrubriek_code
, bgt_kostenrubriek_oms
, bgt_project_key
)
VALUES
( 'R'
, 'R' ||' '|| 'Reserve'
, l_project_key
);
fac.imp_writelog ( p_import_key
, 'I'
, 'Rubriek [R Reserve] toegevoegd'
, NULL
);
END;
END IF;
--
SELECT bgt_kostenrubriek_key
INTO l_rubriek_key
FROM bgt_kostenrubriek
WHERE bgt_project_key = l_project_key
AND bgt_kostenrubriek_code = l_rec.bgt_kostenrubriek_code;
--
fac.imp_writelog ( p_import_key
, 'W'
, 'Rubriek [' || l_rec.bgt_kostenrubriek_code || '] bestaat al'
, NULL
);
EXCEPTION
WHEN NO_DATA_FOUND THEN
g_errorhint := 'Toevoegen rubriek';
INSERT INTO bgt_kostenrubriek
( bgt_kostenrubriek_code
, bgt_kostenrubriek_oms
, bgt_project_key
)
VALUES
( l_rec.bgt_kostenrubriek_code
, l_rec.bgt_kostenrubriek_code ||' '|| l_rec.bgt_kostenrubriek_oms
, l_project_key
)
RETURNING bgt_kostenrubriek_key INTO l_rubriek_key;
--
fac.imp_writelog ( p_import_key
, 'I'
, 'Rubriek [' || l_rec.bgt_kostenrubriek_code || '] toegevoegd'
, NULL
);
l_count := l_count + 1;
END;
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog ( p_import_key, 'W', 'Onbekende project [' || l_rec.bgt_project_code || ']', NULL);
END;
END LOOP;
fac.imp_writelog ( p_import_key, 'S', 'Rubriek: aantal regels toegevoegd: ' || TO_CHAR(l_count), NULL);
COMMIT;
END; --update_rubriek
PROCEDURE update_groep(p_import_key IN NUMBER)
AS
CURSOR c_groep
IS
SELECT bgt_project_discipline
, bgt_project_code
, bgt_kostenrubriek_code
, prs_kostensoortgrp_altcode
, prs_kostensoortgrp_oms
FROM twyn_imp_kostensoortgrp
ORDER BY prs_kostensoortgrp_altcode;
l_rubriek_key bgt_kostenrubriek.bgt_kostenrubriek_key%TYPE;
l_groep_key prs_kostensoortgrp.prs_kostensoortgrp_key%TYPE;
l_rubriek_code bgt_kostenrubriek.bgt_kostenrubriek_code%TYPE;
l_groep_code prs_kostensoortgrp.prs_kostensoortgrp_altcode%TYPE;
l_count NUMBER(3) := 0;
BEGIN
g_errormsg := NULL;
FOR l_rec IN c_groep
LOOP
BEGIN
l_rubriek_code := l_rec.bgt_kostenrubriek_code;
g_errormsg := 'Fout bij opvragen rubriek ' || l_rubriek_code;
SELECT bgt_kostenrubriek_key
INTO l_rubriek_key
FROM bgt_kostenrubriek r
, bgt_project p
, bgt_disc_params d
WHERE r.bgt_project_key = p.bgt_project_key
AND p.ins_discipline_key = d.bgt_ins_discipline_key
AND d.bgt_disc_params_code = l_rec.bgt_project_discipline
AND p.bgt_project_code = l_rec.bgt_project_code
AND r.bgt_kostenrubriek_code = l_rubriek_code;
--
l_groep_code := l_rec.bgt_kostenrubriek_code ||'.'|| l_rec.prs_kostensoortgrp_altcode;
g_errormsg := 'Fout bij toevoegen groep ' || l_groep_code;
BEGIN
SELECT prs_kostensoortgrp_key
INTO l_groep_key
FROM prs_kostensoortgrp
WHERE bgt_kostenrubriek_key = l_rubriek_key
AND prs_kostensoortgrp_altcode = l_groep_code;
--
fac.imp_writelog ( p_import_key
, 'W'
, 'Groep [' || l_groep_code || '] bestaat al'
, NULL
);
EXCEPTION
WHEN NO_DATA_FOUND THEN
g_errorhint := 'Toevoegen groep';
INSERT INTO prs_kostensoortgrp
( prs_kostensoortgrp_oms
, prs_kostensoortgrp_altcode
, bgt_kostenrubriek_key
)
VALUES
( l_groep_code ||' '|| l_rec.prs_kostensoortgrp_oms
, l_groep_code
, l_rubriek_key
)
RETURNING prs_kostensoortgrp_key INTO l_groep_key;
--
fac.imp_writelog ( p_import_key
, 'I'
, 'Groep [' || l_groep_code || ': ' || l_rec.prs_kostensoortgrp_oms || '] toegevoegd'
, NULL
);
l_count := l_count + 1;
END;
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog ( p_import_key, 'W', 'Onbekende rubriek [' || l_rec.bgt_kostenrubriek_code || ']', NULL);
END;
END LOOP;
fac.imp_writelog ( p_import_key, 'S', 'Groep: aantal regels toegevoegd: ' || TO_CHAR(l_count), NULL);
COMMIT;
END; --update_groep
PROCEDURE update_soort(p_import_key IN NUMBER)
AS
CURSOR c_soort
IS
SELECT bgt_project_discipline
, bgt_project_code
, bgt_kostenrubriek_code
, prs_kostensoortgrp_altcode
, prs_kostensoort_oms
, prs_kostensoort_opmerking
, bgt_btw_code
, bgt_btw_waarde
FROM twyn_imp_kostensoort
ORDER BY prs_kostensoort_oms;
l_groep_key prs_kostensoortgrp.prs_kostensoortgrp_key%TYPE;
l_soort_key prs_kostensoort.prs_kostensoort_key%TYPE;
l_groep_code prs_kostensoortgrp.prs_kostensoortgrp_altcode%TYPE;
l_soort_code prs_kostensoort.prs_kostensoort_oms%TYPE;
l_btw_key fin_btwtabelwaarde.fin_btwtabelwaarde_key%TYPE;
l_count NUMBER(3) := 0;
BEGIN
g_errormsg := NULL;
FOR l_rec IN c_soort
LOOP
BEGIN
l_groep_code := l_rec.bgt_kostenrubriek_code ||'.'|| l_rec.prs_kostensoortgrp_altcode;
g_errormsg := 'Fout bij opvragen groep ' || l_groep_code;
SELECT prs_kostensoortgrp_key
INTO l_groep_key
FROM bgt_disc_params d
, bgt_project p
, bgt_kostenrubriek r
, prs_kostensoortgrp g
WHERE r.bgt_project_key = p.bgt_project_key
AND r.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key
AND p.ins_discipline_key = d.bgt_ins_discipline_key
AND d.bgt_disc_params_code = l_rec.bgt_project_discipline
AND p.bgt_project_code = l_rec.bgt_project_code
AND r.bgt_kostenrubriek_code = l_rec.bgt_kostenrubriek_code
AND g.prs_kostensoortgrp_altcode = l_groep_code;
--
l_soort_code := l_groep_code ||'.'|| l_rec.prs_kostensoort_oms;
g_errormsg := 'Fout bij toevoegen soort ' || l_soort_code;
BEGIN
SELECT prs_kostensoort_key
INTO l_soort_key
FROM prs_kostensoort
WHERE prs_kostensoortgrp_key = l_groep_key
AND prs_kostensoort_altcode = l_soort_code;
--
fac.imp_writelog ( p_import_key
, 'W'
, 'Soort [' || l_soort_code || '] bestaat al'
, NULL
);
EXCEPTION
WHEN NO_DATA_FOUND THEN
g_errorhint := 'Toevoegen soort';
l_btw_key := get_btw_key(l_rec.bgt_btw_code, l_rec.bgt_btw_waarde);
INSERT INTO prs_kostensoort
( prs_kostensoort_oms
, prs_kostensoort_altcode
, prs_kostensoort_opmerking
, prs_kostensoortgrp_key
, fin_btwtabelwaarde_key
)
VALUES
( l_soort_code ||' '|| l_rec.prs_kostensoort_opmerking
, l_soort_code
, l_soort_code
, l_groep_key
, l_btw_key
)
RETURNING prs_kostensoort_key INTO l_soort_key;
--
fac.imp_writelog ( p_import_key
, 'I'
, 'Soort [' || l_soort_code || ': ' || l_rec.prs_kostensoort_opmerking || '] toegevoegd'
, NULL
);
l_count := l_count + 1;
END;
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog ( p_import_key, 'W', 'Onbekende groep [' || l_groep_code || ']', NULL);
END;
END LOOP;
fac.imp_writelog ( p_import_key, 'S', 'Soort: aantal regels toegevoegd: ' || TO_CHAR(l_count), NULL);
COMMIT;
END; --update_soort
PROCEDURE update_bedrijf(p_import_key IN NUMBER)
AS
CURSOR c_bedrijf
IS
SELECT prs_bedrijf_overig1
, prs_bedrijf_naam
, prs_bedrijf_bezoek_adres
, prs_bedrijf_bezoek_postcode
, prs_bedrijf_bezoek_plaats
, prs_bedrijf_telefoon
, prs_bedrijf_fax
, prs_bedrijf_contact_persoon
FROM fac_imp_ext_bedrijf
ORDER BY prs_bedrijf_overig1;
l_count_i NUMBER(3) := 0;
l_count_u NUMBER(3) := 0;
l_bedrijf_key NUMBER(10);
BEGIN
g_errormsg := NULL;
FOR r_bedrijf IN c_bedrijf
LOOP
g_errormsg := 'Fout bij toevoegen contractant ' || r_bedrijf.prs_bedrijf_overig1;
BEGIN
SELECT prs_bedrijf_key
INTO l_bedrijf_key
FROM prs_bedrijf
WHERE prs_bedrijf_naam_upper = UPPER(r_bedrijf.prs_bedrijf_naam);
--
UPDATE prs_bedrijf
SET prs_bedrijf_post_adres = r_bedrijf.prs_bedrijf_bezoek_adres
, prs_bedrijf_post_postcode = r_bedrijf.prs_bedrijf_bezoek_postcode
, prs_bedrijf_post_plaats = r_bedrijf.prs_bedrijf_bezoek_plaats
, prs_bedrijf_telefoon = r_bedrijf.prs_bedrijf_telefoon
, prs_bedrijf_fax = r_bedrijf.prs_bedrijf_fax
, prs_bedrijf_contact_persoon = r_bedrijf.prs_bedrijf_contact_persoon
, prs_leverancier_nr = r_bedrijf.prs_bedrijf_overig1
WHERE prs_bedrijf_key = l_bedrijf_key;
fac.imp_writelog ( p_import_key
, 'I'
, 'Bedrijf [' || r_bedrijf.prs_bedrijf_overig1 || '] aangepast'
, NULL
);
l_count_u := l_count_u + 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO prs_bedrijf
( prs_bedrijf_naam
, prs_bedrijf_post_adres
, prs_bedrijf_post_postcode
, prs_bedrijf_post_plaats
, prs_bedrijf_telefoon
, prs_bedrijf_fax
, prs_bedrijf_contact_persoon
, prs_leverancier_nr
)
VALUES
( r_bedrijf.prs_bedrijf_naam
, r_bedrijf.prs_bedrijf_bezoek_adres
, r_bedrijf.prs_bedrijf_bezoek_postcode
, r_bedrijf.prs_bedrijf_bezoek_plaats
, r_bedrijf.prs_bedrijf_telefoon
, r_bedrijf.prs_bedrijf_fax
, r_bedrijf.prs_bedrijf_contact_persoon
, r_bedrijf.prs_bedrijf_overig1
);
fac.imp_writelog ( p_import_key
, 'I'
, 'Bedrijf [' || r_bedrijf.prs_bedrijf_overig1 || '] toegevoegd'
, NULL
);
l_count_i := l_count_i + 1;
END;
END LOOP;
fac.imp_writelog ( p_import_key, 'S', 'Bedrijf: aantal regels toegevoegd: ' || TO_CHAR(l_count_i), NULL);
fac.imp_writelog ( p_import_key, 'S', 'Bedrijf: aantal regels gewijzigd: ' || TO_CHAR(l_count_u), NULL);
COMMIT;
END; --update_bedrijf
PROCEDURE update_budget(p_import_key IN NUMBER)
AS
CURSOR c_budget(p_isinit NUMBER)
IS
SELECT t.key
, t.bgt_nr
, t.soortnr
, t.bgt_oms
, t.bgt_budget_key
, t.bgt_discipline
, t.bgt_project
, t.bgt_kostenrubriek
, t.bgt_kostensoortgrp
, t.bgt_kostensoort
, t.bedr_init_excl
, t.bedr_init_btw
, t.bgt_datum
, t.type
, min(x.bedrag) bedrag_min
, max(x.bedrag) bedrag_max
, min(t.bedr_mut_btw) bedrag_btw
FROM twyn_imp_budget t
, (SELECT bgt_nr, key, bgt_budget_key, bedr_mmw_excl bedrag FROM twyn_imp_budget WHERE bgt_datum IS NOT NULL
UNION
SELECT bgt_nr, key, bgt_budget_key, bedr_mut_excl bedrag FROM twyn_imp_budget WHERE bgt_datum IS NOT NULL
UNION
SELECT bgt_nr, key, bgt_budget_key, bedr_res_mut_excl bedrag FROM twyn_imp_budget WHERE bgt_datum IS NOT NULL
) x
WHERE t.key = x.key
AND ( (soortnr = 0 AND p_isinit = 0)
OR (soortnr > 0 AND p_isinit = 1)
)
GROUP BY t.key
, t.bgt_nr
, t.soortnr
, t.bgt_oms
, t.bgt_budget_key
, t.bgt_discipline
, t.bgt_project
, t.bgt_kostenrubriek
, t.bgt_kostensoortgrp
, t.bgt_kostensoort
, t.bedr_init_excl
, t.bedr_init_btw
, t.bgt_datum
, t.type
ORDER BY t.bgt_nr;
CURSOR c_reserve
IS
SELECT p.ins_discipline_key
, r.bgt_project_key
, r.bgt_kostenrubriek_key
, r.bgt_kostenrubriek_code
FROM bgt_kostenrubriek r
, bgt_project p
, bgt_disc_params d
WHERE d.bgt_ins_discipline_key = p.ins_discipline_key
AND p.bgt_project_key = r.bgt_project_key
AND (d.bgt_disc_params_code, p.bgt_project_code) IN
(SELECT DISTINCT
bgt_discipline
, bgt_project
FROM twyn_imp_budget
);
CURSOR c_contract
IS
SELECT DISTINCT
bgt_discipline_code bgt_discipline
, bgt_project_code bgt_project
, bgt_kostenrubriek_code bgt_kostenrubriek
, prs_kostensoortgrp_code bgt_kostensoortgrp
, prs_kostensoort_code bgt_kostensoort
, (SELECT MIN(bgt_datum) FROM twyn_imp_budget) bgt_datum
, 0 bedr_init_excl
, 0 bedr_init_btw
, 0 is_reserve
, 'C' type
, NULL key
FROM twyn_imp_contract c
WHERE NOT EXISTS
(SELECT 1
FROM twyn_imp_budget b
WHERE b.bgt_discipline = c.bgt_discipline_code
AND b.bgt_project = c.bgt_project_code
AND b.bgt_kostenrubriek = c.bgt_kostenrubriek_code
AND b.bgt_kostensoortgrp = c.prs_kostensoortgrp_code
AND b.bgt_kostensoort = c.prs_kostensoort_code
)
ORDER BY 1,2,3,4,5;
l_disc_key bgt_disc_params.bgt_ins_discipline_key%TYPE;
l_project_key bgt_project.bgt_project_key%TYPE;
l_rubriek_key bgt_kostenrubriek.bgt_kostenrubriek_key%TYPE;
l_groep_key prs_kostensoortgrp.prs_kostensoortgrp_key%TYPE;
l_soort_key prs_kostensoort.prs_kostensoort_key%TYPE;
l_budget_key bgt_budget.bgt_budget_key%TYPE;
l_bedrag_van bgt_budgetmutatie.bgt_budget_bedrag_van%TYPE;
l_bedrag_naar bgt_budgetmutatie.bgt_budget_bedrag_naar%TYPE;
l_btw_naar bgt_budgetmutatie.bgt_budget_btwbedrag_naar%TYPE;
l_budget_van bgt_budgetmutatie.bgt_budget_key_van%TYPE;
l_budget_naar bgt_budgetmutatie.bgt_budget_key_naar%TYPE;
l_bedrag_min bgt_budgetmutatie.bgt_budget_bedrag_van%TYPE;
l_bedrag_max bgt_budgetmutatie.bgt_budget_bedrag_van%TYPE;
l_btw_van bgt_budgetmutatie.bgt_budget_btwbedrag_van%TYPE;
l_budgetmutatie_key bgt_budgetmutatie.bgt_budgetmutatie_key%TYPE;
l_budget_gegevens VARCHAR2(200);
l_count NUMBER(3);
l_aantal NUMBER(3);
l_mut_volgnr VARCHAR2(10);
l_mut_code VARCHAR2(1);
t_rec BUDGET_REC;
FUNCTION get_budgetrec_1( b_rec IN c_budget%ROWTYPE
, c_rec IN c_contract%ROWTYPE
) RETURN budget_rec
IS
a_budget_rec BUDGET_REC;
BEGIN
IF (b_rec.bgt_discipline IS NOT NULL) THEN
a_budget_rec.bgt_discipline := b_rec.bgt_discipline;
a_budget_rec.bgt_project := b_rec.bgt_project;
a_budget_rec.bgt_kostenrubriek := b_rec.bgt_kostenrubriek;
a_budget_rec.bgt_kostensoortgrp := b_rec.bgt_kostensoortgrp;
a_budget_rec.bgt_kostensoort := b_rec.bgt_kostensoort;
a_budget_rec.bgt_datum := b_rec.bgt_datum;
a_budget_rec.type := b_rec.type;
a_budget_rec.bedr_init_excl := b_rec.bedr_init_excl;
a_budget_rec.bedr_init_btw := b_rec.bedr_init_btw;
a_budget_rec.key := b_rec.key;
END IF;
--
IF (c_rec.bgt_discipline IS NOT NULL) THEN
a_budget_rec.bgt_discipline := c_rec.bgt_discipline;
a_budget_rec.bgt_project := c_rec.bgt_project;
a_budget_rec.bgt_kostenrubriek := c_rec.bgt_kostenrubriek;
a_budget_rec.bgt_kostensoortgrp := c_rec.bgt_kostensoortgrp;
a_budget_rec.bgt_kostensoort := c_rec.bgt_kostensoort;
a_budget_rec.bgt_datum := c_rec.bgt_datum;
a_budget_rec.type := c_rec.type;
a_budget_rec.bedr_init_excl := c_rec.bedr_init_excl;
a_budget_rec.bedr_init_btw := c_rec.bedr_init_btw;
a_budget_rec.key := c_rec.key;
END IF;
--
RETURN a_budget_rec;
END; -- get_budgetrec_1
PROCEDURE add_budget( p_import_key IN NUMBER
, p_mode IN VARCHAR2
, p_rec IN BUDGET_REC)
AS
a_budget_key bgt_budget.bgt_budget_key%TYPE;
a_kosten_keys KOSTEN_KEYS;
BEGIN
a_kosten_keys := get_kosten_keys( p_import_key
, 'budget'
, p_rec.bgt_discipline
, p_rec.bgt_project
, p_rec.bgt_kostenrubriek
, p_rec.bgt_kostensoortgrp
, p_rec.bgt_kostensoort
, p_rec.type);
--
g_errormsg := 'Fout bij toevoegen ' || p_mode ||' '
||'[('|| NVL(TO_CHAR(a_kosten_keys.bgt_discipline_key), 'x') ||'='|| NVL(p_rec.bgt_discipline,'-') ||')'
||'.('|| NVL(TO_CHAR(a_kosten_keys.bgt_project_key), 'x') ||'='|| NVL(p_rec.bgt_project,'-') ||')'
||'.('|| NVL(TO_CHAR(a_kosten_keys.bgt_kostenrubriek_key), 'x') ||'='|| NVL(p_rec.bgt_kostenrubriek,'-') ||')'
||'.('|| NVL(TO_CHAR(a_kosten_keys.prs_kostensoortgrp_key), 'x') ||'='|| NVL(p_rec.bgt_kostensoortgrp,'-') ||')'
||'.('|| NVL(TO_CHAR(a_kosten_keys.prs_kostensoort_key), 'x') ||'='|| NVL(p_rec.bgt_kostensoort,'-') ||')'
||'.('|| NVL(a_kosten_keys.type, 'x') ||'='|| NVL(p_rec.type,'-') ||')'
||']';
BEGIN
SELECT bgt_budget_key
INTO a_budget_key
FROM bgt_budget
WHERE ins_discipline_key = a_kosten_keys.bgt_discipline_key
AND bgt_project_key = a_kosten_keys.bgt_project_key
AND (bgt_kostenrubriek_key = NVL(a_kosten_keys.bgt_kostenrubriek_key,-1) OR (NVL(a_kosten_keys.bgt_kostenrubriek_key,-1) < 0 AND bgt_kostenrubriek_key IS NULL))
AND (prs_kostensoortgrp_key = NVL(a_kosten_keys.prs_kostensoortgrp_key,-1) OR (NVL(a_kosten_keys.prs_kostensoortgrp_key,-1) < 0 AND prs_kostensoortgrp_key IS NULL))
AND (prs_kostensoort_key = NVL(a_kosten_keys.prs_kostensoort_key,-1) OR (NVL(a_kosten_keys.prs_kostensoort_key,-1) < 0 AND prs_kostensoort_key IS NULL));
EXCEPTION
WHEN TOO_MANY_ROWS THEN
fac.imp_writelog ( p_import_key, 'W'
, 'SELECT bgt_budget_key FROM bgt_budget WHERE ins_discipline_key = ' || a_kosten_keys.bgt_discipline_key
|| ' AND bgt_project_key = ' || a_kosten_keys.bgt_project_key
|| ' AND (bgt_kostenrubriek_key = ' || a_kosten_keys.bgt_kostenrubriek_key || ' OR bgt_kostenrubriek_key IS NULL)'
|| ' AND (prs_kostensoortgrp_key = ' || a_kosten_keys.prs_kostensoortgrp_key || ' OR prs_kostensoortgrp_key IS NULL)'
|| ' AND (prs_kostensoort_key = ' || a_kosten_keys.prs_kostensoort_key || ' OR prs_kostensoort_key IS NULL)'
, NULL
);
WHEN NO_DATA_FOUND THEN
l_budget_gegevens := p_rec.bgt_discipline
||':'|| p_rec.bgt_project
||':'|| p_rec.bgt_kostenrubriek
||':'|| p_rec.bgt_kostensoortgrp
||':'|| p_rec.bgt_kostensoort
||':'|| p_rec.type
||' R='|| a_kosten_keys.is_reserve
||' E='|| NVL(p_rec.bedr_init_excl, 0);
g_errorhint := 'Toevoegen budget';
INSERT INTO bgt_budget
( ins_discipline_key
, bgt_project_key
, bgt_kostenrubriek_key
, prs_kostensoortgrp_key
, prs_kostensoort_key
, bgt_budget_aanmaak
, bgt_budget_bedrag
, bgt_budget_btwbedrag
, bgt_budget_isreserve
)
VALUES
( a_kosten_keys.bgt_discipline_key
, a_kosten_keys.bgt_project_key
, a_kosten_keys.bgt_kostenrubriek_key
, a_kosten_keys.prs_kostensoortgrp_key
, a_kosten_keys.prs_kostensoort_key
, p_rec.bgt_datum
, NVL(p_rec.bedr_init_excl, 0)
, NVL(p_rec.bedr_init_btw, 0)
, NVL(a_kosten_keys.is_reserve, 0)
)
RETURNING bgt_budget_key INTO a_budget_key;
fac.imp_writelog ( p_import_key, 'I', 'budgetkey: ['|| a_budget_key ||'] '|| l_budget_gegevens, NULL);
END;
--
-- Zet de budget_key bij alle overeenkomstige regels, dus ook mutaties
fac.imp_writelog ( p_import_key, 'I', 'budgetkey: ['|| a_budget_key ||'] bijwerken', NULL);
UPDATE twyn_imp_budget
SET bgt_budget_key = a_budget_key
WHERE key = p_rec.key
OR ( bgt_discipline = p_rec.bgt_discipline
AND bgt_project = p_rec.bgt_project
AND bgt_kostenrubriek = p_rec.bgt_kostenrubriek
AND bgt_kostensoortgrp = p_rec.bgt_kostensoortgrp
AND bgt_kostensoort = p_rec.bgt_kostensoort
);
END; --add_budget
BEGIN
g_errormsg := NULL;
-- initialisatie budget
l_count := 0;
FOR l_rec IN c_budget(0)
LOOP
-- Keys ophalen
t_rec := get_budgetrec_1(l_rec, NULL);
add_budget(p_import_key, 'budget', t_rec);
l_count := l_count + 1;
END LOOP;
fac.imp_writelog ( p_import_key, 'S', 'Budget: aantal regels toegevoegd: ' || TO_CHAR(l_count), NULL);
--
-- Budget reserveposten voor rubrieken aanmaken
l_count := 0;
FOR l_rec IN c_reserve
LOOP
g_errormsg := 'Fout bij toevoegen budget op rubriek [' || l_rec.bgt_kostenrubriek_code ||']';
BEGIN
SELECT bgt_budget_key
INTO l_budget_key
FROM bgt_budget
WHERE ins_discipline_key = l_rec.ins_discipline_key
AND bgt_project_key = l_rec.bgt_project_key
AND bgt_kostenrubriek_key = l_rec.bgt_kostenrubriek_key
AND prs_kostensoort_key IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO bgt_budget
( ins_discipline_key
, bgt_project_key
, bgt_kostenrubriek_key
, bgt_budget_bedrag
, bgt_budget_btwbedrag
, bgt_budget_isreserve
)
VALUES
( l_rec.ins_discipline_key
, l_rec.bgt_project_key
, l_rec.bgt_kostenrubriek_key
, 0
, 0
, 0
)
RETURNING bgt_budget_key INTO l_budget_key;
--
UPDATE twyn_imp_budget
SET bgt_budget_key = (SELECT bgt_budget_key
FROM bgt_budget b
, bgt_kostenrubriek r
WHERE b.bgt_kostenrubriek_key = r.bgt_kostenrubriek_key
AND r.bgt_kostenrubriek_code = 'R'
AND b.bgt_project_key = l_rec.bgt_project_key
)
WHERE key IN (SELECT tb.key
FROM twyn_imp_budget tb
, bgt_project p
, bgt_disc_params d
WHERE tb.bgt_project = p.bgt_project_code
AND tb.bgt_discipline = d.bgt_disc_params_code
AND tb.bgt_kostenrubriek = l_rec.bgt_kostenrubriek_code
AND p.bgt_project_key = l_rec.bgt_project_key
AND d.bgt_ins_discipline_key = l_rec.ins_discipline_key
AND tb.bgt_kostensoortgrp IS NULL
AND tb.bgt_kostensoort IS NULL
);
l_count := l_count + 1;
END;
END LOOP;
fac.imp_writelog ( p_import_key, 'S', 'Rubriekbudget: aantal regels toegevoegd: ' || TO_CHAR(l_count), NULL);
--
-- Overige budgetposten: niet geinitialiseerd, maar wel gebruikt in contracten.
l_count := 0;
FOR l_rec in c_contract
LOOP
t_rec := get_budgetrec_1(NULL, l_rec);
add_budget(p_import_key, 'budgetpost contracten', t_rec);
l_count := l_count + 1;
END LOOP;
fac.imp_writelog ( p_import_key, 'S', 'Budgetposten: aantal regels toegevoegd tgv contracten: ' || TO_CHAR(l_count), NULL);
--
-- Overige budgetposten: niet geinitialiseerd, maar wel gebruikt in mutaties.
l_count := 0;
FOR l_rec in c_budget(1)
LOOP
IF (l_rec.bgt_budget_key IS NULL) THEN
t_rec := get_budgetrec_1(l_rec, NULL);
add_budget(p_import_key, 'budgetpost mutaties', t_rec);
l_count := l_count + 1;
END IF;
END LOOP;
fac.imp_writelog ( p_import_key, 'S', 'Budgetposten: aantal regels toegevoegd tgv mutaties: ' || TO_CHAR(l_count), NULL);
--
-- De mutaties
l_count := 0;
FOR l_rec IN c_budget(1)
LOOP
g_errormsg := 'Fout bij toevoegen budgetmutatie '
|| '[('||l_rec.bgt_nr||';'||l_rec.key||')'
|| '.'|| NVL(l_rec.bgt_kostenrubriek, 'x')
|| '.'|| NVL(l_rec.bgt_kostensoortgrp, 'x')
|| '.'|| NVL(l_rec.bgt_kostensoort, 'x')
|| '.'|| NVL(l_rec.type, 'x')
|| ']';
BEGIN
SELECT count(*)
INTO l_aantal
FROM twyn_imp_budget
WHERE bgt_nr = l_rec.bgt_nr;
--
IF (l_aantal > 1) THEN
-- Er zijn zowel van- als naar- budget regels.
SELECT x.bgt_budget_key
, min(x.bedrag)
, max(x.bedrag)
INTO l_budget_key
, l_bedrag_min
, l_bedrag_max
FROM (SELECT bgt_nr, key, bgt_budget_key, bedr_mmw_excl bedrag FROM twyn_imp_budget WHERE bgt_datum IS NOT NULL
UNION
SELECT bgt_nr, key, bgt_budget_key, bedr_mut_excl bedrag FROM twyn_imp_budget WHERE bgt_datum IS NOT NULL
UNION
SELECT bgt_nr, key, bgt_budget_key, bedr_res_mut_excl bedrag FROM twyn_imp_budget WHERE bgt_datum IS NOT NULL
) x
WHERE x.key <> l_rec.key
AND x.bgt_nr = l_rec.bgt_nr
AND x.bgt_nr IS NOT NULL
GROUP BY x.bgt_budget_key;
ELSE
-- Er is alleen een van- of naar- budget regel.
SELECT x.bgt_budget_key
, min(x.bedrag)
, max(x.bedrag)
INTO l_budget_key
, l_bedrag_min
, l_bedrag_max
FROM (SELECT bgt_nr, key, bgt_budget_key, bedr_mmw_excl bedrag FROM twyn_imp_budget
UNION
SELECT bgt_nr, key, bgt_budget_key, bedr_mut_excl bedrag FROM twyn_imp_budget
UNION
SELECT bgt_nr, key, bgt_budget_key, bedr_res_mut_excl bedrag FROM twyn_imp_budget
) x
WHERE x.key = l_rec.key
AND x.bgt_nr IS NOT NULL
GROUP BY x.bgt_budget_key;
END IF;
--
IF (l_bedrag_min < 0) THEN
l_btw_van := 0;
l_bedrag_van := l_bedrag_min;
l_budget_van := l_budget_key;
l_btw_naar := l_rec.bedrag_btw;
l_bedrag_naar := l_rec.bedrag_max;
l_budget_naar := l_rec.bgt_budget_key;
ELSE
l_btw_van := 0;
l_bedrag_van := l_rec.bedrag_min;
l_budget_van := l_rec.bgt_budget_key;
l_btw_naar := l_rec.bedrag_btw;
l_bedrag_naar := l_bedrag_max;
l_budget_naar := l_budget_key;
END IF;
--
l_mut_volgnr := CASE WHEN UPPER(SUBSTR(l_rec.bgt_nr,1,1)) IN ('R','N','M') THEN SUBSTR(l_rec.bgt_nr,2) ELSE l_rec.bgt_nr END;
l_mut_code := CASE WHEN UPPER(SUBSTR(l_rec.bgt_nr,1,1)) IN ('R','N','M') THEN SUBSTR(l_rec.bgt_nr,1,1) ELSE NULL END;
--
BEGIN
SELECT bgt_budgetmutatie_key
INTO l_budgetmutatie_key
FROM bgt_budgetmutatie
WHERE bgt_budgetmutatie_datum = l_rec.bgt_datum
AND bgt_budgetmutatie_volgnr = l_mut_volgnr
AND bgt_budgetmutatie_omschrijving = l_rec.bgt_oms
AND bgt_budget_key_van = l_budget_van
AND bgt_budget_bedrag_van = l_bedrag_van;
l_budget_gegevens := 'Mutatie-key '|| l_budgetmutatie_key
||' gevonden voor budget-key '|| l_budget_van
||' ('|| l_mut_volgnr ||' '|| l_rec.bgt_datum ||' '|| l_bedrag_van ||' '|| l_rec.bgt_oms
||' )';
fac.imp_writelog ( p_import_key, 'I', l_budget_gegevens, NULL);
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog ( p_import_key, 'I', 'Mutatie: '||ABS(l_bedrag_van)||' van '||TO_CHAR(l_budget_van)||' naar '||TO_CHAR(l_budget_naar), NULL);
INSERT INTO bgt_budgetmutatie
( bgt_budgetmutatie_datum
, bgt_budgetmutatie_volgnr
, bgt_budgetmutatie_code
, bgt_budgetmutatie_omschrijving
, prs_perslid_key
, bgt_budget_key_van
, bgt_budget_bedrag_van
, bgt_budget_btwbedrag_van
, bgt_budget_key_naar
, bgt_budget_bedrag_naar
, bgt_budget_btwbedrag_naar
)
VALUES
( l_rec.bgt_datum
, l_mut_volgnr
, l_mut_code
, l_rec.bgt_oms
, g_perslid_key
, l_budget_van
, l_bedrag_van
, l_btw_van
, l_budget_naar
, l_bedrag_naar
, l_btw_naar
)
RETURNING bgt_budgetmutatie_key INTO l_budgetmutatie_key;
--
l_count := l_count + 1;
END;
EXCEPTION
WHEN NO_DATA_FOUND THEN
l_budget_gegevens:= 'Geen budgetmutatie voor '
|| '[('||l_rec.bgt_nr||';'||l_rec.key||')'
|| '.'|| NVL(l_rec.bgt_kostenrubriek, 'x')
|| '.'|| NVL(l_rec.bgt_kostensoortgrp, 'x')
|| '.'|| NVL(l_rec.bgt_kostensoort, 'x')
|| ']';
fac.imp_writelog ( p_import_key, 'I', l_budget_gegevens, NULL);
END;
END LOOP;
fac.imp_writelog ( p_import_key, 'S', 'Budgetmutaties: aantal regels toegevoegd: ' || TO_CHAR(l_count), NULL);
END;
PROCEDURE update_opdracht(p_import_key IN NUMBER)
AS
CURSOR c_opdracht
IS
SELECT bgt_contract_nr
, bgt_contract_volgnr
, bgt_contract_omschr
, bgt_contract_datum
, bgt_contract_bedrag_excl
, bgt_contract_bedrag_btw
, bgt_contract_meerminder
, bgt_contract_status
, bgt_contract_referentie
, bgt_bedrijf_code
, bgt_discipline_code
, bgt_project_code
, bgt_kostenrubriek_code
, prs_kostensoortgrp_code
, prs_kostensoort_code
, prs_kostenplaats_nr
, prs_kostenplaats_oms
FROM twyn_imp_contract;
a_kosten_keys KOSTEN_KEYS;
a_bedrijf_key prs_bedrijf.prs_bedrijf_key%TYPE;
a_kostenplaats_key prs_kostenplaats.prs_kostenplaats_key%TYPE;
a_kostenplaatsgrp_key prs_kostenplaatsgrp.prs_kostenplaatsgrp_key%TYPE;
l_count NUMBER (3) := 0;
BEGIN
g_errormsg := NULL;
FOR l_rec IN c_opdracht
LOOP
a_kosten_keys := get_kosten_keys( p_import_key
, 'opdracht'
, l_rec.bgt_discipline_code
, l_rec.bgt_project_code
, l_rec.bgt_kostenrubriek_code
, l_rec.prs_kostensoortgrp_code
, l_rec.prs_kostensoort_code);
--
g_errormsg := 'Fout bij toevoegen contract['|| l_rec.bgt_contract_nr ||'/'|| l_rec.bgt_contract_volgnr ||']';
BEGIN
SELECT pb.prs_bedrijf_key
INTO a_bedrijf_key
FROM prs_bedrijf pb
, fac_imp_ext_bedrijf eb
WHERE pb.prs_bedrijf_naam_upper = UPPER(eb.prs_bedrijf_naam)
AND pb.prs_leverancier_nr = l_rec.bgt_bedrijf_code;
--
--
IF (l_rec.prs_kostenplaats_nr IS NOT NULL) THEN
BEGIN
SELECT prs_kostenplaats_key
INTO a_kostenplaats_key
FROM prs_kostenplaats
WHERE prs_kostenplaats_upper = UPPER(TO_CHAR(l_rec.prs_kostenplaats_nr));
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO prs_kostenplaats
( prs_kostenplaats_nr
, prs_kostenplaats_omschrijving
, prs_kostenplaats_upper
, prs_kostenplaats_module
, prs_kostenplaatsgrp_key
)
VALUES
( TO_CHAR(l_rec.prs_kostenplaats_nr)
, l_rec.prs_kostenplaats_oms
, UPPER(TO_CHAR(l_rec.prs_kostenplaats_nr))
, 'PRJ'
, 1
)
RETURNING prs_kostenplaats_key INTO a_kostenplaats_key;
END;
ELSE
a_kostenplaats_key := NULL;
END IF;
--
-- conversie contractstatus naar mld_statusopdr_key:
-- 10 Raming 10 Ter goedkeuring
-- 20 Te besluiten 3 Ter fiattering
-- 30 Accoord 8 Geaccepteerd
-- 40 Opgedragen 5 Toegekend
-- 50 vervallen 1 Afgewezen
-- overige codes: 2 Niet akkoord
INSERT INTO mld_opdr
( mld_opdr_id
, mld_opdr_ordernr
, mld_opdr_bedrijfopdr_volgnr
, mld_uitvoerende_keys
, mld_opdr_omschrijving
, mld_opdr_datumbegin
, mld_opdr_kosten
, mld_opdr_kosten_btw
, prs_kostensoort_key
, prs_perslid_key
, mld_typeopdr_key
, mld_opdr_module
, mld_statusopdr_key
, prs_kostenplaats_key
, mld_opdr_meerwerk
)
VALUES
( l_rec.bgt_contract_referentie
, l_rec.bgt_contract_nr
, l_rec.bgt_contract_volgnr
, a_bedrijf_key
, l_rec.bgt_contract_omschr
, l_rec.bgt_contract_datum
, l_rec.bgt_contract_bedrag_excl
, l_rec.bgt_contract_bedrag_btw
, a_kosten_keys.prs_kostensoort_key
, g_perslid_key
, 5
, 'MLD'
, DECODE(l_rec.bgt_contract_status, 10,10, 20,3, 30,8, 40,5, 50,1, 2)
, a_kostenplaats_key
, CASE WHEN l_rec.bgt_contract_meerminder = 0 THEN 0 ELSE 1 END
);
fac.imp_writelog ( p_import_key
, 'I'
, 'Contract [' || l_rec.bgt_contract_nr ||'/'|| l_rec.bgt_contract_volgnr || '] toegevoegd'
, NULL
);
l_count := l_count + 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog ( p_import_key, 'W', 'Onbekend bedrijf [' || l_rec.bgt_bedrijf_code || ']', NULL);
END;
END LOOP;
fac.imp_writelog ( p_import_key, 'S', 'Contracten: aantal regels toegevoegd: ' || TO_CHAR(l_count), NULL);
COMMIT;
END; --update_opdracht
PROCEDURE update_factuur(p_import_key IN NUMBER)
AS
CURSOR c_factuur
IS
SELECT bgt_factuur_nr
, bgt_factuur_volgnr
, bgt_factuur_refnr
, bgt_factuur_omschr
, bgt_factuur_datum
, bgt_factuur_bedrag_excl
, bgt_factuur_bedrag_btw
, bgt_factuur_bedrag_incl
, bgt_factuur_adviesdatum
, bgt_factuur_grootboek
, bgt_factuur_status
, bgt_contract_nr
, bgt_contract_volgnr
, bgt_discipline_code
, bgt_project_code
, bgt_kostenrubriek_code
, prs_kostensoortgrp_code
, prs_kostensoort_code
FROM twyn_imp_factuur;
l_opdr_key mld_opdr.mld_opdr_key%TYPE;
l_factuur_key fin_factuur.fin_factuur_key%TYPE;
l_btw_key fin_btwtabelwaarde.fin_btwtabelwaarde_key%TYPE;
l_refnr fin_factuur.fin_factuur_nr%TYPE;
l_kosten_keys KOSTEN_KEYS;
l_count_f NUMBER (10) := 0;
BEGIN
g_errormsg := NULL;
FOR l_rec in c_factuur
LOOP
BEGIN
l_kosten_keys := get_kosten_keys( p_import_key
, 'factuur'
, l_rec.bgt_discipline_code
, l_rec.bgt_project_code
, l_rec.bgt_kostenrubriek_code
, l_rec.prs_kostensoortgrp_code
, l_rec.prs_kostensoort_code);
l_opdr_key := get_opdr_key( l_kosten_keys.prs_kostensoort_key
, l_rec.bgt_contract_nr
, l_rec.bgt_contract_volgnr);
--
g_errormsg := 'Fout bij toevoegen factuur['|| l_rec.bgt_contract_nr ||'/'|| l_rec.bgt_contract_volgnr ||']';
l_refnr := l_rec.bgt_factuur_refnr;
IF (l_refnr = '' OR l_refnr IS NULL) THEN
l_refnr := 'F_' || l_rec.bgt_factuur_nr ||'.'|| l_rec.bgt_factuur_volgnr;
END IF;
fac.imp_writelog ( p_import_key, 'I', 'Opdracht('||l_opdr_key||') '||l_kosten_keys.prs_kostensoort_key||','||l_rec.bgt_contract_nr||','||l_rec.bgt_contract_volgnr, NULL);
IF (l_opdr_key > -1) THEN
g_errormsg := 'Fout bij toevoegen factuur['|| l_rec.bgt_factuur_nr ||']';
--
INSERT INTO fin_factuur
( fin_factuur_nr
, fin_factuur_advies
, fin_factuur_datum
, fin_factuur_boekmaand
, fin_factuur_opmerking
, fin_factuur_totaal
, fin_factuur_totaal_btw
, mld_opdr_key
, prs_kostensoort_key
, fin_factuur_bron
, fin_factuur_statuses_key
)
VALUES
( l_refnr
, l_rec.bgt_factuur_adviesdatum
, l_rec.bgt_factuur_datum
, TO_CHAR(l_rec.bgt_factuur_datum, 'yyyy-mm')
, l_rec.bgt_factuur_omschr
, l_rec.bgt_factuur_bedrag_excl
, l_rec.bgt_factuur_bedrag_btw
, l_opdr_key
, l_kosten_keys.prs_kostensoort_key
, 1
, 6
)
RETURNING fin_factuur_key INTO l_factuur_key;
l_count_f := l_count_f + 1;
--
fac.imp_writelog ( p_import_key
, 'I'
, 'Factuur [' || l_rec.bgt_factuur_nr ||'/'|| l_rec.bgt_factuur_volgnr || '] toegevoegd'
, NULL
);
END IF;
END;
END LOOP;
--
fac.imp_writelog ( p_import_key, 'S', 'Facturen: aantal regels toegevoegd: ' || TO_CHAR(l_count_f), NULL);
COMMIT;
END; --update_factuur
BEGIN
SELECT prs_perslid_key
INTO g_perslid_key
FROM fac_import
WHERE fac_import_key = p_import_key;
update_discipline(p_import_key);
update_project(p_import_key);
update_rubriek(p_import_key);
update_groep(p_import_key);
update_soort(p_import_key);
update_bedrijf(p_import_key);
update_budget(p_import_key);
update_opdracht(p_import_key);
update_factuur(p_import_key);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
g_errormsg :=
g_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
g_aanduiding || g_errormsg,
'Verwerken BCS conversie afgebroken!');
COMMIT;
END;
/
--=============================================================================
-- VIEWS REAL TIME MONITOR
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW twyn_v_rap_bgt_basis
(
discipline_key,
discipline_omschrijving,
project_key,
project,
subproject,
kostenrubriek_key,
kostenrubriek,
kostensoortgroep_key,
kostensoortgroep,
kostensoort_key,
kostensoort,
budget_key,
budget_bedrag,
gecontracteerd,
gefactureerd
)
AS
SELECT b.ins_discipline_key,
d.ins_discipline_omschrijving,
b.bgt_project_key,
b.project,
b.subproject,
b.bgt_kostenrubriek_key,
b.kostenrubriek,
(SELECT ksg.prs_kostensoortgrp_key
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key = b.prs_kostensoort_key)
AS ksg_key,
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key = b.prs_kostensoort_key)
AS ksg_oms,
b.prs_kostensoort_key,
b.kostensoort,
b.bgt_budget_key,
b.bgt_budget_bedrag,
(SELECT mld_opdr_kosten
FROM ( SELECT prs_kostensoort_key,
SUM (mld_opdr_kosten) AS mld_opdr_kosten
FROM mld_opdr
GROUP BY prs_kostensoort_key) mo
WHERE b.prs_kostensoort_key = mo.prs_kostensoort_key)
AS mld_opdr_kosten,
(SELECT fin_factuur_totaal
FROM ( SELECT o.prs_kostensoort_key,
SUM (fin_factuur_totaal) AS fin_factuur_totaal
FROM fin_factuur f, mld_opdr o
WHERE o.mld_opdr_key = f.mld_opdr_key(+)
AND b.prs_kostensoort_key = o.prs_kostensoort_key
GROUP BY o.prs_kostensoort_key) ff
WHERE b.prs_kostensoort_key = ff.prs_kostensoort_key)
AS gefactureerd
FROM twyn_v_bgt_budgetgegevens b, ins_tab_discipline d
WHERE d.ins_discipline_key = b.ins_discipline_key;
CREATE OR REPLACE VIEW twyn_v_rap_bgt_subproj
(
hide_f_sort,
project,
subproject,
deel,
bedrag
)
AS
SELECT 3,
discipline_omschrijving,
subproject,
'Budget',
SUM (budget_bedrag) - SUM (gecontracteerd)
FROM twyn_v_rap_bgt_basis
GROUP BY discipline_omschrijving, subproject
UNION ALL
SELECT 2,
discipline_omschrijving,
subproject,
'Gecontracteerd',
SUM (gecontracteerd) - SUM (gefactureerd)
FROM twyn_v_rap_bgt_basis
GROUP BY discipline_omschrijving, subproject
UNION ALL
SELECT 1,
discipline_omschrijving,
subproject,
'Gefactureerd',
SUM (gefactureerd)
FROM twyn_v_rap_bgt_basis
GROUP BY discipline_omschrijving, subproject
ORDER BY discipline_omschrijving, subproject;
CREATE OR REPLACE VIEW twyn_v_rap_bgt_subproj_tot
(
hide_f_sort,
project,
deel,
bedrag
)
AS
SELECT volg,
discipline_omschrijving,
--subproject,
deel,
SUM (bedrag)
FROM ( SELECT 1 AS volg,
discipline_omschrijving,
--subproject,
'Budget' AS deel,
SUM (budget_bedrag) AS bedrag
FROM twyn_v_rap_bgt_basis
--WHERE discipline_omschrijving = 'Berkelwijk IKC'
GROUP BY discipline_omschrijving, subproject
UNION ALL
SELECT 2 AS volg,
discipline_omschrijving,
--subproject,
'Gecontracteerd' AS deel,
SUM (gecontracteerd) AS bedrag
FROM twyn_v_rap_bgt_basis
-- WHERE discipline_omschrijving = 'Berkelwijk IKC'
GROUP BY discipline_omschrijving, subproject
UNION ALL
SELECT 3 AS volg,
discipline_omschrijving,
--subproject,
'Nog te contracteren' AS deel,
SUM (budget_bedrag) - SUM (gecontracteerd) AS bedrag
FROM twyn_v_rap_bgt_basis
-- WHERE discipline_omschrijving = 'Berkelwijk IKC'
GROUP BY discipline_omschrijving, subproject
UNION ALL
SELECT 4 AS sort,
discipline_omschrijving,
--subproject,
'Gefactureerd' AS deel,
SUM (gefactureerd) AS bedrag
FROM twyn_v_rap_bgt_basis
--WHERE discipline_omschrijving = 'Berkelwijk IKC'
GROUP BY discipline_omschrijving)
GROUP BY discipline_omschrijving, volg, deel
ORDER BY discipline_omschrijving, volg, deel DESC;
CREATE OR REPLACE VIEW twyn_v_rap_bgt_kstnrbr
(
hide_f_sort,
project,
subproject,
kostenrubriek_oms,
deel,
bedrag,
kstnrubr,
kostenrubriek
)
AS
SELECT x."3",
x."DISCIPLINE_OMSCHRIJVING",
x."SUBPROJECT",
x."KOSTENRUBRIEK",
x."DEEL",
x."BEDRAG",
TO_DATE (2000
|| fac.safe_to_number (CASE SUBSTR (x.kostenrubriek, 1, 1)
WHEN '1' THEN '1'
WHEN '2' THEN '2'
WHEN '3' THEN '3'
WHEN '4' THEN '4'
WHEN '5' THEN '5'
WHEN '6' THEN '6'
WHEN '7' THEN '7'
WHEN '8' THEN '8'
WHEN '9' THEN '9'
WHEN '0' THEN '10'
WHEN 'R' THEN '12'
ELSE '11'
END), 'yyyymm')
AS mnd,
TO_DATE (201801
|| fac.safe_to_number (CASE SUBSTR (x.kostenrubriek, 1, 1)
WHEN '0' THEN '10'
WHEN '1' THEN '1'
WHEN '2' THEN '2'
WHEN '3' THEN '3'
WHEN '4' THEN '4'
WHEN '5' THEN '5'
WHEN '6' THEN '6'
WHEN '7' THEN '7'
WHEN '8' THEN '8'
WHEN '9' THEN '9'
WHEN 'R' THEN '20'
ELSE '21'
END), 'yyyymmdd')
AS kostenrubriek
FROM (SELECT 3,
discipline_omschrijving,
subproject,
kostenrubriek,
'Budget' AS deel,
(budget_bedrag - gecontracteerd) AS bedrag
FROM twyn_v_rap_bgt_basis
-- GROUP BY discipline_omschrijving, subproject, kostenrubriek
UNION ALL
SELECT 2,
discipline_omschrijving,
subproject,
kostenrubriek,
'Gecontracteerd' AS deel,
(gecontracteerd - gefactureerd) AS bedrag
FROM twyn_v_rap_bgt_basis
-- GROUP BY discipline_omschrijving, subproject, kostenrubriek
UNION ALL
SELECT 1,
discipline_omschrijving,
subproject,
kostenrubriek,
'Gefactureerd' AS deel,
(gefactureerd) AS bedrag
FROM twyn_v_rap_bgt_basis
-- GROUP BY discipline_omschrijving, subproject, kostenrubriek
ORDER BY discipline_omschrijving, subproject, kostenrubriek) x;
CREATE OR REPLACE VIEW twyn_v_rap_bgt_kostenrubriek
(
kostenrubriek,
deel,
project,
subproject,
bedrag
)
AS
SELECT kostenrubriek_oms,
deel,
project,
subproject,
SUM (bedrag) AS bedrag
FROM twyn_v_rap_bgt_kstnrbr
GROUP BY kostenrubriek_oms,
deel,
project,
subproject;
CREATE OR REPLACE VIEW twyn_v_rap_factuurstat
(
project,
subproject,
factuurbedrag_excl,
factuur_status
)
AS
SELECT projectnaam,
subproject,
SUM (ex_btw),
fin_factuur_statuses_omschr
FROM (SELECT ff.projectnaam,
ff.subproject,
ff.ex_btw,
ff.factuur_maand,
ff.factuur_jaar,
ff.fin_factuur_statuses_omschr
FROM ( SELECT tp.projectnaam,
tp.subproject,
SUM (f.fin_factuur_totaal) AS ex_btw,
f.fin_factuur_advies,
TO_CHAR (f.fin_factuur_advies, 'mm')
AS factuur_maand,
TO_CHAR (f.fin_factuur_advies, 'yyyy')
AS factuur_jaar,
fs.fin_factuur_statuses_omschr
FROM fin_factuur f,
fin_factuur_statuses fs,
mld_opdr o,
bgt_v_project_full tp
WHERE f.mld_opdr_key = o.mld_opdr_key
AND tp.prs_kostensoort_key =
o.prs_kostensoort_key(+)
AND f.fin_factuur_statuses_key =
fs.fin_factuur_statuses_key
AND tp.ins_discipline_verwijder IS NULL
AND tp.bgt_project_verwijder IS NULL
AND TO_CHAR (f.fin_factuur_advies, 'yyyy') =
TO_CHAR (SYSDATE, 'yyyy')
--TO_CHAR (SYSDATE, 'yyyy') - 1 -- Nu nog min 1 zodat resultaten worden getoond in de acceptatieomgeving.
GROUP BY tp.projectnaam,
tp.subproject,
f.fin_factuur_advies,
TO_CHAR (f.fin_factuur_advies, 'mm'),
fs.fin_factuur_statuses_omschr) ff
UNION ALL
SELECT ff.projectnaam,
ff.subproject,
SUM (ff.ex_btw),
TO_CHAR (ff.factuur_maand),
TO_CHAR (ff.factuur_jaar),
ff.fin_factuur_statuses_omschr
FROM ( SELECT tp.projectnaam,
tp.subproject,
SUM (f.fin_factuur_totaal) AS ex_btw,
f.fin_factuur_advies,
TO_CHAR (12) AS factuur_maand,
TO_CHAR (SYSDATE, 'yyyy') - 1 AS factuur_jaar,
--TO_CHAR (SYSDATE, 'yyyy') - 2 AS factuur_jaar, -- Nu nog min 2 zodat resultaten worden getoond in de acceptatieomgeving.
fs.fin_factuur_statuses_omschr
FROM fin_factuur f,
fin_factuur_statuses fs,
mld_opdr o,
bgt_v_project_full tp
WHERE f.mld_opdr_key = o.mld_opdr_key
AND tp.prs_kostensoort_key =
o.prs_kostensoort_key(+)
AND f.fin_factuur_statuses_key =
fs.fin_factuur_statuses_key
AND tp.ins_discipline_verwijder IS NULL
AND tp.bgt_project_verwijder IS NULL
AND TO_CHAR (f.fin_factuur_advies, 'yyyy') < -- Kleiner dan, zodat alles t/m december vorig jaar wordt getoond.
TO_CHAR (SYSDATE, 'yyyy')
--TO_CHAR (SYSDATE, 'yyyy') - 1 -- Nu nog min 1 zodat resultaten worden getoond in de acceptatieomgeving.
GROUP BY tp.projectnaam,
tp.subproject,
f.fin_factuur_advies,
TO_CHAR (f.fin_factuur_advies, 'mm'),
fs.fin_factuur_statuses_omschr) ff
GROUP BY ff.projectnaam,
ff.subproject,
TO_CHAR (ff.factuur_maand),
TO_CHAR (ff.factuur_jaar),
ff.fin_factuur_statuses_omschr)
GROUP BY projectnaam, subproject, fin_factuur_statuses_omschr;
CREATE OR REPLACE VIEW twyn_v_rap_factuurstatus
(
project,
subproject,
factuurbedrag_excl,
factuur_maand,
factuur_jaar
)
AS
SELECT ff.projectnaam,
ff.subproject,
ff.ex_btw,
ff.factuur_maand,
ff.factuur_jaar
FROM ( SELECT tp.projectnaam,
tp.subproject,
SUM (f.fin_factuur_totaal) AS ex_btw,
f.fin_factuur_advies,
TO_CHAR (f.fin_factuur_advies, 'mm') AS factuur_maand,
TO_CHAR (f.fin_factuur_advies, 'yyyy') AS factuur_jaar,
f.fin_factuur_statuses_key
FROM fin_factuur f, mld_opdr o, bgt_v_project_full tp
WHERE f.mld_opdr_key = o.mld_opdr_key
AND tp.prs_kostensoort_key = o.prs_kostensoort_key(+)
AND tp.ins_discipline_verwijder IS NULL
AND tp.bgt_project_verwijder IS NULL
AND TO_CHAR (f.fin_factuur_advies, 'yyyy') =
TO_CHAR (SYSDATE, 'yyyy')
--TO_CHAR (SYSDATE, 'yyyy') - 1 -- Nu nog min 1 zodat resultaten worden getoond in de acceptatieomgeving.
GROUP BY tp.projectnaam,
tp.subproject,
f.fin_factuur_advies,
TO_CHAR (f.fin_factuur_advies, 'mm'),
f.fin_factuur_statuses_key) ff
UNION ALL
SELECT ff.projectnaam,
ff.subproject,
SUM (ff.ex_btw),
TO_CHAR (ff.factuur_maand),
TO_CHAR (ff.factuur_jaar)
FROM ( SELECT tp.projectnaam,
tp.subproject,
SUM (f.fin_factuur_totaal) AS ex_btw,
f.fin_factuur_advies,
TO_CHAR (12) AS factuur_maand,
TO_CHAR (SYSDATE, 'yyyy') - 1 AS factuur_jaar,
--TO_CHAR (SYSDATE, 'yyyy') - 2 AS factuur_jaar, -- Nu nog min 2 zodat resultaten worden getoond in de acceptatieomgeving.
f.fin_factuur_statuses_key
FROM fin_factuur f, mld_opdr o, bgt_v_project_full tp
WHERE f.mld_opdr_key = o.mld_opdr_key
AND tp.prs_kostensoort_key = o.prs_kostensoort_key(+)
AND tp.ins_discipline_verwijder IS NULL
AND tp.bgt_project_verwijder IS NULL
AND TO_CHAR (f.fin_factuur_advies, 'yyyy') < -- Kleiner dan, zodat alles t/m december vorig jaar wordt getoond.
TO_CHAR (SYSDATE, 'yyyy')
--TO_CHAR (SYSDATE, 'yyyy') - 1 -- Nu nog min 1 zodat resultaten worden getoond in de acceptatieomgeving.
GROUP BY tp.projectnaam,
tp.subproject,
f.fin_factuur_advies,
TO_CHAR (f.fin_factuur_advies, 'mm'),
f.fin_factuur_statuses_key) ff
GROUP BY ff.projectnaam,
ff.subproject,
TO_CHAR (ff.factuur_maand),
TO_CHAR (ff.factuur_jaar);
CREATE OR REPLACE VIEW twyn_v_rap_factuurtrend
(
project,
subproject,
factuur_maan,
factuurbedrag_excl
)
AS
SELECT f.project,
f.subproject,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2) || '-' || '12',
SUM (f.factuurbedrag_excl)
FROM twyn_v_rap_factuurstatus f
WHERE f.factuur_maand = '12'
AND f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2)
GROUP BY f.project, f.subproject
UNION ALL
SELECT f.project,
f.subproject,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '01',
SUM (f.factuurbedrag_excl)
FROM twyn_v_rap_factuurstatus f
WHERE (f.factuur_maand = '01'
AND f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1)
OR f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2))
GROUP BY f.project, f.subproject
UNION ALL
SELECT f.project,
f.subproject,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '02',
SUM (f.factuurbedrag_excl)
FROM twyn_v_rap_factuurstatus f
WHERE (f.factuur_maand IN ('01', '02')
AND f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1)
OR f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2))
GROUP BY f.project, f.subproject
UNION ALL
SELECT f.project,
f.subproject,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '03',
SUM (f.factuurbedrag_excl)
FROM twyn_v_rap_factuurstatus f
WHERE (f.factuur_maand IN ('01', '02', '03')
AND f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1)
OR f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2))
GROUP BY f.project, f.subproject
UNION ALL
SELECT f.project,
f.subproject,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '04',
SUM (f.factuurbedrag_excl)
FROM twyn_v_rap_factuurstatus f
WHERE (f.factuur_maand IN ('01', '02', '03', '04')
AND f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1)
OR f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2))
GROUP BY f.project, f.subproject
UNION ALL
SELECT f.project,
f.subproject,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '05',
SUM (f.factuurbedrag_excl)
FROM twyn_v_rap_factuurstatus f
WHERE (f.factuur_maand IN ('01', '02', '03', '04', '05')
AND f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1)
OR f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2))
GROUP BY f.project, f.subproject
UNION ALL
SELECT f.project,
f.subproject,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '06',
SUM (f.factuurbedrag_excl)
FROM twyn_v_rap_factuurstatus f
WHERE (f.factuur_maand IN ('01', '02', '03', '04', '05', '06')
AND f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1)
OR f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2))
GROUP BY f.project, f.subproject
UNION ALL
SELECT f.project,
f.subproject,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '07',
SUM (f.factuurbedrag_excl)
FROM twyn_v_rap_factuurstatus f
WHERE (f.factuur_maand IN ('01', '02', '03', '04', '05', '06', '07')
AND f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1)
OR f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2))
GROUP BY f.project, f.subproject
UNION ALL
SELECT f.project,
f.subproject,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '08',
SUM (f.factuurbedrag_excl)
FROM twyn_v_rap_factuurstatus f
WHERE (f.factuur_maand IN
('01', '02', '03', '04', '05', '06', '07', '08')
AND f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1)
OR f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2))
GROUP BY f.project, f.subproject
UNION ALL
SELECT f.project,
f.subproject,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '09',
SUM (f.factuurbedrag_excl)
FROM twyn_v_rap_factuurstatus f
WHERE (f.factuur_maand IN
('01', '02', '03', '04', '05', '06', '07', '08', '09')
AND f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1)
OR f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2))
GROUP BY f.project, f.subproject
UNION ALL
SELECT f.project,
f.subproject,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '10',
SUM (f.factuurbedrag_excl)
FROM twyn_v_rap_factuurstatus f
WHERE (f.factuur_maand IN
('01', '02', '03', '04', '05', '06', '07', '08', '09', '10')
AND f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1)
OR f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2))
GROUP BY f.project, f.subproject
UNION ALL
SELECT f.project,
f.subproject,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '11',
SUM (f.factuurbedrag_excl)
FROM twyn_v_rap_factuurstatus f
WHERE (f.factuur_maand IN
('01',
'02',
'03',
'04',
'05',
'06',
'07',
'08',
'09',
'10',
'11')
AND f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1)
OR f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2))
GROUP BY f.project, f.subproject
UNION ALL
SELECT f.project,
f.subproject,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '12',
SUM (f.factuurbedrag_excl)
FROM twyn_v_rap_factuurstatus f
WHERE (f.factuur_maand IN
('01',
'02',
'03',
'04',
'05',
'06',
'07',
'08',
'09',
'10',
'11',
'12')
AND f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1)
OR f.factuur_jaar = TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2))
GROUP BY f.project, f.subproject;
CREATE OR REPLACE VIEW twyn_v_rap_reservetrend
(
project,
subproject,
budget_key,
budget,
maand
)
AS
SELECT bgt.projectnaam,
bgt.subprojectnaam,
bgt.bgt_budget_key,
(bgt.bgt_budget_bedrag
+ (SELECT SUM (mut.bgt_budget_bedrag_naar)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_naar = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201712)
+ (SELECT SUM (mut.bgt_budget_bedrag_van)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_van = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201712))
AS budget,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 2) || '-' || '12' AS maand
FROM twyn_v_bgt_budgetgegevens bgt
WHERE bgt.rcode = 'R'
UNION ALL
SELECT bgt.projectnaam,
bgt.subprojectnaam,
bgt.bgt_budget_key,
(bgt.bgt_budget_bedrag
+ (SELECT SUM (mut.bgt_budget_bedrag_naar)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_naar = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201801)
+ (SELECT SUM (mut.bgt_budget_bedrag_van)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_van = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201801))
AS budget,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '01' AS maand
FROM twyn_v_bgt_budgetgegevens bgt
WHERE bgt.rcode = 'R'
UNION ALL
SELECT bgt.projectnaam,
bgt.subprojectnaam,
bgt.bgt_budget_key,
(bgt.bgt_budget_bedrag
+ (SELECT SUM (mut.bgt_budget_bedrag_naar)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_naar = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201802)
+ (SELECT SUM (mut.bgt_budget_bedrag_van)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_van = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201802))
AS budget,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '02' AS maand
FROM twyn_v_bgt_budgetgegevens bgt
WHERE bgt.rcode = 'R'
UNION ALL
SELECT bgt.projectnaam,
bgt.subprojectnaam,
bgt.bgt_budget_key,
(bgt.bgt_budget_bedrag
+ (SELECT SUM (mut.bgt_budget_bedrag_naar)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_naar = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201803)
+ (SELECT SUM (mut.bgt_budget_bedrag_van)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_van = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201803))
AS budget,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '03' AS maand
FROM twyn_v_bgt_budgetgegevens bgt
WHERE bgt.rcode = 'R'
UNION ALL
SELECT bgt.projectnaam,
bgt.subprojectnaam,
bgt.bgt_budget_key,
(bgt.bgt_budget_bedrag
+ (SELECT SUM (mut.bgt_budget_bedrag_naar)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_naar = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201804)
+ (SELECT SUM (mut.bgt_budget_bedrag_van)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_van = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201804))
AS budget,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '04' AS maand
FROM twyn_v_bgt_budgetgegevens bgt
WHERE bgt.rcode = 'R'
UNION ALL
SELECT bgt.projectnaam,
bgt.subprojectnaam,
bgt.bgt_budget_key,
(bgt.bgt_budget_bedrag
+ (SELECT SUM (mut.bgt_budget_bedrag_naar)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_naar = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201805)
+ (SELECT SUM (mut.bgt_budget_bedrag_van)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_van = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201805))
AS budget,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '05' AS maand
FROM twyn_v_bgt_budgetgegevens bgt
WHERE bgt.rcode = 'R'
UNION ALL
SELECT bgt.projectnaam,
bgt.subprojectnaam,
bgt.bgt_budget_key,
(bgt.bgt_budget_bedrag
+ (SELECT SUM (mut.bgt_budget_bedrag_naar)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_naar = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201806)
+ (SELECT SUM (mut.bgt_budget_bedrag_van)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_van = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201806))
AS budget,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '06' AS maand
FROM twyn_v_bgt_budgetgegevens bgt
WHERE bgt.rcode = 'R'
UNION ALL
SELECT bgt.projectnaam,
bgt.subprojectnaam,
bgt.bgt_budget_key,
(bgt.bgt_budget_bedrag
+ (SELECT SUM (mut.bgt_budget_bedrag_naar)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_naar = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201807)
+ (SELECT SUM (mut.bgt_budget_bedrag_van)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_van = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201807))
AS budget,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '07' AS maand
FROM twyn_v_bgt_budgetgegevens bgt
WHERE bgt.rcode = 'R'
UNION ALL
SELECT bgt.projectnaam,
bgt.subprojectnaam,
bgt.bgt_budget_key,
(bgt.bgt_budget_bedrag
+ (SELECT SUM (mut.bgt_budget_bedrag_naar)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_naar = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201808)
+ (SELECT SUM (mut.bgt_budget_bedrag_van)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_van = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201808))
AS budget,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '08' AS maand
FROM twyn_v_bgt_budgetgegevens bgt
WHERE bgt.rcode = 'R'
UNION ALL
SELECT bgt.projectnaam,
bgt.subprojectnaam,
bgt.bgt_budget_key,
(bgt.bgt_budget_bedrag
+ (SELECT SUM (mut.bgt_budget_bedrag_naar)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_naar = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201809)
+ (SELECT SUM (mut.bgt_budget_bedrag_van)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_van = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
201809))
AS budget,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '09' AS maand
FROM twyn_v_bgt_budgetgegevens bgt
WHERE bgt.rcode = 'R'
UNION ALL
SELECT bgt.projectnaam,
bgt.subprojectnaam,
bgt.bgt_budget_key,
(bgt.bgt_budget_bedrag
+ (SELECT SUM (mut.bgt_budget_bedrag_naar)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_naar = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
2018010)
+ (SELECT SUM (mut.bgt_budget_bedrag_van)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_van = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
2018010))
AS budget,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '10' AS maand
FROM twyn_v_bgt_budgetgegevens bgt
WHERE bgt.rcode = 'R'
UNION ALL
SELECT bgt.projectnaam,
bgt.subprojectnaam,
bgt.bgt_budget_key,
(bgt.bgt_budget_bedrag
+ (SELECT SUM (mut.bgt_budget_bedrag_naar)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_naar = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
2018011)
+ (SELECT SUM (mut.bgt_budget_bedrag_van)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_van = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
2018011))
AS budget,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '11' AS maand
FROM twyn_v_bgt_budgetgegevens bgt
WHERE bgt.rcode = 'R'
UNION ALL
SELECT bgt.projectnaam,
bgt.subprojectnaam,
bgt.bgt_budget_key,
(bgt.bgt_budget_bedrag
+ (SELECT SUM (mut.bgt_budget_bedrag_naar)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_naar = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
2018012)
+ (SELECT SUM (mut.bgt_budget_bedrag_van)
FROM bgt_budgetmutatie mut
WHERE mut.bgt_budget_key_van = bgt.bgt_budget_key
AND TO_CHAR (bgt_budgetmutatie_datum, 'yyyymm') <=
2018012))
AS budget,
TO_CHAR (TO_CHAR (SYSDATE, 'yyyy') - 1) || '-' || '12' AS maand
FROM twyn_v_bgt_budgetgegevens bgt
WHERE bgt.rcode = 'R';
------ 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