| 
      
            Lines 278-283
          sub apply {
      
      
        Link Here
      
     | 
  
        
          | 278 | 
              return $available_credit;  | 
          278 | 
              return $available_credit;  | 
        
        
          | 279 | 
          }  | 
          279 | 
          }  | 
        
        
          | 280 | 
           | 
          280 | 
           | 
        
            
               | 
               | 
              281 | 
              =head3 payout  | 
            
            
              | 282 | 
               | 
            
            
              | 283 | 
                $credit_accountline->payout(  | 
            
            
              | 284 | 
                  { | 
            
            
              | 285 | 
                      payout_type => $payout_type,  | 
            
            
              | 286 | 
                      register_id => $register_id,  | 
            
            
              | 287 | 
                      amount      => $amount  | 
            
            
              | 288 | 
                  }  | 
            
            
              | 289 | 
                );  | 
            
            
              | 290 | 
               | 
            
            
              | 291 | 
              Used to 'pay out' a credit to a user.  | 
            
            
              | 292 | 
               | 
            
            
              | 293 | 
              Payout type may be one of any existing payment types  | 
            
            
              | 294 | 
               | 
            
            
              | 295 | 
              =cut  | 
            
            
              | 296 | 
               | 
            
            
              | 297 | 
              sub payout { | 
            
            
              | 298 | 
                  my ( $self, $params ) = @_;  | 
            
            
              | 299 | 
               | 
            
            
              | 300 | 
                  # Make sure it is a credit we are paying out  | 
            
            
              | 301 | 
                  unless ( $self->is_credit ) { | 
            
            
              | 302 | 
                      Koha::Exceptions::Account::IsNotCredit->throw(  | 
            
            
              | 303 | 
                          error => 'Account line ' . $self->id . ' is not a credit' );  | 
            
            
              | 304 | 
                  }  | 
            
            
              | 305 | 
               | 
            
            
              | 306 | 
                  unless ( $params->{interface} ) { | 
            
            
              | 307 | 
                      Koha::Exceptions::MissingParameter->throw(  | 
            
            
              | 308 | 
                          error => 'The interface parameter is mandatory' );  | 
            
            
              | 309 | 
                  }  | 
            
            
              | 310 | 
               | 
            
            
              | 311 | 
                  # Make sure there is outstanding credit to pay out  | 
            
            
              | 312 | 
                  my $amount =  | 
            
            
              | 313 | 
                    $params->{amount} ? $params->{amount} : $self->amountoutstanding; | 
            
            
              | 314 | 
                  return unless $self->amountoutstanding >= $amount;  | 
            
            
              | 315 | 
               | 
            
            
              | 316 | 
                  # Make sure we record the cash register for cash transactions  | 
            
            
              | 317 | 
                  Koha::Exceptions::Account::RegisterRequired->throw()  | 
            
            
              | 318 | 
                    if ( C4::Context->preference("UseCashRegisters") | 
            
            
              | 319 | 
                      && defined( $params->{payout_type} ) | 
            
            
              | 320 | 
                      && ( $params->{payout_type} eq 'CASH' ) | 
            
            
              | 321 | 
                      && !defined( $params->{cash_register} ) ); | 
            
            
              | 322 | 
               | 
            
            
              | 323 | 
                  $params->{branch} //= $self->branchcode; | 
            
            
              | 324 | 
               | 
            
            
              | 325 | 
                  my $payout;  | 
            
            
              | 326 | 
                  $self->_result->result_source->schema->txn_do(  | 
            
            
              | 327 | 
                      sub { | 
            
            
              | 328 | 
               | 
            
            
              | 329 | 
                          # A 'payout' is a 'debit'  | 
            
            
              | 330 | 
                          $payout = Koha::Account::Line->new(  | 
            
            
              | 331 | 
                              { | 
            
            
              | 332 | 
                                  date              => \'NOW()',  | 
            
            
              | 333 | 
                                  amount            => 0 - $amount,  | 
            
            
              | 334 | 
                                  debit_type_code   => 'PAYOUT',  | 
            
            
              | 335 | 
                                  payment_type      => $params->{payout_type}, | 
            
            
              | 336 | 
                                  amountoutstanding => 0,  | 
            
            
              | 337 | 
                                  manager_id        => $params->{staff_id}, | 
            
            
              | 338 | 
                                  borrowernumber    => $params->{patron_id}, | 
            
            
              | 339 | 
                                  interface         => $params->{interface}, | 
            
            
              | 340 | 
                                  branchcode        => $params->{branch}, | 
            
            
              | 341 | 
                                  register_id       => $params->{cash_register}, | 
            
            
              | 342 | 
                                  note              => $params->{quantity} | 
            
            
              | 343 | 
                              }  | 
            
            
              | 344 | 
                          )->store();  | 
            
            
              | 345 | 
               | 
            
            
              | 346 | 
                          my $payout_offset = Koha::Account::Offset->new(  | 
            
            
              | 347 | 
                              { | 
            
            
              | 348 | 
                                  debit_id => $payout->accountlines_id,  | 
            
            
              | 349 | 
                                  type     => 'PAYOUT',  | 
            
            
              | 350 | 
                                  amount   => 0 - $amount  | 
            
            
              | 351 | 
                              }  | 
            
            
              | 352 | 
                          )->store();  | 
            
            
              | 353 | 
               | 
            
            
              | 354 | 
                          my $application_offset = Koha::Account::Offset->new(  | 
            
            
              | 355 | 
                              { | 
            
            
              | 356 | 
                                  debit_id  => $payout->accountlines_id,  | 
            
            
              | 357 | 
                                  credit_id => $self->accountlines_id,  | 
            
            
              | 358 | 
                                  type      => 'PAYOUT',  | 
            
            
              | 359 | 
                                  amount    => 0 - $amount  | 
            
            
              | 360 | 
                              }  | 
            
            
              | 361 | 
                          )->store();  | 
            
            
              | 362 | 
               | 
            
            
              | 363 | 
                          $self->status('PAID')->store; | 
            
            
              | 364 | 
                      }  | 
            
            
              | 365 | 
                  );  | 
            
            
              | 366 | 
               | 
            
            
              | 367 | 
                  return $payout;  | 
            
            
              | 368 | 
              }  | 
            
            
              | 369 | 
               | 
            
        
          | 281 | 
          =head3 adjust  | 
          370 | 
          =head3 adjust  | 
        
        
          | 282 | 
           | 
          371 | 
           | 
        
        
          | 283 | 
          This method allows updating a debit or credit on a patron's account  | 
          372 | 
          This method allows updating a debit or credit on a patron's account  | 
        
            
              | 284 | 
              -   | 
               | 
               |