AAIT#76102 -- Interfaces aanpassen voor 2023

INLO#75298 -- Verdeelperiode facturen Mareon - herzien inclusief inpassing gebroken boekjaren

svn path=/Customer/trunk/; revision=58584
This commit is contained in:
Jos Migo
2023-01-09 15:06:21 +00:00
parent f6d7049b39
commit 5e7154a47c

View File

@@ -3114,84 +3114,105 @@ AS
-- fin_kenmerk_key 2 is de keuze of dit de laatste factuur van de opdracht is.
CREATE OR REPLACE VIEW aaxx_v_factuur_gegevens (
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_key,
fin_factuurregel_nr,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
fin_factuur_boekmaand,
opdr_datum,
laatste_factuur,
project_nummer,
project_nummer_kp,
project_naam,
prs_kostensoort_oms,
prs_kostensoort_refcode,
prs_kostensoort_key,
prs_kostenplaats_key,
mld_opdr_key,
cnt_contract_key,
bes_bestelopdr_key,
fin_factuur_statuses_key,
lev_kpn,
fin_factuur_controle,
fin_factuur_controle_ok,
fin_factuur_flag
)
CREATE OR REPLACE VIEW aaxx_v_factuur_gegevens
(
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_key,
fin_factuurregel_nr,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
fin_factuur_boekmaand,
opdr_datum,
laatste_factuur,
project_nummer,
project_nummer_kp,
project_naam,
prs_kostensoort_oms,
prs_kostensoort_refcode,
prs_kostensoort_key,
prs_kostenplaats_key,
prs_kostenplaatsgrp_key,
mld_opdr_key,
cnt_contract_key,
bes_bestelopdr_key,
fin_factuur_statuses_key,
lev_kpn,
fin_factuur_controle,
fin_factuur_controle_ok,
fin_factuur_flag
)
AS
SELECT f.fin_factuur_key,
DECODE (c.cnt_contract_key, null,
DECODE (bo.bes_bestelopdr_key, null,
(SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key)
, bo.bes_bestelopdr_id)
, 'C' || TO_CHAR (cnt_contract_nummer_intern)
|| DECODE (cnt_contract_versie, NULL, NULL, '.' || cnt_contract_versie)
)
opdracht_id,
DECODE (to_char(f.fin_factuur_datum, 'yyyy'),
'2010', to_date('20110102', 'YYYYMMDD'),
'2011', to_date('20120102', 'YYYYMMDD'),
DECODE (
c.cnt_contract_key,
NULL, DECODE (
bo.bes_bestelopdr_key,
NULL, (SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE m.mld_melding_key =
o.mld_melding_key
AND m.mld_stdmelding_key =
std.mld_stdmelding_key
AND std.mld_ins_discipline_key =
d.ins_discipline_key
AND d.ins_srtdiscipline_key =
sd.ins_srtdiscipline_key),
bo.bes_bestelopdr_id),
'C'
|| TO_CHAR (cnt_contract_nummer_intern)
|| DECODE (cnt_contract_versie,
NULL, NULL,
'.' || cnt_contract_versie))
opdracht_id,
DECODE (TO_CHAR (f.fin_factuur_datum, 'yyyy'),
'2010', TO_DATE ('20110102', 'YYYYMMDD'),
'2011', TO_DATE ('20120102', 'YYYYMMDD'),
f.fin_factuur_datum),
f.fin_factuur_nr,
COALESCE (b_c.prs_bedrijf_key, COALESCE(b_o.prs_bedrijf_key, b_b.prs_bedrijf_key)) prs_bedrijf_key,
COALESCE (b_c.prs_bedrijf_key,
COALESCE (b_o.prs_bedrijf_key, b_b.prs_bedrijf_key))
prs_bedrijf_key,
fr.fin_factuurregel_totaal,
round(fr.fin_factuurregel_totaal* DECODE(btw.fin_btwtabelwaarde_verlegd, 1, 0, btw.fin_btwtabelwaarde_perc/100),2) fin_factuurregel_btw,
ROUND (
fr.fin_factuurregel_totaal
* DECODE (btw.fin_btwtabelwaarde_verlegd,
1, 0,
btw.fin_btwtabelwaarde_perc / 100),
2)
fin_factuurregel_btw,
btw.fin_btwtabelwaarde_code,
btw.fin_btwtabelwaarde_key,
fr.fin_factuurregel_nr,
f.fin_factuur_debiteur_nr,
f.fin_factuur_opmerking,
f.fin_factuur_boekmaand,
COALESCE (o.mld_opdr_datumbegin, c.cnt_contract_looptijd_van, bo.bes_bestelopdr_datum) opdr_datum,
COALESCE ( (SELECT fac.safe_to_number (fac_usrdata_code)
FROM fin_kenmerkfactuur fk, fac_usrdata ud
WHERE fk.fin_factuur_key = f.fin_factuur_key
AND fk.fin_kenmerk_key = 2
AND fac.safe_to_number (fin_kenmerkfactuur_waarde) =
fac_usrdata_key),
1
),
COALESCE (o.mld_opdr_datumbegin,
c.cnt_contract_looptijd_van,
bo.bes_bestelopdr_datum)
opdr_datum,
COALESCE (
(SELECT fac.safe_to_number (fac_usrdata_code)
FROM fin_kenmerkfactuur fk, fac_usrdata ud
WHERE fk.fin_factuur_key = f.fin_factuur_key
AND fk.fin_kenmerk_key = 2
AND fac.safe_to_number (fin_kenmerkfactuur_waarde) =
fac_usrdata_key),
1),
pr.mld_project_nr -- Voor Projectorders en Projectorder (externe uren)
projectnummer,
projectnummer,
CASE
WHEN aaxx_get_user = 'IT'
AND ( ot.mld_typeopdr_omschrijving = 'Workorder'
@@ -3231,8 +3252,8 @@ AS
NULL
END
project_nummer_kp,
pr.mld_project_omschrijving -- Voor Projectorders en Projectorder (externe uren)
projectnaam,
pr.mld_project_omschrijving -- Voor Projectorders en Projectorder (externe uren)
projectnaam,
prs_kostensoort_oms,
DECODE (
aaxx_get_user,
@@ -3242,189 +3263,248 @@ AS
COALESCE (
TO_CHAR (
DECODE (
aaxx_get_cnt_gebrokenboekjaar(c.cnt_contract_key),
aaxx_get_cnt_gebrokenboekjaar (
c.cnt_contract_key),
'nee', c.cnt_contract_looptijd_tot,
'ja', TO_DATE (fin_factuur_boekmaand,'yyyy-mm'),
'ja', TO_DATE (
fin_factuur_boekmaand,
'yyyy-mm'),
NULL),
'yyyy'),
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
'2022', k.prs_kostensoort_refcode,
'2023', k.prs_kostensoort_refcode,
DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 3),
'CF ', '1350807',
'CFE', '1350807',
'CV ', '1350808',
'CVE', '1350809',
'CF ', '1350827',
'CFE', '1350827',
'CV ', '1350828',
'CVE', '1350829',
'NC ', DECODE (
SUBSTR (k.prs_kostensoort_upper,
1,
7),
'NC PROJ', '1350817',
'1350809'),
'NC PROJ', '1350830',
'1350829'),
'Onbekend')),
'IT', DECODE (
COALESCE (
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
COALESCE (
TO_CHAR (
DECODE (
aaxx_get_cnt_gebrokenboekjaar(c.cnt_contract_key),
'nee', c.cnt_contract_looptijd_tot,
'ja', TO_DATE (fin_factuur_boekmaand,'yyyy-mm'),
NULL),
'yyyy'),
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
'2022', k.prs_kostensoort_refcode,
'2021', k.prs_kostensoort_refcode,
'2020', k.prs_kostensoort_refcode,
COALESCE (
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
COALESCE (
TO_CHAR (
DECODE (
aaxx_get_cnt_gebrokenboekjaar (
c.cnt_contract_key),
'nee', c.cnt_contract_looptijd_tot,
'ja', TO_DATE (
fin_factuur_boekmaand,
'yyyy-mm'),
NULL),
'yyyy'),
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
'2023', k.prs_kostensoort_refcode,
DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 2),
'CF', '1350822',
'CV', '1350823',
'NC', DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 7),
'NC PROJ', '1350817',
'1350824'),
SUBSTR(COALESCE(kp_cnt.prs_kostenplaatsgrp_nr, kp_opd.prs_kostenplaatsgrp_nr, kp_bes.prs_kostenplaatsgrp_nr),1,3),
'400', '1350831',
'401', '1350831',
'500', '1350832',
k.prs_kostensoort_refcode)),
--NIEUW DSM ivm gebruik L-code #56150
'DSM', DECODE (
COALESCE (
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
COALESCE (
TO_CHAR (
DECODE (
aaxx_get_cnt_gebrokenboekjaar(c.cnt_contract_key),
'nee', c.cnt_contract_looptijd_tot,
'ja', TO_DATE (fin_factuur_boekmaand,'yyyy-mm'),
NULL),
'yyyy'),
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
'2022', k.prs_kostensoort_refcode,
COALESCE (
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
COALESCE (
TO_CHAR (
DECODE (
aaxx_get_cnt_gebrokenboekjaar (
c.cnt_contract_key),
'nee', c.cnt_contract_looptijd_tot,
'ja', TO_DATE (
fin_factuur_boekmaand,
'yyyy-mm'),
NULL),
'yyyy'),
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
'2023', k.prs_kostensoort_refcode,
DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 2),
'L ', DECODE (
SUBSTR (k.prs_kostensoort_upper,
1,
5),
'L CF ', '1350807',
'L CFE', '1350807',
'L CV ', '1350808',
'L CVE', '1350809',
'L CF ', '1350827',
'L CFE', '1350827',
'L CV ', '1350828',
'L CVE', '1350829',
'L NC ', DECODE (
SUBSTR (
k.prs_kostensoort_upper,
1,
9),
'L NC PROJ', '1350817',
'1350809'),
'L NC PROJ', '1350830',
'1350829'),
'Onbekend'),
DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 3),
'CF ', '1350807',
'CFE', '1350807',
'CV ', '1350808',
'CVE', '1350809',
'CF ', '1350827',
'CFE', '1350827',
'CV ', '1350828',
'CVE', '1350829',
'NC ', DECODE (
SUBSTR (k.prs_kostensoort_upper,
1,
7),
'NC PROJ', '1350817',
'1350809'),
'NC PROJ', '1350830',
'1350829'),
'Onbekend'))),
-- standaard keuze voor alle andere accounts.
DECODE (
COALESCE (
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
COALESCE (
TO_CHAR (
DECODE (
aaxx_get_cnt_gebrokenboekjaar(c.cnt_contract_key),
'nee', c.cnt_contract_looptijd_tot,
'ja', TO_DATE (fin_factuur_boekmaand,'yyyy-mm'),
NULL),
'yyyy'),
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
'2022', k.prs_kostensoort_refcode,
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
COALESCE (
TO_CHAR (
DECODE (
aaxx_get_cnt_gebrokenboekjaar (
c.cnt_contract_key),
'nee', c.cnt_contract_looptijd_tot,
'ja', TO_DATE (fin_factuur_boekmaand,
'yyyy-mm'),
NULL),
'yyyy'),
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
'2023', k.prs_kostensoort_refcode,
DECODE (
SUBSTR (k.prs_kostensoort_upper, 1, 3),
'CF ', '1350807',
'CFE', '1350807',
'CV ', '1350808',
'CVE', '1350809',
'CF ', '1350827',
'CFE', '1350827',
'CV ', '1350828',
'CVE', '1350829',
'NC ', DECODE (SUBSTR (k.prs_kostensoort_upper, 1, 7),
'NC PROJ', '1350817',
'1350809'),
'NC PROJ', '1350830',
'1350829'),
'Onbekend'))),
k.prs_kostensoort_key,
COALESCE(o.prs_kostenplaats_key,
COALESCE(c.prs_kostenplaats_key,
(SELECT DISTINCT b.prs_kostenplaats_key
FROM bes_bestelling b,
bes_bestelopdr_item boi,
bes_bestelling_item bi
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key)
)
) prs_kostenplaats_key,
COALESCE(kp_cnt.prs_kostenplaats_key, kp_opd.prs_kostenplaats_key, kp_bes.prs_kostenplaats_key)
prs_kostenplaats_key,
COALESCE(kp_cnt.prs_kostenplaatsgrp_key, kp_opd.prs_kostenplaatsgrp_key, kp_bes.prs_kostenplaatsgrp_key)
prs_kostenplaatsgrp_key,
o.mld_opdr_key,
c.cnt_contract_key,
bo.bes_bestelopdr_key,
( -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn met status ingevoerd(2) of incompleet(3)
SELECT DECODE(count(*), 0, f.fin_factuur_statuses_key, 2)
FROM fin_factuur f_t, cnt_contract c_t, bes_bestelopdr b_t, mld_opdr o_t
WHERE f_t.fin_factuur_verwijder is null
AND f_t.mld_opdr_key = o_t.mld_opdr_key(+)
AND f_t.cnt_contract_key = c_t.cnt_contract_key(+)
AND f_t.bes_bestelopdr_key = b_t.bes_bestelopdr_key(+)
AND COALESCE(o_t.mld_uitvoerende_keys, COALESCE(b_t.prs_bedrijf_key, c_t.cnt_prs_bedrijf_key))
= COALESCE(o.mld_uitvoerende_keys, COALESCE(bo.prs_bedrijf_key, c.cnt_prs_bedrijf_key))
AND f.fin_factuur_nr = f_t.fin_factuur_nr
AND f_t.fin_factuur_statuses_key in (2,3)
AND f.fin_factuur_statuses_key = 6) fin_factuur_statuses_key,
lk.prs_kostenplaats_nr lev_kpn,
SELECT DECODE (COUNT (*), 0, f.fin_factuur_statuses_key, 2)
FROM fin_factuur f_t,
cnt_contract c_t,
bes_bestelopdr b_t,
mld_opdr o_t
WHERE f_t.fin_factuur_verwijder IS NULL
AND f_t.mld_opdr_key = o_t.mld_opdr_key(+)
AND f_t.cnt_contract_key = c_t.cnt_contract_key(+)
AND f_t.bes_bestelopdr_key = b_t.bes_bestelopdr_key(+)
AND COALESCE (
o_t.mld_uitvoerende_keys,
COALESCE (b_t.prs_bedrijf_key,
c_t.cnt_prs_bedrijf_key)) =
COALESCE (
o.mld_uitvoerende_keys,
COALESCE (bo.prs_bedrijf_key,
c.cnt_prs_bedrijf_key))
AND f.fin_factuur_nr = f_t.fin_factuur_nr
AND f_t.fin_factuur_statuses_key IN (2, 3)
AND f.fin_factuur_statuses_key = 6)
fin_factuur_statuses_key,
lk.prs_kostenplaats_nr
lev_kpn,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'EXTRA CONTROLE?'
AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_controle,
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'EXTRA CONTROLE?'
AND fk.fin_factuur_key = f.fin_factuur_key)
fin_factuur_controle,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'GECONTROLEERD'
AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_controle_ok,
COALESCE(f.fin_factuur_flag, 0)
FROM fin_factuur f,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
bes_bestelopdr bo,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_bedrijf b_b,
prs_kostensoort k,
prs_kostensoortgrp kg,
prs_kostenplaats lk,
aaxx_v_projectorders_bron pr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND f.mld_opdr_key = pr.mld_opdr_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bo.prs_bedrijf_key = b_b.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
AND f.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND k.prs_kostenplaats_key = lk.prs_kostenplaats_key(+)
AND k.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+)
AND f.fin_factuur_verwijder IS NULL;
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'GECONTROLEERD'
AND fk.fin_factuur_key = f.fin_factuur_key)
fin_factuur_controle_ok,
COALESCE (f.fin_factuur_flag, 0)
FROM fin_factuur f,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
bes_bestelopdr bo,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_bedrijf b_b,
prs_kostensoort k,
prs_kostensoortgrp kg,
prs_kostenplaats lk,
aaxx_v_projectorders_bron pr,
( SELECT fin_factuur_key,
c.prs_kostenplaats_key,
kpg.prs_kostenplaatsgrp_key,
kpg.prs_kostenplaatsgrp_nr
FROM fin_factuur f,
cnt_contract c,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg
WHERE f.cnt_contract_key = c.cnt_contract_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND kp.prs_kostenplaatsgrp_key =
kpg.prs_kostenplaatsgrp_key
ORDER BY f.fin_factuur_key DESC) kp_cnt,
( SELECT fin_factuur_key,
o.prs_kostenplaats_key,
kpg.prs_kostenplaatsgrp_key,
kpg.prs_kostenplaatsgrp_nr
FROM fin_factuur f,
mld_opdr o,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg
WHERE f.mld_opdr_key = o.mld_opdr_key
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND kp.prs_kostenplaatsgrp_key =
kpg.prs_kostenplaatsgrp_key
ORDER BY f.fin_factuur_key DESC) kp_opd,
( SELECT DISTINCT f.fin_factuur_key,
b.prs_kostenplaats_key,
kpg.prs_kostenplaatsgrp_key,
kpg.prs_kostenplaatsgrp_nr
FROM fin_factuur f,
bes_bestelling b,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg
WHERE f.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key =
bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND kp.prs_kostenplaatsgrp_key =
kpg.prs_kostenplaatsgrp_key
ORDER BY f.fin_factuur_key DESC) kp_bes
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.fin_factuur_key = kp_cnt.fin_factuur_key(+)
AND f.fin_factuur_key = kp_opd.fin_factuur_key(+)
AND f.fin_factuur_key = kp_bes.fin_factuur_key(+)
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND f.mld_opdr_key = pr.mld_opdr_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bo.prs_bedrijf_key = b_b.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
AND f.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND k.prs_kostenplaats_key = lk.prs_kostenplaats_key(+)
AND k.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+)
AND f.fin_factuur_verwijder IS NULL;
-- Alle facturen akkoord - Gebruikersoverzicht inkoopfacturen die wel/niet meegaan de EXACT inkooprun in
CREATE OR REPLACE VIEW aaxx_v_export_exact_check
(
@@ -13592,10 +13672,13 @@ IS
v_cnt_jaar_start NUMBER(10);
v_cnt_jaar_eind NUMBER(10);
v_cnt_maand_start NUMBER(10);
v_cnt_maand_start_tekst VARCHAR(2);
v_cnt_maand_eind NUMBER(10);
v_cnt_maand_eind_tekst VARCHAR(2);
v_cnt_start VARCHAR(7); -- Start contract in format tekst "jaar-mnd" (2022-05)
v_cnt_eind VARCHAR(7); -- Einde contract in format tekst "jaar-mnd" (2022-05)
v_factuur_boekmaand VARCHAR(7); -- Ingelezen factuur in format tekst "jaar-mnd" (2022-05)
v_fin_factuur_boekmaand_nu VARCHAR(7); -- Ingelezen factuur in format tekst "jaar-mnd" (2022-05)
v_gebroken_boekjaar NUMBER(1) := 0 ;
v_cnt_looptijd_mnd NUMBER(10);
v_cnt_deel_betaald_1 NUMBER(10); -- Deel van contract wat reeds betaald is
@@ -13614,6 +13697,7 @@ IS
v_factuur_datum_boekmaand_prev VARCHAR(2);
v_factuur_datum_boekmaand_nu VARCHAR(2);
v_fin_factuur_boekmaand_laatst VARCHAR(7);
v_fin_factuur_boekmaand_prev VARCHAR(7);
v_cnt_maandbedrag NUMBER(10);
v_gefactureerd_vorige_maand NUMBER(10);
@@ -14268,121 +14352,188 @@ BEGIN
IF rec.cnt_contract_key IS NOT NULL
THEN
SELECT SUBSTR(d.ins_discipline_omschrijving,1,2) cnt_soort, ROUND((c.cnt_contract_looptijd_tot - c.cnt_contract_looptijd_van)/30) cnt_looptijd_mnd,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_van, 'yyyy'))) cnt_jaar_start,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_tot, 'yyyy'))) cnt_jaar_eind,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_van, 'mm'))) cnt_maand_start,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_tot, 'mm'))) cnt_maand_eind,
t.cnt_termijn_type, t.cnt_termijn_aantal,
TO_NUMBER (TO_CHAR (SYSDATE, 'mm')) factuur_datum_boekmaand,
TO_NUMBER (TO_CHAR (SYSDATE, 'yyyy')) factuur_datum_boekmaand_jr
INTO v_cnt_soort, v_cnt_looptijd_mnd, v_cnt_jaar_start, v_cnt_jaar_eind, v_cnt_maand_start, v_cnt_maand_eind, v_cnt_termijn_type, v_cnt_termijn_aantal, v_factuur_datum_boekmaand, v_factuur_datum_boekmaand_jr
FROM cnt_contract c, cnt_termijn t, cnt_discipline d
WHERE c.cnt_contract_key = rec.cnt_contract_key
AND c.cnt_contract_termijntermijn = t.cnt_termijn_key (+)
AND c.ins_discipline_key = d.ins_discipline_key;
SELECT SUBSTR(d.ins_discipline_omschrijving,1,2) cnt_soort, ROUND((c.cnt_contract_looptijd_tot - c.cnt_contract_looptijd_van)/30) cnt_looptijd_mnd,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_van, 'yyyy'))) cnt_jaar_start,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_tot, 'yyyy'))) cnt_jaar_eind,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_van, 'mm'))) cnt_maand_start,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_tot, 'mm'))) cnt_maand_eind,
t.cnt_termijn_type, t.cnt_termijn_aantal,
TO_NUMBER (TO_CHAR (SYSDATE, 'mm')) factuur_datum_boekmaand,
TO_NUMBER (TO_CHAR (SYSDATE, 'yyyy')) factuur_datum_boekmaand_jr
INTO v_cnt_soort, v_cnt_looptijd_mnd, v_cnt_jaar_start, v_cnt_jaar_eind, v_cnt_maand_start, v_cnt_maand_eind, v_cnt_termijn_type, v_cnt_termijn_aantal, v_factuur_datum_boekmaand, v_factuur_datum_boekmaand_jr
FROM cnt_contract c, cnt_termijn t, cnt_discipline d
WHERE c.cnt_contract_key = rec.cnt_contract_key
AND c.cnt_contract_termijntermijn = t.cnt_termijn_key (+)
AND c.ins_discipline_key = d.ins_discipline_key;
-- Bepalen of het een gebroken boekjaar is...
IF v_cnt_jaar_start <> v_cnt_jaar_eind
THEN
v_gebroken_boekjaar := 1 ;
END IF;
-- Indien geen gebroken boekjaar, dan kunnen we als volgt verdeelperiode bepalen
IF v_gebroken_boekjaar = 0
-- METHODE 1 - niet meer actief maar onderstaande bepaling wordt nog wel tekstmarig in tekst-kenmerkveld van factuur weggeschreven want is wel een 'goede' indicatie voor degene die factuur oppakt
IF v_bedrag_totaal >0 AND v_cnt_looptijd_mnd > 0
THEN
v_cnt_deel_betaald_1 := (v_bedrag_gefactureerd / v_bedrag_totaal) * v_cnt_looptijd_mnd ;
v_cnt_deel_betaald_2 := ((v_bedrag_gefactureerd + rec.fin_factuur_totaal) / v_bedrag_totaal) * v_cnt_looptijd_mnd ;
-- METHODE 1: bepalen verdeelperiode adhv deel wat met de ingeboekte factuur op het gehele contract dan betaald is
IF v_bedrag_totaal >0 AND v_cnt_looptijd_mnd > 0
THEN
v_cnt_deel_betaald_1 := (v_bedrag_gefactureerd / v_bedrag_totaal) * v_cnt_looptijd_mnd ;
v_cnt_deel_betaald_2 := ((v_bedrag_gefactureerd + rec.fin_factuur_totaal) / v_bedrag_totaal) * v_cnt_looptijd_mnd ;
v_cnt_deel_betaald_tekst := TO_CHAR(ROUND((v_cnt_deel_betaald_2/v_cnt_looptijd_mnd)*100,2)) || '%' ;
END IF;
v_cnt_deel_betaald_tekst := TO_CHAR(ROUND((v_cnt_deel_betaald_2/v_cnt_looptijd_mnd)*100,2)) || '%' ;
END IF;
-- METHODE 2
-- METHODE 2
-- Nieuwe setting in 2022.1 (fin_defaultboekmaand_cnt) waarmee je met instelling 2 kunt afdwingen dat invoice-datum wordt gehanteerd voor bepaling boek-periode
-- Deze setting dient default op 2 te staan voor HEYDAY en daarmee worden in onderstaande uitwerking alle CF-contractn indien nodig aangepast en komen de CV's automatisch goed te staan.
-- 1. Facturen die na contractperiode worden geboekt moeten altijd op de laatste periode uit contract
-- 2. Facturen op CF-contracten die in de contractperiode geboekt worden, moeten op voorgaande verdeelperiode komen, mits daar nog niet meer dan 90% qua facturatie op voldaan is.
-- 3. Credit-facturen moeten altijd op de laatste geboekt verdeelperiode komen, inclusief controle
-- 4. Alle overige contract-facturen komen met de fin_defaultboekmaand_cnt op 2 dus altijd op verdeelperiode die overeenkomt met de factuurdatum (dit is voor CV's de HEYDAY-regel)
-- 2. Eerste factuur die in de contractperiode geboekt wordt, moet op eerste periode uit contract komen,
----- evenals de facturen die ingeboekt worden op datum die binnen eerste periode contract vallen
-- 3. Facturen op CF-contracten die in de contractperiode geboekt worden, moeten op voorgaande verdeelperiode komen, mits daar nog niet meer dan 90% qua facturatie op voldaan is.
----- Indien al meer dan 90% dan boeken op de periode van inboeken factuur + controle
-- 4. Credit-facturen moeten altijd op de laatste geboekt verdeelperiode komen, inclusief controle
-- 5. Overige varianten waarvan boekmaand nog her-bepaald moet worden?
-- 6. Alle overige contract-facturen komen door de facilitor-setting fin_defaultboekmaand_cnt (=2 voor heyday) dus altijd automatisch op verdeelperiode die overeenkomt met de factuurdatum (dit is voor CV's de HEYDAY-regel)
-- default
v_fin_factuur_boekmaand_2 := 'nvt' ;
-- Wat is de laatst gehanteerde fin_factuur_boekmaand?
-- Gaan eerst in tekststring de relevante boekmaand-data bepalen. Dit zijn:
---- 1. Begin contract = v_cnt_start = " "2022-01"
---- 2. Einde contract = v_cnt_eind = "2022-09"
---- 3. Laatste factuur geboekt in boekmaand = v_fin_factuur_boekmaand_laatst = "2022-06" of "geen"
---- 4. NU geboekt = sysdate factuur ingelezen, vertaald naar boekmaand = v_fin_factuur_boekmaand_nu = "2022-10"
---- 5.1. Voorgaande boekmaand = v_fin_factuur_boekmaand_prev
---- 5.2. Voorgaande boekmaand bedrag al gefactureerd = v_gefactureerd_vorige_maand
-- 1. v_cnt_start
v_cnt_maand_start_tekst := TO_CHAR(v_cnt_maand_start) ;
IF LENGTH (v_cnt_maand_start_tekst) = 1 THEN v_cnt_maand_start_tekst := '0' || v_cnt_maand_start_tekst ; END IF;
v_cnt_start := TO_CHAR(v_cnt_jaar_start) || '-' || v_cnt_maand_start_tekst ;
-- 2. v_cnt_eind
v_cnt_maand_eind_tekst := TO_CHAR(v_cnt_maand_eind) ;
IF LENGTH (v_cnt_maand_eind_tekst) = 1 THEN v_cnt_maand_eind_tekst := '0' || v_cnt_maand_eind_tekst ; END IF;
v_cnt_eind := TO_CHAR(v_cnt_jaar_eind) || '-' || v_cnt_maand_eind_tekst ;
-- 3. v_fin_factuur_boekmaand_laatst
SELECT MAX(f.fin_factuur_boekmaand)
INTO v_fin_factuur_boekmaand_laatst
FROM fin_factuur f
WHERE cnt_contract_key = rec.cnt_contract_key AND fin_factuur_boekmaand IS NOT NULL AND fin_factuur_key NOT IN (rec.fin_factuur_key) AND fin_factuur_verwijder IS NULL ;
IF v_fin_factuur_boekmaand_laatst IS NULL THEN v_fin_factuur_boekmaand_laatst := 'geen'; END IF ;
-- Voor zowel CF en CV: Factuur in 2022-januari op contract met einddatum 2021-dec moet op laatste boekmaand van contract, dus 2021-12
--- NOG NETJES 100% INPASSEN!!! - Moet ook werken voor contract die op 2022-04 afloopt en op 2022-06 nog factuur volgt!
--- Daarvoor de PERIODES omzetten naar tekst-string format "jaar-mnd"
v_cnt_maand_eind_tekst := TO_CHAR(v_cnt_maand_eind) ;
-- 4. v_fin_factuur_boekmaand_nu
v_factuur_datum_boekmaand_nu := TO_CHAR(v_factuur_datum_boekmaand);
-- 9 moet 09 worden
IF LENGTH (v_cnt_maand_eind_tekst) = 1 THEN v_cnt_maand_eind_tekst := '0' || v_cnt_maand_eind_tekst ; END IF;
IF LENGTH (v_factuur_datum_boekmaand_nu) = 1 THEN v_factuur_datum_boekmaand_nu := '0' || v_factuur_datum_boekmaand_nu ; END IF;
--
v_cnt_eind := TO_CHAR(v_cnt_jaar_eind) || '-' || v_cnt_maand_eind_tekst ;
v_factuur_boekmaand := TO_CHAR(v_factuur_datum_boekmaand_jr) || '-' || v_factuur_datum_boekmaand_nu ;
IF v_factuur_boekmaand > v_cnt_eind --v_factuur_datum_boekmaand_jr > v_cnt_jaar_eind
v_fin_factuur_boekmaand_nu := TO_CHAR(v_factuur_datum_boekmaand_jr) || '-' || v_factuur_datum_boekmaand_nu ;
-- 5.1. v_fin_factuur_boekmaand_prev
--- Geen previous-maand te bepalen als looptijd cnt <= 1 maand en/of geboekt in maand 1 van het contract
IF v_cnt_looptijd_mnd <= 1 OR v_fin_factuur_boekmaand_nu = v_cnt_start
THEN
v_fin_factuur_boekmaand_2 := v_cnt_jaar_eind || '-' || v_cnt_maand_eind_tekst ;
v_fin_factuur_boekmaand_prev := 'geen' ;
-- wegschrijven in fin_factuur_boekmaand
UPDATE fin_factuur
SET fin_factuur_boekmaand = v_fin_factuur_boekmaand_2
WHERE fin_factuur_key = rec.fin_factuur_key ;
--- Wel previous-maand te bepalen
ELSE
--- als datum ingeboekt in contractperiode
IF v_fin_factuur_boekmaand_nu > v_cnt_start AND v_fin_factuur_boekmaand_nu <= v_cnt_eind
THEN
v_factuur_datum_boekmaand_prev := TO_CHAR(v_factuur_datum_boekmaand -1);
IF v_factuur_datum_boekmaand_prev = '0'
THEN
v_fin_factuur_boekmaand_prev := TO_CHAR(v_factuur_datum_boekmaand_jr-1) || '-' || '12';
ELSE
IF LENGTH (v_factuur_datum_boekmaand_prev) = 1 THEN v_factuur_datum_boekmaand_prev := '0' || v_factuur_datum_boekmaand_prev ; END IF;
v_fin_factuur_boekmaand_prev := TO_CHAR(v_factuur_datum_boekmaand_jr) || '-' || v_factuur_datum_boekmaand_prev;
END IF;
END IF;
--- als datum ingeboekt na contractperiode dan is v_fin_factuur_boekmaand_prev dus v_cnt_eind-1
IF v_fin_factuur_boekmaand_nu > v_cnt_eind
THEN
v_factuur_datum_boekmaand_prev := TO_CHAR(v_cnt_maand_eind -1);
IF v_factuur_datum_boekmaand_prev = '0'
THEN
v_fin_factuur_boekmaand_prev := TO_CHAR(v_cnt_jaar_eind-1) || '-' || '12';
ELSE
IF LENGTH (v_factuur_datum_boekmaand_prev) = 1 THEN v_factuur_datum_boekmaand_prev := '0' || v_factuur_datum_boekmaand_prev ; END IF;
v_fin_factuur_boekmaand_prev := TO_CHAR(v_cnt_jaar_eind) || '-' || v_factuur_datum_boekmaand_prev;
END IF;
END IF;
END IF;
-- 5.2. v_gefactureerd_vorige_maand
IF v_fin_factuur_boekmaand_prev = 'geen'
THEN
v_gefactureerd_vorige_maand := 0 ;
ELSE
SELECT COALESCE(sum(f.fin_factuur_totaal),0)
INTO v_gefactureerd_vorige_maand
FROM fin_factuur f
WHERE cnt_contract_key = rec.cnt_contract_key
AND fin_factuur_boekmaand IS NOT NULL
AND fin_factuur_key NOT IN (rec.fin_factuur_key)
AND fin_factuur_verwijder IS NULL
AND fin_factuur_boekmaand = v_fin_factuur_boekmaand_prev ;
END IF;
-- Nu gaan we de juiste boekmaand conform METHODE 2 bepalen
-- default
v_fin_factuur_boekmaand_2 := 'nvt' ;
-- 1. Voor zowel CF en CV: boekmaand/jr na contractperiode = boekmaand altijd laatste contractperiode aanhouden
IF v_fin_factuur_boekmaand_nu > v_cnt_eind
THEN
v_fin_factuur_boekmaand_2 := v_cnt_eind ;
-- wegschrijven in fin_factuur_boekmaand
UPDATE fin_factuur
SET fin_factuur_boekmaand = v_fin_factuur_boekmaand_2
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
-- 2. Eerste factuur (inleesdatum binnen contract) of factuur ingeboekt in eerste periode contract dan altijd op de eerste periode uit contract laten komen
IF (v_fin_factuur_boekmaand_nu <= v_cnt_eind AND v_fin_factuur_boekmaand_laatst = 'geen')
OR
(v_fin_factuur_boekmaand_nu = v_cnt_start)
THEN
v_fin_factuur_boekmaand_2 := v_cnt_start ;
-- wegschrijven in fin_factuur_boekmaand
UPDATE fin_factuur
SET fin_factuur_boekmaand = v_fin_factuur_boekmaand_2
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
IF v_cnt_looptijd_mnd > 0
-- 3. Voor CF die qua inlees-datum binnen contract valt, moet op voorgaande boekmaand gezet worden, mits daarop minder dan 90% al op is gefactureerd. Anders op v_fin_factuur_boekmaand_nu
IF v_cnt_soort = 'CF' AND v_fin_factuur_boekmaand_nu <= v_cnt_eind AND v_fin_factuur_boekmaand_prev <> 'geen' AND v_bedrag_totaal >0 AND v_cnt_looptijd_mnd > 0 AND rec.fin_factuur_totaal > 0
THEN
v_cnt_maandbedrag := ROUND(v_bedrag_totaal / v_cnt_looptijd_mnd,2) ;
END IF;
-- Voor DEBET-facturen - CF die qua inlees-datum binnen contract valt, moet op voorgaande boekmaand gezet worden, mits daarop minder dan 90% al op is gefactureerd
IF v_cnt_soort = 'CF'
-- AND (v_factuur_datum_boekmaand_jr >= v_cnt_jaar_start AND v_factuur_datum_boekmaand_jr <= v_cnt_jaar_eind)
AND v_factuur_boekmaand <= v_cnt_eind
AND v_factuur_datum_boekmaand > 1 AND v_bedrag_totaal >0 AND v_cnt_looptijd_mnd > 0 AND rec.fin_factuur_totaal > 0
THEN
v_cnt_maandbedrag := ROUND(v_bedrag_totaal / v_cnt_looptijd_mnd,2) ;
v_factuur_datum_boekmaand_prev := TO_CHAR(v_factuur_datum_boekmaand -1) ;
-- 9 moet 09 worden
IF LENGTH (v_factuur_datum_boekmaand_prev) = 1 THEN v_factuur_datum_boekmaand_prev := '0' || v_factuur_datum_boekmaand_prev ; END IF;
v_factuur_datum_boekmaand_nu := TO_CHAR(v_factuur_datum_boekmaand);
IF LENGTH (v_factuur_datum_boekmaand_nu) = 1 THEN v_factuur_datum_boekmaand_nu := '0' || v_factuur_datum_boekmaand_nu ; END IF;
-- Bepalen bedrag in vorige periode al gefactureerd
SELECT COALESCE(sum(f.fin_factuur_totaal),0)
INTO v_gefactureerd_vorige_maand
FROM fin_factuur f
WHERE cnt_contract_key = rec.cnt_contract_key
AND fin_factuur_boekmaand IS NOT NULL
AND fin_factuur_key NOT IN (rec.fin_factuur_key)
AND fin_factuur_verwijder IS NULL
AND fin_factuur_boekmaand = TO_CHAR(v_factuur_datum_boekmaand_jr) || '-' || v_factuur_datum_boekmaand_prev ;
-- Dus als inleesactie op 2022-4 EN totaal gefactureerd voor 2022-3 is al >90% , dan de factuur niet op 2022-3 maar op 2022-4 zetten incl controle
IF (ROUND(v_gefactureerd_vorige_maand/v_cnt_maandbedrag,2)*100) > 90
THEN
v_fin_factuur_boekmaand_2 := TO_CHAR(v_factuur_datum_boekmaand_jr) || '-' || v_factuur_datum_boekmaand_nu;
v_fin_factuur_boekmaand_2 := v_fin_factuur_boekmaand_nu;
-- incl controle (voor paar omgevingen niet nodig
-- incl controle (voor paar omgevingen niet nodig..)
v_aanduiding_controle := 'CONTROLE - Contract CF en 90% al gefactureerd in voorgaande periode' ;
IF aaxx_get_user NOT IN ('SMKA', 'ESSENT')
@@ -14393,22 +14544,19 @@ BEGIN
END IF;
ELSE
v_fin_factuur_boekmaand_2 := TO_CHAR(v_factuur_datum_boekmaand_jr) || '-' || v_factuur_datum_boekmaand_prev;
-- anders kan de factuur 'gewoon' op de vorige boekmaand
v_fin_factuur_boekmaand_2 := v_fin_factuur_boekmaand_prev;
END IF;
-- wegschrijven van de hierboven bepaalde boekmaand
IF v_fin_factuur_boekmaand_2 <> 'nvt'
THEN
UPDATE fin_factuur
SET fin_factuur_boekmaand = v_fin_factuur_boekmaand_2
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
UPDATE fin_factuur
SET fin_factuur_boekmaand = v_fin_factuur_boekmaand_2
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
-- Voor CREDITS altijd op controle JA + kijken of het op de laatste boekmaand geboekt kan worden
-- 4. Voor CREDITS altijd op controle JA + kijken of het op de laatste gebruikte boekmaand geboekt kan worden
IF rec.fin_factuur_totaal < 0
THEN
@@ -14417,7 +14565,7 @@ BEGIN
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
-- kijken of we de boekmaand op de laatste gehanteerde boekmaand kunnen zetten (hierboven reeds bepaald)
-- indien mogelijk de boekmaand op de laatste gehanteerde boekmaand zetten
IF v_fin_factuur_boekmaand_laatst <> 'geen'
THEN
@@ -14426,38 +14574,25 @@ BEGIN
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
END IF;
-- 5. Nog andere varianten waar boekmaand van bepaald moet worden?
-- 6. Alle overige contract-facturen ....
--- Deze worden bij import al AUTOMATISCH gevuld met boekmaand = factuurdatum (ivm setting fin_defaultboekmaand_cnt = 2)
-- Einde methode 2:
-- wegschrijven van de uitleg tav de bepaling van de boekmaand in een kenmerkveld
v_fin_factuur_boekmaand_tekst := 'Type: ' || v_cnt_soort || '. Contractduur: ' || TO_CHAR(v_cnt_looptijd_mnd) || ' mnd. Contractbedrag: ' || TO_CHAR(v_bedrag_totaal) || ' Hoogste boekmnd: ' || v_fin_factuur_boekmaand_laatst || chr(10) || chr(13)
|| 'Deel nu betaald: ' || v_cnt_deel_betaald_tekst || ' (correspondeert met verdeelperiode ' || TO_CHAR(ROUND(v_cnt_deel_betaald_2,2)) || ')' || chr(10) || chr(13)
|| 'BEPALING HEYDAY CF: ' || 'Maandbedrag: ' || TO_CHAR(v_cnt_maandbedrag) || ' Gefactureerd vorige maand ' || TO_CHAR(v_gefactureerd_vorige_maand) || ' (' || TO_CHAR(ROUND(v_gefactureerd_vorige_maand/v_cnt_maandbedrag,2)*100) || '%)' || ' Verdeelperiode bepaald:' || v_fin_factuur_boekmaand_2
-- || chr(10) || chr(13) || 'TEST: 1.' || v_cnt_start || ' - 2.' || v_cnt_eind || ' - 3.' || v_fin_factuur_boekmaand_laatst || ' - 4.' || v_fin_factuur_boekmaand_nu || ' - 5.1.' || v_fin_factuur_boekmaand_prev || ' - 5.2.' || v_gefactureerd_vorige_maand
;
-- wegschrijven van de uitleg tav de bepaling van de boekmaand in een kenmerkveld
v_fin_factuur_boekmaand_tekst := 'Type: ' || v_cnt_soort || '. Contractduur: ' || TO_CHAR(v_cnt_looptijd_mnd) || ' mnd. Contractbedrag: ' || TO_CHAR(v_bedrag_totaal) || ' Hoogste boekmnd: ' || v_fin_factuur_boekmaand_laatst || chr(10) || chr(13)
|| 'Deel nu betaald: ' || v_cnt_deel_betaald_tekst || ' (correspondeert met verdeelperiode ' || TO_CHAR(ROUND(v_cnt_deel_betaald_2,2)) || ')' || chr(10) || chr(13)
|| 'BEPALING HEYDAY CF: ' || 'Maandbedrag: ' || TO_CHAR(v_cnt_maandbedrag) || ' Gefactureerd vorige maand ' || TO_CHAR(v_gefactureerd_vorige_maand) || ' (' || TO_CHAR(ROUND(v_gefactureerd_vorige_maand/v_cnt_maandbedrag,2)*100) || '%)' || ' Verdeelperiode bepaald:' || v_fin_factuur_boekmaand_2 ;
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_boekmaand, SUBSTR(v_fin_factuur_boekmaand_tekst,1,1000));
-- gebroken boekjaar = 1
ELSE
-- Gebroken boekjaren zouden bij HEYDAY niet (veel) voorkomen, bij uitzondering.
-- De bepaling van verdeelperiode hebben we bij aanvang factuurscanning 2021-okt dan ook niet uitgewerkt.
-- Indien wel relevant dan hieronder dan dus nog verder UITWERKEN.
-- Voor nu zetten we facturen op contracten met gebroken boekjaar altijd op CONTROLE
---- Voorbeeld GEBROKEN BOEKJAAR en verdeelperiodes:
---- Contractperiode: 2020 - oktober t/m 2021 - maart = 6 maanden
---- Verdeelperiodes zijn: 2020-1, 2020-2, 2020-3, 2021-1, 2021-2, 2021-3
-- wegschrijven van de bepaling in een kenmerkveld en controle zetten
v_fin_factuur_boekmaand_tekst := 'Gebroken boekjaar - (nog) geen automatische bepaling verdeelperiode' ;
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_boekmaand, SUBSTR(v_fin_factuur_boekmaand_tekst,1,1000));
v_aanduiding_controle := 'CONTROLE - Contract met gebroken boekjaar en dus (nog) geen automatische bepaling verdeelperiode' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_boekmaand, SUBSTR(v_fin_factuur_boekmaand_tekst,1,1000));
-- Tot slot nog voor facturen op CO's van vorig boekjaar ook nog op CONTROLE zetten
IF v_cnt_jaar_eind < c_huidig_jaar