diff --git a/FAC/FAC_LCL.SRC b/FAC/FAC_LCL.SRC
index 54ce0f41..a830d57e 100644
--- a/FAC/FAC_LCL.SRC
+++ b/FAC/FAC_LCL.SRC
@@ -1321,6 +1321,7 @@ FAC_LCL('lcl_res_item_price', 'Actuele prijs per stuk', 'Actual item price', 'Ak
FAC_LCL('lcl_res_inf_kostenklant', 'Kosten klant', 'Cust. pays', 'Kostenstelle', 'Coûts client')
FAC_LCL('lcl_res_deel_head1', 'Deze reservering bestaat uit ', 'This reservation consists of ', 'Diese Reservierung besteht aus ', 'Cette réservation se compose de ')
FAC_LCL('lcl_res_deel_head2', ' deelreservering(en).
Wat wilt u verwijderen?', ' reservation part(s).
What do you want to delete?', ' Teilreservierung(en).
Welche wollen Sie löschen?', ' sous réservation(s).
Quelles voulez-vous supprimer?')
+FAC_LCL('lcl_res_del_multi_head', 'U wilt {0} (deel)reserveringen gaan verwijderen.', 'You want to delete {0} reservations', 'Sie möchten {0} Reservierungen löschen', 'Vous voulez supprimer {0} réservations')
FAC_LCL('lcl_res_btn_current', 'Huidige', 'Current', 'Heutige', 'Actuelle')
FAC_LCL('lcl_res_btn_future', 'Toekomstige', 'Future', 'Zukünftige', 'Future')
FAC_LCL('lcl_res_btn_total', 'Volledig', 'All', 'Vollständig', 'Entière')
@@ -1328,6 +1329,7 @@ FAC_LCL('lcl_res_confirm_delete_afspraak', 'Wilt u deze reservering verwijderen?
FAC_LCL('lcl_res_del_txt_current', 'Verwijder alleen deze deelreservering', 'Only delete this recurrence', 'Löschen Sie nur diese Teilreservierung', 'Suprrimer seulement cette sous réservation')
FAC_LCL('lcl_res_del_txt_future', 'Verwijder deze en toekomstige deelreserveringen', 'Delete this and all future recurrences', 'Löschen Sie diese und spätere Teilreservierungen', 'Supprimer cette et sous réservations futures')
FAC_LCL('lcl_res_del_txt_total', 'Verwijder de gehele reservering', 'Delete the entire reservation', 'Löschen Sie die ganze Reservierung', 'Supprimer l''entière réservation')
+FAC_LCL('lcl_res_del_txt_multi', 'Verwijder {0} (deel)reserveringen', 'Delete {0} reservations', '{0} Reservierungen löschen', 'Supprimer {0} réservations')
FAC_LCL('lcl_res_kostendoorbelasten', 'Wel kosten doorbelasten', 'Charge costs', 'Wohl Kosten durchrechnen', 'Imputer coûts')
FAC_LCL('lcl_res_kostendoorbelast', 'Bij verwijderen worden {0}% van de kosten doorbelast', 'When deleting {0}% of the costs will be charged', 'Beim Entfernen werden {0}% der Kosten durchgerechnet', 'En supprimant 10% des coûts sont imputé')
FAC_LCL('lcl_res_charge', 'Doorbelasten', 'Charge', 'Anrechnen', 'Imputer')
@@ -2328,7 +2330,6 @@ FAC_LCL('lcl_cnt_locatie_m', 'Meerdere locaties', 'Multiple locations', 'Mehrere
FAC_LCL('lcl_cnt_ruimte_opp', 'Totaal
Oppervlakte', 'Total
Area', 'Summe
Fläche', 'Surface
totale')
FAC_LCL('lcl_cnt_ruimte_occ', 'Gecontracteerd', 'Contracted', 'Vertrag abgeschlossen', 'Contracté')
FAC_LCL('lcl_cnt_ruimte_tarief', 'Tariefsoort', 'Rate type', 'Tarifart', 'Sorte de tarif')
-FAC_LCL('lcl_cnt_mutatie_ovz_title', 'Ruimtebeheer mutatieoverzicht', 'Room management mutation details', 'Immobilien Änderungsübersicht', 'Immobilier vue d''ensemble des modifications')
FAC_LCL('lcl_cnt_verdeling', 'Verdeling', 'Distribution', 'Verteilung', 'Répartition')
FAC_LCL('lcl_cnt_mantel', 'Mantel', 'Umbrella', 'Rahmenvertag', 'Cadre')
FAC_LCL('lcl_cnt_frame_algemeen', 'Contractgegevens', 'Contract details', 'Vertragsdaten', 'Détails du contrat')
@@ -2418,18 +2419,8 @@ FAC_LCL('lcl_cnt_concept', 'Concept', 'Concept', 'Konzept', 'Concept')
FAC_LCL('lcl_cnt_export', 'Exporteer', 'Export', 'Exportiere', 'Exporté')
FAC_LCL('lcl_cnt_verwijder', 'Verwijder', 'Delete', 'Entferne', 'Supprimé')
FAC_LCL('lcl_cnt_report', 'Rapport', 'Report', 'Report', 'Rapport')
-FAC_LCL('lcl_cnt_mutatie_start_date', 'Ingangsdatum', 'Start date', 'Anfangsdatum', 'Date de début')
-FAC_LCL('lcl_cnt_mutatie_def', 'Definitief', 'Definitive', 'Definitiv', 'Définitif')
FAC_LCL('lcl_cnt_einddatum_old_cnt', 'Einddatum oude contract', 'End date old contract', 'Endedatum des alten Vertrages', 'Date de fin du contrat ancien')
-FAC_LCL('lcl_cnt_mutatie_org_huurder', 'Bestaande huurder', 'Original tenant', 'Aktueller Mieter', 'Locataire actuel')
-FAC_LCL('lcl_cnt_mutatie_new_huurder', 'Nieuwe huurder', 'New tenant', 'Neuer Mieter', 'Nouveau locataire')
-FAC_LCL('lcl_cnt_mutatie_afw_opp', 'Afw
Opp', 'Alt
area', 'And
Opp', 'Surf
diff')
-FAC_LCL('lcl_cnt_mutatie_afw_tarief', 'Afw
Tarief', 'Alt
tariff', 'And
Tarif', 'Tarif
diff')
-FAC_LCL('lcl_cnt_mutatie_afw_prijs', 'Afw
Prijs', 'Alt
price', 'And
Preis', 'Prix
diff')
FAC_LCL('lcl_cnt_aanvrager', 'Aanvrager', 'Requestor', 'Antragsteller(in)', 'Demandeur')
-FAC_LCL('lcl_cnt_mutatie_opp', 'Opp', 'Area size', 'Fl', 'Surf')
-FAC_LCL('lcl_cnt_mutatie_soort', 'Srt', 'Type', 'Srt', 'Sorte')
-FAC_LCL('lcl_cnt_mutatie_tarief', 'Tarief', 'Tariff', 'Tarif', 'Tarif')
FAC_LCL('lcl_cnt_status', 'Status', 'Status', 'Status', 'Etat')
FAC_LCL('lcl_cnt_child_contracts', 'Onderliggende contracten', 'Underlying contracts', 'Verbundenen Verträge', 'Contrats connexes')
FAC_LCL('lcl_cnt_not_configured', 'Deze module is niet geconfigureerd.', 'This module is not configured.', 'Dieses Modul ist nicht eingerichtet.', 'Ce module n''est pas configuré.')
@@ -2598,6 +2589,7 @@ FAC_LCL('lcl_prs_person_mijndata', 'Mijn gegevens', 'My details', 'Meine Daten',
FAC_LCL('lcl_prs_person_voorletters', 'Voorletters', 'Initials', 'Anfangsbuchstaben
des Vornamens', 'Initiales')
FAC_LCL('lcl_prs_person_voornaam', 'Voornaam', 'First name', 'Vorname', 'Prénom')
FAC_LCL('lcl_prs_person_uurloon', 'Uurloon', 'Hourly rate', 'Stundenlohn', 'Salaire horaire')
+FAC_LCL('lcl_prs_person_timezone', 'Tijdzone', 'Timezone', 'Zeitzone', 'Fuseau horaire')
FAC_LCL('lcl_prs_person_dienstverband', 'Dienstverband', 'Employment', 'Arbeitsverhältnis', 'Emploi')
FAC_LCL('lcl_prs_person_dienstverband_perc', 'Dienstverband (%)', 'Employment (%)', 'Arbeitsverhältnis (%)', 'Emploi (%)')
FAC_LCL('lcl_prs_person_opp', 'Opp', 'Area size', 'Fläche', 'Surface')
@@ -5500,22 +5492,29 @@ FAC_LCL('fac_idp_code', 'Code voor ?sso=', 'Code for ?sso=', 'Code f
FAC_LCL('fac_idp_omschrijving', 'Omschrijving', 'Description', 'Umschreibung', 'Description')
FAC_LCL('fac_idp_opmerking', 'Opmerking', 'Remark', 'Bemerkung', 'Remarque')
FAC_LCL('fac_idp_type', 'Identity type', 'Identity type', 'Identitätstyp', 'Type d''identité')
-FAC_LCL('fac_idp_typeLOV', '1;Internal (login.asp, future use);2;UID_DEC (deprecated);3;GUID-encrypted (deprecated);4;JWT sso;5;SAML (future use)', '1;Internal (login.asp, future use);2;UID_DEC (deprecated);3;GUID-encrypted (deprecated);4;JWT sso;5;SAML (future use)', '1;Internal (login.asp, future use);2;UID_DEC (deprecated);3;GUID-encrypted (deprecated);4;JWT sso;5;SAML (future use)', '1;Internal (login.asp, future use);2;UID_DEC (deprecated);3;GUID-encrypted (deprecated);4;JWT sso;5;SAML (future use)')
+FAC_LCL('fac_idp_typeLOV', '1;Internal (login.asp, future use);2;UID_DEC (deprecated);3;GUID-encrypted (deprecated);4;JWT sso;5;SAML', '1;Internal (login.asp, future use);2;UID_DEC (deprecated);3;GUID-encrypted (deprecated);4;JWT sso;5;SAML', '1;Internal (login.asp, future use);2;UID_DEC (deprecated);3;GUID-encrypted (deprecated);4;JWT sso;5;SAML', '1;Internal (login.asp, future use);2;UID_DEC (deprecated);3;GUID-encrypted (deprecated);4;JWT sso;5;SAML')
FAC_LCL('fac_idp_secret', 'Gedeeld geheim', 'Shared secret', 'Geteiltes Geheimnis', 'Secret partagé')
FAC_LCL('fac_idp_audience', 'JWT audience', 'JWT audience', 'JWT audience', 'JWT audience')
FAC_LCL('fac_idp_issuer', 'JWT issuer', 'JWT issuer', 'JWT issuer', 'JWT issuer')
FAC_LCL('fac_idp_algorithm', 'JWT algoritme', 'JWT algorithm', 'JWT algorithm', 'JWT algorithm')
FAC_LCL('fac_idp_remote_loginurl', 'Remote Login URL', 'Remote Login URL', 'Remote-Login-URL', 'Remote Login URL')
FAC_LCL('fac_idp_remote_logouturl', 'Remote Logout URL', 'Remote Logout URL', 'Remote-Logout-URL', 'Remote Logout URL')
-FAC_LCL('fac_idp_usermapping', 'User assertion', 'User assertion', 'User assertion', 'User assertion')
FAC_LCL('fac_idp_ipfilter', 'IP adres filter', 'IP adress filter', 'IP-Adressfilter ', 'filtre d''adresse IP')
FAC_LCL('fac_idp_ipauto', 'Automatisch SSO voor IP', 'Automatic SSO for IP', 'Automatische SSO für IP', 'SSO automatique pour IP')
FAC_LCL('fac_idp_clockskew', 'Toegestane klok afwijking', 'Allowed clock skew', 'Erlaubte Taktverschiebung', 'Allowed clock skew')
FAC_LCL('fac_idp_duration', 'Maximale geldigheid', 'Maximum validity', 'Maximalen Gültigkeitsdauer', 'Validité maximale')
-FAC_LCL('lcl_idp_company', 'Alleen voor bedrijf', 'Company only', 'Nur für Betrieb', 'Limité à entreprise')
-FAC_LCL('lcl_idp_department', 'Alleen voor afdeling', 'Department only', 'Nur für Abteilung', 'Limité à département')
+FAC_LCL('lcl_idp_company', 'Voor bedrijf', 'For company', 'Für Betrieb', 'Pour entreprise')
+FAC_LCL('lcl_idp_department', 'Voor afdeling', 'For department', 'Für Abteilung', 'Pour département')
FAC_LCL('fac_idp_functie_key', 'Alleen als autorisatie', 'Only for authorisation', 'Nur für Autorisierung', 'Limité à autorisation')
FAC_LCL('fac_idp_internal', 'Internal', 'Internal', 'Internal', 'Internal')
+FAC_LCL('fac_idp_autocreate', 'Aanmaken/bijwerken', 'Create/Update', 'Erzeugen/Aktualisieren', 'Créer/Actualiser')
+
+FAC_LCL('fac_idp_map', 'Identity mapping', 'Identity mapping', 'Identity-Mapping', 'Mapping d''identité')
+FAC_LCL('fac_idp_map_m', 'Identity mappings', 'Identity mappings', 'Identity-Mappinge', 'Mapping d''identité')
+FAC_LCL('fac_idp_map_identify', 'Identificeren', 'Identification', 'Identifikation', 'Identification')
+FAC_LCL('fac_idp_map_to', 'FACILITOR attribuut', 'FACILITOR attribute', 'FACILITOR Attribut', 'FACILITOR attribut')
+FAC_LCL('fac_idp_map_from', 'Claim veld', 'Claim field', 'Claim Feld', 'Claim champ')
+FAC_LCL('fac_idp_map_default', 'Standaardwaarde', 'Default value', 'Standardwert', 'Par défaut')
COMMIT;
FAC_LCL('fac_audit', 'Audit', 'Audit', '@@', '@@')
diff --git a/FAC/FAC_TAB.SRC b/FAC/FAC_TAB.SRC
index 2f752143..7cafb06b 100644
--- a/FAC/FAC_TAB.SRC
+++ b/FAC/FAC_TAB.SRC
@@ -1971,10 +1971,16 @@ CREATE TABLE fac_idp
VARCHAR2(128),
fac_idp_remote_logouturl
VARCHAR2(128),
+ fac_idp_saml_metaurl
+ VARCHAR2(128),
fac_idp_clockskew
NUMBER(10),
fac_idp_duration
NUMBER(10),
+ fac_idp_autocreate
+ NUMBER(1)
+ DEFAULT 0 -- +1: create; +2: update
+ NOT NULL,
-- Note: these column are defined in PRS_TAB.SRC
-- prs_afdeling_key NUMBER(10)
-- prs_bedrijf_key NUMBER(10)
diff --git a/FCLT.NMK b/FCLT.NMK
index 196fc18d..7411ee85 100644
--- a/FCLT.NMK
+++ b/FCLT.NMK
@@ -124,6 +124,10 @@ $(EXE)\$(NEXTROOT)\FCLT$(NEXTVERSION)$(FILEVERSION).SQL: \
$(MSRC)\alg\alg_tab.src \
$(MSRC)\alg\alg_tri.src \
$(MSRC)\alg\alg_vie.src \
+ $(MSRC)\aut\aut_ind.src \
+ $(MSRC)\aut\aut_seq.src \
+ $(MSRC)\aut\aut_tab.src \
+ $(MSRC)\aut\aut_tri.src \
$(MSRC)\bes\bes_ind.src \
$(MSRC)\bes\bes_ini.src \
$(MSRC)\bes\bes_pac.src \
diff --git a/FCLT.SRC b/FCLT.SRC
index 079f5fdb..d7c5df4c 100644
--- a/FCLT.SRC
+++ b/FCLT.SRC
@@ -67,6 +67,7 @@ SET ECHO ON
/* TABLES */
#include "fac\fac_tab.src"
#include "alg\alg_tab.src"
+#include "aut\aut_tab.src"
#include "ins\ins_tab.src"
#include "prs\prs_tab.src"
#include "mld\mld_tab.src"
@@ -87,6 +88,7 @@ SET ECHO ON
/* SEQUENCES */
#include "fac\fac_seq.src"
#include "alg\alg_seq.src"
+#include "aut\aut_seq.src"
#include "ins\ins_seq.src"
#include "prs\prs_seq.src"
#include "mld\mld_seq.src"
@@ -107,6 +109,7 @@ SET ECHO ON
/* INDICES */
#include "fac\fac_ind.src"
#include "alg\alg_ind.src"
+#include "aut\aut_ind.src"
#include "ins\ins_ind.src"
#include "prs\prs_ind.src"
#include "mld\mld_ind.src"
diff --git a/PRS/PRS_TAB.SRC b/PRS/PRS_TAB.SRC
index 2741975d..8de1e683 100644
--- a/PRS/PRS_TAB.SRC
+++ b/PRS/PRS_TAB.SRC
@@ -791,6 +791,13 @@ ALTER TABLE fac_audit ADD
CONSTRAINT fac_r_prs_perslid_key9 REFERENCES prs_perslid(prs_perslid_key) ON DELETE SET NULL
);
+ALTER TABLE aut_client_perslid ADD (
+ prs_perslid_key
+ NUMBER(10)
+ CONSTRAINT aut_r_aut_client_perslid REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE
+ CONSTRAINT aut_c_aut_client_perslid CHECK(prs_perslid_key IS NOT NULL)
+);
+
COMMENT ON COLUMN prs_kostenplaats.prs_perslid_key IS 'Budgethouder';
// key_alt is een vervanger voor key als frontend
diff --git a/_UP/DB30to31.src b/_UP/DB30to31.src
index e6ae7c64..316a4e37 100644
--- a/_UP/DB30to31.src
+++ b/_UP/DB30to31.src
@@ -291,6 +291,7 @@ CREATE_TABLE(bgt_budget,0)
bgt_budget_isreserve
NUMBER(1)
DEFAULT (0)
+ NOT NULL
CONSTRAINT bgt_c_bgt_budget_isreserve CHECK(bgt_budget_isreserve IN (0,1)),
bgt_budget_begin
DATE,
@@ -463,13 +464,15 @@ ALTER TABLE fac_imp_factuur MODIFY (omschrijving VARCHAR2(250));
/////////////////////////////////////////////////////////////////////////////////////////// DJIN#36213
ALTER TABLE fac_idp
-ADD
-(
- fac_idp_autocreate
+ADD fac_idp_autocreate
NUMBER(1)
DEFAULT 0 -- +1: create; +2: update
- NOT NULL
-);
+ NOT NULL;
+
+ALTER TABLE fac_idp
+ADD fac_idp_saml_metaurl
+ VARCHAR2(128);
+
ALTER TABLE fac_idp DROP COLUMN fac_idp_usermapping;
@@ -500,6 +503,68 @@ CREATE TABLE fac_idp_map
CREATE SEQUENCE fac_s_fac_idp_map_key MINVALUE 1;
+/////////////////////////////////////////////////////////////////////////////////////////// FSN#39750
+-- Clients (zoals al dan niet native App's)
+CREATE TABLE aut_client
+(
+ aut_client_key
+ NUMBER(10)
+ CONSTRAINT aut_k_aut_client_key PRIMARY KEY,
+ aut_client_id
+ VARCHAR2(64),
+ aut_client_type -- 1=Internal (login.asp, future use), 2=UID_DEC (deprecated),
+ NUMBER(3), -- 3=GUID-encrypted (deprecated), 4=JWT, 5=SAML (future use)
+ aut_client_omschrijving
+ VARCHAR2(30),
+ aut_client_opmerking
+ VARCHAR2(320),
+ aut_client_secret
+ VARCHAR2(128),
+ aut_client_aanmaak
+ DATE
+ DEFAULT SYSDATE
+);
+
+-- Koppeling client en (toestemming gegeven door) perslid
+-- TODO: Kan gebruiker app op meerdere toestallen inrichten?
+CREATE TABLE aut_client_perslid
+(
+ aut_client_perslid_key
+ NUMBER(10)
+ CONSTRAINT aut_k_client_perslid PRIMARY KEY,
+ aut_client_key
+ NUMBER(10)
+ CONSTRAINT aut_r_aut_client_id REFERENCES aut_client(aut_client_key) ON DELETE CASCADE,
+ aut_client_perslid_device_id
+ VARCHAR(320),
+ aut_client_perslid_scope
+ VARCHAR(320)
+ DEFAULT NULL,
+ aut_client_perslid_pushtoken
+ VARCHAR(320),
+ aut_client_perslid_refreshtkn -- unused yet
+ VARCHAR(320),
+ aut_client_perslid_refreshdate
+ DATE,
+ aut_client_perslid_accesstoken
+ VARCHAR(320),
+ aut_client_perslid_accessdate
+ DATE,
+ aut_client_perslid_login -- wanneer voor het laatst de app gebruikt
+ DATE,
+// Note: this column is defined in PRS_TAB.SRC
+// prs_perslid_key
+// NUMBER(10)
+// CONSTRAINT aut_r_aut_client_perslid REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE
+// CONSTRAINT aut_c_aut_client_perslid CHECK(prs_perslid_key IS NOT NULL),
+ aut_client_perslid_aanmaak
+ DATE
+ DEFAULT SYSDATE
+);
+
+CREATE SEQUENCE aut_s_aut_client_key MINVALUE 1;
+CREATE SEQUENCE aut_s_aut_client_perslid_key MINVALUE 1;
+
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
@@ -514,6 +579,16 @@ CREATE SEQUENCE fac_s_fac_idp_map_key MINVALUE 1;
/////////////////////////////////////////////////////////////////////////////////////////// GENERAL
/////////////////////////////////////////////////////////////////////////////////////////// CLEANUP
+
+/////////////////////////////////////////////////////////////////////////////////////////// FSN#39586
+DELETE fac_localeitems
+ WHERE fac_localeitems_dialect_id = 'MLD_SRTDISCIPLINE_KEY'
+ AND fac_localeitems_lcl IN ('lcl_mld_urg_hold1',
+ 'lcl_mld_urg_hoog1',
+ 'lcl_mld_urg_kritiek1',
+ 'lcl_mld_urg_laag1',
+ 'lcl_mld_urg_normaal1');
+
/////////////////////////////////////////////////////////////////////////////////////////// FSN#31475
UPDATE cnt_disc_params SET cnt_srtcontract_type=4 WHERE cnt_srtcontract_type=2;
DELETE FROM cnt_typecontract WHERE cnt_typecontract_key=2;
diff --git a/_UP/recreate.inc b/_UP/recreate.inc
index c3f682fb..89d36083 100644
--- a/_UP/recreate.inc
+++ b/_UP/recreate.inc
@@ -48,6 +48,7 @@
// Recreation all triggers
#include "fac\fac_tri.src"
#include "alg\alg_tri.src"
+#include "aut\aut_tri.src"
#include "ins\ins_tri.src"
#include "prs\prs_tri.src"
#include "cnt\cnt_tri.src"