@@ -, +, @@ --- circ/circulation.pl | 1 + circ/returns.pl | 4 +- .../prog/en/includes/checkouts-table.inc | 71 +++++ .../prog/en/includes/patron-return-claims.inc | 15 + .../prog/en/includes/strings.inc | 5 + .../admin/preferences/circulation.pref | 19 ++ .../prog/en/modules/catalogue/moredetail.tt | 36 ++- .../prog/en/modules/circ/circulation.tt | 36 +++ .../prog/en/modules/circ/returns.tt | 19 ++ .../prog/en/modules/members/moremember.tt | 25 ++ koha-tmpl/intranet-tmpl/prog/js/checkouts.js | 282 +++++++++++++++++- members/moremember.pl | 1 + svc/checkouts | 61 ++-- svc/return_claims | 127 ++++++++ 14 files changed, 666 insertions(+), 36 deletions(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/patron-return-claims.inc create mode 100755 svc/return_claims --- a/circ/circulation.pl +++ a/circ/circulation.pl @@ -643,6 +643,7 @@ $template->param( override_high_holds => $override_high_holds, nopermission => scalar $query->param('nopermission'), autoswitched => $autoswitched, + logged_in_user => $logged_in_user, ); output_html_with_http_headers $query, $cookie, $template->output; --- a/circ/returns.pl +++ a/circ/returns.pl @@ -542,7 +542,9 @@ foreach my $code ( keys %$messages ) { elsif ( $code eq 'DataCorrupted' ) { $err{data_corrupted} = 1; } - else { + elsif ( $code eq 'ReturnClaims' ) { + $template->param( ReturnClaims => $messages->{ReturnClaims} ); + } else { die "Unknown error code $code"; # note we need all the (empty) elsif's above, or we die. # This forces the issue of staying in sync w/ Circulation.pm } --- a/koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table.inc @@ -28,6 +28,7 @@ Price Renew

select all | none

Check in

select all | none

+ Return claims Export

select all | none

@@ -83,3 +84,73 @@

Patron has nothing checked out.

[% END %] + + + + + + --- a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-return-claims.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-return-claims.inc @@ -0,0 +1,15 @@ +
+ + + + + + + + + + + + +
Claim IDTitleNotesCreated onUpdated onResolution 
+
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/strings.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/strings.inc @@ -5,6 +5,10 @@ var NOT_RENEWABLE_RESTRICTION = _("Not allowed: patron restricted"); var CIRCULATION_RENEWED_DUE = _("Renewed, due:"); var CIRCULATION_RENEW_FAILED = _("Renew failed:"); + var RETURN_CLAIMED = _("Return claimed"); + var RETURN_CLAIMED_FAILURE = _("Unable to claim as returned"); + var RETURN_CLAIMED_MAKE = _("Claim returned"); + var RETURN_CLAIMED_NOTES = _("Notes about return claim"); var NOT_CHECKED_OUT = _("not checked out"); var TOO_MANY_RENEWALS = _("too many renewals"); var ON_RESERVE = _("on hold"); @@ -47,4 +51,5 @@ var MSG_NO_ITEMTYPE = _("No itemtype"); var MSG_CHECKOUTS_BY_ITEMTYPE = _("Number of checkouts by item type"); var PATRON_NOTE = _("Patron note"); + var CONFIRM_DELETE_RETURN_CLAIM = _("Are you sure you want to delete this return claim?"); --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref @@ -1084,3 +1084,22 @@ Circulation: pages: Pages chapters: Chapters - + Return Claims: + - + - When marking a checkout as "claims returned", + - pref: ClaimReturnedChargeFee + default: ask + choices: + ask: ask if a lost fee should be charged + charge: charge a lost fee + no_charge: don't charge a lost fee + - . + - + - Use the LOST authorised value + - pref: ClaimReturnedLostValue + - to represent returns claims + - + - Warn librarians that a patron has excessive return cliams if the patron has claimed the return of more than + - pref: ClaimReturnedWarningThreshold + class: integer + - items. --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt @@ -100,21 +100,31 @@
  • Lost status: [% IF ( CAN_user_circulate ) %]
    - - - - + + + + + + + [% SET ClaimReturnedLostValue = Koha.Preference('ClaimReturnedLostValue') %] + [% IF ClaimReturnedLostValue && ITEM_DAT.itemlost == ClaimReturnedLostValue %] + +

    Item has been claimed as returned.

    [% ELSE %] - + +
    [% END %] - [% END %] - - - + [% ELSE %] [% FOREACH itemlostloo IN itemlostloop %] [% IF ( itemlostloo.selected ) %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -732,6 +732,12 @@
  • Overdues: Patron has ITEMS OVERDUE. See highlighted items below
  • [% END %] + [% SET ClaimReturnedWarningThreshold = Koha.Preference('ClaimReturnedWarningThreshold') %] + [% SET return_claims = patron.return_claims %] + [% IF return_claims.count %] +
  • Return claims: Patron has [% return_claims.count | html %] RETURN CLAIMS. + [% END %] + [% IF ( charges ) %] [% INCLUDE 'blocked-fines.inc' fines = chargesamount %] [% END %] @@ -845,6 +851,30 @@
  • [% END %] +
  • + [% IF ( patron.return_claims.count ) %] + + [% patron.return_claims.resolved.count | html %] + / + [% patron.return_claims.unresolved.count | html %] + Claim(s) + + [% ELSE %] + + 0 + / + 0 + Claim(s) + + [% END %] +
  • + + [% IF Koha.Preference('ArticleRequests') %] +
  • + [% patron.article_requests_current.count | html %] Article requests +
  • + [% END %] +
  • [% debarments.count | html %] Restrictions
  • [% SET enrollments = patron.get_club_enrollments(1) %] @@ -928,6 +958,8 @@ [% END # /IF holds_count %] + [% INCLUDE 'patron-return-claims.inc' %] + [% IF Koha.Preference('ArticleRequests') %] [% INCLUDE 'patron-article-requests.inc' %] [% END %] @@ -995,6 +1027,10 @@ [% Asset.js("js/circ-patron-search-results.js") | $raw %]