WZUV#41726 Fase 2: Exact koppeling en factuurimport Liander

svn path=/Customer/trunk/; revision=36186
This commit is contained in:
Suzan Wiegerinck
2017-12-01 16:12:44 +00:00
parent 98dd51b652
commit d6adc3cda2

View File

@@ -913,6 +913,771 @@ AS
OR aog.alg_ruimte_key = ar.alg_ruimte_key)
AND kpl_cat.alg_onrgoed_key(+) = aog.alg_gebouw_key;
CREATE OR REPLACE PROCEDURE wzuv_import_fin_fact_liander (
p_import_key IN NUMBER)
AS
v_seq_of_columns VARCHAR (50);
BEGIN
-- In de xsl factuurnr(1);factuurdatum(2);opdrachtnr(3);omschrijving(4);bedrag(5);btwperc(6);btwbedrag(7);pdf(8)
--hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;14;15;16;7;8;9;0'
v_seq_of_columns := '0;1;2;0;0;0;3;0;4;6;5;0;0;0;0;7;0;0;0;0';
-- Variabelelijst
-- v_leveranciernr: 1
-- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet")
-- v_factuurdatum: 3
-- v_ordernr: 4 (VERPLICHT, anders is status van factuur "Incompleet")
-- v_locatie: 5
-- v_afleverdatum: 6
-- v_omschrijving: 7
-- v_aantal: 8
-- v_kostprijs: 9 (VERPLICHT, anders is status van factuur "Incompleet")
-- v_btw_bedrag: 10 (VERPLICHT, of anders veld 11, anders is status van factuur "Incompleet")
-- v_btw: 11 (VERPLICHT, of anders veld 10, anders is status van factuur "Incompleet")
-- v_docid: 12
-- v_debiteur_nr: 13
-- v_opmerking: 14
-- v_btw_verlegd: 15 (VERPLICHT, Ja/Nee/<leeg> waarbij leeg gelijk is aan Nee. Andere waarden leidt tot "Incompleet")
-- v_kenmerk1: 16
-- v_kenmerk1: 17
-- v_kenmerk1: 18
-- v_kenmerk1: 19
-- v_kenmerk1: 20
-- v_boekmaand: 21
fac_import_factuur_body (p_import_key, v_seq_of_columns);
-- Voeg prefix C toe aan het contractnummer van het actieve contract van Liander
UPDATE fac_imp_factuur f
SET f.ordernr =
(SELECT DISTINCT 'C' || c.cnt_contract_key
FROM cnt_contract c, prs_bedrijf b
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_naam_upper LIKE '%LIANDER%'
AND c.cnt_contract_looptijd_van <
fac.safe_to_date (f.factuurdatum, 'yyyy-mm-dd')
AND C.CNT_CONTRACT_LOOPTIJD_TOT >
fac.safe_to_date (f.factuurdatum, 'yyyy-mm-dd')
AND fac_import_key = p_import_key
AND f.ordernr IS NULL);
-- de boekmaand is de maand waarover de factuur betrekking heeft
-- het kenmerk veld bevat de begindatum van deze maand dus daar extraheren we het jaar en de maand uit
UPDATE fac_imp_factuur f
SET f.boekmaand = SUBSTR (kenmerk1, 1, 7)
WHERE kenmerk1 IS NOT NULL;
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE wzuv_update_fin_fact_liander (
p_import_key IN NUMBER)
AS
BEGIN
-- Standaard FCLT verwerk import facturen
fac_update_factuur (p_import_key);
END;
/
-- ==========================================
-- VANAF HIER ALLE VIEWS EN PROCS VOOR DE EXACT KOPPELING
-- ==========================================
-- Kenmerk 1 is bijlage
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_BESTAND
(
FIN_FACTUUR_KEY,
FIN_FACTUUR_BESTAND
)
AS
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur kf
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL AND fin_kenmerk_key = 1;
-- Kenmerk 21 is betaalreferentie
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_BETAALREF
(
FIN_FACTUUR_KEY,
FIN_FACTUUR_BETAALREF
)
AS
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur kf
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL AND fin_kenmerk_key = 21;
-- Kenmerk 22 is omschrijving kopregel
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_OMSCHR_KOPREGEL
(
FIN_FACTUUR_KEY,
FIN_FACTUUR_OMSCHR_KOPREGEL
)
AS
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur kf
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL AND fin_kenmerk_key = 22;
-- Kenmerk 23 is omschrijving datum factuurregel
CREATE OR REPLACE VIEW WZUV_V_FACTUURREGEL_DATUM
(
FIN_FACTUURREGEL_KEY,
FIN_FACTUURREGEL_DATUM
)
AS
SELECT kfr.fin_factuurregel_key, kfr.fin_kenmerkfactregel_waarde
FROM fin_kenmerkfactregel kfr
WHERE kfr.fin_kenmerkfactregel_verwijder IS NULL AND fin_kenmerk_key = 23;
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_BES_GEGEVENS
(
FIN_FACTUUR_KEY,
OPDRACHT_ID,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_NR,
FIN_FACTUUR_BESTAND,
PRS_BEDRIJF_KEY,
FIN_FACTUURREGEL_TOTAAL,
FIN_FACTUURREGEL_BTW,
FIN_FACTUURREGEL_BTW_PERC,
FIN_BTWTABELWAARDE_BTWCODE,
FIN_FACTUURREGEL_NR,
FIN_FACTUURREGEL_OMSCHRIJVING,
FIN_FACTUURREGEL_DATUM,
FIN_FACTUUR_DEBITEUR_NR,
FIN_FACTUUR_BETAALREF,
FIN_FACTUUR_OMSCHR_KOPREGEL,
PROJECT_NUMMER,
PRS_KOSTENSOORT_OMS,
PRS_KOSTENSOORT_DOORBELASTEN,
PRS_KOSTENPLAATS_NR,
BES_OPDR_KEY,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
FIN_FACTUUR_STATUSES_KEY
)
AS
SELECT DISTINCT
f.fin_factuur_key,
TO_CHAR (bo.bes_bestelopdr_id) opdracht_id,
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_nr,
fb.fin_factuur_bestand,
b.prs_bedrijf_key,
fr.fin_factuurregel_totaal,
fr.fin_factuurregel_btw,
btw.fin_btwtabelwaarde_perc,
btw.fin_btwtabelwaarde_code,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_omschrijving,
frd.fin_factuurregel_datum,
f.fin_factuur_debiteur_nr,
fbr.fin_factuur_betaalref,
fok.fin_factuur_omschr_kopregel,
NULL projectnummer,
COALESCE (ks_regel.prs_kostensoort_oms, ks.prs_kostensoort_oms),
DECODE (ks_regel.prs_kostensoort_oms,
NULL, ks.prs_kostensoort_doorbelasten,
ks_regel.prs_kostensoort_doorbelasten),
kp.prs_kostenplaats_nr,
bo.bes_bestelopdr_key bes_opdr_key,
NULL mld_opdr_key,
NULL cnt_contract_key,
f.fin_factuur_statuses_key
FROM bes_bestelopdr bo,
prs_bedrijf b,
bes_bestelling bes,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
fin_factuur f,
wzuv_v_factuur_bestand fb,
wzuv_v_factuur_betaalref fbr,
wzuv_v_factuur_omschr_kopregel fok,
fin_factuurregel fr,
wzuv_v_factuurregel_datum frd,
fin_btwtabelwaarde btw,
prs_kostensoort ks,
prs_kostensoort ks_regel,
prs_kostenplaats kp
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes.bes_bestelling_key = bi.bes_bestelling_key
AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_factuurregel_key = frd.fin_factuurregel_key(+)
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.fin_factuur_key = fb.fin_factuur_key(+)
AND f.fin_factuur_key = fbr.fin_factuur_key(+)
AND f.fin_factuur_key = fok.fin_factuur_key(+);
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_MLDCNT_GEGEVENS
(
FIN_FACTUUR_KEY,
OPDRACHT_ID,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_NR,
FIN_FACTUUR_BESTAND,
PRS_BEDRIJF_KEY,
FIN_FACTUURREGEL_TOTAAL,
FIN_FACTUURREGEL_BTW,
FIN_FACTUURREGEL_BTW_PERC,
FIN_BTWTABELWAARDE_BTWCODE,
FIN_FACTUURREGEL_NR,
FIN_FACTUURREGEL_OMSCHRIJVING,
FIN_FACTUURREGEL_DATUM,
FIN_FACTUUR_DEBITEUR_NR,
FIN_FACTUUR_BETAALREF,
FIN_FACTUUR_OMSCHR_KOPREGEL,
PROJECT_NUMMER,
PRS_KOSTENSOORT_OMS,
PRS_KOSTENSOORT_DOORBELASTEN,
PRS_KOSTENPLAATS_NR,
BES_OPDR_KEY,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
FIN_FACTUUR_STATUSES_KEY
)
AS
SELECT DISTINCT
f.fin_factuur_key,
COALESCE (
TO_CHAR (cnt_contract_nummer),
(SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key))
opdracht_id,
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_nr,
fb.fin_factuur_bestand,
COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key) prs_bedrijf_key,
fr.fin_factuurregel_totaal,
fr.fin_factuurregel_btw,
btw.fin_btwtabelwaarde_perc,
btw.fin_btwtabelwaarde_code,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_omschrijving,
frd.fin_factuurregel_datum,
f.fin_factuur_debiteur_nr,
fbr.fin_factuur_betaalref,
fok.fin_factuur_omschr_kopregel,
NULL projectnummer,
COALESCE (ks_regel.prs_kostensoort_oms, ks.prs_kostensoort_oms),
DECODE (ks_regel.prs_kostensoort_oms,
NULL, ks.prs_kostensoort_doorbelasten,
ks_regel.prs_kostensoort_doorbelasten),
COALESCE (kp_c.prs_kostenplaats_nr, kp_o.prs_kostenplaats_nr)
prs_kostenplaats_nr,
NULL bes_opdr_key,
o.mld_opdr_key,
c.cnt_contract_key,
f.fin_factuur_statuses_key
FROM fin_factuur f,
wzuv_v_factuur_bestand fb,
wzuv_v_factuur_betaalref fbr,
wzuv_v_factuur_omschr_kopregel fok,
fin_factuurregel fr,
wzuv_v_factuurregel_datum frd,
fin_btwtabelwaarde btw,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_kostensoort ks,
prs_kostensoort ks_regel,
prs_kostenplaats kp_c,
prs_kostenplaats kp_o
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_factuurregel_key = frd.fin_factuurregel_key(+)
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.fin_factuur_key = fb.fin_factuur_key(+)
AND f.fin_factuur_key = fbr.fin_factuur_key(+)
AND f.fin_factuur_key = fok.fin_factuur_key(+)
AND f.bes_bestelopdr_key IS NULL
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND o.prs_kostenplaats_key = kp_o.prs_kostenplaats_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
AND c.prs_kostenplaats_key = kp_c.prs_kostenplaats_key(+)
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+);
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_GEG_AKKOORD
(
FIN_FACTUUR_KEY,
OPDRACHT_ID,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_NR,
FIN_FACTUUR_BESTAND,
PRS_BEDRIJF_KEY,
FIN_FACTUURREGEL_TOTAAL,
FIN_FACTUURREGEL_BTW,
FIN_FACTUURREGEL_BTW_PERC,
FIN_BTWTABELWAARDE_BTWCODE,
FIN_FACTUURREGEL_NR,
FIN_FACTUURREGEL_OMSCHRIJVING,
FIN_FACTUURREGEL_DATUM,
FIN_FACTUUR_DEBITEUR_NR,
FIN_FACTUUR_BETAALREF,
FIN_FACTUUR_OMSCHR_KOPREGEL,
PROJECT_NUMMER,
PRS_KOSTENSOORT_OMS,
PRS_KOSTENSOORT_DOORBELASTEN,
PRS_KOSTENPLAATS_NR,
BES_OPDR_KEY,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
FIN_FACTUUR_STATUSES_KEY
)
AS
SELECT "FIN_FACTUUR_KEY",
"OPDRACHT_ID",
"FIN_FACTUUR_DATUM",
"FIN_FACTUUR_BOEKMAAND",
"FIN_FACTUUR_NR",
"FIN_FACTUUR_BESTAND",
"PRS_BEDRIJF_KEY",
"FIN_FACTUURREGEL_TOTAAL",
"FIN_FACTUURREGEL_BTW",
"FIN_FACTUURREGEL_BTW_PERC",
"FIN_BTWTABELWAARDE_BTWCODE",
"FIN_FACTUURREGEL_NR",
"FIN_FACTUURREGEL_OMSCHRIJVING",
"FIN_FACTUURREGEL_DATUM",
"FIN_FACTUUR_DEBITEUR_NR",
"FIN_FACTUUR_BETAALREF",
"FIN_FACTUUR_OMSCHR_KOPREGEL",
"PROJECT_NUMMER",
"PRS_KOSTENSOORT_OMS",
"PRS_KOSTENSOORT_DOORBELASTEN",
"PRS_KOSTENPLAATS_NR",
"BES_OPDR_KEY",
"MLD_OPDR_KEY",
"CNT_CONTRACT_KEY",
"FIN_FACTUUR_STATUSES_KEY"
FROM wzuv_v_factuur_mldcnt_gegevens
WHERE fin_factuur_statuses_key = 6
UNION
SELECT "FIN_FACTUUR_KEY",
"OPDRACHT_ID",
"FIN_FACTUUR_DATUM",
"FIN_FACTUUR_BOEKMAAND",
"FIN_FACTUUR_NR",
"FIN_FACTUUR_BESTAND",
"PRS_BEDRIJF_KEY",
"FIN_FACTUURREGEL_TOTAAL",
"FIN_FACTUURREGEL_BTW",
"FIN_FACTUURREGEL_BTW_PERC",
"FIN_BTWTABELWAARDE_BTWCODE",
"FIN_FACTUURREGEL_NR",
"FIN_FACTUURREGEL_OMSCHRIJVING",
"FIN_FACTUURREGEL_DATUM",
"FIN_FACTUUR_DEBITEUR_NR",
"FIN_FACTUUR_BETAALREF",
"FIN_FACTUUR_OMSCHR_KOPREGEL",
"PROJECT_NUMMER",
"PRS_KOSTENSOORT_OMS",
"PRS_KOSTENSOORT_DOORBELASTEN",
"PRS_KOSTENPLAATS_NR",
"BES_OPDR_KEY",
"MLD_OPDR_KEY",
"CNT_CONTRACT_KEY",
"FIN_FACTUUR_STATUSES_KEY"
FROM wzuv_v_factuur_bes_gegevens
WHERE fin_factuur_statuses_key = 6;
CREATE OR REPLACE VIEW WZUV_V_FACTUUR_GEG
(
FIN_FACTUUR_KEY,
OPDRACHT_ID,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_NR,
FIN_FACTUUR_BESTAND,
PRS_BEDRIJF_KEY,
FIN_FACTUURREGEL_TOTAAL,
FIN_FACTUURREGEL_BTW,
FIN_FACTUURREGEL_BTW_PERC,
FIN_BTWTABELWAARDE_BTWCODE,
FIN_FACTUURREGEL_NR,
FIN_FACTUURREGEL_OMSCHRIJVING,
FIN_FACTUURREGEL_DATUM,
FIN_FACTUUR_DEBITEUR_NR,
FIN_FACTUUR_BETAALREF,
FIN_FACTUUR_OMSCHR_KOPREGEL,
PROJECT_NUMMER,
PRS_KOSTENSOORT_OMS,
PRS_KOSTENSOORT_DOORBELASTEN,
PRS_KOSTENPLAATS_NR,
BES_OPDR_KEY,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
FIN_FACTUUR_STATUSES_KEY
)
AS
SELECT "FIN_FACTUUR_KEY",
"OPDRACHT_ID",
"FIN_FACTUUR_DATUM",
"FIN_FACTUUR_BOEKMAAND",
"FIN_FACTUUR_NR",
"FIN_FACTUUR_BESTAND",
"PRS_BEDRIJF_KEY",
"FIN_FACTUURREGEL_TOTAAL",
"FIN_FACTUURREGEL_BTW",
"FIN_FACTUURREGEL_BTW_PERC",
"FIN_BTWTABELWAARDE_BTWCODE",
"FIN_FACTUURREGEL_NR",
"FIN_FACTUURREGEL_OMSCHRIJVING",
"FIN_FACTUURREGEL_DATUM",
"FIN_FACTUUR_DEBITEUR_NR",
"FIN_FACTUUR_BETAALREF",
"FIN_FACTUUR_OMSCHR_KOPREGEL",
"PROJECT_NUMMER",
"PRS_KOSTENSOORT_OMS",
"PRS_KOSTENSOORT_DOORBELASTEN",
"PRS_KOSTENPLAATS_NR",
"BES_OPDR_KEY",
"MLD_OPDR_KEY",
"CNT_CONTRACT_KEY",
"FIN_FACTUUR_STATUSES_KEY"
FROM wzuv_v_factuur_mldcnt_gegevens
UNION
SELECT "FIN_FACTUUR_KEY",
"OPDRACHT_ID",
"FIN_FACTUUR_DATUM",
"FIN_FACTUUR_BOEKMAAND",
"FIN_FACTUUR_NR",
"FIN_FACTUUR_BESTAND",
"PRS_BEDRIJF_KEY",
"FIN_FACTUURREGEL_TOTAAL",
"FIN_FACTUURREGEL_BTW",
"FIN_FACTUURREGEL_BTW_PERC",
"FIN_BTWTABELWAARDE_BTWCODE",
"FIN_FACTUURREGEL_NR",
"FIN_FACTUURREGEL_OMSCHRIJVING",
"FIN_FACTUURREGEL_DATUM",
"FIN_FACTUUR_DEBITEUR_NR",
"FIN_FACTUUR_BETAALREF",
"FIN_FACTUUR_OMSCHR_KOPREGEL",
"PROJECT_NUMMER",
"PRS_KOSTENSOORT_OMS",
"PRS_KOSTENSOORT_DOORBELASTEN",
"PRS_KOSTENPLAATS_NR",
"BES_OPDR_KEY",
"MLD_OPDR_KEY",
"CNT_CONTRACT_KEY",
"FIN_FACTUUR_STATUSES_KEY"
FROM wzuv_v_factuur_bes_gegevens;
-- Alle waarden (zijn evt meer records) uit eigen tabel 'Exact' waarvan de waarde_code met een
-- zekere prefix begint (volgens de systeem-setting PREFIX_FCLT_FACTUUR_XML_HEADER), komen in de header vd xml terecht
-- 121 is de eigen tabel met dagboeknrs. (op dit moment alleen '40' moet nog gevuld worden)
CREATE OR REPLACE VIEW wzuv_v_fclt_factuur_header (
result,
result_order
)
AS
SELECT '<' || fac_usrdata_code || '>' || fac_usrdata_omschr || '</' || fac_usrdata_code || '>', 1
FROM fac_usrdata
WHERE fac_usrtab_key = 121
AND fac_usrdata_verwijder is null;
CREATE OR REPLACE VIEW wzuv_v_fclt_factuur_body (
result,
result_order
)
AS
SELECT DECODE(regelnummer,0,'<fin_factuur>','<fin_factuurregel>')
|| '<fin_factuur_key>' || fin_factuur_key || '</fin_factuur_key>'
|| '<fin_factuur_nr>' || xml.char_to_html(fin_factuur_nr) || '</fin_factuur_nr>'
|| '<fin_factuur_bestand>' || xml.char_to_html(fin_factuur_bestand) || '</fin_factuur_bestand>'
|| '<fin_factuur_debiteur_nr>' || xml.char_to_html(fin_factuur_debiteur_nr) || '</fin_factuur_debiteur_nr>'
|| '<fin_factuur_omschr_kopregel>' || xml.char_to_html(fin_factuur_omschr_kopregel) || '</fin_factuur_omschr_kopregel>'
|| '<bes_mld_cnt_opdracht_id>' || xml.char_to_html(bes_mld_cnt_opdracht_id) || '</bes_mld_cnt_opdracht_id>'
|| '<fin_factuur_datum>' || datum || '</fin_factuur_datum>'
|| '<fin_factuur_boekmaand>' || fin_factuur_boekmaand || '</fin_factuur_boekmaand>'
|| '<prs_kostensoort_oms>' || xml.char_to_html(grootboekrekening) || '</prs_kostensoort_oms>'
|| '<prs_kostensoort_doorbelasten>' || xml.char_to_html(kostensoort_doorbelasten)|| '</prs_kostensoort_doorbelasten>'
|| '<prs_betaal_referentie>' || xml.char_to_html(betaalreferentie) || '</prs_betaal_referentie>'
|| '<prs_leverancier_nr>' || xml.char_to_html(crediteur_nr) || '</prs_leverancier_nr>'
|| '<prs_bedrijf_naam>' || xml.char_to_html(crediteur_naam) || '</prs_bedrijf_naam>'
|| '<fin_factuur_totaal_exbtw>' || fin_factuur_totaal_exbtw || '</fin_factuur_totaal_exbtw>'
|| '<fin_factuur_totaal_incbtw>' || fin_factuur_totaal_incbtw || '</fin_factuur_totaal_incbtw>'
|| '<fin_factuurregel_omschrijving>' || xml.char_to_html(fin_factuurregel_omschrijving) || '</fin_factuurregel_omschrijving>'
|| '<fin_factuurregel_datum>' || xml.char_to_html(fin_factuurregel_datum) || '</fin_factuurregel_datum>'
|| '<fin_factuurregel_totaal>' || fin_factuurregel_totaal || '</fin_factuurregel_totaal>'
|| '<fin_factuurregel_btw_perc>' || btw_percentage || '</fin_factuurregel_btw_perc>'
|| '<fin_factuurregel_btw_perc_code>' || xml.char_to_html(btw_code) || '</fin_factuurregel_btw_perc_code>'
|| '<fin_factuurregel_btw_bedrag>' || btw_bedrag || '</fin_factuurregel_btw_bedrag>'
|| '<prs_kostenplaats_nr>' || xml.char_to_html(prs_kostenplaats_nr) || '</prs_kostenplaats_nr>'
|| DECODE(regelnummer, 0, '', DECODE(max_factuur_regelnr - regelnummer,0,'</fin_factuurregel></fin_factuur>','</fin_factuurregel>'))
,
(1000000 + fin_factuur_key) * 10000 + regelnummer
FROM (SELECT 0 regelnummer,
aant_factuur_regels,
max_factuur_regelnr,
fin_factuur_key,
fin_factuur_nr,
fin_factuur_bestand,
fin_factuur_debiteur_nr,
fin_factuur_omschr_kopregel,
opdracht_id bes_mld_cnt_opdracht_id,
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
fin_factuur_boekmaand,
'' grootboekrekening,
'' kostensoort_doorbelasten,
betaalreferentie,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_nr,
(SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_naam,
REPLACE (TO_CHAR (ROUND(bedrag_exbtw,2)), ',', '.') fin_factuur_totaal_exbtw,
REPLACE (TO_CHAR (ROUND(bedrag_incbtw,2)), ',', '.') fin_factuur_totaal_incbtw,
'' fin_factuurregel_omschrijving,
'' fin_factuurregel_datum,
'' fin_factuurregel_totaal,
'' btw_percentage,
'' btw_code,
'' btw_bedrag,
'' prs_kostenplaats_nr
FROM (SELECT fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_bestand,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalreferentie,
fin_factuur_omschr_kopregel,
COUNT(fin_factuur_key) AS aant_factuur_regels,
MAX (fin_factuurregel_nr) AS max_factuur_regelnr,
SUM (fin_factuurregel_totaal) bedrag_exbtw,
SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incbtw
FROM wzuv_v_factuur_geg_akkoord ---DEZE DUS
GROUP BY fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_bestand,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_betaalref,
fin_factuur_omschr_kopregel) fg
UNION ALL
SELECT fin_factuurregel_nr regelnummer,
(SELECT COUNT(fin_factuur_key)
FROM wzuv_v_factuur_geg_akkoord fc
WHERE fc.fin_factuur_key = fg.fin_factuur_key
GROUP BY fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr) AS aant_factuur_regels,
(SELECT MAX(fin_factuurregel_nr)
FROM wzuv_v_factuur_geg_akkoord fc
WHERE fc.fin_factuur_key = fg.fin_factuur_key
GROUP BY fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr) AS max_factuur_regelnr,
fin_factuur_key,
fin_factuur_nr,
'' fin_factuur_bestand,
fin_factuur_debiteur_nr,
'' fin_factuur_omschr_kopregel,
'' bes_mld_cnt_opdracht_id,
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
fin_factuur_boekmaand,
prs_kostensoort_oms grootboekrekening,
TO_CHAR(prs_kostensoort_doorbelasten) kostensoort_doorbelasten,
COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalreferentie,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_nr,
(SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_naam,
'' fin_factuur_totaal_exbtw,
'' fin_factuur_totaal_incbtw,
fin_factuurregel_omschrijving,
fin_factuurregel_datum,
REPLACE (TO_CHAR (ROUND(fin_factuurregel_totaal,2)), ',', '.') fin_factuurregel_totaal,
TO_CHAR(fin_factuurregel_btw_perc) btw_percentage,
fin_btwtabelwaarde_btwcode btw_code,
REPLACE (TO_CHAR (ROUND(fin_factuurregel_btw,2)), ',', '.') btw_bedrag,
prs_kostenplaats_nr
FROM wzuv_v_factuur_geg_akkoord fg
ORDER BY fin_factuur_key, regelnummer);
CREATE OR REPLACE VIEW wzuv_v_export_fclt_factuur (
result,
result_order
)
AS
SELECT '<xml>',0 FROM DUAL
UNION
SELECT result, result_order FROM wzuv_v_fclt_factuur_header
UNION
SELECT result, result_order FROM wzuv_v_fclt_factuur_body
UNION
SELECT '</xml>',99999999999999999999 FROM DUAL;
CREATE OR REPLACE PROCEDURE wzuv_export_fclt_factuur (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
-- In cursor cfactuur alle facturen die worden geexporteerd...
CURSOR cfactuur
IS
SELECT fin_factuur_key
FROM wzuv_v_factuur_geg_akkoord
GROUP BY fin_factuur_key;
BEGIN
-- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT...
FOR cfact IN cfactuur
LOOP
-- Zowel de factuur in tracking zetten als de status op verwerkt (=7) zetten
fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL);
END LOOP;
END;
/
CREATE OR REPLACE VIEW wzuv_v_export_undo_exact (
result,
result_order
)
AS
SELECT REPLACE(REPLACE(f.fin_factuur_key
|| ';'
|| opdracht_id
|| ';'
|| fin_factuur_datum
|| ';'
|| fin_factuur_nr
|| ';'
|| prs_bedrijf_key
|| ';'
|| fin_factuurregel_totaal
|| ';'
|| fin_factuurregel_btw
|| ';'
|| fin_factuurregel_nr
|| ';'
|| fin_factuur_debiteur_nr
|| ';'
|| project_nummer
|| ';'
|| prs_kostensoort_oms
|| ';'
|| bes_opdr_key
|| ';'
|| mld_opdr_key
|| ';'
|| cnt_contract_key
,CHR (13), ''), CHR (10), '<ret>'), f.fin_factuur_key
FROM wzuv_v_factuur_geg f, fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code ='FINVER'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
FROM fac_tracking t1
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
AND f.fin_factuur_key = t.fac_tracking_refkey
AND f.fin_factuur_statuses_key = 7;
CREATE OR REPLACE PROCEDURE wzuv_select_undo_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
BEGIN
v_errormsg := 'Geen akties';
END;
/
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
CREATE OR REPLACE PROCEDURE wzuv_export_undo_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR cfactuur
IS
SELECT DISTINCT f.fin_factuur_key
FROM fac_tracking t, fac_srtnotificatie sn, fin_factuur f
WHERE sn.fac_srtnotificatie_code ='FINVER'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
FROM fac_tracking t1
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
AND f.fin_factuur_key = t.fac_tracking_refkey
AND fin_factuur_statuses_key = 7;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errormsg := 'Geen akties';
FOR cfact IN cfactuur
LOOP
-- Eerst de factuur in tracking zetten...
-- Omdat van 7 naar 6 niet mag/geoorloofd is, lukt het niet via
-- de reguliere functie fin.setfactuurstatus (cfact.fin_factuur_key, 6, NULL);
-- Dan maar zelf en custom-made:
fac.trackaction ('FINFOK', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet');
UPDATE fin_factuur
SET fin_factuur_statuses_key = 6
WHERE fin_factuur_key = cfact.fin_factuur_key;
END LOOP;
END;
/
-- ===================================
-- EINDE VIEWS EN PROCS VOOR DE EXACT KOPPELING
-- ===================================
BEGIN
DBMS_UTILITY.COMPILE_SCHEMA (USER, FALSE);
END;