Files
Customer/BSSC/bssc.sql
Maarten van der Heide 600f388bcf BSSC#64707 Persoonsgegevens incl. aanmaakdatum
svn path=/Customer/trunk/; revision=48744
2020-11-06 12:24:14 +00:00

4159 lines
252 KiB
MySQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific db-configuration for BSSC.
DEFINE thisfile = 'BSSC.SQL'
DEFINE dbuser = '^BSSC'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE VIEW bssc_v_rap_import_log
(
fclt_f_applicatie,
datum,
fclt_f_status,
omschrijving,
hint
)
AS
SELECT COALESCE (fac_import_app_code, imp_log_applicatie),
TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi'),
imp_log_status,
imp_log_omschrijving,
imp_log_hint
FROM imp_log il1, fac_import fi1, fac_import_app fia1
WHERE il1.fac_import_key = fi1.fac_import_key(+)
AND fi1.fac_import_app_key = fia1.fac_import_app_key(+)
AND NOT EXISTS
(SELECT 1
FROM imp_log il2, fac_import fi2
WHERE il2.fac_import_key = fi2.fac_import_key
AND fi2.fac_import_app_key = fi1.fac_import_app_key
AND il2.fac_import_key > il1.fac_import_key);
CREATE OR REPLACE PROCEDURE bssc_import_perslid (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000) := '-';
v_errorhint VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errorhint := 'Generieke import ' || TO_CHAR (p_import_key);
-- Afdelingscode-kolom hard op 'XxX' indien leeg (want verplicht)!
UPDATE fac_imp_file
SET fac_imp_file_line =
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 2))
|| 'XxX'
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 3))
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1
AND SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 2)
+ 1, INSTR (fac_imp_file_line, ';', 1, 3)
- INSTR (fac_imp_file_line, ';', 1, 2)
- 1) IS NULL;
COMMIT;
-- Functie-kolom negeren en hard op 'Medewerker' (want verplicht)!
UPDATE fac_imp_file i
SET fac_imp_file_line =
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 10))
|| 'Medewerker'
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 11))
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
COMMIT;
-- De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
prs.import_perslid (
p_import_key,
'0;0;0;0;0;0;3;4;5;6;'
|| '0;0;0;0;10;7;8;9;0;0;'
|| '11;1;2;0;0;0;12;13;14;15;'
|| '16;17;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
'Loginnaam;Wachtwoord;Afdelingscode;Achternaam;Tussenvoegsel;Voornaam;Telefoon;Mobiel;Email;Geslacht;Functie;Taal;SSC FOBO;SSC Digireceptiemedewerker;SSC Huurderadministrator;SSC Bezoekersparkeerplaats;SSC Etage 4%');
-- Klantspecifieke aanpassingen.
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ') ';
fac.imp_writelog (p_import_key, 'E', v_errormsg || v_errorhint,
'Inleesproces personen afgebroken!');
END bssc_import_perslid;
/
CREATE OR REPLACE PROCEDURE bssc_update_perslid (p_import_key IN NUMBER)
AS
-- Verwijderen personen niet in import voor afdelingen wel in import!
CURSOR c_del
IS
SELECT p.prs_perslid_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
AND p.prs_perslid_oslogin2 IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key
AND EXISTS
(SELECT 1
FROM fac_imp_perslid i
WHERE UPPER (i.prs_afdeling_naam) = a.prs_afdeling_upper)
AND NOT EXISTS
(SELECT 1
FROM fac_imp_perslid i
WHERE UPPER (i.prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin))
ORDER BY 1;
-- Bijwerken werkplek van personen naar '_' (als nog geen werkplek)!
CURSOR c_wp
IS
SELECT p.prs_perslid_key
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
AND NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_perslid_key = p.prs_perslid_key)
ORDER BY 1;
-- Bijwerken language van personen naar 'EN' (volgens importbestand)!
CURSOR c_lang
IS
SELECT p.prs_perslid_key, DECODE (i.prs_kenmerk1, 'EN', 'EN', 'NL') lang
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
ORDER BY 1;
-- Bijwerken autorisatiegroepen van personen (volgens importbestand)!
CURSOR c_rol (
p_ssc_fobo_key IN NUMBER,
p_ssc_dmedew_key IN NUMBER,
p_ssc_hadmin_key IN NUMBER,
p_ssc_bezprk_key IN NUMBER,
p_ssc_etage4_key IN NUMBER)
IS
SELECT p.prs_perslid_key, DECODE (UPPER (i.prs_kenmerk2), 'J', 1, 'Y', 1, 0) aanuit, p_ssc_fobo_key fac_groep_key
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
UNION ALL
SELECT p.prs_perslid_key, DECODE (UPPER (i.prs_kenmerk3), 'J', 1, 'Y', 1, 0) aanuit, p_ssc_dmedew_key fac_groep_key
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
UNION ALL
SELECT p.prs_perslid_key, DECODE (UPPER (i.prs_kenmerk4), 'J', 1, 'Y', 1, 0) aanuit, p_ssc_hadmin_key fac_groep_key
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
UNION ALL
SELECT p.prs_perslid_key, DECODE (UPPER (i.prs_kenmerk5), 'J', 1, 'Y', 1, 0) aanuit, p_ssc_bezprk_key fac_groep_key
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
UNION ALL
SELECT p.prs_perslid_key, DECODE (UPPER (i.prs_kenmerk6), 'J', 1, 'Y', 1, 0) aanuit, p_ssc_etage4_key fac_groep_key
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
UNION ALL -- Afnemen _Default
SELECT p.prs_perslid_key, 0 aanuit, 1 fac_groep_key -- _Default
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
UNION ALL -- Toewijzen SSC FE
SELECT p.prs_perslid_key, 1 aanuit, 321 fac_groep_key -- SSC FE
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
ORDER BY 1, 3;
-- Toekennen VLAN-autorisatiegroep (volgens eigen tabel met key=481)!
CURSOR c_vlan
IS
SELECT p.prs_perslid_key, fac.safe_to_number (ud.fac_usrdata_upper) fac_groep_key
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i, (SELECT * FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 481) ud
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND a.prs_afdeling_upper = UPPER (ud.fac_usrdata_omschr)
AND EXISTS (SELECT 1 FROM fac_groep WHERE fac_groep_key = fac.safe_to_number (ud.fac_usrdata_code))
ORDER BY 1;
c_ruimte_key NUMBER := 2204; -- Fictieve ruimte op SSCH-locatie
c_ssc_fobo_key NUMBER := 341; -- SSC FOBO
c_ssc_dmedew_key NUMBER := 361; -- SSC Digireceptiemedewerker
c_ssc_hadmin_key NUMBER := 362; -- SSC Huurderadministrator
c_ssc_bezprk_key NUMBER := 1721; -- SSC Bezoekersparkeerplaats
c_ssc_etage4_key NUMBER := 1481; -- SSC Etage 4
v_bedrijf_key NUMBER (10) := -1;
v_afdeling_naam VARCHAR2 (15) := '';
BEGIN
-- Als import door Huurderadministrator, dan Afdelingscode-kolom negeren en hard op Afdeling-1 van Huurderadministrator!
SELECT ab.prs_bedrijf_key, a.prs_afdeling_naam
INTO v_bedrijf_key, v_afdeling_naam
FROM fac_import i, prs_v_aanwezigperslid p, prs_afdeling a, prs_v_afdeling_boom ab
WHERE i.fac_import_key = p_import_key
AND i.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_key = ab.prs_afdeling_key;
IF v_bedrijf_key = 2442 -- Huurders SSC-bedrijf!
THEN -- Import door Huurderadministrator!
UPDATE fac_imp_perslid
SET prs_afdeling_naam = v_afdeling_naam;
ELSE -- Import door andere administrator!
UPDATE fac_imp_perslid
SET prs_afdeling_naam = NULL
WHERE prs_afdeling_naam = 'XxX';
END IF;
COMMIT;
-- Generieke update.
prs.update_perslid (p_import_key, 'LOGIN', NULL);
-- Verwijderen personen niet in import voor afdelingen wel in import!
FOR rec IN c_del
LOOP
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END LOOP;
COMMIT;
-- Toekennen fictieve werkplek op SSCH-locatie (voor wie daar nog niet een
-- werkplek heeft)!
-- Bijwerken werkplek van personen naar '_' (als nog geen werkplek)!
FOR rec IN c_wp
LOOP
prs.movetoruimte (rec.prs_perslid_key, c_ruimte_key, NULL);
END LOOP;
COMMIT;
-- Bijwerken language van personen naar 'EN' (volgens importbestand)!
FOR rec IN c_lang
LOOP
UPDATE prs_perslid
SET prs_perslid_lang = rec.lang
WHERE prs_perslid_key = rec.prs_perslid_key;
END LOOP;
COMMIT;
-- Bijwerken autorisatiegroepen van personen (volgens importbestand)!
FOR rec IN c_rol (c_ssc_fobo_key, c_ssc_dmedew_key, c_ssc_hadmin_key, c_ssc_bezprk_key, c_ssc_etage4_key)
LOOP
IF rec.aanuit = 1
THEN
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT rec.fac_groep_key, rec.prs_perslid_key
FROM DUAL
WHERE NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = rec.fac_groep_key
AND prs_perslid_key = rec.prs_perslid_key);
ELSE
DELETE FROM fac_gebruikersgroep
WHERE fac_groep_key = rec.fac_groep_key
AND prs_perslid_key = rec.prs_perslid_key;
END IF;
END LOOP;
-- Toekennen VLAN-autorisatiegroep (volgens eigen tabel met key=481)!
-- NB. VLAN-autorisatiegroep wordt nooit automatisch afgenomen!
FOR rec IN c_vlan
LOOP
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT rec.fac_groep_key, rec.prs_perslid_key
FROM DUAL
WHERE NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = rec.fac_groep_key
AND prs_perslid_key = rec.prs_perslid_key);
END LOOP;
END bssc_update_perslid;
/
CREATE OR REPLACE VIEW bssc_v_autorisatiegroepen
(
fac_groep_key,
fac_groep_oms
)
AS
SELECT fac_groep_key, fac_groep_omschrijving
FROM fac_groep
WHERE fac_groep_omschrijving LIKE 'SSC%';
CREATE OR REPLACE VIEW bssc_v_externe_relaties
(
prs_bedrijf_key,
prs_bedrijf_naam,
prs_bedrijf_verwijder
)
AS
SELECT prs_bedrijf_key, prs_bedrijf_naam || ' [' || prs_overeenkomst_nr || ']', prs_bedrijf_verwijder
FROM prs_bedrijf
WHERE prs_bedrijf_intern IS NULL;
CREATE OR REPLACE VIEW bssc_v_rap_ssc_cat_looplijst
(
resnr,
activiteit,
--locatie,
ruimte,
datum,
van,
tot,
reslev,
organisatie,
gastheer,
kostenplaats,
--costcenter,
omschrijving,
aantal,
artikelnr,
artikeloms,
horeca_details,
deelnemers
)
AS
SELECT x.res_reservering_key || '/' || x.res_rsv_ruimte_volgnr || DECODE (res_rsv_ruimte_dirtlevel, 0, '', ' [ongeldig]') resnr,
x.res_activiteit_omschrijving activiteit,
--NULL locatie,
COALESCE (rr.res_ruimte_nr, rg.alg_ruimte_omschrijving) ruimte,
x.res_rsv_ruimte_van,
x.res_rsv_ruimte_van,
x.res_rsv_ruimte_tot,
x.reslev,
(SELECT prs_afdeling_omschrijving
FROM prs_afdeling
WHERE prs_afdeling_key = x.prs_afdeling_key)
organisatie,
x.prs_perslid_naam_full gastheer,
x.prs_kostenplaats_omschrijving kostenplaats,
--(SELECT MAX (kw.res_kenmerkreservering_waarde)
-- FROM res_kenmerkwaarde kw, res_kenmerk rk
-- WHERE kw.res_rsv_ruimte_key = x.res_rsv_ruimte_key
-- AND kw.res_kenmerkwaarde_verwijder IS NULL
-- AND kw.res_kenmerk_key = rk.res_kenmerk_key
-- AND rk.res_srtkenmerk_key = 1)
-- costcenter,
x.res_rsv_ruimte_omschrijving omschrijving,
x.res_rsv_artikel_aantal,
x.res_artikel_nr,
x.res_artikel_omschrijving,
(select res_kenmerkreservering_waarde
from res_kenmerkwaarde rkw, res_kenmerk k
where rkw.res_kenmerk_key = k.res_kenmerk_key
and k.res_srtkenmerk_key = 142
and x.res_rsv_ruimte_key = rkw.res_rsv_ruimte_key) horeca_details,
x.res_rsv_ruimte_bezoekers
FROM (SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
act.res_activiteit_omschrijving,
COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key) res_ruimte_key,
COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) alg_ruimte_key,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
rra.res_rsv_artikel_levering reslev,
COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) prs_afdeling_key,
pf.prs_perslid_naam_full,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_omschrijving,
kl.prs_kenmerklink_waarde,
rrr.res_rsv_ruimte_omschrijving,
rra.res_rsv_artikel_aantal,
ra.res_artikel_nr,
ra.res_artikel_omschrijving,
rrr.res_rsv_ruimte_bezoekers,
rrr.res_rsv_ruimte_dirtlevel
FROM res_rsv_ruimte rrr,
res_activiteit act,
res_ruimte_opstelling rro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar1,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NOT NULL
GROUP BY res_ruimte_key) rar2,
alg_v_allonroerendgoed aog,
prs_v_perslid_fullnames_all pf,
prs_kostenplaats kp,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_kenmerklink kl,
res_v_aanwezigrsv_artikel rra,
res_artikel ra
WHERE rrr.res_activiteit_key = act.res_activiteit_key
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key
AND aog.alg_locatie_key = 21 -- SSC
AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) = kl.prs_link_key(+)
AND kl.prs_kenmerklink_niveau(+) = 'A'
AND kl.prs_kenmerk_key(+) = 1001 -- Debiteurnummer
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rra.res_rsv_artikel_dirtlevel = 0
AND rrr.res_status_fo_key != 4 -- vervallen
AND rra.res_rsv_artikel_levering > TO_DATE ('20171101', 'yyyymmdd')
AND rra.res_rsv_artikel_levering < TRUNC (SYSDATE, 'IW') + 21) x
LEFT JOIN res_ruimte rr
ON x.res_ruimte_key = rr.res_ruimte_key
LEFT JOIN alg_v_ruimte_gegevens_all rg
ON x.alg_ruimte_key = rg.alg_ruimte_key;
CREATE OR REPLACE VIEW bssc_v_rap_ssc_cat_factlijst
(
hide_f_sortering,
resnr,
datum,
ruimte,
personen,
organisatie,
gastheer,
kostenplaats,
--costcenter,
omschrijving,
horeca_details,
product,
btw,
aantal,
prijs,
totaal
)
AS -- Catering gesorteerd per datum/res_id
SELECT TO_CHAR (x.res_rsv_artikel_levering, 'yyyymmdd') || TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) sortering,
TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) res_id,
x.res_rsv_artikel_levering datum,
x.ruimte,
x.res_rsv_ruimte_bezoekers personen,
x.prs_afdeling_omschrijving organisatie,
x.prs_perslid_naam_full gastheer,
x.prs_kostenplaats_omschrijving kostenplaats,
--(SELECT MAX (kw.res_kenmerkreservering_waarde)
-- FROM res_kenmerkwaarde kw, res_kenmerk rk
-- WHERE kw.res_rsv_ruimte_key = res_rsv_ruimte_key
-- AND kw.res_kenmerkwaarde_verwijder IS NULL
-- AND kw.res_kenmerk_key = rk.res_kenmerk_key
-- AND rk.res_srtkenmerk_key = 1)
-- costcenter,
x.res_rsv_ruimte_omschrijving omschrijving,
kw.res_kenmerkreservering_waarde horeca_details,
x.artikel product,
COALESCE (x.verw_btw, x.btw) btw,
x.aantal,
DECODE (x.verw_prijs,
NULL, x.prijs,
x.verw_prijs / DECODE (COALESCE (x.aantal, 0), 0, 1, x.aantal))
prijs,
COALESCE (x.verw_prijs, x.aantal * x.prijs) totaal
FROM (SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rra.res_rsv_artikel_levering,
COALESCE (rr.res_ruimte_nr, aog.alg_plaatsaanduiding) ruimte,
rrr.res_rsv_ruimte_bezoekers,
a.prs_afdeling_omschrijving,
pf.prs_perslid_naam_full,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_omschrijving,
rrr.res_rsv_ruimte_omschrijving,
ra.res_artikel_omschrijving artikel,
rra.res_rsv_artikel_btw verw_btw,
ra.res_artikel_btw btw,
rra.res_rsv_artikel_aantal aantal,
rra.res_rsv_artikel_prijs verw_prijs,
ra.res_artikel_prijs prijs
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar1,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NOT NULL
GROUP BY res_ruimte_key) rar2,
res_v_aanwezigruimte rr,
alg_v_allonrgoed_gegevens aog,
prs_perslid p,
prs_afdeling a,
prs_v_perslid_fullnames_all pf,
prs_kostenplaats kp,
res_v_aanwezigrsv_artikel rra,
res_artikel ra,
res_discipline rd,
--prs_kostensoort ks,
res_disc_params dp,
prs_bedrijf b
WHERE rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_status_fo_key = 2 -- BSSC#61120: Alleen FO-status=Definitief!
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
AND rro.res_ruimte_key = rr.res_ruimte_key(+)
AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key
AND aog.alg_locatie_key = 21 -- SSC
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_rsv_artikel_dirtlevel = 0
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = rd.ins_discipline_key
--AND rd.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND rd.ins_discipline_key = dp.res_ins_discipline_key
AND dp.prs_bedrijf_key = b.prs_bedrijf_key
--AND rra.res_rsv_artikel_verwerkt IS NULL
AND rra.res_rsv_artikel_levering > TO_DATE ('20171101', 'yyyymmdd')
AND rra.res_rsv_artikel_levering < SYSDATE) x
LEFT JOIN
res_v_aanwezigkenmerkwaarde kw
ON x.res_rsv_ruimte_key = kw.res_rsv_ruimte_key
AND EXISTS
(SELECT 1
FROM res_kenmerk
WHERE res_kenmerk_verwijder IS NULL
AND res_srtkenmerk_key = 142 -- Horeca details
AND res_kenmerk_key = kw.res_kenmerk_key);
CREATE OR REPLACE VIEW bssc_v_rap_parkres_bez
(
afspraak_key, -- appointment_id
bezoekers_key, -- visitor_id
afspraak_datum,
afspraak_eind,
afspraak_oms,
bez_achternaam,
bez_mail,
bez_telnr,
bez_kenteken,
bez_bedrijf,
cp_naam,
cp_mail,
cp_telnr,
cp_bedrijf,
bez_voor,
bez_actie,
laatste_mut
)
AS
SELECT t.fac_tracking_refkey,
x.bez_bezoekers_key,
x.bez_afspraak_datum,
x.bez_afspraak_eind,
x.bez_afspraak_opmerking,
x.bez_afspraak_naam,
COALESCE (x.bez_bezoekers_email, email.bez_kenmerkwaarde_waarde) bez_mail,
COALESCE (x.bez_bezoekers_telefoon, telnr.bez_kenmerkwaarde_waarde) bez_telnr,
COALESCE (x.bez_bezoekers_kenteken, kntkn.bez_kenmerkwaarde_waarde) bez_kenteken,
x.bez_afspraak_bedrijf,
x.prs_perslid_naam_full,
x.prs_perslid_email,
COALESCE (x.prs_perslid_telefoonnr, x.prs_perslid_mobiel) cp_telnr,
x.prs_afdeling_omschrijving,
x.bez_afspraak_gastheer,
x.bez_actie_omschrijving,
t.tracking_datum
FROM (SELECT a.bez_afspraak_key,
b.bez_bezoekers_key,
a.bez_afspraak_datum,
a.bez_afspraak_eind,
a.bez_afspraak_opmerking,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf,
b.bez_bezoekers_email,
b.bez_bezoekers_telefoon,
b.bez_bezoekers_kenteken,
cpf.prs_perslid_naam_full,
cp.prs_perslid_email,
cp.prs_perslid_telefoonnr,
cp.prs_perslid_mobiel,
afd.prs_afdeling_omschrijving,
a.bez_afspraak_gastheer,
ba.bez_actie_omschrijving
FROM bez_afspraak a,
bez_bezoekers b,
prs_perslid cp,
prs_v_perslid_fullnames cpf,
prs_v_afdeling_boom ab,
prs_afdeling afd,
bez_actie ba
WHERE a.bez_afspraak_datum > TRUNC (SYSDATE)
AND a.bez_afspraak_key = b.bez_afspraak_key
AND a.bez_afspraak_contact_key = cp.prs_perslid_key
AND cp.prs_perslid_key = cpf.prs_perslid_key
AND cp.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = afd.prs_afdeling_key
AND a.bez_actie_key = ba.bez_actie_key(+)
AND EXISTS (SELECT 1
FROM res_rsv_deel
WHERE bez_bezoekers_key = b.bez_bezoekers_key)) x
LEFT JOIN bez_kenmerkwaarde email
ON x.bez_bezoekers_key = email.bez_bezoekers_key
AND email.bez_kenmerkwaarde_verwijder IS NULL
AND email.bez_kenmerk_key = 1000 -- E-mail adres
LEFT JOIN bez_kenmerkwaarde telnr
ON x.bez_bezoekers_key = telnr.bez_bezoekers_key
AND telnr.bez_kenmerkwaarde_verwijder IS NULL
AND telnr.bez_kenmerk_key = 1060 -- Telefoonnummer
LEFT JOIN bez_kenmerkwaarde kntkn
ON x.bez_bezoekers_key = kntkn.bez_bezoekers_key
AND kntkn.bez_kenmerkwaarde_verwijder IS NULL
AND kntkn.bez_kenmerk_key = 1100 -- Kenteken
LEFT JOIN ( SELECT fac_tracking_refkey, MAX (fac_tracking_datum) tracking_datum
FROM fac_tracking
WHERE fac_srtnotificatie_key IN (26, 27) -- BEZMUT/BEZUPD
GROUP BY fac_tracking_refkey) t
ON x.bez_afspraak_key = t.fac_tracking_refkey;
-- BSSC#63109: Inzage persoonsgegevens tbv. Office App!
CREATE OR REPLACE VIEW bssc_v_rap_prs_tbv_app
(
id, -- prs_perslid_key
email,
lastname,
firstname,
middlename,
company
)
AS
SELECT p.prs_perslid_key, p.prs_perslid_email, p.prs_perslid_naam, p.prs_perslid_voornaam, p.prs_perslid_tussenvoegsel, a.prs_afdeling_omschrijving
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab, prs_afdeling a
WHERE p.prs_perslid_key > 2000 -- Uitsluiten Gast, Facilitor, etc.
AND p.prs_perslid_apikey IS NULL -- Uitsluiten API-users
AND p.prs_perslid_email IS NOT NULL -- Alleen personen met e-mail
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = a.prs_afdeling_key;
-- BSSC#64707: Persoonsgegevens incl. aanmaakdatum tbv. plannen rondleidingen!
CREATE OR REPLACE VIEW bssc_v_rap_prs_aanmaak
(
id, -- prs_perslid_key
aanmaakdatum,
naam1,
naam2,
organisatie,
email
)
AS
SELECT p.prs_perslid_key, p.prs_perslid_aanmaak, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, a.prs_afdeling_omschrijving, p.prs_perslid_email
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab, prs_afdeling a, prs_v_perslid_fullnames pf
WHERE p.prs_perslid_key > 2000 -- Uitsluiten Gast, Facilitor, etc.
AND p.prs_perslid_apikey IS NULL -- Uitsluiten API-users
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = a.prs_afdeling_key
AND p.prs_perslid_key = pf.prs_perslid_key;
-- BSSC#55692: Facturatie verhuur (M2 en meer)!
CREATE OR REPLACE VIEW bssc_v_fact_actual
AS
WITH lopendeperiode AS (SELECT COALESCE (MAX (TO_CHAR (LAST_DAY (fac.safe_to_date (fin_verkoopfactuur_maand, 'yyyymm')) + 1, 'yyyymm')), '202002') maand -- TODO
FROM fin_verkoopfactuur)
SELECT '*CONCEPT*' fin_verkoopfactuur_id, -- Huur!
'CHV' || TRIM (x.cnt_contract_nummer) po_nr, -- Regulier
'CHV' || TRIM (x.cnt_contract_nummer) cnt_contract_nummer, -- PO
'0000' || TO_CHAR (x.ins_discipline_key) sortering, -- Sorteren op (eigen) discipline_key; 8 posities!
'CHV - ' || TRIM (SUBSTR (tar.fac_usrdata_omschr, 1, INSTR (tar.fac_usrdata_omschr, ' ') - 1)) regel, -- Huur
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum, TO_CHAR (SYSDATE + 30, 'dd-mm-yyyy') vervaldatum,
x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_versie, x.lv,
--x.cnt_contract_korting, -- Korting %
x.prs_bedrijf_key, x.prs_bedrijf_naam prs_debiteur_naam, TRIM (x.prs_overeenkomst_nr) debiteur_nr,
btwnr.prs_kenmerklink_waarde btw_nr,
--(SELECT MIN (TRIM (prs_contactpersoon_voorletters || ' ' || TRIM (prs_contactpersoon_tussenv || ' ' || prs_contactpersoon_naam)))
-- FROM prs_contactpersoon
-- WHERE prs_contactpersoon_verwijder IS NULL
-- AND prs_contactpersoon_titel = '*' -- Contactpersoon op facturen
-- AND prs_bedrijf_key = x.prs_bedrijf_key)
NULL contactpersoon,
x.adres, x.postcode, x.plaats, x.land,
x.prs_kostenplaats_key, x.prs_kostenplaats_nr, x.prs_kostenplaats_omschrijving, x.prs_kostenplaatsgrp_oms,
--x.prs_kostensoort_oms, x.prs_kostensoort_opmerking, x.prs_kostensoort_refcode, x.prs_kostensoortgrp_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'V', DECODE (verv_toeslag.fac_usrdata_key, 1001, 'H', '0')) fin_btwtabelwaarde_code,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'Verlegd', DECODE (verv_toeslag.fac_usrdata_key, 1001, 'Hoog', 'Nul')) fin_btwtabelwaarde_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, DECODE (verv_toeslag.fac_usrdata_key, 1001, 21, 0)) fin_btwtabelwaarde_perc,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 1, TO_NUMBER (NULL)) fin_btwtabelwaarde_verlegd,
x.maand,
TO_CHAR (TO_DATE (x.maand, 'yyyymm'), 'dd-mm-yyyy') mndbegin,
TO_CHAR (LAST_DAY (TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') mndeinde,
TO_CHAR (GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') dagbegin,
TO_CHAR (LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))), 'dd-mm-yyyy') dageinde,
LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1 mndbes, -- Beschikbaar
LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1 mndbez, -- Bezet
rxo.alg_ruimte_opp_alt1 aantal, -- VVO
tar.fac_usrdata_prijs tarief, -- Jaartarief per m2
vvo_toeslag.fac_usrdata_prijs vvo_toeslag, -- VVO toeslagperc.
--korting_pct.fac_usrdata_prijs korting_pct, -- Kortingsperc.
verv_toeslag.fac_usrdata_prijs verv_toeslag, -- Vervangend toeslagperc.
fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde) korting_pm2, -- Korting per m2 Huur
pa.alg_onroerendgoed_type,
pa.alg_onroerendgoed_keys,
pa.alg_plaatsaanduiding,
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
COALESCE (rxo.alg_ruimte_opp_alt1, 0) *
COALESCE (verv_toeslag.fac_usrdata_prijs, 0) *
COALESCE (vvo_toeslag.fac_usrdata_prijs, 0) *
--(COALESCE (tar.fac_usrdata_prijs, 0) - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
DECODE (tar.fac_usrdata_prijs, NULL, 0, tar.fac_usrdata_prijs - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
--korting_pct.fac_usrdata_prijs *
1/12, 2)
mndnet, -- Netto maandbedrag (incl. kortingspercentage)
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
COALESCE (rxo.alg_ruimte_opp_alt1, 0) *
COALESCE (verv_toeslag.fac_usrdata_prijs, 0) *
COALESCE (vvo_toeslag.fac_usrdata_prijs, 0) *
--(COALESCE (tar.fac_usrdata_prijs, 0) - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
DECODE (tar.fac_usrdata_prijs, NULL, 0, tar.fac_usrdata_prijs - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
--korting_pct.fac_usrdata_prijs *
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, DECODE (verv_toeslag.fac_usrdata_key, 1001, 0.21, 0)) *
1/12, 2)
mndbtw, -- BTW maandbedrag
--TRIM (DECODE (biss_kc1.cnt_kenmerkcontract_waarde, '986', '8110', DECODE (biss_kc2.cnt_kenmerkcontract_waarde, '989', '8110', SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1)))) grtboekrek,
DECODE (verv_toeslag.fac_usrdata_key, 1001, SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1), '8110') grtboekrek,
TO_NUMBER (NULL) mld_melding_key, -- Correctiemelding-key
NULL mld_melding_omschrijving
FROM (SELECT c.ins_discipline_key,
c.cnt_contract_key,
c.cnt_contract_nummer_intern, c.cnt_contract_versie,
c.cnt_contract_nummer,
c.cnt_contract_looptijd_van lv, c.cnt_contract_looptijd_tot lt,
c.cnt_contract_korting,
b.prs_bedrijf_key, b.prs_bedrijf_naam, b.prs_overeenkomst_nr,
--0.21 btw,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_adres, b.prs_bedrijf_post_adres) adres,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_postcode, b.prs_bedrijf_post_postcode) postcode,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_plaats, b.prs_bedrijf_post_plaats) plaats,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_land, b.prs_bedrijf_post_land) land,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kpg.prs_kostenplaatsgrp_oms,
c.maand
FROM (SELECT lp.maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key = 2001 -- Huur CHV
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (TO_DATE (lp.maand || '01', 'yyyymmdd')) -- Van-datum < einde te factureren maand
AND c.cnt_contract_looptijd_tot > TO_DATE (lp.maand || '01', 'yyyymmdd') -- Tot-datum > begin te factureren maand
UNION ALL -- Soms 2 maanden factureren (of 1 maand achteraf?)!
SELECT TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key = 2001 -- Huur CHV
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND c.cnt_contract_aanmaak > ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) -- Na begin voorgaande maand aangemaakt!
AND TRUNC (c.cnt_contract_looptijd_van) BETWEEN ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) AND TO_DATE (lp.maand || '01', 'yyyymmdd') -- Van-datum in voorgaande maand!
AND NOT EXISTS -- Voorgaande maand nog niet gefactureerd!
(SELECT 1
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_maand = TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') -- Voorgaande maand!
AND fin_verkoopfactuur_xmlnode = 'contract'
AND fin_verkoopfactuur_refkey = c.cnt_contract_key)) c,
prs_bedrijf b,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)) x
LEFT JOIN prs_kenmerklink btwnr
ON x.prs_bedrijf_key = btwnr.prs_link_key
AND btwnr.prs_kenmerklink_verwijder IS NULL
AND btwnr.prs_kenmerk_key = -1 -- BTW-nummer (NL)
LEFT JOIN prs_kenmerklink btwvl
ON x.prs_bedrijf_key = btwvl.prs_link_key
AND btwvl.prs_kenmerklink_verwijder IS NULL
AND btwvl.prs_kenmerk_key = -1 -- BTW verlegd
LEFT JOIN cnt_kenmerkcontract vsov_kc
ON x.cnt_contract_key = vsov_kc.cnt_contract_key
AND vsov_kc.cnt_kenmerkcontract_verwijder IS NULL
AND vsov_kc.cnt_kenmerk_key = -1 -- VSOV
LEFT JOIN cnt_v_aanwezigcontract_plaats ccp
ON x.cnt_contract_key = ccp.cnt_contract_key
AND ccp.cnt_alg_plaats_code = 'R' -- Alleen Scope-ruimten!
LEFT JOIN alg_v_plaatsaanduiding_all pa
ON ccp.cnt_alg_plaats_key = pa.alg_onroerendgoed_keys
LEFT JOIN alg_v_aanwezigruimte rxo
ON ccp.cnt_alg_plaats_key = rxo.alg_ruimte_key
LEFT JOIN cnt_kenmerkcontract tt_kc
ON x.cnt_contract_key = tt_kc.cnt_contract_key
AND tt_kc.cnt_kenmerkcontract_verwijder IS NULL
AND tt_kc.cnt_kenmerk_key = 401 -- Tarieftabel
LEFT JOIN fac_v_aanwezigusrdata tt_ud
ON fac.safe_to_number (tt_kc.cnt_kenmerkcontract_waarde) = tt_ud.fac_usrdata_key
LEFT JOIN fac_v_aanwezigusrdata tar
ON fac.safe_to_number (tt_ud.fac_usrdata_code) = tar.fac_usrtab_key
AND SUBSTR (tar.fac_usrdata_code, INSTR (tar.fac_usrdata_code, '/') + 1, 4) = 'Huur' -- Huur-tarief
LEFT JOIN cnt_kenmerkcontract verv_toeslag_kc
ON x.cnt_contract_key = verv_toeslag_kc.cnt_contract_key
AND verv_toeslag_kc.cnt_kenmerkcontract_verwijder IS NULL
AND verv_toeslag_kc.cnt_kenmerk_key = 642 -- Vervangend toeslagperc.
LEFT JOIN fac_v_aanwezigusrdata verv_toeslag
ON fac.safe_to_number (verv_toeslag_kc.cnt_kenmerkcontract_waarde) = verv_toeslag.fac_usrdata_key
LEFT JOIN cnt_kenmerkcontract vvo_toeslag_kc
ON x.cnt_contract_key = vvo_toeslag_kc.cnt_contract_key
AND vvo_toeslag_kc.cnt_kenmerkcontract_verwijder IS NULL
AND vvo_toeslag_kc.cnt_kenmerk_key = 402 -- VVO toeslagperc.
LEFT JOIN fac_v_aanwezigusrdata vvo_toeslag
ON fac.safe_to_number (vvo_toeslag_kc.cnt_kenmerkcontract_waarde) = vvo_toeslag.fac_usrdata_key
--LEFT JOIN cnt_kenmerkcontract korting_pct_kc
-- ON x.cnt_contract_key = korting_pct_kc.cnt_contract_key
-- AND korting_pct_kc.cnt_kenmerkcontract_verwijder IS NULL
-- AND korting_pct_kc.cnt_kenmerk_key = 403 -- Kortingsperc.
--LEFT JOIN fac_v_aanwezigusrdata korting_pct
-- ON fac.safe_to_number (korting_pct_kc.cnt_kenmerkcontract_waarde) = korting_pct.fac_usrdata_key
LEFT JOIN cnt_kenmerkcontract korting_pm2
ON x.cnt_contract_key = korting_pm2.cnt_contract_key
AND korting_pm2.cnt_kenmerkcontract_verwijder IS NULL
AND korting_pm2.cnt_kenmerk_key = 404 -- Korting per m2
--LEFT JOIN cnt_kenmerkcontract biss_kc1
-- ON x.cnt_contract_key = biss_kc1.cnt_contract_key
-- AND biss_kc1.cnt_kenmerkcontract_verwijder IS NULL
-- AND biss_kc1.cnt_kenmerk_key = 645 -- Facilitaire kosten
--LEFT JOIN cnt_kenmerkcontract biss_kc2
-- ON x.cnt_contract_key = biss_kc2.cnt_contract_key
-- AND biss_kc2.cnt_kenmerkcontract_verwijder IS NULL
-- AND biss_kc2.cnt_kenmerk_key = 647 -- Servicekosten
UNION ALL -- M2 correctie!
SELECT '*CONCEPT*' fin_verkoopfactuur_id, -- Huur!
'CHV' || TRIM (x.cnt_contract_nummer) po_nr, -- Regulier
'CHV' || TRIM (x.cnt_contract_nummer) cnt_contract_nummer, -- PO
'0000' || TO_CHAR (x.ins_discipline_key) sortering, -- Sorteren op (eigen) discipline_key; 8 posities!
'CHV - ' || TRIM (SUBSTR (tar.fac_usrdata_omschr, 1, INSTR (tar.fac_usrdata_omschr, ' ') - 1)) regel, -- Huur
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum, TO_CHAR (SYSDATE + 30, 'dd-mm-yyyy') vervaldatum,
x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_versie, x.lv,
--x.cnt_contract_korting, -- Korting %
x.prs_bedrijf_key, x.prs_bedrijf_naam prs_debiteur_naam, TRIM (x.prs_overeenkomst_nr) debiteur_nr,
btwnr.prs_kenmerklink_waarde btw_nr,
--(SELECT MIN (TRIM (prs_contactpersoon_voorletters || ' ' || TRIM (prs_contactpersoon_tussenv || ' ' || prs_contactpersoon_naam)))
-- FROM prs_contactpersoon
-- WHERE prs_contactpersoon_verwijder IS NULL
-- AND prs_contactpersoon_titel = '*' -- Contactpersoon op facturen
-- AND prs_bedrijf_key = x.prs_bedrijf_key)
NULL contactpersoon,
x.adres, x.postcode, x.plaats, x.land,
x.prs_kostenplaats_key, x.prs_kostenplaats_nr, x.prs_kostenplaats_omschrijving, x.prs_kostenplaatsgrp_oms,
--x.prs_kostensoort_oms, x.prs_kostensoort_opmerking, x.prs_kostensoort_refcode, x.prs_kostensoortgrp_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'V', DECODE (verv_toeslag.fac_usrdata_key, 1001, 'H', '0')) fin_btwtabelwaarde_code,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'Verlegd', DECODE (verv_toeslag.fac_usrdata_key, 1001, 'Hoog', 'Nul')) fin_btwtabelwaarde_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, DECODE (verv_toeslag.fac_usrdata_key, 1001, 21, 0)) fin_btwtabelwaarde_perc,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 1, TO_NUMBER (NULL)) fin_btwtabelwaarde_verlegd,
x.maand,
TO_CHAR (TO_DATE (x.maand, 'yyyymm'), 'dd-mm-yyyy') mndbegin,
TO_CHAR (LAST_DAY (TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') mndeinde,
TO_CHAR (GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') dagbegin,
TO_CHAR (LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))), 'dd-mm-yyyy') dageinde,
LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1 mndbes, -- Beschikbaar
LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1 mndbez, -- Bezet
fac.safe_to_number (correctie_m2.cnt_kenmerkcontract_waarde) aantal, -- VVO-correctie
tar.fac_usrdata_prijs tarief, -- Jaartarief per m2
vvo_toeslag.fac_usrdata_prijs vvo_toeslag, -- VVO toeslagperc.
--korting_pct.fac_usrdata_prijs korting_pct, -- Kortingsperc.
verv_toeslag.fac_usrdata_prijs verv_toeslag, -- Vervangend toeslagperc.
fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde) korting_pm2, -- Korting per m2 Huur
'C' alg_onroerendgoed_type,
-1 alg_onroerendgoed_keys,
'Correctie' alg_plaatsaanduiding,
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
COALESCE (fac.safe_to_number (correctie_m2.cnt_kenmerkcontract_waarde), 0) *
COALESCE (verv_toeslag.fac_usrdata_prijs, 0) *
COALESCE (vvo_toeslag.fac_usrdata_prijs, 0) *
--(COALESCE (tar.fac_usrdata_prijs, 0) - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
DECODE (tar.fac_usrdata_prijs, NULL, 0, tar.fac_usrdata_prijs - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
--korting_pct.fac_usrdata_prijs *
1/12, 2)
mndnet, -- Netto maandbedrag (incl. kortingspercentage)
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
COALESCE (fac.safe_to_number (correctie_m2.cnt_kenmerkcontract_waarde), 0) *
COALESCE (verv_toeslag.fac_usrdata_prijs, 0) *
COALESCE (vvo_toeslag.fac_usrdata_prijs, 0) *
--(COALESCE (tar.fac_usrdata_prijs, 0) - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
DECODE (tar.fac_usrdata_prijs, NULL, 0, tar.fac_usrdata_prijs - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
--korting_pct.fac_usrdata_prijs *
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, DECODE (verv_toeslag.fac_usrdata_key, 1001, 0.21, 0)) *
1/12, 2)
mndbtw, -- BTW maandbedrag
--TRIM (DECODE (biss_kc1.cnt_kenmerkcontract_waarde, '986', '8110', DECODE (biss_kc2.cnt_kenmerkcontract_waarde, '989', '8110', SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1)))) grtboekrek,
DECODE (verv_toeslag.fac_usrdata_key, 1001, SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1), '8110') grtboekrek,
TO_NUMBER (NULL) mld_melding_key, -- Correctiemelding-key
NULL mld_melding_omschrijving
FROM (SELECT c.ins_discipline_key,
c.cnt_contract_key,
c.cnt_contract_nummer_intern, c.cnt_contract_versie,
c.cnt_contract_nummer,
c.cnt_contract_looptijd_van lv, c.cnt_contract_looptijd_tot lt,
c.cnt_contract_korting,
b.prs_bedrijf_key, b.prs_bedrijf_naam, b.prs_overeenkomst_nr,
--0.21 btw,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_adres, b.prs_bedrijf_post_adres) adres,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_postcode, b.prs_bedrijf_post_postcode) postcode,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_plaats, b.prs_bedrijf_post_plaats) plaats,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_land, b.prs_bedrijf_post_land) land,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kpg.prs_kostenplaatsgrp_oms,
c.maand
FROM (SELECT lp.maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key = 2001 -- Huur CHV
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (TO_DATE (lp.maand || '01', 'yyyymmdd')) -- Van-datum < einde te factureren maand
AND c.cnt_contract_looptijd_tot > TO_DATE (lp.maand || '01', 'yyyymmdd') -- Tot-datum > begin te factureren maand
UNION ALL -- Soms 2 maanden factureren (of 1 maand achteraf?)!
SELECT TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key = 2001 -- Huur CHV
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND c.cnt_contract_aanmaak > ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) -- Na begin voorgaande maand aangemaakt!
AND TRUNC (c.cnt_contract_looptijd_van) BETWEEN ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) AND TO_DATE (lp.maand || '01', 'yyyymmdd') -- Van-datum in voorgaande maand!
AND NOT EXISTS -- Voorgaande maand nog niet gefactureerd!
(SELECT 1
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_maand = TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') -- Voorgaande maand!
AND fin_verkoopfactuur_xmlnode = 'contract'
AND fin_verkoopfactuur_refkey = c.cnt_contract_key)) c,
prs_bedrijf b,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)) x
LEFT JOIN prs_kenmerklink btwnr
ON x.prs_bedrijf_key = btwnr.prs_link_key
AND btwnr.prs_kenmerklink_verwijder IS NULL
AND btwnr.prs_kenmerk_key = -1 -- BTW-nummer (NL)
LEFT JOIN prs_kenmerklink btwvl
ON x.prs_bedrijf_key = btwvl.prs_link_key
AND btwvl.prs_kenmerklink_verwijder IS NULL
AND btwvl.prs_kenmerk_key = -1 -- BTW verlegd
LEFT JOIN cnt_kenmerkcontract vsov_kc
ON x.cnt_contract_key = vsov_kc.cnt_contract_key
AND vsov_kc.cnt_kenmerkcontract_verwijder IS NULL
AND vsov_kc.cnt_kenmerk_key = -1 -- VSOV
--LEFT JOIN cnt_v_aanwezigcontract_plaats ccp
-- ON x.cnt_contract_key = ccp.cnt_contract_key
-- AND ccp.cnt_alg_plaats_code = 'R' -- Alleen Scope-ruimten!
--LEFT JOIN alg_v_plaatsaanduiding_all pa
-- ON ccp.cnt_alg_plaats_key = pa.alg_onroerendgoed_keys
--LEFT JOIN alg_v_aanwezigruimte rxo
-- ON ccp.cnt_alg_plaats_key = rxo.alg_ruimte_key
LEFT JOIN cnt_kenmerkcontract correctie_m2
ON x.cnt_contract_key = correctie_m2.cnt_contract_key
AND correctie_m2.cnt_kenmerkcontract_verwijder IS NULL
AND correctie_m2.cnt_kenmerk_key = 701 -- Correctie m2
LEFT JOIN cnt_kenmerkcontract tt_kc
ON x.cnt_contract_key = tt_kc.cnt_contract_key
AND tt_kc.cnt_kenmerkcontract_verwijder IS NULL
AND tt_kc.cnt_kenmerk_key = 401 -- Tarieftabel
LEFT JOIN fac_v_aanwezigusrdata tt_ud
ON fac.safe_to_number (tt_kc.cnt_kenmerkcontract_waarde) = tt_ud.fac_usrdata_key
LEFT JOIN fac_v_aanwezigusrdata tar
ON fac.safe_to_number (tt_ud.fac_usrdata_code) = tar.fac_usrtab_key
AND SUBSTR (tar.fac_usrdata_code, INSTR (tar.fac_usrdata_code, '/') + 1, 4) = 'Huur' -- Huur-tarief
LEFT JOIN cnt_kenmerkcontract verv_toeslag_kc
ON x.cnt_contract_key = verv_toeslag_kc.cnt_contract_key
AND verv_toeslag_kc.cnt_kenmerkcontract_verwijder IS NULL
AND verv_toeslag_kc.cnt_kenmerk_key = 642 -- Vervangend toeslagperc.
LEFT JOIN fac_v_aanwezigusrdata verv_toeslag
ON fac.safe_to_number (verv_toeslag_kc.cnt_kenmerkcontract_waarde) = verv_toeslag.fac_usrdata_key
LEFT JOIN cnt_kenmerkcontract vvo_toeslag_kc
ON x.cnt_contract_key = vvo_toeslag_kc.cnt_contract_key
AND vvo_toeslag_kc.cnt_kenmerkcontract_verwijder IS NULL
AND vvo_toeslag_kc.cnt_kenmerk_key = 402 -- VVO toeslagperc.
LEFT JOIN fac_v_aanwezigusrdata vvo_toeslag
ON fac.safe_to_number (vvo_toeslag_kc.cnt_kenmerkcontract_waarde) = vvo_toeslag.fac_usrdata_key
--LEFT JOIN cnt_kenmerkcontract korting_pct_kc
-- ON x.cnt_contract_key = korting_pct_kc.cnt_contract_key
-- AND korting_pct_kc.cnt_kenmerkcontract_verwijder IS NULL
-- AND korting_pct_kc.cnt_kenmerk_key = 403 -- Kortingsperc.
--LEFT JOIN fac_v_aanwezigusrdata korting_pct
-- ON fac.safe_to_number (korting_pct_kc.cnt_kenmerkcontract_waarde) = korting_pct.fac_usrdata_key
LEFT JOIN cnt_kenmerkcontract korting_pm2
ON x.cnt_contract_key = korting_pm2.cnt_contract_key
AND korting_pm2.cnt_kenmerkcontract_verwijder IS NULL
AND korting_pm2.cnt_kenmerk_key = 404 -- Korting per m2
--LEFT JOIN cnt_kenmerkcontract biss_kc1
-- ON x.cnt_contract_key = biss_kc1.cnt_contract_key
-- AND biss_kc1.cnt_kenmerkcontract_verwijder IS NULL
-- AND biss_kc1.cnt_kenmerk_key = 645 -- Facilitaire kosten
--LEFT JOIN cnt_kenmerkcontract biss_kc2
-- ON x.cnt_contract_key = biss_kc2.cnt_contract_key
-- AND biss_kc2.cnt_kenmerkcontract_verwijder IS NULL
-- AND biss_kc2.cnt_kenmerk_key = 647 -- Servicekosten
WHERE correctie_m2.cnt_kenmerkcontract_waarde IS NOT NULL
UNION ALL -- Bedrag per Kosten-listbox gezet!
SELECT '*CONCEPT*' fin_verkoopfactuur_id,
'CHV' || TRIM (x.cnt_contract_nummer) po_nr, -- Regulier
'CHV' || TRIM (x.cnt_contract_nummer) cnt_contract_nummer, -- PO
SUBSTR ('0' || TO_CHAR (x.cnt_kenmerk_key), -4) || TO_CHAR (x.ins_discipline_key) sortering, -- Sorteren op (eigen) discipline_key; 8 posities!
'CHV - ' || TRIM (SUBSTR (tar.fac_usrdata_omschr, 1, INSTR (tar.fac_usrdata_omschr, ' ') - 1)) regel, -- ICT/Facilitair/Service/Schoonmaak
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum, TO_CHAR (SYSDATE + 30, 'dd-mm-yyyy') vervaldatum,
x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_versie, x.lv,
--x.cnt_contract_korting, -- Korting %
x.prs_bedrijf_key, x.prs_bedrijf_naam prs_debiteur_naam, TRIM (x.prs_overeenkomst_nr) debiteur_nr,
btwnr.prs_kenmerklink_waarde btw_nr,
--(SELECT MIN (TRIM (prs_contactpersoon_voorletters || ' ' || TRIM (prs_contactpersoon_tussenv || ' ' || prs_contactpersoon_naam)))
-- FROM prs_contactpersoon
-- WHERE prs_contactpersoon_verwijder IS NULL
-- AND prs_contactpersoon_titel = '*' -- Contactpersoon op facturen
-- AND prs_bedrijf_key = x.prs_bedrijf_key)
NULL contactpersoon,
x.adres, x.postcode, x.plaats, x.land,
x.prs_kostenplaats_key, x.prs_kostenplaats_nr, x.prs_kostenplaats_omschrijving, x.prs_kostenplaatsgrp_oms,
--x.prs_kostensoort_oms, x.prs_kostensoort_opmerking, x.prs_kostensoort_refcode, x.prs_kostensoortgrp_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'V', DECODE (x.btw, 0, '0', 'H')) fin_btwtabelwaarde_code,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'Verlegd', DECODE (x.btw, 0, 'Nul', 'Hoog')) fin_btwtabelwaarde_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, DECODE (x.btw, 0, 0, 21)) fin_btwtabelwaarde_perc,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 1, TO_NUMBER (NULL)) fin_btwtabelwaarde_verlegd,
x.maand,
TO_CHAR (TO_DATE (x.maand, 'yyyymm'), 'dd-mm-yyyy') mndbegin,
TO_CHAR (LAST_DAY (TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') mndeinde,
TO_CHAR (GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') dagbegin,
TO_CHAR (LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))), 'dd-mm-yyyy') dageinde,
LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1 mndbes, -- Beschikbaar
LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1 mndbez, -- Bezet
rxo.alg_ruimte_opp_alt1 aantal, -- VVO
tar.fac_usrdata_prijs tarief, -- Jaartarief per m2
DECODE (TRIM (SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1)), '8604', 1, COALESCE (vvo_toeslag.fac_usrdata_prijs, 0)) vvo_toeslag, -- VVO toeslagperc. (behalve igv. 8604=Schoonmaak)
--1 korting_pct, -- Kortingsperc.
1 verv_toeslag, -- Vervangend toeslagperc.
fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde) korting_pm2, -- Korting per m2 ICT/Facilitair/Service/Schoonmaak
pa.alg_onroerendgoed_type,
pa.alg_onroerendgoed_keys,
pa.alg_plaatsaanduiding,
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
COALESCE (rxo.alg_ruimte_opp_alt1, 0) *
DECODE (TRIM (SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1)), '8604', 1, COALESCE (vvo_toeslag.fac_usrdata_prijs, 0)) * -- VVO toeslagperc. (behalve igv. 8604=Schoonmaak)
--(COALESCE (tar.fac_usrdata_prijs, 0) - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
DECODE (tar.fac_usrdata_prijs, NULL, 0, tar.fac_usrdata_prijs - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
1/12, 2)
mndnet, -- Netto maandbedrag (incl. kortingspercentage)
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
COALESCE (rxo.alg_ruimte_opp_alt1, 0) *
DECODE (TRIM (SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1)), '8604', 1, COALESCE (vvo_toeslag.fac_usrdata_prijs, 0)) * -- VVO toeslagperc. (behalve igv. 8604=Schoonmaak)
--(COALESCE (tar.fac_usrdata_prijs, 0) - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
DECODE (tar.fac_usrdata_prijs, NULL, 0, tar.fac_usrdata_prijs - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, x.btw) *
1/12, 2)
mndbtw, -- BTW maandbedrag
TRIM (SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1)) grtboekrek,
TO_NUMBER (NULL) mld_melding_key, -- Correctiemelding-key
NULL mld_melding_omschrijving
FROM (SELECT c.ins_discipline_key,
c.cnt_contract_key,
c.cnt_contract_nummer_intern, c.cnt_contract_versie,
c.cnt_contract_nummer,
c.cnt_contract_looptijd_van lv, c.cnt_contract_looptijd_tot lt,
c.cnt_contract_korting,
b.prs_bedrijf_key, b.prs_bedrijf_naam, b.prs_overeenkomst_nr,
0.21 btw,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_adres, b.prs_bedrijf_post_adres) adres,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_postcode, b.prs_bedrijf_post_postcode) postcode,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_plaats, b.prs_bedrijf_post_plaats) plaats,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_land, b.prs_bedrijf_post_land) land,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kpg.prs_kostenplaatsgrp_oms,
c.maand,
k.cnt_kenmerk_key,
ud.fac_usrdata_code
FROM (SELECT lp.maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key = 2001 -- Huur CHV
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (TO_DATE (lp.maand || '01', 'yyyymmdd')) -- Van-datum < einde te factureren maand
AND c.cnt_contract_looptijd_tot > TO_DATE (lp.maand || '01', 'yyyymmdd') -- Tot-datum > begin te factureren maand
UNION ALL -- Soms 2 maanden factureren (of 1 maand achteraf?)!
SELECT TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key = 2001 -- Huur CHV
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND c.cnt_contract_aanmaak > ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) -- Na begin voorgaande maand aangemaakt!
AND TRUNC (c.cnt_contract_looptijd_van) BETWEEN ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) AND TO_DATE (lp.maand || '01', 'yyyymmdd') -- Van-datum in voorgaande maand!
AND NOT EXISTS -- Voorgaande maand nog niet gefactureerd!
(SELECT 1
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_maand = TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') -- Voorgaande maand!
AND fin_verkoopfactuur_xmlnode = 'contract'
AND fin_verkoopfactuur_refkey = c.cnt_contract_key)) c,
prs_bedrijf b,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg,
cnt_kenmerkcontract kc,
cnt_kenmerk k,
fac_usrdata ud
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND c.cnt_contract_key = kc.cnt_contract_key
AND kc.cnt_kenmerkcontract_verwijder IS NULL
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_kenmerk_verwijder IS NULL
AND k.cnt_kenmerk_key IN (643, 645, 647, 649) -- ICT/Facilitair/Service/Schoonmaak
AND fac.safe_to_number (kc.cnt_kenmerkcontract_waarde) = ud.fac_usrdata_key
AND ud.fac_usrdata_key NOT IN (981, 984, 987, 990)) x -- Nvt.
LEFT JOIN prs_kenmerklink btwnr
ON x.prs_bedrijf_key = btwnr.prs_link_key
AND btwnr.prs_kenmerklink_verwijder IS NULL
AND btwnr.prs_kenmerk_key = -1 -- BTW-nummer (NL)
LEFT JOIN prs_kenmerklink btwvl
ON x.prs_bedrijf_key = btwvl.prs_link_key
AND btwvl.prs_kenmerklink_verwijder IS NULL
AND btwvl.prs_kenmerk_key = -1 -- BTW verlegd
LEFT JOIN cnt_kenmerkcontract vsov_kc
ON x.cnt_contract_key = vsov_kc.cnt_contract_key
AND vsov_kc.cnt_kenmerkcontract_verwijder IS NULL
AND vsov_kc.cnt_kenmerk_key = -1 -- VSOV
LEFT JOIN cnt_v_aanwezigcontract_plaats ccp
ON x.cnt_contract_key = ccp.cnt_contract_key
AND ccp.cnt_alg_plaats_code = 'R' -- Alleen Scope-ruimten!
LEFT JOIN alg_v_plaatsaanduiding_all pa
ON ccp.cnt_alg_plaats_key = pa.alg_onroerendgoed_keys
LEFT JOIN alg_v_aanwezigruimte rxo
ON ccp.cnt_alg_plaats_key = rxo.alg_ruimte_key
LEFT JOIN cnt_kenmerkcontract tt_kc
ON x.cnt_contract_key = tt_kc.cnt_contract_key
AND tt_kc.cnt_kenmerkcontract_verwijder IS NULL
AND tt_kc.cnt_kenmerk_key = 401 -- Tarieftabel
LEFT JOIN fac_v_aanwezigusrdata tt_ud
ON fac.safe_to_number (tt_kc.cnt_kenmerkcontract_waarde) = tt_ud.fac_usrdata_key
LEFT JOIN fac_v_aanwezigusrdata tar
ON fac.safe_to_number (tt_ud.fac_usrdata_code) = tar.fac_usrtab_key
AND UPPER (SUBSTR (tar.fac_usrdata_code, INSTR (tar.fac_usrdata_code, '/') + 1)) = UPPER (x.fac_usrdata_code)
LEFT JOIN cnt_kenmerkcontract vvo_toeslag_kc
ON x.cnt_contract_key = vvo_toeslag_kc.cnt_contract_key
AND vvo_toeslag_kc.cnt_kenmerkcontract_verwijder IS NULL
AND vvo_toeslag_kc.cnt_kenmerk_key = 402 -- VVO toeslagperc.
LEFT JOIN fac_v_aanwezigusrdata vvo_toeslag
ON fac.safe_to_number (vvo_toeslag_kc.cnt_kenmerkcontract_waarde) = vvo_toeslag.fac_usrdata_key
--LEFT JOIN cnt_kenmerkcontract korting_pct_kc
-- ON x.cnt_contract_key = korting_pct_kc.cnt_contract_key
-- AND korting_pct_kc.cnt_kenmerkcontract_verwijder IS NULL
-- AND korting_pct_kc.cnt_kenmerk_key = 403 -- Kortingsperc.
--LEFT JOIN fac_v_aanwezigusrdata korting_pct
-- ON fac.safe_to_number (korting_pct_kc.cnt_kenmerkcontract_waarde) = korting_pct.fac_usrdata_key
LEFT JOIN cnt_kenmerkcontract korting_pm2
ON x.cnt_contract_key = korting_pm2.cnt_contract_key
AND x.cnt_kenmerk_key + 1 = korting_pm2.cnt_kenmerk_key
AND korting_pm2.cnt_kenmerkcontract_verwijder IS NULL
AND korting_pm2.cnt_kenmerk_key IN (644, 646, 648, 650) -- Korting per m2 (ICT/Facilitair/Service/Schoonmaak)
UNION ALL -- M2 correctie per Kosten-listbox gezet!
SELECT '*CONCEPT*' fin_verkoopfactuur_id,
'CHV' || TRIM (x.cnt_contract_nummer) po_nr, -- Regulier
'CHV' || TRIM (x.cnt_contract_nummer) cnt_contract_nummer, -- PO
SUBSTR ('0' || TO_CHAR (x.cnt_kenmerk_key), -4) || TO_CHAR (x.ins_discipline_key) sortering, -- Sorteren op (eigen) discipline_key; 8 posities!
'CHV - ' || TRIM (SUBSTR (tar.fac_usrdata_omschr, 1, INSTR (tar.fac_usrdata_omschr, ' ') - 1)) regel, -- ICT/Facilitair/Service/Schoonmaak
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum, TO_CHAR (SYSDATE + 30, 'dd-mm-yyyy') vervaldatum,
x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_versie, x.lv,
--x.cnt_contract_korting, -- Korting %
x.prs_bedrijf_key, x.prs_bedrijf_naam prs_debiteur_naam, TRIM (x.prs_overeenkomst_nr) debiteur_nr,
btwnr.prs_kenmerklink_waarde btw_nr,
--(SELECT MIN (TRIM (prs_contactpersoon_voorletters || ' ' || TRIM (prs_contactpersoon_tussenv || ' ' || prs_contactpersoon_naam)))
-- FROM prs_contactpersoon
-- WHERE prs_contactpersoon_verwijder IS NULL
-- AND prs_contactpersoon_titel = '*' -- Contactpersoon op facturen
-- AND prs_bedrijf_key = x.prs_bedrijf_key)
NULL contactpersoon,
x.adres, x.postcode, x.plaats, x.land,
x.prs_kostenplaats_key, x.prs_kostenplaats_nr, x.prs_kostenplaats_omschrijving, x.prs_kostenplaatsgrp_oms,
--x.prs_kostensoort_oms, x.prs_kostensoort_opmerking, x.prs_kostensoort_refcode, x.prs_kostensoortgrp_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'V', DECODE (x.btw, 0, '0', 'H')) fin_btwtabelwaarde_code,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'Verlegd', DECODE (x.btw, 0, 'Nul', 'Hoog')) fin_btwtabelwaarde_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, DECODE (x.btw, 0, 0, 21)) fin_btwtabelwaarde_perc,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 1, TO_NUMBER (NULL)) fin_btwtabelwaarde_verlegd,
x.maand,
TO_CHAR (TO_DATE (x.maand, 'yyyymm'), 'dd-mm-yyyy') mndbegin,
TO_CHAR (LAST_DAY (TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') mndeinde,
TO_CHAR (GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') dagbegin,
TO_CHAR (LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))), 'dd-mm-yyyy') dageinde,
LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1 mndbes, -- Beschikbaar
LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1 mndbez, -- Bezet
fac.safe_to_number (correctie_m2.cnt_kenmerkcontract_waarde) aantal, -- VVO-correctie
tar.fac_usrdata_prijs tarief, -- Jaartarief per m2
DECODE (TRIM (SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1)), '8604', 1, COALESCE (vvo_toeslag.fac_usrdata_prijs, 0)) vvo_toeslag, -- VVO toeslagperc. (behalve igv. 8604=Schoonmaak)
--1 korting_pct, -- Kortingsperc.
1 verv_toeslag, -- Vervangend toeslagperc.
fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde) korting_pm2, -- Korting per m2 ICT/Facilitair/Service/Schoonmaak
'C' alg_onroerendgoed_type,
-1 alg_onroerendgoed_keys,
'Correctie' alg_plaatsaanduiding,
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
COALESCE (fac.safe_to_number (correctie_m2.cnt_kenmerkcontract_waarde), 0) *
DECODE (TRIM (SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1)), '8604', 1, COALESCE (vvo_toeslag.fac_usrdata_prijs, 0)) * -- VVO toeslagperc. (behalve igv. 8604=Schoonmaak)
--(COALESCE (tar.fac_usrdata_prijs, 0) - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
DECODE (tar.fac_usrdata_prijs, NULL, 0, tar.fac_usrdata_prijs - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
1/12, 2)
mndnet, -- Netto maandbedrag (incl. kortingspercentage)
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
COALESCE (fac.safe_to_number (correctie_m2.cnt_kenmerkcontract_waarde), 0) *
DECODE (TRIM (SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1)), '8604', 1, COALESCE (vvo_toeslag.fac_usrdata_prijs, 0)) * -- VVO toeslagperc. (behalve igv. 8604=Schoonmaak)
--(COALESCE (tar.fac_usrdata_prijs, 0) - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
DECODE (tar.fac_usrdata_prijs, NULL, 0, tar.fac_usrdata_prijs - COALESCE (fac.safe_to_number (korting_pm2.cnt_kenmerkcontract_waarde), 0)) *
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, x.btw) *
1/12, 2)
mndbtw, -- BTW maandbedrag
TRIM (SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1)) grtboekrek,
TO_NUMBER (NULL) mld_melding_key, -- Correctiemelding-key
NULL mld_melding_omschrijving
FROM (SELECT c.ins_discipline_key,
c.cnt_contract_key,
c.cnt_contract_nummer_intern, c.cnt_contract_versie,
c.cnt_contract_nummer,
c.cnt_contract_looptijd_van lv, c.cnt_contract_looptijd_tot lt,
c.cnt_contract_korting,
b.prs_bedrijf_key, b.prs_bedrijf_naam, b.prs_overeenkomst_nr,
0.21 btw,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_adres, b.prs_bedrijf_post_adres) adres,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_postcode, b.prs_bedrijf_post_postcode) postcode,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_plaats, b.prs_bedrijf_post_plaats) plaats,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_land, b.prs_bedrijf_post_land) land,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kpg.prs_kostenplaatsgrp_oms,
c.maand,
k.cnt_kenmerk_key,
ud.fac_usrdata_code
FROM (SELECT lp.maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key = 2001 -- Huur CHV
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (TO_DATE (lp.maand || '01', 'yyyymmdd')) -- Van-datum < einde te factureren maand
AND c.cnt_contract_looptijd_tot > TO_DATE (lp.maand || '01', 'yyyymmdd') -- Tot-datum > begin te factureren maand
UNION ALL -- Soms 2 maanden factureren (of 1 maand achteraf?)!
SELECT TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key = 2001 -- Huur CHV
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND c.cnt_contract_aanmaak > ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) -- Na begin voorgaande maand aangemaakt!
AND TRUNC (c.cnt_contract_looptijd_van) BETWEEN ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) AND TO_DATE (lp.maand || '01', 'yyyymmdd') -- Van-datum in voorgaande maand!
AND NOT EXISTS -- Voorgaande maand nog niet gefactureerd!
(SELECT 1
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_maand = TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') -- Voorgaande maand!
AND fin_verkoopfactuur_xmlnode = 'contract'
AND fin_verkoopfactuur_refkey = c.cnt_contract_key)) c,
prs_bedrijf b,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg,
cnt_kenmerkcontract kc,
cnt_kenmerk k,
fac_usrdata ud
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND c.cnt_contract_key = kc.cnt_contract_key
AND kc.cnt_kenmerkcontract_verwijder IS NULL
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_kenmerk_verwijder IS NULL
AND k.cnt_kenmerk_key IN (643, 645, 647, 649) -- ICT/Facilitair/Service/Schoonmaak
AND fac.safe_to_number (kc.cnt_kenmerkcontract_waarde) = ud.fac_usrdata_key
AND ud.fac_usrdata_key NOT IN (981, 984, 987, 990)) x -- Nvt.
LEFT JOIN prs_kenmerklink btwnr
ON x.prs_bedrijf_key = btwnr.prs_link_key
AND btwnr.prs_kenmerklink_verwijder IS NULL
AND btwnr.prs_kenmerk_key = -1 -- BTW-nummer (NL)
LEFT JOIN prs_kenmerklink btwvl
ON x.prs_bedrijf_key = btwvl.prs_link_key
AND btwvl.prs_kenmerklink_verwijder IS NULL
AND btwvl.prs_kenmerk_key = -1 -- BTW verlegd
LEFT JOIN cnt_kenmerkcontract vsov_kc
ON x.cnt_contract_key = vsov_kc.cnt_contract_key
AND vsov_kc.cnt_kenmerkcontract_verwijder IS NULL
AND vsov_kc.cnt_kenmerk_key = -1 -- VSOV
--LEFT JOIN cnt_v_aanwezigcontract_plaats ccp
-- ON x.cnt_contract_key = ccp.cnt_contract_key
-- AND ccp.cnt_alg_plaats_code = 'R' -- Alleen Scope-ruimten!
--LEFT JOIN alg_v_plaatsaanduiding_all pa
-- ON ccp.cnt_alg_plaats_key = pa.alg_onroerendgoed_keys
--LEFT JOIN alg_v_aanwezigruimte rxo
-- ON ccp.cnt_alg_plaats_key = rxo.alg_ruimte_key
LEFT JOIN cnt_kenmerkcontract correctie_m2
ON x.cnt_contract_key = correctie_m2.cnt_contract_key
AND correctie_m2.cnt_kenmerkcontract_verwijder IS NULL
AND correctie_m2.cnt_kenmerk_key = 701 -- Correctie m2
LEFT JOIN cnt_kenmerkcontract tt_kc
ON x.cnt_contract_key = tt_kc.cnt_contract_key
AND tt_kc.cnt_kenmerkcontract_verwijder IS NULL
AND tt_kc.cnt_kenmerk_key = 401 -- Tarieftabel
LEFT JOIN fac_v_aanwezigusrdata tt_ud
ON fac.safe_to_number (tt_kc.cnt_kenmerkcontract_waarde) = tt_ud.fac_usrdata_key
LEFT JOIN fac_v_aanwezigusrdata tar
ON fac.safe_to_number (tt_ud.fac_usrdata_code) = tar.fac_usrtab_key
AND UPPER (SUBSTR (tar.fac_usrdata_code, INSTR (tar.fac_usrdata_code, '/') + 1)) = UPPER (x.fac_usrdata_code)
LEFT JOIN cnt_kenmerkcontract vvo_toeslag_kc
ON x.cnt_contract_key = vvo_toeslag_kc.cnt_contract_key
AND vvo_toeslag_kc.cnt_kenmerkcontract_verwijder IS NULL
AND vvo_toeslag_kc.cnt_kenmerk_key = 402 -- VVO toeslagperc.
LEFT JOIN fac_v_aanwezigusrdata vvo_toeslag
ON fac.safe_to_number (vvo_toeslag_kc.cnt_kenmerkcontract_waarde) = vvo_toeslag.fac_usrdata_key
--LEFT JOIN cnt_kenmerkcontract korting_pct_kc
-- ON x.cnt_contract_key = korting_pct_kc.cnt_contract_key
-- AND korting_pct_kc.cnt_kenmerkcontract_verwijder IS NULL
-- AND korting_pct_kc.cnt_kenmerk_key = 403 -- Kortingsperc.
--LEFT JOIN fac_v_aanwezigusrdata korting_pct
-- ON fac.safe_to_number (korting_pct_kc.cnt_kenmerkcontract_waarde) = korting_pct.fac_usrdata_key
LEFT JOIN cnt_kenmerkcontract korting_pm2
ON x.cnt_contract_key = korting_pm2.cnt_contract_key
AND x.cnt_kenmerk_key + 1 = korting_pm2.cnt_kenmerk_key
AND korting_pm2.cnt_kenmerkcontract_verwijder IS NULL
AND korting_pm2.cnt_kenmerk_key IN (644, 646, 648, 650) -- Korting per m2 (ICT/Facilitair/Service/Schoonmaak)
WHERE correctie_m2.cnt_kenmerkcontract_waarde IS NOT NULL
UNION ALL -- Absolute correctie!
SELECT '*CONCEPT*' fin_verkoopfactuur_id,
'CHV' || TRIM (x.cnt_contract_nummer) po_nr, -- Regulier
'CHV' || TRIM (x.cnt_contract_nummer) cnt_contract_nummer, -- PO
--'9999' || TO_CHAR (x.ins_discipline_key) sortering, -- Sorteren op (eigen) discipline_key; 8 posities!
--'CHV - ' || x.cnt_srtkenmerk_omschrijving regel,
'0000' || TO_CHAR (x.ins_discipline_key) sortering, -- Sorteren op (eigen) discipline_key; 8 posities!
'CHV - Huur' regel, -- Absolute correctie verrekenen in Huur
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum, TO_CHAR (SYSDATE + 30, 'dd-mm-yyyy') vervaldatum,
x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_versie, x.lv,
--x.cnt_contract_korting, -- Korting %
x.prs_bedrijf_key, x.prs_bedrijf_naam prs_debiteur_naam, TRIM (x.prs_overeenkomst_nr) debiteur_nr,
btwnr.prs_kenmerklink_waarde btw_nr,
--(SELECT MIN (TRIM (prs_contactpersoon_voorletters || ' ' || TRIM (prs_contactpersoon_tussenv || ' ' || prs_contactpersoon_naam)))
-- FROM prs_contactpersoon
-- WHERE prs_contactpersoon_verwijder IS NULL
-- AND prs_contactpersoon_titel = '*' -- Contactpersoon op facturen
-- AND prs_bedrijf_key = x.prs_bedrijf_key)
NULL contactpersoon,
x.adres, x.postcode, x.plaats, x.land,
x.prs_kostenplaats_key, x.prs_kostenplaats_nr, x.prs_kostenplaats_omschrijving, x.prs_kostenplaatsgrp_oms,
--x.prs_kostensoort_oms, x.prs_kostensoort_opmerking, x.prs_kostensoort_refcode, x.prs_kostensoortgrp_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'V', DECODE (verv_toeslag.fac_usrdata_key, 1001, 'H', '0')) fin_btwtabelwaarde_code,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'Verlegd', DECODE (verv_toeslag.fac_usrdata_key, 1001, 'Hoog', 'Nul')) fin_btwtabelwaarde_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, DECODE (verv_toeslag.fac_usrdata_key, 1001, 21, 0)) fin_btwtabelwaarde_perc,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 1, TO_NUMBER (NULL)) fin_btwtabelwaarde_verlegd,
x.maand,
TO_CHAR (TO_DATE (x.maand, 'yyyymm'), 'dd-mm-yyyy') mndbegin,
TO_CHAR (LAST_DAY (TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') mndeinde,
TO_CHAR (GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') dagbegin,
TO_CHAR (LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))), 'dd-mm-yyyy') dageinde,
LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1 mndbes, -- Beschikbaar
LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1 mndbez, -- Bezet
1 aantal, -- Don't care
-1 * fac.safe_to_number (x.cnt_kenmerkcontract_waarde) tarief, -- Jaartarief per m2
1 vvo_toeslag, -- VVO toeslagperc.
--1 korting_pct, -- Kortingsperc.
1 verv_toeslag, -- Vervangend toeslagperc.
0 korting_pm2, -- Korting per m2
NULL alg_onroerendgoed_type,
NULL alg_onroerendgoed_keys,
NULL alg_plaatsaanduiding,
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
fac.safe_to_number (x.cnt_kenmerkcontract_waarde) *
1/12, 2)
mndnet, -- Netto maandbedrag (incl. kortingspercentage)
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
fac.safe_to_number (x.cnt_kenmerkcontract_waarde) *
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, DECODE (verv_toeslag.fac_usrdata_key, 1001, 0.21, 0)) *
1/12, 2)
mndbtw, -- BTW maandbedrag
--TRIM (SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1)) grtboekrek,
--TRIM (DECODE (biss_kc1.cnt_kenmerkcontract_waarde, '986', '8110', DECODE (biss_kc2.cnt_kenmerkcontract_waarde, '989', '8110', SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1)))) grtboekrek,
DECODE (verv_toeslag.fac_usrdata_key, 1001, SUBSTR (tar.fac_usrdata_code, 1, INSTR (tar.fac_usrdata_code, '/') - 1), '8110') grtboekrek,
TO_NUMBER (NULL) mld_melding_key, -- Correctiemelding-key
NULL mld_melding_omschrijving
FROM (SELECT c.ins_discipline_key,
c.cnt_contract_key,
c.cnt_contract_nummer_intern, c.cnt_contract_versie,
c.cnt_contract_nummer,
c.cnt_contract_looptijd_van lv, c.cnt_contract_looptijd_tot lt,
c.cnt_contract_korting,
b.prs_bedrijf_key, b.prs_bedrijf_naam, b.prs_overeenkomst_nr,
--0.21 btw,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_adres, b.prs_bedrijf_post_adres) adres,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_postcode, b.prs_bedrijf_post_postcode) postcode,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_plaats, b.prs_bedrijf_post_plaats) plaats,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_land, b.prs_bedrijf_post_land) land,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kpg.prs_kostenplaatsgrp_oms,
c.maand,
sk.cnt_srtkenmerk_omschrijving,
kc.cnt_kenmerkcontract_waarde
FROM (SELECT lp.maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key = 2001 -- Huur CHV
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (TO_DATE (lp.maand || '01', 'yyyymmdd')) -- Van-datum < einde te factureren maand
AND c.cnt_contract_looptijd_tot > TO_DATE (lp.maand || '01', 'yyyymmdd') -- Tot-datum > begin te factureren maand
UNION ALL -- Soms 2 maanden factureren (of 1 maand achteraf?)!
SELECT TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key = 2001 -- Huur CHV
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND c.cnt_contract_aanmaak > ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) -- Na begin voorgaande maand aangemaakt!
AND TRUNC (c.cnt_contract_looptijd_van) BETWEEN ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) AND TO_DATE (lp.maand || '01', 'yyyymmdd') -- Van-datum in voorgaande maand!
AND NOT EXISTS -- Voorgaande maand nog niet gefactureerd!
(SELECT 1
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_maand = TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') -- Voorgaande maand!
AND fin_verkoopfactuur_xmlnode = 'contract'
AND fin_verkoopfactuur_refkey = c.cnt_contract_key)) c,
prs_bedrijf b,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg,
cnt_kenmerkcontract kc,
cnt_kenmerk k,
cnt_srtkenmerk sk
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND c.cnt_contract_key = kc.cnt_contract_key
AND kc.cnt_kenmerkcontract_verwijder IS NULL
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_kenmerk_verwijder IS NULL
AND k.cnt_kenmerk_key = 405 -- Absolute correctie!
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key) x
LEFT JOIN prs_kenmerklink btwnr
ON x.prs_bedrijf_key = btwnr.prs_link_key
AND btwnr.prs_kenmerklink_verwijder IS NULL
AND btwnr.prs_kenmerk_key = -1 -- BTW-nummer (NL)
LEFT JOIN prs_kenmerklink btwvl
ON x.prs_bedrijf_key = btwvl.prs_link_key
AND btwvl.prs_kenmerklink_verwijder IS NULL
AND btwvl.prs_kenmerk_key = -1 -- BTW verlegd
LEFT JOIN cnt_kenmerkcontract vsov_kc
ON x.cnt_contract_key = vsov_kc.cnt_contract_key
AND vsov_kc.cnt_kenmerkcontract_verwijder IS NULL
AND vsov_kc.cnt_kenmerk_key = -1 -- VSOV
LEFT JOIN cnt_kenmerkcontract tt_kc
ON x.cnt_contract_key = tt_kc.cnt_contract_key
AND tt_kc.cnt_kenmerkcontract_verwijder IS NULL
AND tt_kc.cnt_kenmerk_key = 401 -- Tarieftabel
LEFT JOIN fac_v_aanwezigusrdata tt_ud
ON fac.safe_to_number (tt_kc.cnt_kenmerkcontract_waarde) = tt_ud.fac_usrdata_key
LEFT JOIN fac_v_aanwezigusrdata tar
ON fac.safe_to_number (tt_ud.fac_usrdata_code) = tar.fac_usrtab_key
AND SUBSTR (tar.fac_usrdata_code, INSTR (tar.fac_usrdata_code, '/') + 1, 4) = 'Huur' -- Huur-tarief
LEFT JOIN cnt_kenmerkcontract verv_toeslag_kc
ON x.cnt_contract_key = verv_toeslag_kc.cnt_contract_key
AND verv_toeslag_kc.cnt_kenmerkcontract_verwijder IS NULL
AND verv_toeslag_kc.cnt_kenmerk_key = 642 -- Vervangend toeslagperc.
LEFT JOIN fac_v_aanwezigusrdata verv_toeslag
ON fac.safe_to_number (verv_toeslag_kc.cnt_kenmerkcontract_waarde) = verv_toeslag.fac_usrdata_key
--LEFT JOIN cnt_kenmerkcontract biss_kc1
-- ON x.cnt_contract_key = biss_kc1.cnt_contract_key
-- AND biss_kc1.cnt_kenmerkcontract_verwijder IS NULL
-- AND biss_kc1.cnt_kenmerk_key = 645 -- Facilitaire kosten
--LEFT JOIN cnt_kenmerkcontract biss_kc2
-- ON x.cnt_contract_key = biss_kc2.cnt_contract_key
-- AND biss_kc2.cnt_kenmerkcontract_verwijder IS NULL
-- AND biss_kc2.cnt_kenmerk_key = 647 -- Servicekosten
WHERE COALESCE (fac.safe_to_number (x.cnt_kenmerkcontract_waarde), 0) != 0
UNION ALL -- Parkeren CHV/Parkeren CMD!
SELECT '*CONCEPT*' fin_verkoopfactuur_id,
DECODE (x.ins_discipline_key, 2004, 'CMD', 'CHV') || TRIM (x.cnt_contract_nummer) po_nr, -- Regulier
DECODE (x.ins_discipline_key, 2004, 'CMD', 'CHV') || TRIM (x.cnt_contract_nummer) cnt_contract_nummer, -- PO
'9999' || TO_CHAR (x.ins_discipline_key) sortering, -- Sorteren op (eigen) discipline_key; 8 posities!
COALESCE (ks.prs_kostensoort_refcode, ks.prs_kostensoort_opmerking) regel, -- Parkeren CHV/Parkeren CMD
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum, TO_CHAR (SYSDATE + 30, 'dd-mm-yyyy') vervaldatum,
x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_versie, x.lv,
--x.cnt_contract_korting, -- Korting %
x.prs_bedrijf_key, x.prs_bedrijf_naam prs_debiteur_naam, TRIM (x.prs_overeenkomst_nr) debiteur_nr,
btwnr.prs_kenmerklink_waarde btw_nr,
--(SELECT MIN (TRIM (prs_contactpersoon_voorletters || ' ' || TRIM (prs_contactpersoon_tussenv || ' ' || prs_contactpersoon_naam)))
-- FROM prs_contactpersoon
-- WHERE prs_contactpersoon_verwijder IS NULL
-- AND prs_contactpersoon_titel = '*' -- Contactpersoon op facturen
-- AND prs_bedrijf_key = x.prs_bedrijf_key)
NULL contactpersoon,
x.adres, x.postcode, x.plaats, x.land,
x.prs_kostenplaats_key, x.prs_kostenplaats_nr, x.prs_kostenplaats_omschrijving, x.prs_kostenplaatsgrp_oms,
--x.prs_kostensoort_oms, x.prs_kostensoort_opmerking, x.prs_kostensoort_refcode, x.prs_kostensoortgrp_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'V', DECODE (x.btw, 0, '0', 'H')) fin_btwtabelwaarde_code,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'Verlegd', DECODE (x.btw, 0, 'Nul', 'Hoog')) fin_btwtabelwaarde_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, DECODE (x.btw, 0, 0, 21)) fin_btwtabelwaarde_perc,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 1, TO_NUMBER (NULL)) fin_btwtabelwaarde_verlegd,
x.maand,
TO_CHAR (TO_DATE (x.maand, 'yyyymm'), 'dd-mm-yyyy') mndbegin,
TO_CHAR (LAST_DAY (TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') mndeinde,
TO_CHAR (GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') dagbegin,
TO_CHAR (LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))), 'dd-mm-yyyy') dageinde,
LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1 mndbes, -- Beschikbaar
LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1 mndbez, -- Bezet
fac.safe_to_number (aantal.cnt_kenmerkcontract_waarde) aantal,
fac.safe_to_number (bedrag.cnt_kenmerkcontract_waarde) tarief,
1 vvo_toeslag, -- VVO toeslagperc.
--1 korting_pct, -- Kortingsperc.
1 verv_toeslag, -- Vervangend toeslagperc.
0 korting_pm2, -- Korting per m2
NULL alg_onroerendgoed_type,
NULL alg_onroerendgoed_keys,
NULL alg_plaatsaanduiding,
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
fac.safe_to_number (aantal.cnt_kenmerkcontract_waarde) *
fac.safe_to_number (bedrag.cnt_kenmerkcontract_waarde) *
1/12, 2)
mndnet, -- Netto maandbedrag (incl. kortingspercentage)
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
fac.safe_to_number (aantal.cnt_kenmerkcontract_waarde) *
fac.safe_to_number (bedrag.cnt_kenmerkcontract_waarde) *
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, x.btw) *
1/12, 2)
mndbtw, -- BTW maandbedrag
TRIM (ks.prs_kostensoort_oms) grtboekrek,
TO_NUMBER (NULL) mld_melding_key, -- Correctiemelding-key
NULL mld_melding_omschrijving
FROM (SELECT c.ins_discipline_key,
c.cnt_contract_key,
c.cnt_contract_nummer_intern, c.cnt_contract_versie,
c.cnt_contract_nummer,
c.cnt_contract_looptijd_van lv, c.cnt_contract_looptijd_tot lt,
c.cnt_contract_korting,
b.prs_bedrijf_key, b.prs_bedrijf_naam, b.prs_overeenkomst_nr,
0.21 btw,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_adres, b.prs_bedrijf_post_adres) adres,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_postcode, b.prs_bedrijf_post_postcode) postcode,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_plaats, b.prs_bedrijf_post_plaats) plaats,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_land, b.prs_bedrijf_post_land) land,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kpg.prs_kostenplaatsgrp_oms,
c.maand
FROM (SELECT lp.maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key IN (2003, 2004) -- Parkeren CHV/Parkeren CMD
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (TO_DATE (lp.maand || '01', 'yyyymmdd')) -- Van-datum < einde te factureren maand
AND c.cnt_contract_looptijd_tot > TO_DATE (lp.maand || '01', 'yyyymmdd') -- Tot-datum > begin te factureren maand
UNION ALL -- Soms 2 maanden factureren (of 1 maand achteraf?)!
SELECT TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key IN (2003, 2004) -- Parkeren CHV/Parkeren CMD
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND c.cnt_contract_aanmaak > ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) -- Na begin voorgaande maand aangemaakt!
AND TRUNC (c.cnt_contract_looptijd_van) BETWEEN ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) AND TO_DATE (lp.maand || '01', 'yyyymmdd') -- Van-datum in voorgaande maand!
AND NOT EXISTS -- Voorgaande maand nog niet gefactureerd!
(SELECT 1
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_maand = TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') -- Voorgaande maand!
AND fin_verkoopfactuur_xmlnode = 'contract'
AND fin_verkoopfactuur_refkey = c.cnt_contract_key)) c,
prs_bedrijf b,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)) x
LEFT JOIN prs_kenmerklink btwnr
ON x.prs_bedrijf_key = btwnr.prs_link_key
AND btwnr.prs_kenmerklink_verwijder IS NULL
AND btwnr.prs_kenmerk_key = -1 -- BTW-nummer (NL)
LEFT JOIN prs_kenmerklink btwvl
ON x.prs_bedrijf_key = btwvl.prs_link_key
AND btwvl.prs_kenmerklink_verwijder IS NULL
AND btwvl.prs_kenmerk_key = -1 -- BTW verlegd
LEFT JOIN cnt_kenmerkcontract vsov_kc
ON x.cnt_contract_key = vsov_kc.cnt_contract_key
AND vsov_kc.cnt_kenmerkcontract_verwijder IS NULL
AND vsov_kc.cnt_kenmerk_key = -1 -- VSOV
LEFT JOIN cnt_discipline cd
ON x.ins_discipline_key = cd.ins_discipline_key
LEFT JOIN prs_kostensoort ks
ON cd.prs_kostensoort_key = ks.prs_kostensoort_key
LEFT JOIN cnt_kenmerkcontract aantal
ON x.cnt_contract_key = aantal.cnt_contract_key
AND aantal.cnt_kenmerkcontract_verwijder IS NULL
AND aantal.cnt_kenmerk_key IN (415, 417) -- Aantal
LEFT JOIN cnt_kenmerkcontract bedrag
ON x.cnt_contract_key = bedrag.cnt_contract_key
AND bedrag.cnt_kenmerkcontract_verwijder IS NULL
AND bedrag.cnt_kenmerk_key IN (416, 418) -- Bedrag
UNION ALL -- Deelnemers CMD!
SELECT '*CONCEPT*' fin_verkoopfactuur_id,
'CMD' || TRIM (x.cnt_contract_nummer) po_nr, -- Regulier
'CMD' || TRIM (x.cnt_contract_nummer) cnt_contract_nummer, -- PO
'9999' || TO_CHAR (x.ins_discipline_key) sortering, -- Sorteren op (eigen) discipline_key; 8 posities!
'CMD - ' || sd_ud.fac_usrdata_omschr regel, -- Deelnemers CMD
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum, TO_CHAR (SYSDATE + 30, 'dd-mm-yyyy') vervaldatum,
x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_versie, x.lv,
--x.cnt_contract_korting, -- Korting %
x.prs_bedrijf_key, x.prs_bedrijf_naam prs_debiteur_naam, TRIM (x.prs_overeenkomst_nr) debiteur_nr,
btwnr.prs_kenmerklink_waarde btw_nr,
--(SELECT MIN (TRIM (prs_contactpersoon_voorletters || ' ' || TRIM (prs_contactpersoon_tussenv || ' ' || prs_contactpersoon_naam)))
-- FROM prs_contactpersoon
-- WHERE prs_contactpersoon_verwijder IS NULL
-- AND prs_contactpersoon_titel = '*' -- Contactpersoon op facturen
-- AND prs_bedrijf_key = x.prs_bedrijf_key)
NULL contactpersoon,
x.adres, x.postcode, x.plaats, x.land,
x.prs_kostenplaats_key, x.prs_kostenplaats_nr, x.prs_kostenplaats_omschrijving, x.prs_kostenplaatsgrp_oms,
--x.prs_kostensoort_oms, x.prs_kostensoort_opmerking, x.prs_kostensoort_refcode, x.prs_kostensoortgrp_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'V', DECODE (x.btw, 0, '0', 'H')) fin_btwtabelwaarde_code,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'Verlegd', DECODE (x.btw, 0, 'Nul', 'Hoog')) fin_btwtabelwaarde_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, DECODE (x.btw, 0, 0, 21)) fin_btwtabelwaarde_perc,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 1, TO_NUMBER (NULL)) fin_btwtabelwaarde_verlegd,
x.maand,
TO_CHAR (TO_DATE (x.maand, 'yyyymm'), 'dd-mm-yyyy') mndbegin,
TO_CHAR (LAST_DAY (TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') mndeinde,
TO_CHAR (GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') dagbegin,
TO_CHAR (LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))), 'dd-mm-yyyy') dageinde,
LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1 mndbes, -- Beschikbaar
LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1 mndbez, -- Bezet
fac.safe_to_number (aantal.cnt_kenmerkcontract_waarde) aantal,
fac.safe_to_number (bedrag.cnt_kenmerkcontract_waarde) tarief,
1 vvo_toeslag, -- VVO toeslagperc.
--1 korting_pct, -- Kortingsperc.
1 verv_toeslag, -- Vervangend toeslagperc.
0 korting_pm2, -- Korting per m2
NULL alg_onroerendgoed_type,
NULL alg_onroerendgoed_keys,
NULL alg_plaatsaanduiding,
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
fac.safe_to_number (aantal.cnt_kenmerkcontract_waarde) *
fac.safe_to_number (bedrag.cnt_kenmerkcontract_waarde) *
1/12, 2)
mndnet, -- Netto maandbedrag (incl. kortingspercentage)
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
fac.safe_to_number (aantal.cnt_kenmerkcontract_waarde) *
fac.safe_to_number (bedrag.cnt_kenmerkcontract_waarde) *
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, x.btw) *
1/12, 2)
mndbtw, -- BTW maandbedrag
TRIM (SUBSTR (sd_ud.fac_usrdata_code, 1, INSTR (sd_ud.fac_usrdata_code, '/') - 1)) grtboekrek,
TO_NUMBER (NULL) mld_melding_key, -- Correctiemelding-key
NULL mld_melding_omschrijving
FROM (SELECT c.ins_discipline_key,
c.cnt_contract_key,
c.cnt_contract_nummer_intern, c.cnt_contract_versie,
c.cnt_contract_nummer,
c.cnt_contract_looptijd_van lv, c.cnt_contract_looptijd_tot lt,
c.cnt_contract_korting,
b.prs_bedrijf_key, b.prs_bedrijf_naam, b.prs_overeenkomst_nr,
0.21 btw,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_adres, b.prs_bedrijf_post_adres) adres,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_postcode, b.prs_bedrijf_post_postcode) postcode,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_plaats, b.prs_bedrijf_post_plaats) plaats,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_land, b.prs_bedrijf_post_land) land,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kpg.prs_kostenplaatsgrp_oms,
c.maand
FROM (SELECT lp.maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key = 2005 -- Deelnemers CMD
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (TO_DATE (lp.maand || '01', 'yyyymmdd')) -- Van-datum < einde te factureren maand
AND c.cnt_contract_looptijd_tot > TO_DATE (lp.maand || '01', 'yyyymmdd') -- Tot-datum > begin te factureren maand
UNION ALL -- Soms 2 maanden factureren (of 1 maand achteraf?)!
SELECT TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') maand, c.*
FROM lopendeperiode lp, cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key = 2005 -- Deelnemers CMD
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND c.cnt_contract_aanmaak > ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) -- Na begin voorgaande maand aangemaakt!
AND TRUNC (c.cnt_contract_looptijd_van) BETWEEN ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) AND TO_DATE (lp.maand || '01', 'yyyymmdd') -- Van-datum in voorgaande maand!
AND NOT EXISTS -- Voorgaande maand nog niet gefactureerd!
(SELECT 1
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_maand = TO_CHAR (TO_DATE (lp.maand || '01', 'yyyymmdd') - 1, 'yyyymm') -- Voorgaande maand!
AND fin_verkoopfactuur_xmlnode = 'contract'
AND fin_verkoopfactuur_refkey = c.cnt_contract_key)) c,
prs_bedrijf b,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)) x
LEFT JOIN prs_kenmerklink btwnr
ON x.prs_bedrijf_key = btwnr.prs_link_key
AND btwnr.prs_kenmerklink_verwijder IS NULL
AND btwnr.prs_kenmerk_key = -1 -- BTW-nummer (NL)
LEFT JOIN prs_kenmerklink btwvl
ON x.prs_bedrijf_key = btwvl.prs_link_key
AND btwvl.prs_kenmerklink_verwijder IS NULL
AND btwvl.prs_kenmerk_key = -1 -- BTW verlegd
LEFT JOIN cnt_kenmerkcontract vsov_kc
ON x.cnt_contract_key = vsov_kc.cnt_contract_key
AND vsov_kc.cnt_kenmerkcontract_verwijder IS NULL
AND vsov_kc.cnt_kenmerk_key = -1 -- VSOV
LEFT JOIN cnt_discipline cd
ON x.ins_discipline_key = cd.ins_discipline_key
LEFT JOIN prs_kostensoort ks
ON cd.prs_kostensoort_key = ks.prs_kostensoort_key
LEFT JOIN cnt_kenmerkcontract aantal
ON x.cnt_contract_key = aantal.cnt_contract_key
AND aantal.cnt_kenmerkcontract_verwijder IS NULL
AND aantal.cnt_kenmerk_key = 419 -- Aantal
LEFT JOIN cnt_kenmerkcontract bedrag
ON x.cnt_contract_key = bedrag.cnt_contract_key
AND bedrag.cnt_kenmerkcontract_verwijder IS NULL
AND bedrag.cnt_kenmerk_key = 420 -- Bedrag
LEFT JOIN cnt_kenmerkcontract sd_kc
ON x.cnt_contract_key = sd_kc.cnt_contract_key
AND sd_kc.cnt_kenmerkcontract_verwijder IS NULL
AND sd_kc.cnt_kenmerk_key = 421 -- Soort deelnemer
LEFT JOIN fac_v_aanwezigusrdata sd_ud
ON fac.safe_to_number (sd_kc.cnt_kenmerkcontract_waarde) = sd_ud.fac_usrdata_key
UNION ALL -- Alle correctiemeldingen (ook als contract inmiddels verlopen)!
SELECT '*CONCEPT*' fin_verkoopfactuur_id,
DECODE (cd.ins_discipline_key, 2004, 'CMD', 2005, 'CMD', 'CHV') || TRIM (c.cnt_contract_nummer) po_nr, -- Correctie
DECODE (cd.ins_discipline_key, 2004, 'CMD', 2005, 'CMD', 'CHV') || TRIM (c.cnt_contract_nummer) cnt_contract_nummer, -- PO
'9999' || SUBSTR ('999' || fr.sortering, -4) sortering, -- Correctieregels onderaan (in dezelfde volgorde als de "echte" regels); 8 posities!
DECODE (cd.ins_discipline_key, 2004, 'CMD - ', 2005, 'CMD - ', 'CHV - ') || 'Correctie ' || fr.factuurregel || ' ' || pv.periode_van || ' - ' || pt.periode_tot regel, -- Zou consistent moeten zijn met contract!
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum, TO_CHAR (SYSDATE + 30, 'dd-mm-yyyy') vervaldatum,
c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_versie, c.cnt_contract_looptijd_tot lv,
--x.cnt_contract_korting, -- Korting %
b.prs_bedrijf_key, b.prs_bedrijf_naam prs_debiteur_naam, TRIM (b.prs_overeenkomst_nr) debiteur_nr,
btwnr.prs_kenmerklink_waarde btw_nr,
--(SELECT MIN (TRIM (prs_contactpersoon_voorletters || ' ' || TRIM (prs_contactpersoon_tussenv || ' ' || prs_contactpersoon_naam)))
-- FROM prs_contactpersoon
-- WHERE prs_contactpersoon_verwijder IS NULL
-- AND prs_contactpersoon_titel = '*' -- Contactpersoon op facturen
-- AND prs_bedrijf_key = b.prs_bedrijf_key)
NULL contactpersoon,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_adres, b.prs_bedrijf_post_adres) adres,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_postcode, b.prs_bedrijf_post_postcode) postcode,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_plaats, b.prs_bedrijf_post_plaats) plaats,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_land, b.prs_bedrijf_post_land) land,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kpg.prs_kostenplaatsgrp_oms,
--ks.prs_kostensoort_oms, ks.prs_kostensoort_opmerking, ks.prs_kostensoort_refcode, ksg.prs_kostensoortgrp_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'V', DECODE (oh.cnt_kenmerkcontract_waarde, '921', '0', 'H')) fin_btwtabelwaarde_code, -- TODO:BTW hangt van de correctie af?
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'Verlegd', DECODE (oh.cnt_kenmerkcontract_waarde, '921', 'Nul', 'Hoog')) fin_btwtabelwaarde_oms, -- TODO:BTW hangt van de correctie af?
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, DECODE (oh.cnt_kenmerkcontract_waarde, '921', 0, 21)) fin_btwtabelwaarde_perc, -- TODO:BTW hangt van de correctie af?
DECODE (btwvl.prs_kenmerklink_waarde, '1', 1, TO_NUMBER (NULL)) fin_btwtabelwaarde_verlegd,
lp.maand,
TO_CHAR (TO_DATE (lp.maand, 'yyyymm'), 'dd-mm-yyyy') mndbegin,
TO_CHAR (LAST_DAY (TO_DATE (lp.maand, 'yyyymm')), 'dd-mm-yyyy') mndeinde,
TO_CHAR (GREATEST (TRUNC (c.cnt_contract_looptijd_van), TO_DATE (lp.maand, 'yyyymm')), 'dd-mm-yyyy') dagbegin,
TO_CHAR (LEAST (TRUNC (c.cnt_contract_looptijd_tot), LAST_DAY (TO_DATE (lp.maand, 'yyyymm'))), 'dd-mm-yyyy') dageinde,
LAST_DAY (TO_DATE (lp.maand, 'yyyymm')) - TO_DATE (lp.maand, 'yyyymm') + 1 mndbes, -- Beschikbaar
LEAST (TRUNC (c.cnt_contract_looptijd_tot), LAST_DAY (TO_DATE (lp.maand, 'yyyymm'))) - GREATEST (TRUNC (c.cnt_contract_looptijd_van), TO_DATE (lp.maand, 'yyyymm')) + 1 mndbez, -- Bezet
1 aantal, -- Don't care
cb.correctiebedrag tarief,
1 vvo_toeslag, -- VVO toeslagperc.
--1 korting_pct, -- Kortingsperc.
1 verv_toeslag, -- Vervangend toeslagperc.
0 korting_pm2, -- Korting per m2
NULL alg_onroerendgoed_type,
NULL alg_onroerendgoed_keys,
NULL alg_plaatsaanduiding,
ROUND (cb.correctiebedrag, 2)
mndnet, -- Netto correctiebedrag
ROUND (DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, DECODE (oh.cnt_kenmerkcontract_waarde, '921', 0, 0.21)) * cb.correctiebedrag, 2)
mndbtw, -- BTW correctiebedrag
DECODE (cd.ins_discipline_key,
2001, TRIM (DECODE (biss_kc1.cnt_kenmerkcontract_waarde, '986', '8110', DECODE (biss_kc2.cnt_kenmerkcontract_waarde, '989', '8110', SUBSTR (ht_ud.fac_usrdata_code, 1, INSTR (ht_ud.fac_usrdata_code, '/') - 1)))),
2005, TRIM (SUBSTR (sd_ud.fac_usrdata_code, 1, INSTR (sd_ud.fac_usrdata_code, '/') - 1)),
TRIM (ks.prs_kostensoort_oms))
grtboekrek,
m.mld_melding_key, -- Correctiemelding-key
TRIM (m.mld_melding_omschrijving) mld_melding_omschrijving
FROM lopendeperiode lp,
mld_melding m,
mld_v_aanwezigkenmerkmelding km,
cnt_contract c,
prs_bedrijf b,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg,
cnt_discipline cd,
prs_kostensoort ks,
(SELECT prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL AND prs_kenmerk_key = -1) btwnr, -- BTW-nummer (NL)
(SELECT prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL AND prs_kenmerk_key = -1) btwvl, -- BTW verlegd
(SELECT cnt_contract_key, cnt_kenmerkcontract_waarde
FROM cnt_kenmerkcontract
WHERE cnt_kenmerkcontract_verwijder IS NULL
AND cnt_kenmerk_key = 401) tt_kc, -- Tarieftabel
(SELECT tt_ud.fac_usrdata_key, tar.fac_usrdata_code -- Alleen de Huur-regels uit de Tarieftabellen!
FROM fac_v_aanwezigusrdata tt_ud, fac_v_aanwezigusrdata tar
WHERE tt_ud.fac_usrtab_key = 521 -- Tarieftabel
AND fac.safe_to_number (tt_ud.fac_usrdata_code) = tar.fac_usrtab_key
AND SUBSTR (tar.fac_usrdata_code, INSTR (tar.fac_usrdata_code, '/') + 1, 4) = 'Huur') ht_ud,
(SELECT cnt_contract_key, cnt_kenmerkcontract_waarde
FROM cnt_kenmerkcontract
WHERE cnt_kenmerkcontract_verwijder IS NULL
AND cnt_kenmerk_key = 641) oh, -- Onbelaste huurder
(SELECT cnt_contract_key, cnt_kenmerkcontract_waarde
FROM cnt_kenmerkcontract
WHERE cnt_kenmerkcontract_verwijder IS NULL
AND cnt_kenmerk_key = 645) biss_kc1, -- Facilitaire kosten
(SELECT cnt_contract_key, cnt_kenmerkcontract_waarde
FROM cnt_kenmerkcontract
WHERE cnt_kenmerkcontract_verwijder IS NULL
AND cnt_kenmerk_key = 647) biss_kc2, -- Servicekosten
(SELECT cnt_contract_key, cnt_kenmerkcontract_waarde
FROM cnt_kenmerkcontract
WHERE cnt_kenmerkcontract_verwijder IS NULL
AND cnt_kenmerk_key = 421) sd_kc, -- Soort deelnemer
(SELECT fac_usrdata_key, fac_usrdata_code
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 522) sd_ud, -- Soort deelnemer
(SELECT km.mld_melding_key, ud.fac_usrdata_code sortering, ud.fac_usrdata_omschr factuurregel
FROM mld_v_aanwezigkenmerkmelding km, fac_usrdata ud
WHERE km.mld_kenmerk_key = -1 -- TODO:Factuurregel(groepering)
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key) fr,
(SELECT mld_melding_key, mld_kenmerkmelding_waarde periode_van
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = -1) pv, -- TODO:Periode van
(SELECT mld_melding_key, mld_kenmerkmelding_waarde periode_tot
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = -1) pt, -- TODO:Periode tot
(SELECT mld_melding_key, fac.safe_to_number (mld_kenmerkmelding_waarde) correctiebedrag
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = -1) cb -- TODO:Correctiebedrag
WHERE m.mld_stdmelding_key = -1 -- TODO:Financi<63>le correctie
AND m.mld_melding_status IN (4, 5) -- Geaccepteerd/Afgemeld
AND m.mld_melding_key = km.mld_melding_key
AND km.mld_kenmerk_key = -1 -- TODO:Contractreferentie
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = c.cnt_contract_key
AND c.cnt_contract_status = 0 -- NIET Gesloten
--AND TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (TO_DATE (lp.maand || '01', 'yyyymmdd')) -- Van-datum < einde te factureren maand
--AND c.cnt_contract_looptijd_tot > TO_DATE (lp.maand || '01', 'yyyymmdd') -- Tot-datum > begin te factureren maand
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND c.ins_discipline_key = cd.ins_discipline_key
AND cd.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND c.cnt_prs_bedrijf_key = btwnr.prs_link_key(+)
AND c.cnt_prs_bedrijf_key = btwvl.prs_link_key(+)
AND c.cnt_contract_key = tt_kc.cnt_contract_key(+)
AND fac.safe_to_number (tt_kc.cnt_kenmerkcontract_waarde) = ht_ud.fac_usrdata_key(+)
AND c.cnt_contract_key = oh.cnt_contract_key(+)
AND c.cnt_contract_key = biss_kc1.cnt_contract_key(+)
AND c.cnt_contract_key = biss_kc2.cnt_contract_key(+)
AND c.cnt_contract_key = sd_kc.cnt_contract_key(+)
AND fac.safe_to_number (sd_kc.cnt_kenmerkcontract_waarde) = sd_ud.fac_usrdata_key(+)
AND m.mld_melding_key = fr.mld_melding_key
AND m.mld_melding_key = pv.mld_melding_key
AND m.mld_melding_key = pt.mld_melding_key
AND m.mld_melding_key = cb.mld_melding_key
ORDER BY prs_bedrijf_key, 1, 2, 3, 4, alg_onroerendgoed_type, alg_plaatsaanduiding
;
/*
UNION ALL -- Borg CHV (eenmalig factureren, liefst op eerste factuur)!
SELECT '*CONCEPT*' fin_verkoopfactuur_id,
'CHV' || TRIM (x.cnt_contract_nummer) po_nr, -- Regulier
'CHV' || TRIM (x.cnt_contract_nummer) cnt_contract_nummer, -- PO
'9999' || TO_CHAR (x.ins_discipline_key) sortering, -- Sorteren op (eigen) discipline_key; 8 posities!
'CHV - ' || COALESCE (ks.prs_kostensoort_refcode, ks.prs_kostensoort_opmerking) regel, -- Borg CHV
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum, TO_CHAR (SYSDATE + 30, 'dd-mm-yyyy') vervaldatum,
x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_versie, x.lv,
--x.cnt_contract_korting, -- Korting %
x.prs_bedrijf_key, x.prs_bedrijf_naam prs_debiteur_naam, TRIM (x.prs_overeenkomst_nr) debiteur_nr,
btwnr.prs_kenmerklink_waarde btw_nr,
--(SELECT MIN (TRIM (prs_contactpersoon_voorletters || ' ' || TRIM (prs_contactpersoon_tussenv || ' ' || prs_contactpersoon_naam)))
-- FROM prs_contactpersoon
-- WHERE prs_contactpersoon_verwijder IS NULL
-- AND prs_contactpersoon_titel = '*' -- Contactpersoon op facturen
-- AND prs_bedrijf_key = x.prs_bedrijf_key)
NULL contactpersoon,
x.adres, x.postcode, x.plaats, x.land,
x.prs_kostenplaats_key, x.prs_kostenplaats_nr, x.prs_kostenplaats_omschrijving, x.prs_kostenplaatsgrp_oms,
--x.prs_kostensoort_oms, x.prs_kostensoort_opmerking, x.prs_kostensoort_refcode, x.prs_kostensoortgrp_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'V', DECODE (x.btw, 0, '0', 'H')) fin_btwtabelwaarde_code,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'Verlegd', DECODE (x.btw, 0, 'Nul', 'Hoog')) fin_btwtabelwaarde_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, DECODE (x.btw, 0, 0, 21)) fin_btwtabelwaarde_perc,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 1, TO_NUMBER (NULL)) fin_btwtabelwaarde_verlegd,
x.maand,
TO_CHAR (TO_DATE (x.maand, 'yyyymm'), 'dd-mm-yyyy') mndbegin,
TO_CHAR (LAST_DAY (TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') mndeinde,
TO_CHAR (GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') dagbegin,
TO_CHAR (LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))), 'dd-mm-yyyy') dageinde,
LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1 mndbes, -- Beschikbaar
LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1 mndbez, -- Bezet
fac.safe_to_number (aantal.cnt_kenmerkcontract_waarde) aantal,
fac.safe_to_number (bedrag.cnt_kenmerkcontract_waarde) tarief,
1 vvo_toeslag, -- VVO toeslagperc.
--1 korting_pct, -- Kortingsperc.
1 verv_toeslag, -- Vervangend toeslagperc.
0 korting_pm2, -- Korting per m2
NULL alg_onroerendgoed_type,
NULL alg_onroerendgoed_keys,
NULL alg_plaatsaanduiding,
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
fac.safe_to_number (aantal.cnt_kenmerkcontract_waarde) *
fac.safe_to_number (bedrag.cnt_kenmerkcontract_waarde) *
1/12, 2)
mndnet, -- Netto maandbedrag (incl. kortingspercentage)
ROUND (((LEAST (TRUNC (x.lt), LAST_DAY (TO_DATE (x.maand, 'yyyymm'))) - GREATEST (TRUNC (x.lv), TO_DATE (x.maand, 'yyyymm')) + 1) / (LAST_DAY (TO_DATE (x.maand, 'yyyymm')) - TO_DATE (x.maand, 'yyyymm') + 1)) *
--((100 - COALESCE (x.cnt_contract_korting, 0)) / 100) *
fac.safe_to_number (aantal.cnt_kenmerkcontract_waarde) *
fac.safe_to_number (bedrag.cnt_kenmerkcontract_waarde) *
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, x.btw) *
1/12, 2)
mndbtw, -- BTW maandbedrag
TRIM (ks.prs_kostensoort_oms) grtboekrek,
TO_NUMBER (NULL) mld_melding_key, -- Correctiemelding-key
NULL mld_melding_omschrijving
FROM (SELECT c.ins_discipline_key,
c.cnt_contract_key,
c.cnt_contract_nummer_intern, c.cnt_contract_versie,
c.cnt_contract_nummer,
c.cnt_contract_looptijd_van lv, c.cnt_contract_looptijd_tot lt,
c.cnt_contract_korting,
b.prs_bedrijf_key, b.prs_bedrijf_naam, b.prs_overeenkomst_nr,
0.21 btw,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_adres, b.prs_bedrijf_post_adres) adres,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_postcode, b.prs_bedrijf_post_postcode) postcode,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_plaats, b.prs_bedrijf_post_plaats) plaats,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_land, b.prs_bedrijf_post_land) land,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kpg.prs_kostenplaatsgrp_oms,
lp.maand
FROM lopendeperiode lp,
cnt_v_aanwezigcontract c,
prs_bedrijf b,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg
WHERE c.ins_discipline_key = 2002 -- Borg CHV
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND c.cnt_contract_aanmaak > ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) -- Voorgaande maand aangemaakt!
AND TRUNC (c.cnt_contract_looptijd_van) >= ADD_MONTHS (TO_DATE (lp.maand || '01', 'yyyymmdd'), -1) -- Van-datum in voorgaande maand!
AND NOT EXISTS -- Borg-contract niet eerder gefactureerd!
(SELECT 1
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_xmlnode = 'contract'
AND fin_verkoopfactuur_refkey = c.cnt_contract_key)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)) x
LEFT JOIN prs_kenmerklink btwnr
ON x.prs_bedrijf_key = btwnr.prs_link_key
AND btwnr.prs_kenmerklink_verwijder IS NULL
AND btwnr.prs_kenmerk_key = -1 -- BTW-nummer (NL)
LEFT JOIN prs_kenmerklink btwvl
ON x.prs_bedrijf_key = btwvl.prs_link_key
AND btwvl.prs_kenmerklink_verwijder IS NULL
AND btwvl.prs_kenmerk_key = -1 -- BTW verlegd
LEFT JOIN cnt_kenmerkcontract vsov_kc
ON x.cnt_contract_key = vsov_kc.cnt_contract_key
AND vsov_kc.cnt_kenmerkcontract_verwijder IS NULL
AND vsov_kc.cnt_kenmerk_key = -1 -- VSOV
LEFT JOIN cnt_discipline cd
ON x.ins_discipline_key = cd.ins_discipline_key
LEFT JOIN prs_kostensoort ks
ON cd.prs_kostensoort_key = ks.prs_kostensoort_key
LEFT JOIN cnt_kenmerkcontract aantal
ON x.cnt_contract_key = aantal.cnt_contract_key
AND aantal.cnt_kenmerkcontract_verwijder IS NULL
AND aantal.cnt_kenmerk_key = 413 -- Aantal
LEFT JOIN cnt_kenmerkcontract bedrag
ON x.cnt_contract_key = bedrag.cnt_contract_key
AND bedrag.cnt_kenmerkcontract_verwijder IS NULL
AND bedrag.cnt_kenmerk_key = 414 -- Bedrag
*/
CREATE OR REPLACE VIEW bssc_v_fact_frozen
AS
SELECT vf.fin_verkoopfactuur_id,
--TRIM (SUBSTR (vf.fin_verkoopfactuur_omschr, 1, INSTR (vf.fin_verkoopfactuur_omschr, '/') - 1)) po_nr,
SUBSTR (vf.fin_verkoopfactuur_omschr, 1, INSTR (vf.fin_verkoopfactuur_omschr, '/=', -1) - 1) po_nr,
SUBSTR (vf.fin_verkoopfactuur_omschr, 1, INSTR (vf.fin_verkoopfactuur_omschr, '/=', -1) - 1) cnt_contract_nummer,
SUBSTR (vf.fin_verkoopfactuur_omschr, INSTR (vf.fin_verkoopfactuur_omschr, '/=', -1) + 2, 10) sortering,
SUBSTR (vf.fin_verkoopfactuur_omschr, INSTR (vf.fin_verkoopfactuur_omschr, '/=', -1) + 9) regel,
TO_CHAR (vf.fin_verkoopfactuur_datum, 'dd-mm-yyyy') factuurdatum, TO_CHAR (vf.fin_verkoopfactuur_d1, 'dd-mm-yyyy') vervaldatum,
vf.fin_verkoopfactuur_refkey cnt_contract_key,
c.cnt_contract_nummer_intern, -- Niet historisch bewaard!
c.cnt_contract_versie, -- Niet historisch bewaard!
c.cnt_contract_looptijd_tot lv, -- Niet historisch bewaard!
--vf.fin_verkoopfactuur_n1 cnt_contract_korting, -- Korting %
vf.prs_bedrijf_key, vf.prs_debiteur_naam,
SUBSTR (vf.fin_verkoopfactuur_c7, 1, INSTR (vf.fin_verkoopfactuur_c7, '=') - 1) debiteur_nr,
SUBSTR (vf.fin_verkoopfactuur_c7, INSTR (vf.fin_verkoopfactuur_c7, '=') + 1) btw_nr,
NULL contactpersoon,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_adres, b.prs_bedrijf_post_adres) adres, -- Niet historisch bewaard!
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_postcode, b.prs_bedrijf_post_postcode) postcode, -- Niet historisch bewaard!
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_plaats, b.prs_bedrijf_post_plaats) plaats, -- Niet historisch bewaard!
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_land, b.prs_bedrijf_post_land) land, -- Niet historisch bewaard!
vf.prs_kostenplaats_key, vf.prs_kostenplaats_nr, vf.prs_kostenplaats_omschrijving, vf.prs_kostenplaatsgrp_oms,
--vf.prs_kostensoort_oms, vf.prs_kostensoort_opmerking, vf.prs_kostensoort_refcode, vf.prs_kostensoortgrp_oms,
vf.fin_btwtabelwaarde_code,
vf.fin_btwtabelwaarde_oms,
vf.fin_btwtabelwaarde_perc,
vf.fin_btwtabelwaarde_verlegd,
vf.fin_verkoopfactuur_maand maand,
TO_CHAR (vf.fin_verkoopfactuur_d2, 'dd-mm-yyyy') mndbegin,
TO_CHAR (vf.fin_verkoopfactuur_d3, 'dd-mm-yyyy') mndeinde,
TO_CHAR (vf.fin_verkoopfactuur_d4, 'dd-mm-yyyy') dagbegin,
TO_CHAR (vf.fin_verkoopfactuur_d5, 'dd-mm-yyyy') dageinde,
LAST_DAY (TO_DATE (vf.fin_verkoopfactuur_maand, 'yyyymm')) - TO_DATE (vf.fin_verkoopfactuur_maand, 'yyyymm') + 1 mndbes, -- Beschikbaar
vf.fin_verkoopfactuur_d5 - vf.fin_verkoopfactuur_d4 + 1 mndbez, -- Bezet
fac.safe_to_number (vf.fin_verkoopfactuur_c1) aantal,
fac.safe_to_number (vf.fin_verkoopfactuur_c2) tarief,
fac.safe_to_number (vf.fin_verkoopfactuur_c3) vvo_toeslag,
fac.safe_to_number (vf.fin_verkoopfactuur_c4) verv_toeslag,
fac.safe_to_number (vf.fin_verkoopfactuur_c5) korting_pm2,
SUBSTR (vf.fin_verkoopfactuur_c6, 1, 1) alg_onroerendgoed_type,
fac.safe_to_number (SUBSTR (vf.fin_verkoopfactuur_c6, 2, INSTR (vf.fin_verkoopfactuur_c6, '=') - 1)) alg_onroerendgoed_keys,
SUBSTR (vf.fin_verkoopfactuur_c6, INSTR (vf.fin_verkoopfactuur_c6, '=') + 1) alg_plaatsaanduiding,
vf.fin_verkoopfactuur_bedrag mndnet, -- Netto maandbedrag
vf.fin_verkoopfactuur_btw mndbtw, -- BTW maandbedrag
vf.prs_kostensoort_oms grtboekrek,
vf.fin_verkoopfactuur_n2 mld_melding_key,
vf.fin_verkoopfactuur_c8 mld_melding_omschrijving
FROM fin_verkoopfactuur vf,
cnt_contract c,
prs_bedrijf b
WHERE (SUBSTR (vf.fin_verkoopfactuur_id, 5, 1) = '9' -- CMD
OR SUBSTR (vf.fin_verkoopfactuur_id, 5, 1) = '1') -- CHV
AND vf.fin_verkoopfactuur_refkey = c.cnt_contract_key
AND vf.prs_bedrijf_key = b.prs_bedrijf_key
ORDER BY vf.prs_bedrijf_key, 1, 2, 3, 4, SUBSTR (vf.fin_verkoopfactuur_c6, 1, 1), SUBSTR (vf.fin_verkoopfactuur_c6, INSTR (vf.fin_verkoopfactuur_c6, '=') + 1);
CREATE OR REPLACE VIEW bssc_v_rap_export_fact_chv
(
hide_f_sortering,
fclt_x_maand,
code,
valuta,
factuurdatum,
periode,
factuurnummer,
vervaldatum,
nummer,
grtboekrek,
rel_kpl,
prj_activa,
bedrag,
debitcredit,
omschrijving,
btwcode
)
AS
SELECT ROWNUM,
REPLACE (periode, '/', '-') periode,
code,
valuta,
--factuurdatum,
REPLACE (factuurdatum, '-', '/') factuurdatum,
periode,
factuurnummer,
--vervaldatum,
REPLACE (vervaldatum, '-', '/') vervaldatum,
nummer,
grtboekrek,
rel_kpl,
prj_activa,
bedrag,
debitcredit,
omschrijving,
btwcode
FROM ( SELECT v.fin_verkoopfactuur_id || '0000' sortering,
'VRK' code, -- Hard op 'VRK'
'EUR' valuta, -- Hard op 'EUR'
v.factuurdatum,
SUBSTR (v.maand, 1, 4) || '/' || SUBSTR (v.maand, -2) periode,
v.fin_verkoopfactuur_id factuurnummer, -- Boekstuknummer
v.vervaldatum,
'1' nummer, -- Hard op '1'
'1300' grtboekrek, -- TODO:Hard op '1300'
v.debiteur_nr rel_kpl,
NULL prj_activa, -- Hard op NULL
SUM (v.mndnet + v.mndbtw) bedrag, -- Totaalbedrag incl. BTW gegroepeerd over andere kolommen!
'debit' debitcredit,
'Total' omschrijving, -- Hard op 'Total'
NULL btwcode -- Hard op NULL
FROM bssc_v_fact_frozen v
WHERE v.po_nr = 'CHV'
AND v.maand >= TO_CHAR (ADD_MONTHS (SYSDATE, -12), 'yyyy') || '01'
GROUP BY v.fin_verkoopfactuur_id || '0000',
'VRK',
'EUR',
v.factuurdatum,
SUBSTR (v.maand, 1, 4) || '/' || SUBSTR (v.maand, -2),
v.fin_verkoopfactuur_id,
v.vervaldatum,
'1',
'1300',
v.debiteur_nr,
NULL,
'debit',
'Total',
NULL
UNION ALL
SELECT v.fin_verkoopfactuur_id || COALESCE (v.grtboekrek, '???') sortering,
'VRK' code, -- Hard op 'VRK'
'EUR' valuta, -- Hard op 'EUR'
v.factuurdatum,
SUBSTR (v.maand, 1, 4) || '/' || SUBSTR (v.maand, -2) periode,
v.fin_verkoopfactuur_id factuurnummer, -- Boekstuknummer
v.vervaldatum,
'1' nummer, -- Hard op '1'
v.grtboekrek,
kp.prs_kostenplaats_nr rel_kpl,
NULL prj_activa, -- Hard op NULL
SUM (v.mndnet) bedrag, -- Totaalbedrag excl. BTW gegroepeerd over andere kolommen!
'credit' debitcredit, -- TODO:Altijd 'credit' (ook negatieve bedragen)???
v.regel omschrijving,
DECODE (fin_btwtabelwaarde_code, 'H', 'VH', 'L', 'VL', 'V', 'VBINEU_VERL', 'VN') btwcode
FROM bssc_v_fact_frozen v, cnt_contract c, prs_kostenplaats kp
WHERE v.po_nr = 'CHV'
AND v.maand >= TO_CHAR (ADD_MONTHS (SYSDATE, -12), 'yyyy') || '01'
AND v.cnt_contract_key = c.cnt_contract_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
GROUP BY v.fin_verkoopfactuur_id || COALESCE (v.grtboekrek, '???'),
'VRK',
'EUR',
v.factuurdatum,
SUBSTR (v.maand, 1, 4) || '/' || SUBSTR (v.maand, -2),
v.fin_verkoopfactuur_id,
v.vervaldatum,
'1',
v.grtboekrek,
kp.prs_kostenplaats_nr,
NULL,
'credit',
v.regel,
DECODE (fin_btwtabelwaarde_code, 'H', 'VH', 'L', 'VL', 'V', 'VBINEU_VERL', 'VN')
ORDER BY 1);
CREATE OR REPLACE VIEW bssc_v_export_fact_chv
(
result,
result_order
)
AS -- View bevat alleen inhoud op de dag na de 1e werkdag van de maand!
SELECT 'code'
|| ';valuta'
|| ';factuurdatum'
|| ';periode'
|| ';factuurnummer'
|| ';vervaldatum'
|| ';nummer'
|| ';grtboekrek'
|| ';rel/kpl'
|| ';prj/activa'
|| ';bedrag'
|| ';debitcredit'
|| ';omschrijving'
|| ';btwcode',
0
FROM DUAL
WHERE FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 14 -- TODO:Nacht na 1e werkdag!
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS
(SELECT 1
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1))
UNION ALL
SELECT code
|| ';'
|| valuta
|| ';'
|| factuurdatum
|| ';'
|| periode
|| ';'
|| factuurnummer
|| ';'
|| vervaldatum
|| ';'
|| nummer
|| ';'
|| grtboekrek
|| ';'
|| rel_kpl
|| ';'
|| prj_activa
|| ';'
|| bedrag
|| ';'
|| debitcredit
|| ';'
|| omschrijving
|| ';'
|| btwcode,
ROWNUM
FROM bssc_v_rap_export_fact_chv
WHERE fclt_x_maand = TO_CHAR (ADD_MONTHS (SYSDATE, 1), 'yyyy-mm')
AND FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 14 -- TODO:Nacht na 1e werkdag!
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS
(SELECT 1
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1))
ORDER BY 2;
CREATE OR REPLACE VIEW bssc_v_rap_export_fact_cmd
(
hide_f_sortering,
fclt_x_maand,
code,
valuta,
factuurdatum,
periode,
factuurnummer,
vervaldatum,
nummer,
grtboekrek,
rel_kpl,
prj_activa,
bedrag,
debitcredit,
omschrijving,
btwcode
)
AS
SELECT ROWNUM,
REPLACE (periode, '/', '-') periode,
code,
valuta,
--factuurdatum,
REPLACE (factuurdatum, '-', '/') factuurdatum,
periode,
factuurnummer,
--vervaldatum,
REPLACE (vervaldatum, '-', '/') vervaldatum,
nummer,
grtboekrek,
rel_kpl,
prj_activa,
bedrag,
debitcredit,
omschrijving,
btwcode
FROM ( SELECT v.fin_verkoopfactuur_id || '0000' sortering,
'VRK' code, -- Hard op 'VRK'
'EUR' valuta, -- Hard op 'EUR'
v.factuurdatum,
SUBSTR (v.maand, 1, 4) || '/' || SUBSTR (v.maand, -2) periode,
v.fin_verkoopfactuur_id factuurnummer, -- Boekstuknummer
v.vervaldatum,
'1' nummer, -- Hard op '1'
'1300' grtboekrek, -- TODO:Hard op '1300'
v.debiteur_nr rel_kpl,
NULL prj_activa, -- Hard op NULL
SUM (v.mndnet + v.mndbtw) bedrag, -- Totaalbedrag incl. BTW gegroepeerd over andere kolommen!
'debit' debitcredit,
'Total' omschrijving, -- Hard op 'Total'
NULL btwcode -- Hard op NULL
FROM bssc_v_fact_frozen v
WHERE v.po_nr = 'CMD'
AND v.maand >= TO_CHAR (ADD_MONTHS (SYSDATE, -12), 'yyyy') || '01'
GROUP BY v.fin_verkoopfactuur_id || '0000',
'VRK',
'EUR',
v.factuurdatum,
SUBSTR (v.maand, 1, 4) || '/' || SUBSTR (v.maand, -2),
v.fin_verkoopfactuur_id,
v.vervaldatum,
'1',
'1300',
v.debiteur_nr,
NULL,
'debit',
'Total',
NULL
UNION ALL
SELECT v.fin_verkoopfactuur_id || COALESCE (v.grtboekrek, '???') sortering,
'VRK' code, -- Hard op 'VRK'
'EUR' valuta, -- Hard op 'EUR'
v.factuurdatum,
SUBSTR (v.maand, 1, 4) || '/' || SUBSTR (v.maand, -2) periode,
v.fin_verkoopfactuur_id factuurnummer, -- Boekstuknummer
v.vervaldatum,
'1' nummer, -- Hard op '1'
v.grtboekrek,
kp.prs_kostenplaats_nr rel_kpl,
NULL prj_activa, -- Hard op NULL
SUM (v.mndnet) bedrag, -- Totaalbedrag excl. BTW gegroepeerd over andere kolommen!
'credit' debitcredit, -- TODO:Altijd 'credit' (ook negatieve bedragen)???
v.regel omschrijving,
DECODE (fin_btwtabelwaarde_code, 'H', 'VH', 'L', 'VL', 'V', 'VBINEU_VERL', 'VN') btwcode
FROM bssc_v_fact_frozen v, cnt_contract c, prs_kostenplaats kp
WHERE v.po_nr = 'CMD'
AND v.maand >= TO_CHAR (ADD_MONTHS (SYSDATE, -12), 'yyyy') || '01'
AND v.cnt_contract_key = c.cnt_contract_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
GROUP BY v.fin_verkoopfactuur_id || COALESCE (v.grtboekrek, '???'),
'VRK',
'EUR',
v.factuurdatum,
SUBSTR (v.maand, 1, 4) || '/' || SUBSTR (v.maand, -2),
v.fin_verkoopfactuur_id,
v.vervaldatum,
'1',
v.grtboekrek,
kp.prs_kostenplaats_nr,
NULL,
'credit',
v.regel,
DECODE (fin_btwtabelwaarde_code, 'H', 'VH', 'L', 'VL', 'V', 'VBINEU_VERL', 'VN')
ORDER BY 1);
CREATE OR REPLACE VIEW bssc_v_export_fact_cmd
(
result,
result_order
)
AS -- View bevat alleen inhoud op de dag na de 1e werkdag van de maand!
SELECT 'code'
|| ';valuta'
|| ';factuurdatum'
|| ';periode'
|| ';factuurnummer'
|| ';vervaldatum'
|| ';nummer'
|| ';grtboekrek'
|| ';rel/kpl'
|| ';prj/activa'
|| ';bedrag'
|| ';debitcredit'
|| ';omschrijving'
|| ';btwcode',
0
FROM DUAL
WHERE FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 14 -- TODO:Nacht na 1e werkdag!
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS
(SELECT 1
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1))
UNION ALL
SELECT code
|| ';'
|| valuta
|| ';'
|| factuurdatum
|| ';'
|| periode
|| ';'
|| factuurnummer
|| ';'
|| vervaldatum
|| ';'
|| nummer
|| ';'
|| grtboekrek
|| ';'
|| rel_kpl
|| ';'
|| prj_activa
|| ';'
|| bedrag
|| ';'
|| debitcredit
|| ';'
|| omschrijving
|| ';'
|| btwcode,
ROWNUM
FROM bssc_v_rap_export_fact_cmd
WHERE fclt_x_maand = TO_CHAR (ADD_MONTHS (SYSDATE, 1), 'yyyy-mm')
AND FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 14 -- TODO:Nacht na 1e werkdag!
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS
(SELECT 1
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1))
ORDER BY 2;
CREATE OR REPLACE PROCEDURE bssc_select_fact (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Factureer/bevries verhuurcontractkosten en verwerk=AV alle eventuele correctiemeldingen!
CURSOR c1
IS
SELECT '[' || v.cnt_contract_nummer_intern || '.' || COALESCE (v.cnt_contract_versie, '0') || '|' || v.prs_debiteur_naam || '|' || v.regel || '] ' aanduiding,
v.*, m.mld_melding_status
FROM bssc_v_fact_actual v, mld_melding m
WHERE v.mld_melding_key = m.mld_melding_key(+)
ORDER BY v.prs_bedrijf_key, v.po_nr, v.sortering, v.regel, v.alg_plaatsaanduiding;
-- Verstuur verkoopfactuur naar huurder.
CURSOR c2
IS
SELECT DISTINCT '[' || vf.fin_verkoopfactuur_id || '|' || vf.fin_verkoopfactuur_maand || '|' || vf.prs_debiteur_naam || '] ' aanduiding,
vf.fin_verkoopfactuur_id, vf.fin_verkoopfactuur_maand, vf.prs_debiteur_naam,
vfk.fin_verkoopfactuurkop_key, vfk.fin_verkoopfactuurkop_id,
b.prs_bedrijf_email
FROM fin_verkoopfactuur vf, fin_verkoopfactuurkop vfk, prs_bedrijf b
WHERE (SUBSTR (vf.fin_verkoopfactuur_id, 5, 1) = '9' -- CHV
OR SUBSTR (vf.fin_verkoopfactuur_id, 5, 1) = '1') -- CMD
AND vf.fin_verkoopfactuur_maand = TO_CHAR (ADD_MONTHS (SYSDATE, 1), 'yyyymm')
AND vf.fin_verkoopfactuurkop_key = vfk.fin_verkoopfactuurkop_key
AND vf.prs_bedrijf_key = b.prs_bedrijf_key
ORDER BY vf.fin_verkoopfactuur_id;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_holiday NUMBER;
v_fact_count NUMBER;
v_amount_sum NUMBER (10, 2);
v_old_bedrijf_key NUMBER (10);
v_old_po_nr VARCHAR2 (50);
v_year_offset NUMBER (10);
v_factuur_id VARCHAR2 (30);
v_factkop_id VARCHAR2 (30);
v_verkoopfactuurkop_key NUMBER (10);
v_count NUMBER;
BEGIN
-- Eerst opruiming
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
SELECT COUNT ( * )
INTO v_holiday
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1);
-- LET OP: Twinfield-export van verhuurcontracten (= boekingsgangen) draait
-- dagelijks na middernacht (begin van dag) en de verkoop wordt maandelijks
-- alleen in de nacht na 10e werkdag van de maand doorgezet.
-- IF nacht na 10e werkdag van de maand (<28>n<EFBFBD>geen weekend <20>n<EFBFBD>geen vrije dag)!
-- count_work_days (d1,d2) bepaalt het #werkdagen van d1 tot d2 (als d1=d2,
-- dan return 0); daarom bepalen tov. laatste dag van vorige maand!
IF FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 14 -- Nacht na 1e werkdag!
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND v_holiday = 0
THEN
v_fact_count := 0;
v_amount_sum := 0;
v_old_bedrijf_key := -1;
v_old_po_nr := '';
-- Factureer/bevries verhuurcontractkosten en verwerk=AV alle eventuele
-- correctiemeldingen.
FOR rec IN c1
LOOP
BEGIN
IF rec.prs_bedrijf_key != v_old_bedrijf_key OR rec.po_nr != v_old_po_nr
THEN
IF rec.po_nr = 'CHV'
THEN
-- TODO:Afhankelijk van boekstuknummer-methodiek!
-- Bepaal max. sequence t/m voorgaande jaar (= aantal entries in
-- fin_verkoopfactuurkop-tabel).
SELECT COUNT ( * )
INTO v_year_offset
FROM fin_verkoopfactuurkop vfk
WHERE SUBSTR (vfk.fin_verkoopfactuurkop_id, 5, 1) = '9' -- Boekstuknummers in formaat <yyyy>9!
AND SUBSTR (vfk.fin_verkoopfactuurkop_id, 1, 4) < TO_CHAR (ADD_MONTHS (SYSDATE, 1), 'yyyy');
-- Bepaal fin_verkoopfactuur_id=boekstuknr. tbv. BCC-verkoopboek
-- obv. sequence '01' en begin elk nieuw jaar weer bij 1 door te
-- corrigeren met de hierboven bepaalde offset.
SELECT fac_s_user01.NEXTVAL - v_year_offset INTO v_count FROM DUAL;
v_factuur_id := TO_CHAR (ADD_MONTHS (SYSDATE, 1), 'yyyy') || '9' || SUBSTR ('0000' || TO_CHAR (v_count), -4);
ELSE -- rec.po_nr = 'CMD'
-- TODO:Afhankelijk van boekstuknummer-methodiek!
-- Bepaal max. sequence t/m voorgaande jaar (= aantal entries in
-- fin_verkoopfactuurkop-tabel).
SELECT COUNT ( * )
INTO v_year_offset
FROM fin_verkoopfactuurkop vfk
WHERE SUBSTR (vfk.fin_verkoopfactuurkop_id, 5, 1) = '1' -- Boekstuknummers in formaat <yyyy>1!
AND SUBSTR (vfk.fin_verkoopfactuurkop_id, 1, 4) < TO_CHAR (ADD_MONTHS (SYSDATE, 1), 'yyyy');
-- Bepaal fin_verkoopfactuur_id=boekstuknr. tbv. BCC-verkoopboek
-- obv. sequence '02' en begin elk nieuw jaar weer bij 1 door te
-- corrigeren met de hierboven bepaalde offset.
SELECT fac_s_user02.NEXTVAL - v_year_offset INTO v_count FROM DUAL;
v_factuur_id := TO_CHAR (ADD_MONTHS (SYSDATE, 1), 'yyyy') || '1' || SUBSTR ('0000' || TO_CHAR (v_count), -4);
END IF;
v_factkop_id := v_factuur_id || '_' || SUBSTR (rec.maand, 1, 4) || '-' || SUBSTR (rec.maand, -2) || '_' || rec.debiteur_nr;
INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id)
VALUES (v_factkop_id)
RETURNING fin_verkoopfactuurkop_key
INTO v_verkoopfactuurkop_key;
COMMIT;
v_old_bedrijf_key := rec.prs_bedrijf_key;
v_old_po_nr := rec.po_nr;
END IF;
v_errormsg := 'Fout toevoegen verkoopfactuur';
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key,
fin_verkoopfactuur_id,
fin_verkoopfactuur_datum,
fin_verkoopfactuur_omschr,
fin_verkoopfactuur_xmlnode,
fin_verkoopfactuur_refkey,
prs_kostenplaats_key,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaatsgrp_oms,
prs_kostensoort_oms,
prs_kostensoort_opmerking,
prs_kostensoort_refcode,
prs_bedrijf_key,
prs_debiteur_naam,
prs_kostensoortgrp_oms,
fin_verkoopfactuur_bedrag,
fin_verkoopfactuur_btw,
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_oms,
fin_btwtabelwaarde_perc,
fin_btwtabelwaarde_verlegd,
fin_verkoopfactuur_maand,
fin_verkoopfactuur_n1,
fin_verkoopfactuur_n2,
fin_verkoopfactuur_n3,
fin_verkoopfactuur_n4,
fin_verkoopfactuur_n5,
fin_verkoopfactuur_c1,
fin_verkoopfactuur_c2,
fin_verkoopfactuur_c3,
fin_verkoopfactuur_c4,
fin_verkoopfactuur_c5,
fin_verkoopfactuur_c6,
fin_verkoopfactuur_c7,
fin_verkoopfactuur_c8,
fin_verkoopfactuur_d1,
fin_verkoopfactuur_d2,
fin_verkoopfactuur_d3,
fin_verkoopfactuur_d4,
fin_verkoopfactuur_d5)
VALUES (v_verkoopfactuurkop_key,
v_factuur_id,
TO_DATE (rec.factuurdatum, 'dd-mm-yyyy'),
rec.cnt_contract_nummer || '/=' || rec.sortering || rec.regel,
'contract',
rec.cnt_contract_key,
rec.prs_kostenplaats_key,
rec.prs_kostenplaats_nr,
rec.prs_kostenplaats_omschrijving,
rec.prs_kostenplaatsgrp_oms,
rec.grtboekrek,
rec.grtboekrek,
rec.grtboekrek,
rec.prs_bedrijf_key,
rec.prs_debiteur_naam,
NULL,
rec.mndnet,
rec.mndbtw,
rec.fin_btwtabelwaarde_code,
rec.fin_btwtabelwaarde_oms,
rec.fin_btwtabelwaarde_perc,
rec.fin_btwtabelwaarde_verlegd,
rec.maand,
--rec.cnt_contract_korting, -- n1/kortingspercentage
TO_NUMBER (NULL), -- n1
rec.mld_melding_key, -- n2/correctiemelding
TO_NUMBER (NULL), -- n3
TO_NUMBER (NULL), -- n4
TO_NUMBER (NULL), -- n5
TO_CHAR (rec.aantal), -- c1/aantal
TO_CHAR (rec.tarief), -- c2/tarief
TO_CHAR (rec.vvo_toeslag), -- c3/vvo_toeslag
TO_CHAR (rec.verv_toeslag), -- c4/verv_toeslag
TO_CHAR (rec.korting_pm2), -- c5/korting_pm2
rec.alg_onroerendgoed_type || rec.alg_onroerendgoed_keys || '=' || rec.alg_plaatsaanduiding, -- c6
rec.debiteur_nr || '=' || rec.btw_nr, -- c7
rec.mld_melding_omschrijving, -- c8
TO_DATE (rec.vervaldatum, 'dd-mm-yyyy'), -- d1
TO_DATE (rec.mndbegin, 'dd-mm-yyyy'), -- d2
TO_DATE (rec.mndeinde, 'dd-mm-yyyy'), -- d3
TO_DATE (rec.dagbegin, 'dd-mm-yyyy'), -- d4
TO_DATE (rec.dageinde, 'dd-mm-yyyy')); -- d5
COMMIT;
v_fact_count := v_fact_count + 1;
v_amount_sum := v_amount_sum + rec.mndnet;
IF (rec.mld_melding_key IS NOT NULL) -- Correctiemelding?
THEN
v_errormsg := 'Fout verwerken correctiemelding';
-- Overgang van Geaccepteerd naar Verwerkt niet mogelijk, dus
-- eerst afmelden (als nog niet Afgemeld)!
IF (rec.mld_melding_status = 4) -- ACP
THEN
MLD.setmeldingstatus (rec.mld_melding_key, 5, NULL); -- AFM
END IF;
MLD.setmeldingstatus (rec.mld_melding_key, 6, NULL); -- VER
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'FACT-freeze');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', 'FACT-verkoop/#regels: ' || TO_CHAR (v_fact_count), TO_CHAR (v_amount_sum));
-- Verstuur verkoopfactuur naar huurder.
FOR rec IN c2
LOOP
BEGIN
v_errormsg := 'Fout toevoegen CUST01-noti';
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_prioriteit,
fac_notificatie_datum,
fac_notificatie_sender_email,
fac_notificatie_attachments)
VALUES (281, -- CUST01-noti
2, -- Mail
DECODE ( -- To-adres
rec.prs_bedrijf_email,
NULL, 'finance.smartservices@brightlands.com',
'finance.smartservices@brightlands.com'), -- TODO:rec.prs_bedrijf_email || ';finance.smartservices@brightlands.com'),
'Factuur ' || rec.fin_verkoopfactuur_id || ' ' || rec.fin_verkoopfactuur_maand || ' ' || rec.prs_debiteur_naam,
rec.fin_verkoopfactuurkop_key,
2, -- Prioriteit
TRUNC (SYSDATE) + (23 / 24), -- TODO
'finance.smartservices@brightlands.com',
'/../../Fplace_A/CUST/BSSC/export/PDF/Backup/' || rec.fin_verkoopfactuurkop_id || '.pdf'); -- TODO
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'FACT-noti');
COMMIT;
END;
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', v_errormsg, 'FACT-export afgebroken!');
END;
/
-- 30 Vergadering/2,00 Ruimte
-- 50 Events/8,00 Ruimte
-- 90 Roomservice/0,50 Voorzieningen
-- 170 Huurders Events/4,00 Ruimte
-- 190 Projectruimtes Etage 4/8,00 Ruimte
CREATE OR REPLACE VIEW bssc_v_addd_actual
AS
WITH lopendeperiode AS (SELECT TO_CHAR (add_months (SYSDATE, -1), 'yyyymm') maand
FROM dual)
SELECT '*CONCEPT*' fin_verkoopfactuur_id,
TRIM (COALESCE (x.en, '-')) po_nr,
NULL contract_id,
'1' || TO_CHAR (x.reslev, 'yyyymmdd') || SUBSTR ('0000' || TO_CHAR (res_rsv_ruimte_key), -7) || TO_CHAR (volgnr) || x.prs_kostensoort_refcode || x.res_voorziening sortering,
'Reservering ' || x.res_id regel,
'R' || x.res_id regel_id,
DECODE (x.volgnr, 0, x.res_voorziening || ' [' || TO_CHAR (ROUND (x.aantal, 2)) || ' uur]', 2, TO_CHAR (x.aantal) || 'x ' || x.res_voorziening, x.res_voorziening) regel_oms,
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum, TO_CHAR (SYSDATE + 30, 'dd-mm-yyyy') vervaldatum,
'reservering' xmlnode,
x.res_rsv_ruimte_key refkey,
x.prs_bedrijf_key, x.prs_bedrijf_naam prs_debiteur_naam, TRIM (x.debiteur_nr) debiteur_nr,
x.btw_nr,
x.cp contactpersoon,
x.adres, x.postcode, x.plaats, x.land,
x.prs_perslid_naam_full aanvrager,
x.prs_kostenplaats_key, x.prs_kostenplaats_nr, x.prs_kostenplaats_omschrijving, x.prs_kostenplaatsgrp_oms,
DECODE (x.btw_vl, '1', 'V', DECODE (x.btw, 'VL', 'L', 'H')) fin_btwtabelwaarde_code,
DECODE (x.btw_vl, '1', 'Verlegd', DECODE (x.btw, 'VL', 'Laag', 'Hoog')) fin_btwtabelwaarde_oms,
DECODE (x.btw_vl, '1', 0, DECODE (x.btw, 'VL', 9, 21)) fin_btwtabelwaarde_perc,
DECODE (x.btw_vl, '1', 1, TO_NUMBER (NULL)) fin_btwtabelwaarde_verlegd,
x.maand,
TO_CHAR (TO_DATE (x.maand, 'yyyymm'), 'dd-mm-yyyy') mndbegin,
TO_CHAR (LAST_DAY (TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy') mndeinde,
SUM (COALESCE (verw_prijs, prijs, 0)) mndnet, -- Netto bedrag
SUM (ROUND (DECODE (x.btw_vl, '1', 0, DECODE (x.btw, 'VL', 0.09, 0.21)) * COALESCE (verw_prijs, prijs, 0), 2)) mndbtw, -- BTW bedrag
x.prs_kostensoort_refcode grtboekrek,
x.prs_kostensoort_altcode grtboekrek_oms,
TO_NUMBER (NULL) mld_melding_key -- Correctiemelding-key
FROM (SELECT rrr.res_rsv_ruimte_key, -- Ruimte-regel
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr res_id,
TRIM (h.prs_overeenkomst_nr) debiteur_nr,
ks.prs_kostensoort_refcode,
ks.prs_kostensoort_altcode,
0 volgnr,
(rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24 aantal, -- Duur in uren
rr.res_ruimte_nr || ' [' || TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy') || ']' res_voorziening,
rrr.res_rsv_ruimte_van reslev,
rrr.res_rsv_ruimte_prijs verw_prijs,
res.getruimteprijs (rrr.res_rsv_ruimte_key) prijs,
'VH' btw, -- Hard 21%
NULL, --c.cnt_contract_key,
NULL, --c.cnt_contract_nummer,
NULL, --c.ins_discipline_key,
h.prs_bedrijf_key,
h.prs_bedrijf_naam,
cpk.res_kenmerkreservering_waarde cp,
enk.res_kenmerkreservering_waarde en,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_adres, h.prs_bedrijf_post_adres) adres,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_postcode, h.prs_bedrijf_post_postcode) postcode,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_plaats, h.prs_bedrijf_post_plaats) plaats,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_land, h.prs_bedrijf_post_land) land,
btwnr.prs_kenmerklink_waarde btw_nr,
btwvl.prs_kenmerklink_waarde btw_vl,
cp.contactpersoon,
pf.prs_perslid_naam_full,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kpg.prs_kostenplaatsgrp_oms,
lp.maand
FROM lopendeperiode lp,
res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar1,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NOT NULL
GROUP BY res_ruimte_key) rar2,
alg_v_allonroerendgoed aog,
(SELECT kw.res_rsv_ruimte_key, fac.safe_to_number (kw.res_kenmerkreservering_waarde) prs_bedrijf_key
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 161) rh, -- Relatiegegevens
(SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 181) cpk, -- Contactpersoon
(SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 148) enk, -- Extern nummer
prs_v_aanwezigbedrijf h,
(SELECT prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL AND prs_kenmerk_key = -1) btwnr, -- BTW-nummer (NL)
(SELECT prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL AND prs_kenmerk_key = -1) btwvl, -- BTW verlegd
( SELECT prs_bedrijf_key, MIN (TRIM (prs_contactpersoon_voorletters || ' ' || TRIM (prs_contactpersoon_tussenv || ' ' || prs_contactpersoon_naam))) contactpersoon
FROM prs_contactpersoon
WHERE prs_contactpersoon_verwijder IS NULL AND prs_contactpersoon_titel = '*' -- Contactpersoon op facturen
GROUP BY prs_bedrijf_key) cp,
prs_perslid p,
prs_v_perslid_fullnames_all pf,
--prs_v_afdeling_boom ab,
--prs_kenmerklink kl,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg,
res_ruimte rr,
res_discipline rd,
prs_kostensoort ks
WHERE rrr.res_activiteit_key != -1 -- Alle activiteiten!
AND rrr.res_rsv_ruimte_van > TO_DATE ('20190301', 'yyyymmdd')
AND rrr.res_rsv_ruimte_van < TRUNC (SYSDATE, 'mm')
--AND rrr.res_status_bo_key = 5 -- Afgemeld
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key -- Alleen Ruimte-reserveringen!
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key
AND rrr.res_rsv_ruimte_key = rh.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = cpk.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = enk.res_rsv_ruimte_key(+)
AND rh.prs_bedrijf_key = h.prs_bedrijf_key(+)
AND h.prs_bedrijf_key = btwnr.prs_link_key(+)
AND h.prs_bedrijf_key = btwvl.prs_link_key(+)
AND h.prs_bedrijf_key = cp.prs_bedrijf_key(+)
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
--AND p.prs_afdeling_key = ab.prs_afdeling_key
--AND ab.prs_bedrijf_key = 2442 -- Huurders Smart Services Campus
--AND ab.prs_afdeling_key1 != 561 -- Geen factuur naar Campus Management & Development!
--AND ab.prs_afdeling_key1 = kl.prs_link_key(+)
--AND kl.prs_kenmerklink_niveau(+) = 'A'
--AND kl.prs_kenmerk_key(+) = -1 -- Debiteurnummer
--AND kl.prs_kenmerklink_waarde = h.prs_overeenkomst_nr(+)
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key) = rr.res_ruimte_key
AND rr.res_discipline_key = rd.ins_discipline_key
AND rd.prs_kostensoort_key = ks.prs_kostensoort_key(+)
UNION ALL -- Korting-regel
SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr res_id,
TRIM (h.prs_overeenkomst_nr) debiteur_nr,
ks.prs_kostensoort_refcode,
ks.prs_kostensoort_altcode,
1 volgnr,
1 aantal,
'Korting' || ' [' || TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy') || ']' res_voorziening,
rrr.res_rsv_ruimte_van reslev,
-1 * COALESCE (rrr.res_rsv_ruimte_korting, 0) verw_prijs,
-1 * COALESCE (rrr.res_rsv_ruimte_korting, 0) prijs,
'VH' btw, -- Hard 21%
NULL, --c.cnt_contract_key,
NULL, --c.cnt_contract_nummer,
NULL, --c.ins_discipline_key,
h.prs_bedrijf_key,
h.prs_bedrijf_naam,
cpk.res_kenmerkreservering_waarde cp,
enk.res_kenmerkreservering_waarde en,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_adres, h.prs_bedrijf_post_adres) adres,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_postcode, h.prs_bedrijf_post_postcode) postcode,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_plaats, h.prs_bedrijf_post_plaats) plaats,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_land, h.prs_bedrijf_post_land) land,
btwnr.prs_kenmerklink_waarde btw_nr,
btwvl.prs_kenmerklink_waarde btw_vl,
cp.contactpersoon,
pf.prs_perslid_naam_full,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kpg.prs_kostenplaatsgrp_oms,
lp.maand
FROM lopendeperiode lp,
res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar1,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NOT NULL
GROUP BY res_ruimte_key) rar2,
alg_v_allonroerendgoed aog,
(SELECT kw.res_rsv_ruimte_key, fac.safe_to_number (kw.res_kenmerkreservering_waarde) prs_bedrijf_key
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 161) rh, -- Relatiegegevens
(SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 181) cpk, -- Contactpersoon
(SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 148) enk, -- Extern nummer
prs_v_aanwezigbedrijf h,
(SELECT prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL AND prs_kenmerk_key = -1) btwnr, -- BTW-nummer (NL)
(SELECT prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL AND prs_kenmerk_key = -1) btwvl, -- BTW verlegd
( SELECT prs_bedrijf_key, MIN (TRIM (prs_contactpersoon_voorletters || ' ' || TRIM (prs_contactpersoon_tussenv || ' ' || prs_contactpersoon_naam))) contactpersoon
FROM prs_contactpersoon
WHERE prs_contactpersoon_verwijder IS NULL AND prs_contactpersoon_titel = '*' -- Contactpersoon op facturen
GROUP BY prs_bedrijf_key) cp,
prs_perslid p,
prs_v_perslid_fullnames_all pf,
--prs_v_afdeling_boom ab,
--prs_kenmerklink kl,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg,
res_ruimte rr,
res_discipline rd,
prs_kostensoort ks
WHERE rrr.res_activiteit_key != -1 -- Alle activiteiten!
AND rrr.res_rsv_ruimte_van > TO_DATE ('20190301', 'yyyymmdd')
AND rrr.res_rsv_ruimte_van < TRUNC (SYSDATE, 'mm')
--AND rrr.res_status_bo_key = 5 -- Afgemeld
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND COALESCE (rrr.res_rsv_ruimte_korting, 0) != 0
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key -- Alleen Ruimte-reserveringen!
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key
AND rrr.res_rsv_ruimte_key = rh.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = cpk.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = enk.res_rsv_ruimte_key(+)
AND rh.prs_bedrijf_key = h.prs_bedrijf_key(+)
AND h.prs_bedrijf_key = btwnr.prs_link_key(+)
AND h.prs_bedrijf_key = btwvl.prs_link_key(+)
AND h.prs_bedrijf_key = cp.prs_bedrijf_key(+)
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
--AND p.prs_afdeling_key = ab.prs_afdeling_key
--AND ab.prs_bedrijf_key = 2442 -- Huurders Smart Services Campus
--AND ab.prs_afdeling_key1 != 561 -- Geen factuur naar Campus Management & Development!
--AND ab.prs_afdeling_key1 = kl.prs_link_key(+)
--AND kl.prs_kenmerklink_niveau(+) = 'A'
--AND kl.prs_kenmerk_key(+) = -1 -- Debiteurnummer
--AND kl.prs_kenmerklink_waarde = h.prs_overeenkomst_nr(+)
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key) = rr.res_ruimte_key
AND rr.res_discipline_key = rd.ins_discipline_key
AND rd.prs_kostensoort_key = ks.prs_kostensoort_key(+)
UNION ALL -- Catering-regels
SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr res_id,
TRIM (h.prs_overeenkomst_nr) debiteur_nr,
ks.prs_kostensoort_refcode,
ks.prs_kostensoort_altcode,
2 volgnr,
rra.res_rsv_artikel_aantal aantal,
LTRIM (rra.res_artikel_omschrijving) || ' [' || TO_CHAR (res_rsv_artikel_levering, 'dd-mm-yyyy') || ']' res_voorziening,
rra.res_rsv_artikel_levering reslev,
rra.res_rsv_artikel_prijs verw_prijs,
rra.res_rsv_artikel_aantal * rra.res_artikel_prijs prijs,
rra.btw,
NULL, --c.cnt_contract_key,
NULL, --c.cnt_contract_nummer,
NULL, --c.ins_discipline_key,
h.prs_bedrijf_key,
h.prs_bedrijf_naam,
cpk.res_kenmerkreservering_waarde cp,
enk.res_kenmerkreservering_waarde en,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_adres, h.prs_bedrijf_post_adres) adres,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_postcode, h.prs_bedrijf_post_postcode) postcode,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_plaats, h.prs_bedrijf_post_plaats) plaats,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_land, h.prs_bedrijf_post_land) land,
btwnr.prs_kenmerklink_waarde btw_nr,
btwvl.prs_kenmerklink_waarde btw_vl,
cp.contactpersoon,
pf.prs_perslid_naam_full,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kpg.prs_kostenplaatsgrp_oms,
lp.maand
FROM lopendeperiode lp,
res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar1,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NOT NULL
GROUP BY res_ruimte_key) rar2,
alg_v_allonroerendgoed aog,
(SELECT kw.res_rsv_ruimte_key, fac.safe_to_number (kw.res_kenmerkreservering_waarde) prs_bedrijf_key
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 161) rh, -- Relatiegegevens
(SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 181) cpk, -- Contactpersoon
(SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 148) enk, -- Extern nummer
prs_v_aanwezigbedrijf h,
(SELECT prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL AND prs_kenmerk_key = -1) btwnr, -- BTW-nummer (NL)
(SELECT prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL AND prs_kenmerk_key = -1) btwvl, -- BTW verlegd
( SELECT prs_bedrijf_key, MIN (TRIM (prs_contactpersoon_voorletters || ' ' || TRIM (prs_contactpersoon_tussenv || ' ' || prs_contactpersoon_naam))) contactpersoon
FROM prs_contactpersoon
WHERE prs_contactpersoon_verwijder IS NULL AND prs_contactpersoon_titel = '*' -- Contactpersoon op facturen
GROUP BY prs_bedrijf_key) cp,
prs_perslid p,
prs_v_perslid_fullnames_all pf,
--prs_v_afdeling_boom ab,
--prs_kenmerklink kl,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg,
(SELECT rra.res_rsv_ruimte_key,
rra.res_rsv_artikel_levering,
rra.res_rsv_artikel_prijs,
rra.res_rsv_artikel_aantal,
ra.res_artikel_prijs,
DECODE (COALESCE (rra.res_rsv_artikel_btw, ra.res_artikel_btw),
NULL, 'VH',
21, 'VH',
'VL') btw,
ra.res_discipline_key,
ra.res_artikel_omschrijving,
ra.res_artikel_eenheid
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
WHERE rra.res_rsv_artikel_levering > TO_DATE ('20190301', 'yyyymmdd')
AND rra.res_rsv_artikel_levering < TRUNC (SYSDATE, 'mm')
--AND rra.res_status_bo_key = 5 -- Afgemeld
AND rra.res_rsv_artikel_dirtlevel = 0
AND rra.res_artikel_key = ra.res_artikel_key) rra,
res_discipline rd,
prs_kostensoort ks
WHERE rrr.res_activiteit_key != -1 -- Alle activiteiten!
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key
AND rrr.res_rsv_ruimte_key = rh.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = cpk.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = enk.res_rsv_ruimte_key(+)
AND rh.prs_bedrijf_key = h.prs_bedrijf_key(+)
AND h.prs_bedrijf_key = btwnr.prs_link_key(+)
AND h.prs_bedrijf_key = btwvl.prs_link_key(+)
AND h.prs_bedrijf_key = cp.prs_bedrijf_key(+)
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
--AND p.prs_afdeling_key = ab.prs_afdeling_key
--AND ab.prs_bedrijf_key = 2442 -- Huurders Smart Services Campus
--AND ab.prs_afdeling_key1 != 561 -- Geen factuur naar Campus Management & Development!
--AND ab.prs_afdeling_key1 = kl.prs_link_key(+)
--AND kl.prs_kenmerklink_niveau(+) = 'A'
--AND kl.prs_kenmerk_key(+) = -1 -- Debiteurnummer
--AND kl.prs_kenmerklink_waarde = h.prs_overeenkomst_nr(+)
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_discipline_key = rd.ins_discipline_key
AND rd.prs_kostensoort_key = ks.prs_kostensoort_key(+)) x
GROUP BY '*CONCEPT*',
TRIM (COALESCE (x.en, '-')),
NULL,
'1' || TO_CHAR (x.reslev, 'yyyymmdd') || SUBSTR ('0000' || TO_CHAR (res_rsv_ruimte_key), -7) || TO_CHAR (volgnr) || x.prs_kostensoort_refcode || x.res_voorziening,
'Reservering ' || x.res_id,
'R' || x.res_id,
DECODE (x.volgnr, 0, x.res_voorziening || ' [' || TO_CHAR (ROUND (x.aantal, 2)) || ' uur]', 2, TO_CHAR (x.aantal) || 'x ' || x.res_voorziening, x.res_voorziening),
TO_CHAR (SYSDATE, 'dd-mm-yyyy'), TO_CHAR (SYSDATE + 30, 'dd-mm-yyyy'),
'reservering',
x.res_rsv_ruimte_key,
x.prs_bedrijf_key, x.prs_bedrijf_naam, TRIM (x.debiteur_nr),
x.btw_nr,
x.cp,
x.adres, x.postcode, x.plaats, x.land,
x.prs_perslid_naam_full,
x.prs_kostenplaats_key, x.prs_kostenplaats_nr, x.prs_kostenplaats_omschrijving, x.prs_kostenplaatsgrp_oms,
DECODE (x.btw_vl, '1', 'V', DECODE (x.btw, 'VL', 'L', 'H')),
DECODE (x.btw_vl, '1', 'Verlegd', DECODE (x.btw, 'VL', 'Laag', 'Hoog')),
DECODE (x.btw_vl, '1', 0, DECODE (x.btw, 'VL', 9, 21)),
DECODE (x.btw_vl, '1', 1, TO_NUMBER (NULL)),
x.maand,
TO_CHAR (TO_DATE (x.maand, 'yyyymm'), 'dd-mm-yyyy'),
TO_CHAR (LAST_DAY (TO_DATE (x.maand, 'yyyymm')), 'dd-mm-yyyy'),
x.prs_kostensoort_refcode,
x.prs_kostensoort_altcode,
TO_NUMBER (NULL)
UNION ALL -- TODO:Klantwensen!
SELECT '*CONCEPT*' fin_verkoopfactuur_id,
TRIM (COALESCE (km.mld_kenmerkmelding_waarde, '-')) po_nr,
NULL contract_id,
'2' || SUBSTR ('0000' || TO_CHAR (o.mld_melding_key), -7) || '/' || SUBSTR ('00' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr), -3) sortering,
'Klantwens ' || sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) regel,
sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) regel_id,
--td.ins_discipline_omschrijving || '/' || sm.mld_stdmelding_omschrijving regel_oms,
DECODE (m.mld_melding_onderwerp, NULL, '', 'Onderwerp: ' || TRIM (m.mld_melding_onderwerp) || CHR (13) || CHR (10)) || 'Omschrijving: ' || COALESCE (SUBSTR (TRIM (m.mld_melding_omschrijving), 1, 2000), '-')
regel_oms,
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum, TO_CHAR (SYSDATE + 30, 'dd-mm-yyyy') vervaldatum,
'opdracht' xmlnode,
o.mld_opdr_key refkey,
h.prs_bedrijf_key, h.prs_bedrijf_naam prs_debiteur_naam, TRIM (kl.prs_kenmerklink_waarde) debiteur_nr,
btwnr.prs_kenmerklink_waarde btw_nr,
NULL contactpersoon,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_adres, h.prs_bedrijf_post_adres) adres,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_postcode, h.prs_bedrijf_post_postcode) postcode,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_plaats, h.prs_bedrijf_post_plaats) plaats,
DECODE (h.prs_bedrijf_post_adres, NULL, h.prs_bedrijf_bezoek_land, h.prs_bedrijf_post_land) land,
pf.prs_perslid_naam_full aanvrager,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kpg.prs_kostenplaatsgrp_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'V', 'H') fin_btwtabelwaarde_code,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 'Verlegd', 'Hoog') fin_btwtabelwaarde_oms,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, 21) fin_btwtabelwaarde_perc,
DECODE (btwvl.prs_kenmerklink_waarde, '1', 1, TO_NUMBER (NULL)) fin_btwtabelwaarde_verlegd,
lp.maand,
TO_CHAR (TO_DATE (lp.maand, 'yyyymm'), 'dd-mm-yyyy') mndbegin,
TO_CHAR (LAST_DAY (TO_DATE (lp.maand, 'yyyymm')), 'dd-mm-yyyy') mndeinde,
ROUND (COALESCE (o.mld_opdr_kosten, 0), 2) mndnet, -- Netto bedrag
ROUND (DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, 0.21) * COALESCE (o.mld_opdr_kosten, 0), 2) mndbtw, -- BTW bedrag
COALESCE (ksm.prs_kostensoort_refcode, ksv.prs_kostensoort_refcode) grtboekrek,
COALESCE (ksm.prs_kostensoort_altcode, ksv.prs_kostensoort_altcode) grtboekrek_oms,
TO_NUMBER (NULL) mld_melding_key -- Correctiemelding-key
FROM lopendeperiode lp,
mld_opdr o,
mld_melding m,
(SELECT km.mld_melding_key, km.mld_kenmerkmelding_waarde
FROM mld_v_aanwezigkenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = -1) km, -- Extern nummer
prs_perslid p,
prs_v_perslid_fullnames_all pf,
prs_v_afdeling_boom ab,
prs_kenmerklink kl,
prs_v_aanwezigbedrijf h,
(SELECT prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL AND prs_kenmerk_key = -1) btwnr, -- BTW-nummer (NL)
(SELECT prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL AND prs_kenmerk_key = -1) btwvl, -- BTW verlegd
( SELECT prs_bedrijf_key, MIN (TRIM (prs_contactpersoon_voorletters || ' ' || TRIM (prs_contactpersoon_tussenv || ' ' || prs_contactpersoon_naam))) contactpersoon
FROM prs_contactpersoon
WHERE prs_contactpersoon_verwijder IS NULL AND prs_contactpersoon_titel = '*' -- Contactpersoon op facturen
GROUP BY prs_bedrijf_key) cp,
alg_v_allonrgoed_gegevens og,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg,
mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd,
prs_kostensoort ksm,
prs_kostensoort ksv
WHERE o.mld_statusopdr_key = 9 -- Afgerond
AND o.mld_opdr_ordernr <= TO_CHAR (SYSDATE, 'yyyy-mm') || '-01'
AND o.mld_typeopdr_key IN (-1) -- TODO:Welke opdrachttypen?
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_melding_key = km.mld_melding_key(+)
AND m.prs_perslid_key_voor = p.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = 2442 -- Huurders Smart Services Campus
AND ab.prs_afdeling_key1 = kl.prs_link_key(+)
AND kl.prs_kenmerklink_niveau(+) = 'A'
AND kl.prs_kenmerk_key(+) = -1 -- Debiteurnummer
AND kl.prs_kenmerklink_waarde = h.prs_overeenkomst_nr(+)
AND h.prs_bedrijf_key = btwnr.prs_link_key(+)
AND h.prs_bedrijf_key = btwvl.prs_link_key(+)
AND h.prs_bedrijf_key = cp.prs_bedrijf_key(+)
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key
--AND SUBSTR (kp.prs_kostenplaats_upper, 1, 5) = '50900'
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+);
CREATE OR REPLACE VIEW bssc_v_addd_frozen
AS
SELECT vf.fin_verkoopfactuur_id,
vf.fin_verkoopfactuur_c1 po_nr,
vf.fin_verkoopfactuur_c2 contract_id,
vf.fin_verkoopfactuur_c3 sortering,
SUBSTR (vf.fin_verkoopfactuur_omschr, 1, INSTR (vf.fin_verkoopfactuur_omschr, '=') - 1) regel,
SUBSTR (vf.fin_verkoopfactuur_omschr, INSTR (vf.fin_verkoopfactuur_omschr, '=') + 1) regel_id,
vf.fin_verkoopfactuur_c8 regel_oms,
TO_CHAR (vf.fin_verkoopfactuur_datum, 'dd-mm-yyyy') factuurdatum, TO_CHAR (vf.fin_verkoopfactuur_d1, 'dd-mm-yyyy') vervaldatum,
vf.fin_verkoopfactuur_xmlnode xmlnode,
vf.fin_verkoopfactuur_refkey refkey,
vf.prs_bedrijf_key, vf.prs_debiteur_naam,
SUBSTR (vf.fin_verkoopfactuur_c7, 1, INSTR (vf.fin_verkoopfactuur_c7, '=') - 1) debiteur_nr,
SUBSTR (vf.fin_verkoopfactuur_c7, INSTR (vf.fin_verkoopfactuur_c7, '=') + 1) btw_nr,
vf.fin_verkoopfactuur_c4 contactpersoon,
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_adres, b.prs_bedrijf_post_adres) adres, -- Niet historisch bewaard!
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_postcode, b.prs_bedrijf_post_postcode) postcode, -- Niet historisch bewaard!
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_plaats, b.prs_bedrijf_post_plaats) plaats, -- Niet historisch bewaard!
DECODE (b.prs_bedrijf_post_adres, NULL, b.prs_bedrijf_bezoek_land, b.prs_bedrijf_post_land) land, -- Niet historisch bewaard!
vf.fin_verkoopfactuur_c5 aanvrager,
vf.prs_kostenplaats_key, vf.prs_kostenplaats_nr, vf.prs_kostenplaats_omschrijving, vf.prs_kostenplaatsgrp_oms,
vf.fin_btwtabelwaarde_code,
vf.fin_btwtabelwaarde_oms,
vf.fin_btwtabelwaarde_perc,
vf.fin_btwtabelwaarde_verlegd,
vf.fin_verkoopfactuur_maand maand,
TO_CHAR (vf.fin_verkoopfactuur_d2, 'dd-mm-yyyy') mndbegin,
TO_CHAR (vf.fin_verkoopfactuur_d3, 'dd-mm-yyyy') mndeinde,
vf.fin_verkoopfactuur_bedrag mndnet, -- Netto bedrag
vf.fin_verkoopfactuur_btw mndbtw, -- BTW bedrag
vf.prs_kostensoort_refcode grtboekrek,
vf.prs_kostensoort_oms grtboekrek_oms,
vf.fin_verkoopfactuur_n1 mld_melding_key
FROM fin_verkoopfactuur vf, prs_bedrijf b
WHERE SUBSTR (vf.fin_verkoopfactuur_id, 1, 1) = '?' -- TODO:Of andere conditie?
AND vf.prs_bedrijf_key = b.prs_bedrijf_key
ORDER BY vf.prs_bedrijf_key, 1, 2, 3, 4;
-- TODO:Kostensoorten, etc.!
CREATE OR REPLACE VIEW bssc_v_rap_export_addd
(
hide_f_sortering,
fclt_x_maand,
code,
valuta,
factuurdatum,
periode,
factuurnummer,
vervaldatum,
nummer,
grtboekrek,
rel_kpl,
prj_activa,
bedrag,
debitcredit,
omschrijving,
btwcode
)
AS
SELECT ROWNUM,
REPLACE (periode, '/', '-') periode,
code,
valuta,
factuurdatum,
periode,
factuurnummer,
vervaldatum,
nummer,
grtboekrek,
rel_kpl,
prj_activa,
bedrag,
debitcredit,
omschrijving,
btwcode
FROM (SELECT fin_verkoopfactuur_id || '0000' || debiteur_nr sortering,
'VRK' code, -- Hard op 'VRK'
'EUR' valuta, -- Hard op 'EUR'
factuurdatum,
--SUBSTR (maand, 1, 4) || '/' || SUBSTR (maand, -2) periode,
SUBSTR (factuurdatum, 7, 4) || '/' || SUBSTR (factuurdatum, 4, 2) periode,
fin_verkoopfactuur_id factuurnummer, -- Boekstuknummer
vervaldatum,
'1' nummer, -- Hard op '1'
'1300' grtboekrek, -- TODO:Hard op '1300'
debiteur_nr rel_kpl,
NULL prj_activa, -- Hard op NULL
netsum + btwsum + (0.065 * netsum) + (0.21 * 0.065 * netsum) bedrag, -- Totaalbedrag incl. BTW gegroepeerd over andere kolommen!
'debit' debitcredit,
'Total' omschrijving, -- Hard op 'Total'
NULL btwcode -- Hard op NULL
FROM ( SELECT fin_verkoopfactuur_id, debiteur_nr, factuurdatum, maand, vervaldatum,
SUM (mndnet) netsum, SUM (mndbtw) btwsum
FROM bssc_v_addd_frozen
--WHERE maand >= TO_CHAR (ADD_MONTHS (SYSDATE, -12), 'yyyy') || '01'
GROUP BY fin_verkoopfactuur_id, debiteur_nr, factuurdatum, maand, vervaldatum)
UNION ALL
SELECT fin_verkoopfactuur_id || debiteur_nr || DECODE (grtboekrek, '812x', DECODE (fin_btwtabelwaarde_code, 'H', '8120', '8121'), grtboekrek) sortering,
'VRK' code, -- Hard op 'VRK'
'EUR' valuta, -- Hard op 'EUR'
factuurdatum,
--SUBSTR (maand, 1, 4) || '/' || SUBSTR (maand, -2) periode,
SUBSTR (factuurdatum, 7, 4) || '/' || SUBSTR (factuurdatum, 4, 2) periode,
fin_verkoopfactuur_id factuurnummer, -- Boekstuknummer
vervaldatum,
'1' nummer, -- Hard op '1'
DECODE (grtboekrek, '812x', DECODE (fin_btwtabelwaarde_code, 'H', '8120', '8121'), grtboekrek) grtboekrek,
--prs_kostenplaats_nr rel_kpl,
--DECODE (SUBSTR (prs_kostenplaats_nr, 1, 5), '50900', '50900', prs_kostenplaats_nr) rel_kpl,
'50900',
NULL prj_activa, -- Hard op NULL
SUM (mndnet) bedrag, -- Totaalbedrag excl. BTW gegroepeerd over andere kolommen!
'credit' debitcredit, -- TODO:Altijd 'credit' (ook negatieve bedragen)???
DECODE (grtboekrek, '812x', grtboekrek_oms || DECODE (fin_btwtabelwaarde_code, 'H', ' high', ' low'), '8130', regel, grtboekrek_oms) omschrijving,
DECODE (fin_btwtabelwaarde_code, 'H', 'VH', 'L', 'VL', 'V', 'VBINEU_VERL', 'VN') btwcode
FROM bssc_v_addd_frozen
--WHERE maand >= TO_CHAR (ADD_MONTHS (SYSDATE, -12), 'yyyy') || '01'
GROUP BY fin_verkoopfactuur_id || debiteur_nr || DECODE (grtboekrek, '812x', DECODE (fin_btwtabelwaarde_code, 'H', '8120', '8121'), grtboekrek),
'VRK',
'EUR',
factuurdatum,
SUBSTR (factuurdatum, 7, 4) || '/' || SUBSTR (factuurdatum, 4, 2),
fin_verkoopfactuur_id,
vervaldatum,
'1',
DECODE (grtboekrek, '812x', DECODE (fin_btwtabelwaarde_code, 'H', '8120', '8121'), grtboekrek),
--prs_kostenplaats_nr rel_kpl,
--DECODE (SUBSTR (prs_kostenplaats_nr, 1, 5), '50900', '50900', prs_kostenplaats_nr),
'50900',
NULL,
'credit',
DECODE (grtboekrek, '812x', grtboekrek_oms || DECODE (fin_btwtabelwaarde_code, 'H', ' high', ' low'), '8130', regel, grtboekrek_oms),
DECODE (fin_btwtabelwaarde_code, 'H', 'VH', 'L', 'VL', 'V', 'VBINEU_VERL', 'VN')
UNION ALL
SELECT fin_verkoopfactuur_id || debiteur_nr || '8136' sortering,
'VRK' code, -- Hard op 'VRK'
'EUR' valuta, -- Hard op 'EUR'
factuurdatum,
--SUBSTR (maand, 1, 4) || '/' || SUBSTR (maand, -2) periode,
SUBSTR (factuurdatum, 7, 4) || '/' || SUBSTR (factuurdatum, 4, 2) periode,
fin_verkoopfactuur_id factuurnummer, -- Boekstuknummer
vervaldatum,
'1' nummer, -- Hard op '1'
'8136', -- Handling fee
--prs_kostenplaats_nr rel_kpl,
--DECODE (SUBSTR (prs_kostenplaats_nr, 1, 5), '50900', '50900', prs_kostenplaats_nr) rel_kpl,
'50900',
NULL prj_activa, -- Hard op NULL
SUM (0.065 * mndnet) bedrag, -- Totaalbedrag excl. BTW gegroepeerd over andere kolommen!
'credit' debitcredit, -- TODO:Altijd 'credit' (ook negatieve bedragen)???
'Handling fee' omschrijving,
'VH' btwcode
FROM bssc_v_addd_frozen
--WHERE maand >= TO_CHAR (ADD_MONTHS (SYSDATE, -12), 'yyyy') || '01'
GROUP BY fin_verkoopfactuur_id || debiteur_nr || '8136',
'VRK',
'EUR',
factuurdatum,
SUBSTR (factuurdatum, 7, 4) || '/' || SUBSTR (factuurdatum, 4, 2),
fin_verkoopfactuur_id,
vervaldatum,
'1',
'8136',
--prs_kostenplaats_nr,
--DECODE (SUBSTR (prs_kostenplaats_nr, 1, 5), '50900', '50900', prs_kostenplaats_nr),
'50900',
NULL,
'credit',
'Handling fee',
'VH'
ORDER BY 1);
CREATE OR REPLACE VIEW bssc_v_export_addd
(
result,
result_order
)
AS -- View bevat alleen inhoud op de dag na de 10e werkdag van de maand!
SELECT 'code'
|| ';valuta'
|| ';factuurdatum'
|| ';periode'
|| ';factuurnummer'
|| ';vervaldatum'
|| ';nummer'
|| ';grtboekrek'
|| ';rel/kpl'
|| ';prj/activa'
|| ';bedrag'
|| ';debitcredit'
|| ';omschrijving'
|| ';btwcode',
0
FROM DUAL
WHERE FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 10 -- Nacht na 10e werkdag!
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS
(SELECT 1
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1))
UNION ALL
SELECT code
|| ';'
|| valuta
|| ';'
|| factuurdatum
|| ';'
|| periode
|| ';'
|| factuurnummer
|| ';'
|| vervaldatum
|| ';'
|| nummer
|| ';'
|| grtboekrek
|| ';'
|| rel_kpl
|| ';'
|| prj_activa
|| ';'
|| bedrag
|| ';'
|| debitcredit
|| ';'
|| omschrijving
|| ';'
|| btwcode,
ROWNUM
FROM bssc_v_rap_export_addd
WHERE fclt_x_maand = TO_CHAR (SYSDATE, 'yyyy-mm')
AND FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 10 -- Nacht na 10e werkdag!
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS
(SELECT 1
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1))
ORDER BY 2;
CREATE OR REPLACE PROCEDURE bssc_select_addd (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Factureer/bevries kosten van additionele diensten en verwerk=AV alle
-- aanwezige klantwens-opdrachten en correctie-meldingen (1 regel in view)!
CURSOR c1
IS
SELECT '[' || v.regel_id || '|' || v.prs_debiteur_naam || '] ' aanduiding,
v.*, o.mld_statusopdr_key, m.mld_melding_status
FROM (SELECT *
FROM bssc_v_addd_actual) v
LEFT JOIN mld_opdr o
ON v.xmlnode = 'opdracht' AND v.refkey = o.mld_opdr_key
LEFT JOIN mld_melding m
ON v.mld_melding_key = m.mld_melding_key
ORDER BY v.prs_bedrijf_key, v.po_nr, v.sortering;
-- Verstuur verkoopfactuur naar huurder.
CURSOR c2
IS
SELECT DISTINCT '[' || vf.fin_verkoopfactuur_id || '|' || vf.fin_verkoopfactuur_maand || '|' || vf.prs_debiteur_naam || '] ' aanduiding,
vf.fin_verkoopfactuur_id, vf.fin_verkoopfactuur_maand, vf.prs_debiteur_naam,
vfk.fin_verkoopfactuurkop_key, vfk.fin_verkoopfactuurkop_id,
b.prs_bedrijf_email
FROM fin_verkoopfactuur vf, fin_verkoopfactuurkop vfk, prs_bedrijf b
WHERE SUBSTR (vf.fin_verkoopfactuur_id, 1, 1) = '?' -- vf.fin_verkoopfactuur_xmlnode != 'contract'
AND vf.fin_verkoopfactuur_maand = TO_CHAR (ADD_MONTHS (SYSDATE, -1), 'yyyymm')
AND vf.fin_verkoopfactuurkop_key = vfk.fin_verkoopfactuurkop_key
AND vf.prs_bedrijf_key = b.prs_bedrijf_key
ORDER BY vf.fin_verkoopfactuur_id;
-- Verwerk reserveringen (in juiste volgorde)!
CURSOR c3
IS
SELECT DISTINCT '[' || TO_CHAR (rra.res_rsv_ruimte_key) || '|' || TO_CHAR (rra.res_rsv_artikel_key) || '] ' aanduiding,
rra.res_rsv_ruimte_key,
rra.res_rsv_artikel_key,
rra.res_status_bo_key,
rra.res_artikel_key
FROM fin_verkoopfactuur vf, res_v_aanwezigrsv_artikel rra
WHERE SUBSTR (vf.fin_verkoopfactuur_id, 1, 1) = '?' -- vf.fin_verkoopfactuur_xmlnode != 'contract'
AND vf.fin_verkoopfactuur_maand = TO_CHAR (ADD_MONTHS (SYSDATE, -1), 'yyyymm')
AND vf.fin_verkoopfactuur_xmlnode = 'reservering'
AND vf.fin_verkoopfactuur_refkey = rra.res_rsv_ruimte_key
UNION ALL
SELECT DISTINCT '[' || TO_CHAR (rrr.res_rsv_ruimte_key) || '] ' aanduiding,
rrr.res_rsv_ruimte_key,
NULL res_rsv_artikel_key,
rrr.res_status_bo_key,
NULL res_artikel_key
FROM fin_verkoopfactuur vf, res_v_aanwezigrsv_ruimte rrr
WHERE SUBSTR (vf.fin_verkoopfactuur_id, 1, 1) = '?' -- vf.fin_verkoopfactuur_xmlnode != 'contract'
AND vf.fin_verkoopfactuur_maand = TO_CHAR (ADD_MONTHS (SYSDATE, -1), 'yyyymm')
AND vf.fin_verkoopfactuur_xmlnode = 'reservering'
AND vf.fin_verkoopfactuur_refkey = rrr.res_rsv_ruimte_key
ORDER BY 3, 2;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_holiday NUMBER;
v_fact_count NUMBER;
v_amount_sum NUMBER (10, 2);
v_old_bedrijf_key NUMBER (10);
v_old_po_nr VARCHAR2 (50);
v_factuur_id VARCHAR2 (30);
v_factkop_id VARCHAR2 (30);
v_verkoopfactuurkop_key NUMBER (10);
v_count NUMBER;
v_prijs NUMBER (9, 2);
BEGIN
-- Eerst opruiming
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
SELECT COUNT ( * )
INTO v_holiday
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1);
-- LET OP: Twinfield-export van additionele diensten (= boekingsgangen)
-- draait dagelijks na middernacht (begin van dag) en de verkoop wordt
-- maandelijks alleen in de nacht na 10e werkdag van de maand doorgezet.
-- IF nacht na 10e werkdag van de maand (<28>n<EFBFBD>geen weekend <20>n<EFBFBD>geen vrije dag)!
-- count_work_days (d1,d2) bepaalt het #werkdagen van d1 tot d2 (als d1=d2,
-- dan return 0); daarom bepalen tov. laatste dag van vorige maand!
IF FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 10 -- Nacht na 10e werkdag!
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND v_holiday = 0
THEN
v_fact_count := 0;
v_amount_sum := 0;
v_old_bedrijf_key := -1;
v_old_po_nr := '';
-- Factureer/bevries kosten van additionele diensten en verwerk=AV alle
-- eventuele correctiemeldingen.
FOR rec IN c1
LOOP
BEGIN
IF rec.mndnet != 0 AND (rec.prs_bedrijf_key != v_old_bedrijf_key OR rec.po_nr != v_old_po_nr)
THEN
SELECT fac_s_user02.NEXTVAL INTO v_count FROM DUAL;
v_factuur_id := '3' || SUBSTR ('00000000' || TO_CHAR (v_count), -8);
v_factkop_id := v_factuur_id || '_' || SUBSTR (rec.maand, 1, 4) || '-' || SUBSTR (rec.maand, -2) || '_' || rec.debiteur_nr;
INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id)
VALUES (v_factkop_id)
RETURNING fin_verkoopfactuurkop_key
INTO v_verkoopfactuurkop_key;
COMMIT;
v_old_bedrijf_key := rec.prs_bedrijf_key;
v_old_po_nr := rec.po_nr;
END IF;
IF rec.mndnet != 0
THEN
v_errormsg := 'Fout toevoegen verkoopfactuur';
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key,
fin_verkoopfactuur_id,
fin_verkoopfactuur_datum,
fin_verkoopfactuur_omschr,
fin_verkoopfactuur_xmlnode,
fin_verkoopfactuur_refkey,
prs_kostenplaats_key,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaatsgrp_oms,
prs_kostensoort_oms,
prs_kostensoort_opmerking,
prs_kostensoort_refcode,
prs_bedrijf_key,
prs_debiteur_naam,
prs_kostensoortgrp_oms,
fin_verkoopfactuur_bedrag,
fin_verkoopfactuur_btw,
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_oms,
fin_btwtabelwaarde_perc,
fin_btwtabelwaarde_verlegd,
fin_verkoopfactuur_maand,
fin_verkoopfactuur_n1,
fin_verkoopfactuur_n2,
fin_verkoopfactuur_n3,
fin_verkoopfactuur_n4,
fin_verkoopfactuur_n5,
fin_verkoopfactuur_c1,
fin_verkoopfactuur_c2,
fin_verkoopfactuur_c3,
fin_verkoopfactuur_c4,
fin_verkoopfactuur_c5,
fin_verkoopfactuur_c6,
fin_verkoopfactuur_c7,
fin_verkoopfactuur_c8,
fin_verkoopfactuur_d1,
fin_verkoopfactuur_d2,
fin_verkoopfactuur_d3,
fin_verkoopfactuur_d4,
fin_verkoopfactuur_d5)
VALUES (v_verkoopfactuurkop_key,
v_factuur_id,
TO_DATE (rec.factuurdatum, 'dd-mm-yyyy'),
rec.regel || '=' || rec.regel_id,
rec.xmlnode,
rec.refkey,
rec.prs_kostenplaats_key,
rec.prs_kostenplaats_nr,
rec.prs_kostenplaats_omschrijving,
rec.prs_kostenplaatsgrp_oms,
rec.grtboekrek_oms,
rec.grtboekrek,
rec.grtboekrek,
rec.prs_bedrijf_key,
rec.prs_debiteur_naam,
NULL,
rec.mndnet,
rec.mndbtw,
rec.fin_btwtabelwaarde_code,
rec.fin_btwtabelwaarde_oms,
rec.fin_btwtabelwaarde_perc,
rec.fin_btwtabelwaarde_verlegd,
rec.maand,
rec.mld_melding_key, -- n1/correctiemelding
TO_NUMBER (NULL), -- n2
TO_NUMBER (NULL), -- n3
TO_NUMBER (NULL), -- n4
TO_NUMBER (NULL), -- n5
rec.po_nr, -- c1
rec.contract_id, -- c2
rec.sortering, -- c3
rec.contactpersoon, -- c4
rec.aanvrager, -- c5
NULL, -- c6
rec.debiteur_nr || '=' || rec.btw_nr, -- c7
rec.regel_oms, -- c8
TO_DATE (rec.vervaldatum, 'dd-mm-yyyy'), -- d1
TO_DATE (rec.mndbegin, 'dd-mm-yyyy'), -- d2
TO_DATE (rec.mndeinde, 'dd-mm-yyyy'), -- d3
TO_DATE (NULL), -- d4
TO_DATE (NULL)); -- d5
COMMIT;
v_fact_count := v_fact_count + 1;
v_amount_sum := v_amount_sum + rec.mndnet;
END IF;
IF rec.xmlnode = 'opdracht'
THEN
v_errormsg := 'Fout verwerken opdrachtkosten';
MLD.setopdrachtstatus (rec.refkey, 7, NULL);
END IF;
IF rec.mld_melding_key IS NOT NULL -- Correctiemelding?
THEN
v_errormsg := 'Fout verwerken correctiemelding';
-- Overgang van Geaccepteerd naar Verwerkt niet mogelijk, dus
-- eerst afmelden (als nog niet Afgemeld)!
IF rec.mld_melding_status = 4 -- ACP
THEN
MLD.setmeldingstatus (rec.mld_melding_key, 5, NULL); -- AFM
END IF;
MLD.setmeldingstatus (rec.mld_melding_key, 6, NULL); -- VER
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'ADDD-freeze');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', 'ADDD-verkoop/#regels: ' || TO_CHAR (v_fact_count), TO_CHAR (v_amount_sum));
-- Verstuur verkoopfactuur naar huurder.
FOR rec IN c2
LOOP
BEGIN
v_errormsg := 'Fout toevoegen CUST02-noti';
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_prioriteit,
fac_notificatie_datum,
fac_notificatie_sender_email,
fac_notificatie_attachments)
VALUES (341, -- CUST02-noti
2, -- Mail
DECODE ( -- To-adres
rec.prs_bedrijf_email,
NULL, 'finance.smartservices@brightlands.com',
rec.prs_bedrijf_email || ';finance.smartservices@brightlands.com'),
'Factuur ' || rec.fin_verkoopfactuur_id || ' ' || rec.fin_verkoopfactuur_maand || ' ' || rec.prs_debiteur_naam,
rec.fin_verkoopfactuurkop_key,
2, -- Prioriteit
TRUNC (SYSDATE) + (7 / 24),
'finance.smartservices@brightlands.com',
'/../../Fplace5i/CUST/BSSC/export/PDF/' || rec.fin_verkoopfactuurkop_id || '.pdf');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'ADDD-noti');
COMMIT;
END;
END LOOP;
FOR rec IN c3
LOOP
BEGIN
IF rec.res_rsv_artikel_key IS NOT NULL
THEN -- Catering-regel
IF rec.res_status_bo_key = 2
THEN
v_errormsg := 'Fout bepalen res_rsv_artikel_prijs';
SELECT res.getartikelprijs (rec.res_rsv_artikel_key)
INTO v_prijs
FROM DUAL;
v_errormsg := 'Fout afmelden res_rsv_artikel';
UPDATE res_rsv_artikel
SET res_status_bo_key = 5,
res_rsv_artikel_prijs = v_prijs,
res_rsv_artikel_inkoopprijs =
(SELECT res_artikel_inkoopprijs
FROM res_artikel
WHERE res_artikel_key = rec.res_artikel_key),
res_rsv_artikel_btw =
(SELECT res_artikel_btw
FROM res_artikel
WHERE res_artikel_key = rec.res_artikel_key)
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
v_errormsg := 'Fout tracken afmelding';
fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, 'Catering afgemeld');
END IF;
IF rec.res_status_bo_key != 6
THEN
v_errormsg := 'Fout verwerken res_rsv_artikel';
UPDATE res_rsv_artikel
SET res_status_bo_key = 6 -- AV (en zet ook Verwerkt-date)
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
v_errormsg := 'Fout tracken verwerking';
fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, 'Catering verwerkt');
END IF;
ELSE -- Ruimte-regel
IF rec.res_status_bo_key = 2
THEN
v_errormsg := 'Fout bepalen res_rsv_ruimte_prijs';
SELECT res.getruimteprijs (rec.res_rsv_ruimte_key)
INTO v_prijs
FROM DUAL;
v_errormsg := 'Fout afmelden res_rsv_ruimte';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 5,
res_rsv_ruimte_prijs = v_prijs
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
v_errormsg := 'Fout tracken afmelding';
fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
END IF;
IF rec.res_status_bo_key != 6
THEN
v_errormsg := 'Fout verwerken res_rsv_ruimte';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 6 -- AV
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
v_errormsg := 'Fout tracken verwerking';
fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
END IF;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'ADDD-AV');
COMMIT;
END;
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', v_errormsg, 'ADDD-export afgebroken!');
END;
/
-- Export om een BAT-bestand aan te maken dat de PDF-bestanden genereert. Deze
-- export moet voor 5:00 worden gedraaid, daarna (7:00) worden de notificaties
-- vanuit putOrders verstuurd.
CREATE OR REPLACE VIEW bssc_v_export_pdf_att
(
result,
result_order
)
AS -- Facturatie huur
SELECT 'CALL GENEREER1FIN_VK_PDF.BAT '
|| TO_CHAR (vfk.fin_verkoopfactuurkop_key)
|| ' '
|| vfk.fin_verkoopfactuurkop_id,
vfk.fin_verkoopfactuurkop_key
FROM fac_notificatie n, fin_verkoopfactuurkop vfk
WHERE n.fac_srtnotificatie_key = 281 -- CUST01-noti
AND n.fac_notificatie_refkey = vfk.fin_verkoopfactuurkop_key
UNION ALL -- Facturatie additionele diensten
SELECT 'CALL GENEREER1FIN_VK_PDF.BAT '
|| TO_CHAR (vfk.fin_verkoopfactuurkop_key)
|| ' '
|| vfk.fin_verkoopfactuurkop_id,
vfk.fin_verkoopfactuurkop_key
FROM fac_notificatie n, fin_verkoopfactuurkop vfk
WHERE n.fac_srtnotificatie_key = 341 -- CUST02-noti
AND n.fac_notificatie_refkey = vfk.fin_verkoopfactuurkop_key;
/*
CREATE OR REPLACE VIEW bssc_v_rap_fact_controle
(
fclt_x_stroom,
fclt_f_controle,
controle_ref
)
AS
WITH periodegeg AS (SELECT * FROM bssc_v_fact_actual)
SELECT DISTINCT 'Verhuur', 'BCC Huurcontract niet gekoppeld aan FIN-plaats',
v.cnt_contract_nummer_intern || DECODE (v.cnt_contract_versie, NULL, '', '.' || v.cnt_contract_versie)
FROM periodegeg v, cnt_contract c
WHERE v.mld_melding_key IS NULL
AND v.cnt_contract_key = c.cnt_contract_key
AND c.ins_discipline_key = 621 -- Huurcontracten
AND v.alg_plaatsaanduiding NOT LIKE '%FIN%'
UNION ALL
SELECT DISTINCT 'Verhuur', 'BCC Huurcontract oppervlakte = 0',
xref
FROM ( SELECT v.cnt_contract_nummer_intern || DECODE (v.cnt_contract_versie, NULL, '', '.' || v.cnt_contract_versie) || ' [' || v.regel || ']' xref,
SUM (COALESCE (l_opp, 0) + COALESCE (h_opp, 0) + COALESCE (k_opp, 0) + COALESCE (o_opp, 0) + COALESCE (t_opp, 0) ) oppervlakte
FROM periodegeg v, cnt_contract c
WHERE v.mld_melding_key IS NULL
AND v.cnt_contract_key = c.cnt_contract_key
AND c.ins_discipline_key = 621 -- Huurcontracten
GROUP BY v.cnt_contract_nummer_intern || DECODE (v.cnt_contract_versie, NULL, '', '.' || v.cnt_contract_versie) || ' [' || v.regel || ']')
WHERE oppervlakte = 0
UNION ALL
SELECT DISTINCT 'Verhuur', 'Contract(regel) bedrag = 0',
xref
FROM ( SELECT v.cnt_contract_nummer_intern || DECODE (v.cnt_contract_versie, NULL, '', '.' || v.cnt_contract_versie) || ' [' || v.regel || ']' xref,
SUM (v.mndnet) bedrag
FROM periodegeg v
WHERE v.mld_melding_key IS NULL
GROUP BY v.cnt_contract_nummer_intern || DECODE (v.cnt_contract_versie, NULL, '', '.' || v.cnt_contract_versie) || ' [' || v.regel || ']')
WHERE bedrag = 0
UNION ALL
SELECT DISTINCT 'Verhuur', 'Contract(regel) bedrag < 0',
xref
FROM ( SELECT v.cnt_contract_nummer_intern || DECODE (v.cnt_contract_versie, NULL, '', '.' || v.cnt_contract_versie) || ' [' || v.regel || ']' xref,
SUM (v.mndnet) bedrag
FROM periodegeg v
WHERE v.mld_melding_key IS NULL
AND v.regel NOT LIKE 'CFF%'
GROUP BY v.cnt_contract_nummer_intern || DECODE (v.cnt_contract_versie, NULL, '', '.' || v.cnt_contract_versie) || ' [' || v.regel || ']')
WHERE bedrag < 0
UNION ALL
SELECT DISTINCT 'Verhuur', 'Contractkorting >= 100%',
v.cnt_contract_nummer_intern || DECODE (v.cnt_contract_versie, NULL, '', '.' || v.cnt_contract_versie)
FROM periodegeg v
WHERE v.mld_melding_key IS NULL
AND v.cnt_contract_korting >= 100
UNION ALL
SELECT DISTINCT 'Verhuur', 'Contract met GVR-overlap?',
v.cnt_contract_nummer_intern || DECODE (v.cnt_contract_versie, NULL, '', '.' || v.cnt_contract_versie)
FROM periodegeg v, alg_v_allonroerendgoed aog
WHERE v.mld_melding_key IS NULL
AND v.alg_onroerendgoed_type IN ('G', 'V', 'R')
AND v.alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND EXISTS (SELECT 1
FROM periodegeg v1, alg_v_allonroerendgoed aog1
WHERE v1.alg_onroerendgoed_type IN ('G', 'V', 'R')
AND v1.alg_onroerendgoed_keys = aog1.alg_onroerendgoed_keys
AND v1.cnt_contract_key = v.cnt_contract_key -- Hetzelfde contract
AND aog1.alg_gebouw_key = aog.alg_gebouw_key -- Hetzelfde gebouw
AND v1.alg_onroerendgoed_type != v.alg_onroerendgoed_type -- Ander type
AND v1.alg_onroerendgoed_keys != v.alg_onroerendgoed_keys) -- Andere regel
UNION ALL
SELECT DISTINCT 'Verhuur', 'Dezelfde plaats gekoppeld aan meer contracten',
v.alg_plaatsaanduiding
FROM periodegeg v
WHERE v.mld_melding_key IS NULL
AND v.alg_onroerendgoed_type IN ('G', 'V', 'R')
AND EXISTS (SELECT 1
FROM periodegeg v1
WHERE v1.alg_onroerendgoed_type IN ('G', 'V', 'R')
AND v1.alg_onroerendgoed_keys = v.alg_onroerendgoed_keys -- Dezelfde plaats
AND v1.cnt_contract_key != v.cnt_contract_key) -- Ander contract
UNION ALL
SELECT DISTINCT 'Verhuur', 'E-mail adres van debiteur onbekend',
v.prs_debiteur_naam
FROM periodegeg v, prs_bedrijf b
WHERE v.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_email IS NULL
UNION ALL
SELECT DISTINCT 'Verhuur', 'Factuuradres van debiteur onbekend/onvolledig',
v.prs_debiteur_naam
FROM periodegeg v
WHERE v.mld_melding_key IS NULL
AND (v.adres IS NULL OR v.postcode IS NULL OR v.plaats IS NULL OR v.land IS NULL)
UNION ALL
SELECT DISTINCT 'Verhuur', 'Correctiebedrag = 0',
TO_CHAR (v.mld_melding_key)
FROM periodegeg v
WHERE v.mld_melding_key IS NOT NULL
AND v.mndnet = 0
UNION ALL
SELECT DISTINCT 'Verhuur', 'Correctiemelding nog niet in conceptfactuur',
TO_CHAR (m.mld_melding_key)
FROM mld_melding m
WHERE m.mld_stdmelding_key = 482 -- Financi<63>le correctie
AND m.mld_melding_status IN (0, 2, 3) -- Pending/Ingevoerd/Ingezien
UNION ALL
SELECT DISTINCT 'Verhuur', 'Contract gekoppeld aan locatie',
v.cnt_contract_nummer_intern || DECODE (v.cnt_contract_versie, NULL, '', '.' || v.cnt_contract_versie)
FROM periodegeg v
WHERE v.mld_melding_key IS NULL
AND v.alg_onroerendgoed_type = 'L'
UNION ALL
SELECT DISTINCT 'Verhuur', 'Debiteurnummer onbekend',
v.prs_debiteur_naam
FROM periodegeg v, prs_bedrijf b
WHERE v.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_overeenkomst_nr IS NULL
UNION ALL
SELECT 'Verhuur', 'Aantal factuurregels > max. #regels (zoals geconfigureerd)',
x.prs_debiteur_naam || ' / ' || x.po_nr
FROM ( SELECT prs_debiteur_naam, po_nr, COUNT (*) factuurregels
FROM bssc_v_fact_actual
GROUP BY prs_debiteur_naam, po_nr) x
WHERE x.factuurregels > fac.getsetting ('res_xml_max_rsv_ruimte')
UNION ALL
SELECT 'Add. Diensten', 'H-afdeling leeg', a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving
FROM prs_afdeling a
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 22 -- Huurders
AND a.prs_afdeling_parentkey IS NULL
AND NOT EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid p
WHERE p.prs_afdeling_key = a.prs_afdeling_key)
UNION ALL
SELECT 'Add. Diensten', 'H-afdeling zonder logins', a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving
FROM prs_afdeling a
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 22 -- Huurders
AND a.prs_afdeling_parentkey IS NULL
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid p
WHERE p.prs_afdeling_key = a.prs_afdeling_key)
AND NOT EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid p
WHERE COALESCE (p.prs_perslid_oslogin, p.prs_perslid_oslogin2) IS NOT NULL
AND p.prs_afdeling_key = a.prs_afdeling_key)
UNION ALL
SELECT DISTINCT 'Add. Diensten', 'H-afdeling op ander dan niveau-1', a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving
FROM prs_afdeling a
WHERE a.prs_afdeling_verwijder IS NULL
AND EXISTS
(SELECT 1
FROM prs_v_afdeling_boom ab
WHERE ab.prs_bedrijf_key = 22 -- Huurders
AND COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key3, ab.prs_afdeling_key4, ab.prs_afdeling_key5) IS NOT NULL
AND ab.prs_afdeling_key = a.prs_afdeling_key)
UNION ALL
SELECT DISTINCT 'Add. Diensten', 'H-afdeling niet gelinkt aan H-relatie', a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving
FROM prs_afdeling a--, prs_v_aanwezigperslid ap
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 22 -- Huurders
AND a.prs_afdeling_parentkey IS NULL
--AND a.prs_afdeling_key = ap.prs_afdeling_key
--AND COALESCE (ap.prs_perslid_oslogin, ap.prs_perslid_oslogin2) IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM prs_v_aanwezigkenmerklink kl, prs_v_aanwezigbedrijf b
WHERE kl.prs_kenmerklink_niveau = 'A'
AND kl.prs_kenmerk_key = 1001 -- Debiteurnummer
AND kl.prs_kenmerklink_waarde = b.prs_overeenkomst_nr
AND kl.prs_link_key = a.prs_afdeling_key)
UNION ALL
SELECT DISTINCT 'Add. Diensten', 'H-afdeling niet gelinkt aan actief AD-contract', a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving
FROM prs_afdeling a--, prs_v_aanwezigperslid ap
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 22 -- Huurders
AND a.prs_afdeling_parentkey IS NULL
--AND a.prs_afdeling_key = ap.prs_afdeling_key
--AND COALESCE (ap.prs_perslid_oslogin, ap.prs_perslid_oslogin2) IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key IN (1841, 1842)
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (SYSDATE) -- Van-datum < einde te factureren maand
AND c.cnt_contract_looptijd_tot > TRUNC (SYSDATE, 'mm') -- Tot-datum > begin te factureren maand
AND c.prs_afdeling_key_eig = a.prs_afdeling_key)
UNION ALL
SELECT DISTINCT 'Add. Diensten', 'H-afdeling gelinkt aan >1 actief AD-contract', a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving
FROM prs_afdeling a, cnt_v_aanwezigcontract c1
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 22 -- Huurders
AND a.prs_afdeling_parentkey IS NULL
AND a.prs_afdeling_key = c1.prs_afdeling_key_eig
AND c1.ins_discipline_key IN (1841, 1842)
AND TRUNC (c1.cnt_contract_looptijd_van) < LAST_DAY (SYSDATE) -- Van-datum < einde te factureren maand
AND c1.cnt_contract_looptijd_tot > TRUNC (SYSDATE, 'mm') -- Tot-datum > begin te factureren maand
AND c1.cnt_contract_status = 0 -- NIET Gesloten
AND EXISTS
(SELECT 1
FROM cnt_v_aanwezigcontract c2
WHERE c2.ins_discipline_key IN (1841, 1842)
AND TRUNC (c2.cnt_contract_looptijd_van) < LAST_DAY (SYSDATE) -- Van-datum < einde te factureren maand
AND c2.cnt_contract_looptijd_tot > TRUNC (SYSDATE, 'mm') -- Tot-datum > begin te factureren maand
AND c2.cnt_contract_status = 0 -- NIET Gesloten
AND c2.ins_discipline_key = c1.ins_discipline_key
AND c2.prs_afdeling_key_eig = c1.prs_afdeling_key_eig
AND c2.cnt_contract_key != c1.cnt_contract_key)
UNION ALL
SELECT DISTINCT 'Add. Diensten', 'H-relatie niet gelinkt aan H-afdeling', b.prs_bedrijf_naam
FROM prs_v_aanwezigbedrijf b
WHERE b.prs_overeenkomst_nr IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM prs_afdeling a, prs_v_aanwezigkenmerklink kl
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 22 -- Huurders
AND a.prs_afdeling_parentkey IS NULL
AND a.prs_afdeling_key = kl.prs_link_key
AND kl.prs_kenmerklink_niveau = 'A'
AND kl.prs_kenmerk_key = 1001 -- Debiteurnummer
AND kl.prs_kenmerklink_waarde = b.prs_overeenkomst_nr)
UNION ALL
SELECT DISTINCT 'Add. Diensten', 'H-relatie niet gelinkt aan actief AD-contract', b.prs_bedrijf_naam
FROM prs_v_aanwezigbedrijf b
WHERE EXISTS
(SELECT 1
FROM prs_afdeling a, prs_v_aanwezigkenmerklink kl
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 22 -- Huurders
AND a.prs_afdeling_parentkey IS NULL
AND a.prs_afdeling_key = kl.prs_link_key
AND kl.prs_kenmerklink_niveau = 'A'
AND kl.prs_kenmerk_key = 1001 -- Debiteurnummer
AND kl.prs_kenmerklink_waarde = b.prs_overeenkomst_nr)
AND NOT EXISTS
(SELECT 1
FROM cnt_v_aanwezigcontract c
WHERE c.ins_discipline_key IN (1841, 1842)
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (SYSDATE) -- Van-datum < einde te factureren maand
AND c.cnt_contract_looptijd_tot > TRUNC (SYSDATE, 'mm') -- Tot-datum > begin te factureren maand
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key)
UNION ALL
SELECT DISTINCT 'Add. Diensten', 'H-relatie gelinkt aan >1 actief AD-contract', b.prs_bedrijf_naam
FROM prs_v_aanwezigbedrijf b, cnt_v_aanwezigcontract c1
WHERE b.prs_bedrijf_key = c1.cnt_prs_bedrijf_key
AND c1.ins_discipline_key IN (1841, 1842)
AND TRUNC (c1.cnt_contract_looptijd_van) < LAST_DAY (SYSDATE) -- Van-datum < einde te factureren maand
AND c1.cnt_contract_looptijd_tot > TRUNC (SYSDATE, 'mm') -- Tot-datum > begin te factureren maand
AND c1.cnt_contract_status = 0 -- NIET Gesloten
AND EXISTS
(SELECT 1
FROM prs_afdeling a, prs_v_aanwezigkenmerklink kl
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 22 -- Huurders
AND a.prs_afdeling_parentkey IS NULL
AND a.prs_afdeling_key = kl.prs_link_key
AND kl.prs_kenmerklink_niveau = 'A'
AND kl.prs_kenmerk_key = 1001 -- Debiteurnummer
AND kl.prs_kenmerklink_waarde = b.prs_overeenkomst_nr)
AND EXISTS
(SELECT 1
FROM cnt_v_aanwezigcontract c2
WHERE c2.ins_discipline_key IN (1841, 1842)
AND TRUNC (c2.cnt_contract_looptijd_van) < LAST_DAY (SYSDATE) -- Van-datum < einde te factureren maand
AND c2.cnt_contract_looptijd_tot > TRUNC (SYSDATE, 'mm') -- Tot-datum > begin te factureren maand
AND c2.cnt_contract_status = 0 -- NIET Gesloten
AND c2.ins_discipline_key = c1.ins_discipline_key
AND c2.prs_afdeling_key_eig = c1.prs_afdeling_key_eig
AND c2.cnt_contract_key != c1.cnt_contract_key)
UNION ALL
SELECT DISTINCT 'Add. Diensten', 'Actief AD-contract incorrect gelinkt aan huurder', c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie)
FROM cnt_v_aanwezigcontract c, prs_v_afdeling_boom ab, prs_v_aanwezigkenmerklink kl, prs_bedrijf b
WHERE c.ins_discipline_key IN (1841, 1842)
AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (SYSDATE) -- Van-datum < einde te factureren maand
AND c.cnt_contract_looptijd_tot > TRUNC (SYSDATE, 'mm') -- Tot-datum > begin te factureren maand
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key(+)
AND ab.prs_bedrijf_key(+) = 22 -- Huurders
AND c.prs_afdeling_key_eig = kl.prs_link_key(+)
AND kl.prs_kenmerklink_niveau(+) = 'A'
AND kl.prs_kenmerk_key(+) = 1001 -- Debiteurnummer
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key(+)
AND kl.prs_kenmerklink_waarde != b.prs_overeenkomst_nr
UNION ALL
SELECT DISTINCT 'Add. Diensten', 'H-afdeling niet dezelfde naam als gelinkte H-relatie', a.prs_afdeling_omschrijving || ' <> ' || b.prs_bedrijf_naam
FROM prs_afdeling a, prs_v_aanwezigkenmerklink kl, prs_v_aanwezigbedrijf b
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 22 -- Huurders
AND a.prs_afdeling_parentkey IS NULL
AND a.prs_afdeling_key = kl.prs_link_key(+)
AND kl.prs_kenmerklink_niveau = 'A'
AND kl.prs_kenmerk_key = 1001 -- Debiteurnummer
AND kl.prs_kenmerklink_waarde = b.prs_overeenkomst_nr
AND UPPER (a.prs_afdeling_omschrijving) != TRIM (b.prs_bedrijf_naam_upper)
UNION ALL
SELECT 'Uitvoerenden', 'UV-afdeling leeg', a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving
FROM prs_afdeling a
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_parentkey = 23 -- UV
AND NOT EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid p
WHERE p.prs_afdeling_key = a.prs_afdeling_key)
UNION ALL
SELECT 'Uitvoerenden', 'UV-afdeling zonder logins', a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving
FROM prs_afdeling a
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_parentkey = 23 -- UV
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid p
WHERE p.prs_afdeling_key = a.prs_afdeling_key)
AND NOT EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid p
WHERE COALESCE (p.prs_perslid_oslogin, p.prs_perslid_oslogin2) IS NOT NULL
AND p.prs_afdeling_key = a.prs_afdeling_key)
UNION ALL
SELECT DISTINCT 'Uitvoerenden', 'UV-afdeling met logins niet gelinkt aan UV-relatie', a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving
FROM prs_afdeling a, prs_v_aanwezigperslid ap
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_parentkey = 23 -- UV
AND a.prs_afdeling_key = ap.prs_afdeling_key
AND COALESCE (ap.prs_perslid_oslogin, ap.prs_perslid_oslogin2) IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM prs_contactpersoon cp, prs_bedrijf b, prs_perslid p
WHERE cp.prs_contactpersoon_verwijder IS NULL
AND cp.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND cp.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = ap.prs_afdeling_key)
UNION ALL
SELECT DISTINCT 'Uitvoerenden', 'UV-afdeling gelinkt aan UV-relatie via persoon zonder login', a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving || '/' || p.prs_perslid_naam
FROM prs_afdeling a, prs_v_aanwezigperslid p
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_parentkey = 23 -- UV
AND a.prs_afdeling_key = p.prs_afdeling_key
AND COALESCE (p.prs_perslid_oslogin, p.prs_perslid_oslogin2) IS NULL
AND EXISTS
(SELECT 1
FROM prs_contactpersoon cp, prs_bedrijf b
WHERE cp.prs_contactpersoon_verwijder IS NULL
AND cp.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND cp.prs_perslid_key = p.prs_perslid_key)
UNION ALL
SELECT DISTINCT 'Uitvoerenden', 'UV-relatie gelinkt aan UV-afdeling via verwijderde persoon', a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving || '/' || cp.prs_contactpersoon_naam
FROM prs_afdeling a, prs_perslid p, prs_contactpersoon cp, prs_bedrijf b
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_parentkey = 23 -- UV
AND a.prs_afdeling_key = p.prs_afdeling_key
AND p.prs_perslid_verwijder IS NOT NULL
AND p.prs_perslid_key = cp.prs_perslid_key
AND cp.prs_contactpersoon_verwijder IS NULL
AND cp.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
UNION ALL
SELECT DISTINCT 'Uitvoerenden', 'UV-afdeling niet dezelfde naam als gelinkte UV-relatie', a.prs_afdeling_omschrijving || ' <> ' || b.prs_bedrijf_naam
FROM prs_afdeling a, prs_perslid p, prs_contactpersoon cp, prs_bedrijf b
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_parentkey = 23 -- UV
AND a.prs_afdeling_key = p.prs_afdeling_key
AND p.prs_perslid_key = cp.prs_perslid_key
AND cp.prs_contactpersoon_verwijder IS NULL
AND cp.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND UPPER (a.prs_afdeling_omschrijving) != TRIM (b.prs_bedrijf_naam_upper)
;
*/
------ 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