| Line 0
          
      
      
        Link Here | 
          
            
              | 0 | -  | 1 | #!/usr/bin/perl | 
            
              |  |  | 2 |  | 
            
              | 3 | use Modern::Perl; | 
            
              | 4 |  | 
            
              | 5 | use t::lib::Mocks; | 
            
              | 6 | use t::lib::TestBuilder; | 
            
              | 7 |  | 
            
              | 8 | use Test::More tests => 7; | 
            
              | 9 |  | 
            
              | 10 | use MARC::Record; | 
            
              | 11 |  | 
            
              | 12 | use C4::Context; | 
            
              | 13 | use C4::Biblio; | 
            
              | 14 | use C4::Items; | 
            
              | 15 | use C4::Members; | 
            
              | 16 | use Koha::Database; | 
            
              | 17 | use Koha::Holds; | 
            
              | 18 | use Koha::Account::Lines; | 
            
              | 19 |  | 
            
              | 20 | BEGIN { | 
            
              | 21 |     use FindBin; | 
            
              | 22 |     use lib $FindBin::Bin; | 
            
              | 23 |     use_ok('C4::Reserves'); | 
            
              | 24 | } | 
            
              | 25 |  | 
            
              | 26 | my $schema = Koha::Database->new->schema; | 
            
              | 27 | $schema->storage->txn_begin; | 
            
              | 28 |  | 
            
              | 29 | my $builder = t::lib::TestBuilder->new(); | 
            
              | 30 | my $dbh     = C4::Context->dbh; | 
            
              | 31 |  | 
            
              | 32 | # Create two random branchcodees | 
            
              | 33 | my $category   = $builder->build( { source => 'Category' } ); | 
            
              | 34 | my $branchcode = $builder->build( { source => 'Branch' } )->{branchcode}; | 
            
              | 35 |  | 
            
              | 36 | my $borrowers_count = 2; | 
            
              | 37 |  | 
            
              | 38 | my ( $biblionumber, $title, $biblioitemnumber ) = create_helper_biblio('DUMMY'); | 
            
              | 39 |  | 
            
              | 40 | C4::Context->set_preference( 'ExpireReservesMaxPickUpDelayCharge', '5.00' ); | 
            
              | 41 |  | 
            
              | 42 | my ( undef, undef, $itemnumber ) = AddItem( | 
            
              | 43 |     { | 
            
              | 44 |         homebranchcode    => $branchcode, | 
            
              | 45 |         holdingbranchcode => $branchcode | 
            
              | 46 |     }, | 
            
              | 47 |     $biblionumber | 
            
              | 48 | ); | 
            
              | 49 |  | 
            
              | 50 | my $borrowernumber = AddMember( | 
            
              | 51 |     firstname    => 'my firstname', | 
            
              | 52 |     surname      => 'my surname ' . $_, | 
            
              | 53 |     categorycode => $category->{categorycode}, | 
            
              | 54 |     branchcode   => $branchcode, | 
            
              | 55 | ); | 
            
              | 56 |  | 
            
              | 57 | my $id = AddReserve( | 
            
              | 58 |     $branchcode, | 
            
              | 59 |     $borrowernumber, | 
            
              | 60 |     $biblionumber, | 
            
              | 61 |     my $bibitems = q{}, | 
            
              | 62 |     my $priority = C4::Reserves::CalculatePriority($biblionumber), | 
            
              | 63 |     my $resdate, | 
            
              | 64 |     my $expdate, | 
            
              | 65 |     my $notes = q{}, | 
            
              | 66 |     $title, | 
            
              | 67 |     my $checkitem = $itemnumber, | 
            
              | 68 |     my $found, | 
            
              | 69 | ); | 
            
              | 70 |  | 
            
              | 71 | my $hold = Koha::Holds->find($id); | 
            
              | 72 | is( $hold->id, $id, 'Hold created correctly.' ); | 
            
              | 73 |  | 
            
              | 74 | $dbh->do("DELETE FROM accountlines"); | 
            
              | 75 |  | 
            
              | 76 | # Cancel with no cancelation fee | 
            
              | 77 | ModReserveCancelAll( $itemnumber, $borrowernumber ); | 
            
              | 78 |  | 
            
              | 79 | $hold = Koha::Holds->find( $id ); | 
            
              | 80 | is( $hold, undef, 'Hold canceled correctly' ); | 
            
              | 81 |  | 
            
              | 82 | my $accountlines = | 
            
              | 83 |   Koha::Account::Lines->search( { borrowernumber => $borrowernumber } ); | 
            
              | 84 | is( $accountlines->count(), 0, "No charge created for cancelation" ); | 
            
              | 85 |  | 
            
              | 86 | $id = AddReserve( | 
            
              | 87 |     $branchcode, | 
            
              | 88 |     $borrowernumber, | 
            
              | 89 |     $biblionumber, | 
            
              | 90 |     $bibitems = q{}, | 
            
              | 91 |     $priority = C4::Reserves::CalculatePriority($biblionumber), | 
            
              | 92 |     $resdate, | 
            
              | 93 |     $expdate, | 
            
              | 94 |     $notes = q{}, | 
            
              | 95 |     $title, | 
            
              | 96 |     $checkitem = $itemnumber, | 
            
              | 97 |     $found, | 
            
              | 98 | ); | 
            
              | 99 |  | 
            
              | 100 | # Cancel with cancelation fee | 
            
              | 101 | ModReserveCancelAll( $itemnumber, $borrowernumber, 1 ); | 
            
              | 102 |  | 
            
              | 103 | $hold = Koha::Holds->find( $id ); | 
            
              | 104 | is( $hold, undef, 'Hold canceled correctly' ); | 
            
              | 105 |  | 
            
              | 106 | $accountlines = | 
            
              | 107 |   Koha::Account::Lines->search( { borrowernumber => $borrowernumber } ); | 
            
              | 108 | is( $accountlines->count(), 1, "Found charge for cancelation" ); | 
            
              | 109 | is( $accountlines->as_list->[0]->amountoutstanding, '5.000000', 'Charge is equal to ExpireReservesMaxPickUpDelayCharge' ); | 
            
              | 110 |  | 
            
              | 111 | # Helper method to set up a Biblio. | 
            
              | 112 | sub create_helper_biblio { | 
            
              | 113 |     my $itemtype = shift; | 
            
              | 114 |     my $bib      = MARC::Record->new(); | 
            
              | 115 |     my $title    = 'Silence in the library'; | 
            
              | 116 |     $bib->append_fields( | 
            
              | 117 |         MARC::Field->new( '100', ' ', ' ', a => 'Moffat, Steven' ), | 
            
              | 118 |         MARC::Field->new( '245', ' ', ' ', a => $title ), | 
            
              | 119 |         MARC::Field->new( '942', ' ', ' ', c => $itemtype ), | 
            
              | 120 |     ); | 
            
              | 121 |     return ( $biblionumber, $title, $biblioitemnumber ) = AddBiblio( $bib, '' ); | 
            
              | 122 | } |