BSSC#82588 -- contractbeheer facturatie uitstellen eenmalig
svn path=/Customer/; revision=63762
This commit is contained in:
275
onces/BSSC/BSSC#82588.sql
Normal file
275
onces/BSSC/BSSC#82588.sql
Normal file
@@ -0,0 +1,275 @@
|
|||||||
|
--
|
||||||
|
-- $Id$
|
||||||
|
--
|
||||||
|
-- Korte beschrijving wat het script doet
|
||||||
|
-- BSSC#82588 contractbeheer facturatie uitstellen eenmalig
|
||||||
|
--
|
||||||
|
DEFINE thisfile = 'BSSC#82588'
|
||||||
|
DEFINE dbuser = '^BSSC'
|
||||||
|
|
||||||
|
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 ------
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE bssc_select_fact (p_applname IN VARCHAR2,
|
||||||
|
p_applrun IN VARCHAR2)
|
||||||
|
AS
|
||||||
|
-- Factureer/bevries verhuurcontractkosten en verwerk=AV alle eventuele correctiemeldingen!
|
||||||
|
CURSOR c1
|
||||||
|
IS
|
||||||
|
SELECT '[' || v.refid || '|' || v.prs_debiteur_naam || '|' || v.regel || '] ' aanduiding,
|
||||||
|
v.*
|
||||||
|
FROM bssc_v_fact_actual v
|
||||||
|
ORDER BY v.prs_bedrijf_key, v.po_nr, v.sortering, v.regel, v.alg_plaatsaanduiding;
|
||||||
|
|
||||||
|
-- Verstuur verkoopfactuur naar huurder.
|
||||||
|
CURSOR c2
|
||||||
|
IS
|
||||||
|
SELECT DISTINCT '[' || vf.fin_verkoopfactuur_id || '|' || vf.fin_verkoopfactuur_maand || '|' || vf.prs_debiteur_naam || '] ' aanduiding,
|
||||||
|
vf.fin_verkoopfactuur_id, vf.fin_verkoopfactuur_maand, vf.prs_debiteur_naam,
|
||||||
|
vfk.fin_verkoopfactuurkop_key, vfk.fin_verkoopfactuurkop_id,
|
||||||
|
COALESCE (kl.prs_kenmerklink_waarde, b.prs_bedrijf_email) prs_bedrijf_email
|
||||||
|
FROM fin_verkoopfactuur vf, fin_verkoopfactuurkop vfk, prs_bedrijf b,
|
||||||
|
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1240) kl -- E-mail adres facturatie
|
||||||
|
WHERE vf.fin_verkoopfactuur_xmlnode = 'contract' AND fin_verkoopfactuur_n1 IS NULL -- Onderscheid ADDD vs. FACT!
|
||||||
|
AND vf.fin_verkoopfactuurkop_key = vfk.fin_verkoopfactuurkop_key
|
||||||
|
AND vf.prs_bedrijf_key = b.prs_bedrijf_key
|
||||||
|
AND b.prs_bedrijf_key = kl.prs_link_key (+)
|
||||||
|
AND TRUNC (vf.fin_verkoopfactuur_aanmaak) = TRUNC (SYSDATE)
|
||||||
|
ORDER BY vf.fin_verkoopfactuur_id;
|
||||||
|
|
||||||
|
v_errormsg VARCHAR2 (1000);
|
||||||
|
oracle_err_num NUMBER;
|
||||||
|
oracle_err_mes VARCHAR2 (200);
|
||||||
|
v_holiday NUMBER;
|
||||||
|
v_fact_count NUMBER;
|
||||||
|
v_amount_sum NUMBER (10, 2);
|
||||||
|
v_old_contract_key NUMBER (10);
|
||||||
|
v_factuur_id VARCHAR2 (30);
|
||||||
|
v_factkop_id VARCHAR2 (30);
|
||||||
|
v_verkoopfactuurkop_key NUMBER (10);
|
||||||
|
v_count NUMBER;
|
||||||
|
BEGIN
|
||||||
|
-- Eerst opruiming
|
||||||
|
DELETE FROM imp_log
|
||||||
|
WHERE imp_log_applicatie = p_applname;
|
||||||
|
|
||||||
|
SELECT COUNT ( * )
|
||||||
|
INTO v_holiday
|
||||||
|
FROM mld_vrije_dagen
|
||||||
|
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1);
|
||||||
|
|
||||||
|
-- LET OP: FACT-export van verhuurfacturen (= boekingsgangen) draait
|
||||||
|
-- dagelijks na middernacht (begin van dag) en de verkoop wordt maandelijks
|
||||||
|
-- alleen in de nacht na 1e werkdag van de maand doorgezet.
|
||||||
|
-- IF nacht na 1e werkdag van de maand (<28>n<EFBFBD>geen weekend <20>n<EFBFBD>geen vrije dag)!
|
||||||
|
-- count_work_days (d1,d2) bepaalt het #werkdagen van d1 tot d2 (als d1=d2,
|
||||||
|
-- dan return 0); daarom bepalen tov. laatste dag van vorige maand!
|
||||||
|
--IF TO_CHAR (SYSDATE, 'dd') = '16' -- TODO:Weer terug naar nacht na 1e werkdag van de maand!
|
||||||
|
-- IF FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 1 -- Nacht na 1e werkdag van de maand!
|
||||||
|
-- AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
|
||||||
|
-- AND v_holiday = 0
|
||||||
|
--
|
||||||
|
IF TO_CHAR(SYSDATE, 'dd') = '06'
|
||||||
|
THEN
|
||||||
|
v_fact_count := 0;
|
||||||
|
v_amount_sum := 0;
|
||||||
|
v_old_contract_key := -1; -- Factuur per contract!
|
||||||
|
|
||||||
|
-- Factureer/bevries (huur)contractkosten.
|
||||||
|
FOR rec IN c1
|
||||||
|
LOOP
|
||||||
|
BEGIN
|
||||||
|
IF rec.refkey != v_old_contract_key
|
||||||
|
THEN
|
||||||
|
IF rec.po_nr LIKE 'CHV%'
|
||||||
|
THEN
|
||||||
|
SELECT fac_s_user01.NEXTVAL INTO v_count FROM DUAL;
|
||||||
|
v_factuur_id := '1' || SUBSTR ('000000' || TO_CHAR (v_count), -6);
|
||||||
|
ELSE
|
||||||
|
SELECT fac_s_user02.NEXTVAL INTO v_count FROM DUAL;
|
||||||
|
v_factuur_id := '2' || SUBSTR ('000000' || TO_CHAR (v_count), -6);
|
||||||
|
END IF;
|
||||||
|
v_factkop_id := v_factuur_id || '_' || SUBSTR (rec.maand, 1, 4) || '-' || SUBSTR (rec.maand, -2) || '_' || rec.debiteur_nr;
|
||||||
|
|
||||||
|
INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id)
|
||||||
|
VALUES (v_factkop_id)
|
||||||
|
RETURNING fin_verkoopfactuurkop_key
|
||||||
|
INTO v_verkoopfactuurkop_key;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
v_old_contract_key := rec.refkey;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
v_errormsg := 'Fout toevoegen verkoopfactuur';
|
||||||
|
|
||||||
|
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key,
|
||||||
|
fin_verkoopfactuur_id,
|
||||||
|
fin_verkoopfactuur_datum,
|
||||||
|
fin_verkoopfactuur_omschr,
|
||||||
|
fin_verkoopfactuur_xmlnode,
|
||||||
|
fin_verkoopfactuur_refkey,
|
||||||
|
prs_kostenplaats_key,
|
||||||
|
prs_kostenplaats_nr,
|
||||||
|
prs_kostenplaats_omschrijving,
|
||||||
|
prs_kostenplaatsgrp_oms,
|
||||||
|
prs_kostensoort_oms,
|
||||||
|
prs_kostensoort_opmerking,
|
||||||
|
prs_kostensoort_refcode,
|
||||||
|
prs_bedrijf_key,
|
||||||
|
prs_debiteur_naam,
|
||||||
|
prs_kostensoortgrp_oms,
|
||||||
|
fin_verkoopfactuur_bedrag,
|
||||||
|
fin_verkoopfactuur_btw,
|
||||||
|
fin_btwtabelwaarde_code,
|
||||||
|
fin_btwtabelwaarde_oms,
|
||||||
|
fin_btwtabelwaarde_perc,
|
||||||
|
fin_btwtabelwaarde_verlegd,
|
||||||
|
fin_verkoopfactuur_maand,
|
||||||
|
fin_verkoopfactuur_n1,
|
||||||
|
fin_verkoopfactuur_n2,
|
||||||
|
fin_verkoopfactuur_n3,
|
||||||
|
fin_verkoopfactuur_n4,
|
||||||
|
fin_verkoopfactuur_n5,
|
||||||
|
fin_verkoopfactuur_c1,
|
||||||
|
fin_verkoopfactuur_c2,
|
||||||
|
fin_verkoopfactuur_c3,
|
||||||
|
fin_verkoopfactuur_c4,
|
||||||
|
fin_verkoopfactuur_c5,
|
||||||
|
fin_verkoopfactuur_c6,
|
||||||
|
fin_verkoopfactuur_c7,
|
||||||
|
fin_verkoopfactuur_c8,
|
||||||
|
fin_verkoopfactuur_d1,
|
||||||
|
fin_verkoopfactuur_d2,
|
||||||
|
fin_verkoopfactuur_d3,
|
||||||
|
fin_verkoopfactuur_d4,
|
||||||
|
fin_verkoopfactuur_d5)
|
||||||
|
VALUES (v_verkoopfactuurkop_key,
|
||||||
|
v_factuur_id,
|
||||||
|
TO_DATE (rec.factuurdatum, 'dd-mm-yyyy'),
|
||||||
|
rec.po_nr || '/=' || rec.sortering || rec.regel,
|
||||||
|
'contract',
|
||||||
|
rec.refkey,
|
||||||
|
rec.prs_kostenplaats_key,
|
||||||
|
rec.prs_kostenplaats_nr,
|
||||||
|
rec.prs_kostenplaats_omschrijving,
|
||||||
|
rec.prs_kostenplaatsgrp_oms,
|
||||||
|
rec.grtboekrek,
|
||||||
|
rec.grtboekrek,
|
||||||
|
rec.grtboekrek,
|
||||||
|
rec.prs_bedrijf_key,
|
||||||
|
rec.prs_debiteur_naam,
|
||||||
|
NULL,
|
||||||
|
rec.mndnet,
|
||||||
|
--rec.mndbtw,
|
||||||
|
ROUND ((rec.mndnet * rec.fin_btwtabelwaarde_perc) / 100, 2),
|
||||||
|
rec.fin_btwtabelwaarde_code,
|
||||||
|
rec.fin_btwtabelwaarde_oms,
|
||||||
|
rec.fin_btwtabelwaarde_perc,
|
||||||
|
rec.fin_btwtabelwaarde_verlegd,
|
||||||
|
rec.maand,
|
||||||
|
rec.mld_melding_key, -- n1/correctiemelding=NULL
|
||||||
|
rec.aantal, -- n2/aantal
|
||||||
|
rec.bedrag, -- n3/bedrag
|
||||||
|
rec.vvo_toeslag, -- n4/vvo_toeslag
|
||||||
|
rec.regel_key, -- n5/regel_key
|
||||||
|
rec.refid, -- c1/contract_id
|
||||||
|
NULL, -- c2
|
||||||
|
NULL, -- c3
|
||||||
|
NULL, -- c4
|
||||||
|
NULL, -- c5
|
||||||
|
rec.alg_onroerendgoed_type || rec.alg_onroerendgoed_keys || '=' || rec.alg_plaatsaanduiding, -- c6
|
||||||
|
rec.debiteur_nr || '=' || rec.beschrijving, -- c7
|
||||||
|
NULL, -- c8
|
||||||
|
TO_DATE (rec.vervaldatum, 'dd-mm-yyyy'), -- d1
|
||||||
|
TO_DATE (rec.mndbegin, 'dd-mm-yyyy'), -- d2
|
||||||
|
TO_DATE (rec.mndeinde, 'dd-mm-yyyy'), -- d3
|
||||||
|
TO_DATE (rec.dagbegin, 'dd-mm-yyyy'), -- d4
|
||||||
|
TO_DATE (rec.dageinde, 'dd-mm-yyyy')); -- d5
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
v_fact_count := v_fact_count + 1;
|
||||||
|
v_amount_sum := v_amount_sum + rec.mndnet;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS
|
||||||
|
THEN
|
||||||
|
oracle_err_num := SQLCODE;
|
||||||
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||||
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||||
|
fac.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'FACT-freeze');
|
||||||
|
COMMIT;
|
||||||
|
END;
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
fac.writelog (p_applname, 'S', 'FACT-verkoop/#regels: ' || TO_CHAR (v_fact_count), TO_CHAR (v_amount_sum));
|
||||||
|
|
||||||
|
-- Verstuur verkoopfactuur naar huurder.
|
||||||
|
FOR rec IN c2
|
||||||
|
LOOP
|
||||||
|
BEGIN
|
||||||
|
v_errormsg := 'Fout toevoegen CUST01-noti';
|
||||||
|
|
||||||
|
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
|
||||||
|
fac_notificatie_status,
|
||||||
|
fac_notificatie_receiver_email,
|
||||||
|
fac_notificatie_oms,
|
||||||
|
fac_notificatie_refkey,
|
||||||
|
fac_notificatie_prioriteit,
|
||||||
|
fac_notificatie_datum,
|
||||||
|
fac_notificatie_sender_email,
|
||||||
|
fac_notificatie_attachments)
|
||||||
|
VALUES (281, -- CUST01-noti
|
||||||
|
2, -- Mail
|
||||||
|
DECODE ( -- To-adres
|
||||||
|
rec.prs_bedrijf_email,
|
||||||
|
NULL, 'finance.smartservices@brightlands.com',
|
||||||
|
rec.prs_bedrijf_email || ';finance.smartservices@brightlands.com'),
|
||||||
|
'Factuur ' || rec.fin_verkoopfactuur_id || ' ' || rec.fin_verkoopfactuur_maand || ' ' || rec.prs_debiteur_naam,
|
||||||
|
rec.fin_verkoopfactuurkop_key,
|
||||||
|
2, -- Prioriteit
|
||||||
|
TRUNC (SYSDATE) + (7 / 24),
|
||||||
|
'finance.smartservices@brightlands.com',
|
||||||
|
'/../../Fplace5i/CUST/BSSC/export/PDF/Backup/' || rec.fin_verkoopfactuurkop_id || '.pdf');
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS
|
||||||
|
THEN
|
||||||
|
oracle_err_num := SQLCODE;
|
||||||
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||||
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||||
|
fac.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'FACT-noti');
|
||||||
|
COMMIT;
|
||||||
|
END;
|
||||||
|
END LOOP;
|
||||||
|
END IF;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS
|
||||||
|
THEN
|
||||||
|
oracle_err_num := SQLCODE;
|
||||||
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||||
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||||
|
fac.writelog (p_applname, 'E', v_errormsg, 'FACT-export afgebroken!');
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
|
------ 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
|
||||||
Reference in New Issue
Block a user