From 9d975651b55223c4e8f72c39c14d93978cb74f9a Mon Sep 17 00:00:00 2001
From: Aleisha Amohia <aleishaamohia@hotmail.com>
Date: Wed, 8 Sep 2021 03:58:46 +1200
Subject: [PATCH] Bug 6796: ConsiderLibraryHoursInCirculation system preference

---
 ..._ConsiderLibraryHoursInCirculation_syspref.pl | 16 ++++++++++++++++
 installer/data/mysql/mandatory/sysprefs.sql      |  1 +
 .../modules/admin/preferences/circulation.pref   |  7 +++++++
 3 files changed, 24 insertions(+)
 create mode 100755 installer/data/mysql/atomicupdate/bug_6796_-_add_ConsiderLibraryHoursInCirculation_syspref.pl

diff --git a/installer/data/mysql/atomicupdate/bug_6796_-_add_ConsiderLibraryHoursInCirculation_syspref.pl b/installer/data/mysql/atomicupdate/bug_6796_-_add_ConsiderLibraryHoursInCirculation_syspref.pl
new file mode 100755
index 00000000000..823504319ae
--- /dev/null
+++ b/installer/data/mysql/atomicupdate/bug_6796_-_add_ConsiderLibraryHoursInCirculation_syspref.pl
@@ -0,0 +1,16 @@
+use Modern::Perl;
+
+return {
+    bug_number  => "6796",
+    description => "Overnight checkouts taking into account opening and closing hours",
+    up          => sub {
+        my ($args) = @_;
+        my ( $dbh, $out ) = @$args{qw(dbh out)};
+
+        $dbh->do(
+            q{ INSERT IGNORE INTO systempreferences ( variable, value, options, explanation, type ) VALUES ( 'ConsiderLibraryHoursInCirculation', 'ignore', 'close|open|ignore', "Take library opening hours into consideration to calculate due date when circulating.", 'Choice' ) }
+        );
+
+        say $out "Added system preference 'ConsiderLibraryHoursInCirculation'";
+    },
+};
diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql
index 669074aa506..3aedd560afd 100644
--- a/installer/data/mysql/mandatory/sysprefs.sql
+++ b/installer/data/mysql/mandatory/sysprefs.sql
@@ -167,6 +167,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
 ('ComponentSortField','title','call_number|pubdate|acqdate|title|author','Specify the default field used for sorting','Choice'),
 ('ComponentSortOrder','asc','asc|dsc|az|za','Specify the default sort order','Choice'),
 ('ConfirmFutureHolds','0','','Number of days for confirming future holds','Integer'),
+('ConsiderLibraryHoursInCirculation', 'close', 'close|open|ignore', "Take library opening hours into consideration to calculate due date when circulating.", 'Choice'),
 ('ConsiderOnSiteCheckoutsAsNormalCheckouts','1',NULL,'Consider on-site checkouts as normal checkouts','YesNo'),
 ('ContentWarningField', '', NULL, 'MARC field to use for content warnings', 'Free'),
 ('CookieConsent', '0', NULL, 'Require cookie consent to be displayed', 'YesNo'),
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
index 080e8fa4948..124fb1a993f 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
@@ -571,6 +571,13 @@ Circulation:
             - This is a list of value pairs. When an item is checked out, if the not for loan value on the left matches the items not for loan value
             - "it will be updated to the right-hand value. For example, '-1: 0' will cause an item that was set to 'Ordered' to now be available for loan."
             - Each pair of values should be on a separate line.
+        -
+            - When checking out an hourly loan that will be due after the library closes,
+            - pref: ConsiderLibraryHoursInCirculation
+              choices:
+                  open: "extend the loan period and set the checkout to be due at the library's open time."
+                  close: "shorten the loan period and set the checkout to be due at the library's close time."
+                  ignore: "do not consider the library's opening hours."
     Checkin policy:
         -
             - pref: TrapHoldsOnOrder
-- 
2.43.0