BSSC#55692 Facturatieproces/Totalen per maand-contract

svn path=/Customer/trunk/; revision=61966
This commit is contained in:
Maarten van der Heide
2023-09-28 12:18:43 +00:00
parent 41c8c2316e
commit 3f132621c3

View File

@@ -1,4 +1,4 @@
--
6 --
-- $Id$
--
-- Script containing customer specific db-configuration for BSSC.
@@ -4239,6 +4239,7 @@ AS
mld_melding_key
FROM bssc_v_addd_correctie
WHERE mld_melding_key > 18833 -- Per 01-12-2022 (18833 laatste melding op 30-11-2022)!
AND mld_melding_key NOT IN (18874, 18875) -- En niet 18874/18875!
UNION ALL -- Losverkoopmeldingen
SELECT fin_verkoopfactuur_id, po_nr,
sortering, regel, aanvrager, regel_oms,
@@ -4256,6 +4257,7 @@ AS
mld_melding_key
FROM bssc_v_addd_losverkoop
WHERE mld_melding_key > 18833 -- Per 01-12-2022 (18833 laatste melding op 30-11-2022)!
AND mld_melding_key NOT IN (18928) -- En niet 18928!
;
CREATE OR REPLACE VIEW bssc_v_addd_frozen
@@ -7111,7 +7113,7 @@ CREATE OR REPLACE VIEW BSSC_V_RAP_CMD2CHV
start_fact,
--bvo_scope,
vvo_scope,
vvo_ovkst,
m2_contract, -- Was vvo_ovkst
huur,
--verv_toeslag,
maand_tarief,
@@ -7198,7 +7200,7 @@ AS
TRIM (chvnr.prs_kenmerklink_waarde) debiteurnr
FROM ( SELECT ADD_MONTHS (fac.safe_to_date ('01-01-2023', 'dd-mm-yyyy'), LEVEL - 1) maand
FROM DUAL
WHERE ADD_MONTHS (fac.safe_to_date ('01-01-2023', 'dd-mm-yyyy'), LEVEL - 1) BETWEEN fac.safe_to_date ('20230101', 'yyyymmdd') AND TRUNC (ADD_MONTHS (SYSDATE, 2))
WHERE ADD_MONTHS (fac.safe_to_date ('01-01-2023', 'dd-mm-yyyy'), LEVEL - 1) BETWEEN fac.safe_to_date ('20230101', 'yyyymmdd') AND TRUNC (ADD_MONTHS (SYSDATE, 2))
CONNECT BY LEVEL <= 240) p,
cnt_v_aanwezigcontract c,
prs_bedrijf b,
@@ -7305,6 +7307,309 @@ AS
--WHERE fac.safe_to_date (volg_fact.cnt_kenmerkcontract_waarde, 'dd-mm-yyyy') >= TRUNC (SYSDATE)
;
-- Contractkosten per maand sinds 2023-01!
CREATE OR REPLACE VIEW BSSC_V_CNT_KOSTEN_PM
AS
SELECT x.maand,
--x.maand_van,
--x.maand_tot,
x.prs_bedrijf_key,
x.debiteurnaam,
x.debiteurnr_cmd,
x.debiteurnr_chv,
x.cnt_contract_key,
x.cnt_contract_nummer_intern,
x.cnt_contract_versie,
x.ins_discipline_omschrijving,
x.cnt_contract_omschrijving,
--x.cnt_contract_nummer,
x.cnt_contract_looptijd_van ingangsdatum,
cnt.cnt_getRappeldatum (x.cnt_contract_key) rappeldatum,
cnt.cnt_getOpzegdatum (x.cnt_contract_key) opzegdatum,
x.cnt_contract_looptijd_tot einddatum,
x.cnt_contract_kosten,
gaf.cnt_kenmerkcontract_waarde gaf,
start_fact.cnt_kenmerkcontract_waarde start_fact,
fac.safe_to_number (cvvo.cnt_kenmerkcontract_waarde) contract_m2,
vvo_toeslag_ud.fac_usrdata_omschr vvo_toeslag,
(vvo_toeslag_ud.fac_usrdata_prijs - 1) vvo_toeslagperc, -- VVO toeslag
DECODE (oh.cnt_kenmerkcontract_waarde, 921, 'Ja', 922, 'Nee', NULL) oh,
verv_toeslag_ud.fac_usrdata_omschr verv_toeslag,
(verv_toeslag_ud.fac_usrdata_prijs - 1) verv_toeslagperc, -- Vervangende toeslag
sd_ud.fac_usrdata_omschr sd,
LAST_DAY (x.maand) - x.maand + 1 mndbes, -- Beschikbaar
LEAST (x.maand_tot, LAST_DAY (x.maand)) - GREATEST (x.maand_van, x.maand) + 1 mndbez, -- Bezet
b1.maandbedrag huur,
b2.maandbedrag ict,
b3.maandbedrag fac,
b4.maandbedrag serv,
b5.maandbedrag sch,
b6.maandbedrag kof,
b7.maandbedrag duty,
b8.maandbedrag opsl,
b9.aantal pchv_aantal,
b9.jaarbedrag pchv_jaar,
b9.maandbedrag pchv_maand,
b10.aantal pcmd_aantal,
b10.jaarbedrag pcmd_jaar,
b10.maandbedrag pcmd_maand,
b11.aantal dcmd_aantal,
b11.jaarbedrag dcmd_jaar,
b11.maandbedrag dcmd_maand,
tot.maandbedrag totaal
FROM (SELECT p.maand,
GREATEST (TRUNC (c.cnt_contract_looptijd_van), p.maand) maand_van,
LEAST (TRUNC (c.cnt_contract_looptijd_tot), LAST_DAY (p.maand)) maand_tot,
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_versie,
cd.ins_discipline_omschrijving,
c.cnt_contract_omschrijving,
--c.cnt_contract_nummer,
c.cnt_contract_looptijd_van,
c.cnt_contract_looptijd_tot,
c.cnt_contract_kosten,
b.prs_bedrijf_key,
b.prs_bedrijf_naam debiteurnaam,
TRIM (cmdnr.prs_kenmerklink_waarde) debiteurnr_cmd,
TRIM (chvnr.prs_kenmerklink_waarde) debiteurnr_chv
FROM ( SELECT ADD_MONTHS (fac.safe_to_date ('01-01-2023', 'dd-mm-yyyy'), LEVEL - 1) maand
FROM DUAL
WHERE ADD_MONTHS (fac.safe_to_date ('01-01-2023', 'dd-mm-yyyy'), LEVEL - 1) BETWEEN fac.safe_to_date ('20230101', 'yyyymmdd') AND TRUNC (ADD_MONTHS (SYSDATE, 2))
CONNECT BY LEVEL <= 240) p,
cnt_v_aanwezigcontract c,
cnt_discipline cd,
prs_bedrijf b,
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1220) cmdnr,
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1221) chvnr
WHERE c.ins_discipline_key = cd.ins_discipline_key
AND cd.ins_discipline_key IN (2001, 2003, 2004, 2005) -- Huur CHV/Parkeren CHV/Parkeren CMD/Deelnemers CMD
AND c.cnt_contract_status = 0 -- Definitief/TODO:Of gesloten???
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = cmdnr.prs_link_key(+)
AND b.prs_bedrijf_key = chvnr.prs_link_key(+)
AND TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (p.maand) -- Van-datum < einde te factureren maand
AND c.cnt_contract_looptijd_tot > p.maand) x
LEFT JOIN cnt_kenmerkcontract gaf
ON x.cnt_contract_key = gaf.cnt_contract_key
AND gaf.cnt_kenmerkcontract_verwijder IS NULL
AND gaf.cnt_kenmerk_key IN (863, 864, 865, 1001) -- Geen automatische facturatie/Huur CHV+Parkeren CHV+Parkeren CMD+Deelnemers CMD
LEFT JOIN cnt_kenmerkcontract start_fact
ON x.cnt_contract_key = start_fact.cnt_contract_key
AND start_fact.cnt_kenmerkcontract_verwijder IS NULL
AND start_fact.cnt_kenmerk_key = 870 -- Start facturatie op/Huur CHV
LEFT JOIN cnt_kenmerkcontract cvvo
ON x.cnt_contract_key = cvvo.cnt_contract_key
AND cvvo.cnt_kenmerkcontract_verwijder IS NULL
AND cvvo.cnt_kenmerk_key = 1061 -- M2 volgens contract/Huur CHV
LEFT JOIN cnt_kenmerkcontract vvo_toeslag
ON x.cnt_contract_key = vvo_toeslag.cnt_contract_key
AND vvo_toeslag.cnt_kenmerkcontract_verwijder IS NULL
AND vvo_toeslag.cnt_kenmerk_key = 402 -- VVO toeslagpercentage/Huur CHV
LEFT JOIN fac_v_aanwezigusrdata vvo_toeslag_ud
ON fac.safe_to_number (vvo_toeslag.cnt_kenmerkcontract_waarde) = vvo_toeslag_ud.fac_usrdata_key
LEFT JOIN cnt_kenmerkcontract oh
ON x.cnt_contract_key = oh.cnt_contract_key
AND oh.cnt_kenmerkcontract_verwijder IS NULL
AND oh.cnt_kenmerk_key IN (641, 1041) -- Onbelaste huurder/Huur CHV+Parkeren CHV
LEFT JOIN cnt_kenmerkcontract verv_toeslag
ON x.cnt_contract_key = verv_toeslag.cnt_contract_key
AND verv_toeslag.cnt_kenmerkcontract_verwijder IS NULL
AND verv_toeslag.cnt_kenmerk_key IN (642, 1042) -- Vervangende toeslag/Huur CHV+Parkeren CHV
LEFT JOIN fac_v_aanwezigusrdata verv_toeslag_ud
ON fac.safe_to_number (verv_toeslag.cnt_kenmerkcontract_waarde) = verv_toeslag_ud.fac_usrdata_key
LEFT JOIN cnt_kenmerkcontract sd
ON x.cnt_contract_key = sd.cnt_contract_key
AND sd.cnt_kenmerkcontract_verwijder IS NULL
AND sd.cnt_kenmerk_key = 421 -- Soort deelnemer/Deelnemers CMD
LEFT JOIN fac_v_aanwezigusrdata sd_ud
ON fac.safe_to_number (sd.cnt_kenmerkcontract_waarde) = sd_ud.fac_usrdata_key
LEFT JOIN (SELECT kc.cnt_contract_key, k.cnt_kenmerk_key,
fac.safe_to_number (kc.cnt_kenmerkcontract_waarde)
maandbedrag
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_kenmerk_key IN (962)) b1 -- Huur CHV/Rent
ON x.cnt_contract_key = b1.cnt_contract_key
LEFT JOIN (SELECT kc.cnt_contract_key, k.cnt_kenmerk_key,
fac.safe_to_number (kc.cnt_kenmerkcontract_waarde)
maandbedrag
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_kenmerk_key IN (963)) b2 -- Huur CHV/ICT
ON x.cnt_contract_key = b2.cnt_contract_key
LEFT JOIN (SELECT kc.cnt_contract_key, k.cnt_kenmerk_key,
fac.safe_to_number (kc.cnt_kenmerkcontract_waarde)
maandbedrag
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_kenmerk_key IN (964)) b3 -- Huur CHV/Facilitaire kosten
ON x.cnt_contract_key = b3.cnt_contract_key
LEFT JOIN (SELECT kc.cnt_contract_key, k.cnt_kenmerk_key,
fac.safe_to_number (kc.cnt_kenmerkcontract_waarde)
maandbedrag
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_kenmerk_key IN (965)) b4 -- Huur CHV/Servicekosten
ON x.cnt_contract_key = b4.cnt_contract_key
LEFT JOIN (SELECT kc.cnt_contract_key, k.cnt_kenmerk_key,
fac.safe_to_number (kc.cnt_kenmerkcontract_waarde)
maandbedrag
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_kenmerk_key IN (966)) b5 -- Huur CHV/Schoonmaak
ON x.cnt_contract_key = b5.cnt_contract_key
LEFT JOIN (SELECT kc.cnt_contract_key, k.cnt_kenmerk_key,
fac.safe_to_number (kc.cnt_kenmerkcontract_waarde)
maandbedrag
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_kenmerk_key IN (982)) b6 -- Huur CHV/Koffieautomaten
ON x.cnt_contract_key = b6.cnt_contract_key
LEFT JOIN (SELECT kc.cnt_contract_key, k.cnt_kenmerk_key,
fac.safe_to_number (kc.cnt_kenmerkcontract_waarde)
maandbedrag
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_kenmerk_key IN (983)) b7 -- Huur CHV/Duty manager
ON x.cnt_contract_key = b7.cnt_contract_key
LEFT JOIN (SELECT kc.cnt_contract_key, k.cnt_kenmerk_key,
fac.safe_to_number (kc.cnt_kenmerkcontract_waarde)
maandbedrag
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_kenmerk_key IN (1081)) b8 -- Huur CHV/Opslagruimte
ON x.cnt_contract_key = b8.cnt_contract_key
LEFT JOIN (SELECT kc1.cnt_contract_key, kc1.cnt_kenmerk_key,
fac.safe_to_number (kc1.cnt_kenmerkcontract_waarde) aantal,
fac.safe_to_number (kc2.cnt_kenmerkcontract_waarde) jaarbedrag,
ROUND (COALESCE (fac.safe_to_number (kc1.cnt_kenmerkcontract_waarde), 0) * COALESCE (fac.safe_to_number (kc2.cnt_kenmerkcontract_waarde), 0) * 1/12, 2)
maandbedrag
FROM cnt_kenmerkcontract kc1, cnt_kenmerkcontract kc2
WHERE kc1.cnt_contract_key = kc2.cnt_contract_key
AND kc1.cnt_kenmerkcontract_verwijder IS NULL
AND kc2.cnt_kenmerkcontract_verwijder IS NULL
AND kc1.cnt_kenmerk_key IN (415) -- Aantal
AND kc2.cnt_kenmerk_key IN (416)) b9 -- Bedrag
ON x.cnt_contract_key = b9.cnt_contract_key
LEFT JOIN (SELECT kc1.cnt_contract_key, kc1.cnt_kenmerk_key,
fac.safe_to_number (kc1.cnt_kenmerkcontract_waarde) aantal,
fac.safe_to_number (kc2.cnt_kenmerkcontract_waarde) jaarbedrag,
ROUND (COALESCE (fac.safe_to_number (kc1.cnt_kenmerkcontract_waarde), 0) * COALESCE (fac.safe_to_number (kc2.cnt_kenmerkcontract_waarde), 0) * 1/12, 2)
maandbedrag
FROM cnt_kenmerkcontract kc1, cnt_kenmerkcontract kc2
WHERE kc1.cnt_contract_key = kc2.cnt_contract_key
AND kc1.cnt_kenmerkcontract_verwijder IS NULL
AND kc2.cnt_kenmerkcontract_verwijder IS NULL
AND kc1.cnt_kenmerk_key IN (417) -- Aantal
AND kc2.cnt_kenmerk_key IN (418)) b10 -- Bedrag
ON x.cnt_contract_key = b10.cnt_contract_key
LEFT JOIN (SELECT kc1.cnt_contract_key, kc1.cnt_kenmerk_key,
fac.safe_to_number (kc1.cnt_kenmerkcontract_waarde) aantal,
fac.safe_to_number (kc2.cnt_kenmerkcontract_waarde) jaarbedrag,
ROUND (COALESCE (fac.safe_to_number (kc1.cnt_kenmerkcontract_waarde), 0) * COALESCE (fac.safe_to_number (kc2.cnt_kenmerkcontract_waarde), 0) * 1/12, 2)
maandbedrag
FROM cnt_kenmerkcontract kc1, cnt_kenmerkcontract kc2
WHERE kc1.cnt_contract_key = kc2.cnt_contract_key
AND kc1.cnt_kenmerkcontract_verwijder IS NULL
AND kc2.cnt_kenmerkcontract_verwijder IS NULL
AND kc1.cnt_kenmerk_key IN (419) -- Aantal
AND kc2.cnt_kenmerk_key IN (420)) b11 -- Bedrag
ON x.cnt_contract_key = b11.cnt_contract_key
LEFT JOIN ( SELECT kc.cnt_contract_key,
SUM (COALESCE (fac.safe_to_number (kc.cnt_kenmerkcontract_waarde), 0))
maandbedrag
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_kenmerk_key IN (962, 963, 964, 965, 966, 982, 983, 1081) -- Maandbedragen/Huur CHV
GROUP BY kc.cnt_contract_key
UNION ALL
SELECT kc1.cnt_contract_key,
ROUND (COALESCE (fac.safe_to_number (kc1.cnt_kenmerkcontract_waarde), 0) * COALESCE (fac.safe_to_number (kc2.cnt_kenmerkcontract_waarde), 0) * 1/12, 2)
maandbedrag
FROM cnt_kenmerkcontract kc1, cnt_kenmerkcontract kc2
WHERE kc1.cnt_contract_key = kc2.cnt_contract_key
AND kc1.cnt_kenmerkcontract_verwijder IS NULL
AND kc2.cnt_kenmerkcontract_verwijder IS NULL
AND kc1.cnt_kenmerk_key IN (415, 417, 419) -- Aantal
AND kc2.cnt_kenmerk_key IN (416, 418, 420)) tot -- Bedrag
ON x.cnt_contract_key = tot.cnt_contract_key;
/*
LEFT JOIN cnt_kenmerkcontract jbw
ON x.cnt_contract_key = jbw.cnt_contract_key
AND jbw.cnt_kenmerkcontract_verwijder IS NULL
AND jbw.cnt_kenmerk_key IN (962, 963, 964, 965, 966, 982, 983, 1081) -- Maandbedragen/Huur CHV
LEFT JOIN cnt_kenmerk jbw_k
ON jbw.cnt_kenmerk_key = jbw_k.cnt_kenmerk_key
AND jbw_k.cnt_kenmerk_verwijder IS NULL
LEFT JOIN cnt_kenmerkcontract aantal_pchv
ON x.cnt_contract_key = aantal_pchv.cnt_contract_key
AND aantal_pchv.cnt_kenmerkcontract_verwijder IS NULL
AND aantal_pchv.cnt_kenmerk_key = 415 -- Aantal
LEFT JOIN cnt_kenmerkcontract bedrag_pchv
ON x.cnt_contract_key = bedrag_pchv.cnt_contract_key
AND bedrag_pchv.cnt_kenmerkcontract_verwijder IS NULL
AND bedrag_pchv.cnt_kenmerk_key = 416 -- Bedrag
LEFT JOIN cnt_kenmerkcontract aantal_pcmd
ON x.cnt_contract_key = aantal_pcmd.cnt_contract_key
AND aantal_pcmd.cnt_kenmerkcontract_verwijder IS NULL
AND aantal_pcmd.cnt_kenmerk_key = 417 -- Aantal
LEFT JOIN cnt_kenmerkcontract bedrag_pcmd
ON x.cnt_contract_key = bedrag_pcmd.cnt_contract_key
AND bedrag_pcmd.cnt_kenmerkcontract_verwijder IS NULL
AND bedrag_pcmd.cnt_kenmerk_key = 418 -- Bedrag
LEFT JOIN cnt_kenmerkcontract aantal_deeln
ON x.cnt_contract_key = aantal_deeln.cnt_contract_key
AND aantal_deeln.cnt_kenmerkcontract_verwijder IS NULL
AND aantal_deeln.cnt_kenmerk_key = 419 -- Aantal
LEFT JOIN cnt_kenmerkcontract bedrag_deeln
ON x.cnt_contract_key = bedrag_deeln.cnt_contract_key
AND bedrag_deeln.cnt_kenmerkcontract_verwijder IS NULL
AND bedrag_deeln.cnt_kenmerk_key = 420 -- Bedrag
LEFT JOIN cnt_kenmerkcontract sd
ON x.cnt_contract_key = sd.cnt_contract_key
AND sd.cnt_kenmerkcontract_verwijder IS NULL
AND sd.cnt_kenmerk_key = 421 -- Soort deelnemer/Deelnemers CMD
LEFT JOIN fac_v_aanwezigusrdata sd_ud
ON fac.safe_to_number (sd.cnt_kenmerkcontract_waarde) = sd_ud.fac_usrdata_key;
*/
-- TODO:Inbouwen Nog iets met gaf/start_fact???
-- WHERE gaf.cnt_kenmerkcontract_waarde IS NULL -- COALESCE (gaf.cnt_kenmerkcontract_waarde, 0) = 0
-- WHERE fac.safe_to_date (start_fact.cnt_kenmerkcontract_waarde, 'dd-mm-yyyy') <= fac.safe_to_date (x.maand || '01', 'yyyymmdd')
-- WHERE verv_toeslag_ud.fac_usrdata_prijs > 1
CREATE OR REPLACE VIEW BSSC_V_RAP_CNT_KOSTEN_PM
AS
SELECT TO_CHAR (maand, 'yyyy-mm') maand,
cnt_contract_nummer_intern || '.' || COALESCE (TO_CHAR (cnt_contract_versie), '0') contract,
ins_discipline_omschrijving contractsoort,
cnt_contract_omschrijving beschrijving,
debiteurnaam contractpartij,
ingangsdatum,
rappeldatum,
opzegdatum,
einddatum,
cnt_contract_kosten contractbedrag,
contract_m2 m2_contract,
vvo_toeslag,
COALESCE (vvo_toeslagperc, 0) * contract_m2 m2_toeslag,
(COALESCE (vvo_toeslagperc, 0) + 1) * contract_m2 m2_contract_incl_toeslag,
oh onbelaste_huurder,
verv_toeslag,
(mndbez / mndbes) * huur huur_chv,
(mndbez / mndbes) * ict ict_chv,
(mndbez / mndbes) * fac fac_kosten_chv,
(mndbez / mndbes) * serv servicekosten_chv,
(mndbez / mndbes) * sch schoonmaak_chv,
(mndbez / mndbes) * kof koffieautomaten_chv,
(mndbez / mndbes) * duty duty_manager_chv,
(mndbez / mndbes) * opsl opslagruimte_chv,
(mndbez / mndbes) * pchv_maand parkeren_chv,
(mndbez / mndbes) * pcmd_maand parkeren_cmd,
(mndbez / mndbes) * dcmd_maand deelnemers_cmd,
(mndbez / mndbes) * COALESCE (huur, pchv_maand, 0) * COALESCE (verv_toeslagperc, 0) vervangende_toeslag,
(mndbez / mndbes) * (COALESCE (totaal, 0) + (COALESCE (huur, pchv_maand, 0) * COALESCE (verv_toeslagperc, 0))) totaal -- Inclusief vervangende toeslag
FROM bssc_v_cnt_kosten_pm;
------ payload end ------
SET DEFINE OFF