From 492ff3a3c861b428313ed763c1775fc2d220fc5f Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Thu, 4 Sep 2008 12:23:46 -0500 Subject: [PATCH] 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 --- C4/Circulation.pm | 19 +++++++++++++------ t/lib/KohaTest/Circulation/AddIssue.pm | 4 ++-- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index da444a5371..4bb216eeb8 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -881,7 +881,7 @@ sub AddIssue { $item->{'itemnumber'}, $branch, $datedue, - $issuedate, + $issuedate, # here interpreted as the renewal date ); } @@ -1911,7 +1911,7 @@ sub CanBookBeRenewed { =head2 AddRenewal -&AddRenewal($borrowernumber, $itemnumber, $branch, [$datedue], [$issuedate]); +&AddRenewal($borrowernumber, $itemnumber, $branch, [$datedue], [$lastreneweddate]); Renews a loan. @@ -1924,7 +1924,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. @@ -1938,7 +1939,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')) { @@ -1954,6 +1956,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 = @@ -1968,11 +1975,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 diff --git a/t/lib/KohaTest/Circulation/AddIssue.pm b/t/lib/KohaTest/Circulation/AddIssue.pm index 4e02d16461..dde87e218a 100644 --- a/t/lib/KohaTest/Circulation/AddIssue.pm +++ b/t/lib/KohaTest/Circulation/AddIssue.pm @@ -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' ] ) ); } -- 2.39.5