LOGC#65847 -- SAP projecten importeren in Facilitor
svn path=/Customer/trunk/; revision=49846
This commit is contained in:
462
LOGC/logc.sql
462
LOGC/logc.sql
@@ -683,6 +683,468 @@ AS
|
||||
and a.prs_afdeling_parentkey = a1.prs_afdeling_key(+)
|
||||
AND datum > TO_DATE ('20200101', 'yyyymmdd');
|
||||
|
||||
CREATE OR REPLACE PROCEDURE logc_import_projecten (p_import_key IN NUMBER)
|
||||
IS
|
||||
c_delim VARCHAR2 (1) := ';';
|
||||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
||||
v_errormsg 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);
|
||||
v_field VARCHAR2 (100);
|
||||
v_index NUMBER (2);
|
||||
v_maxdate DATE;
|
||||
v_mindate DATE;
|
||||
-- De importvelden:
|
||||
v_KlantOmschrijving VARCHAR2 (100);
|
||||
v_WBSelement VARCHAR2 (100);
|
||||
v_Projectsoort VARCHAR2 (100);
|
||||
v_Omschrijving VARCHAR2 (100);
|
||||
v_Status VARCHAR2 (100);
|
||||
v_Debiteur VARCHAR2 (100);
|
||||
v_PlanWorktime VARCHAR2 (100);
|
||||
v_ActualWorktime VARCHAR2 (100);
|
||||
v_ActualWorkCosts VARCHAR2 (100);
|
||||
v_PlanWorkCosts VARCHAR2 (100);
|
||||
v_InvoiceReceived VARCHAR2 (100);
|
||||
v_InvoicePosted VARCHAR2 (100);
|
||||
v_ProjektManagerLogin VARCHAR2 (100);
|
||||
v_SalesPersonNr VARCHAR2 (100);
|
||||
v_NameSalesPerson VARCHAR2 (100);
|
||||
v_prs_kostenplaats_key NUMBER (10);
|
||||
|
||||
v_budgethouder_key NUMBER (10);
|
||||
v_kostenplaats_key NUMBER (10);
|
||||
v_kostenplaatsgrp_key NUMBER (10);
|
||||
|
||||
CURSOR c1 IS
|
||||
SELECT *
|
||||
FROM fac_imp_file
|
||||
WHERE fac_import_key = p_import_key
|
||||
ORDER BY fac_imp_file_index;
|
||||
BEGIN
|
||||
FOR rec1 IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_newline := rec1.fac_imp_file_line;
|
||||
v_errormsg := 'Fout bij opvragen importregel';
|
||||
v_aanduiding := '';
|
||||
v_ongeldig := 0;
|
||||
|
||||
IF v_newline LIKE ';;;;;;%'
|
||||
THEN
|
||||
NULL; -- Lege regels slaan we over
|
||||
ELSE
|
||||
-- Lees alle veldwaarden
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
2,
|
||||
v_KlantOmschrijving);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
3,
|
||||
v_WBSelement);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
4,
|
||||
v_Projectsoort);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
5,
|
||||
v_Omschrijving);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
6,
|
||||
v_Status);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
7,
|
||||
v_Debiteur);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
10,
|
||||
v_PlanWorktime);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
11,
|
||||
v_ActualWorktime);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
12,
|
||||
v_ActualWorkCosts);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
13,
|
||||
v_PlanWorkCosts);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
14,
|
||||
v_InvoiceReceived);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
15,
|
||||
v_InvoicePosted);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
16,
|
||||
v_ProjektManagerLogin);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
17,
|
||||
v_SalesPersonNr);
|
||||
fac.imp_getfield_nr (v_newline,
|
||||
c_delim,
|
||||
18,
|
||||
v_NameSalesPerson);
|
||||
|
||||
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'
|
||||
AND UPPER (v_Status) = 'STATUS'
|
||||
AND UPPER (v_Debiteur) = 'DEBITEUR'
|
||||
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_SalesPersonNr) = 'SALES PERSON'
|
||||
AND UPPER (v_NameSalesPerson) = 'NAME SALES REPRESEN'
|
||||
THEN
|
||||
header_is_valid := 1;
|
||||
END IF;
|
||||
ELSE
|
||||
v_count_tot := v_count_tot + 1;
|
||||
v_aanduiding := v_WBSelement || ' - ';
|
||||
|
||||
-- We gaan duizendtal tekens verwijderen en vervolgens de komma als scheidingsteken vervangen
|
||||
-- door een punt
|
||||
v_PlanWorktime := REPLACE(REPLACE(v_PlanWorktime, '.'), ',', '.');
|
||||
v_ActualWorktime := REPLACE(REPLACE(v_ActualWorktime, '.'), ',', '.');
|
||||
v_ActualWorkCosts := REPLACE(REPLACE(v_ActualWorkCosts, '.'), ',', '.');
|
||||
v_PlanWorkCosts := REPLACE(REPLACE(v_PlanWorkCosts, '.'), ',', '.');
|
||||
v_InvoiceReceived := REPLACE(REPLACE(v_InvoiceReceived, '.'), ',', '.');
|
||||
v_InvoicePosted := REPLACE(REPLACE(v_InvoicePosted, '.'), ',', '.');
|
||||
|
||||
-- Controleer alle veldwaarden
|
||||
--
|
||||
v_errormsg := 'Projectsoort ongeldig ' || v_Projectsoort;
|
||||
|
||||
IF v_Projectsoort NOT IN ('WF', 'DA')
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Regel wordt overgeslagen!');
|
||||
ELSIF v_Projectsoort IS NULL
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
ELSE
|
||||
BEGIN
|
||||
SELECT prs_kostenplaatsgrp_key
|
||||
INTO v_kostenplaatsgrp_key
|
||||
FROM prs_kostenplaatsgrp
|
||||
WHERE prs_kostenplaatsgrp_nr =
|
||||
DECODE (v_Projectsoort,
|
||||
'WF', 'F',
|
||||
'DA', 'N');
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Regel wordt overgeslagen!');
|
||||
END;
|
||||
END IF;
|
||||
|
||||
IF v_Status <> 'R'
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
END IF;
|
||||
|
||||
v_errormsg :=
|
||||
'v_PlanWorktime ongeldig ' || v_PlanWorktime;
|
||||
|
||||
IF FAC.safe_to_number (v_PlanWorktime) IS NULL
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Regel wordt overgeslagen!');
|
||||
END IF;
|
||||
|
||||
v_errormsg :=
|
||||
'v_ActualWorktime ongeldig ' || v_ActualWorktime;
|
||||
|
||||
IF FAC.safe_to_number (v_ActualWorktime) IS NULL
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Regel wordt overgeslagen!');
|
||||
END IF;
|
||||
|
||||
v_errormsg :=
|
||||
'v_ActualWorkCosts ongeldig ' || v_ActualWorkCosts;
|
||||
|
||||
IF FAC.safe_to_number (v_ActualWorkCosts) IS NULL
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Regel wordt overgeslagen!');
|
||||
END IF;
|
||||
|
||||
v_errormsg :=
|
||||
'v_PlanWorkCosts ongeldig ' || v_PlanWorkCosts;
|
||||
|
||||
IF FAC.safe_to_number (v_PlanWorkCosts) IS NULL
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Regel wordt overgeslagen!');
|
||||
END IF;
|
||||
|
||||
v_errormsg :=
|
||||
'v_InvoiceReceived ongeldig ' || v_InvoiceReceived;
|
||||
|
||||
IF FAC.safe_to_number (v_InvoiceReceived) IS NULL
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Regel wordt overgeslagen!');
|
||||
END IF;
|
||||
|
||||
v_errormsg :=
|
||||
'v_InvoicePosted ongeldig ' || v_InvoicePosted;
|
||||
|
||||
IF FAC.safe_to_number (v_InvoicePosted) IS NULL
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Regel wordt overgeslagen!');
|
||||
END IF;
|
||||
|
||||
v_errormsg :=
|
||||
'v_ProjektManagerLogin ongeldig '
|
||||
|| v_ProjektManagerLogin;
|
||||
|
||||
BEGIN
|
||||
SELECT prs_perslid_key
|
||||
INTO v_budgethouder_key
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_oslogin = v_ProjektManagerLogin;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
END;
|
||||
|
||||
-- We gaan eerst de kostenplaats aanpassen
|
||||
IF v_ongeldig = 0
|
||||
THEN
|
||||
BEGIN
|
||||
v_errormsg :=
|
||||
'Kijken of de kostenplaats al bestaat';
|
||||
|
||||
BEGIN
|
||||
SELECT prs_kostenplaats_key
|
||||
INTO v_kostenplaats_key
|
||||
FROM prs_kostenplaats
|
||||
WHERE prs_kostenplaats_nr = v_WBSelement;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
INSERT INTO prs_kostenplaats (
|
||||
prs_kostenplaats_nr,
|
||||
prs_kostenplaats_omschrijving,
|
||||
prs_kostenplaatsgrp_key,
|
||||
prs_kostenplaats_module)
|
||||
VALUES (
|
||||
SUBSTR (v_WBSelement, 1, 30),
|
||||
SUBSTR (v_Omschrijving, 1, 60),
|
||||
v_kostenplaatsgrp_key,
|
||||
'PRS')
|
||||
RETURNING prs_kostenplaats_key
|
||||
INTO v_kostenplaats_key;
|
||||
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
SELECT prs_kostenplaats_key
|
||||
INTO v_kostenplaats_key
|
||||
FROM logc_imp_projecten
|
||||
WHERE prs_kostenplaats_key = v_kostenplaats_key;
|
||||
EXCEPTION WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
INSERT INTO logc_imp_projecten (
|
||||
prs_kostenplaats_key)
|
||||
VALUES (v_kostenplaats_key);
|
||||
END;
|
||||
|
||||
UPDATE prs_kostenplaats
|
||||
SET prs_kostenplaats_omschrijving =
|
||||
SUBSTR (v_Omschrijving, 1, 60),
|
||||
prs_kostenplaatsgrp_key =
|
||||
v_kostenplaatsgrp_key,
|
||||
prs_kostenplaats_module = 'PRS',
|
||||
prs_kostenplaats_eind = NULL,
|
||||
prs_perslid_key = v_budgethouder_key
|
||||
WHERE prs_kostenplaats_key = v_kostenplaats_key;
|
||||
|
||||
UPDATE logc_imp_projecten
|
||||
SET KlantOmschrijving =
|
||||
SUBSTR (v_KlantOmschrijving, 1, 100),
|
||||
WBSelement = SUBSTR (v_WBSelement, 1, 30),
|
||||
Projectsoort =
|
||||
SUBSTR (v_Projectsoort, 1, 2),
|
||||
Omschrijving =
|
||||
SUBSTR (v_Omschrijving, 1, 100),
|
||||
Status = SUBSTR (v_Status, 1, 1),
|
||||
Debiteur = SUBSTR (v_Debiteur, 1, 10),
|
||||
PlanWorktime =
|
||||
FAC.safe_to_number (v_PlanWorktime),
|
||||
ActualWorktime =
|
||||
FAC.safe_to_number (v_ActualWorktime),
|
||||
ActualWorkCosts =
|
||||
FAC.safe_to_number (v_ActualWorkCosts),
|
||||
PlanWorkCosts =
|
||||
FAC.safe_to_number (v_PlanWorkCosts),
|
||||
InvoiceReceived =
|
||||
FAC.safe_to_number (v_InvoiceReceived),
|
||||
InvoicePosted =
|
||||
FAC.safe_to_number (v_InvoicePosted),
|
||||
ProjektManagerLogin =
|
||||
SUBSTR (v_ProjektManagerLogin, 1, 10),
|
||||
SalesPersonNr =
|
||||
SUBSTR (v_SalesPersonNr, 1, 10),
|
||||
NameSalesPerson =
|
||||
SUBSTR (v_NameSalesPerson, 1, 40),
|
||||
fac_import_key = p_import_key
|
||||
WHERE prs_kostenplaats_key = v_kostenplaats_key;
|
||||
|
||||
|
||||
COMMIT;
|
||||
END;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
UPDATE prs_kostenplaats
|
||||
SET prs_kostenplaats_eind = SYSDATE
|
||||
WHERE prs_kostenplaats_key NOT IN (SELECT prs_kostenplaats_key
|
||||
FROM logc_imp_projecten
|
||||
WHERE fac_import_key = p_import_key)
|
||||
AND prs_kostenplaatsgrp_key IN (22, 23) -- Nacalculatie, Fixed budget
|
||||
AND prs_kostenplaats_eind IS NULL;
|
||||
|
||||
IF header_is_valid = 0
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'E',
|
||||
'Ongeldig importbestand',
|
||||
'Geen header of header niet volgens specificatie!'
|
||||
|| '('
|
||||
|| v_KlantOmschrijving
|
||||
|| '-'
|
||||
|| v_WBSelement
|
||||
|| '-'
|
||||
|| v_Projectsoort
|
||||
|| '-'
|
||||
|| v_Omschrijving
|
||||
|| '-'
|
||||
|| v_Status
|
||||
|| '-'
|
||||
|| v_Debiteur
|
||||
|| '-'
|
||||
|| v_ActualWorktime
|
||||
|| '-'
|
||||
|| v_ActualWorkCosts
|
||||
|| '-'
|
||||
|| v_PlanWorkCosts
|
||||
|| '-'
|
||||
|| v_InvoiceReceived
|
||||
|| '-'
|
||||
|| v_InvoicePosted
|
||||
|| '-'
|
||||
|| v_ProjektManagerLogin
|
||||
|| '-'
|
||||
|| v_SalesPersonNr
|
||||
|| '-'
|
||||
|| v_NameSalesPerson
|
||||
|| ')');
|
||||
END IF;
|
||||
|
||||
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg :=
|
||||
v_errormsg || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Inleesproces projecten afgebroken!');
|
||||
END logc_import_projecten;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE VIEW logc_v_rap_projecten
|
||||
AS
|
||||
SELECT prs_kostenplaats_nr,
|
||||
prs_kostenplaats_omschrijving,
|
||||
prs_kostenplaats_begin,
|
||||
prs_kostenplaats_eind,
|
||||
prs_kostenplaatsgrp_oms,
|
||||
klantomschrijving,
|
||||
debiteur,
|
||||
planworktime,
|
||||
actualworktime,
|
||||
planworktime - actualworktime remainingworktime,
|
||||
planworkcosts,
|
||||
actualworkcosts,
|
||||
planworkcosts - actualworkcosts remainingworkcosts,
|
||||
invoiceposted,
|
||||
invoicereceived,
|
||||
prs_perslid_naam_full projectmanager,
|
||||
namesalesperson salesconctact,
|
||||
i.fac_import_datum_gelezen syncdate
|
||||
FROM prs_kostenplaats k,
|
||||
prs_kostenplaatsgrp kg,
|
||||
logc_imp_projecten p,
|
||||
fac_import i,
|
||||
prs_v_perslid_fullnames_all pf
|
||||
WHERE k.prs_kostenplaats_key = p.prs_kostenplaats_key
|
||||
AND k.prs_kostenplaatsgrp_key = kg.prs_kostenplaatsgrp_key
|
||||
AND p.fac_import_key = i.fac_import_key(+)
|
||||
AND k.prs_perslid_key = pf.prs_perslid_key(+);
|
||||
|
||||
|
||||
-- View voor standaard kwartaalrapportage aan klanten (zie ticket 57657)
|
||||
CREATE OR REPLACE VIEW logc_v_rap_klantoverzicht_mld
|
||||
(
|
||||
|
||||
Reference in New Issue
Block a user