Files
Customer/NFIT/nfit.sql
Daniëlle Tolner ea7a5f053a Aanpassen versienummer
svn path=/Customer/trunk/; revision=22117
2014-07-09 12:03:15 +00:00

1645 lines
71 KiB
SQL
Raw Blame History

-- 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<EFBFBD>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<EFBFBD>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<EFBFBD>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