diff --git a/STPH/stph.sql b/STPH/stph.sql index c4e3cbe0b..22abce3a7 100644 --- a/STPH/stph.sql +++ b/STPH/stph.sql @@ -31,7 +31,7 @@ BEGIN '0;0;0;0;0;0', 'Roepnaam;Voorletters;Tussenvoegsel;Achternaam;Persnr.;Afdnr.;Functie;Email;Mobile;Telefoon;Loginnaam;%' ); - COMMIT; + COMMIT; EXCEPTION WHEN OTHERS THEN @@ -45,9 +45,9 @@ END stph_import_perslid; CREATE OR REPLACE PROCEDURE stph_post_update_perslid (p_import_key IN NUMBER) AS - v_kostenplaats_key_perslid NUMBER(10); + v_kostenplaats_key_perslid NUMBER(10); v_kostenplaats_key_afdeling NUMBER(10); - v_prs_afdeling_key NUMBER(10); + v_prs_afdeling_key NUMBER(10); CURSOR c_perslid_kpn_kenmerk IS @@ -69,46 +69,46 @@ BEGIN IF v_kostenplaats_key_perslid IS NULL THEN - -- Kostenplaats bij de persoon (vanuit AFAS) staat niet in Facilitor, persoon blijft aan de afdeling gekoppeld volgens AFAS (dus niet naar evt. 'fictieve' afdeling). - fac.imp_writelog (p_import_key, + -- Kostenplaats bij de persoon (vanuit AFAS) staat niet in Facilitor, persoon blijft aan de afdeling gekoppeld volgens AFAS (dus niet naar evt. 'fictieve' afdeling). + fac.imp_writelog (p_import_key, 'W', 'Kostenplaats van persoon' || rc.prs_perslid_nr || ' is NIET gevonden)', 'Naam:' || rc.prs_perslid_naam || ' / Afdeling: ' || rc.prs_afdeling_naam ); ELSE - -- Kostenplaats record bij de persoon is gevonden, - -- Nu eerst de kostenplaats van de afdeling bepalen - SELECT MAX(a.prs_kostenplaats_key) - INTO v_kostenplaats_key_afdeling - FROM prs_afdeling a, prs_perslid p - WHERE p.prs_perslid_nr = rc.prs_perslid_nr - AND p.prs_perslid_verwijder IS NULL - AND a.prs_afdeling_key = p.prs_afdeling_key - AND a.prs_afdeling_verwijder IS NULL; - - -- Als deze afwijkt van de kostenplaats van de afdeling waar persoon onder valt, dan persoon verhuizen naar die fictieve afdeling - IF v_kostenplaats_key_afdeling IS NOT NULL - THEN - -- Afdeling heeft kostenplaats, nu vergelijken met die van persoon - -- Indien ongelijk, dan zoek de fictieve afdeling, want daar persoon aan koppelen. - IF v_kostenplaats_key_perslid <> v_kostenplaats_key_afdeling - THEN - -- Zoek de eerste afdeling (MAX) die kostenplaats van persoon heeft, daar gaat persoon onder vallen. - SELECT MAX(a.prs_afdeling_key) - INTO v_prs_afdeling_key - FROM prs_afdeling a - WHERE a.prs_kostenplaats_key = v_kostenplaats_key_perslid - AND a.prs_afdeling_verwijder IS NULL; - - IF v_prs_afdeling_key IS NOT NULL - THEN - UPDATE prs_perslid p - SET p.prs_afdeling_key = v_prs_afdeling_key - WHERE p.prs_perslid_nr = rc.prs_perslid_nr - AND p.prs_perslid_verwijder IS NULL; - END IF; - END IF; - END IF; + -- Kostenplaats record bij de persoon is gevonden, + -- Nu eerst de kostenplaats van de afdeling bepalen + SELECT MAX(a.prs_kostenplaats_key) + INTO v_kostenplaats_key_afdeling + FROM prs_afdeling a, prs_perslid p + WHERE p.prs_perslid_nr = rc.prs_perslid_nr + AND p.prs_perslid_verwijder IS NULL + AND a.prs_afdeling_key = p.prs_afdeling_key + AND a.prs_afdeling_verwijder IS NULL; + + -- Als deze afwijkt van de kostenplaats van de afdeling waar persoon onder valt, dan persoon verhuizen naar die fictieve afdeling + IF v_kostenplaats_key_afdeling IS NOT NULL + THEN + -- Afdeling heeft kostenplaats, nu vergelijken met die van persoon + -- Indien ongelijk, dan zoek de fictieve afdeling, want daar persoon aan koppelen. + IF v_kostenplaats_key_perslid <> v_kostenplaats_key_afdeling + THEN + -- Zoek de eerste afdeling (MAX) die kostenplaats van persoon heeft, daar gaat persoon onder vallen. + SELECT MAX(a.prs_afdeling_key) + INTO v_prs_afdeling_key + FROM prs_afdeling a + WHERE a.prs_kostenplaats_key = v_kostenplaats_key_perslid + AND a.prs_afdeling_verwijder IS NULL; + + IF v_prs_afdeling_key IS NOT NULL + THEN + UPDATE prs_perslid p + SET p.prs_afdeling_key = v_prs_afdeling_key + WHERE p.prs_perslid_nr = rc.prs_perslid_nr + AND p.prs_perslid_verwijder IS NULL; + END IF; + END IF; + END IF; END IF; @@ -131,19 +131,19 @@ END; CREATE OR REPLACE PROCEDURE stph_update_perslid ( p_import_key IN NUMBER ) IS - -- Alle personen verwijderen die niet meer in import bestand voorkomen. - CURSOR c_del - IS - SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full - FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf - WHERE p.prs_perslid_nr = i.prs_perslid_nr(+) - AND pf.prs_perslid_key = p.prs_perslid_key - AND p.prs_perslid_nr IS NOT NULL - AND i.prs_perslid_nr IS NULL - AND p.prs_perslid_verwijder IS NULL - ORDER BY 2; - - v_count NUMBER; + -- Alle personen verwijderen die niet meer in import bestand voorkomen. + CURSOR c_del + IS + SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full + FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf + WHERE p.prs_perslid_nr = i.prs_perslid_nr(+) + AND pf.prs_perslid_key = p.prs_perslid_key + AND p.prs_perslid_nr IS NOT NULL + AND i.prs_perslid_nr IS NULL + AND p.prs_perslid_verwijder IS NULL + ORDER BY 2; + + v_count NUMBER; BEGIN -- generic update @@ -228,12 +228,12 @@ IS v_srtdeel_wijzigdagen VARCHAR2 (255); v_srtdeel_annuleerdagen VARCHAR2 (255); v_srtdeel_opmerking VARCHAR2 (4000); -- straks afgekapt op 2000 - v_bes_srtdeel_voorraadmin VARCHAR2 (255); + v_bes_srtdeel_voorraadmin VARCHAR2 (255); v_bes_srtdeel_voorraadmax VARCHAR2 (255); v_bes_srtdeel_voorraadfactor VARCHAR2 (255); v_bes_srtdeel_maxbestel VARCHAR2 (255); v_bes_inclexcl_btw VARCHAR2 (255); - + -- Overige velden: v_discipline_key NUMBER (10); v_bedrijf_key NUMBER (10); @@ -324,20 +324,20 @@ BEGIN -- Hier checken of we de voorraad-kolommen hebben... -- MinVoorraad;Maxvoorraad;Maxbestel;VoorraadFactor;VoorraadOmrekenPrijs IF UPPER (TRIM (v_bes_srtdeel_voorraadmin)) = 'MINVOORRAAD' - AND UPPER (TRIM (v_bes_srtdeel_voorraadmax)) = 'MAXVOORRAAD' - AND UPPER (TRIM (v_bes_srtdeel_maxbestel)) = 'MAXBESTEL' - AND UPPER (TRIM (v_bes_srtdeel_voorraadfactor)) = 'VOORRAADFACTOR' - AND UPPER (TRIM (v_bes_inclexcl_btw)) = 'VOORRAADOMREKENPRIJS' + AND UPPER (TRIM (v_bes_srtdeel_voorraadmax)) = 'MAXVOORRAAD' + AND UPPER (TRIM (v_bes_srtdeel_maxbestel)) = 'MAXBESTEL' + AND UPPER (TRIM (v_bes_srtdeel_voorraadfactor)) = 'VOORRAADFACTOR' + AND UPPER (TRIM (v_bes_inclexcl_btw)) = 'VOORRAADOMREKENPRIJS' THEN - -- Met deze waarde '2' doen we wat met de voorraadkolommen. - header_is_valid := 2; - fac.imp_writelog ( + -- Met deze waarde '2' doen we wat met de voorraadkolommen. + header_is_valid := 2; + fac.imp_writelog ( p_import_key, 'I', 'Voorraad kolommen zijn aanwezig', 'Voorraad kolommen worden ingelezen' ); - END IF; + END IF; END IF; ELSIF rec.regellengte > 1 -- Lege regels overslaan! @@ -613,85 +613,85 @@ BEGIN IF (header_is_valid = 2) THEN - - -- We hebben van doen met de BES interne catalogus (voorraad) kolommen. - - v_bes_srtdeel_voorraadmin := TRIM (v_bes_srtdeel_voorraadmin); - IF v_bes_srtdeel_voorraadmin IS NOT NULL - AND ( fac.safe_to_number (v_bes_srtdeel_voorraadmin) IS NULL - OR fac.safe_to_number (v_bes_srtdeel_voorraadmin) < 0 - OR fac.safe_to_number (v_bes_srtdeel_voorraadmin) > 999999) - THEN - fac.imp_writelog ( - p_import_key, - 'W', - v_aanduiding || 'Ongeldig minimum voorraad', - 'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')' - ); - v_ongeldig := 1; - END IF; - - v_bes_srtdeel_voorraadmax := TRIM (v_bes_srtdeel_voorraadmax); - IF v_bes_srtdeel_voorraadmax IS NOT NULL - AND ( fac.safe_to_number (v_bes_srtdeel_voorraadmax) IS NULL - OR fac.safe_to_number (v_bes_srtdeel_voorraadmax) < 0 - OR fac.safe_to_number (v_bes_srtdeel_voorraadmax) > 999999) - THEN - fac.imp_writelog ( - p_import_key, - 'W', - v_aanduiding || 'Ongeldig maximum voorraad', - 'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')' - ); - v_ongeldig := 1; - END IF; - - v_bes_srtdeel_maxbestel := TRIM (v_bes_srtdeel_maxbestel); - IF v_bes_srtdeel_maxbestel IS NOT NULL - AND ( fac.safe_to_number (v_bes_srtdeel_maxbestel) IS NULL - OR fac.safe_to_number (v_bes_srtdeel_maxbestel) < 0 - OR fac.safe_to_number (v_bes_srtdeel_maxbestel) > 1) - THEN - fac.imp_writelog ( - p_import_key, - 'W', - v_aanduiding || 'Ongeldige MaxBestel', - 'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')' - ); - v_ongeldig := 1; - END IF; - - v_bes_srtdeel_voorraadfactor := TRIM (v_bes_srtdeel_voorraadfactor); - IF v_bes_srtdeel_voorraadfactor IS NOT NULL - AND ( fac.safe_to_number (v_bes_srtdeel_voorraadfactor) IS NULL - OR fac.safe_to_number (v_bes_srtdeel_voorraadfactor) < 0 - OR fac.safe_to_number (v_bes_srtdeel_voorraadfactor) > 999999) - THEN - fac.imp_writelog ( - p_import_key, - 'W', - v_aanduiding || 'Ongeldig voorraadfactor', - 'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')' - ); - v_ongeldig := 1; - END IF; - - - v_bes_inclexcl_btw := TRIM (v_bes_inclexcl_btw); - IF v_bes_inclexcl_btw IS NOT NULL - AND ( fac.safe_to_number (v_bes_inclexcl_btw) IS NULL - OR fac.safe_to_number (v_bes_inclexcl_btw) < 0 - OR fac.safe_to_number (v_bes_inclexcl_btw) > 3) - THEN - fac.imp_writelog ( - p_import_key, - 'W', - v_aanduiding || 'Ongeldige Voorraad OmrekenPrijs', - 'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')' - ); - v_ongeldig := 1; - END IF; - END IF; + + -- We hebben van doen met de BES interne catalogus (voorraad) kolommen. + + v_bes_srtdeel_voorraadmin := TRIM (v_bes_srtdeel_voorraadmin); + IF v_bes_srtdeel_voorraadmin IS NOT NULL + AND ( fac.safe_to_number (v_bes_srtdeel_voorraadmin) IS NULL + OR fac.safe_to_number (v_bes_srtdeel_voorraadmin) < 0 + OR fac.safe_to_number (v_bes_srtdeel_voorraadmin) > 999999) + THEN + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Ongeldig minimum voorraad', + 'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')' + ); + v_ongeldig := 1; + END IF; + + v_bes_srtdeel_voorraadmax := TRIM (v_bes_srtdeel_voorraadmax); + IF v_bes_srtdeel_voorraadmax IS NOT NULL + AND ( fac.safe_to_number (v_bes_srtdeel_voorraadmax) IS NULL + OR fac.safe_to_number (v_bes_srtdeel_voorraadmax) < 0 + OR fac.safe_to_number (v_bes_srtdeel_voorraadmax) > 999999) + THEN + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Ongeldig maximum voorraad', + 'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')' + ); + v_ongeldig := 1; + END IF; + + v_bes_srtdeel_maxbestel := TRIM (v_bes_srtdeel_maxbestel); + IF v_bes_srtdeel_maxbestel IS NOT NULL + AND ( fac.safe_to_number (v_bes_srtdeel_maxbestel) IS NULL + OR fac.safe_to_number (v_bes_srtdeel_maxbestel) < 0 + OR fac.safe_to_number (v_bes_srtdeel_maxbestel) > 1) + THEN + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Ongeldige MaxBestel', + 'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')' + ); + v_ongeldig := 1; + END IF; + + v_bes_srtdeel_voorraadfactor := TRIM (v_bes_srtdeel_voorraadfactor); + IF v_bes_srtdeel_voorraadfactor IS NOT NULL + AND ( fac.safe_to_number (v_bes_srtdeel_voorraadfactor) IS NULL + OR fac.safe_to_number (v_bes_srtdeel_voorraadfactor) < 0 + OR fac.safe_to_number (v_bes_srtdeel_voorraadfactor) > 999999) + THEN + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Ongeldig voorraadfactor', + 'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')' + ); + v_ongeldig := 1; + END IF; + + + v_bes_inclexcl_btw := TRIM (v_bes_inclexcl_btw); + IF v_bes_inclexcl_btw IS NOT NULL + AND ( fac.safe_to_number (v_bes_inclexcl_btw) IS NULL + OR fac.safe_to_number (v_bes_inclexcl_btw) < 0 + OR fac.safe_to_number (v_bes_inclexcl_btw) > 3) + THEN + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || 'Ongeldige Voorraad OmrekenPrijs', + 'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')' + ); + v_ongeldig := 1; + END IF; + END IF; IF v_ongeldig = 0 @@ -743,24 +743,24 @@ BEGIN SUBSTR (v_srtdeel_opmerking, 1, 2000) ); - IF (header_is_valid = 2) - THEN - -- Met voorraad gegevens erbij - UPDATE STPH_IMP_CATALOGUS - SET - bes_srtdeel_voorraadmin = v_bes_srtdeel_voorraadmin, - bes_srtdeel_voorraadmax = v_bes_srtdeel_voorraadmax, - bes_srtdeel_maxbestel = v_bes_srtdeel_maxbestel, - bes_srtdeel_voorraadfactor = v_bes_srtdeel_voorraadfactor, - bes_inclexcl_btw = v_bes_inclexcl_btw - WHERE fac_import_key = p_import_key - AND ins_discipline_key = v_discipline_key - AND prs_bedrijf_key = v_bedrijf_key - AND ins_srtdeel_nr = SUBSTR (v_srtdeel_nr, 1, 32) - AND ins_srtdeel_eenheid = SUBSTR (v_srtdeel_eenheid, 1, 30); - END IF; + IF (header_is_valid = 2) + THEN + -- Met voorraad gegevens erbij + UPDATE STPH_IMP_CATALOGUS + SET + bes_srtdeel_voorraadmin = v_bes_srtdeel_voorraadmin, + bes_srtdeel_voorraadmax = v_bes_srtdeel_voorraadmax, + bes_srtdeel_maxbestel = v_bes_srtdeel_maxbestel, + bes_srtdeel_voorraadfactor = v_bes_srtdeel_voorraadfactor, + bes_inclexcl_btw = v_bes_inclexcl_btw + WHERE fac_import_key = p_import_key + AND ins_discipline_key = v_discipline_key + AND prs_bedrijf_key = v_bedrijf_key + AND ins_srtdeel_nr = SUBSTR (v_srtdeel_nr, 1, 32) + AND ins_srtdeel_eenheid = SUBSTR (v_srtdeel_eenheid, 1, 30); + END IF; - v_count_import := v_count_import + 1; + v_count_import := v_count_import + 1; END IF; END IF; EXCEPTION @@ -1421,7 +1421,7 @@ AS PROCEDURE l_update_voorraad (pdisc_key IN NUMBER, pbedr_key IN NUMBER) AS - -- Cursor van alle artikelen (die dus op dit punt zijn gesynct met de importtabel), waarvan we de voorraad-info van het bijbehorende inkoopartikel willen gaan zoeken... + -- Cursor van alle artikelen (die dus op dit punt zijn gesynct met de importtabel), waarvan we de voorraad-info van het bijbehorende inkoopartikel willen gaan zoeken... CURSOR c_updsrtdeel_voorraad ( cdisc_key IN NUMBER, cbedr_key IN NUMBER @@ -1438,26 +1438,26 @@ AS AND s.prs_bedrijf_key = cbedr_key AND s.bes_srtdeel_verwijder IS NULL; - ccount NUMBER (10); + ccount NUMBER (10); l_bes_discipline_key_inkoop bes_disc_params.bes_ins_discipline_key_inkoop%TYPE; l_bes_srtdeel_key bes_srtdeel.bes_srtdeel_key%TYPE; l_prijs bes_srtdeel_prijs.bes_srtdeel_prijs_prijs%TYPE; BEGIN - + ccount := 0; SELECT dp.bes_ins_discipline_key_inkoop INTO l_bes_discipline_key_inkoop FROM bes_disc_params dp - WHERE dp.bes_ins_discipline_key = pdisc_key; - - IF l_bes_discipline_key_inkoop IS NOT NULL - THEN - -- We hebben van doen met een magazijn catalogus die is gkoppeld aan inkoopcatalogus met discipline-key 'l_bes_discipline_key_inkoop' - -- De voorraad gegevens moeten in de overeenkomstige artikel van die inkoopcatalogus worden bijgewerkt. - - fac.imp_writelog ( + WHERE dp.bes_ins_discipline_key = pdisc_key; + + IF l_bes_discipline_key_inkoop IS NOT NULL + THEN + -- We hebben van doen met een magazijn catalogus die is gkoppeld aan inkoopcatalogus met discipline-key 'l_bes_discipline_key_inkoop' + -- De voorraad gegevens moeten in de overeenkomstige artikel van die inkoopcatalogus worden bijgewerkt. + + fac.imp_writelog ( p_import_key, 'I', v_aanduiding @@ -1465,116 +1465,116 @@ AS || l_bes_discipline_key_inkoop, '' ); - - FOR rec IN c_updsrtdeel_voorraad (pdisc_key, pbedr_key) - LOOP - BEGIN - v_errormsg := - 'Fout bij bepalen artikel in de inkoopcatalogus ' || rec.ins_srtdeel_nr; - - -- Op zoek naar het overeenkomstige artikel in de inkoopcatalogus, op basis van artikelnummer (bes_srtdeel_nr) welke niet verwijderd is van de catalogus met key 'l_bes_discipline_key_inkoop' - -- Daarbij JUIST geen check op eenheid, die is namelijk vooral anders (b.v. inkoopcatalogus heeft '1 pak van 4 stuks' en de magazijncatalogus heeft 'per stuk') - SELECT s.bes_srtdeel_key - INTO l_bes_srtdeel_key - FROM bes_srtdeel s, bes_srtgroep g - WHERE UPPER (s.bes_srtdeel_nr) = UPPER (rec.ins_srtdeel_nr) - AND s.bes_srtgroep_key = g.bes_srtgroep_key - AND s.bes_srtdeel_verwijder IS NULL - AND g.ins_discipline_key = l_bes_discipline_key_inkoop; - - UPDATE bes_srtdeel - SET bes_srtdeel_voorraadmin = rec.bes_srtdeel_voorraadmin, - bes_srtdeel_voorraadmax = rec.bes_srtdeel_voorraadmax, - bes_srtdeel_voorraadfactor = rec.bes_srtdeel_voorraadfactor, - bes_srtdeel_maxbestel = COALESCE(rec.bes_srtdeel_maxbestel,0) - WHERE bes_srtdeel_key = l_bes_srtdeel_key; - - l_prijs := NULL; - CASE rec.bes_inclexcl_btw - WHEN '1' - THEN - -- 1. Prijs van artikel van inerne (magazijn)catalogus omrekenen obv factor, zonder btw omrekening (100 euro met factor 50 -> 100/50 = 2 euro) - l_prijs := rec.ins_srtdeel_prijs / COALESCE(rec.bes_srtdeel_voorraadfactor,1); - WHEN '2' - THEN - -- 2. is omrekenen obv de voorraadfactor excl btw (prijzen staan incl btw, en je wilt naar excl btw intern) (100 euro met factor 50 en 21% btw -> 100 - 21% BTW /50 = 82,64 / 50 = 1,65) - IF fac.safe_to_number(rec.ins_srtdeel_btw) IS NOT NULL - THEN l_prijs := (rec.ins_srtdeel_prijs * 100) / (100 + fac.safe_to_number(rec.ins_srtdeel_btw)); - l_prijs := l_prijs / COALESCE(rec.bes_srtdeel_voorraadfactor,1); - ELSE fac.imp_writelog ( - p_import_key, - 'W', - 'BTW bij artkel ' || rec.ins_srtdeel_nr || ' is NIET gevonden', - 'Prijs wordt niet omgerekend' - ); - END IF; - WHEN '3' - THEN - -- 3. is omrekenen obv de voorraadfactor incl btw (prijzen staan excl btw, en je wilt naar incl btw intern) (100 euro met factor 50 en 21% btw -> 100 + 21% BTW = 121,00 / 50 = 2,42) - IF fac.safe_to_number(rec.ins_srtdeel_btw) IS NOT NULL - THEN l_prijs := rec.ins_srtdeel_prijs * ((100 + fac.safe_to_number(rec.ins_srtdeel_btw))/100); - l_prijs := l_prijs / COALESCE(rec.bes_srtdeel_voorraadfactor,1); - ELSE fac.imp_writelog ( - p_import_key, - 'W', - 'BTW bij artkel ' || rec.ins_srtdeel_nr || ' is NIET gevonden', - 'Prijs wordt niet omgerekend' - ); - END IF; - ELSE - NULL; - END CASE; - IF l_prijs IS NOT NULL - THEN - l_prijs := ROUND (l_prijs,2); - -- Inkoopprijs NULL, magazijn catalogus is dit niet relevant, is uitgangspunt - bes.upsert_srtdeel_prijs (rec.bes_srtdeel_key, l_prijs, NULL); - END IF; - ccount := ccount + 1; - EXCEPTION - WHEN DUP_VAL_ON_INDEX - THEN - v_errormsg := 'Artikelnummer dubbel in inkoopcatalogus'; - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || v_errormsg, - ''); - WHEN OTHERS - THEN - oracle_err_num := SQLCODE; - oracle_err_mes := SUBSTR (SQLERRM, 1, 200); - v_errormsg := - v_errormsg - || ' ORACLE (error ' - || oracle_err_num - || '/' - || oracle_err_mes - || ')'; - fac.imp_writelog (p_import_key, - 'W', - v_aanduiding || v_errormsg, - ''); - END; + + FOR rec IN c_updsrtdeel_voorraad (pdisc_key, pbedr_key) + LOOP + BEGIN + v_errormsg := + 'Fout bij bepalen artikel in de inkoopcatalogus ' || rec.ins_srtdeel_nr; + + -- Op zoek naar het overeenkomstige artikel in de inkoopcatalogus, op basis van artikelnummer (bes_srtdeel_nr) welke niet verwijderd is van de catalogus met key 'l_bes_discipline_key_inkoop' + -- Daarbij JUIST geen check op eenheid, die is namelijk vooral anders (b.v. inkoopcatalogus heeft '1 pak van 4 stuks' en de magazijncatalogus heeft 'per stuk') + SELECT s.bes_srtdeel_key + INTO l_bes_srtdeel_key + FROM bes_srtdeel s, bes_srtgroep g + WHERE UPPER (s.bes_srtdeel_nr) = UPPER (rec.ins_srtdeel_nr) + AND s.bes_srtgroep_key = g.bes_srtgroep_key + AND s.bes_srtdeel_verwijder IS NULL + AND g.ins_discipline_key = l_bes_discipline_key_inkoop; + + UPDATE bes_srtdeel + SET bes_srtdeel_voorraadmin = rec.bes_srtdeel_voorraadmin, + bes_srtdeel_voorraadmax = rec.bes_srtdeel_voorraadmax, + bes_srtdeel_voorraadfactor = rec.bes_srtdeel_voorraadfactor, + bes_srtdeel_maxbestel = COALESCE(rec.bes_srtdeel_maxbestel,0) + WHERE bes_srtdeel_key = l_bes_srtdeel_key; + + l_prijs := NULL; + CASE rec.bes_inclexcl_btw + WHEN '1' + THEN + -- 1. Prijs van artikel van inerne (magazijn)catalogus omrekenen obv factor, zonder btw omrekening (100 euro met factor 50 -> 100/50 = 2 euro) + l_prijs := rec.ins_srtdeel_prijs / COALESCE(rec.bes_srtdeel_voorraadfactor,1); + WHEN '2' + THEN + -- 2. is omrekenen obv de voorraadfactor excl btw (prijzen staan incl btw, en je wilt naar excl btw intern) (100 euro met factor 50 en 21% btw -> 100 - 21% BTW /50 = 82,64 / 50 = 1,65) + IF fac.safe_to_number(rec.ins_srtdeel_btw) IS NOT NULL + THEN l_prijs := (rec.ins_srtdeel_prijs * 100) / (100 + fac.safe_to_number(rec.ins_srtdeel_btw)); + l_prijs := l_prijs / COALESCE(rec.bes_srtdeel_voorraadfactor,1); + ELSE fac.imp_writelog ( + p_import_key, + 'W', + 'BTW bij artkel ' || rec.ins_srtdeel_nr || ' is NIET gevonden', + 'Prijs wordt niet omgerekend' + ); + END IF; + WHEN '3' + THEN + -- 3. is omrekenen obv de voorraadfactor incl btw (prijzen staan excl btw, en je wilt naar incl btw intern) (100 euro met factor 50 en 21% btw -> 100 + 21% BTW = 121,00 / 50 = 2,42) + IF fac.safe_to_number(rec.ins_srtdeel_btw) IS NOT NULL + THEN l_prijs := rec.ins_srtdeel_prijs * ((100 + fac.safe_to_number(rec.ins_srtdeel_btw))/100); + l_prijs := l_prijs / COALESCE(rec.bes_srtdeel_voorraadfactor,1); + ELSE fac.imp_writelog ( + p_import_key, + 'W', + 'BTW bij artkel ' || rec.ins_srtdeel_nr || ' is NIET gevonden', + 'Prijs wordt niet omgerekend' + ); + END IF; + ELSE + NULL; + END CASE; + IF l_prijs IS NOT NULL + THEN + l_prijs := ROUND (l_prijs,2); + -- Inkoopprijs NULL, magazijn catalogus is dit niet relevant, is uitgangspunt + bes.upsert_srtdeel_prijs (rec.bes_srtdeel_key, l_prijs, NULL); + END IF; + ccount := ccount + 1; + EXCEPTION + WHEN DUP_VAL_ON_INDEX + THEN + v_errormsg := 'Artikelnummer dubbel in inkoopcatalogus'; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + END; END LOOP; - ELSE - fac.imp_writelog ( + ELSE + fac.imp_writelog ( p_import_key, 'W', v_aanduiding || 'Inkoop catalogus is NIET gevonden', '' ); - END IF; - fac.imp_writelog ( - p_import_key, - 'S', - v_aanduiding - || 'Er zijn ' - || TO_CHAR (ccount) - || ' artikelen met waarvan de voorraadgegevens zijn bijgewerkt', - '' - ); - END; + END IF; + fac.imp_writelog ( + p_import_key, + 'S', + v_aanduiding + || 'Er zijn ' + || TO_CHAR (ccount) + || ' artikelen met waarvan de voorraadgegevens zijn bijgewerkt', + '' + ); + END; @@ -1730,18 +1730,18 @@ AS f.fin_factuur_totaal, f.fin_factuur_totaal_btw, CASE - WHEN ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2) > 0 - THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-' - ELSE LPAD(TO_CHAR(100 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),2)), 10, '0') || '+' + WHEN ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2) > 0 + THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-' + ELSE LPAD(TO_CHAR(100 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),2)), 10, '0') || '+' END fin_factuur_totaal_dbs, COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key) prs_bedrijf_key, COALESCE (b_c.prs_leverancier_nr, b_o.prs_leverancier_nr) prs_leverancier_nr, fr.fin_factuurregel_totaal, fr.fin_factuurregel_btw, CASE - WHEN ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2) > 0 - THEN LPAD(TO_CHAR(100 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2)), 10, '0') || LPAD('0',10,'0') - ELSE LPAD('0',10,'0') || LPAD(TO_CHAR(100 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),2)), 10, '0') + WHEN ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2) > 0 + THEN LPAD(TO_CHAR(100 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2)), 10, '0') || LPAD('0',10,'0') + ELSE LPAD('0',10,'0') || LPAD(TO_CHAR(100 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),2)), 10, '0') END fin_factuurregel_totaal_dbs, btw.fin_btwtabelwaarde_perc, btw.fin_btwtabelwaarde_code, @@ -1819,18 +1819,18 @@ AS f.fin_factuur_totaal, f.fin_factuur_totaal_btw, CASE - WHEN ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2) > 0 - THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-' - ELSE LPAD(TO_CHAR(100 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),2)), 10, '0') || '+' + WHEN ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2) > 0 + THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-' + ELSE LPAD(TO_CHAR(100 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),2)), 10, '0') || '+' END fin_factuur_totaal_dbs, b.prs_bedrijf_key, b.prs_leverancier_nr, fr.fin_factuurregel_totaal, fr.fin_factuurregel_btw, CASE - WHEN ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2) > 0 - THEN LPAD(TO_CHAR(100 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2)), 10, '0') || LPAD('0',10,'0') - ELSE LPAD('0',10,'0') || LPAD(TO_CHAR(100 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),2)), 10, '0') + WHEN ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2) > 0 + THEN LPAD(TO_CHAR(100 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2)), 10, '0') || LPAD('0',10,'0') + ELSE LPAD('0',10,'0') || LPAD(TO_CHAR(100 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),2)), 10, '0') END fin_factuurregel_totaal_dbs, btw.fin_btwtabelwaarde_perc, btw.fin_btwtabelwaarde_code, @@ -1845,7 +1845,7 @@ AS NULL mld_opdr_key, NULL cnt_contract_key, f.fin_factuur_statuses_key - FROM bes_bestelopdr bo, + FROM bes_bestelopdr bo, prs_bedrijf b, bes_bestelling bes, bes_bestelopdr_item boi, @@ -1922,32 +1922,32 @@ CREATE OR REPLACE VIEW stph_v_export_dbs (result, result_order) AS SELECT SUBSTR(MAX(fin_factuur_boekmaand),1,4) || LPAD(MAX(fin_factuur_key), 5, '0') || - LPAD(MAX(fin_factuur_nr), 16, '0') || - TO_CHAR (MAX(fin_factuur_datum), 'ddmmyyyy') || - SUBSTR(MAX(fin_factuur_boekmaand),1,4) || LPAD(SUBSTR(MAX(fin_factuur_boekmaand),6,2) , 2, '0') || - LPAD(COALESCE(MAX(prs_leverancier_nr),'0'), 4, '0') || - LPAD('0',5,'0') || - LPAD(' ',30,' ') || - LPAD('0',5,'0') || - LPAD('0',4,'0') || - MAX(fin_factuur_totaal_dbs) || - LPAD('0',10,'0') || - LPAD('0',10,'0') + LPAD(MAX(fin_factuur_nr), 16, '0') || + TO_CHAR (MAX(fin_factuur_datum), 'ddmmyyyy') || + SUBSTR(MAX(fin_factuur_boekmaand),1,4) || LPAD(SUBSTR(MAX(fin_factuur_boekmaand),6,2) , 2, '0') || + LPAD(COALESCE(MAX(prs_leverancier_nr),'0'), 4, '0') || + LPAD('0',5,'0') || + LPAD(' ',30,' ') || + LPAD('0',5,'0') || + LPAD('0',4,'0') || + MAX(fin_factuur_totaal_dbs) || + LPAD('0',10,'0') || + LPAD('0',10,'0') , SUBSTR(MAX(fin_factuur_boekmaand),1,4) || LPAD(MAX(fin_factuur_key), 5, '0') || LPAD('0',5,'0') FROM stph_v_factuur_geg_akkoord fg GROUP by fin_factuur_key UNION ALL -SELECT SUBSTR(fin_factuur_boekmaand,1,4) || LPAD(fin_factuur_key, 5, '0') || - LPAD(fin_factuur_nr, 16, '0') || - TO_CHAR (fin_factuur_datum, 'ddmmyyyy') || - SUBSTR(fin_factuur_boekmaand,1,4) || LPAD(SUBSTR(fin_factuur_boekmaand,6,2) , 2, '0') || - LPAD(COALESCE(prs_leverancier_nr,'0'), 4, '0') || - LPAD(fin_factuurregel_nr,5,'0') || - LPAD(COALESCE(fin_factuurregel_omschrijving, ' '),30,' ') || - LPAD(prs_kostensoort_oms,5,'0') || - LPAD(prs_kostenplaats_nr,4,'0') || - LPAD('0',10,'0') || '0' || - fin_factuurregel_totaal_dbs +SELECT SUBSTR(fin_factuur_boekmaand,1,4) || LPAD(fin_factuur_key, 5, '0') || + LPAD(fin_factuur_nr, 16, '0') || + TO_CHAR (fin_factuur_datum, 'ddmmyyyy') || + SUBSTR(fin_factuur_boekmaand,1,4) || LPAD(SUBSTR(fin_factuur_boekmaand,6,2) , 2, '0') || + LPAD(COALESCE(prs_leverancier_nr,'0'), 4, '0') || + LPAD(fin_factuurregel_nr,5,'0') || + LPAD(COALESCE(fin_factuurregel_omschrijving, ' '),30,' ') || + LPAD(prs_kostensoort_oms,5,'0') || + LPAD(prs_kostenplaats_nr,4,'0') || + LPAD('0',10,'0') || '0' || + fin_factuurregel_totaal_dbs , SUBSTR(fin_factuur_boekmaand,1,4) || LPAD(fin_factuur_key, 5, '0') || LPAD(fin_factuurregel_nr,5,'0') FROM stph_v_factuur_geg_akkoord fg; @@ -2191,44 +2191,44 @@ AS CREATE OR REPLACE VIEW stph_v_export_catering_dbs (result, result_order) AS - SELECT LPAD(prs_kostensoort_oms,5,'0') || - LPAD(prs_kostenplaats_nr,4,'0') || - LPAD(TO_CHAR(ROUND(100 * totaalprijs,2)), 10, '0') || - '0000000000' - , LPAD(res_reservering_key, 10, '0') || LPAD(res_rsv_ruimte_volgnr,5,'0') || '1' - FROM stph_v_res_catering_2_dbs - WHERE res_status_fo_key = 2 - AND totaalprijs <> 0 + SELECT LPAD(prs_kostensoort_oms,5,'0') || + LPAD(prs_kostenplaats_nr,4,'0') || + LPAD(TO_CHAR(ROUND(100 * totaalprijs,2)), 10, '0') || + '0000000000' + , LPAD(res_reservering_key, 10, '0') || LPAD(res_rsv_ruimte_volgnr,5,'0') || '1' + FROM stph_v_res_catering_2_dbs + WHERE res_status_fo_key = 2 + AND totaalprijs <> 0 UNION ALL - SELECT '83211' || - '2020' || - '0000000000' || - LPAD(TO_CHAR(ROUND(100 * totaalprijs,2)), 10, '0') - , LPAD(res_reservering_key, 10, '0') || LPAD(res_rsv_ruimte_volgnr,5,'0') || '2' - FROM stph_v_res_catering_2_dbs - WHERE res_status_fo_key = 2 - AND totaalprijs <> 0 - AND ins_discipline_key NOT IN (581, 582) + SELECT '83211' || + '2020' || + '0000000000' || + LPAD(TO_CHAR(ROUND(100 * totaalprijs,2)), 10, '0') + , LPAD(res_reservering_key, 10, '0') || LPAD(res_rsv_ruimte_volgnr,5,'0') || '2' + FROM stph_v_res_catering_2_dbs + WHERE res_status_fo_key = 2 + AND totaalprijs <> 0 + AND ins_discipline_key NOT IN (581, 582) UNION ALL - SELECT '41900' || - '2061' || - '0000000000' || - LPAD(TO_CHAR(ROUND(100 * totaalprijs,2)), 10, '0') - , LPAD(res_reservering_key, 10, '0') || LPAD(res_rsv_ruimte_volgnr,5,'0') || '2' - FROM stph_v_res_catering_2_dbs - WHERE res_status_fo_key = 2 - AND totaalprijs <> 0 - AND ins_discipline_key = 581 + SELECT '41900' || + '2061' || + '0000000000' || + LPAD(TO_CHAR(ROUND(100 * totaalprijs,2)), 10, '0') + , LPAD(res_reservering_key, 10, '0') || LPAD(res_rsv_ruimte_volgnr,5,'0') || '2' + FROM stph_v_res_catering_2_dbs + WHERE res_status_fo_key = 2 + AND totaalprijs <> 0 + AND ins_discipline_key = 581 UNION ALL - SELECT '41900' || - '2005' || - '0000000000' || - LPAD(TO_CHAR(ROUND(100 * totaalprijs,2)), 10, '0') - , LPAD(res_reservering_key, 10, '0') || LPAD(res_rsv_ruimte_volgnr,5,'0') || '2' - FROM stph_v_res_catering_2_dbs - WHERE res_status_fo_key = 2 - AND totaalprijs <> 0 - AND ins_discipline_key = 582; + SELECT '41900' || + '2005' || + '0000000000' || + LPAD(TO_CHAR(ROUND(100 * totaalprijs,2)), 10, '0') + , LPAD(res_reservering_key, 10, '0') || LPAD(res_rsv_ruimte_volgnr,5,'0') || '2' + FROM stph_v_res_catering_2_dbs + WHERE res_status_fo_key = 2 + AND totaalprijs <> 0 + AND ins_discipline_key = 582; -------------------------------------------------- @@ -2239,13 +2239,13 @@ UNION ALL CREATE OR REPLACE VIEW stph_v_bes_intern_2_dbs ( prs_bedrijf_key, bes_bestelopdr_key, - bes_bestelopdr_item_posnr, - prs_kostensoort_oms, - prs_kostensoort_tegenboeking, + bes_bestelopdr_item_posnr, + prs_kostensoort_oms, + prs_kostensoort_tegenboeking, prs_kostenplaats_nr, bes_bestelopdr_item_aantalontv, - bes_bestelopdr_item_brutoprijs, - bes_srtdeel_btw + bes_bestelopdr_item_brutoprijs, + bes_srtdeel_btw ) AS SELECT b.prs_bedrijf_key, @@ -2298,19 +2298,19 @@ AS CREATE OR REPLACE VIEW stph_v_export_intern_magazijn (result, result_order) AS -SELECT LPAD(prs_kostensoort_oms,5,'0') || - LPAD(prs_kostenplaats_nr,4,'0') || - LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * bes_bestelopdr_item_brutoprijs,2)), 10, '0') || - '0000000000' +SELECT LPAD(prs_kostensoort_oms,5,'0') || + LPAD(prs_kostenplaats_nr,4,'0') || + LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * bes_bestelopdr_item_brutoprijs,2)), 10, '0') || + '0000000000' , LPAD(bes_bestelopdr_key, 10, '0') || LPAD(bes_bestelopdr_item_posnr,5,'0') || '1' FROM stph_v_bes_intern_2_dbs WHERE bes_bestelopdr_item_brutoprijs <> 0 AND prs_bedrijf_key = 422 UNION ALL -SELECT LPAD(prs_kostensoort_tegenboeking,5,'0') || - '0000' || - '0000000000' || - LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * bes_bestelopdr_item_brutoprijs,2)), 10, '0') +SELECT LPAD(prs_kostensoort_tegenboeking,5,'0') || + '0000' || + '0000000000' || + LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * bes_bestelopdr_item_brutoprijs,2)), 10, '0') , LPAD(bes_bestelopdr_key, 10, '0') || LPAD(bes_bestelopdr_item_posnr,5,'0') || '2' FROM stph_v_bes_intern_2_dbs WHERE bes_bestelopdr_item_brutoprijs <> 0 @@ -2333,19 +2333,19 @@ AND prs_bedrijf_key = 422; CREATE OR REPLACE VIEW stph_v_export_intern_keuken (result, result_order) AS -SELECT LPAD(prs_kostensoort_oms,5,'0') || - LPAD(prs_kostenplaats_nr,4,'0') || - LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * bes_bestelopdr_item_brutoprijs,2)), 10, '0') || - '0000000000' +SELECT LPAD(prs_kostensoort_oms,5,'0') || + LPAD(prs_kostenplaats_nr,4,'0') || + LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * bes_bestelopdr_item_brutoprijs,2)), 10, '0') || + '0000000000' , LPAD(bes_bestelopdr_key, 10, '0') || LPAD(bes_bestelopdr_item_posnr,5,'0') || '1' FROM stph_v_bes_intern_2_dbs WHERE bes_bestelopdr_item_brutoprijs <> 0 AND prs_bedrijf_key = 1401 UNION ALL -SELECT LPAD(prs_kostensoort_oms,5,'0') || - '2010' || - '0000000000' || - LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * bes_bestelopdr_item_brutoprijs,2)), 10, '0') +SELECT LPAD(prs_kostensoort_oms,5,'0') || + '2010' || + '0000000000' || + LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * bes_bestelopdr_item_brutoprijs,2)), 10, '0') , LPAD(bes_bestelopdr_key, 10, '0') || LPAD(bes_bestelopdr_item_posnr,5,'0') || '2' FROM stph_v_bes_intern_2_dbs WHERE bes_bestelopdr_item_brutoprijs <> 0 @@ -2359,13 +2359,13 @@ AND prs_bedrijf_key = 1401; CREATE OR REPLACE VIEW stph_v_bes_extern_2_dbs ( prs_bedrijf_key, bes_bestelopdr_key, - bes_bestelopdr_item_posnr, - prs_kostensoort_oms, - prs_kostensoort_tegenboeking, + bes_bestelopdr_item_posnr, + prs_kostensoort_oms, + prs_kostensoort_tegenboeking, prs_kostenplaats_nr, bes_bestelopdr_item_aantalontv, - bes_bestelopdr_item_brutoprijs, - bes_srtdeel_btw + bes_bestelopdr_item_brutoprijs, + bes_srtdeel_btw ) AS SELECT b.prs_bedrijf_key, @@ -2410,18 +2410,18 @@ SELECT b.prs_bedrijf_key, CREATE OR REPLACE VIEW stph_v_export_externe_voorraad (result, result_order) AS -SELECT LPAD(prs_kostensoort_tegenboeking,5,'0') || - '0000' || - LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * (1 + 0.01 * COALESCE(bes_srtdeel_btw,0)) * bes_bestelopdr_item_brutoprijs,2)), 10, '0') || - '0000000000' +SELECT LPAD(prs_kostensoort_tegenboeking,5,'0') || + '0000' || + LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * (1 + 0.01 * COALESCE(bes_srtdeel_btw,0)) * bes_bestelopdr_item_brutoprijs,2)), 10, '0') || + '0000000000' , LPAD(bes_bestelopdr_key, 10, '0') || LPAD(bes_bestelopdr_item_posnr,5,'0') || '1' FROM stph_v_bes_extern_2_dbs WHERE bes_bestelopdr_item_brutoprijs <> 0 UNION ALL -SELECT '32010' || - '0000' || - '0000000000' || - LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * (1 + 0.01 * COALESCE(bes_srtdeel_btw,0)) * bes_bestelopdr_item_brutoprijs,2)), 10, '0') +SELECT '32010' || + '0000' || + '0000000000' || + LPAD(TO_CHAR(100 * ROUND(COALESCE(bes_bestelopdr_item_aantalontv,0) * (1 + 0.01 * COALESCE(bes_srtdeel_btw,0)) * bes_bestelopdr_item_brutoprijs,2)), 10, '0') , LPAD(bes_bestelopdr_key, 10, '0') || LPAD(bes_bestelopdr_item_posnr,5,'0') || '2' FROM stph_v_bes_extern_2_dbs WHERE bes_bestelopdr_item_brutoprijs <> 0; @@ -2720,7 +2720,7 @@ AS -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------- INVOICESHARING.COM INVOICESHARING.COM INVOICESHARING.COM INVOICESHARING.COM INVOICESHARING.COM ------ +------ INVOICESHARING.COM INVOICESHARING.COM INVOICESHARING.COM INVOICESHARING.COM INVOICESHARING.COM ------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -2764,7 +2764,7 @@ END; CREATE OR REPLACE PROCEDURE stph_postupdate_invoicesharing (p_import_key IN NUMBER) AS - v_prs_kostensoort_key prs_kostensoort.prs_kostensoort_key%TYPE; + v_prs_kostensoort_key prs_kostensoort.prs_kostensoort_key%TYPE; v_fin_kostensoort_key prs_kostensoort.prs_kostensoort_key%TYPE; CURSOR cfactuurregel_kostensoort @@ -2801,6 +2801,11 @@ BEGIN SET prs_kostensoort_key = v_prs_kostensoort_key WHERE fin_factuurregel_key = rc.fin_factuurregel_key; END IF; + ELSE + -- STPH#38624: als er GEEN of een FOUTE/ONBEKENDE kostensoort bij de import wordt meegegeven, dat dan de status op "Ingevoerd" terug wordt gezet. + UPDATE fin_factuur + SET fin_factuur_statuses_key = 2 + WHERE fin_factuur_key = (SELECT fin_factuur_key FROM fin_factuurregel fr WHERE fr.fin_factuurregel_key = rc.fin_factuurregel_key) END IF; EXCEPTION