|
Lines 18-24
Link Here
|
| 18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
| 19 |
use utf8; |
19 |
use utf8; |
| 20 |
|
20 |
|
| 21 |
use Test::More tests => 70; |
21 |
use Test::More tests => 73; |
| 22 |
use Test::Exception; |
22 |
use Test::Exception; |
| 23 |
use Test::MockModule; |
23 |
use Test::MockModule; |
| 24 |
use Test::Deep qw( cmp_deeply ); |
24 |
use Test::Deep qw( cmp_deeply ); |
|
Lines 5487-5492
subtest 'Do not return on renewal (LOST charge)' => sub {
Link Here
|
| 5487 |
); |
5487 |
); |
| 5488 |
}; |
5488 |
}; |
| 5489 |
|
5489 |
|
|
|
5490 |
subtest 'Lost status does not change when preferences are set to 0' => sub { |
| 5491 |
plan tests => 2; |
| 5492 |
|
| 5493 |
my $library = $builder->build_object( { class => "Koha::Libraries" } ); |
| 5494 |
my $manager = $builder->build_object( { class => "Koha::Patrons" } ); |
| 5495 |
t::lib::Mocks::mock_userenv( { patron => $manager, branchcode => $manager->branchcode } ); |
| 5496 |
|
| 5497 |
my $biblio = $builder->build_sample_biblio; |
| 5498 |
my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); |
| 5499 |
|
| 5500 |
my $item = $builder->build_sample_item( |
| 5501 |
{ |
| 5502 |
biblionumber => $biblio->biblionumber, |
| 5503 |
library => $library->branchcode, |
| 5504 |
replacementprice => 99, |
| 5505 |
itype => $itemtype, |
| 5506 |
itemlost => 1, |
| 5507 |
} |
| 5508 |
); |
| 5509 |
|
| 5510 |
my $debitCharge = Koha::Account::Line->new( |
| 5511 |
{ |
| 5512 |
borrowernumber => $patron->borrowernumber, |
| 5513 |
debit_type_code => 'LOST', |
| 5514 |
status => undef, |
| 5515 |
itemnumber => $item->itemnumber, |
| 5516 |
amount => 12, |
| 5517 |
amountoutstanding => 12, |
| 5518 |
interface => 'something', |
| 5519 |
} |
| 5520 |
)->store(); |
| 5521 |
|
| 5522 |
# Test for UpdateItemLostStatusWhenPaid |
| 5523 |
t::lib::Mocks::mock_preference( 'UpdateItemLostStatusWhenPaid', 0 ); |
| 5524 |
|
| 5525 |
my $paymentLine = Koha::Account::Line->new( |
| 5526 |
{ |
| 5527 |
borrowernumber => $patron->borrowernumber, |
| 5528 |
credit_type_code => 'CREDIT', |
| 5529 |
status => undef, |
| 5530 |
itemnumber => $item->itemnumber, |
| 5531 |
amountoutstanding => 0 - 12, |
| 5532 |
amount => 0 - 12, |
| 5533 |
interface => 'something', |
| 5534 |
} |
| 5535 |
)->store(); |
| 5536 |
|
| 5537 |
my $offset = Koha::Account::Offset->new( |
| 5538 |
{ |
| 5539 |
credit_id => $paymentLine->id, |
| 5540 |
debit_id => $debitCharge->id, |
| 5541 |
type => 'APPLY', |
| 5542 |
amount => 0 |
| 5543 |
} |
| 5544 |
)->store(); |
| 5545 |
|
| 5546 |
$paymentLine->apply( { debits => [$debitCharge] } ); |
| 5547 |
|
| 5548 |
is( |
| 5549 |
Koha::Items->find( $item->itemnumber )->itemlost, 1, |
| 5550 |
"Payment should not change itemlost status when UpdateItemLostStatusWhenPaid is 0" |
| 5551 |
); |
| 5552 |
|
| 5553 |
# Test for UpdateItemLostStatusWhenWriteOff |
| 5554 |
t::lib::Mocks::mock_preference( 'UpdateItemLostStatusWhenWriteOff', 0 ); |
| 5555 |
|
| 5556 |
my $writeOffLine = Koha::Account::Line->new( |
| 5557 |
{ |
| 5558 |
borrowernumber => $patron->borrowernumber, |
| 5559 |
credit_type_code => 'WRITEOFF', |
| 5560 |
status => undef, |
| 5561 |
itemnumber => $item->itemnumber, |
| 5562 |
amountoutstanding => 0 - 12, |
| 5563 |
amount => 0 - 12, |
| 5564 |
interface => 'something', |
| 5565 |
} |
| 5566 |
)->store(); |
| 5567 |
|
| 5568 |
$offset = Koha::Account::Offset->new( |
| 5569 |
{ |
| 5570 |
credit_id => $writeOffLine->id, |
| 5571 |
debit_id => $debitCharge->id, |
| 5572 |
type => 'APPLY', |
| 5573 |
amount => 0 |
| 5574 |
} |
| 5575 |
)->store(); |
| 5576 |
|
| 5577 |
$writeOffLine->apply( { debits => [$debitCharge] } ); |
| 5578 |
|
| 5579 |
is( |
| 5580 |
Koha::Items->find( $item->itemnumber )->itemlost, 1, |
| 5581 |
"Write-off should not change itemlost status when UpdateItemLostStatusWhenWriteOff is 0" |
| 5582 |
); |
| 5583 |
}; |
| 5584 |
|
| 5585 |
# Test for UpdateItemLostStatusWhenPaid |
| 5586 |
subtest 'Update lost item to authorized value on payment of balance' => sub { |
| 5587 |
plan tests => 5; |
| 5588 |
|
| 5589 |
my $library = $builder->build_object( { class => "Koha::Libraries" } ); |
| 5590 |
my $manager = $builder->build_object( { class => "Koha::Patrons" } ); |
| 5591 |
t::lib::Mocks::mock_userenv( { patron => $manager, branchcode => $manager->branchcode } ); |
| 5592 |
|
| 5593 |
my $biblio = $builder->build_sample_biblio; |
| 5594 |
my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); |
| 5595 |
|
| 5596 |
for my $status ( 2 .. 6 ) { |
| 5597 |
t::lib::Mocks::mock_preference( 'UpdateItemLostStatusWhenPaid', $status ); |
| 5598 |
|
| 5599 |
my $item = $builder->build_sample_item( |
| 5600 |
{ |
| 5601 |
biblionumber => $biblio->biblionumber, |
| 5602 |
library => $library->branchcode, |
| 5603 |
replacementprice => 99, |
| 5604 |
itype => $itemtype, |
| 5605 |
itemlost => 1, |
| 5606 |
} |
| 5607 |
); |
| 5608 |
|
| 5609 |
my $debitCharge = Koha::Account::Line->new( |
| 5610 |
{ |
| 5611 |
borrowernumber => $patron->borrowernumber, |
| 5612 |
debit_type_code => 'LOST', |
| 5613 |
status => undef, |
| 5614 |
itemnumber => $item->itemnumber, |
| 5615 |
amount => 12, |
| 5616 |
amountoutstanding => 12, |
| 5617 |
interface => 'something', |
| 5618 |
} |
| 5619 |
)->store(); |
| 5620 |
|
| 5621 |
my $paymentLine = Koha::Account::Line->new( |
| 5622 |
{ |
| 5623 |
borrowernumber => $patron->borrowernumber, |
| 5624 |
credit_type_code => 'CREDIT', |
| 5625 |
status => undef, |
| 5626 |
itemnumber => $item->itemnumber, |
| 5627 |
amountoutstanding => 0 - 12, |
| 5628 |
amount => 0 - 12, |
| 5629 |
interface => 'something', |
| 5630 |
} |
| 5631 |
)->store(); |
| 5632 |
|
| 5633 |
my $offset = Koha::Account::Offset->new( |
| 5634 |
{ |
| 5635 |
credit_id => $paymentLine->id, |
| 5636 |
debit_id => $debitCharge->id, |
| 5637 |
type => 'APPLY', |
| 5638 |
amount => 0 |
| 5639 |
} |
| 5640 |
)->store(); |
| 5641 |
|
| 5642 |
$paymentLine->apply( { debits => [$debitCharge] } ); |
| 5643 |
|
| 5644 |
is( |
| 5645 |
Koha::Items->find( $item->itemnumber )->itemlost, $status, |
| 5646 |
"Payment should set itemlost to status $status" |
| 5647 |
); |
| 5648 |
} |
| 5649 |
}; |
| 5650 |
|
| 5651 |
# Test for UpdateItemLostStatusWhenWriteOff |
| 5652 |
subtest 'Update lost item to authorized value on write-off of balance' => sub { |
| 5653 |
plan tests => 5; |
| 5654 |
|
| 5655 |
my $library = $builder->build_object( { class => "Koha::Libraries" } ); |
| 5656 |
my $manager = $builder->build_object( { class => "Koha::Patrons" } ); |
| 5657 |
t::lib::Mocks::mock_userenv( { patron => $manager, branchcode => $manager->branchcode } ); |
| 5658 |
|
| 5659 |
my $biblio = $builder->build_sample_biblio; |
| 5660 |
my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); |
| 5661 |
|
| 5662 |
for my $status ( 2 .. 6 ) { |
| 5663 |
t::lib::Mocks::mock_preference( 'UpdateItemLostStatusWhenWriteOff', $status ); |
| 5664 |
|
| 5665 |
my $item = $builder->build_sample_item( |
| 5666 |
{ |
| 5667 |
biblionumber => $biblio->biblionumber, |
| 5668 |
library => $library->branchcode, |
| 5669 |
replacementprice => 99, |
| 5670 |
itype => $itemtype, |
| 5671 |
itemlost => 1, |
| 5672 |
} |
| 5673 |
); |
| 5674 |
|
| 5675 |
my $debitCharge = Koha::Account::Line->new( |
| 5676 |
{ |
| 5677 |
borrowernumber => $patron->borrowernumber, |
| 5678 |
debit_type_code => 'LOST', |
| 5679 |
status => undef, |
| 5680 |
itemnumber => $item->itemnumber, |
| 5681 |
amount => 12, |
| 5682 |
amountoutstanding => 12, |
| 5683 |
interface => 'something', |
| 5684 |
} |
| 5685 |
)->store(); |
| 5686 |
|
| 5687 |
my $writeOffLine = Koha::Account::Line->new( |
| 5688 |
{ |
| 5689 |
borrowernumber => $patron->borrowernumber, |
| 5690 |
credit_type_code => 'WRITEOFF', |
| 5691 |
status => undef, |
| 5692 |
itemnumber => $item->itemnumber, |
| 5693 |
amountoutstanding => 0 - 12, |
| 5694 |
amount => 0 - 12, |
| 5695 |
interface => 'something', |
| 5696 |
} |
| 5697 |
)->store(); |
| 5698 |
|
| 5699 |
my $offset = Koha::Account::Offset->new( |
| 5700 |
{ |
| 5701 |
credit_id => $writeOffLine->id, |
| 5702 |
debit_id => $debitCharge->id, |
| 5703 |
type => 'APPLY', |
| 5704 |
amount => 0 |
| 5705 |
} |
| 5706 |
)->store(); |
| 5707 |
|
| 5708 |
$writeOffLine->apply( { debits => [$debitCharge] } ); |
| 5709 |
|
| 5710 |
is( |
| 5711 |
Koha::Items->find( $item->itemnumber )->itemlost, $status, |
| 5712 |
"Write-off should set itemlost to status $status" |
| 5713 |
); |
| 5714 |
} |
| 5715 |
}; |
| 5716 |
|
| 5490 |
subtest 'Filling a hold should cancel existing transfer' => sub { |
5717 |
subtest 'Filling a hold should cancel existing transfer' => sub { |
| 5491 |
plan tests => 4; |
5718 |
plan tests => 4; |
| 5492 |
|
5719 |
|
| 5493 |
- |
|
|