diff --git a/PCHX/pchx.sql b/PCHX/pchx.sql index 93fa72198..2a7db99a8 100644 --- a/PCHX/pchx.sql +++ b/PCHX/pchx.sql @@ -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; /