@@ -, +, @@ - age restriction - the item is issued to another patron - the item is not for loan - the patron has overdue items - the item is lost - the item is a high demand item - the item is reserved - another case ? - typo checkout => check out. - the force checkout permission does not affect high holds. - log in with a user with manage_restrictions permission - verify you can set/unset restrictions when editing a patron - log in with a user without manage_restrictions permission - verify you cannot set/unset restrictions when editing a patron --- .../data/mysql/de-DE/mandatory/userpermissions.sql | 4 +- .../data/mysql/en/mandatory/userpermissions.sql | 2 + .../data/mysql/es-ES/mandatory/userpermissions.sql | 2 + .../mysql/fr-FR/1-Obligatoire/userpermissions.sql | 2 + .../data/mysql/it-IT/necessari/userpermissions.sql | 2 + .../mysql/nb-NO/1-Obligatorisk/userpermissions.sql | 2 + .../data/mysql/pl-PL/mandatory/userpermissions.sql | 2 + .../ru-RU/mandatory/permissions_and_user_flags.sql | 2 + .../uk-UA/mandatory/permissions_and_user_flags.sql | 2 + installer/data/mysql/updatedatabase.pl | 28 ++++++++++++++ .../prog/en/includes/borrower_debarments.inc | 8 ++-- .../prog/en/modules/circ/circulation.tt | 39 ++++++++++++++++---- .../prog/en/modules/members/memberentrygen.tt | 16 ++++++-- 13 files changed, 96 insertions(+), 15 deletions(-) --- a/installer/data/mysql/de-DE/mandatory/userpermissions.sql +++ a/installer/data/mysql/de-DE/mandatory/userpermissions.sql @@ -1,7 +1,9 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Übrige Ausleihberechtigungen'), - ( 1, 'override_renewals', 'Gesperrte Verlängerungen überschreiben'), + ( 1, 'override_renewals', 'Vormerksperren übergehen'), ( 1, 'overdues_report', 'Überfälligkeiten-Report ausführen'), + ( 1, 'force_checkout', 'Ausleihsperren übergehen'), + ( 1, 'manage_restrictions', 'Kontosperre "Gesperrt" aufheben'), ( 3, 'parameters_remaining_permissions', 'Übrige Administrationsberechtigungen'), ( 3, 'manage_circ_rules', 'Ausleihkonditionen verwalten'), ( 6, 'place_holds', 'Vormerkungen für Benutzer setzen'), --- a/installer/data/mysql/en/mandatory/userpermissions.sql +++ a/installer/data/mysql/en/mandatory/userpermissions.sql @@ -2,6 +2,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Remaining circulation permissions'), ( 1, 'override_renewals', 'Override blocked renewals'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'), ( 3, 'manage_circ_rules', 'manage circulation rules'), ( 6, 'place_holds', 'Place holds for patrons'), --- a/installer/data/mysql/es-ES/mandatory/userpermissions.sql +++ a/installer/data/mysql/es-ES/mandatory/userpermissions.sql @@ -2,6 +2,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Remaining circulation permissions'), ( 1, 'override_renewals', 'Override blocked renewals'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'), ( 3, 'manage_circ_rules', 'manage circulation rules'), ( 6, 'place_holds', 'Place holds for patrons'), --- a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql +++ a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql @@ -2,6 +2,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Fonctions de circulation restantes'), ( 1, 'override_renewals', 'Outrepasser les limites de renouvellement'), ( 1, 'overdues_report', 'Executer le rapport de retards'), + ( 1, 'force_checkout', 'Forcer le prêt si une limitation existe'), + ( 1, 'manage_restrictions', 'Gérer les suspensions d\'un utilisateur'), ( 3, 'parameters_remaining_permissions', 'Paramètres du système restants'), ( 3, 'manage_circ_rules', 'Gestion des règles de circulation'), ( 6, 'place_holds', 'Réserver pour des adhérents'), --- a/installer/data/mysql/it-IT/necessari/userpermissions.sql +++ a/installer/data/mysql/it-IT/necessari/userpermissions.sql @@ -4,6 +4,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Permessi rimanenti per la circolazione'), ( 1, 'override_renewals', 'Sblocca i rinnovi bloccati'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Permessi rimanenti'), ( 3, 'manage_circ_rules', 'Gestisci regole circolazione'), ( 6, 'place_holds', 'Fai prenotazioni per gli utenti'), --- a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql +++ a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql @@ -22,6 +22,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Øvrige rettigheter for sirkulasjon'), ( 1, 'override_renewals', 'Overstyre blokkerte fornyinger'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Øvrige rettigheter knyttet til systempreferanser'), ( 3, 'manage_circ_rules', 'Endre sirkulasjonsregler'), ( 6, 'place_holds', 'Foreta reservering for lånere'), --- a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql +++ a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql @@ -2,6 +2,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Remaining circulation permissions'), ( 1, 'override_renewals', 'Override blocked renewals'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'), ( 3, 'manage_circ_rules', 'manage circulation rules'), ( 6, 'place_holds', 'Place holds for patrons'), --- a/installer/data/mysql/ru-RU/mandatory/permissions_and_user_flags.sql +++ a/installer/data/mysql/ru-RU/mandatory/permissions_and_user_flags.sql @@ -28,6 +28,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Remaining circulation permissions'), ( 1, 'override_renewals', 'Override blocked renewals'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'), ( 3, 'manage_circ_rules', 'manage circulation rules'), ( 6, 'place_holds', 'Place holds for patrons'), --- a/installer/data/mysql/uk-UA/mandatory/permissions_and_user_flags.sql +++ a/installer/data/mysql/uk-UA/mandatory/permissions_and_user_flags.sql @@ -28,6 +28,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'circulate_remaining_permissions', 'Remaining circulation permissions'), ( 1, 'override_renewals', 'Override blocked renewals'), ( 1, 'overdues_report', 'Execute overdue items report'), + ( 1, 'force_checkout', 'Force checkout if a limitation exists'), + ( 1, 'manage_restrictions', 'Manage restrictions for accounts'), ( 3, 'parameters_remaining_permissions', 'Remaining system parameters permissions'), ( 3, 'manage_circ_rules', 'manage circulation rules'), ( 6, 'place_holds', 'Place holds for patrons'), --- a/installer/data/mysql/updatedatabase.pl +++ a/installer/data/mysql/updatedatabase.pl @@ -7743,6 +7743,34 @@ if(CheckVersion($DBversion)) { SetVersion($DBversion); } + +$DBversion = "3.13.00.XXX"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q{ + INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'force_checkout', 'Force checkout if a limitation exists') + }); + $dbh->do(q{ + INSERT INTO permissions (module_bit, code, description) VALUES ( 1, 'manage_restrictions', 'Lift restriction for restricted accounts') + }); + $dbh->do(q{ + INSERT INTO user_permissions (borrowernumber, module_bit, code) + SELECT user_permissions.borrowernumber, 1, 'force_checkout' + FROM user_permissions + LEFT JOIN borrowers USING(borrowernumber) + WHERE borrowers.flags & (1 << 1) + }); + $dbh->do(q{ + INSERT INTO user_permissions (borrowernumber, module_bit, code) + SELECT user_permissions.borrowernumber, 1, 'manage_restrictions' + FROM user_permissions + LEFT JOIN borrowers USING(borrowernumber) + WHERE borrowers.flags & (1 << 1) + }); + + print "Upgrade to $DBversion done (Bug 10863 - Add permission force_checkout and manage_restrictions)\n"; + SetVersion($DBversion); +} + =head1 FUNCTIONS =head2 TableExists($table) --- a/koha-tmpl/intranet-tmpl/prog/en/includes/borrower_debarments.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/borrower_debarments.inc @@ -31,7 +31,7 @@ Type Comment Expiration - [% IF ( CAN_user_borrowers ) %] + [% IF CAN_user_borrowers && CAN_user_circulate_manage_restrictions %]   [% END %] @@ -42,7 +42,7 @@ [% d.type %] [% d.comment %] [% IF d.expiration %] [% d.expiration | $KohaDates %] [% ELSE %] Indefinite [% END %] - [% IF ( CAN_user_borrowers )%] + [% IF CAN_user_borrowers && CAN_user_circulate_manage_restrictions %] Remove @@ -54,8 +54,8 @@ [% END %] -

Add manual restriction

- [% IF ( CAN_user_borrowers )%] + [% IF CAN_user_borrowers && CAN_user_circulate_manage_restrictions %] +

Add manual restriction

--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -185,11 +185,19 @@ var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export");
-

Please confirm checkout

+[% IF CAN_user_circulate_force_checkout %] +

Please confirm checkout

+[% ELSE %] +

Cannot check out

+[% END %]
    [%IF ( AGE_RESTRICTION ) %] -
  • Age restriction [% AGE_RESTRICTION %]. Check out anyway?
  • +
  • Age restriction [% AGE_RESTRICTION %]. + [% IF CAN_user_circulate_force_checkout %] + Check out anyway? + [% END %] +
  • [% END %] [% IF ( DEBT ) %] @@ -209,7 +217,11 @@ var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export"); [% END %] [% IF ( ISSUED_TO_ANOTHER ) %] -
  • Item [% getTitleMessageIteminfo %] ([% getBarcodeMessageIteminfo %]) is checked out to [% issued_firstname %] [% issued_surname %] ([% issued_cardnumber %]). Check in and check out?
  • +
  • Item [% getTitleMessageIteminfo %] ([% getBarcodeMessageIteminfo %]) is checked out to [% issued_firstname %] [% issued_surname %] ([% issued_cardnumber %]). + [% IF CAN_user_circulate_force_checkout %] + Check in and check out? + [% END %] +
  • [% END %] [% IF ( TOO_MANY ) %] @@ -232,20 +244,30 @@ var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export"); [% item_notforloan_lib = KohaAuthorisedValues.GetByCode( authvalcode_notforloan, item_notforloan, 0 ) %] Item is normally not for loan [% IF (item_notforloan_lib) %]([% item_notforloan_lib %])[% END %]. [% END %] + [% IF CAN_user_circulate_force_checkout %] Check out anyway? + [% END %] [% END %] [% IF ( USERBLOCKEDOVERDUE ) %] -
  • Patron has [% USERBLOCKEDOVERDUE %] overdue item(s). Check out anyway?
  • +
  • Patron has [% USERBLOCKEDOVERDUE %] overdue item(s). + [% IF CAN_user_circulate_force_checkout %] + Check out anyway? + [% END %] +
  • [% END %] [% IF ( ITEM_LOST ) %] -
  • This item has been lost with a status of "[% ITEM_LOST %]". Check out anyway?
  • +
  • This item has been lost with a status of "[% ITEM_LOST %]". + [% IF CAN_user_circulate_force_checkout %] + Check out anyway? + [% END %] +
  • [% END %] [% IF HIGHHOLDS %] -
  • High demand item. Loan period shortened to [% HIGHHOLDS.duration %] days (due [% HIGHHOLDS.returndate %]). Check out anyway?
  • +
  • High demand item. Loan period shortened to [% HIGHHOLDS.duration %] days (due [% HIGHHOLDS.returndate %]). Check out anyway?
  • [% END %]
@@ -256,6 +278,8 @@ var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export"); }); [% END %] + +[% IF CAN_user_circulate_force_checkout or HIGHHOLDS %] [% IF ( RESERVED ) %] @@ -305,6 +329,7 @@ var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export"); [% END %] +[% END %]
[% END %] @@ -481,7 +506,7 @@ No patron matched [% message %]
Enter item barcode:
- [% IF ( NEEDSCONFIRMATION ) %] + [% IF NEEDSCONFIRMATION %] [% ELSE %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -1170,6 +1170,7 @@ [% IF ( flagloo.key == 'gonenoaddress' ) %]Gone no address:[% END %] [% IF ( flagloo.key == 'lost' ) %]Lost card:[% END %] + [% IF CAN_user_circulate_manage_restrictions %] [% IF ( flagloo.yes ) %] @@ -1182,6 +1183,9 @@ [% ELSE %] [% END %] + [% ELSE %] + [% IF flagloo.yes %]Yes[% ELSE %]No[% END %] + [% END %] [% END %] @@ -1201,7 +1205,9 @@ Type Comment Expiration - Remove? + [% IF CAN_user_borrowers && CAN_user_circulate_manage_restrictions %] + Remove? + [% END %] @@ -1211,14 +1217,17 @@ [% d.type %] [% d.comment %] [% IF d.expiration %] [% d.expiration | $KohaDates %] [% ELSE %] Indefinite [% END %] - + [% IF CAN_user_borrowers && CAN_user_circulate_manage_restrictions %] + - + + [% END %] [% END %] [% END %] + [% IF CAN_user_borrowers && CAN_user_circulate_manage_restrictions %]

Add manual restriction

@@ -1233,6 +1242,7 @@ Cancel

+ [% END %] [% END %] --