YASK#87240 Import van het btw tarief in de importbestanden wordt nu ook ondersteund.

svn path=/Customer/trunk/; revision=68141
This commit is contained in:
Arthur Egberink
2025-02-21 15:28:33 +00:00
parent c7404828d4
commit ae3d2542b0

View File

@@ -5760,12 +5760,15 @@ AS
v_header2 VARCHAR2 (1000);
v_header3 VARCHAR2 (1000);
v_header4 VARCHAR2 (1000);
v_header5 VARCHAR2 (1000);
-- De importvelden
v_plaats VARCHAR2(100);
v_adres VARCHAR2(100);
v_pandcode VARCHAR2(100);
v_bedrag_txt VARCHAR2(100);
v_bedrag NUMBER(11,2);
v_btw_txt VARCHAR2(100);
v_btw NUMBER(11,2);
v_locatie_key NUMBER (10);
v_gebouw_key NUMBER (10);
v_onderwerp VARCHAR2(100);
@@ -5808,6 +5811,7 @@ BEGIN
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 2, v_header2);
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 3, v_header3);
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 4, v_header4);
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 5, v_header5);
IF header_found = FALSE
THEN
@@ -5817,7 +5821,7 @@ BEGIN
WHEN 2 THEN IF v_header1 = 'Maand:' THEN v_header_jaar := FAC.safe_to_number(SUBSTR(v_header2,1,4)); v_header_maand := FAC.safe_to_number(SUBSTR(v_header2,6,2)); END IF; -- consumpties
WHEN 3 THEN IF v_header1 = 'Year' THEN v_header_jaar := FAC.safe_to_number(v_header2); END IF; -- losse condimenten
WHEN 4 THEN IF v_header1 = 'Month' THEN v_header_maand := FAC.safe_to_number(v_header2); END IF; -- losse condimenten
WHEN 7 THEN IF v_header1 = 'Pandcodes' AND v_header2 = 'City' AND v_header3 = 'Street' AND v_header4 = 'Total' THEN v_header_chk2 := TRUE; END IF; -- losse condimenten
WHEN 7 THEN IF v_header1 = 'Pandcodes' AND v_header2 = 'City' AND v_header3 = 'Street' AND v_header4 = 'BTW%' AND (v_header5 = 'Total' OR v_header5 = 'Totaal') THEN v_header_chk2 := TRUE; END IF; -- losse condimenten
WHEN 8 THEN IF v_header1 = 'Pandcode' AND v_header2 = 'CITY_SHIP_TO' AND v_header3 = 'STREET_SHIP_TO' AND v_header4 = 'Total' THEN v_header_chk2 := TRUE; END IF; -- consumpties
ELSE NULL;
END CASE;
@@ -5828,16 +5832,23 @@ BEGIN
THEN
header_found := TRUE;
END IF;
ELSIF v_header1 <> 'Grand Total'
ELSIF v_header1 <> 'Grand Total' AND v_header1 <> 'Eindtotaal'
THEN
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 1, v_pandcode);
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 2, v_plaats);
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 3, v_adres);
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 4, v_bedrag_txt);
IF v_onderwerp = 'Variabele kosten losse condimenten:'
THEN
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 4, v_btw_txt);
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 5, v_bedrag_txt);
ELSE
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 4, v_bedrag_txt);
v_btw_txt := '0,09';
END IF;
-- voeg nieuwe records toe
-- en wijzig bestaande records
v_aanduiding := v_pandcode || '|' || v_plaats || ' | ' || v_adres || ' | ' || v_bedrag_txt;
v_aanduiding := v_pandcode || '|' || v_plaats || ' | ' || v_adres || ' | ' || v_btw_txt || ' | ' || v_bedrag_txt;
v_errorhint := 'Zoek het juiste gebouw op';
BEGIN
@@ -5860,37 +5871,44 @@ BEGIN
fac.imp_writelog (p_import_key, 'E', 'Meerdere gebouwen gevonden.', v_aanduiding);
v_ongeldig := TRUE;
END;
-- controle op btw
v_errorhint := 'Controle op btw';
v_btw_txt := replace (v_btw_txt, ',','.'); -- Komma omzetten naar punten als decimaal scheidingsteken.
v_btw := FAC.safe_to_number(v_btw_txt)*100;
-- controle op bedrag
v_errorhint := 'Controle op bedrag';
v_bedrag := FAC.safe_to_number(
replace(
v_bedrag_txt := replace(
replace(
replace(
replace(v_bedrag_txt, '<EFBFBD>') -- Euroteken vervangen
,' ') -- Er komen spaties voor tussen een min-teken en het bedrag.
,'.') -- Duizendtal scheidingsteken vervangen
,',','.') -- Komma omzetten naar punten als decimaal scheidingsteken.
);
,',','.'); -- Komma omzetten naar punten als decimaal scheidingsteken.
v_bedrag := FAC.safe_to_number(v_bedrag_txt);
IF v_bedrag IS NULL
THEN
fac.imp_writelog (p_import_key, 'E', 'Bedrag is geen nummer', v_aanduiding || '(' || replace(v_bedrag_txt, '<EFBFBD>') || ')');
fac.imp_writelog (p_import_key, 'E', 'Bedrag is geen nummer', v_aanduiding || '(' || v_bedrag_txt || ')');
v_ongeldig := TRUE;
END IF;
v_errorhint := 'Vul de importtabel';
IF v_ongeldig = FALSE
IF v_ongeldig = FALSE AND v_bedrag <> 0
THEN
INSERT INTO yask_imp_rabo_automaten (onderwerp,
alg_locatie_key,
alg_gebouw_key,
periode,
bedrag)
bedrag,
btw)
VALUES (v_onderwerp,
v_locatie_key,
v_gebouw_key,
v_header_jaar || '-' || v_header_maand,
v_bedrag);
v_bedrag,
v_btw);
END IF;
END IF;
END;
@@ -5915,7 +5933,8 @@ CREATE OR REPLACE PROCEDURE yask_update_rabo_automaten (p_import_key IN NUMBER)
AS
CURSOR c_cursor IS
SELECT *
FROM yask_imp_rabo_automaten;
FROM yask_imp_rabo_automaten
ORDER BY alg_gebouw_key;
CURSOR c_mld (c_stdmelding_key IN NUMBER)
IS
@@ -5943,8 +5962,12 @@ AS
v_bedrijf_key NUMBER (10);
v_contact_key NUMBER (10);
v_opdr_key NUMBER (10);
v_gebouw_key_prev NUMBER(10);
v_mld_opdr_bedrijfopdr_volgnr NUMBER;
v_rb_goedgekeurd_kenmerk_key NUMBER (10);
v_typefactuur_kenmerk_key NUMBER (10);
v_usrdata_key NUMBER (10);
v_opdr_kosten mld_opdr.mld_opdr_kosten%TYPE;
v_stdmelding_t_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
v_stdmelding_t_accepttijd mld_stdmelding.mld_stdmelding_t_accepttijd%TYPE;
v_stdmelding_code mld_stdmelding.mld_stdmelding_code%TYPE;
@@ -5953,8 +5976,32 @@ AS
v_opdr_datumbegin DATE;
v_opdr_einddatum DATE;
PROCEDURE add_kenmerk_btw_bedrag (p_opdr_key IN NUMBER, p_typeopdr_key IN NUMBER, p_btw IN NUMBER, p_bedrag IN NUMBER)
AS
v_btw_bedrag_kenmerk_key NUMBER;
v_kenmerk_code VARCHAR2(20);
BEGIN
CASE p_btw
WHEN 21 THEN v_kenmerk_code := 'BEDRAGHOOG';
WHEN 9 THEN v_kenmerk_code := 'BEDRAGLAAG';
WHEN 0 THEN v_kenmerk_code := 'BEDRAGNUL';
ELSE RETURN;
END CASE;
-- zoek het kenmerk op.
SELECT mld_kenmerk_key
INTO v_btw_bedrag_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_code = v_kenmerk_code
AND k.mld_typeopdr_key = p_typeopdr_key;
FLX.setflex('OPD', v_btw_bedrag_kenmerk_key, p_opdr_key, p_bedrag);
END;
BEGIN
-- initialisatie
v_gebouw_key_prev := -1;
v_errormsg := 'Opdrachttype opzoeken om de opdracht onder aan te maken';
SELECT mld_typeopdr_key
INTO v_typeopdr_key
@@ -5969,192 +6016,211 @@ BEGIN
FOR rec IN c_cursor
LOOP
IF v_stdmelding_key IS NULL
THEN
IF rec.onderwerp = 'Variabele kosten losse condimenten:'
IF v_gebouw_key_prev <> rec.alg_gebouw_key
THEN
-- Bij vervolregels met een ander btw tarief gaan we geen meldingen en opdrachten aanmaken.
IF v_stdmelding_key IS NULL
THEN
v_stdmelding_code := 'RB_RABO_AUTOMATEN_CONDIMENTEN';
ELSIF rec.onderwerp = 'Variabele kosten consumpties:'
THEN
v_stdmelding_code := 'RB_RABO_AUTOMATEN_CONSUMPTIES';
ELSE
fac.imp_writelog (p_import_key, 'E', 'Fout bij aanmaken catering RB opdracht', 'Melding niet gevonden voor: ' || rec.onderwerp);
RETURN;
IF rec.onderwerp = 'Variabele kosten losse condimenten:'
THEN
v_stdmelding_code := 'RB_RABO_AUTOMATEN_CONDIMENTEN';
ELSIF rec.onderwerp = 'Variabele kosten consumpties:'
THEN
v_stdmelding_code := 'RB_RABO_AUTOMATEN_CONSUMPTIES';
ELSE
fac.imp_writelog (p_import_key, 'E', 'Fout bij aanmaken catering RB opdracht', 'Melding niet gevonden voor: ' || rec.onderwerp);
RETURN;
END IF;
-- zoek de standaardmelding
v_errormsg := 'Standaard melding met code RB_RABO_AUTOMATEN opzoeken';
SELECT mld_stdmelding_key,
mld_stdmelding_t_uitvoertijd,
mld_stdmelding_t_accepttijd
INTO v_stdmelding_key,
v_stdmelding_t_uitvoertijd,
v_stdmelding_t_accepttijd
FROM mld_stdmelding
WHERE mld_stdmelding_code = v_stdmelding_code;
-- Dan zijn de grensdata ook nog niet geinitialiseerd.
v_melding_datum := TO_DATE(SUBSTR(rec.periode, 1,4) || '0101', 'YYYYMMDD');
v_melding_einddatum := ADD_MONTHS(v_melding_datum, 12) -1;
v_opdr_datumbegin := TO_DATE(rec.periode || '-01', 'YYYY-MM-DD');
v_opdr_einddatum := ADD_MONTHS(v_opdr_datumbegin, 1) -1;
END IF;
-- zoek de standaardmelding
v_errormsg := 'Standaard melding met code RB_RABO_AUTOMATEN opzoeken';
SELECT mld_stdmelding_key,
mld_stdmelding_t_uitvoertijd,
mld_stdmelding_t_accepttijd
INTO v_stdmelding_key,
v_stdmelding_t_uitvoertijd,
v_stdmelding_t_accepttijd
FROM mld_stdmelding
WHERE mld_stdmelding_code = v_stdmelding_code;
BEGIN
-- controleer of er een openstaande melding is voor dit gebouw
v_errormsg := 'Kunnen we een melding vinden onder gebouw: ' || rec.alg_gebouw_key;
SELECT mld_melding_key, mld_melding_status
INTO v_melding_key, v_melding_status
FROM mld_melding
WHERE mld_stdmelding_key = v_stdmelding_key -- Verzamelmelding Catering
AND mld_melding_status IN (0, 2, 3, 99, 4, 7) -- FrontOffice, Nieuw, Te accepteren, Niet opgelost, In behandeling, Uitgegeven
AND mld_alg_onroerendgoed_keys = rec.alg_gebouw_key
AND v_opdr_datumbegin BETWEEN mld_melding_datum AND mld_melding_einddatum;
-- Dan zijn de grensdata ook nog niet geinitialiseerd.
v_melding_datum := TO_DATE(SUBSTR(rec.periode, 1,4) || '0101', 'YYYYMMDD');
v_melding_einddatum := ADD_MONTHS(v_melding_datum, 12) -1;
v_opdr_datumbegin := TO_DATE(rec.periode || '-01', 'YYYY-MM-DD');
v_opdr_einddatum := ADD_MONTHS(v_opdr_datumbegin, 1) -1;
IF v_melding_status = 0 OR v_melding_status = 2
THEN
mld.setmeldingstatus (v_melding_key, 4, v_perslid_key);
END IF;
END IF;
BEGIN
-- controleer of er een openstaande melding is voor dit gebouw
v_errormsg := 'Kunnen we een melding vinden onder gebouw: ' || rec.alg_gebouw_key;
SELECT mld_melding_key, mld_melding_status
INTO v_melding_key, v_melding_status
FROM mld_melding
WHERE mld_stdmelding_key = v_stdmelding_key -- Verzamelmelding Catering
AND mld_melding_status IN (0, 2, 3, 99, 4, 7) -- FrontOffice, Nieuw, Te accepteren, Niet opgelost, In behandeling, Uitgegeven
AND mld_alg_onroerendgoed_keys = rec.alg_gebouw_key
AND v_opdr_datumbegin BETWEEN mld_melding_datum AND mld_melding_einddatum;
IF v_melding_status = 0 OR v_melding_status = 2
EXCEPTION WHEN NO_DATA_FOUND
THEN
-- dan gaan we een nieuwe melding aanmaken
v_errormsg := 'We gaan een nieuwe melding aanmaken onder gebouw: ' || rec.alg_gebouw_key;
INSERT INTO mld_melding (mld_melding_omschrijving,
prs_perslid_key,
prs_kostenplaats_key,
mld_stdmelding_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_einddatum,
mld_melding_datum,
mld_melding_t_uitvoertijd,
mld_melding_t_accepttijd,
mld_meldbron_key,
mld_melding_module,
mld_melding_spoed)
VALUES ('Automaat ReversedBilling boekingen',
v_perslid_key, -- API catering rabobank
v_kostenplaats_key, -- Rabobank (kostenplaats van bovenstaande user)
v_stdmelding_key,
rec.alg_locatie_key,
rec.alg_gebouw_key,
v_melding_einddatum,
v_melding_datum,
v_stdmelding_t_uitvoertijd,
v_stdmelding_t_accepttijd,
5,
'MLD',
3)
RETURNING mld_melding_key
INTO v_melding_key;
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
mld.setmeldingstatus (v_melding_key, 4, v_perslid_key);
END IF;
END;
EXCEPTION WHEN NO_DATA_FOUND
THEN
-- dan gaan we een nieuwe melding aanmaken
v_errormsg := 'We gaan een nieuwe melding aanmaken onder gebouw: ' || rec.alg_gebouw_key;
INSERT INTO mld_melding (mld_melding_omschrijving,
prs_perslid_key,
prs_kostenplaats_key,
mld_stdmelding_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_einddatum,
mld_melding_datum,
mld_melding_t_uitvoertijd,
mld_melding_t_accepttijd,
mld_meldbron_key,
mld_melding_module,
mld_melding_spoed)
VALUES ('Automaat ReversedBilling boekingen',
v_perslid_key, -- API catering rabobank
v_kostenplaats_key, -- Rabobank (kostenplaats van bovenstaande user)
v_stdmelding_key,
rec.alg_locatie_key,
rec.alg_gebouw_key,
v_melding_einddatum,
v_melding_datum,
v_stdmelding_t_uitvoertijd,
v_stdmelding_t_accepttijd,
5,
'MLD',
3)
RETURNING mld_melding_key
INTO v_melding_key;
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
mld.setmeldingstatus (v_melding_key, 4, v_perslid_key);
END;
-- maak een opdracht aan voor dit gebouw en deze periode
BEGIN
-- Zoek het bedrijf waaronder de opdracht aangemaakt moet worden. Dit is het bedrijf waarvan
-- de user, onder wie we de melding en opdracht aanmaken, de contactpersoon is.
v_errormsg := 'Het bedrijf opzoeken om de opdracht aan te koppelen. ' || v_perslid_key;
SELECT prs_bedrijf_key
INTO v_bedrijf_key
FROM prs_contactpersoon cp
WHERE cp.prs_perslid_key = v_perslid_key;
-- Nu op zoek naar het ReversedBilling contract
v_errormsg := 'Contract opzoeken om aan de opdracht te koppelen (bedrijf:' || v_bedrijf_key || ')';
SELECT cnt_contract_key
INTO v_contact_key
FROM cnt_contract c, cnt_discipline d
WHERE c.ins_discipline_key = d.ins_discipline_key
AND UPPER(d.ins_discipline_omschrijving) LIKE 'REVERSED%'
AND c.cnt_prs_bedrijf_key = v_bedrijf_key
AND v_opdr_datumbegin BETWEEN c.cnt_contract_looptijd_van AND c.cnt_contract_looptijd_tot;
-- maak een opdracht aan voor dit gebouw en deze periode
BEGIN
-- Zoek het bedrijf waaronder de opdracht aangemaakt moet worden. Dit is het bedrijf waarvan
-- de user, onder wie we de melding en opdracht aanmaken, de contactpersoon is.
v_errormsg := 'Het bedrijf opzoeken om de opdracht aan te koppelen. ' || v_perslid_key;
SELECT prs_bedrijf_key
INTO v_bedrijf_key
FROM prs_contactpersoon cp
WHERE cp.prs_perslid_key = v_perslid_key;
-- Nu op zoek naar het ReversedBilling contract
v_errormsg := 'Contract opzoeken om aan de opdracht te koppelen (bedrijf:' || v_bedrijf_key || ')';
SELECT cnt_contract_key
INTO v_contact_key
FROM cnt_contract c, cnt_discipline d
WHERE c.ins_discipline_key = d.ins_discipline_key
AND UPPER(d.ins_discipline_omschrijving) LIKE 'REVERSED%'
AND c.cnt_prs_bedrijf_key = v_bedrijf_key
AND v_opdr_datumbegin BETWEEN c.cnt_contract_looptijd_van AND c.cnt_contract_looptijd_tot;
-- Controleer of er al een opdracht bestaat.
SELECT count(*)
INTO v_count
FROM mld_opdr o, mld_melding m
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = rec.alg_gebouw_key
AND m.mld_stdmelding_key = v_stdmelding_key
AND o.mld_opdr_datumbegin = v_opdr_datumbegin
AND o.mld_opdr_einddatum = v_opdr_einddatum;
IF v_count = 0
THEN
v_mld_opdr_bedrijfopdr_volgnr := mld.bepaalopdrmeldingvolgnr (v_melding_key);
-- Controleer of er al een opdracht bestaat.
SELECT count(*)
INTO v_count
FROM mld_opdr o, mld_melding m
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = rec.alg_gebouw_key
AND m.mld_stdmelding_key = v_stdmelding_key
AND o.mld_opdr_datumbegin = v_opdr_datumbegin
AND o.mld_opdr_einddatum = v_opdr_einddatum;
IF v_count = 0
THEN
v_mld_opdr_bedrijfopdr_volgnr := mld.bepaalopdrmeldingvolgnr (v_melding_key);
v_errormsg := 'Maak opdracht aan';
v_errormsg := 'Maak opdracht aan';
-- maak opdracht aan om cateringfactuur van leverancier te matchen
INSERT INTO mld_opdr (mld_melding_key,
prs_kostenplaats_key,
mld_statusopdr_key,
mld_typeopdr_key,
prs_perslid_key,
cnt_contract_key,
mld_uitvoerende_keys,
mld_opdr_datumbegin,
mld_opdr_einddatum,
mld_opdr_module,
mld_opdr_omschrijving,
mld_opdr_materiaal,
mld_opdr_kosten,
mld_opdr_bedrijfopdr_volgnr)
VALUES ( v_melding_key,
v_kostenplaats_key, -- Rabobank kostenplaats
5, -- uitgegeven
v_typeopdr_key,
v_perslid_key, -- Maas import user
v_contact_key,
v_bedrijf_key,
v_opdr_datumbegin,
v_opdr_einddatum,
'MLD',
'Automaat kosten export-maand: ' || TO_CHAR (TRUNC(SYSDATE, 'MM') -1, 'MON-YYYY'),
rec.bedrag,
rec.bedrag,
v_mld_opdr_bedrijfopdr_volgnr)
RETURNING mld_opdr_key INTO v_opdr_key;
-- maak opdracht aan om cateringfactuur van leverancier te matchen
INSERT INTO mld_opdr (mld_melding_key,
prs_kostenplaats_key,
mld_statusopdr_key,
mld_typeopdr_key,
prs_perslid_key,
cnt_contract_key,
mld_uitvoerende_keys,
mld_opdr_datumbegin,
mld_opdr_einddatum,
mld_opdr_module,
mld_opdr_omschrijving,
mld_opdr_bedrijfopdr_volgnr)
VALUES ( v_melding_key,
v_kostenplaats_key, -- Rabobank kostenplaats
5, -- uitgegeven
v_typeopdr_key,
v_perslid_key, -- Maas import user
v_contact_key,
v_bedrijf_key,
v_opdr_datumbegin,
v_opdr_einddatum,
'MLD',
'Automaat kosten export-maand: ' || TO_CHAR (TRUNC(SYSDATE, 'MM') -1, 'MON-YYYY'),
v_mld_opdr_bedrijfopdr_volgnr)
RETURNING mld_opdr_key INTO v_opdr_key;
v_errormsg := 'Update opdracht status';
-- meld de opdracht af
MLD.setopdrachtstatus (v_opdr_key, 6, v_perslid_key);
MLD.updatemeldingstatus (v_melding_key, 0, v_perslid_key); -- Facilitor
-- antedateren van de tracking omdat de reversedbilling alleen meegenomen wordt als de opdracht in de vorige maand is afgerond.
UPDATE fac_tracking SET fac_tracking_datum = v_opdr_einddatum
WHERE fac_tracking_refkey = v_opdr_key
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFM');
-- en zet hem nog op afgerond
MLD.setopdrachtstatus (v_opdr_key, 9, v_perslid_key);
UPDATE fac_tracking SET fac_tracking_datum = v_opdr_einddatum
WHERE fac_tracking_refkey = v_opdr_key
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFR');
v_errormsg := 'Update opdracht status';
-- meld de opdracht af
MLD.setopdrachtstatus (v_opdr_key, 6, v_perslid_key);
MLD.updatemeldingstatus (v_melding_key, 0, v_perslid_key); -- Facilitor
-- antedateren van de tracking omdat de reversedbilling alleen meegenomen wordt als de opdracht in de vorige maand is afgerond.
UPDATE fac_tracking SET fac_tracking_datum = v_opdr_einddatum
WHERE fac_tracking_refkey = v_opdr_key
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFM');
-- en zet hem nog op afgerond
MLD.setopdrachtstatus (v_opdr_key, 9, v_perslid_key);
UPDATE fac_tracking SET fac_tracking_datum = v_opdr_einddatum
WHERE fac_tracking_refkey = v_opdr_key
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFR');
v_errormsg := 'Opvragen van het opdrachtkenmerk: RB_GOEDGEKEURD';
SELECT mld_kenmerk_key
INTO v_rb_goedgekeurd_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_code = 'RB_GOEDGEKEURD' -- Dispuut
AND k.mld_typeopdr_key = v_typeopdr_key;
v_errormsg := 'Opvragen van het opdrachtkenmerk: RB_GOEDGEKEURD';
SELECT mld_kenmerk_key
INTO v_rb_goedgekeurd_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_code = 'RB_GOEDGEKEURD' -- Dispuut
AND k.mld_typeopdr_key = v_typeopdr_key;
v_errormsg := 'Kenmerk RB_GOEDGEKEURD op 1 zetten';
FLX.setflex('OPD', v_rb_goedgekeurd_kenmerk_key, v_opdr_key, '1');
ELSE
fac.imp_writelog (p_import_key, 'E', 'RB opdracht bestaat al', rec.onderwerp || ' | ' || rec.alg_locatie_key || ' | ' || rec.alg_gebouw_key || ' | ' || rec.periode || '-' || rec.bedrag);
END IF;
v_errormsg := 'Kenmerk RB_GOEDGEKEURD op 1 zetten';
FLX.setflex('OPD', v_rb_goedgekeurd_kenmerk_key, v_opdr_key, '1');
END;
v_errormsg := 'Opvragen van het opdrachtkenmerk: TYPEFACTUUR';
SELECT k.mld_kenmerk_key, k.mld_kenmerk_default
INTO v_typefactuur_kenmerk_key, v_usrdata_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_code = 'TYPEFACTUUR'
AND k.mld_typeopdr_key = v_typeopdr_key;
v_errormsg := 'Kenmerk TYPEFACTUUR op B zetten';
-- Dit is de default van het kenmerk
FLX.setflex('OPD', v_typefactuur_kenmerk_key, v_opdr_key, v_usrdata_key);
VBXX.set_opslag_perc (v_opdr_key);
ELSE
fac.imp_writelog (p_import_key, 'E', 'RB opdracht bestaat al', rec.onderwerp || ' | ' || rec.alg_locatie_key || ' | ' || rec.alg_gebouw_key || ' | ' || rec.periode || '-' || rec.bedrag);
END IF;
END;
v_gebouw_key_prev := rec.alg_gebouw_key;
v_opdr_kosten := 0;
END IF;
-- Voeg het kenmerk met het bedrag toe en tel het totaal voor de opdracht op.
add_kenmerk_btw_bedrag (v_opdr_key, v_typeopdr_key, rec.btw, rec.bedrag);
v_opdr_kosten := v_opdr_kosten + rec.bedrag;
UPDATE mld_opdr SET mld_opdr_kosten = v_opdr_kosten, mld_opdr_materiaal = v_opdr_kosten WHERE mld_opdr_key = v_opdr_key;
END LOOP;
-- afmelden oude meldingen
FOR rec_mld IN c_mld (v_stdmelding_key)
LOOP
v_errormsg := 'Afmelden oude melding ' || rec_mld.mld_melding_key;