3361 lines
146 KiB
SQL
3361 lines
146 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific sql statements for the FACILITOR database
|
||
|
||
DEFINE thisfile = 'goko.SQL'
|
||
DEFINE dbuser = 'GOKO'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||
SPOOL &fcltlogfile
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
---------------------------------------
|
||
PROMPT &fcltcusttxt
|
||
---------------------------------------
|
||
SET DEFINE OFF
|
||
|
||
------ payload begin ------
|
||
|
||
CREATE OR REPLACE PACKAGE GOKO
|
||
AS
|
||
-- PROCEDURE set_werkplek;
|
||
|
||
-- PROCEDURE annuleer_werkplek;
|
||
|
||
-- PROCEDURE bes_after_insert (p_bes_bestelling_key IN NUMBER);
|
||
|
||
PROCEDURE processemail (pfrom IN VARCHAR2,
|
||
pto IN VARCHAR2,
|
||
psubject IN VARCHAR2,
|
||
pbody IN VARCHAR2,
|
||
psessionid IN VARCHAR2,
|
||
pemailkey IN NUMBER);
|
||
|
||
FUNCTION get_kenmerk (p_module IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_link_key IN NUMBER)
|
||
RETURN VARCHAR2;
|
||
|
||
FUNCTION get_kenmerkwaarde (p_kenmerk_type VARCHAR2,
|
||
p_kenmerkdomein_key NUMBER,
|
||
p_kenmerk_waarde VARCHAR2)
|
||
RETURN VARCHAR2;
|
||
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PACKAGE BODY GOKO
|
||
AS
|
||
|
||
PROCEDURE processemail (pfrom IN VARCHAR2,
|
||
pto IN VARCHAR2,
|
||
psubject IN VARCHAR2,
|
||
pbody IN VARCHAR2,
|
||
psessionid IN VARCHAR2,
|
||
pemailkey IN NUMBER)
|
||
AS
|
||
c_leverancier_M2M_key NUMBER (10) := 3581; -- Leverancier_key noteur M2M - COMLOG
|
||
c_folder_opdr_kkey NUMBER (10) := 1981 ; -- Specifieke opdrachtfolder voor COMLOG om de bijlagen uit hun systeem in te laten landen
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_perslid_key_noteur NUMBER (10);
|
||
v_folder_kkey NUMBER (10);
|
||
v_forward_soort NUMBER (1) ; -- 0 = De mail wordt direct van aanvrager doorgestuurd naar het facilitor-emailadres
|
||
-- 1 = De mail wordt via eigen centrale klant-postbus automatisch geforward naar het facilitor-emailadres
|
||
-- 2 = De mail wordt via eigen centrale klant-postbus handmatig aangevuld en daarna geforward naar het facilitor-emailadres
|
||
v_mailbody_notitie VARCHAR2 (4000) := '';
|
||
v_mailbody_notitie_1 VARCHAR2 (4000) := '';
|
||
v_mailbody_notitie_2 VARCHAR2 (4000) := '';
|
||
v_mailbody_notitie_3 VARCHAR2 (4000) := '';
|
||
|
||
v_opdracht_id VARCHAR2 (255);
|
||
v_opdracht_key NUMBER (10);
|
||
v_typeopdr_key NUMBER (10);
|
||
v_perslid_key_behandelaar NUMBER (10);
|
||
v_opdracht_nr VARCHAR2 (200);
|
||
v_comlog_nr VARCHAR2 (200);
|
||
|
||
BEGIN
|
||
|
||
-- ALGEMEEN
|
||
--- 1. NOTITIES SPLITSEN
|
||
|
||
-- 1e notitie -----
|
||
IF REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 1) = 0
|
||
THEN
|
||
|
||
v_mailbody_notitie_1 := pbody ;
|
||
|
||
END IF;
|
||
|
||
IF REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 1) > 0
|
||
THEN
|
||
|
||
-- dan hier de eerste notitie eruit halen (= alles voor de '1e Van:-regel')
|
||
v_mailbody_notitie_1 := LTRIM(SUBSTR (pbody, 1, REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 1)-1)) ;
|
||
|
||
END IF;
|
||
|
||
|
||
-- 2e notitie
|
||
IF REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 1) > 0 AND REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 2) = 0
|
||
THEN
|
||
|
||
-- dan hier de notitie eruit halen (= alles na de '1e Van:-regel' tot aan einde)
|
||
v_mailbody_notitie_2 := SUBSTR (pbody, REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 1)) ;
|
||
|
||
END IF;
|
||
|
||
IF REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 1) > 0 AND REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 2) > 0
|
||
THEN
|
||
|
||
-- dan hier de tweede notitie eruit halen (= alles vanaf de '1e Van:-regel' t/m de '2e Van:-regel)
|
||
v_mailbody_notitie_2 := SUBSTR (pbody, REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 1), REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 2) - REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 1)) ;
|
||
|
||
END IF;
|
||
|
||
-- 3e notitie
|
||
IF REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 2) > 0 AND REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 3) = 0
|
||
THEN
|
||
|
||
-- dan hier de notitie eruit halen (= alles na de '2e Van:-regel' tot aan einde)
|
||
v_mailbody_notitie_3 := SUBSTR (pbody, REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 2)) ;
|
||
|
||
END IF;
|
||
|
||
IF REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 2) > 0 AND REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 3) > 0
|
||
THEN
|
||
|
||
-- dan hier de tweede notitie eruit halen (= alles vanaf de '1e Van:-regel' t/m de '2e Van:-regel)
|
||
v_mailbody_notitie_3 := SUBSTR (pbody, REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 2), REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 3) - REGEXP_INSTR (pbody, 'Van:|From:|E-mail:', 1, 2)) ;
|
||
|
||
END IF;
|
||
|
||
-- Voor koppeling geldt dat vanuit COMLOG altijd een uitgeklede vervolgnotitie wordt terugegeven. Dus:
|
||
v_forward_soort := 0 ;
|
||
|
||
IF v_forward_soort = 0
|
||
THEN
|
||
v_mailbody_notitie := v_mailbody_notitie_1 ;
|
||
END IF;
|
||
|
||
IF v_forward_soort = 1
|
||
THEN
|
||
v_mailbody_notitie := v_mailbody_notitie_2 ;
|
||
END IF;
|
||
|
||
IF v_forward_soort = 2
|
||
THEN
|
||
v_mailbody_notitie := v_mailbody_notitie_3 ;
|
||
END IF;
|
||
|
||
|
||
--- 2. HET FROM-ADRES VAN DE MAILER/NOTEUR BEPALEN UIT MAILBODY
|
||
|
||
-- Dus eerst op zoek naar eerste VAN-regel - NIET VAN TOEPASSING VOOR GOKO
|
||
|
||
|
||
---- MAILINSTELLING - SERVICEDESK TBV MELDINGEN
|
||
CASE
|
||
WHEN UPPER (pto) LIKE 'SERVICEDESK@%'
|
||
THEN
|
||
|
||
-- NIET VAN TOEPASSING VOOR GOKO
|
||
NULL;
|
||
|
||
---- MAILINSTELLING - TBV OPDRACHTEN COMLOG
|
||
WHEN UPPER (pto) LIKE 'COMLOG_SUPPORT@%'
|
||
THEN
|
||
|
||
-- Noteur - vaste contactpersoon
|
||
v_errormsg := 'Fout bepalen noteur';
|
||
|
||
v_perslid_key_noteur := c_leverancier_M2M_key;
|
||
|
||
-- Opdrachtnr uit onderwerpveld halen
|
||
v_errormsg := 'Fout bepalen opdracht';
|
||
v_opdracht_id := psubject;
|
||
IF REGEXP_INSTR (v_opdracht_id, '\d') > 0
|
||
THEN
|
||
v_opdracht_id := SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d')) || ' '; -- Gedeelte vanaf eerste cijfer in v_opdracht_id plus ' '
|
||
v_opdracht_id := SUBSTR (v_opdracht_id, 1, REGEXP_INSTR (v_opdracht_id, '\s') - 1); -- Gedeelte tot eerste white space in v_opdracht_id
|
||
END IF;
|
||
|
||
-- Opdrachtnr zoeken in Facilitor
|
||
v_errormsg := 'Fout bepalen opdracht ' || v_opdracht_id;
|
||
SELECT mld_opdr_key, mld_typeopdr_key, prs_perslid_key, TO_CHAR (mld_melding_key) || '/' || TO_CHAR (mld_opdr_bedrijfopdr_volgnr) opdracht_nr
|
||
INTO v_opdracht_key, v_typeopdr_key, v_perslid_key_behandelaar, v_opdracht_nr
|
||
FROM mld_opdr
|
||
WHERE TO_CHAR (mld_melding_key) || '/' || TO_CHAR (mld_opdr_bedrijfopdr_volgnr) = SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d'));
|
||
|
||
-- De notitie toevoegen aan deze opdracht
|
||
v_errormsg := 'Fout toevoegen opdracht-notitie';
|
||
INSERT INTO mld_opdr_note (mld_opdr_key, prs_perslid_key, mld_opdr_note_omschrijving)
|
||
VALUES (v_opdracht_key, v_perslid_key_noteur, SUBSTR (v_mailbody_notitie, 1, 2000));
|
||
|
||
-- De gesplitste notities ook even wegschrijven - Tbv mijn eigen controle KOPPELING
|
||
v_errormsg := 'Opdrachtnotitie wegschrijven in kenmerkveld';
|
||
|
||
IF v_typeopdr_key = 5 -- opdracht
|
||
THEN
|
||
BEGIN mld.upsertopdrachtkenmerk (1961, v_opdracht_key, v_mailbody_notitie_1); END;
|
||
BEGIN mld.upsertopdrachtkenmerk (1962, v_opdracht_key, v_mailbody_notitie_2); END;
|
||
BEGIN mld.upsertopdrachtkenmerk (1963, v_opdracht_key, v_mailbody_notitie_3); END;
|
||
END IF;
|
||
|
||
|
||
-- De comlog-referentie wegschrijven
|
||
-- Bij uitsturen opdracht krijgen we een bevestiging-notitie terug met ticketnr van comlog (#C-nr)
|
||
---- deze gaan we opnemen onder opdrachtkenmerk-key 1741 (kenmerksoort 461) en deze wordt vervolgens in onderwerpveld bij vervolgnotities mee terug gegeven zodat de verdere correspondentie op deze #C-opdracht aan comlog-kant verwerkt wordt
|
||
---- voorbeeld bevestiging-notitie: "De melding is ontvangen en heeft ticketnummer #C8353-8233 gekregen"
|
||
|
||
v_errormsg := 'Fout toevoegen comlog-referentie aan facilitor-opdracht';
|
||
-- Alleen bij 1e terugkoppeling - dus als kenmerk_key 1741 leeg is, gaan we dit uitvoeren
|
||
|
||
SELECT MAX(mld_kenmerkopdr_waarde)
|
||
INTO v_comlog_nr
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = v_opdracht_key AND mld_kenmerk_key = 1741
|
||
AND mld_kenmerkopdr_verwijder IS NULL;
|
||
|
||
IF v_comlog_nr IS NULL
|
||
THEN
|
||
|
||
-- eerst comlog_nr bepalen uit onderwerpveld
|
||
SELECT SUBSTR(v_mailbody_notitie,
|
||
INSTR(v_mailbody_notitie, '#C'), -- startpositie
|
||
11 -- aantal posities
|
||
) comlog_nr
|
||
INTO v_comlog_nr
|
||
FROM DUAL ;
|
||
|
||
-- kenmerk vullen
|
||
BEGIN mld.upsertopdrachtkenmerk (1741, v_opdracht_key, '[' || v_comlog_nr || ']'); END;
|
||
|
||
END IF;
|
||
|
||
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet! - DEZE NOG CHECKEN OF DIT KLOPT EN GOED GAAT ZO
|
||
v_errormsg := 'Fout BO_status zetten';
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_actiecode = 132 -- BO + Attentie
|
||
WHERE mld_opdr_key = v_opdracht_key;
|
||
|
||
-- Notificatie naar behandelaar (ORDNOB)
|
||
v_errormsg := 'Fout bij notificatie naar behandelaar doorsturen';
|
||
IF v_perslid_key_behandelaar IS NOT NULL
|
||
THEN
|
||
|
||
fac.putnotificationsrtprio (
|
||
NULL,
|
||
v_perslid_key_behandelaar,
|
||
'ORDNOB',
|
||
v_opdracht_key,
|
||
'Opdracht ' || v_opdracht_nr || ' is door de COMLOG SUPPORT aangepast ',
|
||
2, -- poptstatus
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
3, -- psender - facilitor
|
||
NULL);
|
||
|
||
END IF;
|
||
|
||
|
||
-- Bijlage(n) eml in foldermap wegschrijven
|
||
v_errormsg := 'Fout toevoegen bijlagen aan opdracht';
|
||
v_folder_kkey := c_folder_opdr_kkey ;
|
||
|
||
IF v_folder_kkey IS NOT NULL
|
||
THEN
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'kenmerkpath', 'MLD\O' || TO_CHAR (TRUNC (v_opdracht_key / 1000), 'FM0000') || '___\O' || v_opdracht_key || '\' || v_folder_kkey || '\');
|
||
|
||
-- originele email wordt opgeslagen bij de opdracht - IN OVERLEG SLUITEN WE DEZE UIT VOOR COMLOG-KOPPELING
|
||
/*
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (
|
||
psessionid,
|
||
'kenmerkorgmailpath',
|
||
'MLD\O'
|
||
|| TO_CHAR (TRUNC (v_opdracht_key / 1000),
|
||
'FM0000')
|
||
|| '___\O'
|
||
|| v_opdracht_key
|
||
|| '\'
|
||
|| v_folder_kkey
|
||
|| '\');
|
||
*/
|
||
|
||
END IF;
|
||
|
||
ELSE
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder ');
|
||
|
||
END CASE;
|
||
|
||
|
||
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 ('PROCESSEMAIL',
|
||
'E',
|
||
'GOKO_processemail afgebroken!',
|
||
'[' || pfrom || '] ' || v_errormsg);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (
|
||
psessionid,
|
||
'errormsg',
|
||
'Database fout - Neem contact op met uw systeembeheerder ');
|
||
|
||
COMMIT;
|
||
END;
|
||
|
||
|
||
FUNCTION get_kenmerk (p_module IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_link_key IN NUMBER)
|
||
RETURN VARCHAR2
|
||
AS
|
||
v_kenmerk_type mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE;
|
||
v_kenmerk_waarde mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
|
||
v_kenmerkdomein_key fac_kenmerkdomein.fac_kenmerkdomein_key%TYPE;
|
||
v_kenmerk_niveau ins_kenmerk.ins_kenmerk_niveau%TYPE;
|
||
BEGIN
|
||
CASE p_module
|
||
WHEN 'MLD'
|
||
THEN
|
||
SELECT mld_srtkenmerk_kenmerktype,
|
||
sk.fac_kenmerkdomein_key,
|
||
km.mld_kenmerkmelding_waarde
|
||
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
|
||
FROM mld_v_aanwezigkenmerkmelding km,
|
||
mld_kenmerk k,
|
||
mld_srtkenmerk sk
|
||
WHERE km.mld_melding_key = p_link_key
|
||
AND km.mld_kenmerk_key = p_kenmerk_key
|
||
AND km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
|
||
WHEN 'CNT'
|
||
THEN
|
||
SELECT cnt_srtkenmerk_kenmerktype,
|
||
sk.fac_kenmerkdomein_key,
|
||
kc.cnt_kenmerkcontract_waarde
|
||
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
|
||
FROM cnt_kenmerkcontract kc,
|
||
cnt_kenmerk k,
|
||
cnt_srtkenmerk sk
|
||
WHERE kc.cnt_contract_key = p_link_key
|
||
AND kc.cnt_kenmerk_key = p_kenmerk_key
|
||
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key;
|
||
WHEN 'ALG'
|
||
THEN
|
||
SELECT alg_kenmerk_kenmerktype,
|
||
k.fac_kenmerkdomein_key,
|
||
aogk.alg_onrgoedkenmerk_waarde
|
||
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
|
||
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
|
||
WHERE aogk.alg_onrgoed_key = p_link_key
|
||
AND aogk.alg_kenmerk_key = p_kenmerk_key
|
||
AND aogk.alg_kenmerk_key = k.alg_kenmerk_key;
|
||
WHEN 'INS'
|
||
THEN
|
||
SELECT k.ins_kenmerk_niveau
|
||
INTO v_kenmerk_niveau
|
||
FROM ins_kenmerk k
|
||
WHERE ins_kenmerk_key = p_kenmerk_key;
|
||
|
||
IF v_kenmerk_niveau = 'C'
|
||
THEN
|
||
SELECT sk.ins_srtkenmerk_kenmerktype,
|
||
sk.fac_kenmerkdomein_key,
|
||
ikds.ins_kmdeelsrtcontr_waarde
|
||
INTO v_kenmerk_type,
|
||
v_kenmerkdomein_key,
|
||
v_kenmerk_waarde
|
||
FROM ins_kmdeelsrtcontr ikds,
|
||
ins_kenmerk k,
|
||
ins_srtkenmerk sk
|
||
WHERE ikds.ins_kmdeelsrtcontr_key = p_link_key
|
||
AND ikds.ins_kmdeelsrtcontr_verwijder IS NULL
|
||
AND ikds.ins_kenmerk_key = p_kenmerk_key
|
||
AND ikds.ins_kenmerk_key = k.ins_kenmerk_key
|
||
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
|
||
ELSE
|
||
SELECT sk.ins_srtkenmerk_kenmerktype,
|
||
sk.fac_kenmerkdomein_key,
|
||
ikd.ins_kenmerkdeel_waarde
|
||
INTO v_kenmerk_type,
|
||
v_kenmerkdomein_key,
|
||
v_kenmerk_waarde
|
||
FROM ins_kenmerkdeel ikd,
|
||
ins_kenmerk k,
|
||
ins_srtkenmerk sk
|
||
WHERE ikd.ins_deel_key = p_link_key
|
||
AND ikd.ins_kenmerkdeel_verwijder IS NULL
|
||
AND ikd.ins_kenmerk_key = p_kenmerk_key
|
||
AND ikd.ins_kenmerk_key = k.ins_kenmerk_key
|
||
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
|
||
END IF;
|
||
END CASE;
|
||
|
||
RETURN goko.get_kenmerkwaarde (v_kenmerk_type,
|
||
v_kenmerkdomein_key,
|
||
v_kenmerk_waarde);
|
||
END;
|
||
|
||
|
||
FUNCTION get_kenmerkwaarde (p_kenmerk_type VARCHAR2,
|
||
p_kenmerkdomein_key NUMBER,
|
||
p_kenmerk_waarde VARCHAR2)
|
||
RETURN VARCHAR2
|
||
AS
|
||
v_result VARCHAR2 (4000);
|
||
BEGIN
|
||
IF p_kenmerk_type = 'R' OR p_kenmerk_type = 'S'
|
||
THEN
|
||
v_result :=
|
||
fac.getdomeinwaarde (p_kenmerkdomein_key, p_kenmerk_waarde);
|
||
ELSIF p_kenmerk_type = 'D'
|
||
THEN
|
||
v_result :=
|
||
TO_CHAR (fac.safe_to_date (p_kenmerk_waarde, 'dd-mm-yyyy'),
|
||
'yyyy-mm-dd');
|
||
ELSE
|
||
v_result := p_kenmerk_waarde;
|
||
END IF;
|
||
|
||
RETURN v_result;
|
||
END;
|
||
|
||
END;
|
||
/
|
||
|
||
-------------------------------
|
||
--- DOMEIN-VIEWS --------------
|
||
-------------------------------
|
||
|
||
-- Voor keuzelijstjes (kenmerk domein)
|
||
CREATE OR REPLACE VIEW goko_v_personenlijst
|
||
(
|
||
PRS_PERSLID_KEY,
|
||
NAAM
|
||
)
|
||
AS
|
||
SELECT
|
||
p.prs_perslid_key,
|
||
CASE
|
||
WHEN p.prs_perslid_tussenvoegsel IS NOT NULL
|
||
THEN
|
||
p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam
|
||
ELSE
|
||
p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam
|
||
END naam
|
||
FROM
|
||
prs_perslid p,
|
||
prs_srtperslid sp,
|
||
prs_v_afdeling a,
|
||
prs_bedrijf b
|
||
WHERE
|
||
p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||
AND b.prs_bedrijf_key = 21 -- bedrijfs_key GO Kinderopvang
|
||
AND UPPER(sp.prs_srtperslid_omschrijving) NOT IN ('TEAMACCOUNT','INTERNE AFDELING') -- Geen team-accounts en interne afdeling-accounts
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
ORDER BY p.prs_perslid_naam
|
||
;
|
||
|
||
CREATE OR REPLACE VIEW goko_v_kostenplaatsen
|
||
(
|
||
PRS_KOSTENPLAATS_KEY,
|
||
NR,
|
||
OMSCHRIJVING
|
||
)
|
||
AS
|
||
SELECT
|
||
kp.prs_kostenplaats_key,
|
||
kp.prs_kostenplaats_nr,
|
||
kpg.prs_kostenplaatsgrp_oms || ' - ' || kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
|
||
omschrijving
|
||
FROM
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE
|
||
kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key
|
||
AND kp.prs_kostenplaats_verwijder IS NULL
|
||
AND (kp.prs_kostenplaats_eind IS NULL OR kp.prs_kostenplaats_eind > TRUNC(SYSDATE) )
|
||
AND kp.prs_kostenplaats_module = 'PRS'
|
||
ORDER BY kpg.prs_kostenplaatsgrp_oms || ' - ' || kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
|
||
;
|
||
|
||
-- Lijst van Locatieleiders (tbv domeinview)
|
||
CREATE OR REPLACE VIEW goko_v_personenlijst_leider
|
||
(
|
||
PRS_PERSLID_KEY,
|
||
NAAM,
|
||
PERSONEELSNUMMER,
|
||
EMAIL
|
||
)
|
||
AS
|
||
SELECT
|
||
p.prs_perslid_key,
|
||
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
|
||
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
|
||
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
|
||
END
|
||
naam,
|
||
p.prs_perslid_nr,
|
||
p.prs_perslid_email
|
||
FROM
|
||
prs_perslid p,
|
||
prs_srtperslid sp,
|
||
prs_v_afdeling a,
|
||
prs_bedrijf b
|
||
WHERE
|
||
p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND b.prs_bedrijf_key = 21 -- bedrijfs_key GOKO
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||
AND sp.prs_srtperslid_key IN (122, 3121) --- LOCATIEMANAGER/LEIDER
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
ORDER BY p.prs_perslid_naam
|
||
;
|
||
|
||
-- Lijst van Waarnemers (tbv domeinview)
|
||
CREATE OR REPLACE VIEW goko_v_personenlijst_waarn
|
||
(
|
||
PRS_PERSLID_KEY,
|
||
NAAM,
|
||
PERSONEELSNUMMER,
|
||
EMAIL
|
||
)
|
||
AS
|
||
SELECT
|
||
p.prs_perslid_key,
|
||
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
|
||
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (Waarnemer - ' || sp.prs_srtperslid_omschrijving || ')'
|
||
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (Waarnemer - ' || sp.prs_srtperslid_omschrijving || ')'
|
||
END
|
||
naam,
|
||
p.prs_perslid_nr,
|
||
p.prs_perslid_email
|
||
FROM
|
||
prs_perslid p,
|
||
prs_srtperslid sp,
|
||
prs_v_afdeling a,
|
||
prs_bedrijf b,
|
||
prs_kenmerklink kl
|
||
WHERE
|
||
p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||
AND p.prs_perslid_key = kl.prs_link_key
|
||
AND kl.prs_kenmerk_key = 1009 -- kenmerk waarnemer (vinkbox)
|
||
AND kl.prs_kenmerklink_waarde = '1' AND kl.prs_kenmerklink_verwijder IS NULL
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
ORDER BY p.prs_perslid_naam
|
||
;
|
||
|
||
-- Lijst van Locatieleiders/Waarnemers en de locaties waar men verantwoordelijk voor is (tbv Personen-import)
|
||
CREATE OR REPLACE VIEW goko_v_locatiemanagers
|
||
(
|
||
PRS_PERSLID_KEY,
|
||
ALG_LOCATIE_KEY,
|
||
LOCATIEMANAGER,
|
||
LOCATIE,
|
||
WAARNEMER,
|
||
PRS_PERSLID_VERWIJDER
|
||
)
|
||
AS
|
||
SELECT p.prs_perslid_key,
|
||
l.alg_locatie_key,
|
||
p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ') - ' || sp.prs_srtperslid_omschrijving
|
||
locatiemanager,
|
||
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving
|
||
locatie,
|
||
CASE WHEN ok.alg_kenmerk_key = 1003 THEN 'ja' ELSE 'nee' END
|
||
waarnemer,
|
||
p.prs_perslid_verwijder
|
||
FROM prs_perslid p, prs_srtperslid sp, alg_onrgoedkenmerk ok, alg_locatie l
|
||
WHERE fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = p.prs_perslid_key
|
||
AND ok.alg_kenmerk_key IN (1002, 1003) -- locatieleider en waarnemer
|
||
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND ok.alg_onrgoed_niveau = 'L' AND ok.alg_onrgoed_key = l.alg_locatie_key
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||
GROUP BY p.prs_perslid_key, l.alg_locatie_key,
|
||
p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ') - ' || sp.prs_srtperslid_omschrijving,
|
||
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving,
|
||
CASE WHEN ok.alg_kenmerk_key = 1003 THEN 'ja' ELSE 'nee' END,
|
||
p.prs_perslid_verwijder ;
|
||
|
||
-- Lijst van Locatiemanagers + Waarnemers en de Werkplekkoppeling die ze in hun personenkaart hebben (tbv Personen-import)
|
||
CREATE OR REPLACE VIEW goko_v_locatiemanagers_wp
|
||
(
|
||
PRS_PERSLID_KEY,
|
||
ALG_LOCATIE_KEY,
|
||
NAAM,
|
||
LOCATIE_WP,
|
||
PRS_WERKPLEK_KEY
|
||
)
|
||
AS
|
||
SELECT wp.prs_perslid_key,
|
||
onr.alg_locatie_key,
|
||
p.prs_perslid_naam_friendly,
|
||
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving
|
||
locatie,
|
||
w.prs_werkplek_key
|
||
FROM (
|
||
SELECT prs_perslid_key
|
||
FROM (SELECT *
|
||
FROM goko_v_personenlijst_leider
|
||
UNION
|
||
SELECT *
|
||
FROM goko_v_personenlijst_waarn) x
|
||
GROUP BY x.prs_perslid_key
|
||
) v,
|
||
prs_v_perslid_fullnames p, prs_perslidwerkplek wp, prs_werkplek w, alg_ruimte r, alg_v_onrgoed_boom onr, alg_locatie l
|
||
WHERE v.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = wp.prs_perslid_key
|
||
AND wp.prs_werkplek_key = w.prs_werkplek_key
|
||
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
|
||
AND r.alg_ruimte_key = onr.alg_ruimte_key
|
||
AND onr.alg_locatie_key = l.alg_locatie_key
|
||
ORDER BY wp.prs_perslid_key
|
||
;
|
||
|
||
-- Lijst van Locaties en de kostenplaaten die daaronder vallen (opvangsoorten die men aanbied)
|
||
CREATE OR REPLACE VIEW goko_v_locatie_kp
|
||
(
|
||
ALG_LOCATIE_KEY,
|
||
LOCATIE,
|
||
PRS_KOSTENPLAATS_KEY,
|
||
PRS_KOSTENPLAATS_NR,
|
||
PRS_KOSTENPLAATS_OMSCHRIJVING
|
||
)
|
||
AS
|
||
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
|
||
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
|
||
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
|
||
AND kw.alg_onrgoed_niveau = 'L'
|
||
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND kw.alg_kenmerk_key = 1010 -- kostenplaats KDV
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
|
||
UNION
|
||
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
|
||
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
|
||
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
|
||
AND kw.alg_onrgoed_niveau = 'L'
|
||
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND kw.alg_kenmerk_key = 1012 -- kostenplaats BSO
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
|
||
UNION
|
||
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
|
||
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
|
||
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
|
||
AND kw.alg_onrgoed_niveau = 'L'
|
||
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND kw.alg_kenmerk_key = 1014 -- kostenplaats PSZ
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
|
||
UNION
|
||
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
|
||
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
|
||
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
|
||
AND kw.alg_onrgoed_niveau = 'L'
|
||
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND kw.alg_kenmerk_key = 1017 -- kostenplaats TSO
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
|
||
UNION
|
||
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
|
||
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
|
||
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
|
||
AND kw.alg_onrgoed_niveau = 'L'
|
||
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND kw.alg_kenmerk_key = 1016 -- 2e kostenplaats PSZ
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
|
||
UNION
|
||
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
|
||
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
|
||
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
|
||
AND kw.alg_onrgoed_niveau = 'L'
|
||
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND kw.alg_kenmerk_key = 1041 -- kostenplaats Vakantie
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key ;
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE goko_import_perslid (p_import_key IN NUMBER)
|
||
AS
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (400);
|
||
v_errorhint VARCHAR2 (400);
|
||
v_aantal_in_fclt NUMBER;
|
||
|
||
-- overige variabelen
|
||
v_prs_afdeling_key NUMBER (10);
|
||
c_prs_afdeling_key NUMBER (10) := 22; -- Fallback-afdeling 'OVERIG'
|
||
c_prs_afdeling_key_leid NUMBER (10) := 21; -- Afdeling OPVANG bestemd voor de Locatieleiders
|
||
v_prs_kostenplaats_key NUMBER (10);
|
||
v_prs_afdeling_upper VARCHAR2 (10);
|
||
|
||
v_alg_locatie_key NUMBER (10);
|
||
v_alg_locatie_code VARCHAR2 (10);
|
||
v_alg_gebouw_key NUMBER (10);
|
||
v_alg_gebouw_code VARCHAR2 (12);
|
||
v_alg_verdieping_key NUMBER (10);
|
||
v_alg_verdieping_volgnr NUMBER (3);
|
||
v_alg_ruimte_key NUMBER (10);
|
||
v_alg_ruimte_nr VARCHAR2 (20);
|
||
|
||
-- emailadres facilitor is leading - indien leeg in facilitor en gevuld in beaufort dan nemen we wel beaufort emailadres over
|
||
CURSOR c_email
|
||
IS
|
||
SELECT fac_imp_file_index,
|
||
p.prs_perslid_key,
|
||
p.prs_perslid_email,
|
||
i.prs_kenmerk7,
|
||
p.prs_perslid_oslogin,
|
||
CASE
|
||
WHEN p.prs_perslid_email <>
|
||
COALESCE (i.prs_kenmerk7, 'onbekend')
|
||
THEN
|
||
'facilitor leading: emailadres facilitor ongelijk met beaufort'
|
||
WHEN p.prs_perslid_email = i.prs_kenmerk7
|
||
THEN
|
||
'facilitor leading: emailadres facilitor en beaufort gelijk'
|
||
ELSE
|
||
'facilitor leading: ??'
|
||
END
|
||
check_email
|
||
FROM fac_imp_perslid i, prs_perslid p
|
||
WHERE fac_import_key = p_import_key
|
||
AND i.prs_perslid_nr = p.prs_perslid_nr
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_email IS NOT NULL
|
||
UNION
|
||
SELECT fac_imp_file_index,
|
||
p.prs_perslid_key,
|
||
p.prs_perslid_email,
|
||
i.prs_kenmerk7,
|
||
p.prs_perslid_oslogin,
|
||
'emailadres facilitor leeg en beaufort gevuld' check_email
|
||
FROM fac_imp_perslid i, prs_perslid p
|
||
WHERE fac_import_key = p_import_key
|
||
AND i.prs_perslid_nr = p.prs_perslid_nr
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_email IS NULL
|
||
AND i.prs_kenmerk7 IS NOT NULL
|
||
ORDER BY 1;
|
||
|
||
-- Facilitor is leading qua Functies - Voor alle bestaande werknemers de facilitor-functie overnemen en voor nieuwe medewerkers de functie uit beaufort initieel pakken..
|
||
CURSOR c_functie
|
||
IS
|
||
SELECT fac_imp_file_index,
|
||
p.prs_perslid_key,
|
||
sp.prs_srtperslid_omschrijving,
|
||
sp.prs_srtperslid_key
|
||
FROM fac_imp_perslid i, prs_perslid p, prs_srtperslid sp
|
||
WHERE fac_import_key = p_import_key
|
||
AND i.prs_perslid_nr = p.prs_perslid_nr
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||
AND p.prs_srtperslid_key IS NOT NULL
|
||
UNION ALL
|
||
SELECT fac_imp_file_index,
|
||
-1
|
||
prs_perslid_key,
|
||
COALESCE (i.prs_kenmerk1, 'Onbekend')
|
||
prs_srtperslid_omschrijving,
|
||
1 prs_srtperslid_key -- key van onbekend
|
||
FROM fac_imp_perslid i
|
||
WHERE fac_import_key = p_import_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_perslid p
|
||
WHERE p.prs_perslid_nr = i.prs_perslid_nr
|
||
AND p.prs_perslid_verwijder IS NULL);
|
||
|
||
CURSOR c_afd
|
||
IS
|
||
SELECT fac_imp_file_index,
|
||
prs_afdeling_naam,
|
||
prs_kenmerk5,
|
||
prs_srtperslid_omschrijving,
|
||
prs_kenmerk8 -- prs_srtperslid_key
|
||
FROM fac_imp_perslid
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY 1;
|
||
|
||
CURSOR c_login
|
||
IS
|
||
SELECT fac_imp_file_index, p.prs_perslid_key, p.prs_perslid_oslogin
|
||
FROM fac_imp_perslid i, prs_perslid p
|
||
WHERE fac_import_key = p_import_key
|
||
AND i.prs_perslid_nr = p.prs_perslid_nr
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_oslogin IS NOT NULL
|
||
ORDER BY 1;
|
||
|
||
CURSOR c_loc
|
||
IS
|
||
SELECT fac_imp_file_index, prs_kenmerk5
|
||
FROM fac_imp_perslid
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY 1;
|
||
|
||
BEGIN
|
||
-- Het aangeleverde bestand heeft de gegevens komma gescheiden ipv ;
|
||
v_errorhint := 'Delimiter goed zetten';
|
||
-- UPDATE fac_imp_file
|
||
-- SET fac_imp_file_line = REPLACE (fac_imp_file_line, ',', ';')
|
||
-- WHERE fac_import_key = p_import_key;
|
||
|
||
-- Het aangeleverde bestand heeft aanhalingstekens om de invoervelden..
|
||
-- UPDATE fac_imp_file
|
||
-- SET fac_imp_file_line = REPLACE (fac_imp_file_line, '"', '')
|
||
-- WHERE fac_import_key = p_import_key;
|
||
|
||
|
||
v_errorhint := 'Generieke update';
|
||
-- De sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid procedure
|
||
-- Voor GOKO geldt: functie in Facilitor gaan we leading maken. bij import-inleesactie vullen met personeelsnr en daarna overschrijven met het de functie uit Facilitor of bij nieuwe medewerker met <onbekend>
|
||
---
|
||
prs.import_perslid (
|
||
p_import_key,
|
||
'0;0;0;0;0;0;5;8;7;6;'
|
||
|| '0;0;0;0;0;0;0;0;0;5;'
|
||
|| '5;0;0;0;0;0;9;1;2;3;'
|
||
|| '4;10;11;0;0;0;0;0;0;0;'
|
||
|| '0;0;0;0;0;0',
|
||
'Regio;Locatie;Inzet werksoort;Kostenplaats loonverd;Persoonsnr;Roepnaam;Voorvoeg;Persoonsnaam;Oms functie;Uitdienst dat;Email werk%');
|
||
-- 1 2 3 4 5 6 7 8 9 10 11
|
||
-- DEF. BESTAND BIJ GOKO: Regio;Locatie;Inzet werksoort;Kostenplaats loonverd.;Persoonsnr.;Roepnaam;Voorvoeg.;Persoonsnaam;Oms functie;Uitdienst dat.;Email werk
|
||
|
||
v_errorhint := 'Uit dienst datum goed vullen';
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_kenmerk6 =
|
||
DECODE (fac.safe_to_date (prs_kenmerk6, 'dd-mm-yyyy'),
|
||
NULL, NULL,
|
||
fac.safe_to_date (prs_kenmerk6, 'dd-mm-yyyy'))
|
||
WHERE prs_kenmerk6 IS NOT NULL;
|
||
|
||
v_errorhint := 'De FUNCTIE uit Facilitor is leading';
|
||
|
||
FOR rec IN c_functie
|
||
LOOP
|
||
BEGIN
|
||
UPDATE fac_imp_perslid
|
||
SET prs_srtperslid_omschrijving = rec.prs_srtperslid_omschrijving,
|
||
prs_kenmerk8 = rec.prs_srtperslid_key
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_errorhint := 'Emailadres Go-Kinderopvang vullen';
|
||
|
||
-- De prive-adressen die uit Beaufort meekomen verwijderen - alleen de zakelijke emailadressen nemen we over naar kenmerkveld Email (werk)
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_kenmerk7 = NULL
|
||
WHERE prs_kenmerk7 IS NOT NULL
|
||
AND INSTR (UPPER (prs_kenmerk7), '@GO-KINDEROPVANG.NL') = 0;
|
||
|
||
v_errorhint := 'Het EMAIL-adres uit Facilitor is leading';
|
||
|
||
-- Facilitor is leading qua emailadressen.
|
||
FOR rec IN c_email
|
||
LOOP
|
||
BEGIN
|
||
IF INSTR (rec.check_email, 'facilitor leading') > 0
|
||
THEN
|
||
UPDATE fac_imp_perslid
|
||
SET prs_perslid_email = rec.prs_perslid_email
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index;
|
||
END IF;
|
||
|
||
IF rec.check_email =
|
||
'emailadres facilitor leeg en beaufort gevuld'
|
||
THEN
|
||
UPDATE fac_imp_perslid
|
||
SET prs_perslid_email = rec.prs_kenmerk7
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_errorhint := 'Afdeling bepalen en vullen';
|
||
|
||
-- Afdeling bepalen waar persoon onder komt te vallen. LET OP - Deze is voor GOKO niet altijd gevuld!? Oplossen door eerst te vullen met PERSONEELSNR en in Kenmerk5 de kostenplaats/afdeling
|
||
--- Voor locatieleiders geldt dat deze altijd op organisatie 'OPVANG' moeten komen (onder dit organisatieonderdeel zitten op niveau 2 de team/afdelingen/kostenplaatsen)
|
||
--- Voor kantoorpersoneel geldt dat ze onder organsiatie KCC op hun eigen kantoor-afdeling-2 komen (kostenplaatsnr Beaufort = afdelingscode kantoor)
|
||
FOR rec IN c_afd
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint := 'Persoon aan Afdeling koppelen';
|
||
|
||
-- Als locatieleider dan afdeling altijd OPVANG (c_prs_afdeling_key_leid)
|
||
IF rec.prs_kenmerk8 = 122 -- prs_srtperslid_key leider/manager
|
||
THEN
|
||
UPDATE fac_imp_perslid
|
||
SET prs_afdeling_naam =
|
||
(SELECT prs_afdeling_upper
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = c_prs_afdeling_key_leid)
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index;
|
||
ELSE
|
||
IF rec.prs_kenmerk5 IS NULL
|
||
THEN
|
||
v_prs_afdeling_key := NULL;
|
||
ELSE
|
||
SELECT MIN (prs_afdeling_key)
|
||
INTO v_prs_afdeling_key
|
||
FROM prs_v_afdeling
|
||
WHERE prs_afdeling_upper = UPPER (rec.prs_kenmerk5)
|
||
AND prs_bedrijf_key = 21 -- bedrijf GOKO
|
||
AND prs_afdeling_verwijder IS NULL;
|
||
END IF;
|
||
|
||
-- Als afdeling uit beaufort (nog) niet bekend is in Facilitor dan op afdeling OVERIG zetten (c_prs_afdeling_key)
|
||
IF v_prs_afdeling_key IS NULL
|
||
THEN
|
||
UPDATE fac_imp_perslid
|
||
SET prs_afdeling_naam =
|
||
(SELECT prs_afdeling_upper
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = c_prs_afdeling_key)
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index;
|
||
ELSE
|
||
UPDATE fac_imp_perslid
|
||
SET prs_afdeling_naam = rec.prs_kenmerk5
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN c_login
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint := 'Bestaande OSLOGIN uit Facilitor handhaven';
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_perslid_oslogin = rec.prs_perslid_oslogin
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_errorhint := 'Login afleiden van emailadres (voor locatieleiders en kantoorpersoneel) indien nog geen login aanwezig';
|
||
|
||
-- Voor de locatieleiders en kantoorpersoneel de oslogin vullen in geval nog niet gevuld in Facilitor (vanuit vorige cursor)
|
||
UPDATE fac_imp_perslid
|
||
SET prs_perslid_oslogin =
|
||
UPPER (
|
||
(SUBSTR (prs_perslid_email,
|
||
0,
|
||
INSTR (prs_perslid_email, '@') - 1)))
|
||
WHERE UPPER (prs_perslid_email) LIKE '%GO-KINDEROPVANG.NL'
|
||
AND prs_perslid_email IS NOT NULL
|
||
AND ( prs_kenmerk8 = 122 -- 'LOCATIELEIDER/MANAGER'
|
||
OR prs_afdeling_naam IN
|
||
(SELECT a.prs_afdeling_upper
|
||
FROM prs_v_afdeling_boom ab, prs_afdeling a
|
||
WHERE a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND a.prs_afdeling_verwijder IS NULL
|
||
AND ab.prs_afdeling_key1 = 281
|
||
AND ab.niveau NOT IN ('1') -- Alles onder ORG-1 van KCC
|
||
))
|
||
AND prs_perslid_oslogin IS NULL
|
||
AND LENGTH (
|
||
(SUBSTR (prs_perslid_email,
|
||
0,
|
||
INSTR (prs_perslid_email, '@') - 1))) <=
|
||
30;
|
||
|
||
v_errorhint := 'Locatie bepalen en vullen';
|
||
|
||
-- Op basis van kostenplaats gaan we kijken of we de locatie en werkplekkoppeling kunnen maken
|
||
FOR rec IN c_loc
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Persoon aan Locatie-Ruimte koppelen adhv de kostenplaats - '
|
||
|| TO_CHAR (rec.fac_imp_file_index);
|
||
v_alg_locatie_key := NULL;
|
||
v_prs_kostenplaats_key := NULL;
|
||
v_prs_afdeling_upper := NULL;
|
||
v_alg_gebouw_key := NULL;
|
||
v_alg_verdieping_key := NULL;
|
||
v_alg_ruimte_key := NULL;
|
||
|
||
IF rec.prs_kenmerk5 IS NULL
|
||
THEN
|
||
UPDATE fac_imp_perslid
|
||
SET prs_kenmerk20 = 'Geen werkplekkoppeling'
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index;
|
||
ELSE
|
||
SELECT MAX (l.alg_locatie_key), MAX (kp.prs_kostenplaats_key)
|
||
INTO v_alg_locatie_key, v_prs_kostenplaats_key
|
||
FROM alg_locatie l,
|
||
alg_onrgoedkenmerk kk,
|
||
alg_kenmerk k,
|
||
prs_kostenplaats kp,
|
||
prs_afdeling a
|
||
WHERE l.alg_locatie_key = kk.alg_onrgoed_key
|
||
AND kk.alg_onrgoed_niveau = 'L'
|
||
AND kk.alg_kenmerk_key = k.alg_kenmerk_key
|
||
AND k.alg_kenmerk_key IN (1010,
|
||
1012,
|
||
1014,
|
||
1016,
|
||
1017) -- kenmerk_keys voor de kostenplaatsen KDV, BSO, PSZ, TSO en PSZ-2e
|
||
AND fac.safe_to_number (kk.alg_onrgoedkenmerk_waarde) =
|
||
kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaats_key = a.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaats_verwijder IS NULL
|
||
AND a.prs_afdeling_verwijder IS NULL
|
||
AND kp.prs_kostenplaats_upper =
|
||
UPPER (rec.prs_kenmerk5);
|
||
END IF;
|
||
|
||
IF v_alg_locatie_key IS NOT NULL
|
||
THEN
|
||
-- Locatie_code ophalen
|
||
SELECT alg_locatie_code
|
||
INTO v_alg_locatie_code
|
||
FROM alg_locatie
|
||
WHERE alg_locatie_key = v_alg_locatie_key;
|
||
|
||
-- Gebouw_key ophalen
|
||
SELECT MIN (alg_gebouw_key)
|
||
INTO v_alg_gebouw_key
|
||
FROM alg_gebouw
|
||
WHERE alg_locatie_key = v_alg_locatie_key
|
||
AND alg_gebouw_verwijder IS NULL
|
||
AND ( TRUNC (alg_gebouw_vervaldatum) >
|
||
TRUNC (SYSDATE)
|
||
OR alg_gebouw_vervaldatum IS NULL);
|
||
|
||
-- Om bij update dit kenmerkveld weg te kunnen schrijven naar kenmerkveld 'Default standplaats'
|
||
UPDATE fac_imp_perslid
|
||
SET prs_kenmerk20 =
|
||
(SELECT UPPER (alg_locatie_code)
|
||
|| ' - '
|
||
|| alg_locatie_omschrijving
|
||
FROM alg_locatie
|
||
WHERE alg_locatie_key = v_alg_locatie_key)
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index;
|
||
|
||
IF v_alg_gebouw_key IS NOT NULL
|
||
THEN
|
||
-- Gebouw_code ophalen
|
||
SELECT alg_gebouw_code
|
||
INTO v_alg_gebouw_code
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_key = v_alg_gebouw_key;
|
||
|
||
-- Verdiepings_key ophalen
|
||
SELECT MIN (alg_verdieping_key)
|
||
INTO v_alg_verdieping_key
|
||
FROM alg_verdieping
|
||
WHERE alg_gebouw_key = v_alg_gebouw_key
|
||
AND alg_verdieping_verwijder IS NULL;
|
||
END IF;
|
||
|
||
IF v_alg_verdieping_key IS NOT NULL
|
||
THEN
|
||
-- Verdieping_volgnr ophalen
|
||
SELECT alg_verdieping_volgnr
|
||
INTO v_alg_verdieping_volgnr
|
||
FROM alg_verdieping
|
||
WHERE alg_verdieping_key = v_alg_verdieping_key;
|
||
|
||
-- Ruimte_key ophalen
|
||
SELECT MIN (alg_ruimte_key)
|
||
INTO v_alg_ruimte_key
|
||
FROM alg_ruimte
|
||
WHERE alg_verdieping_key = v_alg_verdieping_key
|
||
AND alg_ruimte_verwijder IS NULL;
|
||
END IF;
|
||
|
||
IF v_alg_ruimte_key IS NOT NULL
|
||
THEN
|
||
-- Ruimte_nr ophalen
|
||
SELECT alg_ruimte_nr
|
||
INTO v_alg_ruimte_nr
|
||
FROM alg_ruimte
|
||
WHERE alg_ruimte_key = v_alg_ruimte_key;
|
||
|
||
-- Vullen vastgoed-keten in import-tabel
|
||
UPDATE fac_imp_perslid
|
||
SET alg_locatie_code = v_alg_locatie_code,
|
||
alg_gebouw_code = v_alg_gebouw_code,
|
||
alg_verdieping_volgnr = v_alg_verdieping_volgnr,
|
||
alg_ruimte_nr = v_alg_ruimte_nr
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index;
|
||
END IF;
|
||
ELSE
|
||
-- Geen Locatie/Vastgoedketen kunnen vinden
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_kenmerk20 = 'Geen werkplekkoppeling'
|
||
WHERE fac_imp_file_index = rec.fac_imp_file_index;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
END goko_import_perslid;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE goko_update_perslid (p_import_key IN NUMBER)
|
||
IS
|
||
-- Alle personen verwijderen die niet meer in het import bestand voorkomen
|
||
-- Personen in de juiste autorisatiegroep zetten.
|
||
-- Match bij GO KINDEROPVANG is Personeelsnummer.
|
||
-- Geen acties tenzij het aantal records in de importtabel meer dan 100 medewerkers betreft.
|
||
|
||
CURSOR c_del
|
||
IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_nr, sp.prs_srtperslid_omschrijving
|
||
FROM prs_perslid p, prs_srtperslid sp, prs_v_afdeling_boom a
|
||
WHERE p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = 21 -- GO Kinderopvang
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND sp.prs_srtperslid_upper NOT IN ('TEAMACCOUNT','INTERNE AFDELING','UITZENDKRACHT')
|
||
AND p.prs_perslid_key NOT IN (SELECT prs_perslid_key FROM goko_v_personenlijst_waarn) -- Tijdelijke waarnemers worden niet door import verwijderd. Regelt men handmatig
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM fac_imp_perslid
|
||
WHERE p.prs_perslid_nr = prs_perslid_nr
|
||
)
|
||
ORDER BY 1 ;
|
||
|
||
CURSOR c_flex -- Voor updaten van de algemene flex-kenmerkvelden op actuele medewerkers
|
||
IS
|
||
SELECT p.prs_perslid_key, i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3, i.prs_kenmerk5, i.prs_kenmerk6, i.prs_kenmerk7, i.prs_kenmerk20
|
||
FROM prs_v_aanwezigperslid p, fac_imp_perslid i
|
||
WHERE p.prs_perslid_key = i.prs_perslid_key
|
||
ORDER BY 1;
|
||
|
||
CURSOR c_kantoor -- Voor updaten van kantoorpersoneel
|
||
IS
|
||
SELECT p.prs_perslid_key,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_email,
|
||
p.prs_perslid_oslogin,
|
||
p.prs_perslid_salt,
|
||
p.prs_perslid_wachtwoord_hash,
|
||
p.prs_perslid_wachtwoord_exp,
|
||
DECODE (v.prs_afdeling_key, NULL, 'nee', 'ja')
|
||
kantoormedewerker,
|
||
(SELECT g.fac_gebruikersgroep_key
|
||
FROM fac_gebruikersgroep g
|
||
WHERE g.fac_groep_key = 201
|
||
AND g.prs_perslid_key = p.prs_perslid_key)
|
||
in_kantoorgroep_key
|
||
FROM prs_perslid p,
|
||
(SELECT a.prs_afdeling_key
|
||
FROM prs_v_afdeling_boom ab, prs_afdeling a
|
||
WHERE a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND a.prs_afdeling_verwijder IS NULL
|
||
AND ab.prs_afdeling_key1 = 281
|
||
AND ab.niveau NOT IN ('1') -- Alles onder ORG-1 van KCC
|
||
) v
|
||
WHERE p.prs_afdeling_key = v.prs_afdeling_key(+)
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
ORDER BY 1 ;
|
||
|
||
CURSOR c_loc -- Voor updaten van locatieleiders & Waarnemers (in eigen autorisatiegroep + profiel toevoegen)
|
||
IS
|
||
SELECT v.prs_perslid_key
|
||
FROM goko_v_locatiemanagers v
|
||
GROUP BY v.prs_perslid_key ;
|
||
|
||
CURSOR c_loc_wp -- Voor updaten van locatieleiders (werkplek-koppelingen)
|
||
IS
|
||
SELECT v.prs_perslid_key, v.alg_locatie_key, v.prs_werkplek_key, v.actie
|
||
FROM
|
||
(
|
||
SELECT man.prs_perslid_key, man.alg_locatie_key, NULL prs_werkplek_key, 'toevoegen' actie
|
||
FROM goko_v_locatiemanagers man
|
||
WHERE NOT EXISTS
|
||
(SELECT *
|
||
FROM goko_v_locatiemanagers_wp wp
|
||
WHERE wp.alg_locatie_key = man.alg_locatie_key
|
||
AND wp.prs_perslid_key = man.prs_perslid_key)
|
||
UNION
|
||
SELECT wp.prs_perslid_key, wp.alg_locatie_key, wp.prs_werkplek_key, 'verwijderen' actie
|
||
FROM goko_v_locatiemanagers_wp wp
|
||
WHERE NOT EXISTS
|
||
(SELECT *
|
||
FROM goko_v_locatiemanagers man
|
||
WHERE man.alg_locatie_key = wp.alg_locatie_key
|
||
AND man.prs_perslid_key = wp.prs_perslid_key)
|
||
UNION
|
||
SELECT wp.prs_perslid_key, wp.alg_locatie_key, wp.prs_werkplek_key, 'ok' actie
|
||
FROM goko_v_locatiemanagers_wp wp, goko_v_locatiemanagers man
|
||
WHERE man.alg_locatie_key = wp.alg_locatie_key
|
||
AND man.prs_perslid_key = wp.prs_perslid_key
|
||
) v
|
||
ORDER BY 1,2,3 ;
|
||
|
||
CURSOR c_loc_kp -- Voor updaten van locatieleiders (budgethouder kostenplaatsen en mandaten op kostenplaatsen)
|
||
IS
|
||
SELECT v_prs.prs_perslid_key,
|
||
v_prs.alg_locatie_key,
|
||
v_kp.prs_kostenplaats_key,
|
||
v_prs.waarnemer
|
||
FROM goko_v_locatiemanagers v_prs, goko_v_locatie_kp v_kp
|
||
WHERE v_prs.alg_locatie_key = v_kp.alg_locatie_key
|
||
ORDER BY 1,2,3 ;
|
||
|
||
CURSOR c_loc_kp_del -- Voor deleten van mandaten die niet meer van toepassing zijn
|
||
IS
|
||
SELECT pk.prs_perslidkostenplaats_key
|
||
FROM prs_perslidkostenplaats pk
|
||
WHERE NOT EXISTS (SELECT v_prs.prs_perslid_key, v_kp.prs_kostenplaats_key
|
||
FROM goko_v_locatiemanagers v_prs, goko_v_locatie_kp v_kp
|
||
WHERE v_prs.alg_locatie_key = v_kp.alg_locatie_key
|
||
AND v_prs.prs_perslid_key = pk.prs_perslid_key AND v_kp.prs_kostenplaats_key = pk.prs_kostenplaats_key
|
||
GROUP BY v_prs.prs_perslid_key, v_kp.prs_kostenplaats_key
|
||
)
|
||
AND pk.prs_perslid_key IN (SELECT prs_perslid_key
|
||
FROM goko_v_locatiemanagers
|
||
GROUP BY prs_perslid_key) ;
|
||
|
||
|
||
v_count NUMBER;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (400);
|
||
v_errorhint VARCHAR2 (400);
|
||
|
||
v_fac_gebruikersgroep_key NUMBER(10);
|
||
v_alg_ruimte_key NUMBER;
|
||
v_prs_werkplek_key NUMBER;
|
||
v_waarnemer_overrule VARCHAR2 (12);
|
||
v_prs_perslid_key NUMBER(10); -- budgethouder op kp
|
||
v_prs_perslidkostenplaats_key NUMBER(10) ;
|
||
v_fac_profiel_key NUMBER(10);
|
||
|
||
|
||
BEGIN
|
||
v_errorhint := 'Niet genoeg personen in bestand, import afgebroken';
|
||
|
||
SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;
|
||
|
||
IF v_count >= 100
|
||
THEN
|
||
v_errorhint := 'Verwerken persoonsgegevens';
|
||
|
||
-- Geldig importbestand wat betreft aantal personen
|
||
|
||
COMMIT;
|
||
|
||
-- generic update
|
||
-- 'EMAIL' betekent dat op basis van Email wordt gematched. 'NR' op basis van personeelsnummer.
|
||
-- 'NULL' betekent altijd geen werkplekken verwijderen
|
||
-- Voor GOKO / Beaufort geldt:
|
||
---- Op NR gaan matchen.
|
||
---- Werkplekkoppeling <20> WEL/NIET standaard verwijderen <20> HOE/WAT beste in te regelen? UITZOEKEN/TESTEN (denk verwijderen beste is<69>.? OF alleen maar voor die personen die nu andere WERKPLEK_LOCATIE_KEY hebben ?)
|
||
prs.update_perslid (p_import_key, 'NR', NULL);
|
||
|
||
v_errorhint := 'Verwijderen persoonsgegevens';
|
||
|
||
-- Verwijder personen die niet meer in de import voorkomen.
|
||
FOR rec IN c_del
|
||
LOOP
|
||
BEGIN
|
||
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN c_flex
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint:='Fout bijwerken kenmerkveld Regio';
|
||
PRS.upsertkenmerk (1001, rec.prs_perslid_key, rec.prs_kenmerk2);
|
||
v_errorhint:='Fout bijwerken kenmerkveld Locatie';
|
||
PRS.upsertkenmerk (1002, rec.prs_perslid_key, rec.prs_kenmerk3);
|
||
v_errorhint:='Fout bijwerken kenmerkveld Kostenplaats';
|
||
PRS.upsertkenmerk (1004, rec.prs_perslid_key, rec.prs_kenmerk5);
|
||
v_errorhint:='Fout bijwerken kenmerkveld Datum uit dienst';
|
||
PRS.upsertkenmerk (1005, rec.prs_perslid_key, rec.prs_kenmerk6);
|
||
v_errorhint:='Fout bijwerken kenmerkveld Standplaats Facilitor';
|
||
PRS.upsertkenmerk (1006, rec.prs_perslid_key, rec.prs_kenmerk20);
|
||
v_errorhint:='Fout bijwerken kenmerkveld Email (werk)';
|
||
PRS.upsertkenmerk (1007, rec.prs_perslid_key, rec.prs_kenmerk7);
|
||
v_errorhint:='Fout bijwerken kenmerkveld Functie Beaufort';
|
||
PRS.upsertkenmerk (1040, rec.prs_perslid_key, rec.prs_kenmerk1);
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN c_kantoor
|
||
LOOP
|
||
BEGIN
|
||
|
||
-- Alle kantoormedewerkers toevoegen aan autorisatiegroep 'Kantoorpersoneel'
|
||
v_errorhint:='Fout toevoegen kantoormedewerkers inclusief ww';
|
||
|
||
IF rec.prs_perslid_email IS NOT NULL AND rec.prs_perslid_oslogin IS NOT NULL AND rec.kantoormedewerker = 'ja' AND rec.in_kantoorgroep_key IS NULL
|
||
THEN
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key,
|
||
prs_perslid_key)
|
||
VALUES (201, rec.prs_perslid_key);
|
||
|
||
-- nog wachtwoord toevoegen als het een nieuwe medewerker betreft (voor 1e inlog)
|
||
IF rec.prs_perslid_salt IS NULL
|
||
THEN
|
||
prs.setpassword(rec.prs_perslid_key, 'Welkom@facilitor');
|
||
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_wachtwoord_exp = SYSDATE
|
||
WHERE prs_perslid_key = rec.prs_perslid_key ;
|
||
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
-- Alle medewerkers die geen kantoorpersoneel meer zijn uit de autorisatiegroep 'Kantoorpersoneel' halen
|
||
v_errorhint:='Fout verwijderen kantoormedewerkers';
|
||
|
||
IF rec.kantoormedewerker = 'nee' AND rec.in_kantoorgroep_key IS NOT NULL
|
||
THEN
|
||
|
||
DELETE
|
||
FROM fac_gebruikersgroep g
|
||
WHERE fac_gebruikersgroep_key = rec.in_kantoorgroep_key ;
|
||
|
||
END IF;
|
||
|
||
END;
|
||
|
||
END LOOP;
|
||
|
||
FOR rec IN c_loc
|
||
LOOP
|
||
BEGIN
|
||
-- Alle locatieleiders toevoegen aan autorisatiegroep 'Locatieleiders'
|
||
v_errorhint:='Fout bijwerken locatieleiders in eigen autorisatiegroep';
|
||
|
||
BEGIN
|
||
|
||
SELECT fac_gebruikersgroep_key
|
||
INTO v_fac_gebruikersgroep_key
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 21 -- Groep 'Locatieleiders en Waarnemers'
|
||
AND prs_perslid_key = rec.prs_perslid_key ;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key,
|
||
prs_perslid_key)
|
||
VALUES (21, rec.prs_perslid_key);
|
||
|
||
END;
|
||
|
||
-- Alle locatieleiders juiste profiel meegeven
|
||
v_errorhint:='Fout bijwerken profiel locatieleiders';
|
||
|
||
SELECT fac_profiel_key
|
||
INTO v_fac_profiel_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_key = rec.prs_perslid_key ;
|
||
|
||
IF v_fac_profiel_key IS NULL
|
||
THEN
|
||
|
||
UPDATE prs_perslid
|
||
SET fac_profiel_key = 1
|
||
WHERE prs_perslid_key = rec.prs_perslid_key ;
|
||
|
||
BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Profiel: (leeg) --> Locatieleider-profiel (<5000)'); END;
|
||
END IF;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN c_loc_wp
|
||
LOOP
|
||
BEGIN
|
||
-- Werkplekkoppelingen op basis van de locaties waar men locatieleider van is
|
||
v_errorhint:='Fout bijwerken werkplekkoppelingen locatieleider';
|
||
|
||
IF rec.actie = 'toevoegen'
|
||
THEN
|
||
v_errorhint:='Fout bij toevoegen werkplekken voor Locatieleider - perslid_key:' || TO_CHAR(rec.prs_perslid_key) || ' , loc-key: ' || TO_CHAR(rec.alg_locatie_key);
|
||
|
||
BEGIN
|
||
|
||
SELECT MIN(r.alg_ruimte_key)
|
||
INTO v_alg_ruimte_key
|
||
FROM alg_ruimte r, alg_verdieping v, alg_gebouw g
|
||
WHERE r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND r.alg_ruimte_verwijder IS NULL AND v.alg_verdieping_verwijder IS NULL AND g.alg_gebouw_verwijder IS NULL
|
||
AND g.alg_locatie_key = rec.alg_locatie_key ;
|
||
|
||
IF v_alg_ruimte_key IS NOT NULL
|
||
THEN
|
||
|
||
-- PROCEDURE movetoruimte (p_prs_key IN NUMBER, p_ruimte_key IN NUMBER, p_alg_type IN VARCHAR2, p_virtual IN NUMBER DEFAULT 0);
|
||
BEGIN
|
||
PRS.movetoruimte (rec.prs_perslid_key,
|
||
v_alg_ruimte_key,
|
||
'L',
|
||
1);
|
||
END;
|
||
|
||
END IF;
|
||
END;
|
||
|
||
END IF;
|
||
|
||
IF rec.actie = 'verwijderen'
|
||
THEN
|
||
v_errorhint:='Fout bij verwijderen werkplekken';
|
||
|
||
DELETE prs_werkplek WHERE prs_werkplek_key = rec.prs_werkplek_key;
|
||
|
||
END IF;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN c_loc_kp
|
||
LOOP
|
||
BEGIN
|
||
|
||
-- kostenplaatsen waar men verantwoordelijk voor is - Budgethouder en Mandaten
|
||
v_errorhint:='Fout bijwerken kostenplaatsen en mandaten waar men verantwoordelijk voor is';
|
||
v_waarnemer_overrule := 'nee' ;
|
||
|
||
-- Eerst budgethouder op kostenplaatsen updaten waar nodig
|
||
---- Indien het geen waarnemer betreft gaan we eerst checken of er een bovenliggende waarnemer op die locatie is. Deze wordt/is dan namelijk de budgethouder voor die kostenplaats
|
||
|
||
IF rec.waarnemer = 'nee'
|
||
THEN
|
||
|
||
BEGIN
|
||
-- Is er op die locatie een waarnemer (die afwijkt van locatieleider) ingevuld?
|
||
SELECT waarnemer
|
||
INTO v_waarnemer_overrule
|
||
FROM goko_v_locatiemanagers
|
||
WHERE alg_locatie_key = rec.alg_locatie_key
|
||
AND waarnemer = 'ja'
|
||
AND prs_perslid_key <> rec.prs_perslid_key ;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN v_waarnemer_overrule := 'nee' ;
|
||
|
||
END;
|
||
|
||
END IF;
|
||
|
||
-- Dan kunnen we nu de budgethouder op kostenplaats updaten indien nodig
|
||
IF v_waarnemer_overrule = 'nee'
|
||
THEN
|
||
|
||
-- check eers of er nu afwijkende budgethouder op KP zit. Zo ja updaten
|
||
SELECT prs_perslid_key
|
||
INTO v_prs_perslid_key
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key
|
||
AND prs_kostenplaats_verwijder IS NULL
|
||
AND (prs_kostenplaats_eind IS NULL OR prs_kostenplaats_eind > TRUNC(SYSDATE) )
|
||
AND prs_kostenplaats_module = 'PRS' ;
|
||
|
||
IF v_prs_perslid_key IS NULL OR v_prs_perslid_key <> rec.prs_perslid_key
|
||
THEN
|
||
|
||
UPDATE prs_kostenplaats
|
||
SET prs_perslid_key = rec.prs_perslid_key
|
||
WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key ;
|
||
|
||
-- Geen fac_tracking nodig. Mutatie wordt namelijk al via trigger met aud.auditaction weggeschreven
|
||
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
-- Tot slot alle mandaten goed inregelen
|
||
SELECT prs_perslidkostenplaats_key
|
||
INTO v_prs_perslidkostenplaats_key
|
||
FROM prs_perslidkostenplaats
|
||
WHERE prs_perslid_key = rec.prs_perslid_key
|
||
AND prs_kostenplaats_key = rec.prs_kostenplaats_key ;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN v_prs_perslidkostenplaats_key := NULL;
|
||
|
||
IF v_prs_perslidkostenplaats_key IS NULL
|
||
THEN
|
||
|
||
INSERT INTO prs_perslidkostenplaats (prs_perslidkostenplaats_boeken,
|
||
prs_perslidkostenplaats_inzage,
|
||
prs_perslid_key,
|
||
prs_kostenplaats_key)
|
||
VALUES (1,
|
||
1,
|
||
rec.prs_perslid_key,
|
||
rec.prs_kostenplaats_key) ;
|
||
|
||
END IF;
|
||
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN c_loc_kp_del
|
||
LOOP
|
||
BEGIN
|
||
|
||
-- opschonen mandaten die niet meer geldig zijn
|
||
v_errorhint:='Fout verwijderen mandaten die niet meer geldig zijn';
|
||
|
||
DELETE
|
||
FROM prs_perslidkostenplaats
|
||
WHERE prs_perslidkostenplaats_key = rec.prs_perslidkostenplaats_key ;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
END goko_update_perslid;
|
||
/
|
||
|
||
-- Hook functie die na het saven (bes_postsave) van een bestelling wordt aangeroepen.
|
||
CREATE OR REPLACE PROCEDURE goko_bes_after_insert (p_key IN NUMBER)
|
||
AS
|
||
v_bes_bestelling_key NUMBER(10) ;
|
||
v_korting_percentage NUMBER(10,2) ;
|
||
v_inkoopprijs_totaal NUMBER(10,2) ;
|
||
v_check VARCHAR2(100) := 'ok' ;
|
||
v_ins_discipline_key NUMBER(10) ;
|
||
v_bes_kenmerk_key1 NUMBER(10) ; -- kenmerk_key voor totaalbedrag bestelling
|
||
v_waarde1 VARCHAR2(100) ; -- oorspronkelijke waarde van totaalbedrag in bestelling
|
||
v_bes_kenmerk_key2 NUMBER(10) ; -- kenmerk_key voor totaalbedrag korting
|
||
v_waarde2 VARCHAR2(100) ; -- oorspronkelijke waarde van totaalbedrag korting in bestelling
|
||
v_korting_totaal NUMBER(10,2) ;
|
||
v_gewijzigd NUMBER(1) := 0 ;
|
||
v_count NUMBER(10) ;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_aanduiding VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
|
||
BEGIN
|
||
|
||
v_errormsg := 'Ophalen bestelgegevens ivm totaalprijs en kortingspercentage';
|
||
v_gewijzigd := 0 ;
|
||
|
||
BEGIN
|
||
SELECT b.bes_bestelling_key, COALESCE(fac.safe_to_number(kmb.bes_kenmerkbestell_waarde),0) km_kortingspercentage, v.km_totaalprijs km_totaalprijs
|
||
INTO v_bes_bestelling_key, v_korting_percentage, v_inkoopprijs_totaal
|
||
FROM bes_bestelling b,
|
||
bes_kenmerkbestell kmb,
|
||
bes_kenmerk km,
|
||
(
|
||
SELECT bi.bes_bestelling_key,
|
||
SUM (COALESCE (bi.bes_bestelling_item_aantal * fac.safe_to_number(replace(kmi.bes_kenmerkbesteli_waarde,',','.')), 0))
|
||
km_totaalprijs
|
||
FROM bes_kenmerkbesteli kmi, bes_kenmerk km, bes_bestelling_item bi
|
||
WHERE bi.bes_bestelling_item_key = kmi.bes_bestelling_item_key
|
||
AND kmi.bes_kenmerk_key = km.bes_kenmerk_key
|
||
AND km.bes_srtkenmerk_key = 81 -- Artikelprijs
|
||
GROUP BY bi.bes_bestelling_key ) v
|
||
WHERE b.bes_bestelling_key = p_key
|
||
AND b.bes_bestelling_key = kmb.bes_bestelling_key
|
||
AND kmb.bes_kenmerk_key = km.bes_kenmerk_key AND km.bes_srtkenmerk_key = 142 -- Leverancierskorting
|
||
AND v.bes_bestelling_key = b.bes_bestelling_key
|
||
;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_check := 'stop';
|
||
END;
|
||
|
||
v_errormsg := 'Ophalen kenmerk_key voor totaalprijs';
|
||
|
||
IF v_check = 'ok'
|
||
THEN
|
||
|
||
-- ophalen kenmerk_key 'totaalbedrag bestelling'
|
||
-- ophalen kenmerk_key kortingsbedrag
|
||
SELECT d.ins_discipline_key
|
||
INTO v_ins_discipline_key
|
||
FROM bes_bestelling_item bi,
|
||
bes_srtdeel sd,
|
||
bes_srtgroep sg,
|
||
ins_tab_discipline d
|
||
WHERE bi.bes_bestelling_key = p_key
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
||
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sg.ins_discipline_key = d.ins_discipline_key
|
||
GROUP BY d.ins_discipline_key ;
|
||
|
||
SELECT MAX(bes_kenmerk_key)
|
||
INTO v_bes_kenmerk_key1
|
||
FROM bes_kenmerk km, bes_srtkenmerk skm
|
||
WHERE km.bes_srtkenmerk_key = skm.bes_srtkenmerk_key
|
||
AND skm.bes_srtkenmerk_key = 44 -- totaalbedrag bestelling
|
||
AND km.bes_srtinstallatie_key = v_ins_discipline_key
|
||
AND km.bes_kenmerk_niveau = 'D'
|
||
AND km.bes_kenmerk_verwijder IS NULL ;
|
||
|
||
SELECT MAX(bes_kenmerk_key)
|
||
INTO v_bes_kenmerk_key2
|
||
FROM bes_kenmerk km, bes_srtkenmerk skm
|
||
WHERE km.bes_srtkenmerk_key = skm.bes_srtkenmerk_key
|
||
AND skm.bes_srtkenmerk_key = 47 -- totaalbedrag korting
|
||
AND km.bes_srtinstallatie_key = v_ins_discipline_key
|
||
AND km.bes_kenmerk_niveau = 'D'
|
||
AND km.bes_kenmerk_verwijder IS NULL ;
|
||
|
||
-- Vullen kenmerk 'totaalbedrag bestelling'
|
||
IF v_bes_kenmerk_key1 IS NOT NULL
|
||
THEN
|
||
-- Dan gaan we het kenmerk upserten ! ER IS GEEN bes.upsertbestellingkenmerk beschikbaar..
|
||
BEGIN
|
||
|
||
SELECT COUNT ( * ), MIN (bes_kenmerkbestell_waarde)
|
||
INTO v_count, v_waarde1
|
||
FROM bes_kenmerkbestell
|
||
WHERE bes_bestelling_key = p_key
|
||
AND bes_kenmerk_key = v_bes_kenmerk_key1
|
||
AND bes_kenmerkbestell_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
|
||
IF v_inkoopprijs_totaal IS NULL
|
||
THEN
|
||
|
||
DELETE bes_kenmerkbestell
|
||
WHERE bes_bestelling_key = p_key
|
||
AND bes_kenmerk_key = v_bes_kenmerk_key1
|
||
AND bes_kenmerkbestell_verwijder IS NULL;
|
||
v_gewijzigd := 1 ;
|
||
|
||
ELSE
|
||
|
||
IF (fac.safe_to_number(v_waarde1) <> v_inkoopprijs_totaal)
|
||
THEN
|
||
|
||
UPDATE bes_kenmerkbestell
|
||
SET bes_kenmerkbestell_waarde = v_inkoopprijs_totaal
|
||
WHERE bes_bestelling_key = p_key
|
||
AND bes_kenmerk_key = v_bes_kenmerk_key1
|
||
AND bes_kenmerkbestell_verwijder IS NULL;
|
||
v_gewijzigd := 1 ;
|
||
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
IF v_bes_kenmerk_key1 IS NOT NULL AND v_inkoopprijs_totaal IS NOT NULL
|
||
THEN
|
||
INSERT INTO bes_kenmerkbestell (bes_kenmerk_key,
|
||
bes_bestelling_key,
|
||
bes_kenmerkbestell_waarde)
|
||
VALUES (v_bes_kenmerk_key1, p_key, v_inkoopprijs_totaal);
|
||
v_gewijzigd := 1 ;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
|
||
END IF;
|
||
|
||
-- Vullen kenmerk 'totaalbedrag korting'
|
||
IF v_bes_kenmerk_key2 IS NOT NULL
|
||
THEN
|
||
-- Dan gaan we het kenmerk upserten ! ER IS GEEN bes.upsertbestellingkenmerk beschikbaar..
|
||
BEGIN
|
||
v_korting_totaal := COALESCE(v_korting_percentage, 0)/100 * COALESCE(v_inkoopprijs_totaal, 0) ;
|
||
|
||
SELECT COUNT ( * ), MIN (bes_kenmerkbestell_waarde)
|
||
INTO v_count, v_waarde2
|
||
FROM bes_kenmerkbestell
|
||
WHERE bes_bestelling_key = p_key
|
||
AND bes_kenmerk_key = v_bes_kenmerk_key2
|
||
AND bes_kenmerkbestell_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
|
||
IF v_korting_percentage IS NULL OR v_korting_percentage = 0
|
||
THEN
|
||
|
||
DELETE bes_kenmerkbestell
|
||
WHERE bes_bestelling_key = p_key
|
||
AND bes_kenmerk_key = v_bes_kenmerk_key2
|
||
AND bes_kenmerkbestell_verwijder IS NULL;
|
||
v_gewijzigd := 1 ;
|
||
|
||
ELSE
|
||
|
||
IF (fac.safe_to_number(v_waarde2) <> v_korting_totaal)
|
||
THEN
|
||
|
||
UPDATE bes_kenmerkbestell
|
||
SET bes_kenmerkbestell_waarde = v_korting_totaal
|
||
WHERE bes_bestelling_key = p_key
|
||
AND bes_kenmerk_key = v_bes_kenmerk_key2
|
||
AND bes_kenmerkbestell_verwijder IS NULL;
|
||
v_gewijzigd := 1 ;
|
||
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
IF v_bes_kenmerk_key2 IS NOT NULL AND v_korting_totaal > 0
|
||
THEN
|
||
INSERT INTO bes_kenmerkbestell (bes_kenmerk_key,
|
||
bes_bestelling_key,
|
||
bes_kenmerkbestell_waarde)
|
||
VALUES (v_bes_kenmerk_key2, p_key, v_korting_totaal);
|
||
v_gewijzigd := 1 ;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
|
||
END IF;
|
||
|
||
|
||
-- fac_tracking - ACTIE - bedrag is + bedrag was
|
||
IF v_gewijzigd = 1
|
||
THEN
|
||
BEGIN fac.trackaction('BESUPD', v_bes_bestelling_key, 3, NULL, 'Prijswijziging doorgevoerd in bestelling - totaalprijs was/is ' || TO_CHAR(v_waarde1) || '/' || TO_CHAR(v_inkoopprijs_totaal) || ' - korting was/is ' || TO_CHAR(v_waarde2) || '/' || TO_CHAR(v_korting_totaal)); END;
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
END goko_bes_after_insert;
|
||
/
|
||
|
||
-------------------------------
|
||
--- RAPPORTAGES ---------------
|
||
-------------------------------
|
||
|
||
-- Nieuwe rapportage tav Opdrachtbewaking (intern/extern) - Zie ook ticket 86460
|
||
CREATE OR REPLACE VIEW goko_v_rap_opdrachten
|
||
(
|
||
INTERN,
|
||
TYPE,
|
||
MLD_OPDR_KEY,
|
||
MLD_UITVOERENDE_KEY,
|
||
OPDRACHTNR,
|
||
STATUS,
|
||
MELDING,
|
||
BEHANDELAAR,
|
||
LOCATIE_PLAATS,
|
||
LOCATIE_OMSCHRIJVING,
|
||
LOCATIE_DIVERSEN,
|
||
OPDRACHT_AANMAAKDATUM,
|
||
GEPLANDE_AANVANG,
|
||
GEPLANDE_AANVANG_B, -- berekend voor kalenderweergave
|
||
GEPLANDE_EINDDATUM,
|
||
GEPLANDE_EINDDATUM_B, -- berekend voor kalenderweergave
|
||
OPDRACHT_EINDDATUM,
|
||
MELDING_EINDDATUM,
|
||
OMSCHRIJVING,
|
||
INTERN_UREN_GEPLAND,
|
||
INTERN_UREN_BESTEED,
|
||
PRS_PERSLID_KEY,
|
||
NAAM_UITVOERDER,
|
||
AFMELD_DATUM,
|
||
OPDRACHT_TYPE,
|
||
TD_NAAM,
|
||
PRIORITEIT,
|
||
MLD_MELDING_KEY, -- t.b.v. doorklik voor teamaccounts
|
||
FCLT_3D_LOCATIE_KEY, -- t.b.v. scoping
|
||
STATUS_KALENDER -- t.b.v. kalenderweergave
|
||
)
|
||
AS
|
||
SELECT mu.intern,
|
||
CASE
|
||
WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN 'Poule-opdracht'
|
||
WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN 'Klus-opdracht'
|
||
WHEN mu.intern = 0 THEN 'Externe opdracht'
|
||
ELSE '<?>'
|
||
END
|
||
TYPE,
|
||
o.mld_opdr_key,
|
||
CASE
|
||
WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN mu.mld_uitvoerende_key
|
||
WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN o.prs_perslid_key
|
||
WHEN mu.intern = 0 THEN mu.mld_uitvoerende_key
|
||
ELSE NULL
|
||
END
|
||
mld_uitvoerende_key,
|
||
TO_CHAR (o.mld_melding_key)
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
opdrachtnummer,
|
||
DECODE (
|
||
os.mld_statusopdr_key,
|
||
8, DECODE (o.mld_opdr_halted,
|
||
1, 'Onderbroken',
|
||
os.mld_statusopdr_omschrijving),
|
||
os.mld_statusopdr_omschrijving)
|
||
status,
|
||
std.mld_stdmelding_omschrijving,
|
||
COALESCE (p.prs_perslid_naam_full, '<nog geen behandelaar>')
|
||
behandelaar,
|
||
l.alg_locatie_plaats || ' - ' || l.alg_locatie_omschrijving
|
||
alg_locatie_plaats,
|
||
l.alg_locatie_omschrijving,
|
||
(SELECT km.mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_key = 363) -- kenmerk Diverse locaties - gespecificeerd
|
||
locatie_diversen,
|
||
o.mld_opdr_datumbegin,
|
||
o.mld_opdr_plandatum
|
||
geplande_aanvang,
|
||
CASE WHEN o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum ELSE o.mld_opdr_datumbegin END
|
||
geplande_aanvang_b,
|
||
o.mld_opdr_plandatum2
|
||
geplande_einddatum,
|
||
CASE WHEN o.mld_opdr_plandatum2 IS NOT NULL AND o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum2
|
||
WHEN o.mld_opdr_plandatum2 IS NULL AND o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum + 2/24
|
||
ELSE o.mld_opdr_datumbegin + 2/24
|
||
END
|
||
geplande_einddatum_b,
|
||
o.mld_opdr_einddatum,
|
||
m.mld_melding_einddatum,
|
||
TRIM (
|
||
REGEXP_REPLACE (
|
||
REGEXP_SUBSTR (o.mld_opdr_omschrijving,
|
||
'(([^ ]*)( |$)*){10}'),
|
||
'[[:space:]]',
|
||
' '))
|
||
|| '...'
|
||
omschrijving,
|
||
(SELECT ko.mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = 1942)
|
||
intern_uren_gepland,
|
||
(SELECT ko.mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = 5)
|
||
intern_uren_besteed,
|
||
p.prs_perslid_key,
|
||
mu.naam
|
||
naam_uitvoerder,
|
||
(SELECT MAX (ft.fac_tracking_datum)
|
||
FROM fac_tracking ft
|
||
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
|
||
AND ft.fac_srtnotificatie_key = 78) -- ORDAFM
|
||
afmeld_datum,
|
||
ot.mld_typeopdr_omschrijving,
|
||
CASE
|
||
WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN COALESCE (p.prs_perslid_naam_full, '<nog geen behandelaar>')
|
||
WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN mu.naam
|
||
ELSE ''
|
||
END td_naam,
|
||
COALESCE(v.prioriteit,'3 - NORMAAL')
|
||
prioriteit,
|
||
m.mld_melding_key,
|
||
l.alg_locatie_key,
|
||
CASE
|
||
WHEN os.mld_statusopdr_omschrijving = 'Afgemeld' THEN 'Afgemeld'
|
||
WHEN os.mld_statusopdr_omschrijving = 'Afgewezen' THEN 'Afgewezen'
|
||
WHEN mu.intern = 1 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NULL THEN 'Nog inplannen'
|
||
WHEN mu.intern = 1 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NOT NULL THEN 'Ingepland'
|
||
WHEN mu.intern = 0 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NULL THEN 'Nog niet bevestigd'
|
||
WHEN mu.intern = 0 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NOT NULL THEN 'Bevestigd'
|
||
ELSE ''
|
||
END status_kalender
|
||
FROM mld_opdr o,
|
||
mld_melding m,
|
||
mld_typeopdr ot,
|
||
prs_v_perslid_fullnames p,
|
||
ins_tab_discipline d,
|
||
mld_stdmelding std,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
mld_v_uitvoerende mu,
|
||
mld_statusopdr os,
|
||
(
|
||
SELECT ko.mld_opdr_key, ud.fac_usrdata_code || ' - ' || ud.fac_usrdata_omschr prioriteit
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE fac.safe_to_number(ko.mld_kenmerkopdr_waarde) = ud.fac_usrdata_key
|
||
AND fac_usrtab_key = 201 -- keuzelijst eigen tabel Prioriteit
|
||
AND ko.mld_kenmerk_key IN (1941) -- kenmerk Prioriteit
|
||
) v
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND o.prs_perslid_key = p.prs_perslid_key(+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND ot.mld_typeopdr_isofferte = 0 -- Alleen werkopdrachten
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key(+)
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key(+)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key -- alle std-meldingen hebben verplicht-niveau locatie
|
||
AND l.alg_district_key = d.alg_district_key
|
||
AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
|
||
AND os.mld_statusopdr_key = o.mld_statusopdr_key
|
||
AND o.fac_activiteit_key IS NULL -- uitsluiten opdrachten die via geplande_acties worden aangemaakt
|
||
AND o.mld_opdr_key = v.mld_opdr_key(+) ;
|
||
|
||
|
||
-- tbv calenderview
|
||
CREATE OR REPLACE VIEW goko_v_cal_opdrachten
|
||
(
|
||
USER_KEY,
|
||
TITLE,
|
||
VAN,
|
||
TOT,
|
||
ITEM_KEY,
|
||
COLOR,
|
||
TEXTCOLOR,
|
||
NAAM_UITVOERDER,
|
||
LOCATIE_PLAATS,
|
||
STATUS_KALENDER,
|
||
INTERN,
|
||
OPDRACHT_TYPE,
|
||
MLD_MELDING_KEY, -- t.b.v. doorklik voor teamaccounts
|
||
FCLT_3D_LOCATIE_KEY
|
||
)
|
||
AS
|
||
SELECT mld_uitvoerende_key,
|
||
' - ' || opdrachtnr || DECODE(prioriteit, '3 - NORMAAL', '', ' (prio' || SUBSTR(prioriteit, 4) || ')' ) || CHR(10)
|
||
|| naam_uitvoerder || CHR(10)
|
||
|| CASE
|
||
WHEN locatie_diversen IS NOT NULL THEN locatie_diversen || CHR(10)
|
||
ELSE 'Locatie: ' || locatie_plaats || CHR(10) END
|
||
|| 'Status: ' || status_kalender || CHR(10)
|
||
|| CASE
|
||
WHEN intern = 1 THEN 'Uren (indicatief): ' || DECODE (intern_uren_gepland, NULL, '<onbekend>', TO_CHAR(intern_uren_gepland)) || CHR(10)
|
||
ELSE NULL END
|
||
|| CASE
|
||
WHEN geplande_aanvang IS NOT NULL AND geplande_einddatum IS NOT NULL THEN 'Bevestigd van ' || TO_CHAR(geplande_aanvang_b) || ' tot ' || TO_CHAR(geplande_einddatum_b)
|
||
WHEN geplande_aanvang IS NOT NULL AND geplande_einddatum IS NULL THEN 'Bevestigde aanvang: ' || TO_CHAR(geplande_aanvang_b)
|
||
WHEN geplande_aanvang IS NULL AND geplande_einddatum IS NOT NULL THEN 'Bevestigde einddatum: ' || TO_CHAR(geplande_einddatum_b)
|
||
ELSE '<nog te plannen>' END
|
||
title,
|
||
geplande_aanvang_b
|
||
van,
|
||
geplande_einddatum_b
|
||
tot,
|
||
mld_opdr_key,
|
||
DECODE (intern, 1,
|
||
DECODE (status_kalender,
|
||
'Afgewezen', '#C0C0C0', -- grijs
|
||
'Afgemeld', '#C0C0C0', -- grijs
|
||
'Nog inplannen', '#f58a20', -- oranje
|
||
'Ingepland', '#20b2f5', -- lichtblauw
|
||
'#0000FF'),
|
||
0,
|
||
DECODE (status_kalender,
|
||
'Afgewezen', '#C0C0C0', -- grijs
|
||
'Afgemeld', '#C0C0C0', -- grijs
|
||
'Nog niet bevestigd', '#F5ED5D', -- lichtgeel
|
||
'Bevestigd', '#DED304', -- donkergeel
|
||
'#0000FF'),
|
||
'#0000FF'
|
||
) color, --
|
||
DECODE (intern, 1,
|
||
DECODE (status_kalender,
|
||
'Afgewezen', '#bf0b3b', -- rood
|
||
'Afgemeld', '#000000', -- zwart
|
||
'Nog inplannen', '#FFFFFF', -- wit,
|
||
'Ingepland',
|
||
DECODE (LOWER(prioriteit),
|
||
'3 - normaal', '#FFFFFF', -- wit
|
||
'4 - laag', '#FFFFFF', -- wit
|
||
'2 - hoog', '#f58a20', -- oranje
|
||
'1 - kritiek', '#bf0b3b', -- rood
|
||
'#000000'),
|
||
'#000000'),
|
||
0,
|
||
DECODE (status_kalender,
|
||
'Afgewezen', '#bf0b3b', -- rood
|
||
'Afgemeld', '#000000', -- zwart
|
||
'Nog niet bevestigd', '#000000', -- zwart
|
||
'Bevestigd', '#000000', -- zwart
|
||
'Toegekend', '#FFFFFF', -- wit,
|
||
'#0000FF'),
|
||
'#000000'
|
||
) textcolor,
|
||
naam_uitvoerder,
|
||
locatie_plaats,
|
||
status_kalender,
|
||
intern,
|
||
opdracht_type,
|
||
mld_melding_key,
|
||
fclt_3d_locatie_key
|
||
FROM goko_v_rap_opdrachten
|
||
ORDER BY geplande_aanvang_b ;
|
||
|
||
|
||
-- view om QR codes voor een deel te genereren.
|
||
CREATE OR REPLACE VIEW goko_v_rap_qr_deel
|
||
AS
|
||
SELECT fac_bookmark_naam,
|
||
fac_bookmark_id,
|
||
ins_discipline_omschrijving,
|
||
ins_srtgroep_omschrijving,
|
||
ins_srtdeel_omschrijving,
|
||
ins_deel_omschrijving,
|
||
CASE
|
||
WHEN d.ins_discipline_key = 83 -- IT
|
||
THEN
|
||
(SELECT k.ins_kenmerkdeel_waarde
|
||
FROM ins_kenmerkdeel k
|
||
WHERE k.ins_deel_key = d.ins_deel_key
|
||
AND k.ins_kenmerk_key = 8)
|
||
ELSE
|
||
NULL
|
||
END
|
||
serienummer,
|
||
CASE WHEN alg_locatie_key IS NOT NULL THEN 'Locatiegebonden'
|
||
WHEN d.prs_perslid_key IS NOT NULL THEN 'Persoonsgebonden'
|
||
ELSE 'Overig'
|
||
END soort,
|
||
alg_locatie_key,
|
||
alg_gebouw_omschrijving,
|
||
d.prs_perslid_key,
|
||
prs_perslid_volnaam,
|
||
ins_deel_aanmaak,
|
||
ins_deel_key
|
||
FROM fac_bookmark b, ins_v_deel_gegevens d
|
||
WHERE fac_bookmark_expire IS NULL
|
||
AND fac_bookmark_id = 'wiBUpSjNzahvJ9R5';
|
||
|
||
-- Rapportage Gebouwbeheer
|
||
CREATE OR REPLACE VIEW goko_v_alg_onroerendgoed
|
||
(
|
||
DISTRICT,
|
||
LOCATIE,
|
||
LOCATIE_CODE,
|
||
LOCATIE_KEY,
|
||
GEBOUW,
|
||
-- gegevens uit locatiekaart
|
||
LOCATIEMANAGER,
|
||
WAARNEMER,
|
||
EIGENDOMSINDICATIE,
|
||
WIFI_DOOR,
|
||
INBRAAKBEV_DOOR,
|
||
TELEFONIE_DOOR,
|
||
-- Opvangsoorten en kp's
|
||
OPVANGSOORT_KDV,
|
||
KOSTENPLAATS_KDV,
|
||
TELEFOON_KDV,
|
||
OPVANGSOORT_BSO,
|
||
KOSTENPLAATS_BSO,
|
||
TELEFOON_BSO,
|
||
OPVANGSOORT_PSZ,
|
||
KOSTENPLAATS_PSZ,
|
||
KOSTENPLAATS_PSZ_2,
|
||
TELEFOON_PSZ,
|
||
OPVANGSOORT_TO,
|
||
KOSTENPLAATS_TO,
|
||
TELEFOON_TO,
|
||
OPVANGSOORT_VAKANTIE,
|
||
KOSTENPLAATS_VAKANTIE,
|
||
--
|
||
VERDIEPING,
|
||
RUIMTENR,
|
||
RUIMTE_OMSCHRIJVING,
|
||
RUIMTEFUNCTIE,
|
||
BVO_M2
|
||
)
|
||
AS
|
||
SELECT d.alg_district_omschrijving,
|
||
l.alg_locatie_omschrijving,
|
||
l.alg_locatie_code,
|
||
l.alg_locatie_key,
|
||
v.alg_gebouw_code || ' - ' || v.alg_gebouw_naam
|
||
gebouw,
|
||
km.locatiemanager,
|
||
km.waarnemer,
|
||
km.eigendomsinidcatie,
|
||
km.wifi_door,
|
||
km.inbraakbev_door,
|
||
km.telefonie_door,
|
||
km.opvangsoort_kdv,
|
||
km.kp_kdv,
|
||
km.tel_kdv,
|
||
km.opvangsoort_bso,
|
||
km.kp_bso,
|
||
km.tel_bso,
|
||
km.opvangsoort_psz,
|
||
km.kp_psz,
|
||
km.kp_psz_2,
|
||
km.tel_psz,
|
||
km.opvangsoort_to,
|
||
km.kp_to,
|
||
km.tel_to,
|
||
km.opvangsoort_vak,
|
||
km.kp_vak,
|
||
v.alg_verdieping_omschrijving || ' - ' || v.alg_verdieping_code
|
||
verdieping,
|
||
v.alg_ruimte_nr,
|
||
v.alg_ruimte_omschrijving,
|
||
sr.alg_srtruimte_omschrijving,
|
||
r.alg_ruimte_bruto_vloeropp
|
||
FROM alg_v_onroerendgoed_gegevens v,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
(SELECT l.alg_locatie_key,
|
||
-- 1006 - kdv
|
||
flx.getflex('ALG', 1006, l.alg_locatie_key, 'L') opvangsoort_kdv,
|
||
flx.getdomeinwaarde(1,flx.getflex('ALG', 1010, l.alg_locatie_key, 'L')) kp_kdv,
|
||
flx.getflex('ALG', 1011, l.alg_locatie_key, 'L') tel_kdv,
|
||
-- 1007 - bso
|
||
flx.getflex('ALG', 1007, l.alg_locatie_key, 'L') opvangsoort_bso,
|
||
flx.getdomeinwaarde(1,flx.getflex('ALG', 1012, l.alg_locatie_key, 'L')) kp_bso,
|
||
flx.getflex('ALG', 1013, l.alg_locatie_key, 'L') tel_bso,
|
||
-- 1008 - psz
|
||
flx.getflex('ALG', 1008, l.alg_locatie_key, 'L') opvangsoort_psz,
|
||
flx.getdomeinwaarde(1,flx.getflex('ALG', 1014, l.alg_locatie_key, 'L')) kp_psz,
|
||
flx.getdomeinwaarde(1,flx.getflex('ALG', 1016, l.alg_locatie_key, 'L')) kp_psz_2,
|
||
flx.getflex('ALG', 1015, l.alg_locatie_key, 'L') tel_psz,
|
||
-- 1009 - to
|
||
flx.getflex('ALG', 1009, l.alg_locatie_key, 'L') opvangsoort_to,
|
||
flx.getdomeinwaarde(1,flx.getflex('ALG', 1017, l.alg_locatie_key, 'L')) kp_to,
|
||
flx.getflex('ALG', 1018, l.alg_locatie_key, 'L') tel_to,
|
||
-- 1040 - vakantie
|
||
flx.getflex('ALG', 1040, l.alg_locatie_key, 'L') opvangsoort_vak,
|
||
flx.getdomeinwaarde(1,flx.getflex('ALG', 1041, l.alg_locatie_key, 'L')) kp_vak,
|
||
-- locatieverantwoordelijke
|
||
flx.getdomeinwaarde(2,flx.getflex('ALG', 1002, l.alg_locatie_key, 'L')) locatiemanager,
|
||
flx.getdomeinwaarde(4,flx.getflex('ALG', 1003, l.alg_locatie_key, 'L')) waarnemer,
|
||
-- diensten en eigendom
|
||
flx.getdomeinwaarde(3,flx.getflex('ALG', 1020, l.alg_locatie_key, 'L')) eigendomsinidcatie,
|
||
flx.getflex('ALG', 1022, l.alg_locatie_key, 'L') wifi_door,
|
||
flx.getflex('ALG', 1023, l.alg_locatie_key, 'L') inbraakbev_door,
|
||
flx.getflex('ALG', 1024, l.alg_locatie_key, 'L') telefonie_door
|
||
FROM alg_locatie l ) km,
|
||
alg_ruimte r,
|
||
alg_srtruimte sr
|
||
WHERE v.alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = d.alg_district_key
|
||
AND v.alg_type IN ('R')
|
||
AND v.alg_locatie_key = km.alg_locatie_key
|
||
AND v.alg_ruimte_key = r.alg_ruimte_key AND r.alg_ruimte_verwijder IS NULL
|
||
AND r.alg_srtruimte_key = sr.alg_srtruimte_key (+)
|
||
ORDER BY d.alg_district_omschrijving, l.alg_locatie_code, v.alg_gebouw_code, v.alg_ruimte_nr ;
|
||
|
||
-- Bronview - koppeling met Elvy
|
||
CREATE OR REPLACE VIEW goko_v_verplichtingen_elvy
|
||
(
|
||
LEVERANCIER_NAAM,
|
||
LEVERANCIER_NR,
|
||
FACTUUR_MATCHING,
|
||
FACILITOR_BRON, -- soort verplichting: opdracht, bestelopdracht, contract
|
||
FACILITOR_SOORT, -- specifiek goko: opdracht (werk-order, key 5), inkoopopdracht (key 181), bestelopdracht_standaard_facilitor (vrije aanmaak, statische en punchout-catalogi), bestelopdracht_nietstandaard_goko (specifiek aangemaakt 'vrij artikel' op catalgoi.., contract_vast, contract_variabel
|
||
FACILITOR_REFERENTIE,
|
||
LEVERANCIER_REFERENTIE,
|
||
STATUS,
|
||
ATTENTIE,
|
||
DATUM,
|
||
DATUM_EINDDATUM, -- gepland - gewenst gereed
|
||
DATUM_AFGEMELD, -- OPDR = afmelddatum, BESTELOPDR = Laatste goederenontvangst CONTRACT = termijn
|
||
TEKST_AFGEMELD, -- Interne tekst bij afmelding verplichting
|
||
BEDRAG_VERPLICHTING_TOTAAL, -- Totaalbedrag van de verplichting
|
||
BEDRAG_KORTING_TOT,
|
||
BEDRAG_REEDS_BETAALD,
|
||
BEDRAG_OPENSTAAND,
|
||
-- REGELS VERPLICHTING
|
||
REGEL_NR,
|
||
REGEL_ARTIKELCODE, --
|
||
REGEL_OMSCHRIJVING,
|
||
KOSTEN_VERDELING, --
|
||
KOSTEN_WERKSOORT,
|
||
KOSTENSOORT, -- Nog niet gevuld in Faciitor...wel meerwaarde?
|
||
AANTAL_BESTELD,
|
||
AANTAL_ONTVANGEN,
|
||
BEDRAG_STUKSPRIJS,
|
||
BEDRAG_TOTAAL_REGEL,
|
||
BTW_PERCENTAGE,
|
||
REGEL_OPMERKING
|
||
)
|
||
AS
|
||
-- Opdracht
|
||
SELECT bedr.prs_bedrijf_naam
|
||
leverancier_naam,
|
||
bedr.prs_leverancier_nr
|
||
leverancier_nr,
|
||
'nog vullen' -- Via leveranciers_kaart op kenmerkveld doen ???
|
||
factuur_matching,
|
||
'opdracht'
|
||
facilitor_bron,
|
||
ot.mld_typeopdr_omschrijving
|
||
facilitor_soort,
|
||
sd.ins_srtdiscipline_prefix
|
||
|| TO_CHAR (o.mld_melding_key)
|
||
|| '/'
|
||
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
|
||
facilitor_referentie,
|
||
flx.getflex ('OPD', 544, o.mld_opdr_key) -- voor inkoopopdr is key 547
|
||
leverancier_referentie,
|
||
os.mld_statusopdr_omschrijving
|
||
status,
|
||
NULL
|
||
attentie,
|
||
o.mld_opdr_datumbegin
|
||
datum,
|
||
COALESCE (o.mld_opdr_plandatum, o.mld_opdr_einddatum)
|
||
datum_einddatum,
|
||
COALESCE (mld.getopdrachtstatusdate (o.mld_opdr_key, 6),
|
||
mld.getopdrachtstatusdate (o.mld_opdr_key, 1))
|
||
datum_afgemeld,
|
||
o.mld_opdr_opmerking
|
||
tekst_afgemeld,
|
||
o.mld_opdr_kosten
|
||
bedrag_verplichting_totaal,
|
||
NULL
|
||
bedrag_korting_tot,
|
||
COALESCE (f.bedrag_reedsbetaald, 0)
|
||
bedrag_reedsbetaald,
|
||
COALESCE (o.mld_opdr_kosten, 0) - COALESCE (f.bedrag_reedsbetaald, 0)
|
||
bedrag_openstaand,
|
||
1 -- werkopdracht heeft geen subregels..
|
||
regel_nr,
|
||
NULL
|
||
regel_artikelcode,
|
||
o.mld_opdr_omschrijving
|
||
regel_omschrijving,
|
||
COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend')
|
||
kosten_verdeling,
|
||
CASE
|
||
WHEN COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend') =
|
||
'Anders'
|
||
THEN
|
||
COALESCE (kost_o.kosten_voor_anders,
|
||
kost_m.kosten_voor_anders,
|
||
'onbekend')
|
||
WHEN COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend') =
|
||
'Gelijk aan kostenplaats'
|
||
THEN
|
||
COALESCE (
|
||
kp.prs_kostenplaats_nr
|
||
|| '-'
|
||
|| kp.prs_kostenplaats_omschrijving,
|
||
'onbekend')
|
||
WHEN COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend') =
|
||
'Alle werksoorten van gekozen adres/locatie'
|
||
THEN
|
||
(SELECT DECODE (
|
||
v.opvangsoort_kdv,
|
||
'1', v.kostenplaats_kdv || CHR (13) || CHR (10))
|
||
|| DECODE (
|
||
v.opvangsoort_bso,
|
||
'1', v.kostenplaats_bso || CHR (13) || CHR (10))
|
||
|| DECODE (
|
||
v.opvangsoort_to,
|
||
'1', v.kostenplaats_to || CHR (13) || CHR (10))
|
||
|| DECODE (
|
||
v.opvangsoort_psz,
|
||
'1', v.kostenplaats_psz
|
||
|| CHR (13)
|
||
|| CHR (10)
|
||
|| v.kostenplaats_psz_2)
|
||
FROM (SELECT locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2
|
||
FROM goko_v_alg_onroerendgoed
|
||
GROUP BY locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2) v
|
||
WHERE v.locatie_key = m.mld_alg_locatie_key)
|
||
ELSE
|
||
'onbekend'
|
||
END
|
||
kosten_werksoort,
|
||
'nog vullen - ???'
|
||
kostensoort,
|
||
1
|
||
aantal_besteld,
|
||
NULL
|
||
aantal_ontvangen,
|
||
o.mld_opdr_kosten
|
||
bedrag_stuksprijs,
|
||
o.mld_opdr_kosten
|
||
bedrag_totaal_regel,
|
||
NULL
|
||
btw_percentage,
|
||
NULL
|
||
regel_opmerking
|
||
FROM mld_opdr o,
|
||
prs_kostenplaats kp,
|
||
mld_melding m,
|
||
mld_typeopdr ot,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd,
|
||
mld_stdmelding std,
|
||
alg_locatie l,
|
||
alg_v_onroerendgoed_gegevens onr,
|
||
mld_v_uitvoerende mu,
|
||
prs_bedrijf bedr,
|
||
mld_statusopdr os,
|
||
(SELECT mld_opdr_key,
|
||
ud.fac_usrdata_omschr
|
||
kosten_voor,
|
||
CASE
|
||
WHEN ko.mld_kenmerkopdr_waarde = '101'
|
||
THEN
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 862) -- kenmerk 'kosten voor - anders'
|
||
ELSE
|
||
NULL
|
||
END
|
||
kosten_voor_anders
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k, fac_usrdata ud
|
||
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 2 -- kosten voor
|
||
AND fac.safe_to_number (ko.mld_kenmerkopdr_waarde) =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 2) kost_o, -- kosten_voor bij opdracht
|
||
(SELECT mld_melding_key,
|
||
ud.fac_usrdata_omschr
|
||
kosten_voor,
|
||
CASE
|
||
WHEN km.mld_kenmerkmelding_waarde = '101'
|
||
THEN
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding kw, mld_kenmerk k
|
||
WHERE kw.mld_melding_key = km.mld_melding_key
|
||
AND kw.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 61) -- srtkenmerk_key 'kosten voor - anders'
|
||
ELSE
|
||
NULL
|
||
END
|
||
kosten_voor_anders
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata ud
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 2 -- kosten voor
|
||
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 2) kost_m, -- kosten_voor bij melding
|
||
( SELECT f.mld_opdr_key,
|
||
SUM (f.fin_factuur_totaal) bedrag_reedsbetaald,
|
||
SUM (f.fin_factuur_totaal_btw) bedrag_reedsbetaald_btw
|
||
FROM fin_factuur f
|
||
WHERE f.mld_opdr_key IS NOT NULL AND f.fin_factuur_verwijder IS NULL
|
||
GROUP BY f.mld_opdr_key) f
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND ot.mld_typeopdr_isofferte = 0 -- geen offertes
|
||
AND ot.mld_typeopdr_key = 5 -- Opdracht (werk-order)
|
||
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 m.mld_alg_locatie_key = l.alg_locatie_key -- alle std-meldingen hebben verplicht-niveau locatie
|
||
AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
|
||
AND mu.mld_uitvoerende_key = bedr.prs_bedrijf_key
|
||
AND os.mld_statusopdr_key = o.mld_statusopdr_key
|
||
AND m.mld_alg_onroerendgoed_keys = onr.alg_onroerendgoed_keys(+)
|
||
AND mu.intern = 0
|
||
AND o.mld_opdr_key = kost_o.mld_opdr_key(+)
|
||
AND o.mld_melding_key = kost_m.mld_melding_key(+)
|
||
AND o.mld_opdr_key = f.mld_opdr_key(+)
|
||
UNION
|
||
-- Inkoopopdracht
|
||
SELECT bedr.prs_bedrijf_naam
|
||
leverancier_naam,
|
||
bedr.prs_leverancier_nr
|
||
leverancier_nr,
|
||
'nog vullen' -- Via leveranciers_kaart op kenmerkveld doen ???
|
||
factuur_matching,
|
||
'opdracht'
|
||
facilitor_bron,
|
||
ot.mld_typeopdr_omschrijving
|
||
facilitor_soort,
|
||
sd.ins_srtdiscipline_prefix
|
||
|| TO_CHAR (o.mld_melding_key)
|
||
|| '/'
|
||
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
|
||
facilitor_referentie,
|
||
flx.getflex ('OPD', 544, o.mld_opdr_key) -- voor inkoopopdr is key 547
|
||
leverancier_referentie,
|
||
os.mld_statusopdr_omschrijving
|
||
status,
|
||
NULL
|
||
attentie,
|
||
o.mld_opdr_datumbegin
|
||
datum,
|
||
COALESCE (o.mld_opdr_plandatum, o.mld_opdr_einddatum)
|
||
datum_einddatum,
|
||
COALESCE (mld.getopdrachtstatusdate (o.mld_opdr_key, 6),
|
||
mld.getopdrachtstatusdate (o.mld_opdr_key, 1))
|
||
datum_afgemeld,
|
||
o.mld_opdr_opmerking
|
||
tekst_afgemeld,
|
||
fac.safe_to_number(od.totaal_bedrag_bestelling)
|
||
bedrag_verplichting_totaal,
|
||
NULL
|
||
bedrag_korting_tot,
|
||
COALESCE (f.bedrag_reedsbetaald, 0)
|
||
bedrag_reedsbetaald,
|
||
COALESCE (fac.safe_to_number (od.totaal_bedrag_bestelling), 0)
|
||
- COALESCE (f.bedrag_reedsbetaald, 0)
|
||
bedrag_openstaand,
|
||
od.volgnr -- inkoopopdracht heeft subregels..
|
||
regel_nr,
|
||
od.artikelnr
|
||
regel_artikelcode,
|
||
od.artikel_omschrijving
|
||
regel_omschrijving,
|
||
COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend')
|
||
kosten_verdeling,
|
||
CASE
|
||
WHEN COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend') =
|
||
'Anders'
|
||
THEN
|
||
COALESCE (kost_o.kosten_voor_anders,
|
||
kost_m.kosten_voor_anders,
|
||
'onbekend')
|
||
WHEN COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend') =
|
||
'Gelijk aan kostenplaats'
|
||
THEN
|
||
COALESCE (
|
||
kp.prs_kostenplaats_nr
|
||
|| '-'
|
||
|| kp.prs_kostenplaats_omschrijving,
|
||
'onbekend')
|
||
WHEN COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend') =
|
||
'Alle werksoorten van gekozen adres/locatie'
|
||
THEN
|
||
(SELECT DECODE (
|
||
v.opvangsoort_kdv,
|
||
'1', v.kostenplaats_kdv || CHR (13) || CHR (10))
|
||
|| DECODE (
|
||
v.opvangsoort_bso,
|
||
'1', v.kostenplaats_bso || CHR (13) || CHR (10))
|
||
|| DECODE (
|
||
v.opvangsoort_to,
|
||
'1', v.kostenplaats_to || CHR (13) || CHR (10))
|
||
|| DECODE (
|
||
v.opvangsoort_psz,
|
||
'1', v.kostenplaats_psz
|
||
|| CHR (13)
|
||
|| CHR (10)
|
||
|| v.kostenplaats_psz_2)
|
||
FROM (SELECT locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2
|
||
FROM goko_v_alg_onroerendgoed
|
||
GROUP BY locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2) v
|
||
WHERE v.locatie_key = m.mld_alg_locatie_key)
|
||
ELSE
|
||
'onbekend'
|
||
END
|
||
kosten_werksoort,
|
||
'nog vullen - ???'
|
||
kostensoort,
|
||
fac.safe_to_number(od.aantal)
|
||
aantal_besteld,
|
||
NULL
|
||
aantal_ontvangen,
|
||
fac.safe_to_number(od.artikelprijs)
|
||
bedrag_stuksprijs,
|
||
COALESCE (fac.safe_to_number (od.artikelprijs), 0)
|
||
* COALESCE (fac.safe_to_number (od.aantal), 0)
|
||
bedrag_totaal_regel,
|
||
NULL
|
||
btw_percentage,
|
||
NULL
|
||
regel_opmerking
|
||
FROM mld_opdr o,
|
||
prs_kostenplaats kp,
|
||
mld_melding m,
|
||
mld_typeopdr ot,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd,
|
||
mld_stdmelding std,
|
||
alg_locatie l,
|
||
alg_v_onroerendgoed_gegevens onr,
|
||
mld_v_uitvoerende mu,
|
||
prs_bedrijf bedr,
|
||
mld_statusopdr os,
|
||
(SELECT mld_opdr_key,
|
||
ud.fac_usrdata_omschr
|
||
kosten_voor,
|
||
CASE
|
||
WHEN ko.mld_kenmerkopdr_waarde = '101'
|
||
THEN
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 862) -- kenmerk 'kosten voor - anders'
|
||
ELSE
|
||
NULL
|
||
END
|
||
kosten_voor_anders
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k, fac_usrdata ud
|
||
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 2 -- kosten voor
|
||
AND fac.safe_to_number (ko.mld_kenmerkopdr_waarde) =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 2) kost_o, -- kosten_voor bij opdracht
|
||
(SELECT mld_melding_key,
|
||
ud.fac_usrdata_omschr
|
||
kosten_voor,
|
||
CASE
|
||
WHEN km.mld_kenmerkmelding_waarde = '101'
|
||
THEN
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding kw, mld_kenmerk k
|
||
WHERE kw.mld_melding_key = km.mld_melding_key
|
||
AND kw.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 61) -- srtkenmerk_key 'kosten voor - anders'
|
||
ELSE
|
||
NULL
|
||
END
|
||
kosten_voor_anders
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata ud
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 2 -- kosten voor
|
||
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 2) kost_m, -- kosten_voor bij melding
|
||
( SELECT f.mld_opdr_key,
|
||
SUM (f.fin_factuur_totaal) bedrag_reedsbetaald,
|
||
SUM (f.fin_factuur_totaal_btw) bedrag_reedsbetaald_btw
|
||
FROM fin_factuur f
|
||
WHERE f.mld_opdr_key IS NOT NULL AND f.fin_factuur_verwijder IS NULL
|
||
GROUP BY f.mld_opdr_key) f,
|
||
(SELECT ko.mld_opdr_key,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 604)
|
||
totaal_bedrag_bestelling,
|
||
1
|
||
volgnr,
|
||
ko.mld_kenmerkopdr_waarde
|
||
artikel_omschrijving,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 550)
|
||
artikelnr,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 551)
|
||
aantal,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 553)
|
||
artikelprijs
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_kenmerk_key = 552 -- 1. Artikel te bestellen
|
||
UNION
|
||
SELECT ko.mld_opdr_key,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 604)
|
||
totaal_bedrag_bestelling,
|
||
2
|
||
volgnr,
|
||
ko.mld_kenmerkopdr_waarde
|
||
artikel_omschrijving,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 555)
|
||
artikelnr,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 556)
|
||
aantal,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 558)
|
||
artikelprijs
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_kenmerk_key = 557 -- 2. Artikel te bestellen
|
||
UNION
|
||
SELECT ko.mld_opdr_key,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 604)
|
||
totaal_bedrag_bestelling,
|
||
3
|
||
volgnr,
|
||
ko.mld_kenmerkopdr_waarde
|
||
artikel_omschrijving,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 562)
|
||
artikelnr,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 563)
|
||
aantal,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 565)
|
||
artikelprijs
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_kenmerk_key = 564 -- 3. Artikel te bestellen
|
||
UNION
|
||
SELECT ko.mld_opdr_key,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 604)
|
||
totaal_bedrag_bestelling,
|
||
4
|
||
volgnr,
|
||
ko.mld_kenmerkopdr_waarde
|
||
artikel_omschrijving,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 567)
|
||
artikelnr,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 568)
|
||
aantal,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 570)
|
||
artikelprijs
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_kenmerk_key = 569 -- 4. Artikel te bestellen
|
||
UNION
|
||
SELECT ko.mld_opdr_key,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 604)
|
||
totaal_bedrag_bestelling,
|
||
5
|
||
volgnr,
|
||
ko.mld_kenmerkopdr_waarde
|
||
artikel_omschrijving,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 573)
|
||
artikelnr,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 574)
|
||
aantal,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 576)
|
||
artikelprijs
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_kenmerk_key = 575 -- 5. Artikel te bestellen
|
||
UNION
|
||
SELECT ko.mld_opdr_key,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 604)
|
||
totaal_bedrag_bestelling,
|
||
6
|
||
volgnr,
|
||
ko.mld_kenmerkopdr_waarde
|
||
artikel_omschrijving,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 578)
|
||
artikelnr,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 579)
|
||
aantal,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 581)
|
||
artikelprijs
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_kenmerk_key = 580 -- 6. Artikel te bestellen
|
||
UNION
|
||
SELECT ko.mld_opdr_key,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 604)
|
||
totaal_bedrag_bestelling,
|
||
7
|
||
volgnr,
|
||
ko.mld_kenmerkopdr_waarde
|
||
artikel_omschrijving,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 584)
|
||
artikelnr,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 585)
|
||
aantal,
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = ko.mld_opdr_key
|
||
AND mld_kenmerk_key = 587)
|
||
artikelprijs
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_kenmerk_key = 586) od -- 7. Artikel te bestellen
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND ot.mld_typeopdr_isofferte = 0 -- geen offertes
|
||
AND ot.mld_typeopdr_key = 181 -- Inkoopopdracht
|
||
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 m.mld_alg_locatie_key = l.alg_locatie_key -- alle std-meldingen hebben verplicht-niveau locatie
|
||
AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
|
||
AND mu.mld_uitvoerende_key = bedr.prs_bedrijf_key
|
||
AND os.mld_statusopdr_key = o.mld_statusopdr_key
|
||
AND m.mld_alg_onroerendgoed_keys = onr.alg_onroerendgoed_keys(+)
|
||
AND mu.intern = 0
|
||
AND o.mld_opdr_key = kost_o.mld_opdr_key(+)
|
||
AND o.mld_melding_key = kost_m.mld_melding_key(+)
|
||
AND o.mld_opdr_key = f.mld_opdr_key(+)
|
||
AND o.mld_opdr_key = od.mld_opdr_key
|
||
UNION
|
||
-- Bestelopdracht standaard Facilitor
|
||
SELECT bedr.prs_bedrijf_naam
|
||
leverancier_naam,
|
||
bedr.prs_leverancier_nr
|
||
leverancier_nr,
|
||
TO_CHAR (dp.bes_disc_params_factmatchmode) || '-weg'
|
||
factuur_matching,
|
||
'bestelopdracht'
|
||
facilitor_bron,
|
||
'bestelopdracht_standaard_facilitor' -- standaard facilitor (vrije aanmaak, statische en punchout-catalogi)
|
||
facilitor_soort,
|
||
'B' || bo.bes_bestelopdr_id
|
||
facilitor_referentie,
|
||
(SELECT kw.bes_kenmerkbestell_waarde
|
||
FROM bes_kenmerkbestell kw, bes_kenmerk k
|
||
WHERE kw.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND kw.bes_bestelling_key = b.bes_bestelling_key
|
||
AND k.bes_srtkenmerk_key = 4)
|
||
leverancier_referentie,
|
||
bs.bes_bestelopdrstatuses_omschr
|
||
status,
|
||
( SELECT CASE
|
||
WHEN COUNT (*) > 0
|
||
THEN
|
||
'let op! loopt nog schaduwbestelling'
|
||
ELSE
|
||
''
|
||
END
|
||
FROM bes_bestelling
|
||
WHERE bes_bestelling_parentkey = b.bes_bestelling_key
|
||
GROUP BY bes_bestelling_parentkey)
|
||
attentie,
|
||
bo.bes_bestelopdr_datum
|
||
datum,
|
||
b.bes_bestelling_leverdatum
|
||
datum_einddatum,
|
||
fac.gettrackingdate ('BESOTV', b.bes_bestelling_key) -- compleet geleverd
|
||
datum_afgemeld, -- goederenontvangst - compleet geleverd
|
||
bo.bes_bestelopdr_delivery_opmerk
|
||
tekst_afgemeld,
|
||
( SELECT SUM (bes_bestelopdr_item_prijs * bes_bestelopdr_item_aantal)
|
||
FROM bes_bestelopdr_item
|
||
WHERE bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
GROUP BY bes_bestelopdr_key)
|
||
bedrag_verplichting_totaal,
|
||
NULL
|
||
bedrag_korting_tot,
|
||
COALESCE (f.bedrag_reedsbetaald, 0)
|
||
bedrag_reedsbetaald,
|
||
( NVL (
|
||
bes.getsrtdeelinkprijs (sd.bes_srtdeel_key,
|
||
bes_bestelling_datum),
|
||
bi.bes_bestelling_item_prijs)
|
||
* bi.bes_bestelling_item_aantal)
|
||
- COALESCE (f.bedrag_reedsbetaald, 0)
|
||
bedrag_openstaand,
|
||
boi.bes_bestelopdr_item_posnr
|
||
regel_nr,
|
||
sd.bes_srtdeel_nr
|
||
regel_artikelcode,
|
||
CASE
|
||
WHEN bestelregel_kenmerk_oms IS NOT NULL
|
||
THEN
|
||
sd.bes_srtdeel_omschrijving
|
||
|| CHR (10)
|
||
|| CHR (13)
|
||
|| r_tekst.bestelregel_kenmerk_oms
|
||
ELSE
|
||
sd.bes_srtdeel_omschrijving
|
||
END
|
||
regel_omschrijving,
|
||
COALESCE (kost_b.kosten_voor, 'onbekend')
|
||
kosten_verdeling,
|
||
CASE
|
||
WHEN COALESCE (kost_b.kosten_voor, 'onbekend') = 'Anders'
|
||
THEN
|
||
COALESCE (kost_b.kosten_voor_anders, 'onbekend')
|
||
WHEN COALESCE (kost_b.kosten_voor, 'onbekend') =
|
||
'Gelijk aan kostenplaats'
|
||
THEN
|
||
COALESCE (
|
||
kp.prs_kostenplaats_nr
|
||
|| '-'
|
||
|| kp.prs_kostenplaats_omschrijving,
|
||
'onbekend')
|
||
WHEN COALESCE (kost_b.kosten_voor, 'onbekend') =
|
||
'Alle werksoorten van gekozen adres/locatie'
|
||
AND ma.alg_locatie_key IS NOT NULL
|
||
THEN
|
||
(SELECT DECODE (
|
||
v.opvangsoort_kdv,
|
||
'1', v.kostenplaats_kdv || CHR (13) || CHR (10))
|
||
|| DECODE (
|
||
v.opvangsoort_bso,
|
||
'1', v.kostenplaats_bso || CHR (13) || CHR (10))
|
||
|| DECODE (
|
||
v.opvangsoort_to,
|
||
'1', v.kostenplaats_to || CHR (13) || CHR (10))
|
||
|| DECODE (
|
||
v.opvangsoort_psz,
|
||
'1', v.kostenplaats_psz
|
||
|| CHR (13)
|
||
|| CHR (10)
|
||
|| v.kostenplaats_psz_2)
|
||
FROM (SELECT locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2
|
||
FROM goko_v_alg_onroerendgoed
|
||
GROUP BY locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2) v
|
||
WHERE v.locatie_key = ma.alg_locatie_key)
|
||
ELSE
|
||
'onbekend'
|
||
END
|
||
kosten_werksoort,
|
||
'nog vullen - ???'
|
||
kostensoort,
|
||
boi.bes_bestelopdr_item_aantal
|
||
aantal_besteld,
|
||
boi.bes_bestelopdr_item_aantalontv
|
||
aantal_ontvangen,
|
||
NVL (
|
||
bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, bes_bestelling_datum),
|
||
bi.bes_bestelling_item_prijs)
|
||
bedrag_stuksprijs,
|
||
NVL (
|
||
bes.getsrtdeelinkprijs (sd.bes_srtdeel_key,
|
||
bes_bestelling_datum),
|
||
bi.bes_bestelling_item_prijs)
|
||
* bi.bes_bestelling_item_aantal
|
||
bedrag_totaal_regel,
|
||
sd.bes_srtdeel_btw
|
||
btw_percentage,
|
||
boi.bes_bestelopdr_item_opmerking
|
||
regel_opmerking
|
||
FROM bes_bestelling b,
|
||
prs_perslid p,
|
||
prs_kostenplaats kp,
|
||
prs_afdeling a,
|
||
mld_adres ma,
|
||
bes_bestelling_item bi,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelopdr bo,
|
||
bes_bestelopdrstatuses bs,
|
||
prs_bedrijf bedr,
|
||
bes_srtdeel sd,
|
||
bes_srtgroep sg,
|
||
ins_tab_discipline d,
|
||
bes_disc_params dp,
|
||
( SELECT boi.bes_bestelopdr_key,
|
||
MAX (boi.bes_bestelopdr_item_posnr) aantal,
|
||
MAX (v.aantal_vrij) aantal_vrij,
|
||
MAX (nv.aantal_nietvrij) aantal_nietvrij
|
||
FROM bes_bestelopdr_item boi,
|
||
( SELECT bes_bestelopdr_key, COUNT (*) aantal_vrij
|
||
FROM bes_bestelopdr_item
|
||
WHERE bes_bestelopdr_item_omschrijv = 'vrij artikel'
|
||
GROUP BY bes_bestelopdr_key) v,
|
||
( SELECT bes_bestelopdr_key, COUNT (*) aantal_nietvrij
|
||
FROM bes_bestelopdr_item
|
||
WHERE bes_bestelopdr_item_omschrijv <> 'vrij artikel'
|
||
GROUP BY bes_bestelopdr_key) nv
|
||
WHERE boi.bes_bestelopdr_key = v.bes_bestelopdr_key(+)
|
||
AND boi.bes_bestelopdr_key = nv.bes_bestelopdr_key(+)
|
||
GROUP BY boi.bes_bestelopdr_key) w,
|
||
(SELECT kb.bes_bestelling_key,
|
||
ud.fac_usrdata_omschr
|
||
kosten_voor,
|
||
CASE
|
||
WHEN kb.bes_kenmerkbestell_waarde = '101'
|
||
THEN
|
||
(SELECT kb2.bes_kenmerkbestell_waarde
|
||
FROM bes_kenmerkbestell kb2, bes_kenmerk k
|
||
WHERE kb2.bes_bestelling_key =
|
||
kb.bes_bestelling_key
|
||
AND kb2.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND k.bes_srtkenmerk_key = 102) -- srtkenmerk_key 'kosten voor - anders'
|
||
ELSE
|
||
NULL
|
||
END
|
||
kosten_voor_anders
|
||
FROM bes_kenmerkbestell kb, bes_kenmerk k, fac_usrdata ud
|
||
WHERE kb.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND k.bes_srtkenmerk_key = 1 -- kosten voor
|
||
AND fac.safe_to_number (kb.bes_kenmerkbestell_waarde) =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 2) kost_b, -- kosten_voor bij bestelling
|
||
( SELECT bi.bes_bestelopdr_item_key,
|
||
LISTAGG (
|
||
UPPER (sk.bes_srtkenmerk_omschrijving)
|
||
|| ': '
|
||
|| kwi.bes_kenmerkbesteli_waarde,
|
||
CHR (10) || CHR (13))
|
||
WITHIN GROUP (ORDER BY kwi.bes_kenmerkbesteli_key)
|
||
bestelregel_kenmerk_oms
|
||
FROM bes_bestelling_item bi,
|
||
bes_bestelopdr_item boi,
|
||
bes_kenmerkbesteli kwi,
|
||
bes_kenmerk k,
|
||
bes_srtkenmerk sk
|
||
WHERE bi.bes_bestelling_item_key = kwi.bes_bestelling_item_key
|
||
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND kwi.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
|
||
AND kwi.bes_kenmerkbesteli_verwijder IS NULL
|
||
GROUP BY bi.bes_bestelopdr_item_key) r_tekst,
|
||
( SELECT f.bes_bestelopdr_key,
|
||
SUM (f.fin_factuur_totaal) bedrag_reedsbetaald,
|
||
SUM (f.fin_factuur_totaal_btw) bedrag_reedsbetaald_btw
|
||
FROM fin_factuur f
|
||
WHERE f.bes_bestelopdr_key IS NOT NULL
|
||
AND f.fin_factuur_verwijder IS NULL
|
||
GROUP BY f.bes_bestelopdr_key) f
|
||
WHERE b.prs_perslid_key = p.prs_perslid_key
|
||
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND b.mld_adres_key_lev = ma.mld_adres_key
|
||
AND b.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND b.bes_bestelling_key = kost_b.bes_bestelling_key(+)
|
||
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
AND bi.bes_bestelopdr_item_key = r_tekst.bes_bestelopdr_item_key(+)
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
||
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sg.ins_discipline_key = d.ins_discipline_key
|
||
AND bo.prs_bedrijf_key = bedr.prs_bedrijf_key
|
||
AND bo.bes_bestelopdr_status = bs.bes_bestelopdrstatuses_key
|
||
AND d.ins_discipline_key = dp.bes_ins_discipline_key
|
||
AND bo.bes_bestelopdr_key = w.bes_bestelopdr_key
|
||
AND bo.bes_bestelopdr_key = f.bes_bestelopdr_key(+)
|
||
AND b.bes_bestelling_parentkey IS NULL -- uitsluiten bestellingen met schaduwbestellingen
|
||
-- Type Bestellingen
|
||
-- AND dp.bes_disc_params_bestelmode IN (0,2) -- artikelcat en bestellijst
|
||
AND w.aantal_vrij IS NULL -- Er zijn in de bestelling GEEN zogenaamde 'vrije artikel' opgenomen
|
||
UNION
|
||
-- Bestelopdracht_vrij_goko = De tijdelijke besteloplossing via 'vrij artikel en kenmerkvelden te vullen'
|
||
SELECT bedr.prs_bedrijf_naam
|
||
leverancier_naam,
|
||
bedr.prs_leverancier_nr
|
||
leverancier_nr,
|
||
TO_CHAR (dp.bes_disc_params_factmatchmode) || '-weg'
|
||
factuur_matching,
|
||
'bestelopdracht'
|
||
facilitor_bron,
|
||
'bestelopdracht_nietstandaard_goko' -- bestelopdrachten met 'vrij artikel'
|
||
facilitor_soort,
|
||
'B' || bo.bes_bestelopdr_id
|
||
facilitor_referentie,
|
||
(SELECT kw.bes_kenmerkbestell_waarde
|
||
FROM bes_kenmerkbestell kw, bes_kenmerk k
|
||
WHERE kw.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND kw.bes_bestelling_key = b.bes_bestelling_key
|
||
AND k.bes_srtkenmerk_key = 4)
|
||
leverancier_referentie,
|
||
bs.bes_bestelopdrstatuses_omschr
|
||
status,
|
||
( SELECT CASE
|
||
WHEN COUNT (*) > 0
|
||
THEN
|
||
'let op! loopt nog schaduwbestelling'
|
||
ELSE
|
||
''
|
||
END
|
||
FROM bes_bestelling
|
||
WHERE bes_bestelling_parentkey = b.bes_bestelling_key
|
||
GROUP BY bes_bestelling_parentkey)
|
||
attentie,
|
||
bo.bes_bestelopdr_datum
|
||
datum,
|
||
b.bes_bestelling_leverdatum
|
||
datum_einddatum,
|
||
fac.gettrackingdate ('BESOTV', b.bes_bestelling_key) -- compleet geleverd
|
||
datum_afgemeld, -- goederenontvangst - compleet geleverd
|
||
bo.bes_bestelopdr_delivery_opmerk
|
||
tekst_afgemeld,
|
||
COALESCE (bt.totaalbedrag_bestelling, 0)
|
||
bedrag_verplichting_totaal,
|
||
NULL
|
||
bedrag_korting_tot,
|
||
COALESCE (f.bedrag_reedsbetaald, 0)
|
||
bedrag_reedsbetaald,
|
||
COALESCE (bt.totaalbedrag_bestelling, 0)
|
||
- COALESCE (f.bedrag_reedsbetaald, 0)
|
||
bedrag_openstaand,
|
||
boi.bes_bestelopdr_item_posnr
|
||
regel_nr,
|
||
(SELECT kwi.bes_kenmerkbesteli_waarde
|
||
FROM bes_kenmerkbesteli kwi, bes_kenmerk k
|
||
WHERE kwi.bes_bestelling_item_key = bi.bes_bestelling_item_key
|
||
AND kwi.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND k.bes_srtkenmerk_key = 61) -- artikelnummer
|
||
regel_artikelcode,
|
||
CASE
|
||
WHEN bestelregel_kenmerk_oms IS NOT NULL
|
||
THEN
|
||
sd.bes_srtdeel_omschrijving
|
||
|| CHR (10)
|
||
|| CHR (13)
|
||
|| r_tekst.bestelregel_kenmerk_oms
|
||
ELSE
|
||
sd.bes_srtdeel_omschrijving
|
||
END
|
||
regel_omschrijving,
|
||
COALESCE (kost_b.kosten_voor, 'onbekend')
|
||
kosten_verdeling,
|
||
CASE
|
||
WHEN COALESCE (kost_b.kosten_voor, 'onbekend') = 'Anders'
|
||
THEN
|
||
COALESCE (kost_b.kosten_voor_anders, 'onbekend')
|
||
WHEN COALESCE (kost_b.kosten_voor, 'onbekend') =
|
||
'Gelijk aan kostenplaats'
|
||
THEN
|
||
COALESCE (
|
||
kp.prs_kostenplaats_nr
|
||
|| '-'
|
||
|| kp.prs_kostenplaats_omschrijving,
|
||
'onbekend')
|
||
WHEN COALESCE (kost_b.kosten_voor, 'onbekend') =
|
||
'Alle werksoorten van gekozen adres/locatie'
|
||
AND ma.alg_locatie_key IS NOT NULL
|
||
THEN
|
||
(SELECT DECODE (
|
||
v.opvangsoort_kdv,
|
||
'1', v.kostenplaats_kdv || CHR (13) || CHR (10))
|
||
|| DECODE (
|
||
v.opvangsoort_bso,
|
||
'1', v.kostenplaats_bso || CHR (13) || CHR (10))
|
||
|| DECODE (
|
||
v.opvangsoort_to,
|
||
'1', v.kostenplaats_to || CHR (13) || CHR (10))
|
||
|| DECODE (
|
||
v.opvangsoort_psz,
|
||
'1', v.kostenplaats_psz
|
||
|| CHR (13)
|
||
|| CHR (10)
|
||
|| v.kostenplaats_psz_2)
|
||
FROM (SELECT locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2
|
||
FROM goko_v_alg_onroerendgoed
|
||
GROUP BY locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2) v
|
||
WHERE v.locatie_key = ma.alg_locatie_key)
|
||
ELSE
|
||
'onbekend'
|
||
END
|
||
kosten_werksoort,
|
||
'nog vullen - ???'
|
||
kostensoort,
|
||
boi.bes_bestelopdr_item_aantal
|
||
aantal_besteld,
|
||
boi.bes_bestelopdr_item_aantalontv
|
||
aantal_ontvangen,
|
||
COALESCE (ap.bedrag_stuksprijs, 0)
|
||
bedrag_stuksprijs,
|
||
COALESCE (ap.bedrag_stuksprijs, 0) * boi.bes_bestelopdr_item_aantal
|
||
bedrag_totaal_regel,
|
||
sd.bes_srtdeel_btw
|
||
btw_percentage,
|
||
boi.bes_bestelopdr_item_opmerking
|
||
regel_opmerking
|
||
FROM bes_bestelling b,
|
||
prs_perslid p,
|
||
prs_kostenplaats kp,
|
||
prs_afdeling a,
|
||
mld_adres ma,
|
||
bes_bestelling_item bi,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelopdr bo,
|
||
bes_bestelopdrstatuses bs,
|
||
prs_bedrijf bedr,
|
||
bes_srtdeel sd,
|
||
bes_srtgroep sg,
|
||
ins_tab_discipline d,
|
||
bes_disc_params dp,
|
||
( SELECT boi.bes_bestelopdr_key,
|
||
MAX (boi.bes_bestelopdr_item_posnr) aantal,
|
||
MAX (v.aantal_vrij) aantal_vrij,
|
||
MAX (nv.aantal_nietvrij) aantal_nietvrij
|
||
FROM bes_bestelopdr_item boi,
|
||
( SELECT bes_bestelopdr_key, COUNT (*) aantal_vrij
|
||
FROM bes_bestelopdr_item
|
||
WHERE bes_bestelopdr_item_omschrijv = 'vrij artikel'
|
||
GROUP BY bes_bestelopdr_key) v,
|
||
( SELECT bes_bestelopdr_key, COUNT (*) aantal_nietvrij
|
||
FROM bes_bestelopdr_item
|
||
WHERE bes_bestelopdr_item_omschrijv <> 'vrij artikel'
|
||
GROUP BY bes_bestelopdr_key) nv
|
||
WHERE boi.bes_bestelopdr_key = v.bes_bestelopdr_key(+)
|
||
AND boi.bes_bestelopdr_key = nv.bes_bestelopdr_key(+)
|
||
GROUP BY boi.bes_bestelopdr_key) w,
|
||
(SELECT kb.bes_bestelling_key,
|
||
ud.fac_usrdata_omschr
|
||
kosten_voor,
|
||
CASE
|
||
WHEN kb.bes_kenmerkbestell_waarde = '101'
|
||
THEN
|
||
(SELECT kb2.bes_kenmerkbestell_waarde
|
||
FROM bes_kenmerkbestell kb2, bes_kenmerk k
|
||
WHERE kb2.bes_bestelling_key =
|
||
kb.bes_bestelling_key
|
||
AND kb2.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND k.bes_srtkenmerk_key = 102) -- srtkenmerk_key 'kosten voor - anders'
|
||
ELSE
|
||
NULL
|
||
END
|
||
kosten_voor_anders
|
||
FROM bes_kenmerkbestell kb, bes_kenmerk k, fac_usrdata ud
|
||
WHERE kb.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND k.bes_srtkenmerk_key = 1 -- kosten voor
|
||
AND fac.safe_to_number (kb.bes_kenmerkbestell_waarde) =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 2) kost_b, -- kosten_voor bij bestelling
|
||
( SELECT bi.bes_bestelopdr_item_key,
|
||
LISTAGG (
|
||
UPPER (sk.bes_srtkenmerk_omschrijving)
|
||
|| ': '
|
||
|| kwi.bes_kenmerkbesteli_waarde,
|
||
CHR (10) || CHR (13))
|
||
WITHIN GROUP (ORDER BY kwi.bes_kenmerkbesteli_key)
|
||
bestelregel_kenmerk_oms
|
||
FROM bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
bes_kenmerkbesteli kwi,
|
||
bes_kenmerk k,
|
||
bes_srtkenmerk sk
|
||
WHERE bi.bes_bestelling_item_key = kwi.bes_bestelling_item_key
|
||
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND kwi.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
|
||
AND kwi.bes_kenmerkbesteli_verwijder IS NULL
|
||
AND sk.bes_srtkenmerk_key = 45 -- artikel te bestellen
|
||
GROUP BY bi.bes_bestelopdr_item_key) r_tekst,
|
||
(SELECT kwi.bes_bestelling_item_key,
|
||
fac.safe_to_number (
|
||
REPLACE (kwi.bes_kenmerkbesteli_waarde, ',', '.'))
|
||
bedrag_stuksprijs
|
||
FROM bes_kenmerkbesteli kwi, bes_kenmerk k
|
||
WHERE kwi.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND k.bes_srtkenmerk_key = 81) ap, -- artikelprijs
|
||
( SELECT f.bes_bestelopdr_key,
|
||
SUM (f.fin_factuur_totaal) bedrag_reedsbetaald,
|
||
SUM (f.fin_factuur_totaal_btw) bedrag_reedsbetaald_btw
|
||
FROM fin_factuur f
|
||
WHERE f.bes_bestelopdr_key IS NOT NULL
|
||
AND f.fin_factuur_verwijder IS NULL
|
||
GROUP BY f.bes_bestelopdr_key) f,
|
||
(SELECT kw.bes_bestelling_key,
|
||
fac.safe_to_number (kw.bes_kenmerkbestell_waarde)
|
||
totaalbedrag_bestelling
|
||
FROM bes_kenmerkbestell kw, bes_kenmerk k
|
||
WHERE kw.bes_kenmerk_key = k.bes_kenmerk_key
|
||
AND k.bes_srtkenmerk_key = 44) bt -- Totaalbedrag bestelling
|
||
WHERE b.prs_perslid_key = p.prs_perslid_key
|
||
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND b.mld_adres_key_lev = ma.mld_adres_key
|
||
AND b.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND b.bes_bestelling_key = kost_b.bes_bestelling_key(+)
|
||
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
AND bi.bes_bestelopdr_item_key = r_tekst.bes_bestelopdr_item_key
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
||
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sg.ins_discipline_key = d.ins_discipline_key
|
||
AND bo.prs_bedrijf_key = bedr.prs_bedrijf_key
|
||
AND bo.bes_bestelopdr_status = bs.bes_bestelopdrstatuses_key
|
||
AND d.ins_discipline_key = dp.bes_ins_discipline_key
|
||
AND bo.bes_bestelopdr_key = w.bes_bestelopdr_key
|
||
AND bo.bes_bestelopdr_key = f.bes_bestelopdr_key(+)
|
||
AND b.bes_bestelling_key = bt.bes_bestelling_key(+)
|
||
AND bi.bes_bestelling_item_key = ap.bes_bestelling_item_key(+)
|
||
AND w.aantal_vrij IS NOT NULL -- in de bestelling is (minimaal 1) goko-leveranciers-artikel 'vrij artikel'
|
||
UNION
|
||
-- Contracten
|
||
SELECT bedr.prs_bedrijf_naam
|
||
leverancier_naam,
|
||
bedr.prs_leverancier_nr
|
||
leverancier_nr,
|
||
'2-weg'
|
||
factuur_matching,
|
||
'contract'
|
||
facilitor_bron,
|
||
sc.ins_discipline_omschrijving
|
||
facilitor_soort,
|
||
'C'
|
||
|| c.cnt_contract_key
|
||
|| '.'
|
||
|| COALESCE (TO_CHAR (c.cnt_contract_versie), '0')
|
||
facilitor_referentie,
|
||
c.cnt_contract_nummer
|
||
leverancier_referentie,
|
||
'nog vullen'
|
||
status,
|
||
NULL
|
||
attentie,
|
||
c.cnt_contract_looptijd_van
|
||
datum,
|
||
c.cnt_contract_looptijd_tot
|
||
datum_einddatum,
|
||
NULL
|
||
datum_afgemeld, -- goederenontvangst - compleet geleverd
|
||
NULL
|
||
tekst_afgemeld,
|
||
c.cnt_contract_kosten
|
||
bedrag_verplichting_totaal,
|
||
NULL
|
||
bedrag_korting_tot,
|
||
COALESCE (f.bedrag_reedsbetaald, 0)
|
||
bedrag_reedsbetaald,
|
||
COALESCE (c.cnt_contract_kosten, 0)
|
||
- COALESCE (f.bedrag_reedsbetaald, 0)
|
||
bedrag_openstaand,
|
||
1
|
||
regel_nr,
|
||
NULL
|
||
regel_artikelcode,
|
||
c.cnt_contract_omschrijving
|
||
regel_omschrijving,
|
||
'nog vullen'
|
||
kosten_verdeling,
|
||
'nog vullen'
|
||
kosten_werksoort,
|
||
'nog vullen - ???'
|
||
kostensoort,
|
||
1
|
||
aantal_besteld,
|
||
NULL
|
||
aantal_ontvangen,
|
||
NULL
|
||
bedrag_stuksprijs,
|
||
NULL
|
||
bedrag_totaal_regel,
|
||
NULL
|
||
btw_percentage,
|
||
c.cnt_contract_omschrijving
|
||
regel_opmerking
|
||
FROM cnt_contract c,
|
||
prs_kostenplaats k,
|
||
ins_tab_discipline sc,
|
||
--prs_afdeling a,
|
||
prs_bedrijf bedr,
|
||
( SELECT f.cnt_contract_key,
|
||
SUM (f.fin_factuur_totaal) bedrag_reedsbetaald,
|
||
SUM (f.fin_factuur_totaal_btw) bedrag_reedsbetaald_btw
|
||
FROM fin_factuur f
|
||
WHERE f.cnt_contract_key IS NOT NULL
|
||
AND f.fin_factuur_verwijder IS NULL
|
||
GROUP BY f.cnt_contract_key) f
|
||
WHERE c.cnt_prs_bedrijf_key = bedr.prs_bedrijf_key
|
||
AND c.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND c.ins_discipline_key = sc.ins_discipline_key
|
||
AND sc.ins_discipline_module = 'CNT'
|
||
AND c.cnt_contract_key = f.cnt_contract_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
|