PIVP#74972 -- Fase 2 Exact ruimte import

svn path=/Customer/trunk/; revision=57952
This commit is contained in:
Norbert Wassink
2022-11-09 16:23:56 +00:00
parent 7c6eb3f0a1
commit cf61fda007

View File

@@ -1495,7 +1495,7 @@ BEGIN
IF v_ins_srtgroep_code!='00' THEN
v_ins_srtdeel_code := REPLACE(v_ins_srtdeel_code,',','.');
v_ins_deel_aantal := REPLACE(v_ins_deel_aantal,',','.');
v_kenmerk14 := REPLACE(v_kenmerk14,'<EFBFBD>');
v_kenmerk14 := REPLACE(v_kenmerk14,'<EFBFBD>');
-- v_aanduiding := v_ins_deel_omschrijving || '|' || v_kenmerk4;
@@ -1965,6 +1965,381 @@ END;
CREATE OR REPLACE PROCEDURE PIVP_IMPORT_EXACT_DEBITEUREN (p_import_key NUMBER)
AS
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
c_fielddelimitor 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);
header_is_valid NUMBER;
v_count_import NUMBER;
-- De importvelden:
v_debiteur_code VARCHAR2(100);
v_debiteur_naam VARCHAR2(100);
v_ruimte_nrs VARCHAR2(4000);
v_ruimte_code VARCHAR2(100);
v_ruimteseperator VARCHAR2(1) :='|';
v_ruimtecounter NUMBER;
v_subcounter NUMBER;
BEGIN
header_is_valid := 0;
v_count_import := 0;
v_subcounter:=0;
DELETE FROM fac_imp_kpn;
DELETE FROM fac_imp_organisatie;
DELETE FROM fac_imp_ext_bedrijf;
DELETE FROM fac_imp_csv;
FOR rec IN c
LOOP
v_subcounter:=0;
v_errormsg := 'Fout FETCH te importeren rij';
v_count_import:=v_count_import+1;
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij '||v_count_import;
-- Lees alle veldwaarden
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_debiteur_code);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_debiteur_naam);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_ruimte_nrs);
fac.imp_writelog (p_import_key,
'W',
v_count_import||';'||v_debiteur_code||';'||v_debiteur_naam||';'||v_ruimte_nrs,
v_errorhint);
INSERT INTO fac_imp_kpn (prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_module)
VALUES (v_debiteur_code,
v_debiteur_naam,
'PRS'
);
INSERT INTO fac_imp_organisatie(prs_bedrijf_naam,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_kostenplaats_nr)
VALUES('Huurders',
v_debiteur_code,
v_debiteur_naam,
v_debiteur_code);
INSERT INTO fac_imp_ext_bedrijf(prs_bedrijf_naam,
prs_leverancier_nr,
prs_bedrijf_huurder)
VALUES(v_debiteur_naam,
v_debiteur_code,
1);
-- hoeveel ruimtes hebben we in de lijst staan
SELECT (LENGTH(v_ruimte_nrs) - NVL(LENGTH(REPLACE(v_ruimte_nrs,v_ruimteseperator)),0)) / LENGTH(v_ruimteseperator)
INTO v_ruimtecounter
FROM dual;
IF v_ruimtecounter=0 AND LENGTH(v_ruimte_nrs)>0 THEN
-- we hebben een ruimte en er ook maar 1.
INSERT INTO FAC_IMP_CSV (FAC_IMPORT_KEY,
FAC_IMP_CSV_COL01,
FAC_IMP_CSV_COL02,
FAC_IMP_CSV_COL03,
FAC_IMP_CSV_INDEX)
VALUES (p_import_key,
v_debiteur_code,
v_ruimte_nrs,
v_debiteur_naam,
v_count_import);
ELSE
v_subcounter:=1;
v_ruimtecounter:=v_ruimtecounter+1; -- we moeten er 1 bij optellen ander missen we de laatste ruimte
WHILE (v_subcounter<=v_ruimtecounter)
LOOP
fac.imp_getfield_nr (v_ruimte_nrs, v_ruimteseperator, v_subcounter, v_ruimte_code);
INSERT INTO FAC_IMP_CSV (FAC_IMPORT_KEY,
FAC_IMP_CSV_COL01,
FAC_IMP_CSV_COL02,
FAC_IMP_CSV_COL03,
FAC_IMP_CSV_INDEX)
VALUES (p_import_key,
v_debiteur_code,
v_ruimte_code,
v_debiteur_naam,
v_count_import);
v_subcounter:=v_subcounter+1;
END LOOP;
END IF;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE PIVP_UPDATE_EXACT_DEBITEUREN (p_import_key NUMBER)
AS
CURSOR huurders IS
SELECT *
FROM fac_imp_csv
WHERE fac_import_key=p_import_key;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_gebouw_code VARCHAR2(12);
v_ruimte_nr VARCHAR2(20);
v_ruimte_key NUMBER;
v_afdeling_key NUMBER;
v_ruimteafdeling_key NUMBER;
v_huurder_key NUMBER;
BEGIN
fac_update_kpn(p_import_key);
fac_update_organisatie(p_import_key);
fac_update_ext_bedrijf(p_import_key);
FOR rec in huurders
LOOP
v_huurder_key:=-1;
BEGIN
v_errormsg:='Fout bij ophalen ruimte '||rec.FAC_IMP_CSV_COL02;
v_gebouw_code:=SUBSTR(rec.FAC_IMP_CSV_COL02,1,INSTR(rec.FAC_IMP_CSV_COL02,'-')-1);
v_ruimte_nr := SUBSTR(rec.FAC_IMP_CSV_COL02,INSTR(rec.FAC_IMP_CSV_COL02,'-')+1,LENGTH(rec.FAC_IMP_CSV_COL02));
SELECT alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_onroerendgoed_gegevens
WHERE alg_ruimte_nr=v_ruimte_nr
AND alg_gebouw_code=v_gebouw_code;
v_errormsg:='Fout bij ophalen afdeling '||rec.FAC_IMP_CSV_COL01;
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_naam=rec.fac_imp_csv_col01;
BEGIN
v_errormsg:='Fout bij ophalen ruimteafdeling bezetting';
-- Eerst kijken of deze afdeling/debiteur al aan de ruimte is gekoppeld
SELECT prs_ruimteafdeling_key
INTO v_ruimteafdeling_key
FROM prs_ruimteafdeling
WHERE prs_afdeling_key=v_afdeling_key
AND alg_ruimte_key=v_ruimte_key
AND prs_ruimteafdeling_verwijder IS NULL;
EXCEPTION WHEN NO_DATA_FOUND THEN
INSERT INTO prs_ruimteafdeling(PRS_AFDELING_KEY,
ALG_RUIMTE_KEY,
PRS_RUIMTEAFDELING_BEZETTING)
VALUES (v_afdeling_key,
v_ruimte_key,
100);
END;
SELECT fac_usrdata_key
INTO v_huurder_key
FROM pivp_v_huurdersbedrijf
WHERE fac_usrdata_omschr = rec.fac_imp_csv_col03;
IF v_huurder_key>0 THEN
alg.upsertkenmerk(1021,v_ruimte_key,v_huurder_key);
ELSE
fac.imp_writelog (p_import_key,
'W',
'Huurder '|| rec.fac_imp_csv_col03||' niet kunnen vinden als leveranciers/huurders' ,
'niet gevonden');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'niet gevonden');
END;
END LOOP;
END;
/
-- EINDE IMPORT EXACT_DEBITEUREN
CREATE OR REPLACE PROCEDURE PIVP_IMPORT_EXACT_RUIMTES(p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
c_fielddelimitor 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);
header_is_valid NUMBER;
v_count_import NUMBER;
-- De importvelden:
v_huurder_code VARCHAR2(100);
v_huurder_codeoud VARCHAR2(100);
v_huurder_naam VARCHAR2(100);
v_locatie_code VARCHAR2(10);
v_gebouw_code VARCHAR2(10);
v_verdieping_volgnr VARCHAR2(10);
v_verdieping_nr NUMBER;
v_ruimte_nr VARCHAR2(100);
v_ruimte_omsc VARCHAR2(30);
v_bvo VARCHAR2(10);
v_bvo_nr NUMBER;
v_km_verhuurbaar VARCHAR2(20);
v_srtruimte VARCHAR2(50);
v_km_vvo VARCHAR2(10);
v_km_verhuurtype VARCHAR2(10);
v_verhuurtype VARCHAR2(60);
v_ruimtecounter NUMBER;
v_subcounter NUMBER;
BEGIN
header_is_valid := 0;
v_count_import := 0;
v_subcounter:=0;
DELETE FROM fac_imp_onrgoed2;
DELETE FROM fac_imp_ext_bedrijf;
FOR rec IN c
LOOP
v_errormsg := 'Fout FETCH te importeren rij';
v_count_import:=v_count_import+1;
IF v_count_import>1 THEN
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij '||v_count_import;
-- Lees alle veldwaarden
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_locatie_code);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_gebouw_code);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_verdieping_volgnr);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_ruimte_nr);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 5, v_ruimte_omsc);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 6, v_bvo);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 7, v_huurder_naam);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 8, v_huurder_codeoud);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 9, v_huurder_code);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 10, v_km_verhuurbaar);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 11, v_srtruimte);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 13, v_km_vvo);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 15, v_km_verhuurtype);
v_ruimte_nr := SUBSTR(v_ruimte_nr, INSTR(v_ruimte_nr,'-')+1, LENGTH(v_ruimte_nr));
v_verdieping_nr := fac.safe_to_number(v_verdieping_volgnr);
v_bvo_nr := fac.safe_to_number(REPLACE(v_bvo,',','.'));
BEGIN
SELECT ud.fac_usrdata_omschr
INTO v_verhuurtype
FROM alg_kenmerk k, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud
WHERE k.alg_kenmerk_key = 1043
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key = ud.fac_usrtab_key
AND UPPER (TRIM (ud.fac_usrdata_CODE)) = UPPER ('O');
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_verhuurtype:=null;
END;
/* IF SUBSTR(v_huurder_codeoud,1,2)='DB' THEN
BEGIN
UPDATE prs_bedrijf pb
SET pb.prs_leverancier_nr=v_huurder_code
WHERE pb.prs_bedrijf_naam_upper = UPPER(v_huurder_naam)
AND pb.prs_leverancier_nr=v_huurder_codeoud;
EXCEPTION WHEN NO_DATA_FOUND THEN
null;
END;
END IF;*/
INSERT INTO fac_imp_onrgoed2 (alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_srtruimte_omschrijving,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_ruimte_bruto_vloeropp,
prs_afdeling_naam,
prs_ruimteafdeling_bezetting,
alg_kenmerkwaarde1,
alg_kenmerkwaarde2,
alg_kenmerkwaarde3,
alg_kenmerkwaarde4)
VALUES(v_locatie_code,
v_gebouw_code,
v_verdieping_nr,
v_srtruimte,
v_ruimte_nr,
v_ruimte_omsc,
v_bvo_nr,
DECODE(v_huurder_code,null, null, v_huurder_code),
DECODE(v_huurder_code,null, null, 100),
DECODE(v_km_verhuurbaar, NULL, NULL, '1044='||v_km_verhuurbaar),
DECODE(v_km_vvo, NULL, NULL, '1045='||v_km_vvo),
DECODE(v_km_verhuurtype, NULL, NULL, '1043='||v_verhuurtype),
DECODE(v_huurder_naam, NULL, NULL, '1021='||v_huurder_naam)
);
END IF;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE PIVP_UPDATE_EXACT_RUIMTES(p_import_key IN NUMBER)
AS
BEGIN
fac_update_onrgoed2(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE PIVP_IMPORT_RELATIES(p_import_key IN NUMBER)
AS
BEGIN
@@ -2223,7 +2598,13 @@ AS
p.prs_afdeling_key bedrijf_key,
pa.prs_afdeling_omschrijving bedrijf_naam,
pa.prs_afdeling_naam debiteurnr,
mkm.mld_kenmerkmelding_waarde factuurbedrag
mkm.mld_kenmerkmelding_waarde factuurbedrag,
(SElECT fud.fac_usrdata_CODE
FROM mld_kenmerk mk1, mld_kenmerkmelding mkm1, fac_usrdata fud
WHERE UPPER(mk1.mld_kenmerk_omschrijving)='DIENSTEN CODE'
AND mk1.mld_stdmelding_key = m.mld_stdmelding_key
AND mkm1.mld_melding_key = m.mld_melding_key
AND fud.fac_usrdata_key = mkm.mld_kenmerkmelding_waarde) dienstencode
FROM mld_melding m ,
prs_perslid p,
prs_afdeling pa,
@@ -2265,11 +2646,7 @@ AS
FROM mld_kenmerkmelding mkm
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=4082) achternaam,
(SELECT pb.prs_leverancier_nr
FROM mld_kenmerkmelding mkm, prs_bedrijf pb
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=4621
AND pb.prs_bedrijf_key = mkm.mld_kenmerkmelding_waarde) debiteurnr,
pa.prs_afdeling_naam debiteurnr,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm
WHERE mkm.mld_melding_key=m.mld_melding_key
@@ -2314,11 +2691,14 @@ AS
(SELECT DECODE(mkm.mld_kenmerkmelding_waarde,1,'Ja',0,'Nee')
FROM mld_kenmerkmelding mkm
WHERE mkm.mld_melding_key=m.mld_melding_key
AND mkm.mld_kenmerk_key=4646) comm
FROM mld_melding m
AND mkm.mld_kenmerk_key=4646) comm
FROM mld_melding m, prs_perslid p, prs_afdeling pa
WHERE m.mld_stdmelding_key=1421
AND m.mld_melding_status=5
AND m.mld_melding_externsyncdate IS NULL;
AND m.mld_melding_externsyncdate IS NULl
AND p.prs_perslid_key=m.prs_perslid_key
AND pa.prs_afdeling_key = p.prs_afdeling_key;
@@ -2339,7 +2719,8 @@ AS
WHERE ak.alg_kenmerk_omschrijving='Huurder'
AND ak.alg_kenmerk_niveau='R'
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
AND r.alg_ruimte_key=aok.alg_onrgoed_key(+);
AND r.alg_ruimte_key=aok.alg_onrgoed_key(+)
AND r.alg_ruimte_nr='0201';
@@ -2398,12 +2779,82 @@ AS
AND rad.res_discipline_key=21 -- alleen betaalde zalen O=21 A=281, P=21
AND p.prs_perslid_key=rrr.res_rsv_ruimte_host_key
AND pa.prs_afdeling_key=p.prs_afdeling_key
AND pa.prs_bedrijf_key<> 2 -- PIVP uitsluiten O=2, P=81
AND pa.prs_bedrijf_key<>81 -- PIVP uitsluiten O=2, P=81
AND UPPER(pb.prs_leverancier_nr)=UPPER(pa.prs_afdeling_naam)
AND res.getdeelresprijs(rrr.res_rsv_ruimte_key) > 0;
CREATE OR REPLACE VIEW PIVP_V_RAP_ZAALRES
( rrr_key,
reservering_nr,
volg_nr,
ruimte_nr,
catalogus,
datum_van,
datum_tot,
prijs,
maand,
duur,
aanvrager,
bedrijfsonderdeel,
debieteur,
bedrijfsnaam,
bo_status,
beschikbaar )
AS
SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rr.res_ruimte_nr,
rd.ins_discipline_omschrijving,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
res.getdeelresprijs(rrr.res_rsv_ruimte_key) prijs,
to_char(rrr.res_rsv_ruimte_van,'MM-YYYY') maand,
(rrr.res_rsv_ruimte_tot-rrr.res_rsv_ruimte_van)*24 duur,
(SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames_all where prs_perslid_key=p.prs_perslid_key) aanvrager,
pb.prs_bedrijf_naam,
pa.prs_afdeling_naam,
pa.prs_afdeling_omschrijving,
rsb.res_status_bo_omschrijving,
10 uur_beschikbaar
FROM res_rsv_ruimte rrr,
res_activiteit ra,
res_ruimte_opstelling rro,
res_ruimte rr,
res_discipline rd,
prs_perslid p,
prs_afdeling pa,
prs_bedrijf pb,
res_status_bo rsb
where rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_status_fo_key IN (1,2)
AND p.prs_perslid_key = rrr.res_rsv_ruimte_host_key
AND pa.prs_afdeling_key = p.prs_afdeling_key
AND pb.prs_bedrijf_key = pa.prs_bedrijf_key
AND ra.res_activiteit_key = rrr.res_activiteit_key
AND ra.res_activiteit_key =10 -- alleen vergaderingen
AND rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rd.ins_discipline_key=rr.res_discipline_key
AND rsb.res_status_bo_key = rrr.res_status_bo_key;
CREATE OR REPLACE VIEW PIVP_V_RAP_ZAALBEZETTING
(
ruimte_nr,
maand,
sort_datum,
percentage
)
AS
SELECT ruimte_nr,
maand,
to_char(datum_van,'YYYY-MM'),
SUM(duur)/SUM(beschikbaar)*100 percentage
FROM pivp_v_rap_zaalres
WHERE UPPER(bedrijfsonderdeel) NOT like '%PIVOTPARK%'
GROUP by ruimte_nr, maand, datum_van;
CREATE OR REPLACE VIEW PIVP_V_HUURDERSRAPPORT
@@ -2684,7 +3135,7 @@ BEGIN
pivp.add_xml_row (v_bestand, '<FinEntryLine number="' || v_sub_count || '>');
pivp.add_xml_row (v_bestand, '<GLAccount code="' || xml.char_to_html('12345') || '"/>');
pivp.add_xml_element (v_bestand, 'Description', rec_regel.onderwerp);
pivp.add_xml_element (v_bestand, 'Description', rec_regel.melding_key||' - '||rec_regel.onderwerp);
pivp.add_xml_row (v_bestand, '<Costcenter code="' || xml.char_to_html('003.OPS') || '"/>');
-- pivp.add_xml_row (v_bestand, '<Costunit code="' || xml.char_to_html('999999') || '"/>');
pivp.add_xml_row (v_bestand, '<Debitor number="' || xml.char_to_html(rec_regel.debiteurnr) || '"/>');