Files
Customer/onces/AA/AAES/verkoopinterface_herstelscript_aaes_2.sql
2023-04-19 19:27:38 +00:00

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