-- -- $Id$ -- -- Script containing customer specific db-configuration for VENR. DEFINE thisfile = 'VENR.SQL' DEFINE dbuser = '^VENR' 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 ------ payload begin ------ 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, 'IYYY-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 ‚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 ‚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 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_imp NUMBER (10) := 0; v_ongeldig NUMBER (1) := 0; -- De importvelden v_mld_opdr_key_tekst VARCHAR2 (100); 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); --v_totaal_tekst VARCHAR2 (100); --v_totaal NUMBER (8,2); --v_correctie_tekst VARCHAR2 (100); --v_correctie NUMBER (8,2); -- Overige velden v_mld_opdr_key NUMBER (10); v_mld_opdr_opmerking VARCHAR2 (4000); CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN DELETE FROM venr_imp_opdrstat_strukton; COMMIT; FOR rec1 IN c1 LOOP BEGIN v_newline := rec1.fac_imp_file_line; v_errormsg := 'Fout opvragen importregel'; v_aanduiding := ''; v_ongeldig := 0; -- Lees alle veldwaarden. fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst); v_mld_opdr_key_tekst := TRIM (v_mld_opdr_key_tekst); fac.imp_getfield (v_newline, c_delim, v_extern_nummer); v_extern_nummer := TRIM (v_extern_nummer); fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID v_status_code := TRIM (v_status_code); fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst); v_datumtijd_tekst := TRIM (v_datumtijd_tekst); fac.imp_getfield (v_newline, c_delim, v_status_tekst); v_status_tekst := TRIM (v_status_tekst); fac.imp_getfield (v_newline, c_delim, v_opmerking); v_opmerking := SUBSTR (TRIM (v_opmerking), 1, 1000); --fac.imp_getfield (v_newline, c_delim, v_totaal_tekst); --v_totaal := fac.safe_to_number (v_totaal_tekst); --fac.imp_getfield (v_newline, c_delim, v_correctie_tekst); --v_correctie := fac.safe_to_number (v_correctie_tekst); -- 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' --AND UPPER (TRIM (v_totaal_tekst)) = 'TOTAL' --AND UPPER (TRIM (v_correctie_tekst)) = 'CORRECTION' THEN header_is_valid := 1; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden. v_errormsg := 'Fout bepalen opdracht'; 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, 'Regel wordt overgeslagen!'); END; IF v_ongeldig = 0 THEN v_errormsg := 'Status ongedefinieerd'; 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 -- KFNS#52066: Uitprijs/fiatteer-functionaliteit! --WHEN v_status_code = '40' -- uitgeprijst (fiattering aan FACILITOR-kant) --THEN -- v_status := 9; -- afgerond --WHEN v_status_code = '45' -- gefiatteerd (fiattering aan Strukton-kant) --THEN -- v_status := 9; -- afgerond WHEN v_status_code = '70' THEN v_status := 1; -- geannuleerd WHEN v_status_code = '80' THEN v_status := 1; -- afgewezen WHEN v_status_code = '200' -- onderbroken THEN --TODO: Notitie toevoegen (incl. reden?) v_status := NULL; -- ongewijzigd WHEN v_status_code = '210' -- herpland THEN --TODO: Notitie toevoegen v_status := NULL; -- ongewijzigd ELSE v_status := NULL; v_ongeldig := 1; -- nog te bezien END CASE; END IF; IF v_ongeldig = 0 THEN v_errormsg := 'Datumtijd ongeldig'; 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 (REPLACE (v_datumtijd_tekst, 'T', ' '), 'yyyy-mm-dd hh24:mi:ss'); END IF; END IF; IF v_ongeldig = 0 THEN v_errormsg := 'Opmerking ongeldig'; -- Controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang is gemeld. 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) -- Geen totaal/correctie! VALUES (v_mld_opdr_key, v_extern_nummer, v_status, v_datumtijd, v_opmerking); v_count_imp := v_count_imp + 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 -- Foutmeldingen onderdrukken als uitprijzen/fiatteren niet is aangeschakeld. 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_imp), ''); 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 - per opdracht in volgorde! - over alle ingelezen statusberichten. CURSOR c1 IS SELECT mld_opdr_key, extern_nummer, status, datumtijd, opmerking -- Geen totaal/correctie! FROM venr_imp_opdrstat_strukton ORDER BY 1, 4; 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); v_opdr_key NUMBER (10); v_opdr_status NUMBER (10); 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; IF rec.status IS NOT NULL THEN 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 rec.status = 8 AND v_opdr_status = 5 THEN -- Accepteer de opdracht als deze 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 (na eerst accepteren) MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton 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); --ELSIF rec.status = 9 AND v_opdr_status = 6 -- Per KFNS#52066 --THEN -- Neem ontvangen kosten over zoals afgestemd met KFNS#59399! --UPDATE mld_opdr -- SET mld_opdr_materiaal = rec.totaal, -- mld_opdr_kosten = rec.totaal + rec.correctie -- WHERE mld_opdr_key = v_opdr_key; -- Rond de opdracht af als deze afgemeld was --MLD.setopdrachtstatus (v_opdr_key, 9, c_user_key); -- Strukton END IF; IF rec.status = 6 AND v_opdr_status <> 6 THEN -- AADO#30922: Melding niet meer automatisch afmelden. -- KFNS#37965: Opmerking-veld bij melding niet meer bijwerken. MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0); END IF; ELSE -- rec.status IS NULL (= Onderbroken/Herpland), dan toevoegen Notitie! -- YAXX#59749: Toevoegen Notitie! v_errormsg := 'Fout toevoegen Notitie (opdracht).'; INSERT INTO mld_opdr_note (mld_opdr_key, mld_opdr_note_omschrijving, prs_perslid_key) VALUES (v_opdr_key, rec.opmerking, c_user_key); 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; END; / -- VENR#39178: FIN-rapportages per klant/leverancier/contract. /* Formatted on 24-2-2017 13:30:30 (QP5 v5.136.908.31019) */ CREATE OR REPLACE VIEW venr_v_rap_actual_cost_tot ( fclt_3d_afdeling_key, -- Kunnen beperken per leverancier! maand, fclt_f_klant, fclt_f_leverancier, contractnr, beschrijving, aantal, kosten_onderweg, kosten_afgerond, fclt_x_kostenplaats ) AS -- Vaste contractkosten over de ACTUAL termijn SELECT b2a.prs_afdeling_key, TO_CHAR (SYSDATE, 'yyyy-mm'), -- Deze maand volgende maand factureren (achteraf) x.alg_district_omschrijving klant, b2a.prs_bedrijf_naam leverancier, x.cnt_contract_nummer_intern, -- Uit deze maand lopend contract, anders geen vaste kosten x.cnt_contract_omschrijving, 0 aantal, ROUND ( DECODE (COALESCE (x.cnt_contract_termijnkosten, 0), 0, x.cnt_contract_kosten / 12, x.cnt_contract_termijnkosten), 2) kosten_onderweg, TO_NUMBER (NULL) kosten_afgerond, x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving FROM (SELECT d.alg_district_omschrijving, -- Klant --c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_prs_bedrijf_key, -- Leverancier c.cnt_contract_kosten, c.cnt_contract_termijnkosten, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving FROM cnt_v_aanwezigcontract c, (SELECT cp.cnt_contract_key, g.alg_locatie_key FROM cnt_contract_plaats cp, alg_gebouw g WHERE cp.cnt_alg_plaats_code = 'G' AND cp.cnt_alg_plaats_key = g.alg_gebouw_key UNION ALL SELECT cp.cnt_contract_key, cp.cnt_alg_plaats_key alg_locatie_key FROM cnt_contract_plaats cp WHERE cp.cnt_alg_plaats_code = 'L') cl, alg_locatie l, alg_district d, prs_kostenplaats kp WHERE EXISTS -- Gemarkeerd als vast contract (SELECT 1 FROM cnt_kenmerkcontract kc, cnt_kenmerk k WHERE kc.cnt_kenmerkcontract_verwijder IS NULL AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = 81 -- Vast contract AND kc.cnt_kenmerkcontract_waarde = '1' -- Aangevinkt AND kc.cnt_contract_key = c.cnt_contract_key) --AND c.cnt_contract_status = 0 -- NIET Gesloten AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (LAST_DAY (SYSDATE)) AND c.cnt_contract_looptijd_tot >= TRUNC (LAST_DAY (SYSDATE)) AND c.cnt_contract_key = cl.cnt_contract_key AND cl.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND EXISTS -- Geconfigureerd als te rapporteren klant! (SELECT 1 FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 121 -- FinRapKlanten AND fac_usrdata_code = TO_CHAR (d.alg_district_key)) AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x LEFT JOIN ( SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, MIN (p.prs_afdeling_key) prs_afdeling_key, COUNT ( * ) aantal FROM prs_bedrijf b, prs_contactpersoon cp, prs_perslid p WHERE b.prs_bedrijf_key = cp.prs_bedrijf_key(+) AND cp.prs_perslid_key = p.prs_perslid_key(+) GROUP BY b.prs_bedrijf_key, b.prs_bedrijf_naam) b2a ON x.cnt_prs_bedrijf_key = b2a.prs_bedrijf_key UNION ALL -- Variabele kosten uit ACTUAL opdrachten waarvoor Kosten meerekenen=Ja SELECT b2a.prs_afdeling_key, TO_CHAR (SYSDATE, 'yyyy-mm'), -- Deze maand ORDAFR, volgende maand factureren (achteraf) x.alg_district_omschrijving klant, COALESCE (b2a.prs_bedrijf_naam, pf.prs_perslid_naam_full) leverancier, x.cnt_contract_nummer_intern, x.cnt_contract_omschrijving, COUNT ( * ) aantal, SUM (DECODE (ordafr.fac_tracking_refkey, NULL, COALESCE (x.mld_opdr_kosten, 0), 0)) kosten_onderweg, SUM (DECODE (ordafr.fac_tracking_refkey, NULL, 0, COALESCE (x.mld_opdr_kosten, 0))) kosten_afgerond, x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving FROM (SELECT d.alg_district_omschrijving, -- Klant o.mld_opdr_key, --o.mld_melding_key, --o.mld_opdr_bedrijfopdr_volgnr, --o.mld_statusopdr_key, o.mld_uitvoerende_keys, -- Leverancier o.mld_opdr_kosten, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving FROM mld_opdr o, mld_typeopdr ot, mld_melding m, --prs_perslid p, --prs_v_afdeling_boom ab, --prs_bedrijf b, alg_locatie l, alg_district d, cnt_contract c, prs_kostenplaats kp WHERE o.mld_statusopdr_key NOT IN (1, 2, 7) -- Nog niet gereed! AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_kosten = 1 -- Kosten meerekenen=Ja AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = -1 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND o.mld_melding_key = m.mld_melding_key --AND m.prs_perslid_key = p.prs_perslid_key --AND p.prs_afdeling_key = ab.prs_afdeling_key --AND ab.prs_bedrijf_key = b.prs_bedrijf_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND EXISTS -- Geconfigureerd als te rapporteren klant! (SELECT 1 FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 121 -- FinRapKlanten AND fac_usrdata_code = TO_CHAR (d.alg_district_key)) AND o.cnt_contract_key = c.cnt_contract_key(+) AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x LEFT JOIN fac_tracking ordafr ON ordafr.fac_srtnotificatie_key = 68 -- ORDAFR AND x.mld_opdr_key = ordafr.fac_tracking_refkey LEFT JOIN ( SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, MIN (p.prs_afdeling_key) prs_afdeling_key, COUNT ( * ) aantal FROM prs_bedrijf b, prs_contactpersoon cp, prs_perslid p WHERE b.prs_bedrijf_key = cp.prs_bedrijf_key(+) AND cp.prs_perslid_key = p.prs_perslid_key(+) GROUP BY b.prs_bedrijf_key, b.prs_bedrijf_naam) b2a ON x.mld_uitvoerende_keys = b2a.prs_bedrijf_key LEFT JOIN prs_v_perslid_fullnames_all pf ON x.mld_uitvoerende_keys = pf.prs_perslid_key GROUP BY b2a.prs_afdeling_key, x.alg_district_omschrijving, COALESCE (b2a.prs_bedrijf_naam, pf.prs_perslid_naam_full), x.cnt_contract_nummer_intern, x.cnt_contract_omschrijving, x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving UNION ALL SELECT TO_NUMBER (NULL) prs_afdeling_key, -- TODO: prs_afdeling_key van AppŠl? TO_CHAR (SYSDATE, 'yyyy-mm'), -- Deze maand geboekt, volgende maand factureren (achteraf) x.alg_district_omschrijving klant, 'Appèl' leverancier, TO_CHAR (NULL) cnt_contract_nummer_intern, 'RES/Banqueting' cnt_contract_omschrijving, COUNT (DISTINCT x.res_rsv_ruimte_key) aantal, SUM (DECODE (resafm.fac_tracking_refkey, NULL, COALESCE (x.res_rsv_artikel_prijs, 0), 0)) kosten_onderweg, SUM (DECODE (resafm.fac_tracking_refkey, NULL, 0, COALESCE (x.res_rsv_artikel_prijs, 0))) kosten_afgerond, x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving FROM (SELECT d.alg_district_omschrijving, -- Klant rrr.res_rsv_ruimte_key, --rrr.res_reservering_key, --rrr.res_rsv_ruimte_volgnr, --rra.res_status_bo_key, rra.res_rsv_artikel_prijs, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving FROM res_v_aanwezigrsv_ruimte rrr, res_v_aanwezigrsv_artikel rra, res_artikel ra, --prs_perslid p, --prs_v_afdeling_boom ab, --prs_bedrijf b res_ruimte_opstelling rro, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_v_aanwezigalg_ruimte GROUP BY res_ruimte_key) rar, alg_v_onrgoed_boom aob, alg_district d, prs_kostenplaats kp WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_status_bo_key != 6 -- Niet AV AND rra.res_rsv_artikel_dirtlevel = 0 -- Niet dirty AND rra.res_artikel_key = ra.res_artikel_key --AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key --AND p.prs_afdeling_key = ab.prs_afdeling_key --AND ab.prs_bedrijf_key = b.prs_bedrijf_key AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) AND rro.res_ruimte_key = rar.res_ruimte_key(+) AND COALESCE (rrr.alg_ruimte_key, rar.alg_ruimte_key) = aob.alg_ruimte_key AND aob.alg_district_key = d.alg_district_key AND EXISTS -- Geconfigureerd als te rapporteren klant! (SELECT 1 FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 121 -- FinRapKlanten AND fac_usrdata_code = TO_CHAR (d.alg_district_key)) AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x LEFT JOIN fac_tracking resafm ON resafm.fac_srtnotificatie_key = 80 -- RESAFM AND x.res_rsv_ruimte_key = resafm.fac_tracking_refkey GROUP BY x.alg_district_omschrijving, x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving; -- Actual regels en basis voor oa. te exporteren/bevriezen regels op de 10e van -- de maand; voor de output geldt: -- Actual regels en basis voor oa. te exporteren/bevriezen regels in nacht na -- de 1e werkdag van de maand; voor de output geldt: -- Dat deze de actual opdrachten toont (voor 1e ORDAFR). -- Dat deze de actual reserveringen toont (voor 1e RESAFM). -- Dat deze tot nacht na 1e werkdag van de maand alleen door Kien wijzigbaar -- is. /* Formatted on 24-2-2017 14:10:50 (QP5 v5.136.908.31019) */ CREATE OR REPLACE VIEW venr_v_actual_fact -- Tbv. FACT_EXPORT! ( prs_afdeling_key, maand, klant_key, klant, leverancier_key, leverancier, cnt_contract_key, contractnr, beschrijving, ref_key, ref_id, aantal, kosten_afgerond, kostenplaats ) AS -- Vaste contractkosten over de ACTUAL termijn SELECT b2a.prs_afdeling_key, TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm'), -- Afgelopen maand deze maand factureren (achteraf) x.alg_district_key klant_key, x.alg_district_omschrijving klant, b2a.prs_bedrijf_key leverancier_key, b2a.prs_bedrijf_naam leverancier, x.cnt_contract_key, x.cnt_contract_nummer_intern, -- Uit afgelopen maand lopend contract, anders geen vaste kosten x.cnt_contract_omschrijving, TO_NUMBER (NULL) ref_key, TO_CHAR (NULL) ref_id, 0 aantal, ROUND ( DECODE (COALESCE (x.cnt_contract_termijnkosten, 0), 0, x.cnt_contract_kosten / 12, x.cnt_contract_termijnkosten), 2) kosten_afgerond, x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving FROM (SELECT d.alg_district_key, d.alg_district_omschrijving, -- Klant c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_prs_bedrijf_key, -- Leverancier c.cnt_contract_kosten, c.cnt_contract_termijnkosten, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving FROM cnt_v_aanwezigcontract c, (SELECT cp.cnt_contract_key, g.alg_locatie_key FROM cnt_contract_plaats cp, alg_gebouw g WHERE cp.cnt_alg_plaats_code = 'G' AND cp.cnt_alg_plaats_key = g.alg_gebouw_key UNION ALL SELECT cp.cnt_contract_key, cp.cnt_alg_plaats_key alg_locatie_key FROM cnt_contract_plaats cp WHERE cp.cnt_alg_plaats_code = 'L') cl, alg_locatie l, alg_district d, prs_kostenplaats kp WHERE EXISTS -- Gemarkeerd als vast contract (SELECT 1 FROM cnt_kenmerkcontract kc, cnt_kenmerk k WHERE kc.cnt_kenmerkcontract_verwijder IS NULL AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = 81 -- Vast contract AND kc.cnt_kenmerkcontract_waarde = '1' -- Aangevinkt AND kc.cnt_contract_key = c.cnt_contract_key) --AND c.cnt_contract_status = 0 -- NIET Gesloten AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1 AND c.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1 AND NOT EXISTS -- Nog geen entry in eigen tabel (SELECT 1 FROM fac_usrdata WHERE fac_usrtab_key = 141 -- VasteKostenMnd AND fac_usrdata_code = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') || '/' || c.cnt_contract_key) AND c.cnt_contract_key = cl.cnt_contract_key AND cl.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND EXISTS -- Geconfigureerd als te rapporteren klant! (SELECT 1 FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 121 -- FinRapKlanten AND fac_usrdata_code = TO_CHAR (d.alg_district_key)) AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x LEFT JOIN ( SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, MIN (p.prs_afdeling_key) prs_afdeling_key, COUNT ( * ) aantal FROM prs_bedrijf b, prs_contactpersoon cp, prs_perslid p WHERE b.prs_bedrijf_key = cp.prs_bedrijf_key(+) AND cp.prs_perslid_key = p.prs_perslid_key(+) GROUP BY b.prs_bedrijf_key, b.prs_bedrijf_naam) b2a ON x.cnt_prs_bedrijf_key = b2a.prs_bedrijf_key UNION ALL -- Variabele kosten uit ACTUAL opdrachten waarvoor Kosten meerekenen=Ja SELECT b2a.prs_afdeling_key, TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm'), -- Voor 1e ORDAFR, deze maand factureren (achteraf) x.alg_district_key klant_key, x.alg_district_omschrijving klant, b2a.prs_bedrijf_key leverancier_key, COALESCE (b2a.prs_bedrijf_naam, pf.prs_perslid_naam_full) leverancier, x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_omschrijving, x.mld_opdr_key ref_key, TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) ref_id, 1 aantal, COALESCE (x.mld_opdr_kosten, 0) kosten_afgerond, x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving FROM (SELECT d.alg_district_key, d.alg_district_omschrijving, -- Klant o.mld_opdr_key, o.mld_melding_key, o.mld_opdr_bedrijfopdr_volgnr, o.mld_statusopdr_key, o.mld_uitvoerende_keys, -- Leverancier o.mld_opdr_kosten, c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving FROM mld_opdr o, mld_typeopdr ot, mld_melding m, --prs_perslid p, --prs_v_afdeling_boom ab, --prs_bedrijf b, alg_locatie l, alg_district d, cnt_contract c, prs_kostenplaats kp WHERE o.mld_statusopdr_key NOT IN (1, 2, 7) -- Nog niet gereed! AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_kosten = 1 -- Kosten meerekenen=Ja AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = -1 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND o.mld_melding_key = m.mld_melding_key --AND m.prs_perslid_key = p.prs_perslid_key --AND p.prs_afdeling_key = ab.prs_afdeling_key --AND ab.prs_bedrijf_key = b.prs_bedrijf_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND EXISTS -- Geconfigureerd als te rapporteren klant! (SELECT 1 FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 121 -- FinRapKlanten AND fac_usrdata_code = TO_CHAR (d.alg_district_key)) AND o.cnt_contract_key = c.cnt_contract_key(+) AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x LEFT JOIN fac_tracking ordafr ON ordafr.fac_srtnotificatie_key = 68 -- ORDAFR AND x.mld_opdr_key = ordafr.fac_tracking_refkey LEFT JOIN ( SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, MIN (p.prs_afdeling_key) prs_afdeling_key, COUNT ( * ) aantal FROM prs_bedrijf b, prs_contactpersoon cp, prs_perslid p WHERE b.prs_bedrijf_key = cp.prs_bedrijf_key(+) AND cp.prs_perslid_key = p.prs_perslid_key(+) GROUP BY b.prs_bedrijf_key, b.prs_bedrijf_naam) b2a ON x.mld_uitvoerende_keys = b2a.prs_bedrijf_key LEFT JOIN prs_v_perslid_fullnames_all pf ON x.mld_uitvoerende_keys = pf.prs_perslid_key WHERE ordafr.fac_tracking_datum < TRUNC (SYSDATE, 'mm') UNION ALL SELECT TO_NUMBER (NULL) prs_afdeling_key, -- TODO: prs_afdeling_key van AppŠl? TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm'), -- Voor 1e RESAFM, deze maand factureren (achteraf) x.alg_district_key klant_key, x.alg_district_omschrijving klant, 12633 leverancier_key, 'Appèl' leverancier, TO_NUMBER (NULL) cnt_contract_key, TO_CHAR (NULL) cnt_contract_nummer_intern, 'RES/Banqueting' cnt_contract_omschrijving, x.res_rsv_ruimte_key ref_key, TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) ref_id, 1 aantal, SUM (x.res_rsv_artikel_prijs) kosten_afgerond, x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving FROM (SELECT d.alg_district_key, d.alg_district_omschrijving, -- Klant rrr.res_rsv_ruimte_key, rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr, rra.res_status_bo_key, rra.res_rsv_artikel_prijs, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving FROM res_v_aanwezigrsv_ruimte rrr, res_v_aanwezigrsv_artikel rra, res_artikel ra, --prs_perslid p, --prs_v_afdeling_boom ab, --prs_bedrijf b res_ruimte_opstelling rro, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_v_aanwezigalg_ruimte GROUP BY res_ruimte_key) rar, alg_v_onrgoed_boom aob, alg_district d, prs_kostenplaats kp WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_status_bo_key != 6 -- Niet AV AND rra.res_rsv_artikel_dirtlevel = 0 -- Niet dirty AND rra.res_artikel_key = ra.res_artikel_key --AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key --AND p.prs_afdeling_key = ab.prs_afdeling_key --AND ab.prs_bedrijf_key = b.prs_bedrijf_key AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) AND rro.res_ruimte_key = rar.res_ruimte_key(+) AND COALESCE (rrr.alg_ruimte_key, rar.alg_ruimte_key) = aob.alg_ruimte_key AND aob.alg_district_key = d.alg_district_key AND EXISTS -- Geconfigureerd als te rapporteren klant! (SELECT 1 FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 121 -- FinRapKlanten AND fac_usrdata_code = TO_CHAR (d.alg_district_key)) AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x LEFT JOIN fac_tracking resafm ON resafm.fac_srtnotificatie_key = 80 -- RESAFM AND x.res_rsv_ruimte_key = resafm.fac_tracking_refkey WHERE resafm.fac_tracking_datum < TRUNC (SYSDATE, 'mm') GROUP BY x.alg_district_key, x.alg_district_omschrijving, x.res_rsv_ruimte_key, TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr), x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving; -- Te exporteren/bevriezen totalen over voorgaande maand (opdrachten en reserveringen). CREATE OR REPLACE VIEW venr_v_rap_actual_fact_tot ( fclt_3d_afdeling_key, -- Kunnen beperken per leverancier! maand, fclt_f_klant, fclt_f_leverancier, contractnr, beschrijving, aantal, kosten_afgerond, fclt_x_kostenplaats ) AS SELECT prs_afdeling_key, maand, klant, leverancier, contractnr, beschrijving, SUM (aantal), SUM (kosten_afgerond), kostenplaats FROM venr_v_actual_fact GROUP BY prs_afdeling_key, maand, klant, leverancier, contractnr, beschrijving, kostenplaats; -- Frozen regels en basis voor oa. de notificatie op de 11e van de maand; voor -- de output geldt: -- Frozen regels en basis voor oa. de notificatie in nacht na 1e werkdag van -- de maand; voor de output geldt: -- Dat deze de frozen opdrachten toont. -- Dat deze de frozen reserveringen toont. -- Nog niet in scope: -- Dat de laatst bevroren maand per leverancier in nacht na 1e werkdag van de -- maand wordt genotificeerd (via extra_key-principe) met daarin de kosten -- gegroepeerd per klant/contract. /* Formatted on 24-2-2017 15:00:00 (QP5 v5.136.908.31019) */ CREATE OR REPLACE VIEW venr_v_frozen_fact ( prs_afdeling_key, maand, klant_key, klant, --leverancier_key, extra_key, -- Moet zo heten! leverancier, cnt_contract_key, contractnr, beschrijving, ref_key, ref_id, aantal, kosten_afgerond, kostenplaats ) AS -- Vaste contractkosten over de FROZEN termijnen SELECT b2a.prs_afdeling_key, SUBSTR (x.fac_usrdata_code, 1, 7) maand, -- yyyy-mm x.alg_district_key klant_key, x.alg_district_omschrijving klant, b2a.prs_bedrijf_key leverancier_key, b2a.prs_bedrijf_naam leverancier, x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_omschrijving, TO_NUMBER (NULL) ref_key, TO_CHAR (NULL) ref_id, 0 aantal, COALESCE (x.fac_usrdata_prijs, 0) kosten_afgerond, x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving FROM (SELECT d.alg_district_key, d.alg_district_omschrijving, -- Klant c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, ud.fac_usrdata_code, -- Maand/Contract c.cnt_prs_bedrijf_key, -- Leverancier ud.fac_usrdata_prijs, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving FROM fac_usrdata ud, cnt_contract c, --prs_bedrijf b, alg_district d, prs_kostenplaats kp WHERE ud.fac_usrtab_key = 141 -- VasteKostenMnd AND SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, '/') + 1) = TO_CHAR (c.cnt_contract_key) --AND SUBSTR (ud.fac_usrdata_omschr, 1, INSTR (ud.fac_usrdata_omschr, '/') - 1) = TO_CHAR (b.prs_bedrijf_key) AND SUBSTR (ud.fac_usrdata_omschr, INSTR (ud.fac_usrdata_omschr, '/') + 1) = TO_CHAR (d.alg_district_key) AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x LEFT JOIN ( SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, MIN (p.prs_afdeling_key) prs_afdeling_key, COUNT ( * ) aantal FROM prs_bedrijf b, prs_contactpersoon cp, prs_perslid p WHERE b.prs_bedrijf_key = cp.prs_bedrijf_key(+) AND cp.prs_perslid_key = p.prs_perslid_key(+) GROUP BY b.prs_bedrijf_key, b.prs_bedrijf_naam) b2a ON x.cnt_prs_bedrijf_key = b2a.prs_bedrijf_key UNION ALL -- Variabele kosten uit FROZEN opdrachten (waarvoor Kosten meerekenen=Ja) SELECT b2a.prs_afdeling_key, x.mld_opdr_ordernr maand, -- yyyy-mm x.alg_district_key klant_key, x.alg_district_omschrijving klant, b2a.prs_bedrijf_key leverancier_key, COALESCE (b2a.prs_bedrijf_naam, pf.prs_perslid_naam_full) leverancier, x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_omschrijving, x.mld_opdr_key ref_key, TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) ref_id, 1 aantal, COALESCE (x.mld_opdr_kosten, 0) kosten_afgerond, x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving FROM (SELECT d.alg_district_key, d.alg_district_omschrijving, -- Klant o.mld_opdr_key, o.mld_melding_key, o.mld_opdr_bedrijfopdr_volgnr, o.mld_opdr_ordernr, o.mld_uitvoerende_keys, -- Leverancier o.mld_opdr_kosten, c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving FROM mld_opdr o, mld_melding m, --prs_perslid p, --prs_v_afdeling_boom ab, --prs_bedrijf b, alg_locatie l, alg_district d, cnt_contract c, prs_kostenplaats kp WHERE o.mld_statusopdr_key = 7 AND o.mld_opdr_ordernr IS NOT NULL AND o.mld_melding_key = m.mld_melding_key --AND m.prs_perslid_key = p.prs_perslid_key --AND p.prs_afdeling_key = ab.prs_afdeling_key --AND ab.prs_bedrijf_key = b.prs_bedrijf_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND o.cnt_contract_key = c.cnt_contract_key(+) AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x LEFT JOIN ( SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, MIN (p.prs_afdeling_key) prs_afdeling_key, COUNT ( * ) aantal FROM prs_bedrijf b, prs_contactpersoon cp, prs_perslid p WHERE b.prs_bedrijf_key = cp.prs_bedrijf_key(+) AND cp.prs_perslid_key = p.prs_perslid_key(+) GROUP BY b.prs_bedrijf_key, b.prs_bedrijf_naam) b2a ON x.mld_uitvoerende_keys = b2a.prs_bedrijf_key LEFT JOIN prs_v_perslid_fullnames_all pf ON x.mld_uitvoerende_keys = pf.prs_perslid_key UNION ALL SELECT TO_NUMBER (NULL) prs_afdeling_key, -- TODO: prs_afdeling_key van AppŠl? x.res_rsv_ruimte_ordernr maand, -- yyyy-mm x.alg_district_key klant_key, x.alg_district_omschrijving klant, 12633 leverancier_key, 'Appèl' leverancier, TO_NUMBER (NULL) cnt_contract_key, TO_CHAR (NULL) cnt_contract_nummer_intern, 'RES/Banqueting' cnt_contract_omschrijving, x.res_rsv_ruimte_key ref_key, TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) ref_id, 1 aantal, SUM (x.res_rsv_artikel_prijs) kosten_afgerond, x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving FROM (SELECT d.alg_district_key, d.alg_district_omschrijving, -- Klant rrr.res_rsv_ruimte_key, rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr, rrr.res_rsv_ruimte_ordernr, rra.res_rsv_artikel_prijs, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_artikel ra, --prs_perslid p, --prs_v_afdeling_boom ab, --prs_bedrijf b res_ruimte_opstelling rro, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_v_aanwezigalg_ruimte GROUP BY res_ruimte_key) rar, alg_v_onrgoed_boom aob, alg_district d, prs_kostenplaats kp WHERE rrr.res_rsv_ruimte_ordernr IS NOT NULL AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_status_bo_key = 6 -- AV AND rra.res_artikel_key = ra.res_artikel_key --AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key --AND p.prs_afdeling_key = ab.prs_afdeling_key --AND ab.prs_bedrijf_key = b.prs_bedrijf_key AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) AND rro.res_ruimte_key = rar.res_ruimte_key(+) AND COALESCE (rrr.alg_ruimte_key, rar.alg_ruimte_key) = aob.alg_ruimte_key AND aob.alg_district_key = d.alg_district_key AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x GROUP BY x.res_rsv_ruimte_ordernr, x.alg_district_key, x.alg_district_omschrijving, x.res_rsv_ruimte_key, TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr), x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving; -- Geexporteerde/bevroren totalen over voorgaande maanden (opdrachten en reserveringen). CREATE OR REPLACE VIEW venr_v_rap_frozen_fact_tot ( fclt_3d_afdeling_key, -- Kunnen beperken per leverancier! fclt_f_maand, fclt_f_klant, fclt_f_leverancier, contractnr, beschrijving, aantal, kosten_afgerond, fclt_x_kostenplaats ) AS SELECT prs_afdeling_key, maand, klant, leverancier, contractnr, beschrijving, SUM (aantal), SUM (kosten_afgerond), kostenplaats FROM venr_v_frozen_fact GROUP BY prs_afdeling_key, maand, klant, leverancier, contractnr, beschrijving, kostenplaats; /* Formatted on 24-2-2017 16:48:43 (QP5 v5.136.908.31019) */ CREATE OR REPLACE PROCEDURE venr_select_fact (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS -- Bevries vaste contractkosten in eigen tabel. CURSOR c1 IS SELECT '[' || TO_CHAR (cnt_contract_key) || '|' || contractnr || '] ' aanduiding, maand, cnt_contract_key, leverancier_key, klant_key, kosten_afgerond FROM venr_v_actual_fact WHERE aantal = 0 ORDER BY 1; -- Zet "kosten" opdrachten die voor de 1e zijn afgerond op AV. CURSOR c2 IS SELECT '[' || TO_CHAR (ref_key) || '|' || ref_id || '] ' aanduiding, ref_key mld_opdr_key FROM venr_v_actual_fact WHERE COALESCE (beschrijving, 'X') NOT LIKE 'RES/%' ORDER BY 1; -- Zet "kosten" banqueting die voor de 1e zijn afgerond op AV. CURSOR c3 IS SELECT '[' || TO_CHAR (ref_key) || '|' || ref_id || '] ' aanduiding, ref_key res_rsv_ruimte_key FROM venr_v_actual_fact WHERE beschrijving LIKE 'RES/%' ORDER BY 1; -- Zet "inclusief" opdrachten die voor de 1e zijn gesloten op AV. -- Afgerond/kosten meerekenen en geen dispuut -- Afgemeld/kosten niet meerekenen, geen offerteaanvraag en geen dispuut -- Afgerond/kosten niet meerekenen en geen dispuut (= geaccepteerde offerteaanvragen) /* CURSOR c4 IS SELECT o.mld_opdr_key FROM mld_opdr o, mld_typeopdr ot, mld_melding m, alg_locatie l, alg_district d WHERE o.mld_statusopdr_key = 9 -- KV AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_kosten = 1 -- Kosten meerekenen=Ja AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = -1 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND o.mld_melding_key = m.mld_melding_key --AND m.prs_perslid_key = p.prs_perslid_key --AND p.prs_afdeling_key = ab.prs_afdeling_key --AND ab.prs_bedrijf_key = b.prs_bedrijf_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND EXISTS -- Geconfigureerd als te rapporteren klant! (SELECT 1 FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 121 -- FinRapKlanten AND fac_usrdata_code = TO_CHAR (d.alg_district_key)) AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) < TRUNC (SYSDATE, 'mm') UNION ALL SELECT o.mld_opdr_key FROM mld_opdr o, mld_typeopdr ot, mld_melding m, alg_locatie l, alg_district d WHERE o.mld_statusopdr_key = 6 -- TV AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_kosten = 0 -- Kosten meerekenen=Nee AND ot.mld_typeopdr_key != 168 -- Offerteaanvraag AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = -1 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND o.mld_melding_key = m.mld_melding_key --AND m.prs_perslid_key = p.prs_perslid_key --AND p.prs_afdeling_key = ab.prs_afdeling_key --AND ab.prs_bedrijf_key = b.prs_bedrijf_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND EXISTS -- Geconfigureerd als te rapporteren klant! (SELECT 1 FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 121 -- FinRapKlanten AND fac_usrdata_code = TO_CHAR (d.alg_district_key)) AND fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) < TRUNC (SYSDATE, 'mm') UNION ALL SELECT o.mld_opdr_key FROM mld_opdr o, mld_typeopdr ot, mld_melding m, alg_locatie l, alg_district d WHERE o.mld_statusopdr_key = 9 -- KV (ooit met kosten en Offerteaanvragen) AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_kosten = 0 -- Kosten meerekenen=Nee AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = -1 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND o.mld_melding_key = m.mld_melding_key --AND m.prs_perslid_key = p.prs_perslid_key --AND p.prs_afdeling_key = ab.prs_afdeling_key --AND ab.prs_bedrijf_key = b.prs_bedrijf_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND EXISTS -- Geconfigureerd als te rapporteren klant! (SELECT 1 FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 121 -- FinRapKlanten AND fac_usrdata_code = TO_CHAR (d.alg_district_key)) AND (fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) < TRUNC (SYSDATE, 'mm') OR fac.gettrackingdate ('ORDOOK', o.mld_opdr_key) < TRUNC (SYSDATE, 'mm')) ORDER BY 1; */ CURSOR c4 IS SELECT o.mld_opdr_key FROM mld_opdr o, mld_typeopdr ot, mld_melding m, alg_locatie l, alg_district d WHERE o.mld_statusopdr_key = 6 -- TV AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_kosten = 0 -- Kosten meerekenen=Nee AND ot.mld_typeopdr_key != 168 -- Offerteaanvraag AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = -1 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND o.mld_melding_key = m.mld_melding_key --AND m.prs_perslid_key = p.prs_perslid_key --AND p.prs_afdeling_key = ab.prs_afdeling_key --AND ab.prs_bedrijf_key = b.prs_bedrijf_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND EXISTS -- Geconfigureerd als te rapporteren klant! (SELECT 1 FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 121 -- FinRapKlanten AND fac_usrdata_code = TO_CHAR (d.alg_district_key)) AND fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) < TRUNC (SYSDATE, 'mm') UNION ALL SELECT o.mld_opdr_key FROM mld_opdr o, mld_typeopdr ot, mld_melding m, alg_locatie l, alg_district d WHERE o.mld_statusopdr_key = 9 -- KV (ooit met kosten en Offerteaanvragen) AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_kosten = 0 -- Kosten meerekenen=Nee AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = -1 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND o.mld_melding_key = m.mld_melding_key --AND m.prs_perslid_key = p.prs_perslid_key --AND p.prs_afdeling_key = ab.prs_afdeling_key --AND ab.prs_bedrijf_key = b.prs_bedrijf_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND EXISTS -- Geconfigureerd als te rapporteren klant! (SELECT 1 FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 121 -- FinRapKlanten AND fac_usrdata_code = TO_CHAR (d.alg_district_key)) AND (fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) < TRUNC (SYSDATE, 'mm') OR fac.gettrackingdate ('ORDOOK', o.mld_opdr_key) < TRUNC (SYSDATE, 'mm')) ORDER BY 1; v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_holiday NUMBER; v_count NUMBER (10); BEGIN -- In nacht na 1e werkdag van de maand (via scheduled task): -- 1. Bevries vaste contractkosten in eigen tabel. -- 2. Zet "kosten" opdrachten die voor de 1e zijn afgerond op AV. -- 3. Zet "kosten" banqueting die voor de 1e zijn afgemeld op AV. -- 4. Zet "inclusief" opdrachten die voor de 1e zijn gesloten op AV. => TODO??? -- x. Doe niets met afgewezen/geannuleerde opdrachten? SELECT COUNT ( * ) INTO v_holiday FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1); -- LET OP: FACT-export draait dagelijks na middernacht (begin van dag) en -- de "freeze" wordt maandelijks alleen in nacht na 1e werkdag van de maand -- uitgevoerd. -- IF nacht na 1e werkdag van de maand (‚n geen weekend ‚n geen vrije dag)! -- count_work_days (d1,d2) bepaalt het #werkdagen van d1 tot d2 (als d1=d2, -- dan return 0); daarom bepalen tov. laatste dag van vorige maand! IF FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 1 AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6' AND v_holiday = 0 THEN v_count := 0; FOR rec IN c1 LOOP BEGIN v_errormsg := 'Fout toevoegen vaste contractkosten'; INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_aanmaak, fac_usrdata_vervaldatum, fac_usrdata_prijs) VALUES (141, -- VasteKostenMnd rec.maand || '/' || TO_CHAR (rec.cnt_contract_key), TO_CHAR (rec.leverancier_key) || '/' || rec.klant_key, SYSDATE, NULL, rec.kosten_afgerond); v_count := v_count + 1; 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, 'W', rec.aanduiding || v_errormsg, 'Vaste contractkosten'); COMMIT; END; END LOOP; fac.writelog (p_applname, 'S', '#Vaste contractkosten bevroren: ' || TO_CHAR (v_count), ''); COMMIT; v_count := 0; FOR rec IN c2 LOOP BEGIN v_errormsg := 'Fout bijwerken ordernummer (kosten opdrachten).'; UPDATE mld_opdr SET mld_opdr_ordernr = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') WHERE mld_opdr_key = rec.mld_opdr_key; v_errormsg := 'Fout verwerken kosten-mld_opdr.'; MLD.setopdrachtstatus (rec.mld_opdr_key, 7, 4); v_count := v_count + 1; 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, 'W', rec.aanduiding || v_errormsg, 'Kosten opdrachten'); COMMIT; END; END LOOP; fac.writelog (p_applname, 'S', '#Kosten opdrachten bevroren: ' || TO_CHAR (v_count), ''); COMMIT; v_count := 0; FOR rec IN c3 LOOP BEGIN v_errormsg := 'Fout bijwerken ordernummer (kosten banqueting).'; UPDATE res_rsv_ruimte SET res_rsv_ruimte_ordernr = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key; v_errormsg := 'Fout verwerken res_rsv_artikel'; UPDATE res_rsv_artikel SET res_status_bo_key = 6 -- AV (en zet ook Verwerkt-date) WHERE res_rsv_artikel_dirtlevel = 0 AND res_rsv_ruimte_key = rec.res_rsv_ruimte_key; v_errormsg := 'Fout tracken res_rsv_ruimte'; fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, 'Banqueting verwerkt'); v_count := v_count + 1; 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, 'W', rec.aanduiding || v_errormsg, 'Kosten banqueting'); COMMIT; END; END LOOP; fac.writelog (p_applname, 'S', '#Kosten banqueting bevroren: ' || TO_CHAR (v_count), ''); COMMIT; v_count := 0; FOR rec IN c4 LOOP v_errormsg := 'Fout verwerken inclusief-mld_opdr.'; MLD.setopdrachtstatus (rec.mld_opdr_key, 7, 4); v_count := v_count + 1; COMMIT; END LOOP; fac.writelog (p_applname, 'S', '#Inclusief opdrachten bevroren: ' || TO_CHAR (v_count), ''); COMMIT; END IF; 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', v_errormsg, 'Proces FACT_EXPORT afgebroken!'); COMMIT; END; / -- Koppeling om persoonsgegevens in te lezen vanuit Synergy van Yask CREATE OR REPLACE PROCEDURE venr_import_perslid_mut (p_import_key IN NUMBER) AS v_seq_of_columns VARCHAR(255); BEGIN -- v_alg_locatie_code 1 -- v_alg_gebouw_code 2 -- v_alg_verdieping_volgnr 3 -- v_alg_ruimte_nr 4 -- v_prs_werkplek_volgnr 5 -- v_prs_werkplek_omschrijving 6 -- v_prs_afdeling_naam 7 -- v_prs_perslid_naam 8 -- v_prs_perslid_tussenvoegsel 9 -- v_prs_perslid_voornaam 10 -- v_prs_perslid_voorletters 11 -- v_prs_perslid_partner_naam 12 -- v_prs_perslid_partner_tussenv 13 -- v_prs_naamgebruik_code 14 0 (default) perslid_naam en perslid_tussenvoegsel worden gebruikt -- 1 personen die de geboortenaam van de partner icm de eigen naam willen gebruiken -- 2 personen die de geboortenaam van de partner willen gebruiken -- 3 personen die de eigen naam icm de geboortenaam van de partner willen gebruiken -- v_prs_perslid_geslacht 15 Gebruik 'man', 'm' of 1 voor man en 'vrouw', 'v' of 0 voor vrouw case insensitive geen default -- v_prs_perslid_telefoonnr 16 -- v_prs_perslid_mobiel 17 -- v_prs_perslid_email 18 -- v_prs_perslid_dienstverband 19 -- v_prs_perslid_nr 20 -- v_prs_srtperslid_omschrijving 21 -- v_prs_perslid_oslogin 22 -- v_prs_perslid_wachtwoord 23 -- v_prs_perslid_titel 24 -- v_prs_perslid_apikey 25 -- v_dummy 26 -- v_prs_kenmerk1 27 -- v_prs_kenmerk2 28 -- v_prs_kenmerk3 29 -- v_prs_kenmerk4 30 -- v_prs_kenmerk5 31 -- v_prs_kenmerk6 32 -- v_prs_kenmerk7 33 -- v_prs_kenmerk8 34 -- v_prs_kenmerk9 35 -- v_prs_kenmerk10 36 -- v_prs_kenmerk11 37 -- v_prs_kenmerk12 38 -- v_prs_kenmerk13 39 -- v_prs_kenmerk14 40 -- v_prs_kenmerk15 41 -- v_prs_kenmerk16 42 -- v_prs_kenmerk17 43 -- v_prs_kenmerk18 44 -- v_prs_kenmerk19 45 -- v_prs_kenmerk20 46 -- Voeg een lege regel toe anders wordt de eerste persoon geskipped. INSERT INTO fac_imp_file (fac_imp_file_line, fac_imp_file_index, fac_import_key) VALUES ('Header', 0, p_import_key); v_seq_of_columns := '0;0;0;0;0;0;9;4;3;2;0;0;0;0;0;10;11;8;0;1;5;8;0;0;0;0;6;7;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0'; prs.import_perslid(p_import_key, v_seq_of_columns, '%'); UPDATE fac_imp_perslid SET prs_perslid_oslogin = UPPER(prs_perslid_oslogin), prs_afdeling_naam = 'YASK'; DELETE fac_imp_perslid WHERE prs_perslid_oslogin IS NULL; END; / CREATE OR REPLACE PROCEDURE venr_update_perslid_mut (p_import_key IN NUMBER) IS CURSOR c IS SELECT p.prs_perslid_key FROM prs_perslid p WHERE p.prs_afdeling_key = 1861 -- YASK AND (NOT EXISTS -- Nog geen WP op YASK-locatie (SELECT 1 FROM prs_v_perslidwerkplek_gegevens pwp WHERE pwp.alg_locatie_key = 1421 -- YASK AND pwp.prs_perslid_key = p.prs_perslid_key) OR EXISTS -- Of WP in te laten vervallen YASK HTC 5-gebouw (waarna deze EXISTS kan worden verwijderd) (SELECT 1 FROM prs_v_perslidwerkplek_gegevens pwp WHERE pwp.alg_gebouw_key = 14881 -- YASK HTC 5 AND pwp.prs_perslid_key = p.prs_perslid_key)); CURSOR c_del IS SELECT p.prs_perslid_key FROM prs_perslid p WHERE p.prs_perslid_verwijder IS NULL -- Persoon niet verwijderd AND p.prs_afdeling_key = 1861 -- YASK AND SUBSTR (COALESCE (p.prs_perslid_oslogin, 'Que'), 1, 1) <> '_' AND COALESCE (p.prs_perslid_login, SYSDATE - 300) < SYSDATE - 60 -- Persoon 2 maanden niet ingelogd geweest AND NOT EXISTS (SELECT 1 FROM fac_imp_perslid WHERE prs_perslid_oslogin = p.prs_perslid_oslogin); v_count NUMBER; BEGIN SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid; prs.update_perslid (p_import_key, 'LOGIN', NULL); -- Toekennen autorisatiegroep 1501=2. Yask_Default_MLD_BES INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key) SELECT p.prs_perslid_key, 1501 FROM prs_perslid p WHERE p.prs_perslid_verwijder IS NULL -- Persoon niet verwijderd AND p.prs_afdeling_key = 1861 -- YASK AND NOT EXISTS (SELECT 1 FROM fac_gebruikersgroep WHERE fac_groep_key = 1501 AND prs_perslid_key = p.prs_perslid_key); DELETE FROM fac_gebruikersgroep WHERE fac_groep_key = 1 AND fac_gebruikersgroep_aanmaak > SYSDATE - 1 / 24; FOR rec IN c LOOP prs.movetoruimte (rec.prs_perslid_key, 20561, -- VENR#67822: YASK HTC 05 (verdieping 2, ruimte 2.001) 'L', -- VENR#67822: Evt. andere WP(s) op Locatie verwijderen 1); END LOOP; -- Oppassen dat we geen leeg bestand ontvangen hebben. IF v_count > 100 THEN FOR rec IN c_del LOOP prs.delete_perslid (p_import_key, rec.prs_perslid_key); END LOOP; END IF; COMMIT; END; / -- Dummy export NACHTWERK! -- VENR#60140: Toewijzen Manpower-WP (nav. zelfregistratie). -- VENR#60726: Verwijderen inactieve accounts (3 maanden niet ingelogd). CREATE OR REPLACE PROCEDURE venr_select_nachtwerk (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS c_alg_ruimte_key NUMBER (10) := 15388; -- MPG-DIE-16|DH-16|0|001 v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count NUMBER; BEGIN v_count := 0; FOR rec IN ( SELECT p.prs_perslid_key, p.prs_perslid_oslogin, COUNT (vp.prs_perslid_key) aant FROM prs_v_aanwezigperslid p, prs_v_verplichting_keys vp WHERE p.prs_perslid_key > 10 -- Voor de zekerheid! AND p.prs_perslid_apikey IS NULL AND BITAND (p.prs_perslid_flags, 32) = 0 -- Bitje 6 is 0, dus verwijderbaar! AND TO_CHAR (SYSDATE, 'dd') = '01' -- Op 1e van de maand >90d niet ingelogd! AND p.prs_perslid_login < TRUNC (ADD_MONTHS (SYSDATE, -3), 'mm') AND p.prs_perslid_key = vp.prs_perslid_key(+) -- Actuele verplichtingen? GROUP BY p.prs_perslid_key, p.prs_perslid_oslogin ORDER BY 1) LOOP BEGIN IF rec.aant = 0 THEN UPDATE prs_perslid SET prs_perslid_verwijder = SYSDATE WHERE prs_perslid_key = rec.prs_perslid_key; v_count := v_count + 1; ELSE fac.writelog (p_applname, 'I', '[' || rec.prs_perslid_oslogin || ']/#Verplichtingen: ' || TO_CHAR (rec.aant), 'Persoon niet geïnactiveerd'); END IF; EXCEPTION WHEN OTHERS THEN -- Kennelijk heeft persoon toch nog ernstige verplichtingen! oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', '[' || rec.prs_perslid_oslogin || ']/' || v_errormsg, 'Fout inactiveren persoon'); END; END LOOP; fac.writelog (p_applname, 'S', '#Personen geïnactiveerd:' || TO_CHAR (v_count), ''); COMMIT; v_count := 0; FOR rec IN ( SELECT p.prs_perslid_key, p.prs_perslid_oslogin, COUNT (*) aant, MAX (DECODE (l.alg_district_key, 361, -1, 1)) alg_district_key FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab, prs_perslidwerkplek pwp, prs_werkplek wp, alg_v_allonrgoed_gegevens aog, alg_locatie l WHERE p.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = 2241 -- Manpowergroup AND p.prs_perslid_key = pwp.prs_perslid_key(+) AND pwp.prs_werkplek_key = wp.prs_werkplek_key(+) AND wp.prs_alg_ruimte_key = aog.alg_ruimte_key(+) AND aog.alg_locatie_key = l.alg_locatie_key(+) AND EXISTS (SELECT 1 FROM alg_v_aanwezigruimte WHERE alg_ruimte_key = c_alg_ruimte_key) GROUP BY p.prs_perslid_key, p.prs_perslid_oslogin ORDER BY 1) LOOP BEGIN IF rec.alg_district_key > 0 -- Nog geen WP onder District=Manpower? THEN PRS.movetoruimte (rec.prs_perslid_key, c_alg_ruimte_key, 'D', 1); v_count := v_count + 1; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', '[' || rec.prs_perslid_oslogin || ']/' || v_errormsg, 'Fout toewijzen MPG-WP'); END; END LOOP; fac.writelog (p_applname, 'S', '#Manpower-WP toegewezen:' || TO_CHAR (v_count), ''); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', v_errormsg, 'Proces NACHTWERK afgebroken!'); END venr_select_nachtwerk; / CREATE OR REPLACE VIEW venr_v_prs_autclient AS SELECT p.prs_perslid_key, pf.prs_perslid_naam_full naam, p.prs_perslid_email email, p.prs_perslid_verwijder, aut_client_perslid_device_name device, aut_client_perslid_aanmaak registratiedatum FROM AUT_CLIENT_PERSLID acp, prs_perslid p, prs_v_perslid_fullnames_all pf WHERE acp.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_key = pf.prs_perslid_key; -- VENR#65754: Opdrachtgegevens incl. kenmerken (afgeleid van mld_v_udr_opdrachtkenmerk_cnd). -- VENR#69955: Uitbreiden met de SLA-velden van de bovenliggende melding + (sub)productgroep. CREATE OR REPLACE VIEW venr_v_udr_opdrachten ( opdracht_key, opdracht_nummer, opdracht_regio, opdracht_district, opdracht_locatie_code, opdracht_locatie, opdracht_locatieplaats, fclt_3d_locatie_key, opdracht_gebouwcode, opdracht_gebouw, opdracht_verdieping, opdracht_ruimtenr, opdracht_ruimte, opdracht_kostenplaats, opdracht_kostenplaats_oms, melding_key, opdracht_type, opdracht_volgnummer, opdracht_status, opdracht_duur_gepland, opdracht_datum, opdracht_einddatum, opdracht_plandatum, opdracht_acceptdatum, opdracht_afgemeld, opdracht_doorlooptijd, opdracht_accepttijd, opdracht_omschrijving, opdracht_opmerking, opdracht_uitvoerende, opdracht_uitvoerende_contact, opdracht_behandelaar, opdracht_contract, opdracht_contract_versie, opdracht_contactpersoon, opdracht_uren, opdracht_correctie, opdracht_materiaal, opdracht_uurtarief, opdracht_kosten, opdracht_parent_key, opdracht_parent_nummer, opdracht_parent_volgnummer, opdracht_verstrektdatum, opdracht_lev_doorloopdagen, opdracht_lev_doorloopuren, offerte_ontv, offerte_ref, inkooporder, refnr_lev, klant, naam_tekenbevoegde, toegekend_pasnr, personeelsnr, id_gezien, kostencode, accept_sla_dagen, accept_sla_uren, uitvoering_sla_dagen, uitvoering_sla_uren, afspraak_sla_dagen, afspraak_sla_uren, accept_sla_optijd, uitvoering_sla_optijd, afspraak_sla_optijd, productgroep, subproductgroep ) AS SELECT o.opdracht_key, o.opdracht_nummer, o.opdracht_regio, o.opdracht_district, o.opdracht_locatie_code, o.opdracht_locatie, o.opdracht_locatieplaats, o.fclt_3d_locatie_key, o.opdracht_gebouwcode, o.opdracht_gebouw, o.opdracht_verdieping, o.opdracht_ruimtenr, o.opdracht_ruimte, o.opdracht_kostenplaats, o.opdracht_kostenplaats_oms, o.melding_key, o.opdracht_type, o.opdracht_volgnummer, o.opdracht_status, o.opdracht_duur_gepland, o.opdracht_datum, o.opdracht_einddatum, o.opdracht_plandatum, o.opdracht_acceptdatum, o.opdracht_afgemeld, o.opdracht_doorlooptijd, o.opdracht_accepttijd, o.opdracht_omschrijving, o.opdracht_opmerking, o.opdracht_uitvoerende, o.opdracht_uitvoerende_contact, o.opdracht_behandelaar, o.opdracht_contract, o.opdracht_contract_versie, o.opdracht_contactpersoon, o.opdracht_uren, o.opdracht_correctie, o.opdracht_materiaal, o.opdracht_uurtarief, o.opdracht_kosten, o.opdracht_parent_key, o.opdracht_parent_nummer, o.opdracht_parent_volgnummer, o.opdracht_verstrektdatum, o.opdracht_lev_doorloopdagen, o.opdracht_lev_doorloopuren, ko1.mld_kenmerkopdr_waarde, ko2.mld_kenmerkopdr_waarde, ko3.mld_kenmerkopdr_waarde, ko4.mld_kenmerkopdr_waarde, ko5.fac_usrdata_omschr, ko6.fac_usrdata_omschr, ko7.mld_kenmerkopdr_waarde, ko8.mld_kenmerkopdr_waarde, ko9.fac_usrdata_omschr, ko10.mld_kenmerkopdr_waarde, m.accept_sla_dagen, m.accept_sla_uren, m.uitvoering_sla_dagen, m.uitvoering_sla_uren, m.afspraak_sla_dagen, m.afspraak_sla_uren, m.accept_sla_optijd, m.uitvoering_sla_optijd, m.afspraak_sla_optijd, m.productgroep, m.subproductgroep FROM mld_v_udr_opdracht o, mld_v_udr_melding m, (SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr ko WHERE EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key = 2 AND mld_kenmerk_key = ko.mld_kenmerk_key)) ko1, -- Offerte ontvangen (SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr ko WHERE EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key = 3 AND mld_kenmerk_key = ko.mld_kenmerk_key)) ko2, -- Offerte referentie (SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr ko WHERE EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key = 101 AND mld_kenmerk_key = ko.mld_kenmerk_key)) ko3, -- Inkooporder (SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr ko WHERE EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key = 141 AND mld_kenmerk_key = ko.mld_kenmerk_key)) ko4, -- Refnr. Leverancier (SELECT ko.mld_opdr_key, ud.fac_usrdata_omschr FROM mld_v_aanwezigkenmerkopdr ko, fac_usrdata ud WHERE fac.safe_to_number (ko.mld_kenmerkopdr_waarde) = ud.fac_usrdata_key AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key = 301 AND mld_kenmerk_key = ko.mld_kenmerk_key)) ko5, -- Klant(R) (SELECT ko.mld_opdr_key, ud.fac_usrdata_omschr FROM mld_v_aanwezigkenmerkopdr ko, fac_usrdata ud WHERE fac.safe_to_number (ko.mld_kenmerkopdr_waarde) = ud.fac_usrdata_key AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key = 521 AND mld_kenmerk_key = ko.mld_kenmerk_key)) ko6, -- Naam tekenbevoegd Pivot Park(R) (SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr ko WHERE EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key = 541 AND mld_kenmerk_key = ko.mld_kenmerk_key)) ko7, -- Toegekend XS pasnummer (SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr ko WHERE EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key = 542 AND mld_kenmerk_key = ko.mld_kenmerk_key)) ko8, -- Personeelsnummer (SELECT ko.mld_opdr_key, ud.fac_usrdata_omschr FROM mld_v_aanwezigkenmerkopdr ko, fac_usrdata ud WHERE fac.safe_to_number (ko.mld_kenmerkopdr_waarde) = ud.fac_usrdata_key AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key = 561 AND mld_kenmerk_key = ko.mld_kenmerk_key)) ko9, -- ID gezien(R) (SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr ko WHERE EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key = 1601 AND mld_kenmerk_key = ko.mld_kenmerk_key)) ko10 -- Kostencode WHERE fac.gettrackingdate ('ORDNEW', o.opdracht_key) > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy') AND o.melding_key = m.melding_key AND o.opdracht_key = ko1.mld_opdr_key(+) AND o.opdracht_key = ko2.mld_opdr_key(+) AND o.opdracht_key = ko3.mld_opdr_key(+) AND o.opdracht_key = ko4.mld_opdr_key(+) AND o.opdracht_key = ko5.mld_opdr_key(+) AND o.opdracht_key = ko6.mld_opdr_key(+) AND o.opdracht_key = ko7.mld_opdr_key(+) AND o.opdracht_key = ko8.mld_opdr_key(+) AND o.opdracht_key = ko9.mld_opdr_key(+) AND o.opdracht_key = ko10.mld_opdr_key(+); -- VENR#67915: Thema WP-bezetting met andere beschikbaar-kleur per catalogus. -- waarde1: Voor hele dagen: Vrij(0) of Bezet (3) -- waarde: Voor halve dagen: Vrij(0), Ochtendbezet(1), MiddagBezet(2), Helemaalbezet(3) -- waarde3: Voor tellen: Het aantal reservering op de dag, met 0 is dus Vrij CREATE OR REPLACE VIEW venr_v_thema_deel_res_datum AS WITH datums AS ( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum FROM DUAL CONNECT BY LEVEL <= 42) SELECT datum fclt_f_datum, ins_deel_key, MIN (res_rsv_deel_van) min_van, MAX (res_rsv_deel_tot) max_tot, CASE WHEN MAX (res_rsv_deel_tot) IS NULL THEN DECODE (res_discipline_key, 2061, 5, 2062, 6, 2063, 7, 2064, 8, 4) -- Werkplekken 2061=HR, 2062=Finance, 2063=Support, 2064=Servicedesk en 1781=Yask! ELSE 3 -- Hele dag bezet END waarde1, CASE WHEN MAX (res_rsv_deel_tot) IS NULL THEN DECODE (res_discipline_key, 2061, 5, 2062, 6, 2063, 7, 2064, 8, 4) -- Werkplekken 2061=HR, 2062=Finance, 2063=Support, 2064=Servicedesk en 1781=Yask! WHEN TO_CHAR (MAX (res_rsv_deel_tot), 'HH24') <= 13 THEN 1 -- Ochtend WHEN TO_CHAR (MIN (res_rsv_deel_van), 'HH24') >= 12 THEN 2 -- Middag ELSE 3 -- Hele dag bezet END waarde, COUNT (res_rsv_deel_tot) -- Aantal reservering deze dag waarde3 FROM (SELECT datums.datum, res_ins_deel_key ins_deel_key, res_rsv_deel_van, res_rsv_deel_tot, res_discipline_key FROM res_v_aanwezigdeel r, ins_deel d, datums, (SELECT datum, res_deel_key, res_rsv_deel_van, res_rsv_deel_tot FROM datums, res_v_aanwezigrsv_deel rrd WHERE res_rsv_deel_van > TRUNC(SYSDATE) - 1 -- negeer alle irrelevante historie sowieso AND datum + 1 >= res_rsv_deel_van AND datum < res_rsv_deel_tot) blokkerend -- Vandaag en nog niet afgelopen WHERE r.res_ins_deel_key = d.ins_deel_key AND datums.datum = blokkerend.datum(+) AND r.res_deel_key = blokkerend.res_deel_key(+) AND (r.res_deel_vervaldatum IS NULL OR r.res_deel_vervaldatum > datums.datum)) GROUP BY datum, ins_deel_key, res_discipline_key ORDER BY datum, ins_deel_key; CREATE OR REPLACE VIEW venr_v_kosten_stedin AS SELECT m.mld_melding_key, m.mld_melding_datum, COALESCE(aog.alg_plaatsaanduiding, l.alg_locatie_code) plaatsaanduiding, m.mld_melding_onderwerp, m.mld_melding_omschrijving, pf.prs_perslid_naam_full, s.mld_statuses_omschrijving, mld_melding_einddatum, mld_melding_einddatum_std, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding kw, fac_usrdata ud WHERE kw.mld_melding_key = m.mld_melding_key AND kw.mld_kenmerk_key IN (4881, 4941) AND FAC.safe_to_number (mld_kenmerkmelding_waarde) = ud.fac_usrdata_key) hygdienst, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding kw, fac_usrdata ud WHERE kw.mld_melding_key = m.mld_melding_key AND kw.mld_kenmerk_key IN (4882, 4942) AND FAC.safe_to_number (mld_kenmerkmelding_waarde) = ud.fac_usrdata_key) bedrijf, (SELECT REPLACE(mld_kenmerkmelding_waarde, '.', ',') FROM mld_kenmerkmelding kw WHERE kw.mld_melding_key = m.mld_melding_key AND kw.mld_kenmerk_key IN (4883, 4961)) inkoop, (SELECT REPLACE(mld_kenmerkmelding_waarde, '.', ',') FROM mld_kenmerkmelding kw WHERE kw.mld_melding_key = m.mld_melding_key AND kw.mld_kenmerk_key IN (4884, 4962)) verkoop, (SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding kw WHERE kw.mld_melding_key = m.mld_melding_key AND kw.mld_kenmerk_key IN (4886, 4964)) inkoopnr, MLD.getmeldingstatusdate (m.mld_melding_key, 5) afgemeld FROM mld_melding m, alg_v_allonrgoed_gegevens aog, alg_locatie l, mld_statuses s, prs_v_perslid_fullnames_all pf WHERE mld_stdmelding_key IN (3821,3881) -- extra werk , ingredienten maas AND m.prs_perslid_key = pf.prs_perslid_key(+) AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys(+) AND m.mld_alg_locatie_key = l.alg_locatie_key(+) AND m.mld_melding_status = mld_statuses_key; -- Transport views CREATE OR REPLACE VIEW venr_v_mld_transport AS SELECT sd.ins_srtdiscipline_omschrijving vakgroeptype, sd.ins_srtdiscipline_prefix prefix, sd.ins_srtdiscipline_alg plaatsgegevens, sd.ins_srtdiscipline_ins objectgegevens, sd.ins_srtdiscipline_bes bestelgegevens, d.ins_discipline_omschrijving vakgroep, std.mld_stdmelding_omschrijving standaardmelding, stdg.mld_stdmeldinggroep_naam groep, k.prs_kostensoort_oms kostensoort, std.mld_stdmelding_t_accepttijd.tijdsduur acceptatietijd, std.mld_stdmelding_t_uitvoertijd.tijdsduur uitvoertijd, std.mld_stdmelding_t_uitvtijd_pr1.tijdsduur uitvoertijd_kritiek, std.mld_stdmelding_t_uitvtijd_pr2.tijdsduur uitvoertijd_hoog, std.mld_stdmelding_t_uitvtijd_pr4.tijdsduur uitvoertijd_laag, std.mld_stdmelding_directklaar directklaar, di.prs_dienst_omschrijving dienst, std.mld_stdmelding_notfrontend not_frontend, std.alg_onrgoed_niveau alg_niveau, t.mld_typeopdr_omschrijving opdrachttype, std.mld_stdmelding_hint hint, std.mld_stdmelding_kopieerbaar kopieerbaar, std.mld_stdmelding_afmeldtext tekst_bij_afmelden, DECODE (std.mld_stdmelding_doublecheck, 0, 'N', 1, 'I', 2, 'A', 3, 'B') dubbele_meldingen, --0:niet, 1:FE/FO, 2:BO, 3:FE/FO/BO std.mld_stdmelding_slabewaken sla_bewaken, d.ins_discipline_image vakgroep_image, std.mld_stdmelding_image melding_image FROM ins_srtdiscipline sd, ins_tab_discipline d, mld_stdmelding std, prs_kostensoort k, mld_stdmeldinggroep stdg, prs_dienst di, mld_typeopdr t WHERE sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key AND d.ins_discipline_key = std.mld_ins_discipline_key AND std.prs_kostensoort_key = k.prs_kostensoort_key(+) AND std.mld_stdmeldinggroep_key = stdg.mld_stdmeldinggroep_key(+) AND std.prs_dienst_key = di.prs_dienst_key(+) AND std.mld_typeopdr_key = t.mld_typeopdr_key(+); CREATE OR REPLACE VIEW venr_v_faq_transport AS SELECT fac_faq_question vraag, fac_faq_answer antwoord, DECODE (fac_faq_level, 1, 'Zelfservice', 2, 'Professionals', 3, 'Beide') zichtbaar_voor, DECODE (d.ins_discipline_module, 'MLD', d.ins_discipline_omschrijving) vakgroep, std.mld_stdmelding_omschrijving melding, fac_faq_source oorsprong, fac_faq_url meer_info_url, fac_faq_datum publicatiedatum, fac_faq_lang taal, fac_faq_hint hint, fac_faq_vervaldatum vervaldatum, fd.ins_discipline_omschrijving catalogusnaam, fac_faq_displaymode displaymode FROM fac_faq f, mld_stdmeldingfaq stdf, ins_tab_discipline d, mld_stdmelding std, ins_tab_discipline fd WHERE f.fac_faq_key = stdf.fac_faq_key(+) AND stdf.ins_discipline_key = d.ins_discipline_key(+) AND stdf.mld_stdmelding_key = std.mld_stdmelding_key(+) AND faq_ins_discipline_key = fd.ins_discipline_key(+); CREATE OR REPLACE VIEW venr_v_ins_transport AS SELECT dg.ins_discipline_omschrijving disciplineomschrijving, NULL disciplinekostensoort, dg.ins_srtgroep_omschrijving groepsoortomschrijving, sd.ins_srtdeel_upper objectsoortcode, sd.ins_srtdeel_omschrijving objectsoortomschrijving, d.ins_deel_omschrijving objectindentificatie, d.ins_deel_opmerking objectopmerking, DECODE (rd.res_deel_key, NULL, NULL, 'J') reserveerbaar, sd.ins_srtdeel_eenheid eenheid, rd.res_deel_prijs prijs, l.alg_locatie_code locatiecode, dg.alg_gebouw_upper gebouwcode, dg.alg_verdieping_code bouwlaagvolgnummer, dg.alg_ruimte_nr ruimtenummer, DECODE(rd.res_deel_alg_level, 1, 'D', 2, 'L', 3, 'G', 4, 'V', 5, 'R') reserveringscope, rid.ins_discipline_omschrijving catalogusnaam, NULL persoonmatchcode, NULL persoonmatchwaarde, d.ins_deel_aanmaak ingangsdatum, NULL vervaldatum, dg.ins_deel_aantal aantal, ins_deel_dwgx x, ins_deel_dwgy y, ins_deel_dwgrotatie rot, ins_deel_dwgschaal schaal FROM ins_v_deel_gegevens dg, ins_deel d, ins_srtdeel sd, res_deel rd, ins_tab_discipline rid, alg_locatie l WHERE dg.ins_deel_key = d.ins_deel_key AND dg.ins_srtdeel_key = sd.ins_srtdeel_key AND dg.ins_deel_key = rd.res_ins_deel_key(+) AND rd.res_discipline_key = rid.ins_discipline_key(+) AND dg.alg_locatie_key = l.alg_locatie_key; ------ 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