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 2161-2174
from the book's item type.
Link Here
|
2161 |
=cut |
2162 |
=cut |
2162 |
|
2163 |
|
2163 |
sub AddRenewal { |
2164 |
sub AddRenewal { |
2164 |
my $borrowernumber = shift or return undef; |
2165 |
my $borrowernumber = shift or return undef; |
2165 |
my $itemnumber = shift or return undef; |
2166 |
my $itemnumber = shift or return undef; |
2166 |
my $branch = shift; |
2167 |
|
2167 |
my $datedue = shift; |
|
|
2168 |
my $lastreneweddate = shift || C4::Dates->new()->output('iso'); |
2169 |
my $item = GetItem($itemnumber) or return undef; |
2168 |
my $item = GetItem($itemnumber) or return undef; |
2170 |
my $biblio = GetBiblioFromItemNumber($itemnumber) or return undef; |
2169 |
my $biblio = GetBiblioFromItemNumber($itemnumber) or return undef; |
2171 |
|
2170 |
my $branch = (@_) ? shift : $item->{homebranch}; # opac-renew doesn't send branch |
|
|
2171 |
my $datedue = shift; |
2172 |
my $lastreneweddate = shift; |
2173 |
my $source = shift; |
2172 |
my $dbh = C4::Context->dbh; |
2174 |
my $dbh = C4::Context->dbh; |
2173 |
# Find the issues record for this book |
2175 |
# Find the issues record for this book |
2174 |
my $sth = |
2176 |
my $sth = |
Lines 2179-2203
sub AddRenewal {
Link Here
|
2179 |
$sth->execute( $borrowernumber, $itemnumber ); |
2181 |
$sth->execute( $borrowernumber, $itemnumber ); |
2180 |
my $issuedata = $sth->fetchrow_hashref; |
2182 |
my $issuedata = $sth->fetchrow_hashref; |
2181 |
$sth->finish; |
2183 |
$sth->finish; |
2182 |
if($datedue && ! $datedue->output('iso')){ |
2184 |
|
2183 |
warn "Invalid date passed to AddRenewal."; |
|
|
2184 |
return undef; |
2185 |
} |
2186 |
# If the due date wasn't specified, calculate it by adding the |
2185 |
# If the due date wasn't specified, calculate it by adding the |
2187 |
# book's loan length to today's date or the current due date |
2186 |
# book's loan length to today's date. |
2188 |
# based on the value of the RenewalPeriodBase syspref. |
2187 |
unless ($datedue && $datedue->output('iso')) { |
2189 |
unless ($datedue) { |
|
|
2190 |
|
2188 |
|
2191 |
my $borrower = C4::Members::GetMemberDetails( $borrowernumber, 0 ) or return undef; |
2189 |
my $borrower = C4::Members::GetMemberDetails( $borrowernumber, 0 ) or return undef; |
2192 |
my $loanlength = GetLoanLength( |
2190 |
my $loanlength = GetLoanLength( |
2193 |
$borrower->{'categorycode'}, |
2191 |
$borrower->{'categorycode'}, |
2194 |
(C4::Context->preference('item-level_itypes')) ? $biblio->{'itype'} : $biblio->{'itemtype'} , |
2192 |
(C4::Context->preference('item-level_itypes')) ? $biblio->{'itype'} : $biblio->{'itemtype'} , |
2195 |
$issuedata->{'branchcode'} ); # that's the circ control branch. |
2193 |
$item->{homebranch} # item's homebranch determines loanlength OR do we want the branch specified by the AddRenewal argument? |
2196 |
|
2194 |
); |
|
|
2195 |
#FIXME -- use circControl? |
2197 |
$datedue = (C4::Context->preference('RenewalPeriodBase') eq 'date_due') ? |
2196 |
$datedue = (C4::Context->preference('RenewalPeriodBase') eq 'date_due') ? |
2198 |
C4::Dates->new($issuedata->{date_due}, 'iso') : |
2197 |
C4::Dates->new($issuedata->{date_due}, 'iso') : |
2199 |
C4::Dates->new(); |
2198 |
C4::Dates->new(); |
2200 |
$datedue = CalcDateDue($datedue,$loanlength,$issuedata->{'branchcode'},$borrower); |
2199 |
$datedue = CalcDateDue(C4::Dates->new(),$loanlength,$branch); # this branch is the transactional branch. |
|
|
2200 |
# The question of whether to use item's homebranch calendar is open. |
2201 |
} |
2202 |
|
2203 |
# $lastreneweddate defaults to today. |
2204 |
unless (defined $lastreneweddate) { |
2205 |
$lastreneweddate = strftime( "%Y-%m-%d", localtime ); |
2206 |
} |
2207 |
|
2208 |
if($datedue && ! $datedue->output('iso')){ |
2209 |
warn "Invalid date passed to AddRenewal."; |
2210 |
return undef; |
2201 |
} |
2211 |
} |
2202 |
|
2212 |
|
2203 |
# Update the issues record to have the new due date, and a new count |
2213 |
# Update the issues record to have the new due date, and a new count |
Lines 2234-2240
sub AddRenewal {
Link Here
|
2234 |
$sth->finish; |
2244 |
$sth->finish; |
2235 |
} |
2245 |
} |
2236 |
# Log the renewal |
2246 |
# Log the renewal |
2237 |
UpdateStats( $branch, 'renew', $charge, '', $itemnumber, $item->{itype}, $borrowernumber); |
2247 |
UpdateStats( $branch, 'renew', $charge, $source, $itemnumber, $item->{itype}, $borrowernumber); |
2238 |
return $datedue; |
2248 |
return $datedue; |
2239 |
} |
2249 |
} |
2240 |
|
2250 |
|
Lines 2410-2415
sub GetTransfersFromTo {
Link Here
|
2410 |
return (@gettransfers); |
2420 |
return (@gettransfers); |
2411 |
} |
2421 |
} |
2412 |
|
2422 |
|
|
|
2423 |
=head2 GetRenewalDetails |
2424 |
|
2425 |
( $intranet_renewals, $opac_renewals ) = GetRenewalDetails( $itemnumber, $renewals_limit ); |
2426 |
|
2427 |
Returns the number of renewals through intranet and opac for the given itemnumber, limited by $renewals_limit |
2428 |
|
2429 |
=cut |
2430 |
|
2431 |
sub GetRenewalDetails { |
2432 |
my ( $itemnumber, $renewals_limit ) = @_; |
2433 |
my $dbh = C4::Context->dbh; |
2434 |
my $query = "SELECT * FROM statistics WHERE type = 'renew' AND itemnumber = ? ORDER BY datetime DESC LIMIT ?"; |
2435 |
my $sth = $dbh->prepare($query); |
2436 |
$sth->execute( $itemnumber, $renewals_limit ); |
2437 |
|
2438 |
my $renewals_intranet = 0; |
2439 |
my $renewals_opac = 0; |
2440 |
|
2441 |
while ( my $data = $sth->fetchrow_hashref ) { |
2442 |
if ( $data->{'other'} eq 'opac' ) { |
2443 |
$renewals_opac++; |
2444 |
} else { |
2445 |
$renewals_intranet++; |
2446 |
} |
2447 |
} |
2448 |
|
2449 |
return ( $renewals_intranet, $renewals_opac ); |
2450 |
} |
2451 |
|
2413 |
=head2 DeleteTransfer |
2452 |
=head2 DeleteTransfer |
2414 |
|
2453 |
|
2415 |
&DeleteTransfer($itemnumber); |
2454 |
&DeleteTransfer($itemnumber); |