Lines 6795-6800
subtest 'Test CanBookBeIssued param ignore_reserves (Bug 35322)' => sub {
Link Here
|
6795 |
|
6795 |
|
6796 |
}; |
6796 |
}; |
6797 |
|
6797 |
|
|
|
6798 |
subtest 'NoRefundOnLostFinesPaidAge' => sub { |
6799 |
plan tests => 2; |
6800 |
|
6801 |
t::lib::Mocks::mock_preference( 'BlockReturnOfLostItems', 0 ); |
6802 |
my $library = $builder->build_object( { class => 'Koha::Libraries' } ); |
6803 |
my $patron = $builder->build_object( |
6804 |
{ |
6805 |
class => 'Koha::Patrons', |
6806 |
value => { categorycode => $patron_category->{categorycode} } |
6807 |
} |
6808 |
); |
6809 |
|
6810 |
my $biblionumber = $builder->build_sample_biblio( |
6811 |
{ |
6812 |
branchcode => $library->branchcode, |
6813 |
} |
6814 |
)->biblionumber; |
6815 |
|
6816 |
Koha::CirculationRules->search->delete; |
6817 |
Koha::CirculationRules->set_rules( |
6818 |
{ |
6819 |
categorycode => undef, |
6820 |
itemtype => undef, |
6821 |
branchcode => undef, |
6822 |
rules => { |
6823 |
issuelength => 14, |
6824 |
lengthunit => 'days', |
6825 |
} |
6826 |
} |
6827 |
); |
6828 |
$builder->build( |
6829 |
{ |
6830 |
source => 'CirculationRule', |
6831 |
value => { |
6832 |
branchcode => undef, |
6833 |
categorycode => undef, |
6834 |
itemtype => undef, |
6835 |
rule_name => 'lostreturn', |
6836 |
rule_value => 'refund' |
6837 |
} |
6838 |
} |
6839 |
); |
6840 |
|
6841 |
my $item = $builder->build_sample_item( |
6842 |
{ |
6843 |
biblionumber => $biblionumber, |
6844 |
library => $library->branchcode, |
6845 |
} |
6846 |
); |
6847 |
my $lost_on = dt_from_string->subtract( days => 5 )->date; |
6848 |
my $issue = AddIssue( $patron, $item->barcode ); |
6849 |
LostItem( $item->itemnumber, 'cli', 0 ); |
6850 |
$item->_result->itemlost(1); |
6851 |
$item->_result->itemlost_on($lost_on); |
6852 |
$item->_result->update(); |
6853 |
|
6854 |
my $debit = Koha::Account::Line->new( |
6855 |
{ |
6856 |
borrowernumber => $patron->id, |
6857 |
date => '1970-01-01 14:00:01', |
6858 |
amount => 5, |
6859 |
amountoutstanding => 0, |
6860 |
interface => 'commandline', |
6861 |
debit_type_code => 'LOST', |
6862 |
itemnumber => $item->itemnumber |
6863 |
} |
6864 |
)->store(); |
6865 |
my $credit = Koha::Account::Line->new( |
6866 |
{ |
6867 |
borrowernumber => $patron->id, |
6868 |
date => '1970-01-01 14:00:01', |
6869 |
amountoutstanding => 0, |
6870 |
amount => -5, |
6871 |
|
6872 |
interface => 'commandline', |
6873 |
credit_type_code => 'PAYMENT' |
6874 |
} |
6875 |
)->store(); |
6876 |
my $offset = Koha::Account::Offset->new( |
6877 |
{ |
6878 |
credit_id => $credit->id, |
6879 |
debit_id => $debit->id, |
6880 |
type => 'APPLY', |
6881 |
amount => -5, |
6882 |
created_on => '1971-01-01 14:00:01' |
6883 |
} |
6884 |
)->store(); |
6885 |
|
6886 |
t::lib::Mocks::mock_preference( 'NoRefundOnLostFinesPaidAge', undef ); |
6887 |
my ( $return, $messages ) = AddReturn( $item->barcode, $library->branchcode, undef, dt_from_string ); |
6888 |
|
6889 |
is( $patron->account->balance, -5, 'Lost fine has been refunded' ); |
6890 |
|
6891 |
my $patron2 = $builder->build_object( |
6892 |
{ |
6893 |
class => 'Koha::Patrons', |
6894 |
value => { categorycode => $patron_category->{categorycode} } |
6895 |
} |
6896 |
); |
6897 |
my $item2 = $builder->build_sample_item( |
6898 |
{ |
6899 |
biblionumber => $biblionumber, |
6900 |
library => $library->branchcode, |
6901 |
} |
6902 |
); |
6903 |
my $lost_on2 = dt_from_string->subtract( days => 5 )->date; |
6904 |
my $issue2 = AddIssue( $patron2, $item2->barcode ); |
6905 |
LostItem( $item2->itemnumber, 'cli', 0 ); |
6906 |
$item2->_result->itemlost(1); |
6907 |
$item2->_result->itemlost_on($lost_on2); |
6908 |
$item2->_result->update(); |
6909 |
|
6910 |
my $debit2 = Koha::Account::Line->new( |
6911 |
{ |
6912 |
borrowernumber => $patron2->id, |
6913 |
date => '1970-01-01 14:00:01', |
6914 |
amount => 5, |
6915 |
amountoutstanding => 0, |
6916 |
interface => 'commandline', |
6917 |
debit_type_code => 'LOST', |
6918 |
itemnumber => $item2->itemnumber |
6919 |
} |
6920 |
)->store(); |
6921 |
my $credit2 = Koha::Account::Line->new( |
6922 |
{ |
6923 |
borrowernumber => $patron2->id, |
6924 |
date => '1970-01-01 14:00:01', |
6925 |
amount => -5, |
6926 |
amountoutstanding => 0, |
6927 |
interface => 'commandline', |
6928 |
credit_type_code => 'PAYMENT' |
6929 |
} |
6930 |
)->store(); |
6931 |
my $offset2 = Koha::Account::Offset->new( |
6932 |
{ |
6933 |
credit_id => $credit2->id, |
6934 |
debit_id => $debit2->id, |
6935 |
type => 'APPLY', |
6936 |
amount => -5, |
6937 |
created_on => '1971-01-01 14:00:01' |
6938 |
} |
6939 |
)->store(); |
6940 |
|
6941 |
t::lib::Mocks::mock_preference( 'NoRefundOnLostFinesPaidAge', 5 ); |
6942 |
my ( $return2, $messages2 ) = AddReturn( $item2->barcode, $library->branchcode, undef, dt_from_string ); |
6943 |
|
6944 |
is( |
6945 |
$patron2->account->balance, 0, |
6946 |
'Lost fine has not been refunded as it is older than NoRefundOnLostFinesPaidAge' |
6947 |
); |
6948 |
}; |
6949 |
|
6798 |
|
6950 |
|
6799 |
$schema->storage->txn_rollback; |
6951 |
$schema->storage->txn_rollback; |
6800 |
C4::Context->clear_syspref_cache(); |
6952 |
C4::Context->clear_syspref_cache(); |
6801 |
- |
|
|