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

(-)a/C4/Circulation.pm (-5 / +5 lines)
Lines 1934-1949 sub AddReturn { Link Here
1934
        }
1934
        }
1935
1935
1936
        if ($borrowernumber) {
1936
        if ($borrowernumber) {
1937
            if ( ( C4::Context->preference('CalculateFinesOnReturn') && $issue->{'overdue'} ) || $return_date ) {
1938
                _CalculateAndUpdateFine( { issue => $issue, item => $item, borrower => $borrower, return_date => $return_date } );
1939
            }
1940
1941
            eval {
1937
            eval {
1942
                my $issue_id = MarkIssueReturned( $borrowernumber, $item->{'itemnumber'},
1938
                my $issue_id = MarkIssueReturned( $borrowernumber, $item->{'itemnumber'},
1943
                    $circControlBranch, $return_date, $borrower->{'privacy'} );
1939
                    $circControlBranch, $return_date, $borrower->{'privacy'} );
1944
                $issue->{issue_id} = $issue_id;
1940
                $issue->{issue_id} = $issue_id;
1945
            };
1941
            };
1946
            if ( $@ ) {
1942
            unless ( $@ ) {
1943
                if ( ( C4::Context->preference('CalculateFinesOnReturn') && $issue->{'overdue'} ) || $return_date ) {
1944
                    _CalculateAndUpdateFine( { issue => $issue, item => $item, borrower => $borrower, return_date => $return_date } );
1945
                }
1946
            } else {
1947
                $messages->{'Wrongbranch'} = {
1947
                $messages->{'Wrongbranch'} = {
1948
                    Wrongbranch => $branch,
1948
                    Wrongbranch => $branch,
1949
                    Rightbranch => $message
1949
                    Rightbranch => $message
(-)a/t/db_dependent/Circulation/Returns.t (-8 / +20 lines)
Lines 29-34 use C4::Circulation; Link Here
29
use C4::Items;
29
use C4::Items;
30
use C4::Members;
30
use C4::Members;
31
use Koha::Database;
31
use Koha::Database;
32
use Koha::Account::Lines;
32
use Koha::DateUtils;
33
use Koha::DateUtils;
33
use Koha::Items;
34
use Koha::Items;
34
35
Lines 263-271 subtest "AddReturn logging on statistics table (item-level_itypes=0)" => sub { Link Here
263
};
264
};
264
265
265
subtest 'Handle ids duplication' => sub {
266
subtest 'Handle ids duplication' => sub {
266
    plan tests => 2;
267
    plan tests => 4;
268
269
    t::lib::Mocks::mock_preference( 'item-level_itypes', 1 );
270
    t::lib::Mocks::mock_preference( 'CalculateFinesOnReturn', 1 );
271
    t::lib::Mocks::mock_preference( 'finesMode', 'production' );
272
    Koha::IssuingRules->search->update({ chargeperiod => 1, fine => 1, firstremind => 1, });
267
273
268
    my $biblio = $builder->build( { source => 'Biblio' } );
274
    my $biblio = $builder->build( { source => 'Biblio' } );
275
    my $itemtype = $builder->build( { source => 'Itemtype', value => { rentalcharge => 5 } } );
269
    my $item = $builder->build(
276
    my $item = $builder->build(
270
        {
277
        {
271
            source => 'Item',
278
            source => 'Item',
Lines 274-292 subtest 'Handle ids duplication' => sub { Link Here
274
                notforloan => 0,
281
                notforloan => 0,
275
                itemlost   => 0,
282
                itemlost   => 0,
276
                withdrawn  => 0,
283
                withdrawn  => 0,
277
284
                itype      => $itemtype->{itemtype},
278
            }
285
            }
279
        }
286
        }
280
    );
287
    );
281
    my $patron = $builder->build({source => 'Borrower'});
288
    my $patron = $builder->build({source => 'Borrower'});
289
    $patron = Koha::Patrons->find( $patron->{borrowernumber} );
290
291
    my $original_checkout = AddIssue( $patron->unblessed, $item->{barcode}, dt_from_string->subtract( days => 50 ) );
292
    $builder->build({ source => 'OldIssue', value => { issue_id => $original_checkout->issue_id } });
293
    my $old_checkout = Koha::Old::Checkouts->find( $original_checkout->issue_id );
294
295
    AddRenewal( $patron->borrowernumber, $item->{itemnumber} );
282
296
283
    my $checkout = AddIssue( $patron, $item->{barcode} );
297
    my ($doreturn, $messages, $new_checkout, $borrower) = AddReturn( $item->{barcode}, undef, undef, undef, dt_from_string );
284
    $builder->build({ source => 'OldIssue', value => { issue_id => $checkout->issue_id } });
285
298
286
    my ($doreturn, $messages, $issue, $borrower) = AddReturn( $item->{barcode} );
299
    my $account_lines = Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber, issue_id => $new_checkout->{issue_id} });
287
    my $old_checkout = Koha::Old::Checkouts->find( $checkout->issue_id );
300
    is( $account_lines->count, 1, 'One account line should exist on new issue_id' );
288
301
289
    isnt( $checkout->issue_id, $issue->{issue_id}, 'AddReturn should return the issue with the new issue_id' );
302
    isnt( $original_checkout->issue_id, $new_checkout->{issue_id}, 'AddReturn should return the issue with the new issue_id' );
290
    isnt( $old_checkout->itemnumber, $item->{itemnumber}, 'If an item is checked-in, it should be moved to old_issues even if the issue_id already existed in the table' );
303
    isnt( $old_checkout->itemnumber, $item->{itemnumber}, 'If an item is checked-in, it should be moved to old_issues even if the issue_id already existed in the table' );
291
};
304
};
292
305
293
- 

Return to bug 18651