| Lines 20-25
          use Modern::Perl;
      
      
        Link Here | 
        
          | 20 |  | 20 |  | 
        
          | 21 | use Test::More tests => 27; | 21 | use Test::More tests => 27; | 
        
          | 22 | use Test::MockModule; | 22 | use Test::MockModule; | 
            
              |  |  | 23 | use Test::Exception; | 
        
          | 23 | use Test::Warn; | 24 | use Test::Warn; | 
        
          | 24 |  | 25 |  | 
        
          | 25 | use t::lib::TestBuilder; | 26 | use t::lib::TestBuilder; | 
  
    | Lines 143-149
          $dbh->do(q|DELETE FROM accountlines|);
      
      
        Link Here | 
        
          | 143 |  | 144 |  | 
        
          | 144 | subtest "Koha::Account::pay tests" => sub { | 145 | subtest "Koha::Account::pay tests" => sub { | 
        
          | 145 |  | 146 |  | 
          
            
              | 146 |     plan tests => 14; | 147 |     plan tests => 13; | 
        
          | 147 |  | 148 |  | 
        
          | 148 |     # Create a borrower | 149 |     # Create a borrower | 
        
          | 149 |     my $categorycode = $builder->build({ source => 'Category' })->{ categorycode }; | 150 |     my $categorycode = $builder->build({ source => 'Category' })->{ categorycode }; | 
  
    | Lines 201-238
          subtest "Koha::Account::pay tests" => sub {
      
      
        Link Here | 
        
          | 201 |     my $note = $sth->fetchrow_array; | 202 |     my $note = $sth->fetchrow_array; | 
        
          | 202 |     is($note,'$20.00 payment note', '$20.00 payment note is registered'); | 203 |     is($note,'$20.00 payment note', '$20.00 payment note is registered'); | 
        
          | 203 |  | 204 |  | 
          
            
              | 204 |     # We make a -$30 payment (a NEGATIVE payment) | 205 |     # We attempt to make a -$30 payment (a NEGATIVE payment) | 
        
          | 205 |     $data = '-30.00'; | 206 |     $data = '-30.00'; | 
        
          | 206 |     $payment_note = '-$30.00 payment note'; | 207 |     $payment_note = '-$30.00 payment note'; | 
          
            
              | 207 |     $account->pay( { amount => $data, note => $payment_note } ); | 208 |     throws_ok { $account->pay( { amount => $data, note => $payment_note } ) } qr//, 'Croaked on call to pay with negative amount'; | 
            
              | 208 |  |  |  | 
            
              | 209 |     # There is now $310 in the account | 
            
              | 210 |     $sth = $dbh->prepare("SELECT amountoutstanding FROM accountlines WHERE borrowernumber=?"); | 
            
              | 211 |     $amountoutstanding = $dbh->selectcol_arrayref($sth, {}, $borrower->borrowernumber); | 
            
              | 212 |     $amountleft = 0; | 
            
              | 213 |     for my $line ( @$amountoutstanding ) { | 
            
              | 214 |         $amountleft += $line; | 
            
              | 215 |     } | 
            
              | 216 |     is($amountleft, 310, 'The account has $310 as expected' ); | 
            
              | 217 |     # Is the payment note well registered | 
            
              | 218 |     $sth = $dbh->prepare("SELECT note FROM accountlines WHERE borrowernumber=? ORDER BY accountlines_id DESC LIMIT 1"); | 
            
              | 219 |     $sth->execute($borrower->borrowernumber); | 
            
              | 220 |     $note = $sth->fetchrow_array; | 
            
              | 221 |     is($note,'-$30.00 payment note', '-$30.00 payment note is registered'); | 
        
          | 222 |  | 209 |  | 
        
          | 223 |     #We make a $150 payment ( > 1stLine ) | 210 |     #We make a $150 payment ( > 1stLine ) | 
        
          | 224 |     $data = '150.00'; | 211 |     $data = '150.00'; | 
        
          | 225 |     $payment_note = '$150.00 payment note'; | 212 |     $payment_note = '$150.00 payment note'; | 
        
          | 226 |     $account->pay( { amount => $data, note => $payment_note } ); | 213 |     $account->pay( { amount => $data, note => $payment_note } ); | 
        
          | 227 |  | 214 |  | 
          
            
              | 228 |     # There is now $160 in the account | 215 |     # There is now $130 in the account | 
        
          | 229 |     $sth = $dbh->prepare("SELECT amountoutstanding FROM accountlines WHERE borrowernumber=?"); | 216 |     $sth = $dbh->prepare("SELECT amountoutstanding FROM accountlines WHERE borrowernumber=?"); | 
        
          | 230 |     $amountoutstanding = $dbh->selectcol_arrayref($sth, {}, $borrower->borrowernumber); | 217 |     $amountoutstanding = $dbh->selectcol_arrayref($sth, {}, $borrower->borrowernumber); | 
        
          | 231 |     $amountleft = 0; | 218 |     $amountleft = 0; | 
        
          | 232 |     for my $line ( @$amountoutstanding ) { | 219 |     for my $line ( @$amountoutstanding ) { | 
        
          | 233 |         $amountleft += $line; | 220 |         $amountleft += $line; | 
        
          | 234 |     } | 221 |     } | 
          
            
              | 235 |     is($amountleft, 160, 'The account has $160 as expected' ); | 222 |     is($amountleft, 130, 'The account has $130 as expected' ); | 
        
          | 236 |  | 223 |  | 
        
          | 237 |     # Is the payment note well registered | 224 |     # Is the payment note well registered | 
        
          | 238 |     $sth = $dbh->prepare("SELECT note FROM accountlines WHERE borrowernumber=? ORDER BY accountlines_id DESC LIMIT 1"); | 225 |     $sth = $dbh->prepare("SELECT note FROM accountlines WHERE borrowernumber=? ORDER BY accountlines_id DESC LIMIT 1"); | 
  
    | Lines 245-258
          subtest "Koha::Account::pay tests" => sub {
      
      
        Link Here | 
        
          | 245 |     $payment_note = '$200.00 payment note'; | 232 |     $payment_note = '$200.00 payment note'; | 
        
          | 246 |     $account->pay( { amount => $data, note => $payment_note } ); | 233 |     $account->pay( { amount => $data, note => $payment_note } ); | 
        
          | 247 |  | 234 |  | 
          
            
              | 248 |     # There is now -$40 in the account | 235 |     # There is now -$70 in the account | 
        
          | 249 |     $sth = $dbh->prepare("SELECT amountoutstanding FROM accountlines WHERE borrowernumber=?"); | 236 |     $sth = $dbh->prepare("SELECT amountoutstanding FROM accountlines WHERE borrowernumber=?"); | 
        
          | 250 |     $amountoutstanding = $dbh->selectcol_arrayref($sth, {}, $borrower->borrowernumber); | 237 |     $amountoutstanding = $dbh->selectcol_arrayref($sth, {}, $borrower->borrowernumber); | 
        
          | 251 |     $amountleft = 0; | 238 |     $amountleft = 0; | 
        
          | 252 |     for my $line ( @$amountoutstanding ) { | 239 |     for my $line ( @$amountoutstanding ) { | 
        
          | 253 |         $amountleft += $line; | 240 |         $amountleft += $line; | 
        
          | 254 |     } | 241 |     } | 
          
            
              | 255 |     is($amountleft, -40, 'The account has -$40 as expected, (credit situation)' ); | 242 |     is($amountleft, -70, 'The account has -$70 as expected, (credit situation)' ); | 
        
          | 256 |  | 243 |  | 
        
          | 257 |     # Is the payment note well registered | 244 |     # Is the payment note well registered | 
        
          | 258 |     $sth = $dbh->prepare("SELECT note FROM accountlines WHERE borrowernumber=? ORDER BY accountlines_id DESC LIMIT 1"); | 245 |     $sth = $dbh->prepare("SELECT note FROM accountlines WHERE borrowernumber=? ORDER BY accountlines_id DESC LIMIT 1"); | 
  
    | Lines 352-358
          subtest "Koha::Account::pay writeoff tests" => sub {
      
      
        Link Here | 
        
          | 352 |     my $writeoff = Koha::Account::Lines->find( $id ); | 339 |     my $writeoff = Koha::Account::Lines->find( $id ); | 
        
          | 353 |  | 340 |  | 
        
          | 354 |     is( $writeoff->credit_type_code, 'WRITEOFF', 'Type is correct for WRITEOFF' ); | 341 |     is( $writeoff->credit_type_code, 'WRITEOFF', 'Type is correct for WRITEOFF' ); | 
          
            
              | 355 |     is( $writeoff->description, 'Writeoff', 'Description is correct' ); | 342 |     is( $writeoff->description, '', 'Description is correct' ); | 
        
          | 356 |     is( $writeoff->amount+0, -42, 'Amount is correct' ); | 343 |     is( $writeoff->amount+0, -42, 'Amount is correct' ); | 
        
          | 357 | }; | 344 | }; | 
        
          | 358 |  | 345 |  | 
  
    | Lines 411-417
          subtest "More Koha::Account::pay tests" => sub {
      
      
        Link Here | 
        
          | 411 |         is( $stat->type, 'payment', "Correct statistic type" ); | 398 |         is( $stat->type, 'payment', "Correct statistic type" ); | 
        
          | 412 |         is( $stat->branch, $branch, "Correct branch logged to statistics" ); | 399 |         is( $stat->branch, $branch, "Correct branch logged to statistics" ); | 
        
          | 413 |         is( $stat->borrowernumber, $borrowernumber, "Correct borrowernumber logged to statistics" ); | 400 |         is( $stat->borrowernumber, $borrowernumber, "Correct borrowernumber logged to statistics" ); | 
          
            
              | 414 |         is( $stat->value+0, $amount, "Correct amount logged to statistics" ); | 401 |         is( $stat->value+0, -$amount, "Correct amount logged to statistics" ); | 
        
          | 415 |     } | 402 |     } | 
        
          | 416 | }; | 403 | }; | 
        
          | 417 |  | 404 |  | 
  
    | Lines 471-477
          subtest "Even more Koha::Account::pay tests" => sub {
      
      
        Link Here | 
        
          | 471 |         is( $stat->type, 'payment', "Correct statistic type" ); | 458 |         is( $stat->type, 'payment', "Correct statistic type" ); | 
        
          | 472 |         is( $stat->branch, $branch, "Correct branch logged to statistics" ); | 459 |         is( $stat->branch, $branch, "Correct branch logged to statistics" ); | 
        
          | 473 |         is( $stat->borrowernumber, $borrowernumber, "Correct borrowernumber logged to statistics" ); | 460 |         is( $stat->borrowernumber, $borrowernumber, "Correct borrowernumber logged to statistics" ); | 
          
            
              | 474 |         is( $stat->value+0, $partialamount, "Correct amount logged to statistics" ); | 461 |         is( $stat->value+0, -$partialamount, "Correct amount logged to statistics" ); | 
        
          | 475 |     } | 462 |     } | 
        
          | 476 | }; | 463 | }; | 
        
          | 477 |  | 464 |  | 
            
              | 478 | -  |  |  |