5659 lines
325 KiB
SQL
5659 lines
325 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer FINANCIAL configuration sql statements for HEYDAY
|
||
|
||
DEFINE thisfile = 'AAXX_FIN.SQL'
|
||
DEFINE dbuser = 'AAXX'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||
SPOOL &fcltlogfile
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
---------------------------------------
|
||
PROMPT &fcltcusttxt
|
||
---------------------------------------
|
||
SET DEFINE OFF
|
||
|
||
|
||
@@aa_prs_pack.sql;
|
||
|
||
|
||
-------------------------------------------------------------------------------
|
||
-- INKOOP- en VERKOOPINTERFACE
|
||
-------------------------------------------------------------------------------
|
||
|
||
-------------------------------------------
|
||
-- FUNCTIES
|
||
-------------------------------------------
|
||
|
||
-- FUNCTIE om bij het bovenliggend bedrijf/account de waarden op te halen van:
|
||
---- exact_boekdatum - de datum waar de admin in exact voor dit account op is afgesloten en er dus geen inkoopfacturen meer op doorgeboekt mogen worden
|
||
---- exact_inkooprun - of voor dit account de inkoopinterface automatisch in avond gerund wordt
|
||
CREATE OR REPLACE FUNCTION aaxx_get_exact_setting (
|
||
p_soort IN VARCHAR2, -- datum of inkooprun
|
||
p_user IN VARCHAR2,
|
||
p_user_sub IN VARCHAR2,
|
||
p_prs_kostenplaatsgrp_key IN NUMBER)
|
||
RETURN VARCHAR2
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT *
|
||
FROM (SELECT aaxx_get_user
|
||
account,
|
||
NULL
|
||
sub_account,
|
||
NULL
|
||
prs_kostenplaatsgrp_key,
|
||
(SELECT kw.prs_kenmerklink_waarde
|
||
FROM prs_kenmerklink kw, prs_kenmerk k
|
||
WHERE kw.prs_kenmerklink_verwijder IS NULL
|
||
AND kw.prs_kenmerk_key = k.prs_kenmerk_key
|
||
AND k.prs_kenmerk_code = 'EXACT_BOEKDATUM'
|
||
AND kw.prs_kenmerklink_niveau = 'B'
|
||
AND kw.prs_link_key = b.prs_bedrijf_key)
|
||
exact_boekdatum_gesloten,
|
||
(SELECT kw.prs_kenmerklink_waarde
|
||
FROM prs_kenmerklink kw, prs_kenmerk k
|
||
WHERE kw.prs_kenmerklink_verwijder IS NULL
|
||
AND kw.prs_kenmerk_key = k.prs_kenmerk_key
|
||
AND k.prs_kenmerk_code = 'EXACT_INKOOPRUN'
|
||
AND kw.prs_kenmerklink_niveau = 'B'
|
||
AND kw.prs_link_key = b.prs_bedrijf_key)
|
||
exact_inkooprun_auto
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_naam = 'HEYDAY Facility Management'
|
||
AND b.prs_bedrijf_verwijder IS NULL
|
||
AND aaxx_get_user NOT IN ('INLO') -- de multi-clientomgeving(en) uitsluiten
|
||
UNION
|
||
SELECT 'INLO'
|
||
account,
|
||
flx.getdomeinwaarde (481,
|
||
(flx.getflex ('PRS',
|
||
k.prs_kenmerk_key,
|
||
b.prs_bedrijf_key,
|
||
'B')))
|
||
sub_account,
|
||
bkg.prs_kostenplaatsgrp_key,
|
||
bb.exact_boekdatum_gesloten,
|
||
COALESCE (ba.exact_inkooprun_auto, '0')
|
||
exact_inkooprun_auto
|
||
FROM prs_kenmerklink kw,
|
||
prs_kenmerk k,
|
||
prs_bedrijf b,
|
||
( SELECT a.prs_bedrijf_key,
|
||
MIN (kg.prs_kostenplaatsgrp_key)
|
||
prs_kostenplaatsgrp_key
|
||
FROM prs_afdeling a,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaatsgrp kg
|
||
WHERE a.prs_afdeling_verwijder IS NULL
|
||
AND a.prs_bedrijf_key IS NOT NULL
|
||
AND a.prs_kostenplaats_key =
|
||
k.prs_kostenplaats_key
|
||
AND k.prs_kostenplaatsgrp_key =
|
||
kg.prs_kostenplaatsgrp_key
|
||
GROUP BY a.prs_bedrijf_key) bkg,
|
||
(SELECT kw.prs_link_key
|
||
prs_bedrijf_key,
|
||
kw.prs_kenmerklink_waarde
|
||
exact_boekdatum_gesloten
|
||
FROM prs_kenmerklink kw, prs_kenmerk k
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND kw.prs_kenmerk_key = k.prs_kenmerk_key
|
||
AND k.prs_kenmerk_code = 'EXACT_BOEKDATUM') bb,
|
||
(SELECT kw.prs_link_key prs_bedrijf_key,
|
||
kw.prs_kenmerklink_waarde exact_inkooprun_auto
|
||
FROM prs_kenmerklink kw, prs_kenmerk k
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND kw.prs_kenmerk_key = k.prs_kenmerk_key
|
||
AND k.prs_kenmerk_code = 'EXACT_INKOOPRUN') ba
|
||
WHERE kw.prs_kenmerklink_niveau = 'B'
|
||
AND prs_kenmerklink_verwijder IS NULL
|
||
AND kw.prs_kenmerk_key = k.prs_kenmerk_key
|
||
AND k.prs_kenmerk_code = 'EXACT_SUBACCOUNT'
|
||
AND kw.prs_link_key = b.prs_bedrijf_key
|
||
AND b.prs_bedrijf_verwijder IS NULL
|
||
AND b.prs_bedrijf_key = bkg.prs_bedrijf_key
|
||
AND b.prs_bedrijf_key = bb.prs_bedrijf_key(+)
|
||
AND b.prs_bedrijf_key = ba.prs_bedrijf_key(+)
|
||
AND aaxx_get_user IN ('INLO') -- de multi-clientomgeving(en)
|
||
) v
|
||
WHERE v.account = p_user
|
||
AND (1 =
|
||
CASE
|
||
WHEN p_user_sub IS NULL THEN 1
|
||
WHEN v.sub_account = p_user_sub THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 =
|
||
CASE
|
||
WHEN p_prs_kostenplaatsgrp_key IS NULL
|
||
THEN
|
||
1
|
||
WHEN v.prs_kostenplaatsgrp_key =
|
||
p_prs_kostenplaatsgrp_key
|
||
THEN
|
||
1
|
||
ELSE
|
||
0
|
||
END);
|
||
|
||
v_output VARCHAR2 (60);
|
||
BEGIN
|
||
v_output := NULL; -- 'geen resultaat'
|
||
|
||
BEGIN
|
||
FOR rec IN C
|
||
LOOP
|
||
BEGIN
|
||
IF p_soort = 'datum'
|
||
THEN
|
||
RETURN rec.exact_boekdatum_gesloten;
|
||
END IF;
|
||
|
||
IF p_soort = 'inkooprun'
|
||
THEN
|
||
RETURN rec.exact_inkooprun_auto;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
RETURN v_output;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
RETURN v_output;
|
||
END;
|
||
END aaxx_get_exact_setting;
|
||
/
|
||
|
||
CREATE OR REPLACE FUNCTION aaxx_get_debiteur_gebouw (p_locatie_code VARCHAR2,
|
||
p_gebouw_code VARCHAR2
|
||
) RETURN VARCHAR2
|
||
AS
|
||
CURSOR c IS
|
||
SELECT l.alg_locatie_code, g.alg_gebouw_code, kw.alg_onrgoedkenmerk_waarde
|
||
FROM alg_locatie l,
|
||
alg_gebouw g,
|
||
alg_onrgoedkenmerk kw,
|
||
alg_kenmerk k
|
||
WHERE l.alg_locatie_key = g.alg_locatie_key
|
||
AND g.alg_gebouw_key = kw.alg_onrgoed_key
|
||
AND kw.alg_onrgoed_niveau = 'G' AND kw.alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND kw.alg_kenmerk_key = k.alg_kenmerk_key
|
||
AND k.alg_kenmerk_upper = 'GEBOUW-DEBITEUR'
|
||
AND l.alg_locatie_code = p_locatie_code
|
||
AND g.alg_gebouw_code = p_gebouw_code ;
|
||
|
||
v_debiteur VARCHAR2(60);
|
||
|
||
BEGIN
|
||
v_debiteur := 'Onbekende gebouw-debiteur: '|| p_locatie_code || '-' || p_gebouw_code;
|
||
BEGIN
|
||
FOR rec IN C
|
||
LOOP
|
||
BEGIN
|
||
RETURN rec.alg_onrgoedkenmerk_waarde;
|
||
END;
|
||
END LOOP;
|
||
RETURN v_debiteur;
|
||
EXCEPTION WHEN OTHERS THEN
|
||
RETURN v_debiteur;
|
||
END;
|
||
END aaxx_get_debiteur_gebouw;
|
||
/
|
||
|
||
CREATE OR REPLACE FUNCTION aaxx_get_cnt_gebrokenboekjaar (p_cnt_contract_key IN NUMBER
|
||
) RETURN VARCHAR2
|
||
AS
|
||
v_gebrokenboekjaar VARCHAR2(3);
|
||
v_beginjaar VARCHAR2(4);
|
||
v_eindjaar VARCHAR2(4);
|
||
v_teller NUMBER;
|
||
|
||
BEGIN
|
||
|
||
SELECT count(*)
|
||
INTO v_teller
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_key = p_cnt_contract_key ;
|
||
|
||
IF v_teller > 0
|
||
THEN
|
||
|
||
SELECT TO_CHAR(cnt_contract_looptijd_van,'yyyy')
|
||
INTO v_beginjaar
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_key = p_cnt_contract_key ;
|
||
|
||
SELECT TO_CHAR(cnt_contract_looptijd_tot,'yyyy')
|
||
INTO v_eindjaar
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_key = p_cnt_contract_key ;
|
||
|
||
IF v_beginjaar = v_eindjaar
|
||
THEN
|
||
v_gebrokenboekjaar := 'nee';
|
||
ELSE
|
||
v_gebrokenboekjaar := 'ja';
|
||
END IF;
|
||
|
||
ELSE
|
||
v_gebrokenboekjaar := NULL ;
|
||
|
||
END IF;
|
||
|
||
RETURN v_gebrokenboekjaar;
|
||
|
||
END aaxx_get_cnt_gebrokenboekjaar;
|
||
/
|
||
|
||
-- FUNCTIE om binnen multiclient INLO de afwijkende SEN-omschrijving op te halen
|
||
---- Betreft de heyday-diensten opgenomen in de prs_kostensoort-tabel
|
||
---- De standaard dienst, de SEN-omschrijving, is de prs_kostensoort_opmerking (met als grootboek/kostenrekening de prs_kostensoort_refcode)
|
||
---- Indien voor een klant een afwijkende dienstomschrijving wordt gehanteerd dan wordt deze opgenomen in de prs_kostensoort_altcode
|
||
---- Voor INLO zijn er echter meerdere klanten, met meerdere verschillende dienstenomschrijving en deze zijn dus NIET onder prs_kostensoort_altcode opgenomen, maar onder EIGEN TABEL, genaamd SEN_AFWIJKEND
|
||
CREATE OR REPLACE FUNCTION aaxx_get_sen_omschrijving (
|
||
p_klantcode IN VARCHAR2, -- subaccount INLO uit KLANTEN-tabel (de exact-code)
|
||
p_prs_kostensoort_oms IN VARCHAR2
|
||
)
|
||
RETURN VARCHAR2
|
||
AS
|
||
v_fac_usrtab_key NUMBER(10);
|
||
v_klant_key NUMBER(10);
|
||
v_prs_kostensoort_opmerking VARCHAR(255) ;
|
||
v_retour VARCHAR2(255) := 'check afwijkende sen-omschrijving' ;
|
||
|
||
BEGIN
|
||
|
||
-- De SEN-tabel-key ophalen
|
||
SELECT MAX(fac_usrtab_key)
|
||
INTO v_fac_usrtab_key
|
||
FROM fac_usrtab
|
||
WHERE UPPER(fac_usrtab_naam) = 'SEN_AFWIJKEND'
|
||
AND fac_usrtab_verwijder IS NULL ;
|
||
|
||
-- De v_klant_key bepalen uit de klanten-eigen-tabel van INLO
|
||
SELECT MAX(fac_usrdata_key)
|
||
INTO v_klant_key
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 81
|
||
AND fac_usrdata_upper = UPPER(p_klantcode)
|
||
AND fac_usrdata_verwijder IS NULL ;
|
||
|
||
-- Kijken of er voor die SEN met code prs_kostensoort_oms een afwijkende SEN/Dienst-omschrijving gevonden kan worden
|
||
IF v_fac_usrtab_key IS NOT NULL AND v_klant_key IS NOT NULL
|
||
THEN
|
||
|
||
BEGIN
|
||
|
||
SELECT fac_usrdata_omschr2
|
||
INTO v_prs_kostensoort_opmerking
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = v_fac_usrtab_key
|
||
AND UPPER(fac_usrdata_omschr) = UPPER(p_prs_kostensoort_oms) -- 'CV CONS REST'
|
||
AND fac_usrdata_parentkey = v_klant_key
|
||
AND fac_usrdata_verwijder IS NULL ;
|
||
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_retour := '';
|
||
|
||
END;
|
||
|
||
IF v_prs_kostensoort_opmerking IS NOT NULL
|
||
THEN
|
||
|
||
v_retour := v_prs_kostensoort_opmerking ;
|
||
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
RETURN v_retour;
|
||
|
||
END aaxx_get_sen_omschrijving;
|
||
/
|
||
|
||
|
||
-------------------------------------------
|
||
-- PO-SYSTEMATIEK - tbv verkoopinterface
|
||
-------------------------------------------
|
||
|
||
-- Heyday vult via een eigen PO-tabel voor al haar klanten de PO-nummers die de klant op de verkoopfacturen wil terug zien
|
||
|
||
-- Functie om uit PO-tabel voor de CORE-verkoopfacturen het voor die klantomgeving juiste PO-NUMMER te halen
|
||
CREATE OR REPLACE FUNCTION aaxx_get_po_nr (p_aaxxuser_sub IN VARCHAR2, -- subklant (inlo)
|
||
p_klantcode IN VARCHAR2,
|
||
p_klantoms IN VARCHAR2,
|
||
p_plaatscode IN VARCHAR2,
|
||
p_debiteurnr IN VARCHAR2,
|
||
p_kostensoortgroep IN VARCHAR2,
|
||
p_kostensoortcode IN VARCHAR2,
|
||
p_datum IN DATE) RETURN VARCHAR2
|
||
AS
|
||
v_po_nr VARCHAR2(20);
|
||
v_teller NUMBER;
|
||
|
||
BEGIN
|
||
|
||
-- Eerst teller
|
||
v_teller := 0 ;
|
||
|
||
SELECT count(*)
|
||
INTO v_teller
|
||
FROM aaxx_imp_klant_po
|
||
WHERE actief = 1
|
||
AND p_datum BETWEEN ingangsdatum AND einddatum
|
||
AND ingangsdatum IS NOT NULL AND einddatum IS NOT NULL
|
||
AND (1 = CASE WHEN p_aaxxuser_sub IS NULL THEN 1
|
||
WHEN UPPER(aaxxuser_sub) = p_aaxxuser_sub THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_klantcode IS NULL THEN 1
|
||
WHEN klantcode = p_klantcode THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_klantoms IS NULL THEN 1
|
||
WHEN klantoms = p_klantoms THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_plaatscode IS NULL THEN 1
|
||
WHEN plaatscode = p_plaatscode THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_debiteurnr IS NULL THEN 1
|
||
WHEN debiteurnr = p_debiteurnr THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_kostensoortgroep IS NULL THEN 1
|
||
WHEN kostensoortgroep = p_kostensoortgroep THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_kostensoortcode IS NULL THEN 1
|
||
WHEN kostensoortcode = p_kostensoortcode THEN 1
|
||
ELSE 0
|
||
END) ;
|
||
|
||
IF v_teller = 0
|
||
THEN
|
||
v_po_nr := NULL ;
|
||
ELSE
|
||
|
||
SELECT MAX(po)
|
||
INTO v_po_nr
|
||
FROM aaxx_imp_klant_po
|
||
WHERE actief = 1
|
||
AND p_datum BETWEEN ingangsdatum AND einddatum
|
||
AND ingangsdatum IS NOT NULL AND einddatum IS NOT NULL
|
||
AND (1 = CASE WHEN p_aaxxuser_sub IS NULL THEN 1
|
||
WHEN UPPER(aaxxuser_sub) = p_aaxxuser_sub THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_klantcode IS NULL THEN 1
|
||
WHEN klantcode = p_klantcode THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_klantoms IS NULL THEN 1
|
||
WHEN klantoms = p_klantoms THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_plaatscode IS NULL THEN 1
|
||
WHEN plaatscode = p_plaatscode THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_debiteurnr IS NULL THEN 1
|
||
WHEN debiteurnr = p_debiteurnr THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_kostensoortgroep IS NULL THEN 1
|
||
WHEN kostensoortgroep = p_kostensoortgroep THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_kostensoortcode IS NULL THEN 1
|
||
WHEN kostensoortcode = p_kostensoortcode THEN 1
|
||
ELSE 0
|
||
END) ;
|
||
|
||
END IF;
|
||
|
||
IF v_teller > 1
|
||
THEN
|
||
v_po_nr := SUBSTR (v_po_nr || '-!', 1, 20) ;
|
||
|
||
END IF;
|
||
|
||
RETURN v_po_nr;
|
||
END aaxx_get_po_nr;
|
||
/
|
||
|
||
-- Functie om uit PO-tabel voor de CORE-verkoopfacturen de voor die klantomgeving juiste PO-REGEL te halen
|
||
CREATE OR REPLACE FUNCTION aaxx_get_po_regel (p_aaxxuser_sub IN VARCHAR2, -- subklant (inlo)
|
||
p_klantcode IN VARCHAR2,
|
||
p_klantoms IN VARCHAR2,
|
||
p_plaatscode IN VARCHAR2,
|
||
p_debiteurnr IN VARCHAR2,
|
||
p_kostensoortgroep IN VARCHAR2,
|
||
p_kostensoortcode IN VARCHAR2,
|
||
p_datum IN DATE) RETURN VARCHAR2
|
||
AS
|
||
v_po_regel VARCHAR2(100);
|
||
v_teller NUMBER;
|
||
|
||
BEGIN
|
||
|
||
-- Eerst teller
|
||
v_teller := 0 ;
|
||
|
||
SELECT count(*)
|
||
INTO v_teller
|
||
FROM aaxx_imp_klant_po
|
||
WHERE actief = 1
|
||
AND p_datum BETWEEN ingangsdatum AND einddatum
|
||
AND ingangsdatum IS NOT NULL AND einddatum IS NOT NULL
|
||
AND (1 = CASE WHEN p_aaxxuser_sub IS NULL THEN 1
|
||
WHEN UPPER(aaxxuser_sub) = p_aaxxuser_sub THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_klantcode IS NULL THEN 1
|
||
WHEN klantcode = p_klantcode THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_klantoms IS NULL THEN 1
|
||
WHEN klantoms = p_klantoms THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_plaatscode IS NULL THEN 1
|
||
WHEN plaatscode = p_plaatscode THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_debiteurnr IS NULL THEN 1
|
||
WHEN debiteurnr = p_debiteurnr THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_kostensoortgroep IS NULL THEN 1
|
||
WHEN kostensoortgroep = p_kostensoortgroep THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_kostensoortcode IS NULL THEN 1
|
||
WHEN kostensoortcode = p_kostensoortcode THEN 1
|
||
ELSE 0
|
||
END) ;
|
||
|
||
IF v_teller = 0
|
||
THEN
|
||
v_po_regel := NULL ;
|
||
ELSE
|
||
|
||
SELECT MAX(regel)
|
||
INTO v_po_regel
|
||
FROM aaxx_imp_klant_po
|
||
WHERE actief = 1
|
||
AND p_datum BETWEEN ingangsdatum AND einddatum
|
||
AND ingangsdatum IS NOT NULL AND einddatum IS NOT NULL
|
||
AND (1 = CASE WHEN p_aaxxuser_sub IS NULL THEN 1
|
||
WHEN UPPER(aaxxuser_sub) = p_aaxxuser_sub THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_klantcode IS NULL THEN 1
|
||
WHEN klantcode = p_klantcode THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_klantoms IS NULL THEN 1
|
||
WHEN klantoms = p_klantoms THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_plaatscode IS NULL THEN 1
|
||
WHEN plaatscode = p_plaatscode THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_debiteurnr IS NULL THEN 1
|
||
WHEN debiteurnr = p_debiteurnr THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_kostensoortgroep IS NULL THEN 1
|
||
WHEN kostensoortgroep = p_kostensoortgroep THEN 1
|
||
ELSE 0
|
||
END)
|
||
AND (1 = CASE WHEN p_kostensoortcode IS NULL THEN 1
|
||
WHEN kostensoortcode = p_kostensoortcode THEN 1
|
||
ELSE 0
|
||
END) ;
|
||
|
||
END IF;
|
||
|
||
IF v_teller > 1
|
||
THEN
|
||
v_po_regel := SUBSTR (v_po_regel || '-!', 1, 100) ;
|
||
|
||
END IF;
|
||
|
||
RETURN v_po_regel;
|
||
END aaxx_get_po_regel;
|
||
/
|
||
|
||
-- Import voor HEYDAY-Finance om de PO-nummers van haar klanten te importeren
|
||
---- Wordt gebruikt in vk-interface2.0.
|
||
CREATE OR REPLACE PROCEDURE aaxx_import_klant_po (p_import_key IN NUMBER)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
|
||
v_newline VARCHAR2 (4000); -- Input line
|
||
v_errormsg VARCHAR (1000);
|
||
v_hint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_header_is_valid NUMBER (1);
|
||
v_dummy VARCHAR2 (1000);
|
||
v_user VARCHAR2 (4);
|
||
-- De importvelden:
|
||
v_aaxxuser VARCHAR2 (4);
|
||
v_aaxxuser_sub VARCHAR2 (60); -- mutliclient - klantnaam
|
||
v_klantcode VARCHAR2 (50);
|
||
v_klantoms VARCHAR2 (50);
|
||
v_debiteurnr VARCHAR2 (20);
|
||
v_debiteuroms VARCHAR2 (50);
|
||
v_plaatscode VARCHAR2 (20);
|
||
v_kostensoortgroep VARCHAR2 (60);
|
||
v_kostensoortcode VARCHAR2 (60);
|
||
v_klantkostensoort VARCHAR2 (50);
|
||
v_regel VARCHAR2 (100);
|
||
v_po VARCHAR2 (20);
|
||
v_ingangsdatum DATE;
|
||
v_einddatum DATE;
|
||
|
||
|
||
CURSOR c IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
-- Verwijder regels die de vorige keer geimporteerd zijn maar niet verwerkt zijn.
|
||
DELETE aaxx_imp_klant_po
|
||
WHERE actief = 0;
|
||
|
||
-- gooi lege regels weg uit de import
|
||
DELETE fac_imp_file
|
||
WHERE fac_import_key = p_import_key AND fac_imp_file_line LIKE ';;';
|
||
|
||
SELECT UPPER(fac_version_cust)
|
||
INTO v_user
|
||
FROM fac_version;
|
||
|
||
v_header_is_valid := 0;
|
||
v_ongeldig := 0;
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout FETCH te importeren rij';
|
||
v_newline := rec.fac_imp_file_line;
|
||
|
||
v_errormsg :=
|
||
'Fout opvragen te importeren rij:'
|
||
|| SUBSTR (v_newline, 1, 200);
|
||
v_aanduiding := '';
|
||
|
||
IF (UPPER (v_newline) LIKE
|
||
'AAXXUSER;AAXXUSER_SUB;KLANTCODE;KLANTOMS;PLAATSCODE;DEBITEURNR;DEBITEUROMS;KOSTENSOORTGROEP;KOSTENSOORTCODE;KLANTKOSTENSOORT;REGEL;PO;INGANGSDATUM;EINDDATUM%')
|
||
THEN
|
||
v_header_is_valid := 1;
|
||
ELSE
|
||
-- Lees alle veldwaarden
|
||
v_errormsg := 'Fout opvragen te importeren rij (aaxxuser)';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_aaxxuser := UPPER(SUBSTR (v_dummy, 1, 4));
|
||
|
||
IF v_aaxxuser <> v_user
|
||
THEN
|
||
aaxx_imp_writelog (p_import_key,
|
||
'E',
|
||
'PO tabel kan niet ingelezen worden.',
|
||
'Ongeldige user');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout opvragen te importeren rij (aaxxuser_sub) ';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_aaxxuser_sub := SUBSTR (v_dummy, 1, 60);
|
||
|
||
v_errormsg := 'Fout opvragen te importeren rij (klantcode) ';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_klantcode := SUBSTR (v_dummy, 1, 50);
|
||
|
||
v_errormsg := 'Fout opvragen te importeren rij (klantoms) ';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_klantoms := SUBSTR (v_dummy, 1, 50);
|
||
|
||
v_errormsg := 'Fout opvragen te importeren rij (plaatscode) ';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_plaatscode := SUBSTR (v_dummy, 1, 20);
|
||
|
||
v_errormsg := 'Fout opvragen te importeren rij (debiteurnr) ';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_debiteurnr := SUBSTR (v_dummy, 1, 20);
|
||
|
||
v_errormsg :=
|
||
'Fout opvragen te importeren rij (debiteuroms) ';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_debiteuroms := SUBSTR (v_dummy, 1, 50);
|
||
|
||
v_errormsg :=
|
||
'Fout opvragen te importeren rij (kostensoortgroep) ';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_kostensoortgroep := SUBSTR (v_dummy, 1, 60);
|
||
|
||
v_errormsg :=
|
||
'Fout opvragen te importeren rij (kostensoortcode) ';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_kostensoortcode := SUBSTR (v_dummy, 1, 60);
|
||
|
||
v_errormsg :=
|
||
'Fout opvragen te importeren rij (kostensoortoms) ';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_klantkostensoort := SUBSTR (v_dummy, 1, 50);
|
||
|
||
v_errormsg := 'Fout opvragen te importeren rij (regel) ';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_regel := SUBSTR (v_dummy, 1, 100);
|
||
|
||
v_errormsg := 'Fout opvragen te importeren rij (v_po) ';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_po := SUBSTR (v_dummy, 1, 20);
|
||
|
||
v_errormsg :=
|
||
'Fout opvragen te importeren rij (ingangsdatum) ';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_ingangsdatum := fac.safe_to_date (v_dummy, 'dd-mm-yyyy');
|
||
|
||
IF v_ingangsdatum IS NULL
|
||
THEN
|
||
aaxx_imp_writelog (p_import_key,
|
||
'E',
|
||
'PO tabel kan niet ingelezen worden.',
|
||
'Ongeldige ingangsdatum');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout opvragen te importeren rij (einddatum) ';
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
v_einddatum := fac.safe_to_date (v_dummy, 'dd-mm-yyyy');
|
||
|
||
IF v_einddatum IS NULL
|
||
THEN
|
||
aaxx_imp_writelog (p_import_key,
|
||
'E',
|
||
'PO tabel kan niet ingelezen worden.',
|
||
'Ongeldige einddatum');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_errormsg :=
|
||
'Fout bij toevoegen regel aan tabel '
|
||
|| v_klantcode
|
||
|| ' / '
|
||
|| v_klantoms
|
||
|| '.'
|
||
|| v_debiteurnr
|
||
|| ' - '
|
||
|| v_kostensoortgroep;
|
||
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
INSERT INTO aaxx_imp_klant_po (aaxxuser,
|
||
aaxxuser_sub,
|
||
klantcode,
|
||
klantoms,
|
||
plaatscode,
|
||
debiteurnr,
|
||
debiteuroms,
|
||
kostensoortgroep,
|
||
kostensoortcode,
|
||
klantkostensoort,
|
||
regel,
|
||
po,
|
||
ingangsdatum,
|
||
einddatum,
|
||
actief)
|
||
VALUES (v_aaxxuser,
|
||
v_aaxxuser_sub,
|
||
v_klantcode,
|
||
v_klantoms,
|
||
v_plaatscode,
|
||
v_debiteurnr,
|
||
v_debiteuroms,
|
||
v_kostensoortgroep,
|
||
v_kostensoortcode,
|
||
v_klantkostensoort,
|
||
v_regel,
|
||
v_po,
|
||
v_ingangsdatum,
|
||
v_einddatum,
|
||
0);
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
IF v_header_is_valid = 0
|
||
THEN
|
||
aaxx_imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Ongeldig importbestand',
|
||
'Toelichting: ... ');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
COMMIT;
|
||
ELSE
|
||
ROLLBACK;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
ROLLBACK;
|
||
oracle_err_num := SQLCODE;
|
||
v_hint := v_errormsg;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_hint);
|
||
END aaxx_import_klant_po;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE aaxx_update_klant_po (
|
||
p_import_key IN NUMBER)
|
||
AS
|
||
|
||
BEGIN
|
||
DELETE aaxx_imp_klant_po
|
||
WHERE actief = 1;
|
||
|
||
UPDATE aaxx_imp_klant_po
|
||
SET actief = 1;
|
||
|
||
COMMIT;
|
||
END aaxx_update_klant_po;
|
||
/
|
||
|
||
-- Rapportview voor export van de PO-tabel - Te gebruiken om mutaties in excel door te voeren en de actuele tabel weer met de importfunctie aaxx_imp_klant_po in de omgeving toe te voegen
|
||
CREATE OR REPLACE VIEW aaxx_v_imp_klant_po
|
||
(
|
||
AAXXUSER,
|
||
AAXXUSER_SUB,
|
||
KLANTCODE,
|
||
KLANTOMS,
|
||
PLAATSCODE,
|
||
DEBITEURNR,
|
||
DEBITEUROMS,
|
||
KOSTENSOORTGROEP,
|
||
KOSTENSOORTCODE,
|
||
KLANTKOSTENSOORT,
|
||
REGEL,
|
||
PO,
|
||
INGANGSDATUM,
|
||
EINDDATUM,
|
||
ACTIEF
|
||
)
|
||
AS
|
||
SELECT *
|
||
FROM aaxx_imp_klant_po ;
|
||
|
||
-----------------------------------------------
|
||
----- Verkoopinterface Maintenance-cap ----
|
||
-----------------------------------------------
|
||
-- Metodiek bij heyday waarbij tot max bedrag van 500, euro op de inkoopfactuur als FEE wordt teruggegeven
|
||
|
||
-- Basisview voor de berekening/bepaling van deze cap in de vk-interface
|
||
CREATE OR REPLACE VIEW aaxx_v_verkoopfactuur_cap
|
||
(
|
||
FIN_VERKOOPFACTUUR_MAAND,
|
||
MLD_MELDING_KEY,
|
||
MLD_OPDR_KEY,
|
||
MLD_OPDR_NR,
|
||
OPDRACHTDATUM,
|
||
MAINTENANCE_CAP_OMS,
|
||
INKOOPFACTUREN_TOTAAL_VERWERKT,
|
||
VK_REGELS_OPDRACHT,
|
||
VK_REGELS_OPDRACHT_VERWERKT,
|
||
VK_REGELS_OPDRACHT_ONVERWERKT,
|
||
VK_REGELS_OPDRACHT_CAP_VERWERKT,
|
||
VK_REGELS_OPDRACHT_CAP_ONVERWERKT,
|
||
VK_AANTAL_RUNS_VERWERKT,
|
||
VK_DATUM_EERST_RUN_VERWERKT,
|
||
FIN_VERKOOPFACTUUR_KEY,
|
||
CAP_TE_VERREKENEN_IN_RUN
|
||
)
|
||
AS
|
||
SELECT c.fin_verkoopfactuur_maand,
|
||
c.mld_melding_key,
|
||
c.mld_opdr_key,
|
||
c.mld_opdr_nr,
|
||
c.opdrachtdatum,
|
||
c.maintenance_cap_oms,
|
||
(SELECT sum(fin_factuur_totaal) inkoopfacturen_totaal FROM fin_factuur WHERE mld_opdr_key = c.mld_opdr_key AND fin_factuur_statuses_key = 7)
|
||
+ COALESCE
|
||
(
|
||
(SELECT SUM (fin_factuur_totaal) FROM aaxx_exp_factuur r, fin_factuur f WHERE r.fin_factuur_key = f.fin_factuur_key AND f.mld_opdr_key = c.mld_opdr_key)
|
||
, 0)
|
||
inkoopfacturen_totaal_verwerkt,
|
||
c.bedrag_regels_opdracht,
|
||
c.bedrag_regels_opdracht_verwerkt,
|
||
c.bedrag_regels_opdracht_onverwerkt,
|
||
c.bedrag_regels_opdracht_cap_verwerkt,
|
||
c.bedrag_regels_opdracht_cap_onverwerkt,
|
||
c.aantal_runs_verwerkt,
|
||
c.datum_eerst_run_verwerkt,
|
||
c.fin_verkoopfactuur_key,
|
||
CASE
|
||
WHEN bedrag_regels_opdracht >= 500 AND -(COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0)) < 500
|
||
THEN -ROUND(500 + (COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0)), 2) -- (deel) cap nog teruggeven/crediteren
|
||
WHEN bedrag_regels_opdracht < 500 AND bedrag_regels_opdracht + (COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0)) > 0
|
||
THEN -ROUND(bedrag_regels_opdracht + (COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0))) -- (deel) cap nog teruggeven/crediteren
|
||
WHEN bedrag_regels_opdracht < 500
|
||
AND bedrag_regels_opdracht + (COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0)) < 0
|
||
THEN -ROUND(bedrag_regels_opdracht +(COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0)),2) -- het gecrediteerde deel van de cap weer terugnemen/debiteren
|
||
ELSE 0
|
||
END
|
||
cap_te_verrekenen_in_run
|
||
FROM (
|
||
SELECT b.fin_verkoopfactuur_maand,
|
||
b.mld_melding_key,
|
||
b.mld_opdr_key,
|
||
b.mld_opdr_nr,
|
||
om.maintenance_cap_oms,
|
||
(SELECT sum(fin_verkoopfactuur_bedrag) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')= 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_c8 = 'CORE')
|
||
bedrag_regels_opdracht,
|
||
(SELECT sum(fin_verkoopfactuur_bedrag) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')= 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NOT NULL AND fin_verkoopfactuur_c8 = 'CORE')
|
||
bedrag_regels_opdracht_verwerkt,
|
||
(SELECT sum(fin_verkoopfactuur_bedrag) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')= 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NULL AND fin_verkoopfactuur_c8 = 'CORE')
|
||
bedrag_regels_opdracht_onverwerkt,
|
||
(SELECT sum(fin_verkoopfactuur_bedrag) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')> 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NOT NULL AND fin_verkoopfactuur_c8 = 'CORE')
|
||
bedrag_regels_opdracht_cap_verwerkt,
|
||
(SELECT sum(fin_verkoopfactuur_bedrag) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')> 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NULL AND fin_verkoopfactuur_c8 = 'CORE')
|
||
bedrag_regels_opdracht_cap_onverwerkt,
|
||
(SELECT count(*) FROM (SELECT fin_verkoopfactuurkop_key FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')= 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NOT NULL GROUP BY fin_verkoopfactuurkop_key))
|
||
aantal_runs_verwerkt,
|
||
(SELECT min(fin_verkoopfactuur_datum) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')= 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NOT NULL)
|
||
datum_eerst_run_verwerkt,
|
||
(SELECT mld_opdr_datumbegin FROM mld_opdr WHERE mld_opdr_key = b.mld_opdr_key)
|
||
opdrachtdatum,
|
||
(SELECT max(fin_verkoopfactuur_key) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_maand = b.fin_verkoopfactuur_maand AND fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')= 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NULL AND fin_verkoopfactuur_c8 = 'CORE')
|
||
fin_verkoopfactuur_key -- aan deze laatste openstaande verkoopregel van dat jaar (fin_verkoopfactuur_maand) zetten we CAP op (als we per verkooprun 1 CAP-regel gaan toevoegen)
|
||
FROM
|
||
(SELECT o.mld_opdr_key,
|
||
o.mld_melding_key,
|
||
o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr mld_opdr_nr,
|
||
o.mld_opdr_datumbegin,
|
||
vf.fin_verkoopfactuur_id,
|
||
vf.fin_verkoopfactuur_c6, -- ordernummer_klant
|
||
vf.fin_verkoopfactuur_bedrag,
|
||
vf.fin_verkoopfactuur_datum,
|
||
vf.fin_verkoopfactuur_maand,
|
||
CASE WHEN INSTR(prs_kostensoort_oms, 'CV CAP')> 0 THEN 'CAP-FEE' ELSE 'OPDRACHT' END soort_regel,
|
||
vf.fin_verkoopfactuurkop_key
|
||
FROM fin_verkoopfactuur vf, mld_opdr o
|
||
WHERE vf.fin_verkoopfactuur_refkey = o.mld_opdr_key
|
||
AND vf.fin_verkoopfactuur_xmlnode = 'opdracht'
|
||
AND vf.fin_verkoopfactuur_c8 = 'CORE'
|
||
AND vf.fin_verkoopfactuur_bedrag <> 0
|
||
ORDER BY o.mld_melding_key, o.mld_opdr_key) b,
|
||
(SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde, flx.getdomeinwaarde(sk.fac_kenmerkdomein_key, FLX.getflex ('OPD', km.mld_kenmerk_key, ko.mld_opdr_key)) maintenance_cap_oms
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk km, mld_srtkenmerk sk
|
||
WHERE ko.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_code = 'MAINTENANCE_CAP'
|
||
) om -- maintenance_cap
|
||
WHERE b.mld_opdr_key = om.mld_opdr_key
|
||
AND om.maintenance_cap_oms = 'Ja'
|
||
GROUP BY b.fin_verkoopfactuur_maand, b.mld_melding_key, b.mld_opdr_key, b.mld_opdr_nr, om.maintenance_cap_oms
|
||
) c
|
||
ORDER BY c.mld_melding_key, mld_opdr_key, c.fin_verkoopfactuur_maand ;
|
||
|
||
-------------------------------------------
|
||
-- INKOOPINTERFACE - exportfunctie - EXACT
|
||
-------------------------------------------
|
||
|
||
-- exact inkoop - automatische schedule om inkoopinterface te runnen voor DEDICATED omgevingen (zie ticket AAIT#79027)
|
||
---- In aaxx_daily_task per klant aan te zetten
|
||
---- Praktisch: inkooprun wordt dan 18:00 klaargezet (via genExportAAFM.bat) en 18:05 gedraaid voor die heyday-omgevingen
|
||
CREATE OR REPLACE PROCEDURE aaxx_export_exact_auto (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
v_inkooprun_auto VARCHAR(10) := '0';
|
||
v_kostenplaatsgrp_key NUMBER ;
|
||
v_exact_prefix VARCHAR(10);
|
||
|
||
CURSOR mc -- multi-client
|
||
IS
|
||
SELECT kpg.prs_kostenplaatsgrp_key,
|
||
x.export_kostenplaatsgrp_key,
|
||
x.fac_export_app_key
|
||
FROM prs_kostenplaatsgrp kpg,
|
||
(SELECT fac_export_app_key,
|
||
fac.safe_to_number (SUBSTR (fac_export_app_code, 7))
|
||
export_kostenplaatsgrp_key
|
||
FROM fac_export_app x
|
||
WHERE INSTR (fac_export_app_code, 'EXACT_') > 0
|
||
AND fac.safe_to_number (SUBSTR (fac_export_app_code, 7)) IS NOT NULL) x
|
||
WHERE kpg.prs_kostenplaatsgrp_key = x.export_kostenplaatsgrp_key
|
||
ORDER BY 1 ;
|
||
|
||
BEGIN
|
||
|
||
-- voor dedicated omgevingen
|
||
IF aaxx_get_user NOT IN ('INLO')
|
||
THEN
|
||
v_exact_prefix := NULL ;
|
||
|
||
SELECT aaxx_get_exact_setting('inkooprun',aaxx_get_user,NULL,NULL)
|
||
INTO v_inkooprun_auto
|
||
FROM dual;
|
||
|
||
-- als aan, dan de exact-export inplannen
|
||
IF v_inkooprun_auto = '1' THEN
|
||
|
||
INSERT INTO imp_schedule (imp_schedule_name) VALUES ('EXACT');
|
||
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
-- voor mutliclient omgevingen
|
||
FOR rec IN mc
|
||
LOOP
|
||
BEGIN
|
||
|
||
IF aaxx_get_user IN ('INLO')
|
||
THEN
|
||
|
||
SELECT aaxx_get_exact_setting('inkooprun',aaxx_get_user,NULL, rec.export_kostenplaatsgrp_key), '_' || TO_CHAR(rec.export_kostenplaatsgrp_key)
|
||
INTO v_inkooprun_auto, v_exact_prefix
|
||
FROM DUAL;
|
||
|
||
IF v_inkooprun_auto = '1' THEN
|
||
|
||
INSERT INTO imp_schedule (imp_schedule_name) VALUES ('EXACT' || v_exact_prefix);
|
||
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
END;
|
||
/
|
||
|
||
-- Inkoop: Alle facturen akkoord - Gebruikersoverzicht inkoopfacturen die wel/niet meegaan de EXACT inkooprun in
|
||
--- dit is ook de bronview voor de export EXACT (de inkoopfacturen die wel/niet meegaan naar Exact)
|
||
CREATE OR REPLACE VIEW aaxx_v_export_exact_check
|
||
(
|
||
prs_kostenplaatsgrp_nr,
|
||
fin_factuur_key,
|
||
check_in_inkooprun,
|
||
fin_factuur_totaal,
|
||
check_factuurdatum, -- facturen mogen niet ouder zijn dan 5 jaar of meer dan <20><>n jaar in de toekomst
|
||
check_dubbelefactuur, -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn met status ingevoerd, afgewezen of incompleet
|
||
check_nogtecontroleren, -- factuur staat op controle en moet nog gecontroleerd worden (vinkje controle nog niet gezet)
|
||
check_onholdgezet, -- filterstatus 1 = bolletje 'On hold - Niet meenemen in inkooprun'
|
||
check_admin_exact, -- voor inlo en aait gelden meerdere administratie met een vereiste match op SUBSTR(prs_kostenplaatsgrp_nr, 1, 3)
|
||
check_geen_kostensoort, -- facturen zonder kostensoort niet meenemen
|
||
check_geen_grootboeknr, -- facturen zonder grootboeknr ( = financiele waarde op de kostensoort = prs_kostensoort_refcode)
|
||
check_geen_leveranciernr, -- nog geen exact-leverancier-nr bekend
|
||
check_klant_project_po_marges, -- tbv projectorders controle op gevulde 'ordernummer klant' en marges voor verkoopfacturatie
|
||
check_filter_nietnaarexact, -- filterstatus 2 = inkoopfactuur gaat niet naar exact (niet in XML-output) maar wordt wel op verwerkt gezet
|
||
check_opdracht_reden_0, -- opdracht waarin expliciet is opgegeven dat er geen kosten aan verbonden zijn
|
||
check_afwijkend_kostensoort, -- op de melding (op onderliggende opdrachten) al facturen geboekt/verwerkt met afwijkende kostensoort
|
||
check_gesloten_boekdatum -- voor deze administratie is de financiele afsluiting met klant gedaan en de verplichting van deze factuur ligt voor die afsluit-datum
|
||
)
|
||
AS
|
||
SELECT CASE
|
||
WHEN f.prs_kostenplaatsgrp_key IS NOT NULL
|
||
THEN
|
||
(SELECT prs_kostenplaatsgrp_nr
|
||
|| ' - '
|
||
|| prs_kostenplaatsgrp_oms
|
||
FROM prs_kostenplaatsgrp
|
||
WHERE prs_kostenplaatsgrp_key =
|
||
f.prs_kostenplaatsgrp_key)
|
||
ELSE
|
||
NULL
|
||
END
|
||
prs_kostenplaatsgrp_nr,
|
||
f.fin_factuur_key,
|
||
CASE
|
||
WHEN f.check_factuurdatum IS NULL
|
||
AND f.check_dubbelefactuur IS NULL
|
||
AND f.check_nogtecontroleren IS NULL
|
||
AND f.check_onholdgezet IS NULL
|
||
AND kp.check_admin_exact IS NULL
|
||
AND f.check_geen_kostensoort IS NULL
|
||
AND f.check_geen_grootboeknr IS NULL
|
||
AND f.check_geen_leveranciernr IS NULL
|
||
AND f.check_klant_project_po_marges IS NULL
|
||
AND f.check_nietnaarexact IS NULL
|
||
AND f.check_opdracht_reden_0 IS NULL
|
||
AND f.check_kostensoort_afwijkend IS NULL
|
||
AND f.check_gesloten_boekdatum IS NULL
|
||
THEN
|
||
'Ja'
|
||
ELSE
|
||
'Nee'
|
||
END
|
||
inkooprun,
|
||
f.fin_factuur_totaal,
|
||
f.check_factuurdatum,
|
||
f.check_dubbelefactuur,
|
||
f.check_nogtecontroleren,
|
||
f.check_onholdgezet,
|
||
kp.check_admin_exact,
|
||
f.check_geen_kostensoort,
|
||
f.check_geen_grootboeknr,
|
||
f.check_geen_leveranciernr,
|
||
f.check_klant_project_po_marges,
|
||
f.check_nietnaarexact,
|
||
f.check_opdracht_reden_0,
|
||
f.check_kostensoort_afwijkend,
|
||
f.check_gesloten_boekdatum
|
||
FROM (SELECT f.fin_factuur_key,
|
||
fs.fin_factuur_statuses_omschr,
|
||
COALESCE (kp_cnt.prs_kostenplaatsgrp_key,
|
||
kp_opd.prs_kostenplaatsgrp_key,
|
||
kp_bes.prs_kostenplaatsgrp_key)
|
||
prs_kostenplaatsgrp_key,
|
||
CASE
|
||
WHEN f.prs_kostensoort_key IS NULL
|
||
THEN
|
||
'geen kostensoort!'
|
||
ELSE
|
||
''
|
||
END
|
||
check_geen_kostensoort,
|
||
CASE
|
||
WHEN k.prs_kostensoort_key IS NOT NULL
|
||
AND k.prs_kostensoort_refcode IS NULL
|
||
THEN
|
||
'geen grootboeknr!'
|
||
ELSE
|
||
''
|
||
END
|
||
check_geen_grootboeknr,
|
||
CASE
|
||
WHEN COALESCE(b_o.prs_leverancier_nr,b_c.prs_leverancier_nr, b_b.prs_leverancier_nr) IS NULL
|
||
THEN
|
||
'geen leverancier-nr'
|
||
ELSE
|
||
''
|
||
END
|
||
check_geen_leveranciernr,
|
||
CASE
|
||
WHEN pr.mld_opdr_key IS NOT NULL
|
||
AND (pr.po_nr = 'onbekend' OR pr.fee_proc = 'onbekend' OR pr.fee_vast = 'onbekend') -- voorwaarden voor export is dat deze alle gevuld moeten zijn
|
||
AND ( aaxx_get_user IN ('THHD', 'MENZIS', 'REMEHA') -- ('ESSENT','DSM', 'GN')
|
||
OR ( aaxx_get_user IN ('INLO')
|
||
AND pr.inlo_subaccount IN ('ALLIANDER', 'COVESTRO', 'IKEA', 'KADASTER', 'VGZ', 'MENZIS')))
|
||
THEN
|
||
'pr-melding niet volledig gevuld!'
|
||
ELSE
|
||
''
|
||
END
|
||
check_klant_project_po_marges,
|
||
COALESCE (
|
||
o.prs_kostenplaats_key,
|
||
COALESCE (
|
||
c.prs_kostenplaats_key,
|
||
(SELECT DISTINCT b.prs_kostenplaats_key
|
||
FROM bes_bestelling b,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi
|
||
WHERE bo.bes_bestelopdr_key =
|
||
boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_key =
|
||
bi.bes_bestelopdr_item_key
|
||
AND bi.bes_bestelling_key =
|
||
b.bes_bestelling_key)))
|
||
prs_kostenplaats_key,
|
||
f.fin_factuur_totaal,
|
||
CASE
|
||
WHEN f.fin_factuur_datum < SYSDATE - (5 * 365)
|
||
OR f.fin_factuur_datum > SYSDATE + 365
|
||
THEN
|
||
'ongeldige factuurdatum: '
|
||
|| TO_CHAR (f.fin_factuur_datum, 'dd-mm-yyyy')
|
||
ELSE
|
||
''
|
||
END
|
||
check_factuurdatum,
|
||
( -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn met status ingevoerd(2) of incompleet(3)
|
||
SELECT DECODE (COUNT (*), 0, '', 'dubbele factuur!')
|
||
FROM fin_factuur f_t,
|
||
cnt_contract c_t,
|
||
bes_bestelopdr b_t,
|
||
mld_opdr o_t
|
||
WHERE f_t.fin_factuur_verwijder IS NULL
|
||
AND f_t.mld_opdr_key = o_t.mld_opdr_key(+)
|
||
AND f_t.cnt_contract_key = c_t.cnt_contract_key(+)
|
||
AND f_t.bes_bestelopdr_key =
|
||
b_t.bes_bestelopdr_key(+)
|
||
AND COALESCE (
|
||
o_t.mld_uitvoerende_keys,
|
||
COALESCE (b_t.prs_bedrijf_key,
|
||
c_t.cnt_prs_bedrijf_key)) =
|
||
COALESCE (
|
||
o.mld_uitvoerende_keys,
|
||
COALESCE (bo.prs_bedrijf_key,
|
||
c.cnt_prs_bedrijf_key))
|
||
AND f.fin_factuur_nr = f_t.fin_factuur_nr
|
||
AND f_t.fin_factuur_statuses_key IN (2, 3)
|
||
AND f.fin_factuur_statuses_key = 6)
|
||
check_dubbelefactuur,
|
||
CASE
|
||
WHEN contr.fin_factuur_controle = 1
|
||
AND fin_factuur_controle_ok IS NULL
|
||
THEN
|
||
'Controle - Nog doen'
|
||
ELSE
|
||
''
|
||
END
|
||
check_nogtecontroleren,
|
||
CASE
|
||
WHEN f.fin_factuur_flag = 1 THEN 'on hold'
|
||
ELSE ''
|
||
END
|
||
check_onholdgezet,
|
||
CASE
|
||
WHEN f.fin_factuur_flag = 2 AND aaxx_get_user IN ('INLO')
|
||
AND COALESCE (kp_cnt.prs_kostenplaatsgrp_key, kp_opd.prs_kostenplaatsgrp_key, kp_bes.prs_kostenplaatsgrp_key) IN (321) -- 1-1-2024 alleen voor INLO-Vivada van toepassing
|
||
THEN
|
||
'niet naar exact - wordt wel verwerkt'
|
||
ELSE ''
|
||
END
|
||
check_nietnaarexact,
|
||
(SELECT DECODE(ko.mld_kenmerkopdr_waarde, NULL, NULL, '0-reden in opdracht')
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_upper = 'REDEN 0 ORDER'
|
||
AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_verwijder IS NULL
|
||
AND ko.mld_kenmerkopdr_waarde IS NOT NULL
|
||
AND ko.mld_kenmerkopdr_verwijder IS NULL
|
||
AND ko.mld_opdr_key = o.mld_opdr_key
|
||
) check_opdracht_reden_0,
|
||
( -- afwijkende kosten in deze factuur t.o.v. de reeds verwerkte facturen op deze melding - voor alle accounts geldt deze regel behalve voor AAIT
|
||
SELECT DECODE (COUNT (*), 0, '', DECODE(aaxx_get_user, 'IT', '', 'afwijkende kostensoort op verwerkte mld/opdr-facturen!'))
|
||
FROM (SELECT m.mld_melding_key, opdr.mld_opdr_key, ff.fin_factuur_key, ff.prs_kostensoort_key, ff.fin_factuur_statuses_key
|
||
FROM mld_melding m,
|
||
mld_opdr opdr,
|
||
fin_factuur ff
|
||
WHERE m.mld_melding_key = opdr.mld_melding_key
|
||
AND opdr.mld_opdr_key = ff.mld_opdr_key
|
||
AND ff.prs_kostensoort_key IS NOT NULL
|
||
AND ff.fin_factuur_statuses_key IN (7)
|
||
) o_f
|
||
WHERE o_f.mld_melding_key = o.mld_melding_key
|
||
AND o_f.mld_opdr_key = o.mld_opdr_key
|
||
AND f.prs_kostensoort_key IS NOT NULL
|
||
AND o_f.prs_kostensoort_key <> f.prs_kostensoort_key
|
||
)
|
||
check_kostensoort_afwijkend,
|
||
CASE WHEN aaxx_get_user NOT IN ('INLO') AND fac.safe_to_date (aaxx_get_exact_setting('datum', aaxx_get_user, NULL, NULL), 'dd-mm-yyyy') IS NOT NULL
|
||
AND COALESCE(kp_cnt.cnt_contract_looptijd_van, kp_opd.mld_opdr_datumbegin, kp_bes.bes_bestelling_datum) < fac.safe_to_date (aaxx_get_exact_setting('datum', aaxx_get_user, NULL, NULL), 'dd-mm-yyyy')
|
||
THEN 'datum verplichting < boekjaar_klant_afgerond (' || TO_CHAR(aaxx_get_exact_setting('datum', aaxx_get_user, NULL, NULL)) || ')'
|
||
WHEN aaxx_get_user IN ('INLO') AND fac.safe_to_date (aaxx_get_exact_setting('datum', aaxx_get_user, NULL, COALESCE (kp_cnt.prs_kostenplaatsgrp_key, kp_opd.prs_kostenplaatsgrp_key,kp_bes.prs_kostenplaatsgrp_key)), 'dd-mm-yyyy') IS NOT NULL
|
||
AND COALESCE(kp_cnt.cnt_contract_looptijd_van, kp_opd.mld_opdr_datumbegin, kp_bes.bes_bestelling_datum) < fac.safe_to_date (aaxx_get_exact_setting('datum', aaxx_get_user, NULL, COALESCE (kp_cnt.prs_kostenplaatsgrp_key, kp_opd.prs_kostenplaatsgrp_key,kp_bes.prs_kostenplaatsgrp_key)), 'dd-mm-yyyy')
|
||
THEN 'datum verplichting < boekjaar_klant_afgerond (' || TO_CHAR(aaxx_get_exact_setting('datum', aaxx_get_user, NULL, COALESCE (kp_cnt.prs_kostenplaatsgrp_key, kp_opd.prs_kostenplaatsgrp_key,kp_bes.prs_kostenplaatsgrp_key))) || ')'
|
||
ELSE ''
|
||
END
|
||
check_gesloten_boekdatum
|
||
FROM fin_factuur f,
|
||
prs_kostensoort k,
|
||
fin_factuur_statuses fs,
|
||
mld_opdr o,
|
||
mld_typeopdr ot,
|
||
cnt_contract c,
|
||
bes_bestelopdr bo,
|
||
prs_bedrijf b_o,
|
||
prs_bedrijf b_c,
|
||
prs_bedrijf b_b,
|
||
aaxx_v_projectorders_bron pr,
|
||
(SELECT fin_factuur_key,
|
||
(SELECT fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerkfactuur fk, fin_kenmerk k
|
||
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_verwijder IS NULL
|
||
AND UPPER (fin_kenmerk_omschrijving) =
|
||
'EXTRA CONTROLE?'
|
||
AND fk.fin_factuur_key = f.fin_factuur_key)
|
||
fin_factuur_controle,
|
||
(SELECT fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerkfactuur fk, fin_kenmerk k
|
||
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_verwijder IS NULL
|
||
AND UPPER (fin_kenmerk_omschrijving) =
|
||
'GECONTROLEERD'
|
||
AND fk.fin_factuur_key = f.fin_factuur_key)
|
||
fin_factuur_controle_ok
|
||
FROM fin_factuur f) contr,
|
||
( SELECT fin_factuur_key,
|
||
c.prs_kostenplaats_key,
|
||
kp.prs_kostenplaats_nr,
|
||
kpg.prs_kostenplaatsgrp_key,
|
||
kpg.prs_kostenplaatsgrp_nr,
|
||
c.cnt_contract_looptijd_van
|
||
FROM fin_factuur f,
|
||
cnt_contract c,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE f.cnt_contract_key = c.cnt_contract_key
|
||
AND c.prs_kostenplaats_key =
|
||
kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaatsgrp_key =
|
||
kpg.prs_kostenplaatsgrp_key(+)
|
||
ORDER BY f.fin_factuur_key DESC) kp_cnt,
|
||
( SELECT fin_factuur_key,
|
||
o.prs_kostenplaats_key,
|
||
kp.prs_kostenplaats_nr,
|
||
kpg.prs_kostenplaatsgrp_key,
|
||
kpg.prs_kostenplaatsgrp_nr,
|
||
o.mld_opdr_datumbegin
|
||
FROM fin_factuur f,
|
||
mld_opdr o,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE f.mld_opdr_key = o.mld_opdr_key
|
||
AND o.prs_kostenplaats_key =
|
||
kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaatsgrp_key =
|
||
kpg.prs_kostenplaatsgrp_key(+)
|
||
ORDER BY f.fin_factuur_key DESC) kp_opd,
|
||
( SELECT DISTINCT f.fin_factuur_key,
|
||
b.prs_kostenplaats_key,
|
||
kp.prs_kostenplaats_nr,
|
||
kpg.prs_kostenplaatsgrp_key,
|
||
kpg.prs_kostenplaatsgrp_nr,
|
||
b.bes_bestelling_datum
|
||
FROM fin_factuur f,
|
||
bes_bestelling b,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE f.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_key =
|
||
bi.bes_bestelopdr_item_key
|
||
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
||
AND b.prs_kostenplaats_key =
|
||
kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaatsgrp_key =
|
||
kpg.prs_kostenplaatsgrp_key(+)
|
||
ORDER BY f.fin_factuur_key DESC) kp_bes
|
||
WHERE f.fin_factuur_statuses_key =
|
||
fs.fin_factuur_statuses_key
|
||
AND f.fin_factuur_key = contr.fin_factuur_key
|
||
AND f.prs_kostensoort_key = k.prs_kostensoort_key(+)
|
||
AND f.mld_opdr_key = o.mld_opdr_key(+)
|
||
AND f.mld_opdr_key = pr.mld_opdr_key(+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
|
||
AND f.cnt_contract_key = c.cnt_contract_key(+)
|
||
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
|
||
AND bo.prs_bedrijf_key = b_b.prs_bedrijf_key(+)
|
||
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
|
||
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
|
||
AND f.fin_factuur_key = kp_cnt.fin_factuur_key(+)
|
||
AND f.fin_factuur_key = kp_opd.fin_factuur_key(+)
|
||
AND f.fin_factuur_key = kp_bes.fin_factuur_key(+)
|
||
AND f.fin_factuur_verwijder IS NULL
|
||
AND f.fin_factuur_statuses_key = 6 -- op akkoord
|
||
) f,
|
||
(SELECT kp.prs_kostenplaats_key,
|
||
CASE
|
||
WHEN aaxx_get_user IN ('INLO', 'IT')
|
||
AND SUBSTR (prs_kostenplaatsgrp_nr, 1, 3) IN
|
||
(SELECT administratie
|
||
FROM aaxx_v_administratie)
|
||
THEN
|
||
''
|
||
WHEN aaxx_get_user NOT IN ('INLO', 'IT')
|
||
THEN
|
||
''
|
||
ELSE
|
||
'kostenplaatsgrp_nr niet in interface bekend '
|
||
|| SUBSTR (kpg.prs_kostenplaatsgrp_nr, 1, 3)
|
||
END
|
||
check_admin_exact
|
||
FROM prs_kostenplaats kp, prs_kostenplaatsgrp kpg
|
||
WHERE kp.prs_kostenplaatsgrp_key =
|
||
kpg.prs_kostenplaatsgrp_key(+)) kp,
|
||
(
|
||
SELECT fin_factuur_statuses_key,
|
||
COUNT (*),
|
||
MIN (fin_factuur_key) fin_factuur_key_min
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_statuses_key = 6
|
||
GROUP BY fin_factuur_statuses_key
|
||
) fm
|
||
WHERE f.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
||
AND f.fin_factuur_key >= fm.fin_factuur_key_min;
|
||
|
||
CREATE OR REPLACE VIEW aaxx_v_aanwezigfactuur
|
||
(
|
||
FIN_FACTUUR_KEY,
|
||
FIN_FACTUUR_NR,
|
||
FIN_FACTUUR_TOTAAL,
|
||
FIN_FACTUUR_TOTAAL_BTW,
|
||
MLD_OPDR_KEY,
|
||
CNT_CONTRACT_KEY,
|
||
BES_BESTELOPDR_KEY,
|
||
PRS_PERSLID_KEY_USER,
|
||
FIN_FACTUUR_DATUM,
|
||
FIN_FACTUUR_BOEKMAAND,
|
||
FIN_FACTUUR_DEBITEUR_NR,
|
||
PRS_KOSTENSOORT_KEY,
|
||
FIN_FACTUUR_OPMERKING,
|
||
FIN_FACTUUR_STATUSES_KEY,
|
||
FIN_FACTUUR_VERWIJDER
|
||
)
|
||
AS
|
||
SELECT FIN_FACTUUR_KEY,
|
||
FIN_FACTUUR_NR,
|
||
FIN_FACTUUR_TOTAAL,
|
||
FIN_FACTUUR_TOTAAL_BTW,
|
||
MLD_OPDR_KEY,
|
||
CNT_CONTRACT_KEY,
|
||
BES_BESTELOPDR_KEY,
|
||
PRS_PERSLID_KEY_USER,
|
||
FIN_FACTUUR_DATUM,
|
||
FIN_FACTUUR_BOEKMAAND,
|
||
FIN_FACTUUR_DEBITEUR_NR,
|
||
PRS_KOSTENSOORT_KEY,
|
||
FIN_FACTUUR_OPMERKING,
|
||
FIN_FACTUUR_STATUSES_KEY,
|
||
FIN_FACTUUR_VERWIJDER
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_verwijder IS NULL AND fin_factuur_statuses_key > 1;
|
||
|
||
-- fin_kenmerk_key 2 is de keuze of dit de laatste factuur van de opdracht is.
|
||
CREATE OR REPLACE VIEW aaxx_v_factuur_gegevens
|
||
(
|
||
fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuurregel_totaal,
|
||
fin_factuurregel_btw,
|
||
fin_btwtabelwaarde_code,
|
||
fin_btwtabelwaarde_key,
|
||
fin_factuurregel_nr,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
fin_factuur_boekmaand,
|
||
opdr_datum,
|
||
laatste_factuur,
|
||
project_nummer,
|
||
project_nummer_kp,
|
||
project_naam,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
prs_kostensoort_key,
|
||
prs_kostenplaats_key,
|
||
prs_kostenplaatsgrp_key,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
fin_factuur_statuses_key,
|
||
lev_kpn,
|
||
fin_factuur_controle,
|
||
fin_factuur_controle_ok,
|
||
fin_factuur_flag
|
||
)
|
||
AS
|
||
SELECT f.fin_factuur_key,
|
||
DECODE (
|
||
c.cnt_contract_key,
|
||
NULL, DECODE (
|
||
bo.bes_bestelopdr_key,
|
||
NULL, (SELECT sd.ins_srtdiscipline_prefix
|
||
|| m.mld_melding_key
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd
|
||
WHERE m.mld_melding_key =
|
||
o.mld_melding_key
|
||
AND m.mld_stdmelding_key =
|
||
std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key =
|
||
d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key =
|
||
sd.ins_srtdiscipline_key),
|
||
bo.bes_bestelopdr_id),
|
||
'C'
|
||
|| TO_CHAR (cnt_contract_nummer_intern)
|
||
|| DECODE (cnt_contract_versie,
|
||
NULL, NULL,
|
||
'.' || cnt_contract_versie))
|
||
opdracht_id,
|
||
DECODE (TO_CHAR (f.fin_factuur_datum, 'yyyy'),
|
||
'2010', TO_DATE ('20110102', 'YYYYMMDD'),
|
||
'2011', TO_DATE ('20120102', 'YYYYMMDD'),
|
||
f.fin_factuur_datum),
|
||
f.fin_factuur_nr,
|
||
COALESCE (b_c.prs_bedrijf_key,
|
||
COALESCE (b_o.prs_bedrijf_key, b_b.prs_bedrijf_key))
|
||
prs_bedrijf_key,
|
||
fr.fin_factuurregel_totaal,
|
||
ROUND (
|
||
fr.fin_factuurregel_totaal
|
||
* DECODE (btw.fin_btwtabelwaarde_verlegd,
|
||
1, 0,
|
||
btw.fin_btwtabelwaarde_perc / 100),
|
||
2)
|
||
fin_factuurregel_btw,
|
||
btw.fin_btwtabelwaarde_code,
|
||
btw.fin_btwtabelwaarde_key,
|
||
fr.fin_factuurregel_nr,
|
||
f.fin_factuur_debiteur_nr,
|
||
f.fin_factuur_opmerking,
|
||
f.fin_factuur_boekmaand,
|
||
COALESCE (o.mld_opdr_datumbegin,
|
||
c.cnt_contract_looptijd_van,
|
||
bo.bes_bestelopdr_datum)
|
||
opdr_datum,
|
||
COALESCE (
|
||
(SELECT fac.safe_to_number (fac_usrdata_code)
|
||
FROM fin_kenmerkfactuur fk, fac_usrdata ud
|
||
WHERE fk.fin_factuur_key = f.fin_factuur_key
|
||
AND fk.fin_kenmerk_key = 2
|
||
AND fac.safe_to_number (fin_kenmerkfactuur_waarde) =
|
||
fac_usrdata_key),
|
||
1),
|
||
pr.mld_project_nr -- Voor Projectorders en Projectorder (externe uren)
|
||
projectnummer,
|
||
CASE
|
||
WHEN aaxx_get_user = 'IT'
|
||
AND ( ot.mld_typeopdr_omschrijving = 'Workorder'
|
||
OR c.cnt_contract_key IS NOT NULL)
|
||
THEN -- Zie ticket AAIT#69225
|
||
COALESCE (
|
||
(SELECT DECODE (kpi.prs_kostenplaats_module,
|
||
'PRJ', kpi.prs_kostenplaats_nr,
|
||
NULL)
|
||
FROM prs_kostenplaats kpi
|
||
WHERE kpi.prs_kostenplaats_key =
|
||
o.prs_kostenplaats_key),
|
||
COALESCE (
|
||
(SELECT DECODE (kpi.prs_kostenplaats_module,
|
||
'PRJ', kpi.prs_kostenplaats_nr,
|
||
NULL)
|
||
FROM prs_kostenplaats kpi
|
||
WHERE kpi.prs_kostenplaats_key =
|
||
c.prs_kostenplaats_key),
|
||
(SELECT DISTINCT
|
||
DECODE (kpi.prs_kostenplaats_module,
|
||
'PRJ', kpi.prs_kostenplaats_nr,
|
||
NULL)
|
||
FROM bes_bestelling b,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
prs_kostenplaats kpi
|
||
WHERE bo.bes_bestelopdr_key =
|
||
boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_key =
|
||
bi.bes_bestelopdr_item_key
|
||
AND bi.bes_bestelling_key =
|
||
b.bes_bestelling_key
|
||
AND b.prs_kostenplaats_key =
|
||
kpi.prs_kostenplaats_key)))
|
||
ELSE
|
||
NULL
|
||
END
|
||
project_nummer_kp,
|
||
pr.mld_project_omschrijving -- Voor Projectorders en Projectorder (externe uren)
|
||
projectnaam,
|
||
prs_kostensoort_oms,
|
||
DECODE (
|
||
aaxx_get_user,
|
||
'INLO', DECODE (
|
||
COALESCE (
|
||
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
|
||
COALESCE (
|
||
TO_CHAR (
|
||
DECODE (
|
||
aaxx_get_cnt_gebrokenboekjaar (
|
||
c.cnt_contract_key),
|
||
'nee', c.cnt_contract_looptijd_tot,
|
||
'ja', TO_DATE (
|
||
fin_factuur_boekmaand,
|
||
'yyyy-mm'),
|
||
NULL),
|
||
'yyyy'),
|
||
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
|
||
'2025', k.prs_kostensoort_refcode,
|
||
'2026', '1350400',
|
||
DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper, 1, 3),
|
||
'CF ', '1350842',
|
||
'CFE', '1350842',
|
||
'CV ', '1350843',
|
||
'CVE', '1350844',
|
||
'NC ', DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper,
|
||
1,
|
||
7),
|
||
'NC PROJ', '1350845',
|
||
'1350844'),
|
||
'Onbekend')),
|
||
'IT', DECODE (
|
||
COALESCE (
|
||
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
|
||
COALESCE (
|
||
TO_CHAR (
|
||
DECODE (
|
||
aaxx_get_cnt_gebrokenboekjaar (
|
||
c.cnt_contract_key),
|
||
'nee', c.cnt_contract_looptijd_tot,
|
||
'ja', TO_DATE (
|
||
fin_factuur_boekmaand,
|
||
'yyyy-mm'),
|
||
NULL),
|
||
'yyyy'),
|
||
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
|
||
'2025', k.prs_kostensoort_refcode,
|
||
'2026', '1350400',
|
||
DECODE (
|
||
SUBSTR(COALESCE(kp_cnt.prs_kostenplaatsgrp_nr, kp_opd.prs_kostenplaatsgrp_nr, kp_bes.prs_kostenplaatsgrp_nr),1,3),
|
||
'400', '1350846',
|
||
'401', '1350846',
|
||
'500', '1350847',
|
||
k.prs_kostensoort_refcode)),
|
||
--NIEUW DSM ivm gebruik L-code #56150
|
||
'DSM', DECODE (
|
||
COALESCE (
|
||
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
|
||
COALESCE (
|
||
TO_CHAR (
|
||
DECODE (
|
||
aaxx_get_cnt_gebrokenboekjaar (
|
||
c.cnt_contract_key),
|
||
'nee', c.cnt_contract_looptijd_tot,
|
||
'ja', TO_DATE (
|
||
fin_factuur_boekmaand,
|
||
'yyyy-mm'),
|
||
NULL),
|
||
'yyyy'),
|
||
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
|
||
'2025', k.prs_kostensoort_refcode,
|
||
'2026', '1350400',
|
||
DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper, 1, 2),
|
||
'L ', DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper,
|
||
1,
|
||
5),
|
||
'L CF ', '1350842',
|
||
'L CFE', '1350842',
|
||
'L CV ', '1350843',
|
||
'L CVE', '1350844',
|
||
'L NC ', DECODE (
|
||
SUBSTR (
|
||
k.prs_kostensoort_upper,
|
||
1,
|
||
9),
|
||
'L NC PROJ', '1350845',
|
||
'1350844'),
|
||
'Onbekend'),
|
||
DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper, 1, 3),
|
||
'CF ', '1350842',
|
||
'CFE', '1350842',
|
||
'CV ', '1350843',
|
||
'CVE', '1350844',
|
||
'NC ', DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper,
|
||
1,
|
||
7),
|
||
'NC PROJ', '1350845',
|
||
'1350844'),
|
||
'Onbekend'))),
|
||
-- standaard keuze voor alle andere accounts.
|
||
DECODE (
|
||
COALESCE (
|
||
TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
|
||
COALESCE (
|
||
TO_CHAR (
|
||
DECODE (
|
||
aaxx_get_cnt_gebrokenboekjaar (
|
||
c.cnt_contract_key),
|
||
'nee', c.cnt_contract_looptijd_tot,
|
||
'ja', TO_DATE (fin_factuur_boekmaand,
|
||
'yyyy-mm'),
|
||
NULL),
|
||
'yyyy'),
|
||
TO_CHAR (bo.bes_bestelopdr_datum, 'yyyy'))),
|
||
'2025', k.prs_kostensoort_refcode,
|
||
'2026', '1350400', -- VAST balansrekening vooruit-betaald volgend boekjaar
|
||
DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper, 1, 3),
|
||
'CF ', '1350842',
|
||
'CFE', '1350842',
|
||
'CV ', '1350843',
|
||
'CVE', '1350844',
|
||
'NC ', DECODE (SUBSTR (k.prs_kostensoort_upper, 1, 7),
|
||
'NC PROJ', '1350845',
|
||
'1350844'),
|
||
'Onbekend'))),
|
||
k.prs_kostensoort_key,
|
||
COALESCE(kp_cnt.prs_kostenplaats_key, kp_opd.prs_kostenplaats_key, kp_bes.prs_kostenplaats_key)
|
||
prs_kostenplaats_key,
|
||
COALESCE(kp_cnt.prs_kostenplaatsgrp_key, kp_opd.prs_kostenplaatsgrp_key, kp_bes.prs_kostenplaatsgrp_key)
|
||
prs_kostenplaatsgrp_key,
|
||
o.mld_opdr_key,
|
||
c.cnt_contract_key,
|
||
bo.bes_bestelopdr_key,
|
||
( -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn met status ingevoerd(2) of incompleet(3)
|
||
SELECT DECODE (COUNT (*), 0, f.fin_factuur_statuses_key, 2)
|
||
FROM fin_factuur f_t,
|
||
cnt_contract c_t,
|
||
bes_bestelopdr b_t,
|
||
mld_opdr o_t
|
||
WHERE f_t.fin_factuur_verwijder IS NULL
|
||
AND f_t.mld_opdr_key = o_t.mld_opdr_key(+)
|
||
AND f_t.cnt_contract_key = c_t.cnt_contract_key(+)
|
||
AND f_t.bes_bestelopdr_key = b_t.bes_bestelopdr_key(+)
|
||
AND COALESCE (
|
||
o_t.mld_uitvoerende_keys,
|
||
COALESCE (b_t.prs_bedrijf_key,
|
||
c_t.cnt_prs_bedrijf_key)) =
|
||
COALESCE (
|
||
o.mld_uitvoerende_keys,
|
||
COALESCE (bo.prs_bedrijf_key,
|
||
c.cnt_prs_bedrijf_key))
|
||
AND f.fin_factuur_nr = f_t.fin_factuur_nr
|
||
AND f_t.fin_factuur_statuses_key IN (2, 3)
|
||
AND f.fin_factuur_statuses_key = 6)
|
||
fin_factuur_statuses_key,
|
||
lk.prs_kostenplaats_nr
|
||
lev_kpn,
|
||
(SELECT fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerkfactuur fk, fin_kenmerk k
|
||
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_verwijder IS NULL
|
||
AND UPPER (fin_kenmerk_omschrijving) = 'EXTRA CONTROLE?'
|
||
AND fk.fin_factuur_key = f.fin_factuur_key)
|
||
fin_factuur_controle,
|
||
(SELECT fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerkfactuur fk, fin_kenmerk k
|
||
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_verwijder IS NULL
|
||
AND UPPER (fin_kenmerk_omschrijving) = 'GECONTROLEERD'
|
||
AND fk.fin_factuur_key = f.fin_factuur_key)
|
||
fin_factuur_controle_ok,
|
||
COALESCE (f.fin_factuur_flag, 0)
|
||
FROM fin_factuur f,
|
||
fin_factuurregel fr,
|
||
fin_btwtabelwaarde btw,
|
||
mld_opdr o,
|
||
mld_typeopdr ot,
|
||
cnt_contract c,
|
||
bes_bestelopdr bo,
|
||
prs_bedrijf b_o,
|
||
prs_bedrijf b_c,
|
||
prs_bedrijf b_b,
|
||
prs_kostensoort k,
|
||
prs_kostensoortgrp kg,
|
||
prs_kostenplaats lk,
|
||
aaxx_v_projectorders_bron pr,
|
||
( SELECT fin_factuur_key,
|
||
c.prs_kostenplaats_key,
|
||
kpg.prs_kostenplaatsgrp_key,
|
||
kpg.prs_kostenplaatsgrp_nr
|
||
FROM fin_factuur f,
|
||
cnt_contract c,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE f.cnt_contract_key = c.cnt_contract_key
|
||
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaatsgrp_key =
|
||
kpg.prs_kostenplaatsgrp_key(+)
|
||
ORDER BY f.fin_factuur_key DESC) kp_cnt,
|
||
( SELECT fin_factuur_key,
|
||
o.prs_kostenplaats_key,
|
||
kpg.prs_kostenplaatsgrp_key,
|
||
kpg.prs_kostenplaatsgrp_nr
|
||
FROM fin_factuur f,
|
||
mld_opdr o,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE f.mld_opdr_key = o.mld_opdr_key
|
||
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaatsgrp_key =
|
||
kpg.prs_kostenplaatsgrp_key(+)
|
||
ORDER BY f.fin_factuur_key DESC) kp_opd,
|
||
( SELECT DISTINCT f.fin_factuur_key,
|
||
b.prs_kostenplaats_key,
|
||
kpg.prs_kostenplaatsgrp_key,
|
||
kpg.prs_kostenplaatsgrp_nr
|
||
FROM fin_factuur f,
|
||
bes_bestelling b,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE f.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_key =
|
||
bi.bes_bestelopdr_item_key
|
||
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
||
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaatsgrp_key =
|
||
kpg.prs_kostenplaatsgrp_key(+)
|
||
ORDER BY f.fin_factuur_key DESC) kp_bes
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND f.fin_factuur_key = kp_cnt.fin_factuur_key(+)
|
||
AND f.fin_factuur_key = kp_opd.fin_factuur_key(+)
|
||
AND f.fin_factuur_key = kp_bes.fin_factuur_key(+)
|
||
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
|
||
AND f.mld_opdr_key = o.mld_opdr_key(+)
|
||
AND f.mld_opdr_key = pr.mld_opdr_key(+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
|
||
AND f.cnt_contract_key = c.cnt_contract_key(+)
|
||
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
|
||
AND bo.prs_bedrijf_key = b_b.prs_bedrijf_key(+)
|
||
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
|
||
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
|
||
AND f.prs_kostensoort_key = k.prs_kostensoort_key(+)
|
||
AND k.prs_kostenplaats_key = lk.prs_kostenplaats_key(+)
|
||
AND k.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+)
|
||
AND f.fin_factuur_verwijder IS NULL;
|
||
|
||
-- De exact export kan voor AAIT meerdere administraties bevatten. In dat geval wordt de
|
||
-- regel opgeslagen met een prefix van het administratienummer met een ##
|
||
-- Hier splitsen we deze weer naar losse velden in de view. De kolom adm_exact is de bestandsnaam
|
||
-- zoals deze in de importdefinitie bepaald is.
|
||
CREATE OR REPLACE VIEW aaxx_v_export_exact_xml (
|
||
result,
|
||
result_order,
|
||
adm_exact
|
||
)
|
||
AS
|
||
SELECT SUBSTR (fac_rapport_regel, INSTR (fac_rapport_regel, '##') + 2),
|
||
fac_rapport_volgnr,
|
||
SUBSTR (fac_rapport_regel, 1, INSTR (fac_rapport_regel, '##') - 1)
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'EXACT' AND INSTR (fac_rapport_regel, '##') <> 0
|
||
UNION ALL
|
||
SELECT fac_rapport_regel, fac_rapport_volgnr, NULL
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'EXACT' AND INSTR (fac_rapport_regel, '##') = 0;
|
||
|
||
/* nieuwe view om oude aaxx_v_export_exact_xml view op termijn te vervangen. Door gebruik te maken
|
||
van de nieuwe view hoeft er per klant geen specifieke export in de cust.sql. De prefix in de
|
||
export tabel staat dan op AAXX */
|
||
CREATE OR REPLACE VIEW aaxx_v_export_exact (
|
||
result,
|
||
result_order,
|
||
adm_exact
|
||
)
|
||
AS
|
||
SELECT result, result_order, adm_exact
|
||
FROM aaxx_v_export_exact_xml;
|
||
|
||
CREATE OR REPLACE VIEW aaxx_v_bron_export_exact_xml
|
||
(
|
||
fin_factuur_key,
|
||
oms25,
|
||
opdracht_id,
|
||
factuur_nr,
|
||
datum,
|
||
crdnr,
|
||
projectnr,
|
||
projectnr_kp,
|
||
projectnaam,
|
||
bedrag_txt,
|
||
bedrag,
|
||
bedrag_incl,
|
||
betaalref,
|
||
itemcode,
|
||
reknr,
|
||
kstplcode,
|
||
kstdrcode,
|
||
btw_code,
|
||
lev_kpn,
|
||
prs_kostenplaatsgrp_key, -- sub_accounts tbv INLO mutliclient
|
||
administratie
|
||
)
|
||
AS
|
||
SELECT fin_factuur_key,
|
||
fin_factuur_nr
|
||
|| ' - '
|
||
|| REPLACE (SUBSTR (fin_factuur_opmerking, 1, 30), ',', '')
|
||
oms25,
|
||
opdracht_id,
|
||
fin_factuur_nr,
|
||
TO_CHAR (fin_factuur_datum, 'yyyy-mm-dd') datum,
|
||
(SELECT prs_leverancier_nr
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
|
||
crdnr,
|
||
project_nummer,
|
||
project_nummer_kp,
|
||
project_naam,
|
||
REPLACE (TO_CHAR (bedrag), ',', '.') bedrag_txt,
|
||
bedrag,
|
||
bedrag_incl,
|
||
fin_factuur_nr || '/' || fin_factuur_debiteur_nr betaalref,
|
||
prs_kostensoort_oms itemcode,
|
||
prs_kostensoort_refcode reknr,
|
||
DECODE (
|
||
aaxx_get_user,
|
||
'IT', DECODE (prs_kostenplaatsgrp_key, 262, '001CC001', -- ticket AAIT#77757
|
||
261, '001CC001',
|
||
281, '001CC001',
|
||
282, '001CC001',
|
||
(SELECT DECODE (INSTR(prs_kostenplaats_nr, '/'), 0, prs_kostenplaats_nr, SUBSTR(prs_kostenplaats_nr, 1, INSTR(prs_kostenplaats_nr, '/')-1))
|
||
FROM prs_kostenplaats kp
|
||
WHERE kp.prs_kostenplaats_key = fg.prs_kostenplaats_key)),
|
||
'GUL',
|
||
(select exact_code from aaxx_v_exact_code_gebouw_fac ecgf where ecgf.fin_factuur_key = fg.fin_factuur_key),
|
||
'INLO',
|
||
(select klantcode from aaxx_v_klantcode_gebouw_fac kcgf where kcgf.fin_factuur_key = fg.fin_factuur_key),
|
||
'ARCADIS',
|
||
DECODE (cnt_contract_key, NULL,
|
||
(select exact_code from aaxx_v_exact_code_gebouw_fac ecgf where ecgf.fin_factuur_key = fg.fin_factuur_key),
|
||
'999999'),
|
||
'DSM',
|
||
(select exact_code from aaxx_v_exact_code_district_fac ecgf where ecgf.fin_factuur_key = fg.fin_factuur_key),
|
||
'EXPO',
|
||
DECODE (
|
||
(SELECT MAX(l.alg_district_key)
|
||
FROM (SELECT l.alg_locatie_key
|
||
FROM alg_locatie l, mld_melding m, mld_opdr o
|
||
WHERE l.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND m.mld_melding_key = o.mld_melding_key
|
||
AND o.mld_opdr_key = fg.mld_opdr_key
|
||
UNION
|
||
SELECT cnt_alg_plaats_key
|
||
FROM cnt_contract_plaats cp
|
||
WHERE cp.cnt_contract_key = fg.cnt_contract_key
|
||
AND cnt_alg_plaats_code = 'L'
|
||
UNION
|
||
SELECT g.alg_locatie_key
|
||
FROM cnt_contract_plaats cp, alg_gebouw g
|
||
WHERE cp.cnt_contract_key = fg.cnt_contract_key
|
||
AND cnt_alg_plaats_code = 'G'
|
||
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key) lg,
|
||
alg_locatie l
|
||
WHERE l.alg_locatie_key = lg.alg_locatie_key),
|
||
61, '03701000', -- 03701000 Nationale Nederlanden
|
||
62, '03700000', -- 4001 Handel Amsterdam
|
||
'Onbekend'),
|
||
'SABIC',
|
||
DECODE (
|
||
(SELECT MAX(alg_locatie_key)
|
||
FROM (SELECT l.alg_locatie_key
|
||
FROM alg_locatie l, mld_melding m, mld_opdr o
|
||
WHERE l.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND m.mld_melding_key = o.mld_melding_key
|
||
AND o.mld_opdr_key = fg.mld_opdr_key
|
||
UNION
|
||
SELECT cnt_alg_plaats_key
|
||
FROM cnt_contract_plaats cp
|
||
WHERE cp.cnt_contract_key = fg.cnt_contract_key
|
||
AND cnt_alg_plaats_code = 'L'
|
||
UNION
|
||
SELECT g.alg_locatie_key
|
||
FROM cnt_contract_plaats cp, alg_gebouw g
|
||
WHERE cp.cnt_contract_key = fg.cnt_contract_key
|
||
AND cnt_alg_plaats_code = 'G'
|
||
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
|
||
UNION -- Ticket 57282 - Aanvulling interface met Bestelopdr
|
||
SELECT ma.alg_locatie_key
|
||
FROM bes_bestelopdr bo, mld_adres ma
|
||
WHERE bo.bes_bestelopdr_key = fg.bes_bestelopdr_key
|
||
AND bo.mld_adres_key_lev = ma.mld_adres_key )),
|
||
101, -- Bergen op Zoom BOZ
|
||
'00601000',
|
||
102, -- Raamsdonksveer RDV
|
||
'00601000',
|
||
121, -- Genk AASA#66258
|
||
'00602000',
|
||
'00600000'), -- AASA#51917
|
||
'999999'
|
||
) kstplcode,
|
||
DECODE (
|
||
aaxx_get_user,
|
||
'IT', (SELECT DECODE (kp.prs_kostenplaats_nr, '00100001', (SELECT exact_code FROM aaxx_v_exact_code_gebouw_fac ecgf WHERE ecgf.fin_factuur_key = fg.fin_factuur_key),
|
||
DECODE (INSTR(prs_kostenplaats_nr, '/'), 0, '99999999',
|
||
SUBSTR(prs_kostenplaats_nr, INSTR(prs_kostenplaats_nr, '/')+1)))
|
||
FROM prs_kostenplaats kp
|
||
WHERE kp.prs_kostenplaats_key = fg.prs_kostenplaats_key),
|
||
'KD999999') kstdrcode,
|
||
fin_btwtabelwaarde_code btw_code,
|
||
lev_kpn,
|
||
prs_kostenplaatsgrp_key,
|
||
administratie
|
||
FROM ( SELECT g.fin_factuur_key,
|
||
opdracht_id,
|
||
project_nummer,
|
||
project_nummer_kp,
|
||
project_naam,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
SUM (fin_factuurregel_totaal) bedrag,
|
||
SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incl,
|
||
fin_btwtabelwaarde_code,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
g.prs_kostenplaats_key,
|
||
lev_kpn,
|
||
k.prs_kostenplaatsgrp_key,
|
||
administratie
|
||
FROM aaxx_v_factuur_gegevens g, aaxx_exp_factuur e, prs_kostenplaats k
|
||
WHERE fin_factuur_statuses_key = 6
|
||
AND g.fin_factuur_key = e.fin_factuur_key
|
||
AND g.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
GROUP BY g.fin_factuur_key,
|
||
opdracht_id,
|
||
project_nummer,
|
||
project_nummer_kp,
|
||
project_naam,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
fin_btwtabelwaarde_code,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
g.prs_kostenplaats_key,
|
||
lev_kpn,
|
||
k.prs_kostenplaatsgrp_key,
|
||
administratie) fg;
|
||
|
||
-- View om te bepalen welke administatie we moeten gebruiken. AAIT en INLO hebben diverse administraties die eem eigen output-xml moeten krijgen.
|
||
-- De andere accounts vooralsnog <20><>n
|
||
CREATE OR REPLACE VIEW aaxx_v_administratie
|
||
AS
|
||
SELECT '001' administratie
|
||
FROM DUAL
|
||
WHERE aaxx_get_user = 'IT'
|
||
UNION ALL
|
||
SELECT '012'
|
||
FROM DUAL
|
||
WHERE aaxx_get_user = 'IT'
|
||
UNION ALL
|
||
SELECT '013'
|
||
FROM DUAL
|
||
WHERE aaxx_get_user = 'IT'
|
||
UNION ALL
|
||
SELECT '036'
|
||
FROM DUAL
|
||
WHERE aaxx_get_user = 'INLO'
|
||
UNION ALL
|
||
SELECT '038'
|
||
FROM DUAL
|
||
WHERE aaxx_get_user = 'INLO'
|
||
UNION ALL
|
||
SELECT '100'
|
||
FROM DUAL
|
||
WHERE aaxx_get_user = 'IT'
|
||
UNION ALL
|
||
SELECT '300'
|
||
FROM DUAL
|
||
WHERE aaxx_get_user = 'IT'
|
||
UNION ALL
|
||
SELECT '400'
|
||
FROM DUAL
|
||
WHERE (aaxx_get_user = 'IT' or aaxx_get_user = 'INLO')
|
||
UNION ALL
|
||
SELECT '401'
|
||
FROM DUAL
|
||
WHERE aaxx_get_user = 'IT'
|
||
UNION ALL
|
||
SELECT '500'
|
||
FROM DUAL
|
||
WHERE aaxx_get_user = 'IT'
|
||
UNION ALL
|
||
SELECT NULL
|
||
FROM DUAL
|
||
WHERE aaxx_get_user NOT IN ('IT', 'INLO');
|
||
|
||
-- Procedure om alle facturen te exporteren naar exact.
|
||
CREATE OR REPLACE PROCEDURE aaxx_select_exact_xml (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_subaccount IN NUMBER
|
||
)
|
||
AS
|
||
CURSOR c (c_administratie VARCHAR2)
|
||
IS
|
||
SELECT crdnr, factuur_nr, MAX(datum) datum
|
||
FROM aaxx_v_bron_export_exact_xml
|
||
WHERE COALESCE(administratie, 'LEEG') = COALESCE(c_administratie, 'LEEG')
|
||
AND COALESCE(p_subaccount, COALESCE(prs_kostenplaatsgrp_key, 0)) = COALESCE(prs_kostenplaatsgrp_key, 0)
|
||
GROUP BY crdnr, factuur_nr;
|
||
|
||
CURSOR c_sub (c_administratie VARCHAR2, c_crdnr VARCHAR2, c_factuur_nr VARCHAR2)
|
||
IS
|
||
SELECT *
|
||
FROM aaxx_v_bron_export_exact_xml
|
||
WHERE COALESCE(crdnr, 'CrdNr') = COALESCE(c_crdnr, 'CrdNr')
|
||
AND COALESCE(p_subaccount, COALESCE(prs_kostenplaatsgrp_key, 0)) = COALESCE(prs_kostenplaatsgrp_key, 0)
|
||
AND factuur_nr = c_factuur_nr
|
||
AND COALESCE(administratie, 'LEEG') = COALESCE(c_administratie, 'LEEG');
|
||
|
||
CURSOR c_adm
|
||
IS
|
||
SELECT * FROM aaxx_v_administratie;
|
||
|
||
v_order_count NUMBER;
|
||
v_count_fin NUMBER;
|
||
v_amount_sum NUMBER(10,2);
|
||
v_amount_sum_incl NUMBER(10,2);
|
||
v_count NUMBER;
|
||
v_sub_count NUMBER;
|
||
v_bestand VARCHAR2(12);
|
||
v_boekstuknummer NUMBER;
|
||
v_crdnr PRS_BEDRIJF.PRS_LEVERANCIER_NR%TYPE;
|
||
v_factuur_nr FIN_FACTUUR.FIN_FACTUUR_NR%TYPE;
|
||
v_prefix VARCHAR2(10);
|
||
|
||
BEGIN
|
||
|
||
v_order_count := 0;
|
||
v_amount_sum := 0;
|
||
v_amount_sum_incl := 0;
|
||
v_bestand := 'EXACT';
|
||
v_crdnr := 'Q';
|
||
v_factuur_nr := 'Q';
|
||
|
||
-- Eerst opruiming
|
||
DELETE FROM imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = v_bestand;
|
||
|
||
-- Verwijder het kenmerk boekstuknummer van de facturen die niet op verwerkt staan
|
||
-- ## AAIT#36589
|
||
-- Voor INLO ivm mogelijkheid tot runnen inkooprun voor meerdere klanten tegelijkertijd wordt de boekstuknummering NIET opgeschoond + wordt de aaxx_exp_factuur-tabel nog NIET verwijderd (gebeurt alleen bij EXACT_VERWERK)
|
||
IF aaxx_get_user NOT IN ('INLO')
|
||
THEN
|
||
|
||
DELETE fin_kenmerkfactuur kf
|
||
WHERE fin_kenmerk_key = 3
|
||
AND fin_factuur_key IN (SELECT fin_factuur_key
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_statuses_key <> 7);
|
||
|
||
-- Bewaar de factuur keys in een tijdelijke tabel zodat bij het verwerken (nieuwe export)
|
||
-- deze keys gebruikt kunnen worden.
|
||
DELETE aaxx_exp_factuur;
|
||
|
||
END IF;
|
||
|
||
-- Hier bepalen we wat er allemaal meegaat de inkooprun in:
|
||
--- Bron voor uitsluiten facturen is de aaxx_v_export_exact_check
|
||
INSERT INTO aaxx_exp_factuur (fin_factuur_key, administratie)
|
||
( SELECT DISTINCT fg.fin_factuur_key,
|
||
DECODE (aaxx_get_user,
|
||
'INLO', SUBSTR (kpg.prs_kostenplaatsgrp_nr, 1, 3),
|
||
'IT', DECODE (fg.lev_kpn,
|
||
'00100008', '001', SUBSTR (kpg.prs_kostenplaatsgrp_nr, 1, 3)), -- Overrule voor facturen met leverende kp 00100008, altijd op adm 001 (zie ticket AAIT#69183)
|
||
NULL) administratie
|
||
FROM aaxx_v_factuur_gegevens fg, aaxx_v_export_exact_check c, prs_kostenplaats kp, prs_kostenplaatsgrp kpg
|
||
WHERE fg.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
||
AND fg.fin_factuur_key = c.fin_factuur_key AND c.check_in_inkooprun = 'Ja'
|
||
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
|
||
AND COALESCE(p_subaccount, COALESCE(kp.prs_kostenplaatsgrp_key, 0)) = COALESCE(kp.prs_kostenplaatsgrp_key, 0)
|
||
);
|
||
|
||
-- Bepaal het boekstuknummer (key 3) met het hoogste nummer van dit jaar ## AAIT#36589
|
||
-- Voor INLO hanteren we boekstuknummering per administratie. Deze gaan we dus in de LOOP bepalen. AAIT#70566
|
||
IF aaxx_get_user NOT IN ('INLO')
|
||
THEN
|
||
|
||
SELECT MAX(fin_kenmerkfactuur_waarde)
|
||
INTO v_boekstuknummer
|
||
FROM fin_kenmerkfactuur
|
||
WHERE fin_kenmerk_key = 3
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde,1,2) = TO_CHAR(SYSDATE, 'YY');
|
||
|
||
IF v_boekstuknummer IS NULL
|
||
THEN
|
||
v_boekstuknummer := FAC.safe_to_number(TO_CHAR(SYSDATE, 'YY') || '000000');
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
|
||
FOR rec_adm IN c_adm
|
||
LOOP
|
||
BEGIN
|
||
v_order_count := 0;
|
||
v_amount_sum := 0;
|
||
v_amount_sum_incl := 0;
|
||
|
||
IF rec_adm.administratie IS NULL
|
||
THEN
|
||
v_prefix := NULL;
|
||
ELSE
|
||
IF rec_adm.administratie IS NOT NULL AND p_subaccount IS NULL
|
||
THEN
|
||
v_prefix := rec_adm.administratie || '_' || '##';
|
||
ELSE
|
||
v_prefix := rec_adm.administratie || '_' || TO_CHAR(p_subaccount) || '_' || '##';
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Voor INLO de boekstuknummering per administratie bepalen
|
||
-- De Kreek administratie 400, IKEA 038 en de overige klanten 036
|
||
|
||
IF aaxx_get_user IN ('INLO')
|
||
THEN
|
||
|
||
SELECT MAX (km.fin_kenmerkfactuur_waarde)
|
||
INTO v_boekstuknummer
|
||
FROM aaxx_v_factuur_gegevens v,
|
||
fin_kenmerkfactuur km,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE v.fin_factuur_key = km.fin_factuur_key
|
||
AND km.fin_kenmerk_key = 3
|
||
AND v.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key
|
||
AND SUBSTR(km.fin_kenmerkfactuur_waarde,1,2) = TO_CHAR(SYSDATE, 'YY')
|
||
AND kpg.prs_kostenplaatsgrp_nr = rec_adm.administratie ;
|
||
|
||
IF v_boekstuknummer IS NULL
|
||
THEN
|
||
IF rec_adm.administratie = '400' THEN
|
||
v_boekstuknummer := FAC.safe_to_number(TO_CHAR(SYSDATE, 'YY') || '200000');
|
||
ELSE IF rec_adm.administratie = '038' THEN
|
||
v_boekstuknummer := FAC.safe_to_number(TO_CHAR(SYSDATE, 'YY') || '300000');
|
||
ELSE
|
||
v_boekstuknummer := FAC.safe_to_number(TO_CHAR(SYSDATE, 'YY') || '000000');
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
|
||
-- Alleen als resultaat dan gaan we XML-genereren, anders niet (om lege xml's te vermijden bij de output)
|
||
v_count_fin := 0;
|
||
|
||
SELECT count(*)
|
||
INTO v_count_fin
|
||
FROM aaxx_exp_factuur f,
|
||
(select v.fin_factuur_key, v.prs_kostenplaats_key from aaxx_v_factuur_gegevens v group by v.fin_factuur_key, v.prs_kostenplaats_key) fg,
|
||
prs_kostenplaats kp, prs_kostenplaatsgrp kpg
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND COALESCE(f.administratie, 'LEEG') = COALESCE(rec_adm.administratie, 'LEEG')
|
||
AND fg.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
|
||
AND COALESCE(p_subaccount, COALESCE(kp.prs_kostenplaatsgrp_key, 0)) = COALESCE(kp.prs_kostenplaatsgrp_key, 0);
|
||
|
||
IF v_count_fin > 0
|
||
THEN
|
||
-- header
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<?xml version="1.0" encoding="windows-1252"?>');
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<eExact>');
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<GLEntries>');
|
||
|
||
FOR rec IN c(rec_adm.administratie)
|
||
LOOP
|
||
BEGIN
|
||
-- Als we een nieuwe leverancier/factuurnummer tegenkomen gaan we het boekstuknummer ophogen.
|
||
IF rec.crdnr <> v_crdnr OR rec.factuur_nr <> v_factuur_nr
|
||
THEN
|
||
v_boekstuknummer := v_boekstuknummer + 1;
|
||
v_crdnr := rec.crdnr;
|
||
v_factuur_nr := rec.factuur_nr;
|
||
END IF;
|
||
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<GLEntry status="E" entry="' || xml.char_to_html(v_boekstuknummer) || '">');
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Description', rec.factuur_nr);
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Date', rec.datum);
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Journal type="I" code="42"/>');
|
||
v_sub_count := 1;
|
||
FOR rec1 IN c_sub (rec_adm.administratie, v_crdnr, v_factuur_nr)
|
||
LOOP
|
||
BEGIN
|
||
-- Eerst maar even een kenmerk voor het boestuknummer aanmaken
|
||
aaxx_set_kenmerk('FIN', 3, rec1.fin_factuur_key, v_boekstuknummer, 0);
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<FinEntryLine number="' || v_sub_count || '" subtype="T" type="N">');
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Date', rec1.datum);
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<GLAccount code="' || xml.char_to_html(rec1.reknr) || '"/>');
|
||
-- Meldingnummer alleen vermelden voor opdrachten met type 'Projectorder'
|
||
IF (rec1.projectnr IS NOT NULL)
|
||
THEN
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Description', rec1.oms25);
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Project code="' || rec1.projectnr || '" type="I" status="A">');
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Description', rec1.projectnaam);
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '</Project>');
|
||
ELSE IF (rec1.projectnr_kp IS NOT NULL)
|
||
THEN
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Description', rec1.oms25);
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Project code="' || rec1.projectnr_kp || '" type="I" status="A">');
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Description', rec1.projectnaam);
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '</Project>');
|
||
ELSE
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Description', rec1.oms25);
|
||
END IF;
|
||
END IF;
|
||
IF ( aaxx_get_user = 'IT' AND COALESCE(rec1.lev_kpn, 'GEEN') = '00100008') -- Zie ticket AAIT#69183 Alle bestellingen AAIT in catalogus BIS Bestelmodule op 1 algemene kostenplaats
|
||
THEN
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Costcenter code="' || xml.char_to_html(rec1.lev_kpn) || '"/>');
|
||
ELSE
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Costcenter code="' || xml.char_to_html(rec1.kstplcode) || '"/>');
|
||
END IF;
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Costunit code="' || xml.char_to_html(rec1.kstdrcode) || '"/>');
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Creditor number="' || xml.char_to_html(rec1.crdnr) || '"/>');
|
||
-- AAIT#23838: kostensoort niet opnemen voor inkoopfacturen IT
|
||
IF ( NOT(aaxx_get_user = 'IT' AND COALESCE(rec1.lev_kpn, 'GEEN') <> '2000700') )
|
||
THEN
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Item code="' || xml.char_to_html(rec1.itemcode) || '"/>');
|
||
END IF;
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Amount>');
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Debit', rec1.bedrag_txt);
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<VAT code="' || xml.char_to_html(rec1.btw_code) || '"/>');
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '</Amount>');
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<Payment>');
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'Reference', rec1.betaalref);
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'InvoiceNumber', rec1.fin_factuur_key); -- of moet dit v_boekstuknummer worden????
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '</Payment>');
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<FinReferences>');
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'YourRef', rec1.betaalref);
|
||
aaxx_add_xml_element_p (v_bestand, v_prefix, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '</FinReferences>');
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<FreeFields>');
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<FreeTexts>');
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '<FreeText number="3">' || rec1.opdracht_id || '</FreeText>');
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '</FreeTexts>');
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '</FreeFields>');
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '</FinEntryLine>');
|
||
v_sub_count := v_sub_count + 1;
|
||
v_amount_sum := v_amount_sum + rec1.bedrag;
|
||
v_amount_sum_incl := v_amount_sum_incl + rec1.bedrag_incl;
|
||
END;
|
||
END LOOP;
|
||
IF v_sub_count = 1
|
||
THEN
|
||
fac.writelog (p_applname, 'E', 'Fout tijdens Exact export. Factuurnummer: ' || v_factuur_nr || ' Crdnr: ' || v_crdnr,'');
|
||
END IF;
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '</GLEntry>');
|
||
v_order_count := v_order_count + 1;
|
||
END;
|
||
END LOOP;
|
||
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '</GLEntries>');
|
||
aaxx_add_xml_row_p (v_bestand, v_prefix, '</eExact>');
|
||
|
||
fac.writelog (p_applname, 'S', 'Exact export uitgevoerd (' || rec_adm.administratie || '). Aantal regels: ' || v_order_count || ' Totaal bedrag: ' || v_amount_sum || ' Totaal bedrag (incl): ' || v_amount_sum_incl, '');
|
||
|
||
END IF;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
END;
|
||
/
|
||
|
||
/* nieuwe procedure om oude aaxx_select_exact_xml procedure op termijn te vervangen. Door gebruik te maken
|
||
van de nieuwe procedure hoeft er per klant geen specifieke export in de cust.sql. De prefix in de
|
||
export tabel staat dan op AAXX */
|
||
CREATE OR REPLACE PROCEDURE aaxx_select_exact (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
aaxx_select_exact_xml (p_applname, p_applrun, NULL);
|
||
END;
|
||
/
|
||
|
||
-- Procedure om alle facturen te exporteren naar exact.
|
||
CREATE OR REPLACE PROCEDURE aaxx_export_exact (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
-- functionaliteit verplaatst naar aaxx_select_exact_xml procedure om er zeker van te zijn dat
|
||
-- de aaxx_exp_factuur tabel eerst gevuld wordt alvorens de XML gegenereerd wordt. AAVL#27120 en AAEN#26362
|
||
|
||
-- AAFM#40866
|
||
-- Verwerk actie direct starten na de EXPORT_EXACT
|
||
|
||
INSERT INTO imp_schedule (imp_schedule_name) VALUES ('VERWERK_EXACT');
|
||
|
||
END;
|
||
/
|
||
|
||
--------------------------------------------------------------------------
|
||
-- INKOOPINTERFACE - exportfunctie - VERWERK_EXACT
|
||
--
|
||
-- VERKOOPINTERFACE - in deze verwerk_exact zit ook vullen fin_verkoopfactuur
|
||
--------------------------------------------------------------------------
|
||
|
||
CREATE OR REPLACE VIEW aaxx_v_export_verwerk_exact (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT REPLACE(REPLACE(f.fin_factuur_key
|
||
|| ';'
|
||
|| opdracht_id
|
||
|| ';'
|
||
|| fin_factuur_datum
|
||
|| ';'
|
||
|| fin_factuur_nr
|
||
|| ';'
|
||
|| prs_bedrijf_key
|
||
|| ';'
|
||
|| fin_factuurregel_totaal
|
||
|| ';'
|
||
|| fin_factuurregel_btw
|
||
|| ';'
|
||
|| fin_factuurregel_nr
|
||
|| ';'
|
||
|| fin_factuur_debiteur_nr
|
||
|| ';'
|
||
|| project_nummer
|
||
|| ';'
|
||
|| prs_kostensoort_refcode
|
||
|| ';'
|
||
|| mld_opdr_key
|
||
|| ';'
|
||
|| cnt_contract_key
|
||
,CHR (13), ''), CHR (10), '<ret>'), 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;
|
||
|
||
-- START VERKOOPINTERFACE
|
||
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten en om waar nodig verkoopfacturen te genereren.
|
||
-- Gebruik verkoopfactuur:
|
||
-- fin_verkoopfactuur_id datum + referentie
|
||
-- fin_verkoopfactuur_xmlnode opdracht / contract / bestelopdr / opdr_uren
|
||
-- fin_verkoopfactuur_refkey key naar het record
|
||
-- fin_verkoopfactuur_aanmaak sysdate
|
||
-- prs_kostenplaats_nr kostenplaatsnr
|
||
-- prs_debiteur_naam debiteurnummer
|
||
-- prs_kostensoort_oms kostensoort (exact_artikelcode)
|
||
-- prs_kostensoort_opmerking kostensoort_opmerking wordt niet gebruikt voor verkoopfacturen
|
||
-- prs_kostensoort_refcode grootboekrekening
|
||
-- prs_kostensoortgrp_oms referentie, omschrijving van de factuur (kolom 4 vd hoofdregel) -- LET OP! Dit gaat met finance2.0. de PO-structuur worden!!!!
|
||
-- fin_verkoopfactuur_omschr omschrijving subregel
|
||
-- fin_verkoopfactuur_bedrag
|
||
-- fin_btwtabelwaarde_code
|
||
-- fin_verkoopfactuur_maand jaar in verband met boekingen op balansrekening als op vorige jaren
|
||
-- fin_verkoopfactuur_c1 Exact code - Per heyday-klantomgeving te bepalen op 1 van de volgende 3 niveau's: kenmerk van het gebouw, district of klant-keuzelijst op gebouw)
|
||
-- fin_verkoopfactuur_c2 Groepering van de kopregel van de factuur.
|
||
-- fin_verkoopfactuur_c3 Volgorde en groepering van de subregels van de factuur.
|
||
-- fin_verkoopfactuur_c4 Cust-specifieke variabele/processen: bij RABO gevuld voor EXACT_VASTVAR (vk-interface voor interne opdrachttype 'Vast/Variabel') + Bij INLO met HuurGreenportVenlo en met ReserveringKreek
|
||
-- fin_verkoopfactuur_c5 heyday-referentie (mogelijkheid voor aanvulling op kopregel, positie 3)
|
||
-- fin_verkoopfactuur_c6 PO-nr op verkoopfactuur: Voor Projecten uit projectmelding. Voor CORE uitHEYDAY import-PO-tabel
|
||
-- Dit nr is tevens hoofdgroepering van verkoopfactuur
|
||
-- fin_verkoopfactuur_c7 Voor de Exact-regelomschrijving (uit de HEYDAY import-PO-tabel - REGEL/LINE-ITEM)
|
||
-- fin_verkoopfactuur_c8 Soort Verkoopfactuur voor splitsing interface in PROJECT en CORE en RES
|
||
-- Ps. Output PROJECT is XML, de overige verkoopfacturen CSV
|
||
-- fin_verkoopfactuur_n1 locatie_key
|
||
-- fin_verkoopfactuur_n2 projectmarge vast
|
||
-- fin_verkoopfactuur_n3 projectmarge procentueel
|
||
-- fin_verkoopfactuur_n4 fin_factuur_key
|
||
-- fin_verkoopfactuur_n5 kpg.prs_kostenplaatsgrp_key -- Voor multi-clientomgeving INLO (o.a. tbv splitsen vk-interface)
|
||
-- fin_verkoopfactuur_d1 datumveld, wordt gevuld bij 'herstelactie verkoopfacturen'
|
||
|
||
|
||
|
||
-- 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_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,fin_verkoopfactuur_c5, fin_verkoopfactuur_c6
|
||
|
||
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 DISTINCT 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
|
||
UNION
|
||
SELECT c.fin_factuur_key -- toevoegen alle inkoopfacturen die op akkoord staan, maar met filterstatus 'niet naar exact, maar wel verwerken' - ticket AAIT#77215
|
||
FROM aaxx_v_export_exact_check c
|
||
WHERE check_filter_nietnaarexact IS NOT NULL ;
|
||
|
||
CURSOR c_opdr
|
||
IS
|
||
SELECT DISTINCT fg.mld_opdr_key, mld_statusopdr_key, m.mld_melding_status, m.mld_melding_key
|
||
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
|
||
UNION
|
||
SELECT DISTINCT fg.mld_opdr_key, mld_statusopdr_key, m.mld_melding_status, m.mld_melding_key
|
||
FROM (SELECT c.fin_factuur_key FROM aaxx_v_export_exact_check c WHERE check_filter_nietnaarexact IS NOT NULL) f
|
||
, aaxx_v_factuur_gegevens fg
|
||
, mld_opdr o
|
||
, mld_melding m
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.mld_opdr_key = o.mld_opdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND laatste_factuur = 1
|
||
AND fg.fin_factuur_statuses_key = 6 ;
|
||
|
||
CURSOR c_bes
|
||
IS
|
||
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
|
||
UNION
|
||
SELECT bo.*
|
||
FROM (SELECT c.fin_factuur_key FROM aaxx_v_export_exact_check c WHERE check_filter_nietnaarexact IS NOT NULL) f
|
||
, aaxx_v_factuur_gegevens fg
|
||
, bes_bestelopdr bo
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
AND laatste_factuur = 1
|
||
AND fg.fin_factuur_statuses_key = 6 ;
|
||
|
||
-- pas de bedragen in het factuurschema aan als de laatste factuur ontvangen is.
|
||
CURSOR c_cnt
|
||
IS
|
||
SELECT DISTINCT fg.cnt_contract_key, fs.cnt_factuurschema_key, TO_CHAR(c.cnt_contract_kosten) cnt_contract_kosten
|
||
FROM aaxx_exp_factuur f,
|
||
aaxx_v_factuur_gegevens fg,
|
||
cnt_contract c,
|
||
cnt_factuurschema fs
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.cnt_contract_key = c.cnt_contract_key
|
||
AND c.cnt_contract_key = fs.cnt_contract_key
|
||
AND fg.fin_factuur_boekmaand = fs.cnt_factuurschema_boekmaand
|
||
AND laatste_factuur = 1
|
||
AND fg.fin_factuur_statuses_key = 6
|
||
UNION
|
||
SELECT DISTINCT fg.cnt_contract_key, fs.cnt_factuurschema_key, TO_CHAR(c.cnt_contract_kosten) cnt_contract_kosten
|
||
FROM (SELECT c.fin_factuur_key FROM aaxx_v_export_exact_check c WHERE check_filter_nietnaarexact IS NOT NULL) f,
|
||
aaxx_v_factuur_gegevens fg,
|
||
cnt_contract c,
|
||
cnt_factuurschema fs
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.cnt_contract_key = c.cnt_contract_key
|
||
AND c.cnt_contract_key = fs.cnt_contract_key
|
||
AND fg.fin_factuur_boekmaand = fs.cnt_factuurschema_boekmaand
|
||
AND laatste_factuur = 1
|
||
AND fg.fin_factuur_statuses_key = 6 ;
|
||
|
||
CURSOR c_sync_kostensoort
|
||
IS
|
||
SELECT COALESCE (kstd.prs_kostensoort_key, kvg.prs_kostensoort_key)
|
||
std_kostensoort_key,
|
||
f.prs_kostensoort_key fac_kostensoort_key,
|
||
(SELECT kf.fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerk k, fin_kenmerkfactuur kf
|
||
WHERE k.fin_kenmerk_code = 'FIN_KOSTENSOORT_AFW_OK' AND k.fin_kenmerk_key = kf.fin_kenmerk_key AND kf.fin_factuur_key = f.fin_factuur_key)
|
||
fin_kostensoort_afw_ok,
|
||
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(+)
|
||
UNION
|
||
SELECT COALESCE (kstd.prs_kostensoort_key, kvg.prs_kostensoort_key)
|
||
std_kostensoort_key,
|
||
f.prs_kostensoort_key fac_kostensoort_key,
|
||
(SELECT kf.fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerk k, fin_kenmerkfactuur kf
|
||
WHERE k.fin_kenmerk_code = 'FIN_KOSTENSOORT_AFW_OK' AND k.fin_kenmerk_key = kf.fin_kenmerk_key AND kf.fin_factuur_key = f.fin_factuur_key)
|
||
fin_kostensoort_afw_ok,
|
||
f.fin_factuur_key
|
||
FROM fin_factuur f,
|
||
(SELECT c.fin_factuur_key FROM aaxx_v_export_exact_check c WHERE check_filter_nietnaarexact IS NOT NULL) ef,
|
||
mld_opdr o,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline md,
|
||
prs_kostensoort kstd,
|
||
prs_kostensoort kvg
|
||
WHERE f.fin_factuur_key = ef.fin_factuur_key
|
||
AND f.mld_opdr_key = o.mld_opdr_key
|
||
AND m.mld_melding_key = o.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND std.prs_kostensoort_key = kstd.prs_kostensoort_key(+)
|
||
AND md.prs_kostensoort_key = kvg.prs_kostensoort_key(+) ;
|
||
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanvrager NUMBER;
|
||
v_bestelling_key NUMBER;
|
||
v_logdate DATE;
|
||
v_contract_kosten_init VARCHAR2 (200);
|
||
v_contract_kosten_nieuw_k VARCHAR2 (200);
|
||
v_contract_kosten_nieuw_n NUMBER;
|
||
v_projectfacturen_fee VARCHAR (200);
|
||
|
||
BEGIN
|
||
v_errormsg := 'Geen akties';
|
||
|
||
-- Facilitor user
|
||
v_aanvrager := 4;
|
||
|
||
-- 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.
|
||
---- Uit P2P-overleg (AAIT#78367)
|
||
------- Deze systematiek is uitgesloten voor AAIT
|
||
------- In bepaalde gevallen wordt kostensoort op factuur toch aangepast en mag/moet die met die afwijkende kostensoort door - men zet dan expliciet vink-veld FIN_KOSTENSOORT_AFW_OK aan
|
||
IF aaxx_get_user NOT IN ('IT')
|
||
THEN
|
||
v_errormsg := 'Aanpassen kostensoort';
|
||
FOR reck IN c_sync_kostensoort
|
||
LOOP
|
||
BEGIN
|
||
IF reck.fac_kostensoort_key <> reck.std_kostensoort_key AND reck.fin_kostensoort_afw_ok IS NULL
|
||
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 - START VULLEN FIN_VERKOOPFACTUUR
|
||
|
||
v_logdate := SYSDATE;
|
||
-- voeg opdrachten en PR-opdrachten toe aan de fin_verkoopfacturen (vh. 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_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, fin_verkoopfactuur_n5
|
||
)
|
||
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',
|
||
'BASTION ZUID B.V.', '99999999',
|
||
'IKEA', DECODE (kpg.prs_kostenplaatsgrp_oms, 'IKEA - BEHEER' , 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 kostenplaats
|
||
k.prs_kostenplaats_nr
|
||
),
|
||
'NMM', 'MGB',
|
||
'SABIC', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'THHD', '99999999',
|
||
k.prs_kostenplaats_nr)
|
||
, 1, 30)
|
||
prs_kostenplaats_nr, -- gevuld op regelniveau kolom AM (39)
|
||
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),
|
||
'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)),
|
||
'IKEA', DECODE (kpg.prs_kostenplaatsgrp_oms, 'IKEA - BEHEER' , aaxx_get_top_kpn_nr (k.prs_kostenplaats_key), aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)),
|
||
'MENZIS', 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)),
|
||
'THHD', aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code),
|
||
'MENZIS', aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code),
|
||
k.prs_kostenplaats_nr)
|
||
, 1, 60)
|
||
prs_debiteur_naam, -- kolom AT (46) en in debiteurnummer kolom C (3)
|
||
b.prs_bedrijf_key,
|
||
CASE WHEN ot.mld_typeopdr_omschrijving = 'Projectorder' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE' THEN '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 UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE' THEN '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 - kolom AD (30)
|
||
ks.prs_kostensoort_opmerking,
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NONE COR' 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)),
|
||
'IKEA', aaxx_get_po_nr('IKEA', NULL, NULL, g.alg_gebouw_code,
|
||
NULL,
|
||
NULL,
|
||
ks.prs_kostensoort_upper, -- kostensoort_code
|
||
TRUNC(opdr_datum))
|
||
|| ' - ' || std_kp.prs_kostenplaats_externnr,
|
||
'ALLIANDER', COALESCE (po.ordernummer_klant, 'Servicekosten Core Variabel'), -- Afwijkende structuur: Indien ordernummer_klant gevuld op opdracht dan aparte verkoopfactuur
|
||
'BASTION ZUID B.V.', DECODE(ksg.prs_kostensoortgrp_altcode, 'CVE', 'Eigenaarslast',
|
||
'CV', 'Servicekosten',
|
||
''),
|
||
-- = 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)),
|
||
'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') )),
|
||
'THHD', DECODE(ksg.prs_kostensoortgrp_altcode, 'CVE', SUBSTR(l.alg_locatie_code,1,4) || ' PO zie bijlage',
|
||
'CV', SUBSTR(l.alg_locatie_code,1,4) || ' ' || aaxx_get_po_nr(NULL, NULL, NULL, l.alg_locatie_code, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
NULL),
|
||
'MENZIS', aaxx_get_po_nr(NULL, aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code), NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
ksg.prs_kostensoortgrp_oms)
|
||
, 1, 60)
|
||
END prs_kostensoortgrp_oms, -- kopregel - kolom D (4)
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE'
|
||
THEN pr.mld_opdr_nr || ' ' || DECODE (ot.mld_typeopdr_omschrijving, 'Projectorder (externe uren)', 'Projecturen ' || COALESCE(pr.mld_project_opdrachtomschr, pr.mld_project_omschrijving), COALESCE(pr.mld_project_opdrachtomschr, pr.mld_project_omschrijving))
|
||
|| ' ' || (SELECT TO_CHAR(fin_btwtabelwaarde_perc) || '%' FROM fin_btwtabelwaarde WHERE fin_btwtabelwaarde_key = fg.fin_btwtabelwaarde_key) -- BTW-percentage toevoegen aan regel..
|
||
-- 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 || ' ' || fg.fin_btwtabelwaarde_code,
|
||
'ESSENT', ks.prs_kostensoort_altcode,
|
||
'THHD', COALESCE(ks.prs_kostensoort_altcode, ks.prs_kostensoort_opmerking) || ' ' || fg.fin_btwtabelwaarde_perc,
|
||
'MENZIS', COALESCE(ks.prs_kostensoort_altcode, ks.prs_kostensoort_opmerking) || ' ' || fg.fin_btwtabelwaarde_perc,
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', 'Variabele dienstverlening' || ' ' || fg.fin_btwtabelwaarde_perc,
|
||
'IKEA', d.ins_discipline_omschrijving || ' ' || fg.fin_btwtabelwaarde_perc,
|
||
-- = de INLO-standaard voor omschrijving sub-regel IS ALTIJD GEWEEST
|
||
-- sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' ' || d.ins_discipline_omschrijving
|
||
-- MAAR MOET WORDEN: De afwijkend dienst of standaard-sen-heyday) aangevuld met btw-percentage
|
||
COALESCE(aaxx_get_sen_omschrijving(exact_k.klantcode, ks.prs_kostensoort_upper),ks.prs_kostensoort_opmerking) || ' ' || fg.fin_btwtabelwaarde_perc
|
||
),
|
||
-- 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 - kolom AF (32)
|
||
CASE WHEN ot.mld_typeopdr_omschrijving = 'Projectorder (externe uren)' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE'
|
||
THEN fg.bedrag * COALESCE(fac.safe_to_number(pr.fee_externe_uren), 1)
|
||
ELSE DECODE (aaxx_get_user, 'NMM', 1.1 * fg.bedrag,
|
||
fg.bedrag)
|
||
END bedrag,
|
||
fg.fin_btwtabelwaarde_code,
|
||
to_char(opdr_datum, 'YYYY')
|
||
fin_verkoopfactuur_maand,
|
||
DECODE (aaxx_get_user,
|
||
-- Op district-niveau
|
||
'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'),
|
||
'THHD', 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 - kolom AU (47)
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE' 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)),
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'IKEA', std_kp.prs_kostenplaats_omschrijving,
|
||
-- = de INLO-standaard voor extra groepering kopregel factuur
|
||
NULL
|
||
),
|
||
'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)),
|
||
'THHD', ksg.prs_kostensoortgrp_altcode,
|
||
'')
|
||
, 1, 200)
|
||
END groepering, -- C2 -- kopregel
|
||
CASE WHEN ot.mld_typeopdr_omschrijving = 'Projectorder' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE' THEN 'PR'
|
||
WHEN ot.mld_typeopdr_omschrijving = 'Projectorder (externe uren)' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE' THEN 'PR-U'
|
||
ELSE NULL
|
||
END subregelvolgorde, -- C3
|
||
l.alg_locatie_key, -- N1
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE'
|
||
THEN COALESCE(fac.safe_to_number(pr.fee_vast), 0)
|
||
ELSE NULL
|
||
END fin_verkoopfactuur_n2, -- tbv projectmarge vast - ivm project FEE
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE'
|
||
THEN '' -- Ter info: Was ooit bedacht om hier voor PR-verkoopfacturen aanvulling 'deelfactuurnr ..' in op te nemen maar Exact kan in kolom C geen numerieke waarden aan...
|
||
-- Voor CORE-verkoopfacturen - de cust-aanvulling op kopregel kolom C (3)
|
||
ELSE DECODE (aaxx_get_user,
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', ksg.prs_kostensoortgrp_altcode || ' ' || l.alg_locatie_code || ' ',
|
||
'IKEA', 'IKEA ' || l.alg_locatie_omschrijving || DECODE (kpg.prs_kostenplaatsgrp_oms, 'IKEA - BEHEER', ' Beheer BV', NULL) || ' ',
|
||
-- = de INLO-standaard voor C5 waar de subaccounts uiteindelijk op kunnen terugvallen
|
||
NULL
|
||
),
|
||
'ESSENT', ksg.prs_kostensoortgrp_altcode || ' ' || SUBSTR(l.alg_locatie_code,1,4) || ' ',
|
||
NULL
|
||
)
|
||
-- de standaard aanvulling die altijd achter de cust-aanvulling komt
|
||
|| 't/m ' || to_char(SYSDATE, 'MON')
|
||
---- verbeteridee Peggy (= in geval VJ altijd t/m DEC)
|
||
---- || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), 't/m DEC', 't/m ' || to_char(SYSDATE, 'MON'))
|
||
END fin_verkoopfactuur_c5, -- heyday-referentie - standaard aanvulling op kopregel positie kolom C (3)
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE'
|
||
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)
|
||
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)),
|
||
'IKEA', aaxx_get_po_nr('IKEA', NULL, NULL, g.alg_gebouw_code,
|
||
NULL,
|
||
NULL,
|
||
ks.prs_kostensoort_upper, -- kostensoort_code
|
||
TRUNC(opdr_datum)),
|
||
'MENZIS', aaxx_get_po_nr('MENZIS', NULL, NULL, g.alg_gebouw_code,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
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)),
|
||
'THHD', aaxx_get_po_nr(NULL, NULL, NULL, l.alg_locatie_code, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
'MENZIS', aaxx_get_po_nr(NULL, aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code), NULL, NULL, 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 UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE'
|
||
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)
|
||
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 UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE'
|
||
THEN COALESCE(fac.safe_to_number(pr.fee_proc), 0)
|
||
ELSE NULL
|
||
END fin_verkoopfactuur_n3, -- projectmarge procentueel - ivm project FEE
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE'
|
||
THEN 'PROJECT'
|
||
ELSE 'CORE'
|
||
END fin_verkoopfactuur_c8, -- soort verkoopfactuur
|
||
fg.fin_factuur_key
|
||
fin_verkoopfactuur_n4,
|
||
DECODE (aaxx_get_user, 'INLO', kpg.prs_kostenplaatsgrp_key, NULL) -- Multi-clientomgeving met subaccounts op kostenplaatsgroepen. T.b.v. het separaat kunnen runnen van de verkoopinterfaces
|
||
fin_verkoopfactuur_n5
|
||
FROM mld_opdr o,
|
||
(SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde, flx.getdomeinwaarde(sk.fac_kenmerkdomein_key, FLX.getflex ('OPD', km.mld_kenmerk_key, ko.mld_opdr_key)) maintenance_cap_oms
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk km, mld_srtkenmerk sk
|
||
WHERE ko.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_code = 'MAINTENANCE_CAP') om, -- maintenance_cap
|
||
(SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde, FLX.getflex ('OPD', km.mld_kenmerk_key, ko.mld_opdr_key) ordernummer_klant
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk km, mld_srtkenmerk sk
|
||
WHERE ko.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_upper = 'ORDERNUMMER KLANT') po, -- ordernummer klant op opdracht
|
||
mld_typeopdr ot,
|
||
prs_bedrijf b,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaatsgrp kpg,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
prs_kostenplaats std_kp,
|
||
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_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, 1) fin_btwtabelwaarde_code,
|
||
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key, 2) fin_btwtabelwaarde_perc,
|
||
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,
|
||
prs_kostensoort_refcode) fg
|
||
WHERE fg.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND o.mld_opdr_key = om.mld_opdr_key (+)
|
||
AND o.mld_opdr_key = po.mld_opdr_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 std.prs_kostenplaats_key = std_kp.prs_kostenplaats_key (+)
|
||
AND ( ( aaxx_get_user = 'GN'
|
||
AND (
|
||
sd.ins_srtdiscipline_prefix = 'SA'
|
||
OR
|
||
(SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE' )
|
||
)
|
||
)
|
||
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 UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE' ))
|
||
)
|
||
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 ( aaxx_get_user = 'EXPO'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %')
|
||
)
|
||
OR ( aaxx_get_user = 'INLO'
|
||
AND ( (
|
||
-- de subaccounts die de CV-verkoopinterface aan hebben staan, zijn:
|
||
---- BASTION ZUID(541), MENZIS(481), IKEA-BEHEER(461), KADASTER(441), LANDMARK HUURDERS(301), IKEA(281), COVESTRO(261), LANDMARK(241), TRINSEO(121), ALLIANDER(81), VGZ(41), HENKEL(23), VEH(21)
|
||
---- COVESTRO DERDEN (341) - WEL/NIET PEGGY?
|
||
kpg.prs_kostenplaatsgrp_key IN (541, 481, 461, 441, 301, 281, 261, 241, 121, 81, 41, 23, 21, 341) -- hier de keys van de bijbehorende kostenplaatsgroep vullen
|
||
AND (ks.prs_kostensoort_upper LIKE 'CV %' OR ks.prs_kostensoort_upper LIKE 'CVE %')
|
||
)
|
||
-- PR-INTERFACE VANAF 1-6-2025 WEER AAN
|
||
OR
|
||
(
|
||
-- de subaccounts die de PR-verkoopinterface aan hebben staan, zijn:
|
||
---- ALLIANDER(81), (COVESTRO(261), IKEA(281), IKEA-BEHEER(461), IKEA INTERN(181), KADASTER(441), MENZIS(481), VGZ(41)
|
||
kpg.prs_kostenplaatsgrp_key IN (81, 261, 281, 461, 181, 441, 481, 41) -- hier de keys van de bijbehorende kostenplaatsgroepen vullen
|
||
AND SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder'
|
||
AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE'
|
||
)
|
||
)
|
||
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 = 'IT'
|
||
AND ( SUBSTR(kpg.prs_kostenplaatsgrp_nr,1,6) IN ('400-VK', '500-VK') -- VK is verkoopfacturen (zie AAIT#69225)
|
||
)
|
||
)
|
||
OR ( aaxx_get_user = 'REMEHA'
|
||
AND (
|
||
ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR
|
||
(SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE' )
|
||
)
|
||
)
|
||
OR ( aaxx_get_user = 'THHD'
|
||
AND (
|
||
ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %'
|
||
OR
|
||
(SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE' )
|
||
)
|
||
)
|
||
OR ( aaxx_get_user = 'MENZIS'
|
||
AND(
|
||
ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR
|
||
(SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND UPPER(ksg.prs_kostensoortgrp_oms) = 'NON CORE' )
|
||
)
|
||
)
|
||
);
|
||
|
||
-- Voeg contracten toe aan de verkoopinterface
|
||
INSERT INTO fin_verkoopfactuur
|
||
(
|
||
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, fin_verkoopfactuur_n5
|
||
)
|
||
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || 'C' || cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie), 1,30 ) fin_verkoopfactuur_id,
|
||
'contract',
|
||
c.cnt_contract_key,
|
||
v_logdate,
|
||
SUBSTR (
|
||
DECODE (aaxx_get_user,
|
||
'AH', k.prs_kostenplaats_nr,
|
||
'EXPO', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), '913918', '03701000',
|
||
'4001', '03700000',
|
||
'Onbekend'),
|
||
'ESSENT', '99999999',
|
||
'NMM', COALESCE(exact_d.exact_code,'onbekend'),
|
||
'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))),
|
||
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', '99999999',
|
||
'BASTION ZUID B.V.', '99999999',
|
||
'MERCEDES', '99999999',
|
||
'IKEA', DECODE (kpg.prs_kostenplaatsgrp_oms, 'IKEA - BEHEER' , 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 kostenplaats
|
||
k.prs_kostenplaats_nr
|
||
),
|
||
'IT', k.prs_kostenplaats_nr,
|
||
'RABO', COALESCE(exact_g.exact_code,'onbekend'),
|
||
'SABIC', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'THHD', '99999999',
|
||
k.prs_kostenplaats_nr)
|
||
, 1, 30)
|
||
prs_kostenplaats_nr, -- gevuld op regelniveau kolom AM (39)
|
||
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)),
|
||
'EXPO', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'NMM', DECODE(k.prs_kostenplaats_nr,
|
||
'0001', '913799', -- Heijmans
|
||
'0002', '913810', -- Vermaat
|
||
'0003', '913766', -- Defensie
|
||
'0004', '913776', -- Stichting Nationaal Militair Museum
|
||
'Onbekend'
|
||
),
|
||
'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))),
|
||
'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)),
|
||
'IKEA', DECODE (kpg.prs_kostenplaatsgrp_oms, 'IKEA - BEHEER' , aaxx_get_top_kpn_nr (k.prs_kostenplaats_key), aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)),
|
||
'MENZIS', 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),
|
||
'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)),
|
||
'IT', k.prs_kostenplaats_nr,
|
||
'THHD', aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code),
|
||
'MENZIS', aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code),
|
||
k.prs_kostenplaats_nr)
|
||
, 1, 60)
|
||
prs_debiteur_naam, -- kolom AT (46) en in debiteurnummer kolom C (3)
|
||
b.prs_bedrijf_key,
|
||
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','')
|
||
prs_kostensoort_oms, -- exact_artikelcode - kolom AD (30)
|
||
ks.prs_kostensoort_opmerking,
|
||
SUBSTR (
|
||
DECODE (aaxx_get_user,
|
||
'AH', 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)),
|
||
'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)),
|
||
'IKEA', aaxx_get_po_nr('IKEA', NULL, NULL, g.alg_gebouw_code,
|
||
NULL,
|
||
NULL,
|
||
ks.prs_kostensoort_upper, -- kostensoort_code
|
||
TRUNC(opdr_datum))
|
||
|| ' - ' || k.prs_kostenplaats_externnr,
|
||
'BASTION ZUID B.V.', DECODE(ksg.prs_kostensoortgrp_altcode, 'CVE', 'Eigenaarslast',
|
||
'CV', 'Servicekosten',
|
||
''),
|
||
'MERCEDES', aaxx_get_po_nr('MERCEDES', NULL, NULL, NULL, NULL, NULL, NULL, 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)),
|
||
'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,
|
||
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5) , 'L CV ', ' ' || l.alg_locatie_code)),
|
||
'THHD', DECODE(ksg.prs_kostensoortgrp_altcode, 'CVE', SUBSTR(l.alg_locatie_code,1,4) || ' PO zie bijlage',
|
||
'CV', SUBSTR(l.alg_locatie_code,1,4) || ' ' || aaxx_get_po_nr(NULL, NULL, NULL, l.alg_locatie_code, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
NULL),
|
||
'MENZIS', aaxx_get_po_nr(NULL, aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code), NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
ksg.prs_kostensoortgrp_oms)
|
||
, 1, 60)
|
||
prs_kostensoortgrp_oms, -- kopregel - kolom D (4)
|
||
DECODE(aaxx_get_user, 'SABIC', ks.prs_kostensoort_altcode || ' ' || fg.fin_btwtabelwaarde_code,
|
||
'ESSENT', ks.prs_kostensoort_altcode,
|
||
'THHD', COALESCE(ks.prs_kostensoort_altcode, ks.prs_kostensoort_opmerking) || ' ' || fg.fin_btwtabelwaarde_perc,
|
||
'MENZIS', COALESCE(ks.prs_kostensoort_altcode, ks.prs_kostensoort_opmerking) || ' ' || fg.fin_btwtabelwaarde_perc,
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', 'Variabele dienstverlening' || ' ' || fg.fin_btwtabelwaarde_perc,
|
||
'IKEA' , c.cnt_contract_omschrijving || ' ' || fg.fin_btwtabelwaarde_perc,
|
||
'MERCEDES', 'Vervangingsuren Receptie',
|
||
-- = de INLO-standaard voor omschrijving sub-regel
|
||
-- 'C' || cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
|
||
-- MAAR MOET WORDEN: De afwijkend dienst of standaard-sen-heyday) aangevuld met btw-percentage
|
||
COALESCE(aaxx_get_sen_omschrijving(exact_k.klantcode, ks.prs_kostensoort_upper),ks.prs_kostensoort_opmerking) || ' ' || fg.fin_btwtabelwaarde_perc
|
||
),
|
||
-- Oorspronkelijke standaard verkoopinterface...
|
||
'C' || cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie))
|
||
fin_verkoopfactuur_omschr, -- omschrijving subregel - kolom AF (32)
|
||
DECODE (aaxx_get_user,
|
||
'NMM', ROUND (fg.bedrag * 1.1,2),
|
||
fg.bedrag)
|
||
bedrag,
|
||
fg.fin_btwtabelwaarde_code,
|
||
to_char(opdr_datum, 'YYYY')
|
||
fin_verkoopfactuur_maand,
|
||
DECODE (aaxx_get_user,
|
||
-- Op district-niveau
|
||
'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'),
|
||
'THHD', 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 - kolom AU (47)
|
||
SUBSTR (
|
||
DECODE (aaxx_get_user, '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))),
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'IKEA', k.prs_kostenplaats_omschrijving,
|
||
-- = de INLO-standaard voor extra groepering kopregel factuur
|
||
NULL
|
||
),
|
||
'EXPO', l.alg_locatie_code,
|
||
'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)),
|
||
'THHD', ksg.prs_kostensoortgrp_altcode,
|
||
'')
|
||
, 1, 200) groepering, -- C2 -- kopregel
|
||
NULL subregelvolgorde, -- C3
|
||
l.alg_locatie_key, -- N1
|
||
NULL fin_verkoopfactuur_n2,
|
||
-- Voor CORE-verkoopfacturen
|
||
--- de cust-aanvulling op kopregel kolom C (3)
|
||
DECODE (aaxx_get_user,
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', ksg.prs_kostensoortgrp_altcode || ' ' || l.alg_locatie_code || ' ',
|
||
'IKEA', 'IKEA ' || l.alg_locatie_omschrijving || DECODE (kpg.prs_kostenplaatsgrp_oms, 'IKEA - BEHEER', ' Beheer BV', NULL) || ' ',
|
||
-- = de INLO-standaard voor C5 waar de subaccounts uiteindelijk op kunnen terugvallen
|
||
NULL
|
||
),
|
||
'ESSENT', ksg.prs_kostensoortgrp_altcode || ' ' || SUBSTR(l.alg_locatie_code,1,4) || ' ',
|
||
NULL
|
||
)
|
||
--- de standaard aanvulling die altijd achter de cust-aanvulling komt
|
||
|| 't/m ' || to_char(SYSDATE, 'MON')
|
||
---- verbeteridee Peggy (= in geval VJ altijd t/m DEC)
|
||
---- || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), 't/m DEC', 't/m ' || to_char(SYSDATE, 'MON'))
|
||
fin_verkoopfactuur_c5, -- heyday-referentie - standaard aanvulling op kopregel positie kolom C (3)
|
||
-- 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)
|
||
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)),
|
||
'IKEA', aaxx_get_po_nr('IKEA', NULL, NULL, g.alg_gebouw_code,
|
||
NULL,
|
||
NULL,
|
||
ks.prs_kostensoort_upper, -- kostensoort_code
|
||
TRUNC(opdr_datum)),
|
||
'MENZIS', aaxx_get_po_nr('MENZIS', NULL, NULL, g.alg_gebouw_code,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
TRUNC(opdr_datum)),
|
||
'MERCEDES', aaxx_get_po_nr('MERCEDES', NULL, NULL, NULL, NULL, NULL, NULL, 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)),
|
||
'THHD', aaxx_get_po_nr(NULL, NULL, NULL, l.alg_locatie_code, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
'MENZIS', aaxx_get_po_nr(NULL, aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code), NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
-- De standaard: Kostengroepsrt-alternatieve code + periode
|
||
NULL
|
||
) fin_verkoopfactuur_c6, -- po-nummer klant uit PO-tabel HEYDAY
|
||
-- 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)
|
||
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
|
||
) fin_verkoopfactuur_c7, -- algemene regelomschrijving uit PO-tabel
|
||
NULL fin_verkoopfactuur_n3,
|
||
'CORE' fin_verkoopfactuur_c8, -- soort verkoopfactuur
|
||
fg.fin_factuur_key
|
||
fin_verkoopfactuur_n4,
|
||
DECODE (aaxx_get_user, 'INLO', kpg.prs_kostenplaatsgrp_key, NULL) -- Multi-clientomgeving met subaccounts op kostenplaatsgroepen. T.b.v. het separaat kunnen runnen van de verkoopinterfaces
|
||
fin_verkoopfactuur_n5
|
||
FROM cnt_contract c,
|
||
prs_bedrijf b,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaatsgrp kpg,
|
||
ins_tab_discipline d,
|
||
prs_kostensoort ks,
|
||
prs_kostensoortgrp ksg,
|
||
aaxx_exp_factuur f,
|
||
alg_locatie l,
|
||
(SELECT cnt_contract_key, ag.alg_gebouw_code, ag.alg_gebouw_key, ag.alg_gebouw_naam, 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
|
||
WHERE cp.cnt_alg_plaats_key = ag.alg_gebouw_key) g,
|
||
aaxx_v_exact_code_district exact_d,
|
||
aaxx_v_exact_code_gebouw exact_g,
|
||
aaxx_v_klantcode_gebouw exact_k,
|
||
(SELECT fin_factuur_key,
|
||
cnt_contract_key,
|
||
SUM (fin_factuurregel_totaal) bedrag,
|
||
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key, 1) fin_btwtabelwaarde_code,
|
||
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key, 2) fin_btwtabelwaarde_perc,
|
||
fin_btwtabelwaarde_key,
|
||
prs_kostenplaats_key,
|
||
prs_kostensoort_key,
|
||
prs_kostensoort_refcode,
|
||
fin_factuur_boekmaand,
|
||
DECODE (aaxx_get_cnt_gebrokenboekjaar (cnt_contract_key),
|
||
'nee', opdr_datum,
|
||
'ja', TO_DATE (fin_factuur_boekmaand,'yyyy-mm'),
|
||
NULL)
|
||
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,
|
||
prs_kostensoort_refcode,
|
||
fin_factuur_boekmaand,
|
||
opdr_datum,
|
||
fin_factuur_datum,
|
||
fin_btwtabelwaarde_key) 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 l.alg_district_key =exact_d.alg_district_key(+)
|
||
AND g.alg_gebouw_key = exact_g.alg_gebouw_key(+)
|
||
AND g.alg_gebouw_key = exact_k.alg_gebouw_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 k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
|
||
AND ( ( 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
|
||
( aaxx_get_user = 'EXPO'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %'
|
||
OR ks.prs_kostensoort_upper = 'NC PROJ')
|
||
)
|
||
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
|
||
( aaxx_get_user = 'INLO'
|
||
AND (
|
||
-- de subaccounts die de CV-verkoopinterface aan hebben staan, zijn:
|
||
---- MERCEDES(61), BASTION ZUID(541), MENZIS(481), IKEA-BEHEER(461), KADASTER(441), LANDMARK HUURDERS(301), IKEA(281), COVESTRO(261), LANDMARK(241), TRINSEO(121), ALLIANDER(81), VGZ(41), HENKEL(23), VEH(21)
|
||
---- COVESTRO DERDEN (341) - WEL/NIET PEGGY?
|
||
(
|
||
kpg.prs_kostenplaatsgrp_key IN (541, 481, 461, 441, 301, 281, 261, 241, 121, 81, 41, 23, 21, 341) -- hier de keys van de bijbehorende kostenplaatsgroep vullen
|
||
AND (ks.prs_kostensoort_upper LIKE 'CV %' OR ks.prs_kostensoort_upper LIKE 'CVE %')
|
||
) -- alleen CV - geen CVE
|
||
OR
|
||
(
|
||
kpg.prs_kostenplaatsgrp_key IN (61) -- hier de keys van de bijbehorende kostenplaatsgroep vullen
|
||
AND ks.prs_kostensoort_upper LIKE 'CV %'
|
||
)
|
||
)
|
||
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 'CV%'
|
||
)
|
||
OR
|
||
( aaxx_get_user = 'RABO'
|
||
AND ks.prs_kostensoort_upper LIKE 'CV %'
|
||
AND ks.prs_kostensoort_upper <> 'CV DOC POST'
|
||
)
|
||
OR
|
||
( aaxx_get_user = 'SABIC'
|
||
AND ( ( c.cnt_contract_looptijd_van < 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 ( 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 (
|
||
(c.cnt_contract_looptijd_van >= to_date ('20180101', 'yyyymmdd') AND c.cnt_contract_looptijd_van < to_date ('20190101', '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 (c.cnt_contract_looptijd_van >= to_date ('20190101', 'yyyymmdd') -- Voor Sabic IP geldt voor 2019 mechanisme gelijk aan 2018 (AASA#56477)
|
||
AND l.alg_locatie_code in ('BOZ','RDV')
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE%')
|
||
)
|
||
OR (
|
||
c.cnt_contract_looptijd_van >= to_date ('20190101', 'yyyymmdd') -- Voor Sabic Geleen geldt voor 2019 een ander mechanisme (AASA#56477)
|
||
AND l.alg_locatie_code not in ('BOZ','RDV')
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV TRA'
|
||
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)
|
||
)
|
||
)
|
||
OR ( aaxx_get_user = 'REMEHA'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %'
|
||
)
|
||
)
|
||
OR ( aaxx_get_user = 'THHD'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %')
|
||
)
|
||
OR ( aaxx_get_user = 'MENZIS'
|
||
AND ks.prs_kostensoort_upper LIKE 'CV %'
|
||
)
|
||
);
|
||
|
||
-- voeg bestelorders toe aan de verkoopbuffer
|
||
INSERT INTO fin_verkoopfactuur
|
||
(
|
||
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, fin_verkoopfactuur_n5
|
||
)
|
||
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || bestel.bes_bestelopdr_id, 1,30 ) fin_verkoopfactuur_id,
|
||
'bestelopdr',
|
||
bestel.bes_bestelopdr_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))),
|
||
'EXPO', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), '913918', '03701000',
|
||
'4001', '03700000',
|
||
'Onbekend'),
|
||
'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
|
||
),
|
||
'SABIC', aaxx_get_top_dep_code (k.prs_kostenplaats_nr),
|
||
prs_kostenplaats_nr)
|
||
, 1, 30)
|
||
prs_kostenplaats_nr, -- gevuld op regelniveau kolom AM (39)
|
||
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))),
|
||
'EXPO', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'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)),
|
||
'MENZIS', 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)
|
||
),
|
||
'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)),
|
||
prs_kostenplaats_nr)
|
||
, 1, 60)
|
||
prs_debiteur_naam, -- kolom AT (46) en in debiteurnummer kolom C (3)
|
||
bestel.prs_bedrijf_key,
|
||
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','')
|
||
prs_kostensoort_oms, -- exact_artikelcode - kolom AD (30)
|
||
ks.prs_kostensoort_opmerking,
|
||
SUBSTR (
|
||
DECODE (aaxx_get_user, 'AH', 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)),
|
||
'DSM', ksg.prs_kostensoortgrp_oms || DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ' ' || l.alg_locatie_code,
|
||
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5) , 'L CV ', ' ' || l.alg_locatie_code)),
|
||
'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'
|
||
),
|
||
'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)),
|
||
ksg.prs_kostensoortgrp_oms)
|
||
, 1, 60)
|
||
prs_kostensoortgrp_oms, -- kopregel - kolom D (4)
|
||
DECODE (aaxx_get_user, 'SABIC', ks.prs_kostensoort_altcode || ' ' || fg.fin_btwtabelwaarde_code,
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', 'Variabele dienstverlening' || ' ' || fg.fin_btwtabelwaarde_perc,
|
||
-- = de INLO-standaard voor omschrijving sub-regel
|
||
-- bestel.bes_bestelopdr_id || ' ' || d.ins_discipline_omschrijving
|
||
-- MAAR MOET WORDEN: De afwijkend dienst of standaard-sen-heyday) aangevuld met btw-percentage
|
||
COALESCE(aaxx_get_sen_omschrijving(exact_k.klantcode, ks.prs_kostensoort_upper),ks.prs_kostensoort_opmerking) || ' ' || fg.fin_btwtabelwaarde_perc
|
||
),
|
||
bestel.bes_bestelopdr_id || ' ' || d.ins_discipline_omschrijving)
|
||
fin_verkoopfactuur_omschr, -- omschrijving subregel - kolom AF (32)
|
||
fg.fin_factuurregel_totaal,
|
||
fg.fin_btwtabelwaarde_code,
|
||
TO_CHAR (opdr_datum, 'YYYY')
|
||
fin_verkoopfactuur_maand,
|
||
DECODE (aaxx_get_user,
|
||
-- Op district-niveau
|
||
'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'),
|
||
-- Op klantgebouw-niveau
|
||
'INLO', COALESCE(exact_k.klantcode,'onbekend'),
|
||
-- Overig/Default op gebouw-niveau
|
||
COALESCE(exact_g.exact_code,'onbekend')) exact_code, -- C1 - kolom AU (47)
|
||
SUBSTR (
|
||
DECODE (aaxx_get_user,
|
||
'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))),
|
||
'EXPO', alg_locatie_code,
|
||
'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)),
|
||
'')
|
||
, 1, 200) groepering, -- C2 -- kopregel
|
||
NULL subregelvolgorde, -- C3
|
||
l.alg_locatie_key, -- N1
|
||
NULL fin_verkoopfactuur_n2,
|
||
-- Voor CORE-verkoopfacturen
|
||
--- de cust-aanvulling op kopregel kolom C (3)
|
||
DECODE (aaxx_get_user,
|
||
'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 || ' ' || l.alg_locatie_code || ' ',
|
||
NULL
|
||
)
|
||
--- de standaard aanvulling die altijd achter de cust-aanvulling komt
|
||
|| 't/m ' || to_char(SYSDATE, 'MON')
|
||
---- verbeteridee Peggy (= in geval VJ altijd t/m DEC)
|
||
---- || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), 't/m DEC', 't/m ' || to_char(SYSDATE, 'MON'))
|
||
fin_verkoopfactuur_c5, -- heyday-referentie - standaard aanvulling op kopregel positie kolom C (3)
|
||
-- 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)
|
||
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)),
|
||
'MENZIS', aaxx_get_po_nr('MENZIS', NULL, NULL, g.alg_gebouw_code,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
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
|
||
) fin_verkoopfactuur_c6, -- po-nummer klant uit PO-tabel HEYDAY
|
||
-- 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)
|
||
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
|
||
) fin_verkoopfactuur_c7, -- algemene regelomschrijving uit PO-tabel
|
||
NULL fin_verkoopfactuur_n3,
|
||
'CORE' fin_verkoopfactuur_c8, -- soort verkoopfactuur
|
||
fg.fin_factuur_key
|
||
fin_verkoopfactuur_n4,
|
||
DECODE (aaxx_get_user, 'INLO', kpg.prs_kostenplaatsgrp_key, NULL) -- Multi-clientomgeving met subaccounts op kostenplaatsgroepen. T.b.v. het separaat kunnen runnen van de verkoopinterfaces
|
||
fin_verkoopfactuur_n5
|
||
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,
|
||
prs_kostenplaatsgrp kpg,
|
||
ins_tab_discipline d,
|
||
prs_kostensoort ks,
|
||
prs_kostensoortgrp ksg,
|
||
aaxx_exp_factuur f,
|
||
alg_gebouw g,
|
||
alg_locatie l,
|
||
aaxx_v_exact_code_district exact_d,
|
||
aaxx_v_exact_code_gebouw exact_g,
|
||
aaxx_v_klantcode_gebouw exact_k,
|
||
( SELECT fin_factuur_key,
|
||
bes_bestelopdr_key,
|
||
prs_kostenplaats_key,
|
||
prs_kostensoort_key,
|
||
fin_factuur_boekmaand,
|
||
opdr_datum,
|
||
fin_factuur_datum,
|
||
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key, 1) fin_btwtabelwaarde_code,
|
||
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key, 2) fin_btwtabelwaarde_perc,
|
||
fin_btwtabelwaarde_key,
|
||
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) 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 l.alg_district_key =exact_d.alg_district_key(+)
|
||
AND g.alg_gebouw_key = exact_g.alg_gebouw_key(+)
|
||
AND g.alg_gebouw_key = exact_k.alg_gebouw_key(+)
|
||
AND l.alg_district_key =exact_d.alg_district_key(+)
|
||
AND g.alg_locatie_key = l.alg_locatie_key
|
||
AND fg.fin_factuur_key = f.fin_factuur_key
|
||
AND k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_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 = '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
|
||
( aaxx_get_user = 'EXPO'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %'
|
||
OR ks.prs_kostensoort_upper = 'NC PROJ')
|
||
)
|
||
OR
|
||
( aaxx_get_user = 'INLO'
|
||
AND (
|
||
-- de subaccounts die de CV-verkoopinterface aan hebben staan, zijn:
|
||
---- MENZIS(481), KADASTER(441), LANDMARK HUURDERS(301), COVESTRO(261), LANDMARK(241), TRINSEO(121), ALLIANDER(81), VGZ(41), HENKEL(23), VEH(21)
|
||
---- COVESTRO DERDEN (341) - WEL/NIET PEGGY?
|
||
kpg.prs_kostenplaatsgrp_key IN (481, 441, 301, 261, 241, 121, 81, 41, 23, 21, 341) -- hier de keys van de bijbehorende kostenplaatsgroep vullen
|
||
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 ('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 = 'SABIC'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %')
|
||
)
|
||
);
|
||
|
||
-- bereken per klant de FEE over de omzet.
|
||
|
||
-- Fee over Projecten - zie ticket AAIT#72344
|
||
-- Generiek: voor meerdere/alle klantomgevingen zelfde structuur
|
||
-- De fee is op basis van de op het project opgegeven Projectmarges VAST en/of PROCENTUEEL, met de tekst <20>Projectfee<65>.
|
||
-- Per verkoopfactuur 1 regel, met exact_artikelcode 'REVENUE PROJECTS FEE'
|
||
|
||
-- We gaan eerst kijken of er PR-verkoopfacturen in deze run zijn aangemaakt waar FEE over belast moet worden
|
||
BEGIN
|
||
v_errormsg := 'Projectfee bepalen';
|
||
|
||
SELECT MAX(fin_verkoopfactuur_c8)
|
||
INTO v_projectfacturen_fee
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_aanmaak = v_logdate
|
||
AND fin_verkoopfactuur_xmlnode = 'opdracht'
|
||
AND fin_verkoopfactuur_c8 = 'PROJECT'
|
||
AND (fin_verkoopfactuur_n2 <> 0 OR fin_verkoopfactuur_n3 <> 0) ;
|
||
|
||
END;
|
||
|
||
IF v_projectfacturen_fee IS NOT NULL THEN
|
||
|
||
-- als projectmarge PROCENTUEEL is gevuld (= fin_verkoopfactuur_n3) dan berekenen we over verkoopfactuur nog een FEE
|
||
---- Ps. Ik maak per inkoopfactuurnr ook 1 fee_proc-regel aan. Deze komen dan op detail-verslag en bij genereren van de exact-vk-project-factuur worden deze naar exact wel getotaliseerd tot 1 fee-regel
|
||
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_n3, fin_verkoopfactuur_n5, fin_verkoopfactuur_n4
|
||
)
|
||
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, '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_n3, fin_verkoopfactuur_n5, fin_verkoopfactuur_n4
|
||
FROM fin_verkoopfactuur v
|
||
WHERE fin_verkoopfactuur_aanmaak = v_logdate
|
||
AND fin_verkoopfactuur_c8 = 'PROJECT'
|
||
AND INSTR(prs_kostensoort_oms, 'REVENUE PROJECTS COST') > 0 -- ook VJ's meenemen 'REVENUE PROJECTS COST VJ'
|
||
AND fin_verkoopfactuur_n3 <> 0 -- projectmarge procentueel gevuld
|
||
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_n3, fin_verkoopfactuur_n5, fin_verkoopfactuur_n4;
|
||
|
||
-- als projectmarge VAST is gevuld (= fin_verkoopfactuur_n2) dan moet er eenmalig een VAST bedrag als PROJECTFEE VAST opgenomen worden
|
||
---- Ps. Ik maak 1 fee_vast-regel aan en vul fin_verkoopfactuur_n4 met laagste inkoopfactuurnr uit de run
|
||
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_n2, fin_verkoopfactuur_n5, fin_verkoopfactuur_n4
|
||
)
|
||
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, 'REVENUE PROJECTS FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'Projectfee vast' , fin_verkoopfactuur_n2, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X', fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n2, fin_verkoopfactuur_n5, MIN(fin_verkoopfactuur_n4)
|
||
FROM fin_verkoopfactuur v, aaxx_v_projectorders_bron pr
|
||
WHERE fin_verkoopfactuur_aanmaak = v_logdate
|
||
AND fin_verkoopfactuur_c8 = 'PROJECT'
|
||
AND INSTR(prs_kostensoort_oms, 'REVENUE PROJECTS COST') > 0 -- ook VJ's meenemen 'REVENUE PROJECTS COST VJ'
|
||
AND fin_verkoopfactuur_n2 <> 0 -- projectmarge vast gevuld
|
||
AND v.fin_verkoopfactuur_refkey = pr.mld_opdr_key AND pr.aantal_regels_fee_vast IS NULL -- mag nog geen fee-regel vast als verkoopregel toegevoegd zijn
|
||
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_n2, fin_verkoopfactuur_n5;
|
||
|
||
|
||
END IF;
|
||
|
||
IF aaxx_get_user = 'IT' THEN
|
||
-- Fee: 3% bij de facturen die vallen onder kostenplaatsgroep 400-VK en FEE en 500-VK en 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_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
|
||
)
|
||
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, k.prs_kostenplaats_nr, prs_debiteur_naam, 'BASE FEE', '', prs_kostensoortgrp_oms, 'BASE FEE' , ROUND(SUM(fin_verkoopfactuur_bedrag) * 0.03, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X', fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
|
||
FROM fin_verkoopfactuur v, prs_kostenplaats k, prs_kostenplaatsgrp kpg
|
||
WHERE fin_verkoopfactuur_aanmaak = v_logdate
|
||
AND v.prs_kostenplaats_nr = k.prs_kostenplaats_nr AND k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key
|
||
AND INSTR(UPPER(kpg.prs_kostenplaatsgrp_nr),'FEE')>0
|
||
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, k.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;
|
||
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_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
|
||
)
|
||
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', DECODE (l.alg_locatie_code, 'EMM', prs_debiteur_naam, 'ZWO', prs_debiteur_naam, 'WAA', prs_debiteur_naam, 'DLF', prs_debiteur_naam, '520'), 'CVE FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'FEE ' || l.alg_locatie_code, SUM(ROUND(fin_verkoopfactuur_bedrag * 0.03, 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', 'FEE' || fin_verkoopfactuur_c2, 'X', fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
|
||
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%'
|
||
AND fin_verkoopfactuur_c8 = 'CORE'
|
||
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, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
|
||
|
||
-- 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_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
|
||
)
|
||
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, '', DECODE (l.alg_locatie_code, 'EMM', prs_debiteur_naam, 'DLF', prs_debiteur_naam, '520'), 'CV FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'FEE' , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.03, 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X', fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
|
||
FROM fin_verkoopfactuur v, prs_relatietype r, prs_bedrijf b, alg_locatie l
|
||
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 'CV %'
|
||
AND fin_verkoopfactuur_c8 = 'CORE'
|
||
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, l.alg_locatie_code, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
|
||
|
||
END IF;
|
||
|
||
IF aaxx_get_user = 'ESSENT' THEN
|
||
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
|
||
)
|
||
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, 'BASE FEE' || DECODE (INSTR(v.prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'BASE FEE 1.5%', ROUND(SUM(fin_verkoopfactuur_bedrag) * 0.015, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X', fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
|
||
FROM fin_verkoopfactuur v
|
||
WHERE fin_verkoopfactuur_aanmaak = v_logdate
|
||
AND fin_verkoopfactuur_c8 = 'CORE'
|
||
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, instr(v.prs_kostensoort_oms, ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
|
||
END IF;
|
||
|
||
-- INLO CORE
|
||
-- Voor IKEA - op basis van de maintenance cap bij opdracht.
|
||
--- Geldt voor alleen voor waarde opdrachtkenmerk 'maintenance cap op JA'
|
||
--- Is MAX 500 euro, over alle inkoopfacturen op die opdracht
|
||
--- Bij Credits op die opdracht bedrag debet in rekening brengen
|
||
------- Om goede berekening te houden, is er een hulpview aaxx_v_verkoopfactuur_cap.
|
||
------- Per inkooprun wordt dan op de hoogste verkoopfactuur_key in die run de CAP-bepaald en op die verkoopfactuur toegevoegd.
|
||
IF aaxx_get_user = 'INLO' THEN
|
||
|
||
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_n5
|
||
)
|
||
SELECT v.fin_verkoopfactuur_id, v.fin_verkoopfactuur_xmlnode, v.fin_verkoopfactuur_refkey, v.fin_verkoopfactuur_aanmaak, v.prs_debiteur_naam, v.prs_debiteur_naam, 'CV CAP' || DECODE (INSTR(v.prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), 'Maintenance cap', v.prs_kostensoortgrp_oms, v.fin_verkoopfactuur_omschr,
|
||
c.cap_te_verrekenen_in_run,
|
||
v.fin_btwtabelwaarde_code, v.fin_verkoopfactuur_maand, v.fin_verkoopfactuur_c1, v.fin_verkoopfactuur_c2, 'X', v.fin_verkoopfactuur_c5, v.fin_verkoopfactuur_c8, v.fin_verkoopfactuur_c6, v.fin_verkoopfactuur_n4, v.fin_verkoopfactuur_n5
|
||
FROM fin_verkoopfactuur v,
|
||
aaxx_v_verkoopfactuur_cap c
|
||
WHERE c.fin_verkoopfactuur_key = v.fin_verkoopfactuur_key
|
||
AND ROUND(c.inkoopfacturen_totaal_verwerkt, 2) = ROUND(c.vk_regels_opdracht, 2) -- Bij overgang naar nieuwe vk-interface IKEA2.0. wil alleen maar de juiste CAP-berekening in de verkoopfactuur als ook daadwerkelijke alle inkoopfacturen in de verkoopinterface zitten
|
||
AND c.cap_te_verrekenen_in_run <> 0
|
||
AND v.fin_verkoopfactuur_n5 IN (281, 461) -- IKEA en IKEA-BEHEER
|
||
AND v.fin_verkoopfactuur_aanmaak = v_logdate
|
||
AND v.fin_verkoopfactuur_c8 = 'CORE' ;
|
||
|
||
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.
|
||
-- stdmelding 1248 bevat meldingen schoonmaak die ook voorzien moeten worden van een uurtarief. Maar dan wel uit een andere eigen tabel.
|
||
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, mld_melding m, fac_usrdata ud
|
||
WHERE vk.fin_verkoopfactuur_refkey = o.mld_opdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND vk.fin_verkoopfactuur_xmlnode = 'opdracht'
|
||
AND ud.fac_usrtab_key = DECODE(m.mld_stdmelding_key, 1121, DECODE (TO_CHAR (COALESCE(mld_opdr_plandatum, mld_opdr_datumbegin), 'D'), 1, 141, 7, 141, 122) -- Uurtarief bewaking (141 tabel weekend, 122 tabel weekdagen)
|
||
, 1248, DECODE (TO_CHAR (COALESCE(mld_opdr_plandatum, mld_opdr_datumbegin), 'D'), 1, 162, 7, 162, 161) -- Uurtarief bewaking (162 tabel weekend, 161 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 = ud.fac_usrtab_key
|
||
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 IN (1121, 1248) -- Aanvraag beveiligingsdienst(en) tbv evenementen / Aanvraag extra schoonmaak tbv evenementen
|
||
)
|
||
AND fin_verkoopfactuur_aanmaak = v_logdate;
|
||
|
||
-- Voor de overige meldingen gaan we een uplift van 10% hanteren
|
||
UPDATE fin_verkoopfactuur vk
|
||
SET fin_verkoopfactuur_bedrag = ROUND(fin_verkoopfactuur_bedrag * 1.1,2)
|
||
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 NOT IN (1121, 1248) -- Aanvraag beveiligingsdienst(en) tbv evenementen / Aanvraag extra schoonmaak tbv evenementen
|
||
)
|
||
AND fin_verkoopfactuur_aanmaak = v_logdate;
|
||
END IF;
|
||
|
||
IF aaxx_get_user = 'RABO' THEN -- RABO#37283 RABO#39639 RABO#56840 RABO#57776
|
||
INSERT INTO fin_verkoopfactuur -- Voor kostenplaatsen standaard 5,5% fee (m.u.v. Optitrade en Eigen Steen)
|
||
(
|
||
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
|
||
)
|
||
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, DECODE (prs_kostensoort_oms, 'NC PROJ', 'FEE', 'Fee Core Variabel') || DECODE (INSTR (prs_kostensoort_oms, ' VJ'), 0, '', ' VJ'), '', prs_kostensoortgrp_oms, 'FEE' , ROUND(SUM(fin_verkoopfactuur_bedrag) * 5.5 / 100, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X', fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
|
||
FROM fin_verkoopfactuur v,
|
||
mld_opdr o,
|
||
mld_melding m,
|
||
mld_stdmelding std
|
||
WHERE v.fin_verkoopfactuur_refkey = o.mld_opdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND fin_verkoopfactuur_aanmaak = v_logdate
|
||
AND v.prs_kostenplaats_nr not in ('0000003','0000004')
|
||
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoortgrp_oms, std.prs_kostensoort_key, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, 'X', fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
|
||
|
||
INSERT INTO fin_verkoopfactuur -- Voor kostenplaatsen Optitrade en Eigen Steen 15% fee.
|
||
(
|
||
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
|
||
)
|
||
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, DECODE (prs_kostensoort_oms, 'NC PROJ', 'FEE', 'Fee Core Variabel') || DECODE (INSTR (prs_kostensoort_oms, ' VJ'), 0, '', ' VJ'), '', prs_kostensoortgrp_oms, 'FEE' , ROUND(SUM(fin_verkoopfactuur_bedrag) * 15.0 / 100, 2), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X', fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4
|
||
FROM fin_verkoopfactuur v,
|
||
mld_opdr o,
|
||
mld_melding m,
|
||
mld_stdmelding std
|
||
WHERE v.fin_verkoopfactuur_refkey = o.mld_opdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND fin_verkoopfactuur_aanmaak = v_logdate
|
||
AND v.prs_kostenplaats_nr in ('0000003','0000004')
|
||
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoortgrp_oms, std.prs_kostensoort_key, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, 'X', fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
|
||
|
||
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;
|
||
|
||
-- set de status van de opdracht en neem de kosten over van de factuur.
|
||
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;
|
||
|
||
-- Neem de kosten van de factuur over in het termijnbedrag en totaalbedrag contract
|
||
FOR rec1 IN c_cnt
|
||
LOOP
|
||
BEGIN
|
||
|
||
v_contract_kosten_init := rec1.cnt_contract_kosten ;
|
||
|
||
UPDATE cnt_factuurschema fs
|
||
SET (cnt_factuurschema_opmerking,
|
||
cnt_factuurschema_bedrag) =
|
||
(SELECT SUBSTR(DECODE(cnt_factuurschema_opmerking, NULL, '', cnt_factuurschema_opmerking || CHR(10)) || 'Bedrag na verwerken facturen ' || TO_CHAR(SYSDATE, 'DD-MM-YYYY') || ' aangepast van ' || cnt_factuurschema_bedrag || ' naar ' || SUM (fin_factuurregel_totaal),1,320) opmerking,
|
||
SUM (fin_factuurregel_totaal) totaal
|
||
FROM aaxx_v_aanwezigfactuur f
|
||
, fin_factuurregel fr
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND f.cnt_contract_key = fs.cnt_contract_key
|
||
AND f.fin_factuur_boekmaand = fs.cnt_factuurschema_boekmaand
|
||
AND f.fin_factuur_statuses_key >= 6)
|
||
WHERE fs.cnt_factuurschema_key = rec1.cnt_factuurschema_key;
|
||
|
||
-- Nieuwe contract_kosten
|
||
SELECT SUM(fs.cnt_factuurschema_bedrag), TO_CHAR(SUM(fs.cnt_factuurschema_bedrag))
|
||
INTO v_contract_kosten_nieuw_n, v_contract_kosten_nieuw_k
|
||
FROM cnt_factuurschema fs
|
||
WHERE fs.cnt_contract_key = rec1.cnt_contract_key ;
|
||
|
||
UPDATE cnt_contract c
|
||
SET c.cnt_contract_kosten = v_contract_kosten_nieuw_n
|
||
WHERE c.cnt_contract_key = rec1.cnt_contract_key;
|
||
|
||
BEGIN fac.trackaction('CNTUPD', rec1.cnt_contract_key, v_aanvrager, NULL, 'Contract gewijzigd (na inkooprun)' || CHR(10)
|
||
|| 'Totaalbedrag: ' || v_contract_kosten_init
|
||
|| ' --> ' || v_contract_kosten_nieuw_k) ;
|
||
END;
|
||
|
||
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;
|
||
/
|
||
|
||
|
||
---------------------------------------------------
|
||
-- VERKOOPINTERFACE - exportfunctie - EXACT_VERKOOP
|
||
---------------------------------------------------
|
||
|
||
-- verkoopinterface CSV (voor CORE, PROJECT en RES)
|
||
|
||
-- Uitleg van de kolommen zoals ze naar Exact gaan:
|
||
-- 01 Regelnummer Vaste waarde 0
|
||
-- 02 Factuurcode Vaste waarde 3
|
||
-- 03 Debiteurnummer Kostenplaatsnummer - Inclusief aanvulling heyday_referentie (voorwaarde voor EXACT is dat deze aanvulling geen cijfers mag bevatten) (c5)
|
||
-- 04 Referentie Kostensoortgroep en/of PO-nummer
|
||
-- 05 Referentie 1 Leeg (THHD - Locatiecode)
|
||
-- 06 Referentie 2 Leeg (THHD - maand export-run)
|
||
-- 07 Referentie 3 Leeg
|
||
-- 08 Ordernummer Leeg
|
||
-- 09 Orderdatum Datum van de export.
|
||
-- 10 Magazijn 1
|
||
-- 11 Extra artikel omschrijving Leeg
|
||
-- 12 Vertegenwoordigers Leeg
|
||
-- 13 Kostenplaats Leeg
|
||
-- 14 Selectiecode Leeg
|
||
-- 15 Bedrag in vreemde valuta Leeg
|
||
-- 16 Netto prijs Leeg
|
||
-- 17 Valutacode EUR
|
||
-- 18 Wisselkoers Leeg
|
||
-- 19 Betalingsconditie Leeg
|
||
-- 20 Leveringswijze 1
|
||
-- 21 Vrachtkosten Leeg
|
||
-- 22 Orderkosten Leeg
|
||
-- 23 Faktuurkorting Leeg
|
||
-- 24 Totaal bedrag Leeg
|
||
-- 25 Colli 0
|
||
-- 26 Bruto gewicht 0
|
||
-- 27 Netto gewicht 0
|
||
-- 28 Afleverdatum Leeg
|
||
-- 29 - Leeg
|
||
-- 30 - Leeg
|
||
-- 31 Bruto/Netto Leeg
|
||
-- 32 - Leeg
|
||
-- 33 - Leeg
|
||
-- 34 - Leeg
|
||
-- 35 - Leeg
|
||
-- 36 - Leeg
|
||
-- 37 - Leeg
|
||
-- 38 - Leeg
|
||
-- 39 - Leeg
|
||
-- 40 - Leeg
|
||
-- 41 - Leeg
|
||
-- 42 Faktuursoort V
|
||
-- 43 Orderdebiteur is faktuurdebiteur Leeg
|
||
-- 44 Debiteur type Leeg
|
||
-- 45 Gefiatteerd N
|
||
-- 46 Faktuurdebiteur Kostenplaatsnummer
|
||
-- 47 - Leeg
|
||
-- 48 Facktuurnummer Leeg
|
||
-------------------------------------------------------------------------------
|
||
CREATE OR REPLACE VIEW aaxx_v_export_exact_verkoop_t (
|
||
result,
|
||
opdr_jaar,
|
||
soort, -- CORE of PROJECT of RES
|
||
subaccount, -- Voor MULTICLIENT INLO
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT '0'
|
||
|| ','
|
||
|| DECODE(aaxx_get_user, 'RABO', '2',
|
||
'THHD', '00',
|
||
'3')
|
||
|| ','
|
||
|| prs_debiteur_naam
|
||
|| DECODE(fin_verkoopfactuur_c8, 'PROJECT', '',
|
||
'RES', ' t/m ' || to_char(SYSDATE, 'MON'),
|
||
'CORE', ' ' || fin_verkoopfactuur_c5)
|
||
|| ','
|
||
|| replace(prs_kostensoortgrp_oms, ',', '')
|
||
|| ','
|
||
|| DECODE(aaxx_get_user, 'THHD', TRIM(SUBSTR(prs_kostensoortgrp_oms,1,4)),
|
||
'')
|
||
|| ','
|
||
|| DECODE(aaxx_get_user, 'THHD', TO_CHAR (SYSDATE, 'MON'),
|
||
'')
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| TO_CHAR (SYSDATE, 'ddmmyyyy')
|
||
|| ','
|
||
|| '1'
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| 'EUR'
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| '1'
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| TO_CHAR (0)
|
||
|| ','
|
||
|| TO_CHAR (0)
|
||
|| ','
|
||
|| TO_CHAR (0)
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| 'V'
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| 'N'
|
||
|| ','
|
||
|| prs_debiteur_naam
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
result,
|
||
fin_verkoopfactuur_maand,
|
||
fin_verkoopfactuur_c8,
|
||
fin_verkoopfactuur_n5,
|
||
fin_verkoopfactuur_maand || prs_debiteur_naam || fin_verkoopfactuur_c2 || fin_verkoopfactuur_c6 || replace(prs_kostensoortgrp_oms, ',', '') || DECODE(aaxx_get_user, 'NMM', '', 'DSM', '', 'RABO', '', 'EXPO', '', 'INLO', '', prs_kostenplaats_nr) || fin_verkoopfactuur_c5 || '-0-'
|
||
result_order
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_datum IS NULL AND COALESCE(fin_verkoopfactuur_c8, 'CORE') IN ('CORE', 'RES', 'PROJECT')
|
||
GROUP BY fin_verkoopfactuur_maand, prs_debiteur_naam, fin_verkoopfactuur_c2, fin_verkoopfactuur_c6, replace(prs_kostensoortgrp_oms, ',', ''), TRIM(SUBSTR(prs_kostensoortgrp_oms,1,4)), DECODE(aaxx_get_user, 'NMM', '', 'DSM', '', 'RABO', '', 'EXPO', '', 'INLO', '', prs_kostenplaats_nr), fin_verkoopfactuur_c8, fin_verkoopfactuur_c5, fin_verkoopfactuur_n5
|
||
UNION ALL
|
||
-- Uitleg subregel:
|
||
-- 01 Regelnummer Vaste waarde 1
|
||
-- 02 - Vaste waarde 2 of 3
|
||
-- 03 - Leeg
|
||
-- 04 - Leeg
|
||
-- 05 - Leeg
|
||
-- 06 - Leeg
|
||
-- 07 - Leeg
|
||
-- 08 - Leeg
|
||
-- 09 - Leeg
|
||
-- 10 Magazijn 1
|
||
-- 11 - Leeg
|
||
-- 12 - Leeg
|
||
-- 13 - Leeg
|
||
-- 14 - Leeg
|
||
-- 15 - Leeg
|
||
-- 16 - Leeg
|
||
-- 17 - Leeg
|
||
-- 18 - Leeg
|
||
-- 19 - Leeg
|
||
-- 20 - Leeg
|
||
-- 21 - Leeg
|
||
-- 22 - Leeg
|
||
-- 23 - Leeg
|
||
-- 24 - Leeg
|
||
-- 25 - Leeg
|
||
-- 26 - Leeg
|
||
-- 27 - Leeg
|
||
-- 28 Afleverdatum Leeg
|
||
-- 29 Afleverweek Leeg
|
||
-- 30 Artikelcode Kostensoortcode
|
||
-- 31 Artikelsoort V
|
||
-- 32 Omschrijving Detailomschrijving verkoopfactuur-regel
|
||
-- 33 Hoeveelheid 1
|
||
-- 34 BTW code Verkoop-btw-code exact die hoort bij inkoopcode (conform eigen tabel in facilitor-omgeving)
|
||
-- 35 Prijslijst Leeg
|
||
-- 36 Korting 0
|
||
-- 37 Prijs Bedrag
|
||
-- 38 Nettoprijs Leeg
|
||
-- 39 Kostenplaats Kostenplaats
|
||
-- 40 Tekst voor tekstregels Leeg
|
||
-- 41 Omzetrekening Leeg (bij het inlezen in Exact wordt deze code erbij gezocht op basis van de artikelcode (kostensoort)
|
||
-- 42 - Leeg
|
||
-- 43 - Leeg
|
||
-- 44 - Leeg
|
||
-- 45 - Leeg
|
||
-- 46 - Leeg
|
||
-- 47 Kostenplaats Exact_code van het gebouw (bij contractorders wordt het eerste gebouw uit het contract geselecteerd) .
|
||
-- 48 - Leeg
|
||
SELECT '1'
|
||
|| ','
|
||
|| DECODE(aaxx_get_user, 'RABO', '2',
|
||
'THHD', '00',
|
||
'3')
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| '1'
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ' '
|
||
|| prs_kostensoort_oms
|
||
|| ','
|
||
|| 'V'
|
||
|| ','
|
||
|| replace(fin_verkoopfactuur_omschr, ',', '')
|
||
|| ','
|
||
|| '1'
|
||
|| ','
|
||
|| fin_btwtabelwaarde_code
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| '0'
|
||
|| ','
|
||
|| REPLACE (TO_CHAR (sum(fin_verkoopfactuur_bedrag)), ',', '.')
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| prs_kostenplaats_nr
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| fin_verkoopfactuur_c1 -- exact code gebouw
|
||
|| ','
|
||
|| ''
|
||
result,
|
||
fin_verkoopfactuur_maand,
|
||
fin_verkoopfactuur_c8,
|
||
fin_verkoopfactuur_n5,
|
||
fin_verkoopfactuur_maand || prs_debiteur_naam || fin_verkoopfactuur_c2 || fin_verkoopfactuur_c6 || replace(prs_kostensoortgrp_oms, ',', '') || DECODE(aaxx_get_user, 'NMM', '', 'DSM', '', 'RABO', '', 'EXPO', '', 'INLO', '', prs_kostenplaats_nr) || fin_verkoopfactuur_c5 || '-1-' || fin_verkoopfactuur_c3 || replace(fin_verkoopfactuur_omschr, ',', '') || prs_kostensoort_oms
|
||
result_order
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_datum IS NULL AND COALESCE(fin_verkoopfactuur_c8, 'CORE') IN ('CORE', 'RES', 'PROJECT')
|
||
GROUP BY fin_verkoopfactuur_c3, replace(prs_kostensoortgrp_oms, ',', ''), fin_verkoopfactuur_omschr, replace(fin_verkoopfactuur_omschr, ',', ''), prs_kostenplaats_nr, prs_debiteur_naam, fin_verkoopfactuur_c2, fin_verkoopfactuur_c6, fin_verkoopfactuur_c1, prs_kostensoort_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c8, fin_verkoopfactuur_c5, fin_verkoopfactuur_n5 ;
|
||
|
||
|
||
CREATE OR REPLACE VIEW aaxx_v_export_exact_verkoop (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result,
|
||
result_order
|
||
FROM aaxx_exp_exact_verkoop;
|
||
|
||
|
||
-- preprocessing ten behoeve van:
|
||
---- VJ's voor juiste verwerking van kosten voor balans
|
||
---- IKEA en alle verkoopfacturen op 1 boekingsperiode
|
||
CREATE OR REPLACE PROCEDURE aaxx_exact_verkoop_preproces_1 (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_soort IN VARCHAR2,
|
||
p_subaccount IN NUMBER DEFAULT NULL
|
||
)
|
||
AS
|
||
|
||
CURSOR c_vj
|
||
IS
|
||
SELECT fin_verkoopfactuur_key,
|
||
fin_verkoopfactuur_maand,
|
||
prs_kostensoort_oms
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_datum IS NULL
|
||
AND fin_verkoopfactuur_c8 = p_soort
|
||
AND COALESCE(TO_CHAR(fin_verkoopfactuur_n5), 'LEEG') = COALESCE(TO_CHAR(p_subaccount), 'LEEG')
|
||
AND fin_verkoopfactuur_maand = TO_CHAR(sysdate,'yyyy')-1 AND INSTR(prs_kostensoort_oms,' VJ')=0 ;
|
||
|
||
CURSOR c_ikea
|
||
IS
|
||
SELECT fin_verkoopfactuur_key,
|
||
fin_verkoopfactuur_maand,
|
||
prs_kostensoort_oms
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_datum IS NULL
|
||
AND fin_verkoopfactuur_c8 = p_soort
|
||
AND fin_verkoopfactuur_n5 = COALESCE(p_subaccount, -1)
|
||
AND fin_verkoopfactuur_n5 IN (461, 281) --IKEA interfaces - ikea of ikea-beheer
|
||
AND fin_verkoopfactuur_maand = TO_CHAR(sysdate,'yyyy')-1 ;
|
||
|
||
BEGIN
|
||
|
||
-- aanvullen prs_kostensoort_oms met ' VJ' zodat deze netjes in exact naar de balansrekeningen gaan
|
||
FOR rec IN c_vj
|
||
LOOP
|
||
|
||
UPDATE fin_verkoopfactuur
|
||
SET prs_kostensoort_oms = prs_kostensoort_oms || ' VJ'
|
||
WHERE fin_verkoopfactuur_key = rec.fin_verkoopfactuur_key ;
|
||
|
||
END LOOP;
|
||
|
||
-- alle ikea-facturen op 1 VK-factuur krijgen door ze op huidig boekjaar te zetten
|
||
FOR rec IN c_ikea
|
||
LOOP
|
||
|
||
UPDATE fin_verkoopfactuur
|
||
SET fin_verkoopfactuur_maand = TO_CHAR(sysdate,'yyyy')
|
||
WHERE fin_verkoopfactuur_key = rec.fin_verkoopfactuur_key ;
|
||
|
||
END LOOP;
|
||
|
||
END;
|
||
/
|
||
|
||
-- preprocessing: separate min-verkoopfacturen genereren - WAS VOOR DSM... NOG NODIG?
|
||
CREATE OR REPLACE PROCEDURE aaxx_exact_verkoop_preproces_2 (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_opdr_jaar IN VARCHAR2
|
||
)
|
||
AS
|
||
|
||
CURSOR c_group
|
||
IS
|
||
SELECT fin_verkoopfactuur_maand,
|
||
prs_kostensoort_oms,
|
||
SUM (fin_verkoopfactuur_bedrag) bedrag_totaal,
|
||
REPLACE (prs_kostensoortgrp_oms, ',', '')
|
||
|| ' - '
|
||
|| prs_debiteur_naam
|
||
|| ' - '
|
||
|| fin_verkoopfactuur_c5
|
||
|| ' - '
|
||
|| DECODE (aaxx_get_user,
|
||
'NMM', '',
|
||
'DSM', '',
|
||
'RABO', '',
|
||
'EXPO', '',
|
||
'INLO', '',
|
||
prs_kostenplaats_nr)
|
||
|| ' - '
|
||
|| fin_verkoopfactuur_c2
|
||
|| ' - '
|
||
|| DECODE (aaxx_get_user, 'AH', '')
|
||
|| ' - '
|
||
|| fin_verkoopfactuur_maand
|
||
group_header
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_datum IS NULL AND fin_verkoopfactuur_maand = p_opdr_jaar
|
||
GROUP BY fin_verkoopfactuur_maand,
|
||
prs_kostensoort_oms,
|
||
REPLACE (prs_kostensoortgrp_oms, ',', ''),
|
||
prs_debiteur_naam,
|
||
fin_verkoopfactuur_c5,
|
||
DECODE (aaxx_get_user,
|
||
'NMM', '',
|
||
'DSM', '',
|
||
'RABO', '',
|
||
'EXPO', '',
|
||
'INLO', '',
|
||
prs_kostenplaats_nr),
|
||
fin_verkoopfactuur_c2,
|
||
DECODE (aaxx_get_user, 'AH', ''),
|
||
fin_verkoopfactuur_maand;
|
||
|
||
CURSOR c_factuur (
|
||
p_opdr_jaar VARCHAR2,
|
||
p_kostensoort_oms VARCHAR2,
|
||
p_group_header VARCHAR2
|
||
)
|
||
IS
|
||
SELECT v.fin_verkoopfactuur_key
|
||
FROM (SELECT vf.fin_verkoopfactuur_key,
|
||
prs_kostensoort_oms,
|
||
fin_verkoopfactuur_bedrag,
|
||
fin_verkoopfactuur_maand,
|
||
fin_verkoopfactuur_c2,
|
||
(SELECT fin_verkoopfactuur_c2
|
||
|| REPLACE (prs_kostensoortgrp_oms, ',', '')
|
||
|| DECODE (aaxx_get_user,
|
||
'DSM', '',
|
||
prs_kostenplaats_nr)
|
||
FROM fin_verkoopfactuur v
|
||
WHERE fin_verkoopfactuur_datum IS NULL
|
||
AND fin_verkoopfactuur_maand = p_opdr_jaar
|
||
AND v.fin_verkoopfactuur_key =
|
||
vf.fin_verkoopfactuur_key)
|
||
groep_result,
|
||
(SELECT replace(prs_kostensoortgrp_oms, ',', '') || ' - ' || prs_debiteur_naam || ' - ' || fin_verkoopfactuur_c5 || ' - ' || DECODE(aaxx_get_user, 'NMM', '', 'DSM', '', 'RABO', '', 'EXPO', '', 'INLO', '', prs_kostenplaats_nr) || ' - ' || fin_verkoopfactuur_c2 || ' - ' || DECODE(aaxx_get_user, 'AH', '') || ' - ' || fin_verkoopfactuur_maand
|
||
FROM fin_verkoopfactuur v
|
||
WHERE fin_verkoopfactuur_datum IS NULL
|
||
AND fin_verkoopfactuur_maand = p_opdr_jaar
|
||
AND v.fin_verkoopfactuur_key =
|
||
vf.fin_verkoopfactuur_key)
|
||
groep_by
|
||
FROM fin_verkoopfactuur vf
|
||
WHERE fin_verkoopfactuur_datum IS NULL
|
||
AND fin_verkoopfactuur_maand = p_opdr_jaar) v
|
||
WHERE prs_kostensoort_oms = p_kostensoort_oms
|
||
AND groep_by = p_group_header
|
||
ORDER BY v.groep_result, v.prs_kostensoort_oms;
|
||
|
||
BEGIN
|
||
|
||
-- separate min-verkoopfacturen genereren
|
||
FOR rec IN c_group
|
||
LOOP
|
||
-- Voor MIN de verkoopfactuur_key(s) ophalen - Vooralsnog alleen voor DSM
|
||
IF rec.bedrag_totaal < 0
|
||
THEN
|
||
|
||
BEGIN
|
||
|
||
FOR rec2 IN c_factuur (rec.fin_verkoopfactuur_maand, rec.prs_kostensoort_oms, rec.group_header)
|
||
LOOP
|
||
|
||
UPDATE fin_verkoopfactuur
|
||
SET fin_verkoopfactuur_c2 = fin_verkoopfactuur_c2 || '-MIN-'
|
||
WHERE fin_verkoopfactuur_key = rec2.fin_verkoopfactuur_key ;
|
||
|
||
END LOOP;
|
||
END;
|
||
|
||
END IF;
|
||
|
||
END LOOP;
|
||
|
||
|
||
END;
|
||
/
|
||
|
||
-- Voordat de verkoopfacturen naar Exact geexporteerd wordt moet de volgorde van de subregels gecorrigeerd worden
|
||
CREATE OR REPLACE PROCEDURE aaxx_select_exact_verkoop (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_opdr_jaar IN VARCHAR2,
|
||
p_soort IN VARCHAR2,
|
||
p_subaccount IN NUMBER DEFAULT NULL
|
||
)
|
||
AS
|
||
|
||
CURSOR c1 IS
|
||
SELECT result, result_order
|
||
FROM aaxx_v_export_exact_verkoop_t
|
||
WHERE opdr_jaar = p_opdr_jaar AND soort = p_soort
|
||
AND COALESCE(TO_CHAR(subaccount), 'LEEG') = COALESCE(TO_CHAR(p_subaccount), 'LEEG')
|
||
ORDER BY result_order;
|
||
v_first NUMBER;
|
||
v_count NUMBER;
|
||
BEGIN
|
||
v_count := 0;
|
||
|
||
-- preprocessing uitvoeren
|
||
-- 1. Voor CORE de VJ ivm balansrekeningen exact nog goed zetten + IKEA alles op 1 verkoopfactuur krijgen
|
||
IF p_soort IN ('CORE', 'PROJECT') THEN
|
||
|
||
BEGIN aaxx_exact_verkoop_preproces_1(p_applname, p_applrun, p_soort, p_subaccount); END;
|
||
|
||
END IF;
|
||
|
||
-- 2. Min-factuur bepalen DSM
|
||
--- voorlopig alleen voor DSM
|
||
--- ACTIE-ACTIE: Pas bij uitrol DSM-verkoopinterface dit aanzetten ALS NOG NOIDIG?!?!
|
||
-- IF aaxx_get_user IN ('DSM') THEN
|
||
-- BEGIN aaxx_exact_verkoop_preproces_2(p_applname, p_applrun,p_opdr_jaar); END;
|
||
-- END IF;
|
||
|
||
DELETE aaxx_exp_exact_verkoop;
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_first := substr(rec.result, 1,1);
|
||
IF v_first = 0 THEN
|
||
v_count := 0;
|
||
ELSE
|
||
v_count := v_count + 1;
|
||
END IF;
|
||
|
||
INSERT INTO aaxx_exp_exact_verkoop (
|
||
result,
|
||
result_order)
|
||
VALUES (
|
||
v_count || substr (rec.result, 2),
|
||
rec.result_order|| TO_CHAR(v_count, 'FM0000')); -- voorkom dat de sortering door beinvloed wordt door de 1000.
|
||
-- TO_CHAR(1000+v_count)); -- forceer sortering bij count > 9
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
-- Na dat de verkoopfacturen naar Exact geexporteerd zijn wordt de timestamp gezet.
|
||
CREATE OR REPLACE PROCEDURE aaxx_export_exact_verkoop (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2,
|
||
p_opdr_jaar IN VARCHAR2,
|
||
p_soort IN VARCHAR2,
|
||
p_subaccount IN NUMBER DEFAULT NULL
|
||
)
|
||
AS
|
||
v_timestamp DATE;
|
||
v_verkoopfactuurkop_key NUMBER (10);
|
||
BEGIN
|
||
v_timestamp := SYSDATE;
|
||
|
||
INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id)
|
||
VALUES( p_opdr_jaar
|
||
|| '-'
|
||
|| TO_CHAR (v_timestamp, 'yyyy-mm-dd hh24:mi:ss')
|
||
|| DECODE (p_subaccount, NULL, '', '_' || TO_CHAR(p_subaccount))
|
||
)
|
||
RETURNING fin_verkoopfactuurkop_key
|
||
INTO v_verkoopfactuurkop_key;
|
||
|
||
UPDATE fin_verkoopfactuur
|
||
SET fin_verkoopfactuur_datum = v_timestamp,
|
||
fin_verkoopfactuurkop_key = v_verkoopfactuurkop_key
|
||
WHERE fin_verkoopfactuur_datum IS NULL
|
||
AND fin_verkoopfactuur_maand = p_opdr_jaar
|
||
AND fin_verkoopfactuur_c8 = p_soort
|
||
AND COALESCE(TO_CHAR(fin_verkoopfactuur_n5), 'LEEG') = COALESCE(TO_CHAR(p_subaccount), 'LEEG') ;
|
||
|
||
|
||
IF p_soort = 'RES'
|
||
THEN
|
||
INSERT INTO imp_schedule (imp_schedule_name)
|
||
VALUES ('EXACT_VERKOOP_VJ_R');
|
||
ELSE
|
||
IF p_soort = 'PROJECT'
|
||
THEN
|
||
INSERT INTO imp_schedule (imp_schedule_name)
|
||
VALUES (DECODE (p_subaccount, NULL, 'EXACT_VERKOOP_VJ_P', 'EXACT_VK_VJ_P_' || TO_CHAR(p_subaccount)) );
|
||
ELSE
|
||
INSERT INTO imp_schedule (imp_schedule_name)
|
||
VALUES (DECODE (p_subaccount, NULL, 'EXACT_VERKOOP_VJ', 'EXACT_VK_VJ_' || TO_CHAR(p_subaccount)) );
|
||
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
/
|
||
|
||
-------------------------------------------
|
||
-- RAPPORTAGES - Inkoop en Verkoop
|
||
-------------------------------------------
|
||
|
||
-- Verkoop:
|
||
-- Detailrapport van de verkooprun. Wordt als factuurbijlage van de exact-verkoopfactuur meegestuurd naar klant
|
||
--- opgebouwd uit 2 views: detail_0 (basis) en detail_1 (klantrapport)
|
||
CREATE OR REPLACE VIEW aaxx_v_fin_verkooprun_detail_0
|
||
(
|
||
fin_verkoopfactuurkop_key,
|
||
verkooprun,
|
||
verkooprun_datum,
|
||
soort,
|
||
subaccount,
|
||
--hoofdfactuur_groepering
|
||
vk_hoofdgroep,
|
||
vk_detailgroep,
|
||
-- relevante gegevens uit financieel-inkoopfacturen
|
||
inkoopfactuur_nr,
|
||
inkoopfactuur_nr_cred,
|
||
fin_factuur_datum,
|
||
-- relevante gegevens uit verkoopfactuur - header
|
||
prs_debiteur_naam,
|
||
verkoopfactuur_ref, -- debiteurnaam + c5
|
||
verkoopfactuur_po, -- c6
|
||
prs_kostensoortgrp_oms,
|
||
fin_verkoopfactuur_maand,
|
||
-- relevante gegevens uit verkoopfactuur - details
|
||
verkoopfactuur_id,
|
||
verplichting_type,
|
||
prs_kostensoort_oms,
|
||
fin_verkoopfactuur_omschr,
|
||
fin_btwtabelwaarde_code,
|
||
fin_verkoopfactuur_bedrag,
|
||
prs_kostenplaats_nr,
|
||
fin_verkoopfactuur_c1, -- exactcode
|
||
verplichting_referentie,
|
||
-- overige verplichtings-gegevens
|
||
opdracht_begindatum,
|
||
opdracht_einddatum,
|
||
opdracht_omschrijving,
|
||
bron_omschrijving, -- std_melding_oms - contractoms
|
||
leverancier,
|
||
line_item, --fin_verkoopfactuur_c7
|
||
district,
|
||
locatie,
|
||
gebouw_code,
|
||
kostensoort_oms,
|
||
kostensoort_opmerking,
|
||
prs_kostenplaats_nr_v, -- kp van verplichting
|
||
prs_kostenplaats_omschrijving,
|
||
prs_perslid_naam_full, -- requestor
|
||
relatie_type,
|
||
btw_percentage,
|
||
ordernummer_klant_opdr
|
||
)
|
||
AS
|
||
SELECT vf.fin_verkoopfactuurkop_key,
|
||
TO_CHAR (vf.fin_verkoopfactuur_datum, 'yyyy-mm-dd hh24;mi')
|
||
|| ' - '
|
||
|| TO_CHAR (vf.fin_verkoopfactuurkop_key)
|
||
verkooprun,
|
||
vf.fin_verkoopfactuur_datum,
|
||
fin_verkoopfactuur_c8
|
||
soort,
|
||
CASE WHEN f.prs_kostenplaatsgrp_key IS NOT NULL THEN (SELECT kpg.prs_kostenplaatsgrp_oms FROM prs_kostenplaatsgrp kpg WHERE kpg.prs_kostenplaatsgrp_key = f.prs_kostenplaatsgrp_key) ELSE '' END
|
||
subaccount,
|
||
-- hoofdfactuur_groepering - GELIJK AAN GROEPERING IN aaxx_v_export_exact_verkoop_t
|
||
fin_verkoopfactuur_maand
|
||
|| prs_debiteur_naam
|
||
|| fin_verkoopfactuur_c2
|
||
|| fin_verkoopfactuur_c6
|
||
|| REPLACE (prs_kostensoortgrp_oms, ',', '')
|
||
|| DECODE (aaxx_get_user,
|
||
'NMM', '',
|
||
'DSM', '',
|
||
'RABO', '',
|
||
'EXPO', '',
|
||
'INLO', '',
|
||
vf.prs_kostenplaats_nr)
|
||
|| fin_verkoopfactuur_c5
|
||
|| '-0-'
|
||
vk_hoofdgroep,
|
||
-- detailfactuur_groepering - GELIJK AAN GROEPERING IN aaxx_v_export_exact_verkoop_t
|
||
fin_verkoopfactuur_maand
|
||
|| prs_debiteur_naam
|
||
|| fin_verkoopfactuur_c2
|
||
|| fin_verkoopfactuur_c6
|
||
|| REPLACE (prs_kostensoortgrp_oms, ',', '')
|
||
|| DECODE (aaxx_get_user,
|
||
'NMM', '',
|
||
'DSM', '',
|
||
'RABO', '',
|
||
'EXPO', '',
|
||
'INLO', '',
|
||
vf.prs_kostenplaats_nr)
|
||
|| fin_verkoopfactuur_c5
|
||
|| '-1-'
|
||
|| fin_verkoopfactuur_c3
|
||
|| REPLACE (fin_verkoopfactuur_omschr, ',', '')
|
||
|| prs_kostensoort_oms
|
||
vk_detailgroep,
|
||
-- relevante gegevens uit financieel-inkoopfacturen
|
||
vf.fin_verkoopfactuur_n4, -- inkoopfactuur_nr
|
||
f.fin_factuur_nr, -- inkoopfactuur_nr_cred
|
||
f.fin_factuur_datum,
|
||
-- relevante gegevens uit verkoopfactuur - header
|
||
vf.prs_debiteur_naam,
|
||
vf.prs_debiteur_naam
|
||
|| DECODE (
|
||
vf.fin_verkoopfactuur_c8,
|
||
'PROJECT', '',
|
||
DECODE (fin_verkoopfactuur_c5,
|
||
NULL, NULL,
|
||
' ' || fin_verkoopfactuur_c5))
|
||
verkoopfactuur_ref,
|
||
vf.fin_verkoopfactuur_c6
|
||
verkoopfactuur_po,
|
||
vf.prs_kostensoortgrp_oms,
|
||
vf.fin_verkoopfactuur_maand,
|
||
-- relevante gegevens uit verkoopfactuur - details
|
||
vf.fin_verkoopfactuur_id,
|
||
vf.fin_verkoopfactuur_xmlnode
|
||
verplichting_type,
|
||
vf.prs_kostensoort_oms,
|
||
vf.fin_verkoopfactuur_omschr,
|
||
vf.fin_btwtabelwaarde_code,
|
||
vf.fin_verkoopfactuur_bedrag,
|
||
vf.prs_kostenplaats_nr,
|
||
vf.fin_verkoopfactuur_c1,
|
||
f.opdracht_id
|
||
verplichting_ref,
|
||
-- overige verplichtings-gegevens
|
||
DECODE (vf.fin_verkoopfactuur_xmlnode,
|
||
'opdracht', o.mld_opdr_datumbegin,
|
||
'contract', c.cnt_contract_looptijd_van,
|
||
'bestelopdr', b.bes_bestelopdr_datum,
|
||
NULL)
|
||
opdracht_begindatum,
|
||
DECODE (vf.fin_verkoopfactuur_xmlnode,
|
||
'opdracht', o.mld_opdr_einddatum,
|
||
'contract', c.cnt_contract_looptijd_tot,
|
||
'bestelopdr', b.bes_bestelopdr_leverdatum,
|
||
NULL)
|
||
opdracht_einddatum,
|
||
DECODE (vf.fin_verkoopfactuur_xmlnode,
|
||
'opdracht', o.mld_opdr_omschrijving,
|
||
'contract', DECODE (c.cnt_contract_document, NULL, c.cnt_contract_omschrijving, c.cnt_contract_omschrijving || CHR(13) || c.cnt_contract_document) ,
|
||
'bestelopdr', 'levering',
|
||
NULL)
|
||
opdracht_omschrijving,
|
||
DECODE (vf.fin_verkoopfactuur_xmlnode,
|
||
'opdracht', mp.mld_stdmelding_omschrijving,
|
||
'contract', c.cnt_contract_omschrijving,
|
||
'bestelopdr', 'levering',
|
||
NULL)
|
||
bron_omschrijving,
|
||
COALESCE (cb.prs_bedrijf_naam,
|
||
ob.prs_bedrijf_naam,
|
||
bb.prs_bedrijf_naam,
|
||
'onbekend')
|
||
leverancier,
|
||
COALESCE (vf.fin_verkoopfactuur_c7, '001')
|
||
line_item, -- line-item uit po-tabel
|
||
COALESCE (cp.alg_district_omschrijving,
|
||
mp.alg_district_omschrijving,
|
||
bp.alg_district_omschrijving,
|
||
'onbekend')
|
||
district,
|
||
COALESCE (cp.alg_locatie_omschrijving,
|
||
mp.alg_locatie_omschrijving,
|
||
bp.alg_locatie_omschrijving,
|
||
'onbekend')
|
||
locatie,
|
||
COALESCE (cp.alg_gebouw_code,
|
||
mp.alg_gebouw_code,
|
||
bp.alg_gebouw_code,
|
||
NULL)
|
||
gebouw_code,
|
||
vf.prs_kostensoort_oms,
|
||
vf.prs_kostensoort_opmerking,
|
||
f.prs_kostenplaats_nr
|
||
prs_kostenplaats_nr_v,
|
||
f.prs_kostenplaats_omschrijving,
|
||
COALESCE (cp.prs_perslid_naam_full,
|
||
mp.prs_perslid_naam_full,
|
||
bp.prs_perslid_naam_full,
|
||
NULL)
|
||
prs_perslid_naam_full,
|
||
COALESCE (cb.prs_relatietype,
|
||
ob.prs_relatietype,
|
||
bb.prs_relatietype,
|
||
'onbekend')
|
||
relatie_type,
|
||
aaxx_get_verkoop_btw_perc(vf.fin_btwtabelwaarde_code)
|
||
btw_percentage,
|
||
TO_CHAR (
|
||
(SELECT DISTINCT COALESCE (mld_kenmerkopdr_waarde, '')
|
||
FROM mld_kenmerkopdr ko,
|
||
mld_kenmerk k,
|
||
mld_srtkenmerk sk
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND k.mld_kenmerk_key = ko.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND ko.mld_kenmerkopdr_verwijder IS NULL
|
||
AND k.mld_kenmerk_verwijder IS NULL
|
||
AND sk.mld_srtkenmerk_omschrijving =
|
||
'Ordernummer klant'))
|
||
ordernummer_klant_opdr
|
||
FROM fin_verkoopfactuur vf,
|
||
( SELECT fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_nr,
|
||
fin_factuur_datum,
|
||
kp.prs_kostenplaats_nr,
|
||
kp.prs_kostenplaats_omschrijving,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
v.prs_kostenplaatsgrp_key
|
||
FROM aaxx_v_factuur_gegevens v, prs_kostenplaats kp
|
||
WHERE v.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
||
GROUP BY fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_nr,
|
||
fin_factuur_datum,
|
||
kp.prs_kostenplaats_nr,
|
||
kp.prs_kostenplaats_omschrijving,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
v.prs_kostenplaatsgrp_key) f,
|
||
mld_opdr o,
|
||
cnt_contract c,
|
||
bes_bestelopdr b,
|
||
(SELECT m.mld_melding_key,
|
||
(SELECT v.alg_gebouw_code
|
||
FROM alg_v_allonrgoed_gegevens v
|
||
WHERE v.alg_onroerendgoed_keys =
|
||
m.mld_alg_onroerendgoed_keys)
|
||
alg_gebouw_code,
|
||
l.alg_locatie_omschrijving,
|
||
d.alg_district_omschrijving,
|
||
prs_perslid_naam_full,
|
||
sm.mld_stdmelding_omschrijving
|
||
FROM mld_melding m,
|
||
mld_stdmelding sm,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
prs_v_perslid_fullnames v --, aaxx_v_dwh_prs_bedrijf vb
|
||
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND l.alg_district_key = d.alg_district_key
|
||
AND m.prs_perslid_key = v.prs_perslid_key) mp,
|
||
(SELECT cnt_contract_key,
|
||
ag.alg_gebouw_code,
|
||
ag.alg_gebouw_key,
|
||
ag.alg_gebouw_naam,
|
||
ag.alg_locatie_key,
|
||
l.alg_locatie_omschrijving,
|
||
d.alg_district_omschrijving,
|
||
'Heyday' prs_perslid_naam_full -- keuze om altijd met heyday te vullen
|
||
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,
|
||
alg_locatie l,
|
||
alg_district d
|
||
WHERE cp.cnt_alg_plaats_key = ag.alg_gebouw_key
|
||
AND ag.alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = d.alg_district_key) cp,
|
||
( SELECT v.bes_bestelopdr_key,
|
||
v.mld_adres_key_lev,
|
||
l.alg_locatie_omschrijving,
|
||
NULL alg_gebouw_code,
|
||
d.alg_district_omschrijving,
|
||
prs_perslid_naam_full
|
||
FROM aaxx_v_bestelgegevens v,
|
||
bes_bestelopdr bo,
|
||
prs_v_perslid_fullnames v,
|
||
mld_adres ad,
|
||
alg_locatie l,
|
||
alg_district d
|
||
WHERE v.mld_adres_key_lev = ad.mld_adres_key
|
||
AND ad.alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = d.alg_district_key
|
||
AND v.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
AND bo.prs_perslid_key = v.prs_perslid_key
|
||
GROUP BY v.bes_bestelopdr_key,
|
||
v.mld_adres_key_lev,
|
||
l.alg_locatie_omschrijving,
|
||
d.alg_district_omschrijving,
|
||
prs_perslid_naam_full) bp,
|
||
(SELECT c.cnt_contract_key, v.prs_bedrijf_naam, v.prs_relatietype
|
||
FROM cnt_contract c, aaxx_v_dwh_prs_bedrijf v
|
||
WHERE c.cnt_prs_bedrijf_key = v.prs_bedrijf_key) cb,
|
||
(SELECT o.mld_opdr_key,
|
||
v.prs_bedrijf_naam,
|
||
COALESCE (pr.mld_project_voorwaarden, v.prs_relatietype) -- Voor PR-meldingen is kenmerkveld leading voor contracttype
|
||
prs_relatietype
|
||
FROM mld_opdr o,
|
||
aaxx_v_dwh_prs_bedrijf v,
|
||
aaxx_v_projectorders_bron pr
|
||
WHERE o.mld_uitvoerende_keys = v.prs_bedrijf_key
|
||
AND o.mld_opdr_key = pr.mld_opdr_key(+)) ob,
|
||
(SELECT b.bes_bestelopdr_key,
|
||
v.prs_bedrijf_naam,
|
||
v.prs_relatietype
|
||
FROM bes_bestelopdr b, aaxx_v_dwh_prs_bedrijf v
|
||
WHERE b.prs_bedrijf_key = v.prs_bedrijf_key) bb
|
||
WHERE vf.fin_verkoopfactuur_n4 = f.fin_factuur_key
|
||
AND f.mld_opdr_key = o.mld_opdr_key(+)
|
||
AND o.mld_melding_key = mp.mld_melding_key(+)
|
||
AND o.mld_opdr_key = ob.mld_opdr_key(+)
|
||
AND f.cnt_contract_key = c.cnt_contract_key(+)
|
||
AND c.cnt_contract_key = cp.cnt_contract_key(+)
|
||
AND c.cnt_contract_key = cb.cnt_contract_key(+)
|
||
AND f.bes_bestelopdr_key = b.bes_bestelopdr_key(+)
|
||
AND b.bes_bestelopdr_key = bp.bes_bestelopdr_key(+)
|
||
AND b.bes_bestelopdr_key = bb.bes_bestelopdr_key(+) ;
|
||
|
||
CREATE OR REPLACE VIEW aaxx_v_fin_verkooprun_detail_1
|
||
(
|
||
verkooprun,
|
||
soort,
|
||
subaccount,
|
||
verkooprun_datum,
|
||
groepering,
|
||
positie,
|
||
debiteur,
|
||
kolom_1,
|
||
kolom_2,
|
||
kolom_3,
|
||
kolom_4,
|
||
kolom_5,
|
||
kolom_6, -- bedragen (ex btw)
|
||
kolom_7, -- detail inkoopfactuurnr
|
||
kolom_8, -- detail inkoopfactuurnr_lev,
|
||
kolom_9, -- detail leverancier
|
||
kolom_10, -- factuurdatum
|
||
kolom_11, -- line-item
|
||
kolom_12, -- district
|
||
kolom_13, -- locatie en gebouw_code
|
||
kolom_14, -- bron_omschrijving (std-melding, contract)
|
||
kolom_15, -- kostensoort_opm (dienst)
|
||
kolom_16, -- kostenplaats_nr (= costcenter uit verplichting)
|
||
kolom_17, -- kostenplaats_omschrijving (= department)
|
||
kolom_18, -- reguestor (aanvrager full_naam)
|
||
kolom_19, -- relatie_type
|
||
kolom_20, -- btw_code
|
||
kolom_21, -- bedrag (incl. btw)
|
||
kolom_22 -- ordernummer klant (bij opdrachten)
|
||
)
|
||
AS
|
||
SELECT *
|
||
FROM ( -- HOOFD-GEGEVENS (kopregel verkoopfactuur)
|
||
SELECT verkooprun,
|
||
soort,
|
||
DECODE(aaxx_get_user, 'INLO', subaccount, NULL),
|
||
verkooprun_datum,
|
||
vk_hoofdgroep,
|
||
'1',
|
||
prs_debiteur_naam debiteur_naam_filter,
|
||
prs_debiteur_naam,
|
||
verkoopfactuur_ref, -- debiteurnaam + c5
|
||
verkoopfactuur_po, -- c6
|
||
prs_kostensoortgrp_oms,
|
||
fin_verkoopfactuur_maand,
|
||
SUM (fin_verkoopfactuur_bedrag) bedrag_totaal,
|
||
NULL kolom_7,
|
||
NULL kolom_8,
|
||
NULL kolom_9,
|
||
NULL kolom_10,
|
||
NULL kolom_11,
|
||
NULL kolom_12,
|
||
NULL kolom_13,
|
||
NULL kolom_14,
|
||
NULL kolom_15,
|
||
NULL kolom_16,
|
||
NULL kolom_17,
|
||
NULL kolom_18,
|
||
NULL kolom_19,
|
||
NULL kolom_20,
|
||
NULL kolom_21,
|
||
NULL kolom_22
|
||
FROM aaxx_v_fin_verkooprun_detail_0
|
||
GROUP BY verkooprun,
|
||
soort,
|
||
DECODE(aaxx_get_user, 'INLO', subaccount, NULL),
|
||
verkooprun_datum,
|
||
vk_hoofdgroep,
|
||
prs_debiteur_naam,
|
||
verkoopfactuur_ref,
|
||
verkoopfactuur_po,
|
||
prs_kostensoortgrp_oms,
|
||
fin_verkoopfactuur_maand
|
||
UNION ALL
|
||
-- ONDERLIGGENDE DETAILGEGEVENS
|
||
SELECT verkooprun,
|
||
soort,
|
||
subaccount,
|
||
verkooprun_datum,
|
||
vk_detailgroep,
|
||
'2',
|
||
prs_debiteur_naam
|
||
debiteur_naam_filter,
|
||
'',
|
||
verplichting_referentie,
|
||
opdracht_omschrijving,
|
||
prs_kostensoort_oms,
|
||
TO_CHAR (opdracht_begindatum, 'dd-mm-yyyy'),
|
||
fin_verkoopfactuur_bedrag,
|
||
inkoopfactuur_nr, -- kolom 7
|
||
inkoopfactuur_nr_cred, -- 8
|
||
leverancier, -- 9
|
||
fin_factuur_datum, -- 10
|
||
line_item,
|
||
district,
|
||
locatie || ' ' || gebouw_code,
|
||
bron_omschrijving,
|
||
-- kostensoort_oms || ' ' || kostensoort_opmerking, -- fin_client
|
||
kostensoort_opmerking, -- dienst
|
||
prs_kostenplaats_nr_v,
|
||
prs_kostenplaats_omschrijving,
|
||
prs_perslid_naam_full,
|
||
relatie_type,
|
||
btw_percentage || '%',
|
||
ROUND (
|
||
(fin_verkoopfactuur_bedrag * (100 + btw_percentage))
|
||
/ 100,
|
||
2)
|
||
bedrag_incl_btw,
|
||
ordernummer_klant_opdr
|
||
FROM aaxx_v_fin_verkooprun_detail_0) v
|
||
ORDER BY 1, 4, 5;
|
||
|
||
|
||
-------------------------------------------------------------------------------
|
||
-- EXPORTFUNCTIES DATAWAREHOUSE
|
||
-------------------------------------------------------------------------------
|
||
|
||
-- Overzicht/inzicht in de KWALITEIT van de MAREON-factuurverwerking
|
||
--- 1. Verhouding XML-PDF
|
||
--- 2. Uitval op <geen referentie herkenning> en <categroie D-facturen>
|
||
--- 3. Doorlooptijd verwerking en inzicht in de administratieve controles die lopen
|
||
-- View maakt onderdeel uit van DWH-HEYDAY. Op basis van deze view zijn in hun powerBI-tool de dashboards opgesteld voor Finance
|
||
--- Bij veranderingen in de mareon-factuurverwerking (bijv nieuwe controles) deze dwh-view ook aanpassen
|
||
|
||
CREATE OR REPLACE VIEW aaxx_v_dwh_mareon_facturatie
|
||
(
|
||
omgeving,
|
||
omgeving_subaccount, -- inlo multiclients - kpg-groepen
|
||
fin_factuur_key,
|
||
fin_factuur_datum,
|
||
referentie_soort,
|
||
referentie_ordernummer,
|
||
referentie_key,
|
||
leverancier,
|
||
controle_fina14, -- geen_referentie
|
||
controle_fina15, -- d_categorie
|
||
controle_fina21, -- factuurregel(s) niet aangemaakt
|
||
controle_fina01,
|
||
controle_fina02,
|
||
controle_fina03,
|
||
controle_fina05,
|
||
controle_fina06,
|
||
controle_fina08,
|
||
controle_fina09,
|
||
controle_fina11,
|
||
controle_fina12,
|
||
controle_fina13,
|
||
controle_fina16,
|
||
controle_fina17,
|
||
controle_fina18,
|
||
controle_fina19,
|
||
controle_fina20,
|
||
fin_factuur_aanmaak,
|
||
fin_factuur_aanmaak_week,
|
||
fin_factuur_aanmaak_maand,
|
||
fin_factuur_aanmaak_kwartaal,
|
||
fin_factuur_datum_export,
|
||
fin_factuur_verwijder,
|
||
fin_factuur_status,
|
||
fin_factuur_kwaliteit,
|
||
fin_factuur_doorlooptijd,
|
||
fin_factuur_bron_mareon_type,
|
||
fin_factuur_referentie_init,
|
||
fin_factuur_intern_bedrijf -- zie ticket AAIT#84789
|
||
)
|
||
AS
|
||
SELECT aaxx_get_user
|
||
omgeving,
|
||
CASE WHEN aaxx_get_user IN ('INLO') AND r.prs_kostenplaatsgrp_oms IS NULL
|
||
THEN aaxx_get_user || ' - subaccount onbekend'
|
||
WHEN aaxx_get_user IN ('INLO') AND r.prs_kostenplaatsgrp_oms IS NOT NULL
|
||
THEN r.prs_kostenplaatsgrp_nr || ' - ' || r.prs_kostenplaatsgrp_oms
|
||
ELSE ''
|
||
END
|
||
omgeving_subaccount,
|
||
r.fin_factuur_key,
|
||
r.fin_factuur_datum,
|
||
r.referentie_soort,
|
||
r.referentie_ordernummer,
|
||
r.referentie_key,
|
||
CASE WHEN r.referentie_soort = 'opdracht' THEN (SELECT prs_bedrijf_naam FROM mld_opdr o, prs_bedrijf b WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key AND o.mld_opdr_key = r.referentie_key )
|
||
WHEN r.referentie_soort = 'contract' THEN (SELECT prs_bedrijf_naam FROM cnt_contract c, prs_bedrijf b WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_key = r.referentie_key )
|
||
WHEN r.referentie_soort = 'bestelling' THEN (SELECT prs_bedrijf_naam FROM bes_bestelopdr bo, prs_bedrijf b WHERE bo.prs_bedrijf_key = b.prs_bedrijf_key AND bo.bes_bestelopdr_key = r.referentie_key )
|
||
ELSE ''
|
||
END
|
||
leverancier,
|
||
rc.controle_FINA14,
|
||
rc.controle_FINA15,
|
||
rc.controle_FINA21,
|
||
rc.controle_FINA01,
|
||
rc.controle_FINA02,
|
||
rc.controle_FINA03,
|
||
rc.controle_FINA05,
|
||
rc.controle_FINA06,
|
||
rc.controle_FINA08,
|
||
rc.controle_FINA09,
|
||
rc.controle_FINA11,
|
||
rc.controle_FINA12,
|
||
rc.controle_FINA13,
|
||
rc.controle_FINA16,
|
||
rc.controle_FINA17,
|
||
rc.controle_FINA18,
|
||
rc.controle_FINA19,
|
||
rc.controle_FINA20,
|
||
r.fin_factuur_aanmaak,
|
||
CASE WHEN LENGTH(TO_CHAR (r.fin_factuur_aanmaak, 'ww')) = 1 THEN TO_CHAR(TO_NUMBER (TO_CHAR (r.fin_factuur_aanmaak, 'yyyy'))) || '-0' || TO_CHAR (r.fin_factuur_aanmaak, 'ww')
|
||
ELSE TO_CHAR(TO_NUMBER (TO_CHAR (r.fin_factuur_aanmaak, 'yyyy'))) || '-' || TO_CHAR (r.fin_factuur_aanmaak, 'ww')
|
||
END
|
||
periode_week,
|
||
CASE WHEN LENGTH(TO_CHAR (r.fin_factuur_aanmaak, 'mm')) = 1 THEN TO_CHAR(TO_NUMBER (TO_CHAR (r.fin_factuur_aanmaak, 'yyyy'))) || '-0' || TO_CHAR (r.fin_factuur_aanmaak, 'mm')
|
||
ELSE TO_CHAR(TO_NUMBER (TO_CHAR (r.fin_factuur_aanmaak, 'yyyy'))) || '-' || TO_CHAR (r.fin_factuur_aanmaak, 'mm')
|
||
END
|
||
periode_maand,
|
||
TO_CHAR (ADD_MONTHS (r.fin_factuur_aanmaak, 1), 'yyyy')
|
||
|| '-' || TRUNC( (TO_NUMBER (TO_CHAR (ADD_MONTHS (r.fin_factuur_aanmaak, 1), 'mm'))
|
||
+ 2)
|
||
/ 3)
|
||
periode_kwartaal,
|
||
r.fin_factuur_datum_export,
|
||
CASE WHEN r.fin_factuur_verwijder IS NULL THEN '0' ELSE '1' END
|
||
fin_factuur_verwijder,
|
||
r.fin_factuur_status,
|
||
CASE WHEN rc.controle_FINA14 = 'ja' OR rc.controle_FINA15 = 'ja' OR rc.controle_FINA21 = 'ja'
|
||
THEN '0 - incompleet'
|
||
WHEN rc.controle_FINA14 = 'nee' AND rc.controle_FINA15 = 'nee' AND rc.controle_FINA21 = 'nee' AND
|
||
(
|
||
rc.controle_FINA01 = 'ja' OR rc.controle_FINA02 = 'ja' OR rc.controle_FINA03 = 'ja' OR rc.controle_FINA05 = 'ja' OR rc.controle_FINA06 = 'ja'
|
||
OR rc.controle_FINA08 = 'ja' OR rc.controle_FINA09 = 'ja' OR rc.controle_FINA11 = 'ja' OR rc.controle_FINA12 = 'ja' OR rc.controle_FINA13 = 'ja'
|
||
OR rc.controle_FINA16 = 'ja' OR rc.controle_FINA17 = 'ja' OR rc.controle_FINA18 = 'ja' OR rc.controle_FINA19 = 'ja' OR rc.controle_FINA20 = 'ja'
|
||
)
|
||
THEN '1 - ok, met admin-controle(s)'
|
||
WHEN rc.controle_FINA14 = 'nee' AND rc.controle_FINA15 = 'nee' AND rc.controle_FINA21 = 'nee'
|
||
AND rc.controle_FINA01 = 'nee' AND rc.controle_FINA02 = 'nee' AND rc.controle_FINA03 = 'nee' AND rc.controle_FINA05 = 'nee' AND rc.controle_FINA06 = 'nee'
|
||
AND rc.controle_FINA08 = 'nee' AND rc.controle_FINA09 = 'nee' AND rc.controle_FINA11 = 'nee' AND rc.controle_FINA12 = 'nee' AND rc.controle_FINA13 = 'nee'
|
||
AND rc.controle_FINA16 = 'nee' AND rc.controle_FINA17 = 'nee' AND rc.controle_FINA18 = 'nee' AND rc.controle_FINA19 = 'nee' AND rc.controle_FINA20 = 'nee'
|
||
THEN '2 - ok, zonder admin-controle(s)'
|
||
END
|
||
fin_factuur_kwaliteit,
|
||
CASE WHEN r.fin_factuur_datum_export IS NOT NULL THEN ROUND(r.fin_factuur_datum_export-r.fin_factuur_aanmaak,2) ELSE NULL END
|
||
fin_factuur_doorlooptijd,
|
||
r.mareon_bron,
|
||
r.fin_factuur_referentie_init,
|
||
r.fin_factuur_intern_bedrijf
|
||
FROM (SELECT f.fin_factuur_key,
|
||
f.fin_factuur_datum,
|
||
ff.prs_kostenplaatsgrp_nr,
|
||
ff.prs_kostenplaatsgrp_oms,
|
||
CASE WHEN f.opdr_id IS NOT NULL THEN 'opdracht'
|
||
WHEN f.contract_id IS NOT NULL THEN 'contract'
|
||
WHEN f.bestel_id IS NOT NULL THEN 'bestelling'
|
||
ELSE ''
|
||
END
|
||
referentie_soort,
|
||
CASE WHEN f.opdr_id IS NOT NULL THEN (SELECT mld_opdr_key FROM fin_factuur WHERE fin_factuur_key = f.fin_factuur_key)
|
||
WHEN f.contract_id IS NOT NULL THEN (SELECT cnt_contract_key FROM fin_factuur WHERE fin_factuur_key = f.fin_factuur_key)
|
||
WHEN f.bestel_id IS NOT NULL THEN (SELECT bes_bestelopdr_key FROM fin_factuur WHERE fin_factuur_key = f.fin_factuur_key)
|
||
ELSE NULL
|
||
END
|
||
referentie_key,
|
||
COALESCE (f.opdr_id, f.contract_id, f.bestel_id)
|
||
referentie_ordernummer,
|
||
f.fin_factuur_aanmaak,
|
||
f.fin_factuur_datum_export,
|
||
f.fin_factuur_verwijder,
|
||
f.fin_factuur_status,
|
||
kw.mareon_bron,
|
||
f.fin_factuur_opmerking,
|
||
CASE WHEN INSTR(f.fin_factuur_opmerking, 'Referentienr: is niet gevonden (none)')>0 OR INSTR(f.fin_factuur_opmerking, 'Referentienr: is niet gevonden') = 0
|
||
THEN 'geen referentie uit mareon gekregen'
|
||
WHEN INSTR(f.fin_factuur_opmerking, 'Referentienr: is niet gevonden (none)')=0 OR INSTR(f.fin_factuur_opmerking, 'Referentienr: is niet gevonden') > 0
|
||
THEN TRIM(SUBSTR(f.fin_factuur_opmerking, INSTR(f.fin_factuur_opmerking, 'Referentienr: is niet gevonden')+LENGTH('Referentienr: is niet gevonden')+2,
|
||
INSTR(SUBSTR(f.fin_factuur_opmerking, INSTR(f.fin_factuur_opmerking, 'Referentienr: is niet gevonden') + LENGTH('Referentienr: is niet gevonden')+2), ')')-1 -- lengte tot waar tekst getoond moet worden
|
||
)
|
||
)
|
||
ELSE ''
|
||
END
|
||
fin_factuur_referentie_init, -- Wordt meegegeven vanuit mareon in het opmerkingsveld
|
||
f.fin_factuur_intern_bedrijf
|
||
FROM aaxx_v_dwh_fin_factuur f,
|
||
( SELECT ff.fin_factuur_key,
|
||
kpg.prs_kostenplaatsgrp_nr,
|
||
kpg.prs_kostenplaatsgrp_oms
|
||
FROM aaxx_v_factuur_gegevens ff,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE ff.prs_kostenplaatsgrp_key =
|
||
kpg.prs_kostenplaatsgrp_key (+)
|
||
GROUP BY ff.fin_factuur_key,
|
||
kpg.prs_kostenplaatsgrp_nr,
|
||
kpg.prs_kostenplaatsgrp_oms) ff,
|
||
(SELECT km.fin_factuur_key,
|
||
km.fin_kenmerkfactuur_waarde mareon_bron
|
||
FROM fin_kenmerkfactuur km, fin_kenmerk k
|
||
WHERE km.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_code = 'MAREON_BRON') kw
|
||
WHERE f.fin_factuur_key = ff.fin_factuur_key(+)
|
||
AND f.fin_factuur_bron_mareon = 'mareon'
|
||
AND f.fin_factuur_key = kw.fin_factuur_key(+)
|
||
GROUP BY f.fin_factuur_key, f.fin_factuur_datum, ff.prs_kostenplaatsgrp_nr, ff.prs_kostenplaatsgrp_oms, f.opdr_id, f.contract_id, f.bestel_id, f.fin_factuur_aanmaak, f.fin_factuur_datum_export, f.fin_factuur_verwijder, f.fin_factuur_status, kw.mareon_bron, f.fin_factuur_opmerking, f.fin_factuur_intern_bedrijf
|
||
) r, -- resultaat mareon-facturen
|
||
(SELECT f.fin_factuur_key,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Factuur incompleet i.v.m. ontbrekende orderreferentie (vanuit scanning)' -- FINA14
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA14,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Betreft D-categorie factuur!' -- FINA15
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA15,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Factuurregels niet (allemaal) aangemaakt' -- FINA21
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA21,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Deze factuur is ingeboekt terwijl de Opdracht al op VERWERKT staat' -- FINA01
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA01,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Hetzelfde factuur-nummer is al eerder geregistreerd op deze Opdracht' -- FINA02
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA02,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Bedrag van gekoppelde verplichting is 0,- euro'
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA03,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Credit geboekt op Opdracht/Bestelling'
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA05,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Credit geboekt op Contract in voorgaande periode'
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA06,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Betreft factuur op Contract uit vorig boekjaar'
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA08,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Contract is op factuur zonder versie-nummer weergegeven; hoogste versienr is gekoppeld'
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA09,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Dit betreft een verzamelfactuur'
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA11,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - PDF opslaan voor SABIC GENK'
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA12,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Contract CF en 90% al gefactureerd in voorgaande periode'
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA13,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Leveranciersnummer ontbreekt op leverancierskaart'
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA16,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Contract met gebroken boekjaar (check verdeelperiode)'
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA17,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - PDF factuur doorzetten naar klant'
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA18,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Factuur op opdracht met 0-reden'
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA19,
|
||
CASE WHEN (SELECT ft.fac_tracking_key
|
||
FROM fac_tracking ft, fac_srtnotificatie sn
|
||
WHERE ft.fac_tracking_oms = 'CONTROLE - Factuur op contract met onjuiste scoping'
|
||
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINUPD'
|
||
AND ft.fac_tracking_refkey = f.fin_factuur_key) IS NULL
|
||
THEN 'nee'
|
||
ELSE 'ja'
|
||
END
|
||
controle_FINA20
|
||
FROM fin_factuur f
|
||
) rc -- resultaat controles
|
||
WHERE r.fin_factuur_key = rc.fin_factuur_key ;
|
||
|
||
-------------------------------------------------------------------------------
|
||
-- GRANTS naar AAFM database.
|
||
-------------------------------------------------------------------------------
|
||
|
||
GRANT SELECT ON aaxx_v_dwh_mareon_facturatie TO aafm;
|
||
|
||
------ payload end ------
|
||
|
||
SET DEFINE OFF
|
||
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
||
/
|
||
|
||
COMMIT;
|
||
SET ECHO OFF
|
||
SPOOL OFF
|
||
SET DEFINE ON
|
||
PROMPT Logfile of this upgrade is: &fcltlogfile
|