Files
Customer/onces/NYBU/NYBU#60032.sql
Suzan Wiegerinck 841f9dd8ba NYBU#60032 export bestanden huur november niet aangemaakt
svn path=/Customer/; revision=44751
2019-11-04 11:20:38 +00:00

483 lines
16 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Correctie op huurlijst: het huurarchief is wel juist aangemaakt maar er is geen exportbestand aangemaakt
--
DEFINE thisfile = 'NYBU#60032.SQL'
DEFINE dbuser = '^NYBU'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL;
WHENEVER SQLERROR CONTINUE;
PROMPT &fcltcusterr
SET DEFINE OFF
------ payload begin ------
-- alle foutief aangemaakte huurregels verwijderen
DELETE nybu_huur_archief a
WHERE a.datum_export >= TO_DATE ('31-10-2019', 'dd-mm-yyyy')
AND PERIODE <> 201911;
-- omdat alle vinkjes al verwijderd zijn door een foutieve definitieve export kunnen we niet alles opnieuw doen
-- de data in het archief is goed dus alleen die opnieuw klaarzetten voor een export
CREATE OR REPLACE PROCEDURE nybu_select_correctie_huur (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
-- Individuele facturen voor debiteuren; ook voor sommatieregel met totaalbedrag
-- Bedragen zijn incl BTW
CURSOR c_deb
IS
SELECT deb_nr,
achternaam,
SUM (bedrag) bedrag,
betreft,
periode
FROM nybu_huur_archief
WHERE naar_coda IS NULL
AND deb_nr NOT LIKE 'P%'
AND deb_nr != 'salaris'
GROUP BY deb_nr,
achternaam,
betreft,
periode
ORDER BY deb_nr;
-- Individuele facturen per contract voor fin_verkoopfactuur
-- Bedragen zijn incl BTW
CURSOR c_deb_cnt
IS
SELECT deb_nr,
achternaam,
SUM (bedrag) bedrag,
betreft,
cnt_contract_nr,
periode
FROM nybu_huur_archief
WHERE naar_coda IS NULL
AND deb_nr NOT LIKE 'P%'
AND deb_nr != 'salaris'
GROUP BY deb_nr,
achternaam,
betreft,
cnt_contract_nr,
periode
ORDER BY deb_nr;
-- Factuurregels voor deze factuur
CURSOR regels (in_deb_nr VARCHAR2)
IS
SELECT *
FROM nybu_huur_archief
WHERE deb_nr = in_deb_nr AND naar_coda IS NULL
ORDER BY datum_export, omschrijving, bedrag;
-- Individuele facturen voor interne kostenplaatsen; ook voor sommatieregel met totaalbedrag
-- Bedragen zijn INCLUSIEF BTW (NYBU#31139)
CURSOR c_kpn
IS
SELECT deb_nr,
achternaam,
COALESCE (TRIM (SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7)),
'ONB')
kpn_grp,
kpn_code_afd,
kpn_code_proj,
SUM (bedrag) bedrag,
betreft
FROM nybu_huur_archief ha,
prs_v_aanwezigkostenplaats ak,
prs_kostenplaatsgrp kg
WHERE naar_coda IS NULL
AND deb_nr LIKE 'P%'
AND ak.prs_kostenplaats_nr = deb_nr
AND kg.prs_kostenplaatsgrp_key(+) = ak.prs_kostenplaatsgrp_key
GROUP BY deb_nr,
achternaam,
prs_kostenplaatsgrp_oms,
kpn_code_afd,
kpn_code_proj,
betreft
ORDER BY deb_nr, betreft;
CURSOR c_salaris
IS
SELECT COALESCE (prs_perslid_nr, prs_perslid_email) personeelsnr,
achternaam,
kpn_code_afd,
kpn_code_proj,
bedrag,
btw_perc,
omschrijving
FROM nybu_huur_archief b, prs_perslid p
WHERE naar_coda IS NULL
AND deb_nr = 'salaris'
AND p.prs_perslid_key = b.prs_perslid_key
ORDER BY achternaam, omschrijving;
v_teller NUMBER;
v_rap_count NUMBER;
v_run DATE;
v_lastPeriode VARCHAR (6);
v_periode VARCHAR (6);
v_periodeNaam VARCHAR2 (20);
v_last_period VARCHAR (6);
BEGIN
v_teller := 0;
v_rap_count := 0;
v_aanduiding := 'Init';
v_errormsg := 'Periode bepalen';
DELETE imp_log
WHERE imp_log_applicatie = p_applname;
DELETE fac_rapport
WHERE fac_rapport_node = p_applname;
-- Genereer sommatie- en specificatieregels voor debiteuren tbv CODA export
FOR rec IN c_deb
LOOP
v_aanduiding :=
v_teller || ': ' || rec.deb_nr || '/' || rec.achternaam;
v_errormsg := 'Sommatieregel aanmaken';
v_teller := v_teller + 1;
v_rap_count := v_rap_count + 1;
-- Sommatieregel
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel,
fac_rapport_soort)
VALUES (p_applname,
v_rap_count,
v_teller
|| ';'
|| '10;'
|| '13000;'
|| REPLACE (rec.deb_nr, 'CON', 'DC')
|| ';'
|| ';'
|| TRIM(TO_CHAR (ABS (rec.bedrag),
'99999999D99',
'NLS_NUMERIC_CHARACTERS=,.'))
|| ';'
|| CASE
WHEN rec.bedrag < 0 THEN 'C;'
WHEN rec.bedrag >= 0 THEN 'D;'
END
|| ';'
|| rec.betreft
|| ' '
|| v_periodeNaam
|| ' '
|| rec.achternaam
|| ';'
|| 'Summary;'
|| 'K91200;'
|| 'P991210',
0);
-- Specificatieregels
FOR reg IN regels (rec.deb_nr)
LOOP
v_errormsg := 'Specificatieregel aanmaken';
v_rap_count := v_rap_count + 1;
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel,
fac_rapport_soort)
VALUES (p_applname,
v_rap_count,
v_teller
|| ';'
|| '12;'
|| reg.prs_kostensoort_refcode
|| ';'
|| reg.kpn_code_afd
|| ';'
|| reg.kpn_code_proj
|| ';'
|| TRIM(TO_CHAR (ABS (reg.bedrag),
'99999999D99',
'NLS_NUMERIC_CHARACTERS=,.'))
|| ';'
|| CASE
WHEN reg.bedrag < 0 THEN 'D;'
WHEN reg.bedrag >= 0 THEN 'C;'
END
|| reg.btw_code
|| ';'
|| reg.omschrijving
|| ' #'
|| reg.kamer
|| ';'
|| 'Analysis;'
|| ';'
|| '',
0);
END LOOP;
END LOOP;
-- Scheidingsregel
v_errormsg := 'Scheidingsregel aanmaken';
v_rap_count := v_rap_count + 1;
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel,
fac_rapport_soort)
VALUES (p_applname,
v_rap_count,
'INTERNE KOSTENPLAATSEN;;;;;;;;;;;',
0);
v_teller := 0;
-- Genereer sommatie- en specificatieregels voor interne kostenplaatsen
FOR rec IN c_kpn
LOOP
v_aanduiding :=
v_teller || ': ' || rec.deb_nr || '/' || rec.achternaam;
v_errormsg := 'Sommatieregel KPN aanmaken';
v_teller := v_teller + 1;
v_rap_count := v_rap_count + 1;
-- Sommatieregel
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel,
fac_rapport_soort)
VALUES (p_applname,
v_rap_count,
v_teller
|| ';'
|| ';'
|| '56000;'
|| rec.kpn_grp
|| ';'
|| rec.deb_nr
|| ';'
|| TRIM(TO_CHAR (ABS (rec.bedrag),
'99999999D99',
'NLS_NUMERIC_CHARACTERS=,.'))
|| ';'
|| CASE
WHEN rec.bedrag < 0 THEN 'C;'
WHEN rec.bedrag >= 0 THEN 'D;'
END
|| ';'
|| rec.betreft
|| ' '
|| v_periodeNaam
|| ' '
|| rec.achternaam
|| ';'
|| ';'
|| ';'
|| '',
0);
-- Tegenboeking
v_errormsg := 'Tegenboeking aanmaken';
v_rap_count := v_rap_count + 1;
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel,
fac_rapport_soort)
VALUES (p_applname,
v_rap_count,
v_teller
|| ';'
|| ';'
|| '76000;'
|| rec.kpn_code_afd
|| ';'
|| rec.kpn_code_proj
|| ';'
|| TRIM(TO_CHAR (ABS (rec.bedrag),
'99999999D99',
'NLS_NUMERIC_CHARACTERS=,.'))
|| ';'
|| CASE
WHEN rec.bedrag < 0 THEN 'D;'
WHEN rec.bedrag >= 0 THEN 'C;'
END
|| ';'
|| rec.betreft
|| ' '
|| v_periodeNaam
|| ' '
|| rec.achternaam
|| ';'
|| ';'
|| ';'
|| '',
0);
END LOOP;
-- Scheidingsregel
v_errormsg := 'Scheidingsregel aanmaken';
v_rap_count := v_rap_count + 1;
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel,
fac_rapport_soort)
VALUES (p_applname,
v_rap_count,
'SALARISADMINISTRATIE;;;;;;;;;;;',
0);
v_teller := 0;
-- Genereer specificatieregels voor salarisadministratie
FOR rec IN c_salaris
LOOP
v_aanduiding :=
v_teller || ': ' || rec.personeelsnr || '/' || rec.achternaam;
v_errormsg := 'Sommatieregel salarisadministratie aanmaken';
v_teller := v_teller + 1;
v_rap_count := v_rap_count + 1;
-- Sommatieregel
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel,
fac_rapport_soort)
VALUES (p_applname,
v_rap_count,
v_teller
|| ';'
|| rec.personeelsnr
|| ';'
|| rec.achternaam
|| ';'
|| rec.kpn_code_afd
|| ';'
|| rec.kpn_code_proj
|| ';'
|| TRIM(TO_CHAR (ABS (rec.bedrag),
'99999999D99',
'NLS_NUMERIC_CHARACTERS=,.'))
|| ';'
|| rec.btw_perc
|| ';'
|| rec.omschrijving
|| ';'
|| ';'
|| ';'
|| ';'
|| '',
0);
END LOOP;
COMMIT;
END nybu_select_correctie_huur;
/
CREATE OR REPLACE VIEW NYBU_V_EXPORT_CORRECTIE_HUUR
(
RESULT,
RESULT_ORDER
)
AS
SELECT fac_rapport_regel result, fac_rapport_volgnr result_order
FROM fac_rapport
WHERE fac_rapport_node = 'HUUR_CODA'
ORDER BY fac_rapport_volgnr;
CREATE OR REPLACE PROCEDURE nybu_export_correctie_huur (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_run DATE;
v_count NUMBER;
BEGIN
v_run := TO_DATE (p_applrun, 'YYYY-MM-DD HH24:MI:SS');
v_aanduiding := 'Init';
v_errormsg := 'Init';
-- Alleen als er iets ge<67>xporteerd is!
SELECT COUNT ( * )
INTO v_count
FROM fac_rapport
WHERE fac_rapport_node = p_applname;
IF (v_count > 0)
THEN
v_errormsg := 'Exportdatum zetten';
-- Exportdatum van alle regels van de laatste export zetten
UPDATE nybu_huur_archief
SET naar_coda = v_run
WHERE naar_coda IS NULL;
END IF;
fac.writelog (p_applname,
'S',
'Factuurregels ge<67>xporteerd',
v_run);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (p_applname,
'E',
v_aanduiding || v_errormsg,
'Onbekende fout!');
COMMIT;
END nybu_export_correctie_huur;
/
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 1); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile