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

(-)a/C4/Circulation.pm (-19 / +14 lines)
Lines 1464-1471 sub AddIssue { Link Here
1464
                  );
1464
                  );
1465
1465
1466
                if ($lostreturn_policy) {
1466
                if ($lostreturn_policy) {
1467
                    _FixAccountForLostAndFound( $item_object->itemnumber, undef,
1467
                    _FixAccountForLostAndFound( $item_object->itemnumber );
1468
                        $item_object->barcode );
1469
1468
1470
                    if ( $lostreturn_policy eq 'charge' ) {
1469
                    if ( $lostreturn_policy eq 'charge' ) {
1471
                        $actualissue //= Koha::Old::Checkouts->search(
1470
                        $actualissue //= Koha::Old::Checkouts->search(
Lines 1475-1480 sub AddIssue { Link Here
1475
                                rows     => 1
1474
                                rows     => 1
1476
                            }
1475
                            }
1477
                        )->single;
1476
                        )->single;
1477
                        unless (exists($borrower->{branchcode})) {
1478
                            my $patron = $issue->patron;
1479
                            $borrower = $patron->unblessed;
1480
                        }                    
1478
                        _CalculateAndUpdateFine(
1481
                        _CalculateAndUpdateFine(
1479
                            {
1482
                            {
1480
                                issue    => $actualissue,
1483
                                issue    => $actualissue,
Lines 1486-1495 sub AddIssue { Link Here
1486
                            $item_object->itemnumber, undef, 'RENEWED' );
1489
                            $item_object->itemnumber, undef, 'RENEWED' );
1487
                    }
1490
                    }
1488
                    elsif ( $lostreturn_policy eq 'restore' ) {
1491
                    elsif ( $lostreturn_policy eq 'restore' ) {
1489
                        _RestoreOverdueForLostAndFound(
1492
                        _RestoreOverdueForLostAndFound( $item_object->itemnumber );
1490
                            $borrower->{'borrowernumber'},
1491
                            $item_object->itemnumber
1492
                        );
1493
                    }
1493
                    }
1494
                }
1494
                }
1495
            }
1495
            }
Lines 2072-2079 sub AddReturn { Link Here
2072
              );
2072
              );
2073
2073
2074
            if ($lostreturn_policy) {
2074
            if ($lostreturn_policy) {
2075
                _FixAccountForLostAndFound( $item->itemnumber,
2075
                _FixAccountForLostAndFound( $item->itemnumber );
2076
                    $borrowernumber, $barcode );
2077
                $messages->{'LostItemFeeRefunded'} = 1;
2076
                $messages->{'LostItemFeeRefunded'} = 1;
2078
2077
2079
                if ( $lostreturn_policy eq 'charge' ) {
2078
                if ( $lostreturn_policy eq 'charge' ) {
Lines 2081-2086 sub AddReturn { Link Here
2081
                        { itemnumber => $item->itemnumber },
2080
                        { itemnumber => $item->itemnumber },
2082
                        { order_by   => { '-desc' => 'returndate' }, rows => 1 }
2081
                        { order_by   => { '-desc' => 'returndate' }, rows => 1 }
2083
                    )->single;
2082
                    )->single;
2083
                    unless (exists($patron_unblessed->{branchcode})) {
2084
                        my $patron = $issue->patron;
2085
                        $patron_unblessed = $patron->unblessed;
2086
                    }
2084
                    _CalculateAndUpdateFine(
2087
                    _CalculateAndUpdateFine(
2085
                        {
2088
                        {
2086
                            issue       => $issue,
2089
                            issue       => $issue,
Lines 2094-2101 sub AddReturn { Link Here
2094
                    $messages->{'LostItemFeeCharged'} = 1;
2097
                    $messages->{'LostItemFeeCharged'} = 1;
2095
                }
2098
                }
2096
                elsif ( $lostreturn_policy eq 'restore' ) {
2099
                elsif ( $lostreturn_policy eq 'restore' ) {
2097
                    _RestoreOverdueForLostAndFound( $borrowernumber,
2100
                    _RestoreOverdueForLostAndFound( $item->itemnumber );
2098
                        $item->itemnumber );
2099
                    $messages->{'LostItemFeeRestored'} = 1;
2101
                    $messages->{'LostItemFeeRestored'} = 1;
2100
                }
2102
                }
2101
            }
2103
            }
Lines 2606-2614 sub _FixAccountForLostAndFound { Link Here
2606
2608
2607
=head2 _RestoreOverdueForLostAndFound
2609
=head2 _RestoreOverdueForLostAndFound
2608
2610
2609
   &_RestoreOverdueForLostAndFound($borrowernumber, $itemnumber );
2611
   &_RestoreOverdueForLostAndFound( $itemnumber );
2610
2611
C<$borrowernumber> borrowernumber
2612
2612
2613
C<$itemnumber> itemnumber
2613
C<$itemnumber> itemnumber
2614
2614
Lines 2617-2628 Internal function Link Here
2617
=cut
2617
=cut
2618
2618
2619
sub _RestoreOverdueForLostAndFound {
2619
sub _RestoreOverdueForLostAndFound {
2620
    my ( $borrowernumber, $item ) = @_;
2620
    my ( $item ) = @_;
2621
2621
2622
    unless( $borrowernumber ) {
2623
        warn "_RestoreOverdueForLostAndFound() not supplied valid borrowernumber";
2624
        return;
2625
    }
2626
    unless( $item ) {
2622
    unless( $item ) {
2627
        warn "_RestoreOverdueForLostAndFound() not supplied valid itemnumber";
2623
        warn "_RestoreOverdueForLostAndFound() not supplied valid itemnumber";
2628
        return;
2624
        return;
Lines 2635-2641 sub _RestoreOverdueForLostAndFound { Link Here
2635
            # check for lost overdue fine
2631
            # check for lost overdue fine
2636
            my $accountlines = Koha::Account::Lines->search(
2632
            my $accountlines = Koha::Account::Lines->search(
2637
                {
2633
                {
2638
                    borrowernumber  => $borrowernumber,
2639
                    itemnumber      => $item,
2634
                    itemnumber      => $item,
2640
                    debit_type_code => 'OVERDUE',
2635
                    debit_type_code => 'OVERDUE',
2641
                    status          => 'LOST'
2636
                    status          => 'LOST'
(-)a/t/db_dependent/Circulation.t (-15 / +5 lines)
Lines 2914-2920 subtest '_FixAccountForLostAndFound' => sub { Link Here
2914
2914
2915
subtest '_RestoreOverdueForLostAndFound' => sub {
2915
subtest '_RestoreOverdueForLostAndFound' => sub {
2916
2916
2917
    plan tests => 8;
2917
    plan tests => 7;
2918
2918
2919
    my $manager = $builder->build_object( { class => "Koha::Patrons" } );
2919
    my $manager = $builder->build_object( { class => "Koha::Patrons" } );
2920
    t::lib::Mocks::mock_userenv(
2920
    t::lib::Mocks::mock_userenv(
Lines 2924-2930 subtest '_RestoreOverdueForLostAndFound' => sub { Link Here
2924
    my $item = $builder->build_sample_item();
2924
    my $item = $builder->build_sample_item();
2925
2925
2926
    # No fine found
2926
    # No fine found
2927
    my $result = C4::Circulation::_RestoreOverdueForLostAndFound($patron->borrowernumber, $item->itemnumber);
2927
    my $result = C4::Circulation::_RestoreOverdueForLostAndFound( $item->itemnumber);
2928
    is($result, 0, "0 returned when no overdue found");
2928
    is($result, 0, "0 returned when no overdue found");
2929
2929
2930
    # Fine not forgiven
2930
    # Fine not forgiven
Lines 2941-2947 subtest '_RestoreOverdueForLostAndFound' => sub { Link Here
2941
    )->store();
2941
    )->store();
2942
    $overdue->status('LOST')->store();
2942
    $overdue->status('LOST')->store();
2943
2943
2944
    $result = C4::Circulation::_RestoreOverdueForLostAndFound($patron->borrowernumber, $item->itemnumber);
2944
    $result = C4::Circulation::_RestoreOverdueForLostAndFound( $item->itemnumber);
2945
    is($result, 0, "0 returned when overdue found without forgival");
2945
    is($result, 0, "0 returned when overdue found without forgival");
2946
    $overdue->discard_changes;
2946
    $overdue->discard_changes;
2947
    is($overdue->status, 'RETURNED', 'Overdue status updated to RETURNED');
2947
    is($overdue->status, 'RETURNED', 'Overdue status updated to RETURNED');
Lines 2962-2968 subtest '_RestoreOverdueForLostAndFound' => sub { Link Here
2962
    );
2962
    );
2963
    $credit->apply( { debits => [$overdue], offset_type => 'Forgiven' } );
2963
    $credit->apply( { debits => [$overdue], offset_type => 'Forgiven' } );
2964
2964
2965
    $result = C4::Circulation::_RestoreOverdueForLostAndFound($patron->borrowernumber, $item->itemnumber);
2965
    $result = C4::Circulation::_RestoreOverdueForLostAndFound( $item->itemnumber);
2966
2966
2967
    is( ref($result), 'Koha::Account::Line', 'Return a Koha::Account::Line object on sucess');
2967
    is( ref($result), 'Koha::Account::Line', 'Return a Koha::Account::Line object on sucess');
2968
    $overdue->discard_changes;
2968
    $overdue->discard_changes;
Lines 2971-2989 subtest '_RestoreOverdueForLostAndFound' => sub { Link Here
2971
2971
2972
    # Missing parameters
2972
    # Missing parameters
2973
    warning_like {
2973
    warning_like {
2974
        C4::Circulation::_RestoreOverdueForLostAndFound( undef,
2974
        C4::Circulation::_RestoreOverdueForLostAndFound( undef )
2975
            $item->itemnumber )
2976
    }
2977
    qr/_RestoreOverdueForLostAndFound\(\) not supplied valid borrowernumber/,
2978
      "parameter warning received for missing borrowernumber";
2979
2980
    warning_like {
2981
        C4::Circulation::_RestoreOverdueForLostAndFound(
2982
            $patron->borrowernumber, undef )
2983
    }
2975
    }
2984
    qr/_RestoreOverdueForLostAndFound\(\) not supplied valid itemnumber/,
2976
    qr/_RestoreOverdueForLostAndFound\(\) not supplied valid itemnumber/,
2985
      "parameter warning received for missing itemnumbernumber";
2977
      "parameter warning received for missing itemnumbernumber";
2986
2987
};
2978
};
2988
2979
2989
subtest '_FixOverduesOnReturn' => sub {
2980
subtest '_FixOverduesOnReturn' => sub {
2990
- 

Return to bug 23091