BLCC#55646 Opdrachten workflows+BLCC#56408 ADDD-export/Wekelijks regime Klantwensen

svn path=/Customer/trunk/; revision=42960
This commit is contained in:
Maarten van der Heide
2019-06-16 21:16:03 +00:00
parent 3385df6e3d
commit 36134f30d2

View File

@@ -457,7 +457,7 @@ AS
WHERE --SUBSTR (o.mld_opdr_ordernr, 1, 10) = TO_CHAR (SYSDATE, 'yyyy-mm-dd')
o.mld_typeopdr_key = 101 -- WO
AND o.mld_statusopdr_key = 7 -- Verwerkt
AND TO_CHAR (fac.gettrackingdate ('ORDVER', o.mld_opdr_key), 'yyyy-mm-dd') >= '2019-02-01' -- TODO:2019-06-01/Per 2019-06 nieuwe werkwijze!
AND TO_CHAR (fac.gettrackingdate ('ORDVER', o.mld_opdr_key), 'yyyy-mm-dd') >= '2019-06-01' -- xTODO:2019-06-01/Per 2019-06 nieuwe werkwijze!
AND o.mld_opdr_ordernr IS NULL -- Nog niet doorgezet Proquro!
AND NOT EXISTS -- Nog niet doorgezet Proquro!
(SELECT 1
@@ -574,7 +574,7 @@ BEGIN
mld_kenmerk_key,
mld_kenmerkopdr_waarde)
VALUES (rec.mld_opdr_key,
621, -- TODO/Doorgezet naar Proquro
581, -- Doorgezet naar Proquro
TO_CHAR (SYSDATE, 'dd-mm-yyyy'));
END;
END LOOP;
@@ -1553,7 +1553,7 @@ AS
-- BLCC#53262: Facturatie additionele diensten!
CREATE OR REPLACE VIEW blcc_v_addd_actual
AS
WITH lopendeperiode AS (SELECT TO_CHAR (add_months (SYSDATE, -1), 'yyyymm') maand
WITH lopendeperiode AS (SELECT TO_CHAR (ADD_MONTHS (SYSDATE, -1), 'yyyymm') maand
FROM dual) -- Alleen tbv. RES-kosten!
SELECT '*CONCEPT*' fin_verkoopfactuur_id,
--TRIM (COALESCE (x.cnt_contract_nummer, '-')) po_nr,
@@ -2240,9 +2240,9 @@ AS
--AND o.mld_statusopdr_key = 9 -- Afgerond
AND o.mld_statusopdr_key = 7 -- Verwerkt
--AND o.mld_opdr_ordernr <= TO_CHAR (SYSDATE, 'yyyy-mm') || '-01' -- Oude werkwijze (maandelijks)
AND TO_CHAR (fac.gettrackingdate ('ORDVER', o.mld_opdr_key), 'yyyy-mm-dd') >= '2019-02-01' -- TODO:2019-06-01/Per 2019-06 nieuwe werkwijze!
AND TO_CHAR (fac.gettrackingdate ('ORDVER', o.mld_opdr_key), 'yyyy-mm-dd') >= '2019-06-01' -- xTODO:2019-06-01/Per 2019-06 nieuwe werkwijze!
--AND TO_CHAR (fac.gettrackingdate ('ORDVER', o.mld_opdr_key), 'yyyy-mm-dd') <= TO_CHAR (SYSDATE, 'yyyy-mm-dd') -- Doorgezet ProQuro/dagelijks
AND TO_CHAR (fac.gettrackingdate ('ORDVER', o.mld_opdr_key), 'yyyy-mm-dd') <= TO_CHAR (TRUNC (SYSDATE, 'iw') + 0, 'yyyy-mm-dd') -- TODO:3/Doorgezet ProQuro/wekelijks van woensdag op donderdag
AND TO_CHAR (fac.gettrackingdate ('ORDVER', o.mld_opdr_key), 'yyyy-mm-dd') <= TO_CHAR (TRUNC (SYSDATE, 'iw') + 3, 'yyyy-mm-dd') -- xTODO:3/Doorgezet ProQuro/wekelijks van woensdag op donderdag
AND NOT EXISTS -- Nog niet gefactureerd!
(SELECT 1
FROM fin_verkoopfactuur
@@ -2473,7 +2473,7 @@ AS -- View bevat alleen inhoud op dag na woensdag (Klantwensen) of op dag na 10e
|| ';omschrijving'
|| ';btwcode',
0
FROM DUAL
FROM DUAL
WHERE (TO_CHAR (SYSDATE, 'd') = '5' -- xTODO:5/Nacht na woensdag!
OR (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'
@@ -2511,7 +2511,7 @@ AS -- View bevat alleen inhoud op dag na woensdag (Klantwensen) of op dag na 10e
|| btwcode,
ROWNUM
FROM blcc_v_rap_export_addd
WHERE --fclt_x_maand = TO_CHAR (SYSDATE, 'yyyy-mm')
WHERE --fclt_x_maand = TO_CHAR (SYSDATE, 'yyyy-mm')
(TO_CHAR (SYSDATE, 'd') = '5' -- xTODO:5/Nacht na woensdag!
OR (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'
@@ -2524,17 +2524,24 @@ AS -- View bevat alleen inhoud op dag na woensdag (Klantwensen) of op dag na 10e
CREATE OR REPLACE PROCEDURE blcc_select_addd (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- BLCC#55646: Per 2019-06 factureer/bevries wekelijks de klantwens-kosten
AS
-- BLCC#55646: Per 2019-06 factureer/bevries maandelijks alle RES-kosten en
-- wekelijks de Klantwens-kosten
-- NB. Voorheen gebeurde alles maandelijks en voor ADDD-export
-- zijn correctie-meldingen nooit geintroduceerd.
-- zijn correctie-meldingen nooit geintroduceerd.
CURSOR c1a -- RES-kosten
IS
SELECT '[' || v.regel_id || '|' || v.prs_debiteur_naam || '] ' aanduiding,
v.*, o.mld_statusopdr_key, m.mld_melding_status
FROM (SELECT * FROM blcc_v_addd_actual) v
LEFT JOIN mld_opdr o
SELECT '[' || v.regel_id || '|' || v.prs_debiteur_naam || '] ' aanduiding,
v.*, m.mld_melding_status
FROM (SELECT * FROM blcc_v_addd_actual WHERE xmlnode = 'reservering') v
LEFT JOIN mld_melding m -- Nooit geintroduceerd!
ON v.mld_melding_key = m.mld_melding_key
ORDER BY v.prs_bedrijf_key, v.po_nr, v.sortering;
CURSOR c1b -- Klantwens-kosten
IS
SELECT '[' || v.regel_id || '|' || v.prs_debiteur_naam || '] ' aanduiding,
v.*, m.mld_melding_status
FROM (SELECT * FROM blcc_v_addd_actual WHERE xmlnode = 'opdracht') v
LEFT JOIN mld_melding m -- Nooit geintroduceerd!
ON v.mld_melding_key = m.mld_melding_key
@@ -2543,15 +2550,16 @@ AS
-- 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_xmlnode,
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) = '3' -- vf.fin_verkoopfactuur_xmlnode != 'contract'
WHERE SUBSTR (vf.fin_verkoopfactuur_id, 1, 1) = '3' -- 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
AND vf.prs_bedrijf_key = b.prs_bedrijf_key
AND vf.fin_verkoopfactuur_aanmaak > TRUNC (SYSDATE) -- Zojuist/vannacht aangemaakt en dus nog niet gefactureerd(/genotificeerd)!
ORDER BY vf.fin_verkoopfactuur_id;
@@ -2604,18 +2612,14 @@ BEGIN
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1);
-- LET OP: ADDD-export draait dagelijks na middernacht (begin van dag).
-- De MLD-verkoop (Klantwens-WOs) wordt per 2019-06 (BLCC#56408) wekelijks
-- LET OP: ADDD-export draait dagelijks na middernacht (begin van dag).
-- De RES-verkoop wordt maandelijks alleen in nacht na 10e werkdag van de
-- maand gefactureerd icm. het doorzetten naar Twinfield.
-- IF nacht na woensdag of 10e werkdag van maand (<28>n<EFBFBD>geen weekend <20>n<EFBFBD>geen
-- maand gefactureerd icm. het doorzetten naar Twinfield.
-- IF 10e werkdag van 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 TO_CHAR (SYSDATE, 'd') = '2' -- TODO:5/Nacht na woensdag!
OR (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'
-- 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;
@@ -2624,10 +2628,10 @@ BEGIN
v_old_po_nr := '';
-- Factureer/bevries kosten van additionele diensten en verwerk=AV alle
-- eventuele correctiemeldingen.
-- eventuele correctiemeldingen.
FOR rec IN c1a
LOOP
BEGIN
BEGIN
IF rec.mndnet != 0 AND (rec.prs_bedrijf_key != v_old_bedrijf_key OR rec.po_nr != v_old_po_nr)
THEN
-- BLCC#56148: Per feb. 2019 nieuwe sequence/BCC-verkoopboek en
@@ -2741,23 +2745,6 @@ BEGIN
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);
-- Markeren als 'Doorgezet naar Twinfield'!
v_errormsg := 'Fout markeren doorzetten Twinfield';
INSERT INTO mld_kenmerkopdr (mld_opdr_key,
mld_kenmerk_key,
mld_kenmerkopdr_waarde)
VALUES (rec.refkey,
622, -- TODO/Doorgezet naar Twinfield
TO_CHAR (SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
END IF;
IF rec.mld_melding_key IS NOT NULL -- Correctiemelding?
THEN
@@ -2777,47 +2764,50 @@ BEGIN
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'ADDD[a]-freeze');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', 'ADDD[a]-verkoop/#regels: ' || TO_CHAR (v_fact_count), TO_CHAR (v_amount_sum));
-- Verstuur verkoopfactuur naar huurder.
FOR rec IN c2
LOOP
BEGIN
BEGIN
IF rec.fin_verkoopfactuur_xmlnode = 'reservering' -- Cursor bevat soms ook de opdracht-nodes!
THEN
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, 'm.vanderheide@facilitor.nl', --TODO:NULL, 'accountsreceivable@brightlands.com',
'm.vanderheide@facilitor.nl'), --TODO:rec.prs_bedrijf_email || ';accountsreceivable@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),
'accountsreceivable@brightlands.com', -- From-adres
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, 'accountsreceivable@brightlands.com',
rec.prs_bedrijf_email || ';accountsreceivable@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), -- xTODO:7 ipv. 18!
'accountsreceivable@brightlands.com', -- From-adres
'/../../Fplace5i/CUST/BLCC/export/PDF/' || rec.fin_verkoopfactuurkop_id || '.pdf');
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 || ')';
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'ADDD[a]-noti');
COMMIT;
END;
@@ -2908,12 +2898,18 @@ BEGIN
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'ADDD[a]-AV');
COMMIT;
END;
END LOOP;
/*
END LOOP;
END IF;
-- LET OP: ADDD-export draait dagelijks na middernacht (begin van dag).
-- De MLD-verkoop (Klantwensen) wordt per 2019-06 (BLCC#56408) wekelijks
-- gefactureerd icm. het doorzetten naar Twinfield.
-- IF nacht na woensdag!
IF TO_CHAR (SYSDATE, 'd') = '5' -- xTODO:5/Nacht na woensdag!
THEN
v_fact_count := 0;
v_amount_sum := 0;
@@ -2921,11 +2917,16 @@ BEGIN
v_old_po_nr := '';
-- Factureer/bevries kosten van additionele diensten en verwerk=AV alle
-- eventuele correctiemeldingen.
-- eventuele correctiemeldingen.
FOR rec IN c1b
LOOP
BEGIN
BEGIN
--IF rec.mndnet != 0 AND (rec.prs_bedrijf_key != v_old_bedrijf_key OR rec.po_nr != v_old_po_nr)
IF rec.mndnet != 0 -- Elke Klantwens (kosten!=0) op eigen factuur!
THEN
-- BLCC#56148: Per feb. 2019 nieuwe sequence/BCC-verkoopboek en
-- altijd doorlopende boekstuknummers beginnend met
-- een '3'!
--SELECT fac_s_user02.NEXTVAL - v_year_offset INTO v_count FROM DUAL;
SELECT fac_s_user03.NEXTVAL INTO v_count FROM DUAL;
@@ -2939,10 +2940,7 @@ BEGIN
COMMIT;
v_old_bedrijf_key := rec.prs_bedrijf_key;
v_old_po_nr := rec.po_nr;
v_old_po_nr := rec.po_nr;
IF rec.mndnet != 0
v_errormsg := 'Fout toevoegen verkoopfactuur';
@@ -3034,22 +3032,15 @@ BEGIN
v_fact_count := v_fact_count + 1;
v_amount_sum := v_amount_sum + rec.mndnet;
END IF;
IF rec.xmlnode = 'opdracht'
THEN
-- Markeren als 'Doorgezet naar Twinfield'!
v_errormsg := 'Fout markeren doorzetten Twinfield';
--MLD.setopdrachtstatus (rec.refkey, 7, NULL);
-- Markeren als 'Doorgezet naar Twinfield'!
v_errormsg := 'Fout markeren doorzetten Twinfield';
INSERT INTO mld_kenmerkopdr (mld_opdr_key,
mld_kenmerk_key,
mld_kenmerkopdr_waarde)
VALUES (rec.refkey,
622, -- TODO/Doorgezet naar Twinfield
TO_CHAR (SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
INSERT INTO mld_kenmerkopdr (mld_opdr_key,
mld_kenmerk_key,
mld_kenmerkopdr_waarde)
VALUES (rec.refkey,
582, -- Doorgezet naar Twinfield
TO_CHAR (SYSDATE, 'dd-mm-yyyy'));
IF rec.mld_melding_key IS NOT NULL -- Correctiemelding?
@@ -3070,51 +3061,53 @@ BEGIN
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'ADDD[b]-freeze');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', 'ADDD[b]-verkoop/#regels: ' || TO_CHAR (v_fact_count), TO_CHAR (v_amount_sum));
-- Verstuur verkoopfactuur naar huurder.
FOR rec IN c2
LOOP
BEGIN
BEGIN
IF rec.fin_verkoopfactuur_xmlnode = 'opdracht' -- Cursor bevat soms ook de reservering-nodes!
THEN
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, 'accountsreceivable@brightlands.com',
rec.prs_bedrijf_email || ';accountsreceivable@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),
'accountsreceivable@brightlands.com', -- From-adres
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, 'accountsreceivable@brightlands.com',
rec.prs_bedrijf_email || ';accountsreceivable@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), -- xTODO:7 ipv. 18!
'accountsreceivable@brightlands.com', -- From-adres
'/../../Fplace5i/CUST/BLCC/export/PDF/' || rec.fin_verkoopfactuurkop_id || '.pdf');
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 || ')';
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'ADDD[b]-noti');
COMMIT;
END;
END LOOP;
END LOOP;
END IF;
EXCEPTION
@@ -5953,24 +5946,34 @@ AS
btwnr.prs_kenmerklink_waarde btw_nr,
btwvl.prs_kenmerklink_waarde btw_vl,
kb_kc.cnt_kenmerkcontract_waarde, -- Netto kortingsbedrag (excl. kortingspercentage)!
ccf_ud.fac_usrdata_prijs, -- CFF-subsidiepercentatie %
--SUM (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 (COALESCE (glo.alg_onrgoedkenmerk_waarde, vlo.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '481', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0)) * COALESCE (ltar.fac_usrdata_prijs / 12, 0)) +
-- (COALESCE (fac.safe_to_number (COALESCE (gho.alg_onrgoedkenmerk_waarde, vho.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '482', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0)) * COALESCE (htar.fac_usrdata_prijs / 12, 0)) +
-- (COALESCE (fac.safe_to_number (COALESCE (gko.alg_onrgoedkenmerk_waarde, vko.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '483', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0)) * COALESCE (ktar.fac_usrdata_prijs / 12, 0)) +
-- (COALESCE (fac.safe_to_number (COALESCE (goo.alg_onrgoedkenmerk_waarde, voo.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '484', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0)) * COALESCE (otar.fac_usrdata_prijs / 12, 0)) +
-- (COALESCE (fac.safe_to_number (COALESCE (gto.alg_onrgoedkenmerk_waarde, vto.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '561', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0)) * COALESCE (ttar.fac_usrdata_prijs / 12, 0)) +
-- (COALESCE (fac.safe_to_number (clo.cnt_kenmerkcontract_waarde), 0) * COALESCE (ltar.fac_usrdata_prijs / 12, 0)) +
-- (COALESCE (fac.safe_to_number (cho.cnt_kenmerkcontract_waarde), 0) * COALESCE (htar.fac_usrdata_prijs / 12, 0)) +
-- (COALESCE (fac.safe_to_number (cko.cnt_kenmerkcontract_waarde), 0) * COALESCE (ktar.fac_usrdata_prijs / 12, 0)) +
-- (COALESCE (fac.safe_to_number (coo.cnt_kenmerkcontract_waarde), 0) * COALESCE (otar.fac_usrdata_prijs / 12, 0)) +
-- (COALESCE (fac.safe_to_number (cto.cnt_kenmerkcontract_waarde), 0) * COALESCE (ttar.fac_usrdata_prijs / 12, 0))), 2))
SUM (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 (COALESCE (glo.alg_onrgoedkenmerk_waarde, vlo.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '481', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0)) * COALESCE (ltar.fac_usrdata_prijs / 12, 0)) +
(COALESCE (fac.safe_to_number (COALESCE (gho.alg_onrgoedkenmerk_waarde, vho.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '482', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0)) * COALESCE (htar.fac_usrdata_prijs / 12, 0)) +
(COALESCE (fac.safe_to_number (COALESCE (gko.alg_onrgoedkenmerk_waarde, vko.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '483', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0)) * COALESCE (ktar.fac_usrdata_prijs / 12, 0)) +
(COALESCE (fac.safe_to_number (COALESCE (goo.alg_onrgoedkenmerk_waarde, voo.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '484', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0)) * COALESCE (otar.fac_usrdata_prijs / 12, 0)) +
(COALESCE (fac.safe_to_number (COALESCE (gto.alg_onrgoedkenmerk_waarde, vto.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '561', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0)) * COALESCE (ttar.fac_usrdata_prijs / 12, 0)) +
(COALESCE (fac.safe_to_number (clo.cnt_kenmerkcontract_waarde), 0) * COALESCE (ltar.fac_usrdata_prijs / 12, 0)) +
(COALESCE (fac.safe_to_number (cho.cnt_kenmerkcontract_waarde), 0) * COALESCE (htar.fac_usrdata_prijs / 12, 0)) +
(COALESCE (fac.safe_to_number (cko.cnt_kenmerkcontract_waarde), 0) * COALESCE (ktar.fac_usrdata_prijs / 12, 0)) +
(COALESCE (fac.safe_to_number (coo.cnt_kenmerkcontract_waarde), 0) * COALESCE (otar.fac_usrdata_prijs / 12, 0)) +
(COALESCE (fac.safe_to_number (COALESCE (goo.alg_onrgoedkenmerk_waarde, voo.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '484', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0)) * COALESCE (otar.fac_usrdata_prijs / 12, 0)) +
(COALESCE (fac.safe_to_number (COALESCE (gto.alg_onrgoedkenmerk_waarde, vto.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '561', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0)) * COALESCE (ttar.fac_usrdata_prijs / 12, 0))), 2))
mndopp, -- Netto maandbedrag alle meters (incl. kortingspercentage)
--SUM (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)) *
-- ((DECODE (fes.cnt_kenmerkcontract_waarde, NULL, 0, COALESCE (fac.safe_to_number (COALESCE (glo.alg_onrgoedkenmerk_waarde, vlo.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '481', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0))) * COALESCE (lfes.fac_usrdata_prijs / 12, 0)) +
-- (DECODE (fes.cnt_kenmerkcontract_waarde, NULL, 0, COALESCE (fac.safe_to_number (COALESCE (gko.alg_onrgoedkenmerk_waarde, vko.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '483', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0))) * COALESCE (kfes.fac_usrdata_prijs / 12, 0)) +
-- (COALESCE (fac.safe_to_number (clo.cnt_kenmerkcontract_waarde), 0) * COALESCE (lfes.fac_usrdata_prijs / 12, 0)) +
-- (COALESCE (fac.safe_to_number (cko.cnt_kenmerkcontract_waarde), 0) * COALESCE (kfes.fac_usrdata_prijs / 12, 0))), 2))
SUM (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)) *
((DECODE (fes.cnt_kenmerkcontract_waarde, NULL, 0, COALESCE (fac.safe_to_number (COALESCE (glo.alg_onrgoedkenmerk_waarde, vlo.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '481', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0))) * COALESCE (lfes.fac_usrdata_prijs / 12, 0)) +
(DECODE (fes.cnt_kenmerkcontract_waarde, NULL, 0, COALESCE (fac.safe_to_number (COALESCE (gko.alg_onrgoedkenmerk_waarde, vko.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '483', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0))) * COALESCE (kfes.fac_usrdata_prijs / 12, 0)) +
(COALESCE (fac.safe_to_number (clo.cnt_kenmerkcontract_waarde), 0) * COALESCE (lfes.fac_usrdata_prijs / 12, 0)) +
((DECODE (fes.cnt_kenmerkcontract_waarde, NULL, 0, COALESCE (fac.safe_to_number (COALESCE (glo.alg_onrgoedkenmerk_waarde, vlo.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '481', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0))) * COALESCE (lfes.fac_usrdata_prijs / 12, 0)) +
(DECODE (fes.cnt_kenmerkcontract_waarde, NULL, 0, COALESCE (fac.safe_to_number (COALESCE (gko.alg_onrgoedkenmerk_waarde, vko.alg_onrgoedkenmerk_waarde)), DECODE (rlhkot.alg_onrgoedkenmerk_waarde, '483', COALESCE (rxo.alg_ruimte_opp_alt1, 0), 0))) * COALESCE (kfes.fac_usrdata_prijs / 12, 0))), 2))
mndfes -- Netto maandbedrag FES-korting (excl. kortingspercentage)
FROM (SELECT c.ins_discipline_key,