|
Lines 3413-3418
C<$patron> is the patron who currently has the item on loan.
Link Here
|
| 3413 |
|
3413 |
|
| 3414 |
C<$issue> is the the item issue. |
3414 |
C<$issue> is the the item issue. |
| 3415 |
|
3415 |
|
|
|
3416 |
C<$is_auto> is this soonest renew date for an auto renewal? |
| 3417 |
|
| 3416 |
C<$GetSoonestRenewDate> returns the DateTime of the soonest possible |
3418 |
C<$GetSoonestRenewDate> returns the DateTime of the soonest possible |
| 3417 |
renew date, based on the value "No renewal before" of the applicable |
3419 |
renew date, based on the value "No renewal before" of the applicable |
| 3418 |
issuing rule. Returns the current date if the item can already be |
3420 |
issuing rule. Returns the current date if the item can already be |
|
Lines 3422-3434
cannot be found.
Link Here
|
| 3422 |
=cut |
3424 |
=cut |
| 3423 |
|
3425 |
|
| 3424 |
sub GetSoonestRenewDate { |
3426 |
sub GetSoonestRenewDate { |
| 3425 |
my ( $patron, $issue ) = @_; |
3427 |
my ( $patron, $issue, $is_auto ) = @_; |
| 3426 |
return unless $issue; |
3428 |
return unless $issue; |
| 3427 |
return unless $patron; |
3429 |
return unless $patron; |
| 3428 |
|
3430 |
|
| 3429 |
my $item = $issue->item; |
3431 |
my $item = $issue->item; |
| 3430 |
return unless $item; |
3432 |
return unless $item; |
| 3431 |
|
3433 |
|
|
|
3434 |
my $circ_rule = $is_auto ? 'noautorenewalbefore' : 'norenewalbefore'; |
| 3435 |
|
| 3432 |
my $dbh = C4::Context->dbh; |
3436 |
my $dbh = C4::Context->dbh; |
| 3433 |
|
3437 |
|
| 3434 |
my $branchcode = _GetCircControlBranch( $item->unblessed, $patron->unblessed ); |
3438 |
my $branchcode = _GetCircControlBranch( $item->unblessed, $patron->unblessed ); |
|
Lines 3437-3443
sub GetSoonestRenewDate {
Link Here
|
| 3437 |
itemtype => $item->effective_itemtype, |
3441 |
itemtype => $item->effective_itemtype, |
| 3438 |
branchcode => $branchcode, |
3442 |
branchcode => $branchcode, |
| 3439 |
rules => [ |
3443 |
rules => [ |
| 3440 |
'norenewalbefore', |
3444 |
$circ_rule, |
| 3441 |
'lengthunit', |
3445 |
'lengthunit', |
| 3442 |
] |
3446 |
] |
| 3443 |
} |
3447 |
} |
|
Lines 3445-3456
sub GetSoonestRenewDate {
Link Here
|
| 3445 |
|
3449 |
|
| 3446 |
my $now = dt_from_string; |
3450 |
my $now = dt_from_string; |
| 3447 |
|
3451 |
|
| 3448 |
if ( defined $issuing_rule->{norenewalbefore} |
3452 |
if ( defined $issuing_rule->{$circ_rule} |
| 3449 |
and $issuing_rule->{norenewalbefore} ne "" ) |
3453 |
and $issuing_rule->{$circ_rule} ne "" ) |
| 3450 |
{ |
3454 |
{ |
| 3451 |
my $soonestrenewal = |
3455 |
my $soonestrenewal = |
| 3452 |
dt_from_string( $issue->date_due )->subtract( |
3456 |
dt_from_string( $issue->date_due )->subtract( |
| 3453 |
$issuing_rule->{lengthunit} => $issuing_rule->{norenewalbefore} ); |
3457 |
$issuing_rule->{lengthunit} => $issuing_rule->{$circ_rule} ); |
| 3454 |
|
3458 |
|
| 3455 |
if ( C4::Context->preference('NoRenewalBeforePrecision') eq 'date' |
3459 |
if ( C4::Context->preference('NoRenewalBeforePrecision') eq 'date' |
| 3456 |
and $issuing_rule->{lengthunit} eq 'days' ) |
3460 |
and $issuing_rule->{lengthunit} eq 'days' ) |
|
Lines 3458-3465
sub GetSoonestRenewDate {
Link Here
|
| 3458 |
$soonestrenewal->truncate( to => 'day' ); |
3462 |
$soonestrenewal->truncate( to => 'day' ); |
| 3459 |
} |
3463 |
} |
| 3460 |
return $soonestrenewal if $now < $soonestrenewal; |
3464 |
return $soonestrenewal if $now < $soonestrenewal; |
| 3461 |
} elsif ( $issue->auto_renew && $patron->autorenew_checkouts ) { |
3465 |
} elsif ( $is_auto && $issue->auto_renew && $patron->autorenew_checkouts ) { |
| 3462 |
# Checkouts with auto-renewing fall back to due date |
3466 |
# Checkouts with auto-renewing fall back to due date if noautorenewalbefore is undef |
| 3463 |
my $soonestrenewal = dt_from_string( $issue->date_due ); |
3467 |
my $soonestrenewal = dt_from_string( $issue->date_due ); |
| 3464 |
if ( C4::Context->preference('NoRenewalBeforePrecision') eq 'date' |
3468 |
if ( C4::Context->preference('NoRenewalBeforePrecision') eq 'date' |
| 3465 |
and $issuing_rule->{lengthunit} eq 'days' ) |
3469 |
and $issuing_rule->{lengthunit} eq 'days' ) |
|
Lines 4552-4558
sub _CanBookBeAutoRenewed {
Link Here
|
| 4552 |
} |
4556 |
} |
| 4553 |
} |
4557 |
} |
| 4554 |
|
4558 |
|
| 4555 |
my $soonest = GetSoonestRenewDate($patron, $issue); |
4559 |
my $soonest = GetSoonestRenewDate( $patron, $issue, 1 ); |
| 4556 |
if ( $soonest > dt_from_string() ) |
4560 |
if ( $soonest > dt_from_string() ) |
| 4557 |
{ |
4561 |
{ |
| 4558 |
return ( "auto_too_soon", $soonest ); |
4562 |
return ( "auto_too_soon", $soonest ); |
| 4559 |
- |
|
|