-- -- $Id$ -- -- Script containing customer specific configuration sql statements for PCHE (Eindhoven Strijp-S) DEFINE thisfile = 'PCHE.SQL' DEFINE dbuser = '^PCHE' DEFINE custid = 'PCHE' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; WHENEVER SQLERROR EXIT; SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL; WHENEVER SQLERROR CONTINUE; SPOOL &fcltlogfile SET DEFINE OFF ------ payload begin ------ /* grootboekrekeningen: Grootboek Omschrijving 200006 24/7 Abonnement bewoners 200007 24/7 Abonnement bedrijven 200008 Nacht en weekend abonnement 200009 Nacht abonnement 200010 Werkdagen abonnement 200011 Realtime abonnement 200012 Strijp-S bultje 200013 Borg abonnement passen 200014 Borg fietspassen 200027 Waardenkaart bedrijven 200028 Waardenkaart bewoners */ /* verkoopfactuurvelden: fin_verkoopfactuur_key Identificatie van de verkoopfactuurregel fin_verkoopfactuur_id Identificatie van de verkoopfactuurregel (in tekst vorm) fin_verkoopfactuur_datum Factuurdatum, in geval van bestellingen en mutaties is dit de huidige datum. In geval van prolongaties van de contracten zal dit de eerste van de komende maand zijn. fin_verkoopfactuur_omschr Omschrijving van de bestelregel. Voor bestellingen wordt hier de artikelomschrijving ingevuld. fin_verkoopfactuur_xmlnode Type van FACILITOR entiteit waaraan deze verkoopfactuur gekoppeld is. Kan zijn: contract of bestelopdr. fin_verkoopfactuur_refkey Identificatie van de FACILITOR entiteit waaraan deze factuur gekoppeld is. prs_kostenplaats_nr LET OP:Referentie naar de melding voor contractmutaties. prs_kostensoort_refcode Grootboekrekening prs_bedrijf_key Identificatie van de debiteur prs_debiteur_naam Naam van de debiteur (prs_bedrijf_naam) fin_verkoopfactuur_bedrag Factuurregelbedrag exclusief BTW fin_verkoopfactuur_btw BTW bedrag voor deze factuurregel fin_btwtabelwaarde_code Code van het BTW tarief fin_btwtabelwaarde_oms Omschrijving van het BTW tarief fin_btwtabelwaarde_perc BTW percentage fin_btwtabelwaarde_verlegd Of de btw verlegd is (n.v.t.) fin_verkoopfactuur_maand De maandnotatie van de factuurdatum fin_verkoopfactuur_c1 Debiteurnummer (prs_leverancier_nr) fin_verkoopfactuur_c2 Email adres waarnaar de factuur verzonden is. fin_verkoopfactuur_c3 Periode in geval van contract (M, Q, Y) fin_verkoopfactuur_c4 Type abonnement bij mutatie fin_verkoopfactuur_c5 Bestandsnaam pdf fin_verkoopfactuur_c7 Lijst met pasnummers horende bij dit contract. fin_verkoopfactuur_n1 Factuurregel volgnummer fin_verkoopfactuur_n2 Aantal fin_verkoopfactuur_n3 Bedrag dat betaald is. fin_verkoopfactuur_n4 Korting betaaltermijn (procenten) fin_verkoopfactuur_n5 Korting Contract (procenten) fin_verkoopfactuur_d1 Datum waarop de factuur volledig betaald is. fin_verkoopfactuur_d2 Datum waarop de factuur naar Exact verzonden is. fin_verkoopfactuur_d3 Periode van fin_verkoopfactuur_d4 Periode tot fin_verkoopfactuur_d5 Datum waarop de factuur verzonden is. */ CREATE OR REPLACE VIEW pche_v_rap_verkoopfacturen ( fin_verkoopfactuur_key, fin_verkoopfactuur_id, node, omschrijving ) AS SELECT max(fin_verkoopfactuur_key), fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, listagg (fin_verkoopfactuur_omschr, ',') WITHIN GROUP (ORDER BY fin_verkoopfactuur_omschr) AS omschrijving FROM fin_verkoopfactuur GROUP BY fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode; CREATE OR REPLACE VIEW pche_v_pasnrs ( cnt_contract_key, pasnrs ) AS SELECT co.cnt_contract_key, LISTAGG (d.ins_deel_omschrijving, ',') WITHIN GROUP (ORDER BY (ins_deel_omschrijving)) AS pasnrs FROM ins_deel d, cnt_contract_object co WHERE co.cnt_ins_deel_key = d.ins_deel_key AND co.cnt_contract_object_verwijder IS NULL AND d.ins_deel_verwijder IS NULL AND COALESCE (d.ins_deel_vervaldatum, SYSDATE) >= SYSDATE GROUP BY co.cnt_contract_key; CREATE OR REPLACE VIEW pche_v_open_contract ( cnt_contract_key, cnt_contract_omschrijving, cnt_contract_verwijder ) AS SELECT cnt_contract_key, cnt_contract_omschrijving || ' [' || cnt_contract_nummer_intern || '.' || COALESCE (cnt_contract_versie, '0') || ']' || DECODE (cnt_contract_status, 1, ' *', DECODE(cnt_contract_verwijder, NULL, DECODE(SIGN(cnt_contract_looptijd_tot - SYSDATE), -1, ' *', ''), ' *')) cnt_contract_omschrijving, DECODE (cnt_contract_status, 1, sysdate -1, coalesce(cnt_contract_verwijder, cnt_contract_looptijd_tot)) verwijder FROM cnt_contract; CREATE OR REPLACE VIEW pche_v_contract_gegevens ( debiteur, bewoner, bedrijf, prs_bedrijf_key, contract, cnt_contract_key, looptijd_van, looptijd_tot, dgn5, dgn7, nacht, nachtweekend, bultje, betaling, betaling_korting, betaling_periode, p_dgn5, p_dgn7, p_nacht, p_nachtweekend, p_bultje, contract_korting, aantal_passen ) AS SELECT prs_leverancier_nr debiteur, COALESCE ( (SELECT fac.safe_to_number (prs_kenmerklink_waarde) FROM prs_kenmerklink WHERE prs_kenmerklink_verwijder IS NULL AND prs_link_key = prs_bedrijf_key AND prs_kenmerk_key = 1000), 0) bewoner, prs_bedrijf_naam bedrijf, prs_bedrijf_key, 'C' || cnt_contract_nummer_intern contract, c.cnt_contract_key, c.cnt_contract_looptijd_van, c.cnt_contract_looptijd_tot, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc WHERE c.cnt_contract_key = kc.cnt_contract_key AND kc.cnt_kenmerk_key = 1) dgn5, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc, cnt_kenmerk k WHERE c.cnt_contract_key = kc.cnt_contract_key AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = 2) dgn7, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc WHERE c.cnt_contract_key = kc.cnt_contract_key AND kc.cnt_kenmerk_key = 3) nacht, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc WHERE c.cnt_contract_key = kc.cnt_contract_key AND kc.cnt_kenmerk_key = 4) nachtweekend, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc WHERE c.cnt_contract_key = kc.cnt_contract_key AND kc.cnt_kenmerk_key = 41) bultje, (SELECT fac_usrdata_omschr FROM fac_usrdata ud, cnt_kenmerkcontract kc, cnt_kenmerk k WHERE c.cnt_contract_key = kc.cnt_contract_key AND k.cnt_srtkenmerk_key = 5 AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND fac.safe_to_number (cnt_kenmerkcontract_waarde) = ud.fac_usrdata_key) betaling, (SELECT fac_usrdata_prijs FROM fac_usrdata ud, cnt_kenmerkcontract kc, cnt_kenmerk k WHERE c.cnt_contract_key = kc.cnt_contract_key AND k.cnt_srtkenmerk_key = 5 AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND fac.safe_to_number (cnt_kenmerkcontract_waarde) = ud.fac_usrdata_key) betaling_korting, (SELECT fac_usrdata_code FROM fac_usrdata ud, cnt_kenmerkcontract kc, cnt_kenmerk k WHERE c.cnt_contract_key = kc.cnt_contract_key AND k.cnt_srtkenmerk_key = 5 AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND fac.safe_to_number (cnt_kenmerkcontract_waarde) = ud.fac_usrdata_key) betaling_periode, (SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = 21) p_dgn5, (SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = DECODE(c.ins_discipline_key, 61, 62, 1)) p_dgn7, (SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = 3) p_nacht, (SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = 2) p_nachtweekend, (SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = 81) p_bultje, cnt_contract_korting contract_korting, (SELECT COUNT (ins_deel_key) FROM ins_deel d, cnt_contract_object co WHERE c.cnt_contract_key = co.cnt_contract_key AND co.cnt_ins_deel_key = d.ins_deel_key) aantal_passen FROM cnt_contract c, prs_bedrijf b WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_verwijder IS NULL AND c.cnt_contract_status = 0; --PCHE#41481 Dit is een vaste rapportage geworden CREATE OR REPLACE VIEW pche_v_rap_bedrijfexport ( bedrijfsnaam, naam_gebruiker, pasnummer, adres, postcode, plaats, telefoonnummer_gebruiker ) AS SELECT DECODE (bedrijf.bedrijf, NULL, 'geen bedrijf', bedrijf.bedrijf) bedrijfsnaam, naam.ins_kenmerkdeel_waarde naam_gebruiker, naam.ins_deel_upper pasnummer, bedrijfg.prs_bedrijf_post_adres adres, bedrijfg.prs_bedrijf_post_postcode postcode, bedrijfg.prs_bedrijf_post_plaats plaats, tel.ins_kenmerkdeel_waarde telefoonnummer_gebruiker FROM (SELECT i.ins_deel_upper, ik.ins_kenmerkdeel_waarde FROM ins_deel i, ins_kenmerkdeel ik WHERE ik.ins_kenmerk_key = 21 AND i.ins_deel_key = ik.ins_deel_key AND i.ins_deel_verwijder IS NULL) naam, (SELECT i.ins_deel_upper, ik.ins_kenmerkdeel_waarde FROM ins_deel i, ins_kenmerkdeel ik WHERE ik.ins_kenmerk_key = 22 AND i.ins_deel_key = ik.ins_deel_key AND i.ins_deel_verwijder IS NULL) tel, (SELECT p.bedrijf, p.pas, p.prs_bedrijf_key FROM pche_v_contractdeel_gegevens p) bedrijf, (SELECT pb.prs_bedrijf_key, pb.prs_bedrijf_post_adres, pb.prs_bedrijf_post_postcode, pb.prs_bedrijf_post_plaats FROM prs_bedrijf pb) bedrijfg WHERE naam.ins_deel_upper = tel.ins_deel_upper AND naam.ins_deel_upper = bedrijf.pas(+) AND bedrijf.prs_bedrijf_key = bedrijfg.prs_bedrijf_key(+); CREATE OR REPLACE FORCE VIEW pche_v_contractdeel_gegevens ( debiteur, bewoner, bedrijf, prs_bedrijf_key, contract, cnt_contract_key, dgn5, dgn7, nacht, nachtweekend, bultje, betaling, betaling_korting, betaling_periode, p_dgn5, p_dgn7, p_nacht, p_nachtweekend, p_bultje, contract_korting, pas ) AS SELECT prs_leverancier_nr debiteur, COALESCE ( (SELECT fac.safe_to_number (prs_kenmerklink_waarde) FROM prs_kenmerklink WHERE prs_kenmerklink_verwijder IS NULL AND prs_link_key = prs_bedrijf_key AND prs_kenmerk_key = 1000), 0) bewoner, prs_bedrijf_naam bedrijf, prs_bedrijf_key, 'C' || cnt_contract_nummer_intern contract, c.cnt_contract_key, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc WHERE c.cnt_contract_key = kc.cnt_contract_key AND kc.cnt_kenmerk_key = 1) dgn5, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc, cnt_kenmerk k WHERE c.cnt_contract_key = kc.cnt_contract_key AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = 2) dgn7, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc WHERE c.cnt_contract_key = kc.cnt_contract_key AND kc.cnt_kenmerk_key = 3) nacht, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc WHERE c.cnt_contract_key = kc.cnt_contract_key AND kc.cnt_kenmerk_key = 4) nachtweekend, (SELECT cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc WHERE c.cnt_contract_key = kc.cnt_contract_key AND kc.cnt_kenmerk_key = 41) bultje, (SELECT fac_usrdata_omschr FROM fac_usrdata ud, cnt_kenmerkcontract kc, cnt_kenmerk k WHERE c.cnt_contract_key = kc.cnt_contract_key AND k.cnt_srtkenmerk_key = 5 AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND fac.safe_to_number (cnt_kenmerkcontract_waarde) = ud.fac_usrdata_key) betaling, (SELECT fac_usrdata_prijs FROM fac_usrdata ud, cnt_kenmerkcontract kc, cnt_kenmerk k WHERE c.cnt_contract_key = kc.cnt_contract_key AND k.cnt_srtkenmerk_key = 5 AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND fac.safe_to_number (cnt_kenmerkcontract_waarde) = ud.fac_usrdata_key) betaling_korting, (SELECT fac_usrdata_code FROM fac_usrdata ud, cnt_kenmerkcontract kc, cnt_kenmerk k WHERE c.cnt_contract_key = kc.cnt_contract_key AND k.cnt_srtkenmerk_key = 5 AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND fac.safe_to_number (cnt_kenmerkcontract_waarde) = ud.fac_usrdata_key) betaling_periode, (SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = 21) p_dgn5, (SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = 1) p_dgn7, (SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = 3) p_nacht, (SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = 2) p_nachtweekend, (SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = 81) p_bultje, cnt_contract_korting contract_korting, ins_deel_omschrijving pas FROM cnt_contract c, prs_bedrijf b, ins_deel d, cnt_contract_object co WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_key = co.cnt_contract_key(+) AND co.cnt_ins_deel_key = d.ins_deel_key(+); CREATE OR REPLACE VIEW pche_v_rap_contract_gegevens ( debiteur, bedrijf, bewoner, contract, dgn5, dgn7, nacht, nachtweekend, bultje, betaling, p_dgn5, p_dgn7, p_nacht, p_nachtweekend, p_bultje, aantal_passen, betaling_korting, contract_korting, t_dgn5, t_dgn7, t_nacht, t_nachtweekend, t_bultje, totaal, totaal_netto, pasnrs ) AS SELECT debiteur, bedrijf, bewoner, contract, dgn5, dgn7, nacht, nachtweekend, bultje, betaling, p_dgn5, p_dgn7, p_nacht, p_nachtweekend, p_bultje, aantal_passen, betaling_korting, contract_korting, dgn5 * p_dgn5 t_dgn5, dgn7 * p_dgn7 t_dgn7, nacht * p_nacht t_nacht, nachtweekend * p_nachtweekend t_nachtweekend, bultje * p_bultje t_bultje, COALESCE (fac.safe_to_number (dgn5), 0) * p_dgn5 + COALESCE (fac.safe_to_number (dgn7), 0) * p_dgn7 + COALESCE (fac.safe_to_number (nacht), 0) * p_nacht + COALESCE (fac.safe_to_number (nachtweekend), 0) * p_nachtweekend + COALESCE (fac.safe_to_number (bultje), 0) * p_bultje totaal, ROUND ( ( (100 - COALESCE (contract_korting, 0) - betaling_korting) / 100) * ( COALESCE (fac.safe_to_number (dgn5), 0) * p_dgn5 + COALESCE (fac.safe_to_number (dgn7), 0) * p_dgn7 + COALESCE (fac.safe_to_number (nacht), 0) * p_nacht + COALESCE (fac.safe_to_number (nachtweekend), 0) * p_nachtweekend + COALESCE (fac.safe_to_number (bultje), 0) * p_bultje), 2) totaal_netto, pasnrs FROM pche_v_contract_gegevens cg, pche_v_pasnrs p WHERE cg.cnt_contract_key = p.cnt_contract_key; CREATE OR REPLACE PROCEDURE pche_select_daily_task ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN -- Kopieer de bedrijfsgegevens naar afdelingen en personen -- Pas bestaande afdelingen aan. UPDATE prs_afdeling a SET (prs_afdeling_naam, prs_afdeling_omschrijving, prs_afdeling_verwijder, prs_kostenplaats_key ) = (SELECT prs_leverancier_nr, prs_bedrijf_naam, prs_bedrijf_verwijder, 1 FROM prs_bedrijf b WHERE b.prs_bedrijf_key = a.prs_bedrijf_key AND b.prs_leverancier_nr IS NOT NULL) WHERE EXISTS (SELECT b.prs_bedrijf_key FROM prs_bedrijf b, prs_v_afdeling ab WHERE ab.prs_bedrijf_key = b.prs_bedrijf_key AND ab.prs_afdeling_key = a.prs_afdeling_key AND b.prs_leverancier_nr IS NOT NULL AND b.prs_bedrijf_contract = 1); -- Voeg nieuwe afdelingen toe. INSERT INTO prs_afdeling (prs_bedrijf_key, prs_afdeling_naam, prs_afdeling_omschrijving, prs_kostenplaats_key) SELECT prs_bedrijf_key, prs_leverancier_nr, prs_bedrijf_naam, 1 FROM prs_bedrijf b WHERE prs_bedrijf_contract = 1 AND prs_leverancier_nr IS NOT NULL AND NOT EXISTS (SELECT b.prs_bedrijf_key FROM prs_afdeling ab WHERE b.prs_bedrijf_key = ab.prs_bedrijf_key); -- Pas bestaande personen aan UPDATE prs_perslid p SET (prs_afdeling_key, prs_srtperslid_key, prs_perslid_module, prs_perslid_naam, fac_profiel_key, prs_perslid_email, -- prs_perslid_oslogin, Nog maar even niet ivm meerdere bedrijven met hetzelfde mail adres. prs_perslid_verwijder ) = (SELECT prs_afdeling_key, 22, 'PRS', prs_afdeling_omschrijving || DECODE (prs_afdeling_verwijder, NULL, '', '[' || to_char (prs_afdeling_verwijder, 'yyyymmdd') || ']'), 1, prs_bedrijf_email, -- prs_bedrijf_email, prs_afdeling_verwijder FROM prs_afdeling a, prs_bedrijf b WHERE a.prs_afdeling_key = p.prs_afdeling_key AND a.prs_bedrijf_key = b.prs_bedrijf_key) WHERE prs_srtperslid_key = 22; -- Voeg nieuwe personen toe INSERT INTO prs_perslid (prs_afdeling_key, prs_srtperslid_key, prs_perslid_module, prs_perslid_naam, fac_profiel_key, prs_perslid_email) SELECT prs_afdeling_key, 22, 'PRS', prs_afdeling_omschrijving || DECODE (prs_afdeling_verwijder, NULL, '', '[' || to_char (prs_afdeling_verwijder, 'yyyymmdd') || ']'), 1, prs_bedrijf_email FROM prs_afdeling a, prs_bedrijf b WHERE a.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_contract = 1 AND b.prs_bedrijf_verwijder IS NULL AND a.prs_afdeling_verwijder IS NULL AND NOT EXISTS (SELECT prs_perslid_key FROM prs_perslid p WHERE p.prs_afdeling_key = a.prs_afdeling_key); -- Koppel personen aan de juiste autorisatie -- 41 autorisatiegroep bewoners -- 61 autorisatiegroep bedrijven -- Kenmerk 1000 is kenmerk voor bewoners bij bedrijf (1 = bewoner) INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key) SELECT prs_perslid_key, DECODE (b.prs_kenmerklink_waarde, 1, 41, 61) FROM prs_perslid p, prs_v_afdeling a, (SELECT prs_kenmerklink_waarde, prs_link_key FROM prs_kenmerklink kl WHERE kl.prs_kenmerk_key = 1000) b WHERE p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = b.prs_link_key(+) AND NOT EXISTS (SELECT fac_gebruikersgroep_key FROM fac_gebruikersgroep gg WHERE gg.prs_perslid_key = p.prs_perslid_key AND gg.fac_groep_key = DECODE (b.prs_kenmerklink_waarde, 1, 41, 61)); END pche_select_daily_task; / CREATE OR REPLACE PROCEDURE pche_select_exact_common ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_betaling_periode IN NUMBER, p_antedateerdagen IN NUMBER) AS CURSOR c_melding IS SELECT b.prs_leverancier_nr, b.prs_bedrijf_naam, COALESCE ( (SELECT prs_kenmerklink_waarde FROM prs_kenmerklink WHERE prs_kenmerklink_verwijder IS NULL AND prs_link_key = prs_bedrijf_key AND prs_kenmerk_key = 1020), b.prs_bedrijf_email) prs_bedrijf_email, b.prs_bedrijf_key, m.mld_melding_key, c.cnt_contract_key, m.mld_melding_opmerking, DECODE ( k.mld_srtkenmerk_key, 29, DECODE ( (SELECT fac_usrdata_upper FROM fac_usrdata ud, mld_kenmerkmelding km WHERE km.mld_melding_key = m.mld_melding_key AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = fac_usrdata_key AND km.mld_kenmerk_key IN (1, 61) -- bedrijv / bewoners ), '5DGN', '200010', '7DGN', DECODE (std.mld_ins_discipline_key, 4, '200007', '200006'), -- bedrijv / bewoners 'N&W', '200008', 'NACHT', '200009', 'BULTJE', '200012', 'REALTIME', '200011' ), '200013') -- borg prs_kostensoort_refcode, fac.safe_to_number (km.mld_kenmerkmelding_waarde * DECODE(k.mld_srtkenmerk_key, 241, ud.fac_usrdata_prijs , 1)) bedrag, ROUND ( fac.safe_to_number (km.mld_kenmerkmelding_waarde * DECODE(k.mld_srtkenmerk_key, 241, ud.fac_usrdata_prijs , 1)) * fin_btwtabelwaarde_perc / (100 + fin_btwtabelwaarde_perc), 2) btw, fin_btwtabelwaarde_code, fin_btwtabelwaarde_oms, fin_btwtabelwaarde_perc, fin_btwtabelwaarde_verlegd, ud.fac_usrdata_omschr abtype, (SELECT fac.safe_to_date(MAX(kmb.mld_kenmerkmelding_waarde), 'dd-mm-yyyy') FROM mld_kenmerkmelding kmb WHERE kmb.mld_melding_key = m.mld_melding_key AND kmb.mld_kenmerk_key = 421) van, (SELECT fac.safe_to_date(MAX(kme.mld_kenmerkmelding_waarde), 'dd-mm-yyyy') FROM mld_kenmerkmelding kme WHERE kme.mld_melding_key = m.mld_melding_key AND kme.mld_kenmerk_key = 441) tot FROM mld_melding m, cnt_contract c, prs_bedrijf b, fin_btwtabelwaarde btw, mld_kenmerkmelding km, mld_kenmerk k, mld_stdmelding std, fac_usrdata ud, mld_kenmerkmelding kmt, mld_kenmerk kt WHERE (SELECT fac.safe_to_number (mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key IN (28, 201) -- contract referentie / contract referentie alle (voor creditering) AND km.mld_melding_key = m.mld_melding_key) = c.cnt_contract_key AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND DECODE (k.mld_srtkenmerk_key, 29, 21, 0) = fin_btwtabelwaarde_perc -- normaal wel btw maar niet op borg AND m.mld_melding_key = km.mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_kenmerkmelding_verwijder IS NULL AND k.mld_srtkenmerk_key IN (29, 41, 241) -- te factureren bedrag / borg / aantal transacties AND m.mld_melding_status = 5 -- afgemeld AND m.mld_melding_indult = 0 -- melding is niet uitgesloten voor facturering AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) <> 0 AND m.mld_stdmelding_key = std.mld_stdmelding_key AND kmt.mld_melding_key = m.mld_melding_key AND kmt.mld_kenmerk_key = kt.mld_kenmerk_key AND kt.mld_srtkenmerk_key IN (61, 1) AND fac.safe_to_number (kmt.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key AND m.mld_melding_key NOT IN (SELECT COALESCE(FAC.SAFE_TO_NUMBER(prs_kostenplaats_nr), -1) FROM fin_verkoopfactuur) ORDER BY m.mld_melding_key; CURSOR c_bestel IS SELECT boi.bes_bestelopdr_item_omschrijv, bo.bes_bestelopdr_key, bed.prs_bedrijf_key, bed.prs_bedrijf_naam, COALESCE ( (SELECT prs_kenmerklink_waarde FROM prs_kenmerklink WHERE prs_kenmerklink_verwijder IS NULL AND prs_link_key = bed.prs_bedrijf_key AND prs_kenmerk_key = 1020), bed.prs_bedrijf_email) prs_bedrijf_email, k.prs_kostensoort_oms, k.prs_kostensoort_opmerking, k.prs_kostensoort_refcode, boi.bes_bestelopdr_item_aantal, boi.bes_bestelopdr_item_prijs, btw.fin_btwtabelwaarde_code, btw.fin_btwtabelwaarde_oms, btw.fin_btwtabelwaarde_perc, btw.fin_btwtabelwaarde_verlegd, bed.prs_leverancier_nr, boi.bes_bestelopdr_item_posnr FROM bes_bestelling b, prs_perslid p, prs_v_afdeling a, prs_bedrijf bed, prs_kostensoort k, bes_bestelling_item bi, bes_bestelopdr_item boi, bes_bestelopdr bo, bes_srtdeel sd, bes_srtgroep sg, ins_tab_discipline d, fin_btwtabelwaarde btw WHERE b.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = d.ins_discipline_key AND d.prs_kostensoort_key = k.prs_kostensoort_key AND sd.bes_srtdeel_btw = btw.fin_btwtabelwaarde_perc AND a.prs_bedrijf_key = bed.prs_bedrijf_key AND NOT EXISTS (SELECT fin_verkoopfactuur_key FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_xmlnode = 'bestelopdr' AND bo.bes_bestelopdr_key = fin_verkoopfactuur_refkey) AND bes_bestelopdr_status = 3; CURSOR c_contract(c_betaling_periode NUMBER) IS SELECT abtype, cnt_contract_key, c.prs_bedrijf_key, COALESCE ( (SELECT prs_kenmerklink_waarde FROM prs_kenmerklink WHERE prs_kenmerklink_verwijder IS NULL AND prs_link_key = b.prs_bedrijf_key AND prs_kenmerk_key = 1020), b.prs_bedrijf_email) prs_bedrijf_email, bedrijf, looptijd_van, looptijd_tot, ROUND ( aantal * stuksprijs * betaling_periode * (1 - COALESCE (betaling_korting, 0) / 100 - COALESCE (contract_korting, 0) / 100), 2) bedrag, ROUND ( ROUND ( aantal * stuksprijs * betaling_periode * (1 - COALESCE (betaling_korting, 0) / 100 - COALESCE (contract_korting, 0) / 100), 2) * fin_btwtabelwaarde_perc / (100 + fin_btwtabelwaarde_perc), 2) btw, fin_btwtabelwaarde_code, fin_btwtabelwaarde_oms, fin_btwtabelwaarde_perc, fin_btwtabelwaarde_verlegd, debiteur, aantal, COALESCE (betaling_korting, 0) betaling_korting, betaling, COALESCE (contract_korting, 0) contract_korting, betaling_periode, prs_kostensoort_refcode, ( SELECT pa.pasnrs FROM pche_v_pasnrs pa WHERE c.cnt_contract_key = pa.cnt_contract_key) pasnrs FROM (SELECT DISTINCT debiteur, bedrijf, prs_bedrijf_key, contract, cnt_contract_key, looptijd_van, looptijd_tot, 'Werkdagen abonnement' abtype, dgn5 aantal, betaling, betaling_korting, betaling_periode, p_dgn5 stuksprijs, contract_korting, '200010' prs_kostensoort_refcode FROM pche_v_contract_gegevens WHERE dgn5 IS NOT NULL UNION ALL SELECT DISTINCT debiteur, bedrijf, prs_bedrijf_key, contract, cnt_contract_key, looptijd_van, looptijd_tot, '24/7 abonnement' abtype, dgn7 aantal, betaling, betaling_korting, betaling_periode, p_dgn7 stuksprijs, contract_korting, DECODE (bewoner, 1, '200006', '200007') prs_kostensoort_refcode FROM pche_v_contract_gegevens WHERE dgn7 IS NOT NULL UNION ALL SELECT DISTINCT debiteur, bedrijf, prs_bedrijf_key, contract, cnt_contract_key, looptijd_van, looptijd_tot, 'Nacht abonnement' abtype, nacht aantal, betaling, betaling_korting, betaling_periode, p_nacht stuksprijs, contract_korting, '200009' prs_kostensoort_refcode FROM pche_v_contract_gegevens WHERE nacht IS NOT NULL UNION ALL SELECT DISTINCT debiteur, bedrijf, prs_bedrijf_key, contract, cnt_contract_key, looptijd_van, looptijd_tot, 'Nacht- en Weekend abonnement' abtype, nachtweekend aantal, betaling, betaling_korting, betaling_periode, p_nachtweekend stuksprijs, contract_korting, '200008' prs_kostensoort_refcode FROM pche_v_contract_gegevens WHERE nachtweekend IS NOT NULL UNION ALL SELECT DISTINCT debiteur, bedrijf, prs_bedrijf_key, contract, cnt_contract_key, looptijd_van, looptijd_tot, 'Strijp-S Bultje abonnement' abtype, bultje aantal, betaling, betaling_korting, betaling_periode, p_bultje stuksprijs, contract_korting, '200012' prs_kostensoort_refcode FROM pche_v_contract_gegevens WHERE bultje IS NOT NULL) c, fin_btwtabelwaarde btw, prs_bedrijf b WHERE btw.fin_btwtabelwaarde_perc = 21 AND p_betaling_periode = betaling_periode AND c.prs_bedrijf_key = b.prs_bedrijf_key ORDER BY cnt_contract_key; v_factuur_key NUMBER; v_bestelopdr_key NUMBER; v_melding_key NUMBER; v_contract_key NUMBER; v_factuurregel_nr NUMBER; v_verkoopfactuurkop_key NUMBER; v_pdf_naam VARCHAR2(200); v_begin DATE; v_eind DATE; BEGIN SELECT COALESCE(MAX (FAC.SAFE_TO_NUMBER(fin_verkoopfactuurkop_id)),0) INTO v_factuur_key FROM fin_verkoopfactuurkop; v_bestelopdr_key := -1; v_contract_key := -1; v_melding_key := -1; IF p_betaling_periode = 0 THEN -- alleen uitvoeren als het geen periode facturatie is. -- verwijder nog niet geexporteerde meldingen DELETE fin_verkoopfactuur WHERE fin_verkoopfactuur_xmlnode = 'contract' AND prs_kostenplaats_nr IS NOT NULL -- referentie naar melding. Is dus mutatie op contract. AND fin_verkoopfactuur_d2 IS NULL; -- Nog niet naar Exact geëxporteerd. FOR rec IN c_melding LOOP IF rec.mld_melding_key <> v_melding_key THEN v_factuurregel_nr := 1; v_factuur_key := v_factuur_key + 1; INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id) VALUES (TO_CHAR (v_factuur_key)) RETURNING fin_verkoopfactuurkop_key INTO v_verkoopfactuurkop_key; v_pdf_naam := 'Factuur_' || TO_CHAR (v_factuur_key) || '_' || DBMS_RANDOM.string ('a', 32) || '.pdf'; ELSE v_factuurregel_nr := v_factuurregel_nr + 1; END IF; -- fin_verkoopfactuur_d1 = datum betaald INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key, fin_verkoopfactuur_id, -- factuurnummer zoals deze naar de klant gaat fin_verkoopfactuur_datum, -- datum afgesproken met PCHE voor bestellingen is dat de sysdate fin_verkoopfactuur_omschr, -- factuurregelomschrijving is artikelregel fin_verkoopfactuur_xmlnode, -- bestelopdr fin_verkoopfactuur_refkey, -- bes_bestelopdr_key prs_bedrijf_key, -- bedrijf van de aanvrager prs_debiteur_naam, -- prs_bedrijf_naam fin_verkoopfactuur_bedrag, fin_verkoopfactuur_btw, fin_btwtabelwaarde_code, fin_btwtabelwaarde_oms, fin_btwtabelwaarde_perc, fin_btwtabelwaarde_verlegd, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostenplaats_nr, -- LET OP: melding key als referentie naar de melding fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, -- prs_leverancier_nr fin_verkoopfactuur_c2, -- prs_bedrijf_email fin_verkoopfactuur_c4, -- abonnementstype fin_verkoopfactuur_c5, -- filenaam van de PDF fin_verkoopfactuur_n1, -- bestelregel volgnummer fin_verkoopfactuur_n2, -- aantal fin_verkoopfactuur_d3, -- begin periode fin_verkoopfactuur_d4) -- einde periode VALUES (v_verkoopfactuurkop_key, TO_CHAR (v_factuur_key), SYSDATE, rec.mld_melding_opmerking, 'contract', rec.cnt_contract_key, rec.prs_bedrijf_key, rec.prs_bedrijf_naam, rec.bedrag - rec.btw, rec.btw, rec.fin_btwtabelwaarde_code, rec.fin_btwtabelwaarde_oms, rec.fin_btwtabelwaarde_perc, rec.fin_btwtabelwaarde_verlegd, NULL, NULL, rec.prs_kostensoort_refcode, TO_CHAR(rec.mld_melding_key), TO_CHAR (SYSDATE, 'yyyymm'), rec.prs_leverancier_nr, rec.prs_bedrijf_email, rec.abtype, v_pdf_naam, v_factuurregel_nr, NULL, rec.van, rec.tot); v_melding_key := rec.mld_melding_key; END LOOP; -- verwijder nog niet geexporteerde bestellingen DELETE fin_verkoopfactuur WHERE fin_verkoopfactuur_xmlnode = 'bestelopdr' AND fin_verkoopfactuur_d2 IS NULL; -- Nog niet naar Exact geëxporteerd. FOR rec IN c_bestel LOOP IF rec.bes_bestelopdr_key <> v_bestelopdr_key THEN v_factuur_key := v_factuur_key + 1; INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id) VALUES (TO_CHAR (v_factuur_key)) RETURNING fin_verkoopfactuurkop_key INTO v_verkoopfactuurkop_key; v_pdf_naam := 'Factuur_' || TO_CHAR (v_factuur_key) || '_' || DBMS_RANDOM.string ('a', 32) || '.pdf'; END IF; -- fin_verkoopfactuur_d1 = datum betaald INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key, fin_verkoopfactuur_id, -- factuurnummer zoals deze naar de klant gaat fin_verkoopfactuur_datum, -- datum afgesproken met PCHE voor bestellingen is dat de sysdate fin_verkoopfactuur_omschr, -- factuurregelomschrijving is artikelregel fin_verkoopfactuur_xmlnode, -- bestelopdr fin_verkoopfactuur_refkey, -- bes_bestelopdr_key prs_bedrijf_key, -- bedrijf van de aanvrager prs_debiteur_naam, -- prs_bedrijf_naam fin_verkoopfactuur_bedrag, fin_verkoopfactuur_btw, fin_btwtabelwaarde_code, fin_btwtabelwaarde_oms, fin_btwtabelwaarde_perc, fin_btwtabelwaarde_verlegd, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, -- prs_leverancier_nr fin_verkoopfactuur_c2, -- prs_bedrijf_email fin_verkoopfactuur_c5, -- filenaam van de PDF fin_verkoopfactuur_n1, -- bestelregel volgnummer fin_verkoopfactuur_n2) -- aantal VALUES (v_verkoopfactuurkop_key, TO_CHAR (v_factuur_key), SYSDATE, rec.bes_bestelopdr_item_omschrijv, 'bestelopdr', rec.bes_bestelopdr_key, rec.prs_bedrijf_key, rec.prs_bedrijf_naam, rec.bes_bestelopdr_item_aantal * rec.bes_bestelopdr_item_prijs / (1 + rec.fin_btwtabelwaarde_perc / 100), ( rec.bes_bestelopdr_item_aantal * rec.bes_bestelopdr_item_prijs * rec.fin_btwtabelwaarde_perc / 100) / (1 + rec.fin_btwtabelwaarde_perc / 100), rec.fin_btwtabelwaarde_code, rec.fin_btwtabelwaarde_oms, rec.fin_btwtabelwaarde_perc, rec.fin_btwtabelwaarde_verlegd, rec.prs_kostensoort_oms, rec.prs_kostensoort_opmerking, rec.prs_kostensoort_refcode, TO_CHAR (SYSDATE, 'yyyymm'), rec.prs_leverancier_nr, rec.prs_bedrijf_email, v_pdf_naam, rec.bes_bestelopdr_item_posnr, rec.bes_bestelopdr_item_aantal); v_bestelopdr_key := rec.bes_bestelopdr_key; END LOOP; ELSE -- verwijder nog niet geexporteerde contracten van deze betalingsperiode DELETE fin_verkoopfactuur WHERE fin_verkoopfactuur_xmlnode = 'contract' AND prs_kostenplaats_nr IS NULL -- geen mutaties op contract AND fin_verkoopfactuur_c3 = DECODE(p_betaling_periode, 1, 'M', 3, 'Q', 12, 'Y', '') AND fin_verkoopfactuur_d2 IS NULL; -- Nog niet naar Exact geëxporteerd. FOR rec IN c_contract(p_betaling_periode) LOOP IF rec.cnt_contract_key <> v_contract_key THEN v_factuur_key := v_factuur_key + 1; v_factuurregel_nr := 1; INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id) VALUES (TO_CHAR (v_factuur_key)) RETURNING fin_verkoopfactuurkop_key INTO v_verkoopfactuurkop_key; v_pdf_naam := 'Factuur_' || TO_CHAR (v_factuur_key) || '_' || DBMS_RANDOM.string ('a', 32) || '.pdf'; ELSE v_factuurregel_nr := v_factuurregel_nr + 1; END IF; -- fin_verkoopfactuur_d1 = datum betaald -- bereken de periode v_begin := ADD_MONTHS (TRUNC (SYSDATE - p_antedateerdagen, 'MM'), 1); IF rec.betaling_periode = 1 THEN -- betaling per maand v_begin := ADD_MONTHS (TRUNC (SYSDATE - p_antedateerdagen, 'MM'), 1); v_eind := ADD_MONTHS (v_begin, 1) - 1; ELSIF rec.betaling_periode = 3 THEN -- betaling per kwartaal v_begin := ADD_MONTHS (TRUNC (SYSDATE - p_antedateerdagen, 'Q'), 3); v_eind := ADD_MONTHS (v_begin, 3) - 1; ELSE -- betaling per maand v_begin := ADD_MONTHS (TRUNC (SYSDATE - p_antedateerdagen, 'Y'), 12); v_eind := ADD_MONTHS (v_begin, 12) - 1; END IF; -- we gaan het contract alleen factureren als de factureringstermijn volledig binnen het contract valt. IF rec.looptijd_van < v_eind AND rec.looptijd_tot > v_begin THEN INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key, fin_verkoopfactuur_id, -- factuurnummer zoals deze naar de klant gaat fin_verkoopfactuur_datum, -- datum afgesproken met PCHE voor bestellingen is dat de sysdate fin_verkoopfactuur_omschr, -- factuurregelomschrijving is artikelregel fin_verkoopfactuur_xmlnode, -- bestelopdr fin_verkoopfactuur_refkey, -- bes_bestelopdr_key prs_bedrijf_key, -- bedrijf van de aanvrager prs_debiteur_naam, -- prs_bedrijf_naam fin_verkoopfactuur_bedrag, fin_verkoopfactuur_btw, fin_btwtabelwaarde_code, fin_btwtabelwaarde_oms, fin_btwtabelwaarde_perc, fin_btwtabelwaarde_verlegd, prs_kostensoort_refcode, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, -- prs_leverancier_nr fin_verkoopfactuur_c2, -- prs_bedrijf_email fin_verkoopfactuur_c3, -- betalingsperiode (M, Q, Y) fin_verkoopfactuur_c5, -- filenaam van de PDF fin_verkoopfactuur_c7, -- lijst met pasnummers fin_verkoopfactuur_n1, -- bestelregel volgnummer fin_verkoopfactuur_n2, -- aantal fin_verkoopfactuur_n4, -- korting betaaltermijn fin_verkoopfactuur_n5, -- korting contract fin_verkoopfactuur_d3, -- begin periode fin_verkoopfactuur_d4) -- einde periode VALUES (v_verkoopfactuurkop_key, TO_CHAR (v_factuur_key), SYSDATE, rec.abtype, 'contract', rec.cnt_contract_key, rec.prs_bedrijf_key, rec.bedrijf, rec.bedrag - rec.btw, -- netto bedrag zonder btw rec.btw, rec.fin_btwtabelwaarde_code, rec.fin_btwtabelwaarde_oms, rec.fin_btwtabelwaarde_perc, rec.fin_btwtabelwaarde_verlegd, rec.prs_kostensoort_refcode, TO_CHAR (v_begin, 'yyyymm'), rec.debiteur, rec.prs_bedrijf_email, DECODE(p_betaling_periode, 1, 'M', 3, 'Q', 12, 'Y', ''), v_pdf_naam, rec.pasnrs, v_factuurregel_nr, rec.aantal, rec.betaling_korting, rec.contract_korting, v_begin, v_eind); v_contract_key := rec.cnt_contract_key; ELSE NULL; -- Voorlopig even niets doen. -- fac.writelog (p_applname, 'E', 'Gevonden contract niet binnen facturatietermijn: ' || rec.cnt_contract_key || ' (' || rec.bedrijf || ')', ''); END IF; END LOOP; END IF; COMMIT; END; / CREATE OR REPLACE PROCEDURE pche_select_exact ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN pche_select_exact_common (p_applname, p_applrun, 0, 0); END; / CREATE OR REPLACE PROCEDURE pche_select_exact_jaar ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN pche_select_exact_common (p_applname, p_applrun, 12, 0); END; / CREATE OR REPLACE PROCEDURE pche_select_exact_kwartaal ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN pche_select_exact_common (p_applname, p_applrun, 3, 0); END; / CREATE OR REPLACE PROCEDURE pche_select_exact_maand ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN pche_select_exact_common (p_applname, p_applrun, 1, 0); END; / -- -- Export van verkoopfacturen. Dit zijn facturen die in de tabel fin_verkoopfacturen staan maar die de -- datum export fin_verkoopfactuur_d2 leeg hebben CREATE OR REPLACE VIEW pche_v_exact_verkoopgegevens ( factuur_omschrijving, referentie, fin_verkoopfactuur_key, fin_verkoopfactuur_id, fin_verkoopfactuur_c1, fin_verkoopfactuur_n1, fin_verkoopfactuur_n2, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, prs_kostensoort_refcode, fin_btwtabelwaarde_code, fin_verkoopfactuur_datum, prs_kostenplaats_nr ) AS SELECT DECODE ( fin_verkoopfactuur_xmlnode, 'bestelopdr', 'Bestelling waardekaarten', 'contract', DECODE ( prs_kostenplaats_nr, NULL, 'Ab' || TO_CHAR (fin_verkoopfactuur_d3, 'dd-mm-yy') || '/' || TO_CHAR (fin_verkoopfactuur_d4, 'dd-mm-yy'), DECODE(fin_verkoopfactuur_c4, 'Realtime abonnement', 'Rt' || TO_CHAR (fin_verkoopfactuur_d3, 'dd-mm-yy') || '/' || TO_CHAR (fin_verkoopfactuur_d4, 'dd-mm-yy'), 'Abonnement mutatie') ) ) factuur_omschrijving, DECODE ( prs_kostenplaats_nr, NULL, DECODE ( fin_verkoopfactuur_xmlnode, 'contract', 'C' || fin_verkoopfactuur_refkey, 'B' || (SELECT SUBSTR (bes_bestelopdr_id, 1, INSTR (bes_bestelopdr_id, '/') - 1) FROM bes_bestelopdr bo WHERE bo.bes_bestelopdr_key = fin_verkoopfactuur_refkey)), 'M' || prs_kostenplaats_nr) referentie, fin_verkoopfactuur_key, fin_verkoopfactuur_id, fin_verkoopfactuur_c1, -- debiteurnr fin_verkoopfactuur_n1, -- factuurregelnr fin_verkoopfactuur_n2, -- aantal fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, prs_kostensoort_refcode, fin_btwtabelwaarde_code, fin_verkoopfactuur_datum, prs_kostenplaats_nr FROM fin_verkoopfactuur v WHERE fin_verkoopfactuur_d2 IS NULL; -- Procedure om alle verkoopfacturen te exporteren naar exact. CREATE OR REPLACE PROCEDURE pche_select_exact_output (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS CURSOR c IS SELECT factuur_omschrijving, fin_verkoopfactuur_id, fin_verkoopfactuur_c1, fin_verkoopfactuur_datum, referentie, sum(fin_verkoopfactuur_bedrag) bedrag FROM pche_v_exact_verkoopgegevens GROUP BY factuur_omschrijving, fin_verkoopfactuur_id, fin_verkoopfactuur_c1, fin_verkoopfactuur_datum, referentie ORDER BY fin_verkoopfactuur_id; CURSOR c_sub (c_verkoopfactuur_id VARCHAR2) IS SELECT * FROM pche_v_exact_verkoopgegevens WHERE fin_verkoopfactuur_id = c_verkoopfactuur_id ORDER BY fin_verkoopfactuur_n1; CURSOR c_noti IS SELECT vk.fin_verkoopfactuurkop_key, vk.fin_verkoopfactuurkop_id, fin_verkoopfactuur_c2,fin_verkoopfactuur_c5 FROM fin_verkoopfactuur v, fin_verkoopfactuurkop vk WHERE v.fin_verkoopfactuurkop_key = vk.fin_verkoopfactuurkop_key AND v.fin_verkoopfactuur_d5 IS NULL GROUP BY vk.fin_verkoopfactuurkop_key, vk.fin_verkoopfactuurkop_id, fin_verkoopfactuur_c2, fin_verkoopfactuur_c5; v_bestand VARCHAR2(12); v_bedrag_txt VARCHAR2(12); v_sub_count NUMBER; BEGIN v_bestand := SUBSTR (p_applname, 1, 12); -- facturen verzenden. FOR rec IN c_noti LOOP BEGIN -- CUST01 notificatie heeft key 181 -- Datum van de notificatie wordt op middernacht gezet om er voor te zorgen dat na kantooruren de pdf generatie -- kan plaatsvinden. INSERT INTO fac_notificatie (fac_srtnotificatie_key, fac_notificatie_status, fac_notificatie_receiver_email, fac_notificatie_oms, fac_notificatie_refkey, fac_notificatie_prioriteit, fac_notificatie_attachments, fac_notificatie_datum) VALUES (181, 2, -- mail rec.fin_verkoopfactuur_c2, -- email 'Factuur parking Strijp-S', rec.fin_verkoopfactuurkop_key, 2, '/../../Fplace5i/CUST/PCHE/export/PDF/' || rec.fin_verkoopfactuur_c5, TRUNC(SYSDATE)+1); UPDATE fin_verkoopfactuur SET fin_verkoopfactuur_d5 = SYSDATE WHERE fin_verkoopfactuurkop_key = rec.fin_verkoopfactuurkop_key; EXCEPTION WHEN OTHERS THEN fac.writelog (p_applname, 'E', 'Overwachte fout bij notificeren: ' || rec.fin_verkoopfactuurkop_key || ' (' || rec.fin_verkoopfactuur_c2 || ')', ''); END; END LOOP; -- Eerst opruiming DELETE FROM imp_log WHERE imp_log_applicatie = p_applname; DELETE fac_rapport WHERE fac_rapport_node = v_bestand; -- header pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); FOR rec IN c LOOP BEGIN pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_element (v_bestand, 'Description', xml.char_to_html(SUBSTR(rec.factuur_omschrijving,1,20))); pchx.add_xml_element (v_bestand, 'Date', TO_CHAR(rec.fin_verkoopfactuur_datum, 'YYYY-MM-DD')); pchx.add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') ); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_element (v_bestand, 'Description', 'Verkoopboek'); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_element (v_bestand, 'Description', 'Omzet debiteuren'); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); v_bedrag_txt := REPLACE (TO_CHAR (rec.bedrag), ',', '.'); pchx.add_xml_element (v_bestand, 'Value', v_bedrag_txt); pchx.add_xml_row (v_bestand, ''); v_sub_count := 1; FOR rec1 IN c_sub (rec.fin_verkoopfactuur_id) LOOP BEGIN pchx.add_xml_row (v_bestand, ''); pchx.add_xml_element (v_bestand, 'Date', TO_CHAR(rec1.fin_verkoopfactuur_datum, 'YYYY-MM-DD')); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_element (v_bestand, 'Description', xml.char_to_html(SUBSTR(rec1.fin_verkoopfactuur_omschr,1,60))); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); v_bedrag_txt := REPLACE (TO_CHAR (rec1.fin_verkoopfactuur_bedrag), ',', '.'); pchx.add_xml_element (v_bestand, 'Credit', v_bedrag_txt); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); v_sub_count := v_sub_count + 1; -- markeer in de verkoopfactuuradministratie dat deze verkoopfactuur geexporteerd is naar Exact UPDATE fin_verkoopfactuur SET fin_verkoopfactuur_d2 = SYSDATE WHERE fin_verkoopfactuur_key = rec1.fin_verkoopfactuur_key; -- Zet de melding op verwerkt. Nu de factuur aangemaakt is mag hier toch niets meer aan gewijzigd worden. IF rec1.prs_kostenplaats_nr IS NOT NULL THEN MLD.setmeldingstatus (fac.safe_to_number(rec1.prs_kostenplaats_nr), 6, NULL); END IF; END; END LOOP; pchx.add_xml_row (v_bestand, ''); END; END LOOP; pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); END; / CREATE OR REPLACE VIEW pche_v_export_exact_output ( result, result_order ) AS SELECT fac_rapport_regel, fac_rapport_volgnr FROM fac_rapport WHERE fac_rapport_node = 'EXACT_OUTPUT'; CREATE OR REPLACE PROCEDURE pche_select_annuleer_factuur ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN -- We ondersteunen alleen het annuleren van periodieke facturen op -- contracten. Dus maand, kwartaal of jaarfacturen. DELETE fin_verkoopfactuur WHERE fin_verkoopfactuur_key IN (SELECT fin_verkoopfactuur_key FROM fac_notificatie n, fin_verkoopfactuur v WHERE n.fac_notificatie_refkey = fin_verkoopfactuurkop_key AND fin_verkoopfactuur_xmlnode = 'contract' AND prs_kostenplaats_nr IS NULL AND fac_srtnotificatie_key = 181); -- srtnotificatie 181 = CUST01 DELETE fac_notificatie n WHERE fac_srtnotificatie_key = 181 AND NOT EXISTS (SELECT fin_verkoopfactuur_key FROM fin_verkoopfactuur WHERE n.fac_notificatie_refkey = fin_verkoopfactuurkop_key); DELETE fin_verkoopfactuurkop vk WHERE NOT EXISTS (SELECT fin_verkoopfactuurkop_key FROM fin_verkoopfactuur v WHERE vk.fin_verkoopfactuurkop_key = v.fin_verkoopfactuurkop_key); END; / CREATE OR REPLACE PROCEDURE pche_select_exact_debtor (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS CURSOR c IS select * from prs_bedrijf where prs_leverancier_nr is not null; v_bestand VARCHAR2(12); v_sub_count NUMBER; BEGIN v_bestand := SUBSTR (p_applname, 1, 12); -- Eerst opruiming DELETE FROM imp_log WHERE imp_log_applicatie = p_applname; DELETE fac_rapport WHERE fac_rapport_node = v_bestand; -- header pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); FOR rec IN c LOOP BEGIN pchx.add_xml_row (v_bestand, ''); pchx.add_xml_element (v_bestand, 'Name', rec.prs_bedrijf_naam); pchx.add_xml_element (v_bestand, 'Phone', rec.prs_bedrijf_telefoon); pchx.add_xml_element (v_bestand, 'Fax', rec.prs_bedrijf_fax); pchx.add_xml_element (v_bestand, 'Email', rec.prs_bedrijf_email); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, '
'); pchx.add_xml_element (v_bestand, 'AddressLine1', rec.prs_bedrijf_bezoek_adres); pchx.add_xml_element (v_bestand, 'PostalCode', rec.prs_bedrijf_bezoek_postcode); pchx.add_xml_element (v_bestand, 'City', rec.prs_bedrijf_bezoek_plaats); pchx.add_xml_row (v_bestand, '
'); pchx.add_xml_row (v_bestand, '
'); pchx.add_xml_element (v_bestand, 'AddressLine1', rec.prs_bedrijf_post_adres); pchx.add_xml_element (v_bestand, 'PostalCode', rec.prs_bedrijf_post_postcode); pchx.add_xml_element (v_bestand, 'City', rec.prs_bedrijf_post_plaats); pchx.add_xml_row (v_bestand, '
'); pchx.add_xml_row (v_bestand, '
'); pchx.add_xml_row (v_bestand, '
'); pchx.add_xml_row (v_bestand, '
'); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_element (v_bestand, 'Description', 'Exoloitatie debiteuren Strijp S'); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_element (v_bestand, 'Description', 'Exoloitatie Strijp S'); pchx.add_xml_row (v_bestand, ''); pchx.add_xml_row (v_bestand, '
'); END; END LOOP; pchx.add_xml_row (v_bestand, '
'); pchx.add_xml_row (v_bestand, '
'); END; / CREATE OR REPLACE VIEW pche_v_export_exact_debtor ( result, result_order ) AS SELECT fac_rapport_regel, fac_rapport_volgnr FROM fac_rapport WHERE fac_rapport_node = 'EXACT_DEBTOR'; -- export om bat file aan te maken die de PDF bestanden genereerd. Deze export moet voor middernacht gedraaid worden omdat daarna -- de notificaties vanuit de putorders verstuurd worden. CREATE OR REPLACE VIEW pche_v_export_pdf_att ( result, result_order ) AS SELECT DISTINCT 'call genereer1fin_vk_pdf.bat ' || v.fin_verkoopfactuurkop_key || ' ' || vk.fin_verkoopfactuur_c5, v.fin_verkoopfactuurkop_key FROM fin_verkoopfactuurkop v, fin_verkoopfactuur vk, fac_notificatie n WHERE n.fac_srtnotificatie_key = 181 -- notificatie verkoopfacturen AND vk.fin_verkoopfactuurkop_key = v.fin_verkoopfactuurkop_key AND n.fac_notificatie_refkey = vk.fin_verkoopfactuurkop_key; -- view om contractinformatie in de portal te laten zien CREATE OR REPLACE VIEW pche_v_mijn_contracten ( prs_perslid_key, contract, looptijd_van, looptijd_tot, dgn5, dgn7, nacht, nachtweekend, bultje, betaling, betaling_korting, betaling_periode, p_dgn5, p_dgn7, p_nacht, p_nachtweekend, p_bultje, contract_korting, aantal_passen, pasnrs ) AS SELECT prs_perslid_key, contract, looptijd_van, looptijd_tot, dgn5, dgn7, nacht, nachtweekend, bultje, betaling, betaling_korting, betaling_periode, p_dgn5, p_dgn7, p_nacht, p_nachtweekend, p_bultje, contract_korting, aantal_passen, pn.pasnrs FROM pche_v_contract_gegevens cg, prs_perslid p, prs_v_afdeling a, pche_v_pasnrs pn WHERE p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = cg.prs_bedrijf_key AND cg.cnt_contract_key = pn.cnt_contract_key; CREATE OR REPLACE VIEW pche_v_verkoopfactuur AS SELECT fin_verkoopfactuur_key, fin_verkoopfactuur_aanmaak, fin_verkoopfactuur_id, fin_verkoopfactuur_datum, fin_verkoopfactuur_omschr, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, prs_kostenplaats_nr mutatie_ref, prs_kostensoort_refcode grootboeknr, prs_debiteur_naam, prs_bedrijf_key, fin_verkoopfactuur_bedrag, fin_verkoopfactuur_btw, fin_btwtabelwaarde_code, fin_btwtabelwaarde_oms, fin_btwtabelwaarde_perc, fin_verkoopfactuur_maand, fin_verkoopfactuur_n1 regel_volgnr, fin_verkoopfactuur_n2 aantal, fin_verkoopfactuur_n3 betaald_bedrag, fin_verkoopfactuur_n4 korting_betalingstermijn, fin_verkoopfactuur_n5 korting_contract, fin_verkoopfactuur_c1 debiteurnummer, fin_verkoopfactuur_c2 email, fin_verkoopfactuur_c3 periode, fin_verkoopfactuur_c7 pasnummers, fin_verkoopfactuur_d1 volledig_betaald, fin_verkoopfactuur_d2 factuur_naar_exact, fin_verkoopfactuur_d3 van, fin_verkoopfactuur_d4 tot, fin_verkoopfactuur_d5 factuur_naar_deb, '' || 'pdf' || '' html_pdf, DECODE(fin_verkoopfactuur_d1, NULL, 'NEE', 'JA') volledig_betaald_jn FROM fin_verkoopfactuur; -- Toon de facturen van mijn bedrijf. Facturen die per ongelijk op nog niet gekoppelde personen worden -- geboekt (afdeling_key = 21) worden uitgesloten. CREATE OR REPLACE VIEW pche_my_v_verkoopfactuur AS SELECT SYSDATE - fin_verkoopfactuur_aanmaak hide_f_volgorde, p.prs_perslid_key fclt_3d_user_key, fin_verkoopfactuur_key, fin_verkoopfactuur_aanmaak, fin_verkoopfactuur_id, fin_verkoopfactuur_datum, fin_verkoopfactuur_omschr, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, prs_kostenplaats_nr mutatie_ref, prs_kostensoort_refcode grootboeknr, prs_debiteur_naam, v.prs_bedrijf_key, fin_verkoopfactuur_bedrag, fin_verkoopfactuur_btw, fin_btwtabelwaarde_code, fin_btwtabelwaarde_oms, fin_btwtabelwaarde_perc, fin_verkoopfactuur_maand, fin_verkoopfactuur_n1 regel_volgnr, fin_verkoopfactuur_n2 aantal, fin_verkoopfactuur_n3 betaald_bedrag, fin_verkoopfactuur_n4 korting_betalingstermijn, fin_verkoopfactuur_n5 korting_contract, fin_verkoopfactuur_c1 debiteurnummer, fin_verkoopfactuur_c2 email, fin_verkoopfactuur_c3 periode, fin_verkoopfactuur_c7 pasnummers, fin_verkoopfactuur_d1 volledig_betaald, fin_verkoopfactuur_d2 factuur_naar_exact, fin_verkoopfactuur_d3 van, fin_verkoopfactuur_d4 tot, fin_verkoopfactuur_d5 factuur_naar_deb, '' || 'pdf' || '' html_pdf FROM fin_verkoopfactuur v, prs_afdeling a, prs_perslid p WHERE v.prs_bedrijf_key = a.prs_bedrijf_key AND a.prs_afdeling_key = p.prs_afdeling_key AND fin_verkoopfactuur_maand > to_char(sysdate, 'yyyy') -1 || '01' -- We tonen allen de facturen van het lopende en vorige jaar, dit stond eerst precies verkeerd. AND a.prs_afdeling_key <> 21; -- We gaan op de 5e januari van elk jaar de pdf bestanden archiveren. CREATE OR REPLACE VIEW pche_v_export_backup_pdf ( result, result_order ) AS SELECT DISTINCT 'xcopy "' || fin_verkoopfactuur_c5 || '" "backup\' || SUBSTR (fin_verkoopfactuur_maand, 1, 4) || '\' || REGEXP_REPLACE (prs_debiteur_naam, '[^A-Za-z0-9]', '_') || '\' || TO_CHAR (fin_verkoopfactuur_d3, 'yyyymmdd') || '\"' || CHR (13) || CHR (10) || 'del /Q ' || fin_verkoopfactuur_c5, fin_verkoopfactuur_id FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_maand < TO_CHAR (SYSDATE, 'yyyy') - 1 || '01' AND TO_CHAR (SYSDATE, 'mmyy') = '0105'; CREATE OR REPLACE PROCEDURE pche_import_betaling (p_import_key IN NUMBER) AS CURSOR c_imp IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; CURSOR c_deb IS SELECT b.*, v.fin_verkoopfactuur_c1 FROM pche_imp_betaling b, fin_verkoopfactuur v WHERE b.fin_verkoopfactuur_id = v.fin_verkoopfactuur_id(+) AND b.fac_import_key = p_import_key AND COALESCE (prs_leverancier_nr, 'a') <> COALESCE (fin_verkoopfactuur_c1, 'b'); CURSOR c_bed IS SELECT * FROM ( SELECT fac_imp_file_index, b.fin_verkoopfactuur_id, b.fin_verkoopfactuur_bedrag b_bedrag, SUM(v.fin_verkoopfactuur_bedrag + v.fin_verkoopfactuur_btw) - COALESCE (v.fin_verkoopfactuur_n3, 0) f_bedrag FROM pche_imp_betaling b, fin_verkoopfactuur v WHERE b.fin_verkoopfactuur_id = v.fin_verkoopfactuur_id(+) AND b.fac_import_key = p_import_key GROUP BY fac_imp_file_index, b.fin_verkoopfactuur_id, b.fin_verkoopfactuur_bedrag, v.fin_verkoopfactuur_n3) WHERE ABS (f_bedrag - b_bedrag) > 0.1; v_newline VARCHAR2 (1000); v_aanduiding VARCHAR2 (1000); -- Import line v_field VARCHAR2 (100); -- Import field v_fielddelimitor VARCHAR2 (1); -- Field seperator v_errormsg VARCHAR (200); v_errorhint VARCHAR (200); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_skipfield VARCHAR2 (100); v_header_found BOOLEAN; v_log_omschrijving VARCHAR2 (1000); -- De importvelden v_verkoopfactuur_betaaldatum DATE; v_verkoopfactuur_betaal_txt VARCHAR2 (100); v_verkoopfactuur_id VARCHAR2 (100); -- VARCHAR2(30); v_verkoopfactuur_bedrag NUMBER (11, 2); v_verkoopfactuur_bedrag_txt VARCHAR2 (100); v_leverancier_nr VARCHAR2 (100); -- VARCHAR2(50); v_debiteur_naam VARCHAR2 (100); -- VARCHAR2(60), PROCEDURE appendlog (p_log IN OUT VARCHAR2, p_append IN VARCHAR2) IS BEGIN IF p_log IS NOT NULL THEN p_log := p_log || ' - ' || p_append; ELSE p_log := p_append; END IF; END; BEGIN -- Init v_header_found := FALSE; v_fielddelimitor := ';'; -- verwijder alle tijdelijke records. DELETE pche_imp_betaling WHERE fac_import_verwerkt IS NULL; FOR rec IN c_imp LOOP BEGIN v_newline := rec.fac_imp_file_line; v_aanduiding := v_newline; v_log_omschrijving := ''; IF SUBSTR (v_newline, 1, 3) = '?' THEN -- EF BB BF aangetroffen fac.imp_writelog (p_import_key, 'W', 'Byte Order Mark aangetroffen', 'Bestand heeft onbehandeld UTF-8 formaat.'); v_newline := SUBSTR (v_newline, 4); END IF; fac.imp_getfield (v_newline, v_fielddelimitor, v_verkoopfactuur_betaal_txt); fac.imp_getfield (v_newline, v_fielddelimitor, v_verkoopfactuur_id); fac.imp_getfield (v_newline, v_fielddelimitor, v_verkoopfactuur_bedrag_txt); fac.imp_getfield (v_newline, v_fielddelimitor, v_leverancier_nr); fac.imp_getfield (v_newline, v_fielddelimitor, v_debiteur_naam); -- Skip until a valid header is found IF UPPER (v_verkoopfactuur_betaal_txt) = 'DATUM' AND UPPER (v_verkoopfactuur_id) = 'ONZE REF.' AND UPPER (v_verkoopfactuur_bedrag_txt) = 'ONTVANGST' AND UPPER (v_leverancier_nr) = 'DEBITEUR' AND UPPER (v_debiteur_naam) = 'DEBITEUR: NAAM' THEN -- Sla de kopregel over. v_header_found := TRUE; ELSIF (v_header_found AND v_verkoopfactuur_betaal_txt IS NOT NULL) THEN v_verkoopfactuur_betaaldatum := fac.safe_to_date (v_verkoopfactuur_betaal_txt, 'dd-mm-yyyy'); IF v_verkoopfactuur_betaaldatum IS NULL THEN appendlog ( v_log_omschrijving, 'Datumformaat niet correct: ' || v_verkoopfactuur_betaal_txt); END IF; v_verkoopfactuur_bedrag := fac.safe_to_number(REPLACE ( REPLACE (v_verkoopfactuur_bedrag_txt, '.'), ',', '.')); IF v_verkoopfactuur_bedrag IS NULL THEN appendlog ( v_log_omschrijving, 'Datumformaat niet correct: ' || v_verkoopfactuur_bedrag_txt); END IF; INSERT INTO pche_imp_betaling (fin_verkoopfactuur_betaaldatum, fin_verkoopfactuur_id, fin_verkoopfactuur_bedrag, prs_leverancier_nr, prs_debiteur_naam, fac_import_key, imp_log_status, imp_log_omschrijving, fac_imp_file_index) VALUES (v_verkoopfactuur_betaaldatum, TRIM (v_verkoopfactuur_id), v_verkoopfactuur_bedrag, TRIM (v_leverancier_nr), TRIM (v_debiteur_naam), p_import_key, DECODE (v_log_omschrijving, NULL, NULL, 'E'), v_log_omschrijving, rec.fac_imp_file_index); END IF; IF v_log_omschrijving IS NOT NULL THEN fac.imp_writelog (p_import_key, 'E', v_log_omschrijving, ''); END IF; COMMIT; END; END LOOP; IF NOT v_header_found THEN fac.imp_writelog (p_import_key, 'E', 'Geen geldige header aangetroffen', 'Bestand is geen geldig betaling importbestand.'); END IF; FOR rec IN c_deb LOOP BEGIN fac.imp_writelog ( p_import_key, 'W', 'Regel:' || rec.fac_imp_file_index || ' [' || rec.fin_verkoopfactuur_id || '] Afwijkend debiteurnummer gevonden: Bestand: ' || rec.prs_leverancier_nr || ' Factuur:' || rec.fin_verkoopfactuur_c1, '.'); END; END LOOP; FOR rec IN c_bed LOOP BEGIN fac.imp_writelog ( p_import_key, 'W', 'Regel:' || rec.fac_imp_file_index || ' [' || rec.fin_verkoopfactuur_id || '] Afwijkend bedrag gevonden: Bestand: ' || rec.b_bedrag || ' Factuur:' || rec.f_bedrag, '.'); END; END LOOP; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), v_aanduiding); END; / CREATE OR REPLACE PROCEDURE pche_update_betaling (p_import_key IN NUMBER) AS CURSOR c_imp IS SELECT * FROM pche_imp_betaling WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; v_errormsg VARCHAR (200); v_errorhint VARCHAR (200); v_aanduiding VARCHAR2(1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_factuur_bedrag NUMBER(11,2); v_factuur_betaald NUMBER(11,2); BEGIN -- verwijder alle tijdelijke records. DELETE pche_imp_betaling WHERE fac_import_verwerkt IS NULL AND fac_import_key <> p_import_key; FOR rec IN c_imp LOOP BEGIN v_aanduiding := 'Regel:' || rec.fac_imp_file_index; IF COALESCE(rec.imp_log_status, 'x') <> 'E' THEN -- verwerk de betaling in de verkoopfacturen UPDATE fin_verkoopfactuur SET fin_verkoopfactuur_n3 = COALESCE(fin_verkoopfactuur_n3,0) + rec.fin_verkoopfactuur_bedrag WHERE fin_verkoopfactuur_id = rec.fin_verkoopfactuur_id; SELECT SUM(COALESCE(fin_verkoopfactuur_bedrag,0) + COALESCE(fin_verkoopfactuur_btw,0)), fin_verkoopfactuur_n3 INTO v_factuur_bedrag, v_factuur_betaald FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_id = rec.fin_verkoopfactuur_id GROUP BY fin_verkoopfactuur_n3; IF v_factuur_bedrag - v_factuur_betaald < 0.1 THEN UPDATE fin_verkoopfactuur SET fin_verkoopfactuur_d1 = rec.fin_verkoopfactuur_betaaldatum WHERE fin_verkoopfactuur_id = rec.fin_verkoopfactuur_id; END IF; END IF; UPDATE pche_imp_betaling SET fac_import_verwerkt = SYSDATE WHERE fac_import_key = p_import_key and fac_imp_file_index = rec.fac_imp_file_index; END; END LOOP; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), v_aanduiding); END; / CREATE OR REPLACE VIEW pche_v_rap_cnt_obj_geb AS SELECT c.cnt_contract_key, cnt_contract_nummer_intern, cnt_contract_omschrijving, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, prs_bedrijf_naam, prs_perslid_naam_full contractbeheerder, ins_discipline_omschrijving contractsoort, cnt_betaling, cnt_7_dagen, cnt_5_werkdag, cnt_nacht_weekend, cnt_strijpsbultje, prs_gebouw, DECODE (prs_bewoner, 1, ' Ja', 'Nee') prs_bewoner, prs_kpn, afw_mail_fact, ins_deel_key, ins_srtdeel_omschrijving objectsoort, ins_deel_opmerking, ins_deel_omschrijving, ins_naam, ins_telefoonnummer, ins_kenteken FROM (SELECT cnt_contract_key, cnt_contract_nummer, cnt_contract_nummer_intern, cnt_contract_omschrijving, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, b.prs_bedrijf_naam, pf.prs_perslid_naam_full, ins_discipline_omschrijving, (SELECT fac_usrdata_omschr FROM cnt_kenmerkcontract ck, fac_usrdata ud WHERE ck.cnt_contract_key = c.cnt_contract_key AND ud.fac_usrtab_key = 3 AND fac.safe_to_number ( cnt_kenmerkcontract_waarde) = fac_usrdata_key AND ck.cnt_kenmerk_key IN (5, 22)) cnt_betaling, (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract ck WHERE ck.cnt_contract_key = c.cnt_contract_key AND ck.cnt_kenmerk_key IN (2, 21)) cnt_7_dagen, (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract ck WHERE ck.cnt_contract_key = c.cnt_contract_key AND ck.cnt_kenmerk_key = 1) cnt_5_werkdag, (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract ck WHERE ck.cnt_contract_key = c.cnt_contract_key AND ck.cnt_kenmerk_key = 4) cnt_nacht_weekend, (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract ck WHERE ck.cnt_contract_key = c.cnt_contract_key AND ck.cnt_kenmerk_key = 41) cnt_strijpsbultje, (SELECT ud.fac_usrdata_omschr FROM prs_kenmerklink pk, fac_usrdata ud WHERE prs_kenmerklink_niveau = 'B' AND pk.prs_kenmerk_key = 1040 AND ud.fac_usrtab_key = 61 AND pk.prs_link_key = b.prs_bedrijf_key AND fac.safe_to_number ( pk.prs_kenmerklink_waarde) = ud.fac_usrdata_key) prs_gebouw, (SELECT pk.prs_kenmerklink_waarde FROM prs_kenmerklink pk WHERE pk.prs_link_key = b.prs_bedrijf_key AND prs_kenmerklink_niveau = 'B' AND pk.prs_kenmerk_key = 1000) prs_bewoner, (SELECT pk.prs_kenmerklink_waarde FROM prs_kenmerklink pk WHERE pk.prs_link_key = b.prs_bedrijf_key AND prs_kenmerklink_niveau = 'B' AND pk.prs_kenmerk_key = 1060) prs_kpn, (SELECT pk.prs_kenmerklink_waarde FROM prs_kenmerklink pk WHERE pk.prs_link_key = b.prs_bedrijf_key AND prs_kenmerklink_niveau = 'B' AND pk.prs_kenmerk_key = 1020) afw_mail_fact FROM cnt_v_aanwezigcontract c, cnt_discipline cd, prs_v_perslid_fullnames pf, prs_bedrijf b WHERE c.ins_discipline_key = cd.ins_discipline_key AND c.prs_perslid_key_beh = pf.prs_perslid_key AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key) c LEFT OUTER JOIN (SELECT co.cnt_contract_key, ins_deel_key, sd.ins_srtdeel_omschrijving, ins_deel_opmerking, ins_deel_omschrijving, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel WHERE ins_deel_key = d.ins_deel_key AND ins_kenmerk_key = 21) ins_naam, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel WHERE ins_deel_key = d.ins_deel_key AND ins_kenmerk_key = 22) ins_telefoonnummer, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel WHERE ins_deel_key = d.ins_deel_key AND ins_kenmerk_key = 1) ins_kenteken FROM cnt_contract_object co, ins_deel d, ins_srtdeel sd WHERE cnt_contract_object_verwijder IS NULL AND d.ins_deel_verwijder IS NULL AND co.cnt_ins_deel_key = d.ins_deel_key AND d.ins_srtdeel_key = sd.ins_srtdeel_key) co ON c.cnt_contract_key = co.cnt_contract_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