1493 lines
58 KiB
SQL
1493 lines
58 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific sql statements for the FACILITOR database
|
||
|
||
|
||
DEFINE thisfile = 'hein.sql'
|
||
DEFINE dbuser = 'hein'
|
||
|
||
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 ------
|
||
|
||
-- Algemene package functies en procedures
|
||
CREATE OR REPLACE PACKAGE HEIN
|
||
AS
|
||
|
||
PROCEDURE set_kenmerk(p_module IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_link_key IN NUMBER,
|
||
p_kenmerk_waarde IN VARCHAR2,
|
||
p_history IN NUMBER);
|
||
|
||
PROCEDURE add_xml_row (p_bestand IN VARCHAR2,
|
||
p_regel IN VARCHAR2);
|
||
|
||
PROCEDURE add_xml_element (p_bestand IN VARCHAR2,
|
||
p_tag IN VARCHAR2,
|
||
p_value IN VARCHAR2);
|
||
|
||
PROCEDURE fin_set_approver (p_factuur_key IN NUMBER);
|
||
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PACKAGE BODY HEIN
|
||
AS
|
||
|
||
PROCEDURE set_kenmerk(p_module IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_link_key IN NUMBER,
|
||
p_kenmerk_waarde IN VARCHAR2,
|
||
p_history IN NUMBER)
|
||
AS
|
||
v_count NUMBER;
|
||
v_niveau VARCHAR2 (1);
|
||
BEGIN
|
||
CASE p_module
|
||
WHEN 'PRS'
|
||
THEN
|
||
PRS.upsertkenmerk (p_kenmerk_key, p_link_key, p_kenmerk_waarde);
|
||
WHEN 'ALG'
|
||
THEN
|
||
ALG.upsertkenmerk (p_kenmerk_key, p_link_key, p_kenmerk_waarde);
|
||
WHEN 'BEZ'
|
||
THEN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM bez_kenmerkwaarde
|
||
WHERE bez_bezoekers_key = p_link_key
|
||
AND bez_kenmerk_key = p_kenmerk_key
|
||
AND bez_kenmerkwaarde_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE bez_kenmerkwaarde
|
||
WHERE bez_bezoekers_key = p_link_key
|
||
AND bez_kenmerk_key = p_kenmerk_key
|
||
AND bez_kenmerkwaarde_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE bez_kenmerkwaarde
|
||
SET bez_kenmerkwaarde_waarde = p_kenmerk_waarde
|
||
WHERE bez_bezoekers_key = p_link_key
|
||
AND bez_kenmerk_key = p_kenmerk_key
|
||
AND bez_kenmerkwaarde_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO bez_kenmerkwaarde (bez_kenmerk_key,
|
||
bez_bezoekers_key,
|
||
bez_kenmerkwaarde_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
|
||
WHEN 'MLD'
|
||
THEN
|
||
-- melding- of opdrachtkenmerk?
|
||
SELECT mld_kenmerk_niveau
|
||
INTO v_niveau
|
||
FROM mld_kenmerk
|
||
WHERE mld_kenmerk_key = p_kenmerk_key;
|
||
|
||
CASE v_niveau
|
||
WHEN 'O'
|
||
THEN
|
||
MLD.upsertopdrachtkenmerk (p_kenmerk_key, p_link_key, p_kenmerk_waarde);
|
||
WHEN 'S'
|
||
THEN
|
||
MLD.upsertmeldingkenmerk (p_kenmerk_key, p_link_key, p_kenmerk_waarde);
|
||
END CASE;
|
||
WHEN 'FIN'
|
||
THEN
|
||
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
|
||
-- opgeslagen (da's dus redundant..?)
|
||
SELECT fin_kenmerk_type
|
||
INTO v_niveau
|
||
FROM fin_kenmerk
|
||
WHERE fin_kenmerk_key = p_kenmerk_key;
|
||
|
||
|
||
IF v_niveau = 'F'
|
||
THEN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fin_kenmerkfactuur
|
||
WHERE fin_factuur_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactuur_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE fin_kenmerkfactuur
|
||
WHERE fin_factuur_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactuur_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE fin_kenmerkfactuur
|
||
SET fin_kenmerkfactuur_waarde = p_kenmerk_waarde
|
||
WHERE fin_factuur_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactuur_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO fin_kenmerkfactuur (fin_kenmerk_key,
|
||
fin_factuur_key,
|
||
fin_kenmerkfactuur_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
-- Kenmerk bij factuurregel
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fin_kenmerkfactregel
|
||
WHERE fin_factuurregel_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactregel_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE fin_kenmerkfactregel
|
||
WHERE fin_factuurregel_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactregel_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE fin_kenmerkfactregel
|
||
SET fin_kenmerkfactregel_waarde = p_kenmerk_waarde
|
||
WHERE fin_factuurregel_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactregel_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO fin_kenmerkfactregel (fin_kenmerk_key,
|
||
fin_factuurregel_key,
|
||
fin_kenmerkfactregel_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
WHEN 'RES'
|
||
THEN
|
||
-- res_rsv_ruimte kenmerk
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM res_kenmerkwaarde
|
||
WHERE res_rsv_ruimte_key = p_link_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE res_kenmerkwaarde
|
||
WHERE res_rsv_ruimte_key = p_link_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE res_kenmerkwaarde
|
||
SET res_kenmerkreservering_waarde = p_kenmerk_waarde
|
||
WHERE res_rsv_ruimte_key = p_link_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO res_kenmerkwaarde (res_kenmerk_key,
|
||
res_rsv_ruimte_key,
|
||
res_kenmerkreservering_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
END CASE;
|
||
END;
|
||
|
||
PROCEDURE add_xml_row (
|
||
p_bestand IN VARCHAR2,
|
||
p_regel IN VARCHAR2)
|
||
AS
|
||
v_index NUMBER;
|
||
BEGIN
|
||
SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1
|
||
INTO v_index
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = p_bestand;
|
||
|
||
INSERT INTO fac_rapport (
|
||
fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel)
|
||
VALUES (p_bestand,
|
||
v_index,
|
||
p_regel);
|
||
END;
|
||
|
||
PROCEDURE add_xml_element (
|
||
p_bestand IN VARCHAR2,
|
||
p_tag IN VARCHAR2,
|
||
p_value IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
hein.add_xml_row(p_bestand,
|
||
'<' || p_tag || '>'
|
||
|| xml.char_to_html(p_value)
|
||
|| '</' || p_tag || '>');
|
||
END;
|
||
|
||
PROCEDURE fin_set_approver (p_factuur_key IN NUMBER)
|
||
AS
|
||
v_count NUMBER;
|
||
v_perslid_key_goedkeur fin_factuur.prs_perslid_key_goedkeur%TYPE;
|
||
v_factuur_statuses_key fin_factuur.fin_factuur_statuses_key%TYPE;
|
||
v_factuur_totaal fin_factuur.fin_factuur_totaal%TYPE;
|
||
v_perslid_naam_goedkeur VARCHAR2 (100);
|
||
v_opdr_key mld_opdr.mld_opdr_key%TYPE;
|
||
v_contract_key cnt_contract.cnt_contract_key%TYPE;
|
||
v_bestelopdr_key bes_bestelopdr.bes_bestelopdr_key%TYPE;
|
||
v_srtdiscipline_key ins_tab_discipline.ins_srtdiscipline_key%TYPE;
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
BEGIN
|
||
v_count := 0;
|
||
|
||
v_errorhint := 'Bepaal type factuur';
|
||
-- Laten we eens eerst kijken of we het over een contract of een opdracht hebben
|
||
SELECT mld_opdr_key, cnt_contract_key, bes_bestelopdr_key, fin_factuur_statuses_key, fin_factuur_totaal
|
||
INTO v_opdr_key, v_contract_key, v_bestelopdr_key, v_factuur_statuses_key, v_factuur_totaal
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_key = p_factuur_key;
|
||
|
||
-- We kennen op dit moment nog geen functionaliteit voor contracten en bestelopdrachten
|
||
IF v_opdr_key IS NOT NULL
|
||
THEN
|
||
|
||
IF v_factuur_statuses_key = 2 -- ingevoerd
|
||
THEN
|
||
-- Opdrachten voor preventief onderhoud worden niet door de locatieverantwoordelijke
|
||
-- personen goedgekeurd. Deze gaan direct naar Joost
|
||
|
||
v_errorhint := 'Controleer rechten opdracht';
|
||
SELECT d.ins_srtdiscipline_key,
|
||
f.prs_perslid_key_goedkeur,
|
||
pf.prs_perslid_naam_friendly
|
||
INTO v_srtdiscipline_key,
|
||
v_perslid_key_goedkeur,
|
||
v_perslid_naam_goedkeur
|
||
FROM mld_opdr o, fin_factuur f, prs_v_perslid_fullnames_all pf,
|
||
mld_melding m, mld_stdmelding std, ins_tab_discipline d
|
||
WHERE f.mld_opdr_key = o.mld_opdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND f.fin_factuur_key = p_factuur_key
|
||
AND f.prs_perslid_key_goedkeur = pf.prs_perslid_key;
|
||
|
||
IF v_srtdiscipline_key = 41 -- preventief onderhoud
|
||
THEN
|
||
-- Als status van de factuur nog ingevoerd is dan zetten we de status naar Ter goedkeuring (5)
|
||
v_errorhint := 'Zet de status naar Ter Goedkeuring';
|
||
fac.trackaction (
|
||
'FINFOK',
|
||
p_factuur_key,
|
||
3,
|
||
NULL,
|
||
'Expliciete goedkeuring door aangewezen goedkeurder: '
|
||
|| v_perslid_naam_goedkeur);
|
||
UPDATE fin_factuur
|
||
SET fin_factuur_statuses_key = 5
|
||
WHERE fin_factuur_key = p_factuur_key;
|
||
|
||
/* UPDATE fin_factuur
|
||
SET prs_perslid_key_goedkeur = v_perslid_key_beh
|
||
WHERE fin_factuur_key = p_factuur_key;
|
||
*/
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog ('YASK.fin_set_approver', 'E', v_errormsg || ' (' || p_factuur_key || ')' , v_errorhint);
|
||
END;
|
||
|
||
|
||
|
||
END;
|
||
/
|
||
|
||
|
||
--
|
||
-- Personeelskoppeling met Heineken
|
||
--
|
||
CREATE OR REPLACE PROCEDURE hein_import_perslid (p_import_key IN NUMBER)
|
||
AS
|
||
v_seq_of_columns VARCHAR (255);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (200);
|
||
BEGIN
|
||
|
||
v_seq_of_columns := '13;0;0;0;0;0;5;18;17;15;'
|
||
-- v_alg_locatie_code 1
|
||
-- v_alg_gebouw_code 2
|
||
-- v_alg_verdieping_volgnr 3
|
||
-- v_alg_ruimte_nr 4
|
||
-- v_prs_werkplek_volgnr 5
|
||
-- v_prs_werkplek_omschrijving 6
|
||
-- v_prs_afdeling_naam 7
|
||
-- v_prs_perslid_naam 8
|
||
-- v_prs_perslid_tussenvoegsel 9
|
||
-- v_prs_perslid_voornaam 10
|
||
|| '16;0;0;0;0;0;0;4;0;1;'
|
||
-- v_prs_perslid_voorletters 11
|
||
-- v_prs_perslid_partner_naam 12
|
||
-- v_prs_perslid_partner_tussenv 13
|
||
-- v_prs_naamgebruik_code 14 0 (default) perslid_naam en perslid_tussenvoegsel worden gebruikt
|
||
-- 1 personen die de geboortenaam van de partner icm de eigen naam willen gebruiken
|
||
-- 2 personen die de geboortenaam van de partner willen gebruiken
|
||
-- 3 personen die de eigen naam icm de geboortenaam van de partner willen gebruiken
|
||
-- v_prs_perslid_geslacht 15 Gebruik 'man', 'm' of 1 voor man en 'vrouw', 'v' of 0 voor vrouw case insensitive geen default
|
||
-- v_prs_perslid_telefoonnr 16
|
||
-- v_prs_perslid_mobiel 17
|
||
-- v_prs_perslid_email 18
|
||
-- v_prs_perslid_dienstverband 19
|
||
-- v_prs_perslid_nr 20
|
||
|| '8;3;0;0;0;0;6;9;10;12;'
|
||
-- v_prs_srtperslid_omschrijving 21
|
||
-- v_prs_perslid_oslogin 22
|
||
-- v_prs_perslid_wachtwoord 23
|
||
-- v_prs_perslid_titel 24
|
||
-- v_prs_perslid_apikey 25
|
||
-- v_dummy 26
|
||
-- v_prs_kenmerk1 27
|
||
-- v_prs_kenmerk2 28
|
||
-- v_prs_kenmerk3 29
|
||
-- v_prs_kenmerk4 30
|
||
|| '0;0;0;0;0;0;0;0;0;0;'
|
||
|| '0;0;0;0;0;0';
|
||
prs.import_perslid(p_import_key, v_seq_of_columns, 'Pers.no.;Personnel Number;ID/number;E-mail address;Cost ctr;Cost Center;Position;Position;Org.unit;Organizational Unit;SPLCODE;Standplaatscodes;CoCd;Company Code;Known as;Initials;Name prefix;Last name%');
|
||
|
||
-- Uitleg van de kenmerkvelden:
|
||
-- kenmerk1: Afdeling omschrijving
|
||
-- kenmerk2: Kostenplaatscode
|
||
-- kenmerk3: Kostenplaatsomschrijving
|
||
-- kenmerk4: Standplaats
|
||
-- kenmerk5: Default taal
|
||
|
||
DELETE fac_imp_organisatie;
|
||
|
||
INSERT INTO fac_imp_organisatie (prs_bedrijf_naam, prs_afdeling_naam, prs_afdeling_omschrijving, prs_kostenplaats_nr)
|
||
SELECT DISTINCT 'Heineken', prs_afdeling_naam, prs_kenmerk1, prs_afdeling_naam
|
||
FROM fac_imp_perslid
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
DELETE fac_imp_kpn;
|
||
|
||
-- Gebouwkostenplaatsen gaan we niet opnieuw inlezen. Deze zijn aan een andere groep gekoppeld en men heeft
|
||
-- in Facilitor de naam van deze kostenplaatsen aangepast.
|
||
INSERT INTO fac_imp_kpn (prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaatsgrp_key, prs_kostenplaats_module)
|
||
SELECT DISTINCT prs_afdeling_naam, prs_kenmerk1, 21, 'PRS'
|
||
FROM fac_imp_perslid
|
||
WHERE fac_import_key = p_import_key
|
||
AND UPPER(prs_afdeling_naam) <> 'ONBEKEND'
|
||
AND prs_afdeling_naam NOT IN (SELECT prs_kostenplaats_nr FROM prs_kostenplaats k WHERE k.prs_kostenplaatsgrp_key = 1);
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE hein_update_perslid (p_import_key IN NUMBER)
|
||
IS
|
||
|
||
-- personen pas verwijderen als ze langer dan 80 dagen bestaan. Hiermee voorkomen we dat nieuw handmatig ingevoerde
|
||
-- personen direct verwijderd worden, omdat HR data altijd wat ouder is.
|
||
CURSOR c_del IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full, p.prs_perslid_oslogin
|
||
FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
|
||
WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
|
||
AND pf.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_nr IS NOT NULL
|
||
AND i.prs_perslid_nr IS NULL
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_aanmaak < SYSDATE -80;
|
||
|
||
v_bedrijf_key NUMBER (10);
|
||
v_afdeling_key1 NUMBER (10);
|
||
v_afdeling_key2 NUMBER (10);
|
||
v_kostenplaats_key NUMBER (10);
|
||
v_kpn_nr_prev VARCHAR2 (20);
|
||
|
||
v_aanduiding VARCHAR2 (100);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_count NUMBER;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
v_aanduiding := '';
|
||
|
||
fac_update_kpn (p_import_key);
|
||
fac_update_organisatie (p_import_key);
|
||
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM fac_imp_perslid;
|
||
|
||
IF v_count > 500
|
||
THEN
|
||
-- Voordat we gaan importeren gaan we op zoek of we nog mensen moeten verwijderen die niet in de import voorkomen.
|
||
-- Nu komt het ook regelmatig voor dat mensen een ander personeelsnummer krijgen terwijl ze de login behouden. Deze
|
||
-- mensen proberen we om te hangen en het personeelsnummer aan te passen.
|
||
|
||
FOR rec IN c_del LOOP
|
||
BEGIN
|
||
v_errorhint := 'Verwijderen persoon: ' || rec.prs_perslid_key || '-' || rec.prs_perslid_nr || '-' || rec.prs_perslid_oslogin;
|
||
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||
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;
|
||
END LOOP;
|
||
END IF;
|
||
|
||
prs.update_perslid (p_import_key, 'NR', NULL);
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
--
|
||
-- Koppeling met Exact
|
||
--
|
||
|
||
-- View om gebouw bij factuurregels te tonen
|
||
|
||
CREATE OR REPLACE VIEW hein_v_aanwezigfactuur
|
||
(
|
||
fin_factuur_key,
|
||
fin_factuur_nr,
|
||
fin_factuur_totaal,
|
||
fin_factuur_totaal_btw,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
prs_perslid_key_user,
|
||
fin_factuur_datum,
|
||
fin_factuur_boekmaand,
|
||
fin_factuur_debiteur_nr,
|
||
prs_kostensoort_key,
|
||
fin_factuur_opmerking,
|
||
fin_factuur_statuses_key,
|
||
fin_factuur_verwijder
|
||
)
|
||
AS
|
||
SELECT fin_factuur_key,
|
||
fin_factuur_nr,
|
||
fin_factuur_totaal,
|
||
fin_factuur_totaal_btw,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
prs_perslid_key_user,
|
||
fin_factuur_datum,
|
||
fin_factuur_boekmaand,
|
||
fin_factuur_debiteur_nr,
|
||
prs_kostensoort_key,
|
||
fin_factuur_opmerking,
|
||
fin_factuur_statuses_key,
|
||
fin_factuur_verwijder
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_verwijder IS NULL AND fin_factuur_statuses_key > 1;
|
||
|
||
|
||
CREATE OR REPLACE VIEW hein_v_factuur_gegevens
|
||
(
|
||
fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
dagboek,
|
||
fin_factuurregel_totaal,
|
||
fin_factuurregel_btw,
|
||
fin_btwtabelwaarde_code,
|
||
fin_btwtabelwaarde_key,
|
||
fin_factuurregel_nr,
|
||
fin_factuurregel_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
fin_factuur_boekmaand,
|
||
opdr_datum,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
prs_kostensoort_opmerking,
|
||
prs_kostensoort_key,
|
||
prs_kostenplaats_nr,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
fin_factuur_statuses_key,
|
||
lev_kpn
|
||
)
|
||
AS
|
||
SELECT f.fin_factuur_key,
|
||
DECODE (
|
||
c.cnt_contract_key,
|
||
NULL, DECODE (
|
||
bo.bes_bestelopdr_key,
|
||
NULL, (SELECT sd.ins_srtdiscipline_prefix
|
||
|| m.mld_melding_key
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd
|
||
WHERE m.mld_melding_key =
|
||
o.mld_melding_key
|
||
AND m.mld_stdmelding_key =
|
||
std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key =
|
||
d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key =
|
||
sd.ins_srtdiscipline_key),
|
||
bo.bes_bestelopdr_id),
|
||
'C'
|
||
|| TO_CHAR (cnt_contract_nummer_intern)
|
||
|| DECODE (cnt_contract_versie,
|
||
NULL, NULL,
|
||
'.' || cnt_contract_versie))
|
||
opdracht_id,
|
||
f.fin_factuur_datum,
|
||
f.fin_factuur_nr,
|
||
COALESCE (b_c.prs_bedrijf_key,
|
||
COALESCE (b_o.prs_bedrijf_key, b_b.prs_bedrijf_key))
|
||
prs_bedrijf_key,
|
||
DECODE (
|
||
(SELECT prs_kenmerklink_waarde
|
||
FROM prs_kenmerklink kl
|
||
WHERE kl.prs_kenmerk_key = 1000 -- Bedrijf is onderdeel van Vebego
|
||
AND kl.prs_link_key =
|
||
COALESCE (
|
||
b_c.prs_bedrijf_key,
|
||
COALESCE (b_o.prs_bedrijf_key,
|
||
b_b.prs_bedrijf_key))),
|
||
'1', 63,
|
||
62)
|
||
dagboek,
|
||
fr.fin_factuurregel_totaal,
|
||
ROUND (
|
||
fr.fin_factuurregel_totaal
|
||
* DECODE (btw.fin_btwtabelwaarde_verlegd,
|
||
1, 0,
|
||
btw.fin_btwtabelwaarde_perc / 100),
|
||
2)
|
||
fin_factuurregel_btw,
|
||
btw.fin_btwtabelwaarde_code,
|
||
btw.fin_btwtabelwaarde_key,
|
||
fr.fin_factuurregel_nr,
|
||
fr.fin_factuurregel_key,
|
||
f.fin_factuur_debiteur_nr,
|
||
f.fin_factuur_opmerking,
|
||
f.fin_factuur_boekmaand,
|
||
COALESCE (
|
||
o.mld_opdr_datumbegin,
|
||
COALESCE (c.cnt_contract_looptijd_tot,
|
||
bo.bes_bestelopdr_datum)),
|
||
prs_kostensoort_oms,
|
||
k.prs_kostensoort_refcode,
|
||
k.prs_kostensoort_opmerking,
|
||
k.prs_kostensoort_key,
|
||
'440.00' prs_kostenplaats_nr, -- Let op: Vaste waarde, niet overgenomen uit de kostenplaatsen van Heineken
|
||
o.mld_opdr_key,
|
||
c.cnt_contract_key,
|
||
bo.bes_bestelopdr_key,
|
||
( -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn
|
||
-- met status ingevoerd, afgewezen of incompleet
|
||
SELECT DECODE (COUNT (*), 0, f.fin_factuur_statuses_key, 2)
|
||
FROM fin_factuur f_t,
|
||
cnt_contract c_t,
|
||
bes_bestelopdr b_t,
|
||
mld_opdr o_t
|
||
WHERE f_t.fin_factuur_verwijder IS NULL
|
||
AND f_t.mld_opdr_key = o_t.mld_opdr_key(+)
|
||
AND f_t.cnt_contract_key = c_t.cnt_contract_key(+)
|
||
AND f_t.bes_bestelopdr_key = b_t.bes_bestelopdr_key(+)
|
||
AND COALESCE (
|
||
o_t.mld_uitvoerende_keys,
|
||
COALESCE (
|
||
b_t.prs_bedrijf_key,
|
||
COALESCE (
|
||
c_t.cnt_prs_bedrijf_key,
|
||
(SELECT a.prs_bedrijf_key
|
||
FROM prs_v_afdeling a, prs_perslid p
|
||
WHERE o_t.mld_uitvoerende_keys =
|
||
p.prs_perslid_key
|
||
AND p.prs_afdeling_key =
|
||
a.prs_afdeling_key)))) =
|
||
COALESCE (
|
||
o.mld_uitvoerende_keys,
|
||
COALESCE (
|
||
bo.prs_bedrijf_key,
|
||
COALESCE (
|
||
c.cnt_prs_bedrijf_key,
|
||
(SELECT a.prs_bedrijf_key
|
||
FROM prs_v_afdeling a, prs_perslid p
|
||
WHERE o.mld_uitvoerende_keys =
|
||
p.prs_perslid_key
|
||
AND p.prs_afdeling_key =
|
||
a.prs_afdeling_key))))
|
||
AND f.fin_factuur_nr = f_t.fin_factuur_nr
|
||
AND f_t.fin_factuur_statuses_key IN (1, 2, 3, 5) -- Afgewezen, Ingevoerd, Incompleet, Ter goedkeuring
|
||
AND f.fin_factuur_statuses_key = 6)
|
||
fin_factuur_statuses_key,
|
||
lk.prs_kostenplaats_nr
|
||
lev_kpn
|
||
FROM fin_factuur f,
|
||
fin_factuurregel fr,
|
||
fin_btwtabelwaarde btw,
|
||
mld_opdr o,
|
||
mld_typeopdr ot,
|
||
cnt_contract c,
|
||
bes_bestelopdr bo,
|
||
(SELECT mld_uitvoerende_key,
|
||
DECODE (u.TYPE,
|
||
'B', mld_uitvoerende_key,
|
||
a.prs_bedrijf_key)
|
||
prs_bedrijf_key
|
||
FROM mld_v_uitvoerende u, prs_v_afdeling a, prs_perslid p
|
||
WHERE u.mld_uitvoerende_key = prs_perslid_key(+)
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key(+)) b_o,
|
||
prs_bedrijf b_c,
|
||
prs_bedrijf b_b,
|
||
prs_kostensoort k,
|
||
prs_kostensoortgrp kg,
|
||
prs_kostenplaats lk
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
|
||
AND f.mld_opdr_key = o.mld_opdr_key(+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
|
||
AND f.cnt_contract_key = c.cnt_contract_key(+)
|
||
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
|
||
AND bo.prs_bedrijf_key = b_b.prs_bedrijf_key(+)
|
||
AND o.mld_uitvoerende_keys = b_o.mld_uitvoerende_key(+)
|
||
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
|
||
AND c.prs_kostensoort_key = k.prs_kostensoort_key(+)
|
||
AND k.prs_kostenplaats_key = lk.prs_kostenplaats_key(+)
|
||
AND k.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+)
|
||
AND f.fin_factuur_verwijder IS NULL
|
||
AND NOT EXISTS (SELECT 1 -- We handelen geen facturen af op vrumona locatie bunnik
|
||
FROM mld_melding m
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_alg_locatie_key = 21);
|
||
|
||
CREATE OR REPLACE VIEW hein_v_factuur_gegevens_notes
|
||
(
|
||
fin_factuur_key,
|
||
fin_factuur_datum,
|
||
prs_bedrijf_naam,
|
||
prs_leverancier_nr,
|
||
fin_factuur_nr,
|
||
discipline,
|
||
onderwerp,
|
||
alg_locatie_key,
|
||
alg_locatie_code,
|
||
alg_locatie_omschrijving,
|
||
bron,
|
||
fin_factuur_opmerking,
|
||
verplichting_nr,
|
||
schatting,
|
||
totaal,
|
||
fin_factuur_totaal,
|
||
fin_factuur_totaal_incl,
|
||
verplichting_status,
|
||
fin_factuur_statuses_omschr,
|
||
kostenplaats,
|
||
boekstukNr,
|
||
bijlage,
|
||
notities,
|
||
binnen_budget,
|
||
afw_kostenplaats
|
||
)
|
||
AS
|
||
SELECT fc.fin_factuur_key,
|
||
fc.fin_factuur_datum,
|
||
uitv.prs_bedrijf_naam,
|
||
uitv.prs_leverancier_nr,
|
||
fc.fin_factuur_nr,
|
||
co.discipline,
|
||
co.onderwerp,
|
||
l.alg_locatie_key,
|
||
l.alg_locatie_code,
|
||
l.alg_locatie_omschrijving,
|
||
CASE fc.fin_factuur_bron
|
||
WHEN 0 THEN 'Handmatig'
|
||
WHEN 1 THEN 'Excel'
|
||
ELSE 'Mail'
|
||
END bron,
|
||
fc.fin_factuur_opmerking,
|
||
co.contract_nr,
|
||
co.materiaal schatting,
|
||
co.totaal,
|
||
fc.fin_factuur_totaal,
|
||
fc.fin_factuur_totaal + fc.fin_factuur_totaal_btw,
|
||
co.status verplichting_status,
|
||
stat.fin_factuur_statuses_omschr,
|
||
(SELECT kost.prs_kostenplaats_nr
|
||
FROM prs_kostenplaats kost
|
||
WHERE kost.prs_kostenplaats_key = co.kost_key) kostenplaats,
|
||
(SELECT fkenmerk.fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerkfactuur fkenmerk
|
||
WHERE fkenmerk.fin_factuur_key = fc.fin_factuur_key
|
||
AND fkenmerk.fin_kenmerk_key IN (1)) boekstukNr,
|
||
(SELECT fkenmerk.fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerkfactuur fkenmerk
|
||
WHERE fkenmerk.fin_factuur_key = fc.fin_factuur_key
|
||
AND fkenmerk.fin_kenmerk_key IN (2)) bijlage,
|
||
(SELECT LISTAGG (
|
||
TO_CHAR (notes.fin_factuur_note_aanmaak, 'DD-MM-YYYY')
|
||
|| ':'
|
||
|| CHR (13)
|
||
|| CHR (10)
|
||
|| notes.fin_factuur_note_omschrijving,
|
||
CHR (13)|| CHR (10))
|
||
WITHIN GROUP (ORDER BY notes.fin_factuur_note_key)
|
||
FROM fin_factuur_note notes
|
||
WHERE notes.fin_factuur_key = fc.fin_factuur_key) notes,
|
||
DECODE(SIGN(COALESCE(co.totaal,0) - fc.fin_factuur_totaal), -1, 'Nee', 'Ja') binnen_budget,
|
||
afw_kostenplaats
|
||
FROM (SELECT f.fin_factuur_key fin_key,
|
||
c.cnt_prs_bedrijf_key bedr_key,
|
||
dis.ins_discipline_omschrijving discipline,
|
||
'C' ||c.cnt_contract_key || '.' || c.cnt_contract_versie contract_nr,
|
||
NULL materiaal,
|
||
NULL totaal,
|
||
c.prs_kostenplaats_key kost_key,
|
||
NULL status,
|
||
c.cnt_contract_omschrijving onderwerp,
|
||
NULL alg_locatie_key,
|
||
NULL afw_kostenplaats
|
||
FROM cnt_contract c, fin_factuur f, ins_tab_discipline dis
|
||
WHERE c.cnt_contract_key = f.cnt_contract_key
|
||
AND dis.ins_discipline_key = c.ins_discipline_key
|
||
UNION ALL
|
||
SELECT f.fin_factuur_key fin_key,
|
||
o.mld_uitvoerende_keys bedr_key,
|
||
'Opdracht ' || sm.mld_stdmelding_omschrijving discipline,
|
||
srt.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || o.mld_opdr_bedrijfopdr_volgnr opdr_nr,
|
||
o.mld_opdr_materiaal materiaal,
|
||
o.mld_opdr_kosten totaal,
|
||
o.prs_kostenplaats_key kost_key,
|
||
stat.mld_statusopdr_omschrijving status,
|
||
m.mld_melding_onderwerp onderwerp,
|
||
m.mld_alg_locatie_key,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerk_key = 21 -- afwijkende kostenplaats
|
||
AND mld_melding_key = m.mld_melding_key) afw_kostenplaats
|
||
FROM mld_opdr o,
|
||
fin_factuur f,
|
||
mld_melding m,
|
||
mld_stdmelding sm,
|
||
mld_statusopdr stat,
|
||
ins_tab_discipline dis,
|
||
ins_srtdiscipline srt
|
||
WHERE o.mld_opdr_key = f.mld_opdr_key
|
||
AND m.mld_melding_key = o.mld_melding_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND dis.ins_discipline_key= sm.mld_ins_discipline_key
|
||
AND srt.ins_srtdiscipline_key = dis.ins_srtdiscipline_key
|
||
AND stat.mld_statusopdr_key = o.mld_statusopdr_key) co,
|
||
fin_factuur fc,
|
||
prs_bedrijf uitv,
|
||
alg_locatie l,
|
||
fin_factuur_statuses stat
|
||
WHERE fc.fin_factuur_key = co.fin_key
|
||
AND uitv.prs_bedrijf_key = co.bedr_key
|
||
AND co.alg_locatie_key = l.alg_locatie_key(+)
|
||
AND stat.fin_factuur_statuses_key = fc.fin_factuur_statuses_key
|
||
AND fc.fin_factuur_verwijder IS NULL;
|
||
|
||
CREATE OR REPLACE VIEW hein_v_factuur_gegevens_bi
|
||
AS
|
||
SELECT f.fin_factuur_key,
|
||
mo.opdracht_uitvoerende,
|
||
f.fin_factuur_nr,
|
||
mo.opdracht_nummer,
|
||
mo.opdracht_materiaal,
|
||
mo.opdracht_kosten,
|
||
mo.opdracht_status,
|
||
mo.melding_locatie,
|
||
mo.melding_gebouw,
|
||
mo.kostensoortgroep,
|
||
(SELECT MAX(prs_kostensoort_refcode) || '-' || MAX(prs_kostensoort_opmerking) FROM prs_kostensoort ks WHERE REPLACE(mo.kostensoort, 'S-') = prs_kostensoort_refcode) kostensoort,
|
||
(SELECT MAX(prs_kostenplaats_nr) || ' ' || MAX(prs_kostenplaats_omschrijving) FROM prs_kostenplaats k WHERE mo.kostenplaats = prs_kostenplaats_nr) kostenplaats,
|
||
mo.soortmelding,
|
||
mo.productgroep,
|
||
mo.subproductgroep,
|
||
mo.sla_accpturen,
|
||
mo.plan_uitvoertijd_sla,
|
||
mo.melding_datum,
|
||
mo.melding_afgemeld,
|
||
mo.onderwerp,
|
||
mo.vomschrijving,
|
||
mo.accept_sla_dagen,
|
||
mo.accept_sla_uren,
|
||
mo.afspraak_sla_dagen,
|
||
mo.accept_sla_optijd,
|
||
mo.uitvoering_sla_optijd,
|
||
mo.afspraak_sla_optijd,
|
||
mo.opdracht_kostenplaats,
|
||
mo.opdracht_kostenplaats_oms,
|
||
mo.opdracht_datum,
|
||
mo.opdracht_lev_doorloopuren,
|
||
mo.opdracht_lev_doorloopdagen,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerk_key = 21 -- afwijkende kostenplaats
|
||
AND mld_melding_key = melding_key) afw_melding_kostenplaats,
|
||
f.datum_goedgekeurd factuur_goedgekeurd,
|
||
f.fin_factuur_statuses_omschr factuur_status,
|
||
-- De rapportagemaand is
|
||
CASE
|
||
WHEN TO_NUMBER(TO_CHAR(f.datum_goedgekeurd, 'DD')) < 15 THEN TO_CHAR(ADD_MONTHS(f.datum_goedgekeurd, -1), 'YYYY-MM')
|
||
ELSE TO_CHAR(f.datum_goedgekeurd, 'YYYY-MM')
|
||
END rapportagemaand,
|
||
mo.melding_status,
|
||
m.mld_melding_afgerond melding_afgerond,
|
||
mo.meldingnummer,
|
||
mo.melding_key,
|
||
f.fin_factuur_totaal factuur_totaal,
|
||
f.fin_factuur_totaal + fin_factuur_totaal_btw factuur_totaal_incl,
|
||
opdracht_afgemeld,
|
||
mld.getopdrachtstatusdate (mo.opdracht_key, 9) opdracht_afgerond,
|
||
DECODE(mo.opdracht_key, NULL, NULL, FLX.getflex ('OPD', 141, mo.opdracht_key)) afwijkende_kpn
|
||
FROM (SELECT mld_opdr_key, fin_factuur_key, fin_factuur_nr, fin_factuur_totaal, fin_factuur_totaal_btw,
|
||
(SELECT MAX(fac_tracking_datum)
|
||
FROM fac_tracking t
|
||
WHERE fac_srtnotificatie_key = 165 -- FINGOE
|
||
AND t.fac_tracking_refkey = fin_factuur_key) datum_goedgekeurd,
|
||
fin_factuur_statuses_omschr
|
||
FROM fin_factuur fa, fin_factuur_statuses fs
|
||
WHERE fin_factuur_verwijder IS NULL
|
||
AND fa.fin_factuur_statuses_key = fs.fin_factuur_statuses_key) f,
|
||
mld_v_udr_meldingopdracht mo,
|
||
mld_melding m
|
||
WHERE mo.opdracht_key = f.mld_opdr_key(+)
|
||
AND mo.melding_key = m.mld_melding_key;
|
||
|
||
CREATE OR REPLACE VIEW hein_v_export_exact_xml (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT fac_rapport_regel, fac_rapport_volgnr
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'EXACT';
|
||
|
||
|
||
CREATE OR REPLACE VIEW hein_v_export_exact_62 (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM hein_v_export_exact_xml;
|
||
|
||
CREATE OR REPLACE VIEW hein_v_export_exact_63 (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM hein_v_export_exact_xml;
|
||
|
||
|
||
CREATE OR REPLACE VIEW hein_v_bron_export_exact_xml
|
||
(
|
||
fin_factuur_key,
|
||
opdracht_id,
|
||
factuur_nr, -- crediteur factuurnummer
|
||
datum, -- factuurdatum
|
||
crdnr, -- crediteurnummer
|
||
bedrag_txt,
|
||
bedrag,
|
||
bedrag_incl,
|
||
oms_regel, -- omschrijving in de detailregels
|
||
reknr, -- grootboekrekeningnr
|
||
kstplcode, -- kostenplaats kenmerk bij gebouw
|
||
kstdrcode, -- kostendrager afh van grootboek
|
||
btw_code,
|
||
dagboek,
|
||
oms_kop, -- omschrijving in de kopregel
|
||
fin_factuur_debiteur_nr -- crediteur debiteurnummer
|
||
)
|
||
AS
|
||
SELECT fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_nr,
|
||
TO_CHAR (fin_factuur_datum, 'yyyy-mm-dd')
|
||
datum,
|
||
prs_leverancier_nr crdnr,
|
||
REPLACE (TO_CHAR (bedrag), ',', '.')
|
||
bedrag_txt,
|
||
bedrag,
|
||
bedrag_incl,
|
||
SUBSTR (UPPER (DECODE(b.prs_leverancier_nr, '801176', 'YAS', b.prs_bedrijf_naam)), 1, 3)
|
||
|| ','
|
||
|| SUBSTR(fin_factuur_boekmaand, 6,2)
|
||
|| ','
|
||
|| opdracht_id
|
||
|| ','
|
||
|| DECODE(fg.cnt_contract_key, NULL, 'variabel', LOWER(prs_kostensoort_opmerking))
|
||
oms_regel,
|
||
'74900' reknr,
|
||
prs_kostenplaats_nr
|
||
kstplcode,
|
||
'01' kstdrcode,
|
||
fin_btwtabelwaarde_code
|
||
btw_code,
|
||
fg.dagboek,
|
||
SUBSTR(UPPER(DECODE(b.prs_leverancier_nr, '801176', 'YAS', b.prs_bedrijf_naam)),1,3) || ',' || -- Erfenis uit HEIN. Hebben we dit nu ook nodig?
|
||
SUBSTR(fin_factuur_boekmaand,6,2) ||
|
||
DECODE(fg.cnt_contract_key, NULL, ',variabel',
|
||
','|| LOWER(prs_kostensoort_opmerking)) oms_kop,
|
||
fin_factuur_debiteur_nr
|
||
FROM ( SELECT g.fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
SUM (fin_factuurregel_totaal)
|
||
bedrag,
|
||
SUM (fin_factuurregel_totaal + fin_factuurregel_btw)
|
||
bedrag_incl,
|
||
fin_btwtabelwaarde_code,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
prs_kostensoort_opmerking,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
prs_kostenplaats_nr,
|
||
fin_factuur_boekmaand,
|
||
g.dagboek
|
||
FROM hein_v_factuur_gegevens g,
|
||
hein_exp_factuur e
|
||
WHERE fin_factuur_statuses_key = 6
|
||
AND g.fin_factuur_key = e.fin_factuur_key
|
||
AND g.dagboek = e.dagboek
|
||
GROUP BY g.fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
fin_btwtabelwaarde_code,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
prs_kostensoort_opmerking,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
prs_kostenplaats_nr,
|
||
fin_factuur_boekmaand,
|
||
g.dagboek) fg,
|
||
prs_bedrijf b
|
||
WHERE fg.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND b.prs_leverancier_nr IS NOT NULL;
|
||
|
||
-- rapport voor controle door de financiele afdeling voordat definitief geboekt wordt.
|
||
CREATE OR REPLACE VIEW hein_v_fin_factuur_controle
|
||
AS
|
||
SELECT prs_leverancier_nr,
|
||
boekstuknummer,
|
||
dagboek,
|
||
boekjaar,
|
||
periode,
|
||
gefiatteerd,
|
||
onzeref,
|
||
naamcrediteur,
|
||
omschrijving,
|
||
SUM (fin_factuurregel_totaal) bedrag,
|
||
SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedragincl,
|
||
uwref,
|
||
invoerder,
|
||
reknr
|
||
FROM (SELECT prs_leverancier_nr,
|
||
bsn.boekstuknummer,
|
||
dagboek,
|
||
SUBSTR (fg.fin_factuur_boekmaand, 1, 4)
|
||
boekjaar,
|
||
SUBSTR (fg.fin_factuur_boekmaand, 6, 2)
|
||
periode,
|
||
( SELECT LISTAGG (
|
||
pf.prs_perslid_naam_full
|
||
|| ' '
|
||
|| TO_CHAR (t.fac_tracking_datum,
|
||
'dd-mm-yyyy hh24:mi'),
|
||
CHR (10))
|
||
WITHIN GROUP (ORDER BY fac_tracking_datum)
|
||
AS fiatteur
|
||
FROM fac_tracking t, prs_v_perslid_fullnames_all pf
|
||
WHERE t.fac_srtnotificatie_key IN (164, 165) -- FINFOK, FINGOE
|
||
AND t.prs_perslid_key = pf.prs_perslid_key
|
||
AND t.fac_tracking_refkey = fg.fin_factuur_key
|
||
GROUP BY fac_tracking_refkey)
|
||
gefiatteerd,
|
||
fg.fin_factuur_key
|
||
OnzeRef,
|
||
prs_bedrijf_naam
|
||
NaamCrediteur,
|
||
SUBSTR (UPPER (b.prs_bedrijf_naam), 1, 3)
|
||
|| ','
|
||
|| SUBSTR (fin_factuur_boekmaand, 6, 2)
|
||
|| ','
|
||
|| opdracht_id
|
||
|| ','
|
||
|| fin_factuur_opmerking
|
||
omschrijving,
|
||
fin_factuurregel_totaal,
|
||
fin_factuurregel_btw,
|
||
'74900' reknr,
|
||
fg.fin_factuur_nr || ' ' || fg.fin_factuur_debiteur_nr
|
||
uwref,
|
||
(SELECT pf.prs_perslid_naam_full
|
||
FROM fac_tracking t, prs_v_perslid_fullnames_all pf
|
||
WHERE t.fac_srtnotificatie_key = 162 -- FINNEW
|
||
AND t.fac_tracking_refkey = fg.fin_factuur_key
|
||
AND t.prs_perslid_key = pf.prs_perslid_key)
|
||
invoerder
|
||
FROM hein_v_factuur_gegevens fg,
|
||
prs_bedrijf b,
|
||
(SELECT fin_factuur_key,
|
||
fin_kenmerkfactuur_waarde boekstuknummer
|
||
FROM fin_kenmerkfactuur kf
|
||
WHERE fin_kenmerk_key = 1) bsn
|
||
WHERE fg.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND fg.fin_factuur_key = bsn.fin_factuur_key(+))
|
||
GROUP BY prs_leverancier_nr,
|
||
boekstuknummer,
|
||
dagboek,
|
||
boekjaar,
|
||
periode,
|
||
gefiatteerd,
|
||
onzeref,
|
||
naamcrediteur,
|
||
omschrijving,
|
||
reknr,
|
||
uwref,
|
||
invoerder;
|
||
|
||
|
||
-- Procedure om alle facturen te exporteren naar exact.
|
||
CREATE OR REPLACE PROCEDURE hein_select_exact_xml (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_dagboek IN VARCHAR2
|
||
)
|
||
AS
|
||
CURSOR c(c_dagboek VARCHAR2)
|
||
IS
|
||
SELECT crdnr, factuur_nr, MAX(datum) datum, MAX(oms_kop) oms_kop
|
||
FROM hein_v_bron_export_exact_xml
|
||
WHERE c_dagboek = dagboek
|
||
GROUP BY crdnr, factuur_nr;
|
||
|
||
CURSOR c_sub (c_crdnr VARCHAR2, c_factuur_nr VARCHAR2)
|
||
IS
|
||
SELECT *
|
||
FROM hein_v_bron_export_exact_xml
|
||
WHERE COALESCE(crdnr, 'CrdNr') = COALESCE(c_crdnr, 'CrdNr')
|
||
AND factuur_nr = c_factuur_nr;
|
||
|
||
v_order_count NUMBER;
|
||
v_amount_sum NUMBER(10,2);
|
||
v_amount_sum_incl NUMBER(10,2);
|
||
v_count NUMBER;
|
||
v_sub_count NUMBER;
|
||
v_bestand VARCHAR2(12);
|
||
v_boekstuknummer NUMBER;
|
||
v_crdnr PRS_BEDRIJF.PRS_LEVERANCIER_NR%TYPE;
|
||
v_factuur_nr FIN_FACTUUR.FIN_FACTUUR_NR%TYPE;
|
||
v_bijlagen_key NUMBER;
|
||
v_bijlagen_filename FAC_BIJLAGEN.FAC_BIJLAGEN_FILENAME%TYPE;
|
||
v_guid VARCHAR2(50);
|
||
|
||
BEGIN
|
||
|
||
v_order_count := 0;
|
||
v_amount_sum := 0;
|
||
v_amount_sum_incl := 0;
|
||
v_count := 0;
|
||
v_bestand := 'EXACT';
|
||
v_crdnr := 'Q';
|
||
v_factuur_nr := 'Q';
|
||
|
||
-- Eerst opruiming
|
||
DELETE FROM imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = v_bestand;
|
||
|
||
-- Verwijder het kenmerk boekstuknummer van de facturen die niet op verwerkt staan
|
||
DELETE fin_kenmerkfactuur kf
|
||
WHERE fin_kenmerk_key = 1
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde, 3,2) = p_dagboek
|
||
AND fin_factuur_key IN (SELECT fin_factuur_key
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_statuses_key <> 7);
|
||
|
||
-- Bewaar de factuur keys in een tijdelijke tabel zodat bij het verwerken (nieuwe export)
|
||
-- deze keys gebruikt kunnen worden.
|
||
DELETE hein_exp_factuur
|
||
WHERE dagboek = p_dagboek;
|
||
|
||
INSERT INTO hein_exp_factuur (fin_factuur_key, dagboek)
|
||
( SELECT DISTINCT fg.fin_factuur_key, fg.dagboek
|
||
FROM hein_v_factuur_gegevens fg,
|
||
prs_bedrijf b
|
||
WHERE fg.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND b.prs_leverancier_nr IS NOT NULL
|
||
AND fg.fin_factuur_statuses_key = 6
|
||
AND fg.fin_factuur_datum > SYSDATE - (5 * 365) -- Check op geldige factuurdatum:
|
||
AND fg.fin_factuur_datum < SYSDATE + 365 -- facturen mogen niet ouder zijn dan 5 jaar of meer dan <20><>n jaar in de toekomst.
|
||
);
|
||
|
||
SELECT MAX(fin_kenmerkfactuur_waarde)
|
||
INTO v_boekstuknummer
|
||
FROM fin_kenmerkfactuur
|
||
WHERE fin_kenmerk_key = 1
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde,1,2) = TO_CHAR(SYSDATE, 'YY')
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde,3,2) = p_dagboek;
|
||
|
||
IF v_boekstuknummer IS NULL
|
||
THEN
|
||
v_boekstuknummer := FAC.safe_to_number(TO_CHAR(SYSDATE, 'YY') || p_dagboek || '0000');
|
||
END IF;
|
||
|
||
-- header
|
||
hein.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
|
||
hein.add_xml_row (v_bestand, '<eExact>');
|
||
hein.add_xml_row (v_bestand, '<GLEntries>');
|
||
|
||
FOR rec IN c(p_dagboek)
|
||
LOOP
|
||
BEGIN
|
||
-- Als we een nieuwe leverancier/factuurnummer tegenkomen gaan we het boekstuknummer ophogen.
|
||
IF rec.crdnr <> v_crdnr OR rec.factuur_nr <> v_factuur_nr
|
||
THEN
|
||
v_boekstuknummer := v_boekstuknummer + 1;
|
||
v_crdnr := rec.crdnr;
|
||
v_factuur_nr := rec.factuur_nr;
|
||
END IF;
|
||
|
||
hein.add_xml_row (v_bestand, '<GLEntry status="E" entry="' || xml.char_to_html(v_boekstuknummer) || '">');
|
||
hein.add_xml_element (v_bestand, 'Description', rec.oms_kop);
|
||
hein.add_xml_element (v_bestand, 'Date', rec.datum);
|
||
hein.add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
|
||
hein.add_xml_row (v_bestand, '<Journal type="I" code="' || p_dagboek || '"/>');
|
||
v_sub_count := 1;
|
||
FOR rec1 IN c_sub (v_crdnr, v_factuur_nr)
|
||
LOOP
|
||
BEGIN
|
||
-- Eerst maar even een kenmerk voor het boestuknummer aanmaken
|
||
hein.set_kenmerk('FIN', 1, rec1.fin_factuur_key, v_boekstuknummer, 0);
|
||
hein.add_xml_row (v_bestand, '<FinEntryLine number="' || v_sub_count || '" subtype="T" type="N">');
|
||
hein.add_xml_element (v_bestand, 'Date', rec1.datum);
|
||
hein.add_xml_row (v_bestand, '<GLAccount code="' || xml.char_to_html(rec1.reknr) || '"/>');
|
||
hein.add_xml_element (v_bestand, 'Description', rec1.oms_regel);
|
||
hein.add_xml_row (v_bestand, '<Costcenter code="' || xml.char_to_html(rec1.kstplcode) || '"/>');
|
||
hein.add_xml_row (v_bestand, '<Costunit code="' || xml.char_to_html(rec1.kstdrcode) || '"/>');
|
||
hein.add_xml_row (v_bestand, '<Creditor number="' || xml.char_to_html(rec1.crdnr) || '"/>');
|
||
hein.add_xml_row (v_bestand, '<Item code=""/>');
|
||
hein.add_xml_row (v_bestand, '<Amount>');
|
||
hein.add_xml_element (v_bestand, 'Debit', rec1.bedrag_txt);
|
||
hein.add_xml_row (v_bestand, '<VAT code="' || xml.char_to_html(rec1.btw_code) || '"/>');
|
||
hein.add_xml_row (v_bestand, '</Amount>');
|
||
hein.add_xml_row (v_bestand, '<Payment>');
|
||
hein.add_xml_element (v_bestand, 'Reference', rec.factuur_nr || ' ' || rec1.fin_factuur_debiteur_nr );
|
||
hein.add_xml_element (v_bestand, 'InvoiceNumber', rec1.fin_factuur_key); -- of moet dit v_boekstuknummer worden????
|
||
hein.add_xml_row (v_bestand, '</Payment>');
|
||
hein.add_xml_row (v_bestand, '<FinReferences>');
|
||
hein.add_xml_element (v_bestand, 'YourRef', rec.factuur_nr || ' ' || rec1.fin_factuur_debiteur_nr);
|
||
hein.add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
|
||
hein.add_xml_row (v_bestand, '</FinReferences>');
|
||
|
||
SELECT MAX(fac_bijlagen_key)
|
||
INTO v_bijlagen_key
|
||
FROM fac_v_bijlagen
|
||
WHERE fac_bijlagen_module = 'FIN'
|
||
AND fac_bijlagen_refkey = rec1.fin_factuur_key
|
||
AND fac_bijlagen_kenmerk_key = 2;
|
||
|
||
IF v_bijlagen_key IS NOT NULL AND v_sub_count = 1
|
||
THEN
|
||
SELECT fac_bijlagen_filename
|
||
INTO v_bijlagen_filename
|
||
FROM fac_v_bijlagen
|
||
WHERE fac_bijlagen_key = v_bijlagen_key;
|
||
|
||
v_guid := sys_guid();
|
||
hein.add_xml_row (v_bestand, '<DocumentAttachment ID="{' || substr(v_guid,1,8) || '-' || substr(v_guid,8,4) || '-' || substr(v_guid,12,4) || '-' || substr(v_guid,16,4) || '-' || substr(v_guid,20,12) || '}" publish="0">');
|
||
hein.add_xml_row (v_bestand, '<DocumentType number="7"/>');
|
||
hein.add_xml_element (v_bestand, 'Subject', xml.char_to_html(v_boekstuknummer));
|
||
hein.add_xml_element (v_bestand, 'OurRef', xml.char_to_html(v_boekstuknummer));
|
||
hein.add_xml_element (v_bestand, 'YourRef', rec.factuur_nr);
|
||
hein.add_xml_row (v_bestand, '<Account code="' || xml.char_to_html(rec1.crdnr) || '"/>');
|
||
hein.add_xml_element (v_bestand, 'FCLTattachment', v_bijlagen_key);
|
||
hein.add_xml_row (v_bestand, '</DocumentAttachment>');
|
||
END IF;
|
||
|
||
hein.add_xml_row (v_bestand, '</FinEntryLine>');
|
||
v_sub_count := v_sub_count + 1;
|
||
v_amount_sum := v_amount_sum + rec1.bedrag;
|
||
v_amount_sum_incl := v_amount_sum_incl + rec1.bedrag_incl;
|
||
END;
|
||
END LOOP;
|
||
IF v_sub_count = 1
|
||
THEN
|
||
fac.writelog (p_applname, 'E', 'Fout tijdens Exact export. Factuurnummer: ' || v_factuur_nr || ' Crdnr: ' || v_crdnr,'');
|
||
END IF;
|
||
hein.add_xml_row (v_bestand, '</GLEntry>');
|
||
v_order_count := v_order_count + 1;
|
||
END;
|
||
END LOOP;
|
||
|
||
hein.add_xml_row (v_bestand, '</GLEntries>');
|
||
hein.add_xml_row (v_bestand, '</eExact>');
|
||
fac.writelog (p_applname, 'S', 'Exact export uitgevoerd. Aantal regels: ' || v_order_count || ' Totaal bedrag: ' || v_amount_sum || ' Totaal bedrag (incl): ' || v_amount_sum_incl, '');
|
||
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE hein_select_exact_62 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
hein_select_exact_xml (p_applname, p_applrun, '62');
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE hein_select_exact_63 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
hein_select_exact_xml (p_applname, p_applrun, '63');
|
||
END;
|
||
/
|
||
|
||
-- Procedure om alle facturen te exporteren naar exact.
|
||
CREATE OR REPLACE PROCEDURE hein_export_exact_62 (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
-- Verwerk actie direct starten na de EXPORT_EXACT
|
||
-- INSERT INTO imp_schedule (imp_schedule_name) VALUES ('VERWERK_EXACT_62');
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
-- Procedure om alle facturen te exporteren naar exact.
|
||
CREATE OR REPLACE PROCEDURE hein_export_exact_63 (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
-- Verwerk actie direct starten na de EXPORT_EXACT
|
||
-- INSERT INTO imp_schedule (imp_schedule_name) VALUES ('VERWERK_EXACT_63');
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW hein_v_export_verwerk_exact (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT 'Lijst met bevroren facturen:' fac_rapport_regel, 0 fac_rapport_volgnr
|
||
FROM DUAL
|
||
UNION ALL
|
||
SELECT fac_rapport_regel, fac_rapport_volgnr
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'VW_EXACT';
|
||
|
||
|
||
CREATE OR REPLACE VIEW hein_v_export_verwerk_exact_62 (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM hein_v_export_verwerk_exact;
|
||
|
||
CREATE OR REPLACE VIEW hein_v_export_verwerk_exact_63 (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM hein_v_export_verwerk_exact;
|
||
|
||
CREATE OR REPLACE PROCEDURE hein_select_verwerk_exact (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_dagboek IN VARCHAR2
|
||
)
|
||
AS
|
||
CURSOR c_fact
|
||
IS
|
||
SELECT DISTINCT f.fin_factuur_key
|
||
FROM hein_exp_factuur f
|
||
, hein_v_factuur_gegevens fg
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.fin_factuur_statuses_key = 6
|
||
AND f.dagboek = p_dagboek;
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanvrager NUMBER;
|
||
v_bestelling_key NUMBER;
|
||
v_bestand VARCHAR2(12);
|
||
v_logdate DATE;
|
||
v_volgnr NUMBER;
|
||
BEGIN
|
||
v_errormsg := 'Geen akties';
|
||
v_aanvrager := 3; -- Facilitor
|
||
v_logdate := SYSDATE;
|
||
|
||
v_bestand := 'VW_EXACT';
|
||
v_volgnr := 1;
|
||
-- Eerst opruiming
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = v_bestand;
|
||
|
||
FOR rec1 IN c_fact
|
||
LOOP
|
||
BEGIN
|
||
UPDATE fin_factuur f
|
||
SET fin_factuur_statuses_key = 7
|
||
WHERE f.fin_factuur_key = rec1.fin_factuur_key;
|
||
|
||
fac.trackaction ('FINVER', rec1.fin_factuur_key, v_aanvrager, NULL, NULL);
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel)
|
||
VALUES (v_bestand,
|
||
v_volgnr,
|
||
rec1.fin_factuur_key);
|
||
|
||
v_volgnr := v_volgnr + 1;
|
||
END;
|
||
END LOOP;
|
||
-- verwijder de enties uit de tijdelijke tabel.
|
||
DELETE hein_exp_factuur WHERE dagboek = p_dagboek;
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE hein_select_verwerk_exact_62 (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
hein_select_verwerk_exact (p_applname, p_applrun, '62');
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE hein_select_verwerk_exact_63 (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
hein_select_verwerk_exact (p_applname, p_applrun, '63');
|
||
END;
|
||
/
|
||
|
||
|
||
------ 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
|