Files
Customer/VENR/venr.sql
Maarten van der Heide 6e042e6bed VENR#35865 Bepaling aantal gebruikers incl. correctie voor KIEN-ers
svn path=/Customer/trunk/; revision=29728
2016-06-16 07:42:34 +00:00

2620 lines
119 KiB
MySQL
Raw Blame History

-- Script containing customer specific db-configuration for VENR.
-- (c) 2014 SG|facilitor bv
--
-- Support: +31 53 4800700
set echo on
spool xvenr.lst
CREATE OR REPLACE VIEW venr_v_rap_import_log
(
fclt_f_applicatie,
datum,
fclt_f_status,
omschrijving,
hint
)
AS
SELECT COALESCE (fac_import_app_code, imp_log_applicatie),
TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi'),
imp_log_status,
imp_log_omschrijving,
imp_log_hint
FROM imp_log il1, fac_import fi1, fac_import_app fia1
WHERE il1.fac_import_key = fi1.fac_import_key(+)
AND fi1.fac_import_app_key = fia1.fac_import_app_key(+)
AND NOT EXISTS
(SELECT 1
FROM imp_log il2, fac_import fi2
WHERE il2.fac_import_key = fi2.fac_import_key
AND fi2.fac_import_app_key = fi1.fac_import_app_key
AND il2.fac_import_key > il1.fac_import_key);
-- Export naar UNIT4
/* Formatted on 3-9-2014 15:52:25 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW venr_v_u4_supplier
(
prs_bedrijf_key,
supplierid,
suppliergroupid,
name,
shortname,
street1,
street2,
zipcode,
city,
person,
telephone,
fax,
email,
vatnumber,
paymentconditionid,
cocregistration,
combineinvoices -- Afkorting van 'combineinvoicesforelectronicbanking'
)
AS
SELECT x.prs_bedrijf_key,
7000000 + x.prs_bedrijf_key,
0,
x.prs_bedrijf_naam,
SUBSTR (x.prs_bedrijf_naam, 1, 8),
naamstraat.prs_kenmerklink_waarde,
x.prs_bedrijf_post_adres,
x.prs_bedrijf_post_postcode,
x.prs_bedrijf_post_plaats,
x.prs_bedrijf_contact_persoon,
x.prs_bedrijf_telefoon,
x.prs_bedrijf_fax,
x.prs_bedrijf_email,
NULL, --TODO btwnr.prs_kenmerklink_waarde,
(SELECT fac_usrdata_code
FROM fac_v_aanwezigusrdata
WHERE fac_usrdata_key =
fac.safe_to_number (bc.prs_kenmerklink_waarde)),
kvknr.prs_kenmerklink_waarde,
'true'
FROM (SELECT *
FROM prs_v_aanwezigbedrijf
WHERE COALESCE (prs_bedrijf_intern, 0) = 0) x
LEFT JOIN prs_v_aanwezigkenmerklink btwnr
ON btwnr.prs_kenmerk_key = 1021 --BTW-nummer
AND btwnr.prs_link_key = x.prs_bedrijf_key
LEFT JOIN prs_v_aanwezigkenmerklink bc
ON bc.prs_kenmerk_key = 1023 --Betalingsconditie
AND bc.prs_link_key = x.prs_bedrijf_key
LEFT JOIN prs_v_aanwezigkenmerklink kvknr
ON kvknr.prs_kenmerk_key = 1024 --KvK-nummer
AND kvknr.prs_link_key = x.prs_bedrijf_key
LEFT JOIN prs_v_aanwezigkenmerklink naamstraat
ON naamstraat.prs_kenmerk_key = 1080 --NaamStraat
AND naamstraat.prs_link_key = x.prs_bedrijf_key;
CREATE OR REPLACE VIEW venr_v_u4_customer
(
prs_bedrijf_key,
customerid,
customergroupid,
name,
shortname,
street1,
street2,
zipcode,
city,
person,
telephone,
fax,
email,
vatnumber,
paymentconditionid,
chargevattypeid,
cocregistration,
creditsqueezeid
)
AS
SELECT x.prs_bedrijf_key,
7000000 + x.prs_bedrijf_key,
0,
x.prs_bedrijf_naam,
SUBSTR (x.prs_bedrijf_naam, 1, 8),
naamstraat.prs_kenmerklink_waarde,
x.prs_bedrijf_post_adres,
x.prs_bedrijf_post_postcode,
x.prs_bedrijf_post_plaats,
x.prs_bedrijf_contact_persoon,
x.prs_bedrijf_telefoon,
x.prs_bedrijf_fax,
x.prs_bedrijf_email,
NULL, --TODO btwnr.prs_kenmerklink_waarde,
(SELECT fac_usrdata_code
FROM fac_v_aanwezigusrdata
WHERE fac_usrdata_key =
fac.safe_to_number (bc.prs_kenmerklink_waarde)),
DECODE (
btwtype.prs_kenmerklink_waarde,
NULL,
1, -- Niet gevuld in FACILITOR, dan default 'Ja'?
(SELECT fac_usrdata_code
FROM fac_v_aanwezigusrdata
WHERE fac_usrdata_key =
fac.safe_to_number (btwtype.prs_kenmerklink_waarde))),
kvknr.prs_kenmerklink_waarde,
0
FROM (SELECT *
FROM prs_v_aanwezigbedrijf
WHERE COALESCE (prs_bedrijf_intern, 0) = 1) x
LEFT JOIN prs_v_aanwezigkenmerklink btwnr
ON btwnr.prs_kenmerk_key = 1021 --BTW-nummer
AND btwnr.prs_link_key = x.prs_bedrijf_key
LEFT JOIN prs_v_aanwezigkenmerklink btwtype
ON btwtype.prs_kenmerk_key = 1022 --BTW-type
AND btwtype.prs_link_key = x.prs_bedrijf_key
LEFT JOIN prs_v_aanwezigkenmerklink bc
ON bc.prs_kenmerk_key = 1023 --Betalingsconditie
AND bc.prs_link_key = x.prs_bedrijf_key
LEFT JOIN prs_v_aanwezigkenmerklink kvknr
ON kvknr.prs_kenmerk_key = 1024 --KvK-nummer
AND kvknr.prs_link_key = x.prs_bedrijf_key
LEFT JOIN prs_v_aanwezigkenmerklink naamstraat
ON naamstraat.prs_kenmerk_key = 1080 --NaamStraat
AND naamstraat.prs_link_key = x.prs_bedrijf_key;
/* MAG WEG -> U4 doet hier niets mee!
CREATE OR REPLACE VIEW venr_v_u4_address
(
supcusid, -- SupplierId of CustomerId; mappen naar OrganizationId!
--customergroupid,
--name,
addresstype,
street1,
postcode,
city,
--countryid,
telephone,
--mobilephone,
fax,
email
)
AS
SELECT COALESCE (u4nr.prs_kenmerklink_waarde,
'F' || TO_CHAR (b.prs_bedrijf_key)),
--0,
--prs_bedrijf_naam,
0, -- Bezoekadres in FACILITOR => Afleveradres in UNIT4
b.prs_bedrijf_bezoek_adres,
b.prs_bedrijf_bezoek_postcode,
b.prs_bedrijf_bezoek_plaats,
--prs_bedrijf_bezoek_land,
b.prs_bedrijf_telefoon,
b.prs_bedrijf_fax,
b.prs_bedrijf_email
FROM prs_v_aanwezigbedrijf b,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerklink_verwijder IS NULL
AND prs_kenmerk_key = 1040) u4nr
WHERE b.prs_bedrijf_bezoek_adres IS NOT NULL
AND b.prs_bedrijf_bezoek_plaats IS NOT NULL
AND b.prs_bedrijf_key = u4nr.prs_link_key(+)
UNION ALL
SELECT COALESCE (u4nr.prs_kenmerklink_waarde,
'F' || TO_CHAR (b.prs_bedrijf_key)),
--0,
--prs_bedrijf_naam,
1, -- Postadres in FACILITOR => Factuuradres in UNIT4
b.prs_bedrijf_post_adres,
b.prs_bedrijf_post_postcode,
b.prs_bedrijf_post_plaats,
--prs_bedrijf_post_land,
b.prs_bedrijf_telefoon,
b.prs_bedrijf_fax,
b.prs_bedrijf_email
FROM prs_v_aanwezigbedrijf b,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerklink_verwijder IS NULL
AND prs_kenmerk_key = 1040) u4nr
WHERE b.prs_bedrijf_post_adres IS NOT NULL
AND b.prs_bedrijf_post_plaats IS NOT NULL;
*/
/* Formatted on 26-8-2014 9:24:42 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW venr_v_u4_bankaccount
(
prs_bedrijf_key,
supcusid, -- SupplierId of CustomerId; mappen naar OrganizationId!
accountholdername,
banktypeid,
accountnumber,
bic,
iban,
preferred
)
AS
SELECT x.prs_bedrijf_key,
7000000 + x.prs_bedrijf_key,
x.prs_bedrijf_naam,
'B', -- Altijd 'B' (afgestemd)
banknr.prs_kenmerklink_waarde,
--bic.prs_kenmerklink_waarde,
DECODE (SUBSTR (UPPER (iban.prs_kenmerklink_waarde), 5, 4),
'ABNA', 'ABNANL2A',
'AEGO', 'AEGONL2U',
'ASNB', 'ASNBNL21',
'ASRB', 'ASRBNL2R',
'BNGH', 'BNGHNL2G',
'BNPA', 'BNPANL2A',
'BOFS', 'BOFSNL21002',
'DEUT', 'DEUTNL2N',
'FRBK', 'FRBKNL2L',
'FVLB', 'FVLBNL22',
'GILL', 'GILLNL2A',
'INGB', 'INGBNL2A',
'KASA', 'KASANL2A',
'KNAB', 'KNABNL2H',
'RABO', 'RABONL2U',
'RBOS', 'RBOSNL2A',
'RBRB', 'RBRBNL21',
'SNSB', 'SNSBNL2A',
'STAL', 'STALNL2G',
'TRIO', 'TRIONL2U',
bic.prs_kenmerklink_waarde),
UPPER (iban.prs_kenmerklink_waarde),
'true'
FROM (SELECT * FROM prs_v_aanwezigbedrijf) x
LEFT JOIN prs_v_aanwezigkenmerklink banknr
ON banknr.prs_kenmerk_key = 1028 -- Bankrekening (don't care)
AND banknr.prs_link_key = x.prs_bedrijf_key
LEFT JOIN prs_v_aanwezigkenmerklink bic
ON bic.prs_kenmerk_key = 1029 -- BIC-code (don't care unless)
AND bic.prs_link_key = x.prs_bedrijf_key
JOIN prs_v_aanwezigkenmerklink iban
ON iban.prs_kenmerk_key = 1030 -- Ibannummer
AND iban.prs_link_key = x.prs_bedrijf_key;
/* Formatted on 1-9-2014 10:50:10 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW venr_v_u4_supplierinvoice
(
fin_factuur_key, -- Intern
mld_opdr_key, -- Intern
cnt_contract_key, -- Intern
grootboekprefix, -- Intern
administratie, -- '0829' (OCI) of '0861' (SSD)
invoiceid,
invoicedate,
supplierid,
paymentconditionid,
paymentreference,
vatoninvoice,
journalid,
periodnumber,
reference,
fiscalyear,
journaltransaction,
invoiceexpirationdate,
rebateexpirationdate
)
AS
WITH last_exp -- Tijdstip laatste succesvolle U4-export uit eigen tabel!
AS (SELECT fac.safe_to_date (fac_usrdata_code,
'dd-mm-yyyy hh24:mi:ss')
datum
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 24 AND fac_usrdata_key = 51),
bet_cond
AS (SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerklink_niveau = 'B' AND prs_kenmerk_key = 1023)
SELECT f.fin_factuur_key, -- Initial Main-contract invoices/opdracht=regie
f.mld_opdr_key mld_opdr_key,
NULL cnt_contract_key,
'70' grootboekprefix, -- TODO: Configureerbaar maken?
'MVL008' || SUBSTR (kf.fin_kenmerkfactuur_waarde, 3, 2)
administratie,
kf.fin_kenmerkfactuur_waarde, -- Boekstuknr-kenmerk gegenereerd door FACILITOR (ook initieel?)
TO_CHAR (f.fin_factuur_datum, 'DD-MM-YYYY'),
7000000 + o.mld_uitvoerende_keys,
COALESCE (udbc.fac_usrdata_code, '60A'), -- Initiele/A-variant!
SUBSTR (f.fin_factuur_nr, 1, 16), -- Factuurnummer in U4 max. 16!
DECODE (f.fin_factuur_totaal_btw, 0, 'false', 'true'),
'I', -- Dagboekcode hard op 'I'!
TO_CHAR (TO_DATE (f.fin_factuur_boekmaand, 'YYYY-MM'), 'MM'),
TO_CHAR (o.mld_melding_key)
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr),
TO_CHAR (f.fin_factuur_datum, 'YYYY'),
0,
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY'),
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY')
FROM fin_factuur f,
fin_kenmerkfactuur kf,
( SELECT fac_tracking_refkey,
MIN (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking
WHERE fac_srtnotificatie_key = 116 -- FINNEW
GROUP BY fac_tracking_refkey) finnew,
last_exp le,
mld_opdr o,
bet_cond klbc,
fac_usrdata udbc, -- OOK VERWIJDERDE!
mld_melding m,
alg_locatie l,
alg_district d,
prs_v_aanwezigkenmerklink kl1,
prs_v_aanwezigkenmerklink kl2
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key != 3 -- Skippen als Incompleet (kan niet voorkomen?)
AND f.fin_factuur_statuses_key != 7 -- Skippen als Akkoord (niet dubbel genereren!)
AND kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerk_key = 41 -- Hidden boekstuknr!
AND f.fin_factuur_key = kf.fin_factuur_key
AND f.fin_factuur_key = finnew.fac_tracking_refkey
AND finnew.fac_tracking_datum > le.datum -- Te exporteren initiele invoices
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_uitvoerende_keys = klbc.prs_link_key(+)
--AND udbc.fac_usrtab_key = 2 -- Betalingsconditie-waarden
AND (MOD (fac.safe_to_number (klbc.prs_kenmerklink_waarde), 10)
+ 10) = udbc.fac_usrdata_key(+)
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND kl1.prs_kenmerklink_niveau = 'B'
AND kl1.prs_kenmerk_key = 1064 -- Klant->Regio (of bedrijfnaam=regio?)
AND d.alg_regio_key =
fac.safe_to_number (kl1.prs_kenmerklink_waarde)
AND kl2.prs_kenmerklink_niveau = 'B'
AND kl2.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND kl1.prs_link_key = kl2.prs_link_key
AND kl2.prs_kenmerklink_waarde = '31' -- Export als Main-contract
UNION ALL -- Initial Main-contract invoices/contract=catering?
SELECT f.fin_factuur_key,
NULL mld_opdr_key,
c.cnt_contract_key,
'70' grootboekprefix, -- TODO: Configureerbaar maken?
'MVL008' || SUBSTR (kf.fin_kenmerkfactuur_waarde, 3, 2)
administratie,
kf.fin_kenmerkfactuur_waarde, -- Boekstuknr-kenmerk gegenereerd door FACILITOR (ook initieel?)
TO_CHAR (f.fin_factuur_datum, 'DD-MM-YYYY'),
7000000 + c.cnt_prs_bedrijf_key,
COALESCE (udbc.fac_usrdata_code, '60A'), -- Initiele/A-variant!
SUBSTR (f.fin_factuur_nr, 1, 16), -- Factuurnummer in U4 max. 16!
DECODE (f.fin_factuur_totaal_btw, 0, 'false', 'true'),
'I', -- Dagboekcode hard op 'I'!
TO_CHAR (TO_DATE (f.fin_factuur_boekmaand, 'YYYY-MM'), 'MM'),
c.cnt_contract_nummer_intern,
TO_CHAR (f.fin_factuur_datum, 'YYYY'),
0,
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY'),
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY')
FROM fin_factuur f,
fin_kenmerkfactuur kf,
( SELECT fac_tracking_refkey,
MIN (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking
WHERE fac_srtnotificatie_key = 116 -- FINNEW
GROUP BY fac_tracking_refkey) finnew,
last_exp le,
cnt_v_aanwezigcontract c,
bet_cond klbc,
fac_usrdata udbc, -- OOK VERWIJDERDE!
prs_v_afdeling_boom ab,
prs_v_aanwezigkenmerklink kl
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key != 3 -- Skippen als Incompleet (kan niet voorkomen?)
AND f.fin_factuur_statuses_key != 7 -- Skippen als Akkoord (niet dubbel genereren!)
AND kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerk_key = 41 -- Hidden boekstuknr!
AND f.fin_factuur_key = kf.fin_factuur_key
AND f.fin_factuur_key = finnew.fac_tracking_refkey
AND finnew.fac_tracking_datum > le.datum -- Te exporteren initiele invoices
AND f.cnt_contract_key = c.cnt_contract_key
AND c.cnt_prs_bedrijf_key = klbc.prs_link_key(+)
--AND udbc.fac_usrtab_key = 2 -- Betalingsconditie-waarden
AND (MOD (fac.safe_to_number (klbc.prs_kenmerklink_waarde), 10)
+ 10) = udbc.fac_usrdata_key(+)
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND ab.prs_bedrijf_key = kl.prs_link_key
AND kl.prs_kenmerklink_waarde = '31' -- Export als Main-contract
UNION ALL -- Frozen Main-contract invoices/opdracht=regie
SELECT f.fin_factuur_key,
f.mld_opdr_key mld_opdr_key,
NULL cnt_contract_key,
'70' grootboekprefix, -- TODO: Configureerbaar maken?
'MVL008' || SUBSTR (kf.fin_kenmerkfactuur_waarde, 3, 2)
administratie,
kf.fin_kenmerkfactuur_waarde, -- Boekstuknr-kenmerk gegenereerd door FACILITOR
TO_CHAR (f.fin_factuur_datum, 'DD-MM-YYYY'),
7000000 + o.mld_uitvoerende_keys,
COALESCE (udbc.fac_usrdata_code, '60'), -- Definitieve variant!
SUBSTR (f.fin_factuur_nr, 1, 16), -- Factuurnummer in U4 max. 16!
DECODE (f.fin_factuur_totaal_btw, 0, 'false', 'true'),
'I', -- Dagboekcode hard op 'I'!
TO_CHAR (TO_DATE (f.fin_factuur_boekmaand, 'YYYY-MM'), 'MM'),
TO_CHAR (o.mld_melding_key)
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr),
TO_CHAR (f.fin_factuur_datum, 'YYYY'),
0,
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY'),
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY')
FROM fin_factuur f,
fin_kenmerkfactuur kf,
( SELECT fac_tracking_refkey,
MIN (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking
WHERE fac_srtnotificatie_key = 121 -- FINVER
GROUP BY fac_tracking_refkey) finver,
last_exp le,
mld_opdr o,
bet_cond klbc,
fac_usrdata udbc, -- OOK VERWIJDERDE!
mld_melding m,
alg_locatie l,
alg_district d,
prs_v_aanwezigkenmerklink kl1,
prs_v_aanwezigkenmerklink kl2
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key = 7 -- Verwerkt
AND kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerk_key = 41 -- Hidden boekstuknr!
AND f.fin_factuur_key = kf.fin_factuur_key
AND f.fin_factuur_key = finver.fac_tracking_refkey
AND finver.fac_tracking_datum > le.datum -- Te exporteren definitieve invoices
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_uitvoerende_keys = klbc.prs_link_key(+)
--AND udbc.fac_usrtab_key = 2 -- Betalingsconditie-waarden
AND MOD (fac.safe_to_number (klbc.prs_kenmerklink_waarde), 10) =
udbc.fac_usrdata_key(+)
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND kl1.prs_kenmerklink_niveau = 'B'
AND kl1.prs_kenmerk_key = 1064 -- Klant->Regio (of bedrijfnaam=regio?)
AND d.alg_regio_key =
fac.safe_to_number (kl1.prs_kenmerklink_waarde)
AND kl2.prs_kenmerklink_niveau = 'B'
AND kl2.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND kl1.prs_link_key = kl2.prs_link_key
AND kl2.prs_kenmerklink_waarde = '31' -- Export als Main-contract
UNION ALL -- Frozen Main-contract invoices/contract=catering?
SELECT f.fin_factuur_key,
NULL mld_opdr_key,
c.cnt_contract_key,
'70' grootboekprefix, -- TODO: Configureerbaar maken?
'MVL008' || SUBSTR (kf.fin_kenmerkfactuur_waarde, 3, 2)
administratie,
kf.fin_kenmerkfactuur_waarde, -- Boekstuknr-kenmerk gegenereerd door FACILITOR
TO_CHAR (f.fin_factuur_datum, 'DD-MM-YYYY'),
7000000 + c.cnt_prs_bedrijf_key,
COALESCE (udbc.fac_usrdata_code, '60'), -- Definitieve variant!
SUBSTR (f.fin_factuur_nr, 1, 16), -- Factuurnummer in U4 max. 16!
DECODE (f.fin_factuur_totaal_btw, 0, 'false', 'true'),
'I', -- Dagboekcode hard op 'I'!
TO_CHAR (TO_DATE (f.fin_factuur_boekmaand, 'YYYY-MM'), 'MM'),
c.cnt_contract_nummer_intern,
TO_CHAR (f.fin_factuur_datum, 'YYYY'),
0,
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY'),
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY')
FROM fin_factuur f,
fin_kenmerkfactuur kf,
( SELECT fac_tracking_refkey,
MIN (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking
WHERE fac_srtnotificatie_key = 121 -- FINVER
GROUP BY fac_tracking_refkey) finver,
last_exp le,
cnt_v_aanwezigcontract c,
bet_cond klbc,
fac_usrdata udbc, -- OOK VERWIJDERDE!
prs_v_afdeling_boom ab,
prs_v_aanwezigkenmerklink kl
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key = 7 -- Verwerkt
AND kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerk_key = 41 -- Hidden boekstuknr!
AND f.fin_factuur_key = kf.fin_factuur_key
AND f.fin_factuur_key = finver.fac_tracking_refkey
AND finver.fac_tracking_datum > le.datum -- Te exporteren definitieve invoices
AND f.cnt_contract_key = c.cnt_contract_key
AND c.cnt_prs_bedrijf_key = klbc.prs_link_key(+)
--AND udbc.fac_usrtab_key = 2 -- Betalingsconditie-waarden
AND MOD (fac.safe_to_number (klbc.prs_kenmerklink_waarde), 10) =
udbc.fac_usrdata_key(+)
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND ab.prs_bedrijf_key = kl.prs_link_key
AND kl.prs_kenmerklink_waarde = '31' -- Export als Main-contract
UNION ALL -- Frozen SSD invoices/exceptions-opdracht=regie
SELECT f.fin_factuur_key,
f.mld_opdr_key mld_opdr_key,
NULL cnt_contract_key,
'71' grootboekprefix, -- TODO: Configureerbaar maken?
'MVL008' || SUBSTR (kf.fin_kenmerkfactuur_waarde, 3, 2)
administratie,
kf.fin_kenmerkfactuur_waarde, -- Boekstuknr-kenmerk gegenereerd door FACILITOR (ook exceptions?)
TO_CHAR (f.fin_factuur_datum, 'DD-MM-YYYY'),
7000000 + o.mld_uitvoerende_keys,
COALESCE (udbc.fac_usrdata_code, '60'), -- Definitieve variant!
SUBSTR (f.fin_factuur_nr, 1, 16), -- Factuurnummer in U4 max. 16!
DECODE (f.fin_factuur_totaal_btw, 0, 'false', 'true'),
'I', -- Dagboekcode hard op 'I'!
TO_CHAR (TO_DATE (f.fin_factuur_boekmaand, 'YYYY-MM'), 'MM'),
TO_CHAR (o.mld_melding_key)
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr),
TO_CHAR (f.fin_factuur_datum, 'YYYY'),
0,
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY'),
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY')
FROM fin_factuur f,
fin_kenmerkfactuur kf,
( SELECT fac_tracking_refkey,
MIN (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking
WHERE fac_srtnotificatie_key = 121 -- FINVER
GROUP BY fac_tracking_refkey) finver,
last_exp le,
mld_opdr o,
bet_cond klbc,
fac_usrdata udbc, -- OOK VERWIJDERDE!
mld_melding m,
alg_locatie l,
alg_district d,
prs_v_aanwezigkenmerklink kl1,
prs_v_aanwezigkenmerklink kl2
WHERE f.fin_factuur_verwijder IS NULL AND f.fin_factuur_statuses_key = 7 -- Verwerkt
AND EXISTS -- WEL gemarkeerd als exception!
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 43 -- Specifiek exporteren!
AND fin_factuur_key = f.fin_factuur_key)
AND kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerk_key = 41 -- Hidden boekstuknr!
AND f.fin_factuur_key = kf.fin_factuur_key
AND f.fin_factuur_key = finver.fac_tracking_refkey
AND finver.fac_tracking_datum > le.datum -- Te exporteren exception-invoices
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_uitvoerende_keys = klbc.prs_link_key(+)
--AND udbc.fac_usrtab_key = 2 -- Betalingsconditie-waarden
AND MOD (fac.safe_to_number (klbc.prs_kenmerklink_waarde), 10) =
udbc.fac_usrdata_key(+)
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND kl1.prs_kenmerklink_niveau = 'B'
AND kl1.prs_kenmerk_key = 1064 -- Klant->Regio (of bedrijfnaam=regio?)
AND d.alg_regio_key =
fac.safe_to_number (kl1.prs_kenmerklink_waarde)
AND kl2.prs_kenmerklink_niveau = 'B'
AND kl2.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND kl1.prs_link_key = kl2.prs_link_key
AND kl2.prs_kenmerklink_waarde = '32' -- Export als SSD
UNION ALL -- Frozen SSD invoices/exceptions-contract=catering?
SELECT f.fin_factuur_key,
NULL mld_opdr_key,
c.cnt_contract_key,
'71' grootboekprefix, -- TODO: Configureerbaar maken?
'MVL008' || SUBSTR (kf.fin_kenmerkfactuur_waarde, 3, 2)
administratie,
kf.fin_kenmerkfactuur_waarde, -- Boekstuknr-kenmerk gegenereerd door FACILITOR (ook exceptions?)
TO_CHAR (f.fin_factuur_datum, 'DD-MM-YYYY'),
7000000 + c.cnt_prs_bedrijf_key,
COALESCE (udbc.fac_usrdata_code, '60'), -- Definitieve variant!
SUBSTR (f.fin_factuur_nr, 1, 16), -- Factuurnummer in U4 max. 16!
DECODE (f.fin_factuur_totaal_btw, 0, 'false', 'true'),
'I', -- Dagboekcode hard op 'I'!
TO_CHAR (TO_DATE (f.fin_factuur_boekmaand, 'YYYY-MM'), 'MM'),
c.cnt_contract_nummer_intern,
TO_CHAR (f.fin_factuur_datum, 'YYYY'),
0,
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY'),
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY')
FROM fin_factuur f,
fin_kenmerkfactuur kf,
( SELECT fac_tracking_refkey,
MIN (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking
WHERE fac_srtnotificatie_key = 121 -- FINVER
GROUP BY fac_tracking_refkey) finver,
last_exp le,
cnt_v_aanwezigcontract c,
bet_cond klbc,
fac_usrdata udbc, -- OOK VERWIJDERDE!
prs_v_afdeling_boom ab,
prs_v_aanwezigkenmerklink kl
WHERE f.fin_factuur_verwijder IS NULL AND f.fin_factuur_statuses_key = 7 -- Verwerkt
AND EXISTS -- WEL gemarkeerd als exception!
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 43 -- Specifiek exporteren!
AND fin_factuur_key = f.fin_factuur_key)
AND kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerk_key = 41 -- Hidden boekstuknr!
AND f.fin_factuur_key = kf.fin_factuur_key
AND f.fin_factuur_key = finver.fac_tracking_refkey
AND finver.fac_tracking_datum > le.datum -- Te exporteren exception-invoices
AND f.cnt_contract_key = c.cnt_contract_key
AND c.cnt_prs_bedrijf_key = klbc.prs_link_key(+)
--AND udbc.fac_usrtab_key = 2 -- Betalingsconditie-waarden
AND MOD (fac.safe_to_number (klbc.prs_kenmerklink_waarde), 10) =
udbc.fac_usrdata_key(+)
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND ab.prs_bedrijf_key = kl.prs_link_key
AND kl.prs_kenmerklink_waarde = '32' -- Export als SSD
UNION ALL -- Frozen SSD invoices/underlying-opdracht=regie
SELECT f.fin_factuur_key,
f.mld_opdr_key,
NULL cnt_contract_key,
'71' grootboekprefix, -- TODO: Configureerbaar maken?
'MVL008' || SUBSTR (kf1.fin_kenmerkfactuur_waarde, 3, 2)
administratie,
kf1.fin_kenmerkfactuur_waarde, -- Boekstuknr-kenmerk gegenereerd door FACILITOR
TO_CHAR (f.fin_factuur_datum, 'DD-MM-YYYY'),
7000000 + o.mld_uitvoerende_keys,
COALESCE (udbc.fac_usrdata_code, '60'), -- Definitieve variant!
SUBSTR (f.fin_factuur_nr, 1, 16), -- Factuurnummer in U4 max. 16!
DECODE (f.fin_factuur_totaal_btw, 0, 'false', 'true'),
'I', -- Dagboekcode hard op 'I'!
TO_CHAR (TO_DATE (f.fin_factuur_boekmaand, 'YYYY-MM'), 'MM'),
TO_CHAR (o.mld_melding_key)
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr),
TO_CHAR (f.fin_factuur_datum, 'YYYY'),
0,
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY'),
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY')
FROM fin_factuur f,
fin_kenmerkfactuur kf1,
fin_kenmerkfactuur kf2,
( SELECT fac_usrdata_code ordernr,
MIN (fac_usrdata_vervaldatum) datum -- Request-datum
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 25
GROUP BY fac_usrdata_code) ssdreq,
last_exp le,
mld_opdr o,
bet_cond klbc,
fac_usrdata udbc, -- OOK VERWIJDERDE!
mld_melding m,
alg_locatie l,
alg_district d,
prs_v_aanwezigkenmerklink kl1,
prs_v_aanwezigkenmerklink kl2
WHERE f.fin_factuur_verwijder IS NULL AND f.fin_factuur_statuses_key = 7 -- Verwerkt
AND NOT EXISTS -- NIET gemarkeerd als exception!
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 43 -- Specifiek exporteren!
AND fin_factuur_key = f.fin_factuur_key)
AND kf1.fin_kenmerkfactuur_verwijder IS NULL
AND kf1.fin_kenmerk_key = 41 -- Hidden boekstuknr!
AND f.fin_factuur_key = kf1.fin_factuur_key
AND kf2.fin_kenmerkfactuur_verwijder IS NULL
AND kf2.fin_kenmerk_key = 42 -- Hidden ordernr!
AND f.fin_factuur_key = kf2.fin_factuur_key
AND kf2.fin_kenmerkfactuur_waarde = ssdreq.ordernr
AND ssdreq.datum > le.datum -- Te exporteren underlying-invoices
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_uitvoerende_keys = klbc.prs_link_key(+)
--AND udbc.fac_usrtab_key = 2 -- Betalingsconditie-waarden
AND MOD (fac.safe_to_number (klbc.prs_kenmerklink_waarde), 10) =
udbc.fac_usrdata_key(+)
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND kl1.prs_kenmerklink_niveau = 'B'
AND kl1.prs_kenmerk_key = 1064 -- Klant->Regio (of bedrijfnaam=regio?)
AND d.alg_regio_key =
fac.safe_to_number (kl1.prs_kenmerklink_waarde)
AND kl2.prs_kenmerklink_niveau = 'B'
AND kl2.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND kl1.prs_link_key = kl2.prs_link_key
AND kl2.prs_kenmerklink_waarde = '32' -- Export als SSD
UNION ALL -- Frozen SSD invoices/underlying-contract=catering?
SELECT f.fin_factuur_key,
NULL mld_opdr_key,
c.cnt_contract_key,
'71' grootboekprefix, -- TODO: Configureerbaar maken?
'MVL008' || SUBSTR (kf1.fin_kenmerkfactuur_waarde, 3, 2)
administratie,
kf1.fin_kenmerkfactuur_waarde, -- Boekstuknr-kenmerk gegenereerd door FACILITOR
TO_CHAR (f.fin_factuur_datum, 'DD-MM-YYYY'),
7000000 + c.cnt_prs_bedrijf_key,
COALESCE (udbc.fac_usrdata_code, '60'), -- Definitieve variant!
SUBSTR (f.fin_factuur_nr, 1, 16), -- Factuurnummer in U4 max. 16!
DECODE (f.fin_factuur_totaal_btw, 0, 'false', 'true'),
'I', -- Dagboekcode hard op 'I'!
TO_CHAR (TO_DATE (f.fin_factuur_boekmaand, 'YYYY-MM'), 'MM'),
c.cnt_contract_nummer_intern,
TO_CHAR (f.fin_factuur_datum, 'YYYY'),
0,
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY'),
TO_CHAR (f.fin_factuur_datum + 60, 'DD-MM-YYYY')
FROM fin_factuur f,
fin_kenmerkfactuur kf1,
fin_kenmerkfactuur kf2,
( SELECT fac_usrdata_code ordernr,
MIN (fac_usrdata_vervaldatum) datum -- Request-datum
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 25
GROUP BY fac_usrdata_code) ssdreq,
last_exp le,
cnt_v_aanwezigcontract c,
bet_cond klbc,
fac_usrdata udbc, -- OOK VERWIJDERDE!
prs_v_afdeling_boom ab,
prs_v_aanwezigkenmerklink kl
WHERE f.fin_factuur_verwijder IS NULL AND f.fin_factuur_statuses_key = 7 -- Verwerkt
AND NOT EXISTS -- NIET gemarkeerd als exception!
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 43 -- Specifiek exporteren!
AND fin_factuur_key = f.fin_factuur_key)
AND kf1.fin_kenmerkfactuur_verwijder IS NULL
AND kf1.fin_kenmerk_key = 41 -- Hidden boekstuknr!
AND f.fin_factuur_key = kf1.fin_factuur_key
AND kf2.fin_kenmerkfactuur_verwijder IS NULL
AND kf2.fin_kenmerk_key = 42 -- Hidden ordernr!
AND f.fin_factuur_key = kf2.fin_factuur_key
AND kf2.fin_kenmerkfactuur_waarde = ssdreq.ordernr
AND ssdreq.datum > le.datum -- Te exporteren underlying-invoices
AND f.cnt_contract_key = c.cnt_contract_key
AND c.cnt_prs_bedrijf_key = klbc.prs_link_key(+)
--AND udbc.fac_usrtab_key = 2 -- Betalingsconditie-waarden
AND MOD (fac.safe_to_number (klbc.prs_kenmerklink_waarde), 10) =
udbc.fac_usrdata_key(+)
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND ab.prs_bedrijf_key = kl.prs_link_key
AND kl.prs_kenmerklink_waarde = '32' -- Export als SSD
;
CREATE OR REPLACE VIEW venr_v_u4_supplierinvoiceline
(
fin_factuur_key,
fin_factuurregel_nr,
invoiceid,
accountid, -- Kostensoort volgens input Friso; AANNAME alles doorbelasten!
description, -- Factuurregel-omschrijving
transactiondate,
debitamountcur,
vatcodeid -- Geen=0, Laag=1 en Hoog=2
)
AS
SELECT DISTINCT v.fin_factuur_key,
fr.fin_factuurregel_nr,
v.invoiceid,
grootboekprefix -- Prefix 70/71!
|| COALESCE (ksfr.prs_kostensoort_opmerking,
ksf.prs_kostensoort_opmerking,
ksm.prs_kostensoort_opmerking,
ksv.prs_kostensoort_opmerking),
SUBSTR (fr.fin_factuurregel_omschrijving, 1, 30),
TO_CHAR (f.fin_factuur_datum, 'DD-MM-YYYY'),
fr.fin_factuurregel_totaal, -- Excl. BTW
DECODE (btw.fin_btwtabelwaarde_code, 'L', 1, 'H', 2, 0)
FROM venr_v_u4_supplierinvoice v,
fin_factuur f,
prs_kostensoort ksf,
fin_factuurregel fr,
prs_kostensoort ksfr,
fin_btwtabelwaarde btw,
mld_opdr o,
mld_melding m,
mld_stdmelding sm,
ins_tab_discipline td,
prs_kostensoort ksm,
prs_kostensoort ksv
WHERE v.fin_factuur_key = f.fin_factuur_key
AND f.prs_kostensoort_key = ksf.prs_kostensoort_key(+)
AND f.fin_factuur_key = fr.fin_factuur_key
AND fr.prs_kostensoort_key = ksfr.prs_kostensoort_key(+)
AND btw.fin_btwtabel_key = 1
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND v.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+);
CREATE OR REPLACE VIEW venr_v_u4_vattransactionline
(
fin_factuur_key,
fin_factuurregel_nr,
invoiceid,
amountturnovercur,
vatamountcur
)
AS
SELECT DISTINCT v.fin_factuur_key,
fr.fin_factuurregel_nr,
v.invoiceid,
fr.fin_factuurregel_totaal, -- Excl. BTW
fr.fin_factuurregel_btw -- BTW-bedrag
FROM venr_v_u4_supplierinvoice v,
fin_factuurregel fr,
fin_btwtabelwaarde btw
WHERE v.fin_factuur_key = fr.fin_factuur_key
AND btw.fin_btwtabel_key = 1
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key;
--TODO: CNT-dimensie VENR-diensten afstemmen/afronden!
/* Formatted on 4-9-2014 10:02:28 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW venr_v_u4_order
(
mld_opdr_key, -- Altijd NULL/Intern! => Weg?
cnt_contract_key, -- Alleen tbv. verkoopopdrachten zonder factuur/Intern
grootboekprefix, -- Intern
administratie, -- '0829' (OCI) of '0861' (SSD)
orderid,
orderdate,
customerid,
paymentconditionid,
vatscenarioid,
chargevattype,
reference,
deliveryaddress
)
AS
WITH last_exp -- Tijdstip laatste succesvolle U4-export uit eigen tabel!
AS (SELECT fac.safe_to_date (fac_usrdata_code,
'dd-mm-yyyy hh24:mi:ss')
datum
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 24 AND fac_usrdata_key = 51),
bet_cond
AS (SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerklink_niveau = 'B' AND prs_kenmerk_key = 1023)
SELECT NULL, -- Frozen Main-contract orders
NULL,
'80' grootboekprefix, -- TODO: Configureerbaar maken?
'MVL008' || SUBSTR (ssdfrz.ordernr, 3, 2) administratie,
ssdfrz.ordernr,
TO_CHAR (ssdfrz.datum, 'DD-MM-YYYY'),
7000000 + ssdfrz.bedrijf_key, -- prs_bedrijf_key (via ET)!
COALESCE (udbc.fac_usrdata_code, '60'), -- Definitieve variant!
6, -- Hard
0, -- Hard
DECODE (
f.mld_opdr_key,
NULL,
'Contract '
|| (SELECT cnt_contract_nummer_intern
FROM cnt_contract
WHERE cnt_contract_key = f.cnt_contract_key),
'Opdracht '
|| (SELECT TO_CHAR (mld_melding_key)
|| '/'
|| TO_CHAR (mld_opdr_bedrijfopdr_volgnr)
FROM mld_opdr
WHERE mld_opdr_key = f.mld_opdr_key)),
NULL
FROM ( SELECT fac_usrdata_code ordernr,
fac.safe_to_number (fac_usrdata_omschr) bedrijf_key,
MIN (fac_usrdata_aanmaak) datum -- Order-datum
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 25
GROUP BY fac_usrdata_code, fac_usrdata_omschr) ssdfrz,
last_exp le,
bet_cond klbc,
fac_usrdata udbc, -- OOK VERWIJDERDE!
prs_v_aanwezigkenmerklink kl,
fin_kenmerkfactuur kf,
fin_factuur f
WHERE ssdfrz.datum > le.datum -- Te exporteren uplift-orders
AND ssdfrz.bedrijf_key = klbc.prs_link_key(+)
--AND udbc.fac_usrtab_key = 2 -- Betalingsconditie-waarden
AND MOD (fac.safe_to_number (klbc.prs_kenmerklink_waarde), 10) =
udbc.fac_usrdata_key(+)
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND ssdfrz.bedrijf_key = kl.prs_link_key
AND kl.prs_kenmerklink_waarde = '31' -- Export als Main-contract
AND kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerk_key = 42 -- Hidden ordernr!
AND ssdfrz.ordernr = kf.fin_kenmerkfactuur_waarde
AND f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key = 7 -- Verwerkt; altijd!
AND kf.fin_factuur_key = f.fin_factuur_key
AND (f.mld_opdr_key IS NOT NULL OR f.cnt_contract_key IS NOT NULL)
UNION ALL -- Periodic Main-contract orders/no invoice!
SELECT NULL,
c.cnt_contract_key,
'80' grootboekprefix, -- TODO: Configureerbaar maken?
'MVL008' || SUBSTR (ssdfrz.ordernr, 3, 2) administratie,
ssdfrz.ordernr,
TO_CHAR (ssdfrz.datum, 'DD-MM-YYYY'),
7000000 + ssdfrz.bedrijf_key, -- prs_bedrijf_key (via ET)!
COALESCE (udbc.fac_usrdata_code, '60'), -- Definitieve variant!
6, -- Hard
0, -- Hard
'Contract ' || c.cnt_contract_nummer_intern,
NULL
FROM ( SELECT fac_usrdata_code ordernr,
fac.safe_to_number (fac_usrdata_omschr) bedrijf_key,
MIN (fac_usrdata_aanmaak) datum -- Order-datum
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 25
GROUP BY fac_usrdata_code, fac_usrdata_omschr) ssdfrz,
last_exp le,
bet_cond klbc,
fac_usrdata udbc, -- OOK VERWIJDERDE!
prs_v_aanwezigkenmerklink kl,
cnt_contract c
WHERE ssdfrz.datum > le.datum -- Te exporteren VENR-diensten
AND ssdfrz.bedrijf_key = klbc.prs_link_key(+)
--AND udbc.fac_usrtab_key = 2 -- Betalingsconditie-waarden
AND MOD (fac.safe_to_number (klbc.prs_kenmerklink_waarde), 10) =
udbc.fac_usrdata_key(+)
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND ssdfrz.bedrijf_key = kl.prs_link_key
AND kl.prs_kenmerklink_waarde = '31' -- Export als Main-contract
AND NOT EXISTS
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerk_key = 42 -- Hidden ordernr
AND fin_kenmerkfactuur_waarde = ssdfrz.ordernr)
AND ssdfrz.bedrijf_key = c.cnt_prs_bedrijf_key
AND EXISTS
(SELECT 1
FROM cnt_kenmerkcontract
WHERE cnt_kenmerkcontract_verwijder IS NULL
AND cnt_kenmerk_key = -1 -- TODO: Contract-doorbelasten
AND cnt_contract_key = c.cnt_contract_key)
UNION ALL -- Frozen SSD borderel-orders
SELECT NULL,
NULL,
'81' grootboekprefix, -- TODO: Configureerbaar maken?
'MVL008' || SUBSTR (ssdfrz.ordernr, 3, 2) administratie,
ssdfrz.ordernr,
TO_CHAR (ssdfrz.datum, 'DD-MM-YYYY'),
7000000 + ssdfrz.bedrijf_key, -- prs_bedrijf_key (via ET)!
COALESCE (udbc.fac_usrdata_code, '60'), -- Definitieve variant!
6, -- Hard
0, -- Hard
DECODE ( -- TODO: Toevoegen Regio/District/Locatie op basis van Exportbundeling (of Grootboekcode)?
kl2.prs_kenmerklink_waarde,
'42', -- Wekelijks
'Weekfactuur '
|| TO_CHAR (ssdfrz.datum, 'YYYY')
|| 'w'
|| TO_CHAR (ssdfrz.datum, 'IW'),
'43', -- Halfmaandelijks
'Halfmaandfactuur ' || TO_CHAR (ssdfrz.datum, 'YYYY-MM/DD'),
'44', -- Maandelijks
'Maandfactuur ' || TO_CHAR (ssdfrz.datum, 'YYYY-MM'),
'45', -- Maandelijks
'Maandfactuur ' || TO_CHAR (ssdfrz.datum, 'YYYY-MM'),
'Periode ongeldig!'),
COALESCE (o2da.deliveryaddress, 'Contract') -- Listig stukje!!!
FROM ( SELECT fac_usrdata_code ordernr,
fac.safe_to_number (fac_usrdata_omschr) bedrijf_key,
MIN (fac_usrdata_aanmaak) datum -- Order-datum
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 25
GROUP BY fac_usrdata_code, fac_usrdata_omschr) ssdfrz,
last_exp le,
bet_cond klbc,
fac_usrdata udbc, -- OOK VERWIJDERDE!
prs_v_aanwezigkenmerklink kl1,
prs_v_aanwezigkenmerklink kl2,
(SELECT DISTINCT
kf.fin_kenmerkfactuur_waarde ordernr,
DECODE (kl2.prs_kenmerklink_waarde,
'48', r.alg_regio_omschrijving,
'49', d.alg_district_omschrijving,
l.alg_locatie_omschrijving)
deliveryaddress
FROM fin_kenmerkfactuur kf,
fin_factuur f,
mld_opdr o,
mld_melding m,
alg_locatie l,
alg_district d,
alg_regio r,
prs_v_aanwezigkenmerklink kl1,
prs_v_aanwezigkenmerklink kl2
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerk_key = 42 -- Hidden ordernr!
AND kf.fin_factuur_key = f.fin_factuur_key
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = r.alg_regio_key
AND kl1.prs_kenmerklink_niveau = 'B'
AND kl1.prs_kenmerk_key = 1064 -- Klant->Regio (of bedrijfnaam=regio?)
AND d.alg_regio_key =
fac.safe_to_number (kl1.prs_kenmerklink_waarde)
AND kl2.prs_kenmerklink_niveau = 'B'
AND kl2.prs_kenmerk_key = 1063 -- Klant->Exportbundeling
AND kl1.prs_link_key = kl2.prs_link_key) o2da -- Ordernr2DeliveryAddr.
WHERE ssdfrz.datum > le.datum -- Te exporteren borderels
AND ssdfrz.bedrijf_key = klbc.prs_link_key(+)
--AND udbc.fac_usrtab_key = 2 -- Betalingsconditie-waarden
AND MOD (fac.safe_to_number (klbc.prs_kenmerklink_waarde), 10) =
udbc.fac_usrdata_key(+)
AND kl1.prs_kenmerklink_niveau = 'B'
AND kl1.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND ssdfrz.bedrijf_key = kl1.prs_link_key
AND kl1.prs_kenmerklink_waarde = '32' -- Export als SSD
AND kl2.prs_kenmerklink_niveau = 'B'
AND kl2.prs_kenmerk_key = 1062 -- Klant->Exportperiode
AND ssdfrz.bedrijf_key = kl2.prs_link_key
AND ssdfrz.ordernr = o2da.ordernr(+);
/* Formatted on 9-1-2015 10:48:12 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW venr_v_u4_orderline
(
orderid, -- Intern
accountid,
productid,
description,
quantityordered,
quantitydelivered,
price,
priceper,
vatcodeid
)
AS
SELECT x.orderid,
x.grootboekprefix || '000', -- Prefix 80/81!
x.grootboekprefix || '000', -- Prefix 80/81!
'Opdrachten/' || x.orderid || '/' || x.orderdate,
DECODE (SIGN (SUM (x.fin_factuurregel_totaal)), -1, -1, 1), -- -1 als credit!
DECODE (SIGN (SUM (x.fin_factuurregel_totaal)), -1, -1, 1), -- -1 als credit!
ABS(SUM(x.fin_factuurregel_totaal
* (1 + COALESCE (ud.fac_usrdata_prijs, 0)))), -- Excl. BTW; price nooit negatief!
'maal', -- Hard
x.vatcodeid
FROM (SELECT v.orderid,
v.orderdate,
v.grootboekprefix,
COALESCE (ksfr.prs_kostensoort_opmerking,
ksf.prs_kostensoort_opmerking,
ksm.prs_kostensoort_opmerking,
ksv.prs_kostensoort_opmerking)
accountid,
fr.fin_factuurregel_totaal,
DECODE (btw.fin_btwtabelwaarde_code, 'L', 1, 'H', 2, 0)
vatcodeid
FROM venr_v_u4_order v,
fin_kenmerkfactuur kf,
fin_factuur f,
prs_kostensoort ksf,
fin_factuurregel fr,
prs_kostensoort ksfr,
fin_btwtabelwaarde btw,
mld_opdr o,
mld_melding m,
mld_stdmelding sm,
ins_tab_discipline td,
prs_kostensoort ksm,
prs_kostensoort ksv
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerk_key = 42 -- Hidden ordernr!
AND v.orderid = kf.fin_kenmerkfactuur_waarde
AND f.fin_factuur_verwijder IS NULL
AND kf.fin_factuur_key = f.fin_factuur_key
AND f.prs_kostensoort_key = ksf.prs_kostensoort_key(+)
AND f.fin_factuur_key = fr.fin_factuur_key
AND fr.prs_kostensoort_key = ksfr.prs_kostensoort_key(+)
AND btw.fin_btwtabel_key = 1
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+))
x
LEFT JOIN
fac_v_aanwezigusrdata ud
ON ud.fac_usrtab_key = 26 AND x.accountid = ud.fac_usrdata_code
GROUP BY x.orderid,
x.grootboekprefix || '000', -- Prefix 80/81!
x.grootboekprefix || '000', -- Prefix 80/81!
'Opdrachten/' || x.orderid || '/' || x.orderdate,
x.vatcodeid
UNION ALL
SELECT x.orderid,
x.grootboekprefix || '000', -- Prefix 80/81!
x.grootboekprefix || '000', -- Prefix 80/81!
'Contracten/' || x.orderid || '/' || x.orderdate,
DECODE (SIGN (SUM (x.fin_factuurregel_totaal)), -1, -1, 1), -- -1 als credit!
DECODE (SIGN (SUM (x.fin_factuurregel_totaal)), -1, -1, 1), -- -1 als credit!
ABS(SUM(x.fin_factuurregel_totaal
* (1 + COALESCE (ud.fac_usrdata_prijs, 0)))), -- Excl. BTW; price nooit negatief!
'maal', -- Hard
x.vatcodeid
FROM (SELECT v.orderid,
v.orderdate,
v.grootboekprefix,
COALESCE (ksfr.prs_kostensoort_opmerking,
ksf.prs_kostensoort_opmerking,
ksc.prs_kostensoort_opmerking)
accountid,
fr.fin_factuurregel_totaal,
DECODE (btw.fin_btwtabelwaarde_code, 'L', 1, 'H', 2, 0)
vatcodeid
FROM venr_v_u4_order v,
fin_kenmerkfactuur kf,
fin_factuur f,
prs_kostensoort ksf,
fin_factuurregel fr,
prs_kostensoort ksfr,
fin_btwtabelwaarde btw,
cnt_contract c,
prs_kostensoort ksc
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerk_key = 42 -- Hidden ordernr!
AND v.orderid = kf.fin_kenmerkfactuur_waarde
AND f.fin_factuur_verwijder IS NULL
AND kf.fin_factuur_key = f.fin_factuur_key
AND f.prs_kostensoort_key = ksf.prs_kostensoort_key(+)
AND f.fin_factuur_key = fr.fin_factuur_key
AND fr.prs_kostensoort_key = ksfr.prs_kostensoort_key(+)
AND btw.fin_btwtabel_key = 1
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.cnt_contract_key = c.cnt_contract_key
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+))
x
LEFT JOIN
fac_v_aanwezigusrdata ud
ON ud.fac_usrtab_key = 26 AND x.accountid = ud.fac_usrdata_code
GROUP BY x.orderid,
x.grootboekprefix || '000', -- Prefix 80/81!
x.grootboekprefix || '000', -- Prefix 80/81!
'Contracten/' || x.orderid || '/' || x.orderdate,
x.vatcodeid
UNION ALL
SELECT v.orderid,
v.grootboekprefix || '000', -- Prefix 80/81!
v.grootboekprefix || '000', -- Prefix 80/81!
'Contracten' || v.orderid || '/' || v.orderdate,
1, -- Altijd 1 dus nooit credit!
1, -- Altijd 1 dus nooit credit!
SUM (c.cnt_contract_termijnkosten), -- Excl. BTW; TODO: Uplift?
'maal', -- Hard
DECODE (btw.fin_btwtabelwaarde_code, 'L', 1, 'H', 2, 0)
FROM venr_v_u4_order v,
cnt_contract c,
prs_kostensoort ksc,
fin_btwtabelwaarde btw,
fac_v_aanwezigusrdata ud
WHERE v.cnt_contract_key = c.cnt_contract_key
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
AND btw.fin_btwtabel_key = 1
AND btw.fin_btwtabelwaarde_code = 'H' -- TODO: Altijd hoog?
AND ud.fac_usrtab_key = 26 -- UpliftOCI
AND ksc.prs_kostensoort_opmerking = ud.fac_usrdata_code
GROUP BY v.orderid,
grootboekprefix || '000', -- Prefix 80/81!
grootboekprefix || '000', -- Prefix 80/81!
'Contracten' || v.orderid || '/' || v.orderdate,
DECODE (btw.fin_btwtabelwaarde_code, 'L', 1, 'H', 2, 0);
--TODO: CNT-dimensie VENR-diensten afstemmen/afronden!
/* Formatted on 2-9-2014 17:00:00 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW venr_v_u4_actual
(
exportvariant,
fin_factuur_key,
mld_opdr_key,
cnt_contract_key,
prs_bedrijf_key,
periode,
bundeling
)
AS
SELECT 'MC1', -- Aangemaakte O-facturen voor Main-contract (OCI) => Initiele MC-inkoopfacturen (zonder boekstuknr)
f.fin_factuur_key,
f.mld_opdr_key,
NULL cnt_contract_key,
o.mld_uitvoerende_keys,
NULL periode, -- Periode niet van toepassing!
NULL bundeling -- Bundeling niet van toepassing!
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
alg_locatie l,
alg_district d,
prs_v_aanwezigkenmerklink kl1,
prs_v_aanwezigkenmerklink kl2
WHERE f.fin_factuur_verwijder IS NULL AND f.fin_factuur_statuses_key != 3 -- Skippen als Incompleet (kan niet voorkomen?)
AND NOT EXISTS -- Geen boekstuknr, dus nog initieel exporteren!
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 41 -- Hidden boekstuknr!
AND fin_factuur_key = f.fin_factuur_key)
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND kl1.prs_kenmerklink_niveau = 'B'
AND kl1.prs_kenmerk_key = 1064 -- Klant->Regio (of bedrijfnaam=regio?)
AND d.alg_regio_key =
fac.safe_to_number (kl1.prs_kenmerklink_waarde)
AND kl2.prs_kenmerklink_niveau = 'B'
AND kl2.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND kl1.prs_link_key = kl2.prs_link_key
AND kl2.prs_kenmerklink_waarde = '31' -- Export als Main-contract
UNION ALL -- Aangemaakte C-facturen voor Main-contract (OCI) => Initiele MC-inkoopfacturen (zonder boekstuknr)
SELECT 'MC1', -- Aangemaakte O-facturen voor Main-contract (OCI) => Initiele MC-inkoopfacturen (zonder boekstuknr)
f.fin_factuur_key,
NULL mld_opdr_key,
c.cnt_contract_key,
c.cnt_prs_bedrijf_key,
NULL periode, -- Periode niet van toepassing!
NULL bundeling -- Bundeling niet van toepassing!
FROM fin_factuur f,
cnt_contract c,
prs_v_afdeling_boom ab,
prs_v_aanwezigkenmerklink kl
WHERE f.fin_factuur_verwijder IS NULL AND f.fin_factuur_statuses_key != 3 -- Skippen als Incompleet (kan niet voorkomen?)
AND NOT EXISTS -- Geen boekstuknr, dus nog initieel exporteren!
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 41 -- Hidden boekstuknr!
AND fin_factuur_key = f.fin_factuur_key)
AND f.cnt_contract_key = c.cnt_contract_key
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND ab.prs_bedrijf_key = kl.prs_link_key
AND kl.prs_kenmerklink_waarde = '31' -- Export als Main-contract
UNION ALL -- Goedgekeurde O-facturen voor Main-contract (OCI) => Definitieve MC-inkoop/verkoop
SELECT 'MC2',
f.fin_factuur_key,
f.mld_opdr_key,
NULL cnt_contract_key,
kl1.prs_link_key,
NULL periode, -- Periode niet van toepassing!
NULL bundeling -- Bundeling niet van toepassing!
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
alg_locatie l,
alg_district d,
prs_v_aanwezigkenmerklink kl1,
prs_v_aanwezigkenmerklink kl2
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key = 6 -- Akkoord
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND kl1.prs_kenmerklink_niveau = 'B'
AND kl1.prs_kenmerk_key = 1064 -- Klant->Regio (of bedrijfnaam=regio?)
AND d.alg_regio_key =
fac.safe_to_number (kl1.prs_kenmerklink_waarde)
AND kl2.prs_kenmerklink_niveau = 'B'
AND kl2.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND kl1.prs_link_key = kl2.prs_link_key
AND kl2.prs_kenmerklink_waarde = '31' -- Export als Main-contract
UNION ALL -- Goedgekeurde C-facturen voor Main-contract (OCI) => Definitieve MC-inkoopfacturen (met boekstuknr)
SELECT 'MC2',
f.fin_factuur_key,
NULL mld_opdr_key,
c.cnt_contract_key,
ab.prs_bedrijf_key,
NULL periode, -- Periode niet van toepassing!
NULL bundeling -- Bundeling niet van toepassing!
FROM fin_factuur f,
cnt_contract c,
prs_v_afdeling_boom ab,
prs_v_aanwezigkenmerklink kl
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key = 6 -- Akkoord
AND f.cnt_contract_key = c.cnt_contract_key
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND ab.prs_bedrijf_key = kl.prs_link_key
AND kl.prs_kenmerklink_waarde = '31' -- Export als Main-contract
UNION ALL -- Gemarkeerde C-contracten voor Main-contract (OCI) => MC-verkoopopdrachten/VENR-diensten
SELECT 'MC3',
NULL fin_factuur_key,
NULL mld_opdr_key,
c.cnt_contract_key,
c.cnt_prs_bedrijf_key,
NULL periode, -- Periode niet van toepassing!
NULL bundeling -- Bundeling niet van toepassing!
FROM cnt_v_aanwezigcontract c, prs_v_aanwezigkenmerklink kl
WHERE EXISTS
(SELECT 1
FROM cnt_kenmerkcontract
WHERE cnt_kenmerkcontract_verwijder IS NULL
AND cnt_kenmerk_key = -1 -- TODO: Contract-doorbelasten
AND cnt_contract_key = c.cnt_contract_key)
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND c.cnt_prs_bedrijf_key = kl.prs_link_key
AND kl.prs_kenmerklink_waarde = '31' -- Export als Main-contract
UNION ALL -- Goedgekeurde <20>n gemarkeerde O-facturen voor SSD => SSD-exceptions
SELECT 'SSD1',
f.fin_factuur_key,
f.mld_opdr_key,
NULL cnt_contract_key,
o.mld_uitvoerende_keys,
NULL periode, -- Periode niet van toepassing!
NULL bundeling -- Bundeling niet van toepassing!
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
alg_locatie l,
alg_district d,
prs_v_aanwezigkenmerklink kl1,
prs_v_aanwezigkenmerklink kl2
WHERE f.fin_factuur_verwijder IS NULL AND f.fin_factuur_statuses_key = 6 -- Akkoord
AND EXISTS -- Gemarkeerd als exception, dan nu al exporteren!
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 43 -- Specifiek exporteren!
AND fin_factuur_key = f.fin_factuur_key)
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND kl1.prs_kenmerklink_niveau = 'B'
AND kl1.prs_kenmerk_key = 1064 -- Klant->Regio (of bedrijfnaam=regio?)
AND d.alg_regio_key =
fac.safe_to_number (kl1.prs_kenmerklink_waarde)
AND kl2.prs_kenmerklink_niveau = 'B'
AND kl2.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND kl1.prs_link_key = kl2.prs_link_key
AND kl2.prs_kenmerklink_waarde = '32' -- Export als SSD
UNION ALL -- Goedgekeurde <20>n gemarkeerde C-facturen voor SSD => SSD-exceptions
SELECT 'SSD1',
f.fin_factuur_key,
NULL mld_opdr_key,
c.cnt_contract_key,
c.cnt_prs_bedrijf_key,
NULL periode, -- Periode niet van toepassing!
NULL bundeling -- Bundeling niet van toepassing!
FROM fin_factuur f,
cnt_contract c,
prs_v_afdeling_boom ab,
prs_v_aanwezigkenmerklink kl
WHERE f.fin_factuur_verwijder IS NULL AND f.fin_factuur_statuses_key = 6 -- Akkoord
AND EXISTS -- Gemarkeerd als exception, dan nu al exporteren!
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 43 -- Specifiek exporteren!
AND fin_factuur_key = f.fin_factuur_key)
AND f.cnt_contract_key = c.cnt_contract_key
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND ab.prs_bedrijf_key = kl.prs_link_key
AND kl.prs_kenmerklink_waarde = '32' -- Export als SSD
UNION ALL -- Goedgekeurde of verwerkte OC-facturen per bundeling voor SSD => SSD-verkoopopdrachten/borderels
SELECT 'SSD2',
NULL fin_factuur_key,
NULL mld_opdr_key,
NULL cnt_contract_key,
x.prs_bedrijf_key,
x.periode,
x.bundeling
FROM (SELECT kl1.prs_link_key prs_bedrijf_key,
kl3.prs_kenmerklink_waarde periode,
DECODE (kl4.prs_kenmerklink_waarde,
'48', 'R' || TO_CHAR (d.alg_regio_key),
'49', 'D' || TO_CHAR (d.alg_district_key),
'L' || TO_CHAR (l.alg_locatie_key))
bundeling
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
alg_locatie l,
alg_district d,
prs_v_aanwezigkenmerklink kl1,
prs_v_aanwezigkenmerklink kl2,
prs_v_aanwezigkenmerklink kl3,
prs_v_aanwezigkenmerklink kl4
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND NOT EXISTS -- Geen ordernr, dus nog exporteren als borderel!
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 42 -- Hidden ordernr!
AND fin_factuur_key = f.fin_factuur_key)
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND kl1.prs_kenmerklink_niveau = 'B'
AND kl1.prs_kenmerk_key = 1064 -- Klant->Regio (of bedrijfnaam=regio?)
AND d.alg_regio_key =
fac.safe_to_number (kl1.prs_kenmerklink_waarde)
AND kl2.prs_kenmerklink_niveau = 'B'
AND kl2.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND kl1.prs_link_key = kl2.prs_link_key
AND kl2.prs_kenmerklink_waarde = '32' -- Export als SSD
AND kl3.prs_kenmerklink_niveau = 'B'
AND kl3.prs_kenmerk_key = 1062 -- Klant->Exportperiode
AND kl1.prs_link_key = kl3.prs_link_key
AND kl4.prs_kenmerklink_niveau = 'B'
AND kl4.prs_kenmerk_key = 1063 -- Klant->Exportbundeling
AND kl1.prs_link_key = kl4.prs_link_key
UNION
SELECT ab.prs_bedrijf_key,
kl2.prs_kenmerklink_waarde periode,
DECODE (kl3.prs_kenmerklink_waarde,
'48', 'R0',
'49', 'D0',
'L0')
bundeling
FROM fin_factuur f,
cnt_contract c,
prs_v_afdeling_boom ab,
prs_v_aanwezigkenmerklink kl1,
prs_v_aanwezigkenmerklink kl2,
prs_v_aanwezigkenmerklink kl3
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND NOT EXISTS -- Geen ordernr, dus nog exporteren als borderel!
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 42 -- Hidden ordernr!
AND fin_factuur_key = f.fin_factuur_key)
AND f.cnt_contract_key = c.cnt_contract_key
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key
AND kl1.prs_kenmerklink_niveau = 'B'
AND kl1.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND ab.prs_bedrijf_key = kl1.prs_link_key
AND kl1.prs_kenmerklink_waarde = '32' -- Export als SSD
AND kl2.prs_kenmerklink_niveau = 'B'
AND kl2.prs_kenmerk_key = 1062 -- Klant->Exportperiode
AND ab.prs_bedrijf_key = kl2.prs_link_key
AND kl3.prs_kenmerklink_niveau = 'B'
AND kl3.prs_kenmerk_key = 1063 -- Klant->Exportbundeling
AND ab.prs_bedrijf_key = kl3.prs_link_key) x;
/* Formatted on 4-9-2014 13:38:22 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE venr_select_u4 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Cursor loopt over een view met daarin opgebouwd alle actuele (nog te
-- te exporteren) regels; deze of een volgende run.
CURSOR c1
IS
SELECT *
FROM venr_v_u4_actual
ORDER BY 1, 2;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
export_date DATE := SYSDATE;
regelnr NUMBER := 0;
v_count NUMBER;
v_boekstuknr VARCHAR2 (20);
v_ordernr VARCHAR2 (20);
v_freeze NUMBER;
BEGIN
-- Genereer boekstuknr(OCI+SSD)/ordernr(OCI) voor alle relevante facturen en
-- bevries (AV=Verwerkt) deze!
-- Tevens entry in Eigen Tabel met uplift voor OCI-verkoopopdrachten!
FOR rec IN c1
LOOP
v_boekstuknr := NULL;
v_ordernr := NULL;
v_freeze := 0;
IF (rec.exportvariant != 'SSD2')
THEN
-- Genereren/toevoegen boekstuknr of ordernr
IF (rec.exportvariant = 'SSD1') -- SSD/Exception=>Genereren boekstuknr/freeze!
THEN
-- Sequence '01' voor boekstuknr tbv. SSD!
SELECT fac_s_user01.NEXTVAL INTO v_count FROM DUAL;
v_boekstuknr :=
TO_CHAR (export_date, 'Y')
|| '761' -- TODO: Configureerbaar maken?
|| SUBSTR ('0000' || TO_CHAR (v_count), -4);
-- Toevoegen boekstuknr als hidden kenmerk op factuur!
v_errormsg := 'Fout bij toevoegen boekstuknr/SSD';
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, 41, v_boekstuknr);
v_freeze := 1;
ELSIF (rec.exportvariant = 'MC1') -- OCI/Initieel=>Genereren boekstuknr/no freeze!
THEN
-- Sequence '03' voor boekstuknr tbv. OCI!
SELECT fac_s_user03.NEXTVAL INTO v_count FROM DUAL;
v_boekstuknr :=
TO_CHAR (export_date, 'Y')
|| '729' -- TODO: Configureerbaar maken?
|| SUBSTR ('0000' || TO_CHAR (v_count), -4);
-- Toevoegen boekstuknr als hidden kenmerk op factuur!
v_errormsg := 'Fout bij toevoegen boekstuknr/MC';
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, 41, v_boekstuknr);
ELSIF (rec.exportvariant = 'MC2') -- OCI/Definitief=>Genereren ordernr/freeze!
THEN
-- Sequence '04' voor ordernr tbv. OCI!
SELECT fac_s_user04.NEXTVAL INTO v_count FROM DUAL;
v_ordernr :=
TO_CHAR (export_date, 'Y')
|| '629' -- TODO: Configureerbaar maken?
|| SUBSTR ('0000' || TO_CHAR (v_count), -4);
-- Toevoegen ordernr als hidden kenmerk op factuur!
v_errormsg := 'Fout bij toevoegen ordernr/MC';
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, 42, v_ordernr);
v_freeze := 1;
ELSIF (rec.exportvariant = 'MC3') -- OCI/Direct definitief=>Genereren ordernr/freeze!
THEN
-- Sequence '04' voor ordernr tbv. OCI!
SELECT fac_s_user04.NEXTVAL INTO v_count FROM DUAL;
v_ordernr :=
TO_CHAR (export_date, 'Y')
|| '629' -- TODO: Configureerbaar maken?
|| SUBSTR ('0000' || TO_CHAR (v_count), -4);
ELSE
fac.writelog (p_applname,
'E',
'Exportvariant ongeldig!',
'');
END IF;
-- Bevriezen factuur
IF (v_freeze = 1)
THEN
v_errormsg := 'Fout bij bevriezen factuur/MC';
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7 -- AV
WHERE f.fin_factuur_key = rec.fin_factuur_key;
fac.trackaction ('FINVER',
rec.fin_factuur_key,
NULL, -- FACILITOR
NULL,
NULL);
regelnr := regelnr + 1;
END IF;
-- Toevoegen meta-order als entry in eigen tabel (met/zonder uplift?)!
IF (v_ordernr IS NOT NULL) -- Alleen Main-contracts=OCI!
THEN
v_errormsg := 'Fout bij toevoegen meta-order/MC';
INSERT INTO fac_usrdata (fac_usrtab_key,
fac_usrdata_code,
fac_usrdata_omschr,
fac_usrdata_aanmaak,
fac_usrdata_vervaldatum,
fac_usrdata_prijs)
VALUES (25,
v_ordernr,
TO_CHAR (rec.prs_bedrijf_key), -- OCI-prs_bedrijf_key!
export_date,
NULL,
NULL); -- TODO: uplift?
END IF;
ELSE -- Borderels
-- Of wekelijks en woensdag
-- Of halfmaandelijks en de 14e of de 'laatste-2' dag van de maand
-- Of maandelijks en de 'laatste-2' dag van de maand
-- Of maandelijks en de 5e dag van de maand
IF ( (rec.periode = '42' AND TO_CHAR (SYSDATE, 'D') = 4)
OR (rec.periode = '43' AND TO_CHAR (SYSDATE, 'DD') IN ('14', TO_CHAR (LAST_DAY (SYSDATE) - 2, 'DD')))
OR (rec.periode = '44' AND TO_CHAR (SYSDATE, 'DD') = '05')
OR (rec.periode = '45' AND TO_CHAR (SYSDATE, 'DD') = TO_CHAR (LAST_DAY (SYSDATE) - 2, 'DD')))
THEN
-- 1. Genereer ordernr
-- 2. Loop over betreffende facturen:
-- a. Toevoegen ordernr als hidden kenmerk
-- b. Bevriezen
-- 3. Toevoegen meta-order in eigen tabel
-- Sequence '02' voor ordernr tbv. SSD!
SELECT fac_s_user02.NEXTVAL INTO v_count FROM DUAL;
v_ordernr :=
TO_CHAR (export_date, 'Y')
|| '661' -- TODO: Configureerbaar maken?
|| SUBSTR ('0000' || TO_CHAR (v_count), -4);
FOR rcf
IN ( SELECT x.fin_factuur_key,
x.fin_factuur_statuses_key,
x.prs_bedrijf_key
FROM (SELECT f.fin_factuur_key,
f.fin_factuur_statuses_key,
o.mld_uitvoerende_keys prs_bedrijf_key,
DECODE (
kl4.prs_kenmerklink_waarde,
'48',
'R' || TO_CHAR (d.alg_regio_key),
'49',
'D' || TO_CHAR (d.alg_district_key),
'L' || TO_CHAR (l.alg_locatie_key))
bundeling
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
alg_locatie l,
alg_district d,
prs_v_aanwezigkenmerklink kl1,
prs_v_aanwezigkenmerklink kl2,
--prs_v_aanwezigkenmerklink kl3,
prs_v_aanwezigkenmerklink kl4
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND NOT EXISTS -- Geen ordernr, dus nog exporteren als borderel!
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 42 -- Hidden ordernr!
AND fin_factuur_key =
f.fin_factuur_key)
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key =
l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND kl1.prs_kenmerklink_niveau = 'B'
AND kl1.prs_kenmerk_key = 1064 -- Klant->Regio (of bedrijfnaam=regio?)
AND d.alg_regio_key =
fac.safe_to_number (
kl1.prs_kenmerklink_waarde)
AND kl2.prs_kenmerklink_niveau = 'B'
AND kl2.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND kl1.prs_link_key = kl2.prs_link_key
AND kl2.prs_kenmerklink_waarde = '32' -- Export als SSD
--AND kl3.prs_kenmerklink_niveau = 'B'
--AND kl3.prs_kenmerk_key = 1062 -- Klant->Exportperiode
--AND kl1.prs_link_key = kl3.prs_link_key
--AND kl3.prs_kenmerklink_waarde =
-- rec.periode
AND kl4.prs_kenmerklink_niveau = 'B'
AND kl4.prs_kenmerk_key = 1063 -- Klant->Exportbundeling
AND kl1.prs_link_key = kl4.prs_link_key
UNION ALL
SELECT f.fin_factuur_key,
f.fin_factuur_statuses_key,
c.cnt_prs_bedrijf_key prs_bedrijf_key,
DECODE (kl3.prs_kenmerklink_waarde,
'48', 'R0',
'49', 'D0',
'L0')
bundeling
FROM fin_factuur f,
cnt_contract c,
prs_v_afdeling_boom ab,
prs_v_aanwezigkenmerklink kl1,
--prs_v_aanwezigkenmerklink kl2,
prs_v_aanwezigkenmerklink kl3
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND NOT EXISTS -- Geen ordernr, dus nog exporteren als borderel!
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 42 -- Hidden ordernr!
AND fin_factuur_key =
f.fin_factuur_key)
AND f.cnt_contract_key = c.cnt_contract_key
AND c.prs_afdeling_key_eig =
ab.prs_afdeling_key
AND kl1.prs_kenmerklink_niveau = 'B'
AND kl1.prs_kenmerk_key = 1061 -- Klant->Exportvariant
AND ab.prs_bedrijf_key = kl1.prs_link_key
AND kl1.prs_kenmerklink_waarde = '32' -- Export als SSD
--AND kl2.prs_kenmerklink_niveau = 'B'
--AND kl2.prs_kenmerk_key = 1062 -- Klant->Exportperiode
--AND ab.prs_bedrijf_key = kl2.prs_link_key
--AND kl2.prs_kenmerklink_waarde =
-- rec.periode
AND kl3.prs_kenmerklink_niveau = 'B'
AND kl3.prs_kenmerk_key = 1063 -- Klant->Exportbundeling
AND ab.prs_bedrijf_key = kl3.prs_link_key)
x
WHERE x.bundeling = rec.bundeling
ORDER BY 1)
LOOP
-- Toevoegen ordernr als hidden kenmerk op factuur!
v_errormsg := 'Fout bij toevoegen ordernr/SSD';
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (rcf.fin_factuur_key, 42, v_ordernr);
IF (rcf.fin_factuur_statuses_key != 7)
THEN
v_errormsg := 'Fout bij bevriezen factuur/SSD';
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7 -- AV
WHERE f.fin_factuur_key = rcf.fin_factuur_key;
fac.trackaction ('FINVER',
rcf.fin_factuur_key,
NULL, -- FACILITOR
NULL,
NULL);
regelnr := regelnr + 1;
END IF;
END LOOP;
v_errormsg := 'Fout bij toevoegen meta-order/SSD';
INSERT INTO fac_usrdata (fac_usrtab_key,
fac_usrdata_code,
fac_usrdata_omschr,
fac_usrdata_aanmaak,
fac_usrdata_vervaldatum,
fac_usrdata_prijs)
VALUES (25,
v_ordernr,
TO_CHAR (rec.prs_bedrijf_key), -- SSD-prs_bedrijf_key!
export_date,
NULL,
NULL);
END IF;
END IF;
--COMMIT; -- Geen tussentijdse COMMIT, dus alles of niets!
END LOOP;
COMMIT;
-- Let op: 2e param is 'E' omdat deze regel (mede) is bedoeld als feedback
-- tbv. applicatiebeheerders!
fac.writelog (p_applname,
'E',
'Aantal bevroren facturen: ' || TO_CHAR (regelnr),
'');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg ||
' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname,
'E',
'Proces U4_EXPORT afgebroken!',
v_errormsg);
COMMIT;
END;
/
/* Formatted on 27-8-2014 15:16:44 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PACKAGE VENR
AS
-- PACKAGES voor de VENR specifieke ondersteuning
PROCEDURE finish_ssdinvoices (p_ordernr IN NUMBER);
END;
/
/* Formatted on 21-4-2015 10:24:36 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PACKAGE BODY VENR
AS
PROCEDURE finish_ssdinvoices (p_ordernr IN NUMBER)
AS
-- Cursor loopt over nog niet geexporteerde invoices onder borderel met
-- 'p_ordernr'; betreffende facturen krijgen een boekstuknr!
CURSOR c1
IS
SELECT f.fin_factuur_key
FROM fin_factuur f, fin_kenmerkfactuur kf
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key = 7 -- Verwerkt
AND kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerk_key = 42 -- Ordernr
AND f.fin_factuur_key = kf.fin_factuur_key
AND kf.fin_kenmerkfactuur_waarde = TO_CHAR (p_ordernr)
AND NOT EXISTS -- GEEN boekstuknr (= NIET gemarkeerd als exception)!
(SELECT 1
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 41 -- Boekstuknr
AND fin_factuur_key = f.fin_factuur_key)
ORDER BY 1;
c_applname VARCHAR2 (50) := 'FINISH_SSDINV';
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200) := '-';
v_usrdata_key NUMBER (10);
v_boekstuknr VARCHAR2 (20);
v_update NUMBER (10) := 0;
v_count NUMBER (10);
BEGIN
v_aanduiding := '[' || TO_CHAR (p_ordernr) || '] ';
v_errormsg := 'Fout bij bepalen meta-order/SSD';
SELECT fac_usrdata_key
INTO v_usrdata_key
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 25
AND fac_usrdata_vervaldatum IS NULL -- Moet zo zijn!
AND fac_usrdata_code = TO_CHAR (p_ordernr);
-- Toevoegen boekstuknr-kenmerk op 1 of meer facturen!
FOR rec IN c1
LOOP
BEGIN
v_errormsg := 'Fout bij bepalen boekstuknr';
-- Sequence '01' voor boekstuknr tbv. SSD
SELECT fac_s_user01.NEXTVAL INTO v_count FROM DUAL;
v_boekstuknr :=
TO_CHAR (SYSDATE, 'Y')
|| '761' -- TODO: Configureerbaar maken?
|| SUBSTR ('0000' || TO_CHAR (v_count), -4);
v_errormsg := 'Fout bij toevoegen boekstuknr';
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, 41, v_boekstuknr);
v_update := v_update + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (c_applname,
'W',
v_aanduiding || v_errormsg,
'');
END;
END LOOP;
v_errormsg := 'Fout bij bijwerken vervaldatum';
UPDATE fac_usrdata
SET fac_usrdata_vervaldatum = SYSDATE
WHERE fac_usrdata_key = v_usrdata_key;
fac.writelog (
c_applname,
'S',
'SSD-borderel '
|| TO_CHAR (p_ordernr)
|| '/#invoices: '
|| TO_CHAR (v_update),
'');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (c_applname,
'E',
'Procedure FINISH_SSDINV afgebroken!',
v_errormsg);
END finish_ssdinvoices;
END;
/
/* Formatted on 17-9-2014 15:50:10 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW venr_v_rap_finish_ssdinvoices
(
hide_f_bedrijf_key,
fclt_f_bedrijf,
ordernr,
aantal,
totaal_excl,
totaal_incl
)
AS
SELECT b.prs_bedrijf_key,
b.prs_bedrijf_naam,
ud.fac_usrdata_code,
COUNT (DISTINCT f.fin_factuur_key),
SUM (fr.fin_factuurregel_totaal),
SUM (fr.fin_factuurregel_totaal + ROUND (fr.fin_factuurregel_btw, 2))
FROM fac_v_aanwezigusrdata ud,
prs_bedrijf b,
fin_kenmerkfactuur kf,
fin_factuur f,
fin_factuurregel fr
WHERE ud.fac_usrtab_key = 25 -- Verkoopopdrachten
AND ud.fac_usrdata_vervaldatum IS NULL
AND ud.fac_usrdata_code LIKE '_661%' -- Prefix voor SSD-orders
AND fac.safe_to_number (ud.fac_usrdata_omschr) = b.prs_bedrijf_key
AND kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerk_key = 42 -- Ordernr
AND ud.fac_usrdata_code = kf.fin_kenmerkfactuur_waarde
AND f.fin_factuur_statuses_key = 7 -- Verwerkt (moet zo zijn)!
AND kf.fin_factuur_key = f.fin_factuur_key
AND f.fin_factuur_key = fr.fin_factuur_key
GROUP BY b.prs_bedrijf_key, b.prs_bedrijf_naam, ud.fac_usrdata_code;
/* Formatted on 5-9-2014 9:55:05 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW venr_v_rap_order2invoice_xref
(
fclt_x_borderel,
fclt_f_locatie,
fclt_f_leverancier,
extern_factuurnr,
excl_btw,
btw_hoog,
btw_laag,
kostenplaats,
soort_onderhoud,
meldingnummer,
fclt_3d_afdeling_key
)
AS
SELECT ud.fac_usrdata_code,
DECODE (
l.alg_locatie_key,
NULL,
'Contract',
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')'),
uv.prs_bedrijf_naam,
f.fin_factuur_nr,
SUM (fr.fin_factuurregel_totaal),
SUM(DECODE (fr.fin_btwtabelwaarde_key,
3, ROUND (fr.fin_factuurregel_btw, 2),
0)),
SUM(DECODE (fr.fin_btwtabelwaarde_key,
2, ROUND (fr.fin_factuurregel_btw, 2),
0)),
gbc.fin_kenmerkfactuur_waarde,
DECODE (o.mld_typeopdr_key, NULL, NULL, 281, 'P', 'C'), -- 281=Preventief onderhoud
TO_CHAR (o.mld_melding_key),
b2a.prs_afdeling_key
FROM fac_v_aanwezigusrdata ud,
prs_bedrijf kl,
( SELECT prs_bedrijf_key, MIN (prs_afdeling_key1) prs_afdeling_key
FROM prs_v_afdeling_boom
GROUP BY prs_bedrijf_key) b2a,
fin_kenmerkfactuur kf,
fin_factuur f,
fin_factuurregel fr,
mld_opdr o,
mld_melding m,
alg_locatie l,
prs_bedrijf uv,
(SELECT *
FROM fin_kenmerkfactuur
WHERE fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 61) gbc -- Grootboekcode klant
WHERE ud.fac_usrtab_key = 25 -- Verkoopopdrachten
AND ud.fac_usrdata_vervaldatum IS NULL
AND ud.fac_usrdata_code LIKE '_661%' -- Prefix voor SSD-orders
AND fac.safe_to_number (ud.fac_usrdata_omschr) = kl.prs_bedrijf_key
AND kl.prs_bedrijf_key = b2a.prs_bedrijf_key
AND kf.fin_kenmerkfactuur_verwijder IS NULL
AND kf.fin_kenmerk_key = 42 -- Ordernr
AND ud.fac_usrdata_code = kf.fin_kenmerkfactuur_waarde
--AND f.fin_factuur_statuses_key = 7 -- Verwerkt (moet zo zijn)!
AND kf.fin_factuur_key = f.fin_factuur_key
AND f.fin_factuur_key = fr.fin_factuur_key
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND o.mld_melding_key = m.mld_melding_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND o.mld_uitvoerende_keys = uv.prs_bedrijf_key(+)
AND f.fin_factuur_key = gbc.fin_factuur_key(+)
GROUP BY ud.fac_usrdata_code,
DECODE (
l.alg_locatie_key,
NULL,
'Contract',
l.alg_locatie_omschrijving
|| ' ('
|| l.alg_locatie_code
|| ')'),
uv.prs_bedrijf_naam,
f.fin_factuur_nr,
gbc.fin_kenmerkfactuur_waarde,
DECODE (o.mld_typeopdr_key, NULL, NULL, 281, 'P', 'C'),
TO_CHAR (o.mld_melding_key),
b2a.prs_afdeling_key;
-- Import vanuit Strukton
/* Formatted on 22-5-2015 11:52:44 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE venr_import_opdrstat_strukton (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_import NUMBER (10) := 0;
v_ongeldig NUMBER (1) := 0;
-- De importvelden
v_mld_opdr_key_tekst VARCHAR2 (100);
v_mld_opdr_key NUMBER (10);
v_mld_opdr_opmerking VARCHAR2 (4000);
v_extern_nummer VARCHAR2 (100);
v_status_code VARCHAR2 (100);
v_status NUMBER (10);
v_datumtijd_tekst VARCHAR2 (100);
v_datumtijd DATE;
v_status_tekst VARCHAR2 (100);
v_opmerking VARCHAR2 (4000);
-- Overige velden:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM venr_imp_opdrstat_strukton;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout bij opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
fac.imp_getfield (v_newline, c_delim, v_opmerking);
v_opmerking := SUBSTR (v_opmerking, 1, 1000);
-- Verwijder de markering voor cr/lf die in stylesheet is toegevoegd.
v_opmerking := REPLACE (v_opmerking, '@@', CHR (13));
v_aanduiding :=
'['
|| v_mld_opdr_key_tekst
|| '|'
|| v_extern_nummer
|| '|'
|| v_status_code
|| '|'
|| v_datumtijd_tekst
|| '|'
|| v_status_tekst
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF header_is_valid = 0
THEN
IF UPPER (TRIM (v_mld_opdr_key_tekst)) = 'REFERENCEID'
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Fout bepalen opdracht';
v_mld_opdr_key := TRIM (v_mld_opdr_key);
BEGIN
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
INTO v_mld_opdr_key, v_mld_opdr_opmerking
FROM mld_opdr o,
mld_melding m,
mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr =
v_mld_opdr_key_tekst;
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'');
END;
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout bepalen status';
CASE
WHEN v_status_code = '5'
THEN
v_status := 5; -- uitgegeven
WHEN v_status_code = '10'
THEN
v_status := 8; -- geaccepteerd
WHEN v_status_code = '20' -- monteur gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '25' -- specialist gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '30' -- technisch gereed
THEN
v_status := 6; -- afgemeld
-- For future use
--WHEN v_status_code = '40' -- uitgeprijst
--THEN
-- v_status := 6; -- afgemeld
WHEN v_status_code = '70'
THEN
v_status := 1; -- geannuleerd
WHEN v_status_code = '80'
THEN
v_status := 1; -- afgewezen
ELSE
v_status := NULL;
v_ongeldig := 1; -- nog te bezien
END CASE;
END IF;
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout converteren datumtijd';
IF INSTR (v_datumtijd_tekst, '.') > 0
THEN
v_datumtijd :=
fac.safe_to_date (
REPLACE (
SUBSTR (v_datumtijd_tekst,
1,
INSTR (v_datumtijd_tekst, '.') - 1),
'T',
' '),
'yyyy-mm-dd hh24:mi:ss');
ELSE
v_datumtijd :=
fac.safe_to_date (v_datumtijd_tekst,
'yyyy-mm-dd hh24:mi:ss');
END IF;
END IF;
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout aanvullen opmerking';
-- controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang
-- gemeld is.
IF v_opmerking IS NOT NULL
AND INSTR (v_mld_opdr_opmerking, v_opmerking) = 0
THEN
v_opmerking :=
'['
|| v_datumtijd_tekst
|| '] - '
|| v_status_tekst
|| CHR (13)
|| CHR (10)
|| v_opmerking;
ELSE
v_opmerking :=
'[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
END IF;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout wegschrijven statusbericht';
INSERT INTO venr_imp_opdrstat_strukton (mld_opdr_key,
extern_nummer,
status,
datumtijd,
opmerking)
VALUES (v_mld_opdr_key,
v_extern_nummer,
v_status,
v_datumtijd,
v_opmerking);
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'');
END;
ELSE
IF v_status_code <> '40' AND v_status_code <> '45'
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'');
END IF;
END IF;
END IF;
END;
END LOOP;
IF header_is_valid = 0
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'Inleesproces/#ingelezen statusberichten: ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (
p_import_key,
'S',
'Inleesproces/#ongeldige niet ingelezen statusberichten: '
|| TO_CHAR (v_count_tot - v_count_import),
'');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inleesproces statusberichten afgebroken!');
END;
/
CREATE OR REPLACE PROCEDURE venr_update_opdrstat_strukton (p_import_key IN NUMBER)
AS
-- Cursor loopt - in volgorde! - over alle ingelezen statusberichten.
CURSOR c1
IS
SELECT mld_opdr_key, extern_nummer, datumtijd, status, opmerking
FROM venr_imp_opdrstat_strukton
ORDER BY 1, 3;
c_user_key NUMBER (10) := 5; -- _STRUKTON-user
c_refnr_srtkkey NUMBER (10) := 141; -- Refnr. Leverancier
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot NUMBER (10) := 0;
v_count NUMBER (10) := 0;
v_mld_key NUMBER (10) := 0;
v_opdr_key NUMBER (10) := 0;
v_opdr_status NUMBER (10) := 0;
v_mld_typeopdr_key NUMBER (10);
v_mld_kenmerk_key NUMBER (10);
v_mld_kenmerkopdr_key NUMBER (10);
BEGIN
-- Loop over alle ingelezen Strukton-statusberichten.
FOR rec IN c1
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.mld_opdr_key
|| '|'
|| SUBSTR (rec.opmerking, 1, 100)
|| '] ';
v_count_tot := v_count_tot + 1;
-- Key van melding/opdracht bepalen en Refnr. bij opdracht opslaan.
IF rec.mld_opdr_key IS NOT NULL
THEN
v_errormsg := 'Fout bepalen opdracht.';
SELECT mld_melding_key, mld_opdr_key, mld_statusopdr_key, mld_typeopdr_key
INTO v_mld_key, v_opdr_key, v_opdr_status, v_mld_typeopdr_key
FROM mld_opdr
WHERE mld_opdr_key = rec.mld_opdr_key;
v_errormsg := 'Fout bepalen Refnr-kenmerk.';
SELECT k.mld_kenmerk_key
INTO v_mld_kenmerk_key
FROM mld_kenmerk k
WHERE k.mld_srtkenmerk_key = c_refnr_srtkkey
AND k.mld_typeopdr_key = v_mld_typeopdr_key;
v_errormsg := 'Fout bepalen Refnr-kenmerkopdracht.';
SELECT MAX (ko.mld_kenmerkopdr_key)
INTO v_mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = v_opdr_key
AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
IF v_mld_kenmerkopdr_key IS NULL
THEN
-- Kenmerk toevoegen
v_errormsg := 'Fout toevoegen Refnr-kenmerkopdracht.';
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
mld_opdr_key,
mld_kenmerkopdr_waarde)
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
ELSE
-- Kenmerk bijwerken
v_errormsg := 'Fout bijwerken Refnr-kenmerkopdracht.';
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde = rec.extern_nummer
WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
END IF;
v_errormsg := 'Fout bijwerken Opmerking (opdracht).';
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
UPDATE mld_opdr
SET mld_opdr_opmerking =
DECODE (
mld_opdr_opmerking,
NULL,
rec.opmerking,
rec.opmerking
|| CHR (13)
|| CHR (10)
|| SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
WHERE mld_opdr_key = v_opdr_key;
v_errormsg := 'Fout bijwerken Status.';
IF v_opdr_status <> rec.status
THEN
IF rec.status = 8 AND v_opdr_status = 5
THEN
-- Accepteer opdracht als de opdracht uitgegeven was
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton
ELSIF rec.status = 6 AND v_opdr_status = 5
THEN
-- Meld de opdracht af als deze uitgegeven was
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton, eerst accepteren
MLD.setopdrachtstatus (v_opdr_key, 6, c_user_key); -- Strukton
ELSIF rec.status = 6 AND v_opdr_status = 8
THEN
-- Meld de opdracht af als deze geaccepteerd was
MLD.setopdrachtstatus (v_opdr_key, 6, c_user_key); -- Strukton
ELSIF rec.status = 1 AND v_opdr_status IN (5, 8)
THEN
-- Wijs de opdracht af als deze niet/wel geaccepteerd was
MLD.setopdrachtstatus (v_opdr_key, 1, c_user_key); -- Strukton
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
END IF;
IF rec.status = 6 AND v_opdr_status <> 6
THEN
v_errormsg := 'Fout bijwerken Opmerking (melding).';
UPDATE mld_melding m
SET mld_melding_opmerking =
DECODE (
mld_melding_opmerking,
NULL,
rec.opmerking,
rec.opmerking || CHR (13) || CHR (10)
|| SUBSTR (mld_melding_opmerking,
1,
(4000 - v_count)))
WHERE mld_melding_key = v_mld_key
AND mld_melding_status IN (4, 7)
AND NOT EXISTS
( -- Afhandeling in melding niet aanpassen voor projecten
SELECT sm.mld_stdmelding_key
FROM mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_prefix = 'QQQ');
v_errormsg := 'Fout sluiten melding.';
SELECT COUNT ( * )
INTO v_count
FROM (SELECT m.mld_melding_key,
(SELECT COUNT ( * )
FROM mld_opdr o
WHERE mld_melding_key = m.mld_melding_key)
aanw_opdr,
(SELECT COUNT ( * )
FROM mld_opdr o
WHERE mld_melding_key = m.mld_melding_key
AND o.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9))
open_opdr
FROM mld_melding m
WHERE m.mld_melding_key = v_mld_key
AND m.mld_melding_status IN (4, 7))
niet_opgelost
WHERE aanw_opdr > 0 AND open_opdr = 0;
-- Sinds AADO#30922 wordt de melding niet meer automatisch afgemeld.
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
END IF;
END IF;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Statusbericht-loop');
END;
END LOOP;
COMMIT;
END;
/
/* Formatted on 10-6-2016 17:02:58 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW venr_v_imp_prs_perslid_sync
(
prs_afdeling_naam,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam,
prs_perslid_titel,
prs_perslid_telefoonnr,
prs_perslid_mobiel,
prs_perslid_email,
prs_perslid_apikey,
prs_srtperslid_omschrijving,
prs_perslid_nr,
prs_perslid_oslogin,
prs_perslid_oslogin2,
prs_perslid_geslacht,
prs_perslid_dienstverband
)
AS
SELECT pg.prs_afdeling_naam,
p.prs_perslid_naam,
p.prs_perslid_tussenvoegsel,
p.prs_perslid_voorletters,
p.prs_perslid_voornaam,
p.prs_perslid_titel,
p.prs_perslid_telefoonnr,
p.prs_perslid_mobiel,
p.prs_perslid_email,
p.prs_perslid_apikey,
pg.prs_srtperslid_omschrijving,
p.prs_perslid_nr,
p.prs_perslid_oslogin,
p.prs_perslid_oslogin2,
p.prs_perslid_geslacht,
p.prs_perslid_dienstverband
FROM prs_perslid p, prs_v_perslid_gegevens pg, prs_v_afdeling a
WHERE p.prs_perslid_apikey IS NOT NULL -- Alleen XD-users = APIKEY
AND SUBSTR (p.prs_perslid_oslogin, 1, 1) != '_' -- Selecteerbaar
AND p.prs_perslid_key = pg.prs_perslid_key -- Aanwezig
AND p.prs_perslid_flags = 0 -- Normaal
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = fac.getsetting ('xd_primary_bedrijfkey');
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('VENR', 5); END;
/
commit;
spool off