582 lines
45 KiB
SQL
582 lines
45 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Herstelscript verkoopinterface
|
|
-- TOEPASSING:
|
|
-- De verkoopinterface wordt gevuld op basis van de inkoopinterface. Heyday draait de inkoopinterface dagelijks/wekelijks. De verkoopinterface maandelijks/2-maandelijks
|
|
-- Als er tussentijds aanpassingen in de verkoopinterface gedaan worden, dan "kloppen de verkoopfacturen" niet meer van de eerstvolgende run.
|
|
-- Met dit standaard herstelscript kun je de 'reeds klaarstaande facturen - vorige interface' eruit halen en met de nieuwe specificaties nogmaals runnen.
|
|
-- Hiertoe moeten in onderstaand script wel elke keer voor die specifieke actie/omgeving wat aanpassen gedaan worden. Dit zijn:
|
|
---- -- STAP 1 - Welke verkoopfacturen wil je herstellen?
|
|
---- ANTW 19-4-2023: Voor deze run de AAES PROJECT -interface ivm 1e LIVE-oplevering. Alle PROJECT-regels van voor 17-4-2023
|
|
---- -- STAP 3 - Nieuwe verkoopfacturen toevoegen aan verkoopinterface - actuele interface toevoegen aan script en de FROM op 2 plekken wijzigingen
|
|
-- Dataset F (aaxx_exp_factuur f) vervangen voor de eigen herstel-tabel
|
|
-- In dataset FG de 'fin_factuur_statuses_key = 6' uit-quoten
|
|
|
|
|
|
DEFINE thisfile = 'VERKOOPINTERFACE_HERSTELSCRIPT_AAES_2.SQL'
|
|
DEFINE dbuser = '^AAES'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
|
SPOOL &fcltlogfile
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
PROMPT &fcltcusterr
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
|
|
DECLARE
|
|
v_errormsg VARCHAR (200);
|
|
v_errorhint VARCHAR (200);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (150);
|
|
currentversion fac_module.fac_module_version%TYPE;
|
|
v_aanduiding VARCHAR (100);
|
|
v_count NUMBER;
|
|
|
|
v_logdate DATE;
|
|
v_fac_usrtab_key NUMBER;
|
|
|
|
-- Met deze cursor wordt de eigen tabel gevuld met inkoopfactuurnummers waar we opnieuw de verkoopinterface gaan vullen
|
|
CURSOR fact
|
|
IS
|
|
SELECT rownum, fin_verkoopfactuur_refkey, fin_verkoopfactuur_n4, fin_verkoopfactuur_xmlnode
|
|
FROM
|
|
(
|
|
SELECT fin_verkoopfactuur_refkey, fin_verkoopfactuur_n4, fin_verkoopfactuur_xmlnode
|
|
FROM fin_verkoopfactuur f
|
|
WHERE
|
|
fin_verkoopfactuur_datum IS NULL
|
|
AND fin_verkoopfactuur_N4 IS NOT NULL -- inkoopfactuurnr waar de verkoopfactuur-regel uit gegenereerd is
|
|
AND fin_verkoopfactuur_C8 = 'HERSTEL'
|
|
GROUP BY fin_verkoopfactuur_aanmaak, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_n4
|
|
) ORDER BY 1;
|
|
|
|
|
|
BEGIN
|
|
v_logdate := SYSDATE;
|
|
|
|
-- STAP 1 - Welke verkoopfacturen wil je herstellen?
|
|
UPDATE fin_verkoopfactuur
|
|
SET fin_verkoopfactuur_c8 = 'HERSTEL'
|
|
WHERE fin_verkoopfactuur_datum IS NULL
|
|
AND fin_verkoopfactuur_N4 IS NOT NULL
|
|
AND fin_verkoopfactuur_c8 = 'PROJECT'
|
|
AND TRUNC(fin_verkoopfactuur_aanmaak) < TO_DATE('17-04-2023', 'dd-mm-yyyy') ;
|
|
|
|
-- STAP 2 - Eigen tabel aanmaken em vullen met de inkoopfactuur-nummers fin_verkoopfactuur_n4 die we opnieuw in de verkoopinterface willen aanmaken
|
|
|
|
-- vorige tabel weggooien
|
|
BEGIN
|
|
|
|
SELECT fac_usrtab_key
|
|
INTO v_fac_usrtab_key
|
|
FROM fac_usrtab
|
|
WHERE UPPER(fac_usrtab_naam) = 'VKI-HERSTEL' ;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_fac_usrtab_key := NULL;
|
|
|
|
END;
|
|
|
|
IF v_fac_usrtab_key IS NOT NULL
|
|
THEN
|
|
|
|
-- verwijder deze oude tabel
|
|
DELETE fac_usrtab WHERE fac_usrtab_key = v_fac_usrtab_key;
|
|
COMMIT;
|
|
|
|
END IF;
|
|
|
|
-- Nieuwe tabel aanmaken
|
|
INSERT INTO fac_usrtab(fac_usrtab_naam, fac_usrtab_omschrijving, fac_usrtab_object, fac_usrtab_parentkey, fac_functie_key) VALUES ('VKI-herstel', 'VKI-herstel ' || TO_CHAR(SYSDATE,'dd-mm-yyyy hh24:mi'), NULL, NULL, NULL)
|
|
RETURN fac_usrtab_key INTO v_fac_usrtab_key ;
|
|
|
|
-- In deze tabel de record van de factuurnr's aanmaken
|
|
FOR rec IN fact
|
|
LOOP
|
|
BEGIN
|
|
|
|
INSERT INTO fac_usrdata (fac_usrtab_key,
|
|
fac_usrdata_code,
|
|
fac_usrdata_omschr,
|
|
fac_usrdata_volgnr,
|
|
fac_usrdata_prijs,
|
|
fac_usrdata_vervaldatum)
|
|
VALUES (v_fac_usrtab_key, rec.fin_verkoopfactuur_xmlnode || TO_CHAR(rec.rownum), rec.fin_verkoopfactuur_n4, NULL, NULL, NULL) ;
|
|
|
|
COMMIT;
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
-- STAP 3 - Nieuwe verkoopfacturen toevoegen aan verkoopinterface
|
|
-- Op basis 'laatste versie verkoopinterface' - Deze dus hieronder opnemen, met aanpassing in de FROM, namelijk:
|
|
---- Dataset F (aaxx_exp_factuur f) vervangen voor de eigen herstel-tabel
|
|
---- In dataset FG de 'fin_factuur_statuses_key = 6' uit-quoten..
|
|
|
|
-- 3.1. OPDR
|
|
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_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, fin_verkoopfactuur_n2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c6, fin_verkoopfactuur_c7, fin_verkoopfactuur_n3, fin_verkoopfactuur_c8, fin_verkoopfactuur_n4
|
|
)
|
|
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr, 1,30 ) fin_verkoopfactuur_id,
|
|
'opdracht',
|
|
o.mld_opdr_key,
|
|
v_logdate,
|
|
SUBSTR (
|
|
DECODE (aaxx_get_user, 'AH', k.prs_kostenplaats_nr,
|
|
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
|
|
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'520'),
|
|
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
|
|
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'520'),
|
|
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
|
'NC ', DECODE (ks.prs_kostensoort_upper, 'NC PROJ', aaxx_get_top_dep_code(k.prs_kostenplaats_nr), 'Onbekend')),
|
|
'EXPO', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), '913918', '03701000',
|
|
'4001', '03700000',
|
|
'Onbekend'),
|
|
'ESSENT', '99999999',
|
|
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
|
'COVESTRO', '99999999',
|
|
-- = de INLO-standaard voor kostenplaats (gevuld op regelniveau kolom AM (39)
|
|
k.prs_kostenplaats_nr
|
|
),
|
|
'NMM', 'MGB',
|
|
'SABIC', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
k.prs_kostenplaats_nr)
|
|
, 1, 30)
|
|
prs_kostenplaats_nr,
|
|
SUBSTR (
|
|
DECODE (aaxx_get_user, 'AH', DECODE(aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), 13383, k.prs_kostenplaats_nr, aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
|
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
|
|
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'520'),
|
|
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
|
|
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'520'),
|
|
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
|
'NC ', DECODE (ks.prs_kostensoort_upper, 'NC PROJ', aaxx_get_top_dep_code(k.prs_kostenplaats_nr), 'Onbekend')),
|
|
'EXPO', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
-- OUD: 'INLO', aaxx_get_top_kpn_nr (k.prs_kostenplaats_key),
|
|
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
|
'COVESTRO', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3), 'CVE' , aaxx_get_top_kpn_nr (k.prs_kostenplaats_key), aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)),
|
|
-- = de INLO-standaard voor debiteurbepaling - kopregel kolom C
|
|
aaxx_get_top_kpn_nr (k.prs_kostenplaats_key)
|
|
),
|
|
'ESSENT', aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code),
|
|
'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', (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)),
|
|
'SMKA', COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr)),
|
|
prs_kostenplaats_nr)
|
|
, 1, 60)
|
|
prs_debiteur_naam,
|
|
b.prs_bedrijf_key,
|
|
CASE WHEN ot.mld_typeopdr_omschrijving = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 THEN '8110555 REVENUE PROJECTS COST' || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','')
|
|
WHEN ot.mld_typeopdr_omschrijving = 'Projectorder (externe uren)' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 THEN '8110552 PROJECTS ORGANISATIE' || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','')
|
|
ELSE ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','')
|
|
END prs_kostensoort_oms, -- exact_artikelcode
|
|
ks.prs_kostensoort_opmerking,
|
|
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 THEN pr.po_nr
|
|
ELSE
|
|
SUBSTR (
|
|
DECODE (aaxx_get_user,
|
|
'AH', DECODE(SUBSTR(ks.prs_kostensoort_upper,1,2), 'CV', ksg.prs_kostensoortgrp_oms || DECODE(aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), 13383, k.prs_kostenplaats_nr, aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
|
sd.ins_srtdiscipline_prefix || m.mld_melding_key),
|
|
'EXPO', 'Servicekosten Core Variabel',
|
|
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
|
'COVESTRO', aaxx_get_po_nr('COVESTRO', NULL, NULL, l.alg_locatie_code,
|
|
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3), 'CVE' , aaxx_get_top_kpn_nr (k.prs_kostenplaats_key), aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)), -- debiteurnr
|
|
NULL,
|
|
ks.prs_kostensoort_upper, -- kostensoort_code
|
|
TRUNC(opdr_datum)),
|
|
-- = de INLO-standaard voor kostensoortgr_omschr - kopregel kolom D
|
|
'Servicekosten Core Variabel'
|
|
),
|
|
'ESSENT', aaxx_get_po_nr(NULL, NULL, NULL, g.alg_gebouw_code, NULL, NULL, NULL, TRUNC(opdr_datum)) || ' ' || SUBSTR(l.alg_locatie_code,1,4),
|
|
'RABO', 'Servicekosten ' || aaxx_get_dep_code(k.prs_kostenplaats_nr),
|
|
'SABIC', DECODE (l.alg_locatie_code, 'BOZ', 'Core Variabel ' || to_char(sysdate, 'Month'),
|
|
'RDV', 'Core Variabel ' || to_char(sysdate, 'Month'),
|
|
ksg.prs_kostensoortgrp_oms || ' ' || aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
|
'SMKA', 'Servicekosten Core Variabel',
|
|
'NMM', ksg.prs_kostensoortgrp_oms || DECODE(k.prs_kostenplaats_nr, '0001', ' Heijmans',
|
|
'0002', ' Vermaat',
|
|
'0003', ' Defensie',
|
|
'0004', ' NMM',' Onbekend'),
|
|
'DSM', ksg.prs_kostensoortgrp_oms || DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ' ' || l.alg_locatie_code || ' ' || to_char(sysdate, 'Month'),
|
|
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5) , 'L CV ', ' ' || l.alg_locatie_code || ' ' || to_char(sysdate, 'Month') )),
|
|
ksg.prs_kostensoortgrp_oms)
|
|
, 1, 60)
|
|
END prs_kostensoortgrp_oms, -- kopregel kolom D
|
|
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
|
THEN pr.mld_project_nr || ' ' || DECODE (ot.mld_typeopdr_omschrijving, 'Projectorder (externe uren)', 'Projecturen ' || pr.mld_project_omschrijving, pr.mld_project_omschrijving)
|
|
-- Voor CORE - Omschrijving subregel diverse mogelijkheden. Evt ook via PO-tabel en regelitem mogelijk te sturen...
|
|
ELSE DECODE (aaxx_get_user, -- SABIC via po-tabel en regel-items - NOG UITWERKEN/AANLEVEREN DEF. PO-tabel DSM
|
|
-- 'SABIC', aaxx_get_po_regel(NULL, NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum))
|
|
'SABIC', ks.prs_kostensoort_altcode || ' ' || fin_btwtabelwaarde_code,
|
|
'ESSENT', ks.prs_kostensoort_altcode,
|
|
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
|
'COVESTRO', 'Variabele dienstverlening' || ' ' || (SELECT TO_CHAR(fin_btwtabelwaarde_perc) || '%' FROM fin_btwtabelwaarde WHERE fin_btwtabelwaarde_key = fg.fin_btwtabelwaarde_key) ,
|
|
-- = de INLO-standaard voor omschrijving sub-regel
|
|
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' ' || d.ins_discipline_omschrijving
|
|
),
|
|
-- Oorspronkelijke standaard verkoopinterface...
|
|
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' ' || d.ins_discipline_omschrijving)
|
|
END fin_verkoopfactuur_omschr, -- omschrijving subregel
|
|
CASE WHEN ot.mld_typeopdr_omschrijving = 'Projectorder (externe uren)' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
|
THEN fg.bedrag * COALESCE(fac.safe_to_number(pr.uplift), 1)
|
|
ELSE DECODE (aaxx_get_user, 'NMM', 1.1 * fg.bedrag,
|
|
fg.bedrag)
|
|
END bedrag,
|
|
DECODE (aaxx_get_user,
|
|
'EXPO' , DECODE (ks.prs_kostensoort_upper, 'CV CONS AUT', 2, fin_btwtabelwaarde_code), -- code 2 is 6 procent
|
|
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
|
|
to_char(opdr_datum, 'YYYY'),
|
|
DECODE (aaxx_get_user,
|
|
-- Op district-niveau
|
|
'SMKA', COALESCE(exact_d.exact_code,'onbekend'),
|
|
'SABIC', COALESCE(exact_d.exact_code,'onbekend'),
|
|
'DSM', DECODE (l.alg_district_key, 22, COALESCE(exact_g.exact_code,'onbekend'), COALESCE(exact_d.exact_code,'onbekend')), -- DSM voor Limburg (key 22) op gebouwniveau en overige op districtniveau
|
|
'NMM', COALESCE(exact_d.exact_code,'onbekend'),
|
|
'ESSENT', COALESCE(exact_d.exact_code,'onbekend'),
|
|
-- Op klantgebouw-niveau
|
|
'INLO', COALESCE(exact_k.klantcode,'onbekend'),
|
|
-- Overig/Default op gebouw-niveau
|
|
COALESCE(exact_g.exact_code,'onbekend')) exact_code, -- C1
|
|
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 THEN pr.mld_project_nr || '-' || pr.po_nr
|
|
ELSE
|
|
SUBSTR (
|
|
DECODE (aaxx_get_user, 'AH', DECODE (ks.prs_kostensoort_upper, 'NC PROJ', TO_CHAR(m.mld_melding_key)),
|
|
-- DEZE KAN WEG OMDAT AL OP DEBITEURNAAM VOOR INLO DE GROUPING LOOPT 'INLO', aaxx_get_top_kpn_nr (k.prs_kostenplaats_key),
|
|
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
|
|
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'520') || l.alg_locatie_code,
|
|
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
|
|
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
|
'520') || l.alg_locatie_code,
|
|
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
|
|
'RABO', aaxx_get_dep_code(k.prs_kostenplaats_nr),
|
|
'SABIC',DECODE (l.alg_locatie_code, 'BOZ', to_char(sysdate, 'Month'),
|
|
'RDV', to_char(sysdate, 'Month'),
|
|
aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
|
'SMKA',DECODE (ksg.prs_kostensoortgrp_oms, 'Core Variable', 'CV',
|
|
'Core Variable Enduser', 'CVE',
|
|
'onbekend' || '-' || COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr))),
|
|
'')
|
|
, 1, 200)
|
|
END groepering, -- C2
|
|
CASE WHEN ot.mld_typeopdr_omschrijving = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 THEN 'PR'
|
|
WHEN ot.mld_typeopdr_omschrijving = 'Projectorder (externe uren)' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 THEN 'PR-U'
|
|
ELSE NULL
|
|
END subregelvolgorde, -- C3
|
|
l.alg_locatie_key, -- N1
|
|
aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), -- N2 bedrijfskey van de hoogste afdeling
|
|
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
|
THEN 'deelfactuur (nr ' || TO_CHAR(pr.teller_vk) || ')'
|
|
-- ACTIE: Voor CV-verkoopfacturen onderstaande nog uitwerken en aanzetten
|
|
ELSE DECODE (aaxx_get_user, 'SABIC', NULL, -- Later nog uitwerken = 1 CV t/m Mrt = Kan op STANDAARD terugvallen
|
|
'RABO', NULL, -- Later nog uitwerken - 913829 Var. dienstverl. MGB - WORDT: ksg.prs_kostensoortgrp_altcode || ' ' || l.alg_locatie_code,
|
|
'DSM', NULL, -- Later nog uitwerken
|
|
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
|
'COVESTRO', ksg.prs_kostensoortgrp_altcode || ' ' || l.alg_locatie_code,
|
|
-- = de INLO-standaard voor C5 waar de subaccounts uiteindelijk op kunnen terugvallen
|
|
-- ksg.prs_kostensoortgrp_altcode
|
|
NULL
|
|
),
|
|
'ESSENT', ksg.prs_kostensoortgrp_altcode || ' ' || SUBSTR(l.alg_locatie_code,1,4),
|
|
-- De standaard: ksg.prs_kostensoortgrp_altcode || ' t/m ' || to_char(SYSDATE, 'MON')
|
|
NULL
|
|
)
|
|
END fin_verkoopfactuur_c5, -- heyday-referentie - standaard aanvulling op kopregel positie 3
|
|
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
|
THEN pr.po_nr
|
|
-- Voor CV-verkoopfacturen dient PO-nummer uit de HEYDAY-PO-tabel opgehaald te worden
|
|
--- Via functie aaxx_get_po(p_aaxxuser_sub, p_klantcode, p_klantoms, p_plaatscode, p_debiteurnr, p_kostensoortgroep, p_kostensoortcode, p_datum)
|
|
-- In EXCEL ..... wordt de definitie bepaald per klantomgeving van de parameters die meegaan om PO op te halen
|
|
ELSE DECODE (aaxx_get_user, 'SABIC', NULL, -- Later nog uitwerken
|
|
'RABO', NULL, -- Later nog uitwerken
|
|
'DSM', NULL, -- Later nog uitwerken
|
|
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
|
'COVESTRO', aaxx_get_po_nr('COVESTRO', NULL, NULL, l.alg_locatie_code,
|
|
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3), 'CVE' , aaxx_get_top_kpn_nr (k.prs_kostenplaats_key), aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)), -- debiteurnr
|
|
NULL,
|
|
ks.prs_kostensoort_upper, -- kostensoort_code
|
|
TRUNC(opdr_datum)),
|
|
-- 'HENKEL', aaxx_get_po_nr('HENKEL', NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
|
-- 'ALLIANDER', aaxx_get_po_nr('ALLIANDER', NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
|
-- = de INLO-standaard voor PO-nr (indien geen resultaat in tabel dan krijg je NULL terug)
|
|
aaxx_get_po_nr(aaxx_get_user_sub('INLO', exact_k.klantcode), NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum))
|
|
),
|
|
'ESSENT', aaxx_get_po_nr(NULL, NULL, NULL, g.alg_gebouw_code, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
|
-- De standaard: Kostengroepsrt-alternatieve code + periode
|
|
NULL
|
|
)
|
|
END fin_verkoopfactuur_c6, -- po-nummer klant uit PO-tabel HEYDAY
|
|
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
|
THEN NULL
|
|
-- Voor CV-verkoopfacturen - Structuur/Systematiek IDEM aan fin_verkoopfactuur_c6 waarbij indien voor klantomgeving van toepassing het PO-REGEL uit de HEYDAY-PO-tabel opgehaald wordt
|
|
--- Via functie aaxx_get_po_regel(p_aaxxuser_sub, p_klantcode, p_klantoms, p_plaatscode, p_debiteurnr, p_kostensoortgroep, p_kostensoortcode, p_datum)
|
|
-- In EXCEL ..... wordt de definitie bepaald per klantomgeving van de parameters die meegaan om PO-REGEL op te halen
|
|
ELSE DECODE (aaxx_get_user, 'SABIC', NULL, -- Later nog uitwerken
|
|
'RABO', NULL, -- Later nog uitwerken
|
|
'DSM', NULL, -- Later nog uitwerken
|
|
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
|
-- 'HENKEL', aaxx_get_po_regel('HENKEL', NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
|
'COVESTRO', NULL,
|
|
-- = de INLO-standaard voor PO-regel
|
|
-- aaxx_get_po_regel(aaxx_get_user_sub('INLO', exact_k.klantcode), NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum))
|
|
NULL
|
|
),
|
|
'ESSENT', NULL,
|
|
-- De standaard: Kostengroepsrt-alternatieve code + periode
|
|
NULL
|
|
)
|
|
END fin_verkoopfactuur_c7, -- algemene regelomschrijving uit PO-tabel
|
|
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
|
THEN COALESCE(fac.safe_to_number(pr.uplift), 1)
|
|
ELSE NULL
|
|
END fin_verkoopfactuur_n3, -- projectmarge
|
|
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
|
THEN 'PROJECT'
|
|
ELSE 'CORE'
|
|
END fin_verkoopfactuur_c8, -- soort verkoopfactuur
|
|
fg.fin_factuur_key
|
|
fin_verkoopfactuur_n4
|
|
FROM mld_opdr o,
|
|
mld_typeopdr ot,
|
|
prs_bedrijf b,
|
|
prs_kostenplaats k,
|
|
prs_kostenplaatsgrp kpg,
|
|
mld_melding m,
|
|
mld_stdmelding std,
|
|
ins_tab_discipline d,
|
|
ins_srtdiscipline sd,
|
|
prs_kostensoort ks,
|
|
prs_kostensoortgrp ksg,
|
|
-- aaxx_exp_factuur f,
|
|
-- Wordt eigen TABEL
|
|
(SELECT ut.fac_usrtab_naam, fac.safe_to_number (ud.fac_usrdata_omschr) fin_factuur_key
|
|
FROM fac_usrtab ut, fac_usrdata ud
|
|
WHERE UPPER(ut.fac_usrtab_naam) = 'VKI-HERSTEL'
|
|
AND ut.fac_usrtab_key = ud.fac_usrtab_key
|
|
AND ud.fac_usrdata_verwijder IS NULL
|
|
AND INSTR(ud.fac_usrdata_upper, 'OPDRACHT')>0) f,
|
|
alg_gebouw g,
|
|
alg_locatie l,
|
|
alg_v_onroerendgoed og,
|
|
aaxx_v_exact_code_gebouw exact_g,
|
|
aaxx_v_exact_code_district exact_d,
|
|
aaxx_v_klantcode_gebouw exact_k,
|
|
aaxx_v_projectorders_bron pr,
|
|
(SELECT fin_factuur_key,
|
|
mld_opdr_key,
|
|
SUM (fin_factuurregel_totaal) bedrag,
|
|
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
|
|
fin_btwtabelwaarde_key,
|
|
prs_kostenplaats_key,
|
|
prs_kostensoort_key,
|
|
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_btwtabelwaarde_code,
|
|
prs_kostensoort_refcode) 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 l.alg_district_key =exact_d.alg_district_key (+)
|
|
AND og.alg_gebouw_key = exact_g.alg_gebouw_key(+)
|
|
AND og.alg_gebouw_key = exact_k.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 k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_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 o.mld_opdr_key = pr.mld_opdr_key(+)
|
|
AND (( sd.ins_srtdiscipline_prefix = 'SA'
|
|
AND aaxx_get_user <> 'AH'
|
|
AND aaxx_get_user <> 'GN'
|
|
AND aaxx_get_user <> 'DSM'
|
|
AND aaxx_get_user <> 'SABIC'
|
|
AND aaxx_get_user <> 'INLO'
|
|
AND aaxx_get_user <> 'NMM'
|
|
AND aaxx_get_user <> 'RABO'
|
|
AND aaxx_get_user <> 'ESSENT'
|
|
AND aaxx_get_user <> 'EXPO'
|
|
AND aaxx_get_user <> 'IT'
|
|
AND aaxx_get_user <> 'SMKA')
|
|
OR ( aaxx_get_user = 'GN'
|
|
AND (
|
|
sd.ins_srtdiscipline_prefix = 'SA'
|
|
OR
|
|
(SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 )
|
|
)
|
|
)
|
|
OR ( aaxx_get_user = 'AH'
|
|
AND ( ks.prs_kostensoort_upper LIKE 'CV %')
|
|
)
|
|
OR ( aaxx_get_user = 'DSM'
|
|
AND ( ( ( SUBSTR (ks.prs_kostensoort_upper, 1, 3) =
|
|
'CV '
|
|
OR SUBSTR (ks.prs_kostensoort_upper, 1, 5) =
|
|
'L CV ')
|
|
AND g.alg_gebouw_code NOT IN ('122-170',
|
|
'122-200',
|
|
'122-094',
|
|
'122-092')
|
|
AND l.alg_locatie_key NOT IN ('23', '41')) -- Waalwijk en de Beitel
|
|
OR SUBSTR (ks.prs_kostensoort_upper, 1, 3) = 'CVE'
|
|
OR SUBSTR (ks.prs_kostensoort_upper, 1, 5) = 'L CVE'
|
|
OR ( SUBSTR (ot.mld_typeopdr_omschrijving, 1, 12) =
|
|
'Projectorder'
|
|
AND INSTR (ks.prs_kostensoort_upper, 'NC PROJ') > 0)))
|
|
OR ( aaxx_get_user = 'ESSENT'
|
|
AND (
|
|
(ks.prs_kostensoort_upper LIKE 'CV %'
|
|
AND upper(aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)) NOT IN ('X') -- Voor alle gebouwen met gebouw-debiteur X gaan we GEEN verkoopfactuur aanmaken
|
|
)
|
|
OR
|
|
(SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 )
|
|
)
|
|
)
|
|
OR ( aaxx_get_user = 'EXPO'
|
|
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
|
OR ks.prs_kostensoort_upper LIKE 'CVE %')
|
|
)
|
|
OR ( aaxx_get_user = 'INLO'
|
|
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
|
OR ks.prs_kostensoort_upper LIKE 'CVE %')
|
|
AND NOT EXISTS ( SELECT 1 FROM DUAL WHERE aaxx_get_user_sub('INLO', exact_k.klantcode) IN ('GREENPORT VENLO')) -- uitsluiten subaccounts voor INLO
|
|
AND NOT EXISTS ( SELECT 1 FROM DUAL WHERE aaxx_get_user_sub('INLO', exact_k.klantcode) IN ('COVESTRO') AND l.alg_locatie_code = 'GLN' AND INSTR(UPPER(g.alg_gebouw_naam), 'CHEMELOT CAMPUS')>0) -- uitsluiten COVESTRO-Campus Chemelot GELEEN
|
|
)
|
|
OR ( aaxx_get_user = 'NMM'
|
|
AND ks.prs_kostensoort_upper LIKE 'CVE%'
|
|
)
|
|
OR ( aaxx_get_user = 'RABO'
|
|
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
|
AND ks.prs_kostensoort_upper <> 'CV DOC POST'
|
|
AND ot.mld_typeopdr_omschrijving = 'Workorder')
|
|
)
|
|
OR ( aaxx_get_user = 'SABIC'
|
|
AND ( ( o.mld_opdr_datumbegin < to_date ('20180101', 'yyyymmdd') -- Voor sabic geldt in 2018 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 ( o.mld_opdr_datumbegin > to_date ('20180101', 'yyyymmdd') -- Voor sabic geldt voor 2018 een ander mechanisme (AASA#28673)
|
|
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
|
OR ks.prs_kostensoort_upper LIKE 'CVE%')
|
|
)
|
|
)
|
|
)
|
|
OR ( aaxx_get_user = 'SMKA'
|
|
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
|
OR ks.prs_kostensoort_upper LIKE 'CVE %')
|
|
)
|
|
OR ( aaxx_get_user = 'IT'
|
|
AND ( SUBSTR(kpg.prs_kostenplaatsgrp_nr,1,6) IN ('400-VK', '500-VK') -- VK is verkoopfacturen (zie AAIT#69225)
|
|
)
|
|
)
|
|
);
|
|
|
|
-- 3.2. CNT
|
|
---- nvt voor deze PROJECTEN van AAES - per definitie OPDRACHTEN
|
|
|
|
|
|
-- 3.3 - BESTELOPDR
|
|
---- nvt voor AAES
|
|
|
|
|
|
-- STAP 4 - Nog FEE's toevoegen?
|
|
|
|
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_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4, fin_verkoopfactuur_n3
|
|
)
|
|
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, '8110550 REVENUE PROJECTS FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'Projectfee' , SUM(ROUND(fin_verkoopfactuur_bedrag * (fin_verkoopfactuur_n3-1), 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X', fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4, fin_verkoopfactuur_n3
|
|
FROM fin_verkoopfactuur v
|
|
WHERE fin_verkoopfactuur_aanmaak = v_logdate
|
|
AND fin_verkoopfactuur_c8 = 'PROJECT'
|
|
AND INSTR(prs_kostensoort_oms, '8110555 REVENUE PROJECTS COST') > 0 -- ook VJ's meenemen '8110555 REVENUE PROJECTS COST VJ'
|
|
AND fin_verkoopfactuur_n3 IS NOT NULL
|
|
-- AND fin_verkoopfactuur_n3 NOT IN (1) -- wel of geen 0-regels meenemen?
|
|
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4, fin_verkoopfactuur_n3;
|
|
|
|
|
|
-- STAP 5 - Uiteindelijk ook de record HERSTEL nog uit verkoopinterface verwijderen
|
|
|
|
--DELETE fin_verkoopfactuur
|
|
-- WHERE fin_verkoopfactuur_c8 = 'HERSTEL' ;
|
|
|
|
END;
|
|
/
|
|
|
|
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 1); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile |