=cut
sub AddReturn {
- my ( $barcode, $branch, $exemptfine, $dropbox, $return_date, $dropboxdate ) = @_;
+ my ( $barcode, $branch, $exemptfine, $return_date ) = @_;
if ($branch and not Koha::Libraries->find($branch)) {
warn "AddReturn error: branch '$branch' not found. Reverting to " . C4::Context->userenv->{'branch'};
my $is_overdue;
die "The item is not issed and cannot be returned" unless $issue; # Just in case...
$patron or warn "AddReturn without current borrower";
- if ($dropbox) {
- $is_overdue = $issue->is_overdue( $dropboxdate );
- } else {
- $is_overdue = $issue->is_overdue;
- }
+ $is_overdue = $issue->is_overdue( $return_date );
if ($patron) {
eval {
- if ( $dropbox ) {
- MarkIssueReturned( $borrowernumber, $item->itemnumber,
- $dropboxdate, $patron->privacy );
- }
- else {
- MarkIssueReturned( $borrowernumber, $item->itemnumber,
- $return_date, $patron->privacy );
- }
+ MarkIssueReturned( $borrowernumber, $item->itemnumber, $return_date, $patron->privacy );
};
unless ( $@ ) {
- if ( ( C4::Context->preference('CalculateFinesOnReturn') && $is_overdue ) || $return_date ) {
+ if ( C4::Context->preference('CalculateFinesOnReturn') && $is_overdue ) {
_CalculateAndUpdateFine( { issue => $issue, item => $item_unblessed, borrower => $patron_unblessed, return_date => $return_date } );
}
} else {
# fix up the overdues in accounts...
if ($borrowernumber) {
- my $fix = _FixOverduesOnReturn($borrowernumber, $item->itemnumber, $exemptfine, $dropbox);
+ my $fix = _FixOverduesOnReturn( $borrowernumber, $item->itemnumber, $exemptfine );
defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $item->itemnumber...) failed!"; # zero is OK, check defined
if ( $issue and $issue->is_overdue ) {
# fix fine days
- $today = dt_from_string($return_date) if $return_date;
- $today = $dropboxdate if $dropbox;
+ $today = $return_date if $return_date;
my ($debardate,$reminder) = _debar_user_on_return( $patron_unblessed, $item_unblessed, dt_from_string($issue->date_due), $today );
if ($reminder){
$messages->{'PrevDebarred'} = $debardate;
=cut
sub _FixOverduesOnReturn {
- my ($borrowernumber, $item, $exemptfine, $dropbox ) = @_;
+ my ($borrowernumber, $item, $exemptfine ) = @_;
unless( $borrowernumber ) {
warn "_FixOverduesOnReturn() not supplied valid borrowernumber";
return;
if (C4::Context->preference("FinesLog")) {
&logaction("FINES", 'MODIFY',$borrowernumber,"Overdue forgiven: item $item");
}
- } elsif ($dropbox && $accountline->lastincrement) {
- my $outstanding = $accountline->amountoutstanding - $accountline->lastincrement;
- my $amt = $accountline->amount - $accountline->lastincrement;
-
- Koha::Account::Offset->new(
- {
- debit_id => $accountline->id,
- type => 'Dropbox',
- amount => $accountline->lastincrement * -1,
- }
- )->store();
-
- if ( C4::Context->preference("FinesLog") ) {
- &logaction( "FINES", 'MODIFY', $borrowernumber,
- "Dropbox adjustment $amt, item $item" );
- }
-
- $accountline->accounttype('F');
-
- if ( $outstanding >= 0 && $amt >= 0 ) {
- $accountline->amount($amt);
- $accountline->amountoutstanding($outstanding);
- }
-
} else {
$accountline->accounttype('F');
}
: ( $control eq 'PatronLibrary' ) ? $borrower->{branchcode}
: $issue->branchcode;
- my $date_returned = $return_date ? dt_from_string($return_date) : dt_from_string();
+ my $date_returned = $return_date ? $return_date : dt_from_string();
my ( $amount, $unitcounttotal, $unitcount ) =
C4::Overdues::CalcFine( $item, $borrower->{categorycode}, $control_branchcode, $datedue, $date_returned );
use CGI qw ( -utf8 );
use DateTime;
-use C4::Context;
+
use C4::Auth qw/:DEFAULT get_session/;
-use C4::Output;
-use C4::Circulation;
-use C4::Print;
-use C4::Reserves;
use C4::Biblio;
+use C4::Circulation;
+use C4::Context;
use C4::Items;
-use C4::Members;
-use C4::Members::Messaging;
use C4::Koha; # FIXME : is it still useful ?
+use C4::Members::Messaging;
+use C4::Members;
+use C4::Output;
+use C4::Print;
+use C4::Reserves;
use C4::RotatingCollections;
use Koha::AuthorisedValues;
-use Koha::DateUtils;
-use Koha::Calendar;
use Koha::BiblioFrameworks;
+use Koha::Calendar;
+use Koha::Checkouts;
+use Koha::DateUtils;
use Koha::Holds;
use Koha::Items;
use Koha::Patrons;
my $dotransfer = $query->param('dotransfer');
my $canceltransfer = $query->param('canceltransfer');
my $dest = $query->param('dest');
-my $calendar = Koha::Calendar->new( branchcode => $userenv_branch );
#dropbox: get last open day (today - 1)
-my $today = DateTime->now( time_zone => C4::Context->tz());
-my $dropboxdate = $calendar->addDate($today, -1);
+my $dropboxdate = Koha::Checkouts::calculate_dropbox_date();
my $return_date_override = $query->param('return_date_override');
+my $return_date_override_dt;
my $return_date_override_remember =
$query->param('return_date_override_remember');
if ($return_date_override) {
if ( C4::Context->preference('SpecifyReturnDate') ) {
- my $return_date_override_dt = eval {dt_from_string( $return_date_override ) };
+ $return_date_override_dt = eval {dt_from_string( $return_date_override ) };
if ( $return_date_override_dt ) {
# note that we've overriden the return date
$template->param( return_date_was_overriden => 1);
barcode => $barcode,
);
+ my $return_date = $dropboxmode ? $dropboxdate : $return_date_override_dt;
# do the return
( $returned, $messages, $issue, $borrower ) =
- AddReturn( $barcode, $userenv_branch, $exemptfine, $dropboxmode, $return_date_override, $dropboxdate );
+ AddReturn( $barcode, $userenv_branch, $exemptfine, $return_date );
if ($returned) {
my $time_now = DateTime->now( time_zone => C4::Context->tz )->truncate( to => 'minute');
errmsgloop => \@errmsgloop,
exemptfine => $exemptfine,
dropboxmode => $dropboxmode,
- dropboxdate => output_pref($dropboxdate),
+ dropboxdate => $dropboxdate,
forgivemanualholdsexpire => $forgivemanualholdsexpire,
overduecharges => $overduecharges,
AudioAlerts => C4::Context->preference("AudioAlerts"),