|
Lines 60-65
BEGIN {
Link Here
|
| 60 |
push @EXPORT, qw( |
60 |
push @EXPORT, qw( |
| 61 |
&FixOverduesOnReturn |
61 |
&FixOverduesOnReturn |
| 62 |
&barcodedecode |
62 |
&barcodedecode |
|
|
63 |
GetRenewalDetails |
| 63 |
); |
64 |
); |
| 64 |
|
65 |
|
| 65 |
# subs to deal with issuing a book |
66 |
# subs to deal with issuing a book |
|
Lines 2148-2161
from the book's item type.
Link Here
|
| 2148 |
=cut |
2149 |
=cut |
| 2149 |
|
2150 |
|
| 2150 |
sub AddRenewal { |
2151 |
sub AddRenewal { |
| 2151 |
my $borrowernumber = shift or return undef; |
2152 |
my $borrowernumber = shift or return undef; |
| 2152 |
my $itemnumber = shift or return undef; |
2153 |
my $itemnumber = shift or return undef; |
| 2153 |
my $branch = shift; |
2154 |
|
| 2154 |
my $datedue = shift; |
|
|
| 2155 |
my $lastreneweddate = shift || C4::Dates->new()->output('iso'); |
| 2156 |
my $item = GetItem($itemnumber) or return undef; |
2155 |
my $item = GetItem($itemnumber) or return undef; |
| 2157 |
my $biblio = GetBiblioFromItemNumber($itemnumber) or return undef; |
2156 |
my $biblio = GetBiblioFromItemNumber($itemnumber) or return undef; |
| 2158 |
|
2157 |
my $branch = (@_) ? shift : $item->{homebranch}; # opac-renew doesn't send branch |
|
|
2158 |
my $datedue = shift; |
| 2159 |
my $lastreneweddate = shift; |
| 2160 |
my $source = shift; |
| 2159 |
my $dbh = C4::Context->dbh; |
2161 |
my $dbh = C4::Context->dbh; |
| 2160 |
# Find the issues record for this book |
2162 |
# Find the issues record for this book |
| 2161 |
my $sth = |
2163 |
my $sth = |
|
Lines 2166-2190
sub AddRenewal {
Link Here
|
| 2166 |
$sth->execute( $borrowernumber, $itemnumber ); |
2168 |
$sth->execute( $borrowernumber, $itemnumber ); |
| 2167 |
my $issuedata = $sth->fetchrow_hashref; |
2169 |
my $issuedata = $sth->fetchrow_hashref; |
| 2168 |
$sth->finish; |
2170 |
$sth->finish; |
| 2169 |
if($datedue && ! $datedue->output('iso')){ |
2171 |
|
| 2170 |
warn "Invalid date passed to AddRenewal."; |
|
|
| 2171 |
return undef; |
| 2172 |
} |
| 2173 |
# If the due date wasn't specified, calculate it by adding the |
2172 |
# If the due date wasn't specified, calculate it by adding the |
| 2174 |
# book's loan length to today's date or the current due date |
2173 |
# book's loan length to today's date. |
| 2175 |
# based on the value of the RenewalPeriodBase syspref. |
2174 |
unless ($datedue && $datedue->output('iso')) { |
| 2176 |
unless ($datedue) { |
|
|
| 2177 |
|
2175 |
|
| 2178 |
my $borrower = C4::Members::GetMemberDetails( $borrowernumber, 0 ) or return undef; |
2176 |
my $borrower = C4::Members::GetMemberDetails( $borrowernumber, 0 ) or return undef; |
| 2179 |
my $loanlength = GetLoanLength( |
2177 |
my $loanlength = GetLoanLength( |
| 2180 |
$borrower->{'categorycode'}, |
2178 |
$borrower->{'categorycode'}, |
| 2181 |
(C4::Context->preference('item-level_itypes')) ? $biblio->{'itype'} : $biblio->{'itemtype'} , |
2179 |
(C4::Context->preference('item-level_itypes')) ? $biblio->{'itype'} : $biblio->{'itemtype'} , |
| 2182 |
$issuedata->{'branchcode'} ); # that's the circ control branch. |
2180 |
$item->{homebranch} # item's homebranch determines loanlength OR do we want the branch specified by the AddRenewal argument? |
| 2183 |
|
2181 |
); |
|
|
2182 |
#FIXME -- use circControl? |
| 2184 |
$datedue = (C4::Context->preference('RenewalPeriodBase') eq 'date_due') ? |
2183 |
$datedue = (C4::Context->preference('RenewalPeriodBase') eq 'date_due') ? |
| 2185 |
C4::Dates->new($issuedata->{date_due}, 'iso') : |
2184 |
C4::Dates->new($issuedata->{date_due}, 'iso') : |
| 2186 |
C4::Dates->new(); |
2185 |
C4::Dates->new(); |
| 2187 |
$datedue = CalcDateDue($datedue,$loanlength,$issuedata->{'branchcode'},$borrower); |
2186 |
$datedue = CalcDateDue(C4::Dates->new(),$loanlength,$branch); # this branch is the transactional branch. |
|
|
2187 |
# The question of whether to use item's homebranch calendar is open. |
| 2188 |
} |
| 2189 |
|
| 2190 |
# $lastreneweddate defaults to today. |
| 2191 |
unless (defined $lastreneweddate) { |
| 2192 |
$lastreneweddate = strftime( "%Y-%m-%d", localtime ); |
| 2193 |
} |
| 2194 |
|
| 2195 |
if($datedue && ! $datedue->output('iso')){ |
| 2196 |
warn "Invalid date passed to AddRenewal."; |
| 2197 |
return undef; |
| 2188 |
} |
2198 |
} |
| 2189 |
|
2199 |
|
| 2190 |
# Update the issues record to have the new due date, and a new count |
2200 |
# Update the issues record to have the new due date, and a new count |
|
Lines 2221-2227
sub AddRenewal {
Link Here
|
| 2221 |
$sth->finish; |
2231 |
$sth->finish; |
| 2222 |
} |
2232 |
} |
| 2223 |
# Log the renewal |
2233 |
# Log the renewal |
| 2224 |
UpdateStats( $branch, 'renew', $charge, '', $itemnumber, $item->{itype}, $borrowernumber); |
2234 |
UpdateStats( $branch, 'renew', $charge, $source, $itemnumber, $item->{itype}, $borrowernumber); |
| 2225 |
return $datedue; |
2235 |
return $datedue; |
| 2226 |
} |
2236 |
} |
| 2227 |
|
2237 |
|
|
Lines 2397-2402
sub GetTransfersFromTo {
Link Here
|
| 2397 |
return (@gettransfers); |
2407 |
return (@gettransfers); |
| 2398 |
} |
2408 |
} |
| 2399 |
|
2409 |
|
|
|
2410 |
=head2 GetRenewalDetails |
| 2411 |
|
| 2412 |
( $intranet_renewals, $opac_renewals ) = GetRenewalDetails( $itemnumber, $renewals_limit ); |
| 2413 |
|
| 2414 |
Returns the number of renewals through intranet and opac for the given itemnumber, limited by $renewals_limit |
| 2415 |
|
| 2416 |
=cut |
| 2417 |
|
| 2418 |
sub GetRenewalDetails { |
| 2419 |
my ( $itemnumber, $renewals_limit ) = @_; |
| 2420 |
my $dbh = C4::Context->dbh; |
| 2421 |
my $query = "SELECT * FROM statistics WHERE type = 'renew' AND itemnumber = ? ORDER BY datetime DESC LIMIT ?"; |
| 2422 |
my $sth = $dbh->prepare($query); |
| 2423 |
$sth->execute( $itemnumber, $renewals_limit ); |
| 2424 |
|
| 2425 |
my $renewals_intranet = 0; |
| 2426 |
my $renewals_opac = 0; |
| 2427 |
|
| 2428 |
while ( my $data = $sth->fetchrow_hashref ) { |
| 2429 |
if ( $data->{'other'} eq 'opac' ) { |
| 2430 |
$renewals_opac++; |
| 2431 |
} else { |
| 2432 |
$renewals_intranet++; |
| 2433 |
} |
| 2434 |
} |
| 2435 |
|
| 2436 |
return ( $renewals_intranet, $renewals_opac ); |
| 2437 |
} |
| 2438 |
|
| 2400 |
=head2 DeleteTransfer |
2439 |
=head2 DeleteTransfer |
| 2401 |
|
2440 |
|
| 2402 |
&DeleteTransfer($itemnumber); |
2441 |
&DeleteTransfer($itemnumber); |