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 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);
(-)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 664-670 No patron matched <span class="ex"><!-- TMPL_VAR name="message" --></span> Link Here
664
      <!-- TMPL_IF NAME="renew_failed" -->
664
      <!-- TMPL_IF NAME="renew_failed" -->
665
            <td class="problem">Renewal Failed</td>
665
            <td class="problem">Renewal Failed</td>
666
      <!-- TMPL_ELSE -->
666
      <!-- TMPL_ELSE -->
667
        <td><span style="padding: 0 1em;"><!-- TMPL_IF NAME="renewals" --><!-- TMPL_VAR NAME="renewals" --><!-- TMPL_ELSE -->0<!-- /TMPL_IF --></span>
667
        <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>
668
        <!-- TMPL_IF NAME="can_renew" -->
668
        <!-- TMPL_IF NAME="can_renew" -->
669
        <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
669
        <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
670
        <!-- TMPL_IF NAME="od" -->
670
        <!-- TMPL_IF NAME="od" -->
Lines 731-737 No patron matched <span class="ex"><!-- TMPL_VAR name="message" --></span> Link Here
731
      <!-- TMPL_IF NAME="renew_failed" -->
731
      <!-- TMPL_IF NAME="renew_failed" -->
732
            <td class="problem">Renewal Failed</td>
732
            <td class="problem">Renewal Failed</td>
733
      <!-- TMPL_ELSE -->
733
      <!-- TMPL_ELSE -->
734
        <td><span style="padding: 0 1em;"><!-- TMPL_IF NAME="renewals" --><!-- TMPL_VAR NAME="renewals" --><!-- TMPL_ELSE -->0<!-- /TMPL_IF --></span>
734
        <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>
735
        <!-- TMPL_IF NAME="can_renew" -->
735
        <!-- TMPL_IF NAME="can_renew" -->
736
        <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
736
        <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
737
        <!-- TMPL_IF NAME="od" -->
737
        <!-- TMPL_IF NAME="od" -->
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl (-1 / +1 lines)
Lines 442-448 function validate1(date) { Link Here
442
      <!-- TMPL_IF NAME="renew_failed" -->
442
      <!-- TMPL_IF NAME="renew_failed" -->
443
            <td class="problem">Renewal Failed</td>
443
            <td class="problem">Renewal Failed</td>
444
      <!-- TMPL_ELSE -->
444
      <!-- TMPL_ELSE -->
445
            <td><span style="padding: 0 1em;"><!-- TMPL_IF NAME="renewals" --><!-- TMPL_VAR NAME="renewals" --><!-- TMPL_ELSE -->0<!-- /TMPL_IF --></span>
445
            <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>
446
            <!-- TMPL_IF name="norenew" -->
446
            <!-- TMPL_IF name="norenew" -->
447
                <!-- TMPL_IF NAME="can_confirm" --><span class="renewals-allowed" style="display: none">
447
                <!-- TMPL_IF NAME="can_confirm" --><span class="renewals-allowed" style="display: none">
448
                    <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
448
                    <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
(-)a/members/moremember.pl (+5 lines)
Lines 296-301 for ( my $i = 0 ; $i < $issuecount ; $i++ ) { Link Here
296
296
297
    $row{'charge'} = sprintf( "%.2f", $charge );
297
    $row{'charge'} = sprintf( "%.2f", $charge );
298
298
299
    if ( $row{'renewals'} ) {
300
       ( $row{'renewals_intranet'}, $row{'renewals_opac'} ) = GetRenewalDetails( $row{'itemnumber'}, $row{'renewals'} );
301
    }
302
303
299
	my ( $renewokay,$renewerror ) = CanBookBeRenewed( $borrowernumber, $issue->[$i]{'itemnumber'}, $override_limit );
304
	my ( $renewokay,$renewerror ) = CanBookBeRenewed( $borrowernumber, $issue->[$i]{'itemnumber'}, $override_limit );
300
	$row{'norenew'} = !$renewokay;
305
	$row{'norenew'} = !$renewokay;
301
	$row{'can_confirm'} = ( !$renewokay && $renewerror ne 'on_reserve' );
306
	$row{'can_confirm'} = ( !$renewokay && $renewerror ne 'on_reserve' );
(-)a/opac/opac-renew.pl (-2 / +1 lines)
Lines 48-54 my $errorstring=''; Link Here
48
for my $itemnumber ( @items ) {
48
for my $itemnumber ( @items ) {
49
    my ($status,$error) = CanBookBeRenewed( $borrowernumber, $itemnumber );
49
    my ($status,$error) = CanBookBeRenewed( $borrowernumber, $itemnumber );
50
    if ( $status == 1 && $opacrenew == 1 ) {
50
    if ( $status == 1 && $opacrenew == 1 ) {
51
        AddRenewal( $borrowernumber, $itemnumber );
51
        AddRenewal( $borrowernumber, $itemnumber, '', '', '', my $source = 'opac' );
52
    }
52
    }
53
    else {
53
    else {
54
	$errorstring .= $error ."|";
54
	$errorstring .= $error ."|";
55
- 

Return to bug 3483