$needsconfirmation{PATRON_CANT} = 1;
} else {
if($max_loans_allowed){
- $needsconfirmation{TOO_MANY} = 1;
- $needsconfirmation{current_loan_count} = $current_loan_count;
- $needsconfirmation{max_loans_allowed} = $max_loans_allowed;
+ if ( C4::Context->preference("AllowTooManyOverride") ) {
+ $needsconfirmation{TOO_MANY} = 1;
+ $needsconfirmation{current_loan_count} = $current_loan_count;
+ $needsconfirmation{max_loans_allowed} = $max_loans_allowed;
+ } else {
+ $issuingimpossible{TOO_MANY} = 1;
+ $issuingimpossible{current_loan_count} = $current_loan_count;
+ $issuingimpossible{max_loans_allowed} = $max_loans_allowed;
+ }
}
}
$needsconfirmation{ITEM_LOST} = $code if ( C4::Context->preference("IssueLostItem") eq 'confirm' );
$alerts{ITEM_LOST} = $code if ( C4::Context->preference("IssueLostItem") eq 'alert' );
}
- if ( C4::Context->preference("IndependantBranches") ) {
+ if ( C4::Context->preference("IndependentBranches") ) {
my $userenv = C4::Context->userenv;
if ( ($userenv) && ( $userenv->{flags} % 2 != 1 ) ) {
- $issuingimpossible{ITEMNOTSAMEBRANCH} = 1
- if ( $item->{C4::Context->preference("HomeOrHoldingBranch")} ne $userenv->{branch} );
+ if ( $item->{C4::Context->preference("HomeOrHoldingBranch")} ne $userenv->{branch} ){
+ $issuingimpossible{ITEMNOTSAMEBRANCH} = 1;
+ $issuingimpossible{'itemhomebranch'} = $item->{C4::Context->preference("HomeOrHoldingBranch")};
+ }
$needsconfirmation{BORRNOTSAMEBRANCH} = GetBranchName( $borrower->{'branchcode'} )
if ( $borrower->{'branchcode'} ne $userenv->{branch} );
}
}
if ($borrowernumber) {
- if($issue->{'overdue'}){
- my ( $amount, $type, $unitcounttotal ) = C4::Overdues::CalcFine( $item, $borrower->{categorycode},$branch, $datedue, $today );
+ if( C4::Context->preference('CalculateFinesOnReturn') && $issue->{'overdue'}){
+ # we only need to calculate and change the fines if we want to do that on return
+ # Should be on for hourly loans
+ my $control = C4::Context->preference('CircControl');
+ my $control_branchcode =
+ ( $control eq 'ItemHomeLibrary' ) ? $item->{homebranch}
+ : ( $control eq 'PatronLibrary' ) ? $borrower->{branchcode}
+ : $issue->{branchcode};
+
+ my ( $amount, $type, $unitcounttotal ) =
+ C4::Overdues::CalcFine( $item, $borrower->{categorycode},
+ $control_branchcode, $datedue, $today );
+
$type ||= q{};
- if ( $amount > 0 && ( C4::Context->preference('finesMode') eq 'production' )) {
- C4::Overdues::UpdateFine(
- $issue->{itemnumber},
- $issue->{borrowernumber},
- $amount, $type, output_pref($datedue)
- );
- }
+
+ if ( $amount > 0
+ && C4::Context->preference('finesMode') eq 'production' )
+ {
+ C4::Overdues::UpdateFine( $issue->{itemnumber},
+ $issue->{borrowernumber},
+ $amount, $type, output_pref($datedue) );
+ }
}
- MarkIssueReturned($borrowernumber, $item->{'itemnumber'}, $circControlBranch, '', $borrower->{'privacy'});
- $messages->{'WasReturned'} = 1; # FIXME is the "= 1" right? This could be the borrower hash.
+
+ MarkIssueReturned( $borrowernumber, $item->{'itemnumber'},
+ $circControlBranch, '', $borrower->{'privacy'} );
+
+ # FIXME is the "= 1" right? This could be the borrower hash.
+ $messages->{'WasReturned'} = 1;
+
}
ModItem({ onloan => undef }, $issue->{'biblionumber'}, $item->{'itemnumber'});
if ( $privacy == 2) {
# The default of 0 does not work due to foreign key constraints
# The anonymisation will fail quietly if AnonymousPatron is not a valid entry
+ # FIXME the above is unacceptable - bug 9942 relates
my $anonymouspatron = (C4::Context->preference('AnonymousPatron')) ? C4::Context->preference('AnonymousPatron') : 0;
my $sth_ano = $dbh->prepare("UPDATE old_issues SET borrowernumber=?
WHERE borrowernumber = ?
FROM issues
LEFT JOIN items USING (itemnumber)
LEFT OUTER JOIN branches USING (branchcode)
-WhERE returndate is NULL
-AND ( TO_DAYS( NOW() )-TO_DAYS( date_due ) ) < ?
+WHERE returndate is NULL
+HAVING days_until_due > 0 AND days_until_due < ?
END_SQL
my @bind_parameters = ( $params->{'days_in_advance'} );
$error = "too_many";
}
- my $resstatus = C4::Reserves::GetReserveStatus($itemnumber);
- if ( $resstatus eq "Waiting" or $resstatus eq "Reserved" ) {
+ my ( $resfound, $resrec, undef ) = C4::Reserves::CheckReserves( $itemnumber );
+
+ if ( $resfound ) { # '' when no hold was found
$renewokay = 0;
$error = "on_reserve";
}
=head2 AnonymiseIssueHistory
- $rows = AnonymiseIssueHistory($date,$borrowernumber)
+ ($rows,$err_history_not_deleted) = AnonymiseIssueHistory($date,$borrowernumber)
This function write NULL instead of C<$borrowernumber> given on input arg into the table issues.
if C<$borrowernumber> is not set, it will delete the issue history for all borrower older than C<$date>.
If c<$borrowernumber> is set, it will delete issue history for only that borrower, regardless of their opac privacy
setting (force delete).
-return the number of affected rows.
+return the number of affected rows and a value that evaluates to true if an error occurred deleting the history.
=cut
}
my $sth = $dbh->prepare($query);
$sth->execute(@bind_params);
+ my $anonymisation_err = $dbh->err;
my $rows_affected = $sth->rows; ### doublecheck row count return function
- return $rows_affected;
+ return ($rows_affected, $anonymisation_err);
}
=head2 SendCirculationAlert