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

(-)a/C4/Circulation.pm (-5 / +66 lines)
Lines 2071-2076 sub AddReturn { Link Here
2071
                    $messages->{'LostItemFeeCharged'} = 1;
2071
                    $messages->{'LostItemFeeCharged'} = 1;
2072
                }
2072
                }
2073
                elsif ( $lostreturn_policy eq 'restore' ) {
2073
                elsif ( $lostreturn_policy eq 'restore' ) {
2074
                    _RestoreOverdueForLostAndFound( $item->itemnumber,
2075
                        $borrowernumber );
2074
                    $messages->{'LostItemFeeRestored'} = 1;
2076
                    $messages->{'LostItemFeeRestored'} = 1;
2075
                }
2077
                }
2076
            }
2078
            }
Lines 2477-2491 sub _FixOverduesOnReturn { Link Here
2477
2479
2478
                $credit->apply({ debits => [ $accountline ], offset_type => 'Forgiven' });
2480
                $credit->apply({ debits => [ $accountline ], offset_type => 'Forgiven' });
2479
2481
2480
                $accountline->status('FORGIVEN');
2481
2482
                if (C4::Context->preference("FinesLog")) {
2482
                if (C4::Context->preference("FinesLog")) {
2483
                    &logaction("FINES", 'MODIFY',$borrowernumber,"Overdue forgiven: item $item");
2483
                    &logaction("FINES", 'MODIFY',$borrowernumber,"Overdue forgiven: item $item");
2484
                }
2484
                }
2485
            } else {
2486
                $accountline->status($status);
2487
            }
2485
            }
2488
2486
2487
            $accountline->status($status);
2489
            return $accountline->store();
2488
            return $accountline->store();
2490
        }
2489
        }
2491
    );
2490
    );
Lines 2582-2587 sub _FixAccountForLostAndFound { Link Here
2582
    return ($credit) ? $credit->id : undef;
2581
    return ($credit) ? $credit->id : undef;
2583
}
2582
}
2584
2583
2584
=head2 _RestoreOverdueForLostAndFound
2585
2586
   &_RestoreOverdueForLostAndFound($borrowernumber, $itemnumber );
2587
2588
C<$borrowernumber> borrowernumber
2589
2590
C<$itemnumber> itemnumber
2591
2592
Internal function
2593
2594
=cut
2595
2596
sub _RestoreOverdueForLostAndFound {
2597
    my ( $borrowernumber, $item ) = @_;
2598
2599
    unless( $borrowernumber ) {
2600
        warn "_RestoreOverdueForLostAndFound() not supplied valid borrowernumber";
2601
        return;
2602
    }
2603
    unless( $item ) {
2604
        warn "_RestoreOverdueForLostAndFound() not supplied valid itemnumber";
2605
        return;
2606
    }
2607
2608
    my $schema = Koha::Database->schema;
2609
2610
    my $result = $schema->txn_do(
2611
        sub {
2612
            # check for lost overdue fine
2613
            my $accountlines = Koha::Account::Lines->search(
2614
                {
2615
                    borrowernumber  => $borrowernumber,
2616
                    itemnumber      => $item,
2617
                    debit_type_code => 'OVERDUE',
2618
                    status          => 'LOST'
2619
                },
2620
                {
2621
                    order_by => { '-desc' => 'date' },
2622
                    rows     => 1
2623
                }
2624
            );
2625
            return 0 unless $accountlines->count; # no warning, there's just nothing to fix
2626
2627
            # Find related forgive credit
2628
            my $overdue = $accountlines->next;
2629
            my $refunds = $overdue->credits(
2630
                {
2631
                    credit_type_code => 'FORGIVEN',
2632
                    itemnumber       => $item,
2633
                    status           => { '!=' => 'VOID' }
2634
                },
2635
                { order_by => { '-desc' => 'date' }, rows => 1 }
2636
            );
2637
            return 0 unless $refunds->count; # no warning, there's just nothing to fix
2638
2639
            # Revert the forgive credit
2640
            my $refund = $refunds->next;
2641
            return $refund->void();
2642
        }
2643
    );
2644
2645
    return $result;
2646
}
2585
=head2 _GetCircControlBranch
2647
=head2 _GetCircControlBranch
2586
2648
2587
   my $circ_control_branch = _GetCircControlBranch($iteminfos, $borrower);
2649
   my $circ_control_branch = _GetCircControlBranch($iteminfos, $borrower);
2588
- 

Return to bug 23091