AAIT#72344 -- Verkoopinterface voor inlo-covestro PROJECTEN activeren en inrichten

AAIT#77215 -- Facturen OCP wel boeken maar niet naar exact - inpassen in inkoopinterface
AAIT#73079 -- Verkoopinterface INLO-Covestro

svn path=/Customer/trunk/; revision=59997
This commit is contained in:
Jos Migo
2023-04-13 14:23:20 +00:00
parent 4ddba7a5d5
commit 36774195d3

View File

@@ -217,7 +217,7 @@ BEGIN
IF v_teller > 1
THEN
v_po_nr := SUBSTR ('!-' || v_po_nr, 1, 20) ;
v_po_nr := SUBSTR (v_po_nr || '-!', 1, 20) ;
END IF;
@@ -322,7 +322,7 @@ BEGIN
IF v_teller > 1
THEN
v_po_regel := SUBSTR ('!-' || v_po_regel, 1, 100) ;
v_po_regel := SUBSTR (v_po_regel || '-!', 1, 100) ;
END IF;
@@ -615,6 +615,285 @@ AS
-------------------------------------------
-- INKOOPINTERFACE - exportfunctie - EXACT
-------------------------------------------
-- Inkoop: Alle facturen akkoord - Gebruikersoverzicht inkoopfacturen die wel/niet meegaan de EXACT inkooprun in
--- dit is ook de bronview voor de export EXACT (de inkoopfacturen die wel/niet meegaan naar Exact)
CREATE OR REPLACE VIEW aaxx_v_export_exact_check
(
prs_kostenplaatsgrp_nr,
fin_factuur_key,
check_in_inkooprun,
fin_factuur_totaal,
check_factuurdatum, -- facturen mogen niet ouder zijn dan 5 jaar of meer dan <20><>n jaar in de toekomst
check_dubbelefactuur, -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn met status ingevoerd, afgewezen of incompleet
check_nogtecontroleren, -- factuur staat op controle en moet nog gecontroleerd worden (vinkje controle nog niet gezet)
check_onholdgezet, -- filterstatus 1 = bolletje 'On hold - Niet meenemen in inkooprun'
check_admin_exact, -- voor inlo en aait gelden meerdere administratie met een vereiste match op SUBSTR(prs_kostenplaatsgrp_nr, 1, 3)
check_geen_kostensoort, -- facturen zonder kostensoort niet meenemen
check_geen_grootboeknr, -- facturen zonder grootboeknr ( = financiele waarde op de kostensoort = prs_kostensoort_refcode)
check_po_klant_project, -- tbv projectorders (voor klantadministratie AAES, DSM, INLO-COV....) controle op gevulde 'ordernummer klant'
check_filter_nietnaarexact -- filterstatus 2 = inkoopfactuur gaat niet naar exact (niet in XML-output) maar wordt wel op verwerkt gezet
)
AS
SELECT CASE
WHEN f.prs_kostenplaatsgrp_key IS NOT NULL
THEN
(SELECT prs_kostenplaatsgrp_nr
|| ' - '
|| prs_kostenplaatsgrp_oms
FROM prs_kostenplaatsgrp
WHERE prs_kostenplaatsgrp_key =
f.prs_kostenplaatsgrp_key)
ELSE
NULL
END
prs_kostenplaatsgrp_nr,
f.fin_factuur_key,
CASE
WHEN f.check_factuurdatum IS NULL
AND f.check_dubbelefactuur IS NULL
AND f.check_nogtecontroleren IS NULL
AND f.check_onholdgezet IS NULL
AND kp.check_admin_exact IS NULL
AND f.check_geen_kostensoort IS NULL
AND f.check_geen_grootboeknr IS NULL
AND f.check_po_klant_project IS NULL
AND f.check_nietnaarexact IS NULL
THEN
'Ja'
ELSE
'Nee'
END
inkooprun,
f.fin_factuur_totaal,
f.check_factuurdatum,
f.check_dubbelefactuur,
f.check_nogtecontroleren,
f.check_onholdgezet,
kp.check_admin_exact,
f.check_geen_kostensoort,
f.check_geen_grootboeknr,
f.check_po_klant_project,
f.check_nietnaarexact
FROM (SELECT f.fin_factuur_key,
fs.fin_factuur_statuses_omschr,
COALESCE (kp_cnt.prs_kostenplaatsgrp_key,
kp_opd.prs_kostenplaatsgrp_key,
kp_bes.prs_kostenplaatsgrp_key)
prs_kostenplaatsgrp_key,
CASE
WHEN f.prs_kostensoort_key IS NULL
THEN
'geen kostensoort!'
ELSE
''
END
check_geen_kostensoort,
CASE
WHEN k.prs_kostensoort_key IS NOT NULL
AND k.prs_kostensoort_refcode IS NULL
THEN
'geen grootboeknr!'
ELSE
''
END
check_geen_grootboeknr,
CASE
WHEN pr.mld_opdr_key IS NOT NULL
AND COALESCE (pr.mld_po_nr_afw, pr.mld_po_nr)
IS NULL
AND ( aaxx_get_user IN ('DSM', 'GN', 'ESSENT')
OR ( aaxx_get_user IN ('INLO')
AND pr.inlo_subaccount IN ('COVESTRO')))
THEN
'geen ordernummer klant!'
ELSE
''
END
check_po_klant_project,
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,
f.fin_factuur_totaal,
CASE
WHEN f.fin_factuur_datum < SYSDATE - (5 * 365)
OR f.fin_factuur_datum > SYSDATE + 365
THEN
'ongeldige factuurdatum: '
|| TO_CHAR (f.fin_factuur_datum, 'dd-mm-yyyy')
ELSE
''
END
check_factuurdatum,
( -- 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, '', 'dubbele factuur!')
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)
check_dubbelefactuur,
CASE
WHEN contr.fin_factuur_controle = 1
AND fin_factuur_controle_ok IS NULL
THEN
'Controle - Nog doen'
ELSE
''
END
check_nogtecontroleren,
CASE
WHEN f.fin_factuur_flag = 1 THEN 'on hold'
ELSE ''
END
check_onholdgezet,
CASE
WHEN f.fin_factuur_flag = 2 THEN 'niet naar exact - wordt wel verwerkt'
ELSE ''
END
check_nietnaarexact
FROM fin_factuur f,
prs_kostensoort k,
fin_factuur_statuses fs,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
bes_bestelopdr bo,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_bedrijf b_b,
aaxx_v_projectorders_bron pr,
(SELECT fin_factuur_key,
(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,
(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
FROM fin_factuur f) contr,
( 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_statuses_key =
fs.fin_factuur_statuses_key
AND f.fin_factuur_key = contr.fin_factuur_key
AND f.prs_kostensoort_key = k.prs_kostensoort_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.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 f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key = 6 -- op akkoord
) f,
(SELECT kp.prs_kostenplaats_key,
CASE
WHEN aaxx_get_user IN ('INLO', 'IT')
AND SUBSTR (prs_kostenplaatsgrp_nr, 1, 3) IN
(SELECT administratie
FROM aaxx_v_administratie)
THEN
''
WHEN aaxx_get_user NOT IN ('INLO', 'IT')
THEN
''
ELSE
'kostenplaatsgrp_nr niet in interface bekend '
|| SUBSTR (kpg.prs_kostenplaatsgrp_nr, 1, 3)
END
check_admin_exact
FROM prs_kostenplaats kp, prs_kostenplaatsgrp kpg
WHERE kp.prs_kostenplaatsgrp_key =
kpg.prs_kostenplaatsgrp_key(+)) kp
WHERE f.prs_kostenplaats_key = kp.prs_kostenplaats_key;
CREATE OR REPLACE VIEW aaxx_v_aanwezigfactuur
(
FIN_FACTUUR_KEY,
@@ -1372,27 +1651,20 @@ BEGIN
END IF;
-- Hier bepalen we wat er allemaal meegaat de inkooprun in:
--- Bron voor uitsluiten facturen is de aaxx_v_export_exact_check
INSERT INTO aaxx_exp_factuur (fin_factuur_key, administratie)
( SELECT DISTINCT fin_factuur_key,
( SELECT DISTINCT fg.fin_factuur_key,
DECODE (aaxx_get_user,
'INLO', SUBSTR (prs_kostenplaatsgrp_nr, 1, 3),
'INLO', SUBSTR (kpg.prs_kostenplaatsgrp_nr, 1, 3),
'IT', DECODE (fg.lev_kpn,
'00100008', '001', SUBSTR (prs_kostenplaatsgrp_nr, 1, 3)), -- Overrule voor facturen met leverende kp 00100008, altijd op adm 001 (zie ticket AAIT#69183)
NULL)
FROM aaxx_v_factuur_gegevens fg, prs_kostenplaats kp, prs_kostenplaatsgrp kpg
'00100008', '001', SUBSTR (kpg.prs_kostenplaatsgrp_nr, 1, 3)), -- Overrule voor facturen met leverende kp 00100008, altijd op adm 001 (zie ticket AAIT#69183)
NULL) administratie
FROM aaxx_v_factuur_gegevens fg, aaxx_v_export_exact_check c, prs_kostenplaats kp, prs_kostenplaatsgrp kpg
WHERE fg.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND fg.fin_factuur_key = c.fin_factuur_key AND c.check_in_inkooprun = 'Ja'
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND fg.fin_factuur_statuses_key = 6
AND COALESCE(p_subaccount, COALESCE(kp.prs_kostenplaatsgrp_key, 0)) = COALESCE(kp.prs_kostenplaatsgrp_key, 0)
AND (fg.fin_factuur_controle IS NULL OR fg.fin_factuur_controle = 1 AND fg.fin_factuur_controle_ok = 1)
AND fg.fin_factuur_flag <> 1 -- filterstatus 1 = bolletje 'On hold - Niet meenemen in Inkooprun'
AND fg.fin_factuur_datum > SYSDATE - (5 * 365) -- Check op geldige factuurdatum:
AND fg.fin_factuur_datum < SYSDATE + 365 -- facturen mogen niet ouder zijn dan 5 jaar of meer dan <20><>n jaar in de toekomst.
-- alleen de facturen meenemen die match op administratie <-> kostenplaatsgroep hebben zodat deze in cursor c (c_administratie VARCHAR2) ook in XML komen
AND (1 = CASE WHEN aaxx_get_user IN ('INLO', 'IT') AND SUBSTR(prs_kostenplaatsgrp_nr, 1, 3) IN (SELECT administratie FROM aaxx_v_administratie) THEN 1
WHEN aaxx_get_user NOT IN ('INLO', 'IT') THEN 1
ELSE 0
END)
);
-- Bepaal het boekstuknummer (key 3) met het hoogste nummer van dit jaar ## AAIT#36589
@@ -1717,11 +1989,15 @@ AS
FROM aaxx_exp_factuur f
, aaxx_v_factuur_gegevens fg
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.fin_factuur_statuses_key = 6;
AND fg.fin_factuur_statuses_key = 6
UNION
SELECT c.fin_factuur_key -- toevoegen alle inkoopfacturen die op akkoord staan, maar met filterstatus 'niet naar exact, maar wel verwerken' - ticket AAIT#77215
FROM aaxx_v_export_exact_check c
WHERE check_filter_nietnaarexact IS NOT NULL ;
CURSOR c_opdr
IS
SELECT distinct fg.mld_opdr_key, mld_statusopdr_key, m.mld_melding_status, m.mld_melding_key
SELECT DISTINCT fg.mld_opdr_key, mld_statusopdr_key, m.mld_melding_status, m.mld_melding_key
FROM aaxx_exp_factuur f
, aaxx_v_factuur_gegevens fg
, mld_opdr o
@@ -1730,7 +2006,18 @@ AS
AND fg.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND laatste_factuur = 1
AND fg.fin_factuur_statuses_key = 6;
AND fg.fin_factuur_statuses_key = 6
UNION
SELECT DISTINCT fg.mld_opdr_key, mld_statusopdr_key, m.mld_melding_status, m.mld_melding_key
FROM (SELECT c.fin_factuur_key FROM aaxx_v_export_exact_check c WHERE check_filter_nietnaarexact IS NOT NULL) f
, aaxx_v_factuur_gegevens fg
, mld_opdr o
, mld_melding m
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND laatste_factuur = 1
AND fg.fin_factuur_statuses_key = 6 ;
CURSOR c_bes
IS
@@ -1741,7 +2028,16 @@ AS
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND laatste_factuur = 1
AND fg.fin_factuur_statuses_key = 6;
AND fg.fin_factuur_statuses_key = 6
UNION
SELECT bo.*
FROM (SELECT c.fin_factuur_key FROM aaxx_v_export_exact_check c WHERE check_filter_nietnaarexact IS NOT NULL) f
, aaxx_v_factuur_gegevens fg
, bes_bestelopdr bo
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND laatste_factuur = 1
AND fg.fin_factuur_statuses_key = 6 ;
-- pas de bedragen in het factuurschema aan als de laatste factuur ontvangen is.
CURSOR c_cnt
@@ -1756,7 +2052,19 @@ AS
AND c.cnt_contract_key = fs.cnt_contract_key
AND fg.fin_factuur_boekmaand = fs.cnt_factuurschema_boekmaand
AND laatste_factuur = 1
AND fg.fin_factuur_statuses_key = 6;
AND fg.fin_factuur_statuses_key = 6
UNION
SELECT DISTINCT fg.cnt_contract_key, fs.cnt_factuurschema_key
FROM (SELECT c.fin_factuur_key FROM aaxx_v_export_exact_check c WHERE check_filter_nietnaarexact IS NOT NULL) f,
aaxx_v_factuur_gegevens fg,
cnt_contract c,
cnt_factuurschema fs
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.cnt_contract_key = c.cnt_contract_key
AND c.cnt_contract_key = fs.cnt_contract_key
AND fg.fin_factuur_boekmaand = fs.cnt_factuurschema_boekmaand
AND laatste_factuur = 1
AND fg.fin_factuur_statuses_key = 6 ;
CURSOR c_sync_kostensoort
IS
@@ -1778,7 +2086,28 @@ AS
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND std.prs_kostensoort_key = kstd.prs_kostensoort_key(+)
AND md.prs_kostensoort_key = kvg.prs_kostensoort_key(+);
AND md.prs_kostensoort_key = kvg.prs_kostensoort_key(+)
UNION
SELECT COALESCE (kstd.prs_kostensoort_key, kvg.prs_kostensoort_key)
std_kostensoort_key,
f.prs_kostensoort_key fac_kostensoort_key,
f.fin_factuur_key
FROM fin_factuur f,
(SELECT c.fin_factuur_key FROM aaxx_v_export_exact_check c WHERE check_filter_nietnaarexact IS NOT NULL) ef,
mld_opdr o,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline md,
prs_kostensoort kstd,
prs_kostensoort kvg
WHERE f.fin_factuur_key = ef.fin_factuur_key
AND f.mld_opdr_key = o.mld_opdr_key
AND m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND std.prs_kostensoort_key = kstd.prs_kostensoort_key(+)
AND md.prs_kostensoort_key = kvg.prs_kostensoort_key(+) ;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
@@ -1956,7 +2285,6 @@ BEGIN
END bedrag,
DECODE (aaxx_get_user,
'EXPO' , DECODE (ks.prs_kostensoort_upper, 'CV CONS AUT', 2, fin_btwtabelwaarde_code), -- code 2 is 6 procent
'ESSENT', '5',
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
to_char(opdr_datum, 'YYYY'),
DECODE (aaxx_get_user,
@@ -2185,7 +2513,9 @@ BEGIN
)
OR ( aaxx_get_user = 'INLO'
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
OR ks.prs_kostensoort_upper LIKE 'CVE %')
OR ks.prs_kostensoort_upper LIKE 'CVE %'
OR (SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 AND aaxx_get_user_sub('INLO', exact_k.klantcode) IN ('COVESTRO') )
)
AND NOT EXISTS ( SELECT 1 FROM DUAL WHERE aaxx_get_user_sub('INLO', exact_k.klantcode) IN ('GREENPORT VENLO')) -- uitsluiten subaccounts voor INLO
AND NOT EXISTS ( SELECT 1 FROM DUAL WHERE aaxx_get_user_sub('INLO', exact_k.klantcode) IN ('COVESTRO') AND l.alg_locatie_code = 'GLN' AND INSTR(UPPER(g.alg_gebouw_naam), 'CHEMELOT CAMPUS')>0) -- uitsluiten COVESTRO-Campus Chemelot GELEEN
)
@@ -2353,7 +2683,6 @@ BEGIN
bedrag,
DECODE (aaxx_get_user,
'EXPO' , DECODE (ks.prs_kostensoort_upper, 'CV CONS AUT', 2, fin_btwtabelwaarde_code), -- code 2 is 6 procent
'ESSENT', '5',
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
to_char(opdr_datum, 'YYYY'),
DECODE (aaxx_get_user,
@@ -2883,7 +3212,7 @@ BEGIN
-- Generiek: voor meerdere/alle klantomgevingen zelfde structuur
-- De fee is op basis van de op het project opgegeven Projectmarge (fin_verkoopfactuur_n3), met de tekst <20>Projectfee<65>.
-- Per verkoopfactuur 1 regel, met exact_artikelcode '8110550 REVENUE PROJECTS FEE'
IF aaxx_get_user IN ('DSM', 'GN', 'ESSENT') THEN
IF aaxx_get_user IN ('DSM', 'GN', 'ESSENT', 'INLO') THEN
INSERT INTO fin_verkoopfactuur
(
@@ -2990,11 +3319,11 @@ BEGIN
(
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, 'BASE FEE' || DECODE (INSTR(v.prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'BASE FEE 1.5%', ROUND(SUM(fin_verkoopfactuur_bedrag) * 0.015, 2), 5, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X', fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, 'BASE FEE' || DECODE (INSTR(v.prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'BASE FEE 1.5%', ROUND(SUM(fin_verkoopfactuur_bedrag) * 0.015, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X', fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
FROM fin_verkoopfactuur v
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND fin_verkoopfactuur_c8 = 'CORE'
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, instr(v.prs_kostensoort_oms, ' VJ'), prs_kostensoortgrp_oms, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, instr(v.prs_kostensoort_oms, ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
END IF;
-- EXPO NC PROJ
@@ -3011,7 +3340,7 @@ BEGIN
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
END IF;
-- INLO
-- INLO CORE
-- Voor Henkel: 5% over alle facturen van CV. Voor alle opdrachttype. Voor NC PROJ wordt GEEN fee berekend.
-- Voor Zwaansvliet: 18,5% over de facturen van CV (=fee organisatiekosten), boeken op 8210520. Daarna nog Fee van 6,5%, boeken op 8210511 . Voor NC PROJ wordt geen fee berekend..
-- Voor VEH wordt geen FEE berekend
@@ -3025,6 +3354,7 @@ BEGIN
FROM fin_verkoopfactuur v
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND prs_kostensoort_oms LIKE 'CV %'
AND fin_verkoopfactuur_c8 = 'CORE'
AND v.fin_verkoopfactuur_c1 = '03603000' -- Henkel
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
@@ -3036,6 +3366,7 @@ BEGIN
FROM fin_verkoopfactuur v
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND prs_kostensoort_oms LIKE 'CV %'
AND fin_verkoopfactuur_c8 = 'CORE'
AND v.fin_verkoopfactuur_c1 = '03604000' -- Zwaansvliet
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
@@ -3047,6 +3378,7 @@ BEGIN
FROM fin_verkoopfactuur v
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND prs_kostensoort_oms LIKE 'CV %'
AND fin_verkoopfactuur_c8 = 'CORE'
AND v.fin_verkoopfactuur_c1 = '03604000' -- Zwaansvliet
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
@@ -3969,164 +4301,6 @@ END;
-- RAPPORTAGES - Inkoop en Verkoop
-------------------------------------------
-- Inkoop: Alle facturen akkoord - Gebruikersoverzicht inkoopfacturen die wel/niet meegaan de EXACT inkooprun in
CREATE OR REPLACE VIEW aaxx_v_export_exact_check
(
fin_factuur_key,
check_in_inkooprun,
fin_factuur_totaal,
check_factuurdatum, -- facturen mogen niet ouder zijn dan 5 jaar of meer dan <20><>n jaar in de toekomst
check_dubbelefactuur, -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn met status ingevoerd, afgewezen of incompleet
check_nogtecontroleren, -- factuur staat op controle en moet nog gecontroleerd worden (vinkje controle nog niet gezet)
check_onholdgezet, -- filterstatus 1 = bolletje 'On hold - Niet meenemen in inkooprun'
check_admin_exact -- voor inlo en aait gelden meerdere administratie met een vereiste match op SUBSTR(prs_kostenplaatsgrp_nr, 1, 3)
)
AS
SELECT f.fin_factuur_key,
CASE
WHEN f.check_factuurdatum IS NULL
AND f.check_dubbelefactuur IS NULL
AND f.check_nogtecontroleren IS NULL
AND f.check_onholdgezet IS NULL
AND kp.check_admin_exact IS NULL
THEN
'Ja'
ELSE
'Nee'
END
inkooprun,
f.fin_factuur_totaal,
f.check_factuurdatum,
f.check_dubbelefactuur,
f.check_nogtecontroleren,
f.check_onholdgezet,
kp.check_admin_exact
FROM (SELECT f.fin_factuur_key,
fs.fin_factuur_statuses_omschr,
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,
f.fin_factuur_totaal,
CASE
WHEN f.fin_factuur_datum < SYSDATE - (5 * 365)
OR f.fin_factuur_datum > SYSDATE + 365
THEN
'ongeldige factuurdatum: '
|| TO_CHAR (f.fin_factuur_datum, 'dd-mm-yyyy')
ELSE
''
END
check_factuurdatum,
( -- 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, '', 'dubbele factuur!')
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)
check_dubbelefactuur,
CASE
WHEN contr.fin_factuur_controle = 1
AND fin_factuur_controle_ok IS NULL
THEN
'Controle - Nog doen'
ELSE
''
END
check_nogtecontroleren,
CASE
WHEN f.fin_factuur_flag = 1 THEN 'on hold'
ELSE ''
END
check_onholdgezet
FROM fin_factuur f,
fin_factuur_statuses fs,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
bes_bestelopdr bo,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_bedrijf b_b,
(SELECT fin_factuur_key,
(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,
(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
FROM fin_factuur f) contr
WHERE f.fin_factuur_statuses_key =
fs.fin_factuur_statuses_key
AND f.fin_factuur_key = contr.fin_factuur_key
AND f.mld_opdr_key = o.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.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key = 6 -- op akkoord
) f,
(SELECT kp.prs_kostenplaats_key,
CASE
WHEN aaxx_get_user IN ('INLO', 'IT')
AND SUBSTR (prs_kostenplaatsgrp_nr, 1, 3) IN
(SELECT administratie
FROM aaxx_v_administratie)
THEN
''
WHEN aaxx_get_user NOT IN ('INLO', 'IT')
THEN
''
ELSE
'kostenplaatsgrp_nr niet in interface bekend '
|| SUBSTR (kpg.prs_kostenplaatsgrp_nr, 1, 3)
END
check_admin_exact
FROM prs_kostenplaats kp, prs_kostenplaatsgrp kpg
WHERE kp.prs_kostenplaatsgrp_key =
kpg.prs_kostenplaatsgrp_key(+)) kp
WHERE f.prs_kostenplaats_key = kp.prs_kostenplaats_key;
-- Verkoop:
-- Detailrapport van de verkooprun. Wordt als factuurbijlage van de exact-verkoopfactuur meegestuurd naar klant
--- opgebouwd uit 2 views: detail_0 (basis) en detail_1 (klantrapport)