Files
Database/_UP/114TO115.SRC
1998-09-23 08:56:36 +00:00

1215 lines
45 KiB
Plaintext

SPOOL 114to115
/*
* [V:\SQL\_UPDATE]
*
* Update script van versie 01.14 naar 01.15
*
* Dit script wordt geprecompileerd dus is het mogelijk (verplicht)
* om #ifdef's te gebruiken voor de diverse modules.
*
* History:
*
* 29-05-96 AH REM ALG_KOSTENPOST....
* --- 01.16 ---
* 29-05-96 EH View inv_v_deel_gegevens aangepast.
* 28-05-96 EH View prs_v_werkplekperslid_gegevens gewijzigd.
* 28-05-96 EH fac_message prs_m032 gewijzigd.
* 28-05-96 EH fac_message prs_m051 toegevoegd.
* 28-05-96 EH fac_message prs_m050 toegevoegd.
* 28-05-96 EH fac_message prs_m049 toegevoegd.
* 28-05-96 EH fac_message prs_m048 toegevoegd.
* 28-05-96 EH fac_message prs_m028 gewijzigd.
* 28-05-96 EH fac_message prs_m027 gewijzigd.
* 28-05-96 EH UNIQUE Constraint in prs_perslidwerkplek gewijzigd.
* 24-05-96 EH vieuws prs_v_perslidwerkplek_gegevens en prs_v_aanwezigpers-
* lidwerkplek aangepast.
* 24-05-96 EH tabel prs_srtperslidwerkplek gewijzigd.
* 24-05-96 EH Message prs_m027 gewijzigd.
* 22-05-96 EH fac_entity 'PRS_PERSLIDWERKPLEK_BEZ' toegevoegd.
* 22-05-96 EH message prs_m033 gewijzigd.
* 22-05-96 PF Bug in naamgeving att/fac ook hier verbeterd
* 21-05-96 EH 3 prs_messages toegevoegd.
* 21-05-96 EH In geval van PRS veld 'prs_verhuurbaar' toevoegen aan alg_
* srtruimte.
* 21-05-96 EH Creatie van ATT alsmede de wijziging in de tabel ins_deel en
* bijbehorende trigger.
* 20-05-96 RW ins_t_ins_deel_b_iu aangepast voor BCP.
* 20-05-96 AH MLD_KOSTENPOST_DATUM en .._JAAR toegevoegd.
* 15-05-96 AH INV-messages en entities toegevoegd.
* 15-05-96 EH Wijziging aangebracht in de tabel alg_locatie en de daarmee
* samenhangende aanwezigview.
* 14-05-96 AH
* 14-05-96 EH Vieuws all_v_aanwezigdiscipline, _srtgroep, srtdeel alsmede
* all_v_srtgroepgegevens en all_v_srtdeelgegevens.
* 14-05-96 KTH inv_m034 toegevoegd
* 10-05-96 KTH fac_m004 toegevoegd
* 08-05-96 AH UNIQUE op DEEL_UPPER. Vervalt.
* 06-05-96 RW Privileges zijn aangepast, kan echter niet in dit
* update-script gedaan worden. Voor BCO\BCP worden pas
* update-scripts gemaakt als het eenmaal opgeleverd is.
* 03-05-96 AH Entities en messages toegevoegd.
* 26-04-96 AH message ALG_M108 aangepast.
* 26-04-96 AH PRS_PERSLID aangepast voor _module en _telefoonnr
* 26-04-96 AH MLD_KOSTENPOST aangepast voor _module, _datum en _jaar.
* MLD_BEDRIJF aangepast voor leverancier_nr en overeenkomst_..
* 26-04-96 AH INS_SRTDEEL aangepast voor velden _nr en _prijs.
* 24-04-96 AH View SLE_V_SLEUTEL_GEGEVENS aangepast voor volgorde in SLE012
* 24-04-96 AH View MLD_V_MELDING_OPENOPDR_GEGEVENS aangepast voor status
* Ingevoerd.
* 24-04-96 AH View BCO_V_CORROPDR_LOCATIEGROEP aangepast voor Terreinsector.
* 24-04-96 AH INS-messages toegevoegd en vervangen.
* 22-04-96 AH FAC_MESSAGE voor PRS_PERSLID_STORING toegevoegd.
* 22-04-96 AH Typeveld van ALG_VERDIEPING_KEY aangemaakt in ALG_RUIMTE.
* 22-04-96 AH CHECK_UNIQUE_OMSCHRIJVING uit MLD gehaald. Entities en Msg's
* toegevoegd voor opdrachtbon van SON.
* 19-04-96 KTH Lege file aangemaakt
*/
#include "comsql.h"
#ifdef INS
ALTER TABLE ins_deel
ADD(
fac0
VARCHAR2(50),
fac1
VARCHAR2(50),
fac2
VARCHAR2(50),
fac3
VARCHAR2(50),
fac4
VARCHAR2(50),
fac5
VARCHAR2(50),
fac6
VARCHAR2(50),
fac7
VARCHAR2(50),
fac8
VARCHAR2(50),
fac9
VARCHAR2(50)
);
CREATE_TABLE(fac_attribute, NORMAAL_PRIVILEGE)
(
fac_attribute_key
NUMBER(10)
PRIMARY KEY,
ins_srtinst_keys
NUMBER(10),
ins_srtinst_type
VARCHAR2(1)
CHECK(ins_srtinst_type = 'D' OR
ins_srtinst_type = 'G' OR
ins_srtinst_type = 'S'),
ins_attribute_volgorde
NUMBER(1)
CHECK(ins_attribute_volgorde >= 0 OR
ins_attribute_volgorde <= 9),
ins_attribute_key
NUMBER(1)
CHECK(ins_attribute_key >= 0 OR
ins_attribute_key <= 9),
ins_attribute_label
VARCHAR(15)
NOT NULL,
ins_attribute_type
VARCHAR(1)
CHECK(ins_attribute_type = 'N' OR
ins_attribute_type = 'C' OR
ins_attribute_type = 'R'),
ins_attribute_length
NUMBER(2)
NOT NULL,
ins_attribute_required
NUMBER(1)
CHECK(ins_attribute_required = 0 OR
ins_attribute_required = 1),
ins_attribute_min
NUMBER(10),
ins_attribute_max
NUMBER(10),
ins_attribute_dec
NUMBER(2),
ins_attribute_table
VARCHAR2(30),
ins_attribute_column
VARCHAR2(30),
ins_attribute_column_txt
VARCHAR2(30),
ins_attribute_unit
VARCHAR2(10),
ins_attribute_toonbaar
NUMBER(1)
CHECK(ins_attribute_toonbaar = 0 OR
ins_attribute_toonbaar = 1)
);
CREATE_VIEW(fac_v_attr_hulp, NORMAAL_PRIVILEGE)
(ins_discipline_key,
ins_srtgroep_key,
ins_srtdeel_key,
fac_attribute_key) AS
SELECT FAC_A.ins_srtinst_keys,
TO_NUMBER(NULL),
TO_NUMBER(NULL),
FAC_A.fac_attribute_key
FROM fac_attribute FAC_A
WHERE FAC_A.ins_srtinst_type = 'D'
UNION
SELECT TO_NUMBER(NULL),
FAC_A.ins_srtinst_keys,
TO_NUMBER(NULL),
FAC_A.fac_attribute_key
FROM fac_attribute FAC_A
WHERE FAC_A.ins_srtinst_type = 'G'
UNION
SELECT TO_NUMBER(NULL),
INS_SG.ins_srtgroep_key,
TO_NUMBER(NULL),
FAC_A.fac_attribute_key
FROM fac_attribute FAC_A,
ins_srtgroep INS_SG
WHERE FAC_A.ins_srtinst_type = 'D' AND
FAC_A.ins_srtinst_keys = INS_SG.ins_discipline_key
UNION
SELECT TO_NUMBER(NULL),
TO_NUMBER(NULL),
FAC_A.ins_srtinst_keys,
FAC_A.fac_attribute_key
FROM fac_attribute FAC_A
WHERE FAC_A.ins_srtinst_type = 'S'
UNION
SELECT TO_NUMBER(NULL),
TO_NUMBER(NULL),
INS_SD.ins_srtdeel_key,
FAC_A.fac_attribute_key
FROM fac_attribute FAC_A,
ins_srtdeel INS_SD
WHERE FAC_A.ins_srtinst_type = 'G' AND
FAC_A.ins_srtinst_keys = INS_SD.ins_srtgroep_key
UNION
SELECT TO_NUMBER(NULL),
TO_NUMBER(NULL),
INS_SDG.ins_srtdeel_key,
FAC_A.fac_attribute_key
FROM fac_attribute FAC_A,
ins_v_srtdeel_gegevens INS_SDG
WHERE FAC_A.ins_srtinst_type = 'D' AND
FAC_A.ins_srtinst_keys = INS_SDG.ins_discipline_key;
CREATE_VIEW(fac_v_attribute_gegevens, NORMAAL_PRIVILEGE)
(ins_discipline_key,
ins_srtgroep_key,
ins_srtdeel_key,
ins_srtinst_type,
ins_attribute_volgorde,
ins_attribute_key,
ins_attribute_label,
ins_attribute_type,
ins_attribute_length,
ins_attribute_required,
ins_attribute_min,
ins_attribute_max,
ins_attribute_dec,
ins_attribute_table,
ins_attribute_column,
ins_attribute_column_txt,
ins_attribute_unit,
ins_attribute_toonbaar) AS
SELECT FAC_H.ins_discipline_key,
FAC_H.ins_srtgroep_key,
FAC_H.ins_srtdeel_key,
FAC_A.ins_srtinst_type,
FAC_A.ins_attribute_volgorde,
FAC_A.ins_attribute_key,
FAC_A.ins_attribute_label,
FAC_A.ins_attribute_type,
FAC_A.ins_attribute_length,
FAC_A.ins_attribute_required,
FAC_A.ins_attribute_min,
FAC_A.ins_attribute_max,
FAC_A.ins_attribute_dec,
FAC_A.ins_attribute_table,
FAC_A.ins_attribute_column,
FAC_A.ins_attribute_column_txt,
FAC_A.ins_attribute_unit,
FAC_A.ins_attribute_toonbaar
FROM fac_attribute FAC_A,
fac_v_attr_hulp FAC_H
WHERE FAC_A.fac_attribute_key = FAC_H.fac_attribute_key;
/* Geeft een overzicht van de beschikbare attribute_keys op de verschillende
srt_inst niveaus */
CREATE_VIEW(fac_v_attr_key_gegevens, NORMAAL_PRIVILEGE)
(ins_discipline_key,
ins_srtgroep_key,
ins_srtdeel_key,
ins_attribute_key) AS
SELECT FAC_A.ins_srtinst_keys,
TO_NUMBER(NULL),
TO_NUMBER(NULL),
FAC_A.ins_attribute_key
FROM fac_attribute FAC_A
WHERE FAC_A.ins_srtinst_type = 'D'
UNION
SELECT INS_G.ins_discipline_key,
FAC_A.ins_srtinst_keys,
TO_NUMBER(NULL),
FAC_A.ins_attribute_key
FROM fac_attribute FAC_A,
all_v_aanwezigsrtgroep INS_G
WHERE FAC_A.ins_srtinst_type = 'G' AND
FAC_A.ins_srtinst_keys = INS_G.ins_srtgroep_key
UNION
SELECT INS_SD.ins_discipline_key,
INS_SD.ins_srtgroep_key,
FAC_A.ins_srtinst_keys,
FAC_A.ins_attribute_key
FROM fac_attribute FAC_A,
all_v_srtdeel_gegevens INS_SD
WHERE FAC_A.ins_srtinst_type = 'S' AND
FAC_A.ins_srtinst_keys = INS_SD.ins_srtdeel_key;
CREATE SEQUENCE fac_s_fac_attribute_key MINVALUE 1;
CREATE TRIGGER FAC_t_fac_attribute_B_IU
BEFORE INSERT OR UPDATE ON fac_attribute
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_attribute_key, FAC_s_fac_attribute_key);
END;
/
UPDATE fac_message
SET fac_message_text = 'Datum moet van formaat DD-MM-JJJJ zijn.'
where UPPER(fac_message_code) = UPPER('alg_m108');
INSERT INTO fac_entity_name VALUES('YES', 'Ja', NULL, NULL);
INSERT INTO fac_entity_name VALUES('NO', 'Nee', NULL, NULL);
INSERT INTO fac_message VALUES('ALG_M152', 'Interne fout in table volgnummer: Ontbrekende soort');
INSERT INTO fac_message VALUES('fac_m004', 'Er is een probleem opgetreden bij het opstarten van ');
INSERT INTO fac_message VALUES('inv_m034', 'Er is geen AutoCAD symbool beschikbaar voor dit artikelsoort.');
INSERT INTO fac_entity_name VALUES('PRS_PERSLID_REGISTRATIE_NR', 'Registratienr.', 'Registratienummers', 'het');
DELETE FROM fac_entity_name
WHERE UPPER(fac_entity_system_name) = 'INV_SRTDEEL_NR';
INSERT INTO fac_entity_name VALUES('INV_SRTDEEL_NR', 'Artikelnr.', 'Artikelnummers', 'het');
INSERT INTO fac_entity_name VALUES('INV_SRTDEEL_PRIJS', 'Prijs', 'Prijzen', 'de');
INSERT INTO fac_entity_name VALUES('INV_TOTAAL', 'Totaal', 'Totalen', 'het');
INSERT INTO fac_message VALUES('INV_M035', 'Overzicht inventaris');
INSERT INTO fac_message VALUES('INV_M036', 'met prijzen');
INSERT INTO fac_entity_name VALUES('MLD_KOSTENPOST_DATUM', 'Uitgiftedatum', 'Uitgiftedata', 'de');
INSERT INTO fac_entity_name VALUES('MLD_KOSTENPOST_JAAR', 'Jaar', 'Jaren', 'het');
INSERT INTO fac_entity_name VALUES('PRS_PERSLIDWERKPLEK_BEZ', 'Bezetting', NULL, NULL);
INSERT INTO fac_message VALUES('PRS_M045', 'Niet verhuurbare ruimte.');
INSERT INTO fac_message VALUES('PRS_M046', 'Gemeenschappelijke ruimte.');
INSERT INTO fac_message VALUES('PRS_M047', 'Verhuurbare ruimte.');
DELETE FROM fac_message WHERE fac_message_code = 'PRS_M033';
DELETE FROM fac_message WHERE fac_message_code = 'PRS_M027';
DELETE FROM fac_message WHERE fac_message_code = 'PRS_M028';
DELETE FROM fac_message WHERE fac_message_code = 'PRS_M031';
DELETE FROM fac_message WHERE fac_message_code = 'PRS_M032';
INSERT INTO fac_message VALUES('PRS_M033', 'Verwijderen werkplek');
INSERT INTO fac_message VALUES('PRS_M027', 'U kunt alleen een afdeling/persoon bij een werkplek verwijderen.');
INSERT INTO fac_message VALUES('PRS_M031', 'Persoon of Afdeling moet worden ingevuld.');
INSERT INTO fac_message VALUES('PRS_M028', 'Afdeling/persoon bij werkplek');
INSERT INTO fac_message VALUES('PRS_M048', 'Afdeling/persoon');
INSERT INTO fac_message VALUES('PRS_M049', 'U kunt alleen een afdeling/persoon bekijken');
INSERT INTO fac_message VALUES('PRS_M050', 'Verwijderen afdeling/persoon');
INSERT INTO fac_message VALUES('PRS_M051', 'Bezetting is meer dan maximaal toegestaan');
INSERT INTO fac_message VALUES('PRS_M032', 'Werkplekken bij afdeling/persoon');
#ifdef ALG
ALTER TABLE alg_ruimte
MODIFY
(
alg_verdieping_key
NUMBER(10)
);
ALTER TABLE alg_locatie
ADD
(
alg_locatie_verantw
VARCHAR2(30),
alg_locatie_verantw_tel
VARCHAR2(15)
);
DROP VIEW alg_v_aanweziglocatie;
CREATE VIEW alg_v_aanweziglocatie
AS
SELECT * FROM alg_locatie
WHERE alg_locatie.alg_locatie_verwijder IS NULL;
#endif
#ifdef MLD
DROP TRIGGER mld_t_mld_oorzaak_A_IU;
ALTER TABLE mld_oorzaak
ADD
(
UNIQUE(mld_oorzaak_upper, mld_oorzaak_verwijder)
);
DROP TRIGGER mld_t_mld_meldbron_A_IU;
ALTER TABLE mld_meldbron
ADD
(
UNIQUE(mld_meldbron_upper, mld_meldbron_verwijder)
);
DROP TRIGGER mld_t_mld_standaardopdr_A_IU;
ALTER TABLE mld_standaardopdr
ADD
(
UNIQUE(mld_standaardopdr_afk_upper, mld_standaardopdr_verwijder)
);
DROP TRIGGER mld_t_mld_bedrijf_A_IU;
ALTER TABLE mld_bedrijf
ADD
(
UNIQUE(mld_bedrijf_naam_upper, mld_bedrijf_verwijder)
);
UPDATE fac_message
SET fac_message_text = 'Opdracht gereed : Ja / Nee'
WHERE UPPER(fac_message_code) = UPPER('mld_m055');
INSERT INTO fac_entity_name VALUES('MLD_OPDR_NR', 'Opdrachtnr.', NULL, 'het');
DROP VIEW mld_v_mld_openopdr_gegevens;
CREATE VIEW mld_v_mld_openopdr_gegevens ( mld_opdr_module,
mld_opdr_key,
mld_melding_key,
mld_statusopdr_key,
mld_statusopdr_omschrijving,
mld_opdr_datumbegin,
mld_opdr_datumuitgevoerd,
mld_opdr_dagen,
mld_alg_onroerendgoed_keys,
mld_statussoort ) AS
SELECT MLD_O.mld_opdr_module,
MLD_O.mld_opdr_key,
MLD_O.mld_melding_key,
MLD_O.mld_statusopdr_key,
MLD_S.mld_statusopdr_omschrijving,
MLD_O.mld_opdr_datumbegin,
MLD_O.mld_opdr_datumuitgevoerd,
MLD_O.mld_opdr_dagen,
MLD_M.mld_alg_onroerendgoed_keys,
'OPEN'
FROM mld_v_melding_openopdr MLD_O, mld_melding MLD_M, mld_statusopdr MLD_S
WHERE MLD_O.mld_melding_key = MLD_M.mld_melding_key
AND MLD_O.mld_statusopdr_key = MLD_S.mld_statusopdr_key
UNION
SELECT MLD_O.mld_opdr_module,
MLD_O.mld_opdr_key,
MLD_O.mld_melding_key,
MLD_O.mld_statusopdr_key,
MLD_S.mld_statusopdr_omschrijving,
MLD_O.mld_opdr_datumbegin,
MLD_O.mld_opdr_datumuitgevoerd,
MLD_O.mld_opdr_dagen,
MLD_M.mld_alg_onroerendgoed_keys,
'ALL'
FROM mld_opdr MLD_O, mld_melding MLD_M, mld_statusopdr MLD_S
WHERE MLD_O.mld_melding_key = MLD_M.mld_melding_key
AND MLD_O.mld_statusopdr_key = MLD_S.mld_statusopdr_key;
ALTER TABLE mld_kostenpost
ADD
(
mld_kostenpost_module
VARCHAR2(3),
mld_kostenpost_datum /* Datum toekenning budget */
DATE,
mld_kostenpost_jaar /* Jaar waarin het budget geldig is */
NUMBER(4)
);
UPDATE mld_kostenpost
SET mld_kostenpost_module = 'MLD';
ALTER TABLE mld_kostenpost
MODIFY
(
mld_kostenpost_module
NOT NULL
);
ALTER TABLE mld_bedrijf
ADD
(
mld_leverancier_nr
VARCHAR2(5),
mld_overeenkomst_nr
VARCHAR2(10),
mld_overeenkomst_datum
DATE
);
#endif
INSERT INTO fac_message VALUES('PRS_M044', 'Voor storing beschikbaar.');
UPDATE fac_message
SET fac_message_text = 'Wilt u het deel of de gehele ruimte kopieren?'
WHERE UPPER(fac_message_code) = UPPER('ins_m061');
UPDATE fac_message
SET fac_message_text = 'Wilt u de gehele ruimte kopieren?'
WHERE UPPER(fac_message_code) = UPPER('ins_m063');
INSERT INTO fac_message VALUES ('INS_M090', 'Locatie is niet ingevuld ! ');
INSERT INTO fac_message VALUES ('INS_M091', 'Gebouw is niet ingevuld ! ');
#ifdef BCO
DROP VIEW bco_v_corropdr_locatiegroep;
CREATE VIEW bco_v_corropdr_locatiegroep (bco_locatiegroep_key,
alg_locatie_key,
mld_opdr_key) AS
SELECT ALG_L.bco_locatiegroep_key,
ALG_L.alg_locatie_key,
MLD_O.mld_opdr_key
FROM mld_opdr MLD_O, mld_melding MLD_M, mld_v_onroerendgoed_locatie MLD_OL,
alg_locatie ALG_L
WHERE MLD_O.mld_opdr_module = 'BCO' /* [70] */
AND MLD_O.mld_melding_key = MLD_M.mld_melding_key
AND MLD_M.mld_alg_onroerendgoed_keys =
MLD_OL.alg_onroerendgoed_keys
AND MLD_OL.alg_locatie_key = ALG_L.alg_locatie_key;
#endif
#ifdef SLE
DROP VIEW sle_v_sleutel_gegevens;
CREATE VIEW sle_v_sleutel_gegevens (sle_sleutel_key,
sle_sleutel_omschrijving,
sle_sleutel_upper,
sle_sleutel_aantal,
sle_sleutel_slot_key,
sle_slot_key,
sle_slot_omschrijving,
sle_slot_upper,
sle_sleutel_module
) AS
SELECT SLE_S.sle_sleutel_key,
SLE_S.sle_sleutel_omschrijving,
SLE_S.sle_sleutel_upper,
SLE_S.sle_sleutel_aantal,
SLE_SS.sle_sleutel_slot_key,
SLE_SS.sle_slot_key,
SLE_SLOT.sle_slot_omschrijving,
SLE_SLOT.sle_slot_upper,
'SLE011'
FROM sle_sleutel SLE_S, sle_sleutel_slot SLE_SS, sle_slot SLE_SLOT
WHERE SLE_S.sle_sleutel_key = SLE_SS.sle_sleutel_key
AND SLE_SS.sle_slot_key = SLE_SLOT.sle_slot_key
UNION
SELECT sle_sleutel_key,
sle_sleutel_omschrijving,
sle_sleutel_upper,
sle_sleutel_aantal,
to_number(NULL),
to_number(NULL),
NULL,
NULL,
NULL
FROM sle_sleutel;
#endif
#ifdef INV
ALTER TABLE ins_srtdeel
ADD
(
inv_srtdeel_nr
VARCHAR2(16),
inv_srtdeel_prijs
NUMBER(8,2)
);
CREATE_VIEW(inv_v_deel_gegevens,NORMAAL_PRIVILEGE) AS
SELECT INV_D.ins_discipline_key, INV_D.ins_discipline_omschrijving,
INV_SG.ins_srtgroep_key, INV_SG.ins_srtgroep_omschrijving,
INV_SG.ins_srtgroep_upper, INV_SD.ins_srtdeel_key,
INV_SD.ins_srtdeel_omschrijving, INV_SD.ins_srtdeel_upper,
INV_SD.inv_srtdeel_nr,
INV_DEEL.ins_deel_key, INV_DEEL.ins_deel_aantal,
INV_DEEL.ins_deel_omschrijving, INV_DEEL.ins_deel_upper,
INV_DEEL.ins_deel_serienr, INV_DEEL.ins_alg_ruimte_key,
INV_DEEL.ins_alg_ruimte_type, INV_DEEL.ins_prs_bezit_key,
INV_DEEL.ins_prs_bezit_type
FROM inv_v_aanwezigdiscipline INV_D, inv_v_aanwezigsrtgroep INV_SG,
inv_v_aanwezigsrtdeel INV_SD, inv_v_aanwezigdeel INV_DEEL
WHERE INV_SG.ins_srtgroep_key = INV_SD.ins_srtgroep_key
AND INV_D.ins_discipline_key = INV_SG.ins_discipline_key
AND INV_DEEL.ins_srtdeel_key = INV_SD.ins_srtdeel_key;
#endif
#ifdef PRS
ALTER TABLE prs_perslid
ADD
(
prs_perslid_module
VARCHAR2(3),
prs_perslid_telefoonnr
VARCHAR2(15)
);
UPDATE prs_perslid
SET prs_perslid_module = 'PRS'
ALTER TABLE prs_perslid
MODIFY
(
prs_perslid_module
NOT NULL
);
ALTER TABLE alg_srtruimte
ADD
(
prs_verhuurbaar
NUMBER(1)
CHECK(prs_verhuurbaar IS NULL OR prs_verhuurbaar = 1 ),
CHECK(NOT(prs_bevat_werkplek = 1 AND prs_verhuurbaar IS NULL))
);
ALTER TABLE prs_perslidwerkplek
MODIFY
(
prs_perslid_key
NULL
);
ALTER TABLE prs_perslidwerkplek
ADD
(
prs_afdeling_key
NUMBER(10)
REFERENCES prs_afdeling(prs_afdeling_key)
);
ALTER TABLE prs_perslidwerkplek
DROP
UNIQUE(prs_perslid_key, prs_werkplek_key, prs_perslidwerkplek_verwijder);
ALTER TABLE prs_perslidwerkplek
ADD
(
UNIQUE(prs_perslid_key, prs_afdeling_key,
prs_werkplek_key, prs_perslidwerkplek_verwijder)
);
DROP VIEW prs_v_perslidwerkplek_gegevens;
DROP VIEW prs_v_aanwezigperslidwerkplek;
DEFINIEER_VIEW_AANWEZIG(prs_perslidwerkplek,
prs_perslidwerkplek_verwijder,
prs_v_aanwezigperslidwerkplek,
NORMAAL_PRIVILEGE);
CREATE_VIEW(prs_v_perslidwerkplek_gegevens,NORMAAL_PRIVILEGE) AS
SELECT PRS_W.prs_werkplek_key,
PRS_W.prs_werkplek_volgnr,
PRS_W.prs_werkplek_omschrijving,
PRS_W.prs_werkplek_opp,
PRS_W.alg_ruimte_key,
PRS_W.alg_ruimte_nr,
PRS_W.alg_ruimte_upper_nr,
PRS_W.alg_verdieping_key,
PRS_W.alg_verdieping_volgnr,
PRS_W.alg_verdieping_omschrijving,
PRS_W.alg_gebouw_key,
PRS_W.alg_gebouw_omschrijving,
PRS_W.alg_gebouw_upper,
PRS_W.alg_locatie_key,
PRS_PW.prs_perslidwerkplek_key,
PRS_PW.prs_perslid_key,
PRS_PW.prs_afdeling_key
FROM prs_v_werkplek_gegevens PRS_W, prs_v_aanwezigperslidwerkplek PRS_PW
WHERE PRS_W.prs_werkplek_key = PRS_PW.prs_werkplek_key (+);
CREATE_VIEW(prs_v_werkplekperslid_gegevens,NORMAAL_PRIVILEGE)
( prs_perslidwerkplek_key,
prs_perslid_key,
prs_afdeling_key,
prs_naam,
prs_werkplek_key,
prs_werkplek_volgnr,
prs_werkplek_opp,
alg_locatie_key,
alg_gebouw_omschrijving,
alg_gebouw_upper,
alg_verdieping_volgnr,
alg_verdieping_omschrijving,
alg_ruimte_nr,
alg_ruimte_upper_nr ) AS
SELECT PRS_PW.prs_perslidwerkplek_key,
PRS_PW.prs_perslid_key,
to_number(NULL),
PRS_P.prs_perslid_naam||' '||prs_perslid_voorletters,
PRS_PW.prs_werkplek_key,
PRS_W.prs_werkplek_volgnr,
PRS_W.prs_werkplek_opp,
PRS_W.alg_locatie_key,
PRS_W.alg_gebouw_omschrijving,
PRS_W.alg_gebouw_upper,
PRS_W.alg_verdieping_volgnr,
PRS_W.alg_verdieping_omschrijving,
PRS_W.alg_ruimte_nr,
PRS_W.alg_ruimte_upper_nr
FROM prs_v_aanwezigperslidwerkplek PRS_PW, prs_perslid PRS_P,
prs_v_werkplek_gegevens PRS_W
WHERE PRS_PW.prs_perslid_key = PRS_P.prs_perslid_key
AND PRS_PW.prs_werkplek_key = PRS_W.prs_werkplek_key
UNION
SELECT PRS_PW.prs_perslidwerkplek_key,
to_number(NULL),
PRS_PW.prs_afdeling_key,
'['||PRS_A.prs_afdeling_naam||']',
PRS_PW.prs_werkplek_key,
PRS_W.prs_werkplek_volgnr,
PRS_W.prs_werkplek_opp,
PRS_W.alg_locatie_key,
PRS_W.alg_gebouw_omschrijving,
PRS_W.alg_gebouw_upper,
PRS_W.alg_verdieping_volgnr,
PRS_W.alg_verdieping_omschrijving,
PRS_W.alg_ruimte_nr,
PRS_W.alg_ruimte_upper_nr
FROM prs_v_aanwezigperslidwerkplek PRS_PW, prs_afdeling PRS_A,
prs_v_werkplek_gegevens PRS_W
WHERE PRS_PW.prs_afdeling_key = PRS_A.prs_afdeling_key
AND PRS_PW.prs_werkplek_key = PRS_W.prs_werkplek_key;
#endif
#ifdef INS
INSERT INTO fac_privilege VALUES ('all_v_aanwezigdiscipline', 3);
CREATE VIEW all_v_aanwezigdiscipline AS SELECT * FROM ins_discipline WHERE ins_discipline.ins_discipline_verwijder IS NULL;
INSERT INTO fac_privilege VALUES ('all_v_aanwezigsrtgroep', 3);
CREATE VIEW all_v_aanwezigsrtgroep AS SELECT * FROM ins_srtgroep WHERE ins_srtgroep.ins_srtgroep_verwijder IS NULL;
INSERT INTO fac_privilege VALUES ('all_v_aanwezigsrtdeel', 3);
CREATE VIEW all_v_aanwezigsrtdeel AS SELECT * FROM ins_srtdeel WHERE ins_srtdeel.ins_srtdeel_verwijder IS NULL;
CREATE_VIEW(all_v_srtgroep_gegevens,NORMAAL_PRIVILEGE) AS
SELECT ins_D.ins_discipline_key, ins_D.ins_discipline_omschrijving,
ins_SG.ins_srtgroep_key, ins_SG.ins_srtgroep_omschrijving,
ins_SG.ins_srtgroep_upper, ins_SG.ins_srtgroep_module
FROM all_v_aanwezigdiscipline ins_D, all_v_aanwezigsrtgroep ins_SG
WHERE
ins_D.ins_discipline_key = ins_SG.ins_discipline_key;
CREATE_VIEW(all_v_srtdeel_gegevens,NORMAAL_PRIVILEGE) AS
SELECT ins_D.ins_discipline_key, ins_D.ins_discipline_omschrijving,
ins_SG.ins_srtgroep_key, ins_SG.ins_srtgroep_omschrijving,
ins_SG.ins_srtgroep_upper, ins_SD.ins_srtdeel_key,
ins_SD.ins_srtdeel_omschrijving, ins_SD.ins_srtdeel_upper,
ins_SD.ins_srtdeel_module
FROM all_v_aanwezigdiscipline ins_D, all_v_aanwezigsrtgroep ins_SG,
all_v_aanwezigsrtdeel ins_SD
WHERE
ins_SG.ins_srtgroep_key = ins_SD.ins_srtgroep_key AND
ins_D.ins_discipline_key = ins_SG.ins_discipline_key;
DROP TRIGGER ins_t_ins_deel_B_IU;
CREATE TRIGGER ins_t_ins_deel_B_IU
BEFORE INSERT OR UPDATE ON ins_deel
FOR EACH ROW
BEGIN
LOG('Begin INS_T_INS_DEEL_B_IU');
UPDATE_PRIMARY_KEY(ins_deel_key,ins_s_ins_inst_keys);
UPDATE_UPPER(ins_deel_omschrijving,ins_deel_upper);
SET_VERWIJDER_CHILDREN(ins_onderdeel, ins_deel_key, ins_deel_verwijder,
ins_onderdeel_verwijder);
/* Bij INS_DEEL in INS-mode moet INS_ALG_RUIMTE_KEY ingevuld zijn
* en wel met ruimte of terreinsector, daarvoor moet ook het
* INS_ALG_RUIMTE_TYPE veld goed ingevuld zijn (met 'R' of 'T').
* Dit geldt als INS_ALG_RUIMTE_KEY veranderd is of als er een
* nieuw record geinsert wordt.
*
* IN INV-mode hoeft INS_ALG_RUIMTE_KEY niet ingevuld te zijn, maar
* als deze ingevuld is moet INS_ALG_RUIMTE_KEY met ruimte of werkplek
* gevuld zijn, daarvoor moet het veld INS_ALG_RUITMTE_KEY goed
* ingevuld zijn (met 'R' of 'W').
*
* IN INV-mode kan het veld INS_PRS_BEZIT_KEY ook ingevuld zijn, maar
* INS_ALG_RUIMTE_KEY en INS_PRS_BEZIT_KEY kunnen niet beide ingevuld worden.
* INS_PRS_BEZIT_KEY kan de waarde perslid of afdeling bevatten en het
* veld INS_PRS_BEZIT_TYPE moet dan goed ingevuld zijn (met 'P' of 'A').
*/
IF :new.ins_deel_module = 'INS'
AND (:old.ins_alg_ruimte_key <> :new.ins_alg_ruimte_key
OR :old.ins_alg_ruimte_key IS NULL)
THEN
IF :new.ins_alg_ruimte_type = 'R'
THEN
CHECK_KEY_REFERENCE(alg_v_aanwezigruimte, alg_ruimte_key,
:new.ins_alg_ruimte_key, 'ins_m83');
ELSIF :new.ins_alg_ruimte_type = 'T'
THEN
CHECK_KEY_REFERENCE(alg_v_aanwezigterreinsector, alg_terreinsector_key,
:new.ins_alg_ruimte_key, 'ins_m83');
ELSE
APPLICATION_ERROR(-20000, 'ins_m84');
END IF;
#ifdef INV
ELSIF :new.ins_deel_module = 'INV'
AND (:new.ins_alg_ruimte_key IS NOT NULL
OR :new.ins_prs_bezit_key IS NOT NULL )
THEN
IF :new.ins_alg_ruimte_key IS NOT NULL
AND :new.ins_prs_bezit_key IS NOT NULL
THEN
APPLICATION_ERROR(-20000, 'ins_m85');
ELSIF :new.ins_alg_ruimte_key IS NOT NULL
THEN
IF :new.ins_alg_ruimte_type = 'R'
THEN
CHECK_KEY_REFERENCE(alg_v_aanwezigruimte, alg_ruimte_key,
:new.ins_alg_ruimte_key, 'ins_m88');
ELSIF :new.ins_alg_ruimte_type = 'W'
THEN
CHECK_KEY_REFERENCE(prs_v_aanwezigwerkplek, prs_werkplek_key,
:new.ins_alg_ruimte_key, 'ins_m88');
ELSE
APPLICATION_ERROR(-20000, 'ins_m84');
END IF;
ELSIF :new.ins_prs_bezit_key IS NOT NULL
THEN
IF :new.ins_prs_bezit_type = 'P'
THEN
CHECK_KEY_REFERENCE(prs_v_aanwezigperslid, prs_perslid_key,
:new.ins_prs_bezit_key, 'ins_m86');
ELSIF :new.ins_prs_bezit_type = 'A'
THEN
CHECK_KEY_REFERENCE(prs_v_aanwezigafdeling, prs_afdeling_key,
:new.ins_prs_bezit_key, 'ins_m86');
ELSE
APPLICATION_ERROR(-20000, 'ins_m86');
END IF;
ELSE
APPLICATION_ERROR(-20000, 'ins_m87');
END IF;
#endif
END IF;
#ifdef INV
/* Als een INS_DEEL in INV-mode (red. een artikel) verwijderd, gekoppeld,
* ontkoppeld of verplaatst wordt van een ruimte of een werkplek,
* dan is de bijbehorende verdieping-tekening niet meer up to date en
* moet dus het INV_DWGUPTODATE-veld gezet worden.
*
* Als in INV-mode het INS_DEEL van INS_SRTDEEL veranderd,
* moet in het geval dit INS_SRTDEEL een ander ACADSYMBOL heeft
* het INV_DWGUPTODATE-veld van de verdiepingtekening ook gezet worden.
*/
IF :new.ins_deel_module = 'INV'
THEN
/* Verwijderen */
IF :new.ins_deel_verwijder IS NOT NULL
/* Koppelen */
OR (:old.ins_alg_ruimte_key IS NULL
AND :new.ins_alg_ruimte_key IS NOT NULL)
/* Ontkoppelen */
OR (:old.ins_alg_ruimte_key IS NOT NULL
AND :new.ins_alg_ruimte_key IS NULL)
/* Verplaatsen */
OR (:old.ins_alg_ruimte_key <> :new.ins_alg_ruimte_key)
/* Van INS_SRTDEEL veranderen.
* ACADSYMBOL is hierin nog niet verwerkt.
*/
OR (:old.ins_srtdeel_key <> :new.ins_srtdeel_key)
THEN
/* Voor de oude INS_ALG_RUIMTE_KEY */
IF :old.ins_alg_ruimte_type = 'R'
AND :old.ins_alg_ruimte_key IS NOT NULL
THEN
SET_DWGUPTODATE(alg_verdieping, alg_verdieping_key,
(SELECT ALG_R.alg_verdieping_key
FROM alg_ruimte ALG_R
WHERE ALG_R.alg_ruimte_key = :old.ins_alg_ruimte_key),
inv_dwguptodate);
ELSIF :old.ins_alg_ruimte_type = 'W'
AND :old.ins_alg_ruimte_key IS NOT NULL
THEN
SET_DWGUPTODATE(alg_verdieping, alg_verdieping_key,
(SELECT ALG_R.alg_verdieping_key
FROM prs_v_aanwezigwerkplek PRS_W,
alg_ruimte ALG_R
WHERE PRS_W.prs_werkplek_key = :old.ins_alg_ruimte_key
AND ALG_R.alg_ruimte_key = PRS_W.prs_alg_ruimte_key),
inv_dwguptodate);
END IF;
/* Voor de nieuwe INS_ALG_RUIMTE_KEY*/
IF :new.ins_alg_ruimte_type = 'R'
AND :new.ins_alg_ruimte_key IS NOT NULL
THEN
SET_DWGUPTODATE(alg_verdieping, alg_verdieping_key,
(SELECT ALG_R.alg_verdieping_key
FROM alg_ruimte ALG_R
WHERE ALG_R.alg_ruimte_key = :new.ins_alg_ruimte_key),
inv_dwguptodate);
ELSIF :new.ins_alg_ruimte_type = 'W'
AND :new.ins_alg_ruimte_key IS NOT NULL
THEN
SET_DWGUPTODATE(alg_verdieping, alg_verdieping_key,
(SELECT ALG_R.alg_verdieping_key
FROM prs_v_aanwezigwerkplek PRS_W,
alg_ruimte ALG_R
WHERE PRS_W.prs_werkplek_key = :new.ins_alg_ruimte_key
AND ALG_R.alg_ruimte_key = PRS_W.prs_alg_ruimte_key),
inv_dwguptodate);
END IF;
END IF;
END IF;
#endif // INV
/* Gedeelte t.b.v. eventuele attribuutjes */
DECLARE dummy NUMBER;
SELECT count(*) INTO dummy
FROM fac_v_attribute_gegevens
WHERE ins_srtdeel_key = :new.ins_srtdeel_key;
IF dummy <> 0 /* attributen aanwezig */
THEN
IF :new.fac0 <> :old.fac0 OR :new.fac0 IS NULL OR :old.fac0 IS NULL
THEN
/*
* Trigger t.b.v. de 'flexibele' velden in ins_deel
*/
CHECK_ATTRIBUTE(fac0,0);
END IF;
IF :new.fac1 <> :old.fac1 OR :new.fac1 IS NULL OR :old.fac1 IS NULL THEN CHECK_ATTRIBUTE(fac1,1); END IF;
IF :new.fac2 <> :old.fac2 OR :new.fac2 IS NULL OR :old.fac2 IS NULL THEN CHECK_ATTRIBUTE(fac2,2); END IF;
IF :new.fac3 <> :old.fac3 OR :new.fac3 IS NULL OR :old.fac3 IS NULL THEN CHECK_ATTRIBUTE(fac3,3); END IF;
IF :new.fac4 <> :old.fac4 OR :new.fac4 IS NULL OR :old.fac4 IS NULL THEN CHECK_ATTRIBUTE(fac4,4); END IF;
IF :new.fac5 <> :old.fac5 OR :new.fac5 IS NULL OR :old.fac5 IS NULL THEN CHECK_ATTRIBUTE(fac5,5); END IF;
IF :new.fac6 <> :old.fac6 OR :new.fac6 IS NULL OR :old.fac6 IS NULL THEN CHECK_ATTRIBUTE(fac6,6); END IF;
IF :new.fac7 <> :old.fac7 OR :new.fac7 IS NULL OR :old.fac7 IS NULL THEN CHECK_ATTRIBUTE(fac7,7); END IF;
IF :new.fac8 <> :old.fac8 OR :new.fac8 IS NULL OR :old.fac8 IS NULL THEN CHECK_ATTRIBUTE(fac8,8); END IF;
IF :new.fac9 <> :old.fac9 OR :new.fac9 IS NULL OR :old.fac9 IS NULL THEN CHECK_ATTRIBUTE(fac9,9); END IF;
END IF;
/* Einde attributen */
#ifdef BCP
/* Procedure Taak */
IF :new.ins_deel_module = 'INS' AND :new.ins_alg_ruimte_type = 'R'
THEN
DECLARE
/* zoek taak bij nGebouw en bij deelsoort */
CURSOR c1(nGebouw NUMBER, nSrtdeel NUMBER) IS
SELECT A.bcp_taak_key, B.bcp_verzamel_key
FROM bcp_v_aanwezigtaak A, bcp_v_aanwezigverzamel B
WHERE A.bcp_verzamel_key = B.bcp_verzamel_key
AND B.bcp_ins_srtdeel_key = nSrtdeel
AND A.bcp_alg_gebouw_key = nGebouw;
Rec c1%ROWTYPE;
/* zoek alle verzamelopdrachten bij een deelsoort */
CURSOR c2(nSrtdeel NUMBER) IS
SELECT bcp_verzamel_key
FROM bcp_v_aanwezigverzamel
WHERE bcp_ins_srtdeel_key = nSrtdeel;
Rec2 c2%ROWTYPE;
nGebouw NUMBER(10);
nOudGebouw NUMBER(10);
nVerzamel NUMBER(10);
nUren NUMBER(10);
nMateriaal NUMBER(12);
nFreqWeken NUMBER(2);
nSector NUMBER(2);
nStartweek NUMBER(4);
nStartwerkweek NUMBER(4);
nJaar NUMBER(4);
nWeek NUMBER(4);
nWerkweek NUMBER(4);
nTaak NUMBER(10);
nStatus NUMBER(10);
nFactor NUMBER(10);
teller NUMBER(10);
teller2 NUMBER(10);
totaal NUMBER(10);
aant NUMBER(10);
nStatusUpper VARCHAR2(30);
verzamel_veranderd BOOLEAN;
taken_veranderd BOOLEAN;
nOthing BOOLEAN;
BEGIN
/* zoek gebouw en sector bij ruimte waar deel is */
SELECT A.alg_gebouw_key, A.bco_gebouw_sector
INTO nGebouw, nSector
FROM alg_v_aanweziggebouw A, alg_v_aanwezigverdieping B, alg_v_aanwezigruimte C
WHERE A.alg_gebouw_key = B.alg_gebouw_key
AND B.alg_verdieping_key = C.alg_verdieping_key
AND C.alg_ruimte_key = :new.ins_alg_ruimte_key;
IF NOT :old.ins_srtdeel_key IS NULL THEN
SELECT A.alg_gebouw_key
INTO nOudGebouw
FROM alg_v_aanweziggebouw A, alg_v_aanwezigverdieping B, alg_v_aanwezigruimte C
WHERE A.alg_gebouw_key = B.alg_gebouw_key
AND B.alg_verdieping_key = C.alg_verdieping_key
AND C.alg_ruimte_key = :old.ins_alg_ruimte_key;
END IF;
/* bepalen of de taken en eventueel de verzamelopdrachten van
het deel veranderd zijn. */
IF (:new.ins_srtdeel_key = :old.ins_srtdeel_key) AND (nGebouw = nOudGebouw) THEN
verzamel_veranderd := FALSE;
taken_veranderd := FALSE;
ELSIF (:new.ins_srtdeel_key = :old.ins_srtdeel_key) THEN
verzamel_veranderd := TRUE;
taken_veranderd := FALSE;
ELSE
verzamel_veranderd := TRUE;
taken_veranderd := TRUE;
END IF;
IF taken_veranderd THEN
/* alleen de taken bij oud_deel updaten als er een oud_deel is */
IF (NOT :old.ins_srtdeel_key IS NULL)
AND (NOT nOudGebouw IS NULL)
AND (NOT :old.ins_deel_verwijder = NULLDATUM)
THEN
OPEN c1(nOudGebouw, :old.ins_srtdeel_key);
LOOP
FETCH c1 INTO Rec;
EXIT WHEN c1%NOTFOUND;
nTaak := Rec.bcp_taak_key;
SELECT bcp_taak_aantal, bcp_ins_deel_aantal
INTO totaal, teller
FROM bcp_v_aanwezigtaak
WHERE bcp_taak_key = nTaak;
IF (teller = 1) THEN
UPDATE bcp_taak
SET bcp_taak_verwijder = SYSDATE
WHERE bcp_taak_key = nTaak;
ELSIF (teller > 1) THEN
/* bepaal aantal van het te verwijderen deel ...*/
aant := :old.ins_deel_aantal;
/* ... en pas de taak aan */
UPDATE bcp_taak
SET bcp_taak_uren = (totaal-aant)/totaal * bcp_taak_uren,
bcp_taak_materiaal = (totaal-aant)/totaal * bcp_taak_materiaal,
bcp_ins_deel_aantal = bcp_ins_deel_aantal-1,
bcp_taak_aantal = bcp_taak_aantal - :old.ins_deel_aantal
WHERE bcp_taak_key = nTaak;
END IF;
END LOOP;
CLOSE c1;
END IF; /* einde: CHANGE? */
/* nu passen we het nieuwe deel in de taken in,
(nog steeds taken_veranderd=TRUE) */
IF (NOT :new.ins_srtdeel_key IS NULL)
AND (NOT nGebouw IS NULL)
AND (NOT :new.ins_deel_verwijder = NULLDATUM)
THEN
OPEN c2(:new.ins_srtdeel_key);
LOOP
FETCH c2 INTO Rec2;
EXIT WHEN c2%NOTFOUND;
nVerzamel := Rec2.bcp_verzamel_key;
/* zoek of er een taak is bij de verzamelopdracht
en betreffende het gebouw */
BEGIN
SELECT bcp_taak_key
INTO nTaak
FROM bcp_v_aanwezigtaak
WHERE bcp_verzamel_key = nVerzamel
AND bcp_alg_gebouw_key = nGebouw;
EXCEPTION
WHEN NO_DATA_FOUND THEN
nTaak:= NULL;
END;
IF (nTaak IS NULL) THEN /* geen taak bij verzamel gevonden */
SELECT A.bcp_verzamel_uren, A.bcp_verzamel_materiaal, B.bcp_frequentie_weken
INTO nUren, nMateriaal, nFreqWeken
FROM bcp_verzamel A, bcp_frequentie B
WHERE A.bcp_frequentie_key = B.bcp_frequentie_key
AND A.bcp_verzamel_key = nVerzamel;
nJaar := mod(to_number(to_char(SYSDATE, 'YYYY')),100);
nStartweek := bcp_f_bcp4deel.bepaal_startweek(nSector, nFreqWeken, nVerzamel, nJaar);
INSERT INTO bcp_taak(bcp_verzamel_key,
bcp_alg_gebouw_key,
bcp_taak_uren,
bcp_taak_materiaal,
bcp_taak_eersteweek,
bcp_taak_aantal,
bcp_ins_deel_aantal)
VALUES(nVerzamel,
nGebouw,
nUren * :new.ins_deel_aantal,
nMateriaal * :new.ins_deel_aantal,
nStartweek,
:new.ins_deel_aantal,
1);
SELECT bcp_taak_key
INTO nTaak
FROM bcp_v_aanwezigtaak
WHERE bcp_verzamel_key = nVerzamel
AND bcp_alg_gebouw_key = nGebouw;
nStatus := bcp_f_bcp4deel.bepaalstatusopdrkey('BCP_STATUSOPDR_INGEPLAND');
nWeek := to_number(to_char(SYSDATE, 'YY') || to_char(SYSDATE,'WW'));
nOthing := bcp_f_bcp4deel.bcp_jaarweek2jaarwerkweek(nWeek, nWerkweek);
nOthing := bcp_f_bcp4deel.bcp_jaarweek2jaarwerkweek(nStartweek, nStartwerkweek);
INSERT INTO bcp_prevopdr(bcp_taak_key,
bcp_mld_statusopdr_key,
bcp_prevopdr_ingepland,
bcp_prevopdr_ingepland2)
VALUES(nTaak,
nStatus,
nStartweek,
nStartwerkweek);
ELSE /* Taak gevonden, bij elke gevonden verzamelopdracht
is er precies eentje, dus uniek */
SELECT bcp_taak_aantal, bcp_ins_deel_aantal,
bcp_taak_uren, bcp_taak_materiaal
INTO teller, teller2, nUren, nMateriaal
FROM bcp_v_aanwezigtaak A
WHERE A.bcp_taak_key = nTaak;
nFactor := (teller + :new.ins_deel_aantal)/teller;
IF (nUren * nFactor > 999.99) THEN
APPLICATION_ERROR(-20000,'bcp_m044');
END IF;
IF (nMateriaal * nFactor > 999999.99) THEN
APPLICATION_ERROR(-20000,'bcp_m045');
END IF;
UPDATE bcp_taak
SET bcp_taak_uren = bcp_taak_uren * nFactor,
bcp_taak_materiaal = bcp_taak_materiaal * NFactor,
bcp_taak_aantal = teller2 + :new.ins_deel_aantal,
bcp_ins_deel_aantal = teller + 1
WHERE bcp_taak_key = nTaak;
END IF;
END LOOP;
CLOSE c2;
END IF;
ELSE /* taken niet veranderd, alleen uren & materiaal even updaten */
OPEN c1(nOudGebouw, :old.ins_srtdeel_key);
LOOP
FETCH c1 INTO Rec;
EXIT WHEN c1%NOTFOUND;
nTaak := Rec.bcp_taak_key;
SELECT bcp_taak_uren, bcp_taak_materiaal, bcp_taak_aantal
INTO nUren, nMateriaal, teller
FROM bcp_v_aanwezigtaak
WHERE bcp_taak_key = nTaak;
/* factor is (totaal-oud+nieuw)/totaal */
nFactor := (teller + :new.ins_deel_aantal - :old.ins_deel_aantal)/teller;
IF (nUren * nFactor > 999.99) THEN
APPLICATION_ERROR(-20000,'bcp_m044');
END IF;
IF (nMateriaal * nFactor > 999999.99) THEN
APPLICATION_ERROR(-20000,'bcp_m045');
END IF;
UPDATE bcp_taak
SET bcp_taak_uren = bcp_taak_uren * nFactor,
bcp_taak_materiaal = bcp_taak_materiaal * NFactor,
bcp_taak_aantal = teller + :new.ins_deel_aantal - :old.ins_deel_aantal
WHERE bcp_taak_key = nTaak;
END LOOP; /* taken voor update */
CLOSE c1;
END IF; /* einde: taken_veranderd */
END;
END IF;
#endif
LOG('Eind INS_T_INS_DEEL_B_IU');
END;
/
#endif
#if MLD
REM ORA-.... LET OP: MLD_KOSTENPOST is gewijzigd.
REM ERROR Het is nu ALG_KOSTENPOST. Verplaatst de records van
REM MLD_KOSTENPOST naar ALG_KOSTENPOST.
#endif
SPOOL OFF