Files
Customer/CONN/Once/conn460to461.sql
Maykel Geerdink 39f963b4c5 CONN#747
svn path=/Customer/trunk/; revision=13042
2006-09-19 08:43:48 +00:00

660 lines
24 KiB
MySQL

SPOOL xconn460to461.lst
-- CONN#583
-- conversie van flexkenmerken van opdrachten naar facturen
-- Vervallen van oude flexkenmerken
-- IN CONN>SQL opnemen: importtabel Basware
-- CONN#668
-- Gebruik van fip_error tabel voor logging
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,';
DROP TABLE fip_error;
CREATE TABLE fip_error
(
recno NUMBER(10)
,rec_table VARCHAR2(32)
,descript VARCHAR2(1024)
,fip_errmes_date DATE
,fip_errmes VARCHAR2(1000)
,fip_key NUMBER(10)
);
DROP SEQUENCE fip_s_fip_fip_error_key;
CREATE SEQUENCE fip_s_fip_fip_error_key MINVALUE 1;
CREATE OR REPLACE TRIGGER fip_t_fip_error_B_IU
BEFORE INSERT OR UPDATE ON fip_error
FOR EACH ROW
DECLARE lDate DATE; lNumber NUMBER;
BEGIN
:new.fip_errmes_date := SYSDATE;
IF :NEW.fip_key IS NULL THEN
SELECT fip_s_fip_fip_error_key.NEXTVAL
INTO :NEW.fip_key
FROM DUAL;
END IF;
END;
/
-- Kostenplaats aanmaken.
-- Aanmaak van de standaard VG kostenplaats
INSERT INTO prs_kostenplaats
(prs_kostenplaats_nr, prs_kostenplaats_upper, prs_kostenplaats_omschrijving, prs_kostenplaats_module
)
VALUES ('VG-KPN', 'VG-KPN', 'Vastgoed', 'PRS'
);
-- Aanmaak van de standaard FB kostenplaats indien kenmerk "doorbelasten aan" is NEE
INSERT INTO prs_kostenplaats
(prs_kostenplaats_nr, prs_kostenplaats_upper, prs_kostenplaats_omschrijving, prs_kostenplaats_module
)
VALUES ('FB-KPN', 'FB-KPN', 'Faciliteer bedrijf', 'PRS'
);
COMMIT;
DECLARE
mld_key NUMBER;
kp_key NUMBER;
-- kenmerk keys
kkey_sumfac NUMBER;
-- kostenplaats keys
vg_kostenplaats NUMBER;
fb_kostenplaats NUMBER;
eigenaar_kp NUMBER;
old_mldopdr_key NUMBER;
new_mldopdr_key NUMBER;
kostensoort_key NUMBER;
-- query met eigen aangemaakte kostenplaatsen (fac_usrtab/fac_usrdata)
-- fac_usrtab_key 30 (Kostensoort FB) en 31 (Kostensoort VG)
CURSOR query_kostensoort IS
SELECT fud.fac_usrdata_code qk_code,
fud.fac_usrdata_omschr qk_omschr
FROM fac_usrdata fud
WHERE fud.fac_usrtab_key IN (30,31)
ORDER BY fud.fac_usrdata_code;
-- Voor elke mld_opdr het kenmerk "Totaal bedrag factuur" overzetten (ckkey_sumfac wordt 128)
CURSOR waarde_cursor (ckkey_sumfac IN NUMBER)
IS
SELECT o.mld_opdr_key cmldopdr_key,
(SELECT v.mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr v, mld_kenmerk vk
WHERE v.mld_opdr_key = o.mld_opdr_key
AND vk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND v.mld_kenmerk_key = vk.mld_kenmerk_key
AND vk.mld_typeopdr_key = s.mld_typeopdr_key) ckenmerkwaarde
FROM mld_opdr o,
mld_srtkenmerk t,
mld_kenmerk k,
mld_typeopdr s,
mld_refsrtkenmerk r
WHERE s.mld_typeopdr_key = 5
AND (k.mld_typeopdr_key = s.mld_typeopdr_key AND k.mld_kenmerk_niveau = 'O')
AND k.mld_kenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key = t.mld_srtkenmerk_key
AND t.mld_srtkenmerk_verwijder IS NULL
AND t.mld_refsrtkenmerk_key = r.mld_refsrtkenmerk_key(+)
AND (k.mld_kenmerk_volgnummer >= 900)
AND k.mld_kenmerk_key = ckkey_sumfac
AND o.mld_typeopdr_key = s.mld_typeopdr_key
AND (SELECT v.mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr v, mld_kenmerk vk
WHERE v.mld_opdr_key = o.mld_opdr_key
AND vk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND v.mld_kenmerk_key = vk.mld_kenmerk_key
AND vk.mld_typeopdr_key = s.mld_typeopdr_key) IS NOT NULL
--AND o.mld_opdr_key = 13009 --21
ORDER BY o.mld_opdr_key;
next_record waarde_cursor%ROWTYPE;
-- query met eigenaar vaste kostenplaatsen
-- alle FB eerst op standaard zetten daarna overruled volgende query wel de kostenplaats.
-- juiste query kost te veel tijd (meer als een uur)
CURSOR query_eigenaar_vk IS
-- Eigenaar is VG wordt VG-KPN
SELECT o.mld_opdr_key qevk_mldopdr_key,
(SELECT fud.fac_usrdata_omschr
FROM fac_usrtab fut,
fac_usrdata fud,
mld_kenmerkopdr v,
mld_kenmerk vk
WHERE fut.fac_usrtab_key = fud.fac_usrtab_key
AND fut.fac_usrtab_key = 68 --r.fac_usrtab_key
AND fud.fac_usrdata_key = fac.safe_to_number (v.mld_kenmerkopdr_waarde)
AND v.mld_opdr_key = o.mld_opdr_key
AND vk.mld_srtkenmerk_key = 79 --k.mld_srtkenmerk_key
AND v.mld_kenmerk_key = vk.mld_kenmerk_key
AND vk.mld_typeopdr_key = s.mld_typeopdr_key) qevk_fud_omschr
FROM mld_opdr o,
mld_srtkenmerk t,
mld_typeopdr s,
mld_kenmerk k,
mld_kenmerkopdr v
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key = t.mld_srtkenmerk_key
AND t.mld_srtkenmerk_verwijder IS NULL
AND (k.mld_kenmerk_volgnummer <= 100 OR k.mld_kenmerk_volgnummer >= 900)
AND t.mld_srtkenmerk_key = 79
AND s.mld_typeopdr_key = 5
AND (k.mld_typeopdr_key = s.mld_typeopdr_key AND k.mld_kenmerk_niveau = 'O'
)
--AND o.mld_opdr_key = 3832
AND k.mld_kenmerk_key = v.mld_kenmerk_key
AND o.mld_opdr_key = v.mld_opdr_key
AND (SELECT fud.fac_usrdata_omschr
FROM fac_usrtab fut,
fac_usrdata fud,
mld_kenmerkopdr v,
mld_kenmerk vk
WHERE fut.fac_usrtab_key = fud.fac_usrtab_key
AND fut.fac_usrtab_key = 68 --r.fac_usrtab_key
AND fud.fac_usrdata_key =
fac.safe_to_number (v.mld_kenmerkopdr_waarde)
AND v.mld_opdr_key = o.mld_opdr_key
AND vk.mld_srtkenmerk_key = 79 --k.mld_srtkenmerk_key
AND v.mld_kenmerk_key = vk.mld_kenmerk_key
AND vk.mld_typeopdr_key = s.mld_typeopdr_key) LIKE 'VG'
UNION
-- Eigenaar is FB zonder doorbelasting aan wordt FB-KPN
SELECT o.mld_opdr_key qehk_mldopdr_key,
(SELECT fud.fac_usrdata_omschr
FROM fac_usrtab fut,
fac_usrdata fud,
mld_kenmerkopdr v,
mld_kenmerk vk
WHERE fut.fac_usrtab_key = fud.fac_usrtab_key
AND fut.fac_usrtab_key = 68 --r.fac_usrtab_key
AND fud.fac_usrdata_key = fac.safe_to_number (v.mld_kenmerkopdr_waarde)
AND v.mld_opdr_key = o.mld_opdr_key
AND vk.mld_srtkenmerk_key = 79 --k.mld_srtkenmerk_key
AND v.mld_kenmerk_key = vk.mld_kenmerk_key
AND vk.mld_typeopdr_key = s.mld_typeopdr_key) kenmerkwaarderef
FROM mld_opdr o,
mld_srtkenmerk t,
mld_typeopdr s,
mld_kenmerk k,
mld_kenmerkopdr v
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key = t.mld_srtkenmerk_key
AND t.mld_srtkenmerk_verwijder IS NULL
AND (k.mld_kenmerk_volgnummer <= 100 OR k.mld_kenmerk_volgnummer >= 900)
AND t.mld_srtkenmerk_key = 79
AND s.mld_typeopdr_key = 5
AND (k.mld_typeopdr_key = s.mld_typeopdr_key AND k.mld_kenmerk_niveau = 'O')
AND k.mld_kenmerk_key = v.mld_kenmerk_key
AND o.mld_opdr_key = v.mld_opdr_key
AND (SELECT fud.fac_usrdata_omschr
FROM fac_usrtab fut,
fac_usrdata fud,
mld_kenmerkopdr v,
mld_kenmerk vk
WHERE fut.fac_usrtab_key = fud.fac_usrtab_key
AND fut.fac_usrtab_key = 68 --r.fac_usrtab_key
AND fud.fac_usrdata_key = fac.safe_to_number (v.mld_kenmerkopdr_waarde)
AND v.mld_opdr_key = o.mld_opdr_key
AND vk.mld_srtkenmerk_key = 79 --k.mld_srtkenmerk_key
AND v.mld_kenmerk_key = vk.mld_kenmerk_key
AND vk.mld_typeopdr_key = s.mld_typeopdr_key) LIKE 'FB'
-- Door volgende AND duurd de query zeer lang, daarom dit deel weggelaten
-- Door volgende query wordt de te veel aangepaste opdrachten wel geoverruled
/* AND (SELECT v.mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr v,
mld_kenmerk vk
--conn_v_locatiehuurder lh
WHERE v.mld_opdr_key = o.mld_opdr_key
AND vk.mld_srtkenmerk_key = 12 --k.mld_srtkenmerk_key
AND v.mld_kenmerk_key = vk.mld_kenmerk_key
--query duurt zeer lang als je de volgende regel toevoegd
--AND TO_CHAR(lh.huurder_key) = v.mld_kenmerkopdr_waarde
) IS NULL*/
ORDER BY 1;
-- query met eigenaar opgezochte huurders kostenplaatsen
-- Let op met dubbele waarden. Dezelfde conn_v_locatiehuurder.huurder_key
CURSOR query_eigenaar_hk IS
SELECT o.mld_opdr_key qehk_mldopdr_key,
-- NIET NODIG: t.mld_srtkenmerk_omschrijving qehk_srtkenmerk_omschr,
-- NIET NODIG: lh.huurder qehk_huurder,
b.prs_bedrijf_key qehk_prsbedrijf_key,
(SELECT fud.fac_usrdata_omschr
FROM fac_usrtab fut,
fac_usrdata fud,
mld_kenmerkopdr v,
mld_kenmerk vk
WHERE fut.fac_usrtab_key = fud.fac_usrtab_key
AND fut.fac_usrtab_key = 68 --r.fac_usrtab_key
AND fud.fac_usrdata_key = FAC.SAFE_TO_NUMBER(v.mld_kenmerkopdr_waarde)
AND v.mld_opdr_key = o.mld_opdr_key
AND vk.mld_srtkenmerk_key = 79 --k.mld_srtkenmerk_key
AND v.mld_kenmerk_key = vk.mld_kenmerk_key
AND vk.mld_typeopdr_key = s.mld_typeopdr_key) kenmerkwaardeRef
FROM mld_opdr o,
mld_srtkenmerk t,
mld_kenmerk k,
mld_typeopdr s,
mld_refsrtkenmerk r,
mld_kenmerkopdr v,
conn_v_locatiehuurder lh,
prs_bedrijf b
WHERE s.mld_typeopdr_key = 5
AND (k.mld_typeopdr_key = s.mld_typeopdr_key AND k.mld_kenmerk_niveau = 'O')
AND k.mld_kenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key = t.mld_srtkenmerk_key
AND t.mld_srtkenmerk_verwijder IS NULL
AND t.mld_refsrtkenmerk_key = r.mld_refsrtkenmerk_key(+)
AND (k.mld_kenmerk_volgnummer <= 100 OR k.mld_kenmerk_volgnummer >= 900)
AND o.mld_typeopdr_key = s.mld_typeopdr_key
AND k.mld_kenmerk_key = 112
--AND o.mld_opdr_key = 3832
AND k.mld_kenmerk_key = v.mld_kenmerk_key
AND o.mld_opdr_key = v.mld_opdr_key
AND lh.huurder_key = FAC.SAFE_TO_NUMBER(v.mld_kenmerkopdr_waarde)
AND lh.huurder = b.prs_bedrijf_naam
AND b.prs_bedrijf_verwijder IS NULL
AND (SELECT fud.fac_usrdata_omschr
FROM fac_usrtab fut,
fac_usrdata fud,
mld_kenmerkopdr v,
mld_kenmerk vk
WHERE fut.fac_usrtab_key = fud.fac_usrtab_key
AND fut.fac_usrtab_key = 68 --r.fac_usrtab_key
AND fud.fac_usrdata_key = FAC.SAFE_TO_NUMBER(v.mld_kenmerkopdr_waarde)
AND v.mld_opdr_key = o.mld_opdr_key
AND vk.mld_srtkenmerk_key = 79 --k.mld_srtkenmerk_key
AND v.mld_kenmerk_key = vk.mld_kenmerk_key
AND vk.mld_typeopdr_key = s.mld_typeopdr_key) LIKE 'FB'
--AND o.mld_opdr_key = 3780
ORDER BY o.mld_opdr_key, huurder DESC;
-- Voor de huurders (prs_bedrijf_huurder = 1) worden kostenplaatsen aangemaakt
CURSOR query_bedrijf IS
SELECT b.prs_bedrijf_key qb_key,
b.prs_bedrijf_naam qb_naam,
b.prs_leverancier_nr qb_nr,
UPPER(b.prs_leverancier_nr) qb_naamupper
FROM prs_bedrijf b
WHERE b.prs_bedrijf_huurder = 1
--AND b.prs_bedrijf_key = 13244
AND b.prs_bedrijf_verwijder IS NULL
AND b.prs_leverancier_nr IS NOT NULL
ORDER BY 1;
-- Lijst met contracten waarbij "Totaal Bedrag" een waarde heeft (kenmerk_key = 26)
CURSOR query_contract IS
SELECT v.cnt_contract_key cnt_key,
v.cnt_kenmerkcontract_waarde waarde,
k.cnt_srtkenmerk_key,
v.cnt_kenmerk_key
FROM cnt_kenmerkcontract v,
cnt_contract c,
cnt_kenmerk k,
cnt_srtcontract sc
WHERE c.cnt_contract_key = v.cnt_contract_key
AND v.cnt_kenmerk_key = k.cnt_kenmerk_key
AND c.cnt_srtcontract_key = sc.cnt_srtcontract_key
AND sc.cnt_srtcontract_key = k.cnt_srtcontract_key
AND k.cnt_srtkenmerk_key = 24
AND v.cnt_kenmerkcontract_verwijder IS NULL
AND c.cnt_contract_verwijder IS NULL
ORDER BY 1;
BEGIN
-- De query "query_kostensoort" bevat prs_kostensoortcode en prs_kostensoortsomschrijving
-- In de table prs_kostensoort moet voor de prs_kostensoort_oms de kostensoortcode
-- worden ingevuld en voor de prs_kostensoort_opmerking de kostensoortomschrijving
FOR kostensoort_rec IN query_kostensoort LOOP
-- check of kostensoort al bestaat. Anders toevoegen.
BEGIN
SELECT -1
INTO kostensoort_key
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_oms = kostensoort_rec.qk_code;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO prs_kostensoort (prs_kostensoort_oms,
prs_kostensoort_opmerking)
VALUES (kostensoort_rec.qk_code,
kostensoort_rec.qk_omschr);
COMMIT;
END;
END LOOP;
-- Eerst de kenmerk key bepalen van het kenmerk "Totaal bedrag factuur" (zou 128 moeten zijn)
-- Totaal bedrag factuur
BEGIN
SELECT k.mld_kenmerk_key
INTO kkey_sumfac
FROM mld_kenmerk k,
mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_typeopdr_key = 5
AND sk.mld_srtkenmerk_omschrijving LIKE 'Totaal bedrag factuur';
EXCEPTION
WHEN NO_DATA_FOUND THEN raise_application_error(-20000,'Totaal bedrag factuur not present, first define all property types');
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000,'double values in mld_kenmerk table');
END;
INSERT INTO fip_error (recno,
descript)
VALUES (0,
'--begin update mld_opdr--');
COMMIT;
-- Voor elke mld_opdr het kenmerk "Totaal bedrag factuur" overzetten
FOR next_record IN waarde_cursor(kkey_sumfac) LOOP
INSERT INTO fip_error (recno,
descript)
VALUES (next_record.ckenmerkwaarde,
next_record.cmldopdr_key);
COMMIT;
-- Melding moet geaccepteerd zijn en melding mag niet verwerkt zijn
-- Alleen dan mag UPDATE plaatsvinden.
BEGIN
SELECT -1
INTO mld_key
FROM mld_melding m,
mld_opdr o
WHERE m.mld_melding_key = o.mld_melding_key
AND o.mld_opdr_key = next_record.cmldopdr_key
AND (mld_melding_geaccepteerd IS NULL
OR mld_melding_verwerkt IS NOT NULL);
EXCEPTION
WHEN NO_DATA_FOUND THEN
UPDATE mld_opdr
SET mld_opdr_kosten = next_record.ckenmerkwaarde
WHERE mld_opdr_key = next_record.cmldopdr_key;
COMMIT;
END;
END LOOP;
INSERT INTO fip_error (recno,
descript)
VALUES (0,
'--einde update mld_opdr--');
COMMIT;
BEGIN
SELECT prs_kostenplaats_key
INTO vg_kostenplaats
FROM prs_kostenplaats
WHERE prs_kostenplaats_nr = 'VG-KPN'
AND prs_kostenplaats_upper = 'VG-KPN'
AND prs_kostenplaats_omschrijving = 'Vastgoed'
AND prs_kostenplaats_module = 'PRS';
EXCEPTION
WHEN NO_DATA_FOUND THEN raise_application_error(-20000,'standaard vastgoed kostenplaats niet aangemaakt');
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000,'dubbele waarden voor standaard vastgoed kostenplaats');
END;
BEGIN
SELECT prs_kostenplaats_key
INTO fb_kostenplaats
FROM prs_kostenplaats
WHERE prs_kostenplaats_nr = 'FB-KPN'
AND prs_kostenplaats_upper = 'FB-KPN'
AND prs_kostenplaats_omschrijving = 'Faciliteer bedrijf'
AND prs_kostenplaats_module = 'PRS';
EXCEPTION
WHEN NO_DATA_FOUND THEN raise_application_error(-20000,'standaard faciliteer bedrijf niet aangemaakt');
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000,'dubbele waarden voor standaard faciliteer bedrijf kostenplaats');
END;
INSERT INTO fip_error (recno,
descript)
VALUES (0,
'--begin insert prs_kostenplaats--');
COMMIT;
-- Voor elke huurder een kostenplaats aanmaken.
FOR bedrijf_rec IN query_bedrijf LOOP
-- Check of de kostenplaats al bestaat
BEGIN
SELECT -1
INTO kp_key
FROM prs_kostenplaats
WHERE prs_kostenplaats_upper = UPPER(bedrijf_rec.qb_nr);
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO fip_error (recno,
descript)
VALUES (bedrijf_rec.qb_key,
bedrijf_rec.qb_naamupper);
COMMIT;
-- prs_kostenplaats_upper wordt automatisch UPPER(prs_kostenplaats_nr) via trigger
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr,
prs_kostenplaats_upper,
prs_kostenplaats_omschrijving,
prs_kostenplaats_module)
VALUES (bedrijf_rec.qb_nr,
bedrijf_rec.qb_naamupper,
bedrijf_rec.qb_naam,
'PRS');
COMMIT;
END;
END LOOP;
INSERT INTO fip_error (recno,
descript)
VALUES (0,
'--einde insert prs_kostenplaats--');
COMMIT;
INSERT INTO fip_error (recno,
descript)
VALUES (0,
'--begin update mld_opdr (prs_kostenplaats_key) voor vaste kostenplaats--');
COMMIT;
-- De query "query_eigenaar_vk" bevat mld_opdr_keys waarbij de eigenaar "VG" is.
-- In de table mld_opdr moet voor de prs_kostenplaats_key de vaste kostenplaats "VG-KPN" worden ingevuld
-- Ook bevat de query de eigenaar "FB" waarvoor "doorbelasten aan" niet is ingevuld en dus niet geldt
-- hiervoor moet dan de vaste kostenplaats "FB-KPN" worden ingevuld.
-- Alle FB eerst op standaard zetten daarna overruled volgende query wel de kostenplaats.
-- Juiste query kost duurt zeer lang en de query lijkt vast te lopen.
FOR eigenaar_vk_rec IN query_eigenaar_vk LOOP
IF eigenaar_vk_rec.qevk_fud_omschr = 'VG' THEN
eigenaar_kp := vg_kostenplaats;
ELSIF eigenaar_vk_rec.qevk_fud_omschr = 'FB' THEN
eigenaar_kp := fb_kostenplaats;
END IF;
-- Melding moet geaccepteerd zijn en melding mag niet verwerkt zijn
-- Alleen dan mag UPDATE plaatsvinden.
BEGIN
SELECT -1
INTO mld_key
FROM mld_melding m,
mld_opdr o
WHERE m.mld_melding_key = o.mld_melding_key
AND o.mld_opdr_key = eigenaar_vk_rec.qevk_mldopdr_key
AND (mld_melding_geaccepteerd IS NULL
OR mld_melding_verwerkt IS NOT NULL);
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO fip_error (recno,
descript)
VALUES (eigenaar_vk_rec.qevk_mldopdr_key,
eigenaar_kp);
COMMIT;
-- Overschrijf desnoods de huidige ingevulde kostenplaats
UPDATE mld_opdr
SET prs_kostenplaats_key = eigenaar_kp
WHERE mld_opdr_key = eigenaar_vk_rec.qevk_mldopdr_key;
COMMIT;
END;
END LOOP;
INSERT INTO fip_error (recno,
descript)
VALUES (0,
'--einde update mld_opdr (prs_kostenplaats_key) voor vaste kostenplaats--');
COMMIT;
INSERT INTO fip_error (recno,
descript)
VALUES (0,
'--begin update mld_opdr (prs_kostenplaats_key) voor opgezochte huurders kostenplaats--');
COMMIT;
INSERT INTO fip_error (recno,
descript)
VALUES (0,
'--prs_bedrijfs_key - prs_kostenplaats_key--');
COMMIT;
-- De query "query_eigenaar_hk" bevat mld_opdr_keys waarbij de eigenaar "FB" is.
-- In de table mld_opdr moet voor de prs_kostenplaats_key de opgezochte huurders kostenplaats
-- worden ingevuld
-- Dubbele waarden komen voor, Deze eruit filteren
old_mldopdr_key := -1;
FOR eigenaar_hk_rec IN query_eigenaar_hk LOOP
new_mldopdr_key := eigenaar_hk_rec.qehk_mldopdr_key;
IF old_mldopdr_key != eigenaar_hk_rec.qehk_mldopdr_key THEN
-- Melding moet geaccepteerd zijn en melding mag niet verwerkt zijn
-- Alleen dan mag UPDATE plaatsvinden.
BEGIN
SELECT -1
INTO mld_key
FROM mld_melding m,
mld_opdr o
WHERE m.mld_melding_key = o.mld_melding_key
AND o.mld_opdr_key = eigenaar_hk_rec.qehk_mldopdr_key
AND (mld_melding_geaccepteerd IS NULL
OR mld_melding_verwerkt IS NOT NULL);
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO fip_error (recno,
descript)
VALUES (eigenaar_hk_rec.qehk_mldopdr_key,
eigenaar_hk_rec.qehk_prsbedrijf_key ||
' - ' ||
(SELECT kp.prs_kostenplaats_key
FROM prs_kostenplaats kp, prs_bedrijf b
WHERE kp.prs_kostenplaats_nr = b.prs_leverancier_nr
AND kp.prs_kostenplaats_upper = UPPER(b.prs_leverancier_nr)
--AND kp.prs_kostenplaats_omschrijving = b.prs_bedrijf_naam -- Kan bestaande zijn met andere omschrijving
AND kp.prs_kostenplaats_module LIKE 'PRS'
AND prs_bedrijf_key = eigenaar_hk_rec.qehk_prsbedrijf_key));
COMMIT;
UPDATE mld_opdr
SET prs_kostenplaats_key = (SELECT kp.prs_kostenplaats_key
FROM prs_kostenplaats kp, prs_bedrijf b
WHERE kp.prs_kostenplaats_nr = b.prs_leverancier_nr
AND kp.prs_kostenplaats_upper = UPPER(b.prs_leverancier_nr)
--AND kp.prs_kostenplaats_omschrijving = b.prs_bedrijf_naam -- Kan bestaande zijn met andere omschrijving
AND kp.prs_kostenplaats_module LIKE 'PRS'
AND prs_bedrijf_key = eigenaar_hk_rec.qehk_prsbedrijf_key)
WHERE mld_opdr_key = eigenaar_hk_rec.qehk_mldopdr_key;
COMMIT;
END;
END IF;
old_mldopdr_key := eigenaar_hk_rec.qehk_mldopdr_key;
END LOOP;
INSERT INTO fip_error (recno,
descript)
VALUES (0,
'--einde update mld_opdr (prs_kostenplaats_key) voor opgezochte huurders kostenplaats--');
COMMIT;
INSERT INTO fip_error (recno,
descript)
VALUES (0,
'--begin conversie totaal bedrag naar contractbedrag--');
COMMIT;
FOR contract_rec IN query_contract LOOP
-- Zet de waarde Totaal bedrag in contractbedrag
BEGIN
UPDATE cnt_contract
SET cnt_contract_kosten = fac.safe_to_number(contract_rec.waarde)
WHERE cnt_contract_key = contract_rec.cnt_key;
COMMIT;
END;
INSERT INTO fip_error (recno,
descript)
VALUES (contract_rec.cnt_key,
contract_rec.waarde);
COMMIT;
END LOOP;
INSERT INTO fip_error (recno,
descript)
VALUES (0,
'--einde conversie totaal bedrag naar contractbedrag--');
COMMIT;
END;
/
DROP VIEW CONN_V_EXPORT_OPDRACHT;
DROP view CONN_V_EXPORT_OPDRACHT_IB_;
DROP view CONN_V_EXPORT_OPDRACHT_IB;
-- Tabel voor de import van facturen (van leverancier of basware)
CREATE TABLE CONN_IMP_FACTUUR
(
ORDERNR VARCHAR2(13 BYTE),
LEVERANCIERNR VARCHAR2(10 BYTE),
FACTUURNR VARCHAR2(10 BYTE),
FACTUURDATUM VARCHAR2(8 BYTE),
AANTAL VARCHAR2(10 BYTE),
KOSTPRIJS VARCHAR2(11 BYTE),
BTW VARCHAR2(2 BYTE),
DEBITEURNR VARCHAR2(30 BYTE)
);
CREATE INDEX CONN_I_IMP_FACTUUR1 ON CONN_IMP_FACTUUR(ORDERNR);
PROMPT Nu volgt de (her)definitie van de klantspecifieke zaken.
SPOOL OFF
@conn.sql