Files
Customer/SVRZ/svrz.sql
Maarten van der Heide 7285cfaa10 SVRZ#55788 NACHTWERK-export/Aanmaken BES-kenmerk
svn path=/Customer/trunk/; revision=40374
2019-01-02 15:25:17 +00:00

2056 lines
86 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific db-configuration for SVRZ.
DEFINE thisfile = 'SVRZ.SQL'
DEFINE dbuser = '^SVRZ'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE VIEW svrz_v_rap_import_log
(
fclt_f_applicatie,
datum,
fclt_f_status,
omschrijving,
hint
)
AS
SELECT COALESCE (fac_import_app_code, imp_log_applicatie),
TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi'),
imp_log_status,
imp_log_omschrijving,
imp_log_hint
FROM imp_log il1, fac_import fi1, fac_import_app fia1
WHERE il1.fac_import_key = fi1.fac_import_key(+)
AND fi1.fac_import_app_key = fia1.fac_import_app_key(+)
AND NOT EXISTS
(SELECT 1
FROM imp_log il2, fac_import fi2
WHERE il2.fac_import_key = fi2.fac_import_key
AND fi2.fac_import_app_key = fi1.fac_import_app_key
AND il2.fac_import_key > il1.fac_import_key);
/* Formatted on 5-5-2014 13:12:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE svrz_import_perslid (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000) := '-';
v_errorhint VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errorhint := 'Generieke import';
-- De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
prs.import_perslid (
p_import_key,
'0;0;0;0;0;0;7;2;3;5;'
|| '4;0;0;0;0;15;16;17;0;1;'
|| '8;18;19;6;0;0;20;21;0;0;'
|| '0;0;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
'personeelsnummer;achternaam;tussenvoegsel;voorletters;voornaam;titel_aanhef;afdelingscode;functie;locatiecode;gebouwcode;bouwlaagvolgnummer;ruimtenummer;werkplekvolgnummer;omschrijving;telefoonnummer;mobiel;email;loginnaam;password;indienstdatum;uitdienstdatum%');
COMMIT;
v_errorhint := 'Bepalen stamplaats';
-- Klantspecifieke aanpassingen.
-- Locatie/Gebouw/Verdieping/Ruimte bepalen via Afd.code-kolom -> Eigen tabel (key=101) ->
-- Locatiecode en daaronder de alfabetisch eerste Fictieve ruimte!
-- Als persoon al een WP heeft op import-locatie, dan is dat de juiste en blijft deze
-- (handmatig gecorrigeerde WP) ongewijzigd. In alle andere gevallen verhuist persoon naar
-- naar de bepaalde Ruimte op import-locatie!
-- Eventuele WPs onder andere vestigingen dan import-vestiging blijven ook ongewijzigd!
UPDATE fac_imp_perslid i
SET i.alg_locatie_code =
(SELECT il.alg_locatie_code
FROM fac_v_aanwezigusrdata ud, -- Mapping BO4-Afdelingscode -> Locatiecode
alg_v_aanweziglocatie il
WHERE ud.fac_usrtab_key = 101 -- MappingOrg2Loc-tabel
AND ud.fac_usrdata_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (il.alg_locatie_code)),
i.alg_gebouw_code =
(SELECT g1.alg_gebouw_code
FROM fac_v_aanwezigusrdata ud, -- Mapping BO4-Afdelingscode -> Locatiecode
alg_v_aanweziglocatie l1,
alg_v_aanweziggebouw g1,
alg_v_aanwezigverdieping v1,
alg_v_aanwezigruimte r1
WHERE ud.fac_usrtab_key = 101 -- MappingOrg2Loc-tabel
AND ud.fac_usrdata_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (l1.alg_locatie_code)
AND l1.alg_locatie_key = g1.alg_locatie_key
AND g1.alg_gebouw_key = v1.alg_gebouw_key
AND v1.alg_verdieping_key = r1.alg_verdieping_key
AND r1.alg_srtruimte_key = 101 -- Fictieve ruimte
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanwezigruimte r2,
alg_verdieping v2,
alg_gebouw g2
WHERE r2.alg_srtruimte_key = 101 -- Fictieve ruimte
AND r2.alg_verdieping_key = v2.alg_verdieping_key
AND v2.alg_gebouw_key = g2.alg_gebouw_key
AND g2.alg_gebouw_code || v2.alg_verdieping_code || r2.alg_ruimte_nr <
g1.alg_gebouw_code || v1.alg_verdieping_code || r1.alg_ruimte_nr
AND g2.alg_locatie_key = g1.alg_locatie_key)),
i.alg_verdieping_volgnr =
(SELECT v1.alg_verdieping_volgnr
FROM fac_v_aanwezigusrdata ud, -- Mapping BO4-Afdelingscode -> Locatiecode
alg_v_aanweziglocatie l1,
alg_v_aanweziggebouw g1,
alg_v_aanwezigverdieping v1,
alg_v_aanwezigruimte r1
WHERE ud.fac_usrtab_key = 101 -- MappingOrg2Loc-tabel
AND ud.fac_usrdata_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (l1.alg_locatie_code)
AND l1.alg_locatie_key = g1.alg_locatie_key
AND g1.alg_gebouw_key = v1.alg_gebouw_key
AND v1.alg_verdieping_key = r1.alg_verdieping_key
AND r1.alg_srtruimte_key = 101 -- Fictieve ruimte
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanwezigruimte r2,
alg_verdieping v2,
alg_gebouw g2
WHERE r2.alg_srtruimte_key = 101 -- Fictieve ruimte
AND r2.alg_verdieping_key = v2.alg_verdieping_key
AND v2.alg_gebouw_key = g2.alg_gebouw_key
AND g2.alg_gebouw_code || v2.alg_verdieping_code || r2.alg_ruimte_nr <
g1.alg_gebouw_code || v1.alg_verdieping_code || r1.alg_ruimte_nr
AND g2.alg_locatie_key = g1.alg_locatie_key)),
i.alg_ruimte_nr =
(SELECT r1.alg_ruimte_nr
FROM fac_v_aanwezigusrdata ud, -- Mapping BO4-Afdelingscode -> Locatiecode
alg_v_aanweziglocatie l1,
alg_v_aanweziggebouw g1,
alg_v_aanwezigverdieping v1,
alg_v_aanwezigruimte r1
WHERE ud.fac_usrtab_key = 101 -- MappingOrg2Loc-tabel
AND ud.fac_usrdata_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (l1.alg_locatie_code)
AND l1.alg_locatie_key = g1.alg_locatie_key
AND g1.alg_gebouw_key = v1.alg_gebouw_key
AND v1.alg_verdieping_key = r1.alg_verdieping_key
AND r1.alg_srtruimte_key = 101 -- Fictieve ruimte
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanwezigruimte r2,
alg_verdieping v2,
alg_gebouw g2
WHERE r2.alg_srtruimte_key = 101 -- Fictieve ruimte
AND r2.alg_verdieping_key = v2.alg_verdieping_key
AND v2.alg_gebouw_key = g2.alg_gebouw_key
AND g2.alg_gebouw_code || v2.alg_verdieping_code || r2.alg_ruimte_nr <
g1.alg_gebouw_code || v1.alg_verdieping_code || r1.alg_ruimte_nr
AND g2.alg_locatie_key = g1.alg_locatie_key))
WHERE NOT EXISTS -- Nog geen WP op Locatie!
(SELECT 1
FROM fac_v_aanwezigusrdata ud, -- Mapping BO4-Afdelingscode -> Locatiecode
alg_v_aanweziglocatie il,
prs_v_aanwezigperslid p,
prs_perslidwerkplek pw,
prs_werkplek cw,
alg_v_aanwezigruimte cr,
alg_verdieping cv,
alg_gebouw cg,
alg_locatie cl
WHERE ud.fac_usrtab_key = 101 -- MappingOrg2Loc-tabel
AND ud.fac_usrdata_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (il.alg_locatie_code)
AND p.prs_perslid_nr = i.prs_perslid_nr
AND p.prs_perslid_key = pw.prs_perslid_key
AND pw.prs_werkplek_key = cw.prs_werkplek_key
AND cw.prs_alg_ruimte_key = cr.alg_ruimte_key
AND cr.alg_verdieping_key = cv.alg_verdieping_key
AND cv.alg_gebouw_key = cg.alg_gebouw_key
AND cg.alg_locatie_key = il.alg_locatie_key);
COMMIT;
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.imp_writelog (p_import_key, 'E', v_errormsg || v_errorhint, 'Inleesproces personen afgebroken!');
END svrz_import_perslid;
/
/* Formatted on 27-9-2017 15:12:48 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE svrz_update_perslid (p_import_key IN NUMBER)
IS
--CURSOR c_flex
--IS
-- SELECT p.prs_perslid_key, p.prs_perslid_nr, i.*
-- FROM prs_v_aanwezigperslid p, fac_imp_perslid i
-- WHERE p.prs_perslid_nr = i.prs_perslid_nr
-- ORDER BY 2;
-- Let op! Personen die niet meer in dienst zijn -> niet in fac_imp_perslid!
-- Dubbele perslid_nr? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
CURSOR c_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_nr IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM fac_imp_perslid i
WHERE UPPER (i.prs_perslid_nr) = UPPER (p.prs_perslid_nr))
ORDER BY 2;
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
v_count_tot NUMBER;
v_count_new NUMBER;
BEGIN
-- Generieke update.
SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;
IF v_count < 1000
THEN
fac.imp_writelog (p_import_key, 'E', 'Het aantal te importeren personen is te klein (' || TO_CHAR (v_count) || ')', 'Zie specificatie');
RETURN;
END IF;
-- Generieke update.
prs.update_perslid (p_import_key, 'NR', 'D');
-- Update flexvelden.
--FOR rec IN c_flex
--LOOP
-- PRS.upsertkenmerk (-1, rec.prs_perslid_key, TO_CHAR (fac.safe_to_date (rec.prs_kenmerk1, 'dd-mm-yyyy'), 'dd-mm-yyyy')); -- Indienst
-- PRS.upsertkenmerk (-1, rec.prs_perslid_key, TO_CHAR (fac.safe_to_date (rec.prs_kenmerk2, 'dd-mm-yyyy'), 'dd-mm-yyyy')); -- Uitdienst
--END LOOP;
-- Verwijder personen die niet meer in de import voorkomen.
FOR rec IN c_del
LOOP
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END LOOP;
COMMIT;
END svrz_update_perslid;
/
/* Formatted on 16-6-2014 21:48:12 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE svrz_import_bedrijf (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
fac_import_ext_bedrijf (p_import_key);
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.imp_writelog (p_import_key,
'E',
v_errormsg,
'Inleesproces relaties afgebroken!');
END svrz_import_bedrijf;
/
CREATE OR REPLACE PROCEDURE svrz_update_bedrijf (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000) := '-';
v_errorhint VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_count_tot NUMBER (10);
v_count_new NUMBER (10);
v_count_upd NUMBER (10);
v_count_del NUMBER (10);
v_aanduiding VARCHAR2 (200) := '-';
-- SUBPROC
PROCEDURE add_bedrijf (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT *
FROM fac_imp_ext_bedrijf ib
WHERE NOT EXISTS
(SELECT 1
FROM fac_imp_ext_bedrijf
WHERE UPPER (prs_bedrijf_naam) =
UPPER (ib.prs_bedrijf_naam)
AND prs_leverancier_nr < ib.prs_leverancier_nr);
v_bedrijf_key NUMBER (10);
BEGIN
v_count_tot := 0;
v_count_new := 0;
v_count_upd := 0;
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
'['
|| rec.prs_bedrijf_naam
|| '|'
|| rec.prs_leverancier_nr
|| '] ';
v_errorhint := 'Fout bepalen bedrijf';
IF rec.prs_leverancier_nr IS NULL
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Leveranciernummer ongedefinieerd!',
v_errorhint);
COMMIT;
ELSE
SELECT COUNT ( * )
INTO v_count
FROM prs_v_aanwezigbedrijf
WHERE UPPER (prs_leverancier_nr) =
UPPER (rec.prs_leverancier_nr);
IF v_count = 0
THEN
v_errorhint := 'Fout toevoegen bedrijf';
INSERT INTO prs_bedrijf (prs_bedrijf_naam,
prs_leverancier_nr,
prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_postcode,
prs_bedrijf_bezoek_plaats,
prs_bedrijf_bezoek_land,
prs_bedrijf_post_adres,
prs_bedrijf_post_postcode,
prs_bedrijf_post_plaats,
prs_bedrijf_post_land,
prs_bedrijf_telefoon,
prs_bedrijf_fax,
prs_bedrijf_email,
prs_bedrijf_contact_persoon,
prs_bedrijf_contact_telefoon,
prs_bedrijf_contact_fax,
prs_bedrijf_leverancier,
prs_bedrijf_uitvoerende,
prs_bedrijf_contract,
prs_bedrijf_huurder,
prs_bedrijf_ingids,
prs_bedrijf_uurloon,
prs_overeenkomst_nr,
prs_overeenkomst_datum,
prs_bedrijf_opmerking)
VALUES (rec.prs_bedrijf_naam,
rec.prs_leverancier_nr,
rec.prs_bedrijf_bezoek_adres,
rec.prs_bedrijf_bezoek_postcode,
rec.prs_bedrijf_bezoek_plaats,
rec.prs_bedrijf_bezoek_land,
rec.prs_bedrijf_post_adres,
rec.prs_bedrijf_post_postcode,
rec.prs_bedrijf_post_plaats,
rec.prs_bedrijf_post_land,
rec.prs_bedrijf_telefoon,
rec.prs_bedrijf_fax,
rec.prs_bedrijf_email,
rec.prs_bedrijf_contact_persoon,
rec.prs_bedrijf_contact_telefoon,
rec.prs_bedrijf_contact_fax,
DECODE (rec.prs_bedrijf_leverancier,
1, 1,
NULL),
DECODE (rec.prs_bedrijf_uitvoerende,
1, 1,
NULL),
DECODE (rec.prs_bedrijf_contract, 1, 1, NULL),
DECODE (rec.prs_bedrijf_huurder, 1, 1, NULL),
DECODE (rec.prs_bedrijf_ingids, 1, 1, NULL),
rec.prs_bedrijf_uurloon,
rec.prs_overeenkomst_nr,
rec.prs_overeenkomst_datum,
rec.prs_bedrijf_opmerking);
v_count_new := v_count_new + 1;
ELSE -- v_count > 0
SELECT prs_bedrijf_key
INTO v_bedrijf_key
FROM prs_v_aanwezigbedrijf
WHERE UPPER (prs_leverancier_nr) =
UPPER (rec.prs_leverancier_nr);
v_errorhint := 'Fout bijwerken bedrijf';
UPDATE prs_bedrijf
SET prs_bedrijf_naam =
COALESCE (rec.prs_bedrijf_naam, prs_bedrijf_naam),
prs_bedrijf_bezoek_adres =
COALESCE (rec.prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_adres),
prs_bedrijf_bezoek_postcode =
COALESCE (rec.prs_bedrijf_bezoek_postcode,
prs_bedrijf_bezoek_postcode),
prs_bedrijf_bezoek_plaats =
COALESCE (rec.prs_bedrijf_bezoek_plaats,
prs_bedrijf_bezoek_plaats),
prs_bedrijf_bezoek_land =
COALESCE (rec.prs_bedrijf_bezoek_land,
prs_bedrijf_bezoek_land),
prs_bedrijf_post_adres =
COALESCE (rec.prs_bedrijf_post_adres,
prs_bedrijf_post_adres),
prs_bedrijf_post_postcode =
COALESCE (rec.prs_bedrijf_post_postcode,
prs_bedrijf_post_postcode),
prs_bedrijf_post_plaats =
COALESCE (rec.prs_bedrijf_post_plaats,
prs_bedrijf_post_plaats),
prs_bedrijf_post_land =
COALESCE (rec.prs_bedrijf_post_land,
prs_bedrijf_post_land),
prs_bedrijf_telefoon =
COALESCE (rec.prs_bedrijf_telefoon,
prs_bedrijf_telefoon),
prs_bedrijf_fax =
COALESCE (rec.prs_bedrijf_fax, prs_bedrijf_fax),
prs_bedrijf_email =
COALESCE (rec.prs_bedrijf_email,
prs_bedrijf_email),
prs_bedrijf_contact_persoon =
COALESCE (rec.prs_bedrijf_contact_persoon,
prs_bedrijf_contact_persoon),
prs_bedrijf_contact_telefoon =
COALESCE (rec.prs_bedrijf_contact_telefoon,
prs_bedrijf_contact_telefoon),
prs_bedrijf_contact_fax =
COALESCE (rec.prs_bedrijf_contact_fax,
prs_bedrijf_contact_fax),
prs_bedrijf_leverancier =
DECODE (rec.prs_bedrijf_leverancier, 1, 1, prs_bedrijf_leverancier),
prs_bedrijf_uitvoerende =
DECODE (rec.prs_bedrijf_uitvoerende, 1, 1, NULL),
prs_bedrijf_contract =
DECODE (rec.prs_bedrijf_contract, 1, 1, NULL),
prs_bedrijf_huurder =
DECODE (rec.prs_bedrijf_huurder, 1, 1, NULL),
prs_bedrijf_ingids =
DECODE (rec.prs_bedrijf_ingids, 1, 1, NULL),
prs_bedrijf_uurloon =
COALESCE (rec.prs_bedrijf_uurloon,
prs_bedrijf_uurloon),
prs_overeenkomst_nr =
COALESCE (rec.prs_overeenkomst_nr,
prs_overeenkomst_nr),
prs_overeenkomst_datum =
COALESCE (rec.prs_overeenkomst_datum,
prs_overeenkomst_datum),
prs_bedrijf_opmerking =
COALESCE (rec.prs_bedrijf_opmerking,
prs_bedrijf_opmerking)
WHERE prs_bedrijf_key = v_bedrijf_key;
v_count_upd := v_count_upd + 1;
END IF;
--COMMIT;
END IF;
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.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Bedrijf: #ingelezen: ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (p_import_key,
'S',
'Bedrijf: #toegevoegd: ' || TO_CHAR (v_count_new),
'');
fac.imp_writelog (p_import_key,
'S',
'Bedrijf: #bijgewerkt: ' || TO_CHAR (v_count_upd),
'');
COMMIT;
END;
-- SUBPROC
PROCEDURE del_bedrijf (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT *
FROM prs_v_aanwezigbedrijf b
WHERE b.prs_bedrijf_intern IS NULL
AND b.prs_leverancier_nr IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM fac_imp_ext_bedrijf
WHERE prs_leverancier_nr = b.prs_leverancier_nr);
v_bedrijf_key NUMBER (10);
BEGIN
v_count_del := 0;
FOR rec IN c1
LOOP
BEGIN
v_aanduiding := '[' || rec.prs_bedrijf_naam || '] ';
v_errorhint := 'Fout verwijderen bedrijf';
UPDATE prs_bedrijf
SET prs_bedrijf_verwijder = SYSDATE
WHERE prs_bedrijf_key = rec.prs_bedrijf_key;
v_count_del := v_count_del + 1;
COMMIT;
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.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Bedrijf: #verwijderd: ' || TO_CHAR (v_count_del),
'');
COMMIT;
END;
-- MAIN
BEGIN
SELECT COUNT ( * ) INTO v_count FROM fac_imp_ext_bedrijf;
IF v_count < 500
THEN
fac.imp_writelog (
p_import_key,
'E',
'Het aantal te importeren relaties is te klein ('
|| TO_CHAR (v_count)
|| ')',
'Zie specificatie');
RETURN;
END IF;
add_bedrijf (p_import_key);
--del_bedrijf (p_import_key);
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.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Importproces relaties afgebroken!');
END svrz_update_bedrijf;
/
-- Multi variant voor automatische import via gen_import van Quarto POs.
/* Formatted on 12-11-2014 16:30:30 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE svrz_import_quarto (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200) := '';
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_import NUMBER (10) := 0;
v_ongeldig NUMBER (1);
-- De importvelden
v_receiver VARCHAR2 (255); -- C25/prs_leverancier_nr
v_receiverName VARCHAR2 (255); -- C100/ignore
v_customer VARCHAR2 (255); -- C30/prs_perslid_voornaam?
v_customerName VARCHAR2 (255); -- C100/ignore
v_orderdatum VARCHAR2 (255); -- C50/bes_kenmerkbestell_waarde
v_bestelnr VARCHAR2 (255); -- C50/bes_kenmerkbestell_waarde
v_nummer VARCHAR2 (255); -- C32/bes_srtdeel_nr
v_questornummer VARCHAR2 (255); -- C50/ignore (bes_srtdeel_opmerking?)
v_questoromschrijving VARCHAR2 (255); -- C100/bes_srtdeel_omschrijving
v_inkoopprijs VARCHAR2 (255); --N8,2/ignore (= prijs_per_verpakking / aantal_per_verpakking)
v_aantal VARCHAR2 (255); --N5/bes_bestelling(/bestelopdr)_item_aantal
v_prijs_per_verpakking VARCHAR2 (255); --N8,2/bes_srtdeel_prijs_prijs
v_aantal_per_verpakking VARCHAR2 (255); --N6/bes_srtdeel_veelvoud
v_btwperc VARCHAR2 (255); --N3/bes_srtdeel_btw
v_uom VARCHAR2 (255); -- C30/bes_srtdeel_eenheid
-- Overige velden:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
--DELETE FROM svrz_imp_quartomulti q
-- WHERE q.imp_log_run <> p_import_key
-- OR EXISTS (SELECT 1
-- FROM fac_imp_file
-- WHERE SUBSTR (fac_imp_file_line,
-- INSTR (fac_imp_file_line, ';', 1, 5)
-- + 1,
-- INSTR (fac_imp_file_line, ';', 1, 6)
-- - INSTR (fac_imp_file_line, ';', 1, 5)
-- - 1) = q.bestelnr);
DELETE FROM svrz_imp_quartomulti
WHERE imp_log_run <> p_import_key;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout bij opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
-- receiver;receiverName;customer;customerName;orderdatum;bestelnr;nummer;questornummer;questoromschrijving;inkoopprijs;aantal;prijs_per_verpakking;aantal_per_verpakking;btwperc;uom
fac.imp_getfield (v_newline, c_delim, v_receiver);
fac.imp_getfield (v_newline, c_delim, v_receiverName);
fac.imp_getfield (v_newline, c_delim, v_customer);
fac.imp_getfield (v_newline, c_delim, v_customerName);
fac.imp_getfield (v_newline, c_delim, v_orderdatum);
fac.imp_getfield (v_newline, c_delim, v_bestelnr);
fac.imp_getfield (v_newline, c_delim, v_nummer);
fac.imp_getfield (v_newline, c_delim, v_questornummer);
fac.imp_getfield (v_newline, c_delim, v_questoromschrijving);
fac.imp_getfield (v_newline, c_delim, v_inkoopprijs);
fac.imp_getfield (v_newline, c_delim, v_aantal);
fac.imp_getfield (v_newline, c_delim, v_prijs_per_verpakking);
fac.imp_getfield (v_newline, c_delim, v_aantal_per_verpakking);
fac.imp_getfield (v_newline, c_delim, v_btwperc);
fac.imp_getfield (v_newline, c_delim, v_uom);
v_aanduiding :=
'['
|| v_receiver
|| '|'
|| v_customer
|| '|'
|| v_orderdatum
|| '|'
|| v_bestelnr
|| '|'
|| v_nummer
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF header_is_valid = 0
THEN
IF UPPER (TRIM (v_receiver)) = 'RECEIVER'
AND UPPER (TRIM (v_receiverName)) = 'RECEIVERNAME'
AND UPPER (TRIM (v_customer)) = 'CUSTOMER'
AND UPPER (TRIM (v_customerName)) = 'CUSTOMERNAME'
AND UPPER (TRIM (v_orderdatum)) = 'ORDERDATUM'
AND UPPER (TRIM (v_bestelnr)) = 'BESTELNR'
AND UPPER (TRIM (v_nummer)) = 'NUMMER'
AND UPPER (TRIM (v_questornummer)) = 'QUESTORNUMMER'
AND UPPER (TRIM (v_questoromschrijving)) = 'QUESTOROMSCHRIJVING'
AND UPPER (TRIM (v_inkoopprijs)) = 'INKOOPPRIJS'
AND UPPER (TRIM (v_aantal)) = 'AANTAL'
AND UPPER (TRIM (v_prijs_per_verpakking)) = 'PRIJS_PER_VERPAKKING'
AND UPPER (TRIM (v_aantal_per_verpakking)) = 'AANTAL_PER_VERPAKKING'
AND UPPER (TRIM (v_btwperc)) = 'BTWPERC'
AND UPPER (TRIM (v_uom)) = 'UOM'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Receiver ongeldig/ongedefinieerd of te lang';
v_receiver := TRIM (v_receiver);
IF v_receiver IS NULL OR LENGTH (v_receiver) > 25
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'ReceiverName ongeldig/ongedefinieerd of te lang';
v_receiverName := TRIM (v_receiverName);
IF v_receiverName IS NULL OR LENGTH (v_receiverName) > 28
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Customer ongeldig/ongedefinieerd of te lang';
v_customer := TRIM (v_customer);
IF v_customer IS NULL OR LENGTH (v_customer) > 30
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
-- Don't care
v_errormsg := 'CustomerName ongeldig';
v_customerName := TRIM (v_customerName);
--
v_errormsg := 'Orderdatum ongeldig';
v_orderdatum := TRIM (v_orderdatum);
IF fac.safe_to_date (v_orderdatum, 'yyyymmdd hh24:mi:ss') IS NULL
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Orderdatum wordt genegeerd!');
END IF;
--
v_errormsg := 'Bestelnr ongeldig/ongedefinieerd of te lang';
v_bestelnr := TRIM (v_bestelnr);
IF v_bestelnr IS NULL OR LENGTH (v_bestelnr) > 50
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Artikelnummer ongeldig/ongedefinieerd of te lang';
v_nummer := TRIM (v_nummer);
IF v_nummer IS NULL OR LENGTH (v_nummer) > 32
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
-- Don't care
v_errormsg := 'Questornummer ongeldig';
v_questornummer := TRIM (v_questornummer);
--
v_errormsg := 'Artikelomschrijving ongeldig/ongedefinieerd';
v_questoromschrijving := TRIM (v_questoromschrijving);
IF v_questoromschrijving IS NULL
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Inkoopprijs ongeldig';
v_inkoopprijs := REPLACE (v_inkoopprijs, ',', '.');
IF fac.safe_to_number (v_inkoopprijs) IS NULL
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Inkoopprijs wordt genegeerd!');
END IF;
--
v_errormsg := 'Aantal ongeldig';
v_aantal := REPLACE (v_aantal, ',', '.');
IF fac.safe_to_number (v_aantal) IS NULL
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'PrijsPerVerpakking ongeldig';
v_prijs_per_verpakking := REPLACE (v_prijs_per_verpakking, ',', '.');
IF fac.safe_to_number (v_prijs_per_verpakking) IS NULL
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'PrijsPerVerpakking wordt genegeerd!');
END IF;
--
v_errormsg := 'AantalPerVerpakking ongeldig';
v_aantal_per_verpakking := REPLACE (v_aantal_per_verpakking, ',', '.');
IF fac.safe_to_number (v_aantal_per_verpakking) IS NULL
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'AantalPerVerpakking wordt genegeerd!');
END IF;
--
v_errormsg := 'BTW-percentage ongeldig';
v_btwperc := REPLACE (v_btwperc, ',', '.');
IF fac.safe_to_number (v_btwperc) IS NULL
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'BTW-percentage wordt genegeerd!');
END IF;
-- Don't care
v_errormsg := 'Eenheid ongeldig';
v_uom := TRIM (v_uom);
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout wegschrijven importregel';
INSERT INTO svrz_imp_quartomulti (imp_log_run,
receiver,
receiverName,
customer,
customerName,
orderdatum,
bestelnr,
nummer,
questornummer,
questoromschrijving,
inkoopprijs,
aantal,
prijs_per_verpakking,
aantal_per_verpakking,
btwperc,
uom)
VALUES (p_import_key,
SUBSTR (v_receiver, 1, 25),
SUBSTR (v_receiverName, 1, 100),
SUBSTR (v_customer, 1, 30),
SUBSTR (v_customerName, 1, 100),
fac.safe_to_date (v_orderdatum,
'yyyymmdd hh24:mi:ss'),
SUBSTR (v_bestelnr, 1, 50),
SUBSTR (v_nummer, 1, 32),
SUBSTR (v_questornummer, 1, 50),
SUBSTR (v_questoromschrijving, 1, 100),
fac.safe_to_number (v_inkoopprijs),
fac.safe_to_number (v_aantal),
fac.safe_to_number (v_prijs_per_verpakking),
fac.safe_to_number (v_aantal_per_verpakking),
fac.safe_to_number (v_btwperc),
SUBSTR (v_uom, 1, 30));
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'');
END;
END IF;
END IF;
END;
END LOOP;
IF header_is_valid = 0
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'Inleesproces/#ingelezen importregels: ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (
p_import_key,
'S',
'Inleesproces/#ongeldige niet ingelezen importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
'');
END IF;
DELETE FROM fac_imp_file
WHERE fac_import_key = p_import_key;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inleesproces Quarto afgebroken!');
END;
/
/* Formatted on 11-5-2015 15:12:48 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE svrz_update_quarto (p_import_key IN NUMBER)
AS
-- Cursor loopt - op bestelnr! - over alle nieuw ingelezen Quarto POs.
CURSOR c1
IS
SELECT x.receiver,
x.receiverName,
b.lev_key,
b.aantal lev_aant,
d.cat_key,
d.aantal cat_aant,
x.customer,
x.customerName,
p.prs_key,
p.afl_key,
p.aantal prs_aant,
k.bes_kenmerk_key,
TO_CHAR (x.orderdatum, 'dd-mm-yyyy') orderdatum,
x.bestelnr
FROM (SELECT DISTINCT receiver, receiverName, customer, customerName, orderdatum, bestelnr
FROM svrz_imp_quartomulti
WHERE imp_log_run = p_import_key) x
LEFT JOIN ( SELECT TRIM (prs_bedrijf_naam_upper) lev_id_upper,
MAX (prs_bedrijf_key) lev_key,
COUNT ( * ) aantal
FROM prs_v_aanwezigbedrijf
GROUP BY TRIM (prs_bedrijf_naam_upper)) b
ON UPPER (x.receiverName) = b.lev_id_upper
LEFT JOIN ( SELECT UPPER(TRIM(SUBSTR (ins_discipline_omschrijving, 3))) cat_id_upper,
MAX (ins_discipline_key) cat_key,
COUNT ( * ) aantal
FROM bes_discipline
WHERE ins_discipline_verwijder IS NULL
GROUP BY UPPER(TRIM(SUBSTR (ins_discipline_omschrijving, 3)))) d
ON UPPER (SUBSTR (x.receiverName, 1, 28)) = d.cat_id_upper
LEFT JOIN ( SELECT UPPER (TRIM (prs_perslid_voornaam)) prs_id_upper,
MAX (prs_perslid_key) prs_key,
MAX (mld_adres_key) afl_key,
COUNT ( * ) aantal
FROM prs_v_aanwezigperslid
GROUP BY UPPER (TRIM (prs_perslid_voornaam))) p
ON UPPER (x.customer) = p.prs_id_upper
LEFT JOIN (SELECT bes_srtinstallatie_key, bes_kenmerk_key
FROM bes_kenmerk
WHERE bes_kenmerk_verwijder IS NULL
AND bes_srtkenmerk_key = 1 -- Opmerking intern
AND bes_kenmerk_niveau = 'D') k
ON UPPER (d.cat_key) = k.bes_srtinstallatie_key
ORDER BY bestelnr;
c_grp_oms VARCHAR2 (200) := 'Onbekend';
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot NUMBER (10) := 0;
v_count_new NUMBER (10) := 0;
v_count NUMBER;
v_autoaccept bes_disc_params.bes_disc_params_autoacceptrfo%TYPE;
v_auto_order bes_disc_params.bes_disc_params_auto_order%TYPE;
v_leverdagen bes_disc_params.bes_disc_params_leverdagen%TYPE;
v_kpn_key prs_kostenplaats.prs_kostenplaats_key%TYPE;
v_bes_key bes_bestelling.bes_bestelling_key%TYPE;
BEGIN
-- Loop over alle nieuw ingelezen Quarto POs.
FOR po IN c1
LOOP
BEGIN
v_aanduiding :=
'['
|| po.receiverName
|| '|'
|| po.customer
|| '|'
|| po.orderdatum
|| '|'
|| po.bestelnr
|| '] ';
v_count_tot := v_count_tot + 1;
-- Valideer dat configuratie 1-duidig is!
v_errormsg := 'Fout controleren configuratie.';
IF po.lev_aant = 1
AND po.cat_aant = 1
AND po.prs_aant = 1
AND po.bes_kenmerk_key IS NOT NULL
THEN
v_errormsg := 'Fout bepalen catalogus.';
SELECT bes_disc_params_autoacceptrfo,
bes_disc_params_auto_order,
bes_disc_params_leverdagen
INTO v_autoaccept, v_auto_order, v_leverdagen
FROM bes_disc_params
WHERE bes_ins_discipline_key = po.cat_key;
v_errormsg := 'Fout bepalen kostenplaats.';
SELECT a.prs_kostenplaats_key
INTO v_kpn_key
FROM prs_perslid p, prs_afdeling a
WHERE p.prs_perslid_key = po.prs_key
AND p.prs_afdeling_key = a.prs_afdeling_key;
v_errormsg := 'Fout controleren Quarto-bestelnr.';
SELECT COUNT ( * )
INTO v_count
FROM bes_kenmerkbestell bk, bes_kenmerk k
WHERE bk.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = 1 -- Opmerking intern
AND INSTR (bk.bes_kenmerkbestell_waarde, po.bestelnr) > 0 ;
IF v_count = 0
THEN
v_errormsg := 'Fout toevoegen bestelling.';
INSERT INTO bes_bestelling (prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
bes_bestelling_leverdatum,
mld_adres_key_lev,
bes_bestelling_plaats,
bes_bestelling_module,
bes_bestelling_levkosten,
bes_bestelling_korting)
VALUES (po.prs_key,
po.prs_key,
v_kpn_key,
TRUNC(fac.datumtijdplusuitvoertijd (SYSDATE,
v_leverdagen,
'DAGEN')),
po.afl_key,
NULL,
'BES',
0,
0)
RETURNING bes_bestelling_key
INTO v_bes_key;
-- Vul 'Opmerking intern'-kenmerkveld met bestelnr (orderdatum)
-- uit Quarto!
v_errormsg := 'Fout toevoegen kenmerk.';
INSERT INTO bes_kenmerkbestell (bes_bestelling_key,
bes_kenmerk_key,
bes_kenmerkbestell_waarde)
VALUES (v_bes_key,
po.bes_kenmerk_key,
'Quarto-bestelnr: '
|| po.bestelnr
|| ' ('
|| po.orderdatum
|| ')');
-- Loop over alle orderitems per Quarto PO.
FOR item
IN ( SELECT nummer,
questornummer,
questoromschrijving,
inkoopprijs,
aantal,
prijs_per_verpakking,
aantal_per_verpakking,
btwperc,
uom
FROM svrz_imp_quartomulti
WHERE imp_log_run = p_import_key
AND bestelnr = po.bestelnr
ORDER BY nummer)
LOOP
BEGIN
v_errormsg := 'Fout toevoegen artikel.';
bes.upsert_srtdeel (po.cat_key, -- ins_discipline_key
c_grp_oms, -- bes_srtgroep_omschrijving
item.questoromschrijving,
item.prijs_per_verpakking,
item.btwperc,
item.uom,
item.nummer,
po.lev_key,
NULL, -- Vervaldatum
'', -- Image
item.aantal_per_verpakking,
''); -- Opmerking
v_errormsg := 'Fout toevoegen bestelling-item.';
INSERT INTO bes_bestelling_item (bes_bestelling_key,
bes_srtdeel_key,
bes_bestelling_item_aantal,
bes_bestelling_item_brutoprijs,
bes_bestelling_item_inkprijs,
bes_bestelling_item_prijs)
SELECT v_bes_key,
sd.bes_srtdeel_key,
item.aantal,
bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL),
bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, NULL),
item.prijs_per_verpakking
FROM bes_srtdeel sd, bes_srtgroep sg
WHERE sg.ins_discipline_key = po.cat_key
AND sg.bes_srtgroep_omschrijving = c_grp_oms
AND sg.bes_srtgroep_key = sd.bes_srtgroep_key
AND sd.bes_srtdeel_nr = item.nummer
AND sd.bes_srtdeel_omschrijving = item.questoromschrijving
AND sd.bes_srtdeel_btw = item.btwperc
AND sd.bes_srtdeel_eenheid = item.uom
AND sd.bes_srtdeel_veelvoud = item.aantal_per_verpakking
ORDER BY sd.bes_srtdeel_key DESC;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'ITEM-loop');
END;
END LOOP;
fac.trackaction ('BESNEW',
v_bes_key,
po.prs_key,
NULL,
NULL);
bes.setbestellingstatus (v_bes_key, po.prs_key, po.prs_key);
IF v_auto_order = 1
THEN
bes.makeOrders (po.prs_key, v_bes_key);
END IF;
COMMIT;
v_count_new := v_count_new + 1;
ELSE
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Quarto-bestelnr bestaat al');
END IF;
ELSE
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inrichtingsfout');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'PO-loop');
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'POs/#ingelezen: ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (p_import_key,
'S',
'POs/#toegevoegd: ' || TO_CHAR (v_count_new),
'');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'Importproces Quarto afgebroken!');
END;
/
/* Formatted on 30-3-2015 23:36:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW svrz_v_export_nachtwerk
(
RESULT,
result_order
)
AS
SELECT 'CALL GENEREER1BESOPDRPDF.BAT '
|| TO_CHAR (bo.bes_bestelopdr_key)
|| ' PUR-C1'
|| REPLACE (
SUBSTR ('0000000' || bo.bes_bestelopdr_id,
INSTR ('0000000' || bo.bes_bestelopdr_id, '/') - 6),
'/',
'-'),
bes_bestelopdr_key
FROM bes_bestelopdr bo, fac_tracking t
WHERE bo.bes_bestelopdr_status = 4 -- In bestelling
AND bo.bes_bestelopdr_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 142 -- BES2SN
AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE - 1)
UNION ALL
SELECT 'CALL GENEREER1MLDOPDRPDF.BAT '
|| TO_CHAR (o.mld_opdr_key)
|| ' PUR-N1'
|| SUBSTR ('0000000' || TO_CHAR (o.mld_melding_key), -6)
|| '-'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr),
mld_opdr_key
FROM mld_opdr o, fac_tracking t
WHERE o.mld_statusopdr_key = 5 -- Uitgegeven
AND o.mld_opdr_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 91 -- ORDSNT
AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE - 1);
-- Dummy export NACHTWERK!
CREATE OR REPLACE PROCEDURE svrz_select_nachtwerk (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
c_lev_cond_srtk NUMBER (10) := 81;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
-- Cursor loopt over alle bestelopdracht-items met status 'In bestelling';
-- deze worden verondersteld te zijn geleverd na 'leverdagen'+'notidagen'!
CURSOR cboi
IS
SELECT DISTINCT bo.bes_bestelopdr_key
FROM bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_bestelling b,
bes_srtdeel sd,
bes_srtgroep sg,
bes_disc_params dp
WHERE bo.bes_bestelopdr_status = 4 -- In bestelling
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
--AND sg.ins_discipline_key = -1
AND sg.ins_discipline_key = dp.bes_ins_discipline_key
AND dp.bes_disc_params_noti_dagen IS NOT NULL
AND (b.bes_bestelling_datum IS NULL OR fac.datumtijdplusuitvoertijd (b.bes_bestelling_leverdatum, dp.bes_disc_params_noti_dagen, 'DAGEN') < SYSDATE);
-- Cursor loopt over alle bestelling-items met status 'Besteld' waarvan
-- de bijbehorende bestelopdracht-items zijn geleverd; deze worden dan ook
-- gesloten!
CURSOR cbi
IS
SELECT DISTINCT b.bes_bestelling_key
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_bestelopdr_item boi
WHERE b.bes_bestelling_status = 5 -- Besteld
AND b.bes_bestelling_key = bi.bes_bestelling_key
--AND bi.bes_bestelling_item_aantal != COALESCE (bi.bes_bestelling_item_aantalontv, 0)
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_item_aantal = boi.bes_bestelopdr_item_aantalontv;
-- SVRZ#55788: Cursor loopt over de bestel-catalogi en maakt Label-kenmerk
-- aan met (een kopie van) de Leveringscondities zoals bij de
-- betreffende relatie ingevuld (en indien nog niet aangemaakt).
CURSOR ccat
IS
SELECT dp.bes_ins_discipline_key, kl.prs_kenmerklink_waarde lev_condities
FROM bes_disc_params dp,
prs_kenmerklink kl
WHERE dp.bes_disc_params_punch_bedr_key = kl.prs_link_key
AND kl.prs_kenmerk_key = 1000 -- Leveringscondities
AND NOT EXISTS
(SELECT 1
FROM bes_kenmerk
WHERE bes_srtkenmerk_key = c_lev_cond_srtk
AND bes_srtinstallatie_key = dp.bes_ins_discipline_key)
UNION ALL
SELECT DISTINCT dp.bes_ins_discipline_key, kl.prs_kenmerklink_waarde lev_condities
FROM bes_disc_params dp,
bes_srtgroep sg1,
bes_srtdeel sd1,
prs_kenmerklink kl
WHERE dp.bes_disc_params_punch_bedr_key IS NULL
AND dp.bes_ins_discipline_key = sg1.ins_discipline_key
AND sg1.bes_srtgroep_key = sd1.bes_srtgroep_key
AND sd1.prs_bedrijf_key = kl.prs_link_key
AND kl.prs_kenmerk_key = 1000 -- Leveringscondities
AND NOT EXISTS
(SELECT 1
FROM bes_srtgroep sg2, bes_srtdeel sd2
WHERE sg2.bes_srtgroep_key = sd2.bes_srtgroep_key
AND sg2.ins_discipline_key = sg1.ins_discipline_key
AND sd2.prs_bedrijf_key != sd1.prs_bedrijf_key)
AND NOT EXISTS
(SELECT 1
FROM bes_kenmerk
WHERE bes_srtkenmerk_key = c_lev_cond_srtk
AND bes_srtinstallatie_key = dp.bes_ins_discipline_key);
BEGIN
v_errormsg := 'Fout leveren bestelopdracht';
FOR rec IN cboi
LOOP
-- Zeg dat alles geleverd is wat besteld is.
UPDATE bes_bestelopdr_item
SET bes_bestelopdr_item_aantalontv = bes_bestelopdr_item_aantal
WHERE bes_bestelopdr_key = rec.bes_bestelopdr_key;
bes.updatebestelopdrstatus (rec.bes_bestelopdr_key, NULL);
END LOOP;
v_errormsg := 'Fout sluiten bestelaanvraag';
FOR rec IN cbi
LOOP
-- Sluit alle aanvraagregels af die nu geheel geleverd zijn.
UPDATE bes_bestelling_item
SET bes_bestelling_item_aantalontv = bes_bestelling_item_aantal
WHERE bes_bestelling_key = rec.bes_bestelling_key;
bes.updatebestellingstatus (rec.bes_bestelling_key, NULL);
END LOOP;
COMMIT;
v_errormsg := 'Fout toevoegen leveringscondities';
FOR rec IN ccat
LOOP
INSERT INTO bes_kenmerk (bes_srtkenmerk_key,
bes_srtinstallatie_key,
bes_kenmerk_type,
bes_kenmerk_niveau,
bes_kenmerk_volgnummer,
bes_kenmerk_default)
VALUES (c_lev_cond_srtk,
rec.bes_ins_discipline_key,
'B',
'D',
1,
rec.lev_condities);
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', 'Proces NACHTWERK afgebroken!', v_errormsg);
END svrz_select_nachtwerk;
/
/* Formatted on 12-9-2014 17:42:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW svrz_v_imp_bes_artikel_sync
(
fclt_f_catalogusnaam,
leverancier,
catdatum,
artikelnr,
groep,
omschrijving,
prijs,
eenheid,
picture,
orderaantal,
tax,
duedate,
inkoopprijs,
minimum,
staffeltabel,
wijzigdagen,
annuleerdagen,
opmerking
)
AS
SELECT td.ins_discipline_omschrijving,
b.prs_bedrijf_naam,
TO_CHAR (td.ins_discipline_aanmaak, 'yyyymmdd'),
sd.bes_srtdeel_nr,
sg.bes_srtgroep_omschrijving,
sd.bes_srtdeel_omschrijving,
TO_CHAR (bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)),
sd.bes_srtdeel_eenheid,
sd.bes_srtdeel_image,
TO_CHAR (sd.bes_srtdeel_veelvoud),
TO_CHAR (sd.bes_srtdeel_btw),
TO_CHAR (sd.bes_srtdeel_vervaldatum, 'yyyymmdd'),
TO_CHAR (bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, NULL)),
NULL,
bs.bes_staffeltabel_naam,
TO_CHAR (sd.bes_srtdeel_wijzigdagen),
TO_CHAR (sd.bes_srtdeel_annuleerdagen),
sd.bes_srtdeel_opmerking
FROM ins_tab_discipline td,
bes_srtgroep sg,
bes_srtdeel sd,
prs_bedrijf b,
bes_staffeltabel bs
WHERE td.ins_discipline_module = 'BES'
AND td.ins_discipline_verwijder IS NULL
AND td.ins_discipline_key = sg.ins_discipline_key
AND sg.bes_srtgroep_verwijder IS NULL
AND sg.bes_srtgroep_key = sd.bes_srtgroep_key
AND sd.bes_srtdeel_verwijder IS NULL
AND sd.prs_bedrijf_key = b.prs_bedrijf_key
AND bs.bes_staffeltabel_key(+) = sd.bes_staffeltabel_key;
/* Formatted on 3-11-2014 16:36:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW svrz_v_afleveradres_lijst
(
adres_id,
adres_naam,
adres,
postcode,
plaats,
land
)
AS
SELECT COALESCE (a.mld_adres_gebouw_ruimte, l.alg_locatie_code)
|| SUBSTR (
a.mld_adres_bezoek_adres,
DECODE (INSTR (a.mld_adres_bezoek_adres, ' ', -1),
0, 100,
INSTR (a.mld_adres_bezoek_adres, ' ', -1) + 1))
adres_id,
a.mld_adres_naam adres_naam,
a.mld_adres_bezoek_adres adres,
a.mld_adres_bezoek_postcode postcode,
a.mld_adres_bezoek_plaats plaats,
a.mld_adres_bezoek_land land
FROM mld_adres a, alg_locatie l
WHERE a.mld_adres_verwijder IS NULL
AND a.mld_adres_afleveradres = 1
AND a.alg_locatie_key = l.alg_locatie_key;
CREATE OR REPLACE VIEW svrz_v_afleveradres_check
(
loc_key,
loc_code,
loc_oms,
loc_badres,
loc_bposcode,
loc_bplaats,
loc_bland,
loc_padres,
loc_ppostcode,
loc_pplaats,
loc_pland,
geb_key,
geb_code,
geb_naam,
afl_key,
afl_loc_key,
afl_naam,
afl_geb_ruimte,
afl_badres,
afl_bpostcode,
afl_bplaats,
afl_bland,
afl_padres,
afl_ppostcode,
afl_pplaats,
afl_pland
)
AS
SELECT TO_CHAR (x.alg_locatie_key) loc_key,
x.alg_locatie_code loc_code,
x.alg_locatie_omschrijving loc_oms,
x.alg_locatie_adres loc_badres,
x.alg_locatie_postcode loc_bposcode,
x.alg_locatie_plaats loc_bplaats,
x.alg_locatie_land loc_bland,
x.alg_locatie_post_adres loc_padres,
x.alg_locatie_post_postcode loc_ppostcode,
x.alg_locatie_post_plaats loc_pplaats,
x.alg_locatie_post_land loc_pland,
TO_CHAR (x.alg_gebouw_key) geb_key,
x.alg_gebouw_upper geb_code,
x.alg_gebouw_naam geb_naam,
TO_CHAR (y.mld_adres_key) afl_key,
TO_CHAR (y.alg_locatie_key) afl_loc_key,
y.mld_adres_naam afl_naam,
y.mld_adres_gebouw_ruimte gebouw_ruimte,
y.mld_adres_bezoek_adres afl_badres,
y.mld_adres_bezoek_postcode afl_bpostcode,
y.mld_adres_bezoek_plaats afl_bplaats,
y.mld_adres_bezoek_land afl_bland,
y.mld_adres_post_adres afl_padres,
y.mld_adres_post_postcode afl_ppostcode,
y.mld_adres_post_plaats afl_pplaats,
y.mld_adres_post_land afl_pland
FROM (SELECT l.alg_locatie_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
l.alg_locatie_adres,
l.alg_locatie_postcode,
l.alg_locatie_plaats,
l.alg_locatie_land,
l.alg_locatie_post_adres,
l.alg_locatie_post_postcode,
l.alg_locatie_post_plaats,
l.alg_locatie_post_land,
g.alg_gebouw_key,
g.alg_gebouw_upper,
g.alg_gebouw_naam,
g.mld_adres_key
FROM alg_v_aanweziglocatie l, alg_v_aanweziggebouw g
WHERE l.alg_locatie_key = g.alg_locatie_key) x
FULL JOIN
(SELECT ma.mld_adres_key,
ma.mld_adres_naam,
ma.mld_adres_gebouw_ruimte,
ma.mld_adres_bezoek_adres,
ma.mld_adres_bezoek_postcode,
ma.mld_adres_bezoek_plaats,
ma.mld_adres_bezoek_land,
ma.mld_adres_post_adres,
ma.mld_adres_post_postcode,
ma.mld_adres_post_plaats,
ma.mld_adres_post_land,
ma.alg_locatie_key
FROM mld_adres ma
WHERE ma.mld_adres_afleveradres = 1
AND ma.mld_adres_verwijder IS NULL) y
ON x.mld_adres_key = y.mld_adres_key;
/* Formatted on 21-4-2015 15:52:25 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW svrz_v_noti_order_afschrift
(
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey
)
AS -- Afschrift C-orders!
SELECT DISTINCT
sn.fac_srtnotificatie_code,
NULL,
b.prs_perslid_key, -- Besteller
REPLACE (
sn.fac_srtnotificatie_oms,
'##CNR##',
'PUR-C1'
|| SUBSTR ('0000000' || bo.bes_bestelopdr_id, INSTR ('0000000' || bo.bes_bestelopdr_id, '/') - 6)),
bo.bes_bestelopdr_key,
NULL,
NULL,
NULL
FROM fac_tracking t,
bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_bestelling b,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE t.fac_srtnotificatie_key = 142 -- BES2SN
AND t.fac_tracking_refkey = bo.bes_bestelopdr_key
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND sn.fac_srtnotificatie_code = 'CUST01'
AND nj.fac_notificatie_job_view = 'SVRZ_V_NOTI_ORDER_AFSCHRIFT'
AND t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
UNION ALL -- Afschrift N-orders!
SELECT sn.fac_srtnotificatie_code,
NULL,
m.prs_perslid_key, -- Aanvrager
REPLACE (
sn.fac_srtnotificatie_oms,
'##NNR##',
'PUR-N1'
|| SUBSTR ('0000000' || TO_CHAR (o.mld_melding_key), -6)
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)),
o.mld_opdr_key,
NULL,
NULL,
NULL
FROM fac_tracking t,
mld_opdr o,
mld_melding m,
mld_stdmelding sm,
ins_tab_discipline td,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE t.fac_srtnotificatie_key = 91 -- ORDSNT
AND t.fac_tracking_refkey = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.ins_srtdiscipline_key = 1 -- Inkoop
AND sn.fac_srtnotificatie_code = 'CUST02'
AND nj.fac_notificatie_job_view = 'SVRZ_V_NOTI_ORDER_AFSCHRIFT'
AND t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun;
CREATE OR REPLACE VIEW svrz_v_noti_cntreminder
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT '',
NULL,
c.prs_perslid_key_beh,
'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',
c.cnt_contract_key,
NULL
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE c.ins_discipline_key != 1541 -- Onderhoudscontracten HO niet notificeren!
AND c.cnt_contract_status = 0 -- Actief
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key) AND cnt.cnt_getopzegdatum (c.cnt_contract_key);
CREATE OR REPLACE VIEW svrz_v_rap_contactafdeling
(
afdeling,
bedrijf,
post_adres,
post_postcode,
post_plaats,
post_land,
bezoek_adres,
bezoek_postcode,
bezoek_plaats,
bezoek_land,
telefoon,
fax,
telefoon2,
contactpersoon,
contactpersoon_telefoon,
contactpersoon_fax,
opmerking,
everancier_nr,
overeenkomst_nr,
overeenkomst_datum,
email,
fclt_h_afdeling_key
)
AS
SELECT DISTINCT a.prs_afdeling_naam,
b.prs_bedrijf_naam,
b.prs_bedrijf_post_adres,
b.prs_bedrijf_post_postcode,
b.prs_bedrijf_post_plaats,
b.prs_bedrijf_post_land,
b.prs_bedrijf_bezoek_adres,
b.prs_bedrijf_bezoek_postcode,
b.prs_bedrijf_bezoek_plaats,
b.prs_bedrijf_bezoek_land,
b.prs_bedrijf_telefoon,
b.prs_bedrijf_fax,
b.prs_bedrijf_telefoon2,
b.prs_bedrijf_contact_persoon,
b.prs_bedrijf_contact_telefoon,
b.prs_bedrijf_contact_fax,
b.prs_bedrijf_opmerking,
b.prs_leverancier_nr,
b.prs_overeenkomst_nr,
b.prs_overeenkomst_datum,
b.prs_bedrijf_email,
a.prs_afdeling_key
FROM cnt_contract c, prs_bedrijf b, prs_v_afdeling a
WHERE cnt_contract_verwijder IS NULL
AND c.cnt_contract_status = 0
AND a.prs_afdeling_key = c.prs_afdeling_key_eig
AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key;
/* Formatted on 19-5-2016 10:42:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW svrz_v_rap_ho_contracten
(
hide_f_sortering,
fclt_x_eindjaar,
cnt_contract_key,
contractnr,
locatie,
beschrijving,
contractpartij,
contractbedrag, -- Toegevoegd met SVRZ#37644
einddatum
)
AS
SELECT x.prs_bedrijf_naam || x.cnt_contract_nummer_intern || '.' || x.cnt_contract_versie,
TO_CHAR (x.cnt_contract_looptijd_tot, 'yyyy'),
x.cnt_contract_key,
x.cnt_contract_nummer_intern || DECODE (x.cnt_contract_versie, NULL, '', 0, '', '.' || x.cnt_contract_versie),
cp.scope locatie,
x.cnt_contract_omschrijving,
x.prs_bedrijf_naam,
x.cnt_contract_kosten,
x.cnt_contract_looptijd_tot
FROM (SELECT c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_versie,
c.cnt_contract_omschrijving,
b.prs_bedrijf_naam,
c.cnt_contract_kosten,
c.cnt_contract_looptijd_tot
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE c.ins_discipline_key = 1541 -- Onderhoudscontracten HO
AND c.cnt_contract_status = 0 -- Actief
AND c.cnt_contract_looptijd_tot > TRUNC (SYSDATE, 'yyyy')
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) x
LEFT JOIN
( SELECT cp.cnt_contract_key, LISTAGG (cp.locatie, CHR (13) || CHR (10)) WITHIN GROUP (ORDER BY cp.locatie) scope
FROM (SELECT cp.cnt_contract_key,
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' locatie
FROM cnt_contract_plaats cp, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'L'
AND cp.cnt_alg_plaats_key = l.alg_locatie_key
UNION
SELECT cp.cnt_contract_key,
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' locatie
FROM cnt_contract_plaats cp, alg_gebouw g, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'G'
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key) cp
GROUP BY cp.cnt_contract_key) cp
ON x.cnt_contract_key = cp.cnt_contract_key;
/*
-- SVRZ#38249
CREATE OR REPLACE VIEW svrz_v_rap_contractoverzicht
(
hide_f_sortering,
fclt_3d_discipline_key,
cnt_contract_key,
fclt_f_contractsoort,
fclt_x_eindjaar,
contractnr,
locatie,
beschrijving,
contractpartij,
contractbedrag,
einddatum
)
AS
SELECT x.ins_discipline_omschrijving || x.prs_bedrijf_naam || x.cnt_contract_nummer_intern || '.' || x.cnt_contract_versie,
x.ins_discipline_key,
x.cnt_contract_key,
x.ins_discipline_omschrijving,
TO_CHAR (x.cnt_contract_looptijd_tot, 'yyyy'),
x.cnt_contract_nummer_intern || DECODE (x.cnt_contract_versie, NULL, '', 0, '', '.' || x.cnt_contract_versie),
cp.scope locatie,
x.cnt_contract_omschrijving,
x.prs_bedrijf_naam,
x.cnt_contract_kosten,
x.cnt_contract_looptijd_tot
FROM (SELECT c.ins_discipline_key,
c.cnt_contract_key,
td.ins_discipline_omschrijving,
c.cnt_contract_nummer_intern,
c.cnt_contract_versie,
c.cnt_contract_omschrijving,
b.prs_bedrijf_naam,
c.cnt_contract_kosten,
c.cnt_contract_looptijd_tot
FROM cnt_v_aanwezigcontract c, ins_tab_discipline td, prs_bedrijf b
WHERE c.cnt_contract_status = 0 -- Actief
AND c.cnt_contract_looptijd_tot > TRUNC (SYSDATE, 'yyyy')
AND c.ins_discipline_key = td.ins_discipline_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) x
LEFT JOIN
( SELECT cp.cnt_contract_key, LISTAGG (cp.locatie, CHR (13) || CHR (10)) WITHIN GROUP (ORDER BY cp.locatie) scope
FROM (SELECT cp.cnt_contract_key,
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' locatie
FROM cnt_contract_plaats cp, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'L'
AND cp.cnt_alg_plaats_key = l.alg_locatie_key
UNION
SELECT cp.cnt_contract_key,
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' locatie
FROM cnt_contract_plaats cp, alg_gebouw g, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'G'
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key) cp
GROUP BY cp.cnt_contract_key) cp
ON x.cnt_contract_key = cp.cnt_contract_key;
*/
/* Formatted on 11-3-2016 9:42:24 (QP5 v5.136.908.31019) */
/* Tbv. demo Bedrijfskleding in Acceptatie; met SVRZ#36013 binnenkort misschien definitief (en anders weg)!!!
CREATE OR REPLACE VIEW svrz_v_kleding_artikelen
(
bes_srtdeel_key,
bes_srtdeel_oms,
bes_srtdeel_vvd
)
AS
SELECT sd.bes_srtdeel_key,
sd.bes_srtdeel_omschrijving,
sd.bes_srtdeel_verwijder
FROM bes_srtgroep sg, bes_srtdeel sd
WHERE sg.ins_discipline_key = 1721 -- Wessels B.V.
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key;
*/
-- SVRZ#51694: Notificatie bij update of verwijdering van objecten die vallen
-- onder de disciplines 'Uitleen personeel' en 'Werkkleding'.
CREATE OR REPLACE VIEW svrz_v_rap_bezittingen
(
ins_deel_key,
extra_key, -- Moet zo heten!
gebruiker,
identificatie,
objectsoort,
beschrijving,
registratiedatum,
verwijderdatum,
tonen,
inleverdatum
)
AS
SELECT d.ins_deel_key,
d.ins_alg_ruimte_key, -- Gebruiker
pf.prs_perslid_naam_friendly,
d.ins_deel_omschrijving,
sd.ins_srtdeel_omschrijving,
d.ins_deel_opmerking,
d.ins_deel_aanmaak,
d.ins_deel_verwijder,
DECODE (d.ins_deel_verwijder, NULL, DECODE (SIGN (ADD_MONTHS (d.ins_deel_vervaldatum, 1) - SYSDATE), -1, 0, 1), 0) tonen,
DECODE (SIGN (d.ins_deel_vervaldatum - SYSDATE), -1, d.ins_deel_vervaldatum, NULL) inleverdatum
FROM ins_deel d, -- Inclusief recent verwijderde objecten!
prs_v_perslid_fullnames_all pf,
ins_srtdeel sd
WHERE d.ins_discipline_key IN (781, 2261) -- Uitleen Personeel/Werkkleding
AND d.ins_alg_ruimte_type = 'P'
AND d.ins_alg_ruimte_key = pf.prs_perslid_key
AND COALESCE (d.ins_deel_verwijder, SYSDATE) >= TRUNC (SYSDATE - 1)
AND d.ins_srtdeel_key = sd.ins_srtdeel_key;
CREATE OR REPLACE VIEW svrz_v_noti_bezittingen
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT DISTINCT
sn.fac_srtnotificatie_code,
NULL,
v.extra_key,
REPLACE (sn.fac_srtnotificatie_oms, '##AANT##', (SELECT COUNT ( * ) FROM svrz_v_rap_bezittingen WHERE extra_key = v.extra_key)),
r.fac_usrrap_key,
v.extra_key
FROM svrz_v_rap_bezittingen v, fac_tracking t, fac_usrrap r, fac_srtnotificatie sn
WHERE v.ins_deel_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key IN (93, 94) -- INSNEW/INSUPD
AND NOT EXISTS -- Niet tijdens een import gedaan!
(SELECT 1
FROM fac_import
WHERE fac_import_app_key = 42 -- INS
AND prs_perslid_key = t.prs_perslid_key
AND t.fac_tracking_datum BETWEEN fac_import_datum_gelezen AND fac_import_datum_verwerkt)
AND t.fac_tracking_datum >
DECODE (
TO_CHAR (SYSDATE + 5 / 1440, 'HH24'),
'09', TO_DATE (TO_CHAR (SYSDATE - 1, 'dd-mm-yyyy') || ' 18:00', 'dd-mm-yyyy hh24:mi'),
'12', TO_DATE (TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 09:00', 'dd-mm-yyyy hh24:mi'),
'15', TO_DATE (TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 12:00', 'dd-mm-yyyy hh24:mi'),
'18', TO_DATE (TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 15:00', 'dd-mm-yyyy hh24:mi'),
SYSDATE + 5 / 1440)
AND UPPER (r.fac_usrrap_view_name) = 'SVRZ_V_RAP_BEZITTINGEN'
AND sn.fac_srtnotificatie_code = 'CUST03'
UNION -- INSDEL wordt niet getrackt, dus op basis van ins_deel_verwijder!
SELECT DISTINCT
sn.fac_srtnotificatie_code,
NULL,
v.extra_key,
REPLACE (sn.fac_srtnotificatie_oms, '##AANT##', (SELECT COUNT ( * ) FROM svrz_v_rap_bezittingen WHERE extra_key = v.extra_key)),
r.fac_usrrap_key,
v.extra_key
FROM svrz_v_rap_bezittingen v,
( SELECT d1.ins_deel_key, COUNT ( * ) aantal
FROM ins_deel d1, ins_deel d2
WHERE d1.ins_discipline_key IN (781, 2261)
AND d1.ins_deel_verwijder > TRUNC (SYSDATE - 1) -- Sinds gisteren verwijderd tegelijk met andere objecten
AND d1.ins_deel_verwijder BETWEEN d2.ins_deel_verwijder - 1 / 86400 AND d2.ins_deel_verwijder + 1 / 86400
GROUP BY d1.ins_deel_key) d,
fac_usrrap r,
fac_srtnotificatie sn
WHERE v.ins_deel_key = d.ins_deel_key
AND d.aantal < 10
AND v.verwijderdatum >
DECODE (
TO_CHAR (SYSDATE + 5 / 1440, 'HH24'),
'09', TO_DATE (TO_CHAR (SYSDATE - 1, 'dd-mm-yyyy') || ' 18:00', 'dd-mm-yyyy hh24:mi'),
'12', TO_DATE (TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 09:00', 'dd-mm-yyyy hh24:mi'),
'15', TO_DATE (TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 12:00', 'dd-mm-yyyy hh24:mi'),
'18', TO_DATE (TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 15:00', 'dd-mm-yyyy hh24:mi'),
SYSDATE + 5 / 1440)
AND UPPER (r.fac_usrrap_view_name) = 'SVRZ_V_RAP_BEZITTINGEN'
AND sn.fac_srtnotificatie_code = 'CUST03';
CREATE OR REPLACE VIEW svrz_v_perslid_nr_all
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_full || ' [' || p.prs_perslid_nr || ']',
pf.prs_perslid_naam_friendly || ' [' || p.prs_perslid_nr || ']',
p.prs_perslid_verwijder
FROM prs_perslid p, prs_v_perslid_fullnames_all pf
WHERE SUBSTR (p.prs_perslid_oslogin, 1, 1) != '_'
AND p.prs_perslid_key = pf.prs_perslid_key;
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile