851 lines
30 KiB
SQL
851 lines
30 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific db-configuration for STCH.
|
|
DEFINE thisfile = 'STCH.SQL'
|
|
DEFINE dbuser = '^STCH'
|
|
|
|
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 stch_v_rap_ocr
|
|
(
|
|
opdracht_key,
|
|
opdracht_nummer,
|
|
opdracht_regio,
|
|
opdracht_district,
|
|
opdracht_locatie_code,
|
|
opdracht_locatie,
|
|
opdracht_locatieplaats,
|
|
fclt_3d_locatie_key,
|
|
opdracht_gebouwcode,
|
|
opdracht_gebouw,
|
|
opdracht_verdieping,
|
|
opdracht_ruimtenr,
|
|
opdracht_ruimte,
|
|
opdracht_kostenplaats,
|
|
opdracht_kostenplaats_oms,
|
|
melding_key,
|
|
opdracht_type,
|
|
opdracht_volgnummer,
|
|
opdracht_status,
|
|
opdracht_duur_gepland,
|
|
opdracht_datum,
|
|
opdracht_einddatum,
|
|
opdracht_plandatum,
|
|
opdracht_acceptdatum,
|
|
opdracht_afgemeld,
|
|
opdracht_doorlooptijd,
|
|
opdracht_accepttijd,
|
|
opdracht_omschrijving,
|
|
opdracht_opmerking,
|
|
opdracht_uitvoerende,
|
|
opdracht_uitvoerende_contact,
|
|
opdracht_behandelaar,
|
|
opdracht_contract,
|
|
opdracht_contract_versie,
|
|
opdracht_contactpersoon,
|
|
opdracht_uren,
|
|
opdracht_correctie,
|
|
opdracht_materiaal,
|
|
opdracht_uurtarief,
|
|
opdracht_kosten,
|
|
reason_0_order,
|
|
periode,
|
|
aanvrager,
|
|
organisatie,
|
|
categorie,
|
|
opdracht_gereeddatum,
|
|
kostensoortgroep,
|
|
kostensoortnr,
|
|
kostensoort,
|
|
melding,
|
|
meldingsgroep,
|
|
kostenplaatsnummer
|
|
)
|
|
AS
|
|
SELECT
|
|
DISTINCT o.opdracht_key,
|
|
o.opdracht_nummer,
|
|
o.opdracht_regio,
|
|
o.opdracht_district,
|
|
o.opdracht_locatie_code,
|
|
o.opdracht_locatie,
|
|
o.opdracht_locatieplaats,
|
|
o.fclt_3d_locatie_key,
|
|
o.opdracht_gebouwcode,
|
|
o.opdracht_gebouw,
|
|
o.opdracht_verdieping,
|
|
o.opdracht_ruimtenr,
|
|
o.opdracht_ruimte,
|
|
o.opdracht_kostenplaats,
|
|
o.opdracht_kostenplaats_oms,
|
|
o.melding_key,
|
|
o.opdracht_type,
|
|
o.opdracht_volgnummer,
|
|
o.opdracht_status,
|
|
o.opdracht_duur_gepland,
|
|
o.opdracht_datum,
|
|
o.opdracht_einddatum,
|
|
o.opdracht_plandatum,
|
|
o.opdracht_acceptdatum,
|
|
o.opdracht_afgemeld,
|
|
o.opdracht_doorlooptijd,
|
|
o.opdracht_accepttijd,
|
|
o.opdracht_omschrijving,
|
|
o.opdracht_opmerking,
|
|
o.opdracht_uitvoerende,
|
|
o.opdracht_uitvoerende_contact,
|
|
o.opdracht_behandelaar,
|
|
o.opdracht_contract,
|
|
o.opdracht_contract_versie,
|
|
o.opdracht_contactpersoon,
|
|
o.opdracht_uren,
|
|
o.opdracht_correctie,
|
|
o.opdracht_materiaal,
|
|
o.opdracht_uurtarief,
|
|
o.opdracht_kosten,
|
|
(SELECT f.fac_usrdata_omschr
|
|
FROM fac_usrdata f
|
|
WHERE f.fac_usrdata_key =
|
|
(SELECT mvk.mld_kenmerkopdr_waarde
|
|
FROM mld_kenmerk mk,
|
|
mld_srtkenmerk msk,
|
|
mld_v_aanwezigkenmerkopdr mvk
|
|
WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
|
|
AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key
|
|
AND mvk.mld_opdr_key = mo.mld_opdr_key
|
|
AND mk.mld_kenmerk_niveau = 'O'
|
|
AND msk.mld_srtkenmerk_key = 321))
|
|
reason_0_order,
|
|
TO_CHAR (o.opdracht_datum, 'yyyy-mm') periode,
|
|
p.prs_perslid_naam
|
|
|| NVL2 (p.prs_perslid_voorletters,
|
|
', ' || p.prs_perslid_voorletters,
|
|
'')
|
|
|| NVL2 (p.prs_perslid_tussenvoegsel,
|
|
' ' || p.prs_perslid_tussenvoegsel,
|
|
'')
|
|
|| NVL2 (p.prs_perslid_voornaam,
|
|
' (' || p.prs_perslid_voornaam || ')',
|
|
'')
|
|
aanvrager,
|
|
d.prs_afdeling_naam organisatie,
|
|
md.ins_discipline_omschrijving,
|
|
mo.mld_opdr_einddatum,
|
|
ksg.prs_kostensoortgrp_oms,
|
|
ks.prs_kostensoort_refcode,
|
|
ks.prs_kostensoort_oms,
|
|
std.mld_stdmelding_omschrijving,
|
|
stdg.mld_stdmeldinggroep_oms,
|
|
k.prs_kostenplaats_nr
|
|
FROM mld_v_udr_opdracht o,
|
|
mld_opdr mo,
|
|
prs_kostenplaats k,
|
|
prs_kostenplaatsgrp kpg,
|
|
prs_kostensoort ks,
|
|
prs_kostensoortgrp ksg,
|
|
prs_v_afdeling d,
|
|
prs_perslid p,
|
|
mld_discipline md,
|
|
mld_stdmelding std,
|
|
mld_stdmeldinggroep stdg,
|
|
mld_melding m
|
|
WHERE mo.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
|
AND std.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
|
AND k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
|
|
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND stdg.mld_stdmeldinggroep_key(+) = std.mld_stdmeldinggroep_key
|
|
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
|
AND m.mld_melding_key = mo.mld_melding_key
|
|
AND mo.mld_opdr_key = o.opdracht_key
|
|
AND p.prs_afdeling_key = d.prs_afdeling_key(+)
|
|
AND p.prs_perslid_key = mo.prs_perslid_key
|
|
AND TRUNC (o.opdracht_einddatum) >
|
|
TO_DATE ('01-01-2018', 'dd-mm-yyyy');
|
|
|
|
CREATE OR REPLACE VIEW stch_v_rap_opdrkosten
|
|
(
|
|
CONTRACT_NUMMER,
|
|
EXTERN_NUMMER,
|
|
UITVOERENDE,
|
|
BEDRAG,
|
|
KOSTENPLAATS,
|
|
KOSTENPLAATS_CODE,
|
|
OPDRACHTNR,
|
|
OPDRACHT_AFGEROND
|
|
)
|
|
AS
|
|
SELECT cn.cnt_contract_nummer,
|
|
cn.cnt_contract_nummer_intern,
|
|
pb.prs_bedrijf_naam,
|
|
mo.mld_opdr_kosten,
|
|
pk.prs_kostenplaats_omschrijving,
|
|
pk.prs_kostenplaats_nr,
|
|
sd.ins_srtdiscipline_prefix
|
|
|| TO_CHAR (m.mld_melding_key)
|
|
|| '/'
|
|
|| mo.mld_opdr_bedrijfopdr_volgnr,
|
|
mld.getopdrachtstatusdate (mo.mld_opdr_key, 9)
|
|
FROM mld_opdr mo,
|
|
cnt_contract cn,
|
|
mld_melding m,
|
|
ins_srtdiscipline sd,
|
|
mld_stdmelding s,
|
|
mld_discipline md,
|
|
prs_kostenplaats pk,
|
|
prs_bedrijf pb
|
|
-- mld_kenmerkopdr mk
|
|
WHERE mo.cnt_contract_key = cn.cnt_contract_key(+)
|
|
AND m.mld_melding_key = mo.mld_melding_key(+)
|
|
AND s.mld_stdmelding_key = m.mld_stdmelding_key
|
|
AND md.ins_discipline_key = s.mld_ins_discipline_key
|
|
AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
|
|
AND mo.prs_kostenplaats_key = pk.prs_kostenplaats_key
|
|
AND mo.mld_uitvoerende_keys = pb.prs_bedrijf_key
|
|
-- AND mo.mld_opdr_key = mk.mld_opdr_key
|
|
-- AND mk.mld_kenmerk_key = 1603
|
|
-- AND mk.mld_kenmerkopdr_waarde = '142' -- Goedgekeurd = Ja
|
|
AND trunc (mld.getopdrachtstatusdate (mo.mld_opdr_key, 9)) = trunc (sysdate - 1)
|
|
AND mo.mld_opdr_kosten IS NOT NULL
|
|
AND mo.mld_opdr_kosten NOT LIKE '0';
|
|
|
|
CREATE OR REPLACE VIEW stch_v_rap_sapchecklist
|
|
(
|
|
MLD_OPDR_KEY,
|
|
CONTRACT_NUMMER,
|
|
EXTERN_NUMMER,
|
|
UITVOERENDE,
|
|
BEDRAG,
|
|
KOSTENPLAATS,
|
|
KOSTENPLAATS_CODE,
|
|
OPDRACHTNR,
|
|
GOEDGEKEURD,
|
|
OPDRACHT_AFGEROND
|
|
)
|
|
AS
|
|
SELECT mo.mld_opdr_key,
|
|
cn.cnt_contract_nummer,
|
|
cn.cnt_contract_nummer_intern,
|
|
pb.prs_bedrijf_naam,
|
|
mo.mld_opdr_kosten,
|
|
pk.prs_kostenplaats_omschrijving,
|
|
pk.prs_kostenplaats_nr,
|
|
sd.ins_srtdiscipline_prefix
|
|
|| TO_CHAR (m.mld_melding_key)
|
|
|| '/'
|
|
|| mo.mld_opdr_bedrijfopdr_volgnr,
|
|
DECODE (sub.mld_kenmerkopdr_waarde,
|
|
'142', 'Ja',
|
|
'143', 'Nee',
|
|
'Leeg'),
|
|
mld.getopdrachtstatusdate (mo.mld_opdr_key, 9)
|
|
FROM mld_opdr mo,
|
|
cnt_contract cn,
|
|
mld_melding m,
|
|
ins_srtdiscipline sd,
|
|
mld_stdmelding s,
|
|
mld_discipline md,
|
|
prs_kostenplaats pk,
|
|
prs_bedrijf pb,
|
|
(SELECT mld_opdr_key, mld_kenmerkopdr_waarde
|
|
FROM mld_kenmerkopdr
|
|
WHERE mld_kenmerk_key = 1603) sub
|
|
WHERE mo.cnt_contract_key = cn.cnt_contract_key(+)
|
|
AND m.mld_melding_key = mo.mld_melding_key(+)
|
|
AND s.mld_stdmelding_key = m.mld_stdmelding_key
|
|
AND md.ins_discipline_key = s.mld_ins_discipline_key
|
|
AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
|
|
AND mo.prs_kostenplaats_key = pk.prs_kostenplaats_key
|
|
AND mo.mld_uitvoerende_keys = pb.prs_bedrijf_key
|
|
AND mo.mld_opdr_key = sub.mld_opdr_key(+)
|
|
AND TRUNC (mld.getopdrachtstatusdate (mo.mld_opdr_key, 9)) >
|
|
TRUNC (SYSDATE - 8)
|
|
AND mo.mld_opdr_kosten IS NOT NULL
|
|
AND mo.mld_opdr_kosten NOT LIKE '0';
|
|
|
|
CREATE OR REPLACE VIEW stch_v_export_sap
|
|
(
|
|
result,
|
|
result_order
|
|
)
|
|
AS
|
|
SELECT '"PO Nummer"'
|
|
|| ';"opdrachtnummer"'
|
|
|| ';"kostenplaats"'
|
|
|| ';"kostenplaatscode"'
|
|
|| ';"bedrag"'
|
|
|| ';"uitvoerende"',
|
|
0
|
|
FROM DUAL
|
|
UNION ALL
|
|
SELECT '"'
|
|
|| extern_nummer
|
|
|| '";"'
|
|
|| opdrachtnr
|
|
|| '";"'
|
|
|| kostenplaats
|
|
|| '";"'
|
|
|| kostenplaats_code
|
|
|| '";"'
|
|
|| bedrag
|
|
|| '";"'
|
|
|| uitvoerende
|
|
|| '"',
|
|
1
|
|
FROM stch_v_rap_opdrkosten;
|
|
|
|
CREATE OR REPLACE VIEW stch_v_export_sap_xml
|
|
(
|
|
result,
|
|
result_order
|
|
)
|
|
AS
|
|
SELECT '<?xml version="1.0" encoding="UTF-8"?>', 0 FROM DUAL
|
|
UNION ALL
|
|
SELECT '<ns0:MT_SES xmlns:ns0="http://sitech.nl/FACILITOR/ServiceEntrySheet">', 1 FROM DUAL
|
|
UNION ALL
|
|
SELECT '<SES>'
|
|
|| '<Ordernr>'
|
|
|| SUBSTR (extern_nummer, 1, 10)
|
|
|| '</Ordernr>'
|
|
|| '<Order_pos>'
|
|
|| SUBSTR (contract_nummer, -4, INSTR (contract_nummer, '-') - 1)
|
|
|| '</Order_pos>'
|
|
|| '<Text_hdr>'
|
|
|| uitvoerende
|
|
|| '</Text_hdr>'
|
|
|| '<Text_line>'
|
|
|| kostenplaats_code
|
|
|| '_'
|
|
|| opdrachtnr
|
|
|| '</Text_line>'
|
|
|| '<Quantity>1</Quantity>'
|
|
|| '<Unit>AU</Unit>'
|
|
|| '<Price_gross>'
|
|
|| bedrag
|
|
|| '</Price_gross>'
|
|
|| '</SES>',
|
|
2
|
|
FROM stch_v_rap_opdrkosten
|
|
UNION ALL
|
|
SELECT '</ns0:MT_SES>', 3 FROM DUAL;
|
|
|
|
--Strukton koppeling
|
|
CREATE OR REPLACE PROCEDURE stch_import_opdrstat_strukton (
|
|
p_import_key IN NUMBER)
|
|
AS
|
|
c_delim VARCHAR2 (1) := ';';
|
|
v_newline VARCHAR2 (1000); -- Input line
|
|
v_errormsg VARCHAR2 (4000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (1200);
|
|
v_dummy VARCHAR2 (200);
|
|
header_is_valid NUMBER := 0;
|
|
v_count NUMBER;
|
|
v_count_tot NUMBER (10) := 0;
|
|
v_count_import NUMBER (10) := 0;
|
|
v_ongeldig NUMBER (1) := 0;
|
|
-- De importvelden
|
|
v_mld_opdr_opmerking VARCHAR2 (4000);
|
|
v_mld_opdr_key NUMBER (10);
|
|
v_mld_opdr_key_tekst VARCHAR2 (100);
|
|
v_extern_nummer VARCHAR2 (100);
|
|
v_status NUMBER (10);
|
|
v_status_tekst VARCHAR2 (100);
|
|
v_status_code VARCHAR2 (100);
|
|
v_datumtijd DATE;
|
|
v_datumtijd_tekst VARCHAR2 (100);
|
|
v_opmerking VARCHAR2 (3000);
|
|
|
|
-- Overige velden:
|
|
CURSOR c1
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
BEGIN
|
|
-- Eerst opruiming
|
|
DELETE FROM stch_imp_opdrstat_strukton;
|
|
|
|
COMMIT;
|
|
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_errormsg := 'Fout opvragen te importeren rij';
|
|
v_aanduiding := '';
|
|
v_ongeldig := 0;
|
|
|
|
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
|
|
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
|
|
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
|
|
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
|
|
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
|
|
fac.imp_getfield (v_newline, c_delim, v_opmerking);
|
|
v_opmerking := substr(v_opmerking, 1, 1000);
|
|
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
|
|
v_opmerking := replace(v_opmerking, '@@',CHR (13));
|
|
v_aanduiding :=
|
|
'['
|
|
|| v_extern_nummer
|
|
|| '|'
|
|
|| v_mld_opdr_key_tekst
|
|
|| '|'
|
|
|| v_status_tekst
|
|
|| '|'
|
|
|| v_opmerking
|
|
|| '] ';
|
|
|
|
-- 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_mld_opdr_key_tekst)) = 'REFERENCEID'
|
|
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
|
|
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
|
|
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
|
|
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
v_count_tot := v_count_tot + 1;
|
|
-- Controleer alle veldwaarden
|
|
v_errormsg := 'Fout inlezen mld_opdr_key [' || v_aanduiding || ']';
|
|
v_mld_opdr_key := TRIM (v_mld_opdr_key);
|
|
|
|
BEGIN
|
|
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
|
|
INTO v_mld_opdr_key, v_mld_opdr_opmerking
|
|
FROM mld_opdr o, mld_melding m, ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmelding std
|
|
WHERE o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
|
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = v_mld_opdr_key_tekst;
|
|
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN
|
|
BEGIN
|
|
fac.imp_writelog (p_import_key, 'W', 'Opdracht kan niet gevonden worden. [' || v_aanduiding || ']', '');
|
|
|
|
-- kijk nu of de opdracht gevonden kan worden a.d.h.v het Struktonnummer
|
|
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
|
|
INTO v_mld_opdr_key, v_mld_opdr_opmerking
|
|
FROM mld_opdr o, mld_kenmerkopdr ko, mld_kenmerk k
|
|
WHERE o.mld_opdr_key = ko.mld_opdr_key
|
|
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
|
AND k.mld_srtkenmerk_key = 35
|
|
AND ko.mld_kenmerkopdr_waarde = v_extern_nummer;
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
v_ongeldig := 1;
|
|
v_errormsg := 'Opdracht kan niet gevonden worden (intern/externnr). [' || v_aanduiding || ']';
|
|
v_mld_opdr_key := NULL;
|
|
END;
|
|
END;
|
|
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg :=
|
|
'Fout bij bepalen status [' || v_aanduiding || ']';
|
|
|
|
CASE
|
|
WHEN v_status_code = '5'
|
|
THEN
|
|
v_status := 5; -- uitgegeven
|
|
WHEN v_status_code = '10'
|
|
THEN
|
|
v_status := 8; -- geaccepteerd
|
|
WHEN v_status_code = '20' -- monteur gereed
|
|
THEN
|
|
v_status := 6; -- afgemeld
|
|
WHEN v_status_code = '25' -- specialist gereed
|
|
THEN
|
|
v_status := 6; -- afgemeld
|
|
WHEN v_status_code = '30' -- technisch gereed
|
|
THEN
|
|
v_status := 6; -- afgemeld
|
|
-- For future use
|
|
-- WHEN v_status_code = '40' -- uitgeprijst
|
|
-- THEN
|
|
-- v_status := 6; -- afgemeld
|
|
WHEN v_status_code = '70'
|
|
THEN
|
|
v_status := 1; -- geannuleerd
|
|
WHEN v_status_code = '80'
|
|
THEN
|
|
v_status := 1; -- afgewezen
|
|
ELSE
|
|
v_status := NULL;
|
|
v_ongeldig := 1; -- nog te bezien.
|
|
END CASE;
|
|
END IF;
|
|
|
|
-- Lees alle veldwaarden
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg :=
|
|
'Fout bij converteren datumtijd [' || v_aanduiding || ']';
|
|
IF INSTR (v_datumtijd_tekst, '.') > 0
|
|
THEN
|
|
v_datumtijd :=
|
|
fac.safe_to_date (
|
|
REPLACE (
|
|
SUBSTR (v_datumtijd_tekst,
|
|
1,
|
|
INSTR (v_datumtijd_tekst, '.') - 1),
|
|
'T',
|
|
' '),
|
|
'yyyy-mm-dd hh24:mi:ss');
|
|
ELSE
|
|
v_datumtijd := fac.safe_to_date(v_datumtijd_tekst, 'yyyy-mm-dd hh24:mi:ss');
|
|
END IF;
|
|
|
|
IF v_datumtijd = NULL
|
|
THEN
|
|
v_ongeldig := 0;
|
|
END IF;
|
|
END IF;
|
|
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg :=
|
|
'Fout bij aanvullen opmerking [' || v_aanduiding || ']';
|
|
|
|
-- controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang
|
|
-- gemeld is.
|
|
IF v_opmerking IS NOT NULL AND INSTR(COALESCE(v_mld_opdr_opmerking, 'QueQuLeQue'), v_opmerking) = 0
|
|
THEN
|
|
v_opmerking :=
|
|
'['
|
|
|| v_datumtijd_tekst
|
|
|| '] - '
|
|
|| v_status_tekst
|
|
|| CHR (13)
|
|
|| CHR (10)
|
|
|| v_opmerking;
|
|
ELSE
|
|
v_opmerking :=
|
|
'[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
|
|
END IF;
|
|
END IF;
|
|
|
|
-- Insert geformatteerde import record
|
|
IF (v_ongeldig = 0)
|
|
THEN
|
|
BEGIN
|
|
v_errormsg :=
|
|
'Fout toevoegen opdracht status ['
|
|
|| v_aanduiding
|
|
|| ']';
|
|
|
|
INSERT INTO stch_imp_opdrstat_strukton (mld_opdr_key,
|
|
extern_nummer,
|
|
status,
|
|
datumtijd,
|
|
opmerking)
|
|
VALUES (v_mld_opdr_key,
|
|
v_extern_nummer,
|
|
v_status,
|
|
v_datumtijd,
|
|
v_opmerking);
|
|
|
|
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,
|
|
'Fout bij toevoegen regel aan importtabel stch_imp_opdr_status_strukton.');
|
|
END;
|
|
ELSE
|
|
IF v_status_code <> '40' AND v_status_code <> '45'
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
'');
|
|
END IF;
|
|
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!');
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := SUBSTR(
|
|
v_errormsg
|
|
|| 'ORACLE (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')', 1, 490);
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
SUBSTR(v_aanduiding, 1, 500) || ' - ' || v_errormsg,
|
|
'Inleesproces opdrachtstatusberichten afgebroken!');
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE stch_update_opdrstat_strukton (p_import_key IN NUMBER)
|
|
AS
|
|
-- Cursor loopt - in volgorde! - over alle ingelezen opdrachtstatusberichten.
|
|
CURSOR c1
|
|
IS
|
|
SELECT mld_opdr_key,
|
|
extern_nummer,
|
|
datumtijd,
|
|
status,
|
|
opmerking
|
|
FROM stch_imp_opdrstat_strukton
|
|
ORDER BY 1, 3;
|
|
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_count_tot NUMBER (10);
|
|
v_count NUMBER (10);
|
|
v_mld_key NUMBER (10) := 0;
|
|
v_opdr_key NUMBER (10) := 0;
|
|
v_opdr_status NUMBER (10) := 0;
|
|
v_user_key NUMBER (10) := 0;
|
|
v_mld_typeopdr_key NUMBER (10);
|
|
v_mld_kenmerk_key NUMBER (10);
|
|
v_mld_kenmerkopdr_key NUMBER (10);
|
|
v_mld_srtkenmerk_key NUMBER (10);
|
|
BEGIN
|
|
-- Loop door alle geimporteerde opdrachtstatusberichten en verwerk deze.
|
|
v_count_tot := 0;
|
|
|
|
-- Stel de key in van het srtkenmerk 'Ref. Nr. Leverancier'. Hier wordt
|
|
-- het nummer dat Strukton aan de call gegeven heeft geregistreerd.
|
|
v_mld_srtkenmerk_key := 123;
|
|
|
|
|
|
v_user_key := 10; -- Strukton user
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_aanduiding :=
|
|
'['
|
|
|| rec.mld_opdr_key
|
|
|| '|'
|
|
|| SUBSTR (rec.opmerking, 1, 100)
|
|
|| '] ';
|
|
v_count_tot := v_count_tot + 1;
|
|
v_count := 0;
|
|
|
|
-- Key van melding/opdracht bepalen en externnr bij opdracht opslaan.
|
|
IF (rec.mld_opdr_key IS NOT NULL)
|
|
THEN
|
|
v_errormsg := 'Fout bij bepalen opdracht.';
|
|
|
|
SELECT mld_melding_key, mld_opdr_key, mld_statusopdr_key, mld_typeopdr_key
|
|
INTO v_mld_key, v_opdr_key, v_opdr_status, v_mld_typeopdr_key
|
|
FROM mld_opdr
|
|
WHERE mld_opdr_key = rec.mld_opdr_key;
|
|
|
|
v_errormsg := 'Fout bij bepalen kenmerk extern nummer.';
|
|
SELECT k.mld_kenmerk_key
|
|
INTO v_mld_kenmerk_key
|
|
FROM mld_kenmerk k
|
|
WHERE k.mld_srtkenmerk_key = v_mld_srtkenmerk_key
|
|
AND k.mld_typeopdr_key = v_mld_typeopdr_key;
|
|
|
|
v_errormsg := 'Fout bij bepalen kenmerkopdracht extern nummer.';
|
|
SELECT max(ko.mld_kenmerkopdr_key)
|
|
INTO v_mld_kenmerkopdr_key
|
|
FROM mld_kenmerkopdr ko
|
|
WHERE ko.mld_opdr_key = v_opdr_key
|
|
AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
|
|
|
|
v_errormsg := 'Fout bij aanpassen extern nummer.';
|
|
IF v_mld_kenmerkopdr_key IS NULL THEN
|
|
-- kenmerk toevoegen
|
|
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key, mld_opdr_key, mld_kenmerkopdr_waarde)
|
|
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
|
|
ELSE
|
|
-- kenmerk aanpassen
|
|
UPDATE mld_kenmerkopdr SET mld_kenmerkopdr_waarde = rec.extern_nummer WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
|
|
END IF;
|
|
|
|
v_errormsg := 'Fout bij bijwerken opdracht-opmerking.';
|
|
|
|
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
|
|
|
|
UPDATE mld_opdr
|
|
SET mld_opdr_opmerking =
|
|
DECODE (
|
|
mld_opdr_opmerking,
|
|
NULL,
|
|
rec.opmerking,
|
|
rec.opmerking
|
|
|| CHR (13)
|
|
|| CHR (10)
|
|
|| SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
|
|
WHERE mld_opdr_key = v_opdr_key;
|
|
|
|
IF v_opdr_status <> rec.status
|
|
THEN
|
|
IF rec.status = 8 AND v_opdr_status = 5
|
|
THEN
|
|
-- Accepteer opdracht als de opdracht uitgegeven was
|
|
MLD.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor
|
|
ELSIF rec.status = 6 AND v_opdr_status = 5
|
|
THEN
|
|
-- Meld de opdracht af als deze uitgegeven was
|
|
MLD.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor, eerst accepteren
|
|
MLD.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
|
ELSIF rec.status = 6 AND v_opdr_status = 8
|
|
THEN
|
|
-- Meld de opdracht af als deze geaccepteerd was
|
|
MLD.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
|
ELSIF rec.status = 1 AND v_opdr_status = 5
|
|
THEN
|
|
-- Opdracht is afgewezen op het moment dat de opdracht nog niet geaccepteerd is.
|
|
MLD.setopdrachtstatus (v_opdr_key, 1, v_user_key); -- Facilitor
|
|
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
|
|
ELSIF rec.status = 1 AND v_opdr_status = 8
|
|
THEN
|
|
-- Opdracht is afgewezen op het moment dat de opdracht al geaccepteerd is.
|
|
MLD.setopdrachtstatus (v_opdr_key, 1, v_user_key); -- Facilitor
|
|
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
|
|
END IF;
|
|
|
|
IF rec.status = 6 AND v_opdr_status <> 6
|
|
THEN
|
|
v_errormsg := 'Fout bij statusaanpassing melding.';
|
|
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' ORACLE (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
'Fout bij verwerken opdrachtstatusbericht.');
|
|
END;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
END;
|
|
/
|
|
|
|
-- Rapportage voor login
|
|
CREATE OR REPLACE VIEW STCH_V_RAP_NOLOGIN
|
|
(
|
|
VOORNAAM,
|
|
ACHTERNAAM,
|
|
EMAIL,
|
|
LAATSTE_LOGIN
|
|
)
|
|
AS
|
|
SELECT pa.prs_perslid_voornaam,
|
|
pa.prs_perslid_naam,
|
|
pa.prs_perslid_email,
|
|
pa.prs_perslid_login
|
|
FROM prs_v_aanwezigperslid pa, prs_perslid p
|
|
WHERE pa.prs_perslid_login < SYSDATE - 30
|
|
AND p.prs_perslid_key = pa.prs_perslid_key
|
|
AND pa.prs_perslid_naam NOT LIKE '%INACTIEF%'
|
|
AND p.prs_perslid_verwijder IS NULL;
|
|
|
|
-- Rapport met users die meldingen mogen inleggen (MLDUSE).
|
|
CREATE OR REPLACE VIEW STCH_V_RAP_MLDUSERS
|
|
(
|
|
prskey,
|
|
achternaam,
|
|
voornaam,
|
|
email,
|
|
login,
|
|
functie_code
|
|
)
|
|
AS
|
|
SELECT p.prs_perslid_key,
|
|
p.prs_perslid_naam,
|
|
p.prs_perslid_voornaam,
|
|
p.prs_perslid_email,
|
|
p.prs_perslid_oslogin,
|
|
f.fac_functie_code
|
|
FROM fac_groeprechten g,
|
|
fac_gebruikersgroep gg,
|
|
prs_v_aanwezigperslid p,
|
|
fac_functie f,
|
|
fac_groep gr
|
|
WHERE g.fac_groep_key = gr.fac_groep_key
|
|
AND p.prs_perslid_key = gg.prs_perslid_key
|
|
AND gg.fac_groep_key = gr.fac_groep_key
|
|
AND f.fac_functie_key = g.fac_functie_key
|
|
AND f.fac_functie_code = 'WEB_MLDUSE'
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
GROUP BY (p.prs_perslid_key,
|
|
p.prs_perslid_voornaam,
|
|
p.prs_perslid_naam,
|
|
p.prs_perslid_email,
|
|
p.prs_perslid_oslogin,
|
|
f.fac_functie_code)
|
|
ORDER BY p.prs_perslid_naam;
|
|
|
|
------ 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 |