AADS#17418

svn path=/Customer/trunk/; revision=14129
This commit is contained in:
Arthur Egberink
2010-04-13 13:41:42 +00:00
parent 803b856da8
commit ff443c5e6a

View File

@@ -1,7 +1,7 @@
-- Script containing customer specific configuration sql statements for aads: Arcadis Aqumen Facility Management
-- (c) 2005-2007 Dijkoraad IT bv
-- $Revision: 11 $
-- $Modtime: 15-02-10 14:52 $
-- $Revision: 12 $
-- $Modtime: 13-04-10 11:01 $
--
-- Support: +31 53 4800700
@@ -832,12 +832,12 @@ FROM (SELECT v.kwartaal+0 kwartaal,
FROM aads_hv_freeze v, (SELECT SUM (teken_opp) totaal, geb_code, kwartaal
FROM aads_hv_freeze v1
WHERE v1.code LIKE 'KA%'
AND huurder_nummer NOT LIKE '%.99'
AND coalesce(huurder_nummer,'1') NOT LIKE '%.99'
GROUP BY geb_code, kwartaal) totaal_gebouw
WHERE v.code LIKE 'KA%'
AND v.geb_code = totaal_gebouw.geb_code
AND v.kwartaal = totaal_gebouw.kwartaal
AND huurder_nummer NOT LIKE '%.99'
AND coalesce(huurder_nummer,'1') NOT LIKE '%.99'
AND SUBSTR (v.kwartaal, 1, 4) = TO_CHAR (SYSDATE, 'yyyy')
UNION ALL
SELECT SUBSTR (v.kwartaal, 1, 4)+1 kwartaal,
@@ -855,12 +855,12 @@ FROM (SELECT v.kwartaal+0 kwartaal,
FROM aads_hv_freeze v, (SELECT SUM (teken_opp) totaal, geb_code, kwartaal
FROM aads_hv_freeze v1
WHERE v1.code LIKE 'KA%'
AND huurder_nummer NOT LIKE '%.99'
AND coalesce(huurder_nummer,'1') NOT LIKE '%.99'
GROUP BY geb_code, kwartaal) totaal_gebouw
WHERE v.code LIKE 'KA%'
AND v.geb_code = totaal_gebouw.geb_code
AND v.kwartaal = totaal_gebouw.kwartaal
AND huurder_nummer NOT LIKE '%.99'
AND coalesce(huurder_nummer,'1') NOT LIKE '%.99'
AND v.kwartaal =
fac.safe_to_number (TO_CHAR (SYSDATE, 'yyyy') - 1) || '3') v
GROUP BY v.kwartaal,
@@ -1594,7 +1594,7 @@ BEGIN
p_applrun,
'I',
'Arcadis Aqumen BedrijfDienstLocatieGebouw import version ' || currentversion,
'$Revision: 11 $'
'$Revision: 12 $'
);
SELECT COUNT (*)
@@ -1606,7 +1606,7 @@ BEGIN
p_applrun,
'E',
'Arcadis Aqumen BedrijfDienstLocatieGebouw import bevat geen records',
'$Revision: 11 $'
'$Revision: 12 $'
);
return;
END IF;
@@ -1733,7 +1733,399 @@ END;
/
BEGIN fac.registercustversion('AADS', 12); END;
--------------------------------
-- import contractorders
--------------------------------
CREATE OR REPLACE PROCEDURE aads_import_contract (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
) IS
CURSOR cnt
IS
SELECT oms, num referentie
FROM (SELECT 'Contract komt dubbel voor:' oms,
contractcode || '/' || volgnummer num
FROM aads_imp_contract) num
GROUP BY num
HAVING COUNT (num) > 1
UNION ALL
SELECT 'Gebouw bestaat niet:' oms, gebouw_code referentie
FROM aads_imp_contract
WHERE volgnummer IS NOT NULL
AND upper(gebouw_code) NOT IN (SELECT NVL (alg_gebouw_upper, 'geen')
FROM alg_v_aanweziggebouw)
AND upper(gebouw_code) NOT IN
(SELECT NVL (REPLACE (alg_gebouw_upper, '-', ''), 'geen')
FROM alg_v_aanweziggebouw)
UNION ALL
SELECT DISTINCT
'Leverancier bestaat niet:' oms,
leverancier || '[' || leveranciernummer || ']' referentie
FROM aads_imp_contract
WHERE fac.safe_to_number (leveranciernummer) NOT IN
(SELECT NVL (fac.safe_to_number (prs_leverancier_nr), 9999999999)
FROM prs_bedrijf
WHERE prs_bedrijf_contract = 1)
UNION ALL
SELECT 'Contractsoort bestaat niet:' oms, i.dienst referentie
FROM aads_imp_contract i, cnt_discipline d, prs_kostensoort k
WHERE i.dienst = k.prs_kostensoort_refcode
AND DECODE (pakket, 'Pluspakket', 2, 1) = prs_kostensoortgrp_key
AND d.prs_kostensoort_key(+) = k.prs_kostensoort_key
AND i.volgnummer IS NULL
AND k.prs_kostensoort_key IS NULL;
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR (1000);
v_hint VARCHAR (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
v_ongeldig NUMBER(1);
v_mode NUMBER(1);
v_aanduiding VARCHAR (200);
v_ins_discipline_key NUMBER(10);
-- De importvelden:
v_gebouw_code VARCHAR2(100);
v_leverancier VARCHAR2(100);
v_beschrijving VARCHAR2(100);
v_van VARCHAR2(100);
v_pakket VARCHAR2(100);
v_tot VARCHAR2(100);
v_omschrijving VARCHAR2(4000);
v_bedrag VARCHAR2(100);
v_btw VARCHAR2(100);
v_dienst VARCHAR2(100);
v_contractcode VARCHAR2(100);
v_volgnummer VARCHAR2(100);
v_leveranciernummer VARCHAR2(100);
v_dummy VARCHAR2(100);
CURSOR c1(p_imp_file_applicatie VARCHAR2)
IS
SELECT *
FROM fac_imp_file
WHERE fac_imp_file_applicatie = p_imp_file_applicatie
ORDER BY fac_imp_file_index;
rec1 c1%ROWTYPE;
BEGIN
-- Eerst opruiming
DELETE FROM imp_log WHERE imp_log_applicatie = p_applname;
DELETE FROM aads_imp_contract;
COMMIT;
OPEN c1(p_applname);
IF (c1%ISOPEN)
THEN
LOOP
BEGIN
v_errormsg := 'Fout FETCH te importeren rij';
FETCH c1 INTO rec1;
EXIT WHEN c1%NOTFOUND;
v_newline := rec1. fac_imp_file_line;
v_newline := replace(v_newline,'""','');
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
v_ongeldig := 0;
IF (1=0)
THEN
fac.imp_writelog (p_applname,
p_applrun,
'E',
v_aanduiding||'Ongeldig importbestand',
'Toelichting: ... '
);
ELSE
-- Lees alle veldwaarden
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_gebouw_code
);
--
v_errormsg := 'Fout opvragen te importeren rij (leverancier)'||v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_leverancier
);
--
v_errormsg := 'Fout opvragen te importeren rij (beschrijving)'||v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_beschrijving
);
--
v_errormsg := 'Fout opvragen te importeren rij (pakket)'||v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_pakket
);
--
v_errormsg := 'Fout opvragen te importeren rij (van)'||v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_van
);
--
v_errormsg := 'Fout opvragen te importeren rij (tot)'||v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_tot
);
--
v_errormsg := 'Fout opvragen te importeren rij (omschrijving)'||v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_omschrijving
);
--
v_errormsg := 'Fout opvragen te importeren rij (bedrag)'||v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_bedrag
);
--
v_errormsg := 'Fout opvragen te importeren rij (btw)'||v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_btw
);
--
v_errormsg := 'Fout opvragen te importeren rij (dienst)'||v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_dienst
);
--
v_errormsg := 'Fout opvragen te importeren rij (contractcode):'||v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_contractcode
);
--
v_errormsg := 'Fout opvragen te importeren rij (volgnummer)'||v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_volgnummer
);
--
v_errormsg := 'Fout opvragen te importeren rij (leveranciernummer)'||v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_leveranciernummer
);
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout bij toevoegen te impoteren gebouw ['||v_gebouw_code||']';
INSERT INTO aads_IMP_CONTRACT (
gebouw_code
, leverancier
, beschrijving
, van
, tot
, omschrijving
, bedrag
, btw
, dienst
, contractcode
, volgnummer
, pakket
, leveranciernummer
) VALUES (
v_gebouw_code
,v_leverancier
,v_beschrijving
,fac.safe_to_date(v_van, 'dd-mm-yy')
,fac.safe_to_date(v_tot, 'dd-mm-yy')
,v_omschrijving
,fac.safe_to_number(replace(v_bedrag,',','.'))
,v_btw
,v_dienst
,v_contractcode
,fac.safe_to_number(replace(v_volgnummer,',','.'))
,v_pakket
,v_leveranciernummer
);
-- check of het contractsoort bestaat
BEGIN
SELECT ins_discipline_key
INTO v_ins_discipline_key
FROM ins_tab_discipline
WHERE ins_discipline_module = 'CNT'
AND ins_discipline_verwijder IS NULL
AND upper(ins_discipline_omschrijving) = SUBSTR(DECODE(upper(v_pakket), 'STANDAARD', 'ST', 'AS') || ' ' || upper(v_beschrijving),1,30);
EXCEPTION WHEN NO_DATA_FOUND THEN
INSERT INTO ins_tab_discipline (ins_discipline_module, ins_discipline_omschrijving, prs_kostensoort_key)
VALUES ('CNT', SUBSTR(DECODE(upper(v_pakket), 'STANDAARD', 'ST', 'AS') || ' ' || v_beschrijving,1,30), null)
RETURNING ins_discipline_key
INTO v_ins_discipline_key;
INSERT INTO cnt_disc_params (cnt_ins_discipline_key, cnt_srtcontract_type)
VALUES(v_ins_discipline_key, 5);
END;
END IF;
END IF;
END;
END LOOP;
END IF;
FOR rec IN cnt
LOOP
BEGIN
fac.imp_writelog (p_applname,
p_applrun,
'E',
rec.oms,
rec.referentie
);
END;
END LOOP;
commit;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
v_hint := v_errormsg;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_applname,
p_applrun,
'E',
v_errormsg,
v_hint
);
END aads_import_contract;
/
CREATE OR REPLACE PROCEDURE aads_update_contract (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
v_oldcountcnt NUMBER;
v_newcountcnt NUMBER;
v_countcnt NUMBER;
v_errormsg VARCHAR (1000);
v_error_hint VARCHAR (1000);
oracle_err_mes VARCHAR2 (150);
oracle_err_num VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
BEGIN
SELECT MAX (fac_module_version)
INTO currentversion
FROM fac_module;
fac.imp_writelog (p_applname,
p_applrun,
'I',
'Arcadis Aqumen Contract import version ' || currentversion,
'$Revision: 12 $'
);
SELECT COUNT (*)
INTO v_countcnt
FROM aads_imp_contract;
IF v_countcnt = 0 THEN
fac.imp_writelog (p_applname,
p_applrun,
'E',
'Arcadis Aqumen Contract import bevat geen records',
'$Revision: 12 $'
);
return;
END IF;
-- voeg de contracten toe
INSERT INTO cnt_contract
(
cnt_contract_nummer
, cnt_contract_omschrijving
, cnt_contract_document
, cnt_contract_looptijd_van
, cnt_contract_looptijd_tot
, cnt_contract_kosten
, cnt_prs_bedrijf_key
, prs_afdeling_key_eig
, ins_discipline_key
, prs_perslid_key_beh
, prs_kostenplaats_key
, cnt_contract_rappeltermijn
, cnt_contract_opzegtermijn
)
(SELECT contractcode,
SUBSTR (beschrijving, 1, 50),
REPLACE (REPLACE (i.omschrijving, '<(>', ''), '<)>', ''),
van,
tot,
bedrag,
prs_bedrijf_key,
449,
ins_discipline_key,
6524,
prs_kostenplaats_key,
1,
1
FROM aads_imp_contract i,
prs_bedrijf b,
cnt_discipline d,
prs_kostenplaats k
WHERE fac.safe_to_number (leveranciernummer) =
NVL (fac.safe_to_number (prs_leverancier_nr), 9999999999)
AND upper(ins_discipline_omschrijving) = SUBSTR(DECODE(upper(i.pakket), 'STANDAARD', 'ST', 'AS') || ' ' || upper(i.beschrijving),1,30)
AND k.prs_kostenplaats_nr = i.gebouw_code
AND i.volgnummer IS NULL);
-- Scope van het contract zetten.
INSERT INTO cnt_contract_plaats
(
cnt_contract_key, cnt_alg_plaats_key, cnt_alg_plaats_code, cnt_contract_plaats_gewicht
)
(SELECT cnt_contract_key, alg_gebouw_key, 'G', TRUNC (SUM (bedrag))
FROM aads_imp_contract i, alg_gebouw g, cnt_contract c
WHERE cnt_contract_nummer = contractcode
AND (upper(i.gebouw_code) = alg_gebouw_upper
OR REPLACE (alg_gebouw_upper, '-', '') = upper(gebouw_code))
GROUP BY alg_gebouw_key, cnt_contract_key);
-- How many active records are now present?
SELECT COUNT (*)
INTO v_oldcountcnt
FROM cnt_contract;
SELECT COUNT (*)
INTO v_newcountcnt
FROM cnt_contract;
fac.imp_writelog (p_applname,
p_applrun,
'S',
'Aantal contracten vooraf: ' || TO_CHAR (v_oldcountcnt) || ' nu: ' || TO_CHAR (v_newcountcnt),
''
);
END;
/
BEGIN fac.registercustversion('AADS', 13); END;
/
COMMIT;