Files
Customer/onces/AA/RABO/RABO#37283.sql
Arthur Egberink a2a713bea0 RABO#37283 -- Rabo verkoopinterface
svn path=/Customer/; revision=30749
2016-09-19 08:23:29 +00:00

2685 lines
170 KiB
SQL
Raw Permalink Blame History

-- Customer specific once-script RABO
SET ECHO ON
SPOOL xRABO#37283.lst
SET DEFINE OFF
CREATE OR REPLACE PROCEDURE aaxx_export_verwerk_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR c_fact
IS
SELECT f.fin_factuur_key
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;
CURSOR c_opdr
IS
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
, 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
SELECT bo.*
FROM aaxx_exp_factuur 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;
CURSOR c_sync_kostensoort
IS
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,
aaxx_exp_factuur 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;
oracle_err_mes VARCHAR2 (200);
v_aanvrager NUMBER;
v_bestelling_key NUMBER;
v_logdate DATE;
BEGIN
v_errormsg := 'Geen akties';
-- Facilitor user
IF aaxx_get_user = 'SITECH'
THEN
v_aanvrager := 6524;
ELSE
v_aanvrager := 4;
END IF;
-- AAIT#34097 aanpassen kostensoort bij factuur. Soms wordt de stdmelding aangepast terwijl
-- er al een factuur geboekt is. Door bij het verwerken van de factuur deze kostensoort nog
-- aan te passen wordt voorkomen dat hier verschillen gaan ontstaan.
-- AAIT#36442 AAIT niet meenemen in dit mechanisme omdat bij AAIT de kostensoort uit de opdracht
-- gehaald wordt.
IF aaxx_get_user <> 'IT'
THEN
v_errormsg := 'Aanpassen kostensoort';
FOR reck IN c_sync_kostensoort
LOOP
BEGIN
IF reck.fac_kostensoort_key <> reck.std_kostensoort_key
THEN
UPDATE fin_factuur
SET prs_kostensoort_key = reck.std_kostensoort_key
WHERE fin_factuur_key = reck.fin_factuur_key;
-- Pas de login aan
INSERT INTO fac_tracking (fac_tracking_refkey, fac_srtnotificatie_key, fac_tracking_oms)
SELECT reck.fin_factuur_key, fac_srtnotificatie_key, 'Kostensoort aangepast in factuur export'
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'FINUPD';
END IF;
END;
END LOOP;
END IF;
-- Verkoopinterface
v_logdate := SYSDATE;
-- voeg SA en ST opdrachten toe aan de fin_verkoopfacturen (vh. verkoopbuffer)
-- BTW tarief in verkoopbuffer is altijd 19 procent (AADS#18338)
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_bedrijf_key, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, 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_n1
)
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr, 1,30 ),
'opdracht',
o.mld_opdr_key,
v_logdate,
DECODE (aaxx_get_user, 'AH', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
substr(aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr),1,6)),
'DOW', k.prs_kostenplaats_nr,
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', '520',
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SITECH', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'ESSENT', '912001',
'LB', exact_code,
'NMM', 'MGB',
'SABIC', DECODE (to_char(opdr_datum, 'YYYY'), '2012', k.prs_kostenplaats_nr,
'2013', k.prs_kostenplaats_nr,
aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
SUBSTR (prs_kostenplaats_nr, 1, 30)) prs_kostenplaats_nr,
DECODE (aaxx_get_user, 'AH', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
substr(aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr),1,6)),
'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,6),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', '520',
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SITECH', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'ESSENT', '912001',
'LB', DECODE(g.alg_locatie_key,
1, '911928', -- Worldwide Headquarters
2, '911927', -- Maasvlakte
3, '911930', -- Botlek
4, '911929' -- Moerdijk
),
'NMM', DECODE(k.prs_kostenplaats_nr,
'0001', '913799', -- Heijmans
'0002', '913810', -- Vermaat
'0003', '913766', -- Defensie
'0004', '913776', -- Stichting Nationaal Militair Museum
'Onbekend'
),
'RABO', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'SABIC', DECODE (to_char(opdr_datum, 'YYYY'), '2012', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'2013', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
(SELECT distinct prs_leverancier_nr FROM prs_bedrijf b, prs_afdeling a
WHERE b.prs_bedrijf_key = a.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_naam = aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'ZCN', '913815',
'ZKHM', '913816',
SUBSTR (prs_kostenplaats_nr, 1, 30)) debiteur,
b.prs_bedrijf_key,
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','') ,
ks.prs_kostensoort_opmerking,
vk_prs_kostensoort_refcode,
SUBSTR(DECODE (aaxx_get_user,
'AH', DECODE(SUBSTR(ks.prs_kostensoort_upper,1,2), 'CV', ksg.prs_kostensoortgrp_oms,
sd.ins_srtdiscipline_prefix || m.mld_melding_key),
'DBS', DECODE(ks.prs_kostensoortgrp_key, 3, 'Projecten', 'Core Variable'),
'DOW', 'Service Charges',
'RABO', 'Servicekosten ' || aaxx_get_dep_code(k.prs_kostenplaats_nr),
'VL', 'Core Variabel',
'ZCN', DECODE(sd.ins_srtdiscipline_prefix, 'PR', 'Projecten',
DECODE(aaxx_get_top_dep_code(prs_kostenplaats_nr), 'SN', 'Servicekosten',
'KL', 'Klantvragen',
'')),
'ZKHM', DECODE(sd.ins_srtdiscipline_prefix, 'PR', 'Projecten',
DECODE(aaxx_get_top_dep_code(prs_kostenplaats_nr), 'SN', 'Servicekosten',
'KL', 'Klantvragen',
'')),
ksg.prs_kostensoortgrp_oms || DECODE (aaxx_get_user, 'LB', ' ' || Exact_code,
'SABIC', ' ' || DECODE (to_char(opdr_datum, 'YYYY'), '2012', k.prs_kostenplaats_nr,
'2013', k.prs_kostenplaats_nr,
aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ' ' || l.alg_locatie_code),
'NMM', DECODE(k.prs_kostenplaats_nr, '0001', ' Heijmans',
'0002', ' Vermaat',
'0003', ' Defensie',
'0004', ' NMM',
' Onbekend')
)
)
, 1, 60) prs_kostensoortgrp_oms,
sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr
|| ' '
|| d.ins_discipline_omschrijving
|| ' ('
|| (SELECT MAX(mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND ( ( aaxx_get_user <> 'DBS' AND k.mld_srtkenmerk_key = 143) -- opdrachtnummer
OR ( aaxx_get_user = 'DBS' AND k.mld_srtkenmerk_key = 55) -- projectnaam
)
AND km.mld_melding_key = m.mld_melding_key)
|| ')'
omschrijving,
ROUND (fg.bedrag
* COALESCE ( (SELECT u.uplift
FROM aaxx_imp_uplift u
WHERE u.prs_leverancier_nr = b.prs_leverancier_nr
AND UPPER(soort_order) = 'WO'
AND UPPER (u.prs_kostensoort_oms) =
ks.prs_kostensoort_upper
AND fg.fin_factuur_boekmaand =
u.jaar
|| '-'
|| LTRIM (TO_CHAR (u.maand, '00'))),
DECODE (aaxx_get_user, 'NMM', 1.1, 1)
),
2
),
DECODE (aaxx_get_user,
'SABIC', DECODE (ks.prs_kostensoort_oms, 'RAS-NC', 2, 'CV OP VERV', 2, 5), -- Kostensoorten RAS-NC en CV OP VERV zijn laag tarief
'SITECH', DECODE (fg.prs_kostensoort_refcode, '4321006', fin_btwtabelwaarde_code, 5), --AADS#21168
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
to_char(opdr_datum, 'YYYY'),
DECODE (aaxx_get_user,
'LB', l.alg_locatie_code,
'NMM', 'MGB',
COALESCE(exact_code, alg_gebouw_code)), -- C1
SUBSTR (
DECODE (aaxx_get_user, 'AH', DECODE(SUBSTR(ks.prs_kostensoort_upper,1,2), 'CV', ksg.prs_kostensoortgrp_oms,
sd.ins_srtdiscipline_prefix || m.mld_melding_key),
'DBS', DECODE (ks.prs_kostensoort_upper, 'NC PROJ', '913757' || m.mld_melding_key,
'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
'CVE GEB NIET PLAN', aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr) || m.mld_melding_key,
'CVE INSTAL NIET PLAN', aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr) || m.mld_melding_key,
aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr)),
'SITECH', (SELECT fac_usrdata_omschr
FROM alg_onrgoedkenmerk, fac_usrdata ud
WHERE alg_onrgoed_key = g.alg_gebouw_key
AND alg_kenmerk_key = 1060 -- rema contract
AND ud.fac_usrdata_key =
fac.safe_to_number (alg_onrgoedkenmerk_waarde)
AND ( ks.prs_kostensoort_upper LIKE 'ST ONDH%'
OR ks.prs_kostensoort_upper LIKE 'STB ONDH%')),
'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,8) ||
DECODE(substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,3),
'911', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,5), 'NC P ', 'PR', 'NC/CV'),
'912', 'CV/NC/PR',
'913', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,7), 'COR VAR', 'CV', 'NC/PR'),
'Onbekend') ||
substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,8),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ksg.prs_kostensoortgrp_oms || ' ' || l.alg_locatie_code,
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'RABO', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'SABIC', DECODE (to_char(opdr_datum, 'YYYY'), '2012', '',
'2013', '',
aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'ZCN', DECODE(sd.ins_srtdiscipline_prefix, 'PR', to_char(m.mld_melding_key),
aaxx_get_top_dep_code(prs_kostenplaats_nr)),
'ZKHM', DECODE(sd.ins_srtdiscipline_prefix, 'PR', to_char(m.mld_melding_key),
aaxx_get_top_dep_code(prs_kostenplaats_nr)),
'')
, 1, 12) groepering, -- C2
DECODE (aaxx_get_user, 'LB', prs_kostensoort_oms || '1',
'DOW', 'A' || prs_kostensoort_oms,
'ESSENT', (SELECT uplift
FROM aaxx_imp_uplift u
WHERE u.prs_kostensoort_oms = ks.prs_kostensoort_oms),
'') subregelvolgorde, -- C3
l.alg_locatie_key -- N1
FROM mld_opdr o,
mld_typeopdr ot,
prs_bedrijf b,
prs_kostenplaats k,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
fin_factuur f,
alg_gebouw g,
alg_locatie l,
alg_v_onroerendgoed og,
aaxx_v_exact_code_gebouw exact,
(SELECT fin_factuur_key,
mld_opdr_key,
SUM (fin_factuurregel_totaal) bedrag,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
prs_kostenplaats_key,
prs_kostensoort_key,
prs_kostensoort_refcode,
vk_prs_kostensoort_refcode,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 7
GROUP BY fin_factuur_key,
fin_btwtabelwaarde_key,
mld_opdr_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
fin_factuurregel_btw,
fin_btwtabelwaarde_code,
vk_prs_kostensoort_refcode,
prs_kostensoort_refcode,
fin_factuurregel_totaal) fg
WHERE fg.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND fg.mld_opdr_key = o.mld_opdr_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
AND og.alg_gebouw_key = g.alg_gebouw_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND og.alg_gebouw_key = exact.alg_gebouw_key(+)
AND fg.fin_factuur_key = f.fin_factuur_key
AND o.mld_melding_key = m.mld_melding_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_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
AND (( sd.ins_srtdiscipline_prefix = 'SA'
AND aaxx_get_user <> 'VL'
AND aaxx_get_user <> 'AH'
AND aaxx_get_user <> 'DSM'
AND aaxx_get_user <> 'SABIC'
AND aaxx_get_user <> 'ZCN'
AND aaxx_get_user <> 'ZKHM'
AND aaxx_get_user <> 'DOW'
AND aaxx_get_user <> 'LB'
AND aaxx_get_user <> 'NMM'
AND aaxx_get_user <> 'RABO'
AND aaxx_get_user <> 'DBS'
AND aaxx_get_user <> 'ESSENT')
OR ( aaxx_get_user = 'SITECH'
AND ( ks.prs_kostensoort_upper LIKE 'ST ONDH%'
OR ks.prs_kostensoort_upper LIKE 'STB ONDH%')
AND ot.mld_typeopdr_omschrijving = 'Workorder'
)
OR ( aaxx_get_user = 'AH'
AND ( ks.prs_kostensoort_upper LIKE 'CV%'
OR ks.prs_kostensoort_upper LIKE 'NC PROJ%')
)
OR ( aaxx_get_user = 'DBS'
AND ks.prs_kostensoort_upper IN (
'CV AFVAL REST',
'CV OND',
'CV GEB NIET PLAN',
'CV INSTAL NIET PLAN',
'CV TERR VERHARD',
'CV TERR NIET PL',
'CV OND TERR',
'CV TERR OVR',
'CV CONS REST',
'CV CONS SERV',
'CV CONS OVR',
'CV CONS AUT',
'CV BEWAK',
'CV PREV CAL',
'CV BEWAK OVR',
'CV SCH',
'CV SCH GLAS',
'CV SCH OVR',
'CV VGM',
'CV GROEN',
'CV EIG BOUW PL',
'CV EIG INST PL',
'NC PROJ',
'CVE INSTAL NIET PLAN',
'CVE GEB NIET PLAN')
)
OR ( aaxx_get_user = 'DOW'
AND ( ot.mld_typeopdr_omschrijving = 'Workorder'
OR ot.mld_typeopdr_omschrijving = 'Projectorder')
AND ( ks.prs_kostensoort_upper LIKE 'NC %'
OR ks.prs_kostensoort_upper LIKE 'NC P %'
OR ks.prs_kostensoort_upper = 'COR VAR MAIL SERVICES'
OR ks.prs_kostensoort_upper = 'COR VAR VENDING'
OR ks.prs_kostensoort_upper = 'COR VAR MAIN HANDYMAN'
OR ks.prs_kostensoort_upper = 'COR VAR GEN TEN SERV'
)
)
OR ( aaxx_get_user = 'DSM'
AND SUBSTR(ks.prs_kostensoort_upper,1,3) IN (
'CV ',
'CVE')
)
OR ( aaxx_get_user = 'ESSENT'
AND ks.prs_kostensoort_upper LIKE 'CVE%'
AND ot.mld_typeopdr_omschrijving = 'Workorder'
)
OR ( aaxx_get_user = 'LB'
AND ks.prs_kostensoort_upper LIKE 'NC%'
AND ks.prs_kostensoort_upper <> 'NC DERDEN'
AND ks.prs_kostensoort_upper <> 'NC PROJ'
)
OR ( aaxx_get_user = 'NMM'
AND ks.prs_kostensoort_upper LIKE 'CV%'
)
OR ( aaxx_get_user = 'RABO'
AND ot.mld_typeopdr_omschrijving = 'Workorder'
)
OR ( aaxx_get_user = 'SABIC'
AND ( ( o.mld_opdr_datumbegin < to_date ('20140101', 'yyyymmdd') -- Voor sabic geldt in 2014 een ander mechanisme (AASA#28673)
AND ks.prs_kostensoort_upper LIKE '%NC'
AND ot.mld_typeopdr_omschrijving = 'Workorder'
)
OR ( o.mld_opdr_datumbegin > to_date ('20140101', 'yyyymmdd') -- Voor sabic geldt voor 2014 een ander mechanisme (AASA#28673)
AND ks.prs_kostensoort_upper LIKE 'CV %'
AND ks.prs_kostensoort_upper <> 'CV CHIP'
AND ( o.mld_opdr_datumbegin > to_date ('20150101', 'yyyymmdd') -- Voor sabic geldt voor 2015 een ander mechanisme (AASA#31618)
OR ( ks.prs_kostensoort_upper <> 'CV CONS REST'
AND ks.prs_kostensoort_upper <> 'CV CONS AUT'
AND ks.prs_kostensoort_upper <> 'CV SCH OVR'
AND ks.prs_kostensoort_upper <> 'CV DOC POST'
AND ks.prs_kostensoort_upper <> 'CV AFVAL REST'
)
)
AND ( ks.prs_kostensoort_upper <> 'CV EIG BOUW PL' OR ot.mld_typeopdr_omschrijving = 'Workorder')
)
)
)
OR ( aaxx_get_user = 'VL'
AND ( ( o.mld_opdr_datumbegin < to_date ('20160101', 'yyyymmdd') -- Voor VL geldt in 2016 een ander mechanisme (AAVL#34856)
AND ks.prs_kostensoort_upper IN (
'CV OND',
'CV TERR OVR',
'CV BEWAK OVR',
'CV BOUW PLAN',
'CV CONS REST',
'CV CONS OVR',
'CV SCH',
'CV WP',
'CV GEB NIET PLAN',
'CV CONS SERV',
'CV SCH GLAS',
'CV KART',
'CV INSTAL PLAN',
'CV BEWAK',
'CV VERH',
'CV GROEN',
'CV INSTAL NIET PLAN',
'CV PREV CAL',
'CV DOC POST',
'CV BEW',
'CV TERR VERHARD',
'CV REC',
'CV DOC REP',
'CV VERV PERS',
'CV OND TERR',
'CV ACHT OND',
'CV EIG INST PL',
'CV EIG BOUW PL',
'NC ACHT OND',
'NC INV BOUW',
'NC INV WP',
'NC INV INST')
)
OR
( o.mld_opdr_datumbegin >= to_date ('20160101', 'yyyymmdd') -- Voor VL geldt in 2016 een ander mechanisme (AAVL#34856)
AND ( ks.prs_kostensoort_upper LIKE 'CVE %' OR ks.prs_kostensoort_upper LIKE 'NC %')
)
)
)
OR ( aaxx_get_user = 'ZCN'
AND ( sd.ins_srtdiscipline_prefix = 'PR'
OR aaxx_get_top_dep_code(prs_kostenplaats_nr) = 'SN'
OR aaxx_get_top_dep_code(prs_kostenplaats_nr) = 'KL'
)
)
OR ( aaxx_get_user = 'ZKHM'
AND ( sd.ins_srtdiscipline_prefix = 'PR'
OR aaxx_get_top_dep_code(prs_kostenplaats_nr) = 'SN'
OR aaxx_get_top_dep_code(prs_kostenplaats_nr) = 'KL'
)
)
);
-- voeg contract orders toe aan de verkoopbuffer
-- bij SITECH wordt gegroepeerd op REMA contract
IF aaxx_get_user = 'SITECH' THEN
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
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_kostensoort_refcode, 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_n1
)
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || 'C' || cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie), 1,30 ),
'contract',
c.cnt_contract_key,
v_logdate,
aaxx_get_dep_code (k.prs_kostenplaats_nr),
aaxx_get_dep_code (k.prs_kostenplaats_nr),
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','') ,
ks.prs_kostensoort_opmerking,
vk_prs_kostensoort_refcode,
(SELECT prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key),
'C'
|| cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
omschrijving,
COALESCE((SELECT ROUND (COALESCE(cp.gewicht,1) * fg.bedrag * u.uplift, 2)
FROM aaxx_imp_uplift u
WHERE u.prs_leverancier_nr = b.prs_leverancier_nr
AND UPPER (soort_order) = 'CO'
AND UPPER (u.prs_kostensoort_oms) = ks.prs_kostensoort_upper
AND fg.fin_factuur_boekmaand =
TO_CHAR (u.jaar) || '-' || LTRIM (TO_CHAR (u.maand, '00'))), ROUND ((cp.gewicht * fg.bedrag), 2)),
5, -- AADS#21168 , AADS#26856
to_char(opdr_datum, 'YYYY'),
cp.alg_gebouw_code,
cp.rema,
'',
''
FROM cnt_contract c,
prs_bedrijf b,
prs_kostenplaats k,
ins_tab_discipline d,
prs_kostensoort ks,
fin_factuur f,
(SELECT fin_factuur_key,
cnt_contract_key,
SUM (fin_factuurregel_totaal) bedrag,
fin_factuurregel_btw btw,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
prs_kostenplaats_key,
prs_kostensoort_key,
vk_prs_kostensoort_refcode,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 7
GROUP BY fin_factuur_key,
cnt_contract_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
fin_factuurregel_btw,
fin_btwtabelwaarde_key,
fin_btwtabelwaarde_code,
vk_prs_kostensoort_refcode,
fin_factuurregel_totaal) fg,
(SELECT cnt_contract_key,
alg_gebouw_code,
rema.fac_usrdata_omschr rema,
cp.cnt_contract_plaats_gewicht
/ ( SELECT DECODE (SUM (cp2.cnt_contract_plaats_gewicht),
0, 1,
SUM (cp2.cnt_contract_plaats_gewicht))
FROM cnt_contract_plaats cp2
WHERE cp2.cnt_contract_key = cp.cnt_contract_key
AND cp2.cnt_contract_plaats_verwijder IS NULL
GROUP BY cp.cnt_contract_key)
gewicht
FROM cnt_contract_plaats cp,
alg_gebouw g,
(SELECT k.alg_onrgoed_key, ud.fac_usrdata_omschr
FROM alg_onrgoedkenmerk k, fac_usrdata ud
WHERE k.alg_kenmerk_key = 1060
AND fac.safe_to_number (alg_onrgoedkenmerk_waarde) =
fac_usrdata_key) rema
WHERE cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND g.alg_gebouw_key = rema.alg_onrgoed_key(+)) cp
WHERE fg.prs_kostenplaats_key = k.prs_kostenplaats_key
AND fg.cnt_contract_key = c.cnt_contract_key
AND c.cnt_contract_key = cp.cnt_contract_key(+)
AND fg.fin_factuur_key = f.fin_factuur_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key
AND aaxx_get_user = 'SITECH'
AND ( ks.prs_kostensoort_upper LIKE 'AE%'
OR ks.prs_kostensoort_upper LIKE 'AS ONDH%'
OR ks.prs_kostensoort_upper LIKE 'ST ONDH%'
OR ks.prs_kostensoort_upper LIKE 'STB ONDH%'
);
ELSE
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_bedrijf_key, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, 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_n1
)
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || 'C' || cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie), 1,30 ),
'contract',
c.cnt_contract_key,
v_logdate,
DECODE (aaxx_get_user,
'AH', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
substr(aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr),1,6)),
'LB', exact_code,
'NMM', exact_code,
'DOW', k.prs_kostenplaats_nr,
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', '520',
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'NS', SUBSTR (prs_kostenplaats_nr, 1, 30),
'SABIC', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)
) prs_kostenplaats_nr,
DECODE (aaxx_get_user,
'AH', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
substr(aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr),1,6)),
'LB', DECODE(g.alg_locatie_key,
1, '911928', -- Worldwide Headquarters
2, '911927', -- Maasvlakte
3, '911930', -- Botlek
4, '911929' -- Moerdijk
),
'NMM', DECODE(k.prs_kostenplaats_nr,
'0001', '913799', -- Heijmans
'0002', '913810', -- Vermaat
'0003', '913766', -- Defensie
'0004', '913776', -- Stichting Nationaal Militair Museum
'Onbekend'
),
'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,6),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', '520',
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'NS', SUBSTR (prs_kostenplaats_nr, 1, 30),
'SABIC', (SELECT distinct prs_leverancier_nr FROM prs_bedrijf b, prs_afdeling a
WHERE b.prs_bedrijf_key = a.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_naam = aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'ZCN', '913815',
'ZCN', '913816'
) debiteur,
b.prs_bedrijf_key,
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','') ,
ks.prs_kostensoort_opmerking,
vk_prs_kostensoort_refcode,
DECODE (aaxx_get_user,
'DBS', DECODE(ks.prs_kostensoortgrp_key, 3, 'Projecten', 'Core Variable'),
'DOW', 'Service Charges',
'ZCN', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), 'SN', 'Servicekosten',
'KL', 'Klantvragen',
''),
'ZKHM', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), 'SN', 'Servicekosten',
'KL', 'Klantvragen',
''),
ksg.prs_kostensoortgrp_oms || DECODE (aaxx_get_user, 'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ' ' || l.alg_locatie_code),
'LB', ' ' || exact_code,
'SABIC', ' ' || aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'NMM', DECODE(k.prs_kostenplaats_nr, '0001', ' Heijmans',
'0002', ' Vermaat',
'0003', ' Defensie',
'0004', ' NMM',
' Onbekend'))
) prs_kostensoortgrp_oms,
'C'
|| cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
omschrijving,
DECODE (aaxx_get_user,
'NMM', ROUND (fg.bedrag * 1.1,2),
fg.bedrag),
DECODE (aaxx_get_user, 'SABIC', DECODE (prs_kostensoort_upper, 'CV OP VERV', 2, 5),
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
to_char(opdr_datum, 'YYYY'),
DECODE (aaxx_get_user, 'LB', l.alg_locatie_code,
COALESCE(exact_code, alg_gebouw_code)) exact_code,
SUBSTR (
DECODE (aaxx_get_user, 'AH', ksg.prs_kostensoortgrp_oms,
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr)),
'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,8) ||
DECODE(substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,3),
'911', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,5), 'NC P ', 'PR', 'NC/CV'),
'912', 'CV/NC/PR',
'913', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,7), 'COR VAR', 'CV', 'NC/PR'),
'Onbekend') ||
substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,8),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ksg.prs_kostensoortgrp_oms || ' ' || l.alg_locatie_code,
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SABIC', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'ZCN', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'ZKHM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'')
,1,12) groepering,
DECODE (aaxx_get_user, 'LB', prs_kostensoort_oms || '1',
'DOW', 'A' || prs_kostensoort_oms, '') subregelvolgorde,
l.alg_locatie_key -- N1
FROM cnt_contract c,
prs_bedrijf b,
prs_kostenplaats k,
ins_tab_discipline d,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
fin_factuur f,
alg_locatie l,
(SELECT cnt_contract_key, alg_gebouw_code, exact_code, ag.alg_gebouw_key, ag.alg_locatie_key
FROM
(SELECT cnt_contract_key, MIN (cp.cnt_alg_plaats_key) cnt_alg_plaats_key
FROM cnt_contract_plaats cp
WHERE cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_alg_plaats_code = 'G'
GROUP BY cnt_contract_key) cp,
alg_gebouw ag,
aaxx_v_exact_code_gebouw ae
WHERE cp.cnt_alg_plaats_key = ag.alg_gebouw_key
AND cp.cnt_alg_plaats_key = ae.alg_gebouw_key) g,
(SELECT fin_factuur_key,
cnt_contract_key,
SUM (fin_factuurregel_totaal) bedrag,
fin_factuurregel_btw btw,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
prs_kostenplaats_key,
prs_kostensoort_key,
vk_prs_kostensoort_refcode,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 7
GROUP BY fin_factuur_key,
cnt_contract_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
fin_factuurregel_btw,
fin_btwtabelwaarde_key,
fin_btwtabelwaarde_code,
vk_prs_kostensoort_refcode,
fin_factuurregel_totaal) fg
WHERE fg.prs_kostenplaats_key = k.prs_kostenplaats_key
AND fg.cnt_contract_key = c.cnt_contract_key
AND fg.fin_factuur_key = f.fin_factuur_key
AND g.alg_locatie_key = l.alg_locatie_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND c.cnt_contract_key = g.cnt_contract_key(+)
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
AND ( ( aaxx_get_user = 'AH'
AND ks.prs_kostensoort_upper LIKE 'CV %'
)
OR
( aaxx_get_user = 'LB'
AND ks.prs_kostensoort_upper LIKE 'NC%' -- LyondellBasell
AND ks.prs_kostensoort_upper <> 'NC DERDEN'
AND ks.prs_kostensoort_upper <> 'NC PROJ'
)
OR
( aaxx_get_user = 'DBS'
AND ks.prs_kostensoort_upper IN (
'CV AFVAL REST',
'CV OND',
'CV GEB NIET PLAN',
'CV INSTAL NIET PLAN',
'CV TERR VERHARD',
'CV TERR NIET PL',
'CV OND TERR',
'CV TERR OVR',
'CV CONS REST',
'CV CONS SERV',
'CV CONS OVR',
'CV CONS AUT',
'CV BEWAK',
'CV PREV CAL',
'CV BEWAK OVR',
'CV SCH',
'CV SCH GLAS',
'CV SCH OVR',
'CV VGM',
'CV GROEN',
'CV EIG BOUW PL',
'CV EIG INST PL',
'NC PROJ',
'CVE INSTAL NIET PLAN',
'CVE GEB NIET PLAN')
)
OR
( aaxx_get_user = 'DOW'
AND ( ks.prs_kostensoort_upper = 'COR VAR CATE COFFE'
OR ks.prs_kostensoort_upper = 'COR VAR IND CLO'
OR ks.prs_kostensoort_upper = 'COR VAR MAIL SERVICES'
OR ks.prs_kostensoort_upper = 'COR VAR VENDING'
OR ks.prs_kostensoort_upper = 'COR VAR MAIN HANDYMAN'
OR ks.prs_kostensoort_upper = 'COR VAR GEN TEN SERV'
OR ks.prs_kostensoort_upper = 'COR VAR HVAC'
OR ks.prs_kostensoort_upper = 'COR VAR CLEA BUILDING SAN'
OR ks.prs_kostensoort_upper = 'COR VAR CLEA VSR KMS')
)
OR
( aaxx_get_user = 'DSM'
AND SUBSTR(ks.prs_kostensoort_upper,1,3) IN (
'CV ',
'CVE')
)
OR
( aaxx_get_user = 'NMM'
AND ks.prs_kostensoort_upper LIKE 'CV%'
)
OR
( aaxx_get_user = 'SABIC'
AND c.cnt_contract_looptijd_van >= to_date ('20140101', 'yyyymmdd') -- Voor sabic geldt voor 2014 een ander mechanisme (AASA#28673)
AND ks.prs_kostensoort_upper LIKE 'CV %'
AND ks.prs_kostensoort_upper <> 'CV CHIP'
AND ( c.cnt_contract_looptijd_van >= to_date ('20150101', 'yyyymmdd') -- Voor sabic geldt voor 2015 een ander mechanisme (AASA#31618)
OR ( ks.prs_kostensoort_upper <> 'CV CONS REST'
AND ks.prs_kostensoort_upper <> 'CV CONS AUT'
AND ks.prs_kostensoort_upper <> 'CV SCH OVR'
AND ks.prs_kostensoort_upper <> 'CV DOC POST'
AND ks.prs_kostensoort_upper <> 'CV AFVAL REST'
)
)
)
OR
( aaxx_get_user = 'VL'
AND c.cnt_contract_looptijd_van < to_date ('20160101', 'yyyymmdd') -- Voor VL geldt voor 2016 een ander mechanisme (AAVL#34856)
AND ks.prs_kostensoort_upper IN (
'CV OND',
'CV TERR OVR',
'CV BEWAK OVR',
'CV BOUW PLAN',
'CV CONS REST',
'CV CONS OVR',
'CV SCH',
'CV WP',
'CV GEB NIET PLAN',
'CV CONS SERV',
'CV SCH GLAS',
'CV KART',
'CV INSTAL PLAN',
'CV BEWAK',
'CV VERH',
'CV GROEN',
'CV INSTAL NIET PLAN',
'CV PREV CAL',
'CV DOC POST',
'CV BEW',
'CV TERR VERHARD',
'CV REC',
'CV DOC REP',
'CV VERV PERS',
'CV OND TERR',
'CV ACHT OND',
'NC ACHT OND',
'CV EIG INST PL',
'CV EIG BOUW PL',
'NC INV BOUW',
'NC INV WP',
'NC INV INST')
)
OR
( aaxx_get_user = 'ZCN'
AND ( aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'SN'
OR aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'KL')
)
OR
( aaxx_get_user = 'ZKHM'
AND ( aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'SN'
OR aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'KL')
)
);
END IF;
-- voeg bestelorders toe aan de verkoopbuffer
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_bedrijf_key, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, 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_n1
)
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || bestel.bes_bestelopdr_id, 1,30 ),
'bestelopdr',
bestel.bes_bestelopdr_key,
v_logdate,
DECODE (aaxx_get_user,
'AH', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DOW', '911791',
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', '520',
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SITECH', aaxx_get_dep_code (k.prs_kostenplaats_nr),
'LB', exact_code,
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
SUBSTR (prs_kostenplaats_nr, 1, 30)),
DECODE (aaxx_get_user,
'AH', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DOW', '911791',
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', '520',
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SITECH', aaxx_get_dep_code (k.prs_kostenplaats_nr),
'LB', DECODE(g.alg_locatie_key,
1, '911928', -- Worldwide Headquarters
2, '911927', -- Maasvlakte
3, '911930', -- Botlek
4, '911929' -- Moerdijk
),
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'ZCN', '913815',
'ZKHM', '913816',
SUBSTR (prs_kostenplaats_nr, 1, 30)),
bestel.prs_bedrijf_key,
ks.prs_kostensoort_oms
|| DECODE (TO_CHAR (opdr_datum, 'YYYY'),
TO_CHAR (TO_NUMBER (TO_CHAR (SYSDATE, 'yyyy')) - 1), ' VJ',
''),
ks.prs_kostensoort_opmerking,
vk_prs_kostensoort_refcode,
prs_kostensoortgrp_oms || DECODE (aaxx_get_user, 'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ' ' || l.alg_locatie_code),
'LB', ' ' || exact_code,
'SABIC', ' ' || k.prs_kostenplaats_nr,
'ZCN', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), 'SN', 'Servicekosten',
'KL', 'Klantvragen',
''),
'ZKHM', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), 'SN', 'Servicekosten',
'KL', 'Klantvragen',
'')
),
bestel.bes_bestelopdr_id || ' ' || d.ins_discipline_omschrijving
omschrijving,
fin_factuurregel_totaal,
DECODE (aaxx_get_user, 'SITECH', 5,
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
TO_CHAR (opdr_datum, 'YYYY'),
DECODE (aaxx_get_user,
'LB', alg_locatie_code,
COALESCE(exact_code, alg_gebouw_code)),
DECODE (aaxx_get_user,
'AH', ksg.prs_kostensoortgrp_oms,
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ksg.prs_kostensoortgrp_oms || ' ' || l.alg_locatie_code,
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'DOW', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,5), 'NC P ', 'NCP', 'NC/CV') ||
substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,6),
'ZCN', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'ZKHM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'') groepering, -- c2
DECODE (aaxx_get_user, 'LB', prs_kostensoort_oms || '1', '') subregelvolgorde, -- c3
l.alg_locatie_key -- N1
FROM ( SELECT *
FROM aaxx_v_bestelgegevens
GROUP BY bes_bestelopdr_key,
bes_bestelopdr_id,
ins_discipline_key,
mld_adres_key_lev,
bes_bestelling_leverdatum,
prs_bedrijf_key) bestel,
mld_adres ad,
prs_kostenplaats k,
ins_tab_discipline d,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
fin_factuur f,
alg_gebouw g,
alg_locatie l,
aaxx_v_exact_code_gebouw exact,
( SELECT fin_factuur_key,
bes_bestelopdr_key,
prs_kostenplaats_key,
prs_kostensoort_key,
vk_prs_kostensoort_refcode,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
sum(fin_factuurregel_totaal) fin_factuurregel_totaal
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 7
AND bes_bestelopdr_key IS NOT NULL
GROUP BY fin_factuur_key,
bes_bestelopdr_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
fin_btwtabelwaarde_key,
opdr_datum,
fin_factuur_datum,
vk_prs_kostensoort_refcode,
fin_btwtabelwaarde_code) fg
WHERE fg.bes_bestelopdr_key = bestel.bes_bestelopdr_key
AND fg.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND bestel.ins_discipline_key = d.ins_discipline_key
AND bestel.mld_adres_key_lev = ad.mld_adres_key(+)
AND ad.mld_adres_gebouw_ruimte = g.alg_gebouw_code(+)
AND g.alg_gebouw_key = exact.alg_gebouw_key(+)
AND g.alg_locatie_key = l.alg_locatie_key
AND fg.fin_factuur_key = f.fin_factuur_key
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
AND ( ( aaxx_get_user = 'AH'
AND ks.prs_kostensoort_upper LIKE 'CV%'
)
OR
( aaxx_get_user = 'SITECH'
AND ks.prs_kostensoort_upper LIKE 'AE%' -- SITECH
)
OR
( aaxx_get_user = 'DSM'
AND SUBSTR(ks.prs_kostensoort_upper,1,3) IN (
'CV ',
'CVE')
)
OR
( aaxx_get_user = 'LB'
AND ks.prs_kostensoort_upper LIKE 'NC%' -- LyondellBasell
AND ks.prs_kostensoort_upper <> 'NC DERDEN'
AND ks.prs_kostensoort_upper <> 'NC PROJ'
)
OR
( aaxx_get_user = 'VL'
AND ( ( bes_bestelling_leverdatum < to_date('20160101', 'yyyymmdd') -- Voor VL geldt voor 2016 een ander mechanisme (AAVL#34856)
AND ks.prs_kostensoort_upper LIKE 'CV %')
OR
( bes_bestelling_leverdatum >= to_date('20160101', 'yyyymmdd') -- Voor VL geldt voor 2016 een ander mechanisme (AAVL#34856)
AND ks.prs_kostensoort_upper LIKE 'CVE %')
)
)
OR
( aaxx_get_user = 'ZCN'
AND ( aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'SN'
OR aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'KL')
)
OR
( aaxx_get_user = 'ZKHM'
AND ( aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'SN'
OR aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'KL')
)
);
-- bereken per klant de FEE over de omzet.
IF aaxx_get_user = 'DBS' THEN
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
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_kostensoort_refcode, 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_c4
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', prs_debiteur_naam, 'FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8110550', prs_kostensoortgrp_oms, 'FEE' , ROUND(fin_verkoopfactuur_bedrag * ma.marge, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X', ok.ordernummer
FROM fin_verkoopfactuur v, mld_opdr o,
(SELECT km.mld_melding_key, fac.safe_to_number (fac_usrdata_code) marge
FROM fac_usrdata ud,
mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_omschrijving = 'Marge'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND fac.safe_to_number (mld_kenmerkmelding_waarde) = fac_usrdata_key) ma,
(SELECT km.mld_melding_key, mld_kenmerkmelding_waarde ordernummer
FROM mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_omschrijving = 'Ordernummer klant'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key) ok
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND fin_verkoopfactuur_xmlnode = 'opdracht'
AND fin_verkoopfactuur_refkey = o.mld_opdr_key
AND o.mld_melding_key = ma.mld_melding_key
AND o.mld_melding_key = ok.mld_melding_key
AND (v.prs_kostensoort_oms = 'NC PROJ' OR v.prs_kostensoort_oms LIKE 'CVE%');
-- 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, prs_debiteur_naam || 'FEE', fin_verkoopfactuur_c2, ma.marge;
END IF;
IF aaxx_get_user = 'DOW' THEN
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', prs_debiteur_naam, 'BASE FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8210511', prs_kostensoortgrp_oms, 'BASE FEE' , ROUND(SUM(fin_verkoopfactuur_bedrag) * 0.04, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v
WHERE fin_verkoopfactuur_aanmaak = v_logdate
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;
END IF;
IF aaxx_get_user = 'DSM' THEN
-- CVE
-- Fee: De fee over dit CVE gedeelte wordt apart doorbelast aan de klant en moet in een separate factuur worden gezet.
-- Deze factuur moet standaard naar debiteurencode 520.
-- Per factuur dient een fee berekend te worden van 0% of 3%.
-- Hierbij geldt als uitgangspunt dat voor alle MA contracten 0% geldt, en voor alle CP 3%.
-- Deze fee dient als totaalbedrag geboekt te worden op 1 regel per BTW percentage op de kostensoort FEE.
-- Extra verzoek hierover is om wel per locatie <20><>n regel te maken (dus Sittard, Urmond, Campus,etc).
-- Misschien dat we dit kunnen doen door artikelcode FEE te gebruiken, maar omschrijving Fee Sittard, Fee Urmond, etc?
INSERT INTO fin_verkoopfactuur
(
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', '520', 'CVE FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8210511', prs_kostensoortgrp_oms, 'FEE ' || l.alg_locatie_code, SUM(ROUND(fin_verkoopfactuur_bedrag * 0.03, 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', 'FEE' || '520', 'X'
FROM fin_verkoopfactuur v, prs_relatietype r, alg_locatie l, prs_bedrijf b
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND v.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_relatietype_key = r.prs_relatietype_key
AND r.prs_relatietype_omschrijving = 'Contracting party'
AND v.fin_verkoopfactuur_n1 = l.alg_locatie_key
AND prs_kostensoort_oms LIKE 'CVE%'
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, l.alg_locatie_code, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2;
-- CV
-- Fee: Er wordt een fee van 0% of 3% berekend over deze factuur.
-- Het percentage is afhankelijk van het contracttype van de leverancier.
-- Bij alle Managing Agent (MA) geldt 0%, voor alle Contracting Party (CP) geldt 3%.
-- Deze fee dient als totaalbedrag geboekt te worden op 1 regel per BTW percentage op de kostensoort FEE.
INSERT INTO fin_verkoopfactuur
(
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', '520', 'CV FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8210511', prs_kostensoortgrp_oms, 'FEE' , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.03, 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v, prs_relatietype r, alg_locatie l, prs_bedrijf b
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND v.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_relatietype_key = r.prs_relatietype_key
AND r.prs_relatietype_omschrijving = 'Contracting party'
AND prs_kostensoort_oms LIKE 'CV %'
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;
END IF;
IF aaxx_get_user = 'ESSENT' THEN
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, 'BASE FEE ' || to_char(u.uplift) || '%' || DECODE (INSTR(v.prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8210511', prs_kostensoortgrp_oms, 'BASE FEE ' || TO_CHAR(u.uplift) || '%' , ROUND(SUM(fin_verkoopfactuur_bedrag) * (u.uplift/100),2), 5, fin_verkoopfactuur_maand, 'X', 'X', u.uplift || 'X'
FROM fin_verkoopfactuur v, aaxx_imp_uplift u
WHERE REPLACE(v.prs_kostensoort_oms, ' VJ', '') = u.prs_kostensoort_oms
AND fin_verkoopfactuur_aanmaak = v_logdate
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, uplift, fin_verkoopfactuur_maand;
END IF;
IF aaxx_get_user = 'LB' THEN
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, 'BASE FEE' || DECODE (instr(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoort_opmerking, decode(substr(prs_kostensoort_refcode, 1,1), '8', '8210511', '1033305'), prs_kostensoortgrp_oms, 'FEE ' || prs_kostensoort_oms, ROUND(SUM(fin_verkoopfactuur_bedrag)*0.075,2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', 'X', prs_kostensoort_oms || '2'
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_aanmaak = v_logdate
GROUP BY 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_btwtabelwaarde_code, fin_verkoopfactuur_maand, decode(substr(prs_kostensoort_refcode, 1,1), '8', '8210511', '1033305');
END IF;
-- NMM
-- Pas het bedrag van de bewaking aan. Opdrachten aan stdmelding 1121 moeten een bedrag krijgen van het aantal uren uit de opdracht maal het uurtarief dat
-- In een eigentabel opgeslagen wordt. De entries in de eigen tabel kunnen verschillende tarieven met een vervaldatum bevatten.
IF aaxx_get_user = 'NMM' THEN
UPDATE fin_verkoopfactuur vk
SET fin_verkoopfactuur_bedrag = (SELECT o.mld_opdr_uren * ud.fac_usrdata_prijs
FROM mld_opdr o, fac_usrdata ud
WHERE vk.fin_verkoopfactuur_refkey = o.mld_opdr_key
AND vk.fin_verkoopfactuur_xmlnode = 'opdracht'
AND ud.fac_usrtab_key = DECODE (TO_CHAR (COALESCE(mld_opdr_plandatum, mld_opdr_datumbegin), 'D'), 1, 141, 7, 141, 122) -- Uurtarief bewaking (141 tabel weekend, 122 tabel weekdagen)
AND ud.fac_usrdata_verwijder IS NULL
AND o.mld_opdr_datumbegin < COALESCE(ud.fac_usrdata_vervaldatum, SYSDATE)
AND NOT EXISTS (SELECT ud2.fac_usrdata_key
FROM fac_usrdata ud2
WHERE ud2.fac_usrtab_key = DECODE (TO_CHAR (COALESCE(mld_opdr_plandatum, mld_opdr_datumbegin), 'D'), 1, 141, 7, 141, 122) -- Uurtarief bewaking (141 tabel weekend, 122 tabel weekdagen)
AND o.mld_opdr_datumbegin < COALESCE(ud2.fac_usrdata_vervaldatum, SYSDATE)
AND ud2.fac_usrdata_verwijder IS NULL
AND COALESCE(ud2.fac_usrdata_vervaldatum, SYSDATE) <
COALESCE(ud.fac_usrdata_vervaldatum, SYSDATE)
)
)
WHERE EXISTS (SELECT mld_opdr_key
FROM mld_opdr o, mld_melding m
WHERE vk.fin_verkoopfactuur_refkey = o.mld_opdr_key
AND vk.fin_verkoopfactuur_xmlnode = 'opdracht'
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = 1121 -- Aanvraag beveiligingsdienst(en) tbv evenementen
)
AND fin_verkoopfactuur_aanmaak = v_logdate;
END IF;
IF aaxx_get_user = 'RABO' THEN -- RABO#37283
INSERT INTO fin_verkoopfactuur
(
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', prs_debiteur_naam, 'FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8210511', prs_kostensoortgrp_oms, 'FEE' , ROUND(SUM(fin_verkoopfactuur_bedrag) * fac_usrdata_prijs / 100, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v,
mld_opdr o,
mld_melding m,
alg_v_allonroerendgoed aog,
alg_gebouw g,
fac_usrdata ud
WHERE v.fin_verkoopfactuur_refkey = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND aog.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_gebouw_code =
SUBSTR (fac_usrdata_code,
1,
INSTR (fac_usrdata_code || ' ', ' ') - 1)
AND fac_usrtab_key = 81
AND o.mld_opdr_datumbegin < COALESCE (fac_usrdata_vervaldatum, SYSDATE)
AND NOT EXISTS
(SELECT fac_usrdata_key
FROM fac_usrdata ud2
WHERE SUBSTR (ud2.fac_usrdata_code,
1,
INSTR (ud2.fac_usrdata_code || ' ', ' ') - 1) =
SUBSTR (ud.fac_usrdata_code,
1,
INSTR (ud.fac_usrdata_code || ' ', ' ') - 1)
AND ud2.fac_usrtab_key = ud.fac_usrtab_key
AND ud2.fac_usrdata_key <> ud.fac_usrdata_key
AND COALESCE (ud2.fac_usrdata_vervaldatum, SYSDATE) <
COALESCE (ud.fac_usrdata_vervaldatum, SYSDATE)
AND o.mld_opdr_datumbegin <
COALESCE (ud2.fac_usrdata_vervaldatum, SYSDATE))
AND fin_verkoopfactuur_aanmaak = v_logdate
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoortgrp_oms, fac_usrdata_prijs, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, 'X';
END IF;
IF aaxx_get_user = 'VL' THEN
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, 'FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoort_opmerking, '8210513', prs_kostensoortgrp_oms, 'FEE', ROUND(fin_verkoopfactuur_bedrag*0.025,2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', 'X', 'X'
FROM fin_verkoopfactuur
WHERE prs_kostensoort_oms = 'NC ACHT OND'
AND fin_verkoopfactuur_aanmaak = v_logdate;
END IF;
FOR rec1 IN c_bes
LOOP
BEGIN
-- indien nog niet afgemeld, dan maar even afmelden.
IF rec1.bes_bestelopdr_status = 3 THEN -- in behandeling
UPDATE bes_bestelopdr
SET bes_bestelopdr_status = 4
WHERE bes_bestelopdr_key= rec1.bes_bestelopdr_key
AND bes_bestelopdr_status = 3;
END IF;
IF rec1.bes_bestelopdr_status = 5 -- bevestigd
OR rec1.bes_bestelopdr_status = 4 -- in bestelling
OR rec1.bes_bestelopdr_status = 3 THEN
UPDATE bes_bestelopdr_item B
SET bes_bestelopdr_item_aantalontv = COALESCE(bes_bestelopdr_item_aantal, 0),
bes_bestelopdr_item_ontvangen = SYSDATE
WHERE b.bes_bestelopdr_key = rec1.bes_bestelopdr_key;
UPDATE bes_bestelling_item bi
SET bes_bestelling_item_aantalontv = COALESCE(bes_bestelling_item_aantal, 0)
WHERE EXISTS (SELECT bes_bestelopdr_key
FROM bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key);
SELECT distinct bes_bestelling_key
INTO v_bestelling_key
FROM bes_bestelling_item bi, bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key;
bes.updatebestelopdrstatus(rec1.bes_bestelopdr_key, v_aanvrager);
bes.updatebestellingstatus(v_bestelling_key, v_aanvrager);
END IF;
END;
END LOOP;
FOR rec1 IN c_opdr
LOOP
BEGIN
-- indien nog niet afgemeld, dan maar even afmelden.
IF rec1.mld_statusopdr_key <> 6 AND rec1.mld_statusopdr_key <> 7 AND rec1.mld_statusopdr_key <> 9 THEN
mld.setopdrachtstatus (rec1.mld_opdr_key, 6, v_aanvrager);
mld.setopdrachtstatus (rec1.mld_opdr_key, 9, v_aanvrager);
END IF;
UPDATE mld_opdr o
SET mld_opdr_kosten =
(SELECT SUM (fin_factuurregel_totaal)
FROM aaxx_v_aanwezigfactuur f
, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.mld_opdr_key = o.mld_opdr_key
AND f.fin_factuur_statuses_key >= 6)
WHERE o.mld_opdr_key = rec1.mld_opdr_key
AND rec1.mld_melding_status IN (4, 5, 7); -- anders faalt de trigger sowieso
-- update meldingstatus
mld.updatemeldingstatusAV (rec1.mld_melding_key, 0, v_aanvrager, 0);
-- zet de status naar verwerkt (user is facilitor)
mld.setopdrachtstatus (rec1.mld_opdr_key, 7, v_aanvrager);
END;
END LOOP;
FOR rec1 IN c_fact
LOOP
BEGIN
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7
WHERE f.fin_factuur_key = rec1.fin_factuur_key;
fac.trackaction ('FINVER', rec1.fin_factuur_key, v_aanvrager, NULL, NULL);
END;
END LOOP;
-- verwijder de enties uit de tijdelijke tabel. (AAEY#29465)
DELETE aaxx_exp_factuur;
END;
/
declare
begin
aaxx_export_verwerk_exact ('VERWERK_EXACT', NULL,NULL, NULL);
end;
/
CREATE OR REPLACE PROCEDURE aaxx_export_verwerk_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR c_fact
IS
SELECT f.fin_factuur_key
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;
CURSOR c_opdr
IS
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
, 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
SELECT bo.*
FROM aaxx_exp_factuur 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;
CURSOR c_sync_kostensoort
IS
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,
aaxx_exp_factuur 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;
oracle_err_mes VARCHAR2 (200);
v_aanvrager NUMBER;
v_bestelling_key NUMBER;
v_logdate DATE;
BEGIN
v_errormsg := 'Geen akties';
-- Facilitor user
IF aaxx_get_user = 'SITECH'
THEN
v_aanvrager := 6524;
ELSE
v_aanvrager := 4;
END IF;
-- AAIT#34097 aanpassen kostensoort bij factuur. Soms wordt de stdmelding aangepast terwijl
-- er al een factuur geboekt is. Door bij het verwerken van de factuur deze kostensoort nog
-- aan te passen wordt voorkomen dat hier verschillen gaan ontstaan.
-- AAIT#36442 AAIT niet meenemen in dit mechanisme omdat bij AAIT de kostensoort uit de opdracht
-- gehaald wordt.
IF aaxx_get_user <> 'IT'
THEN
v_errormsg := 'Aanpassen kostensoort';
FOR reck IN c_sync_kostensoort
LOOP
BEGIN
IF reck.fac_kostensoort_key <> reck.std_kostensoort_key
THEN
UPDATE fin_factuur
SET prs_kostensoort_key = reck.std_kostensoort_key
WHERE fin_factuur_key = reck.fin_factuur_key;
-- Pas de login aan
INSERT INTO fac_tracking (fac_tracking_refkey, fac_srtnotificatie_key, fac_tracking_oms)
SELECT reck.fin_factuur_key, fac_srtnotificatie_key, 'Kostensoort aangepast in factuur export'
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'FINUPD';
END IF;
END;
END LOOP;
END IF;
-- Verkoopinterface
v_logdate := SYSDATE;
-- voeg SA en ST opdrachten toe aan de fin_verkoopfacturen (vh. verkoopbuffer)
-- BTW tarief in verkoopbuffer is altijd 19 procent (AADS#18338)
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_bedrijf_key, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, 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_n1
)
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr, 1,30 ),
'opdracht',
o.mld_opdr_key,
v_logdate,
DECODE (aaxx_get_user, 'AH', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
substr(aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr),1,6)),
'DOW', k.prs_kostenplaats_nr,
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', '520',
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SITECH', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'ESSENT', '912001',
'LB', exact_code,
'NMM', 'MGB',
'SABIC', DECODE (to_char(opdr_datum, 'YYYY'), '2012', k.prs_kostenplaats_nr,
'2013', k.prs_kostenplaats_nr,
aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
SUBSTR (prs_kostenplaats_nr, 1, 30)) prs_kostenplaats_nr,
DECODE (aaxx_get_user, 'AH', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
substr(aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr),1,6)),
'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,6),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', '520',
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SITECH', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'ESSENT', '912001',
'LB', DECODE(g.alg_locatie_key,
1, '911928', -- Worldwide Headquarters
2, '911927', -- Maasvlakte
3, '911930', -- Botlek
4, '911929' -- Moerdijk
),
'NMM', DECODE(k.prs_kostenplaats_nr,
'0001', '913799', -- Heijmans
'0002', '913810', -- Vermaat
'0003', '913766', -- Defensie
'0004', '913776', -- Stichting Nationaal Militair Museum
'Onbekend'
),
'RABO', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'SABIC', DECODE (to_char(opdr_datum, 'YYYY'), '2012', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'2013', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
(SELECT distinct prs_leverancier_nr FROM prs_bedrijf b, prs_afdeling a
WHERE b.prs_bedrijf_key = a.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_naam = aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'ZCN', '913815',
'ZKHM', '913816',
SUBSTR (prs_kostenplaats_nr, 1, 30)) debiteur,
b.prs_bedrijf_key,
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','') ,
ks.prs_kostensoort_opmerking,
vk_prs_kostensoort_refcode,
SUBSTR(DECODE (aaxx_get_user,
'AH', DECODE(SUBSTR(ks.prs_kostensoort_upper,1,2), 'CV', ksg.prs_kostensoortgrp_oms,
sd.ins_srtdiscipline_prefix || m.mld_melding_key),
'DBS', DECODE(ks.prs_kostensoortgrp_key, 3, 'Projecten', 'Core Variable'),
'DOW', 'Service Charges',
'RABO', 'Servicekosten ' || aaxx_get_dep_code(k.prs_kostenplaats_nr),
'VL', 'Core Variabel',
'ZCN', DECODE(sd.ins_srtdiscipline_prefix, 'PR', 'Projecten',
DECODE(aaxx_get_top_dep_code(prs_kostenplaats_nr), 'SN', 'Servicekosten',
'KL', 'Klantvragen',
'')),
'ZKHM', DECODE(sd.ins_srtdiscipline_prefix, 'PR', 'Projecten',
DECODE(aaxx_get_top_dep_code(prs_kostenplaats_nr), 'SN', 'Servicekosten',
'KL', 'Klantvragen',
'')),
ksg.prs_kostensoortgrp_oms || DECODE (aaxx_get_user, 'LB', ' ' || Exact_code,
'SABIC', ' ' || DECODE (to_char(opdr_datum, 'YYYY'), '2012', k.prs_kostenplaats_nr,
'2013', k.prs_kostenplaats_nr,
aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ' ' || l.alg_locatie_code),
'NMM', DECODE(k.prs_kostenplaats_nr, '0001', ' Heijmans',
'0002', ' Vermaat',
'0003', ' Defensie',
'0004', ' NMM',
' Onbekend')
)
)
, 1, 60) prs_kostensoortgrp_oms,
sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr
|| ' '
|| d.ins_discipline_omschrijving
|| ' ('
|| (SELECT MAX(mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND ( ( aaxx_get_user <> 'DBS' AND k.mld_srtkenmerk_key = 143) -- opdrachtnummer
OR ( aaxx_get_user = 'DBS' AND k.mld_srtkenmerk_key = 55) -- projectnaam
)
AND km.mld_melding_key = m.mld_melding_key)
|| ')'
omschrijving,
ROUND (fg.bedrag
* COALESCE ( (SELECT u.uplift
FROM aaxx_imp_uplift u
WHERE u.prs_leverancier_nr = b.prs_leverancier_nr
AND UPPER(soort_order) = 'WO'
AND UPPER (u.prs_kostensoort_oms) =
ks.prs_kostensoort_upper
AND fg.fin_factuur_boekmaand =
u.jaar
|| '-'
|| LTRIM (TO_CHAR (u.maand, '00'))),
DECODE (aaxx_get_user, 'NMM', 1.1, 1)
),
2
),
DECODE (aaxx_get_user,
'SABIC', DECODE (ks.prs_kostensoort_oms, 'RAS-NC', 2, 'CV OP VERV', 2, 5), -- Kostensoorten RAS-NC en CV OP VERV zijn laag tarief
'SITECH', DECODE (fg.prs_kostensoort_refcode, '4321006', fin_btwtabelwaarde_code, 5), --AADS#21168
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
to_char(opdr_datum, 'YYYY'),
DECODE (aaxx_get_user,
'LB', l.alg_locatie_code,
'NMM', 'MGB',
COALESCE(exact_code, alg_gebouw_code)), -- C1
SUBSTR (
DECODE (aaxx_get_user, 'AH', DECODE(SUBSTR(ks.prs_kostensoort_upper,1,2), 'CV', ksg.prs_kostensoortgrp_oms,
sd.ins_srtdiscipline_prefix || m.mld_melding_key),
'DBS', DECODE (ks.prs_kostensoort_upper, 'NC PROJ', '913757' || m.mld_melding_key,
'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
'CVE GEB NIET PLAN', aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr) || m.mld_melding_key,
'CVE INSTAL NIET PLAN', aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr) || m.mld_melding_key,
aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr)),
'SITECH', (SELECT fac_usrdata_omschr
FROM alg_onrgoedkenmerk, fac_usrdata ud
WHERE alg_onrgoed_key = g.alg_gebouw_key
AND alg_kenmerk_key = 1060 -- rema contract
AND ud.fac_usrdata_key =
fac.safe_to_number (alg_onrgoedkenmerk_waarde)
AND ( ks.prs_kostensoort_upper LIKE 'ST ONDH%'
OR ks.prs_kostensoort_upper LIKE 'STB ONDH%')),
'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,8) ||
DECODE(substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,3),
'911', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,5), 'NC P ', 'PR', 'NC/CV'),
'912', 'CV/NC/PR',
'913', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,7), 'COR VAR', 'CV', 'NC/PR'),
'Onbekend') ||
substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,8),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ksg.prs_kostensoortgrp_oms || ' ' || l.alg_locatie_code,
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'RABO', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'SABIC', DECODE (to_char(opdr_datum, 'YYYY'), '2012', '',
'2013', '',
aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'ZCN', DECODE(sd.ins_srtdiscipline_prefix, 'PR', to_char(m.mld_melding_key),
aaxx_get_top_dep_code(prs_kostenplaats_nr)),
'ZKHM', DECODE(sd.ins_srtdiscipline_prefix, 'PR', to_char(m.mld_melding_key),
aaxx_get_top_dep_code(prs_kostenplaats_nr)),
'')
, 1, 12) groepering, -- C2
DECODE (aaxx_get_user, 'LB', prs_kostensoort_oms || '1',
'DOW', 'A' || prs_kostensoort_oms,
'ESSENT', (SELECT uplift
FROM aaxx_imp_uplift u
WHERE u.prs_kostensoort_oms = ks.prs_kostensoort_oms),
'') subregelvolgorde, -- C3
l.alg_locatie_key -- N1
FROM mld_opdr o,
mld_typeopdr ot,
prs_bedrijf b,
prs_kostenplaats k,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
aaxx_exp_factuur f,
alg_gebouw g,
alg_locatie l,
alg_v_onroerendgoed og,
aaxx_v_exact_code_gebouw exact,
(SELECT fin_factuur_key,
mld_opdr_key,
SUM (fin_factuurregel_totaal) bedrag,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
prs_kostenplaats_key,
prs_kostensoort_key,
prs_kostensoort_refcode,
vk_prs_kostensoort_refcode,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
GROUP BY fin_factuur_key,
fin_btwtabelwaarde_key,
mld_opdr_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
fin_factuurregel_btw,
fin_btwtabelwaarde_code,
vk_prs_kostensoort_refcode,
prs_kostensoort_refcode,
fin_factuurregel_totaal) fg
WHERE fg.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND fg.mld_opdr_key = o.mld_opdr_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
AND og.alg_gebouw_key = g.alg_gebouw_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND og.alg_gebouw_key = exact.alg_gebouw_key(+)
AND fg.fin_factuur_key = f.fin_factuur_key
AND o.mld_melding_key = m.mld_melding_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_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
AND (( sd.ins_srtdiscipline_prefix = 'SA'
AND aaxx_get_user <> 'VL'
AND aaxx_get_user <> 'AH'
AND aaxx_get_user <> 'DSM'
AND aaxx_get_user <> 'SABIC'
AND aaxx_get_user <> 'ZCN'
AND aaxx_get_user <> 'ZKHM'
AND aaxx_get_user <> 'DOW'
AND aaxx_get_user <> 'LB'
AND aaxx_get_user <> 'NMM'
AND aaxx_get_user <> 'RABO'
AND aaxx_get_user <> 'DBS'
AND aaxx_get_user <> 'ESSENT')
OR ( aaxx_get_user = 'SITECH'
AND ( ks.prs_kostensoort_upper LIKE 'ST ONDH%'
OR ks.prs_kostensoort_upper LIKE 'STB ONDH%')
AND ot.mld_typeopdr_omschrijving = 'Workorder'
)
OR ( aaxx_get_user = 'AH'
AND ( ks.prs_kostensoort_upper LIKE 'CV%'
OR ks.prs_kostensoort_upper LIKE 'NC PROJ%')
)
OR ( aaxx_get_user = 'DBS'
AND ks.prs_kostensoort_upper IN (
'CV AFVAL REST',
'CV OND',
'CV GEB NIET PLAN',
'CV INSTAL NIET PLAN',
'CV TERR VERHARD',
'CV TERR NIET PL',
'CV OND TERR',
'CV TERR OVR',
'CV CONS REST',
'CV CONS SERV',
'CV CONS OVR',
'CV CONS AUT',
'CV BEWAK',
'CV PREV CAL',
'CV BEWAK OVR',
'CV SCH',
'CV SCH GLAS',
'CV SCH OVR',
'CV VGM',
'CV GROEN',
'CV EIG BOUW PL',
'CV EIG INST PL',
'NC PROJ',
'CVE INSTAL NIET PLAN',
'CVE GEB NIET PLAN')
)
OR ( aaxx_get_user = 'DOW'
AND ( ot.mld_typeopdr_omschrijving = 'Workorder'
OR ot.mld_typeopdr_omschrijving = 'Projectorder')
AND ( ks.prs_kostensoort_upper LIKE 'NC %'
OR ks.prs_kostensoort_upper LIKE 'NC P %'
OR ks.prs_kostensoort_upper = 'COR VAR MAIL SERVICES'
OR ks.prs_kostensoort_upper = 'COR VAR VENDING'
OR ks.prs_kostensoort_upper = 'COR VAR MAIN HANDYMAN'
OR ks.prs_kostensoort_upper = 'COR VAR GEN TEN SERV'
)
)
OR ( aaxx_get_user = 'DSM'
AND SUBSTR(ks.prs_kostensoort_upper,1,3) IN (
'CV ',
'CVE')
)
OR ( aaxx_get_user = 'ESSENT'
AND ks.prs_kostensoort_upper LIKE 'CVE%'
AND ot.mld_typeopdr_omschrijving = 'Workorder'
)
OR ( aaxx_get_user = 'LB'
AND ks.prs_kostensoort_upper LIKE 'NC%'
AND ks.prs_kostensoort_upper <> 'NC DERDEN'
AND ks.prs_kostensoort_upper <> 'NC PROJ'
)
OR ( aaxx_get_user = 'NMM'
AND ks.prs_kostensoort_upper LIKE 'CV%'
)
OR ( aaxx_get_user = 'RABO'
AND ot.mld_typeopdr_omschrijving = 'Workorder'
)
OR ( aaxx_get_user = 'SABIC'
AND ( ( o.mld_opdr_datumbegin < to_date ('20140101', 'yyyymmdd') -- Voor sabic geldt in 2014 een ander mechanisme (AASA#28673)
AND ks.prs_kostensoort_upper LIKE '%NC'
AND ot.mld_typeopdr_omschrijving = 'Workorder'
)
OR ( o.mld_opdr_datumbegin > to_date ('20140101', 'yyyymmdd') -- Voor sabic geldt voor 2014 een ander mechanisme (AASA#28673)
AND ks.prs_kostensoort_upper LIKE 'CV %'
AND ks.prs_kostensoort_upper <> 'CV CHIP'
AND ( o.mld_opdr_datumbegin > to_date ('20150101', 'yyyymmdd') -- Voor sabic geldt voor 2015 een ander mechanisme (AASA#31618)
OR ( ks.prs_kostensoort_upper <> 'CV CONS REST'
AND ks.prs_kostensoort_upper <> 'CV CONS AUT'
AND ks.prs_kostensoort_upper <> 'CV SCH OVR'
AND ks.prs_kostensoort_upper <> 'CV DOC POST'
AND ks.prs_kostensoort_upper <> 'CV AFVAL REST'
)
)
AND ( ks.prs_kostensoort_upper <> 'CV EIG BOUW PL' OR ot.mld_typeopdr_omschrijving = 'Workorder')
)
)
)
OR ( aaxx_get_user = 'VL'
AND ( ( o.mld_opdr_datumbegin < to_date ('20160101', 'yyyymmdd') -- Voor VL geldt in 2016 een ander mechanisme (AAVL#34856)
AND ks.prs_kostensoort_upper IN (
'CV OND',
'CV TERR OVR',
'CV BEWAK OVR',
'CV BOUW PLAN',
'CV CONS REST',
'CV CONS OVR',
'CV SCH',
'CV WP',
'CV GEB NIET PLAN',
'CV CONS SERV',
'CV SCH GLAS',
'CV KART',
'CV INSTAL PLAN',
'CV BEWAK',
'CV VERH',
'CV GROEN',
'CV INSTAL NIET PLAN',
'CV PREV CAL',
'CV DOC POST',
'CV BEW',
'CV TERR VERHARD',
'CV REC',
'CV DOC REP',
'CV VERV PERS',
'CV OND TERR',
'CV ACHT OND',
'CV EIG INST PL',
'CV EIG BOUW PL',
'NC ACHT OND',
'NC INV BOUW',
'NC INV WP',
'NC INV INST')
)
OR
( o.mld_opdr_datumbegin >= to_date ('20160101', 'yyyymmdd') -- Voor VL geldt in 2016 een ander mechanisme (AAVL#34856)
AND ( ks.prs_kostensoort_upper LIKE 'CVE %' OR ks.prs_kostensoort_upper LIKE 'NC %')
)
)
)
OR ( aaxx_get_user = 'ZCN'
AND ( sd.ins_srtdiscipline_prefix = 'PR'
OR aaxx_get_top_dep_code(prs_kostenplaats_nr) = 'SN'
OR aaxx_get_top_dep_code(prs_kostenplaats_nr) = 'KL'
)
)
OR ( aaxx_get_user = 'ZKHM'
AND ( sd.ins_srtdiscipline_prefix = 'PR'
OR aaxx_get_top_dep_code(prs_kostenplaats_nr) = 'SN'
OR aaxx_get_top_dep_code(prs_kostenplaats_nr) = 'KL'
)
)
);
-- voeg contract orders toe aan de verkoopbuffer
-- bij SITECH wordt gegroepeerd op REMA contract
IF aaxx_get_user = 'SITECH' THEN
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
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_kostensoort_refcode, 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_n1
)
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || 'C' || cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie), 1,30 ),
'contract',
c.cnt_contract_key,
v_logdate,
aaxx_get_dep_code (k.prs_kostenplaats_nr),
aaxx_get_dep_code (k.prs_kostenplaats_nr),
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','') ,
ks.prs_kostensoort_opmerking,
vk_prs_kostensoort_refcode,
(SELECT prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key),
'C'
|| cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
omschrijving,
COALESCE((SELECT ROUND (COALESCE(cp.gewicht,1) * fg.bedrag * u.uplift, 2)
FROM aaxx_imp_uplift u
WHERE u.prs_leverancier_nr = b.prs_leverancier_nr
AND UPPER (soort_order) = 'CO'
AND UPPER (u.prs_kostensoort_oms) = ks.prs_kostensoort_upper
AND fg.fin_factuur_boekmaand =
TO_CHAR (u.jaar) || '-' || LTRIM (TO_CHAR (u.maand, '00'))), ROUND ((cp.gewicht * fg.bedrag), 2)),
5, -- AADS#21168 , AADS#26856
to_char(opdr_datum, 'YYYY'),
cp.alg_gebouw_code,
cp.rema,
'',
''
FROM cnt_contract c,
prs_bedrijf b,
prs_kostenplaats k,
ins_tab_discipline d,
prs_kostensoort ks,
aaxx_exp_factuur f,
(SELECT fin_factuur_key,
cnt_contract_key,
SUM (fin_factuurregel_totaal) bedrag,
fin_factuurregel_btw btw,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
prs_kostenplaats_key,
prs_kostensoort_key,
vk_prs_kostensoort_refcode,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
GROUP BY fin_factuur_key,
cnt_contract_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
fin_factuurregel_btw,
fin_btwtabelwaarde_key,
fin_btwtabelwaarde_code,
vk_prs_kostensoort_refcode,
fin_factuurregel_totaal) fg,
(SELECT cnt_contract_key,
alg_gebouw_code,
rema.fac_usrdata_omschr rema,
cp.cnt_contract_plaats_gewicht
/ ( SELECT DECODE (SUM (cp2.cnt_contract_plaats_gewicht),
0, 1,
SUM (cp2.cnt_contract_plaats_gewicht))
FROM cnt_contract_plaats cp2
WHERE cp2.cnt_contract_key = cp.cnt_contract_key
AND cp2.cnt_contract_plaats_verwijder IS NULL
GROUP BY cp.cnt_contract_key)
gewicht
FROM cnt_contract_plaats cp,
alg_gebouw g,
(SELECT k.alg_onrgoed_key, ud.fac_usrdata_omschr
FROM alg_onrgoedkenmerk k, fac_usrdata ud
WHERE k.alg_kenmerk_key = 1060
AND fac.safe_to_number (alg_onrgoedkenmerk_waarde) =
fac_usrdata_key) rema
WHERE cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND g.alg_gebouw_key = rema.alg_onrgoed_key(+)) cp
WHERE fg.prs_kostenplaats_key = k.prs_kostenplaats_key
AND fg.cnt_contract_key = c.cnt_contract_key
AND c.cnt_contract_key = cp.cnt_contract_key(+)
AND fg.fin_factuur_key = f.fin_factuur_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key
AND aaxx_get_user = 'SITECH'
AND ( ks.prs_kostensoort_upper LIKE 'AE%'
OR ks.prs_kostensoort_upper LIKE 'AS ONDH%'
OR ks.prs_kostensoort_upper LIKE 'ST ONDH%'
OR ks.prs_kostensoort_upper LIKE 'STB ONDH%'
);
ELSE
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_bedrijf_key, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, 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_n1
)
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || 'C' || cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie), 1,30 ),
'contract',
c.cnt_contract_key,
v_logdate,
DECODE (aaxx_get_user,
'AH', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
substr(aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr),1,6)),
'LB', exact_code,
'NMM', exact_code,
'DOW', k.prs_kostenplaats_nr,
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', '520',
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'NS', SUBSTR (prs_kostenplaats_nr, 1, 30),
'SABIC', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)
) prs_kostenplaats_nr,
DECODE (aaxx_get_user,
'AH', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
substr(aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr),1,6)),
'LB', DECODE(g.alg_locatie_key,
1, '911928', -- Worldwide Headquarters
2, '911927', -- Maasvlakte
3, '911930', -- Botlek
4, '911929' -- Moerdijk
),
'NMM', DECODE(k.prs_kostenplaats_nr,
'0001', '913799', -- Heijmans
'0002', '913810', -- Vermaat
'0003', '913766', -- Defensie
'0004', '913776', -- Stichting Nationaal Militair Museum
'Onbekend'
),
'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,6),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', '520',
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'NS', SUBSTR (prs_kostenplaats_nr, 1, 30),
'SABIC', (SELECT distinct prs_leverancier_nr FROM prs_bedrijf b, prs_afdeling a
WHERE b.prs_bedrijf_key = a.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_naam = aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'ZCN', '913815',
'ZCN', '913816'
) debiteur,
b.prs_bedrijf_key,
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','') ,
ks.prs_kostensoort_opmerking,
vk_prs_kostensoort_refcode,
DECODE (aaxx_get_user,
'DBS', DECODE(ks.prs_kostensoortgrp_key, 3, 'Projecten', 'Core Variable'),
'DOW', 'Service Charges',
'ZCN', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), 'SN', 'Servicekosten',
'KL', 'Klantvragen',
''),
'ZKHM', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), 'SN', 'Servicekosten',
'KL', 'Klantvragen',
''),
ksg.prs_kostensoortgrp_oms || DECODE (aaxx_get_user, 'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ' ' || l.alg_locatie_code),
'LB', ' ' || exact_code,
'SABIC', ' ' || aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'NMM', DECODE(k.prs_kostenplaats_nr, '0001', ' Heijmans',
'0002', ' Vermaat',
'0003', ' Defensie',
'0004', ' NMM',
' Onbekend'))
) prs_kostensoortgrp_oms,
'C'
|| cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
omschrijving,
DECODE (aaxx_get_user,
'NMM', ROUND (fg.bedrag * 1.1,2),
fg.bedrag),
DECODE (aaxx_get_user, 'SABIC', DECODE (prs_kostensoort_upper, 'CV OP VERV', 2, 5),
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
to_char(opdr_datum, 'YYYY'),
DECODE (aaxx_get_user, 'LB', l.alg_locatie_code,
COALESCE(exact_code, alg_gebouw_code)) exact_code,
SUBSTR (
DECODE (aaxx_get_user, 'AH', ksg.prs_kostensoortgrp_oms,
'DBS', DECODE (ks.prs_kostensoort_upper, 'CV EIG BOUW PL', '913757',
'CV EIG INST PL', '913757',
aaxx_get_lev2_dep_code(k.prs_kostenplaats_nr)),
'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,8) ||
DECODE(substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,3),
'911', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,5), 'NC P ', 'PR', 'NC/CV'),
'912', 'CV/NC/PR',
'913', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,7), 'COR VAR', 'CV', 'NC/PR'),
'Onbekend') ||
substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,8),
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ksg.prs_kostensoortgrp_oms || ' ' || l.alg_locatie_code,
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SABIC', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'ZCN', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'ZKHM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'')
,1,12) groepering,
DECODE (aaxx_get_user, 'LB', prs_kostensoort_oms || '1',
'DOW', 'A' || prs_kostensoort_oms, '') subregelvolgorde,
l.alg_locatie_key -- N1
FROM cnt_contract c,
prs_bedrijf b,
prs_kostenplaats k,
ins_tab_discipline d,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
aaxx_exp_factuur f,
alg_locatie l,
(SELECT cnt_contract_key, alg_gebouw_code, exact_code, ag.alg_gebouw_key, ag.alg_locatie_key
FROM
(SELECT cnt_contract_key, MIN (cp.cnt_alg_plaats_key) cnt_alg_plaats_key
FROM cnt_contract_plaats cp
WHERE cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_alg_plaats_code = 'G'
GROUP BY cnt_contract_key) cp,
alg_gebouw ag,
aaxx_v_exact_code_gebouw ae
WHERE cp.cnt_alg_plaats_key = ag.alg_gebouw_key
AND cp.cnt_alg_plaats_key = ae.alg_gebouw_key) g,
(SELECT fin_factuur_key,
cnt_contract_key,
SUM (fin_factuurregel_totaal) bedrag,
fin_factuurregel_btw btw,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
prs_kostenplaats_key,
prs_kostensoort_key,
vk_prs_kostensoort_refcode,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
GROUP BY fin_factuur_key,
cnt_contract_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
fin_factuurregel_btw,
fin_btwtabelwaarde_key,
fin_btwtabelwaarde_code,
vk_prs_kostensoort_refcode,
fin_factuurregel_totaal) fg
WHERE fg.prs_kostenplaats_key = k.prs_kostenplaats_key
AND fg.cnt_contract_key = c.cnt_contract_key
AND fg.fin_factuur_key = f.fin_factuur_key
AND g.alg_locatie_key = l.alg_locatie_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND c.cnt_contract_key = g.cnt_contract_key(+)
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
AND ( ( aaxx_get_user = 'AH'
AND ks.prs_kostensoort_upper LIKE 'CV %'
)
OR
( aaxx_get_user = 'LB'
AND ks.prs_kostensoort_upper LIKE 'NC%' -- LyondellBasell
AND ks.prs_kostensoort_upper <> 'NC DERDEN'
AND ks.prs_kostensoort_upper <> 'NC PROJ'
)
OR
( aaxx_get_user = 'DBS'
AND ks.prs_kostensoort_upper IN (
'CV AFVAL REST',
'CV OND',
'CV GEB NIET PLAN',
'CV INSTAL NIET PLAN',
'CV TERR VERHARD',
'CV TERR NIET PL',
'CV OND TERR',
'CV TERR OVR',
'CV CONS REST',
'CV CONS SERV',
'CV CONS OVR',
'CV CONS AUT',
'CV BEWAK',
'CV PREV CAL',
'CV BEWAK OVR',
'CV SCH',
'CV SCH GLAS',
'CV SCH OVR',
'CV VGM',
'CV GROEN',
'CV EIG BOUW PL',
'CV EIG INST PL',
'NC PROJ',
'CVE INSTAL NIET PLAN',
'CVE GEB NIET PLAN')
)
OR
( aaxx_get_user = 'DOW'
AND ( ks.prs_kostensoort_upper = 'COR VAR CATE COFFE'
OR ks.prs_kostensoort_upper = 'COR VAR IND CLO'
OR ks.prs_kostensoort_upper = 'COR VAR MAIL SERVICES'
OR ks.prs_kostensoort_upper = 'COR VAR VENDING'
OR ks.prs_kostensoort_upper = 'COR VAR MAIN HANDYMAN'
OR ks.prs_kostensoort_upper = 'COR VAR GEN TEN SERV'
OR ks.prs_kostensoort_upper = 'COR VAR HVAC'
OR ks.prs_kostensoort_upper = 'COR VAR CLEA BUILDING SAN'
OR ks.prs_kostensoort_upper = 'COR VAR CLEA VSR KMS')
)
OR
( aaxx_get_user = 'DSM'
AND SUBSTR(ks.prs_kostensoort_upper,1,3) IN (
'CV ',
'CVE')
)
OR
( aaxx_get_user = 'NMM'
AND ks.prs_kostensoort_upper LIKE 'CV%'
)
OR
( aaxx_get_user = 'SABIC'
AND c.cnt_contract_looptijd_van >= to_date ('20140101', 'yyyymmdd') -- Voor sabic geldt voor 2014 een ander mechanisme (AASA#28673)
AND ks.prs_kostensoort_upper LIKE 'CV %'
AND ks.prs_kostensoort_upper <> 'CV CHIP'
AND ( c.cnt_contract_looptijd_van >= to_date ('20150101', 'yyyymmdd') -- Voor sabic geldt voor 2015 een ander mechanisme (AASA#31618)
OR ( ks.prs_kostensoort_upper <> 'CV CONS REST'
AND ks.prs_kostensoort_upper <> 'CV CONS AUT'
AND ks.prs_kostensoort_upper <> 'CV SCH OVR'
AND ks.prs_kostensoort_upper <> 'CV DOC POST'
AND ks.prs_kostensoort_upper <> 'CV AFVAL REST'
)
)
)
OR
( aaxx_get_user = 'VL'
AND c.cnt_contract_looptijd_van < to_date ('20160101', 'yyyymmdd') -- Voor VL geldt voor 2016 een ander mechanisme (AAVL#34856)
AND ks.prs_kostensoort_upper IN (
'CV OND',
'CV TERR OVR',
'CV BEWAK OVR',
'CV BOUW PLAN',
'CV CONS REST',
'CV CONS OVR',
'CV SCH',
'CV WP',
'CV GEB NIET PLAN',
'CV CONS SERV',
'CV SCH GLAS',
'CV KART',
'CV INSTAL PLAN',
'CV BEWAK',
'CV VERH',
'CV GROEN',
'CV INSTAL NIET PLAN',
'CV PREV CAL',
'CV DOC POST',
'CV BEW',
'CV TERR VERHARD',
'CV REC',
'CV DOC REP',
'CV VERV PERS',
'CV OND TERR',
'CV ACHT OND',
'NC ACHT OND',
'CV EIG INST PL',
'CV EIG BOUW PL',
'NC INV BOUW',
'NC INV WP',
'NC INV INST')
)
OR
( aaxx_get_user = 'ZCN'
AND ( aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'SN'
OR aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'KL')
)
OR
( aaxx_get_user = 'ZKHM'
AND ( aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'SN'
OR aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'KL')
)
);
END IF;
-- voeg bestelorders toe aan de verkoopbuffer
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_bedrijf_key, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, 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_n1
)
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || bestel.bes_bestelopdr_id, 1,30 ),
'bestelopdr',
bestel.bes_bestelopdr_key,
v_logdate,
DECODE (aaxx_get_user,
'AH', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DOW', '911791',
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', '520',
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SITECH', aaxx_get_dep_code (k.prs_kostenplaats_nr),
'LB', exact_code,
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
SUBSTR (prs_kostenplaats_nr, 1, 30)),
DECODE (aaxx_get_user,
'AH', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'DOW', '911791',
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', '520',
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'SITECH', aaxx_get_dep_code (k.prs_kostenplaats_nr),
'LB', DECODE(g.alg_locatie_key,
1, '911928', -- Worldwide Headquarters
2, '911927', -- Maasvlakte
3, '911930', -- Botlek
4, '911929' -- Moerdijk
),
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'ZCN', '913815',
'ZKHM', '913816',
SUBSTR (prs_kostenplaats_nr, 1, 30)),
bestel.prs_bedrijf_key,
ks.prs_kostensoort_oms
|| DECODE (TO_CHAR (opdr_datum, 'YYYY'),
TO_CHAR (TO_NUMBER (TO_CHAR (SYSDATE, 'yyyy')) - 1), ' VJ',
''),
ks.prs_kostensoort_opmerking,
vk_prs_kostensoort_refcode,
prs_kostensoortgrp_oms || DECODE (aaxx_get_user, 'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ' ' || l.alg_locatie_code),
'LB', ' ' || exact_code,
'SABIC', ' ' || k.prs_kostenplaats_nr,
'ZCN', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), 'SN', 'Servicekosten',
'KL', 'Klantvragen',
''),
'ZKHM', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), 'SN', 'Servicekosten',
'KL', 'Klantvragen',
'')
),
bestel.bes_bestelopdr_id || ' ' || d.ins_discipline_omschrijving
omschrijving,
fin_factuurregel_totaal,
DECODE (aaxx_get_user, 'SITECH', 5,
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
TO_CHAR (opdr_datum, 'YYYY'),
DECODE (aaxx_get_user,
'LB', alg_locatie_code,
COALESCE(exact_code, alg_gebouw_code)),
DECODE (aaxx_get_user,
'AH', ksg.prs_kostensoortgrp_oms,
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ksg.prs_kostensoortgrp_oms || ' ' || l.alg_locatie_code,
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
'DOW', DECODE(SUBSTR(ks.prs_kostensoort_upper, 1,5), 'NC P ', 'NCP', 'NC/CV') ||
substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,6),
'ZCN', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'ZKHM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'') groepering, -- c2
DECODE (aaxx_get_user, 'LB', prs_kostensoort_oms || '1', '') subregelvolgorde, -- c3
l.alg_locatie_key -- N1
FROM ( SELECT *
FROM aaxx_v_bestelgegevens
GROUP BY bes_bestelopdr_key,
bes_bestelopdr_id,
ins_discipline_key,
mld_adres_key_lev,
bes_bestelling_leverdatum,
prs_bedrijf_key) bestel,
mld_adres ad,
prs_kostenplaats k,
ins_tab_discipline d,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
aaxx_exp_factuur f,
alg_gebouw g,
alg_locatie l,
aaxx_v_exact_code_gebouw exact,
( SELECT fin_factuur_key,
bes_bestelopdr_key,
prs_kostenplaats_key,
prs_kostensoort_key,
vk_prs_kostensoort_refcode,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
sum(fin_factuurregel_totaal) fin_factuurregel_totaal
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
AND bes_bestelopdr_key IS NOT NULL
GROUP BY fin_factuur_key,
bes_bestelopdr_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
fin_btwtabelwaarde_key,
opdr_datum,
fin_factuur_datum,
vk_prs_kostensoort_refcode,
fin_btwtabelwaarde_code) fg
WHERE fg.bes_bestelopdr_key = bestel.bes_bestelopdr_key
AND fg.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND bestel.ins_discipline_key = d.ins_discipline_key
AND bestel.mld_adres_key_lev = ad.mld_adres_key(+)
AND ad.mld_adres_gebouw_ruimte = g.alg_gebouw_code(+)
AND g.alg_gebouw_key = exact.alg_gebouw_key(+)
AND g.alg_locatie_key = l.alg_locatie_key
AND fg.fin_factuur_key = f.fin_factuur_key
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
AND ( ( aaxx_get_user = 'AH'
AND ks.prs_kostensoort_upper LIKE 'CV%'
)
OR
( aaxx_get_user = 'SITECH'
AND ks.prs_kostensoort_upper LIKE 'AE%' -- SITECH
)
OR
( aaxx_get_user = 'DSM'
AND SUBSTR(ks.prs_kostensoort_upper,1,3) IN (
'CV ',
'CVE')
)
OR
( aaxx_get_user = 'LB'
AND ks.prs_kostensoort_upper LIKE 'NC%' -- LyondellBasell
AND ks.prs_kostensoort_upper <> 'NC DERDEN'
AND ks.prs_kostensoort_upper <> 'NC PROJ'
)
OR
( aaxx_get_user = 'VL'
AND ( ( bes_bestelling_leverdatum < to_date('20160101', 'yyyymmdd') -- Voor VL geldt voor 2016 een ander mechanisme (AAVL#34856)
AND ks.prs_kostensoort_upper LIKE 'CV %')
OR
( bes_bestelling_leverdatum >= to_date('20160101', 'yyyymmdd') -- Voor VL geldt voor 2016 een ander mechanisme (AAVL#34856)
AND ks.prs_kostensoort_upper LIKE 'CVE %')
)
)
OR
( aaxx_get_user = 'ZCN'
AND ( aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'SN'
OR aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'KL')
)
OR
( aaxx_get_user = 'ZKHM'
AND ( aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'SN'
OR aaxx_get_top_dep_code(k.prs_kostenplaats_nr) = 'KL')
)
);
-- bereken per klant de FEE over de omzet.
IF aaxx_get_user = 'DBS' THEN
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
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_kostensoort_refcode, 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_c4
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', prs_debiteur_naam, 'FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8110550', prs_kostensoortgrp_oms, 'FEE' , ROUND(fin_verkoopfactuur_bedrag * ma.marge, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X', ok.ordernummer
FROM fin_verkoopfactuur v, mld_opdr o,
(SELECT km.mld_melding_key, fac.safe_to_number (fac_usrdata_code) marge
FROM fac_usrdata ud,
mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_omschrijving = 'Marge'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND fac.safe_to_number (mld_kenmerkmelding_waarde) = fac_usrdata_key) ma,
(SELECT km.mld_melding_key, mld_kenmerkmelding_waarde ordernummer
FROM mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_omschrijving = 'Ordernummer klant'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key) ok
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND fin_verkoopfactuur_xmlnode = 'opdracht'
AND fin_verkoopfactuur_refkey = o.mld_opdr_key
AND o.mld_melding_key = ma.mld_melding_key
AND o.mld_melding_key = ok.mld_melding_key
AND (v.prs_kostensoort_oms = 'NC PROJ' OR v.prs_kostensoort_oms LIKE 'CVE%');
-- 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, prs_debiteur_naam || 'FEE', fin_verkoopfactuur_c2, ma.marge;
END IF;
IF aaxx_get_user = 'DOW' THEN
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', prs_debiteur_naam, 'BASE FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8210511', prs_kostensoortgrp_oms, 'BASE FEE' , ROUND(SUM(fin_verkoopfactuur_bedrag) * 0.04, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v
WHERE fin_verkoopfactuur_aanmaak = v_logdate
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;
END IF;
IF aaxx_get_user = 'DSM' THEN
-- CVE
-- Fee: De fee over dit CVE gedeelte wordt apart doorbelast aan de klant en moet in een separate factuur worden gezet.
-- Deze factuur moet standaard naar debiteurencode 520.
-- Per factuur dient een fee berekend te worden van 0% of 3%.
-- Hierbij geldt als uitgangspunt dat voor alle MA contracten 0% geldt, en voor alle CP 3%.
-- Deze fee dient als totaalbedrag geboekt te worden op 1 regel per BTW percentage op de kostensoort FEE.
-- Extra verzoek hierover is om wel per locatie <20><>n regel te maken (dus Sittard, Urmond, Campus,etc).
-- Misschien dat we dit kunnen doen door artikelcode FEE te gebruiken, maar omschrijving Fee Sittard, Fee Urmond, etc?
INSERT INTO fin_verkoopfactuur
(
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', '520', 'CVE FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8210511', prs_kostensoortgrp_oms, 'FEE ' || l.alg_locatie_code, SUM(ROUND(fin_verkoopfactuur_bedrag * 0.03, 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', 'FEE' || '520', 'X'
FROM fin_verkoopfactuur v, prs_relatietype r, alg_locatie l, prs_bedrijf b
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND v.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_relatietype_key = r.prs_relatietype_key
AND r.prs_relatietype_omschrijving = 'Contracting party'
AND v.fin_verkoopfactuur_n1 = l.alg_locatie_key
AND prs_kostensoort_oms LIKE 'CVE%'
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, l.alg_locatie_code, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2;
-- CV
-- Fee: Er wordt een fee van 0% of 3% berekend over deze factuur.
-- Het percentage is afhankelijk van het contracttype van de leverancier.
-- Bij alle Managing Agent (MA) geldt 0%, voor alle Contracting Party (CP) geldt 3%.
-- Deze fee dient als totaalbedrag geboekt te worden op 1 regel per BTW percentage op de kostensoort FEE.
INSERT INTO fin_verkoopfactuur
(
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', '520', 'CV FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8210511', prs_kostensoortgrp_oms, 'FEE' , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.03, 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v, prs_relatietype r, alg_locatie l, prs_bedrijf b
WHERE fin_verkoopfactuur_aanmaak = v_logdate
AND v.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_relatietype_key = r.prs_relatietype_key
AND r.prs_relatietype_omschrijving = 'Contracting party'
AND prs_kostensoort_oms LIKE 'CV %'
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;
END IF;
IF aaxx_get_user = 'ESSENT' THEN
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, 'BASE FEE ' || to_char(u.uplift) || '%' || DECODE (INSTR(v.prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8210511', prs_kostensoortgrp_oms, 'BASE FEE ' || TO_CHAR(u.uplift) || '%' , ROUND(SUM(fin_verkoopfactuur_bedrag) * (u.uplift/100),2), 5, fin_verkoopfactuur_maand, 'X', 'X', u.uplift || 'X'
FROM fin_verkoopfactuur v, aaxx_imp_uplift u
WHERE REPLACE(v.prs_kostensoort_oms, ' VJ', '') = u.prs_kostensoort_oms
AND fin_verkoopfactuur_aanmaak = v_logdate
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, uplift, fin_verkoopfactuur_maand;
END IF;
IF aaxx_get_user = 'LB' THEN
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, 'BASE FEE' || DECODE (instr(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoort_opmerking, decode(substr(prs_kostensoort_refcode, 1,1), '8', '8210511', '1033305'), prs_kostensoortgrp_oms, 'FEE ' || prs_kostensoort_oms, ROUND(SUM(fin_verkoopfactuur_bedrag)*0.075,2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', 'X', prs_kostensoort_oms || '2'
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_aanmaak = v_logdate
GROUP BY 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_btwtabelwaarde_code, fin_verkoopfactuur_maand, decode(substr(prs_kostensoort_refcode, 1,1), '8', '8210511', '1033305');
END IF;
-- NMM
-- Pas het bedrag van de bewaking aan. Opdrachten aan stdmelding 1121 moeten een bedrag krijgen van het aantal uren uit de opdracht maal het uurtarief dat
-- In een eigentabel opgeslagen wordt. De entries in de eigen tabel kunnen verschillende tarieven met een vervaldatum bevatten.
IF aaxx_get_user = 'NMM' THEN
UPDATE fin_verkoopfactuur vk
SET fin_verkoopfactuur_bedrag = (SELECT o.mld_opdr_uren * ud.fac_usrdata_prijs
FROM mld_opdr o, fac_usrdata ud
WHERE vk.fin_verkoopfactuur_refkey = o.mld_opdr_key
AND vk.fin_verkoopfactuur_xmlnode = 'opdracht'
AND ud.fac_usrtab_key = DECODE (TO_CHAR (COALESCE(mld_opdr_plandatum, mld_opdr_datumbegin), 'D'), 1, 141, 7, 141, 122) -- Uurtarief bewaking (141 tabel weekend, 122 tabel weekdagen)
AND ud.fac_usrdata_verwijder IS NULL
AND o.mld_opdr_datumbegin < COALESCE(ud.fac_usrdata_vervaldatum, SYSDATE)
AND NOT EXISTS (SELECT ud2.fac_usrdata_key
FROM fac_usrdata ud2
WHERE ud2.fac_usrtab_key = DECODE (TO_CHAR (COALESCE(mld_opdr_plandatum, mld_opdr_datumbegin), 'D'), 1, 141, 7, 141, 122) -- Uurtarief bewaking (141 tabel weekend, 122 tabel weekdagen)
AND o.mld_opdr_datumbegin < COALESCE(ud2.fac_usrdata_vervaldatum, SYSDATE)
AND ud2.fac_usrdata_verwijder IS NULL
AND COALESCE(ud2.fac_usrdata_vervaldatum, SYSDATE) <
COALESCE(ud.fac_usrdata_vervaldatum, SYSDATE)
)
)
WHERE EXISTS (SELECT mld_opdr_key
FROM mld_opdr o, mld_melding m
WHERE vk.fin_verkoopfactuur_refkey = o.mld_opdr_key
AND vk.fin_verkoopfactuur_xmlnode = 'opdracht'
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = 1121 -- Aanvraag beveiligingsdienst(en) tbv evenementen
)
AND fin_verkoopfactuur_aanmaak = v_logdate;
END IF;
IF aaxx_get_user = 'RABO' THEN -- RABO#37283
INSERT INTO fin_verkoopfactuur
(
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', prs_debiteur_naam, 'FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8210511', prs_kostensoortgrp_oms, 'FEE' , ROUND(SUM(fin_verkoopfactuur_bedrag) * fac_usrdata_prijs / 100, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X'
FROM fin_verkoopfactuur v,
mld_opdr o,
mld_melding m,
alg_v_allonroerendgoed aog,
alg_gebouw g,
fac_usrdata ud
WHERE v.fin_verkoopfactuur_refkey = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND aog.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_gebouw_code =
SUBSTR (fac_usrdata_code,
1,
INSTR (fac_usrdata_code || ' ', ' ') - 1)
AND fac_usrtab_key = 81
AND o.mld_opdr_datumbegin < COALESCE (fac_usrdata_vervaldatum, SYSDATE)
AND NOT EXISTS
(SELECT fac_usrdata_key
FROM fac_usrdata ud2
WHERE SUBSTR (ud2.fac_usrdata_code,
1,
INSTR (ud2.fac_usrdata_code || ' ', ' ') - 1) =
SUBSTR (ud.fac_usrdata_code,
1,
INSTR (ud.fac_usrdata_code || ' ', ' ') - 1)
AND ud2.fac_usrtab_key = ud.fac_usrtab_key
AND ud2.fac_usrdata_key <> ud.fac_usrdata_key
AND COALESCE (ud2.fac_usrdata_vervaldatum, SYSDATE) <
COALESCE (ud.fac_usrdata_vervaldatum, SYSDATE)
AND o.mld_opdr_datumbegin <
COALESCE (ud2.fac_usrdata_vervaldatum, SYSDATE))
AND fin_verkoopfactuur_aanmaak = v_logdate
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoortgrp_oms, fac_usrdata_prijs, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, 'X';
END IF;
IF aaxx_get_user = 'VL' THEN
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
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_kostensoort_refcode, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, 'FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoort_opmerking, '8210513', prs_kostensoortgrp_oms, 'FEE', ROUND(fin_verkoopfactuur_bedrag*0.025,2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', 'X', 'X'
FROM fin_verkoopfactuur
WHERE prs_kostensoort_oms = 'NC ACHT OND'
AND fin_verkoopfactuur_aanmaak = v_logdate;
END IF;
FOR rec1 IN c_bes
LOOP
BEGIN
-- indien nog niet afgemeld, dan maar even afmelden.
IF rec1.bes_bestelopdr_status = 3 THEN -- in behandeling
UPDATE bes_bestelopdr
SET bes_bestelopdr_status = 4
WHERE bes_bestelopdr_key= rec1.bes_bestelopdr_key
AND bes_bestelopdr_status = 3;
END IF;
IF rec1.bes_bestelopdr_status = 5 -- bevestigd
OR rec1.bes_bestelopdr_status = 4 -- in bestelling
OR rec1.bes_bestelopdr_status = 3 THEN
UPDATE bes_bestelopdr_item B
SET bes_bestelopdr_item_aantalontv = COALESCE(bes_bestelopdr_item_aantal, 0),
bes_bestelopdr_item_ontvangen = SYSDATE
WHERE b.bes_bestelopdr_key = rec1.bes_bestelopdr_key;
UPDATE bes_bestelling_item bi
SET bes_bestelling_item_aantalontv = COALESCE(bes_bestelling_item_aantal, 0)
WHERE EXISTS (SELECT bes_bestelopdr_key
FROM bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key);
SELECT distinct bes_bestelling_key
INTO v_bestelling_key
FROM bes_bestelling_item bi, bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key;
bes.updatebestelopdrstatus(rec1.bes_bestelopdr_key, v_aanvrager);
bes.updatebestellingstatus(v_bestelling_key, v_aanvrager);
END IF;
END;
END LOOP;
FOR rec1 IN c_opdr
LOOP
BEGIN
-- indien nog niet afgemeld, dan maar even afmelden.
IF rec1.mld_statusopdr_key <> 6 AND rec1.mld_statusopdr_key <> 7 AND rec1.mld_statusopdr_key <> 9 THEN
mld.setopdrachtstatus (rec1.mld_opdr_key, 6, v_aanvrager);
mld.setopdrachtstatus (rec1.mld_opdr_key, 9, v_aanvrager);
END IF;
UPDATE mld_opdr o
SET mld_opdr_kosten =
(SELECT SUM (fin_factuurregel_totaal)
FROM aaxx_v_aanwezigfactuur f
, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.mld_opdr_key = o.mld_opdr_key
AND f.fin_factuur_statuses_key >= 6)
WHERE o.mld_opdr_key = rec1.mld_opdr_key
AND rec1.mld_melding_status IN (4, 5, 7); -- anders faalt de trigger sowieso
-- update meldingstatus
mld.updatemeldingstatusAV (rec1.mld_melding_key, 0, v_aanvrager, 0);
-- zet de status naar verwerkt (user is facilitor)
mld.setopdrachtstatus (rec1.mld_opdr_key, 7, v_aanvrager);
END;
END LOOP;
FOR rec1 IN c_fact
LOOP
BEGIN
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7
WHERE f.fin_factuur_key = rec1.fin_factuur_key;
fac.trackaction ('FINVER', rec1.fin_factuur_key, v_aanvrager, NULL, NULL);
END;
END LOOP;
-- verwijder de enties uit de tijdelijke tabel. (AAEY#29465)
DELETE aaxx_exp_factuur;
END;
/
COMMIT;
BEGIN adm.systrackscriptId('$Id$'); END;
/
commit;
SPOOL OFF