terug naar Scansys

svn path=/Customer/trunk/; revision=56248
This commit is contained in:
Sander Schepers
2022-06-15 08:15:01 +00:00
parent 504496c5dd
commit 99a6c18b8a

View File

@@ -4516,437 +4516,508 @@ END;
/
CREATE OR REPLACE PROCEDURE pchx_post_upd_fin_scansys_xml (
p_import_key IN NUMBER)
p_import_key IN NUMBER)
AS
CURSOR km_facturen
IS
SELECT factuurnr,
fin_factuur_key,
omschrijving,
-- opmerking,
kenmerk1,
kenmerk4,
kenmerk6,
kenmerk12,
debiteurnr,
fac_import_key,
(SELECT DISTINCT (MAX (p.prs_perslid_key))
FROM prs_perslid p, fac_v_rap_groeprechten r
WHERE r.fclt_f_login = p.prs_perslid_oslogin
AND r.fclt_f_funcode = 'WEB_FINGOE')
AS goedkeurder
FROM ( SELECT factuurnr,
MAX (fin_factuur_key) AS fin_factuur_key,
omschrijving,
-- opmerking,
kenmerk1,
kenmerk4,
kenmerk6,
kenmerk12,
debiteurnr,
fac_import_key
FROM fac_imp_factuur
GROUP BY factuurnr,
omschrijving,
-- opmerking,
kenmerk1,
kenmerk4,
kenmerk6,
kenmerk12,
debiteurnr,
fac_import_key);
CURSOR km_facturen IS
SELECT factuurnr,
fin_factuur_key,
omschrijving,
-- opmerking,
kenmerk1,
kenmerk4,
kenmerk6,
kenmerk12,
debiteurnr,
fac_import_key,
(SELECT DISTINCT (MAX (p.prs_perslid_key))
FROM prs_perslid p, fac_v_rap_groeprechten r
WHERE r.fclt_f_login = p.prs_perslid_oslogin
AND r.fclt_f_funcode = 'WEB_FINGOE') AS goedkeurder
FROM ( SELECT factuurnr,
MAX (fin_factuur_key) AS fin_factuur_key,
omschrijving,
-- opmerking,
kenmerk1,
kenmerk4,
kenmerk6,
kenmerk12,
debiteurnr,
fac_import_key
FROM fac_imp_factuur
GROUP BY factuurnr,
omschrijving,
-- opmerking,
kenmerk1,
kenmerk4,
kenmerk6,
kenmerk12,
debiteurnr,
fac_import_key);
CURSOR km_factuurregels
IS
SELECT *
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key;
CURSOR km_factuurregels IS
SELECT *
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key;
CURSOR btw
IS
SELECT f.fac_import_key,
f.fac_imp_file_index,
f.fin_factuur_key,
f.fin_factuurregel_key,
f.btw,
f.kenmerk11,
f.btw_bedrag
FROM fac_imp_factuur f
WHERE f.fac_import_key = p_import_key;
CURSOR btw IS
SELECT f.fac_import_key,
f.fac_imp_file_index,
f.fin_factuur_key,
f.fin_factuurregel_key,
f.btw,
f.kenmerk11,
f.btw_bedrag
FROM fac_imp_factuur f
WHERE f.fac_import_key = p_import_key;
v_factuur_key NUMBER (10);
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_afwbedrijf VARCHAR2 (200);
v_grootboekrekening VARCHAR2 (200);
v_kostendrager VARCHAR2 (200);
v_kostenplaats NUMBER;
v_referentie_key NUMBER;
v_opmerking VARCHAR2 (3000);
v_omschrijving VARCHAR2 (3000);
v_afw_boekdatum VARCHAR2 (200);
CURSOR btw_verlegd IS
SELECT f.fac_import_key,
f.fac_imp_file_index,
f.fin_factuur_key,
f.fin_factuurregel_key,
f.btw,
f.kenmerk11,
f.btw_bedrag
FROM fac_imp_factuur f
WHERE f.fac_import_key = p_import_key
AND (f.kenmerk11 = 'I21' OR f.kenmerk11 = 'I9');
v_factuur_key NUMBER (10);
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_afwbedrijf VARCHAR2 (200);
v_grootboekrekening VARCHAR2 (200);
v_kostendrager VARCHAR2 (200);
v_kostenplaats NUMBER;
v_referentie_key NUMBER;
v_opmerking VARCHAR2 (3000);
v_omschrijving VARCHAR2 (3000);
v_afw_boekdatum VARCHAR2 (200);
v_btwverlegd_key VARCHAR2 (200);
BEGIN
-- In PCHY zijn er meerdere BTW codes met 21%, hier zetten we deze goed.
v_errorhint := 'BTW code goedzetten';
-- In PCHY zijn er meerdere BTW codes met 21%, hier zetten we deze goed.
v_errorhint := 'BTW code goedzetten';
FOR rec IN btw
LOOP
BEGIN
IF pchx.get_user = 'PCHY'
THEN
UPDATE fin_factuurregel
SET fin_btwtabelwaarde_key = 24 -- BTW key voor code 23 - Hoog-21% - inclusief vrijgesteld
WHERE fin_factuurregel_key = rec.fin_factuurregel_key
AND rec.kenmerk11 = '23';
END IF;
END;
END LOOP;
-- Er kunnen meerdere BTW codes zijn met zelfde BTW percentage ivm btw verlegd, hier zetten we deze goed.
v_errorhint := 'BTW code verlegd goedzetten';
FOR rec IN btw_verlegd
LOOP
BEGIN
SELECT fin_btwtabelwaarde_key
INTO v_btwverlegd_key
FROM fin_btwtabelwaarde
WHERE fin_btwtabelwaarde_code = rec.kenmerk11
AND fin_btwtabelwaarde_verwijder IS NULL;
FOR rec IN btw
LOOP
BEGIN
IF pchx.get_user = 'PCHY'
THEN
UPDATE fin_factuurregel
SET fin_btwtabelwaarde_key = 24 -- BTW key voor code 23 - Hoog-21% - inclusief vrijgesteld
WHERE fin_factuurregel_key = rec.fin_factuurregel_key
AND rec.kenmerk11 = '23';
END IF;
END;
END LOOP;
SET fin_btwtabelwaarde_key = v_btwverlegd_key -- BTW key bijbehorende BTW code (I21 / I9)
WHERE fin_factuurregel_key = rec.fin_factuurregel_key
AND (rec.kenmerk11 = 'I21' OR rec.kenmerk11 = 'I9');
END;
END LOOP;
-- De kenmerken bij de facturen en factuurregels worden hieronder nog gevuld.
v_errorhint := 'Kenmerken facturen vullen';
-- De kenmerken bij de facturen en factuurregels worden hieronder nog gevuld.
v_errorhint := 'Kenmerken facturen vullen';
FOR rec IN km_facturen
LOOP
v_opmerking := SUBSTR (rec.omschrijving, 1, 250);
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
v_opmerking := REPLACE (v_opmerking, '@@', CHR (13));
FOR rec IN km_facturen
LOOP
v_opmerking := SUBSTR (rec.omschrijving, 1, 250);
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
v_opmerking := REPLACE (v_opmerking, '@@', CHR (13));
v_errorhint := 'Opmerking bij factuur vullen';
v_errorhint := 'Opmerking bij factuur vullen';
UPDATE fin_factuur
SET fin_factuur_opmerking = v_opmerking
WHERE fin_factuur_key = rec.fin_factuur_key;
UPDATE fin_factuur
SET fin_factuur_opmerking = v_opmerking
WHERE fin_factuur_key = rec.fin_factuur_key;
BEGIN
v_errorhint := 'Debiteur in factuur vullen';
BEGIN
v_errorhint := 'Debiteur in factuur vullen';
--Debiteur bij de factuur overnemen van de tag <Debiteur>
UPDATE fin_factuur
SET fin_factuur_debiteur_nr = rec.kenmerk12
WHERE fin_factuur_key = rec.fin_factuur_key;
--Debiteur bij de factuur overnemen van de tag <Debiteur>
UPDATE fin_factuur
SET fin_factuur_debiteur_nr = rec.kenmerk12
WHERE fin_factuur_key = rec.fin_factuur_key;
v_errorhint := 'Goedkeurder in factuur vullen';
v_errorhint := 'Goedkeurder in factuur vullen';
--Een goedkeurder vullen bij de factuur
UPDATE fin_factuur
SET prs_perslid_key_goedkeur = rec.goedkeurder
WHERE fin_factuur_key = rec.fin_factuur_key
AND rec.fin_factuur_key IS NOT NULL;
--Een goedkeurder vullen bij de factuur
UPDATE fin_factuur
SET prs_perslid_key_goedkeur = rec.goedkeurder
WHERE fin_factuur_key = rec.fin_factuur_key
AND rec.fin_factuur_key IS NOT NULL;
-- administratie
IF rec.kenmerk6 IS NULL
THEN
v_errorhint := 'Geen administratie';
fac.imp_writelog (
p_import_key,
'E',
v_errormsg || v_errorhint,
'Er is geen administratie gevuld bij dit boekstuknummer '
|| rec.kenmerk1);
ELSE
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper = 'ADMINISTRATIE'),
rec.kenmerk6);
END IF;
-- administratie
IF rec.kenmerk6 IS NULL
THEN
v_errorhint := 'Geen administratie';
fac.imp_writelog (
p_import_key,
'E',
v_errormsg || v_errorhint,
'Er is geen administratie gevuld bij dit boekstuknummer '
|| rec.kenmerk1);
ELSE
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (
rec.fin_factuur_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'ADMINISTRATIE'),
rec.kenmerk6);
END IF;
-- boekstuknummer
IF rec.kenmerk1 IS NULL
THEN
v_errorhint := 'Geen boekstuknummer';
fac.imp_writelog (p_import_key,
'E',
v_errormsg || v_errorhint,
'Er is geen boekstuknummer gevuld');
ELSE
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper = 'BOEKSTUKNUMMER'),
rec.kenmerk1);
END IF;
-- boekstuknummer
IF rec.kenmerk1 IS NULL
THEN
v_errorhint := 'Geen boekstuknummer';
fac.imp_writelog (p_import_key,
'E',
v_errormsg || v_errorhint,
'Er is geen boekstuknummer gevuld');
ELSE
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (
rec.fin_factuur_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'BOEKSTUKNUMMER'),
rec.kenmerk1);
END IF;
-- Afwijkend bedrijf
IF rec.debiteurnr IS NULL
THEN
v_errorhint := 'Geen afw. bedrijf';
ELSE
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper = 'AFW. BEDRIJF'),
(SELECT MAX (prs_bedrijf_key)
FROM prs_v_aanwezigbedrijf
WHERE fac.safe_to_number (prs_leverancier_nr) =
rec.debiteurnr));
END IF;
-- Afwijkend bedrijf
IF rec.debiteurnr IS NULL
THEN
v_errorhint := 'Geen afw. bedrijf';
ELSE
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (
rec.fin_factuur_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'AFW. BEDRIJF'),
(SELECT MAX (prs_bedrijf_key)
FROM prs_v_aanwezigbedrijf
WHERE fac.safe_to_number (
prs_leverancier_nr) =
rec.debiteurnr));
END IF;
--Grootboekrekening
IF rec.kenmerk4 IS NULL
THEN
v_errorhint := 'Geen grootboekrekening';
ELSE
v_errorhint := 'Fout bij inlezen grootboekrekening';
--Grootboekrekening
IF rec.kenmerk4 IS NULL
THEN
v_errorhint := 'Geen grootboekrekening';
ELSE
v_errorhint := 'Fout bij inlezen grootboekrekening';
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper = 'GROOTBOEKREKENING'),
(SELECT MAX (ud.fac_usrdata_key)
FROM fac_usrdata ud, fac_usrtab ut
WHERE UPPER (ut.fac_usrtab_naam) =
'GROOTBOEKREKENIN'
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND ud.fac_usrdata_code = rec.kenmerk4));
END IF;
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (
rec.fin_factuur_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'GROOTBOEKREKENING'),
(SELECT MAX (ud.fac_usrdata_key)
FROM fac_usrdata ud, fac_usrtab ut
WHERE UPPER (ut.fac_usrtab_naam) =
'GROOTBOEKREKENIN'
AND ut.fac_usrtab_key =
ud.fac_usrtab_key
AND ud.fac_usrdata_code =
rec.kenmerk4));
END IF;
v_errorhint := 'Bepalen referentie';
v_errorhint := 'Bepalen referentie';
SELECT COALESCE (mld_opdr_key, cnt_contract_key, bes_bestelopdr_key)
INTO v_referentie_key
FROM fin_factuur
WHERE fin_factuur_key = rec.fin_factuur_key
AND rec.fac_import_key = p_import_key;
SELECT COALESCE (mld_opdr_key,
cnt_contract_key,
bes_bestelopdr_key)
INTO v_referentie_key
FROM fin_factuur
WHERE fin_factuur_key = rec.fin_factuur_key
AND rec.fac_import_key = p_import_key;
IF v_referentie_key IS NULL
THEN
v_errorhint := 'Geen referentie';
fac.imp_writelog (
p_import_key,
'E',
v_errormsg || v_errorhint,
'Er is geen referentie gevonden bij dit boekstuknummer '
|| rec.kenmerk1);
END IF;
END;
END LOOP;
IF v_referentie_key IS NULL
THEN
v_errorhint := 'Geen referentie';
fac.imp_writelog (
p_import_key,
'E',
v_errormsg || v_errorhint,
'Er is geen referentie gevonden bij dit boekstuknummer '
|| rec.kenmerk1);
END IF;
END;
END LOOP;
FOR rec IN km_factuurregels
LOOP
BEGIN
v_errorhint := 'Update factuurregels';
v_kostenplaats := NULL;
v_omschrijving := SUBSTR (rec.opmerking, 1, 250);
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
FOR rec IN km_factuurregels
LOOP
BEGIN
v_errorhint := 'Update factuurregels';
v_kostenplaats := NULL;
v_omschrijving := SUBSTR (rec.opmerking, 1, 250);
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
v_omschrijving := REPLACE (v_omschrijving, '@@', CHR (13));
v_afw_boekdatum :=
TO_CHAR (
fac.safe_to_date (SUBSTR (rec.kenmerk13, 0, 10), 'yyyy-mm-dd'),
'dd-mm-yyyy');
v_omschrijving := REPLACE (v_omschrijving, '@@', CHR (13));
v_afw_boekdatum :=
TO_CHAR (
fac.safe_to_date (SUBSTR (rec.kenmerk13, 0, 10),
'yyyy-mm-dd'),
'dd-mm-yyyy');
v_errorhint := 'Update factuurregels, kostenplaats';
v_errorhint := 'Update factuurregels, kostenplaats';
SELECT MAX (prs_kostenplaats_key)
INTO v_kostenplaats
FROM prs_kostenplaats
WHERE prs_kostenplaats_upper = UPPER (rec.kenmerk10)
AND prs_kostenplaats_verwijder IS NULL;
SELECT MAX (prs_kostenplaats_key)
INTO v_kostenplaats
FROM prs_kostenplaats
WHERE prs_kostenplaats_upper = UPPER (rec.kenmerk10)
AND prs_kostenplaats_verwijder IS NULL;
v_errorhint := 'Update factuurregels, omschrijving';
v_errorhint := 'Update factuurregels, omschrijving';
UPDATE fin_factuurregel
SET fin_factuurregel_omschrijving = v_omschrijving
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
UPDATE fin_factuurregel
SET fin_factuurregel_omschrijving = v_omschrijving
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
--Afwijkende grootboekrekening (factuurregel)
v_errorhint := 'Geen afw. grootboekrekening factuurregel';
--Het BTW bedrag moet 1 op 1 worden overgenomen vanuit Scansys, om geen afrondingsverschillen te krijgen
v_errorhint := 'BTW bedrag overnemen';
UPDATE fin_factuurregel
SET fin_factuurregel_btw =
fac.safe_to_number (REPLACE (rec.kenmerk14, ',', '.'))
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
IF rec.kenmerk8 IS NULL
THEN
--Afwijkende grootboekrekening (factuurregel)
v_errorhint := 'Geen afw. grootboekrekening factuurregel';
fac.imp_writelog (
p_import_key,
'E',
v_errormsg || v_errorhint,
'Er is geen afwijkende grootboekrekening gevuld bij een factuurregel bij dit boekstuknummer '
|| rec.kenmerk1);
ELSE
INSERT INTO fin_kenmerkfactregel (fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'AFW. GROOTBOEKREKENING'),
(SELECT MAX (ud.fac_usrdata_key)
FROM fac_usrdata ud, fac_usrtab ut
WHERE UPPER (ut.fac_usrtab_naam) =
'GROOTBOEKREKENIN'
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND ud.fac_usrdata_code = rec.kenmerk8));
END IF;
--Projectcode (factuurregel)
v_errorhint := 'Geen projectcode factuurregel';
--Het BTW bedrag moet 1 op 1 worden overgenomen vanuit Scansys, om geen afrondingsverschillen te krijgen
v_errorhint := 'BTW bedrag overnemen';
IF rec.kenmerk7 IS NULL
THEN
UPDATE fin_factuurregel
SET fin_factuurregel_btw =
fac.safe_to_number (REPLACE (rec.kenmerk14, ',', '.'))
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
IF rec.kenmerk8 IS NULL
THEN
v_errorhint := 'Geen afw. grootboekrekening factuurregel';
fac.imp_writelog (
p_import_key,
'E',
v_errormsg || v_errorhint,
'Er is geen afwijkende grootboekrekening gevuld bij een factuurregel bij dit boekstuknummer '
|| rec.kenmerk1);
ELSE
INSERT INTO fin_kenmerkfactregel (
fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (
rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'AFW. GROOTBOEKREKENING'),
(SELECT MAX (ud.fac_usrdata_key)
FROM fac_usrdata ud, fac_usrtab ut
WHERE UPPER (ut.fac_usrtab_naam) =
'GROOTBOEKREKENIN'
AND ut.fac_usrtab_key =
ud.fac_usrtab_key
AND ud.fac_usrdata_code =
rec.kenmerk8));
END IF;
--Projectcode (factuurregel)
v_errorhint := 'Geen projectcode factuurregel';
ELSE
INSERT INTO fin_kenmerkfactregel (fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper = 'PROJECTCODE'),
(SELECT MAX (ud.fac_usrdata_key)
FROM fac_usrdata ud, fac_usrtab ut
WHERE UPPER (ut.fac_usrtab_naam) = 'PROJECTCODE'
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND ud.fac_usrdata_code = rec.kenmerk7));
END IF;
v_errorhint := 'Geen afw. kostendrager factuurregel';
IF rec.kenmerk7 IS NULL
THEN
v_errorhint := 'Geen projectcode factuurregel';
ELSE
INSERT INTO fin_kenmerkfactregel (
fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (
rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'PROJECTCODE'),
(SELECT MAX (ud.fac_usrdata_key)
FROM fac_usrdata ud, fac_usrtab ut
WHERE UPPER (ut.fac_usrtab_naam) =
'PROJECTCODE'
AND ut.fac_usrtab_key =
ud.fac_usrtab_key
AND ud.fac_usrdata_code =
rec.kenmerk7));
END IF;
--Afw. Kostendrager (factuurregel)
IF rec.kenmerk3 IS NULL
THEN
v_errorhint := 'Geen afw. kostendrager factuurregel';
ELSE
INSERT INTO fin_kenmerkfactregel (fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper = 'AFW. KOSTENDRAGER'),
(SELECT MAX (ud.fac_usrdata_key)
FROM fac_usrdata ud, fac_usrtab ut
WHERE UPPER (ut.fac_usrtab_naam) = 'KOSTENDRAGER'
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND ud.fac_usrdata_code = rec.kenmerk3));
END IF;
v_errorhint := 'Geen afw. kostenplaats factuurregel';
--Afw. Kostendrager (factuurregel)
IF rec.kenmerk3 IS NULL
THEN
v_errorhint := 'Geen afw. kostendrager factuurregel';
ELSE
INSERT INTO fin_kenmerkfactregel (
fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (
rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'AFW. KOSTENDRAGER'),
(SELECT MAX (ud.fac_usrdata_key)
FROM fac_usrdata ud, fac_usrtab ut
WHERE UPPER (ut.fac_usrtab_naam) =
'KOSTENDRAGER'
AND ut.fac_usrtab_key =
ud.fac_usrtab_key
AND ud.fac_usrdata_code =
rec.kenmerk3));
END IF;
--Afw. kostenplaats (factuurregel)
IF v_kostenplaats IS NULL
THEN
v_errorhint := 'Geen afw. kostenplaats factuurregel';
ELSE
INSERT INTO fin_kenmerkfactregel (fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper = 'AFW. KOSTENPLAATS'),
v_kostenplaats);
END IF;
v_errorhint := 'Geen kostensoort factuurregel';
--Afw. kostenplaats (factuurregel)
IF v_kostenplaats IS NULL
THEN
v_errorhint := 'Geen afw. kostenplaats factuurregel';
ELSE
INSERT INTO fin_kenmerkfactregel (
fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (
rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'AFW. KOSTENPLAATS'),
v_kostenplaats);
END IF;
--Kostensoort (factuurregel)
IF rec.kenmerk2 IS NULL
THEN
v_errorhint := 'Geen kostensoort factuurregel';
ELSE
UPDATE fin_factuurregel
SET prs_kostensoort_key =
(SELECT MAX (ks.prs_kostensoort_key)
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_upper = UPPER (rec.kenmerk2))
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
END IF;
--Kostensoort (factuurregel)
IF rec.kenmerk2 IS NULL
THEN
v_errorhint := 'Geen kostensoort factuurregel';
ELSE
UPDATE fin_factuurregel
SET prs_kostensoort_key =
(SELECT MAX (ks.prs_kostensoort_key)
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_upper =
UPPER (rec.kenmerk2))
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
END IF;
v_errorhint := 'Geen regelnummer factuurregel';
--Regelnummer (factuurregel)
IF rec.kenmerk9 IS NULL
THEN
v_errorhint := 'Geen regelnummer factuurregel';
ELSE
UPDATE fin_factuurregel
SET fin_factuurregel_nr = rec.kenmerk9
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
END IF;
v_errorhint := 'Geen afw. boekdatum factuurregel';
--Regelnummer (factuurregel)
IF rec.kenmerk9 IS NULL
THEN
v_errorhint := 'Geen regelnummer factuurregel';
ELSE
UPDATE fin_factuurregel
SET fin_factuurregel_nr = rec.kenmerk9
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
END IF;
--Afw. boekdatum (factuurregel)
IF rec.kenmerk13 IS NULL
THEN
v_errorhint := 'Geen afw. boekdatum factuurregel';
ELSE
INSERT INTO fin_kenmerkfactregel (fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper = 'AFW. BOEKDATUM'),
v_afw_boekdatum);
END IF;
END;
END LOOP;
COMMIT;
--Afw. boekdatum (factuurregel)
IF rec.kenmerk13 IS NULL
THEN
v_errorhint := 'Geen afw. boekdatum factuurregel';
ELSE
INSERT INTO fin_kenmerkfactregel (
fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (
rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'AFW. BOEKDATUM'),
v_afw_boekdatum);
END IF;
END;
END LOOP;
--Het BTW bedrag moet 1 op 1 worden overgenomen vanuit Scansys, om geen afrondingsverschillen te krijgen
FOR rec IN km_facturen
LOOP
v_errorhint := 'BTW bedrag factuur herrekenen';
COMMIT;
BEGIN
UPDATE fin_factuur
SET fin_factuur_totaal_btw =
(SELECT SUM (fin_factuurregel_btw)
FROM fin_factuurregel
WHERE fin_factuur_key = rec.fin_factuur_key)
WHERE fin_factuur_key = rec.fin_factuur_key;
END;
END LOOP;
--Het BTW bedrag moet 1 op 1 worden overgenomen vanuit Scansys, om geen afrondingsverschillen te krijgen
FOR rec IN km_facturen
LOOP
v_errorhint := 'BTW bedrag factuur herrekenen';
BEGIN
UPDATE fin_factuur
SET fin_factuur_totaal_btw =
(SELECT SUM (fin_factuurregel_btw)
FROM fin_factuurregel
WHERE fin_factuur_key = rec.fin_factuur_key)
WHERE fin_factuur_key = rec.fin_factuur_key;
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_errorhint);
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_errorhint);
END;
/
CREATE OR REPLACE PROCEDURE pchx_update_fin_scansys_xml (
p_import_key IN NUMBER)
AS