From 16cd2996a484b2105d66043855c36d5e13a82987 Mon Sep 17 00:00:00 2001 From: Lyon3 Team Date: Mon, 13 Jan 2014 12:09:01 +0100 Subject: [PATCH] Bug 8231: display warning at check in if borrower is restricted Display, at check in, a reminder of an already existing suspension date even if the returned document is not late. Test plan : 1) Apply the patch 2) Go to a borrower checkout page and checkout some documents with different passed duedate using "Specify due date" function. Checkout out one with the default duedate. 3) Check in the document with the bigger delay : You will get the message : 'X is now restricted until ...' 4) Check in one of the document with a smaller delay : You'll get a different message : 'Reminder : Patron was earlier restricted until...'. 5) Check in the document which is not late : You 'll get the same message as the previous one Signed-off-by: JMBroust Signed-off-by: Jonathan Druart Signed-off-by: Galen Charlton --- C4/Circulation.pm | 24 +++++++++++++++---- circ/returns.pl | 3 +++ .../prog/en/modules/circ/returns.tt | 3 +++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 91ed2dbecd..39fbc68473 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1888,10 +1888,21 @@ sub AddReturn { defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $item->{itemnumber}...) failed!"; # zero is OK, check defined if ( $issue->{overdue} && $issue->{date_due} ) { -# fix fine days - my $debardate = - _debar_user_on_return( $borrower, $item, $issue->{date_due}, $today ); - $messages->{Debarred} = $debardate if ($debardate); + # fix fine days + my ($debardate,$reminder) = _debar_user_on_return( $borrower, $item, $issue->{date_due}, $today ); + if ($reminder){ + $messages->{'PrevDebarred'} = $debardate; + } else { + $messages->{'Debarred'} = $debardate if $debardate; + } + # there's no overdue on the item but borrower had been previously debarred + } elsif ( $issue->{date_due} and $borrower->{'debarred'} ) { + my $borrower_debar_dt = dt_from_string( $borrower->{debarred} ); + $borrower_debar_dt->truncate(to => 'day'); + my $today_dt = $today->clone()->truncate(to => 'day'); + if ( DateTime->compare( $borrower_debar_dt, $today_dt ) != -1 ) { + $messages->{'PrevDebarred'} = $borrower->{'debarred'}; + } } } @@ -2083,7 +2094,10 @@ sub _debar_user_on_return { expiration => $new_debar_dt->ymd(), type => 'SUSPENSION', }); - + # if borrower was already debarred but does not get an extra debarment + if ( $borrower->{debarred} eq Koha::Borrower::Debarments::IsDebarred($borrower->{borrowernumber}) ) { + return ($borrower->{debarred},1); + } return $new_debar_dt->ymd(); } } diff --git a/circ/returns.pl b/circ/returns.pl index 004fc507d1..6daddc4c54 100755 --- a/circ/returns.pl +++ b/circ/returns.pl @@ -501,6 +501,9 @@ foreach my $code ( keys %$messages ) { $err{debarborrowernumber} = $borrower->{borrowernumber}; $err{debarname} = "$borrower->{firstname} $borrower->{surname}"; } + elsif ( $code eq 'PrevDebarred' ) { + $err{prevdebarred} = $messages->{'PrevDebarred'}; + } 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 diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt index 1fa1e1477b..2e4810676e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt @@ -402,6 +402,9 @@ $(document).ready(function () { [% IF ( errmsgloo.debarred ) %]

[% errmsgloo.debarname %]([% errmsgloo.debarcardnumber %]) is now debarred until [% errmsgloo.debarred | $KohaDates %]

[% END %] + [% IF ( errmsgloo.prevdebarred ) %] +

Reminder: Patron was earlier restricted until [% errmsgloo.prevdebarred | $KohaDates %]

+ [% END %] [% END %] [% IF ( soundon ) %] -- 2.39.5