4733 lines
268 KiB
SQL
4733 lines
268 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
|
||
-------------------------------------------
|
||
|
||
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;
|
||
/
|
||
|
||
-------------------------------------------
|
||
-- 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 (20);
|
||
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, 20);
|
||
|
||
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 ;
|
||
|
||
-------------------------------------------
|
||
-- INKOOPINTERFACE - exportfunctie - EXACT
|
||
-------------------------------------------
|
||
|
||
-- Inkoop: Alle facturen akkoord - Gebruikersoverzicht inkoopfacturen die wel/niet meegaan de EXACT inkooprun in
|
||
--- dit is ook de bronview voor de export EXACT (de inkoopfacturen die wel/niet meegaan naar Exact)
|
||
CREATE OR REPLACE VIEW aaxx_v_export_exact_check
|
||
(
|
||
prs_kostenplaatsgrp_nr,
|
||
fin_factuur_key,
|
||
check_in_inkooprun,
|
||
fin_factuur_totaal,
|
||
check_factuurdatum, -- facturen mogen niet ouder zijn dan 5 jaar of meer dan <20><>n jaar in de toekomst
|
||
check_dubbelefactuur, -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn met status ingevoerd, afgewezen of incompleet
|
||
check_nogtecontroleren, -- factuur staat op controle en moet nog gecontroleerd worden (vinkje controle nog niet gezet)
|
||
check_onholdgezet, -- filterstatus 1 = bolletje 'On hold - Niet meenemen in inkooprun'
|
||
check_admin_exact, -- voor inlo en aait gelden meerdere administratie met een vereiste match op SUBSTR(prs_kostenplaatsgrp_nr, 1, 3)
|
||
check_geen_kostensoort, -- facturen zonder kostensoort niet meenemen
|
||
check_geen_grootboeknr, -- facturen zonder grootboeknr ( = financiele waarde op de kostensoort = prs_kostensoort_refcode)
|
||
check_geen_leveranciernr, -- nog geen exact-leverancier-nr bekend
|
||
check_po_klant_project, -- tbv projectorders (voor klantadministratie AAES, DSM, INLO-COV....) controle op gevulde 'ordernummer klant'
|
||
check_filter_nietnaarexact -- filterstatus 2 = inkoopfactuur gaat niet naar exact (niet in XML-output) maar wordt wel op verwerkt gezet
|
||
)
|
||
AS
|
||
SELECT CASE
|
||
WHEN f.prs_kostenplaatsgrp_key IS NOT NULL
|
||
THEN
|
||
(SELECT prs_kostenplaatsgrp_nr
|
||
|| ' - '
|
||
|| prs_kostenplaatsgrp_oms
|
||
FROM prs_kostenplaatsgrp
|
||
WHERE prs_kostenplaatsgrp_key =
|
||
f.prs_kostenplaatsgrp_key)
|
||
ELSE
|
||
NULL
|
||
END
|
||
prs_kostenplaatsgrp_nr,
|
||
f.fin_factuur_key,
|
||
CASE
|
||
WHEN f.check_factuurdatum IS NULL
|
||
AND f.check_dubbelefactuur IS NULL
|
||
AND f.check_nogtecontroleren IS NULL
|
||
AND f.check_onholdgezet IS NULL
|
||
AND kp.check_admin_exact IS NULL
|
||
AND f.check_geen_kostensoort IS NULL
|
||
AND f.check_geen_grootboeknr IS NULL
|
||
AND f.check_geen_leveranciernr IS NULL
|
||
AND f.check_po_klant_project IS NULL
|
||
AND f.check_nietnaarexact IS NULL
|
||
THEN
|
||
'Ja'
|
||
ELSE
|
||
'Nee'
|
||
END
|
||
inkooprun,
|
||
f.fin_factuur_totaal,
|
||
f.check_factuurdatum,
|
||
f.check_dubbelefactuur,
|
||
f.check_nogtecontroleren,
|
||
f.check_onholdgezet,
|
||
kp.check_admin_exact,
|
||
f.check_geen_kostensoort,
|
||
f.check_geen_grootboeknr,
|
||
f.check_geen_leveranciernr,
|
||
f.check_po_klant_project,
|
||
f.check_nietnaarexact
|
||
FROM (SELECT f.fin_factuur_key,
|
||
fs.fin_factuur_statuses_omschr,
|
||
COALESCE (kp_cnt.prs_kostenplaatsgrp_key,
|
||
kp_opd.prs_kostenplaatsgrp_key,
|
||
kp_bes.prs_kostenplaatsgrp_key)
|
||
prs_kostenplaatsgrp_key,
|
||
CASE
|
||
WHEN f.prs_kostensoort_key IS NULL
|
||
THEN
|
||
'geen kostensoort!'
|
||
ELSE
|
||
''
|
||
END
|
||
check_geen_kostensoort,
|
||
CASE
|
||
WHEN k.prs_kostensoort_key IS NOT NULL
|
||
AND k.prs_kostensoort_refcode IS NULL
|
||
THEN
|
||
'geen grootboeknr!'
|
||
ELSE
|
||
''
|
||
END
|
||
check_geen_grootboeknr,
|
||
CASE
|
||
WHEN 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 COALESCE (pr.mld_po_nr_afw, pr.mld_po_nr)
|
||
IS NULL
|
||
AND ( aaxx_get_user IN ('ESSENT') -- ('DSM', 'GN', 'ESSENT')
|
||
OR ( aaxx_get_user IN ('INLO')
|
||
AND pr.inlo_subaccount IN ('COVESTRO')))
|
||
THEN
|
||
'geen ordernummer klant!'
|
||
ELSE
|
||
''
|
||
END
|
||
check_po_klant_project,
|
||
COALESCE (
|
||
o.prs_kostenplaats_key,
|
||
COALESCE (
|
||
c.prs_kostenplaats_key,
|
||
(SELECT DISTINCT b.prs_kostenplaats_key
|
||
FROM bes_bestelling b,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi
|
||
WHERE bo.bes_bestelopdr_key =
|
||
boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_key =
|
||
bi.bes_bestelopdr_item_key
|
||
AND bi.bes_bestelling_key =
|
||
b.bes_bestelling_key)))
|
||
prs_kostenplaats_key,
|
||
f.fin_factuur_totaal,
|
||
CASE
|
||
WHEN f.fin_factuur_datum < SYSDATE - (5 * 365)
|
||
OR f.fin_factuur_datum > SYSDATE + 365
|
||
THEN
|
||
'ongeldige factuurdatum: '
|
||
|| TO_CHAR (f.fin_factuur_datum, 'dd-mm-yyyy')
|
||
ELSE
|
||
''
|
||
END
|
||
check_factuurdatum,
|
||
( -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn met status ingevoerd(2) of incompleet(3)
|
||
SELECT DECODE (COUNT (*), 0, '', 'dubbele factuur!')
|
||
FROM fin_factuur f_t,
|
||
cnt_contract c_t,
|
||
bes_bestelopdr b_t,
|
||
mld_opdr o_t
|
||
WHERE f_t.fin_factuur_verwijder IS NULL
|
||
AND f_t.mld_opdr_key = o_t.mld_opdr_key(+)
|
||
AND f_t.cnt_contract_key = c_t.cnt_contract_key(+)
|
||
AND f_t.bes_bestelopdr_key =
|
||
b_t.bes_bestelopdr_key(+)
|
||
AND COALESCE (
|
||
o_t.mld_uitvoerende_keys,
|
||
COALESCE (b_t.prs_bedrijf_key,
|
||
c_t.cnt_prs_bedrijf_key)) =
|
||
COALESCE (
|
||
o.mld_uitvoerende_keys,
|
||
COALESCE (bo.prs_bedrijf_key,
|
||
c.cnt_prs_bedrijf_key))
|
||
AND f.fin_factuur_nr = f_t.fin_factuur_nr
|
||
AND f_t.fin_factuur_statuses_key IN (2, 3)
|
||
AND f.fin_factuur_statuses_key = 6)
|
||
check_dubbelefactuur,
|
||
CASE
|
||
WHEN contr.fin_factuur_controle = 1
|
||
AND fin_factuur_controle_ok IS NULL
|
||
THEN
|
||
'Controle - Nog doen'
|
||
ELSE
|
||
''
|
||
END
|
||
check_nogtecontroleren,
|
||
CASE
|
||
WHEN f.fin_factuur_flag = 1 THEN 'on hold'
|
||
ELSE ''
|
||
END
|
||
check_onholdgezet,
|
||
CASE
|
||
WHEN f.fin_factuur_flag = 2 THEN 'niet naar exact - wordt wel verwerkt'
|
||
ELSE ''
|
||
END
|
||
check_nietnaarexact
|
||
FROM fin_factuur f,
|
||
prs_kostensoort k,
|
||
fin_factuur_statuses fs,
|
||
mld_opdr o,
|
||
mld_typeopdr ot,
|
||
cnt_contract c,
|
||
bes_bestelopdr bo,
|
||
prs_bedrijf b_o,
|
||
prs_bedrijf b_c,
|
||
prs_bedrijf b_b,
|
||
aaxx_v_projectorders_bron pr,
|
||
(SELECT fin_factuur_key,
|
||
(SELECT fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerkfactuur fk, fin_kenmerk k
|
||
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_verwijder IS NULL
|
||
AND UPPER (fin_kenmerk_omschrijving) =
|
||
'EXTRA CONTROLE?'
|
||
AND fk.fin_factuur_key = f.fin_factuur_key)
|
||
fin_factuur_controle,
|
||
(SELECT fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerkfactuur fk, fin_kenmerk k
|
||
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_verwijder IS NULL
|
||
AND UPPER (fin_kenmerk_omschrijving) =
|
||
'GECONTROLEERD'
|
||
AND fk.fin_factuur_key = f.fin_factuur_key)
|
||
fin_factuur_controle_ok
|
||
FROM fin_factuur f) contr,
|
||
( SELECT fin_factuur_key,
|
||
c.prs_kostenplaats_key,
|
||
kpg.prs_kostenplaatsgrp_key,
|
||
kpg.prs_kostenplaatsgrp_nr
|
||
FROM fin_factuur f,
|
||
cnt_contract c,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE f.cnt_contract_key = c.cnt_contract_key
|
||
AND c.prs_kostenplaats_key =
|
||
kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaatsgrp_key =
|
||
kpg.prs_kostenplaatsgrp_key(+)
|
||
ORDER BY f.fin_factuur_key DESC) kp_cnt,
|
||
( SELECT fin_factuur_key,
|
||
o.prs_kostenplaats_key,
|
||
kpg.prs_kostenplaatsgrp_key,
|
||
kpg.prs_kostenplaatsgrp_nr
|
||
FROM fin_factuur f,
|
||
mld_opdr o,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE f.mld_opdr_key = o.mld_opdr_key
|
||
AND o.prs_kostenplaats_key =
|
||
kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaatsgrp_key =
|
||
kpg.prs_kostenplaatsgrp_key(+)
|
||
ORDER BY f.fin_factuur_key DESC) kp_opd,
|
||
( SELECT DISTINCT f.fin_factuur_key,
|
||
b.prs_kostenplaats_key,
|
||
kpg.prs_kostenplaatsgrp_key,
|
||
kpg.prs_kostenplaatsgrp_nr
|
||
FROM fin_factuur f,
|
||
bes_bestelling b,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE f.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_key =
|
||
bi.bes_bestelopdr_item_key
|
||
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
||
AND b.prs_kostenplaats_key =
|
||
kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaatsgrp_key =
|
||
kpg.prs_kostenplaatsgrp_key(+)
|
||
ORDER BY f.fin_factuur_key DESC) kp_bes
|
||
WHERE f.fin_factuur_statuses_key =
|
||
fs.fin_factuur_statuses_key
|
||
AND f.fin_factuur_key = contr.fin_factuur_key
|
||
AND f.prs_kostensoort_key = k.prs_kostensoort_key(+)
|
||
AND f.mld_opdr_key = o.mld_opdr_key(+)
|
||
AND f.mld_opdr_key = pr.mld_opdr_key(+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
|
||
AND f.cnt_contract_key = c.cnt_contract_key(+)
|
||
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
|
||
AND bo.prs_bedrijf_key = b_b.prs_bedrijf_key(+)
|
||
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
|
||
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
|
||
AND f.fin_factuur_key = kp_cnt.fin_factuur_key(+)
|
||
AND f.fin_factuur_key = kp_opd.fin_factuur_key(+)
|
||
AND f.fin_factuur_key = kp_bes.fin_factuur_key(+)
|
||
AND f.fin_factuur_verwijder IS NULL
|
||
AND f.fin_factuur_statuses_key = 6 -- op akkoord
|
||
) f,
|
||
(SELECT kp.prs_kostenplaats_key,
|
||
CASE
|
||
WHEN aaxx_get_user IN ('INLO', 'IT')
|
||
AND SUBSTR (prs_kostenplaatsgrp_nr, 1, 3) IN
|
||
(SELECT administratie
|
||
FROM aaxx_v_administratie)
|
||
THEN
|
||
''
|
||
WHEN aaxx_get_user NOT IN ('INLO', 'IT')
|
||
THEN
|
||
''
|
||
ELSE
|
||
'kostenplaatsgrp_nr niet in interface bekend '
|
||
|| SUBSTR (kpg.prs_kostenplaatsgrp_nr, 1, 3)
|
||
END
|
||
check_admin_exact
|
||
FROM prs_kostenplaats kp, prs_kostenplaatsgrp kpg
|
||
WHERE kp.prs_kostenplaatsgrp_key =
|
||
kpg.prs_kostenplaatsgrp_key(+)) kp
|
||
WHERE f.prs_kostenplaats_key = kp.prs_kostenplaats_key;
|
||
|
||
CREATE OR REPLACE VIEW aaxx_v_aanwezigfactuur
|
||
(
|
||
FIN_FACTUUR_KEY,
|
||
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'))),
|
||
'2023', k.prs_kostensoort_refcode,
|
||
DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper, 1, 3),
|
||
'CF ', '1350827',
|
||
'CFE', '1350827',
|
||
'CV ', '1350828',
|
||
'CVE', '1350829',
|
||
'NC ', DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper,
|
||
1,
|
||
7),
|
||
'NC PROJ', '1350830',
|
||
'1350829'),
|
||
'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'))),
|
||
'2023', k.prs_kostensoort_refcode,
|
||
DECODE (
|
||
SUBSTR(COALESCE(kp_cnt.prs_kostenplaatsgrp_nr, kp_opd.prs_kostenplaatsgrp_nr, kp_bes.prs_kostenplaatsgrp_nr),1,3),
|
||
'400', '1350831',
|
||
'401', '1350831',
|
||
'500', '1350832',
|
||
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'))),
|
||
'2023', k.prs_kostensoort_refcode,
|
||
DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper, 1, 2),
|
||
'L ', DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper,
|
||
1,
|
||
5),
|
||
'L CF ', '1350827',
|
||
'L CFE', '1350827',
|
||
'L CV ', '1350828',
|
||
'L CVE', '1350829',
|
||
'L NC ', DECODE (
|
||
SUBSTR (
|
||
k.prs_kostensoort_upper,
|
||
1,
|
||
9),
|
||
'L NC PROJ', '1350830',
|
||
'1350829'),
|
||
'Onbekend'),
|
||
DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper, 1, 3),
|
||
'CF ', '1350827',
|
||
'CFE', '1350827',
|
||
'CV ', '1350828',
|
||
'CVE', '1350829',
|
||
'NC ', DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper,
|
||
1,
|
||
7),
|
||
'NC PROJ', '1350830',
|
||
'1350829'),
|
||
'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'))),
|
||
'2023', k.prs_kostensoort_refcode,
|
||
DECODE (
|
||
SUBSTR (k.prs_kostensoort_upper, 1, 3),
|
||
'CF ', '1350827',
|
||
'CFE', '1350827',
|
||
'CV ', '1350828',
|
||
'CVE', '1350829',
|
||
'NC ', DECODE (SUBSTR (k.prs_kostensoort_upper, 1, 7),
|
||
'NC PROJ', '1350830',
|
||
'1350829'),
|
||
'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
|
||
'SMKA',
|
||
(select exact_code from aaxx_v_exact_code_district_fac ecgf where ecgf.fin_factuur_key = fg.fin_factuur_key),
|
||
'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 '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;
|
||
|
||
|
||
-- 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, distict 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 bedrijfskey van de hoogste afdeling
|
||
-- fin_verkoopfactuur_n3 projectmarge
|
||
-- fin_verkoopfactuur_n4 fin_factuur_key
|
||
-- 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
|
||
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
|
||
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,
|
||
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,
|
||
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;
|
||
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.
|
||
-- AAIT#36442 AAIT niet meenemen in dit mechanisme omdat bij AAIT de kostensoort uit de opdracht
|
||
-- gehaald wordt.
|
||
IF aaxx_get_user <> 'IT'
|
||
THEN
|
||
v_errormsg := 'Aanpassen kostensoort';
|
||
FOR reck IN c_sync_kostensoort
|
||
LOOP
|
||
BEGIN
|
||
IF reck.fac_kostensoort_key <> reck.std_kostensoort_key
|
||
THEN
|
||
UPDATE fin_factuur
|
||
SET prs_kostensoort_key = reck.std_kostensoort_key
|
||
WHERE fin_factuur_key = reck.fin_factuur_key;
|
||
|
||
-- Pas de login aan
|
||
INSERT INTO fac_tracking (fac_tracking_refkey, fac_srtnotificatie_key, fac_tracking_oms)
|
||
SELECT reck.fin_factuur_key, fac_srtnotificatie_key, 'Kostensoort aangepast in factuur export'
|
||
FROM fac_srtnotificatie
|
||
WHERE fac_srtnotificatie_code = 'FINUPD';
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
END IF;
|
||
|
||
-- Verkoopinterface - START
|
||
|
||
v_logdate := SYSDATE;
|
||
-- voeg SA en ST 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
|
||
)
|
||
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr, 1,30 ) fin_verkoopfactuur_id,
|
||
'opdracht',
|
||
o.mld_opdr_key,
|
||
v_logdate,
|
||
SUBSTR (
|
||
DECODE (aaxx_get_user, 'AH', k.prs_kostenplaats_nr,
|
||
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
|
||
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'520'),
|
||
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
|
||
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'520'),
|
||
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
||
'NC ', DECODE (ks.prs_kostensoort_upper, 'NC PROJ', aaxx_get_top_dep_code(k.prs_kostenplaats_nr), 'Onbekend')),
|
||
'EXPO', DECODE(aaxx_get_top_dep_code(k.prs_kostenplaats_nr), '913918', '03701000',
|
||
'4001', '03700000',
|
||
'Onbekend'),
|
||
'ESSENT', '99999999',
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', '99999999',
|
||
-- = de INLO-standaard voor kostenplaats (gevuld op regelniveau kolom AM (39)
|
||
k.prs_kostenplaats_nr
|
||
),
|
||
'NMM', 'MGB',
|
||
'SABIC', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
k.prs_kostenplaats_nr)
|
||
, 1, 30)
|
||
prs_kostenplaats_nr,
|
||
SUBSTR (
|
||
DECODE (aaxx_get_user, 'AH', DECODE(aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), 13383, k.prs_kostenplaats_nr, aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
||
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
|
||
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'520'),
|
||
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
|
||
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'520'),
|
||
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
||
'NC ', DECODE (ks.prs_kostensoort_upper, 'NC PROJ', aaxx_get_top_dep_code(k.prs_kostenplaats_nr), 'Onbekend')),
|
||
'EXPO', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
-- OUD: 'INLO', aaxx_get_top_kpn_nr (k.prs_kostenplaats_key),
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3), 'CVE' , aaxx_get_top_kpn_nr (k.prs_kostenplaats_key), aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)),
|
||
-- = de INLO-standaard voor debiteurbepaling - kopregel kolom C
|
||
aaxx_get_top_kpn_nr (k.prs_kostenplaats_key)
|
||
),
|
||
'ESSENT', aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code),
|
||
'NMM', DECODE(k.prs_kostenplaats_nr,
|
||
'0001', '913799', -- Heijmans
|
||
'0002', '913810', -- Vermaat
|
||
'0003', '913766', -- Defensie
|
||
'0004', '913776', -- Stichting Nationaal Militair Museum
|
||
'Onbekend'
|
||
),
|
||
'RABO', aaxx_get_dep_code(k.prs_kostenplaats_nr),
|
||
'SABIC', (SELECT distinct prs_leverancier_nr FROM prs_bedrijf b, prs_afdeling a
|
||
WHERE b.prs_bedrijf_key = a.prs_bedrijf_key
|
||
AND b.prs_bedrijf_verwijder IS NULL
|
||
AND a.prs_afdeling_verwijder IS NULL
|
||
AND a.prs_afdeling_naam = aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
||
'SMKA', COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr)),
|
||
prs_kostenplaats_nr)
|
||
, 1, 60)
|
||
prs_debiteur_naam,
|
||
b.prs_bedrijf_key,
|
||
CASE WHEN ot.mld_typeopdr_omschrijving = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 THEN '8110555 REVENUE PROJECTS COST' || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','')
|
||
WHEN ot.mld_typeopdr_omschrijving = 'Projectorder (externe uren)' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 THEN '8110552 PROJECTS ORGANISATIE' || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','')
|
||
ELSE ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','')
|
||
END prs_kostensoort_oms, -- exact_artikelcode
|
||
ks.prs_kostensoort_opmerking,
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 THEN pr.po_nr
|
||
ELSE
|
||
SUBSTR (
|
||
DECODE (aaxx_get_user,
|
||
'AH', DECODE(SUBSTR(ks.prs_kostensoort_upper,1,2), 'CV', ksg.prs_kostensoortgrp_oms || DECODE(aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), 13383, k.prs_kostenplaats_nr, aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
||
sd.ins_srtdiscipline_prefix || m.mld_melding_key),
|
||
'EXPO', 'Servicekosten Core Variabel',
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', aaxx_get_po_nr('COVESTRO', NULL, NULL, l.alg_locatie_code,
|
||
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3), 'CVE' , aaxx_get_top_kpn_nr (k.prs_kostenplaats_key), aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)), -- debiteurnr
|
||
NULL,
|
||
ks.prs_kostensoort_upper, -- kostensoort_code
|
||
TRUNC(opdr_datum)),
|
||
-- = de INLO-standaard voor kostensoortgr_omschr - kopregel kolom D
|
||
'Servicekosten Core Variabel'
|
||
),
|
||
'ESSENT', aaxx_get_po_nr(NULL, NULL, NULL, g.alg_gebouw_code, NULL, NULL, NULL, TRUNC(opdr_datum)) || ' ' || SUBSTR(l.alg_locatie_code,1,4),
|
||
'RABO', 'Servicekosten ' || aaxx_get_dep_code(k.prs_kostenplaats_nr),
|
||
'SABIC', DECODE (l.alg_locatie_code, 'BOZ', 'Core Variabel ' || to_char(sysdate, 'Month'),
|
||
'RDV', 'Core Variabel ' || to_char(sysdate, 'Month'),
|
||
ksg.prs_kostensoortgrp_oms || ' ' || aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
||
'SMKA', 'Servicekosten Core Variabel',
|
||
'NMM', ksg.prs_kostensoortgrp_oms || DECODE(k.prs_kostenplaats_nr, '0001', ' Heijmans',
|
||
'0002', ' Vermaat',
|
||
'0003', ' Defensie',
|
||
'0004', ' NMM',' Onbekend'),
|
||
'DSM', ksg.prs_kostensoortgrp_oms || DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ' ' || l.alg_locatie_code || ' ' || to_char(sysdate, 'Month'),
|
||
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5) , 'L CV ', ' ' || l.alg_locatie_code || ' ' || to_char(sysdate, 'Month') )),
|
||
ksg.prs_kostensoortgrp_oms)
|
||
, 1, 60)
|
||
END prs_kostensoortgrp_oms, -- kopregel kolom D
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
||
THEN pr.mld_project_nr || ' ' || DECODE (ot.mld_typeopdr_omschrijving, 'Projectorder (externe uren)', 'Projecturen ' || pr.mld_project_omschrijving, pr.mld_project_omschrijving)
|
||
-- Voor CORE - Omschrijving subregel diverse mogelijkheden. Evt ook via PO-tabel en regelitem mogelijk te sturen...
|
||
ELSE DECODE (aaxx_get_user, -- SABIC via po-tabel en regel-items - NOG UITWERKEN/AANLEVEREN DEF. PO-tabel DSM
|
||
-- 'SABIC', aaxx_get_po_regel(NULL, NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum))
|
||
'SABIC', ks.prs_kostensoort_altcode || ' ' || fin_btwtabelwaarde_code,
|
||
'ESSENT', ks.prs_kostensoort_altcode,
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', 'Variabele dienstverlening' || ' ' || (SELECT TO_CHAR(fin_btwtabelwaarde_perc) || '%' FROM fin_btwtabelwaarde WHERE fin_btwtabelwaarde_key = fg.fin_btwtabelwaarde_key) ,
|
||
-- = de INLO-standaard voor omschrijving sub-regel
|
||
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' ' || d.ins_discipline_omschrijving
|
||
),
|
||
-- Oorspronkelijke standaard verkoopinterface...
|
||
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' ' || d.ins_discipline_omschrijving)
|
||
END fin_verkoopfactuur_omschr, -- omschrijving subregel
|
||
CASE WHEN ot.mld_typeopdr_omschrijving = 'Projectorder (externe uren)' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
||
THEN fg.bedrag * COALESCE(fac.safe_to_number(pr.uplift), 1)
|
||
ELSE DECODE (aaxx_get_user, 'NMM', 1.1 * fg.bedrag,
|
||
fg.bedrag)
|
||
END bedrag,
|
||
DECODE (aaxx_get_user,
|
||
'EXPO' , DECODE (ks.prs_kostensoort_upper, 'CV CONS AUT', 2, fin_btwtabelwaarde_code), -- code 2 is 6 procent
|
||
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
|
||
to_char(opdr_datum, 'YYYY'),
|
||
DECODE (aaxx_get_user,
|
||
-- Op district-niveau
|
||
'SMKA', COALESCE(exact_d.exact_code,'onbekend'),
|
||
'SABIC', COALESCE(exact_d.exact_code,'onbekend'),
|
||
'DSM', DECODE (l.alg_district_key, 22, COALESCE(exact_g.exact_code,'onbekend'), COALESCE(exact_d.exact_code,'onbekend')), -- DSM voor Limburg (key 22) op gebouwniveau en overige op districtniveau
|
||
'NMM', COALESCE(exact_d.exact_code,'onbekend'),
|
||
'ESSENT', COALESCE(exact_d.exact_code,'onbekend'),
|
||
-- Op klantgebouw-niveau
|
||
'INLO', COALESCE(exact_k.klantcode,'onbekend'),
|
||
-- Overig/Default op gebouw-niveau
|
||
COALESCE(exact_g.exact_code,'onbekend')) exact_code, -- C1
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 THEN pr.mld_project_nr || '-' || pr.po_nr
|
||
ELSE
|
||
SUBSTR (
|
||
DECODE (aaxx_get_user, 'AH', DECODE (ks.prs_kostensoort_upper, 'NC PROJ', TO_CHAR(m.mld_melding_key)),
|
||
-- DEZE KAN WEG OMDAT AL OP DEBITEURNAAM VOOR INLO DE GROUPING LOOPT 'INLO', aaxx_get_top_kpn_nr (k.prs_kostenplaats_key),
|
||
'DSM', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
|
||
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'520') || l.alg_locatie_code,
|
||
'CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'L C', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5), 'L CV ', DECODE (l.alg_locatie_code, 'ZWO', '913848',
|
||
'EMM', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'DLF', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
'520') || l.alg_locatie_code,
|
||
'L CVE', aaxx_get_top_dep_code(k.prs_kostenplaats_nr))),
|
||
'RABO', aaxx_get_dep_code(k.prs_kostenplaats_nr),
|
||
'SABIC',DECODE (l.alg_locatie_code, 'BOZ', to_char(sysdate, 'Month'),
|
||
'RDV', to_char(sysdate, 'Month'),
|
||
aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
||
'SMKA',DECODE (ksg.prs_kostensoortgrp_oms, 'Core Variable', 'CV',
|
||
'Core Variable Enduser', 'CVE',
|
||
'onbekend' || '-' || COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr))),
|
||
'')
|
||
, 1, 200)
|
||
END groepering, -- C2
|
||
CASE WHEN ot.mld_typeopdr_omschrijving = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 THEN 'PR'
|
||
WHEN ot.mld_typeopdr_omschrijving = 'Projectorder (externe uren)' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 THEN 'PR-U'
|
||
ELSE NULL
|
||
END subregelvolgorde, -- C3
|
||
l.alg_locatie_key, -- N1
|
||
aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), -- N2 bedrijfskey van de hoogste afdeling
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
||
THEN 'deelfactuur (nr ' || TO_CHAR(pr.teller_vk) || ')'
|
||
-- ACTIE: Voor CV-verkoopfacturen onderstaande nog uitwerken en aanzetten
|
||
ELSE DECODE (aaxx_get_user, 'SABIC', NULL, -- Later nog uitwerken = 1 CV t/m Mrt = Kan op STANDAARD terugvallen
|
||
'RABO', NULL, -- Later nog uitwerken - 913829 Var. dienstverl. MGB - WORDT: ksg.prs_kostensoortgrp_altcode || ' ' || l.alg_locatie_code,
|
||
'DSM', NULL, -- Later nog uitwerken
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', ksg.prs_kostensoortgrp_altcode || ' ' || l.alg_locatie_code,
|
||
-- = de INLO-standaard voor C5 waar de subaccounts uiteindelijk op kunnen terugvallen
|
||
-- ksg.prs_kostensoortgrp_altcode
|
||
NULL
|
||
),
|
||
'ESSENT', ksg.prs_kostensoortgrp_altcode || ' ' || SUBSTR(l.alg_locatie_code,1,4),
|
||
-- De standaard: ksg.prs_kostensoortgrp_altcode || ' t/m ' || to_char(SYSDATE, 'MON')
|
||
NULL
|
||
)
|
||
END fin_verkoopfactuur_c5, -- heyday-referentie - standaard aanvulling op kopregel positie 3
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
||
THEN pr.po_nr
|
||
-- Voor CV-verkoopfacturen dient PO-nummer uit de HEYDAY-PO-tabel opgehaald te worden
|
||
--- Via functie aaxx_get_po(p_aaxxuser_sub, p_klantcode, p_klantoms, p_plaatscode, p_debiteurnr, p_kostensoortgroep, p_kostensoortcode, p_datum)
|
||
-- In EXCEL ..... wordt de definitie bepaald per klantomgeving van de parameters die meegaan om PO op te halen
|
||
ELSE DECODE (aaxx_get_user, 'SABIC', NULL, -- Later nog uitwerken
|
||
'RABO', NULL, -- Later nog uitwerken
|
||
'DSM', NULL, -- Later nog uitwerken
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', aaxx_get_po_nr('COVESTRO', NULL, NULL, l.alg_locatie_code,
|
||
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3), 'CVE' , aaxx_get_top_kpn_nr (k.prs_kostenplaats_key), aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)), -- debiteurnr
|
||
NULL,
|
||
ks.prs_kostensoort_upper, -- kostensoort_code
|
||
TRUNC(opdr_datum)),
|
||
-- 'HENKEL', aaxx_get_po_nr('HENKEL', NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
-- 'ALLIANDER', aaxx_get_po_nr('ALLIANDER', NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
-- = de INLO-standaard voor PO-nr (indien geen resultaat in tabel dan krijg je NULL terug)
|
||
aaxx_get_po_nr(aaxx_get_user_sub('INLO', exact_k.klantcode), NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum))
|
||
),
|
||
'ESSENT', aaxx_get_po_nr(NULL, NULL, NULL, g.alg_gebouw_code, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
-- De standaard: Kostengroepsrt-alternatieve code + periode
|
||
NULL
|
||
)
|
||
END fin_verkoopfactuur_c6, -- po-nummer klant uit PO-tabel HEYDAY
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
||
THEN NULL
|
||
-- Voor CV-verkoopfacturen - Structuur/Systematiek IDEM aan fin_verkoopfactuur_c6 waarbij indien voor klantomgeving van toepassing het PO-REGEL uit de HEYDAY-PO-tabel opgehaald wordt
|
||
--- Via functie aaxx_get_po_regel(p_aaxxuser_sub, p_klantcode, p_klantoms, p_plaatscode, p_debiteurnr, p_kostensoortgroep, p_kostensoortcode, p_datum)
|
||
-- In EXCEL ..... wordt de definitie bepaald per klantomgeving van de parameters die meegaan om PO-REGEL op te halen
|
||
ELSE DECODE (aaxx_get_user, 'SABIC', NULL, -- Later nog uitwerken
|
||
'RABO', NULL, -- Later nog uitwerken
|
||
'DSM', NULL, -- Later nog uitwerken
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
-- 'HENKEL', aaxx_get_po_regel('HENKEL', NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
'COVESTRO', NULL,
|
||
-- = de INLO-standaard voor PO-regel
|
||
-- aaxx_get_po_regel(aaxx_get_user_sub('INLO', exact_k.klantcode), NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum))
|
||
NULL
|
||
),
|
||
'ESSENT', NULL,
|
||
-- De standaard: Kostengroepsrt-alternatieve code + periode
|
||
NULL
|
||
)
|
||
END fin_verkoopfactuur_c7, -- algemene regelomschrijving uit PO-tabel
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
||
THEN COALESCE(fac.safe_to_number(pr.uplift), 1)
|
||
ELSE NULL
|
||
END fin_verkoopfactuur_n3, -- projectmarge
|
||
CASE WHEN SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0
|
||
THEN 'PROJECT'
|
||
ELSE 'CORE'
|
||
END fin_verkoopfactuur_c8, -- soort verkoopfactuur
|
||
fg.fin_factuur_key
|
||
fin_verkoopfactuur_n4
|
||
FROM mld_opdr o,
|
||
mld_typeopdr ot,
|
||
prs_bedrijf b,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaatsgrp kpg,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd,
|
||
prs_kostensoort ks,
|
||
prs_kostensoortgrp ksg,
|
||
aaxx_exp_factuur f,
|
||
alg_gebouw g,
|
||
alg_locatie l,
|
||
alg_v_onroerendgoed og,
|
||
aaxx_v_exact_code_gebouw exact_g,
|
||
aaxx_v_exact_code_district exact_d,
|
||
aaxx_v_klantcode_gebouw exact_k,
|
||
aaxx_v_projectorders_bron pr,
|
||
(SELECT fin_factuur_key,
|
||
mld_opdr_key,
|
||
SUM (fin_factuurregel_totaal) bedrag,
|
||
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
|
||
fin_btwtabelwaarde_key,
|
||
prs_kostenplaats_key,
|
||
prs_kostensoort_key,
|
||
prs_kostensoort_refcode,
|
||
fin_factuur_boekmaand,
|
||
opdr_datum,
|
||
fin_factuur_datum
|
||
FROM aaxx_v_factuur_gegevens
|
||
WHERE fin_factuur_statuses_key = 6
|
||
GROUP BY fin_factuur_key,
|
||
fin_btwtabelwaarde_key,
|
||
mld_opdr_key,
|
||
prs_kostenplaats_key,
|
||
prs_kostensoort_key,
|
||
fin_factuur_boekmaand,
|
||
opdr_datum,
|
||
fin_factuur_datum,
|
||
fin_btwtabelwaarde_code,
|
||
prs_kostensoort_refcode) fg
|
||
WHERE fg.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND fg.mld_opdr_key = o.mld_opdr_key
|
||
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
|
||
AND og.alg_gebouw_key = g.alg_gebouw_key(+)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
||
AND l.alg_district_key =exact_d.alg_district_key (+)
|
||
AND og.alg_gebouw_key = exact_g.alg_gebouw_key(+)
|
||
AND og.alg_gebouw_key = exact_k.alg_gebouw_key(+)
|
||
AND fg.fin_factuur_key = f.fin_factuur_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
|
||
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
|
||
AND k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND o.mld_opdr_key = pr.mld_opdr_key(+)
|
||
AND (( sd.ins_srtdiscipline_prefix = 'SA'
|
||
AND aaxx_get_user <> 'AH'
|
||
AND aaxx_get_user <> 'GN'
|
||
AND aaxx_get_user <> 'DSM'
|
||
AND aaxx_get_user <> 'SABIC'
|
||
AND aaxx_get_user <> 'INLO'
|
||
AND aaxx_get_user <> 'NMM'
|
||
AND aaxx_get_user <> 'RABO'
|
||
AND aaxx_get_user <> 'ESSENT'
|
||
AND aaxx_get_user <> 'EXPO'
|
||
AND aaxx_get_user <> 'IT'
|
||
AND aaxx_get_user <> 'SMKA')
|
||
OR ( aaxx_get_user = 'GN'
|
||
AND (
|
||
sd.ins_srtdiscipline_prefix = 'SA'
|
||
OR
|
||
(SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 )
|
||
)
|
||
)
|
||
OR ( aaxx_get_user = 'AH'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %')
|
||
)
|
||
OR ( aaxx_get_user = 'DSM'
|
||
AND ( ( ( SUBSTR (ks.prs_kostensoort_upper, 1, 3) =
|
||
'CV '
|
||
OR SUBSTR (ks.prs_kostensoort_upper, 1, 5) =
|
||
'L CV ')
|
||
AND g.alg_gebouw_code NOT IN ('122-170',
|
||
'122-200',
|
||
'122-094',
|
||
'122-092')
|
||
AND l.alg_locatie_key NOT IN ('23', '41')) -- Waalwijk en de Beitel
|
||
OR SUBSTR (ks.prs_kostensoort_upper, 1, 3) = 'CVE'
|
||
OR SUBSTR (ks.prs_kostensoort_upper, 1, 5) = 'L CVE'
|
||
OR ( SUBSTR (ot.mld_typeopdr_omschrijving, 1, 12) =
|
||
'Projectorder'
|
||
AND INSTR (ks.prs_kostensoort_upper, 'NC PROJ') > 0)))
|
||
OR ( aaxx_get_user = 'ESSENT'
|
||
AND (
|
||
(ks.prs_kostensoort_upper LIKE 'CV %'
|
||
AND upper(aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)) NOT IN ('X') -- Voor alle gebouwen met gebouw-debiteur X gaan we GEEN verkoopfactuur aanmaken
|
||
)
|
||
OR
|
||
(SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 )
|
||
)
|
||
)
|
||
OR ( aaxx_get_user = 'EXPO'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %')
|
||
)
|
||
OR ( aaxx_get_user = 'INLO'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %'
|
||
OR (SUBSTR(ot.mld_typeopdr_omschrijving, 1, 12) = 'Projectorder' AND INSTR(ks.prs_kostensoort_upper,'NC PROJ')>0 AND aaxx_get_user_sub('INLO', exact_k.klantcode) IN ('COVESTRO') )
|
||
)
|
||
AND NOT EXISTS ( SELECT 1 FROM DUAL WHERE aaxx_get_user_sub('INLO', exact_k.klantcode) IN ('GREENPORT VENLO')) -- uitsluiten subaccounts voor INLO
|
||
AND NOT EXISTS ( SELECT 1 FROM DUAL WHERE aaxx_get_user_sub('INLO', exact_k.klantcode) IN ('COVESTRO') AND l.alg_locatie_code = 'GLN' AND INSTR(UPPER(g.alg_gebouw_naam), 'CHEMELOT CAMPUS')>0) -- uitsluiten COVESTRO-Campus Chemelot GELEEN
|
||
)
|
||
OR ( aaxx_get_user = 'NMM'
|
||
AND ks.prs_kostensoort_upper LIKE 'CVE%'
|
||
)
|
||
OR ( aaxx_get_user = 'RABO'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
AND ks.prs_kostensoort_upper <> 'CV DOC POST'
|
||
AND ot.mld_typeopdr_omschrijving = 'Workorder')
|
||
)
|
||
OR ( aaxx_get_user = 'SABIC'
|
||
AND ( ( o.mld_opdr_datumbegin < to_date ('20180101', 'yyyymmdd') -- Voor sabic geldt in 2018 een ander mechanisme (AASA#28673)
|
||
AND ks.prs_kostensoort_upper LIKE 'CV %'
|
||
AND ks.prs_kostensoort_upper <> 'CV CHIP'
|
||
AND ( o.mld_opdr_datumbegin > to_date ('20150101', 'yyyymmdd') -- Voor sabic geldt voor 2015 een ander mechanisme (AASA#31618)
|
||
OR ( ks.prs_kostensoort_upper <> 'CV CONS REST'
|
||
AND ks.prs_kostensoort_upper <> 'CV CONS AUT'
|
||
AND ks.prs_kostensoort_upper <> 'CV SCH OVR'
|
||
AND ks.prs_kostensoort_upper <> 'CV DOC POST'
|
||
AND ks.prs_kostensoort_upper <> 'CV AFVAL REST'
|
||
)
|
||
)
|
||
AND ( ks.prs_kostensoort_upper <> 'CV EIG BOUW PL' OR ot.mld_typeopdr_omschrijving = 'Workorder')
|
||
)
|
||
OR ( o.mld_opdr_datumbegin > to_date ('20180101', 'yyyymmdd') -- Voor sabic geldt voor 2018 een ander mechanisme (AASA#28673)
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE%')
|
||
)
|
||
)
|
||
)
|
||
OR ( aaxx_get_user = 'SMKA'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %')
|
||
)
|
||
OR ( aaxx_get_user = 'IT'
|
||
AND ( SUBSTR(kpg.prs_kostenplaatsgrp_nr,1,6) IN ('400-VK', '500-VK') -- VK is verkoopfacturen (zie AAIT#69225)
|
||
)
|
||
)
|
||
);
|
||
|
||
-- 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
|
||
)
|
||
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || 'C' || cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie), 1,30 ),
|
||
'contract',
|
||
c.cnt_contract_key,
|
||
v_logdate,
|
||
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',
|
||
-- = de INLO-standaard voor kostenplaats (gevuld op regelniveau kolom AM (39)
|
||
k.prs_kostenplaats_nr
|
||
),
|
||
'SMKA', k.prs_kostenplaats_nr, -- Wordt niet gebruikt.
|
||
'IT', k.prs_kostenplaats_nr,
|
||
'RABO', COALESCE(exact_g.exact_code,'onbekend'),
|
||
'SABIC', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
|
||
k.prs_kostenplaats_nr)
|
||
, 1, 30)
|
||
prs_kostenplaats_nr,
|
||
SUBSTR (
|
||
DECODE (aaxx_get_user,
|
||
'AH', DECODE(aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), 13383, k.prs_kostenplaats_nr, aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
||
'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))),
|
||
-- OUD: 'INLO', aaxx_get_top_kpn_nr (k.prs_kostenplaats_key),
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3), 'CVE' , aaxx_get_top_kpn_nr (k.prs_kostenplaats_key), aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)),
|
||
-- = de INLO-standaard voor debiteurbepaling - kopregel kolom C
|
||
aaxx_get_top_kpn_nr (k.prs_kostenplaats_key)
|
||
),
|
||
'ESSENT', aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code),
|
||
'RABO', aaxx_get_dep_code(k.prs_kostenplaats_nr),
|
||
'SABIC', (SELECT distinct prs_leverancier_nr FROM prs_bedrijf b, prs_afdeling a
|
||
WHERE b.prs_bedrijf_key = a.prs_bedrijf_key
|
||
AND b.prs_bedrijf_verwijder IS NULL
|
||
AND a.prs_afdeling_verwijder IS NULL
|
||
AND a.prs_afdeling_naam = aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
||
'SMKA', COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr)),
|
||
'IT', k.prs_kostenplaats_nr,
|
||
k.prs_kostenplaats_nr)
|
||
, 1, 60)
|
||
prs_debiteur_naam,
|
||
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
|
||
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)),
|
||
-- = de INLO-standaard voor kostensoortgr_omschr - kopregel kolom D
|
||
'Servicekosten Core Variabel'
|
||
),
|
||
'ESSENT', aaxx_get_po_nr(NULL, NULL, NULL, g.alg_gebouw_code, NULL, NULL, NULL, TRUNC(opdr_datum)) || ' ' || SUBSTR(l.alg_locatie_code,1,4),
|
||
'RABO', 'Servicekosten ' || aaxx_get_dep_code(k.prs_kostenplaats_nr),
|
||
'SABIC', DECODE (l.alg_locatie_code, 'BOZ', 'Core Variabel ' || to_char(sysdate, 'Month'),
|
||
'RDV', 'Core Variabel ' || to_char(sysdate, 'Month'),
|
||
ksg.prs_kostensoortgrp_oms || ' ' || aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
||
'SMKA', 'Servicekosten Core Variabel',
|
||
'NMM', ksg.prs_kostensoortgrp_oms || DECODE(k.prs_kostenplaats_nr, '0001', ' Heijmans',
|
||
'0002', ' Vermaat',
|
||
'0003', ' Defensie',
|
||
'0004', ' NMM',' Onbekend'),
|
||
'DSM', ksg.prs_kostensoortgrp_oms || DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3) , 'CV ', ' ' || l.alg_locatie_code,
|
||
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,5) , 'L CV ', ' ' || l.alg_locatie_code)),
|
||
ksg.prs_kostensoortgrp_oms)
|
||
, 1, 60)
|
||
prs_kostensoortgrp_oms, -- kopregel kolom D
|
||
DECODE(aaxx_get_user, 'SABIC', ks.prs_kostensoort_altcode || ' ' || fin_btwtabelwaarde_code,
|
||
'ESSENT', ks.prs_kostensoort_altcode,
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', 'Variabele dienstverlening' || ' ' || (SELECT TO_CHAR(fin_btwtabelwaarde_perc) || '%' FROM fin_btwtabelwaarde WHERE fin_btwtabelwaarde_key = fg.fin_btwtabelwaarde_key) ,
|
||
-- = de INLO-standaard voor omschrijving sub-regel
|
||
'C' || cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
|
||
),
|
||
-- Oorspronkelijke standaard verkoopinterface...
|
||
'C' || cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie))
|
||
fin_verkoopfactuur_omschr, -- omschrijving subregel
|
||
DECODE (aaxx_get_user,
|
||
'NMM', ROUND (fg.bedrag * 1.1,2),
|
||
fg.bedrag)
|
||
bedrag,
|
||
DECODE (aaxx_get_user,
|
||
'EXPO' , DECODE (ks.prs_kostensoort_upper, 'CV CONS AUT', 2, fin_btwtabelwaarde_code), -- code 2 is 6 procent
|
||
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
|
||
to_char(opdr_datum, 'YYYY'),
|
||
DECODE (aaxx_get_user,
|
||
-- Op district-niveau
|
||
'SMKA', COALESCE(exact_d.exact_code,'onbekend'),
|
||
'SABIC', COALESCE(exact_d.exact_code,'onbekend'),
|
||
'DSM', DECODE (l.alg_district_key, 22, COALESCE(exact_g.exact_code,'onbekend'), COALESCE(exact_d.exact_code,'onbekend')), -- DSM voor Limburg (key 22) op gebouwniveau en overige op districtniveau
|
||
'NMM', COALESCE(exact_d.exact_code,'onbekend'),
|
||
'ESSENT', COALESCE(exact_d.exact_code,'onbekend'),
|
||
-- Op klantgebouw-niveau
|
||
'INLO', COALESCE(exact_k.klantcode,'onbekend'),
|
||
-- Overig/Default op gebouw-niveau
|
||
COALESCE(exact_g.exact_code,'onbekend')) exact_code, -- C1
|
||
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', 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)),
|
||
'SMKA', DECODE (ksg.prs_kostensoortgrp_oms, 'Core Variable', 'CV',
|
||
'Core Variable Enduser', 'CVE',
|
||
'onbekend') || '-' || COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr)),
|
||
'')
|
||
, 1, 200) groepering, -- C2
|
||
NULL subregelvolgorde, -- C3
|
||
l.alg_locatie_key, -- N1
|
||
aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), -- N2 bedrijfskey van de hoogste afdeling
|
||
DECODE (aaxx_get_user, 'SABIC', NULL, -- Later nog uitwerken = 1 CV t/m Mrt = Kan op STANDAARD terugvallen
|
||
'RABO', NULL, -- Later nog uitwerken - 913829 Var. dienstverl. MGB - WORDT: ksg.prs_kostensoortgrp_altcode || ' ' || l.alg_locatie_code,
|
||
'DSM', NULL, -- Later nog uitwerken
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', ksg.prs_kostensoortgrp_altcode || ' ' || l.alg_locatie_code,
|
||
-- = de INLO-standaard voor C5 waar de subaccounts uiteindelijk op kunnen terugvallen
|
||
-- ksg.prs_kostensoortgrp_altcode
|
||
NULL
|
||
),
|
||
'ESSENT', ksg.prs_kostensoortgrp_altcode || ' ' || SUBSTR(l.alg_locatie_code,1,4),
|
||
-- De standaard: ksg.prs_kostensoortgrp_altcode || ' t/m ' || to_char(SYSDATE, 'MON')
|
||
NULL
|
||
) fin_verkoopfactuur_c5, -- heyday-referentie - standaard aanvulling op kopregel positie 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)
|
||
-- In EXCEL ..... wordt de definitie bepaald per klantomgeving van de parameters die meegaan om PO op te halen
|
||
DECODE (aaxx_get_user, 'SABIC', NULL, -- Later nog uitwerken
|
||
'RABO', NULL, -- Later nog uitwerken
|
||
'DSM', NULL, -- Later nog uitwerken
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', aaxx_get_po_nr('COVESTRO', NULL, NULL, l.alg_locatie_code,
|
||
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3), 'CVE' , aaxx_get_top_kpn_nr (k.prs_kostenplaats_key), aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)), -- debiteurnr
|
||
NULL,
|
||
ks.prs_kostensoort_upper, -- kostensoort_code
|
||
TRUNC(opdr_datum)),
|
||
-- 'HENKEL', aaxx_get_po_nr('HENKEL', NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
-- 'ALLIANDER', aaxx_get_po_nr('ALLIANDER', NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
-- = de INLO-standaard voor PO-nr (indien geen resultaat in tabel dan krijg je NULL terug)
|
||
aaxx_get_po_nr(aaxx_get_user_sub('INLO', exact_k.klantcode), NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum))
|
||
),
|
||
'ESSENT', aaxx_get_po_nr(NULL, NULL, NULL, g.alg_gebouw_code, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
-- De standaard: Kostengroepsrt-alternatieve code + periode
|
||
NULL
|
||
) 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)
|
||
-- In EXCEL ..... wordt de definitie bepaald per klantomgeving van de parameters die meegaan om PO-REGEL op te halen
|
||
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, -- projectmarge
|
||
'CORE' fin_verkoopfactuur_c8, -- soort verkoopfactuur
|
||
fg.fin_factuur_key
|
||
fin_verkoopfactuur_n4
|
||
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) fin_btwtabelwaarde_code,
|
||
fin_btwtabelwaarde_key,
|
||
prs_kostenplaats_key,
|
||
prs_kostensoort_key,
|
||
prs_kostensoort_refcode,
|
||
fin_factuur_boekmaand,
|
||
opdr_datum,
|
||
fin_factuur_datum
|
||
FROM aaxx_v_factuur_gegevens
|
||
WHERE fin_factuur_statuses_key = 6
|
||
GROUP BY fin_factuur_key,
|
||
cnt_contract_key,
|
||
prs_kostenplaats_key,
|
||
prs_kostensoort_key,
|
||
prs_kostensoort_refcode,
|
||
fin_factuur_boekmaand,
|
||
opdr_datum,
|
||
fin_factuur_datum,
|
||
fin_btwtabelwaarde_key,
|
||
fin_btwtabelwaarde_code) 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 ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %'
|
||
)
|
||
AND NOT EXISTS ( SELECT 1 FROM DUAL WHERE aaxx_get_user_sub('INLO', exact_k.klantcode) IN ('GREENPORT VENLO')) -- uitsluiten subaccounts voor INLO
|
||
AND NOT EXISTS ( SELECT 1 FROM DUAL WHERE aaxx_get_user_sub('INLO', exact_k.klantcode) IN ('COVESTRO') AND l.alg_locatie_code = 'GLN' AND INSTR(UPPER(g.alg_gebouw_naam), 'CHEMELOT CAMPUS')>0) -- uitsluiten COVESTRO-Campus Chemelot GELEEN
|
||
)
|
||
OR
|
||
( aaxx_get_user = 'NMM'
|
||
AND ks.prs_kostensoort_upper LIKE '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 = 'SMKA'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %'
|
||
)
|
||
)
|
||
OR ( aaxx_get_user = 'IT'
|
||
AND ( SUBSTR(kpg.prs_kostenplaatsgrp_nr,1,6) IN ('400-VK', '500-VK') -- VK is verkoopfacturen (zie AAIT#69225)
|
||
)
|
||
)
|
||
);
|
||
|
||
-- 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
|
||
)
|
||
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || bestel.bes_bestelopdr_id, 1,30 ),
|
||
'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,
|
||
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),
|
||
-- OUD: 'INLO', aaxx_get_top_kpn_nr (k.prs_kostenplaats_key),
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3), 'CVE' , aaxx_get_top_kpn_nr (k.prs_kostenplaats_key), aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)),
|
||
-- = de INLO-standaard voor debiteurbepaling - kopregel kolom C
|
||
aaxx_get_top_kpn_nr (k.prs_kostenplaats_key)
|
||
),
|
||
'SABIC', (SELECT distinct prs_leverancier_nr FROM prs_bedrijf b, prs_afdeling a
|
||
WHERE b.prs_bedrijf_key = a.prs_bedrijf_key
|
||
AND b.prs_bedrijf_verwijder IS NULL
|
||
AND a.prs_afdeling_verwijder IS NULL
|
||
AND a.prs_afdeling_naam = aaxx_get_top_dep_code(k.prs_kostenplaats_nr)),
|
||
'SMKA', COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr)),
|
||
prs_kostenplaats_nr)
|
||
, 1, 60)
|
||
prs_debiteur_naam,
|
||
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
|
||
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)),
|
||
'SMKA', 'Servicekosten Core Variabel',
|
||
ksg.prs_kostensoortgrp_oms)
|
||
, 1, 60)
|
||
prs_kostensoortgrp_oms, -- kopregel kolom D
|
||
DECODE (aaxx_get_user, 'SABIC', ks.prs_kostensoort_altcode || ' ' || fin_btwtabelwaarde_code,
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', 'Variabele dienstverlening' || ' ' || (SELECT TO_CHAR(fin_btwtabelwaarde_perc) || '%' FROM fin_btwtabelwaarde WHERE fin_btwtabelwaarde_key = fg.fin_btwtabelwaarde_key) ,
|
||
-- = de INLO-standaard voor omschrijving sub-regel
|
||
bestel.bes_bestelopdr_id || ' ' || d.ins_discipline_omschrijving
|
||
),
|
||
bestel.bes_bestelopdr_id || ' ' || d.ins_discipline_omschrijving)
|
||
fin_verkoopfactuur_omschr, -- omschrijving subregel
|
||
fin_factuurregel_totaal,
|
||
DECODE (aaxx_get_user, 'EXPO' , DECODE (ks.prs_kostensoort_upper, 'CV CONS AUT', 2, fin_btwtabelwaarde_code), -- code 2 is 6 procent
|
||
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
|
||
TO_CHAR (opdr_datum, 'YYYY'),
|
||
DECODE (aaxx_get_user,
|
||
-- Op district-niveau
|
||
'SMKA', COALESCE(exact_d.exact_code,'onbekend'),
|
||
'SABIC', COALESCE(exact_d.exact_code,'onbekend'),
|
||
'DSM', DECODE (l.alg_district_key, 22, COALESCE(exact_g.exact_code,'onbekend'), COALESCE(exact_d.exact_code,'onbekend')), -- DSM voor Limburg (key 22) op gebouwniveau en overige op districtniveau
|
||
'NMM', COALESCE(exact_d.exact_code,'onbekend'),
|
||
-- Op klantgebouw-niveau
|
||
'INLO', COALESCE(exact_k.klantcode,'onbekend'),
|
||
-- Overig/Default op gebouw-niveau
|
||
COALESCE(exact_g.exact_code,'onbekend')) exact_code, -- C1
|
||
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)),
|
||
'SMKA', DECODE (ksg.prs_kostensoortgrp_oms, 'Core Variable', 'CV',
|
||
'Core Variable Enduser', 'CVE',
|
||
'onbekend') || '-' || COALESCE(aaxx_get_top_afdeling_kpkenm(k.prs_kostenplaats_key), TO_CHAR(k.prs_kostenplaats_nr)),
|
||
'')
|
||
, 1, 200) groepering, -- C2
|
||
NULL subregelvolgorde, -- C3
|
||
l.alg_locatie_key, -- N1
|
||
aaxx_get_top_bedrijf_key(k.prs_kostenplaats_nr), -- N2 bedrijfskey van de hoogste afdeling
|
||
DECODE (aaxx_get_user, 'SABIC', NULL, -- Later nog uitwerken = 1 CV t/m Mrt = Kan op STANDAARD terugvallen
|
||
'RABO', NULL, -- Later nog uitwerken - 913829 Var. dienstverl. MGB - WORDT: ksg.prs_kostensoortgrp_altcode || ' ' || l.alg_locatie_code,
|
||
'DSM', NULL, -- Later nog uitwerken
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', ksg.prs_kostensoortgrp_altcode || ' ' || l.alg_locatie_code,
|
||
-- = de INLO-standaard voor C5 waar de subaccounts uiteindelijk op kunnen terugvallen
|
||
-- ksg.prs_kostensoortgrp_altcode
|
||
NULL
|
||
),
|
||
'ESSENT', ksg.prs_kostensoortgrp_altcode || ' ' || l.alg_locatie_code,
|
||
-- De standaard: ksg.prs_kostensoortgrp_altcode || ' t/m ' || to_char(SYSDATE, 'MON')
|
||
NULL
|
||
) fin_verkoopfactuur_c5, -- heyday-referentie - standaard aanvulling op kopregel positie 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)
|
||
-- In EXCEL ..... wordt de definitie bepaald per klantomgeving van de parameters die meegaan om PO op te halen
|
||
DECODE (aaxx_get_user, 'SABIC', NULL, -- Later nog uitwerken
|
||
'RABO', NULL, -- Later nog uitwerken
|
||
'DSM', NULL, -- Later nog uitwerken
|
||
'INLO', DECODE (aaxx_get_user_sub('INLO', exact_k.klantcode),
|
||
'COVESTRO', aaxx_get_po_nr('COVESTRO', NULL, NULL, l.alg_locatie_code,
|
||
DECODE (SUBSTR(ks.prs_kostensoort_upper,1,3), 'CVE' , aaxx_get_top_kpn_nr (k.prs_kostenplaats_key), aaxx_get_debiteur_gebouw(l.alg_locatie_code, g.alg_gebouw_code)), -- debiteurnr
|
||
NULL,
|
||
ks.prs_kostensoort_upper, -- kostensoort_code
|
||
TRUNC(opdr_datum)),
|
||
-- 'HENKEL', aaxx_get_po_nr('HENKEL', NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
-- 'ALLIANDER', aaxx_get_po_nr('ALLIANDER', NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
-- = de INLO-standaard voor PO-nr (indien geen resultaat in tabel dan krijg je NULL terug)
|
||
aaxx_get_po_nr(aaxx_get_user_sub('INLO', exact_k.klantcode), NULL, NULL, NULL, NULL, NULL, NULL, TRUNC(opdr_datum))
|
||
),
|
||
'ESSENT', aaxx_get_po_nr(NULL, NULL, NULL, g.alg_gebouw_code, NULL, NULL, NULL, TRUNC(opdr_datum)),
|
||
-- De standaard: Kostengroepsrt-alternatieve code + periode
|
||
NULL
|
||
) 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)
|
||
-- In EXCEL ..... wordt de definitie bepaald per klantomgeving van de parameters die meegaan om PO-REGEL op te halen
|
||
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, -- projectmarge
|
||
'CORE' fin_verkoopfactuur_c8, -- soort verkoopfactuur
|
||
fg.fin_factuur_key
|
||
fin_verkoopfactuur_n4
|
||
FROM ( SELECT *
|
||
FROM aaxx_v_bestelgegevens
|
||
GROUP BY bes_bestelopdr_key,
|
||
bes_bestelopdr_id,
|
||
ins_discipline_key,
|
||
mld_adres_key_lev,
|
||
bes_bestelling_leverdatum,
|
||
prs_bedrijf_key) bestel,
|
||
mld_adres ad,
|
||
prs_kostenplaats k,
|
||
ins_tab_discipline d,
|
||
prs_kostensoort ks,
|
||
prs_kostensoortgrp ksg,
|
||
aaxx_exp_factuur f,
|
||
alg_gebouw g,
|
||
alg_locatie l,
|
||
aaxx_v_exact_code_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) fin_btwtabelwaarde_code,
|
||
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,
|
||
fin_btwtabelwaarde_code) fg
|
||
WHERE fg.bes_bestelopdr_key = bestel.bes_bestelopdr_key
|
||
AND fg.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND bestel.ins_discipline_key = d.ins_discipline_key
|
||
AND bestel.mld_adres_key_lev = ad.mld_adres_key(+)
|
||
AND ad.mld_adres_gebouw_ruimte = g.alg_gebouw_code(+)
|
||
AND 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 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 ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %'
|
||
)
|
||
AND NOT EXISTS ( SELECT 1 FROM DUAL WHERE aaxx_get_user_sub('INLO', exact_k.klantcode) IN ('GREENPORT VENLO')) -- uitsluiten subaccounts voor INLO
|
||
AND NOT EXISTS ( SELECT 1 FROM DUAL WHERE aaxx_get_user_sub('INLO', exact_k.klantcode) IN ('COVESTRO') AND l.alg_locatie_code = 'GLN' AND INSTR(UPPER(g.alg_gebouw_naam), 'CHEMELOT CAMPUS')>0) -- uitsluiten COVESTRO-Campus Chemelot GELEEN
|
||
)
|
||
OR
|
||
( aaxx_get_user = 'SABIC'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %')
|
||
)
|
||
OR
|
||
( aaxx_get_user = 'SMKA'
|
||
AND ( ks.prs_kostensoort_upper LIKE 'CV %'
|
||
OR ks.prs_kostensoort_upper LIKE 'CVE %'
|
||
)
|
||
)
|
||
);
|
||
|
||
-- 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 Projectmarge (fin_verkoopfactuur_n3), met de tekst <20>Projectfee<65>.
|
||
-- Per verkoopfactuur 1 regel, met exact_artikelcode '8110550 REVENUE PROJECTS FEE'
|
||
IF aaxx_get_user IN ('DSM', 'GN', 'ESSENT', '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_n3
|
||
)
|
||
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, '8110550 REVENUE PROJECTS FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'Projectfee' , SUM(ROUND(fin_verkoopfactuur_bedrag * (fin_verkoopfactuur_n3-1), 2)), fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, 'X', fin_verkoopfactuur_c2, 'X', fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4, fin_verkoopfactuur_n3
|
||
FROM fin_verkoopfactuur v
|
||
WHERE fin_verkoopfactuur_aanmaak = v_logdate
|
||
AND fin_verkoopfactuur_c8 = 'PROJECT'
|
||
AND INSTR(prs_kostensoort_oms, '8110555 REVENUE PROJECTS COST') > 0 -- ook VJ's meenemen '8110555 REVENUE PROJECTS COST VJ'
|
||
AND fin_verkoopfactuur_n3 IS NOT NULL
|
||
-- AND fin_verkoopfactuur_n3 NOT IN (1) -- wel of geen 0-regels meenemen?
|
||
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4, fin_verkoopfactuur_n3;
|
||
|
||
END IF;
|
||
|
||
IF aaxx_get_user = 'AH' 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, 'CV FM', prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, SUM(ROUND(fin_verkoopfactuur_bedrag * 0.25, 2)), 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
|
||
FROM fin_verkoopfactuur v
|
||
WHERE fin_verkoopfactuur_aanmaak = v_logdate
|
||
AND fin_verkoopfactuur_n2 = '13383'
|
||
AND prs_kostensoort_oms LIKE 'CV %'
|
||
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, 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;
|
||
|
||
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, 'CV FEE', prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.065, 2)), 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
|
||
FROM fin_verkoopfactuur v, prs_bedrijf b
|
||
WHERE fin_verkoopfactuur_aanmaak = v_logdate
|
||
AND v.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND fin_verkoopfactuur_n2 = '13383'
|
||
AND prs_kostensoort_oms LIKE 'CV %'
|
||
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, 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;
|
||
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;
|
||
|
||
-- EXPO NC PROJ
|
||
-- Er wordt een FEE berekend van 5% over NC PROJ
|
||
IF aaxx_get_user = 'EXPO' 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_debiteur_naam, prs_debiteur_naam, 'FEE PROJECTEN' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'Fee projecten' , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.05, 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 prs_kostensoort_oms = 'NC PROJ'
|
||
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
|
||
END IF;
|
||
|
||
-- INLO CORE
|
||
-- Voor Henkel: 5% over alle facturen van CV. Voor alle opdrachttype. Voor NC PROJ wordt GEEN fee berekend.
|
||
-- Voor Zwaansvliet: 18,5% over de facturen van CV (=fee organisatiekosten), boeken op 8210520. Daarna nog Fee van 6,5%, boeken op 8210511 . Voor NC PROJ wordt geen fee berekend..
|
||
-- Voor VEH wordt geen FEE berekend
|
||
-- BTW over FEE: Overal 21% (dus ongeacht inkoopfactuur_btw) - #57775
|
||
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
|
||
)
|
||
SELECT fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, prs_debiteur_naam, 'CV FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'Fee Core Variabel' , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.05, 2)), 5, fin_verkoopfactuur_maand, '03603000', 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 prs_kostensoort_oms LIKE 'CV %'
|
||
AND fin_verkoopfactuur_c8 = 'CORE'
|
||
AND v.fin_verkoopfactuur_c1 = '03603000' -- Henkel
|
||
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
|
||
|
||
INSERT INTO fin_verkoopfactuur -- Zwaansvliet 18,5%
|
||
(
|
||
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_debiteur_naam, prs_debiteur_naam, 'FEE ORG' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'Fee Organisatie' , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.185, 2)), 5, fin_verkoopfactuur_maand, '03604000', 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 prs_kostensoort_oms LIKE 'CV %'
|
||
AND fin_verkoopfactuur_c8 = 'CORE'
|
||
AND v.fin_verkoopfactuur_c1 = '03604000' -- Zwaansvliet
|
||
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
|
||
|
||
INSERT INTO fin_verkoopfactuur -- 6,5%
|
||
(
|
||
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_debiteur_naam, prs_debiteur_naam, 'CV FEE' || DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', prs_kostensoortgrp_oms, 'Fee Core Variabel' , SUM(ROUND(fin_verkoopfactuur_bedrag * 0.065, 2)), 5, fin_verkoopfactuur_maand, '03604000', 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 prs_kostensoort_oms LIKE 'CV %'
|
||
AND fin_verkoopfactuur_c8 = 'CORE'
|
||
AND v.fin_verkoopfactuur_c1 = '03604000' -- Zwaansvliet
|
||
GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_debiteur_naam, DECODE (INSTR(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4;
|
||
|
||
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
|
||
FOR rec1 IN c_cnt
|
||
LOOP
|
||
BEGIN
|
||
|
||
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;
|
||
|
||
UPDATE cnt_contract c
|
||
SET c.cnt_contract_kosten = (SELECT SUM(cnt_factuurschema_bedrag)
|
||
FROM cnt_factuurschema fs
|
||
WHERE fs.cnt_contract_key = rec1.cnt_contract_key)
|
||
WHERE c.cnt_contract_key = rec1.cnt_contract_key;
|
||
|
||
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 "Hospitality" plus de eerste drie posities van de maand voor catering en kostensoortgroep omschrijving voor opdrachten en voor Projecten PO-nummer aangevuld met deelfactuur #
|
||
-- 05 Referentie 1 Leeg (ordernummer klant voor DBS)
|
||
-- 06 Referentie 2 Leeg
|
||
-- 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 Exact_code van het gebouw
|
||
-- 14 Selectiecode Leeg
|
||
-- 15 Bedrag in vreemde valuta Leeg
|
||
-- 16 Netto prijs Leeg
|
||
-- 17 Valutacode EUR
|
||
-- 18 Wisselkoers Leeg
|
||
-- 19 Betalingsconditie E6
|
||
-- 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
|
||
-------------------------------------------------------------------------------
|
||
-- btw code is 19 procent als percentage is 19 of 0;
|
||
CREATE OR REPLACE VIEW aaxx_v_export_exact_verkoop_t (
|
||
result,
|
||
opdr_jaar,
|
||
soort, -- CORE of PROJECT of RES
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT '0' || ',' || DECODE(aaxx_get_user, 'RABO', '2', '3') || ',' || prs_debiteur_naam || DECODE(fin_verkoopfactuur_c8, 'PROJECT', '', DECODE (fin_verkoopfactuur_c5, NULL, NULL,
|
||
' ' || fin_verkoopfactuur_c5)) -- Voor CORE een specifieke aanvulling op debiteur
|
||
|| DECODE (fin_verkoopfactuur_c8, 'PROJECT', '', ' t/m ' || to_char(SYSDATE, 'MON')) -- Standaard voor alle CORE + RES een aanvulling 't/m MND
|
||
|| ','
|
||
|| replace(prs_kostensoortgrp_oms, ',', '')
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| ''
|
||
|| ','
|
||
|| 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_maand || prs_debiteur_naam || fin_verkoopfactuur_c2 || fin_verkoopfactuur_c6 || replace(prs_kostensoortgrp_oms, ',', '') || DECODE(aaxx_get_user, 'NMM', '', 'DSM', '', 'RABO', '', 'EXPO', '', 'INLO', '', 'SMKA', '', 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, ',', ''), DECODE(aaxx_get_user, 'NMM', '', 'DSM', '', 'RABO', '', 'EXPO', '', 'INLO', '', 'SMKA', '', prs_kostenplaats_nr), fin_verkoopfactuur_c8, fin_verkoopfactuur_c5
|
||
UNION ALL
|
||
-- Uitleg subregel:
|
||
-- 01 Regelnummer Vaste waarde 1
|
||
-- 02 - Vaste waarde 5
|
||
-- 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 "Hospitality services" voor catering en "SA### vakgroep opdrachtnummer(kenmerk)" voor meerwerk
|
||
-- 33 Hoeveelheid 1
|
||
-- 34 BTW code 4
|
||
-- 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', '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_maand || prs_debiteur_naam || fin_verkoopfactuur_c2 || fin_verkoopfactuur_c6 || replace(prs_kostensoortgrp_oms, ',', '') || DECODE(aaxx_get_user, 'NMM', '', 'DSM', '', 'RABO', '', 'EXPO', '', 'INLO', '', 'SMKA', '', 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 ;
|
||
|
||
|
||
CREATE OR REPLACE VIEW aaxx_v_export_exact_verkoop (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result,
|
||
result_order
|
||
FROM aaxx_exp_exact_verkoop;
|
||
|
||
-- ACTIE-ACTIE!!! - Van de GROUP BY's nog aparte hulpviews maken - HOE/WAT ???
|
||
|
||
-- preprocessing: separate min-verkoopfacturen genereren
|
||
CREATE OR REPLACE PROCEDURE aaxx_exact_verkoop_preproces (
|
||
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', '',
|
||
'SMKA', '',
|
||
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', '',
|
||
'SMKA', '',
|
||
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', '', 'SMKA', '', 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
|
||
)
|
||
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
|
||
ORDER BY result_order;
|
||
v_first NUMBER;
|
||
v_count NUMBER;
|
||
BEGIN
|
||
v_count := 0;
|
||
|
||
-- preprocessing uitvoeren - Min-factuur bepalen
|
||
--- voorlopig alleen voor DSM
|
||
--- ACTIE-ACTIE: Pas bij uitrol geheel aangepaste verkoopinterface2.0. voor AADS dit aanzetten!
|
||
-- IF aaxx_get_user IN ('DSM') THEN
|
||
-- BEGIN aaxx_exact_verkoop_preproces(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)
|
||
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'))
|
||
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;
|
||
|
||
|
||
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 ('EXACT_VERKOOP_VJ_P');
|
||
ELSE
|
||
INSERT INTO imp_schedule (imp_schedule_name)
|
||
VALUES ('EXACT_VERKOOP_VJ');
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
/
|
||
|
||
--=============================================================================
|
||
-- EXPORTFUNCTIES VERKOOPFACTUREN - verkoopinterface XML (voor PROJECTEN)
|
||
|
||
-- Uitleg van de kolommen zoals ze naar Exact gaan:
|
||
-- <NOG AANLEVEREN HEYDAY>
|
||
|
||
----------------------------------------------------------------------
|
||
|
||
/*CREATE OR REPLACE VIEW aaxx_v_export_exact_verkoop_h -- hulpview nodig met union voor header en regels.??? NEE, DE FIN_VERKOOPFACTUUR MOET JUISTE BASIS ZIJN....
|
||
AS
|
||
SELECT * FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_datum IS NULL AND fin_verkoopfactuur_c8 = 'PROJECT' ; */
|
||
|
||
-- Van fac_rapport naar exportbestand (XML)
|
||
CREATE OR REPLACE VIEW aaxx_v_export_exact_verkoop_p (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT fac_rapport_regel, fac_rapport_volgnr
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'EXACT_VERK_P' ;
|
||
|
||
-- aaxx_select_exact_verkoop_p(p_applname, p_applrun, to_char(sysdate, 'yyyy'));
|
||
-- Exportregels (XML-structuur) in fac_rapport
|
||
CREATE OR REPLACE PROCEDURE aaxx_select_exact_verkoop_p (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_opdr_jaar IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
NULL;
|
||
/*
|
||
-- Te verwerken projectorders...
|
||
CURSOR c
|
||
IS
|
||
SELECT *
|
||
FROM aaxx_v_export_exact_verkoop_h
|
||
WHERE fin_verkoopfactuur_maand = p_opdr_jaar
|
||
-- ORDER BY mld_opdr_uren_datum, opdrachtnr
|
||
;
|
||
|
||
v_order_count NUMBER;
|
||
v_amount_sum NUMBER(10,2);
|
||
v_count NUMBER;
|
||
v_bestand VARCHAR2(12);
|
||
BEGIN
|
||
|
||
v_order_count := 0;
|
||
v_amount_sum := 0;
|
||
v_count := 0;
|
||
v_bestand := 'EXACT_VERK_P';
|
||
|
||
-- Eerst opruiming
|
||
DELETE FROM imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = v_bestand;
|
||
|
||
-- DELETE aaxx_exp_uren
|
||
-- WHERE COALESCE(administratie, 'GEEN') = COALESCE(p_kpnprefix, 'GEEN');
|
||
|
||
-- header
|
||
aaxx_add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
|
||
aaxx_add_xml_row (v_bestand, '<eExact>');
|
||
aaxx_add_xml_row (v_bestand, '<GLEntries>');
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
aaxx_add_xml_row (v_bestand, '<GLEntry>');
|
||
aaxx_add_xml_row (v_bestand, '<Journal code="24" type="M"/>');
|
||
aaxx_add_xml_row (v_bestand, '<FinEntryLine>');
|
||
aaxx_add_xml_element (v_bestand, 'Date', TO_CHAR(rec.mld_opdr_uren_datum, 'yyyy-mm-dd') );
|
||
aaxx_add_xml_row (v_bestand, '<GLAccount code="' || rec.projecttype_code || '"/>');
|
||
aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam);
|
||
aaxx_add_xml_row (v_bestand, '<Costcenter code="' || rec.prs_kostenplaats_nr || '"/>');
|
||
aaxx_add_xml_row (v_bestand, '<Resource number="'|| rec.aafm_perslid_nr ||'"/>');
|
||
aaxx_add_xml_row (v_bestand, '<Project code="' || rec.meldingnr || '" type="I" status="A">');
|
||
aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam);
|
||
aaxx_add_xml_row (v_bestand, '</Project>');
|
||
aaxx_add_xml_element (v_bestand, 'Quantity', TO_CHAR(rec.mld_opdr_uren_besteed) );
|
||
aaxx_add_xml_row (v_bestand, '<Amount>');
|
||
aaxx_add_xml_row (v_bestand, '<Currency code="EUR"/>');
|
||
aaxx_add_xml_element (v_bestand, 'Debit', TO_CHAR(rec.mld_opdr_uren_besteed*COALESCE(rec.uurtarief_opdr, rec.uurtarief_perslid) ) );
|
||
aaxx_add_xml_element (v_bestand, 'Credit', '0');
|
||
aaxx_add_xml_row (v_bestand, '</Amount>');
|
||
aaxx_add_xml_row (v_bestand, '<FinReferences>');
|
||
aaxx_add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
|
||
aaxx_add_xml_row (v_bestand, '</FinReferences>');
|
||
aaxx_add_xml_row (v_bestand, '</FinEntryLine>');
|
||
IF COALESCE(rec.uurtarief_opdr, rec.uurtarief_perslid) IS NULL
|
||
THEN
|
||
fac.writelog (p_applname, 'W', 'Geen uurtarief voor persoon nr ' || rec.aafm_perslid_nr, '');
|
||
END IF;
|
||
v_amount_sum := v_amount_sum + rec.mld_opdr_uren_besteed*COALESCE(rec.uurtarief_opdr, COALESCE(rec.uurtarief_perslid, 0));
|
||
aaxx_add_xml_row (v_bestand, '<FinEntryLine>');
|
||
aaxx_add_xml_row (v_bestand, '<GLAccount code="'||rec.rek_courant||'"/>');
|
||
aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam);
|
||
--aaxx_add_xml_row (v_bestand, '<Costcenter code="' || coalesce(rec.projectkpn_opdr, rec.projectkpn_perslid) || '"/>');
|
||
IF (SUBSTR (rec.rek_courant, 1, 1) = '2' OR aaxx_get_user = 'SABIC') -- Begint met '2'!
|
||
THEN
|
||
aaxx_add_xml_row (v_bestand, '<Costcenter code="' || rec.prs_kostenplaats_nr || '"/>');
|
||
ELSE
|
||
aaxx_add_xml_row (v_bestand, '<Costcenter code="' || coalesce(rec.projectkpn_opdr, rec.projectkpn_perslid) || '"/>');
|
||
END IF;
|
||
aaxx_add_xml_row (v_bestand, '<Resource number="'|| rec.aafm_perslid_nr ||'"/>');
|
||
aaxx_add_xml_row (v_bestand, '<Project code="' || rec.meldingnr || '" type="I" status="A">');
|
||
aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam);
|
||
aaxx_add_xml_row (v_bestand, '</Project>');
|
||
aaxx_add_xml_element (v_bestand, 'Quantity', '-'||TO_CHAR(rec.mld_opdr_uren_besteed) );
|
||
aaxx_add_xml_row (v_bestand, '<Amount>');
|
||
aaxx_add_xml_row (v_bestand, '<Currency code="EUR"/>');
|
||
aaxx_add_xml_element (v_bestand, 'Debit', '0');
|
||
aaxx_add_xml_element (v_bestand, 'Credit', TO_CHAR(rec.mld_opdr_uren_besteed*COALESCE(rec.uurtarief_opdr, rec.uurtarief_perslid)) );
|
||
aaxx_add_xml_row (v_bestand, '</Amount>');
|
||
aaxx_add_xml_row (v_bestand, '<FinReferences>');
|
||
aaxx_add_xml_element (v_bestand, 'DocumentDate', SYSDATE);
|
||
aaxx_add_xml_row (v_bestand, '</FinReferences>');
|
||
aaxx_add_xml_row (v_bestand, '</FinEntryLine>');
|
||
aaxx_add_xml_row (v_bestand, '</GLEntry>');
|
||
END;
|
||
|
||
INSERT INTO aaxx_exp_uren
|
||
(mld_opdr_uren_key, administratie)
|
||
VALUES
|
||
(rec.mld_opdr_uren_key, p_kpnprefix);
|
||
|
||
v_order_count := v_order_count + 1;
|
||
END LOOP;
|
||
|
||
aaxx_add_xml_row (v_bestand, '</GLEntries>');
|
||
aaxx_add_xml_row (v_bestand, '</eExact>');
|
||
fac.writelog (p_applname, 'S', 'Exact export uitgevoerd. Aantal regels: ' || v_order_count || ' Totaal bedrag: ' || v_amount_sum, '');
|
||
*/
|
||
|
||
END;
|
||
/
|
||
|
||
-- Nawerk Projectverkoopinterface
|
||
-- IDEM verkoopinterface CORE
|
||
CREATE OR REPLACE PROCEDURE aaxx_export_exact_verkoop_p (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2,
|
||
p_opdr_jaar IN VARCHAR2
|
||
)
|
||
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'))
|
||
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_c8 = 'PROJECT'
|
||
AND fin_verkoopfactuur_maand = p_opdr_jaar;
|
||
|
||
INSERT INTO imp_schedule (imp_schedule_name) VALUES ('EXACT_VERK_P_VJ');
|
||
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,
|
||
--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,
|
||
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
|
||
)
|
||
AS
|
||
SELECT vf.fin_verkoopfactuurkop_key,
|
||
TO_CHAR (vf.fin_verkoopfactuurkop_key)
|
||
|| ' - '
|
||
|| TO_CHAR (vf.fin_verkoopfactuur_datum, 'dd-mm-yyyy hh24;mi')
|
||
verkooprun,
|
||
vf.fin_verkoopfactuur_datum,
|
||
fin_verkoopfactuur_c8
|
||
soort,
|
||
-- 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', '',
|
||
'SMKA', '',
|
||
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', '',
|
||
'SMKA', '',
|
||
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,
|
||
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,
|
||
(SELECT fin_btwtabelwaarde_perc
|
||
FROM fin_btwtabelwaarde
|
||
WHERE fin_btwtabelwaarde_code = vf.fin_btwtabelwaarde_code)
|
||
btw_percentage
|
||
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
|
||
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) 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
|
||
FROM mld_melding m,
|
||
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 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,
|
||
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, -- fin_client (= kostensoort coe en de omschrijving)
|
||
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)
|
||
)
|
||
AS
|
||
SELECT *
|
||
FROM ( -- HOOFD-GEGEVENS (kopregel verkoopfactuur)
|
||
SELECT verkooprun,
|
||
soort,
|
||
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
|
||
FROM aaxx_v_fin_verkooprun_detail_0
|
||
GROUP BY verkooprun,
|
||
soort,
|
||
verkooprun_datum,
|
||
vk_hoofdgroep,
|
||
prs_debiteur_naam,
|
||
verkoopfactuur_ref,
|
||
verkoopfactuur_po,
|
||
prs_kostensoortgrp_oms,
|
||
fin_verkoopfactuur_maand
|
||
UNION ALL
|
||
-- ONDERLIGGENDE DETAILGEGEVENS
|
||
SELECT verkooprun,
|
||
soort,
|
||
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,
|
||
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
|
||
FROM aaxx_v_fin_verkooprun_detail_0) v
|
||
ORDER BY 1, 3, 4;
|
||
|
||
|
||
------ 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
|