Files
Customer/CONN/Once/conn#459.sql
2005-05-23 08:45:22 +00:00

498 lines
12 KiB
MySQL

ALTER TABLE prs_kenmerk DROP CONSTRAINT prs_c_prs_kenmerk_niveau2;
ALTER TABLE PRS_KENMERK ADD (
CONSTRAINT PRS_C_PRS_KENMERK_NIVEAU2 CHECK (prs_kenmerk_niveau IN ('P','A', 'B')));
CREATE OR REPLACE TRIGGER prs_t_prs_kenmerkLink_b_iu
BEFORE INSERT OR UPDATE ON prs_kenmerkLink
FOR EACH ROW
BEGIN
BEGIN IF :new.prs_kenmerkLink_aanmaak IS NULL THEN :new.prs_kenmerkLink_aanmaak := SYSDATE; END IF; END;
IF (:new.prs_kenmerkLink_waarde <> :old.prs_kenmerkLink_waarde
OR :old.prs_kenmerkLink_waarde IS NULL
OR :new.prs_kenmerkLink_waarde IS NULL)
AND :new.prs_link_key IS NOT NULL
THEN
DECLARE
KenmerkOmschr prs_kenmerk.prs_kenmerk_omschrijving%TYPE;
KenmerkType prs_kenmerk.prs_kenmerk_kenmerktype%TYPE;
KenmerkLengte prs_kenmerk.prs_kenmerk_lengte%TYPE;
KenmerkDec prs_kenmerk.prs_kenmerk_dec%TYPE;
KenmerkNMin prs_kenmerk.prs_kenmerk_nmin%TYPE;
KenmerkNMax prs_kenmerk.prs_kenmerk_nmax%TYPE;
RefKenmerkKey NUMBER(10);
NumberWaarde NUMBER(15,5);
FormatMask VARCHAR2(60);
KenmerkWaarde prs_kenmerklink.prs_kenmerklink_waarde%TYPE;
BEGIN
KenmerkWaarde := :new.prs_kenmerkLink_waarde;
BEGIN
DECLARE
dummy VARCHAR2(1);
BEGIN
IF :new.prs_kenmerkLink_niveau = 'P'
THEN
SELECT 'X'
INTO dummy
FROM prs_perslid
WHERE prs_perslid_key = :new.prs_link_key;
ELSIF :new.prs_kenmerkLink_niveau = 'A'
THEN
SELECT 'X'
INTO dummy
FROM prs_afdeling
WHERE prs_afdeling_key = :new.prs_link_key;
ELSIF :new.prs_kenmerkLink_niveau = 'B'
THEN
SELECT 'X'
INTO dummy
FROM prs_bedrijf
WHERE prs_bedrijf_key = :new.prs_link_key;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN raise_application_error(-20000, 'ALG_M015');
END;
SELECT prs_kenmerk_omschrijving
, prs_kenmerk_kenmerktype
, prs_kenmerk_lengte
, prs_kenmerk_dec
, prs_kenmerk_nmin
, prs_kenmerk_nmax
, prs_refkenmerk_key
INTO KenmerkOmschr
,KenmerkType
,KenmerkLengte
,KenmerkDec
,KenmerkNMin
,KenmerkNMax
,RefKenmerkKey
FROM prs_kenmerk
WHERE prs_kenmerk_key = :new.prs_kenmerk_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN raise_application_error(-20000, 'INS_R_INS_KENMERK_KEY1');
END;
IF KenmerkType = 'C'
THEN
IF LENGTH(KenmerkWaarde) > KenmerkLengte
THEN
raise_application_error(-20004, 'ALG_M232,' || KenmerkOmschr || ',' || TO_CHAR(KenmerkLengte));
END IF;
ELSIF KenmerkType = 'N'
THEN
IF KenmerkDec IS NULL OR KenmerkDec = 0
THEN
FormatMask := RPAD('9', KenmerkLengte, '9');
ELSE
FormatMask := RPAD('9', KenmerkLengte - KenmerkDec, '9')
|| 'D' || RPAD('9', KenmerkDec, '9');
END IF;
BEGIN
NumberWaarde := TO_NUMBER(KenmerkWaarde);
EXCEPTION
WHEN OTHERS
THEN FormatMask := REPLACE(FormatMask, '9', '#');
FormatMask := REPLACE(FormatMask, '0', '#');
FormatMask := REPLACE(FormatMask, 'D', '.');
raise_application_error(-20004, 'ALG_M233,' || KenmerkOmschr || ',' || FormatMask);
END;
IF ( (KenmerkNMin IS NOT NULL AND NumberWaarde < KenmerkNMin)
OR (KenmerkNMax IS NOT NULL AND NumberWaarde > KenmerkNMax))
THEN
raise_application_error(-20004, 'ALG_M234,' || KenmerkOmschr || ',' || TO_CHAR(KenmerkNMin) || ',' || TO_CHAR(KenmerkNMax));
ELSE
KenmerkWaarde := LTRIM(TO_CHAR(NumberWaarde, FormatMask));
IF INSTR(KenmerkWaarde, '#') <> 0
THEN
FormatMask := REPLACE(FormatMask, '9', '#');
FormatMask := REPLACE(FormatMask, '0', '#');
FormatMask := REPLACE(FormatMask, 'D', '.');
raise_application_error(-20004, 'ALG_M233,' || KenmerkOmschr || ',' || FormatMask);
END IF;
END IF;
:new.prs_kenmerkLink_waarde := KenmerkWaarde;
ELSIF KenmerkType = 'D'
THEN
KenmerkWaarde := TO_CHAR(TO_DATE(KenmerkWaarde,'DD-MM-YY'),'DD-MM-YYYY');
:new.prs_kenmerkLink_waarde := KenmerkWaarde;
END IF;
END;
IF :new.prs_kenmerkLink_key IS NULL
THEN
SELECT prs_s_prs_kenmerkLink_key.nextval
INTO :new.prs_kenmerkLink_key
FROM DUAL;
END IF;
END IF;
END;
/
commit;
insert into prs_kenmerk
(prs_kenmerk_key
,prs_kenmerk_niveau
,prs_kenmerk_volgnr
,prs_kenmerk_omschrijving
,prs_kenmerk_kenmerktype
,prs_kenmerk_lengte)
values
(1010
,'B'
,122
,'Huurdernummer'
,'C'
,20);
insert into prs_kenmerk
(prs_kenmerk_key
,prs_kenmerk_niveau
,prs_kenmerk_volgnr
,prs_kenmerk_omschrijving
,prs_kenmerk_kenmerktype
,prs_kenmerk_lengte)
values
(1011
,'B'
,120
,'Budgetcode'
,'C'
,20);
insert into prs_kenmerk
(prs_kenmerk_key
,prs_kenmerk_niveau
,prs_kenmerk_volgnr
,prs_kenmerk_omschrijving
,prs_kenmerk_kenmerktype
,prs_kenmerk_lengte)
values
(1012
,'B'
,121
,'Officiele bedrijfsnaam'
,'C'
,60);
insert into prs_kenmerk
(prs_kenmerk_key
,prs_kenmerk_niveau
,prs_kenmerk_volgnr
,prs_kenmerk_omschrijving
,prs_kenmerk_kenmerktype
,prs_kenmerk_lengte)
values
(1013
,'A'
,130
,'Debiteurnaam'
,'C'
,30);
insert into prs_kenmerk
(prs_kenmerk_key
,prs_kenmerk_niveau
,prs_kenmerk_volgnr
,prs_kenmerk_omschrijving
,prs_kenmerk_kenmerktype
,prs_kenmerk_lengte)
values
(1015
,'B'
,130
,'Debiteurnaam'
,'C'
,30);
insert into prs_kenmerk
(prs_kenmerk_key
,prs_kenmerk_niveau
,prs_kenmerk_volgnr
,prs_kenmerk_omschrijving
,prs_kenmerk_kenmerktype
,prs_kenmerk_lengte)
values
(1014
,'A'
,131
,'Factuur aan'
,'C'
,30);
insert into fac_usrtab
(fac_usrtab_key
,fac_usrtab_naam
,fac_usrtab_object
,fac_usrtab_omschrijving
,fac_usrtab_view)
values
(210
,'Divisie'
,'USR_DIVISIE'
,'Divisie'
,'T');
insert into fac_usrdata
(fac_usrtab_key
,fac_usrdata_code
,fac_usrdata_omschr
,fac_usrdata_volgnr)
values
(210
,'Derden'
,'Derden'
,990);
insert into fac_usrdata
(fac_usrtab_key
,fac_usrdata_code
,fac_usrdata_omschr
,fac_usrdata_volgnr)
values
(210
,'Leegstand'
,'Leegstand'
,990);
insert into fac_usrdata
(fac_usrtab_key
,fac_usrdata_code
,fac_usrdata_omschr
,fac_usrdata_volgnr)
values
(210
,'Vastgoed'
,'Vastgoed'
,990);
insert into prs_kenmerk
(prs_kenmerk_key
,prs_kenmerk_niveau
,prs_kenmerk_volgnr
,prs_kenmerk_omschrijving
,prs_kenmerk_kenmerktype
,prs_kenmerk_lengte)
values
(1014
,'B'
,123
,'Factureren aan'
,'C'
,20);
commit;
create or replace view conn_v_tmp_huurder as
select huurdernr, huurder
from CONN_IMPORT_ETABEL
where huurdernr is not null
and huurder is not null
group by huurdernr, huurder;
/
/*
Controle (330, met dubbele prs_bedrijf_key, niet zo handig dus):
select count(*)
from CONN_IMPORT_ETABEL e, prs_bedrijf b
where e.budgetcode || '/' || e.huurdernr = b.prs_leverancier_nr
group by prs_bedrijf_key;
View conn_v_tmp_huurder_b resulteerd in 362 records
Tevens (geen dubellen):
select prs_bedrijf_key from conn_v_tmp_huurder_b group by prs_bedrijf_key
having count(prs_bedrijf_key) > 1
*/
create or replace view conn_v_tmp_huurder_b as
select prs_bedrijf_key, huurdernr
from conn_v_tmp_huurder h, prs_bedrijf b
where h.huurdernr = substr(substr(NVL(b.PRS_LEVERANCIER_NR,''),instr(NVL(b.PRS_LEVERANCIER_NR,''),'/')),2)
and instr(b.PRS_LEVERANCIER_NR,'/') <> 0
and b.prs_bedrijf_verwijder is null
and b.prs_bedrijf_huurder = '1'
UNION
select prs_bedrijf_key, huurdernr
from conn_v_tmp_huurder h, prs_bedrijf b
where h.huurdernr = b.prs_leverancier_nr
and b.prs_bedrijf_verwijder is null
and b.prs_bedrijf_huurder = '1';
-- insert 'Officiele bedrijfsnaam'
DECLARE
CURSOR c1 IS
select *
from conn_v_tmp_huurder_b
where 1=1;
rec c1%rowtype;
teller number;
cCount number(10);
BEGIN
OPEN c1;
IF c1%ISOPEN THEN
teller := 0;
LOOP
BEGIN
FETCH c1 INTO rec;
EXIT WHEN c1%NOTFOUND;
teller := teller + 1;
insert into prs_kenmerklink
(PRS_LINK_KEY
,PRS_KENMERKLINK_NIVEAU
,PRS_KENMERK_KEY
,PRS_KENMERKLINK_WAARDE)
values
(rec.prs_bedrijf_key
,'B'
,1012
,rec.huurdernr
);
commit;
EXCEPTION WHEN OTHERS THEN
teller := teller - 1;
END;
END LOOP;
END IF;
CLOSE c1;
commit;
END;
/
/*
Controle (267):
select count(*)
from CONN_IMPORT_ETABEL e, prs_afdeling a
where e.budgetcode || '/' || e.huurdernr = a.prs_afdeling_kostenplaats
group by prs_afdeling_key;
View conn_v_tmp_huurder_a resulteerd in 285 records
Tevens (geen dubellen):
select prs_afdeling_key from conn_v_tmp_huurder_a group by prs_afdeling_key
having count(prs_afdeling_key) > 1
*/
create or replace view conn_v_tmp_huurder_a as
select prs_afdeling_key, huurdernr
from conn_v_tmp_huurder h, prs_afdeling a
where h.huurdernr = substr(substr(NVL(a.prs_afdeling_kostenplaats,''),instr(NVL(a.prs_afdeling_kostenplaats,''),'/')),2)
and a.prs_afdeling_verwijder is null
and instr(prs_afdeling_kostenplaats,'/') <> 0
UNION ALL
select prs_afdeling_key, huurdernr
from conn_v_tmp_huurder h, prs_afdeling a
where h.huurdernr = a.prs_afdeling_kostenplaats
and a.prs_afdeling_verwijder is null;
/
-- insert 'Debiteurnaam'
DECLARE
CURSOR c1 IS
select *
from conn_v_tmp_huurder_a
where 1=1;
rec c1%rowtype;
teller number;
cCount number(10);
BEGIN
OPEN c1;
IF c1%ISOPEN THEN
teller := 0;
LOOP
BEGIN
FETCH c1 INTO rec;
EXIT WHEN c1%NOTFOUND;
teller := teller + 1;
insert into prs_kenmerklink
(PRS_LINK_KEY
,PRS_KENMERKLINK_NIVEAU
,PRS_KENMERK_KEY
,PRS_KENMERKLINK_WAARDE)
values
(rec.prs_afdeling_key
,'A'
,1013
,rec.huurdernr
);
commit;
EXCEPTION WHEN OTHERS THEN
teller := teller - 1;
END;
END LOOP;
END IF;
CLOSE c1;
commit;
END;
/
drop view conn_v_tmp_huurder;
drop view conn_v_tmp_huurder_a;
drop view conn_v_tmp_huurder_b;
commit;
/*
create or replace view aaa as
select *
from prs_afdeling
where prs_afdeling_kostenplaats is not null
and prs_afdeling_key not in (select prs_link_key from prs_kenmerklink where PRS_KENMERK_KEY in (1013,1012)
AND PRS_KENMERKLINK_NIVEAU = 'A')
and prs_afdeling_verwijder is null
/
create or replace view bbb as
select *
from prs_bedrijf
where prs_bedrijf_huurder = '1'
and prs_bedrijf_verwijder is null
and prs_bedrijf_key not in (select prs_link_key from prs_kenmerklink where PRS_KENMERK_KEY in (1013,1012)
AND PRS_KENMERKLINK_NIVEAU = 'B');
/
*/