View | Details | Raw Unified | Return to bug 7849
Collapse All | Expand All

(-)a/C4/Circulation.pm (+16 lines)
Lines 37-42 use C4::Debug; Link Here
37
use C4::Branch; # GetBranches
37
use C4::Branch; # GetBranches
38
use C4::Log; # logaction
38
use C4::Log; # logaction
39
use C4::Koha qw(GetAuthorisedValueByCode);
39
use C4::Koha qw(GetAuthorisedValueByCode);
40
use C4::Overdues qw(CalcFine UpdateFine);
40
use Data::Dumper;
41
use Data::Dumper;
41
use Koha::DateUtils;
42
use Koha::DateUtils;
42
use Koha::Calendar;
43
use Koha::Calendar;
Lines 1598-1603 sub AddReturn { Link Here
1598
1599
1599
    # case of a return of document (deal with issues and holdingbranch)
1600
    # case of a return of document (deal with issues and holdingbranch)
1600
    if ($doreturn) {
1601
    if ($doreturn) {
1602
	my $today = DateTime->now( time_zone => C4::Context->tz() );
1603
	my $datedue = $issue->{date_due};
1601
        $borrower or warn "AddReturn without current borrower";
1604
        $borrower or warn "AddReturn without current borrower";
1602
		my $circControlBranch;
1605
		my $circControlBranch;
1603
        if ($dropbox) {
1606
        if ($dropbox) {
Lines 1606-1614 sub AddReturn { Link Here
1606
            # FIXME: check issuedate > returndate, factoring in holidays
1609
            # FIXME: check issuedate > returndate, factoring in holidays
1607
            #$circControlBranch = _GetCircControlBranch($item,$borrower) unless ( $item->{'issuedate'} eq C4::Dates->today('iso') );;
1610
            #$circControlBranch = _GetCircControlBranch($item,$borrower) unless ( $item->{'issuedate'} eq C4::Dates->today('iso') );;
1608
            $circControlBranch = _GetCircControlBranch($item,$borrower);
1611
            $circControlBranch = _GetCircControlBranch($item,$borrower);
1612
	    my $datedue = $issue->{date_due};
1613
	    $issue->{'overdue'} = DateTime->compare($issue->{'date_due'}, $today ) == -1 ? 1 : 0;
1609
        }
1614
        }
1610
1615
1611
        if ($borrowernumber) {
1616
        if ($borrowernumber) {
1617
	    if($issue->{'overdue'}){
1618
                my ( $amount, $type, $daycounttotal ) = C4::Overdues::CalcFine( $item, $borrower->{categorycode},$branch, $datedue, $today );
1619
                my $type ||= q{};
1620
		if ( $amount > 0 && ( C4::Context->preference('finesMode') eq 'production' )) {
1621
		  C4::Overdues::UpdateFine(
1622
		      $issue->{itemnumber},
1623
		      $issue->{borrowernumber},
1624
		              $amount, $type, output_pref($datedue)
1625
		      );
1626
		}
1627
            }
1612
            MarkIssueReturned($borrowernumber, $item->{'itemnumber'}, $circControlBranch, '', $borrower->{'privacy'});
1628
            MarkIssueReturned($borrowernumber, $item->{'itemnumber'}, $circControlBranch, '', $borrower->{'privacy'});
1613
            $messages->{'WasReturned'} = 1;    # FIXME is the "= 1" right?  This could be the borrower hash.
1629
            $messages->{'WasReturned'} = 1;    # FIXME is the "= 1" right?  This could be the borrower hash.
1614
        }
1630
        }
(-)a/C4/Overdues.pm (-2 / +5 lines)
Lines 255-261 sub CalcFine { Link Here
255
    my ( $item, $bortype, $branchcode, $due_dt, $end_date  ) = @_;
255
    my ( $item, $bortype, $branchcode, $due_dt, $end_date  ) = @_;
256
    my $start_date = $due_dt->clone();
256
    my $start_date = $due_dt->clone();
257
    # get issuingrules (fines part will be used)
257
    # get issuingrules (fines part will be used)
258
    my $data = C4::Circulation::GetIssuingRule($bortype, $item->{itemtype}, $branchcode);
258
    my $itemtype = $item->{itemtype} || $item->{itype};
259
    my $data = C4::Circulation::GetIssuingRule($bortype, $itemtype, $branchcode);
259
    my $fine_unit = $data->{lengthunit};
260
    my $fine_unit = $data->{lengthunit};
260
    $fine_unit ||= 'days';
261
    $fine_unit ||= 'days';
261
262
Lines 300-305 sub _get_chargeable_units { Link Here
300
        } else {
301
        } else {
301
            $charge_duration = $dt2->delta_ms( $dt1 );
302
            $charge_duration = $dt2->delta_ms( $dt1 );
302
        }
303
        }
304
        if($charge_duration->in_units('hours') == 0 && $charge_duration->in_units('seconds') > 0){
305
            return 1;
306
        }
303
        return $charge_duration->in_units('hours');
307
        return $charge_duration->in_units('hours');
304
    }
308
    }
305
    else { # days
309
    else { # days
306
- 

Return to bug 7849