From 715b5f71a120e942f953fb2c2996b2fc2e588b96 Mon Sep 17 00:00:00 2001 From: Robin Stoker Date: Wed, 9 May 2018 15:44:30 +0000 Subject: [PATCH] DJIN#52550 DJIN#52581 DJIN#52579 -- AD import, voorraad rapportages, bonnen, notificaties svn path=/Customer/trunk/; revision=37872 --- DVON/dvon.sql | 288 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 286 insertions(+), 2 deletions(-) diff --git a/DVON/dvon.sql b/DVON/dvon.sql index b1f66f6cd..926cfcf2c 100644 --- a/DVON/dvon.sql +++ b/DVON/dvon.sql @@ -16,6 +16,134 @@ SET DEFINE OFF ------ payload begin ------ +CREATE OR REPLACE PROCEDURE dvon_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); + v_newline FAC_IMP_FILE.FAC_IMP_FILE_LINE%TYPE; +BEGIN + + BEGIN + SELECT fac_imp_file_line + INTO v_newline + FROM fac_imp_file + WHERE fac_import_key = p_import_key + AND fac_imp_file_index = 1; + + IF v_newline LIKE + CHR (TO_NUMBER ('EF', 'xx')) + || CHR (TO_NUMBER ('BB', 'xx')) + || CHR (TO_NUMBER ('BF', 'xx')) + || '%' + THEN + -- EF BB BF aangetroffen + fac.imp_writelog (p_import_key, + 'W', + 'Byte Order Mark aangetroffen', + 'Bestand heeft onbehandeld UTF-8 formaat.' + ); + v_newline := SUBSTR (v_newline, 4); + END IF; + + -- Verwijder de dubbele quotes + v_newline := REPLACE (v_newline, '"'); + + UPDATE fac_imp_file + SET fac_imp_file_line = v_newline + WHERE fac_import_key = p_import_key + AND fac_imp_file_index = 1; + + + EXCEPTION WHEN OTHERS + THEN + fac.imp_writelog (p_import_key, + 'E', + 'Fout bij controle op Byte Order Mark', + '' + ); + END; + + 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;5;2;0;3;'|| + '0;0;0;0;0;0;0;4;0;0;'|| + '0;1;0;0;0;0;0;0;0;0;'|| + '0;0;0;0;0;0;0;0;0;0;'|| + '0;0;0;0;0;0', + 'accountnaam;achternaam;voornaam;e-mail;afdeling' + ); + +UPDATE fac_imp_perslid +SET prs_srtperslid_omschrijving = 'Onbekend'; + + 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 dvon_import_perslid; +/ + +CREATE OR REPLACE PROCEDURE dvon_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_oslogin, pf.prs_perslid_naam_full + FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf + WHERE p.prs_perslid_oslogin = i.prs_perslid_oslogin(+) + AND pf.prs_perslid_key = p.prs_perslid_key + AND p.prs_perslid_oslogin IS NOT NULL + AND i.prs_perslid_oslogin IS NULL + AND p.prs_perslid_verwijder IS NULL + AND p.prs_perslid_oslogin NOT LIKE '%_%' + AND p.prs_perslid_oslogin2 IS NULL + ORDER BY 2; + + v_count NUMBER; + +BEGIN + -- generic update + + SELECT count(*) + INTO v_count + FROM fac_imp_perslid; + + IF v_count < 150 + 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; + + -- 'LOGIN' betekent dat op basis van oslogin wordt gematched. + -- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen + prs.update_perslid (p_import_key, 'LOGIN', 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; + +END dvon_update_perslid; +/ + +-- Vanaf hier rapportages + CREATE OR REPLACE VIEW dvon_v_rap_voorraad ( OBJECT_GROEP, @@ -38,16 +166,172 @@ SELECT iv.groep, iv.ruimtenr FROM ins_v_udr_deel iv, (SELECT f.fac_usrdata_omschr, iv.ins_deel_key - FROM fac_usrdata f, ins_v_srtdeel_kenmerkdeel iv - WHERE f.fac_usrdata_key = iv.ins_kenmerkdeel_waarde) maat + FROM fac_usrdata f, ins_v_srtdeel_kenmerkdeel iv, ins_kenmerk ik, ins_srtkenmerk isk + WHERE f.fac_usrdata_key = iv.ins_kenmerkdeel_waarde + AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key + AND iv.ins_kenmerk_key = ik.ins_kenmerk_key + AND isk.ins_srtkenmerk_upper LIKE '%MAAT%') maat WHERE iv.deel_key = maat.ins_deel_key GROUP BY maat.fac_usrdata_omschr, iv.groep, + iv.soort, + iv.locatie_omschrijving, + iv.gebouw, + iv.verdiepingcode, + iv.ruimtenr + UNION ALL + SELECT iv.groep, + iv.soort, + 'NVT', + COUNT (iv.deel_key), + iv.locatie_omschrijving, + iv.gebouw, + iv.verdiepingcode, + iv.ruimtenr + FROM ins_v_udr_deel iv + WHERE NOT EXISTS + (SELECT 1 + FROM ins_kenmerk ik, + ins_srtkenmerk isk, + ins_kenmerkdeel ikd, + ins_srtdeel isd + WHERE isd.ins_srtdeel_code_upper = iv.soortcode + AND iv.deel_key = ikd.ins_deel_key + AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key + AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key + AND isk.ins_srtkenmerk_upper LIKE '%MAAT%') +GROUP BY iv.groep, iv.soort, iv.locatie_omschrijving, iv.gebouw, iv.verdiepingcode, iv.ruimtenr; + +CREATE OR REPLACE VIEW dvon_v_rap_bes_voorraad +( + bestelling_key, + bestelaanvraagnr, + besteldatum, + leverancier, + besteller, + invoerder, + kostensoortgroep, + kostensoort, + kpn, + kpn_omschrijving, + fclt_3d_afdeling_key, + afdeling_code, + afdeling_omschrijving, + fclt_3d_locatie_key, + locatie_code, + regio_omschrijving, + district_omschrijving, + afleveradres, + mandaat, + fclt_3d_discipline_key, + catalogus, + groep, + productomschrijving, + productcode, + afleverdatum, + doorlooptijd_werkdgn, + sla_tijd, + prijs, + inkoopprijs, + status, + gefiatteerddoor, + bestelopdrachtnummer, + aantal, + itemprijs, + iteminkoopprijs, + itemposnr, + maat, + kleurbolletje, + op_voorraad, + voorraad_locatie, + opmerking, + besteld_voor, + bestelopdr_key +) +AS + SELECT bvu.*, + COALESCE ( + (SELECT f.fac_usrdata_omschr + FROM fac_usrdata f, bes_srtkenmerk bsk + WHERE f.fac_usrdata_key = bki.bes_kenmerkbesteli_waarde + AND BK.BES_SRTKENMERK_KEY = bsk.bes_srtkenmerk_key + AND bsk.bes_srtkenmerk_upper LIKE '%MAAT%'), + 'NVT') + maat, + lcl.l('lcl_bestelopdr_flag' || bo.bes_bestelopdr_flag), + COALESCE (dv.aantal, 0) op_voorraad, + COALESCE (dv.locatie, 'Niet opgegeven') voorraad_locatie, + bo.bes_bestelopdr_opmerking, + (SELECT prs_perslid_naam_full + FROM prs_v_perslid_fullnames_all pf + WHERE pf.prs_perslid_key = b.prs_perslid_key_voor) + besteld_voor, + bo.bes_bestelopdr_key + FROM bes_v_udr_bestelling bvu, + bes_bestelling b, + bes_bestelling_item bi, + bes_bestelopdr_item boi, + bes_bestelopdr bo, + bes_kenmerkbesteli bki, + bes_kenmerk bk, + dvon_v_rap_voorraad dv + WHERE b.bes_bestelling_key = bi.bes_bestelling_key + AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key(+) + AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+) + AND b.bes_bestelling_key = bvu.bestelling_key + AND bki.bes_bestelling_item_key = bi.bes_bestelling_item_key + AND bki.bes_kenmerk_key = bk.bes_kenmerk_key + AND dv.object_soort = bvu.productomschrijving + AND bo.bes_bestelopdr_key IS NOT NULL + AND dv.ruimtenr = 'MAGAZIJN' + AND dv.maat = + COALESCE ( + (SELECT f.fac_usrdata_omschr + FROM fac_usrdata f, bes_srtkenmerk bsk + WHERE f.fac_usrdata_key = bki.bes_kenmerkbesteli_waarde + AND BK.BES_SRTKENMERK_KEY = bsk.bes_srtkenmerk_key + AND bsk.bes_srtkenmerk_upper LIKE '%MAAT%'), + 'NVT'); + + CREATE OR REPLACE VIEW DVON_V_NOTI_BES_DEEL +( + CODE, + SENDER, + RECEIVER, + TEXT, + KEY, + XKEY +) +AS + SELECT DISTINCT + 'CUST01', + NULL, + b.prs_perslid_key, + 'Deellevering voor bestelling met nummer ' + || b.bes_bestelling_key, + b.bes_bestelling_key, + NULL + FROM bes_bestelling b, + (SELECT + bes_bestelling_key, + SUM (bes_bestelling_item_aantalontv) aantalontv, + SUM (bes_bestelling_item_aantal) aantal + FROM bes_bestelling_item + GROUP BY bes_bestelling_key) bi, + bes_bestelopdr bo, + fac_tracking fa + WHERE b.bes_bestelling_key = bi.bes_bestelling_key + AND bi.aantalontv IS NOT NULL -- Er moeten artikelen ontvangen zijn voor een deellevering + AND bi.aantalontv < bi.aantal -- Levering is nog niet compleet + AND fa.fac_tracking_refkey = bo.bes_bestelopdr_key + AND fa.fac_srtnotificatie_key = 25 -- BESUPD er is iets geleverd + AND b.bes_bestelling_key = substr(bo.bes_bestelopdr_id, 1, instr(bo.bes_bestelopdr_id, '/')-1) + AND TRUNC (fa.fac_tracking_datum) = TRUNC (sysdate) -1; ------ payload end ------