diff --git a/onces/BSSC/BSSC#82588.sql b/onces/BSSC/BSSC#82588.sql new file mode 100644 index 000000000..ceed578f2 --- /dev/null +++ b/onces/BSSC/BSSC#82588.sql @@ -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 (én geen weekend én 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