2180 lines
89 KiB
SQL
2180 lines
89 KiB
SQL
--
|
||
-- $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<67>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<67>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<67>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,
|
||
'<?xml version="1.0" encoding="windows-1252"?>');
|
||
pchx.add_xml_row (v_bestand, '<eExact>');
|
||
pchx.add_xml_row (v_bestand, '<GLEntries>');
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
pchx.add_xml_row (v_bestand, '<GLEntry status="E" entry="' || rec.fin_verkoopfactuur_id || '">');
|
||
pchx.add_xml_row (v_bestand, '<Division code="250"/>');
|
||
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, '<Journal type="V" code="57">');
|
||
pchx.add_xml_element (v_bestand, 'Description', 'Verkoopboek');
|
||
pchx.add_xml_row (v_bestand, '<GLAccount code="110003" type="B" side="D" subtype="D">');
|
||
pchx.add_xml_element (v_bestand, 'Description', 'Omzet debiteuren');
|
||
pchx.add_xml_row (v_bestand, '</GLAccount>');
|
||
pchx.add_xml_row (v_bestand, '</Journal>');
|
||
pchx.add_xml_row (v_bestand, '<Costcenter code="1260"/>');
|
||
pchx.add_xml_row (v_bestand, '<Amount>');
|
||
pchx.add_xml_row (v_bestand, '<Currency code="EUR"/>');
|
||
v_bedrag_txt := REPLACE (TO_CHAR (rec.bedrag), ',', '.');
|
||
pchx.add_xml_element (v_bestand, 'Value', v_bedrag_txt);
|
||
pchx.add_xml_row (v_bestand, '</Amount>');
|
||
v_sub_count := 1;
|
||
FOR rec1 IN c_sub (rec.fin_verkoopfactuur_id)
|
||
LOOP
|
||
BEGIN
|
||
pchx.add_xml_row (v_bestand, '<FinEntryLine number="' || v_sub_count || '" subtype="K" type="N">');
|
||
pchx.add_xml_element (v_bestand, 'Date', TO_CHAR(rec1.fin_verkoopfactuur_datum, 'YYYY-MM-DD'));
|
||
pchx.add_xml_row (v_bestand, '<GLAccount code="' || xml.char_to_html(rec1.prs_kostensoort_refcode) || '"/>');
|
||
pchx.add_xml_element (v_bestand,
|
||
'Description',
|
||
xml.char_to_html(SUBSTR(rec1.fin_verkoopfactuur_omschr,1,60)));
|
||
pchx.add_xml_row (v_bestand, '<Costcenter code="1260"/>');
|
||
pchx.add_xml_row (v_bestand, '<Debtor code="' || xml.char_to_html(rec1.fin_verkoopfactuur_c1) || '"/>');
|
||
pchx.add_xml_row (v_bestand, '<Item code="' || xml.char_to_html(rec1.prs_kostensoort_refcode) || '"/>');
|
||
pchx.add_xml_row (v_bestand, '<Amount>');
|
||
pchx.add_xml_row (v_bestand, '<Currency code="EUR"/>');
|
||
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, '<VAT code="' || xml.char_to_html(rec1.fin_btwtabelwaarde_code) || '"/>');
|
||
pchx.add_xml_row (v_bestand, '</Amount>');
|
||
pchx.add_xml_row (v_bestand, '</FinEntryLine>');
|
||
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, '</GLEntry>');
|
||
END;
|
||
END LOOP;
|
||
|
||
pchx.add_xml_row (v_bestand, '</GLEntries>');
|
||
pchx.add_xml_row (v_bestand, '</eExact>');
|
||
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,
|
||
'<?xml version="1.0" encoding="windows-1252"?>');
|
||
pchx.add_xml_row (v_bestand, '<eExact>');
|
||
pchx.add_xml_row (v_bestand, '<Accounts>');
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
pchx.add_xml_row (v_bestand, '<Account code=" ' || rec.prs_leverancier_nr || '" status="A" type="C">');
|
||
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, '<Contacts>');
|
||
pchx.add_xml_row (v_bestand, '<Contact default="1" gender="M" status="A">');
|
||
pchx.add_xml_row (v_bestand, '<Addresses>');
|
||
pchx.add_xml_row (v_bestand, '<Address type="D" desc="">');
|
||
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, '</Address>');
|
||
pchx.add_xml_row (v_bestand, '<Address type="I" desc="">');
|
||
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, '</Address>');
|
||
pchx.add_xml_row (v_bestand, '</Addresses>');
|
||
pchx.add_xml_row (v_bestand, '</Contact>');
|
||
pchx.add_xml_row (v_bestand, '</Contacts>');
|
||
pchx.add_xml_row (v_bestand, '<Debtor number="300657" code="' || rec.prs_leverancier_nr || '">');
|
||
pchx.add_xml_row (v_bestand, '<GLCentralization code=" 110003" side="D" type="B" subtype="D">');
|
||
pchx.add_xml_element (v_bestand, 'Description', 'Exoloitatie debiteuren Strijp S');
|
||
pchx.add_xml_row (v_bestand, '</GLCentralization>');
|
||
pchx.add_xml_row (v_bestand, '</Debtor>');
|
||
pchx.add_xml_row (v_bestand, '<PaymentCondition code="00" type="9" type1="1" surcharge="B" method="B" invoicing="B" installments="0"/>');
|
||
pchx.add_xml_row (v_bestand, '<AccountCategory code="STR">');
|
||
pchx.add_xml_element (v_bestand, 'Description', 'Exoloitatie Strijp S');
|
||
pchx.add_xml_row (v_bestand, '</AccountCategory>');
|
||
pchx.add_xml_row (v_bestand, '</Account>');
|
||
END;
|
||
END LOOP;
|
||
pchx.add_xml_row (v_bestand, '</Accounts>');
|
||
pchx.add_xml_row (v_bestand, '</eExact>');
|
||
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,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("'
|
||
|| 'cust/pche/export/pdf/' || fin_verkoopfactuur_c5
|
||
|| '")''>'
|
||
|| 'pdf'
|
||
|| '</a>'
|
||
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,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("'
|
||
|| 'cust/pche/export/pdf/' || fin_verkoopfactuur_c5
|
||
|| '")''>'
|
||
|| 'pdf'
|
||
|| '</a>'
|
||
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 |