STPH#30489: Implementatie STPH Initieel
svn path=/Customer/trunk/; revision=23405
This commit is contained in:
842
STPH/stph.sql
Normal file
842
STPH/stph.sql
Normal 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;
|
||||
Reference in New Issue
Block a user