From 818faabb2e5f19618d61abb818315c3002bb9eb9 Mon Sep 17 00:00:00 2001 From: Maykel Geerdink Date: Wed, 15 Jan 2025 14:39:43 +0000 Subject: [PATCH] VGLD#85984: Automatische afsluitdatum instellen in contracten mogelijk? svn path=/Database/trunk/; revision=67607 --- CNT/CNT_PAC.SRC | 36 ++++++++++++++++++++++++++++++++++++ CNT/CNT_TAB.SRC | 4 ++++ FAC/FAC_LCL.SRC | 1 + _UP/DB49to50.src | 9 ++++++++- 4 files changed, 49 insertions(+), 1 deletion(-) diff --git a/CNT/CNT_PAC.SRC b/CNT/CNT_PAC.SRC index e8e335f8..50d76be0 100644 --- a/CNT/CNT_PAC.SRC +++ b/CNT/CNT_PAC.SRC @@ -12,6 +12,7 @@ CREATE OR REPLACE PACKAGE cnt AS FUNCTION cnt_getRappeldatum (pcnt_contract_key IN NUMBER) RETURN DATE; FUNCTION cnt_contract_status (van IN DATE, rappel IN DATE, opzeg IN DATE, tot IN DATE) RETURN NUMBER; PROCEDURE autoverleng_contract; + PROCEDURE autoinactiveer_contract; PROCEDURE splitscontract (p_key IN NUMBER, p_datum IN DATE, p_user IN NUMBER, p_amount NUMBER); PROCEDURE generatefactuurschema (pcontractkey IN NUMBER,ptermijnbedrag IN NUMBER DEFAULT NULL); @@ -277,6 +278,41 @@ CREATE OR REPLACE PACKAGE BODY cnt AS END LOOP; END; + PROCEDURE autoinactiveer_contract + IS + l_prs_perslid_key prs_perslid.prs_perslid_key%TYPE; + tracking VARCHAR2(4000); + + CURSOR c_inactiveer IS + SELECT c.cnt_contract_key + FROM cnt_contract c + WHERE c.cnt_contract_inactiveren = 1 + AND TRUNC(c.cnt_contract_looptijd_tot) < TRUNC(SYSDATE); + BEGIN + BEGIN + SELECT prs_perslid_key + INTO l_prs_perslid_key + FROM prs_perslid + WHERE prs_perslid_oslogin = '_SYSTEEM' AND prs_perslid_verwijder IS NULL; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + fac.putsystemnotification ('Invalid configuration: missing _SYSTEEM user', 1); + END; + + FOR cnt_inactiveer IN c_inactiveer + LOOP + cnt.setcontractstatus(cnt_inactiveer.cnt_contract_key, 1, l_prs_perslid_key); -- Zorgt ook voor tracking en daarmee notificatie. + + UPDATE cnt_contract + SET cnt_contract_inactiveren = 0 + WHERE cnt_contract_key = cnt_inactiveer.cnt_contract_key; + + tracking := lcl.l('lcl_cnt_is_cntupd') || CHR(10) || lcl.l('lcl_cnt_auto_close') || ': ' || lcl.l('lcl_Yes') || lcl.l('lcl_trackto') || lcl.l('lcl_No'); + fac.trackaction('CNTUPD', cnt_inactiveer.cnt_contract_key, NULL, NULL, tracking); + END LOOP; + END; + PROCEDURE splitscontract (p_key IN NUMBER, p_datum IN DATE, p_user IN NUMBER, p_amount NUMBER) IS begin1 DATE; diff --git a/CNT/CNT_TAB.SRC b/CNT/CNT_TAB.SRC index 8a6f893d..f5ab43d7 100644 --- a/CNT/CNT_TAB.SRC +++ b/CNT/CNT_TAB.SRC @@ -116,6 +116,10 @@ CREATE_TABLE(cnt_contract,0) , cnt_contract_looptijd_tot DATE CONSTRAINT cnt_c_cnt_contract_tot CHECK(cnt_contract_looptijd_tot IS NOT NULL) +, cnt_contract_inactiveren /* Automatisch sluiten na einddatum (0=nee, 1=ja) */ + NUMBER(1) + DEFAULT 0 + CONSTRAINT cnt_r_cnt_contract_inactiveren CHECK(cnt_contract_inactiveren IN (0,1)) , cnt_contract_kosten NUMBER(11,2) , cnt_contract_termijnkosten diff --git a/FAC/FAC_LCL.SRC b/FAC/FAC_LCL.SRC index 45bc763b..8d30c4b3 100644 --- a/FAC/FAC_LCL.SRC +++ b/FAC/FAC_LCL.SRC @@ -3324,6 +3324,7 @@ FAC_LCL('lcl_cnt_prolongation_auto', 'Automatisch', 'Automatic') FAC_LCL('lcl_cnt_prolongation_period', 'Verlengtermijn', 'Prolongation period') FAC_LCL('lcl_cnt_prolongation_tracking', 'Automatische verlenging met {0} tot {1}', 'Automatic prolongation with {0} to {1}.') FAC_LCL('lcl_cnt_date_end', 'Einddatum', 'End Date') +FAC_LCL('lcl_cnt_auto_close', 'Automatisch sluiten na einddatum', 'Automatically close after end date') FAC_LCL('lcl_cnt_effecter', 'Contractpartij', 'Contracting party') FAC_LCL('lcl_cnt_company', 'Bedrijf', 'Company') FAC_LCL('lcl_cnt_name', 'Naam', 'Name') diff --git a/_UP/DB49to50.src b/_UP/DB49to50.src index e3ba932d..fa821f3d 100644 --- a/_UP/DB49to50.src +++ b/_UP/DB49to50.src @@ -207,7 +207,7 @@ ALTER TABLE fac_imp_cnt ); /////////////////////////////////////////////////////////////////////////////////////////// DHLD#86034 -ALTER TABLE prs_perslid +ALTER TABLE prs_perslid MODIFY ( prs_perslid_oslogin VARCHAR2(256) , prs_perslid_oslogin2 VARCHAR2(256) ); @@ -225,6 +225,13 @@ DEF_FAC_MESSAGE ('PRS_C_PRS_KENMERK_MAX_C' , 'Nieuwe max.waarde van dit kenmerks DEF_FAC_MESSAGE ('PRS_C_PRS_KENMERK_MAX_P' , 'Nieuwe max.waarde van dit kenmerksoort voldoet niet aan alle personen.' ,'New max.value of this property-type does not satisfy all persons.'); DEF_FAC_MESSAGE ('PRS_C_PRS_KENMERK_LENGTE', 'De lengte moet tussen 1 en 50 liggen.','Length must be between 1 and 50.'); +/////////////////////////////////////////////////////////////////////////////////////////// VGLD#85984 +ALTER TABLE cnt_contract + ADD cnt_contract_inactiveren /* Automatisch sluiten na einddatum (0=nee, 1=ja) */ + NUMBER(1) + DEFAULT 0 + CONSTRAINT cnt_r_cnt_contract_inactiveren CHECK(cnt_contract_inactiveren IN (0,1)); + /////////////////////////////////////////////////////////////////////////////////////////// FCLT#00000 REGISTERONCE('$Id$')