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