diff --git a/SKAF/skaf.sql b/SKAF/skaf.sql index 04cf8c86b..6cccfb0c9 100644 --- a/SKAF/skaf.sql +++ b/SKAF/skaf.sql @@ -1,7 +1,7 @@ -- Script containing customer specific configuration sql statements for SKAF -- (c) 2009 SG|facilitor bv --- $Revision: 6 $ --- $Modtime: 21-10-10 16:49 $ +-- $Revision: 7 $ +-- $Modtime: 2-12-10 17:14 $ -- -- Support: +31 53 4800710 @@ -1350,27 +1350,48 @@ END skaf_update_prs; / +CREATE OR REPLACE VIEW skaf_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 = + (select fac.safe_to_number(fac_usrdata_omschr) + from fac_usrdata + where fac_usrtab_key = + (select fac_usrtab_key + from fac_usrtab + where fac_usrtab_naam = '$SYSTEM') + and fac_usrdata_code='$FIN_KENMERK_KEY_BESTAND' + and fac_usrdata_verwijder is null + ); + + -- view tbv export naar exact CREATE OR REPLACE VIEW skaf_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_nr, + fin_factuurregel_omschrijving, fin_factuur_debiteur_nr, project_nummer, prs_kostensoort_refcode, prs_kostenplaats_nr, bes_opdr_key, mld_opdr_key, - cnt_contract_key + cnt_contract_key, + fin_factuur_statuses_key ) AS - SELECT f.fin_factuur_key, + SELECT DISTINCT f.fin_factuur_key, COALESCE (TO_CHAR (cnt_contract_nummer), (SELECT sd.ins_srtdiscipline_prefix || m.mld_melding_key @@ -1386,19 +1407,24 @@ AS ) 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, fr.fin_factuurregel_nr, + fr.fin_factuurregel_omschrijving, f.fin_factuur_debiteur_nr, NULL projectnummer, ks.prs_kostensoort_refcode, 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 + c.cnt_contract_key, + f.fin_factuur_statuses_key FROM fin_factuur f, + skaf_v_factuur_bestand fb, fin_factuurregel fr, mld_opdr o, mld_typeopdr ot, @@ -1409,6 +1435,7 @@ AS prs_kostenplaats kp_c, prs_kostenplaats kp_o WHERE f.fin_factuur_key = fr.fin_factuur_key + AND f.fin_factuur_key = fb.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 (+) @@ -1417,49 +1444,57 @@ AS 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 f.fin_factuur_statuses_key = 6; + AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+); CREATE OR REPLACE VIEW skaf_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_nr, + fin_factuurregel_omschrijving, fin_factuur_debiteur_nr, project_nummer, prs_kostensoort_refcode, prs_kostenplaats_nr, bes_opdr_key, mld_opdr_key, - cnt_contract_key + cnt_contract_key, + fin_factuur_statuses_key ) AS - SELECT f.fin_factuur_key, + 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, fr.fin_factuurregel_nr, + fr.fin_factuurregel_omschrijving, f.fin_factuur_debiteur_nr, NULL projectnummer, ks.prs_kostensoort_refcode, kp.prs_kostenplaats_nr, bo.bes_bestelopdr_key bes_opdr_key, NULL mld_opdr_key, - NULL cnt_contract_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, + skaf_v_factuur_bestand fb, fin_factuurregel fr, prs_kostensoort ks, prs_kostenplaats kp @@ -1469,16 +1504,18 @@ AS 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 f.bes_bestelopdr_key = bo.bes_bestelopdr_key - AND f.fin_factuur_statuses_key = 6 - AND f.fin_factuur_key = fr.fin_factuur_key; + AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key + AND f.fin_factuur_key = fr.fin_factuur_key + AND f.fin_factuur_key = fb.fin_factuur_key(+); -CREATE OR REPLACE VIEW skaf_v_factuur_gegevens +CREATE OR REPLACE VIEW skaf_v_factuur_geg_akkoord AS SELECT * from skaf_v_factuur_mldcnt_gegevens +WHERE fin_factuur_statuses_key = 6 UNION -SELECT * from skaf_v_factuur_bes_gegevens; +SELECT * from skaf_v_factuur_bes_gegevens +WHERE fin_factuur_statuses_key = 6; @@ -1545,7 +1582,7 @@ AS fin_factuur_debiteur_nr, SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag - FROM skaf_v_factuur_gegevens + FROM skaf_v_factuur_geg_akkoord GROUP BY fin_factuur_key, opdracht_id, fin_factuur_datum, @@ -1606,7 +1643,7 @@ AS '' empty38, project_nummer projectnr, '!' empty40 - FROM skaf_v_factuur_gegevens fg); + FROM skaf_v_factuur_geg_akkoord fg); @@ -1746,7 +1783,7 @@ AS fin_factuur_debiteur_nr, SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag - FROM skaf_v_factuur_gegevens + FROM skaf_v_factuur_geg_akkoord GROUP BY fin_factuur_key, opdracht_id, fin_factuur_datum, @@ -1807,7 +1844,7 @@ AS '' empty38, project_nummer projectnr, '!' empty40 - FROM skaf_v_factuur_gegevens fg + FROM skaf_v_factuur_geg_akkoord fg ORDER BY bkstnr, regelnummer); CREATE OR REPLACE PROCEDURE skaf_select_exact ( @@ -1839,85 +1876,11 @@ BEGIN DELETE skaf_EXP_FACTUUR; INSERT INTO skaf_EXP_FACTUUR (FIN_FACTUUR_KEY) - ( SELECT DISTINCT FIN_FACTUUR_KEY FROM skaf_v_factuur_gegevens ); + ( SELECT DISTINCT FIN_FACTUUR_KEY FROM skaf_v_factuur_geg_akkoord ); END; / -CREATE OR REPLACE VIEW skaf_v_export_verwerk_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_refcode - || ';' - || bes_opdr_key - || ';' - || mld_opdr_key - || ';' - || cnt_contract_key - ,CHR (13), ''), CHR (10), ''), f.fin_factuur_key - FROM skaf_exp_factuur f, - skaf_v_factuur_gegevens fg - WHERE f.fin_factuur_key = fg.fin_factuur_key; - - - -CREATE OR REPLACE PROCEDURE skaf_select_verwerk_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 skaf_export_verwerk_exact ( - p_applname IN VARCHAR2, - p_applrun IN VARCHAR2, - p_filedir IN VARCHAR2, - p_filename IN VARCHAR2 -) -AS - v_errormsg VARCHAR (200); - oracle_err_num NUMBER; - oracle_err_mes VARCHAR2 (200); -BEGIN - v_errormsg := 'Geen akties'; - - UPDATE fin_factuur - SET fin_factuur_statuses_key = 7 - WHERE fin_factuur_key in - (SELECT f.fin_factuur_key - FROM skaf_exp_factuur f - , skaf_v_factuur_gegevens fg - WHERE f.fin_factuur_key = fg.fin_factuur_key); -END; -/ --- Facilitor Graphics / CAD --- @@ -2032,10 +1995,341 @@ AS GROUP BY fclt_f_locatie; -BEGIN adm.systrackscript('$Workfile: skaf.sql $', '$Revision: 6 $', 0); END; + +-- Alle waarden (zijn evt meer records) uit eigen tabel '$SYSTEM' 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. +CREATE OR REPLACE VIEW skaf_v_fclt_factuur_header ( + result, + result_order + ) +AS +SELECT '<' || fac_usrdata_code || '>' || fac_usrdata_omschr || '', 1 +FROM fac_usrdata +WHERE fac_usrtab_key = + (SELECT fac_usrtab_key + FROM fac_usrtab + WHERE fac_usrtab_naam = '$SYSTEM') +AND UPPER(fac_usrdata_code) LIKE (SELECT UPPER(fac_usrdata_omschr) || '%' + FROM fac_usrdata + WHERE fac_usrtab_key = + (SELECT fac_usrtab_key + FROM fac_usrtab + WHERE fac_usrtab_naam = '$SYSTEM') + AND fac_usrdata_code = '$PREFIX_FCLT_FACTUUR_XML_HEADER' + AND fac_usrdata_verwijder is null) +AND fac_usrdata_verwijder is null; + + +CREATE OR REPLACE VIEW skaf_v_fclt_factuur_body ( + result, + result_order + ) +AS + SELECT DECODE(regelnummer,0,'','') + || '' || fin_factuur_key || '' + || '' || fin_factuur_nr || '' + || '' || fin_factuur_bestand || '' + || '' || fin_factuur_debiteur_nr || '' + || '' || bes_mld_cnt_opdracht_id || '' + || '' || datum || '' + || '' || fin_factuur_boekmaand || '' + || '' || grootboekrekening || '' + || '' || crediteur_nr || '' + || '' || crediteur_naam || '' + || '' || fin_factuur_totaal_exbtw || '' + || '' || fin_factuur_totaal_incbtw || '' + || '' || fin_factuurregel_omschrijving || '' + || '' || fin_factuurregel_totaal || '' + || '' || btw_percentage || '' + || '' || btw_bedrag || '' + || '' || prs_kostenplaats_nr || '' + || DECODE(regelnummer, 0, '', DECODE(aant_factuur_regels - regelnummer,0,'','')) + , + (10000000 + fin_factuur_key) * 100 + regelnummer + FROM (SELECT 0 regelnummer, + aant_factuur_regels, + fin_factuur_key, + fin_factuur_nr, + fin_factuur_bestand, + fin_factuur_debiteur_nr, + opdracht_id bes_mld_cnt_opdracht_id, + TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, + fin_factuur_boekmaand, + '' grootboekrekening, + (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_totaal, + '' btw_percentage, + '' 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, + COUNT(fin_factuur_key) AS aant_factuur_regels, + SUM (fin_factuurregel_totaal) bedrag_exbtw, + SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incbtw + FROM skaf_v_factuur_geg_akkoord + 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) fg + UNION ALL + SELECT fin_factuurregel_nr regelnummer, + (SELECT COUNT(fin_factuur_key) + FROM skaf_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, + fin_factuur_key, + fin_factuur_nr, + '' fin_factuur_bestand, + fin_factuur_debiteur_nr, + '' bes_mld_cnt_opdracht_id, + TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum, + fin_factuur_boekmaand, + prs_kostensoort_refcode grootboekrekening, + (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, + REPLACE (TO_CHAR (ROUND(fin_factuurregel_totaal,2)), ',', '.') fin_factuurregel_totaal, + DECODE (ROUND( (fin_factuurregel_btw / decode(fin_factuurregel_totaal,0,0.000000001,fin_factuurregel_totaal)) + * 100) + , 19,'19', 6, '6', 0, '0', '-1') btw_percentage, + REPLACE (TO_CHAR (ROUND(fin_factuurregel_btw,2)), ',', '.') btw_bedrag, + prs_kostenplaats_nr + FROM skaf_v_factuur_geg_akkoord fg + ORDER BY fin_factuur_key, regelnummer); + + + +CREATE OR REPLACE VIEW skaf_v_export_fclt_factuur ( + result, + result_order + ) +AS +SELECT '',0 FROM DUAL +UNION +SELECT result, result_order FROM skaf_v_fclt_factuur_header +UNION +SELECT result, result_order FROM skaf_v_fclt_factuur_body +UNION +SELECT '',99999999999999999999 FROM DUAL; + + + +CREATE OR REPLACE PROCEDURE skaf_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 skaf_v_factuur_geg_akkoord + GROUP BY fin_factuur_key; + + v_errormsg VARCHAR (200); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + c_datum DATE; +BEGIN + -- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT... + + -- Bewaar de factuur keys in een tijdelijke tabel zodat bij een UNDO-actie (!!) + -- deze keys gebruikt kunnen worden om de status 'Admin. verwerkt' (=7) terug te kunnen zetten naar 'Akkoord' (=6) + DELETE skaf_EXP_FACTUUR; + + INSERT INTO skaf_EXP_FACTUUR (FIN_FACTUUR_KEY, SKAF_EXPORT_DATUM) + ( SELECT DISTINCT FIN_FACTUUR_KEY, SYSDATE FROM skaf_v_factuur_geg_akkoord ); + + -- En nu alle facturen die ge-exporteerd zijn, naar de status 'Admin. verwerkt' (=7) zetten, + -- maar niet zonder eerst in de tracking op te slaan... + + -- c_datum := SYSDATE; + FOR cfact IN cfactuur + LOOP + -- Eerst de factuur in tracking zetten... + + fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL); + + --fac.trackaction ('FINVER', cfact.fin_factuur_key, NULL, c_datum, 'Factuur geexporteerd en gearchiveerd'); + --UPDATE fin_factuur + --SET fin_factuur_statuses_key = 7 + --WHERE fin_factuur_key = cfact.fin_factuur_key; + END LOOP; + + --UPDATE fin_factuur + --SET fin_factuur_statuses_key = 7 + --WHERE fin_factuur_key in + --(SELECT f.fin_factuur_key + -- FROM skaf_exp_factuur f, skaf_v_factuur_geg_akkoord fg + -- WHERE f.fin_factuur_key = fg.fin_factuur_key); + + + +END; / + +CREATE OR REPLACE VIEW skaf_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_refcode + || ';' + || bes_opdr_key + || ';' + || mld_opdr_key + || ';' + || cnt_contract_key + ,CHR (13), ''), CHR (10), ''), f.fin_factuur_key + FROM skaf_exp_factuur f, + skaf_v_factuur_geg_akkoord fg + WHERE f.fin_factuur_key = fg.fin_factuur_key; + + + +CREATE OR REPLACE PROCEDURE skaf_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 skaf_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; +/ + + + + + + +CREATE OR REPLACE PROCEDURE skaf_import_factuur (p_applname IN VARCHAR2, + p_applrun IN VARCHAR2, + p_filedir IN VARCHAR2, + p_filename IN VARCHAR2 + ) +AS + v_seq_of_columns VARCHAR(50); +BEGIN + v_seq_of_columns := '0;1;2;3;0;0;4;0;5;7;6;8'; + fac_import_factuur_body(p_applname, p_applrun, p_filedir, p_filename, v_seq_of_columns); +END; +/ + + +CREATE OR REPLACE PROCEDURE skaf_update_factuur (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) +AS +BEGIN + fac_update_factuur (p_applname, p_applrun); +END; +/ + + + + +BEGIN adm.systrackscript('$Workfile: skaf.sql $', '$Revision: 7 $', 0); END; +/ + + + + commit; spool off