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

(-)a/C4/Circulation.pm (-19 / +14 lines)
Lines 1476-1483 sub AddIssue { Link Here
1476
                  );
1476
                  );
1477
1477
1478
                if ($refund && $lostreturn_policy) {
1478
                if ($refund && $lostreturn_policy) {
1479
                    _FixAccountForLostAndFound( $item_object->itemnumber, undef,
1479
                    _FixAccountForLostAndFound( $item_object->itemnumber );
1480
                        $item_object->barcode );
1481
1480
1482
                    if ( $lostreturn_policy eq 'charge' ) {
1481
                    if ( $lostreturn_policy eq 'charge' ) {
1483
                        $actualissue //= Koha::Old::Checkouts->search(
1482
                        $actualissue //= Koha::Old::Checkouts->search(
Lines 1487-1492 sub AddIssue { Link Here
1487
                                rows     => 1
1486
                                rows     => 1
1488
                            }
1487
                            }
1489
                        )->single;
1488
                        )->single;
1489
                        unless (exists($borrower->{branchcode})) {
1490
                            my $patron = $issue->patron;
1491
                            $borrower = $patron->unblessed;
1492
                        }
1490
                        _CalculateAndUpdateFine(
1493
                        _CalculateAndUpdateFine(
1491
                            {
1494
                            {
1492
                                issue    => $actualissue,
1495
                                issue    => $actualissue,
Lines 1498-1507 sub AddIssue { Link Here
1498
                            $item_object->itemnumber, undef, 'RENEWED' );
1501
                            $item_object->itemnumber, undef, 'RENEWED' );
1499
                    }
1502
                    }
1500
                    elsif ( $lostreturn_policy eq 'restore' ) {
1503
                    elsif ( $lostreturn_policy eq 'restore' ) {
1501
                        _RestoreOverdueForLostAndFound(
1504
                        _RestoreOverdueForLostAndFound( $item_object->itemnumber );
1502
                            $borrower->{'borrowernumber'},
1503
                            $item_object->itemnumber
1504
                        );
1505
                    }
1505
                    }
1506
                }
1506
                }
1507
            }
1507
            }
Lines 2096-2103 sub AddReturn { Link Here
2096
              );
2096
              );
2097
2097
2098
            if ($refund && $lostreturn_policy) {
2098
            if ($refund && $lostreturn_policy) {
2099
                _FixAccountForLostAndFound( $item->itemnumber,
2099
                _FixAccountForLostAndFound( $item->itemnumber );
2100
                    $borrowernumber, $barcode );
2101
                $messages->{'LostItemFeeRefunded'} = 1;
2100
                $messages->{'LostItemFeeRefunded'} = 1;
2102
2101
2103
                if ( $lostreturn_policy eq 'charge' ) {
2102
                if ( $lostreturn_policy eq 'charge' ) {
Lines 2105-2110 sub AddReturn { Link Here
2105
                        { itemnumber => $item->itemnumber },
2104
                        { itemnumber => $item->itemnumber },
2106
                        { order_by   => { '-desc' => 'returndate' }, rows => 1 }
2105
                        { order_by   => { '-desc' => 'returndate' }, rows => 1 }
2107
                    )->single;
2106
                    )->single;
2107
                    unless (exists($patron_unblessed->{branchcode})) {
2108
                        my $patron = $issue->patron;
2109
                        $patron_unblessed = $patron->unblessed;
2110
                    }
2108
                    _CalculateAndUpdateFine(
2111
                    _CalculateAndUpdateFine(
2109
                        {
2112
                        {
2110
                            issue       => $issue,
2113
                            issue       => $issue,
Lines 2118-2125 sub AddReturn { Link Here
2118
                    $messages->{'LostItemFeeCharged'} = 1;
2121
                    $messages->{'LostItemFeeCharged'} = 1;
2119
                }
2122
                }
2120
                elsif ( $lostreturn_policy eq 'restore' ) {
2123
                elsif ( $lostreturn_policy eq 'restore' ) {
2121
                    _RestoreOverdueForLostAndFound( $borrowernumber,
2124
                    _RestoreOverdueForLostAndFound( $item->itemnumber );
2122
                        $item->itemnumber );
2123
                    $messages->{'LostItemFeeRestored'} = 1;
2125
                    $messages->{'LostItemFeeRestored'} = 1;
2124
                }
2126
                }
2125
            }
2127
            }
Lines 2634-2642 sub _FixAccountForLostAndFound { Link Here
2634
2636
2635
=head2 _RestoreOverdueForLostAndFound
2637
=head2 _RestoreOverdueForLostAndFound
2636
2638
2637
   &_RestoreOverdueForLostAndFound($borrowernumber, $itemnumber );
2639
   &_RestoreOverdueForLostAndFound( $itemnumber );
2638
2639
C<$borrowernumber> borrowernumber
2640
2640
2641
C<$itemnumber> itemnumber
2641
C<$itemnumber> itemnumber
2642
2642
Lines 2645-2656 Internal function Link Here
2645
=cut
2645
=cut
2646
2646
2647
sub _RestoreOverdueForLostAndFound {
2647
sub _RestoreOverdueForLostAndFound {
2648
    my ( $borrowernumber, $item ) = @_;
2648
    my ( $item ) = @_;
2649
2649
2650
    unless( $borrowernumber ) {
2651
        warn "_RestoreOverdueForLostAndFound() not supplied valid borrowernumber";
2652
        return;
2653
    }
2654
    unless( $item ) {
2650
    unless( $item ) {
2655
        warn "_RestoreOverdueForLostAndFound() not supplied valid itemnumber";
2651
        warn "_RestoreOverdueForLostAndFound() not supplied valid itemnumber";
2656
        return;
2652
        return;
Lines 2663-2669 sub _RestoreOverdueForLostAndFound { Link Here
2663
            # check for lost overdue fine
2659
            # check for lost overdue fine
2664
            my $accountlines = Koha::Account::Lines->search(
2660
            my $accountlines = Koha::Account::Lines->search(
2665
                {
2661
                {
2666
                    borrowernumber  => $borrowernumber,
2667
                    itemnumber      => $item,
2662
                    itemnumber      => $item,
2668
                    debit_type_code => 'OVERDUE',
2663
                    debit_type_code => 'OVERDUE',
2669
                    status          => 'LOST'
2664
                    status          => 'LOST'
(-)a/t/db_dependent/Circulation.t (-15 / +5 lines)
Lines 3093-3099 subtest '_FixAccountForLostAndFound' => sub { Link Here
3093
3093
3094
subtest '_RestoreOverdueForLostAndFound' => sub {
3094
subtest '_RestoreOverdueForLostAndFound' => sub {
3095
3095
3096
    plan tests => 8;
3096
    plan tests => 7;
3097
3097
3098
    my $manager = $builder->build_object( { class => "Koha::Patrons" } );
3098
    my $manager = $builder->build_object( { class => "Koha::Patrons" } );
3099
    t::lib::Mocks::mock_userenv(
3099
    t::lib::Mocks::mock_userenv(
Lines 3103-3109 subtest '_RestoreOverdueForLostAndFound' => sub { Link Here
3103
    my $item = $builder->build_sample_item();
3103
    my $item = $builder->build_sample_item();
3104
3104
3105
    # No fine found
3105
    # No fine found
3106
    my $result = C4::Circulation::_RestoreOverdueForLostAndFound($patron->borrowernumber, $item->itemnumber);
3106
    my $result = C4::Circulation::_RestoreOverdueForLostAndFound( $item->itemnumber);
3107
    is($result, 0, "0 returned when no overdue found");
3107
    is($result, 0, "0 returned when no overdue found");
3108
3108
3109
    # Fine not forgiven
3109
    # Fine not forgiven
Lines 3120-3126 subtest '_RestoreOverdueForLostAndFound' => sub { Link Here
3120
    )->store();
3120
    )->store();
3121
    $overdue->status('LOST')->store();
3121
    $overdue->status('LOST')->store();
3122
3122
3123
    $result = C4::Circulation::_RestoreOverdueForLostAndFound($patron->borrowernumber, $item->itemnumber);
3123
    $result = C4::Circulation::_RestoreOverdueForLostAndFound( $item->itemnumber);
3124
    is($result, 0, "0 returned when overdue found without forgival");
3124
    is($result, 0, "0 returned when overdue found without forgival");
3125
    $overdue->discard_changes;
3125
    $overdue->discard_changes;
3126
    is($overdue->status, 'RETURNED', 'Overdue status updated to RETURNED');
3126
    is($overdue->status, 'RETURNED', 'Overdue status updated to RETURNED');
Lines 3141-3147 subtest '_RestoreOverdueForLostAndFound' => sub { Link Here
3141
    );
3141
    );
3142
    $credit->apply( { debits => [$overdue], offset_type => 'Forgiven' } );
3142
    $credit->apply( { debits => [$overdue], offset_type => 'Forgiven' } );
3143
3143
3144
    $result = C4::Circulation::_RestoreOverdueForLostAndFound($patron->borrowernumber, $item->itemnumber);
3144
    $result = C4::Circulation::_RestoreOverdueForLostAndFound( $item->itemnumber);
3145
3145
3146
    is( ref($result), 'Koha::Account::Line', 'Return a Koha::Account::Line object on sucess');
3146
    is( ref($result), 'Koha::Account::Line', 'Return a Koha::Account::Line object on sucess');
3147
    $overdue->discard_changes;
3147
    $overdue->discard_changes;
Lines 3150-3168 subtest '_RestoreOverdueForLostAndFound' => sub { Link Here
3150
3150
3151
    # Missing parameters
3151
    # Missing parameters
3152
    warning_like {
3152
    warning_like {
3153
        C4::Circulation::_RestoreOverdueForLostAndFound( undef,
3153
        C4::Circulation::_RestoreOverdueForLostAndFound( undef )
3154
            $item->itemnumber )
3155
    }
3156
    qr/_RestoreOverdueForLostAndFound\(\) not supplied valid borrowernumber/,
3157
      "parameter warning received for missing borrowernumber";
3158
3159
    warning_like {
3160
        C4::Circulation::_RestoreOverdueForLostAndFound(
3161
            $patron->borrowernumber, undef )
3162
    }
3154
    }
3163
    qr/_RestoreOverdueForLostAndFound\(\) not supplied valid itemnumber/,
3155
    qr/_RestoreOverdueForLostAndFound\(\) not supplied valid itemnumber/,
3164
      "parameter warning received for missing itemnumbernumber";
3156
      "parameter warning received for missing itemnumbernumber";
3165
3166
};
3157
};
3167
3158
3168
subtest '_FixOverduesOnReturn' => sub {
3159
subtest '_FixOverduesOnReturn' => sub {
3169
- 

Return to bug 23091