bug 2582 [1/2]: don't set issuedate during renewal
Changed so that issues.issuedate is never modified during a renewal, since that column records the original date of the loan. Changed the name and interpretation of the $issuedate parameter of AddRenewal() to $lastreneweddate, allowing (e.g.) offline circulation to set the date of the renewal without changing the issue date. As a result of the original bug, issues.issuedate can be set to NULL for loans that were renewed via the OPAC, self checkout, or the staff interface when explicitly renewing a loan. Loans that were renewed by checking the item out to the same patron will have the issue date changed to the date of the last renewal. Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This commit is contained in:
parent
07e30920c3
commit
69781fbe8b
|
|
@ -882,7 +882,7 @@ sub AddIssue {
|
|||
$item->{'itemnumber'},
|
||||
$branch,
|
||||
$datedue,
|
||||
$issuedate,
|
||||
$issuedate, # here interpreted as the renewal date
|
||||
);
|
||||
|
||||
}
|
||||
|
|
@ -1934,7 +1934,7 @@ sub CanBookBeRenewed {
|
|||
|
||||
=head2 AddRenewal
|
||||
|
||||
&AddRenewal($borrowernumber, $itemnumber, $branch, [$datedue], [$issuedate]);
|
||||
&AddRenewal($borrowernumber, $itemnumber, $branch, [$datedue], [$lastreneweddate]);
|
||||
|
||||
Renews a loan.
|
||||
|
||||
|
|
@ -1947,7 +1947,8 @@ C<$branch> is the library branch. Defaults to the homebranch of the ITEM.
|
|||
|
||||
C<$datedue> can be a C4::Dates object used to set the due date.
|
||||
|
||||
C<$issuedate> can be a iso formatted date to use for the issuedate.
|
||||
C<$lastreneweddate> is an optional ISO-formatted date used to set issues.lastreneweddate. If
|
||||
this parameter is not supplied, lastreneweddate is set to the current date.
|
||||
|
||||
If C<$datedue> is the empty string, C<&AddRenewal> will calculate the due date automatically
|
||||
from the book's item type.
|
||||
|
|
@ -1961,7 +1962,8 @@ sub AddRenewal {
|
|||
my $biblio = GetBiblioFromItemNumber($itemnumber) or return undef;
|
||||
my $branch = (@_) ? shift : $item->{homebranch}; # opac-renew doesn't send branch
|
||||
my $datedue = shift;
|
||||
my $issuedate = shift;
|
||||
my $lastreneweddate = shift;
|
||||
|
||||
# If the due date wasn't specified, calculate it by adding the
|
||||
# book's loan length to today's date.
|
||||
unless ($datedue && $datedue->output('iso')) {
|
||||
|
|
@ -1977,6 +1979,11 @@ sub AddRenewal {
|
|||
# The question of whether to use item's homebranch calendar is open.
|
||||
}
|
||||
|
||||
# $lastreneweddate defaults to today.
|
||||
unless (defined $lastreneweddate) {
|
||||
$lastreneweddate = strftime( "%Y-%m-%d", localtime );
|
||||
}
|
||||
|
||||
my $dbh = C4::Context->dbh;
|
||||
# Find the issues record for this book
|
||||
my $sth =
|
||||
|
|
@ -1991,11 +1998,11 @@ sub AddRenewal {
|
|||
# Update the issues record to have the new due date, and a new count
|
||||
# of how many times it has been renewed.
|
||||
my $renews = $issuedata->{'renewals'} + 1;
|
||||
$sth = $dbh->prepare("UPDATE issues SET date_due = ?, renewals = ?, lastreneweddate = CURRENT_DATE, issuedate = ?
|
||||
$sth = $dbh->prepare("UPDATE issues SET date_due = ?, renewals = ?, lastreneweddate = ?
|
||||
WHERE borrowernumber=?
|
||||
AND itemnumber=?"
|
||||
);
|
||||
$sth->execute( $datedue->output('iso'), $renews, $issuedate, $borrowernumber, $itemnumber );
|
||||
$sth->execute( $datedue->output('iso'), $renews, $lastreneweddate, $borrowernumber, $itemnumber );
|
||||
$sth->finish;
|
||||
|
||||
# Update the renewal count on the item, and tell zebra to reindex
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ sub set_issuedate : Test( 7 ) {
|
|||
is( $loanlength, $self->{'loanlength'} );
|
||||
}
|
||||
|
||||
sub set_issuedate_on_renewal : Test( 6 ) {
|
||||
sub set_lastreneweddate_on_renewal : Test( 6 ) {
|
||||
my $self = shift;
|
||||
|
||||
my $before_issues = C4::Circulation::GetItemIssue( $self->{'items'}[0]{'itemnumber'} );
|
||||
|
|
@ -112,7 +112,7 @@ sub set_issuedate_on_renewal : Test( 6 ) {
|
|||
my $after_issues = C4::Circulation::GetItemIssue( $self->{'items'}[0]{'itemnumber'} );
|
||||
is( $after_issues->{'borrowernumber'}, $self->{'memberid'}, 'We found this item checked out to our member.' )
|
||||
or diag( Data::Dumper->Dump( [ $after_issues ], [ 'issues' ] ) );
|
||||
is( $after_issues->{'issuedate'}, $issuedate, "...and it was issued on $issuedate" )
|
||||
is( $after_issues->{'lastreneweddate'}, $issuedate, "...and it was renewed on $issuedate" )
|
||||
or diag( Data::Dumper->Dump( [ $after_issues ], [ 'after_issues' ] ) );
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue