STPH#30489: Implementatie STPH Initieel

svn path=/Customer/trunk/; revision=23405
This commit is contained in:
Marcel Bourseau
2014-11-19 16:43:51 +00:00
parent 721cfda697
commit dd5240b317

842
STPH/stph.sql Normal file
View File

@@ -0,0 +1,842 @@
-- Script containing customer specific configuration sql statements for STPH: Stichting het Parkhuis
-- (c) 2014 SG|facilitor
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800710
set echo on
spool stph.lst
--
-- Personen import
--
CREATE OR REPLACE PROCEDURE stph_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);
BEGIN
v_errorhint := 'Generieke update';
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
prs.import_perslid (p_import_key,
'0;0;0;0;0;0;6;4;3;1;' ||
'2;0;0;0;0;10;9;8;0;5;' ||
'7;11;0;0;0;0;12;0;0;0;'||
'0;0;0;0;0;0;0;0;0;0;'||
'0;0;0;0;0;0',
'Roepnaam;Voorletters;Tussenvoegsel;Achternaam;Persnr.;Afdnr.;Functie;Email;Mobile;Telefoon;Loginnaam;%'
);
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 stph_import_perslid;
/
CREATE OR REPLACE PROCEDURE stph_post_update_perslid (p_import_key IN NUMBER)
AS
v_kostenplaats_key_perslid NUMBER(10);
v_kostenplaats_key_afdeling NUMBER(10);
v_prs_afdeling_key NUMBER(10);
CURSOR c_perslid_kpn_kenmerk
IS
SELECT prs_perslid_nr, prs_kenmerk1, prs_perslid_naam, prs_afdeling_naam
FROM fac_imp_perslid;
BEGIN
FOR rc IN c_perslid_kpn_kenmerk
LOOP
BEGIN
-- Kostenplaats die als kenmerk is meegegeven bij de persoon
SELECT MAX(prs_kostenplaats_key)
INTO v_kostenplaats_key_perslid
FROM prs_kostenplaats
WHERE prs_kostenplaats_upper = UPPER(rc.prs_kenmerk1)
AND prs_kostenplaats_verwijder IS NULL;
IF v_kostenplaats_key_perslid IS NULL
THEN
-- Kostenplaats bij de persoon (vanuit AFAS) staat niet in Facilitor, persoon blijft aan de afdeling gekoppeld volgens AFAS (dus niet naar evt. 'fictieve' afdeling).
fac.imp_writelog (p_import_key,
'W',
'Kostenplaats van persoon' || rc.prs_perslid_nr || ' is NIET gevonden)',
'Naam:' || rc.prs_perslid_naam || ' / Afdeling: ' || rc.prs_afdeling_naam
);
ELSE
-- Kostenplaats record bij de persoon is gevonden,
-- Nu eerst de kostenplaats van de afdeling bepalen
SELECT MAX(a.prs_kostenplaats_key)
INTO v_kostenplaats_key_afdeling
FROM prs_afdeling a, prs_perslid p
WHERE p.prs_perslid_nr = rc.prs_perslid_nr
AND p.prs_perslid_verwijder IS NULL
AND a.prs_afdeling_key = p.prs_afdeling_key
AND a.prs_afdeling_verwijder IS NULL;
-- Als deze afwijkt van de kostenplaats van de afdeling waar persoon onder valt, dan persoon verhuizen naar die fictieve afdeling
IF v_kostenplaats_key_afdeling IS NOT NULL
THEN
-- Afdeling heeft kostenplaats, nu vergelijken met die van persoon
-- Indien ongelijk, dan zoek de fictieve afdeling, want daar persoon aan koppelen.
IF v_kostenplaats_key_perslid <> v_kostenplaats_key_afdeling
THEN
-- Zoek de eerste afdeling (MAX) die kostenplaats van persoon heeft, daar gaat persoon onder vallen.
SELECT MAX(a.prs_afdeling_key)
INTO v_prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_kostenplaats_key = v_kostenplaats_key_perslid
AND a.prs_afdeling_verwijder IS NULL;
IF v_prs_afdeling_key IS NOT NULL
THEN
UPDATE prs_perslid p
SET p.prs_afdeling_key = v_prs_afdeling_key
WHERE p.prs_perslid_nr = rc.prs_perslid_nr
AND p.prs_perslid_verwijder IS NULL;
END IF;
END IF;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'W',
'Post update bij persoon' || rc.prs_perslid_nr || ' is NIET volledig uitgevoerd )',
'Naam:' || rc.prs_perslid_naam || ' / Afdeling: ' || rc.prs_afdeling_naam
);
END;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE stph_update_perslid (
p_import_key IN NUMBER
) IS
-- Alle personen verwijderen die niet meer in import bestand voorkomen.
CURSOR c_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full
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
ORDER BY 2;
v_count NUMBER;
BEGIN
-- generic update
SELECT count(*)
INTO v_count
FROM fac_imp_perslid;
IF v_count < 300
THEN
fac.imp_writelog (p_import_key,
'E',
'Het aantal te importeren personen is te klein ('
|| TO_CHAR (v_count) || ')',
'Zie Specificatie'
);
RETURN;
END IF;
-- 'NR' betekent dat op basis van personeelsNummeR wordt gematched.
-- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
prs.update_perslid (p_import_key, 'NR', NULL);
-- 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;
STPH_post_update_perslid (p_import_key);
END stph_update_perslid;
/
------
------ FACTUUREXPORT / KOPPELING DBS
------
--------------------------------------------------
-- DBS1: Factuurexport
-- view tbv export naar financieel systeem DBS
CREATE OR REPLACE VIEW stph_v_factuur_mldcnt_gegevens (
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_totaal,
fin_factuur_totaal_btw,
fin_factuur_totaal_dbs,
prs_bedrijf_key,
prs_leverancier_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_totaal_dbs,
fin_factuurregel_btw_perc,
fin_btwtabelwaarde_btwcode,
fin_factuurregel_nr,
fin_factuurregel_omschrijving,
fin_factuur_debiteur_nr,
project_nummer,
prs_kostensoort_oms,
prs_kostensoort_doorbelasten,
prs_kostenplaats_nr,
bes_opdr_key,
mld_opdr_key,
cnt_contract_key,
fin_factuur_statuses_key
)
AS
SELECT DISTINCT f.fin_factuur_key,
COALESCE (TO_CHAR (cnt_contract_nummer),
(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)
)
opdracht_id,
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_nr,
f.fin_factuur_totaal,
f.fin_factuur_totaal_btw,
CASE
WHEN ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2) > 0
THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-'
ELSE LPAD(TO_CHAR(100 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),2)), 10, '0') || '+'
END fin_factuur_totaal_dbs,
COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key) prs_bedrijf_key,
COALESCE (b_c.prs_leverancier_nr, b_o.prs_leverancier_nr) prs_leverancier_nr,
fr.fin_factuurregel_totaal,
fr.fin_factuurregel_btw,
CASE
WHEN ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2) > 0
THEN LPAD(TO_CHAR(100 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2)), 10, '0') || LPAD('0',10,'0')
ELSE LPAD('0',10,'0') || LPAD(TO_CHAR(100 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),2)), 10, '0')
END fin_factuurregel_totaal_dbs,
btw.fin_btwtabelwaarde_perc,
btw.fin_btwtabelwaarde_code,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_omschrijving,
f.fin_factuur_debiteur_nr,
NULL projectnummer,
COALESCE(ks_regel.prs_kostensoort_oms,ks.prs_kostensoort_oms),
DECODE(ks_regel.prs_kostensoort_oms, NULL, ks.prs_kostensoort_doorbelasten, ks_regel.prs_kostensoort_doorbelasten),
COALESCE (kp_c.prs_kostenplaats_nr, kp_o.prs_kostenplaats_nr) prs_kostenplaats_nr,
NULL bes_opdr_key,
o.mld_opdr_key,
c.cnt_contract_key,
f.fin_factuur_statuses_key
FROM fin_factuur f,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_kostensoort ks,
prs_kostensoort ks_regel,
prs_kostenplaats kp_c,
prs_kostenplaats kp_o
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.bes_bestelopdr_key is null
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND o.prs_kostenplaats_key = kp_o.prs_kostenplaats_key (+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
AND c.prs_kostenplaats_key = kp_c.prs_kostenplaats_key (+)
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+);
CREATE OR REPLACE VIEW stph_v_factuur_bes_gegevens (
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_totaal,
fin_factuur_totaal_btw,
fin_factuur_totaal_dbs,
prs_bedrijf_key,
prs_leverancier_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_totaal_dbs,
fin_factuurregel_btw_perc,
fin_btwtabelwaarde_btwcode,
fin_factuurregel_nr,
fin_factuurregel_omschrijving,
fin_factuur_debiteur_nr,
project_nummer,
prs_kostensoort_oms,
prs_kostensoort_doorbelasten,
prs_kostenplaats_nr,
bes_opdr_key,
mld_opdr_key,
cnt_contract_key,
fin_factuur_statuses_key
)
AS
SELECT DISTINCT f.fin_factuur_key,
TO_CHAR (bo.bes_bestelopdr_id) opdracht_id,
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_nr,
f.fin_factuur_totaal,
f.fin_factuur_totaal_btw,
CASE
WHEN ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2) > 0
THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-'
ELSE LPAD(TO_CHAR(100 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),2)), 10, '0') || '+'
END fin_factuur_totaal_dbs,
b.prs_bedrijf_key,
b.prs_leverancier_nr,
fr.fin_factuurregel_totaal,
fr.fin_factuurregel_btw,
CASE
WHEN ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2) > 0
THEN LPAD(TO_CHAR(100 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2)), 10, '0') || LPAD('0',10,'0')
ELSE LPAD('0',10,'0') || LPAD(TO_CHAR(100 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),2)), 10, '0')
END fin_factuurregel_totaal_dbs,
btw.fin_btwtabelwaarde_perc,
btw.fin_btwtabelwaarde_code,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_omschrijving,
f.fin_factuur_debiteur_nr,
NULL projectnummer,
COALESCE(ks_regel.prs_kostensoort_oms,ks.prs_kostensoort_oms),
DECODE(ks_regel.prs_kostensoort_oms, NULL, ks.prs_kostensoort_doorbelasten, ks_regel.prs_kostensoort_doorbelasten),
kp.prs_kostenplaats_nr,
bo.bes_bestelopdr_key bes_opdr_key,
NULL mld_opdr_key,
NULL cnt_contract_key,
f.fin_factuur_statuses_key
FROM bes_bestelopdr bo,
prs_bedrijf b,
bes_bestelling bes,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
fin_factuur f,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
prs_kostensoort ks,
prs_kostensoort ks_regel,
prs_kostenplaats kp
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes.bes_bestelling_key = bi.bes_bestelling_key
AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key;
CREATE OR REPLACE VIEW stph_v_factuur_geg
AS
SELECT * from stph_v_factuur_mldcnt_gegevens
UNION
SELECT * from stph_v_factuur_bes_gegevens;
CREATE OR REPLACE VIEW stph_v_factuur_geg_akkoord
AS
SELECT * from stph_v_factuur_mldcnt_gegevens
WHERE fin_factuur_statuses_key = 6
UNION
SELECT * from stph_v_factuur_bes_gegevens
WHERE fin_factuur_statuses_key = 6;
-- Exportbestand die voor DBS wordt gegenereerd, bestaande uit kopregel (factuur-nivo) en bijbehorende sub-regels (factuurregels)
--
-- Velden kopregel:
-- 1: uniek boekstuknummer van 10 posities (fin_factuur_key), posities 1-9
-- 2: factuurnummer van 16 posities, posities 10-25
-- 3: factuurdatum van 8 posities in formaat ddmmjjjjj, posities 26-33
-- 4: verdeelperiode van 6 posities in formaat jjjjmm, posities 34-39
-- 5: leveranciernummer van 4 posities, posities 40-43
-- 6: factuurregelnummer, in kopregel 00000 (5 posities, in subregel het opeenvolgend regelnr van de factuurregel), posities 44-48
-- 7: factuurregelomschrijving, in kopregel leeg (30 spaties), in subregel de omschrijving van de factuurregel), posities 49-78
-- 8: kostensoort, in kopregel 00000 (5 posities) in subregel de kostensoort), posities 79-83
-- 9: kostenplaats, in kopregel 0000 (4 posities), in subregel de kostenplaats, posities 84-87
-- 10: Debet/Credit: totaal factuurbedrag incl BTW (11 posities), bedrag in centen met achteraan een min-teken '-' (debet-post) of plus-teken (credit-post) (dus 123.95 euro -> 0000012395-), posities 88-98,
-- 11: Debet: totaal factuurregelbedrag, in kopregel leeg (10 nullen), posities 99-108
-- 12: Credit: totaal factuurregelbedrag indien NEGATIEF, in kopregel leeg (10 nullen), posities 109-118
-- Velden subregel:
-- 1: uniek boekstuknummer van 10 posities (fin_factuur_key), posities 1-9
-- 2: factuurnummer van 20 posities, posities 10-25
-- 3: factuurdatum van 8 posities in formaat ddmmjjjjj, posities 26-33
-- 4: verdeelperiode van 6 posities in formaat jjjjmm, posities 34-39
-- 5: leveranciernummer van 4 posities, posities 40-43
-- 6: factuurregelnummer, in kopregel 00000 (5 posities, in subregel het opeenvolgend regelnr van de factuurregel), posities 44-48
-- 7: factuurregelomschrijving, in kopregel leeg (30 spaties), in subregel de omschrijving van de factuurregel), posities 49-78
-- 8: kostensoort, in kopregel 00000 (5 posities) in subregel de kostensoort), posities 79-83
-- 9: kostenplaats, in kopregel 0000 (4 posities), in subregel de kostenplaats, posities 84-87
-- 10: Debet/Credit: totaal factuurbedrag incl BTW (11 posities), in subregel leeg (10 nullen) met een extra 0 vanwege de het min of plusteken in kopregel, posities 88-98,
-- 11: Debet: totaal factuurregelbedrag, (10 posities), bedrag in centen (dus 123.95 euro -> 0000012395), posities 109-118 (NB: hier geen min-teken! alleen in kopregel)
-- 12: Credit: totaal factuurregelbedrag indien NEGATIEF, (10 posities), bedrag in centen (dus 123.95 euro -> 0000012395), posities 119-128
CREATE OR REPLACE VIEW stph_v_export_dbs
(result, result_order)
AS
SELECT SUBSTR(MAX(fin_factuur_boekmaand),1,4) || LPAD(MAX(fin_factuur_key), 5, '0') ||
LPAD(MAX(fin_factuur_nr), 16, '0') ||
TO_CHAR (MAX(fin_factuur_datum), 'ddmmyyyy') ||
SUBSTR(MAX(fin_factuur_boekmaand),1,4) || LPAD(SUBSTR(MAX(fin_factuur_boekmaand),6,2) , 2, '0') ||
LPAD(COALESCE(MAX(prs_leverancier_nr),'0'), 4, '0') ||
LPAD('0',5,'0') ||
LPAD(' ',30,' ') ||
LPAD('0',5,'0') ||
LPAD('0',4,'0') ||
MAX(fin_factuur_totaal_dbs) ||
LPAD('0',10,'0') ||
LPAD('0',10,'0')
, SUBSTR(MAX(fin_factuur_boekmaand),1,4) || LPAD(MAX(fin_factuur_key), 5, '0') || LPAD('0',5,'0')
FROM stph_v_factuur_geg_akkoord fg
GROUP by fin_factuur_key
UNION ALL
SELECT SUBSTR(fin_factuur_boekmaand,1,4) || LPAD(fin_factuur_key, 5, '0') ||
LPAD(fin_factuur_nr, 16, '0') ||
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') ||
SUBSTR(fin_factuur_boekmaand,1,4) || LPAD(SUBSTR(fin_factuur_boekmaand,6,2) , 2, '0') ||
LPAD(COALESCE(prs_leverancier_nr,'0'), 4, '0') ||
LPAD(fin_factuurregel_nr,5,'0') ||
LPAD(COALESCE(fin_factuurregel_omschrijving, ' '),30,' ') ||
LPAD(prs_kostensoort_oms,5,'0') ||
LPAD(prs_kostenplaats_nr,4,'0') ||
LPAD('0',10,'0') || '0' ||
fin_factuurregel_totaal_dbs
, SUBSTR(fin_factuur_boekmaand,1,4) || LPAD(fin_factuur_key, 5, '0') || LPAD(fin_factuurregel_nr,5,'0')
FROM stph_v_factuur_geg_akkoord fg;
CREATE OR REPLACE PROCEDURE stph_export_dbs (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
-- In cursor cfactuur alle facturen die worden geexporteerd...
CURSOR cfactuur
IS
SELECT fin_factuur_key
FROM stph_v_factuur_geg_akkoord
GROUP BY fin_factuur_key;
BEGIN
-- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT...
FOR cfact IN cfactuur
LOOP
-- Zowel de factuur in tracking zetten als de status op verwerkt (=7) zetten
fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL);
END LOOP;
END;
/
CREATE OR REPLACE VIEW stph_v_export_undo_dbs (
result,
result_order
)
AS
SELECT REPLACE(REPLACE(f.fin_factuur_key
|| ';'
|| opdracht_id
|| ';'
|| fin_factuur_datum
|| ';'
|| fin_factuur_nr
|| ';'
|| prs_bedrijf_key
|| ';'
|| fin_factuurregel_totaal
|| ';'
|| fin_factuurregel_btw
|| ';'
|| fin_factuurregel_nr
|| ';'
|| fin_factuur_debiteur_nr
|| ';'
|| project_nummer
|| ';'
|| prs_kostensoort_oms
|| ';'
|| bes_opdr_key
|| ';'
|| mld_opdr_key
|| ';'
|| cnt_contract_key
,CHR (13), ''), CHR (10), '<ret>'), f.fin_factuur_key
FROM stph_v_factuur_geg f, fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code ='FINVER'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
FROM fac_tracking t1
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
AND f.fin_factuur_key = t.fac_tracking_refkey
AND f.fin_factuur_statuses_key = 7;
CREATE OR REPLACE PROCEDURE stph_select_undo_dbs (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
BEGIN
v_errormsg := 'Geen akties';
END;
/
-- Procedure om alle geexporteerde facturen naar status akkoord terug te zetten.
CREATE OR REPLACE PROCEDURE stph_export_undo_dbs (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR cfactuur
IS
SELECT DISTINCT f.fin_factuur_key
FROM fac_tracking t, fac_srtnotificatie sn, fin_factuur f
WHERE sn.fac_srtnotificatie_code ='FINVER'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
FROM fac_tracking t1
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
AND f.fin_factuur_key = t.fac_tracking_refkey
AND fin_factuur_statuses_key = 7;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errormsg := 'Geen akties';
FOR cfact IN cfactuur
LOOP
-- Eerst de factuur in tracking zetten...
-- Omdat van 7 naar 6 niet mag/geoorloofd is, lukt het niet via
-- de reguliere functie fin.setfactuurstatus (cfact.fin_factuur_key, 6, NULL);
-- Dan maar zelf en custom-made:
fac.trackaction ('FINFOK', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet');
UPDATE fin_factuur
SET fin_factuur_statuses_key = 6
WHERE fin_factuur_key = cfact.fin_factuur_key;
END LOOP;
END;
/
--------------------------------------------------
-- DBS2: Catering export
-- Velden catering-regels voor intern doorbelasten (DBS) van de vorige maand, die niet dirty zijn.
CREATE OR REPLACE VIEW stph_v_res_catering_2_dbs
AS
SELECT rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
rr.res_rsv_ruimte_key,
r.res_ruimte_key,
r.res_ruimte_nr,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
g.alg_gebouw_code,
g.alg_gebouw_naam,
v.alg_verdieping_volgnr,
v.alg_verdieping_omschrijving,
ar.alg_ruimte_nr,
ar.alg_ruimte_omschrijving,
op.res_opstelling_key,
op.res_opstelling_omschrijving,
rr.res_rsv_ruimte_van,
rr.res_rsv_ruimte_omschrijving,
rr.res_rsv_ruimte_opmerking,
rr.res_rsv_ruimte_bezoekers,
rr.res_status_fo_key,
rr.res_status_bo_key,
ra.res_rsv_artikel_levering,
TO_CHAR(ra.res_rsv_artikel_levering, 'DD-MM-YYYY') datum,
TO_CHAR(ra.res_rsv_artikel_levering, 'HH24:MI') tijd,
ra.res_rsv_artikel_aantal aantal,
a.res_artikel_key,
a.res_artikel_nr artikelnr,
a.res_artikel_omschrijving artikeloms,
d.ins_discipline_key,
d.ins_discipline_omschrijving catalogus,
ra.res_rsv_artikel_prijs, a.res_artikel_prijs,
a.res_artikel_prijs eenheidsprijs,
res.getartikelprijs(ra.res_rsv_artikel_key) totaalprijs,
c.prs_perslid_naam contact_naam,
c.prs_perslid_tussenvoegsel contact_tussenvoegsel,
c.prs_perslid_voorletters contact_voorletters,
c.prs_perslid_voornaam contact_voornaam,
DECODE(c.prs_perslid_geslacht,0,'V',1,'M', '') contact_geslacht,
c.prs_perslid_email contact_email,
c.prs_perslid_telefoonnr contact_telefoonnr,
c.prs_perslid_mobiel contact_mobiel,
h.prs_perslid_naam host_naam,
h.prs_perslid_tussenvoegsel host_tussenvoegsel,
h.prs_perslid_voorletters host_voorletters,
h.prs_perslid_voornaam host_voornaam,
DECODE(h.prs_perslid_geslacht,0,'V',1,'M', '') host_geslacht,
h.prs_perslid_email host_email,
h.prs_perslid_telefoonnr host_telefoonnr,
h.prs_perslid_mobiel host_mobiel,
k.prs_kostenplaats_nr,
ks.prs_kostensoort_oms
FROM res_rsv_artikel ra,
res_artikel a,
res_discipline d,
res_rsv_ruimte rr,
res_ruimte_opstelling ro,
res_opstelling op,
res_ruimte r,
alg_ruimte ar,
alg_verdieping v,
alg_gebouw g,
alg_locatie l,
prs_perslid c,
prs_kostenplaats k,
prs_kostensoort ks,
prs_perslid h
WHERE rr.res_rsv_ruimte_verwijder IS NULL
AND rr.res_rsv_ruimte_van >= to_date('01-' || to_char(sysdate - to_char(sysdate, 'DD') - 1, 'MM-YYYY'), 'DD-MM-YYYY')
AND rr.res_rsv_ruimte_van < to_date('01-' || to_char(sysdate, 'MM-YYYY'), 'DD-MM-YYYY')
AND a.res_artikel_key = ra.res_artikel_key
AND d.ins_discipline_key = a.res_discipline_key
AND d.ins_discipline_min_level = 2
AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key(+)
AND ro.res_ruimte_key = r.res_ruimte_key (+)
AND ro.res_opstelling_key = op.res_opstelling_key (+)
AND rr.alg_ruimte_key = ar.alg_ruimte_key (+)
AND ar.alg_verdieping_key = v.alg_verdieping_key (+)
AND v.alg_gebouw_key = g.alg_gebouw_key (+)
AND g.alg_locatie_key = l.alg_locatie_key (+)
AND rr.res_rsv_ruimte_contact_key = c.prs_perslid_key
AND k.prs_kostenplaats_key = rr.prs_kostenplaats_key
AND d.prs_kostensoort_key = ks.prs_kostensoort_key (+)
AND rr.res_rsv_ruimte_host_key = h.prs_perslid_key
AND rr.res_rsv_ruimte_dirtlevel = 0;
-- Velden catering-regels voor intern doorbelasten (DBS) van de vorige maand, die definitief zijn (gemaakt).
-- 1e regel bij catering
-- 1: kostensoort bij de catalogus, posities 1-5
-- 2: kostenplaats bij de reservering van 4 posities, posities 6-9
-- 3: debet: bedrag in centen, in 10 posities, posities 10-19
-- 4: credit: bedrag in centen, in 10 posities, posities 20-29, allemaal 0
-- 2e bijbehorende regel bij catering
-- 1: kostensoort 83211, posities 1-5
-- 2: kostenplaats 2020, 4 posities, posities 6-9
-- 3: debet: bedrag in centen, in 10 posities, posities 10-19, allemaal 0
-- 4: credit: bedrag in centen, in 10 posities, posities 20-29
CREATE OR REPLACE VIEW stph_v_export_catering_dbs
(result, result_order)
AS
SELECT LPAD(prs_kostensoort_oms,5,'0') ||
LPAD(prs_kostenplaats_nr,4,'0') ||
LPAD(TO_CHAR(ROUND(100 * totaalprijs,2)), 10, '0') ||
'0000000000'
, LPAD(res_reservering_key, 10, '0') || LPAD(res_rsv_ruimte_volgnr,5,'0') || '1'
FROM stph_v_res_catering_2_dbs
WHERE res_status_fo_key = 2
AND totaalprijs <> 0
UNION
SELECT '83211' ||
'2020' ||
'0000000000' ||
LPAD(TO_CHAR(ROUND(100 * totaalprijs,2)), 10, '0')
, LPAD(res_reservering_key, 10, '0') || LPAD(res_rsv_ruimte_volgnr,5,'0') || '2'
FROM stph_v_res_catering_2_dbs
WHERE res_status_fo_key = 2
AND totaalprijs <> 0;
--------------------------------------------------
-- DBS3: Interne bestellingen export
-- Een interne bestelopdracht gaat naar "interne" relatiebeheer "Centraal Magazijn", dit is prs_bedrijf_key = 422
CREATE OR REPLACE VIEW stph_v_bes_intern_2_dbs
( bes_bestelopdr_key,
bes_bestelopdr_item_posnr,
prs_kostensoort_oms,
prs_kostensoort_tegenboeking,
prs_kostenplaats_nr,
bes_bestelopdr_item_aantalontv,
bes_bestelopdr_item_brutoprijs,
bes_srtdeel_btw
)
AS
SELECT
boi.bes_bestelopdr_key,
boi.bes_bestelopdr_item_posnr,
ks.prs_kostensoort_oms,
ks.prs_kostensoort_refcode,
kp.prs_kostenplaats_nr,
boi.bes_bestelopdr_item_aantalontv,
boi.bes_bestelopdr_item_brutoprijs,
sd.bes_srtdeel_btw
FROM bes_bestelopdr bo,
prs_bedrijf b,
bes_bestelling bes,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
prs_kostenplaats kp,
bes_srtdeel sd,
bes_srtgroep sg,
bes_discipline d,
prs_kostensoort ks
WHERE b.prs_bedrijf_key = 422
AND b.prs_bedrijf_key = bo.prs_bedrijf_key
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes.bes_bestelling_key = bi.bes_bestelling_key
AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key
AND sd.bes_srtdeel_key = bi.bes_srtdeel_key
AND sg.BES_SRTGROEP_KEY = sd. BES_SRTGROEP_KEY
AND d.ins_discipline_key = sg.ins_discipline_key
AND ks.prs_kostensoort_key = d.prs_kostensoort_key
AND bo.bes_bestelopdr_status = 6;
-- Velden interne bestelopdracht-regels voor intern doorbelasten (DBS), die geleverd zijn geadministreerd.
-- 1e regel bij interne bestelregel.
-- 1: kostensoort bij de catalogus, posities 1-5
-- 2: kostenplaats bij de bestelling van 4 posities, posities 6-9
-- 3: debet: bedrag in centen, in 10 posities, posities 10-19
-- 4: credit: bedrag in centen, in 10 posities, posities 20-29, allemaal 0
-- 2e bijbehorende regel bij bestelregel
-- 1: kostensoort_tegenboeking die hoort bij kostensoort uit 1e regel, posities 1-5
-- 2: kostenplaats 0000, 4 posities, posities 6-9
-- 3: debet: bedrag in centen, in 10 posities, posities 10-19, allemaal 0
-- 4: credit: bedrag in centen, in 10 posities, posities 20-29
CREATE OR REPLACE VIEW stph_v_export_intern_bes_dbs
(result, result_order)
AS
SELECT LPAD(prs_kostensoort_oms,5,'0') ||
LPAD(prs_kostenplaats_nr,4,'0') ||
LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * (1 + 0.01 * bes_srtdeel_btw) * bes_bestelopdr_item_brutoprijs,2)), 10, '0') ||
'0000000000'
, LPAD(bes_bestelopdr_key, 10, '0') || LPAD(bes_bestelopdr_item_posnr,5,'0') || '1'
FROM stph_v_bes_intern_2_dbs
WHERE bes_bestelopdr_item_brutoprijs <> 0
UNION
SELECT LPAD(prs_kostensoort_tegenboeking,5,'0') ||
'0000' ||
'0000000000' ||
LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * (1 + 0.01 * bes_srtdeel_btw) * bes_bestelopdr_item_brutoprijs,2)), 10, '0')
, LPAD(bes_bestelopdr_key, 10, '0') || LPAD(bes_bestelopdr_item_posnr,5,'0') || '2'
FROM stph_v_bes_intern_2_dbs
WHERE bes_bestelopdr_item_brutoprijs <> 0;
CREATE OR REPLACE PROCEDURE stph_export_intern_bes_dbs (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
-- In cursor cbesopdr alle bestelopdrachten die worden geexporteerd...
CURSOR cbesopdracht
IS
SELECT DISTINCT bes_bestelopdr_key
FROM stph_v_bes_intern_2_dbs;
BEGIN
-- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT...
FOR cbesopdr IN cbesopdracht
LOOP
-- De bestelopdracht op verwerkt zetten
bes.setbestelopdrstatus (cbesopdr.bes_bestelopdr_key, 7, NULL);
END LOOP;
END;
/
BEGIN fac.registercustversion('STPH', 1); END;
/
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
show errors;
commit;
spool off;