View | Details | Raw Unified | Return to bug 3483
Collapse All | Expand All

(-)a/C4/Circulation.pm (-19 / +58 lines)
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);
(-)a/circ/circulation.pl (+4 lines)
Lines 454-459 if ($borrower) { Link Here
454
        ($it->{'author'} eq '') and $it->{'author'} = ' ';
454
        ($it->{'author'} eq '') and $it->{'author'} = ' ';
455
        $it->{'renew_failed'} = $renew_failed{$it->{'itemnumber'}};
455
        $it->{'renew_failed'} = $renew_failed{$it->{'itemnumber'}};
456
456
457
        if ( $it->{'renewals'} ) {
458
          ( $it->{'renewals_intranet'}, $it->{'renewals_opac'} ) = GetRenewalDetails( $it->{'itemnumber'}, $it->{'renewals'} );
459
        }
460
457
        if ( $todaysdate eq $it->{'issuedate'} or $todaysdate eq $it->{'lastreneweddate'} ) {
461
        if ( $todaysdate eq $it->{'issuedate'} or $todaysdate eq $it->{'lastreneweddate'} ) {
458
            push @todaysissues, $it;
462
            push @todaysissues, $it;
459
        } else {
463
        } else {
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl (-2 / +2 lines)
Lines 659-665 No patron matched <span class="ex"><!-- TMPL_VAR name="message" --></span> Link Here
659
      <!-- TMPL_IF NAME="renew_failed" -->
659
      <!-- TMPL_IF NAME="renew_failed" -->
660
            <td class="problem">Renewal Failed</td>
660
            <td class="problem">Renewal Failed</td>
661
      <!-- TMPL_ELSE -->
661
      <!-- TMPL_ELSE -->
662
        <td><span style="padding: 0 1em;"><!-- TMPL_IF NAME="renewals" --><!-- TMPL_VAR NAME="renewals" --><!-- TMPL_ELSE -->0<!-- /TMPL_IF --></span>
662
        <td><span style="padding: 0 1em;"><!-- TMPL_IF NAME="renewals" --><!-- TMPL_VAR NAME="renewals" --> <!-- TMPL_IF NAME="renewals_opac" -->( <!-- TMPL_VAR NAME="renewals_opac" --> via OPAC ) <!-- /TMPL_IF --><!-- TMPL_ELSE -->0<!-- /TMPL_IF --></span>
663
        <!-- TMPL_IF NAME="can_renew" -->
663
        <!-- TMPL_IF NAME="can_renew" -->
664
        <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
664
        <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
665
        <!-- TMPL_IF NAME="od" -->
665
        <!-- TMPL_IF NAME="od" -->
Lines 726-732 No patron matched <span class="ex"><!-- TMPL_VAR name="message" --></span> Link Here
726
      <!-- TMPL_IF NAME="renew_failed" -->
726
      <!-- TMPL_IF NAME="renew_failed" -->
727
            <td class="problem">Renewal Failed</td>
727
            <td class="problem">Renewal Failed</td>
728
      <!-- TMPL_ELSE -->
728
      <!-- TMPL_ELSE -->
729
        <td><span style="padding: 0 1em;"><!-- TMPL_IF NAME="renewals" --><!-- TMPL_VAR NAME="renewals" --><!-- TMPL_ELSE -->0<!-- /TMPL_IF --></span>
729
        <td><span style="padding: 0 1em;"><!-- TMPL_IF NAME="renewals" --><!-- TMPL_VAR NAME="renewals" --> <!-- TMPL_IF NAME="renewals_opac" -->( <!-- TMPL_VAR NAME="renewals_opac" --> via OPAC ) <!-- /TMPL_IF --><!-- TMPL_ELSE -->0<!-- /TMPL_IF --></span>
730
        <!-- TMPL_IF NAME="can_renew" -->
730
        <!-- TMPL_IF NAME="can_renew" -->
731
        <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
731
        <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
732
        <!-- TMPL_IF NAME="od" -->
732
        <!-- TMPL_IF NAME="od" -->
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl (-1 / +1 lines)
Lines 437-443 function validate1(date) { Link Here
437
      <!-- TMPL_IF NAME="renew_failed" -->
437
      <!-- TMPL_IF NAME="renew_failed" -->
438
            <td class="problem">Renewal Failed</td>
438
            <td class="problem">Renewal Failed</td>
439
      <!-- TMPL_ELSE -->
439
      <!-- TMPL_ELSE -->
440
            <td><span style="padding: 0 1em;"><!-- TMPL_IF NAME="renewals" --><!-- TMPL_VAR NAME="renewals" --><!-- TMPL_ELSE -->0<!-- /TMPL_IF --></span>
440
            <td><span style="padding: 0 1em;"><!-- TMPL_IF NAME="renewals" --><!-- TMPL_VAR NAME="renewals" --> <!-- TMPL_IF NAME="renewals_opac" -->( <!-- TMPL_VAR NAME="renewals_opac" --> via OPAC ) <!-- /TMPL_IF --><!-- TMPL_ELSE -->0<!-- /TMPL_IF --></span>
441
            <!-- TMPL_IF name="norenew" -->
441
            <!-- TMPL_IF name="norenew" -->
442
                <!-- TMPL_IF NAME="can_confirm" --><span class="renewals-allowed" style="display: none">
442
                <!-- TMPL_IF NAME="can_confirm" --><span class="renewals-allowed" style="display: none">
443
                    <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
443
                    <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
(-)a/members/moremember.pl (+5 lines)
Lines 291-296 for ( my $i = 0 ; $i < $issuecount ; $i++ ) { Link Here
291
291
292
    $row{'charge'} = sprintf( "%.2f", $charge );
292
    $row{'charge'} = sprintf( "%.2f", $charge );
293
293
294
    if ( $row{'renewals'} ) {
295
       ( $row{'renewals_intranet'}, $row{'renewals_opac'} ) = GetRenewalDetails( $row{'itemnumber'}, $row{'renewals'} );
296
    }
297
298
294
	my ( $renewokay,$renewerror ) = CanBookBeRenewed( $borrowernumber, $issue->[$i]{'itemnumber'}, $override_limit );
299
	my ( $renewokay,$renewerror ) = CanBookBeRenewed( $borrowernumber, $issue->[$i]{'itemnumber'}, $override_limit );
295
	$row{'norenew'} = !$renewokay;
300
	$row{'norenew'} = !$renewokay;
296
	$row{'can_confirm'} = ( !$renewokay && $renewerror ne 'on_reserve' );
301
	$row{'can_confirm'} = ( !$renewokay && $renewerror ne 'on_reserve' );
(-)a/opac/opac-renew.pl (-2 / +1 lines)
Lines 30-36 my $opacrenew = C4::Context->preference("OpacRenewalAllowed"); Link Here
30
for my $itemnumber ( @items ) {
30
for my $itemnumber ( @items ) {
31
    my ($status,$error) = CanBookBeRenewed( $borrowernumber, $itemnumber );
31
    my ($status,$error) = CanBookBeRenewed( $borrowernumber, $itemnumber );
32
    if ( $status == 1 && $opacrenew == 1 ) {
32
    if ( $status == 1 && $opacrenew == 1 ) {
33
        AddRenewal( $borrowernumber, $itemnumber );
33
        AddRenewal( $borrowernumber, $itemnumber, '', '', '', my $source = 'opac' );
34
    }
34
    }
35
}
35
}
36
# FIXME: else return ERROR to user!!
36
# FIXME: else return ERROR to user!!
37
- 

Return to bug 3483