| 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 | -  |  |  |