2851 lines
121 KiB
SQL
2851 lines
121 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Stichting Parkhuis Main SQL
|
||
|
||
DEFINE thisfile = 'STPH.SQL'
|
||
DEFINE dbuser = '^STPH'
|
||
DEFINE custid = 'STPH'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SPOOL &fcltlogfile
|
||
SET DEFINE OFF
|
||
|
||
------ payload begin ------
|
||
--
|
||
-- Personen import
|
||
--
|
||
|
||
CREATE OR REPLACE PROCEDURE stph_import_perslid (p_import_key IN NUMBER)
|
||
AS
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (400);
|
||
v_errorhint VARCHAR2 (400);
|
||
BEGIN
|
||
|
||
v_errorhint := 'Generieke update';
|
||
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
|
||
prs.import_perslid (p_import_key,
|
||
'0;0;0;0;0;0;6;4;3;1;' ||
|
||
'2;0;0;0;0;10;9;8;0;5;' ||
|
||
'7;11;0;0;0;0;12;0;0;0;'||
|
||
'0;0;0;0;0;0;0;0;0;0;'||
|
||
'0;0;0;0;0;0',
|
||
'Roepnaam;Voorletters;Tussenvoegsel;Achternaam;Persnr.;Afdnr.;Functie;Email;Mobile;Telefoon;Loginnaam;%'
|
||
);
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
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_afdeling NUMBER(10);
|
||
v_prs_afdeling_key NUMBER(10);
|
||
|
||
CURSOR c_perslid_kpn_kenmerk
|
||
IS
|
||
SELECT prs_perslid_nr, prs_kenmerk1, prs_perslid_naam, prs_afdeling_naam
|
||
FROM fac_imp_perslid;
|
||
BEGIN
|
||
|
||
FOR rc IN c_perslid_kpn_kenmerk
|
||
LOOP
|
||
|
||
BEGIN
|
||
|
||
-- Kostenplaats die als kenmerk is meegegeven bij de persoon
|
||
SELECT MAX(prs_kostenplaats_key)
|
||
INTO v_kostenplaats_key_perslid
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_upper = UPPER(rc.prs_kenmerk1)
|
||
AND prs_kostenplaats_verwijder IS NULL;
|
||
|
||
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,
|
||
'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;
|
||
END IF;
|
||
|
||
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Post update bij persoon' || rc.prs_perslid_nr || ' is NIET volledig uitgevoerd )',
|
||
'Naam:' || rc.prs_perslid_naam || ' / Afdeling: ' || rc.prs_afdeling_naam
|
||
);
|
||
END;
|
||
END LOOP;
|
||
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;
|
||
|
||
BEGIN
|
||
-- generic update
|
||
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM fac_imp_perslid;
|
||
|
||
IF v_count < 300
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Het aantal te importeren personen is te klein ('
|
||
|| TO_CHAR (v_count) || ')',
|
||
'Zie Specificatie'
|
||
);
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- 'NR' betekent dat op basis van personeelsNummeR wordt gematched.
|
||
-- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
|
||
prs.update_perslid (p_import_key, 'NR', NULL);
|
||
|
||
-- Verwijder personen die niet meer in de import voorkomen.
|
||
FOR rec IN c_del
|
||
LOOP
|
||
BEGIN
|
||
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||
END;
|
||
END LOOP;
|
||
STPH_post_update_perslid (p_import_key);
|
||
|
||
END stph_update_perslid;
|
||
/
|
||
|
||
--
|
||
-- BES-CATALOGUS IMPORT
|
||
--
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
-- Copy van fac_import_catalogus en fac_update_catalogus van 2015.2 (d.d. 26/10/15 uit fac_pacf.src gekopieerd)
|
||
-- rename fac_ -> stph_, met volgende resultaat: 1) stph_import_catalogus 2) stph_update_catalogus en 3) stph_imp_catalogus
|
||
--
|
||
--
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE stph_import_catalogus (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
p_discipline_key NUMBER(10);
|
||
p_bedrijf_key NUMBER(10);
|
||
|
||
c_delim VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (4000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
header_is_valid NUMBER := 0;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_import NUMBER (10) := 0;
|
||
v_ongeldig NUMBER (1) := 0;
|
||
|
||
-- De importvelden
|
||
v_discipline_omschrijving VARCHAR2 (255);
|
||
v_bedrijf_naam VARCHAR2 (255);
|
||
v_catalogus_datum VARCHAR2 (255);
|
||
v_srtdeel_nr VARCHAR2 (255);
|
||
v_srtgroep_omschrijving VARCHAR2 (255);
|
||
v_srtdeel_omschrijving VARCHAR2 (255);
|
||
v_srtdeel_prijs VARCHAR2 (255);
|
||
v_srtdeel_eenheid VARCHAR2 (255);
|
||
v_srtdeel_image VARCHAR2 (255);
|
||
v_srtdeel_veelvoud VARCHAR2 (255);
|
||
v_srtdeel_btw VARCHAR2 (255);
|
||
v_srtdeel_vervaldatum VARCHAR2 (255);
|
||
v_srtdeel_inkprijs VARCHAR2 (255);
|
||
v_srtdeel_minimum VARCHAR2 (255);
|
||
v_bes_staffeltabel_naam VARCHAR2 (255);
|
||
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_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);
|
||
v_bes_staffeltabel_key NUMBER (10);
|
||
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT fac_imp_file_line,
|
||
LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, '')))
|
||
regellengte
|
||
FROM FAC_IMP_FILE
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
SELECT ins_discipline_key, prs_bedrijf_key
|
||
INTO p_discipline_key, p_bedrijf_key
|
||
FROM fac_import fi, fac_import_app fia
|
||
WHERE fi.fac_import_key = p_import_key
|
||
AND fi.fac_import_app_key = fia.fac_import_app_key;
|
||
|
||
-- Eerst opruiming
|
||
-- LET OP: we ondersteunen geen multi-variant meer
|
||
DELETE FROM stph_imp_catalogus;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '';
|
||
v_errorhint := 'Fout inlezen importregel';
|
||
v_newline := rec.fac_imp_file_line;
|
||
v_ongeldig := 0;
|
||
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_discipline_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_bedrijf_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_catalogus_datum);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_nr);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtgroep_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_prijs);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_eenheid);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_image);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_veelvoud);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_btw);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_vervaldatum);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_inkprijs);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_minimum);
|
||
fac.imp_getfield (v_newline, c_delim, v_bes_staffeltabel_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_wijzigdagen);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_annuleerdagen);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_opmerking);
|
||
-- Voorraad kolommen
|
||
fac.imp_getfield (v_newline, c_delim, v_bes_srtdeel_voorraadmin);
|
||
fac.imp_getfield (v_newline, c_delim, v_bes_srtdeel_voorraadmax);
|
||
fac.imp_getfield (v_newline, c_delim, v_bes_srtdeel_maxbestel);
|
||
fac.imp_getfield (v_newline, c_delim, v_bes_srtdeel_voorraadfactor);
|
||
fac.imp_getfield (v_newline, c_delim, v_bes_inclexcl_btw);
|
||
|
||
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer daarbij - sinds UWVA#21562 - bijna alle
|
||
-- kolommen (spaties in kolomheaders zijn onhandig bij "round-trip syncen").
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (TRIM (v_discipline_omschrijving)) LIKE 'CATALOGUS%'
|
||
AND UPPER (TRIM (v_bedrijf_naam)) = 'LEVERANCIER'
|
||
--AND UPPER (TRIM (v_catalogus_datum)) = 'CAT DATUM' -- Laat maar!
|
||
AND UPPER (TRIM (v_srtdeel_nr)) = 'ARTIKELNR'
|
||
AND UPPER (TRIM (v_srtgroep_omschrijving)) = 'GROEP'
|
||
AND UPPER (TRIM (v_srtdeel_omschrijving)) = 'OMSCHRIJVING'
|
||
AND UPPER (TRIM (v_srtdeel_prijs)) = 'PRIJS'
|
||
AND UPPER (TRIM (v_srtdeel_eenheid)) = 'EENHEID'
|
||
AND UPPER (TRIM (v_srtdeel_image)) = 'PICTURE'
|
||
AND UPPER (TRIM (v_srtdeel_veelvoud)) = 'ORDERAANTAL'
|
||
AND UPPER (TRIM (v_srtdeel_btw)) = 'TAX'
|
||
AND UPPER (TRIM (v_srtdeel_vervaldatum)) = 'DUEDATE'
|
||
AND UPPER (TRIM (v_srtdeel_inkprijs)) = 'INKOOPPRIJS'
|
||
AND UPPER (TRIM (v_srtdeel_minimum)) = 'MINIMUM'
|
||
AND UPPER (TRIM (v_bes_staffeltabel_naam)) = 'STAFFELTABEL'
|
||
--AND UPPER (TRIM (v_srtdeel_wijzigdagen)) = 'WIJZIGDAGEN' -- Laat maar!
|
||
--AND UPPER (TRIM (v_srtdeel_annuleerdagen)) = 'ANNULEERDAGEN' -- Laat maar!
|
||
AND UPPER (TRIM (v_srtdeel_opmerking)) = 'OPMERKING'
|
||
THEN
|
||
header_is_valid := 1;
|
||
-- 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'
|
||
THEN
|
||
-- 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;
|
||
ELSIF rec.regellengte > 1 -- Lege regels overslaan!
|
||
THEN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
'['
|
||
|| TRIM (v_discipline_omschrijving)
|
||
|| '|'
|
||
|| TRIM (v_bedrijf_naam)
|
||
|| '|'
|
||
|| TRIM (v_srtdeel_nr)
|
||
|| '] ';
|
||
|
||
v_discipline_omschrijving := TRIM (v_discipline_omschrijving);
|
||
v_errorhint :=
|
||
'Catalogus onbekend/ongeldig; regel wordt niet ingelezen';
|
||
|
||
SELECT ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM INS_TAB_DISCIPLINE
|
||
WHERE UPPER (ins_discipline_omschrijving) =
|
||
UPPER (v_discipline_omschrijving)
|
||
AND COALESCE (p_discipline_key, ins_discipline_key) =
|
||
ins_discipline_key -- CONN#20934/Import bedoelt voor catalogus?
|
||
AND ins_discipline_module = 'BES'
|
||
AND ins_discipline_verwijder IS NULL;
|
||
|
||
v_bedrijf_naam := TRIM (v_bedrijf_naam);
|
||
v_errorhint :=
|
||
'Bedrijf onbekend/ongeldig; regel wordt niet ingelezen';
|
||
|
||
SELECT prs_bedrijf_key
|
||
INTO v_bedrijf_key
|
||
FROM PRS_BEDRIJF
|
||
WHERE UPPER (prs_bedrijf_naam) = UPPER (v_bedrijf_naam)
|
||
AND COALESCE (p_bedrijf_key, prs_bedrijf_key) =
|
||
prs_bedrijf_key -- Import bedoelt voor bedrijf?
|
||
AND prs_bedrijf_verwijder IS NULL;
|
||
|
||
v_errorhint := 'Fout bij controleren importregel';
|
||
|
||
-- Indien leeg, dan catalogusdatum=SYSDATE gebruiken!
|
||
v_catalogus_datum :=
|
||
COALESCE (TRIM (v_catalogus_datum),
|
||
TO_CHAR (SYSDATE, 'yyyymmdd'));
|
||
|
||
IF fac.safe_to_date (v_catalogus_datum, 'yyyymmdd') IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldige catalogusdatum',
|
||
'Regel wordt niet ingelezen');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_srtdeel_nr := TRIM (v_srtdeel_nr);
|
||
|
||
IF LENGTH (v_srtdeel_nr) > 32
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Artikelnummer te lang',
|
||
'Nummer wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
END IF;
|
||
|
||
v_srtgroep_omschrijving := TRIM (v_srtgroep_omschrijving);
|
||
|
||
IF LENGTH (v_srtgroep_omschrijving) > 60
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Groepomschrijving te lang',
|
||
'Omschrijving wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
END IF;
|
||
|
||
v_srtdeel_omschrijving := TRIM (v_srtdeel_omschrijving);
|
||
|
||
IF LENGTH (v_srtdeel_omschrijving) > 100
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Artikelomschrijving te lang',
|
||
'Omschrijving wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
END IF;
|
||
|
||
-- Indien leeg, dan blijft/wordt prijs=ongedefinieerd=NULL!
|
||
v_srtdeel_prijs := TRIM (v_srtdeel_prijs);
|
||
|
||
IF v_srtdeel_prijs IS NOT NULL
|
||
AND fac.safe_to_number (v_srtdeel_prijs) IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldige prijs',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_srtdeel_eenheid := TRIM (v_srtdeel_eenheid);
|
||
|
||
IF LENGTH (v_srtdeel_eenheid) > 30
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Eenheid te lang',
|
||
'Eenheid wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
END IF;
|
||
|
||
v_srtdeel_image := TRIM (v_srtdeel_image);
|
||
|
||
IF LENGTH (v_srtdeel_image) > 255
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Imagenaam te lang',
|
||
'Naam wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
END IF;
|
||
|
||
-- Veelvoud mag niet negatief of meer zijn dan 6 posities lang.
|
||
-- Indien leeg, dan veelvoud=1!
|
||
v_srtdeel_veelvoud := COALESCE (TRIM (v_srtdeel_veelvoud), '1');
|
||
|
||
IF fac.safe_to_number (v_srtdeel_veelvoud) IS NULL
|
||
OR fac.safe_to_number (v_srtdeel_veelvoud) < 0
|
||
OR fac.safe_to_number (v_srtdeel_veelvoud) > 999999
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldig veelvoud',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- Indien leeg, dan blijft/wordt BTW-tarief=ongedefinieerd=NULL!
|
||
v_srtdeel_btw := TRIM (v_srtdeel_btw);
|
||
|
||
IF v_srtdeel_btw IS NOT NULL
|
||
AND fac.safe_to_number (v_srtdeel_btw) IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldig BTW-tarief',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- Indien leeg, dan blijft/wordt vervaldatum=ongedefinieerd=NULL!
|
||
v_srtdeel_vervaldatum := TRIM (v_srtdeel_vervaldatum);
|
||
|
||
IF v_srtdeel_vervaldatum IS NOT NULL
|
||
AND fac.safe_to_date (v_srtdeel_vervaldatum, 'yyyymmdd') IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldige vervaldatum',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- Indien leeg, dan blijft/wordt inkoopprijs=ongedefinieerd=NULL!
|
||
v_srtdeel_inkprijs := TRIM (v_srtdeel_inkprijs);
|
||
|
||
IF v_srtdeel_inkprijs IS NOT NULL
|
||
AND fac.safe_to_number (v_srtdeel_inkprijs) IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldige inkoopprijs',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- Minimum mag niet negatief of meer zijn dan 6 posities lang.
|
||
-- Indien leeg, dan blijft/wordt minimum=ongedefinieerd=NULL!
|
||
v_srtdeel_minimum := TRIM (v_srtdeel_minimum);
|
||
|
||
IF v_srtdeel_minimum IS NOT NULL
|
||
AND ( fac.safe_to_number (v_srtdeel_minimum) IS NULL
|
||
OR fac.safe_to_number (v_srtdeel_minimum) < 0
|
||
OR fac.safe_to_number (v_srtdeel_minimum) > 999999)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldig minimum',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_bes_staffeltabel_naam := TRIM (v_bes_staffeltabel_naam);
|
||
v_errorhint :=
|
||
'Fout bij bepalen staffeltabel; regel wordt niet ingelezen';
|
||
|
||
IF v_bes_staffeltabel_naam IS NOT NULL
|
||
THEN
|
||
SELECT bes_staffeltabel_key
|
||
INTO v_bes_staffeltabel_key
|
||
FROM bes_staffeltabel
|
||
WHERE UPPER (bes_staffeltabel_naam) =
|
||
UPPER (v_bes_staffeltabel_naam);
|
||
END IF;
|
||
|
||
-- Wijzigdagen mag niet negatief of meer zijn dan 3 posities lang.
|
||
-- Indien leeg, dan blijft/wordt wijzigdagen=ongedefinieerd=NULL!
|
||
v_srtdeel_wijzigdagen := TRIM (v_srtdeel_wijzigdagen);
|
||
|
||
IF v_srtdeel_wijzigdagen IS NOT NULL
|
||
AND ( fac.safe_to_number (v_srtdeel_wijzigdagen) IS NULL
|
||
OR fac.safe_to_number (v_srtdeel_wijzigdagen) < 0
|
||
OR fac.safe_to_number (v_srtdeel_wijzigdagen) > 999)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldig aantal wijzigdagen',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- Annuleerdagen mag niet negatief of meer zijn dan 3 posities lang.
|
||
-- Indien leeg, dan blijft/wordt annuleerdagen=ongedefinieerd=NULL!
|
||
v_srtdeel_annuleerdagen := TRIM (v_srtdeel_annuleerdagen);
|
||
|
||
IF v_srtdeel_annuleerdagen IS NOT NULL
|
||
AND ( fac.safe_to_number (v_srtdeel_annuleerdagen) IS NULL
|
||
OR fac.safe_to_number (v_srtdeel_annuleerdagen) < 0
|
||
OR fac.safe_to_number (v_srtdeel_annuleerdagen) > 999)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldig aantal annuleerdagen',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_srtdeel_opmerking := TRIM (v_srtdeel_opmerking);
|
||
|
||
IF LENGTH (v_srtdeel_opmerking) > 2000
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Opmerking te lang',
|
||
'Opmerking wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
END IF;
|
||
|
||
|
||
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;
|
||
|
||
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errorhint := 'Fout toevoegen importregel';
|
||
|
||
INSERT INTO STPH_IMP_CATALOGUS (
|
||
fac_import_key,
|
||
ins_discipline_key,
|
||
prs_bedrijf_key,
|
||
fac_imp_catalogus_datum,
|
||
ins_srtdeel_nr,
|
||
ins_srtgroep_omschrijving,
|
||
ins_srtdeel_omschrijving,
|
||
ins_srtdeel_prijs,
|
||
ins_srtdeel_inkprijs,
|
||
ins_srtdeel_eenheid,
|
||
ins_srtdeel_image,
|
||
ins_srtdeel_veelvoud,
|
||
ins_srtdeel_btw,
|
||
ins_srtdeel_vervaldatum,
|
||
ins_srtdeel_minimum,
|
||
bes_staffeltabel_key,
|
||
ins_srtdeel_wijzigdagen,
|
||
ins_srtdeel_annuleerdagen,
|
||
ins_srtdeel_opmerking
|
||
)
|
||
VALUES (
|
||
p_import_key,
|
||
v_discipline_key,
|
||
v_bedrijf_key,
|
||
fac.safe_to_date (v_catalogus_datum,
|
||
'yyyymmdd'),
|
||
SUBSTR (v_srtdeel_nr, 1, 32),
|
||
SUBSTR (v_srtgroep_omschrijving, 1, 60),
|
||
SUBSTR (v_srtdeel_omschrijving, 1, 100),
|
||
fac.safe_to_number (v_srtdeel_prijs),
|
||
fac.safe_to_number (v_srtdeel_inkprijs),
|
||
SUBSTR (v_srtdeel_eenheid, 1, 30),
|
||
SUBSTR (v_srtdeel_image, 1, 255),
|
||
fac.safe_to_number (v_srtdeel_veelvoud),
|
||
fac.safe_to_number (v_srtdeel_btw),
|
||
fac.safe_to_date (v_srtdeel_vervaldatum,
|
||
'yyyymmdd'),
|
||
fac.safe_to_number (v_srtdeel_minimum),
|
||
v_bes_staffeltabel_key,
|
||
fac.safe_to_number (v_srtdeel_wijzigdagen),
|
||
fac.safe_to_number (v_srtdeel_annuleerdagen),
|
||
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;
|
||
|
||
v_count_import := v_count_import + 1;
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint);
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Ongeldig importbestand',
|
||
'Geen header of header niet volgens specificatie!');
|
||
ELSE
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Inleesproces: aantal ingelezen importregels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Inleesproces: aantal ongeldige niet ingelezen importregels: '
|
||
|| TO_CHAR (v_count_tot - v_count_import),
|
||
''
|
||
);
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Inlezen catalogus afgebroken!');
|
||
END stph_import_catalogus;
|
||
/
|
||
|
||
|
||
/* Formatted on 19-7-2011 17:34:34 (QP5 v5.115.810.9015) */
|
||
CREATE OR REPLACE PROCEDURE stph_update_catalogus (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_disc_oms VARCHAR2 (100);
|
||
v_bedr_naam VARCHAR2 (100);
|
||
|
||
-- Voor <20><>n catalogus
|
||
PROCEDURE l_update_catalogus (pdisc_key IN NUMBER, pbedr_key IN NUMBER)
|
||
AS
|
||
CURSOR c_delsrtdeel (
|
||
cdisc_key IN NUMBER,
|
||
cbedr_key IN NUMBER
|
||
)
|
||
IS
|
||
SELECT sd.bes_srtdeel_key,
|
||
sd.bes_srtdeel_nr,
|
||
sd.bes_srtdeel_omschrijving
|
||
FROM bes_srtdeel sd, bes_srtgroep sg
|
||
WHERE sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sg.ins_discipline_key = cdisc_key
|
||
AND sd.prs_bedrijf_key = cbedr_key
|
||
AND sd.bes_srtdeel_verwijder IS NULL
|
||
AND NOT EXISTS -- Niet meer in importbestand irt. cat/bedrijf!
|
||
(SELECT 1
|
||
FROM stph_imp_catalogus f
|
||
WHERE fac_import_key = p_import_key
|
||
AND f.ins_discipline_key = cdisc_key
|
||
AND f.prs_bedrijf_key = cbedr_key
|
||
AND UPPER (f.ins_srtdeel_nr) =
|
||
UPPER (sd.bes_srtdeel_nr));
|
||
|
||
CURSOR c_delsrtgroep (
|
||
cdisc_key IN NUMBER,
|
||
cbedr_key IN NUMBER
|
||
)
|
||
IS
|
||
SELECT sg.bes_srtgroep_key, sg.bes_srtgroep_omschrijving
|
||
FROM bes_srtgroep sg
|
||
WHERE sg.ins_discipline_key = cdisc_key
|
||
AND sg.bes_srtgroep_verwijder IS NULL
|
||
AND NOT EXISTS -- Niet meer in importbestand irt. alleen cat!
|
||
(SELECT 1
|
||
FROM stph_imp_catalogus f
|
||
WHERE fac_import_key = p_import_key
|
||
AND f.ins_discipline_key = cdisc_key
|
||
AND UPPER (f.ins_srtgroep_omschrijving) =
|
||
UPPER (sg.bes_srtgroep_omschrijving))
|
||
AND NOT EXISTS -- Waaronder geen artikelen van ander bedrijf!
|
||
(SELECT 1
|
||
FROM bes_srtdeel sd
|
||
WHERE sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sd.prs_bedrijf_key <> cbedr_key);
|
||
|
||
CURSOR c_inssrtgroep (
|
||
cdisc_key IN NUMBER,
|
||
cbedr_key IN NUMBER
|
||
)
|
||
IS
|
||
SELECT DISTINCT f.ins_srtgroep_omschrijving
|
||
FROM stph_imp_catalogus f
|
||
WHERE fac_import_key = p_import_key
|
||
AND f.ins_srtgroep_omschrijving IS NOT NULL
|
||
AND f.ins_discipline_key = cdisc_key
|
||
AND f.prs_bedrijf_key = cbedr_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM bes_srtgroep sg
|
||
WHERE sg.ins_discipline_key = cdisc_key
|
||
AND UPPER (sg.bes_srtgroep_omschrijving) =
|
||
UPPER (f.ins_srtgroep_omschrijving)
|
||
AND sg.bes_srtgroep_verwijder IS NULL);
|
||
|
||
CURSOR c_updsrtdeel (
|
||
cdisc_key IN NUMBER,
|
||
cbedr_key IN NUMBER
|
||
)
|
||
IS
|
||
SELECT s.bes_srtdeel_key, f.*
|
||
FROM stph_imp_catalogus f, bes_srtgroep g, bes_srtdeel s
|
||
WHERE fac_import_key = p_import_key
|
||
AND f.ins_discipline_key = cdisc_key
|
||
AND f.prs_bedrijf_key = cbedr_key
|
||
AND g.ins_discipline_key = cdisc_key
|
||
AND g.bes_srtgroep_key = s.bes_srtgroep_key
|
||
AND UPPER (s.bes_srtdeel_nr) = UPPER (f.ins_srtdeel_nr)
|
||
AND s.prs_bedrijf_key = cbedr_key
|
||
AND s.bes_srtdeel_verwijder IS NULL;
|
||
|
||
CURSOR c_inssrtdeel (
|
||
cdisc_key IN NUMBER,
|
||
cbedr_key IN NUMBER
|
||
)
|
||
IS
|
||
SELECT f.*
|
||
FROM stph_imp_catalogus f
|
||
WHERE fac_import_key = p_import_key
|
||
AND f.ins_discipline_key = cdisc_key
|
||
AND f.prs_bedrijf_key = cbedr_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM bes_srtgroep g, bes_srtdeel s
|
||
WHERE g.ins_discipline_key = cdisc_key
|
||
AND g.bes_srtgroep_key = s.bes_srtgroep_key
|
||
AND UPPER (s.bes_srtdeel_nr) =
|
||
UPPER (f.ins_srtdeel_nr)
|
||
AND s.prs_bedrijf_key = cbedr_key
|
||
AND s.bes_srtdeel_verwijder IS NULL);
|
||
|
||
ccount NUMBER (10);
|
||
l_srtgroep_key NUMBER (10);
|
||
l_bes_srtdeel_key bes_srtdeel.bes_srtdeel_key%TYPE;
|
||
l_omschrijving bes_srtdeel.bes_srtdeel_omschrijving%TYPE;
|
||
l_prijs bes_srtdeel_prijs.bes_srtdeel_prijs_prijs%TYPE;
|
||
l_inkprijs bes_srtdeel_prijs.bes_srtdeel_prijs_inkprijs%TYPE;
|
||
l_veelvoud bes_srtdeel.bes_srtdeel_veelvoud%TYPE;
|
||
l_minimum bes_srtdeel.bes_srtdeel_minimum%TYPE;
|
||
l_wijzigdagen bes_srtdeel.bes_srtdeel_wijzigdagen%TYPE;
|
||
l_annuleerdagen bes_srtdeel.bes_srtdeel_annuleerdagen%TYPE;
|
||
l_opmerking bes_srtdeel.bes_srtdeel_opmerking%TYPE;
|
||
BEGIN
|
||
-- DELETE SRTDEEL
|
||
ccount := 0;
|
||
|
||
FOR rec IN c_delsrtdeel (pdisc_key, pbedr_key)
|
||
LOOP
|
||
v_errormsg := 'Fout bij verwijderen artikel ' || rec.bes_srtdeel_nr;
|
||
|
||
UPDATE bes_srtdeel
|
||
SET bes_srtdeel_verwijder = SYSDATE
|
||
WHERE bes_srtdeel_key = rec.bes_srtdeel_key;
|
||
|
||
v_errormsg := 'Fout bij verwijderen artikelkenmerken ' || rec.bes_srtdeel_nr;
|
||
UPDATE bes_kenmerk
|
||
SET bes_kenmerk_verwijder = SYSDATE
|
||
WHERE bes_kenmerk_niveau = 'S'
|
||
AND bes_srtinstallatie_key = rec.bes_srtdeel_key;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
v_aanduiding
|
||
|| 'Artikel '
|
||
|| rec.bes_srtdeel_nr
|
||
|| '/'
|
||
|| rec.bes_srtdeel_omschrijving
|
||
|| ' is verwijderd',
|
||
''
|
||
);
|
||
ccount := ccount + 1;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
v_aanduiding
|
||
|| 'Er zijn '
|
||
|| TO_CHAR (ccount)
|
||
|| ' artikelen verwijderd',
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
-- DELETE SRTGROEP
|
||
ccount := 0;
|
||
|
||
FOR rec IN c_delsrtgroep (pdisc_key, pbedr_key)
|
||
LOOP
|
||
v_errormsg := 'Fout bij verwijderen groep ' || rec.bes_srtgroep_omschrijving;
|
||
|
||
UPDATE bes_srtgroep
|
||
SET bes_srtgroep_verwijder = SYSDATE
|
||
WHERE bes_srtgroep_key = rec.bes_srtgroep_key;
|
||
|
||
v_errormsg := 'Fout bij verwijderen groepskenmerken ' || rec.bes_srtgroep_omschrijving;
|
||
UPDATE bes_kenmerk
|
||
SET bes_kenmerk_verwijder = SYSDATE
|
||
WHERE bes_kenmerk_niveau = 'G'
|
||
AND bes_srtinstallatie_key = rec.bes_srtgroep_key;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
v_aanduiding
|
||
|| 'Groep '
|
||
|| rec.bes_srtgroep_omschrijving
|
||
|| ' is verwijderd',
|
||
''
|
||
);
|
||
ccount := ccount + 1;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
v_aanduiding
|
||
|| 'Er zijn '
|
||
|| TO_CHAR (ccount)
|
||
|| ' groepen verwijderd',
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
-- INSERT SRTGROEP
|
||
ccount := 0;
|
||
|
||
FOR rec IN c_inssrtgroep (pdisc_key, pbedr_key)
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg :=
|
||
'Fout bij toevoegen groep ' || rec.ins_srtgroep_omschrijving;
|
||
|
||
INSERT INTO bes_srtgroep (
|
||
ins_discipline_key,
|
||
bes_srtgroep_omschrijving
|
||
)
|
||
VALUES (pdisc_key, rec.ins_srtgroep_omschrijving);
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
v_aanduiding
|
||
|| 'Groep '
|
||
|| rec.ins_srtgroep_omschrijving
|
||
|| ' is toegevoegd',
|
||
''
|
||
);
|
||
ccount := ccount + 1;
|
||
EXCEPTION
|
||
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;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
v_aanduiding
|
||
|| 'Er zijn '
|
||
|| TO_CHAR (ccount)
|
||
|| ' groepen toegevoegd',
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
-- UPDATE SRTDEEL
|
||
ccount := 0;
|
||
|
||
FOR rec IN c_updsrtdeel (pdisc_key, pbedr_key)
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg :=
|
||
'Fout bij bepalen groep ' || rec.ins_srtgroep_omschrijving;
|
||
|
||
SELECT bes_srtgroep_key
|
||
INTO l_srtgroep_key
|
||
FROM bes_srtgroep
|
||
WHERE bes_srtgroep_verwijder IS NULL
|
||
AND ins_discipline_key = pdisc_key
|
||
AND UPPER (bes_srtgroep_omschrijving) =
|
||
UPPER (rec.ins_srtgroep_omschrijving);
|
||
|
||
v_errormsg :=
|
||
'Fout bij bepalen huidige artikel-velden '
|
||
|| rec.ins_srtdeel_nr;
|
||
|
||
-- Tbv. logging de oude waarden opzoeken.
|
||
SELECT bes_srtdeel_omschrijving,
|
||
bes.getsrtdeelprijs (rec.bes_srtdeel_key, NULL),
|
||
bes.getsrtdeelinkprijs (rec.bes_srtdeel_key, NULL),
|
||
bes_srtdeel_veelvoud,
|
||
bes_srtdeel_minimum,
|
||
bes_srtdeel_wijzigdagen,
|
||
bes_srtdeel_annuleerdagen,
|
||
bes_srtdeel_opmerking
|
||
INTO l_omschrijving,
|
||
l_prijs,
|
||
l_inkprijs,
|
||
l_veelvoud,
|
||
l_minimum,
|
||
l_wijzigdagen,
|
||
l_annuleerdagen,
|
||
l_opmerking
|
||
FROM bes_srtdeel
|
||
WHERE bes_srtdeel_verwijder IS NULL
|
||
AND bes_srtdeel_key = rec.bes_srtdeel_key;
|
||
|
||
v_errormsg := 'Fout bij bijwerken artikel ' || rec.ins_srtdeel_nr;
|
||
|
||
-- Codetechnisch zou hier bes.upsert_srtdeel() passen, maar die doet bv nog geen inkprijs.
|
||
-- Later nog eens TODO
|
||
UPDATE bes_srtdeel
|
||
SET bes_srtgroep_key = l_srtgroep_key,
|
||
bes_srtdeel_omschrijving = rec.ins_srtdeel_omschrijving,
|
||
bes_srtdeel_image = rec.ins_srtdeel_image,
|
||
bes_srtdeel_btw = rec.ins_srtdeel_btw,
|
||
bes_srtdeel_eenheid = rec.ins_srtdeel_eenheid,
|
||
bes_srtdeel_vervaldatum = rec.ins_srtdeel_vervaldatum,
|
||
bes_srtdeel_veelvoud = rec.ins_srtdeel_veelvoud,
|
||
bes_srtdeel_minimum = rec.ins_srtdeel_minimum,
|
||
bes_staffeltabel_key = rec.bes_staffeltabel_key,
|
||
bes_srtdeel_wijzigdagen = rec.ins_srtdeel_wijzigdagen,
|
||
bes_srtdeel_annuleerdagen = rec.ins_srtdeel_annuleerdagen,
|
||
bes_srtdeel_opmerking = rec.ins_srtdeel_opmerking
|
||
WHERE bes_srtdeel_verwijder IS NULL
|
||
AND bes_srtdeel_key = rec.bes_srtdeel_key;
|
||
|
||
IF l_omschrijving <> rec.ins_srtdeel_omschrijving
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Omschrijving '
|
||
|| l_omschrijving
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_omschrijving
|
||
);
|
||
END IF;
|
||
|
||
bes.upsert_srtdeel_prijs (rec.bes_srtdeel_key, rec.ins_srtdeel_prijs, rec.ins_srtdeel_inkprijs);
|
||
|
||
IF l_prijs <> rec.ins_srtdeel_prijs
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Prijs ' || l_prijs || ' -> ' || rec.ins_srtdeel_prijs
|
||
);
|
||
END IF;
|
||
|
||
IF l_inkprijs <> rec.ins_srtdeel_inkprijs
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Inkoopprijs '
|
||
|| l_inkprijs
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_inkprijs
|
||
);
|
||
END IF;
|
||
|
||
IF l_veelvoud <> rec.ins_srtdeel_veelvoud
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Bestelveelvoud '
|
||
|| l_veelvoud
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_veelvoud
|
||
);
|
||
END IF;
|
||
|
||
IF l_minimum <> rec.ins_srtdeel_minimum
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Bestelminimum '
|
||
|| l_minimum
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_minimum
|
||
);
|
||
END IF;
|
||
|
||
IF l_wijzigdagen <> rec.ins_srtdeel_wijzigdagen
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Wijzigdagen '
|
||
|| l_wijzigdagen
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_wijzigdagen
|
||
);
|
||
END IF;
|
||
|
||
IF l_annuleerdagen <> rec.ins_srtdeel_annuleerdagen
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Annuleerdagen '
|
||
|| l_annuleerdagen
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_annuleerdagen
|
||
);
|
||
END IF;
|
||
|
||
IF l_opmerking <> rec.ins_srtdeel_opmerking
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_opmerking
|
||
|| ' is gewijzigd',
|
||
'Opmerking '
|
||
|| l_opmerking
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_opmerking
|
||
);
|
||
END IF;
|
||
|
||
ccount := ccount + 1;
|
||
EXCEPTION
|
||
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;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
v_aanduiding
|
||
|| 'Er zijn '
|
||
|| TO_CHAR (ccount)
|
||
|| ' artikelen bijgewerkt',
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
-- INSERT SRTDEEL
|
||
ccount := 0;
|
||
|
||
FOR rec IN c_inssrtdeel (pdisc_key, pbedr_key)
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg :=
|
||
'Fout bij bepalen groep ' || rec.ins_srtgroep_omschrijving;
|
||
|
||
SELECT bes_srtgroep_key
|
||
INTO l_srtgroep_key
|
||
FROM bes_srtgroep
|
||
WHERE bes_srtgroep_verwijder IS NULL
|
||
AND ins_discipline_key = pdisc_key
|
||
AND UPPER (bes_srtgroep_omschrijving) =
|
||
UPPER (rec.ins_srtgroep_omschrijving);
|
||
|
||
v_errormsg := 'Fout bij toevoegen artikel ' || rec.ins_srtdeel_nr;
|
||
|
||
INSERT INTO bes_srtdeel (bes_srtgroep_key,
|
||
bes_srtdeel_nr,
|
||
bes_srtdeel_omschrijving,
|
||
bes_srtdeel_image,
|
||
bes_srtdeel_btw,
|
||
bes_srtdeel_eenheid,
|
||
bes_srtdeel_dimensie,
|
||
prs_bedrijf_key,
|
||
bes_srtdeel_vervaldatum,
|
||
bes_srtdeel_veelvoud,
|
||
bes_srtdeel_minimum,
|
||
bes_staffeltabel_key,
|
||
bes_srtdeel_wijzigdagen,
|
||
bes_srtdeel_annuleerdagen,
|
||
bes_srtdeel_opmerking)
|
||
VALUES (l_srtgroep_key,
|
||
rec.ins_srtdeel_nr,
|
||
rec.ins_srtdeel_omschrijving,
|
||
rec.ins_srtdeel_image,
|
||
rec.ins_srtdeel_btw,
|
||
rec.ins_srtdeel_eenheid,
|
||
0,
|
||
pbedr_key,
|
||
rec.ins_srtdeel_vervaldatum,
|
||
rec.ins_srtdeel_veelvoud,
|
||
rec.ins_srtdeel_minimum,
|
||
rec.bes_staffeltabel_key,
|
||
rec.ins_srtdeel_wijzigdagen,
|
||
rec.ins_srtdeel_annuleerdagen,
|
||
rec.ins_srtdeel_opmerking)
|
||
RETURNING bes_srtdeel_key INTO l_bes_srtdeel_key;
|
||
|
||
bes.upsert_srtdeel_prijs (l_bes_srtdeel_key, rec.ins_srtdeel_prijs, rec.ins_srtdeel_inkprijs);
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
v_aanduiding
|
||
|| 'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is toegevoegd',
|
||
''
|
||
);
|
||
ccount := ccount + 1;
|
||
EXCEPTION
|
||
WHEN DUP_VAL_ON_INDEX
|
||
THEN
|
||
v_errormsg := 'Artikelnummer dubbel in importbestand';
|
||
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;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
v_aanduiding
|
||
|| 'Er zijn '
|
||
|| TO_CHAR (ccount)
|
||
|| ' artikelen toegevoegd',
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
END;
|
||
|
||
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 c_updsrtdeel_voorraad (
|
||
cdisc_key IN NUMBER,
|
||
cbedr_key IN NUMBER
|
||
)
|
||
IS
|
||
SELECT s.bes_srtdeel_key, f.*
|
||
FROM stph_imp_catalogus f, bes_srtgroep g, bes_srtdeel s
|
||
WHERE fac_import_key = p_import_key
|
||
AND f.ins_discipline_key = cdisc_key
|
||
AND f.prs_bedrijf_key = cbedr_key
|
||
AND g.ins_discipline_key = cdisc_key
|
||
AND g.bes_srtgroep_key = s.bes_srtgroep_key
|
||
AND UPPER (s.bes_srtdeel_nr) = UPPER (f.ins_srtdeel_nr)
|
||
AND s.prs_bedrijf_key = cbedr_key
|
||
AND s.bes_srtdeel_verwijder IS NULL;
|
||
|
||
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 (
|
||
p_import_key,
|
||
'I',
|
||
v_aanduiding
|
||
|| 'Inkoop catalogus is gevonden: key = '
|
||
|| 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;
|
||
END LOOP;
|
||
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;
|
||
|
||
|
||
|
||
BEGIN
|
||
-- Doorloop alle catalogi/ bedrijven. Er kunnen er in theorie meerdere tegelijk zijn
|
||
FOR rec IN
|
||
(SELECT DISTINCT ins_discipline_key, prs_bedrijf_key
|
||
FROM stph_imp_catalogus
|
||
WHERE fac_import_key = p_import_key)
|
||
LOOP
|
||
BEGIN
|
||
-- Puur voor logging toch even catalogus- en bedrijfsnaam bepalen!
|
||
v_aanduiding := '[' || TO_CHAR (rec.ins_discipline_key) || '] ';
|
||
v_errormsg := 'Fout bepalen catalogus';
|
||
|
||
SELECT ins_discipline_omschrijving
|
||
INTO v_disc_oms
|
||
FROM ins_tab_discipline
|
||
WHERE ins_discipline_key = rec.ins_discipline_key;
|
||
|
||
v_aanduiding := '[' || TO_CHAR (rec.prs_bedrijf_key) || '] ';
|
||
v_errormsg := 'Fout bepalen bedrijf';
|
||
|
||
SELECT prs_bedrijf_naam
|
||
INTO v_bedr_naam
|
||
FROM prs_v_aanwezigbedrijf
|
||
WHERE prs_bedrijf_key = rec.prs_bedrijf_key;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Import van catalogus ' || v_disc_oms || '/' || v_bedr_naam,
|
||
'discipline: '
|
||
|| rec.ins_discipline_key
|
||
|| ', bedrijf: '
|
||
|| rec.prs_bedrijf_key
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
v_aanduiding := '[' || v_disc_oms || '|' || v_bedr_naam || '] ';
|
||
l_update_catalogus (rec.ins_discipline_key, rec.prs_bedrijf_key);
|
||
l_update_voorraad (rec.ins_discipline_key, rec.prs_bedrijf_key);
|
||
|
||
EXCEPTION
|
||
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,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
EXCEPTION
|
||
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,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Verwerken catalogus afgebroken!');
|
||
END stph_update_catalogus;
|
||
/
|
||
|
||
|
||
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
-- Einde Copy van fac_import_catalogus en fac_update_catalogus van 2015.2 (d.d. 26/10/15 uit fac_pacf.src gekopieerd)
|
||
--
|
||
--
|
||
--
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
|
||
------
|
||
------ FACTUUREXPORT / KOPPELING DBS
|
||
------
|
||
|
||
--------------------------------------------------
|
||
-- DBS1: Factuurexport
|
||
|
||
-- view tbv export naar financieel systeem DBS
|
||
CREATE OR REPLACE VIEW stph_v_factuur_mldcnt_gegevens (
|
||
fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_boekmaand,
|
||
fin_factuur_nr,
|
||
fin_factuur_totaal,
|
||
fin_factuur_totaal_btw,
|
||
fin_factuur_totaal_dbs,
|
||
prs_bedrijf_key,
|
||
prs_leverancier_nr,
|
||
fin_factuurregel_totaal,
|
||
fin_factuurregel_btw,
|
||
fin_factuurregel_totaal_dbs,
|
||
fin_factuurregel_btw_perc,
|
||
fin_btwtabelwaarde_btwcode,
|
||
fin_factuurregel_nr,
|
||
fin_factuurregel_omschrijving,
|
||
fin_factuur_debiteur_nr,
|
||
project_nummer,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_doorbelasten,
|
||
prs_kostenplaats_nr,
|
||
bes_opdr_key,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
fin_factuur_statuses_key
|
||
)
|
||
AS
|
||
SELECT DISTINCT f.fin_factuur_key,
|
||
COALESCE (TO_CHAR (cnt_contract_nummer),
|
||
(SELECT sd.ins_srtdiscipline_prefix
|
||
|| m.mld_melding_key
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd
|
||
WHERE m.mld_melding_key = o.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key =
|
||
sd.ins_srtdiscipline_key)
|
||
)
|
||
opdracht_id,
|
||
f.fin_factuur_datum,
|
||
f.fin_factuur_boekmaand,
|
||
f.fin_factuur_nr,
|
||
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(10000 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,4)), 12, '0') || '-'
|
||
ELSE LPAD(TO_CHAR(10000 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),4)), 12, '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(10000 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,4)), 12, '0') || LPAD('0',12,'0')
|
||
ELSE LPAD('0',12,'0') || LPAD(TO_CHAR(10000 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),4)), 12, '0')
|
||
END fin_factuurregel_totaal_dbs,
|
||
btw.fin_btwtabelwaarde_perc,
|
||
btw.fin_btwtabelwaarde_code,
|
||
fr.fin_factuurregel_nr,
|
||
fr.fin_factuurregel_omschrijving,
|
||
f.fin_factuur_debiteur_nr,
|
||
NULL projectnummer,
|
||
COALESCE(ks_regel.prs_kostensoort_oms,ks.prs_kostensoort_oms),
|
||
DECODE(ks_regel.prs_kostensoort_oms, NULL, ks.prs_kostensoort_doorbelasten, ks_regel.prs_kostensoort_doorbelasten),
|
||
COALESCE (kp_c.prs_kostenplaats_nr, kp_o.prs_kostenplaats_nr) prs_kostenplaats_nr,
|
||
NULL bes_opdr_key,
|
||
o.mld_opdr_key,
|
||
c.cnt_contract_key,
|
||
f.fin_factuur_statuses_key
|
||
FROM fin_factuur f,
|
||
fin_factuurregel fr,
|
||
fin_btwtabelwaarde btw,
|
||
mld_opdr o,
|
||
mld_typeopdr ot,
|
||
cnt_contract c,
|
||
prs_bedrijf b_o,
|
||
prs_bedrijf b_c,
|
||
prs_kostensoort ks,
|
||
prs_kostensoort ks_regel,
|
||
prs_kostenplaats kp_c,
|
||
prs_kostenplaats kp_o
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
|
||
AND f.bes_bestelopdr_key is null
|
||
AND f.mld_opdr_key = o.mld_opdr_key(+)
|
||
AND o.prs_kostenplaats_key = kp_o.prs_kostenplaats_key (+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
|
||
AND f.cnt_contract_key = c.cnt_contract_key(+)
|
||
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
|
||
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
|
||
AND c.prs_kostenplaats_key = kp_c.prs_kostenplaats_key (+)
|
||
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+);
|
||
|
||
|
||
CREATE OR REPLACE VIEW stph_v_factuur_bes_gegevens (
|
||
fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_boekmaand,
|
||
fin_factuur_nr,
|
||
fin_factuur_totaal,
|
||
fin_factuur_totaal_btw,
|
||
fin_factuur_totaal_dbs,
|
||
prs_bedrijf_key,
|
||
prs_leverancier_nr,
|
||
fin_factuurregel_totaal,
|
||
fin_factuurregel_btw,
|
||
fin_factuurregel_totaal_dbs,
|
||
fin_factuurregel_btw_perc,
|
||
fin_btwtabelwaarde_btwcode,
|
||
fin_factuurregel_nr,
|
||
fin_factuurregel_omschrijving,
|
||
fin_factuur_debiteur_nr,
|
||
project_nummer,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_doorbelasten,
|
||
prs_kostenplaats_nr,
|
||
bes_opdr_key,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
fin_factuur_statuses_key
|
||
)
|
||
AS
|
||
SELECT DISTINCT f.fin_factuur_key,
|
||
TO_CHAR (bo.bes_bestelopdr_id) opdracht_id,
|
||
f.fin_factuur_datum,
|
||
f.fin_factuur_boekmaand,
|
||
f.fin_factuur_nr,
|
||
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(10000 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,4)), 12, '0') || '-'
|
||
ELSE LPAD(TO_CHAR(10000 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),4)), 12, '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(10000 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,4)), 12, '0') || LPAD('0',12,'0')
|
||
ELSE LPAD('0',12,'0') || LPAD(TO_CHAR(10000 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),4)), 12, '0')
|
||
END fin_factuurregel_totaal_dbs,
|
||
btw.fin_btwtabelwaarde_perc,
|
||
btw.fin_btwtabelwaarde_code,
|
||
fr.fin_factuurregel_nr,
|
||
fr.fin_factuurregel_omschrijving,
|
||
f.fin_factuur_debiteur_nr,
|
||
NULL projectnummer,
|
||
COALESCE(ks_regel.prs_kostensoort_oms,ks.prs_kostensoort_oms),
|
||
DECODE(ks_regel.prs_kostensoort_oms, NULL, ks.prs_kostensoort_doorbelasten, ks_regel.prs_kostensoort_doorbelasten),
|
||
kp.prs_kostenplaats_nr,
|
||
bo.bes_bestelopdr_key bes_opdr_key,
|
||
NULL mld_opdr_key,
|
||
NULL cnt_contract_key,
|
||
f.fin_factuur_statuses_key
|
||
FROM bes_bestelopdr bo,
|
||
prs_bedrijf b,
|
||
bes_bestelling bes,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
fin_factuur f,
|
||
fin_factuurregel fr,
|
||
fin_btwtabelwaarde btw,
|
||
prs_kostensoort ks,
|
||
prs_kostensoort ks_regel,
|
||
prs_kostenplaats kp
|
||
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key
|
||
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND bes.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key
|
||
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+)
|
||
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
AND f.fin_factuur_key = fr.fin_factuur_key
|
||
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key;
|
||
|
||
|
||
CREATE OR REPLACE VIEW stph_v_factuur_geg
|
||
AS
|
||
SELECT * from stph_v_factuur_mldcnt_gegevens
|
||
UNION
|
||
SELECT * from stph_v_factuur_bes_gegevens;
|
||
|
||
|
||
CREATE OR REPLACE VIEW stph_v_factuur_geg_akkoord
|
||
AS
|
||
SELECT * from stph_v_factuur_mldcnt_gegevens
|
||
WHERE fin_factuur_statuses_key = 6
|
||
UNION
|
||
SELECT * from stph_v_factuur_bes_gegevens
|
||
WHERE fin_factuur_statuses_key = 6;
|
||
|
||
|
||
|
||
-- Exportbestand die voor DBS wordt gegenereerd, bestaande uit kopregel (factuur-nivo) en bijbehorende sub-regels (factuurregels)
|
||
--
|
||
-- Velden kopregel:
|
||
-- 1: uniek boekstuknummer van 10 posities (fin_factuur_key), posities 1-9
|
||
-- 2: factuurnummer van 16 posities, posities 10-25
|
||
-- 3: factuurdatum van 8 posities in formaat ddmmjjjjj, posities 26-33
|
||
-- 4: verdeelperiode van 6 posities in formaat jjjjmm, posities 34-39
|
||
-- 5: leveranciernummer van 4 posities, posities 40-43
|
||
-- 6: factuurregelnummer, in kopregel 00000 (5 posities, in subregel het opeenvolgend regelnr van de factuurregel), posities 44-48
|
||
-- 7: factuurregelomschrijving, in kopregel leeg (30 spaties), in subregel de omschrijving van de factuurregel), posities 49-78
|
||
-- 8: kostensoort, in kopregel 00000 (5 posities) in subregel de kostensoort), posities 79-83
|
||
-- 9: kostenplaats, in kopregel 0000 (4 posities), in subregel de kostenplaats, posities 84-87
|
||
-- 10: Debet/Credit: totaal factuurbedrag incl BTW (11 posities), bedrag in centen met achteraan een min-teken '-' (debet-post) of plus-teken (credit-post) (dus 123.95 euro -> 0000012395-), posities 88-98,
|
||
-- 11: Debet: totaal factuurregelbedrag, in kopregel leeg (10 nullen), posities 99-108
|
||
-- 12: Credit: totaal factuurregelbedrag indien NEGATIEF, in kopregel leeg (10 nullen), posities 109-118
|
||
|
||
|
||
-- Velden subregel:
|
||
-- 1: uniek boekstuknummer van 10 posities (fin_factuur_key), posities 1-9
|
||
-- 2: factuurnummer van 20 posities, posities 10-25
|
||
-- 3: factuurdatum van 8 posities in formaat ddmmjjjjj, posities 26-33
|
||
-- 4: verdeelperiode van 6 posities in formaat jjjjmm, posities 34-39
|
||
-- 5: leveranciernummer van 4 posities, posities 40-43
|
||
-- 6: factuurregelnummer, in kopregel 00000 (5 posities, in subregel het opeenvolgend regelnr van de factuurregel), posities 44-48
|
||
-- 7: factuurregelomschrijving, in kopregel leeg (30 spaties), in subregel de omschrijving van de factuurregel), posities 49-78
|
||
-- 8: kostensoort, in kopregel 00000 (5 posities) in subregel de kostensoort), posities 79-83
|
||
-- 9: kostenplaats, in kopregel 0000 (4 posities), in subregel de kostenplaats, posities 84-87
|
||
-- 10: Debet/Credit: totaal factuurbedrag incl BTW (11 posities), in subregel leeg (10 nullen) met een extra 0 vanwege de het min of plusteken in kopregel, posities 88-98,
|
||
-- 11: Debet: totaal factuurregelbedrag, (10 posities), bedrag in centen (dus 123.95 euro -> 0000012395), posities 109-118 (NB: hier geen min-teken! alleen in kopregel)
|
||
-- 12: Credit: totaal factuurregelbedrag indien NEGATIEF, (10 posities), bedrag in centen (dus 123.95 euro -> 0000012395), posities 119-128
|
||
|
||
|
||
|
||
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',12,'0') ||
|
||
LPAD('0',12,'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',12,'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;
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE stph_export_dbs (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
|
||
-- In cursor cfactuur alle facturen die worden geexporteerd...
|
||
CURSOR cfactuur
|
||
IS
|
||
SELECT fin_factuur_key
|
||
FROM stph_v_factuur_geg_akkoord
|
||
GROUP BY fin_factuur_key;
|
||
|
||
BEGIN
|
||
-- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT...
|
||
FOR cfact IN cfactuur
|
||
LOOP
|
||
-- Zowel de factuur in tracking zetten als de status op verwerkt (=7) zetten
|
||
fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL);
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW stph_v_export_undo_dbs (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT REPLACE(REPLACE(f.fin_factuur_key
|
||
|| ';'
|
||
|| opdracht_id
|
||
|| ';'
|
||
|| fin_factuur_datum
|
||
|| ';'
|
||
|| fin_factuur_nr
|
||
|| ';'
|
||
|| prs_bedrijf_key
|
||
|| ';'
|
||
|| fin_factuurregel_totaal
|
||
|| ';'
|
||
|| fin_factuurregel_btw
|
||
|| ';'
|
||
|| fin_factuurregel_nr
|
||
|| ';'
|
||
|| fin_factuur_debiteur_nr
|
||
|| ';'
|
||
|| project_nummer
|
||
|| ';'
|
||
|| prs_kostensoort_oms
|
||
|| ';'
|
||
|| bes_opdr_key
|
||
|| ';'
|
||
|| mld_opdr_key
|
||
|| ';'
|
||
|| cnt_contract_key
|
||
,CHR (13), ''), CHR (10), '<ret>'), f.fin_factuur_key
|
||
FROM stph_v_factuur_geg f, fac_tracking t, fac_srtnotificatie sn
|
||
WHERE sn.fac_srtnotificatie_code ='FINVER'
|
||
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
|
||
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
|
||
FROM fac_tracking t1
|
||
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
|
||
AND f.fin_factuur_key = t.fac_tracking_refkey
|
||
AND f.fin_factuur_statuses_key = 7;
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE stph_select_undo_dbs (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
v_errormsg VARCHAR (200);
|
||
BEGIN
|
||
v_errormsg := 'Geen akties';
|
||
|
||
END;
|
||
/
|
||
|
||
-- Procedure om alle geexporteerde facturen naar status akkoord terug te zetten.
|
||
CREATE OR REPLACE PROCEDURE stph_export_undo_dbs (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
CURSOR cfactuur
|
||
IS
|
||
SELECT DISTINCT f.fin_factuur_key
|
||
FROM fac_tracking t, fac_srtnotificatie sn, fin_factuur f
|
||
WHERE sn.fac_srtnotificatie_code ='FINVER'
|
||
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
|
||
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
|
||
FROM fac_tracking t1
|
||
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
|
||
AND f.fin_factuur_key = t.fac_tracking_refkey
|
||
AND fin_factuur_statuses_key = 7;
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
v_errormsg := 'Geen akties';
|
||
|
||
FOR cfact IN cfactuur
|
||
LOOP
|
||
-- Eerst de factuur in tracking zetten...
|
||
-- Omdat van 7 naar 6 niet mag/geoorloofd is, lukt het niet via
|
||
-- de reguliere functie fin.setfactuurstatus (cfact.fin_factuur_key, 6, NULL);
|
||
|
||
-- Dan maar zelf en custom-made:
|
||
fac.trackaction ('FINFOK', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet');
|
||
UPDATE fin_factuur
|
||
SET fin_factuur_statuses_key = 6
|
||
WHERE fin_factuur_key = cfact.fin_factuur_key;
|
||
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
|
||
--------------------------------------------------
|
||
-- DBS2: Catering export
|
||
-- Velden catering-regels voor intern doorbelasten (DBS) van de vorige maand, die niet dirty zijn.
|
||
|
||
CREATE OR REPLACE VIEW stph_v_res_catering_2_dbs
|
||
AS
|
||
SELECT rr.res_reservering_key,
|
||
rr.res_rsv_ruimte_volgnr,
|
||
rr.res_rsv_ruimte_key,
|
||
r.res_ruimte_key,
|
||
r.res_ruimte_nr,
|
||
l.alg_locatie_code,
|
||
l.alg_locatie_omschrijving,
|
||
g.alg_gebouw_code,
|
||
g.alg_gebouw_naam,
|
||
v.alg_verdieping_volgnr,
|
||
v.alg_verdieping_omschrijving,
|
||
ar.alg_ruimte_nr,
|
||
ar.alg_ruimte_omschrijving,
|
||
op.res_opstelling_key,
|
||
op.res_opstelling_omschrijving,
|
||
rr.res_rsv_ruimte_van,
|
||
rr.res_rsv_ruimte_omschrijving,
|
||
rr.res_rsv_ruimte_opmerking,
|
||
rr.res_rsv_ruimte_bezoekers,
|
||
rr.res_status_fo_key,
|
||
rr.res_status_bo_key,
|
||
ra.res_rsv_artikel_levering,
|
||
TO_CHAR(ra.res_rsv_artikel_levering, 'DD-MM-YYYY') datum,
|
||
TO_CHAR(ra.res_rsv_artikel_levering, 'HH24:MI') tijd,
|
||
ra.res_rsv_artikel_aantal aantal,
|
||
a.res_artikel_key,
|
||
a.res_artikel_nr artikelnr,
|
||
a.res_artikel_omschrijving artikeloms,
|
||
d.ins_discipline_key,
|
||
d.ins_discipline_omschrijving catalogus,
|
||
ra.res_rsv_artikel_prijs, a.res_artikel_prijs,
|
||
a.res_artikel_prijs eenheidsprijs,
|
||
res.getartikelprijs(ra.res_rsv_artikel_key) totaalprijs,
|
||
c.prs_perslid_naam contact_naam,
|
||
c.prs_perslid_tussenvoegsel contact_tussenvoegsel,
|
||
c.prs_perslid_voorletters contact_voorletters,
|
||
c.prs_perslid_voornaam contact_voornaam,
|
||
DECODE(c.prs_perslid_geslacht,0,'V',1,'M', '') contact_geslacht,
|
||
c.prs_perslid_email contact_email,
|
||
c.prs_perslid_telefoonnr contact_telefoonnr,
|
||
c.prs_perslid_mobiel contact_mobiel,
|
||
h.prs_perslid_naam host_naam,
|
||
h.prs_perslid_tussenvoegsel host_tussenvoegsel,
|
||
h.prs_perslid_voorletters host_voorletters,
|
||
h.prs_perslid_voornaam host_voornaam,
|
||
DECODE(h.prs_perslid_geslacht,0,'V',1,'M', '') host_geslacht,
|
||
h.prs_perslid_email host_email,
|
||
h.prs_perslid_telefoonnr host_telefoonnr,
|
||
h.prs_perslid_mobiel host_mobiel,
|
||
k.prs_kostenplaats_nr,
|
||
ks.prs_kostensoort_oms
|
||
FROM res_rsv_artikel ra,
|
||
res_artikel a,
|
||
res_discipline d,
|
||
res_rsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_opstelling op,
|
||
res_ruimte r,
|
||
alg_ruimte ar,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
alg_locatie l,
|
||
prs_perslid c,
|
||
prs_kostenplaats k,
|
||
prs_kostensoort ks,
|
||
prs_perslid h
|
||
WHERE rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rr.res_rsv_ruimte_van >= to_date('01-' || to_char(sysdate - to_char(sysdate, 'DD') - 1, 'MM-YYYY'), 'DD-MM-YYYY')
|
||
AND rr.res_rsv_ruimte_van < to_date('01-' || to_char(sysdate, 'MM-YYYY'), 'DD-MM-YYYY')
|
||
AND a.res_artikel_key = ra.res_artikel_key
|
||
AND d.ins_discipline_key = a.res_discipline_key
|
||
AND d.ins_discipline_min_level = 2
|
||
AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
|
||
AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key(+)
|
||
AND ro.res_ruimte_key = r.res_ruimte_key (+)
|
||
AND ro.res_opstelling_key = op.res_opstelling_key (+)
|
||
AND rr.alg_ruimte_key = ar.alg_ruimte_key (+)
|
||
AND ar.alg_verdieping_key = v.alg_verdieping_key (+)
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key (+)
|
||
AND g.alg_locatie_key = l.alg_locatie_key (+)
|
||
AND rr.res_rsv_ruimte_contact_key = c.prs_perslid_key
|
||
AND k.prs_kostenplaats_key = rr.prs_kostenplaats_key
|
||
AND d.prs_kostensoort_key = ks.prs_kostensoort_key (+)
|
||
AND rr.res_rsv_ruimte_host_key = h.prs_perslid_key
|
||
AND rr.res_rsv_ruimte_dirtlevel = 0;
|
||
|
||
|
||
-- Velden catering-regels voor intern doorbelasten (DBS) van de vorige maand, die definitief zijn (gemaakt).
|
||
-- 1e regel bij catering
|
||
-- 1: kostensoort bij de catalogus, posities 1-5
|
||
-- 2: kostenplaats bij de reservering van 4 posities, posities 6-9
|
||
-- 3: debet: bedrag in centen, in 10 posities, posities 10-19
|
||
-- 4: credit: bedrag in centen, in 10 posities, posities 20-29, allemaal 0
|
||
-- 2e bijbehorende regel bij catering
|
||
-- 1: kostensoort 83211, posities 1-5
|
||
-- 2: kostenplaats 2020, 4 posities, posities 6-9
|
||
-- 3: debet: bedrag in centen, in 10 posities, posities 10-19, allemaal 0
|
||
-- 4: credit: bedrag in centen, in 10 posities, posities 20-29
|
||
|
||
-- Aanvulling: zie call STPH#36545
|
||
-- Tegenboeking (2e bijbehorende regel) 'Catering'Catalogus "Dienstverlening logistiek" (key= 581) -> kostenplaats 2061 en kostensoort 41900
|
||
-- Tegenboeking (2e bijbehorende regel) 'Catering'Catalogus "Dienstverlening receptie" (key= 582) -> kostenplaats 2005 en kostensoort 41900
|
||
|
||
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
|
||
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)
|
||
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
|
||
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;
|
||
|
||
|
||
--------------------------------------------------
|
||
-- DBS3: Interne bestellingen export
|
||
-- Een interne bestelopdracht gaat naar "interne" relatiebeheer "Centraal Magazijn", dit is prs_bedrijf_key = 422
|
||
-- Een interne bestelopdracht "dagvers" gaat naar "interne" relatiebeheer "Centrale Keuken", dit is prs_bedrijf_key = 1401
|
||
|
||
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,
|
||
prs_kostenplaats_nr,
|
||
bes_bestelopdr_item_aantalontv,
|
||
bes_bestelopdr_item_brutoprijs,
|
||
bes_srtdeel_btw
|
||
)
|
||
AS
|
||
SELECT b.prs_bedrijf_key,
|
||
boi.bes_bestelopdr_key,
|
||
boi.bes_bestelopdr_item_posnr,
|
||
COALESCE(ks_groep.prs_kostensoort_oms, ks.prs_kostensoort_oms),
|
||
COALESCE(ks_groep.prs_kostensoort_refcode,ks.prs_kostensoort_refcode),
|
||
kp.prs_kostenplaats_nr,
|
||
boi.bes_bestelopdr_item_aantalontv,
|
||
boi.bes_bestelopdr_item_brutoprijs,
|
||
sd.bes_srtdeel_btw
|
||
FROM bes_bestelopdr bo,
|
||
prs_bedrijf b,
|
||
bes_bestelling bes,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
prs_kostenplaats kp,
|
||
bes_srtdeel sd,
|
||
bes_srtgroep sg,
|
||
bes_discipline d,
|
||
prs_kostensoort ks,
|
||
prs_kostensoort ks_groep
|
||
WHERE b.prs_bedrijf_key IN (422, 1401)
|
||
AND b.prs_bedrijf_key = bo.prs_bedrijf_key
|
||
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND bes.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key
|
||
AND sd.bes_srtdeel_key = bi.bes_srtdeel_key
|
||
AND sg.BES_SRTGROEP_KEY = sd. BES_SRTGROEP_KEY
|
||
AND d.ins_discipline_key = sg.ins_discipline_key
|
||
AND d.prs_kostensoort_key = ks.prs_kostensoort_key (+)
|
||
AND sg.prs_kostensoort_key = ks_groep.prs_kostensoort_key (+)
|
||
AND bo.bes_bestelopdr_status = 6;
|
||
|
||
|
||
-- Velden interne bestelopdracht-regels voor intern doorbelasten (DBS), die geleverd zijn geadministreerd.
|
||
-- 1e regel bij interne bestelregel.
|
||
-- 1: eerst kostensoort bes_groep, indien leeg dan kostensoort bij de catalogus, posities 1-5
|
||
-- 2: kostenplaats bij de bestelling van 4 posities, posities 6-9
|
||
-- 3: debet: bedrag in centen, in 10 posities, posities 10-19
|
||
-- 4: credit: bedrag in centen, in 10 posities, posities 20-29, allemaal 0
|
||
-- 2e bijbehorende regel bij bestelregel
|
||
-- 1: kostensoort_tegenboeking die hoort bij kostensoort uit 1e regel, (dus eerst KS groep, indien leeg dan KS catalogus) posities 1-5
|
||
-- 2: kostenplaats 0000, 4 posities, posities 6-9
|
||
-- 3: debet: bedrag in centen, in 10 posities, posities 10-19, allemaal 0
|
||
-- 4: credit: bedrag in centen, in 10 posities, posities 20-29
|
||
|
||
|
||
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'
|
||
, 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')
|
||
, 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
|
||
AND prs_bedrijf_key = 422;
|
||
|
||
|
||
-- Velden interne bestelopdracht-regels voor intern doorbelasten (DBS), die geleverd zijn geadministreerd.
|
||
-- 1e regel bij interne bestelregel.
|
||
-- 1: eerst kostensoort bes_groep, indien leeg dan kostensoort bij de catalogus, posities 1-5
|
||
-- 2: kostenplaats bij de bestelling van 4 posities, posities 6-9
|
||
-- 3: debet: bedrag in centen, in 10 posities, posities 10-19
|
||
-- 4: credit: bedrag in centen, in 10 posities, posities 20-29, allemaal 0
|
||
-- 2e bijbehorende regel bij bestelregel
|
||
-- 1: kostensoort_tegenboeking die hoort bij kostensoort uit 1e regel, (dus eerst KS groep, indien leeg dan KS catalogus) posities 1-5
|
||
-- 2: kostenplaats 0000, 4 posities, posities 6-9
|
||
-- 3: debet: bedrag in centen, in 10 posities, posities 10-19, allemaal 0
|
||
-- 4: credit: bedrag in centen, in 10 posities, posities 20-29
|
||
|
||
|
||
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'
|
||
, 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')
|
||
, 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
|
||
AND prs_bedrijf_key = 1401;
|
||
|
||
|
||
-- Op de balans ook de externe catalogus die gekoppeld is aan een (of meer) van die interne catalogi.
|
||
-- Dus als tegenhanger van de interne "magazijn voorraad" catalogi die via VIEW stph_v_bes_intern_2_dbs verlopen....
|
||
-- Te bepalen via de kolom bes_ins_discipline_key_inkoop
|
||
--
|
||
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,
|
||
prs_kostenplaats_nr,
|
||
bes_bestelopdr_item_aantalontv,
|
||
bes_bestelopdr_item_brutoprijs,
|
||
bes_srtdeel_btw
|
||
)
|
||
AS
|
||
SELECT b.prs_bedrijf_key,
|
||
boi.bes_bestelopdr_key,
|
||
boi.bes_bestelopdr_item_posnr,
|
||
COALESCE(ks_groep.prs_kostensoort_oms, ks.prs_kostensoort_oms),
|
||
COALESCE(ks_groep.prs_kostensoort_refcode,ks.prs_kostensoort_refcode),
|
||
kp.prs_kostenplaats_nr,
|
||
boi.bes_bestelopdr_item_aantalontv,
|
||
boi.bes_bestelopdr_item_brutoprijs,
|
||
sd.bes_srtdeel_btw
|
||
FROM bes_bestelopdr bo,
|
||
prs_bedrijf b,
|
||
bes_bestelling bes,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
prs_kostenplaats kp,
|
||
bes_srtdeel sd,
|
||
bes_srtgroep sg,
|
||
bes_discipline d,
|
||
bes_disc_params dp,
|
||
prs_kostensoort ks,
|
||
prs_kostensoort ks_groep
|
||
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key
|
||
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND bes.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key
|
||
AND sd.bes_srtdeel_key = bi.bes_srtdeel_key
|
||
AND sg.BES_SRTGROEP_KEY = sd. BES_SRTGROEP_KEY
|
||
AND d.ins_discipline_key = sg.ins_discipline_key
|
||
AND d.ins_discipline_key = dp.bes_ins_discipline_key
|
||
AND EXISTS (select 'x' FROM bes_disc_params dp2 WHERE dp2.bes_ins_discipline_key_inkoop = dp.bes_ins_discipline_key)
|
||
AND d.prs_kostensoort_key = ks.prs_kostensoort_key (+)
|
||
AND sg.prs_kostensoort_key = ks_groep.prs_kostensoort_key (+)
|
||
AND bo.bes_bestelopdr_status = 6;
|
||
|
||
-- Dit zou ook een DB4 bestand kunnen zijn, maar er is gekozen om deze regels tesamen met het bestaande DB3 bestand weg te schrijven...
|
||
-- Zie VIEW stph_v_export_intern_bes_dbs en Export-PROCEDURE stph_v_export_intern_bes_dbs
|
||
-- Daarin is deze nieuw view ook verwerkt....
|
||
-- Let op: de prijzen van de externe catalogi zijn excl BTW, doorbelasting is incl BTW, daarom wordt het BTW percentage erbij opgeteld.
|
||
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'
|
||
, 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')
|
||
, 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;
|
||
|
||
|
||
CREATE OR REPLACE VIEW stph_v_export_intern_bes_dbs
|
||
(result, result_order)
|
||
AS
|
||
SELECT * FROM stph_v_export_intern_magazijn
|
||
UNION ALL
|
||
SELECT * FROM stph_v_export_intern_keuken
|
||
UNION ALL
|
||
SELECT * FROM stph_v_export_externe_voorraad;
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE stph_export_intern_bes_dbs (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
|
||
-- In cursor cbesopdr alle bestelopdrachten die worden geexporteerd...
|
||
CURSOR cbesopdracht
|
||
IS
|
||
SELECT DISTINCT bes_bestelopdr_key
|
||
FROM stph_v_bes_intern_2_dbs
|
||
UNION
|
||
SELECT DISTINCT bes_bestelopdr_key
|
||
FROM stph_v_bes_extern_2_dbs;
|
||
|
||
BEGIN
|
||
-- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT...
|
||
FOR cbesopdr IN cbesopdracht
|
||
LOOP
|
||
-- De bestelopdracht op verwerkt zetten
|
||
bes.setbestelopdrstatus (cbesopdr.bes_bestelopdr_key, 7, NULL);
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
-- STPH#34969 voorraad weergeven en evt max voorraad kunnen gebruiken
|
||
CREATE OR REPLACE VIEW stph_v_rap_voorraad
|
||
(
|
||
hide_f_srtgroep_omschrijving,
|
||
artikel_nr,
|
||
voorraad
|
||
)
|
||
AS
|
||
SELECT bes_srtgroep_omschrijving,
|
||
bes_srtdeel_nr,
|
||
COALESCE (aantal_geleverd * intern_voorraadfactor, 0)
|
||
- COALESCE (aantal_intern_uit, 0)
|
||
voorraad
|
||
FROM ( SELECT a.bes_srtdeel_key,
|
||
a.bes_srtdeel_nr,
|
||
SUM (a.aantal_intern_uit) aantal_intern_uit,
|
||
SUM (a.aantal_geleverd) aantal_geleverd,
|
||
b.intern_voorraadfactor,
|
||
a.bes_srtgroep_omschrijving
|
||
FROM ( SELECT COALESCE (bo.bes_srtdeel_key_inkoop,
|
||
bo.bes_srtdeel_key)
|
||
bes_srtdeel_key,
|
||
bo.bes_srtdeel_nr,
|
||
bo.bes_ins_discipline_key,
|
||
bo.inkoop_disc,
|
||
SUM (bo.aantal_intern) aantal_intern_uit,
|
||
SUM (bo.aantal_extern_geleverd)
|
||
aantal_geleverd,
|
||
bes_srtgroep_omschrijving
|
||
FROM ( SELECT sd.bes_srtdeel_nr,
|
||
sd.bes_srtdeel_key,
|
||
bes_srtgroep_omschrijving,
|
||
(SELECT isd2.bes_srtdeel_key
|
||
FROM bes_srtdeel isd2,
|
||
bes_srtgroep isg2,
|
||
bes_discipline bd2
|
||
WHERE isd2.bes_srtgroep_key =
|
||
isg2.bes_srtgroep_key
|
||
AND bd2.ins_discipline_key =
|
||
isg2.ins_discipline_key
|
||
AND isd2.bes_srtdeel_nr LIKE
|
||
sd.bes_srtdeel_nr
|
||
AND bes_srtdeel_verwijder IS NULL
|
||
AND bd2.ins_discipline_key =
|
||
dp.bes_ins_discipline_key_inkoop)
|
||
bes_srtdeel_key_inkoop,
|
||
dp.bes_ins_discipline_key,
|
||
dp.bes_ins_discipline_key_inkoop
|
||
inkoop_disc,
|
||
SUM (bi.bes_bestelling_item_aantal)
|
||
aantal_intern,
|
||
TO_NUMBER (NULL) aantal_open_order,
|
||
TO_NUMBER (NULL)
|
||
aantal_extern_geleverd
|
||
FROM bes_discipline bd,
|
||
bes_v_aanwezigsrtgroep g,
|
||
bes_v_aanwezigsrtdeel sd,
|
||
bes_bestelling b,
|
||
bes_bestelling_item bi,
|
||
bes_disc_params dp
|
||
WHERE sd.bes_srtgroep_key =
|
||
g.bes_srtgroep_key
|
||
AND bi.bes_srtdeel_key =
|
||
sd.bes_srtdeel_key
|
||
AND b.bes_bestelling_key =
|
||
bi.bes_bestelling_key
|
||
AND g.ins_discipline_key =
|
||
bd.ins_discipline_key
|
||
AND bd.ins_discipline_key =
|
||
dp.bes_ins_discipline_key
|
||
AND sd.bes_srtdeel_verwijder IS NULL
|
||
AND dp.bes_ins_discipline_key_inkoop IS NOT NULL
|
||
AND dp.bes_ins_discipline_key_inkoop =
|
||
221
|
||
AND (sd.bes_srtdeel_vervaldatum IS NULL
|
||
OR sd.bes_srtdeel_vervaldatum >
|
||
SYSDATE)
|
||
GROUP BY sd.bes_srtdeel_nr,
|
||
sd.bes_srtdeel_key,
|
||
dp.bes_ins_discipline_key,
|
||
dp.bes_ins_discipline_key_inkoop,
|
||
bes_srtgroep_omschrijving
|
||
UNION ALL
|
||
SELECT sd.bes_srtdeel_nr,
|
||
sd.bes_srtdeel_key,
|
||
bes_srtgroep_omschrijving,
|
||
NULL bes_srtdeel_key_inkoop,
|
||
dp.bes_ins_discipline_key,
|
||
bd.ins_discipline_key inkoop_disc,
|
||
TO_NUMBER (NULL) aantal_intern,
|
||
SUM (bi.bes_bestelling_item_aantal)
|
||
- SUM(COALESCE (
|
||
bi.bes_bestelling_item_aantalontv,
|
||
0
|
||
))
|
||
aantal_open_order,
|
||
TO_NUMBER (NULL)
|
||
aantal_extern_geleverd
|
||
FROM bes_discipline bd,
|
||
bes_v_aanwezigsrtgroep g,
|
||
bes_v_aanwezigsrtdeel sd,
|
||
bes_bestelling b,
|
||
bes_bestelling_item bi,
|
||
bes_bestelopdr_item bo,
|
||
bes_disc_params dp
|
||
WHERE sd.bes_srtgroep_key =
|
||
g.bes_srtgroep_key
|
||
AND bi.bes_srtdeel_key =
|
||
sd.bes_srtdeel_key
|
||
AND b.bes_bestelling_key =
|
||
bi.bes_bestelling_key
|
||
AND bi.bes_bestelopdr_item_key =
|
||
bo.bes_bestelopdr_item_key
|
||
AND g.ins_discipline_key =
|
||
bd.ins_discipline_key
|
||
AND bd.ins_discipline_key =
|
||
dp.bes_ins_discipline_key
|
||
AND sd.bes_srtdeel_verwijder IS NULL
|
||
AND b.bes_bestelling_status IN
|
||
(2, 3, 4, 5)
|
||
AND dp.bes_ins_discipline_key_inkoop IS NULL
|
||
AND dp.bes_ins_discipline_key IN
|
||
(SELECT dp1.bes_ins_discipline_key_inkoop
|
||
FROM bes_disc_params dp1
|
||
WHERE dp1.bes_ins_discipline_key_inkoop IS NOT NULL)
|
||
AND bd.ins_discipline_key = 221
|
||
AND (sd.bes_srtdeel_vervaldatum IS NULL
|
||
OR sd.bes_srtdeel_vervaldatum >
|
||
SYSDATE)
|
||
GROUP BY bes_srtdeel_nr,
|
||
sd.bes_srtdeel_key,
|
||
dp.bes_ins_discipline_key,
|
||
bd.ins_discipline_key,
|
||
bes_srtgroep_omschrijving
|
||
UNION ALL
|
||
SELECT sd.bes_srtdeel_nr,
|
||
sd.bes_srtdeel_key,
|
||
bes_srtgroep_omschrijving,
|
||
NULL bes_srtdeel_key_inkoop,
|
||
dp.bes_ins_discipline_key,
|
||
bd.ins_discipline_key inkoop_disc,
|
||
TO_NUMBER (NULL) aantal_intern,
|
||
TO_NUMBER (NULL) aantal_open_order,
|
||
SUM(COALESCE (
|
||
bi.bes_bestelling_item_aantalontv,
|
||
0
|
||
))
|
||
aantal_extern_geleverd
|
||
FROM bes_discipline bd,
|
||
bes_v_aanwezigsrtgroep g,
|
||
bes_v_aanwezigsrtdeel sd,
|
||
bes_bestelling b,
|
||
bes_bestelling_item bi,
|
||
bes_bestelopdr_item bo,
|
||
bes_disc_params dp
|
||
WHERE sd.bes_srtgroep_key =
|
||
g.bes_srtgroep_key
|
||
AND bi.bes_srtdeel_key =
|
||
sd.bes_srtdeel_key
|
||
AND b.bes_bestelling_key =
|
||
bi.bes_bestelling_key
|
||
AND bi.bes_bestelopdr_item_key =
|
||
bo.bes_bestelopdr_item_key
|
||
AND g.ins_discipline_key =
|
||
bd.ins_discipline_key
|
||
AND bd.ins_discipline_key =
|
||
dp.bes_ins_discipline_key
|
||
AND sd.bes_srtdeel_verwijder IS NULL
|
||
AND (b.bes_bestelling_status IN
|
||
(6, 7)
|
||
OR (bo.bes_bestelopdr_item_ontvangen IS NOT NULL
|
||
AND b.bes_bestelling_status IN
|
||
(5)))
|
||
AND dp.bes_ins_discipline_key_inkoop IS NULL
|
||
AND dp.bes_ins_discipline_key IN
|
||
(SELECT dp1.bes_ins_discipline_key_inkoop
|
||
FROM bes_disc_params dp1
|
||
WHERE dp1.bes_ins_discipline_key_inkoop IS NOT NULL)
|
||
AND bd.ins_discipline_key = 221
|
||
AND (sd.bes_srtdeel_vervaldatum IS NULL
|
||
OR sd.bes_srtdeel_vervaldatum >
|
||
SYSDATE)
|
||
GROUP BY bes_srtdeel_nr,
|
||
sd.bes_srtdeel_key,
|
||
dp.bes_ins_discipline_key,
|
||
bd.ins_discipline_key,
|
||
bes_srtgroep_omschrijving,
|
||
bes_srtgroep_omschrijving) bo
|
||
GROUP BY bo.bes_srtdeel_key,
|
||
bo.bes_srtdeel_key_inkoop,
|
||
bo.bes_srtdeel_nr,
|
||
bo.bes_ins_discipline_key,
|
||
bo.inkoop_disc,
|
||
bes_srtgroep_omschrijving) a,
|
||
(SELECT sd2.bes_srtdeel_nr,
|
||
sd2.bes_srtdeel_voorraadfactor
|
||
intern_voorraadfactor,
|
||
sg2.ins_discipline_key,
|
||
sd2.bes_srtdeel_omschrijving
|
||
bes_srtdeel_omschrijving
|
||
FROM bes_srtdeel sd2, bes_srtgroep sg2
|
||
WHERE sd2.bes_srtgroep_key = sg2.bes_srtgroep_key
|
||
AND sd2.bes_srtdeel_verwijder IS NULL) b
|
||
WHERE a.bes_srtdeel_nr = b.bes_srtdeel_nr
|
||
AND a.inkoop_disc = b.ins_discipline_key
|
||
GROUP BY a.bes_srtdeel_key,
|
||
a.bes_srtdeel_nr,
|
||
a.inkoop_disc,
|
||
a.bes_srtgroep_omschrijving,
|
||
b.intern_voorraadfactor,
|
||
b.bes_srtdeel_omschrijving) l;
|
||
|
||
CREATE OR REPLACE VIEW stph_v_noti_cntreminder
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
par1,
|
||
par2,
|
||
xkey
|
||
)
|
||
AS
|
||
SELECT 'CNTUPD',
|
||
'',
|
||
COALESCE (c.prs_perslid_key_eig, c.prs_perslid_key_beh),
|
||
'Rapp<EFBFBD>l: Contract ' || c.cnt_contract_nummer_intern
|
||
|| DECODE (cnt_contract_versie,
|
||
NULL, '',
|
||
'.' || cnt_contract_versie)
|
||
|| ' ('
|
||
|| c.cnt_contract_omschrijving
|
||
|| ' '
|
||
|| b.prs_bedrijf_naam
|
||
|| ')'
|
||
|| ' moet uiterlijk per '
|
||
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
|
||
'DD-MM-YYYY')
|
||
|| ' worden verlengd of opgezegd.',
|
||
c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern,
|
||
cnt.cnt_getopzegdatum (c.cnt_contract_key),
|
||
NULL
|
||
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
|
||
AND cnt_contract_verwijder IS NULL
|
||
AND cnt_contract_status = 0
|
||
AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key)
|
||
AND cnt.cnt_getopzegdatum (c.cnt_contract_key));
|
||
|
||
|
||
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
------ INVOICESHARING.COM INVOICESHARING.COM INVOICESHARING.COM INVOICESHARING.COM INVOICESHARING.COM ------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE stph_import_invoicesharing (p_import_key IN NUMBER)
|
||
AS
|
||
v_seq_of_columns VARCHAR(50);
|
||
BEGIN
|
||
|
||
--In de XSL: factuurnr(1);factuurdatum(2);opdrachtnr(3);omschrijving(4);bedrag(5);btwperc(6);btwbedrag(7);btw_verlegd(8);document(9);kostensoort(10);
|
||
--hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;16;7;8;9;0'
|
||
v_seq_of_columns := '0;1;2;3;0;0;4;0;5;7;6;9;0;0;0;10;0;0;0;0';
|
||
|
||
-- Variabelelijst
|
||
-- v_leveranciernr: 1
|
||
-- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet")
|
||
-- v_factuurdatum: 3
|
||
-- v_ordernr: 4 (VERPLICHT, anders is status van factuur "Incompleet")
|
||
-- v_locatie: 5
|
||
-- v_afleverdatum: 6
|
||
-- v_omschrijving: 7
|
||
-- v_aantal: 8
|
||
-- v_kostprijs: 9 (VERPLICHT, anders is status van factuur "Incompleet")
|
||
-- v_btw_bedrag: 10 (VERPLICHT, of anders veld 11, anders is status van factuur "Incompleet")
|
||
-- v_btw: 11 (VERPLICHT, of anders veld 10, anders is status van factuur "Incompleet")
|
||
-- v_docid: 12
|
||
-- v_debiteur_nr: 13
|
||
-- v_opmerking: 14
|
||
-- v_btw_verlegd: 15 (VERPLICHT, Ja/Nee/<leeg> waarbij leeg gelijk is aan Nee. Andere waarden leidt tot "Incompleet")
|
||
-- v_kenmerk1: 16
|
||
-- v_kenmerk1: 17
|
||
-- v_kenmerk1: 18
|
||
-- v_kenmerk1: 19
|
||
-- v_kenmerk1: 20
|
||
-- v_boekmaand: 21
|
||
|
||
fac_import_factuur_body(p_import_key, v_seq_of_columns);
|
||
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_fin_kostensoort_key prs_kostensoort.prs_kostensoort_key%TYPE;
|
||
|
||
CURSOR cfactuurregel_kostensoort
|
||
IS
|
||
SELECT DISTINCT fin_factuur_key, factuurnr, fin_factuurregel_key, kenmerk1, fac_imp_file_index
|
||
FROM fac_imp_factuur
|
||
WHERE fac_import_key = p_import_key;
|
||
BEGIN
|
||
FOR rc IN cfactuurregel_kostensoort
|
||
LOOP
|
||
BEGIN
|
||
|
||
-- Dan gaan we op zoek of de kostensoort aangeleverd door InvoiceSharing, wel bestaat in Facilitor, zo nee, dan laten we die onbekende kostensoort op regelnivo LEEG
|
||
SELECT MAX(prs_kostensoort_key)
|
||
INTO v_prs_kostensoort_key
|
||
FROM prs_kostensoort
|
||
WHERE prs_kostensoort_upper = UPPER(rc.kenmerk1);
|
||
|
||
IF v_prs_kostensoort_key IS NOT NULL
|
||
THEN
|
||
-- We hebben een geldige kostensoort van InvoiceSharing ontvangen, die gaan we zetten.
|
||
-- Wel nog ff checken of deze kostensoort al bij factuur staat, want dan hoeven we dit op factuurregel niet te zetten (dan neemt die de kostensoort van factuur 'over')
|
||
|
||
SELECT COALESCE(f.prs_kostensoort_key,-1)
|
||
INTO v_fin_kostensoort_key
|
||
FROM fin_factuur f, fin_factuurregel fr
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND fr.fin_factuurregel_key = rc.fin_factuurregel_key;
|
||
|
||
IF v_fin_kostensoort_key <> v_prs_kostensoort_key
|
||
THEN
|
||
-- De kostensoort is NIET dezelfde als bij factuur, dus we gaan hem op factuurregel nivo zetten.
|
||
UPDATE fin_factuurregel
|
||
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
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Van factuur met key ' || rc.fin_factuur_key || ' is de kostensoort niet verwerkt (regel ' || rc.fac_imp_file_index || ')',
|
||
'Factuurnr:' || rc.factuurnr || ' / Kostensoort: ' || rc.kenmerk1
|
||
);
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
/
|
||
CREATE OR REPLACE PROCEDURE stph_update_invoicesharing (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
-- Standaard FCLT verwerk import facturen
|
||
fac_update_factuur (p_import_key);
|
||
stph_postupdate_invoicesharing(p_import_key);
|
||
END;
|
||
/
|
||
|
||
------ payload end ------
|
||
|
||
SET DEFINE OFF
|
||
BEGIN adm.systrackscriptId ('$Id$', 1); END;
|
||
/
|
||
|
||
COMMIT;
|
||
SET ECHO OFF
|
||
SPOOL OFF
|
||
SET DEFINE ON
|
||
PROMPT Logfile of this upgrade is: &fcltlogfile
|