use C4::Branch; # GetBranches
use C4::Log; # logaction
use C4::Koha qw(GetAuthorisedValueByCode);
+use C4::Overdues qw(CalcFine UpdateFine);
use Data::Dumper;
use Koha::DateUtils;
use Koha::Calendar;
# case of a return of document (deal with issues and holdingbranch)
if ($doreturn) {
+ my $today = DateTime->now( time_zone => C4::Context->tz() );
+ my $datedue = $issue->{date_due};
$borrower or warn "AddReturn without current borrower";
my $circControlBranch;
if ($dropbox) {
# FIXME: check issuedate > returndate, factoring in holidays
#$circControlBranch = _GetCircControlBranch($item,$borrower) unless ( $item->{'issuedate'} eq C4::Dates->today('iso') );;
$circControlBranch = _GetCircControlBranch($item,$borrower);
+ my $datedue = $issue->{date_due};
+ $issue->{'overdue'} = DateTime->compare($issue->{'date_due'}, $today ) == -1 ? 1 : 0;
}
if ($borrowernumber) {
+ if($issue->{'overdue'}){
+ my ( $amount, $type, $daycounttotal ) = C4::Overdues::CalcFine( $item, $borrower->{categorycode},$branch, $datedue, $today );
+ my $type ||= q{};
+ 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.
}
my ( $item, $bortype, $branchcode, $due_dt, $end_date ) = @_;
my $start_date = $due_dt->clone();
# get issuingrules (fines part will be used)
- my $data = C4::Circulation::GetIssuingRule($bortype, $item->{itemtype}, $branchcode);
+ my $itemtype = $item->{itemtype} || $item->{itype};
+ my $data = C4::Circulation::GetIssuingRule($bortype, $itemtype, $branchcode);
my $fine_unit = $data->{lengthunit};
$fine_unit ||= 'days';
} else {
$charge_duration = $dt2->delta_ms( $dt1 );
}
+ if($charge_duration->in_units('hours') == 0 && $charge_duration->in_units('seconds') > 0){
+ return 1;
+ }
return $charge_duration->in_units('hours');
}
else { # days