-- Script containing customer specific configuration sql statements for NFIT Nefit Buderus Deventer -- (c) 2010-2006 SG|facilitor bv -- $Revision$ -- $Id$ -- -- Support: +31 53 4800700 set echo on SPOOL xNFIT.LST -- View van opdrachten die inmiddels afgemeld zijn, zodat de berichten uit de statusinformatie verwijderd kunnen worden CREATE OR REPLACE VIEW nfit_v_statusinf_del (webusermesskey, opdracht) AS SELECT DISTINCT wum.web_user_message_key webusermesskey, sd.ins_srtdiscipline_prefix || o.mld_melding_key opdracht FROM mld_opdr o, mld_melding m, mld_stdmelding std, mld_discipline md, ins_srtdiscipline sd, web_user_messages wum WHERE m.mld_melding_key = o.mld_melding_key AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND md.ins_discipline_key = std.mld_ins_discipline_key AND o.mld_statusopdr_key IN (6, 7) -- afgemeld of verwerkt AND wum.prs_perslid_key_receiver = m.prs_perslid_key AND 'Opdracht ' || sd.ins_srtdiscipline_prefix || o.mld_melding_key || ' dient te worden afgemeld.' = wum.web_user_mess_dsc ORDER BY 2; /* Formatted on 20-7-2010 10:31:47 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW nfit_v_iqbs ( bestellingkey, bestelopdrkey, bestelopdrprefix, bestelopdrnummer, crediteurennummer, bedrag, projectnummer, kostensoort, kostenplaats, budget, afdelingscode, status, teexporteren ) AS SELECT b.bes_bestelling_key bestellingkey, bo.bes_bestelopdr_key bestelopdrkey, '11' bestelopdrprefix, '11' || b.bes_bestelling_key bestelopdrnummer, (SELECT b.prs_leverancier_nr FROM prs_bedrijf b WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key) crediteurennummer, TO_CHAR ( SUM( (NVL (boi.bes_bestelopdr_item_aantalontv, 0) - NVL (boi.bes_bestelopdr_item_aantalexp, 0)) * NVL (boi.bes_bestelopdr_item_prijs, 0)), '9999999990.99' ) bedrag, (SELECT kbl.bes_kenmerkbestell_waarde FROM bes_kenmerkbestell kbl, bes_kenmerk bk WHERE kbl.bes_kenmerk_key = bk.bes_kenmerk_key AND bk.bes_srtkenmerk_key = 2 AND kbl.bes_bestelling_key = b.bes_bestelling_key) projectnummer, NVL ( (SELECT ks.prs_kostensoort_oms FROM bes_kenmerkbestell kbl, prs_kostensoort ks, bes_kenmerk bk WHERE kbl.bes_kenmerkbestell_waarde = ks.prs_kostensoort_key AND kbl.bes_kenmerk_key = bk.bes_kenmerk_key AND bk.bes_srtkenmerk_key = 27 AND kbl.bes_bestelling_key = b.bes_bestelling_key), (SELECT prs_kostensoort_oms FROM prs_kostensoort kst WHERE kst.prs_kostensoort_key = itd.prs_kostensoort_key) ) kostensoort, (SELECT k.prs_kostenplaats_nr FROM prs_kostenplaats k WHERE k.prs_kostenplaats_key = b.prs_kostenplaats_key) kostenplaats, (SELECT kbl.bes_kenmerkbestell_waarde FROM bes_kenmerkbestell kbl, bes_kenmerk bk WHERE kbl.bes_kenmerk_key = bk.bes_kenmerk_key AND bk.bes_srtkenmerk_key = 23 AND kbl.bes_bestelling_key = b.bes_bestelling_key) budget, (SELECT a.prs_afdeling_naam FROM prs_afdeling a, prs_perslid p WHERE p.prs_perslid_key = b.prs_perslid_key AND a.prs_afdeling_key = p.prs_afdeling_key) afdelingscode, bo.bes_bestelopdr_status status, (SELECT fud.fac_usrdata_omschr FROM bes_kenmerkbestell kbl, fac_usrdata fud, bes_kenmerk bk WHERE kbl.bes_kenmerkbestell_waarde = fud.fac_usrdata_key AND kbl.bes_kenmerk_key = bk.bes_kenmerk_key AND bk.bes_srtkenmerk_key = 28 AND kbl.bes_bestelling_key = b.bes_bestelling_key) teexporteren FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi, bes_bestelopdr bo, bes_srtdeel isd, bes_srtgroep isg, ins_tab_discipline itd WHERE b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key AND isd.bes_srtdeel_key = bi.bes_srtdeel_key AND itd.ins_discipline_key = isg.ins_discipline_key AND isg.bes_srtgroep_key = isd.bes_srtgroep_key AND bo.bes_bestelopdr_status IN (4, 6) AND (SELECT fud.fac_usrdata_omschr FROM bes_kenmerkbestell kbl, fac_usrdata fud, bes_kenmerk bk WHERE kbl.bes_kenmerkbestell_waarde = fud.fac_usrdata_key AND kbl.bes_kenmerk_key = bk.bes_kenmerk_key AND bk.bes_srtkenmerk_key = 28 AND kbl.bes_bestelling_key = b.bes_bestelling_key) = 'Ja' -- te_exporteren AND (NVL (boi.bes_bestelopdr_item_aantalontv, 0) - NVL (boi.bes_bestelopdr_item_aantalexp, 0)) > 0 AND (SELECT a1.prs_afdeling_key1 FROM bes_bestelling b1, prs_perslid p1, prs_v_afdeling_boom a1 WHERE b1.prs_perslid_key = p1.prs_perslid_key AND p1.prs_afdeling_key = a1.prs_afdeling_key AND b1.bes_bestelling_key = b.bes_bestelling_key) = 3 -- business unit TTNL GROUP BY b.bes_bestelling_key, bo.bes_bestelopdr_key, b.prs_kostenplaats_key, b.prs_perslid_key, bo.bes_bestelopdr_status, bo.prs_bedrijf_key, itd.prs_kostensoort_key UNION SELECT m.mld_melding_key bestellingkey, mo.mld_opdr_key bestelopdrkey, (SELECT sd.ins_srtdiscipline_prefix FROM mld_discipline md, ins_srtdiscipline sd WHERE sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND md.ins_discipline_key = std.mld_ins_discipline_key) bestelopdrprefix, (SELECT sd.ins_srtdiscipline_prefix FROM mld_discipline md, ins_srtdiscipline sd WHERE sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND md.ins_discipline_key = std.mld_ins_discipline_key) || mo.mld_melding_key bestelopdrnummer, (SELECT b.prs_leverancier_nr FROM prs_bedrijf b WHERE b.prs_bedrijf_key = mo.mld_uitvoerende_keys) crediteurennummer, TO_CHAR (mld_opdr_kosten, '9999999990.99') bedrag, (SELECT v.mld_kenmerkopdr_waarde FROM mld_kenmerkopdr v, mld_kenmerk mk WHERE v.mld_kenmerk_key = mk.mld_kenmerk_key AND mk.mld_srtkenmerk_key = 53 AND v.mld_opdr_key = mo.mld_opdr_key) projectnummer, NVL ( (SELECT ks.prs_kostensoort_oms FROM mld_kenmerkopdr v, prs_kostensoort ks, mld_kenmerk mk WHERE v.mld_kenmerkopdr_waarde = ks.prs_kostensoort_key AND v.mld_kenmerk_key = mk.mld_kenmerk_key AND mk.mld_srtkenmerk_key = 29 AND v.mld_opdr_key = mo.mld_opdr_key), NVL ( (SELECT prs_kostensoort_oms FROM prs_kostensoort kst, mld_stdmelding stdm WHERE kst.prs_kostensoort_key = stdm.prs_kostensoort_key AND stdm.mld_stdmelding_key = m.mld_stdmelding_key), (SELECT prs_kostensoort_oms FROM prs_kostensoort kst, ins_tab_discipline di WHERE kst.prs_kostensoort_key = di.prs_kostensoort_key AND di.ins_discipline_key = std.mld_ins_discipline_key) ) ) kostensoort, (SELECT k.prs_kostenplaats_nr FROM prs_kostenplaats k WHERE k.prs_kostenplaats_key = mo.prs_kostenplaats_key) kostenplaats, (SELECT v.mld_kenmerkopdr_waarde FROM mld_kenmerkopdr v, mld_kenmerk mk WHERE v.mld_kenmerk_key = mk.mld_kenmerk_key AND mk.mld_srtkenmerk_key = 52 AND v.mld_opdr_key = mo.mld_opdr_key) budget, (SELECT a.prs_afdeling_naam FROM prs_afdeling a, prs_perslid p WHERE p.prs_perslid_key = m.prs_perslid_key AND a.prs_afdeling_key = p.prs_afdeling_key) afdelingscode, mo.mld_statusopdr_key status, (SELECT fud.fac_usrdata_omschr FROM mld_kenmerkopdr v, fac_usrdata fud, mld_kenmerk mk WHERE v.mld_kenmerkopdr_waarde = fud.fac_usrdata_key AND v.mld_kenmerk_key = mk.mld_kenmerk_key AND mk.mld_srtkenmerk_key = 30 AND v.mld_opdr_key = mo.mld_opdr_key) teexporteren FROM mld_melding m, mld_opdr mo, mld_stdmelding std WHERE mo.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND mo.mld_statusopdr_key IN (6) -- 5 niet voor meldingen AND (SELECT fud.fac_usrdata_omschr FROM mld_kenmerkopdr v, fac_usrdata fud, mld_kenmerk mk WHERE v.mld_kenmerkopdr_waarde = fud.fac_usrdata_key AND v.mld_kenmerk_key = mk.mld_kenmerk_key AND mk.mld_srtkenmerk_key = 30 AND v.mld_opdr_key = mo.mld_opdr_key) = 'Ja' -- te_exporteren AND (SELECT a1.prs_afdeling_key1 FROM mld_melding m1, prs_perslid p1, prs_v_afdeling_boom a1 WHERE fac.gettrackinguserkey ('MLDNEW', m1.mld_melding_key) = p1.prs_perslid_key AND p1.prs_afdeling_key = a1.prs_afdeling_key AND m1.mld_melding_key = m.mld_melding_key) = 3 -- business unit TTNL ORDER BY 3, 1; CREATE OR REPLACE PROCEDURE nfit_select_statusinf_del (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN -- View heeft alles al. geen acties nodig NULL; END; / -- Export voor het verwijderen van berichten uit de statusinformatie, van opdrachten die inmiddels afgemeld zijn CREATE OR REPLACE PROCEDURE nfit_export_statusinf_del ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) AS BEGIN DELETE FROM web_user_messages WHERE web_user_message_key IN (SELECT webusermesskey FROM nfit_v_statusinf_del); END; / CREATE OR REPLACE PROCEDURE nfit_select_iqbs (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN -- View heeft alles al. geen acties nodig NULL; END; / /* Formatted on 20-4-2012 13:00:15 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW nfit_v_export_iqbs ( RESULT, result_order ) AS SELECT bestelopdrnummer || ';' || crediteurennummer || ';' || bedrag || ';' || projectnummer || ';' || kostensoort || ';' || kostenplaats || ';' || budget || ';' || afdelingscode regel, ROWNUM FROM nfit_v_iqbs; /* Formatted on 20-4-2012 13:16:44 (QP5 v5.115.810.9015) */ CREATE OR REPLACE PROCEDURE nfit_export_iqbs (p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2) AS CURSOR exportregels IS SELECT bestellingkey, bestelopdrkey, bestelopdrnummer, bestelopdrnummer || ';' || crediteurennummer || ';' || bedrag || ';' || projectnummer || ';' || kostensoort || ';' || kostenplaats || ';' || budget || ';' || afdelingscode regel, status FROM nfit_v_iqbs; v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); l_cnt NUMBER; BEGIN l_cnt := 0; FOR expregel IN exportregels LOOP BEGIN IF (SUBSTR (expregel.regel, 1, 2) = '11') -- catalogus bestelling THEN -- Aantal te exporteren aanpassen -- Deze moet gelijk worden aan het aantal dat is ontvangen -- TODO, maar hoe? Of is dit gewoon goed zo? UPDATE bes_bestelopdr_item SET bes_bestelopdr_item_aantalexp = bes_bestelopdr_item_aantalontv WHERE bes_bestelopdr_key = expregel.bestelopdrkey; COMMIT; -- Als van een item alles geleverd is dan kan status ook op AV -- Eerst op TV zodat ook bestelaanvragen op TV komen door trigger bes.updatebestelopdrstatus (expregel.bestellingkey, NULL); COMMIT; -- Dit gaat niet automatisch als alle items op AV staan IF (expregel.status = 6) -- status bestelopdr is "Geleverd TV" THEN -- Bestelopdracht AV verklaren als status is 6 (Geleverd TV) bes.setbestelopdrstatus (expregel.bestelopdrkey, 7, NULL); -- Bestelling_items AV verklaren als bestelopdracht AV is -- Bestelling AV verklaren als bestel_items AV is bes.updatebestellingstatus (expregel.bestellingkey, NULL); COMMIT; END IF; ELSIF expregel.status = 6 -- incidentele bestelling meldingen THEN -- Meldingsopdracht AV verklaren als status is 6 (Geleverd TV) mld.setopdrachtstatus (expregel.bestelopdrkey, 7, NULL); COMMIT; END IF; l_cnt := l_cnt + 1; 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 || ')'; fac.writelog (p_applname, 'E', v_errormsg, ''); END; END LOOP; fac.writelog (p_applname, 'I', 'Aantal geschreven records: ' || l_cnt, ''); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', v_errormsg, ''); COMMIT; END; / -- IMPORT NFIT#005 -- View van de import/export logging CREATE OR REPLACE VIEW NFIT_V_IMPLOG AS SELECT COALESCE (ia.fac_import_app_code, l.imp_log_applicatie) fclt_f_applicatie, l.imp_log_datum log_datum, l.imp_log_status fclt_f_status, l.imp_log_omschrijving omschrijving, l.imp_log_hint hint FROM imp_log l, ( SELECT fac_import_app_key, MAX (fac_import_key) fac_import_key FROM fac_import GROUP BY fac_import_app_key) i, fac_import_app ia WHERE l.fac_import_key = i.fac_import_key AND i.fac_import_app_key = ia.fac_import_app_key; -- NFIT#15424 -- View van contracten met financiele details CREATE OR REPLACE VIEW nfit_v_cntlijst_fin (hide_f_cnt_contract_key, contract_nummer, fclt_f_contract_soort, beschrijving, fclt_f_uitvoerder, fclt_f_eigenaar, fclt_f_status, einddatum, financiele_verplichting, fclt_f_termijn, fclt_3d_discipline_key ) AS SELECT c.cnt_contract_key, c.cnt_contract_nummer_intern contract_nummer, d.ins_discipline_omschrijving, c.cnt_contract_omschrijving omschrijving, COALESCE (b.prs_bedrijf_naam, afd2.prs_afdeling_naam) uitvoerder, afd.prs_afdeling_naam eigenaar, CASE cnt.cnt_contract_status (c.cnt_contract_looptijd_van, cnt.cnt_getrappeldatum (c.cnt_contract_key), cnt.cnt_getopzegdatum (c.cnt_contract_key), c.cnt_contract_looptijd_tot) WHEN 0 THEN 'Aankomend' WHEN 1 THEN 'Actueel' WHEN 2 THEN 'Rappel' WHEN 3 THEN 'In opzegtermijn' WHEN 4 THEN 'Verlopen' END status, TO_CHAR (c.cnt_contract_looptijd_tot, 'DD-MM-YYYY') einddatum, fac.safe_to_number ((SELECT kc.cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc, cnt_kenmerk ck WHERE kc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_srtkenmerk_key = 90 AND kc.cnt_contract_key = c.cnt_contract_key)) financiele_verplichting, COALESCE((SELECT fud.fac_usrdata_omschr FROM cnt_kenmerkcontract kc, cnt_kenmerk ck, fac_usrdata fud WHERE kc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND ck.cnt_srtkenmerk_key = 34 AND kc.cnt_contract_key = c.cnt_contract_key AND FAC.SAFE_TO_NUMBER(kc.cnt_kenmerkcontract_waarde) = fud.fac_usrdata_key), ' ') termijn, d.ins_discipline_key fclt_3d_discipline_key FROM prs_v_aanwezigbedrijf b, cnt_v_aanwezigcontract c, prs_v_aanwezigafdeling afd, prs_v_aanwezigafdeling afd2, cnt_v_aanwezigdiscipline d WHERE b.prs_bedrijf_key(+) = c.cnt_prs_bedrijf_key AND c.cnt_prs_afdeling_key = afd2.prs_afdeling_key(+) AND afd.prs_afdeling_key(+) = c.prs_afdeling_key_eig AND c.ins_discipline_key = d.ins_discipline_key; -- Importeren leveranciersgegevens /* Formatted on 20-4-2012 12:02:24 (QP5 v5.115.810.9015) */ CREATE OR REPLACE PROCEDURE nfit_import_baan (p_import_key IN NUMBER) AS v_newline VARCHAR2 (1000); -- Import line v_field VARCHAR2 (100); -- Import field c_fielddelimitor VARCHAR2 (1) := '|'; -- Field seperator v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid BOOLEAN; -- De importvelden v_bedrijfsnaam VARCHAR2 (100); v_post_adres VARCHAR2 (100); v_post_postcode VARCHAR2 (100); v_post_plaats VARCHAR2 (100); v_post_land VARCHAR2 (100); v_telefoon VARCHAR2 (100); v_contactpersoon VARCHAR2 (100); v_leveranciersnummer VARCHAR2 (100); v_bezoek_adres VARCHAR2 (100); v_bezoek_postcode VARCHAR2 (100); v_bezoek_plaats VARCHAR2 (100); v_bezoek_land VARCHAR2 (100); v_fax VARCHAR2 (100); v_branche_code VARCHAR2 (100); v_betalingsconditie VARCHAR2 (100); v_taal VARCHAR2 (100); CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN header_is_valid := TRUE; -- No header present DELETE FROM nfit_imp_baan; COMMIT; FOR rec1 IN c1 LOOP BEGIN v_newline := rec1.fac_imp_file_line; -- Lees alle veldwaarden fac.imp_getfield (v_newline, c_fielddelimitor, v_bedrijfsnaam); fac.imp_getfield (v_newline, c_fielddelimitor, v_post_adres); fac.imp_getfield (v_newline, c_fielddelimitor, v_post_postcode); fac.imp_getfield (v_newline, c_fielddelimitor, v_post_plaats); fac.imp_getfield (v_newline, c_fielddelimitor, v_post_land); fac.imp_getfield (v_newline, c_fielddelimitor, v_telefoon); fac.imp_getfield (v_newline, c_fielddelimitor, v_contactpersoon); fac.imp_getfield (v_newline, c_fielddelimitor, v_leveranciersnummer); fac.imp_getfield (v_newline, c_fielddelimitor, v_bezoek_adres); fac.imp_getfield (v_newline, c_fielddelimitor, v_bezoek_postcode); fac.imp_getfield (v_newline, c_fielddelimitor, v_bezoek_plaats); fac.imp_getfield (v_newline, c_fielddelimitor, v_bezoek_land); fac.imp_getfield (v_newline, c_fielddelimitor, v_fax); fac.imp_getfield (v_newline, c_fielddelimitor, v_branche_code); fac.imp_getfield (v_newline, c_fielddelimitor, v_betalingsconditie); fac.imp_getfield (v_newline, c_fielddelimitor, v_taal); IF (header_is_valid = FALSE) THEN header_is_valid := TRUE; ELSE IF v_leveranciersnummer IS NOT NULL THEN INSERT INTO nfit_imp_baan (bedrijfsnaam, post_adres, post_postcode, post_plaats, post_land, telefoon, contactpersoon, leveranciersnummer, bezoek_adres, bezoek_postcode, bezoek_plaats, bezoek_land, fax, branche_code, betalingsconditie, taal) VALUES (SUBSTR (TRIM (v_bedrijfsnaam), 1, 60), SUBSTR (TRIM (v_post_adres), 1, 35), SUBSTR (TRIM (v_post_postcode), 1, 12), SUBSTR (TRIM (v_post_plaats), 1, 35), SUBSTR (TRIM (v_post_land), 1, 30), SUBSTR (TRIM (v_telefoon), 1, 20), SUBSTR (TRIM (v_contactpersoon), 1, 30), SUBSTR (TRIM (v_leveranciersnummer), 1, 20), SUBSTR (TRIM (v_bezoek_adres), 1, 35), SUBSTR (TRIM (v_bezoek_postcode), 1, 12), SUBSTR (TRIM (v_bezoek_plaats), 1, 30), SUBSTR (TRIM (v_bezoek_land), 1, 30), SUBSTR (TRIM (v_fax), 1, 20), SUBSTR (TRIM (v_branche_code), 1, 30), SUBSTR (TRIM (v_betalingsconditie), 1, 30), SUBSTR (TRIM (v_taal), 1, 30)); END IF; END IF; END; END LOOP; IF (header_is_valid = FALSE) THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!'); END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, ''); COMMIT; END nfit_import_baan; / -- Updaten leveranciersgegevens CREATE OR REPLACE PROCEDURE nfit_update_baan (p_import_key IN NUMBER) AS /* 1. Technische documentatie: FSN#1426.doc (09-10-2006) */ -- Constanten c_maxvariation NUMBER := 20; c_commitbuffer NUMBER := 1000; -- om de zoveel committen v_buffercount NUMBER := 0; CURSOR c_bedr_del IS SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam,b.prs_bedrijf_intern FROM prs_bedrijf b, nfit_imp_baan bn WHERE b.prs_leverancier_nr = bn.leveranciersnummer(+) AND b.prs_bedrijf_naam IS NOT NULL AND bn.bedrijfsnaam IS NULL AND b.prs_bedrijf_leverancier IS NOT NULL AND b.prs_bedrijf_verwijder IS NULL ORDER BY 2, 1; CURSOR c_bedr_upd IS SELECT b.prs_bedrijf_key prs_bedrijf_key, bn.bedrijfsnaam prs_bedrijf_naam, bn.post_postcode prs_bedrijf_post_postcode, bn.post_adres prs_bedrijf_post_adres, bn.post_plaats prs_bedrijf_post_plaats, bn.post_land prs_bedrijf_post_land, bn.telefoon prs_bedrijf_telefoon, bn.contactpersoon prs_bedrijf_contact_persoon, bn.leveranciersnummer prs_leverancier_nr, bn.bezoek_adres prs_bedrijf_bezoek_adres, bn.bezoek_postcode prs_bedrijf_bezoek_postcode, bn.bezoek_plaats prs_bedrijf_bezoek_plaats, bn.bezoek_land prs_bedrijf_bezoek_land, bn.fax prs_bedrijf_fax, bn.branche_code branche_code, bn.betalingsconditie betalingsconditie, bn.taal taal FROM nfit_imp_baan bn, prs_bedrijf b WHERE bn.leveranciersnummer = b.prs_leverancier_nr(+) AND b.prs_bedrijf_verwijder(+) IS NULL --AND bn.leveranciersnummer LIKE 'AC0016' ORDER BY bn.bedrijfsnaam, b.prs_leverancier_nr; v_kenmerk_branche_code_key NUMBER (10); v_kenmerk_bconditie_key NUMBER (10); v_kenmerk_taal_key NUMBER (10); v_bedrijf_key NUMBER (10); v_kenmerklink_branche_key NUMBER (10); v_kenmerklink_bconditie_key NUMBER (10); v_kenmerklink_taal_key NUMBER (10); v_find NUMBER (10); rec_bedr_del c_bedr_del%ROWTYPE; rec_bedr_upd c_bedr_upd%ROWTYPE; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (1024); v_errorhint VARCHAR2 (1024); v_action VARCHAR (10); v_count NUMBER (10); v_update BOOLEAN; v_aktie VARCHAR (10); v_bedrijf_count_imp NUMBER; v_bedrijf_count_fclt NUMBER; v_bedrijf_newcount_fclt NUMBER; currentversion fac_module.fac_module_version%TYPE; l_validatie NUMBER; BEGIN v_update := TRUE; SELECT MAX (fac_module_version) INTO currentversion FROM fac_module; fac.imp_writelog (p_import_key, 'I', 'Facilitor Crediteuren import version ' || currentversion, '$Revision$'); -- #Import SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) -- DECODE ivm vermijden deling door 0 INTO v_bedrijf_count_imp FROM nfit_imp_baan; -- Informatieve logging, zien we gelijk hoe laat het was fac.imp_writelog (p_import_key, 'S', 'Aantal ingelezen crediteuren: ' || TO_CHAR (v_bedrijf_count_imp), ''); -- #Actieve crediteuren SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) -- DECODE ivm vermijden deling door 0 INTO v_bedrijf_count_fclt FROM prs_bedrijf WHERE prs_bedrijf_verwijder IS NULL AND prs_bedrijf_naam NOT LIKE 'INACTIEF:%'; -- v_baan_count_fclt = 1 bij initiele situatie (of er is maar 1 crediteur aanwezig = > ook doorgaan!) -- IF v_baan_count_imp = 1 -- OR 100 * ABS (v_baan_count_imp - v_baan_count_fclt) / v_baan_count_fclt > c_maxvariation IF ((v_bedrijf_count_fclt <> 1) AND 1=2 AND ((v_bedrijf_count_imp = 1) OR (100 * ABS (v_bedrijf_count_imp - v_bedrijf_count_fclt) / v_bedrijf_count_fclt > c_maxvariation))) THEN fac.imp_writelog (p_import_key, 'E', 'Het verschil tussen de actieve crediteuren (' || TO_CHAR (v_bedrijf_count_fclt) || ') en te importeren aantallen (' || TO_CHAR (v_bedrijf_count_imp) || ') is te groot', 'Zie Specificaties: De afwijking is teveel en bedraagt ' || TO_CHAR (100 * ABS (v_bedrijf_count_fclt - v_bedrijf_count_imp) / v_bedrijf_count_fclt, '9999999D9' ) || '%.' ); RETURN; END IF; -- Controle: kenmerk "Branchecode" aanwezig? IF v_update THEN BEGIN v_errormsg := 'kenmerk "Branchecode" bestaat niet'; -- Bepaal de key van kenmerk "Branchecode" -- kenmerk_key is 1023 SELECT prs_kenmerk_key INTO v_kenmerk_branche_code_key FROM prs_kenmerk WHERE prs_kenmerk_omschrijving = 'Branchecode' AND prs_kenmerk_niveau = 'B' AND prs_kenmerk_kenmerktype = 'C'; EXCEPTION WHEN NO_DATA_FOUND THEN v_errorhint := 'kenmerk "Branchecode" aanmaken'; fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint); -- Kenmerk bestaat kennelijk niet, maak 'm maar aan INSERT INTO prs_kenmerk (prs_kenmerk_niveau, prs_kenmerk_volgnr, prs_kenmerk_omschrijving, prs_kenmerk_hint, prs_kenmerk_kenmerktype, prs_kenmerk_lengte ) VALUES ('B', 110, 'Branchecode', 'Branchecode', 'C', 30 ); COMMIT; -- Wat is de key van deze nieuwe geworden? SELECT prs_kenmerk_key INTO v_kenmerk_branche_code_key FROM prs_kenmerk WHERE prs_kenmerk_omschrijving = 'Branchecode' AND prs_kenmerk_niveau = 'B' AND prs_kenmerk_kenmerktype = 'C' AND prs_kenmerk_verwijder IS NULL; WHEN OTHERS THEN v_errorhint := 'kenmerk_key van kenmerk "Branchecode" kan niet bepaald worden'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); v_update := FALSE; END; END IF; -- Controle: kenmerk "Betalingsconditie" aanwezig? IF v_update THEN BEGIN v_errormsg := 'kenmerk "Betalingsconditie" bestaat niet'; -- Bepaal de key van kenmerk "Betalingsconditie" -- kenmerk_key is 1022 SELECT prs_kenmerk_key INTO v_kenmerk_bconditie_key FROM prs_kenmerk WHERE prs_kenmerk_omschrijving = 'Betalingsconditie' AND prs_kenmerk_niveau = 'B' AND prs_kenmerk_kenmerktype = 'C'; EXCEPTION WHEN NO_DATA_FOUND THEN v_errorhint := 'kenmerk "Betalingsconditie" aanmaken'; fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint); -- Kenmerk bestaat kennelijk niet, maak 'm maar aan INSERT INTO prs_kenmerk (prs_kenmerk_niveau, prs_kenmerk_volgnr, prs_kenmerk_omschrijving, prs_kenmerk_hint, prs_kenmerk_kenmerktype, prs_kenmerk_lengte ) VALUES ('B', 100, 'Betalingsconditie', 'Betalingsvoorwaarde', 'C', 30 ); COMMIT; -- Wat is de key van deze nieuwe geworden? SELECT prs_kenmerk_key INTO v_kenmerk_bconditie_key FROM prs_kenmerk WHERE prs_kenmerk_omschrijving = 'Betalingsconditie' AND prs_kenmerk_niveau = 'B' AND prs_kenmerk_kenmerktype = 'C' AND prs_kenmerk_verwijder IS NULL; WHEN OTHERS THEN v_errorhint := 'kenmerk_key van kenmerk "Betalingsconditie" kan niet bepaald worden'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); v_update := FALSE; END; END IF; -- Controle: kenmerk "Taal" aanwezig? IF v_update THEN BEGIN v_errormsg := 'kenmerk "Taal" bestaat niet'; -- Bepaal de key van kenmerk "Taal" -- kenmerk_key is 1042 SELECT prs_kenmerk_key INTO v_kenmerk_taal_key FROM prs_kenmerk WHERE prs_kenmerk_omschrijving = 'Taal' AND prs_kenmerk_niveau = 'B' AND prs_kenmerk_kenmerktype = 'C'; EXCEPTION WHEN NO_DATA_FOUND THEN v_errorhint := 'kenmerk "Taal" aanmaken'; fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint); -- Kenmerk bestaat kennelijk niet, maak 'm maar aan INSERT INTO prs_kenmerk (prs_kenmerk_niveau, prs_kenmerk_volgnr, prs_kenmerk_omschrijving, prs_kenmerk_hint, prs_kenmerk_kenmerktype, prs_kenmerk_lengte ) VALUES ('B', 120, 'Taal', 'Taal', 'C', 30 ); COMMIT; -- Wat is de key van deze nieuwe geworden? SELECT prs_kenmerk_key INTO v_kenmerk_taal_key FROM prs_kenmerk WHERE prs_kenmerk_omschrijving = 'Taal' AND prs_kenmerk_niveau = 'B' AND prs_kenmerk_kenmerktype = 'C' AND prs_kenmerk_verwijder IS NULL; WHEN OTHERS THEN v_errorhint := 'kenmerk_key van kenmerk "Taal" kan niet bepaald worden'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); v_update := FALSE; END; END IF; -- Delete v_errormsg := 'Try to open cursor'; v_action := 'DELETE'; FOR rec_bedr_del IN c_bedr_del LOOP BEGIN v_bedrijf_key := rec_bedr_del.prs_bedrijf_key; v_errormsg := 'Inactiveren van het bedrijf is NIET gelukt'; v_errorhint := 'Inactiveren van het bedrijf is NIET gelukt. Bedrijf met bedrijfsnaam ' || rec_bedr_del.prs_bedrijf_naam; UPDATE prs_bedrijf SET prs_bedrijf_naam = SUBSTR ('INACTIEF: ' || prs_bedrijf_naam, 1, 60) WHERE prs_bedrijf_key = v_bedrijf_key AND prs_bedrijf_naam NOT LIKE 'INACTIEF:%'; COMMIT; fac.imp_writelog (p_import_key, 'C', 'Bedrijf als INACTIEF gemarkeerd of was al INACTIEF, bedrijfscode: ' || rec_bedr_del.prs_bedrijf_naam, '' ); EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END; END LOOP; COMMIT; -- Update v_errormsg := 'Try to open cursor'; v_action := 'UPDATE'; FOR rec_bedr_upd IN c_bedr_upd LOOP BEGIN v_errorhint := 'Het bedrijf kan niet bepaald worden ' || rec_bedr_upd.prs_bedrijf_naam; -- Init v_update := TRUE; v_bedrijf_key := 0; IF rec_bedr_upd.prs_bedrijf_key IS NULL THEN v_aktie := 'INSERT'; v_errormsg := 'Bedrijfsgegevens kunnen niet toegevoegd worden'; ELSE v_aktie := 'UPDATE'; v_errormsg := 'Bedrijfsgegevens kunnen niet gewijzigd worden'; END IF; -- *** Controle verplichte gegevens + ophalen extra informatie *** -- Controle: PRS_LEVERANCIER_NR IF v_update AND rec_bedr_upd.prs_leverancier_nr IS NULL THEN v_errorhint := 'Bedrijf heeft geen prs_leverancier_nr; bedrijfsnaam: ' || rec_bedr_upd.prs_bedrijf_naam; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); v_update := FALSE; END IF; -- Controle: PRS_BEDRIJF_NAAM IF rec_bedr_upd.prs_bedrijf_naam IS NULL THEN v_errorhint := 'Bedrijf heeft geen bedrijfsnaam; bedrijfsnaam/leveranciersnummer: ' || rec_bedr_upd.prs_bedrijf_naam || '/' || rec_bedr_upd.prs_leverancier_nr; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); v_update := FALSE; END IF; -- *** Daadwerkelijk insert/update prs_bedrijf *** IF v_update THEN BEGIN IF v_aktie = 'INSERT' THEN v_errormsg := 'Bedrijf kan niet worden toegevoegd'; -- De volgende flexkenmerken toevoegen -- bedr.branche_code, -- bedr.betalingsconditie, -- bedr.taal. INSERT INTO prs_bedrijf (prs_bedrijf_naam, prs_bedrijf_post_adres, prs_bedrijf_post_postcode, prs_bedrijf_post_plaats, prs_bedrijf_post_land, prs_bedrijf_telefoon, prs_bedrijf_contact_persoon, prs_leverancier_nr, prs_bedrijf_bezoek_adres, prs_bedrijf_bezoek_postcode, prs_bedrijf_bezoek_plaats, prs_bedrijf_bezoek_land, prs_bedrijf_fax, prs_bedrijf_leverancier, prs_bedrijf_uitvoerende, prs_bedrijf_contract ) VALUES (rec_bedr_upd.prs_bedrijf_naam, rec_bedr_upd.prs_bedrijf_post_adres, rec_bedr_upd.prs_bedrijf_post_postcode, rec_bedr_upd.prs_bedrijf_post_plaats, rec_bedr_upd.prs_bedrijf_post_land, rec_bedr_upd.prs_bedrijf_telefoon, rec_bedr_upd.prs_bedrijf_contact_persoon, rec_bedr_upd.prs_leverancier_nr, rec_bedr_upd.prs_bedrijf_bezoek_adres, rec_bedr_upd.prs_bedrijf_bezoek_postcode, rec_bedr_upd.prs_bedrijf_bezoek_plaats, rec_bedr_upd.prs_bedrijf_bezoek_land, rec_bedr_upd.prs_bedrijf_fax, 1, 1, 1 ); COMMIT; fac.imp_writelog (p_import_key, 'C', 'Nieuw bedrijf toegevoegd', 'bedrijfsnaam/leveranciersnummer: ' || rec_bedr_upd.prs_bedrijf_naam || '/' || rec_bedr_upd.prs_leverancier_nr ); -- Wat is de key van deze nieuwe geworden? SELECT prs_bedrijf_key INTO v_bedrijf_key FROM prs_bedrijf WHERE prs_leverancier_nr = rec_bedr_upd.prs_leverancier_nr AND prs_bedrijf_naam = rec_bedr_upd.prs_bedrijf_naam AND prs_bedrijf_verwijder IS NULL; ELSE -- v_aktie = 'UPDATE' v_errormsg := 'Bedrijf kan niet worden gewijzigd'; UPDATE prs_bedrijf SET prs_bedrijf_naam = rec_bedr_upd.prs_bedrijf_naam, prs_bedrijf_post_adres = rec_bedr_upd.prs_bedrijf_post_adres, prs_bedrijf_post_postcode = rec_bedr_upd.prs_bedrijf_post_postcode, prs_bedrijf_post_plaats = rec_bedr_upd.prs_bedrijf_post_plaats, prs_bedrijf_post_land = rec_bedr_upd.prs_bedrijf_post_land, prs_bedrijf_telefoon = rec_bedr_upd.prs_bedrijf_telefoon, prs_bedrijf_contact_persoon = rec_bedr_upd.prs_bedrijf_contact_persoon, prs_bedrijf_bezoek_adres = rec_bedr_upd.prs_bedrijf_bezoek_adres, prs_bedrijf_bezoek_postcode = rec_bedr_upd.prs_bedrijf_bezoek_postcode, prs_bedrijf_bezoek_plaats = rec_bedr_upd.prs_bedrijf_bezoek_plaats, prs_bedrijf_bezoek_land = rec_bedr_upd.prs_bedrijf_bezoek_land, prs_bedrijf_fax = rec_bedr_upd.prs_bedrijf_fax, prs_bedrijf_leverancier = 1, prs_bedrijf_uitvoerende = 1, prs_bedrijf_contract = 1 WHERE prs_bedrijf_key = rec_bedr_upd.prs_bedrijf_key AND prs_leverancier_nr = rec_bedr_upd.prs_leverancier_nr; /* AND ( prs_bedrijf_naam <> rec_bedr_upd.prs_bedrijf_naam OR prs_bedrijf_post_adres <> rec_bedr_upd.prs_bedrijf_post_adres OR prs_bedrijf_post_postcode <> rec_bedr_upd.prs_bedrijf_post_postcode OR prs_bedrijf_post_plaats <> rec_bedr_upd.prs_bedrijf_post_plaats OR prs_bedrijf_post_land <> rec_bedr_upd.prs_bedrijf_post_land OR prs_bedrijf_telefoon <> rec_bedr_upd.prs_bedrijf_telefoon OR prs_bedrijf_contact_persoon <> rec_bedr_upd.prs_bedrijf_contact_persoon OR prs_bedrijf_bezoek_adres <> rec_bedr_upd.prs_bedrijf_bezoek_adres OR prs_bedrijf_bezoek_postcode <> rec_bedr_upd.prs_bedrijf_bezoek_postcode OR prs_bedrijf_bezoek_plaats <> rec_bedr_upd.prs_bedrijf_bezoek_plaats OR prs_bedrijf_bezoek_land <> rec_bedr_upd.prs_bedrijf_bezoek_land OR prs_bedrijf_fax <> rec_bedr_upd.prs_bedrijf_fax OR prs_bedrijf_naam IS NULL OR prs_bedrijf_post_adres IS NULL OR prs_bedrijf_post_postcode IS NULL OR prs_bedrijf_post_plaats IS NULL OR prs_bedrijf_post_land IS NULL OR prs_bedrijf_telefoon IS NULL OR prs_bedrijf_contact_persoon IS NULL OR prs_bedrijf_bezoek_adres IS NULL OR prs_bedrijf_bezoek_postcode IS NULL OR prs_bedrijf_bezoek_plaats IS NULL OR prs_bedrijf_bezoek_land IS NULL OR prs_bedrijf_fax IS NULL ); */ COMMIT; fac.imp_writelog (p_import_key, 'C', 'Bedrijven bijgewerkt (indien nodig)', 'bedrijfsnaam/leveranciersnummer: ' || rec_bedr_upd.prs_bedrijf_naam || '/' || rec_bedr_upd.prs_leverancier_nr ); -- Wat is de key van dit bedrijf? v_bedrijf_key := rec_bedr_upd.prs_bedrijf_key; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')'; v_errorhint := ' {' || v_errormsg || '}; bedrijfsnaam/leveranciersnummer: ' || rec_bedr_upd.prs_bedrijf_naam || '/' || rec_bedr_upd.prs_leverancier_nr; v_update := FALSE; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END; END IF; -- *** insert/update van de drie kenmerken van de bedrijf *** IF v_update THEN BEGIN IF v_aktie = 'INSERT' THEN v_errormsg := 'Kenmerken kunnen niet worden toegevoegd'; -- De volgende flexkenmerken toevoegen -- bedr.branche_code, -- bedr.betalingsconditie, -- bedr.taal. IF rec_bedr_upd.branche_code IS NOT NULL THEN INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerklink_niveau, prs_kenmerk_key, prs_kenmerklink_waarde ) VALUES (v_bedrijf_key, 'B', v_kenmerk_branche_code_key, rec_bedr_upd.branche_code ); COMMIT; END IF; IF rec_bedr_upd.betalingsconditie IS NOT NULL THEN INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerklink_niveau, prs_kenmerk_key, prs_kenmerklink_waarde ) VALUES (v_bedrijf_key, 'B', v_kenmerk_bconditie_key, rec_bedr_upd.betalingsconditie ); COMMIT; END IF; IF rec_bedr_upd.taal IS NOT NULL THEN INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerklink_niveau, prs_kenmerk_key, prs_kenmerklink_waarde ) VALUES (v_bedrijf_key, 'B', v_kenmerk_taal_key, rec_bedr_upd.taal ); COMMIT; END IF; fac.imp_writelog (p_import_key, 'C', 'Nieuwe kenmerken toegevoegd (indien waarde aanwezig) ', 'bedrijfsnaam/leveranciersnummer: ' || rec_bedr_upd.prs_bedrijf_naam || '/' || rec_bedr_upd.prs_leverancier_nr ); ELSE -- v_aktie = 'UPDATE'(kenmerkenlinken kunnen aanwezig zijn) v_errormsg := 'Kenmerk(en) kunnen niet worden gewijzigd'; v_find := 1; BEGIN -- Bepaal de key van het kenmerk "Branche_code" SELECT prs_kenmerklink_key INTO v_kenmerklink_branche_key FROM prs_kenmerklink WHERE prs_link_key = v_bedrijf_key AND prs_kenmerk_key = v_kenmerk_branche_code_key AND prs_kenmerklink_niveau = 'B'; EXCEPTION WHEN NO_DATA_FOUND THEN v_find := 0; WHEN OTHERS THEN v_errorhint := 'Fout bij het aanmaken van kenmerklink "Branche_code"' || TO_CHAR(v_kenmerk_branche_code_key) || 'bedrijfsnaam/leveranciersnummer: ' || rec_bedr_upd.prs_bedrijf_naam || '/' || rec_bedr_upd.prs_leverancier_nr; v_update := FALSE; END; IF v_update AND v_find = 1 THEN IF rec_bedr_upd.branche_code IS NOT NULL THEN UPDATE prs_kenmerklink SET prs_kenmerklink_waarde = rec_bedr_upd.branche_code WHERE prs_kenmerklink_key = v_kenmerklink_branche_key AND prs_kenmerklink_waarde <> rec_bedr_upd.branche_code; COMMIT; ELSE DELETE prs_kenmerklink WHERE prs_kenmerklink_key = v_kenmerklink_branche_key; COMMIT; END IF; ELSE -- Kenmerklink bestaat kennelijk niet, maak 'm aan IF rec_bedr_upd.branche_code IS NOT NULL AND v_find = 0 THEN INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerklink_niveau, prs_kenmerk_key, prs_kenmerklink_waarde ) VALUES (v_bedrijf_key, 'B', v_kenmerk_branche_code_key, rec_bedr_upd.branche_code ); COMMIT; END IF; END IF; v_find := 1; BEGIN -- Bepaal de key van het kenmerk "Betalingsconditie" SELECT prs_kenmerklink_key INTO v_kenmerklink_bconditie_key FROM prs_kenmerklink WHERE prs_link_key = v_bedrijf_key AND prs_kenmerk_key = v_kenmerk_bconditie_key AND prs_kenmerklink_niveau = 'B'; EXCEPTION WHEN NO_DATA_FOUND THEN v_find := 0; WHEN OTHERS THEN v_errorhint := 'Fout bij het aanmaken van kenmerklink "Betalingsconditie" ' || TO_CHAR(v_kenmerk_bconditie_key) || 'bedrijfsnaam/leveranciersnummer: ' || rec_bedr_upd.prs_bedrijf_naam || '/' || rec_bedr_upd.prs_leverancier_nr; v_update := FALSE; END; IF v_update AND v_find = 1 THEN IF rec_bedr_upd.betalingsconditie IS NOT NULL THEN UPDATE prs_kenmerklink SET prs_kenmerklink_waarde = rec_bedr_upd.betalingsconditie WHERE prs_kenmerklink_key = v_kenmerklink_bconditie_key AND prs_kenmerklink_waarde <> rec_bedr_upd.betalingsconditie; COMMIT; ELSE DELETE prs_kenmerklink WHERE prs_kenmerklink_key = v_kenmerklink_bconditie_key; COMMIT; END IF; ELSE -- Kenmerklink bestaat kennelijk niet, maak 'm aan IF rec_bedr_upd.betalingsconditie IS NOT NULL AND v_find = 0 THEN INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerklink_niveau, prs_kenmerk_key, prs_kenmerklink_waarde ) VALUES (v_bedrijf_key, 'B', v_kenmerk_bconditie_key, rec_bedr_upd.betalingsconditie ); COMMIT; END IF; END IF; v_find := 1; BEGIN -- Bepaal de key van het kenmerk "Taal" SELECT prs_kenmerklink_key INTO v_kenmerklink_taal_key FROM prs_kenmerklink WHERE prs_link_key = v_bedrijf_key AND prs_kenmerk_key = v_kenmerk_taal_key AND prs_kenmerklink_niveau = 'B'; EXCEPTION WHEN NO_DATA_FOUND THEN v_find := 0; WHEN OTHERS THEN v_errorhint := 'Fout bij het aanmaken van kenmerklink "Taal"' || TO_CHAR(v_kenmerk_taal_key) || 'bedrijfsnaam/leveranciersnummer: ' || rec_bedr_upd.prs_bedrijf_naam || '/' || rec_bedr_upd.prs_leverancier_nr; v_update := FALSE; END; IF v_update AND v_find = 1 THEN IF rec_bedr_upd.taal IS NOT NULL THEN UPDATE prs_kenmerklink SET prs_kenmerklink_waarde = rec_bedr_upd.taal WHERE prs_kenmerklink_key = v_kenmerklink_taal_key AND prs_kenmerklink_waarde <> rec_bedr_upd.taal; COMMIT; ELSE DELETE prs_kenmerklink WHERE prs_kenmerklink_key = v_kenmerklink_taal_key; COMMIT; END IF; ELSE -- Kenmerklink bestaat kennelijk niet, maak 'm aan IF rec_bedr_upd.taal IS NOT NULL AND v_find = 0 THEN INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerklink_niveau, prs_kenmerk_key, prs_kenmerklink_waarde ) VALUES (v_bedrijf_key, 'B', v_kenmerk_taal_key, rec_bedr_upd.taal ); COMMIT; END IF; END IF; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')'; v_errorhint := ' {' || v_errormsg || '}; bedrijfsnaam/leveranciersnummer: ' || rec_bedr_upd.prs_bedrijf_naam || '/' || rec_bedr_upd.prs_leverancier_nr; v_update := FALSE; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END; END IF; v_buffercount := v_buffercount + 1; IF v_buffercount >= c_commitbuffer THEN COMMIT; v_buffercount := 0; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errorhint := v_errorhint || ' {' || v_errormsg || '}'; v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END; END LOOP; SELECT COUNT (*) INTO v_bedrijf_newcount_fclt FROM prs_bedrijf WHERE prs_bedrijf_verwijder IS NULL AND prs_bedrijf_naam NOT LIKE 'INACTIEF:%'; fac.imp_writelog (p_import_key, 'S', 'Aantal actieve crediteuren vooraf: ' || TO_CHAR (v_bedrijf_count_fclt) || ' nu: ' || TO_CHAR (v_bedrijf_newcount_fclt), '' ); EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errorhint := v_errorhint || ' {' || v_errormsg || '}'; v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END; / -- NFIT#12061 view voor notificatie op het moment dat het contract de rappeldatum bereikt naar: -- de beheerder van het contract, -- de budgethouder van de kostenplaats van de afdeling van het contract -- en naar Erwin of Sabine (Inkoper) CREATE OR REPLACE VIEW NFIT_V_NOTI_CNTREMINDER (CODE, SENDER, RECEIVER, TEXT, KEY, PAR1, PAR2, XKEY) AS SELECT '', '', c.prs_perslid_key_beh naam, 'Rappèl: Contract ' || c.cnt_contract_nummer_intern || ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')' || ' moet uiterlijk per ' || TO_CHAR (cnt.cnt_getOpzegdatum(c.cnt_contract_key), 'DD-MM-YYYY') || ' worden verlengd of opgezegd.' bericht, c.cnt_contract_key, c.cnt_contract_nummer_intern, cnt.cnt_getOpzegdatum(c.cnt_contract_key), NULL FROM cnt_v_aanwezigcontract c, prs_bedrijf b WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND (SYSDATE BETWEEN cnt.cnt_getRappeldatum(c.cnt_contract_key) AND cnt.cnt_getOpzegdatum(c.cnt_contract_key)) UNION SELECT '', '', (SELECT kp.prs_perslid_key FROM prs_afdeling a, prs_kostenplaats kp WHERE a.prs_kostenplaats_key = kp.prs_kostenplaats_key AND a.prs_afdeling_key = c.prs_afdeling_key_eig) naam, 'Rappèl: Contract ' || c.cnt_contract_nummer_intern || ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')' || ' moet uiterlijk per ' || TO_CHAR (cnt.cnt_getOpzegdatum(c.cnt_contract_key), 'DD-MM-YYYY') || ' worden verlengd of opgezegd.' bericht, c.cnt_contract_key, c.cnt_contract_nummer_intern, cnt.cnt_getOpzegdatum(c.cnt_contract_key), NULL FROM cnt_v_aanwezigcontract c, prs_bedrijf b WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND (SYSDATE BETWEEN cnt.cnt_getRappeldatum(c.cnt_contract_key) AND cnt.cnt_getOpzegdatum(c.cnt_contract_key)) UNION -- Sabine of Erwin SELECT '', '', (SELECT p.prs_perslid_key FROM cnt_kenmerkcontract kc, cnt_kenmerk ck, fac_usrdata fud, prs_v_aanwezigperslid p WHERE c.cnt_contract_key = kc.cnt_contract_key AND kc.cnt_kenmerk_key = ck.cnt_kenmerk_key AND kc.cnt_kenmerkcontract_waarde = fud.fac_usrdata_key AND p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam = fud.fac_usrdata_omschr AND kc.cnt_contract_key = c.cnt_contract_key AND ck.cnt_srtkenmerk_key = 21) naam, 'Rappèl: Contract ' || c.cnt_contract_nummer_intern || ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')' || ' moet uiterlijk per ' || TO_CHAR (cnt.cnt_getOpzegdatum(c.cnt_contract_key), 'DD-MM-YYYY') || ' worden verlengd of opgezegd.' bericht, c.cnt_contract_key, c.cnt_contract_nummer_intern, cnt.cnt_getOpzegdatum(c.cnt_contract_key), NULL FROM cnt_v_aanwezigcontract c, prs_bedrijf b WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND (SYSDATE BETWEEN cnt.cnt_getRappeldatum(c.cnt_contract_key) AND cnt.cnt_getOpzegdatum(c.cnt_contract_key)); -- NFIT#12639: Notificatiejob voor afmelden van incidentele bestelling (2 dagen na verwachte leverdatum) -- kenmerkkey van afleverdatum is 59 voor NFIT /* Formatted on 20-7-2010 10:33:50 (QP5 v5.136.908.31019) */ CREATE OR REPLACE FORCE VIEW nfit_v_noti_mldopdr_afm ( code, sender, receiver, text, key, xkey ) AS SELECT 'ORDAFM', '', m.prs_perslid_key melder, 'Opdracht ' || sd.ins_srtdiscipline_prefix || m.mld_melding_key || ' dient te worden afgemeld. ' || (SELECT vsk.mld_srtkenmerk_omschrijving || ': ' || v.mld_kenmerkopdr_waarde FROM mld_kenmerkopdr v, mld_kenmerk vk, mld_srtkenmerk vsk WHERE v.mld_opdr_key = o.mld_opdr_key AND vk.mld_srtkenmerk_key = 21 AND v.mld_kenmerk_key = vk.mld_kenmerk_key AND vk.mld_srtkenmerk_key = vsk.mld_srtkenmerk_key) || ', ' || (SELECT vsk.mld_srtkenmerk_omschrijving || ': ' || b.prs_bedrijf_naam FROM mld_kenmerkopdr v, mld_kenmerk vk, mld_srtkenmerk vsk, prs_bedrijf b WHERE v.mld_opdr_key = o.mld_opdr_key AND vk.mld_srtkenmerk_key = 24 AND v.mld_kenmerk_key = vk.mld_kenmerk_key AND vk.mld_srtkenmerk_key = vsk.mld_srtkenmerk_key AND v.mld_kenmerkopdr_waarde = b.prs_bedrijf_key) melding, o.mld_opdr_key, o.mld_opdr_key FROM mld_opdr o, mld_kenmerkopdr ko, mld_melding m, mld_stdmelding std, mld_discipline md, ins_srtdiscipline sd WHERE o.mld_opdr_key = ko.mld_opdr_key AND m.mld_melding_key = o.mld_melding_key AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND md.ins_discipline_key = std.mld_ins_discipline_key AND ko.mld_kenmerk_key = 59 AND TO_DATE (ko.mld_kenmerkopdr_waarde || ' 00:00:00', 'dd-mm-yyyy hh24:mi:ss') + 2 <= SYSDATE AND o.mld_statusopdr_key IN (5,8) AND NOT EXISTS (SELECT 1 FROM web_user_messages WHERE prs_perslid_key_receiver = m.prs_perslid_key AND 'Opdracht ' || sd.ins_srtdiscipline_prefix || m.mld_melding_key || ' dient te worden afgemeld. ' || (SELECT vsk.mld_srtkenmerk_omschrijving || ': ' || v.mld_kenmerkopdr_waarde FROM mld_kenmerkopdr v, mld_kenmerk vk, mld_srtkenmerk vsk WHERE v.mld_opdr_key = o.mld_opdr_key AND vk.mld_srtkenmerk_key = 21 AND v.mld_kenmerk_key = vk.mld_kenmerk_key AND vk.mld_srtkenmerk_key = vsk.mld_srtkenmerk_key) || ', ' || (SELECT vsk.mld_srtkenmerk_omschrijving || ': ' || b.prs_bedrijf_naam FROM mld_kenmerkopdr v, mld_kenmerk vk, mld_srtkenmerk vsk, prs_bedrijf b WHERE v.mld_opdr_key = o.mld_opdr_key AND vk.mld_srtkenmerk_key = 24 AND v.mld_kenmerk_key = vk.mld_kenmerk_key AND vk.mld_srtkenmerk_key = vsk.mld_srtkenmerk_key AND v.mld_kenmerkopdr_waarde = b.prs_bedrijf_key) = web_user_mess_dsc); -- NFIT#12562: Notificatiejob voor het registreren van een incidentele bestelling -- Eens per uur (is minimum) checken of er nieuwe incidentele bestellingen zijn geregistreerd -- kenmerkkey van interne_besteller is 21 voor NFIT -- kenmerkkey van gewenste_leverancier is 24 voor NFIT -- Voor een goede werking van deze notificatiejob dient de notificatie MLDNEW uitgeschakeld te worden CREATE OR REPLACE VIEW NFIT_V_NOTI_MLD_REG (CODE, SENDER, RECEIVER, TEXT, KEY, XKEY) AS SELECT 'MLDNEW', '', m.prs_perslid_key melder, 'Uw melding ' || sd.ins_srtdiscipline_prefix || m.mld_melding_key || ' (' || md.ins_discipline_omschrijving || '/' || sd.ins_srtdiscipline_omschrijving || ') is geregistreerd, ' || (SELECT vsk.mld_srtkenmerk_omschrijving || ': ' || v.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding v, mld_kenmerk vk, mld_srtkenmerk vsk WHERE v.mld_melding_key = m.mld_melding_key AND vk.mld_srtkenmerk_key = 21 AND v.mld_kenmerk_key = vk.mld_kenmerk_key AND vk.mld_srtkenmerk_key = vsk.mld_srtkenmerk_key) || ', ' || (SELECT vsk.mld_srtkenmerk_omschrijving || ': ' || b.prs_bedrijf_naam FROM mld_kenmerkmelding v, mld_kenmerk vk, mld_srtkenmerk vsk, prs_bedrijf b WHERE v.mld_melding_key = m.mld_melding_key AND vk.mld_srtkenmerk_key = 24 AND v.mld_kenmerk_key = vk.mld_kenmerk_key AND vk.mld_srtkenmerk_key = vsk.mld_srtkenmerk_key AND v.mld_kenmerkmelding_waarde = b.prs_bedrijf_key) text, m.mld_melding_key, m.mld_melding_key FROM mld_melding m, mld_stdmelding std, mld_discipline md, ins_srtdiscipline sd WHERE sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND md.ins_discipline_key = std.mld_ins_discipline_key AND m.mld_melding_datum > ( COALESCE ((SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE fac_notificatie_job_view LIKE 'NFIT_V_NOTI_MLD_REG'), SYSDATE ) - (SELECT fac_notificatie_job_interval FROM fac_notificatie_job WHERE fac_notificatie_job_view LIKE 'NFIT_V_NOTI_MLD_REG')/24 ) AND 1 NOT IN ( SELECT 1 FROM web_user_messages WHERE prs_perslid_key_receiver = m.prs_perslid_key AND 'Uw melding ' || sd.ins_srtdiscipline_prefix || m.mld_melding_key || ' (' || md.ins_discipline_omschrijving || '/' || sd.ins_srtdiscipline_omschrijving || ') is geregistreerd' = web_user_mess_dsc); -- NFIT#16975 CREATE OR REPLACE FORCE VIEW nfit_v_leverancier (prs_bedrijf_key, leverancier) AS SELECT prs_bedrijf_key, prs_bedrijf_naam || '-' || prs_bedrijf_bezoek_plaats leverancier FROM prs_v_aanwezigbedrijf WHERE prs_bedrijf_leverancier = 1 AND prs_bedrijf_naam NOT LIKE 'INACTIEF%'; -- Dit is de bonusversie (omdat men niet zo netjes is met de bedrijfsnamen) -- Wordt nog niet gebruikt, maar zou kunnen (vooruitzien is..) CREATE OR REPLACE FORCE VIEW nfit_v_leverancieric (prs_bedrijf_key, leverancier) AS SELECT prs_bedrijf_key, INITCAP(prs_bedrijf_naam) || '-' || prs_bedrijf_bezoek_plaats leverancier FROM prs_v_aanwezigbedrijf WHERE prs_bedrijf_leverancier = 1 AND prs_bedrijf_naam NOT LIKE 'INACTIEF%'; BEGIN fac.registercustversion('NFIT', 23); END; / BEGIN adm.systrackscriptId('$Id$', 0); END; / COMMIT; SPOOL OFF