YKPN#82676 -- Mareon factuur bij Vebego (YKPN) - opdracht en planning
svn path=/Customer/trunk/; revision=64148
This commit is contained in:
643
VBXX/VBXX.sql
643
VBXX/VBXX.sql
@@ -28,6 +28,24 @@ SET DEFINE OFF
|
||||
|
||||
------ payload begin ------
|
||||
|
||||
CREATE OR REPLACE PACKAGE VBXX
|
||||
AS
|
||||
FUNCTION vbxx_get_user RETURN VARCHAR2;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PACKAGE BODY VBXX
|
||||
AS
|
||||
FUNCTION vbxx_get_user RETURN VARCHAR2
|
||||
AS
|
||||
BEGIN
|
||||
RETURN SUBSTR (USER, 1, 4);
|
||||
END;
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
|
||||
CREATE OR REPLACE VIEW VBXX_V_RAP_TECHNADRES
|
||||
AS
|
||||
SELECT b.prs_bedrijf_key bedrijf_key,
|
||||
@@ -96,6 +114,631 @@ AS
|
||||
AND COALESCE(m.mld_melding_flag, 0) IN (0,2,3)
|
||||
AND TRUNC (o.mld_opdr_einddatum) <= TRUNC (SYSDATE) - 5;
|
||||
|
||||
|
||||
-- Power BI views. De beschrijving van de views staat in z:\Project\Implementaties\Customers\YAxx\Doc\YAXX#74390 Datalake\
|
||||
-- Wijzigingen ook daarin aanpassen.
|
||||
CREATE OR REPLACE VIEW vbxx_v_bimelding
|
||||
AS
|
||||
SELECT m.mld_melding_key,
|
||||
m.mld_melding_externnr,
|
||||
mld_meldbron_omschrijving,
|
||||
m.mld_melding_start_key,
|
||||
m.mld_alg_locatie_key alg_locatie_key,
|
||||
og.alg_gebouw_key,
|
||||
og.alg_verdieping_key,
|
||||
og.alg_ruimte_key,
|
||||
k.prs_kostenplaats_nr,
|
||||
k.prs_kostenplaats_omschrijving,
|
||||
m.prs_perslid_key,
|
||||
m.mld_melding_behandelaar_key,
|
||||
std.mld_stdmelding_omschrijving,
|
||||
d.ins_discipline_omschrijving,
|
||||
sd.ins_srtdiscipline_prefix,
|
||||
sd.ins_srtdiscipline_omschrijving,
|
||||
(SELECT mld_statuses_omschrijving
|
||||
FROM mld_statuses sta
|
||||
WHERE sta.mld_statuses_key = m.mld_melding_status)
|
||||
mld_melding_status,
|
||||
m.mld_melding_datum,
|
||||
m.mld_melding_einddatum,
|
||||
m.mld_melding_acceptdatum_std,
|
||||
m.mld_melding_einddatum_std,
|
||||
m.mld_melding_t_uitvoertijd.tijdsduur mld_melding_uitvoertijd_duur,
|
||||
m.mld_melding_t_uitvoertijd.eenheid mld_melding_uitvoertijd_eenh,
|
||||
m.mld_melding_t_accepttijd.tijdsduur mld_melding_accepttijd_duur,
|
||||
m.mld_melding_t_accepttijd.eenheid mld_melding_accepttijd_eenh,
|
||||
m.t_doorlooptijd.tijdsduur mld_melding_doorlooptijd_duur,
|
||||
m.t_doorlooptijd.eenheid mld_melding_doorlooptijd_eenh,
|
||||
DECODE(mld_melding_spoed, 1, 'Kritiek', 2, 'Hoog', 3, 'Normaal', 4, 'Laag', 'Onbekend') mld_melding_prioritieit,
|
||||
mld.getmeldingstatusdate (m.mld_melding_key, 4) mld_melding_geaccepteerd,
|
||||
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
|
||||
mld.getmeldingstatusdate (m.mld_melding_key, 1))
|
||||
mld_melding_afgemeld,
|
||||
m.mld_melding_onderwerp,
|
||||
m.mld_melding_omschrijving,
|
||||
m.mld_melding_opmerking,
|
||||
m.mld_melding_parentkey,
|
||||
m.mld_melding_satisfaction,
|
||||
m.mld_melding_satisfaction_op,
|
||||
(SELECT MAX(fac_tracking_datum)
|
||||
FROM fac_tracking t, fac_srtnotificatie sn
|
||||
WHERE t.fac_tracking_refkey = m.mld_melding_key
|
||||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||||
AND sn.fac_srtnotificatie_xmlnode = 'melding') last_changed
|
||||
FROM ( SELECT m1.*,
|
||||
CASE
|
||||
WHEN m1.mld_melding_einddatum >
|
||||
COALESCE (fac.gettrackingdate ('MLDAFM', m1.mld_melding_key),
|
||||
fac.gettrackingdate ('MLDREJ', m1.mld_melding_key),
|
||||
SYSDATE)
|
||||
THEN
|
||||
1
|
||||
ELSE
|
||||
0
|
||||
END
|
||||
plan_uitvoertijd_sla,
|
||||
CASE
|
||||
WHEN m1.mld_melding_indult = 1 OR std1.mld_stdmelding_slabewaken = 0 THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
sla_nvt,
|
||||
DECODE (m1.mld_melding_t_uitvoertijd.eenheid,
|
||||
'D', m1.mld_melding_t_uitvoertijd.tijdsduur,
|
||||
NULL)
|
||||
sla_werkdgn,
|
||||
DECODE (m1.mld_melding_t_uitvoertijd.eenheid,
|
||||
'U', m1.mld_melding_t_uitvoertijd.tijdsduur,
|
||||
NULL)
|
||||
sla_werkuren,
|
||||
DECODE (m1.mld_melding_t_respijt.eenheid,
|
||||
'D', m1.mld_melding_t_respijt.tijdsduur,
|
||||
NULL)
|
||||
sla_respijtdgn,
|
||||
DECODE (m1.mld_melding_t_respijt.eenheid,
|
||||
'U', m1.mld_melding_t_respijt.tijdsduur,
|
||||
NULL)
|
||||
sla_respijturen,
|
||||
CASE WHEN m1.mld_melding_spoed = 3 THEN std1.mld_stdmelding_t_accepttijd
|
||||
WHEN m1.mld_melding_spoed = 1 then std1.mld_stdmelding_t_accept_pr1
|
||||
WHEN m1.mld_melding_spoed = 1 then std1.mld_stdmelding_t_accept_pr2
|
||||
WHEN m1.mld_melding_spoed = 1 then std1.mld_stdmelding_t_accept_pr4
|
||||
END sla_accpt,
|
||||
--m.mld_melding_datum datum,
|
||||
CASE WHEN std1.mld_stdmelding_planbaar = 2
|
||||
THEN TO_DATE(NULL)
|
||||
ELSE m1.mld_melding_einddatum
|
||||
END einddatum,
|
||||
--mld_melding_einddatum_std einddatum_std,
|
||||
--mld_melding_acceptdatum_std acceptdatum,
|
||||
COALESCE (mld.getmeldingstatusdate (m1.mld_melding_key, 5),
|
||||
mld.getmeldingstatusdate (m1.mld_melding_key, 1))
|
||||
afgemeld,
|
||||
COALESCE (mld.getmeldingstatusdate (m1.mld_melding_key, 4),
|
||||
mld.getmeldingstatusdate (m1.mld_melding_key, 1))
|
||||
accepted,
|
||||
mld.getactualuitvoer (m1.mld_melding_key) t_doorlooptijd
|
||||
FROM mld_melding m1,
|
||||
mld_stdmelding std1
|
||||
WHERE m1.mld_stdmelding_key = std1.mld_stdmelding_key) m,
|
||||
alg_v_allonrgoed_gegevens og,
|
||||
mld_meldbron mb,
|
||||
mld_stdmelding std,
|
||||
mld_discipline d,
|
||||
ins_srtdiscipline sd,
|
||||
prs_kostenplaats k
|
||||
WHERE m.mld_meldbron_key = mb.mld_meldbron_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
|
||||
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
|
||||
AND m.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||||
AND m.fac_activiteit_key IS NULL;
|
||||
|
||||
|
||||
|
||||
CREATE OR REPLACE VIEW vbxx_v_bimeldingkenmerk
|
||||
AS
|
||||
SELECT mld_melding_key,
|
||||
COALESCE(k.mld_kenmerk_omschrijving, sk.mld_srtkenmerk_omschrijving) mld_kenmerk_omschrijving,
|
||||
DECODE (sk.mld_srtkenmerk_kenmerktype, 'R', FLX.getdomeinwaarde(sk.fac_kenmerkdomein_key, flx.getflex ('MLD', k.mld_kenmerk_key, km.mld_melding_key), 1),
|
||||
'S', FLX.getdomeinwaarde(sk.fac_kenmerkdomein_key, flx.getflex ('MLD', k.mld_kenmerk_key, km.mld_melding_key), 1),
|
||||
flx.getflex ('MLD', k.mld_kenmerk_key, km.mld_melding_key)) mld_kenmerk_waarde
|
||||
FROM mld_kenmerk k, mld_srtkenmerk sk, mld_kenmerkmelding km
|
||||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||||
AND km.mld_kenmerk_key = k.mld_kenmerk_key;
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE vbxx_import_fin_factuur_marx (p_import_key IN NUMBER)
|
||||
AS
|
||||
v_seq_of_columns VARCHAR(255);
|
||||
BEGIN
|
||||
v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28';
|
||||
fac_import_factuur_body(p_import_key, v_seq_of_columns);
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE vbxx_update_fin_factuur_marx (p_import_key IN NUMBER)
|
||||
AS
|
||||
|
||||
-- Voor Correctie ORDERNR om standaard update-procedure goed te laten lopen.
|
||||
--- 0. Bug - Als uit Mareo/Scanning geen order-referentie meekomt en er zijn meerdere factuurregels, dan wordt er vanuit fac_update_factuur niet 1 maar meerdere factuurnr's aangemaakt. Oplossing: Ordernr vullen.
|
||||
--- 0.1 Verzamelfactuur-indicatie (2022-maart actief): Vanuit Mareon wordt deze met een "(*)" achter de referentie meegegeven, bijvoorbeeld C5602.5(*).
|
||||
--- 0.2 Orderreferentie-opschoning: Vanuit scanning komt de orderreferentie soms mee inclusief 'extra tekst'. Bijv CO284IN<49>T of CO534.7HEERLEN. Voor goede verwerking gaan we de tekst achteraan de orderreferentie weghalen.
|
||||
--- Uitgezet: We willen ook bestellingen matchen
|
||||
--- 1. Ordernr 101132/1 wordt niet als Opdracht herkend. In FUNCTION try_getopdracht_id gaat Facilitor alleen maar opdrachten matchen als er 1,2 of 3 letters voorstaan... Daarom gaan we er in import-tabel een 'O' voorzetten (dus: 'O101132/1')
|
||||
--- Ps. BCT-regel: Indien geen prefix, en kolom ORDERNR is 6- of 7 cijferig en met een '/' en dan numeriek 1 t/m 3 posities. Voorbeeld: Bijv: 104370/2 vanuit BCT moet worden O104370/2
|
||||
--- Uitgezet: we kennen geen contracten met CO prefix
|
||||
--- 2. Ordernr beginnende met "CO" wordt niet als Contract herkend. Daarom gaan we er in import-tabel een "C" van maken.
|
||||
--- 3. Als ordernr is C (= contract) echter zonder versienummer - Dan wordt in standaard update altijd automatisch het hoogste versienummer gepakt.
|
||||
--- Ivm overlap 'jaarovergangen' is dat niet altijd juist en moet de vanuit Mareon geimporteerde factuur nog status 'te controleren' meekrijgen voordat deze automatisch de financiele-interface in gaat.
|
||||
--- 4. Ordernr beginnende met "BE" of "B" wordt niet als Bestelling herkend. Daarom gaan we deze prefix in de import-tabel weghalen.
|
||||
--- 5. De klant geeft in PDF/XML als orderreferentie soms ook de klantnaam mee (bijv REMEHA C10.0) - deze wordt dan niet verwerkt in Facilor en daarom halen we klantnamen voor de orderreferentie weg
|
||||
|
||||
CURSOR ccor_0
|
||||
IS
|
||||
SELECT ordernr
|
||||
FROM fac_imp_factuur
|
||||
WHERE fac_import_key = p_import_key
|
||||
AND ordernr IS NULL
|
||||
GROUP BY ordernr ;
|
||||
|
||||
CURSOR ccor_0_1
|
||||
IS
|
||||
SELECT factuurnr, ordernr
|
||||
FROM fac_imp_factuur
|
||||
WHERE fac_import_key = p_import_key
|
||||
AND INSTR(ordernr,'(*)') > 1
|
||||
GROUP BY factuurnr, ordernr ;
|
||||
|
||||
CURSOR ccor_0_2
|
||||
IS
|
||||
SELECT factuurnr, ordernr
|
||||
FROM fac_imp_factuur
|
||||
WHERE fac_import_key = p_import_key
|
||||
AND REGEXP_INSTR(REVERSE(ordernr), '\d') > 1
|
||||
GROUP BY factuurnr, ordernr ;
|
||||
|
||||
CURSOR ccor_1
|
||||
IS
|
||||
SELECT factuurnr, ordernr, fac.safe_to_number(SUBSTR(ordernr,1,(INSTR(ordernr,'/')-1))) as melding_key, fac.safe_to_number(SUBSTR(ordernr,(INSTR(ordernr,'/')+1),LENGTH(ordernr))) opdracht_volgnr, fac.safe_to_number(TO_CHAR(fac.safe_to_date (factuurdatum, 'yyyy-mm-dd'), 'yyyy')) factuurdatum_jaar
|
||||
FROM fac_imp_factuur
|
||||
WHERE fac_import_key = p_import_key
|
||||
AND INSTR(ordernr,'/') >0
|
||||
AND LENGTH(SUBSTR(ordernr,1,(INSTR(ordernr,'/')-1))) IN (6,7)
|
||||
GROUP BY factuurnr, ordernr, factuurdatum ;
|
||||
|
||||
CURSOR ccor_2
|
||||
IS
|
||||
SELECT factuurnr, ordernr
|
||||
FROM fac_imp_factuur
|
||||
WHERE fac_import_key = p_import_key
|
||||
AND LENGTH(ordernr) >= 2
|
||||
AND (SUBSTR(UPPER(ordernr),1,2) = 'CO' OR SUBSTR(UPPER(ordernr),1,2) = 'CC')
|
||||
GROUP BY factuurnr, ordernr ;
|
||||
|
||||
CURSOR ccor_3
|
||||
IS
|
||||
SELECT factuurnr, ordernr, SUBSTR(ordernr,2) cnt_contract_nummer_intern
|
||||
FROM fac_imp_factuur
|
||||
WHERE fac_import_key = p_import_key
|
||||
AND SUBSTR(UPPER(ordernr),1,1) = 'C'
|
||||
AND INSTR(ordernr,'.')=0
|
||||
GROUP BY factuurnr, ordernr ;
|
||||
|
||||
CURSOR ccor_4
|
||||
IS
|
||||
SELECT factuurnr, ordernr
|
||||
FROM fac_imp_factuur
|
||||
WHERE fac_import_key = p_import_key
|
||||
AND ( SUBSTR (ordernr, 1, 1) = 'B'
|
||||
AND fac.safe_to_number (SUBSTR (ordernr, 2, 1)) IS NOT NULL)
|
||||
OR (SUBSTR (ordernr, 1, 2) = 'BE')
|
||||
GROUP BY factuurnr, ordernr ;
|
||||
|
||||
CURSOR ccor_5 -- NOG UITWERKEN!!
|
||||
IS
|
||||
SELECT factuurnr, ordernr
|
||||
FROM fac_imp_factuur
|
||||
WHERE fac_import_key = p_import_key
|
||||
AND REGEXP_INSTR(REVERSE(ordernr), '\d') > 1
|
||||
GROUP BY factuurnr, ordernr ;
|
||||
|
||||
CURSOR cfactuur
|
||||
IS
|
||||
SELECT i.fin_factuur_key, factuurdatum, i.kenmerk1, i.kenmerk2, i.kenmerk3, i.kenmerk6, i.kenmerk7, i.kenmerk8, i.kenmerk9, i.factuurnr, i.fac_imp_file_index, f.fin_factuur_totaal, f.fin_factuur_totaal_btw, f.mld_opdr_key, f.cnt_contract_key, f.bes_bestelopdr_key
|
||||
FROM fac_imp_factuur i, fin_factuur f
|
||||
WHERE i.fin_factuur_key IS NOT NULL
|
||||
AND i.fac_import_key = p_import_key
|
||||
AND f.fin_factuur_key = i.fin_factuur_key
|
||||
AND kenmerk1 IS NOT NULL -- Incl bijlage
|
||||
;
|
||||
|
||||
|
||||
v_aanduiding VARCHAR2 (1000);
|
||||
v_errorhint VARCHAR2 (1000);
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
|
||||
c_kenmerk_key_bijlage NUMBER(10);
|
||||
c_kenmerk_key_soort VARCHAR(1) := 'F'; -- fin_kenmerk_kenmerktype = M(foldermap) of F(enkelvoudig bestand)
|
||||
c_huidig_jaar NUMBER(4) := fac.safe_to_number((TO_CHAR (SYSDATE, 'yyyy')));
|
||||
v_disk_directory VARCHAR2 (200);
|
||||
v_bedrag_totaal NUMBER(10);
|
||||
v_bedrag_gefactureerd NUMBER(10);
|
||||
v_count_gefactureerd NUMBER(10);
|
||||
v_bedrag_termijn NUMBER(10);
|
||||
v_ordersoort VARCHAR2 (200);
|
||||
v_contractsoort VARCHAR2 (200);
|
||||
v_bestelsoort VARCHAR2 (200);
|
||||
v_klantnummer_key NUMBER(10);
|
||||
v_klantnummer VARCHAR2 (200);
|
||||
v_prs_leverancier_nr VARCHAR2 (200);
|
||||
v_contract_versies NUMBER(10);
|
||||
c_kenmerk_key_controle NUMBER(10);
|
||||
c_kenmerk_key_verzamel NUMBER(10);
|
||||
c_kenmerk_key_mareon_bron NUMBER(10);
|
||||
v_prs_bedrijf_key NUMBER(10);
|
||||
v_opdracht_key NUMBER(10);
|
||||
v_controle NUMBER(1) := 0 ; -- 1 = controlevinkje op inkoopfactuur zetten
|
||||
v_aanduiding_controle VARCHAR2 (1000); -- Voor logging op bijbehorende controle zodat men weet wat men moet controleren
|
||||
v_fac_usrdata_key_ja NUMBER(10);
|
||||
v_mld_statusopdr_key NUMBER(10);
|
||||
v_count_gefactureerd_nr NUMBER(10);
|
||||
v_opdracht_0_reden VARCHAR2 (1000);
|
||||
v_fin_factuur_key NUMBER(10);
|
||||
v_sabic_genk VARCHAR2 (200);
|
||||
v_prs_kostenplaats_key NUMBER(10);
|
||||
v_prs_kostenplaatsgrp_key NUMBER(10);
|
||||
|
||||
-- Verdeelperiode voor de contracten gaan bepalen
|
||||
v_cnt_jaar_start NUMBER(10);
|
||||
v_cnt_jaar_eind NUMBER(10);
|
||||
v_cnt_maand_start NUMBER(10);
|
||||
v_cnt_maand_start_tekst VARCHAR(2);
|
||||
v_cnt_maand_eind NUMBER(10);
|
||||
v_cnt_maand_eind_tekst VARCHAR(2);
|
||||
v_cnt_start VARCHAR(7); -- Start contract in format tekst "jaar-mnd" (2022-05)
|
||||
v_cnt_eind VARCHAR(7); -- Einde contract in format tekst "jaar-mnd" (2022-05)
|
||||
|
||||
v_fin_factuur_boekmaand_nu VARCHAR(7); -- Ingelezen factuur in format tekst "jaar-mnd" (2022-05)
|
||||
v_gebroken_boekjaar NUMBER(1) := 0 ;
|
||||
v_cnt_looptijd_mnd NUMBER(10);
|
||||
v_cnt_deel_betaald_1 NUMBER(10); -- Deel van contract wat reeds betaald is
|
||||
v_cnt_deel_betaald_2 NUMBER(10); -- Deel van contract wat betaald is als de mareon-factuur ook verwerkt is
|
||||
v_cnt_deel_betaald_tekst VARCHAR2 (200); -- Tekst voor in tijdelijke kenmerveld om te kijken of bepaling boekmaand correct is
|
||||
-- v_cnt_deel_betaald NUMBER(10); -- METHODE 1: Deel van contract betaald met deze factuur
|
||||
-- v_fin_factuur_boekmaand VARCHAR(7); -- METHODE 1: De nieuwe boekmaand op de geimporteerde Mareon-factuur
|
||||
v_fin_factuur_boekmaand_2 VARCHAR(7); -- De nieuwe boekmaand op de geimporteerde Mareon-factuur - METHODE 2
|
||||
v_fin_factuur_boekmaand_tekst VARCHAR2 (1000); -- Tekst voor in tijdelijke kenmerkveld om te kijken of bepaling boekmaand correct is
|
||||
c_kenmerk_key_boekmaand NUMBER(10);
|
||||
v_cnt_termijn_type VARCHAR(1);
|
||||
v_cnt_termijn_aantal NUMBER(3);
|
||||
v_cnt_soort VARCHAR2 (200);
|
||||
v_factuur_datum_boekmaand NUMBER(10);
|
||||
v_factuur_datum_boekmaand_jr NUMBER(10);
|
||||
v_factuur_datum_boekmaand_prev VARCHAR(2);
|
||||
v_factuur_datum_boekmaand_nu VARCHAR(2);
|
||||
v_fin_factuur_boekmaand_laatst VARCHAR(7);
|
||||
v_fin_factuur_boekmaand_prev VARCHAR(7);
|
||||
|
||||
v_cnt_maandbedrag NUMBER(10);
|
||||
v_gefactureerd_vorige_maand NUMBER(10);
|
||||
|
||||
v_cnt_scope_gebouw NUMBER(10);
|
||||
v_cnt_scope_afwijkend NUMBER(10);
|
||||
|
||||
|
||||
|
||||
BEGIN
|
||||
|
||||
-- Voor draaien standaard factuur-update gaan we eerst op fac_imp_factuur een aantal correcties doorvoeren
|
||||
FOR rec IN ccor_0
|
||||
LOOP
|
||||
BEGIN
|
||||
|
||||
UPDATE fac_imp_factuur
|
||||
SET ordernr = '00000' -- Geen ordernr vanuit scanning
|
||||
WHERE fac_import_key = p_import_key ;
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
FOR rec IN ccor_0_1
|
||||
LOOP
|
||||
BEGIN
|
||||
|
||||
UPDATE fac_imp_factuur
|
||||
SET kenmerk3 = 'verzamelfactuur'
|
||||
WHERE fac_import_key = p_import_key ;
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
FOR rec IN ccor_0_2
|
||||
LOOP
|
||||
BEGIN
|
||||
|
||||
UPDATE fac_imp_factuur
|
||||
SET ordernr = SUBSTR(ordernr,1,LENGTH(ordernr)-(REGEXP_INSTR(REVERSE(ordernr), '\d')-1))
|
||||
WHERE fac_import_key = p_import_key ;
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
/* uitgeschakeld
|
||||
FOR rec IN ccor_1
|
||||
LOOP
|
||||
BEGIN
|
||||
|
||||
-- check of je er een ACTUELE opdracht_key voor kunt vinden. zo ja dan gaan we er vanuit dat het idd opdracht is en vullen we ordernr aan met een prefix "O"
|
||||
--- Actueel = Nog niet verwerkte opdracht + Jaar(opdrachtdatum) gelijk aan Jaar(factuurdatum) of Jaar(factuurdatum)-1
|
||||
IF rec.melding_key IS NOT NULL and rec.opdracht_volgnr IS NOT NULL and rec.factuurdatum_jaar IS NOT NULL THEN
|
||||
|
||||
SELECT min(mld_opdr_key)
|
||||
INTO v_opdracht_key
|
||||
FROM mld_opdr
|
||||
WHERE mld_melding_key = rec.melding_key AND mld_opdr_bedrijfopdr_volgnr = rec.opdracht_volgnr
|
||||
AND fac.safe_to_number((TO_CHAR (mld_opdr_datumbegin, 'yyyy'))) BETWEEN (rec.factuurdatum_jaar - 1) AND rec.factuurdatum_jaar
|
||||
AND mld_statusopdr_key NOT IN (1,7) ; -- verwerkt of afgewezen
|
||||
|
||||
IF v_opdracht_key IS NOT NULL THEN
|
||||
|
||||
UPDATE fac_imp_factuur
|
||||
SET ordernr = 'O' || ordernr
|
||||
WHERE fac_import_key = p_import_key ;
|
||||
|
||||
END IF;
|
||||
|
||||
END IF;
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
*/
|
||||
|
||||
/* Uitgeschakeld
|
||||
FOR rec IN ccor_2
|
||||
LOOP
|
||||
BEGIN
|
||||
|
||||
UPDATE fac_imp_factuur
|
||||
SET ordernr = 'C' || SUBSTR(ordernr,3,LENGTH(ordernr))
|
||||
WHERE fac_import_key = p_import_key ;
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
*/
|
||||
|
||||
FOR rec IN ccor_3
|
||||
LOOP
|
||||
BEGIN
|
||||
|
||||
IF fac.safe_to_number(rec.cnt_contract_nummer_intern) IS NOT NULL THEN
|
||||
|
||||
SELECT count(*)
|
||||
INTO v_contract_versies
|
||||
FROM cnt_contract
|
||||
WHERE cnt_contract_verwijder IS NULL AND cnt_contract_status = 0
|
||||
AND cnt_contract_nummer_intern = rec.cnt_contract_nummer_intern ;
|
||||
|
||||
-- Als er meer dan 1 versie is, dan moet factuur ter controle. We gaan hiervoor een kenmerkveld vullen...
|
||||
IF v_contract_versies > 1 THEN
|
||||
|
||||
UPDATE fac_imp_factuur
|
||||
SET kenmerk2 = 'ter controle'
|
||||
WHERE fac_import_key = p_import_key ;
|
||||
|
||||
END IF;
|
||||
|
||||
END IF;
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
FOR rec IN ccor_4
|
||||
LOOP
|
||||
BEGIN
|
||||
|
||||
UPDATE fac_imp_factuur
|
||||
SET ordernr = REPLACE(ordernr,'BE','')
|
||||
WHERE fac_import_key = p_import_key ;
|
||||
|
||||
UPDATE fac_imp_factuur
|
||||
SET ordernr = REPLACE(ordernr,'B','')
|
||||
WHERE fac_import_key = p_import_key ;
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
|
||||
-- Nu kunnen we de standaard FCLT verwerk import facturen draaien
|
||||
fac_update_factuur (p_import_key);
|
||||
|
||||
-- CUST: post processing voor verwerking van het PDF document
|
||||
SELECT MIN (fin_kenmerk_key)
|
||||
INTO c_kenmerk_key_bijlage
|
||||
FROM fin_kenmerk
|
||||
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
|
||||
AND fin_kenmerk_kenmerktype = c_kenmerk_key_soort
|
||||
AND fin_kenmerk_verwijder IS NULL;
|
||||
|
||||
-- CUST: Voor verwerking Contracten die qua versienr nog gecontroleerd moeten worden het kenmerk_key ophalen
|
||||
SELECT MIN (fin_kenmerk_key)
|
||||
INTO c_kenmerk_key_controle
|
||||
FROM fin_kenmerk
|
||||
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
|
||||
AND fin_kenmerk_kenmerktype = 'V'
|
||||
AND fin_kenmerk_upper = 'EXTRA CONTROLE?'
|
||||
AND fin_kenmerk_verwijder IS NULL;
|
||||
|
||||
-- CUST: Voor verwerking Contracten en Verdeelperiode goed doorvoeren (= fin_factuur_boekmaand)
|
||||
----- We gaan dit in een kenmerveld vullen en indien goed te bepalen dan wordt dit ook in procedure straks in het factuur-boekmaand veld weggeschreven
|
||||
SELECT MIN (fin_kenmerk_key)
|
||||
INTO c_kenmerk_key_boekmaand
|
||||
FROM fin_kenmerk
|
||||
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
|
||||
AND fin_kenmerk_kenmerktype = 'C'
|
||||
AND fin_kenmerk_upper = 'MAREON_CNT_BOEKMAAND'
|
||||
AND fin_kenmerk_verwijder IS NULL;
|
||||
|
||||
-- CUST: Voor verwerking Verzamelfactuur-indicatie het kenmerk_key ophalen
|
||||
SELECT MIN (fin_kenmerk_key)
|
||||
INTO c_kenmerk_key_verzamel
|
||||
FROM fin_kenmerk
|
||||
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
|
||||
AND fin_kenmerk_kenmerktype = 'V'
|
||||
AND fin_kenmerk_upper = 'VERZAMELFACTUUR?'
|
||||
AND fin_kenmerk_verwijder IS NULL;
|
||||
|
||||
-- CUST: Voor verwerking Mareon-bron het kenmerk_key ophalen
|
||||
SELECT MIN (fin_kenmerk_key)
|
||||
INTO c_kenmerk_key_mareon_bron
|
||||
FROM fin_kenmerk
|
||||
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
|
||||
AND fin_kenmerk_kenmerktype = 'C'
|
||||
AND fin_kenmerk_code = 'MAREON_BRON'
|
||||
AND fin_kenmerk_verwijder IS NULL;
|
||||
|
||||
|
||||
-- We gaan nu beginnen met het verder verwerken van de factuur..
|
||||
FOR rec IN cfactuur
|
||||
LOOP
|
||||
BEGIN
|
||||
|
||||
-- Als er een bijlage-flexprop en een bijlage is, dan gaan we deze PDF hier inzetten....
|
||||
IF c_kenmerk_key_bijlage IS NOT NULL AND rec.kenmerk1 IS NOT NULL
|
||||
THEN
|
||||
|
||||
BEGIN
|
||||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||||
VALUES('IMPORT:' || TO_CHAR (p_import_key),
|
||||
'flexcode',
|
||||
'FIN:'
|
||||
|| TO_CHAR (rec.fin_factuur_key) -- We kunnen niet meerdere imports tegelijk aan!
|
||||
|| ':' || c_kenmerk_key_bijlage || ':' -- De kenmerk key
|
||||
|| c_kenmerk_key_soort -- 'F of M'
|
||||
);
|
||||
|
||||
-- FSN#33363: Zelf de insert in fin_kenmerkfactuur doen van het bestandskenmerk (FSN#33105 verzorgt dit niet namelijk)
|
||||
-- Aanvulling JM: Voor F-enkelvoudig bestand wel nodig om kenmerk aan te maken, voor M-folder hoeft/moet dit niet
|
||||
IF c_kenmerk_key_soort = 'F'
|
||||
THEN
|
||||
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
|
||||
VALUES (rec.fin_factuur_key, c_kenmerk_key_bijlage, rec.kenmerk1);
|
||||
END IF;
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'W',
|
||||
'Van factuur met key ' || rec.fin_factuur_key || ' is de bestandsnaam niet bewaard (regel ' || rec.fac_imp_file_index || ')',
|
||||
'Factuurnr:' || rec.factuurnr || ' / Bestandsnaam: ' || rec.kenmerk1
|
||||
);
|
||||
END;
|
||||
|
||||
COMMIT;
|
||||
|
||||
END IF;
|
||||
|
||||
-- Incomplete facturen, zonder orderreferentie, gaan we ook op controle zetten
|
||||
--- D-categorie: Voorheen via fallback-emailadres, maar sinds 2022.3 vanuit Mareon wel doorgestuurd naar Facilitor.
|
||||
IF (rec.mld_opdr_key IS NULL AND rec.cnt_contract_key IS NULL AND rec.bes_bestelopdr_key IS NULL) AND rec.kenmerk6 NOT IN ('3')
|
||||
THEN
|
||||
|
||||
v_aanduiding_controle := 'CONTROLE - Factuur incompleet i.v.m. ontbrekende orderreferentie (vanuit scanning)' ;
|
||||
v_controle := 1 ;
|
||||
|
||||
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
|
||||
|
||||
|
||||
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
|
||||
VALUES (rec.fin_factuur_key, c_kenmerk_key_controle, 1);
|
||||
|
||||
END IF;
|
||||
|
||||
-- D-categorie -
|
||||
-- Kan zowel voor facturen met als zonder order-referentie doorkomen
|
||||
|
||||
IF rec.kenmerk6 = '3'
|
||||
THEN
|
||||
|
||||
v_aanduiding_controle := 'CONTROLE - Betreft D-categorie factuur!' ;
|
||||
|
||||
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
|
||||
|
||||
|
||||
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
|
||||
VALUES (rec.fin_factuur_key, c_kenmerk_key_controle, 1);
|
||||
|
||||
-- nog reden vullen:
|
||||
UPDATE fin_factuur
|
||||
SET fin_factuur_statuses_key = 3,
|
||||
fin_factuur_opmerking = rec.kenmerk7
|
||||
WHERE fin_factuur_key = rec.fin_factuur_key ;
|
||||
|
||||
END IF;
|
||||
|
||||
-- Mareon_bron tonen in Facilitor bij Factuur
|
||||
IF rec.kenmerk9 IS NOT NULL AND c_kenmerk_key_mareon_bron IS NOT NULL
|
||||
THEN
|
||||
|
||||
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
|
||||
VALUES (rec.fin_factuur_key, c_kenmerk_key_mareon_bron, rec.kenmerk9);
|
||||
|
||||
END IF;
|
||||
|
||||
|
||||
-- tot slot nog nette logging
|
||||
v_aanduiding := 'Factuur geimporteerd vanuit Mareon' ;
|
||||
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding);
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
-- ROLLBACK;
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||||
|
||||
v_errormsg :=
|
||||
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
|
||||
SELECT MAX(i.fin_factuur_key) fin_factuur_key, 'Betreft factuur_key ' || TO_CHAR(i.fin_factuur_key) ||' - Factuurnr ' || i.factuurnr
|
||||
INTO v_fin_factuur_key, v_errorhint
|
||||
FROM fac_imp_factuur i, fin_factuur f
|
||||
WHERE i.fac_import_key = p_import_key
|
||||
AND i.fin_factuur_key = f.fin_factuur_key (+)
|
||||
GROUP BY i.fin_factuur_key, 'Betreft factuur_key ' || TO_CHAR(i.fin_factuur_key) ||' - Factuurnr ' || i.factuurnr ;
|
||||
|
||||
IF v_fin_factuur_key IS NOT NULL
|
||||
THEN
|
||||
|
||||
UPDATE fin_factuur
|
||||
SET fin_factuur_statuses_key = 3,
|
||||
fin_factuur_opmerking = SUBSTR('Bij factuurimport is volgende Errormessage gemeld: ' || v_errormsg || CHR (13) || CHR (10) ||
|
||||
'Actie 1: Informeren Facilitor' || CHR (13) || CHR (10) ||
|
||||
'Actie 2: Factuur gewoon oppakken: Aanvullen, doorzetten, etc', 1, 250)
|
||||
WHERE fin_factuur_key = v_fin_factuur_key ;
|
||||
|
||||
v_aanduiding := 'Factuur geimporteerd vanuit Mareon' ;
|
||||
fac.trackaction ('FINUPD', v_fin_factuur_key, 4, NULL, v_aanduiding);
|
||||
|
||||
END IF;
|
||||
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_errormsg,
|
||||
v_errorhint || ' - ' || v_aanduiding);
|
||||
COMMIT;
|
||||
|
||||
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
|
||||
Reference in New Issue
Block a user