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); |