PCHX#63945 Import xml-factuur uit Scansys (xml ipv csv)

svn path=/Customer/trunk/; revision=50111
This commit is contained in:
Sander Schepers
2021-03-01 14:30:04 +00:00
parent bcfbf286ce
commit 3ef2694b57

View File

@@ -4719,62 +4719,83 @@ BEGIN
WHERE fin_factuur_key = rec.fin_factuur_key;
-- administratie
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);
IF rec.kenmerk6 IS NULL
THEN
v_errorhint := 'Geen administratie';
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
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);
IF rec.kenmerk1 IS NULL
THEN
v_errorhint := 'Geen boekstuknummer';
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
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));
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
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));
IF rec.kenmerk4 IS NULL
THEN
v_errorhint := 'Geen grootboekrekening';
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 = '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;
END;
END LOOP;
FOR rec IN km_factuurregels
LOOP
BEGIN
v_kostenplaats := 0;
v_kostenplaats := NULL;
SELECT MAX (prs_kostenplaats_key)
INTO v_kostenplaats
@@ -4783,53 +4804,72 @@ BEGIN
AND prs_kostenplaats_verwijder IS NULL;
--Afwijkende grootboekrekening (factuurregel)
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));
IF rec.kenmerk8 IS NULL
THEN
v_errorhint := 'Geen afw. grootboekrekening 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. 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)
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));
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)
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));
IF v_kostenplaats <> 0
IF rec.kenmerk3 IS NULL
THEN
--Afw. kostenplaats (factuurregel)
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)
@@ -4842,21 +4882,42 @@ BEGIN
END IF;
--Kostensoort (factuurregel)
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;
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;
--Regelnummer (factuurregel)
UPDATE fin_factuurregel
SET fin_factuurregel_nr = rec.kenmerk9
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
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;
--Eigentabellen zonder code
--Factuurkenmerken moeten nog
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);
END;
/