From f248c9f6b443c91fc2566c5b789fc70efb292246 Mon Sep 17 00:00:00 2001 From: Arthur Egberink Date: Thu, 27 Oct 2022 12:04:00 +0000 Subject: [PATCH] LOGC#75016 -- SAP bestanden geautomatiseerd verwerken svn path=/Customer/trunk/; revision=57775 --- LOGC/logc.sql | 123 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 106 insertions(+), 17 deletions(-) diff --git a/LOGC/logc.sql b/LOGC/logc.sql index d749484ae..23e549c0c 100644 --- a/LOGC/logc.sql +++ b/LOGC/logc.sql @@ -421,6 +421,10 @@ IS v_datum_txt VARCHAR2 (20); v_categorie VARCHAR2 (100); v_werknemer NUMBER (10); + v_factuurnr VARCHAR2 (100); + v_factuurdatum_txt VARCHAR2 (100); + v_factuurbedrag VARCHAR2 (100); + v_factuurstatus VARCHAR2(100); i_transactietekst NUMBER(2); i_project NUMBER(2); @@ -429,6 +433,10 @@ IS i_datum_txt NUMBER(2); i_categorie NUMBER(2); i_werknemer NUMBER(2); + i_factuurnr NUMBER(2); + i_factuurdatum_txt NUMBER(2); + i_factuurbedrag NUMBER(2); + i_factuurstatus NUMBER(2); CURSOR c1 IS @@ -458,17 +466,22 @@ BEGIN fac.imp_getfield (v_newline, c_delim, v_field); v_index := v_index + 1; CASE UPPER(v_field) - WHEN 'DATUM' THEN i_datum_txt := v_index; - WHEN 'ALGEMENE ONTVANGER' THEN i_project := v_index; - WHEN 'RUBRICERINGSOMS.' THEN i_project_oms := v_index; - WHEN 'PRESTATIESOORT' THEN i_categorie := v_index; - WHEN 'PERSONEELSNUMMER' THEN i_werknemer := v_index; - WHEN 'AANTAL (MAATEENHEID)' THEN i_uren := v_index; - WHEN 'K. TEKST' THEN i_transactietekst := v_index; + WHEN 'DATE' THEN i_datum_txt := v_index; + WHEN 'GENERAL RECEIVER' THEN i_project := v_index; + WHEN 'ACCT ASSGNT TEXT' THEN i_project_oms := v_index; + WHEN 'ACTIVITY TYPE' THEN i_categorie := v_index; + WHEN 'PERSONNEL NUMBER' THEN i_werknemer := v_index; + WHEN 'NUMBER (UNIT)' THEN i_uren := v_index; + WHEN 'SHORT TEXT' THEN i_transactietekst := v_index; + WHEN 'INVOICE' THEN i_factuurnr := v_index; + WHEN 'BILLINGDATE' THEN i_factuurdatum_txt := v_index; + WHEN 'PRICE' THEN i_factuurbedrag := v_index; + WHEN 'STATUS' THEN i_factuurstatus := v_index; ELSE NULL; END CASE; + END LOOP; IF i_datum_txt > 0 AND i_project > 0 @@ -477,6 +490,12 @@ BEGIN AND i_werknemer > 0 AND i_uren > 0 AND i_transactietekst > 0 + AND i_factuurnr > 0 + AND i_factuurdatum_txt > 0 + AND i_factuurbedrag > 0 + AND i_factuurstatus > 0 + + THEN header_is_valid := 1; END IF; @@ -492,6 +511,10 @@ BEGIN fac.imp_getfield_nr (v_newline, c_delim, i_datum_txt, v_datum_txt); fac.imp_getfield_nr (v_newline, c_delim, i_categorie, v_categorie); fac.imp_getfield_nr (v_newline, c_delim, i_werknemer, v_werknemer); + fac.imp_getfield_nr (v_newline, c_delim, i_factuurnr, v_factuurnr); + fac.imp_getfield_nr (v_newline, c_delim, i_factuurdatum_txt, v_factuurdatum_txt); + fac.imp_getfield_nr (v_newline, c_delim, i_factuurbedrag, v_factuurbedrag); + fac.imp_getfield_nr (v_newline, c_delim, i_factuurstatus, v_factuurstatus); IF (header_is_valid = 1) THEN @@ -585,14 +608,65 @@ BEGIN 'Regel wordt overgeslagen!'); END IF; + v_errormsg := 'Factuurnummer ongeldig'; + v_factuurnr := SUBSTR(TRIM (REPLACE(v_factuurnr,'#N/A')),1,20); + + -- Bij fixed price projecten komt als datum 0-1-1900 te staan + v_errormsg := 'Factuurdatum ongeldig'; + v_factuurdatum_txt := TRIM (REPLACE(REPLACE(v_factuurdatum_txt,'#N/A'), '0-1-1900')); + + IF (v_factuurdatum_txt IS NOT NULL AND fac.safe_to_date (v_factuurdatum_txt,'dd-mm-yyyy') IS NULL) + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + END IF; + + v_errormsg := 'Factuurbedrag ongeldig'; + v_factuurbedrag := TRIM (REPLACE(v_factuurbedrag,'#N/A')); + + IF (v_factuurbedrag IS NOT NULL AND fac.safe_to_number (replace(replace(v_factuurbedrag, '.'),',','.')) IS NULL) + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + END IF; + + v_errormsg := 'Factuurstatus ongeldig'; + v_factuurstatus := SUBSTR(TRIM (REPLACE(v_factuurstatus,'#N/A')), 1, 10); + -- Insert geformatteerde import record IF v_ongeldig = 0 THEN BEGIN v_errormsg := 'Fout bij wegschrijven importregel'; - INSERT INTO logc_imp_uren_besteding (transactietekst, project, project_oms, uren, datum_txt, categorie, werknemer) - VALUES (v_transactietekst, v_project, v_project_oms, fac.safe_to_number (replace(v_uren,',','.')), v_datum_txt, v_categorie, v_werknemer); + INSERT INTO logc_imp_uren_besteding (transactietekst, + project, + project_oms, + uren, + datum_txt, + categorie, + werknemer, + factuurnr, + factuurdatum, + factuurbedrag, + factuurstatus) + VALUES (v_transactietekst, + v_project, + v_project_oms, + fac.safe_to_number (replace(v_uren,',','.')), + v_datum_txt, + v_categorie, + v_werknemer, + v_factuurnr, + fac.safe_to_date (v_factuurdatum_txt,'dd-mm-yyyy'), + fac.safe_to_number (replace(replace(v_factuurbedrag, '.'),',','.')), + v_factuurstatus); v_count_import := v_count_import + 1; EXCEPTION @@ -626,7 +700,11 @@ BEGIN i_categorie || '-' || i_werknemer || '-' || i_uren || '-' || - i_transactietekst || ')'); + i_transactietekst || '-' || + i_factuurnr || '-' || + i_factuurdatum_txt || '-' || + i_factuurbedrag || '-' || + i_factuurstatus || ')'); ELSE fac.imp_writelog (p_import_key, 'S', @@ -902,19 +980,19 @@ BEGIN IF (header_is_valid = 0) THEN - IF UPPER (v_KlantOmschrijving) = 'OMSCHRIJVING' - AND UPPER (v_WBSelement) = 'WBS-ELEMENT' - AND UPPER (v_Projectsoort) = 'PROJECTSOORT' - AND UPPER (v_Omschrijving) = 'OMSCHRIJVING' + IF UPPER (v_KlantOmschrijving) = 'DESCRIPTION' + AND UPPER (v_WBSelement) = 'WBS ELEMENT' + AND UPPER (v_Projectsoort) = 'PROJECT TYPE' + AND UPPER (v_Omschrijving) = 'DESCRIPTION' AND UPPER (v_Status) = 'STATUS' - AND UPPER (v_Debiteur) = 'KLANT' + AND UPPER (v_Debiteur) = 'CUSTOMER' AND UPPER (v_PlanWorktime) = 'PLAN WORKTIME' AND UPPER (v_ActualWorktime) = 'ACTUAL WORKTIME' AND UPPER (v_ActualWorkCosts) = 'ACTUAL WORK COSTS' AND UPPER (v_PlanWorkCosts) = 'PLAN WORK COSTS' AND UPPER (v_InvoiceReceived) = 'INVOICE RECEIVED' AND UPPER (v_InvoicePosted) = 'INVOICE POSTED' - AND UPPER (v_ProjektManagerLogin) = 'PROJEKTLEITER' + AND UPPER (v_ProjektManagerLogin) = 'PROJECTMANAGER NAME' -- Name niet opnemen AND UPPER (v_SalesPersonNr) = 'SALES PERSON' AND UPPER (v_NameSalesPerson) = 'NAME SALES REPRESEN' THEN @@ -1226,6 +1304,13 @@ EXCEPTION END logc_import_projecten; / +CREATE OR REPLACE PROCEDURE logc_update_projecten (p_import_key IN NUMBER) +IS +BEGIN + NULL; -- Hier hoeven we verder niets te doen. +END; +/ + CREATE OR REPLACE VIEW logc_v_rap_projecten AS SELECT d.prs_afdeling_key @@ -1609,7 +1694,11 @@ AS AND mk.mld_srtkenmerk_key = 25 AND km.mld_melding_key = m.mld_melding_key) custref, m.mld_melding_externnr, - m.mld_melding_key + m.mld_melding_key, + i.factuurnr, + i.factuurdatum, + i.factuurbedrag, + i.factuurstatus FROM logc_imp_uren_besteding i, logc_imp_projecten pr, mld_melding m,