usr_keep_start actor.usr_setting%ROWTYPE;
org_keep_age INTERVAL;
org_use_last BOOL = false;
+ org_age_is_min BOOL = false;
org_keep_count INT;
keep_age INTERVAL;
END IF;
SELECT enabled INTO org_use_last FROM config.global_flag WHERE name = 'history.circ.retention_uses_last_finished';
+ SELECT enabled INTO org_age_is_min FROM config.global_flag WHERE name = 'history.circ.retention_age_is_min';
-- First, find copies with more than keep_count non-renewal circs
FOR target_acp IN
ELSIF usr_keep_start.value IS NOT NULL THEN
keep_age := AGE(NOW(), oils_json_to_text(usr_keep_start.value)::TIMESTAMPTZ);
ELSE
- keep_age := COALESCE( org_keep_age::INTERVAL, '2000 years'::INTERVAL );
+ keep_age := COALESCE( org_keep_age, '2000 years'::INTERVAL );
+ END IF;
+
+ IF org_age_is_min THEN
+ keep_age := GREATEST( keep_age, org_keep_age );
END IF;
CONTINUE WHEN AGE(NOW(), last_finished) < keep_age;
'cgf',
'label'
)
+ ),(
+ 'history.circ.retention_age_is_min',
+ oils_i18n_gettext(
+ 'history.circ.retention_age_is_min',
+ 'Historical Circulations are kept for global retention age at a minimum, regardless of user preferences.',
+ 'cgf',
+ 'label'
+ )
);
INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)