| 
      
            Lines 205-210
          sub apply {
      
      
        Link Here
      
     | 
  
        
          | 205 | 
              return $available_credit;  | 
          205 | 
              return $available_credit;  | 
        
        
          | 206 | 
          }  | 
          206 | 
          }  | 
        
        
          | 207 | 
           | 
          207 | 
           | 
        
            
               | 
               | 
              208 | 
              =head3 adjust  | 
            
            
              | 209 | 
               | 
            
            
              | 210 | 
              This method allows updating a debit or credit on a patron's account  | 
            
            
              | 211 | 
               | 
            
            
              | 212 | 
              my $account_line = Koha::Account->find({ accountlines_id => $line_id })->update( | 
            
            
              | 213 | 
                  { | 
            
            
              | 214 | 
                      amount       => $amount,  | 
            
            
              | 215 | 
                      type         => $update_type,  | 
            
            
              | 216 | 
                  }  | 
            
            
              | 217 | 
              );  | 
            
            
              | 218 | 
               | 
            
            
              | 219 | 
              $update_type can be any of:  | 
            
            
              | 220 | 
                - fine_increment  | 
            
            
              | 221 | 
               | 
            
            
              | 222 | 
              =cut  | 
            
            
              | 223 | 
               | 
            
            
              | 224 | 
              sub adjust { | 
            
            
              | 225 | 
                  my ( $self, $params ) = @_;  | 
            
            
              | 226 | 
               | 
            
            
              | 227 | 
                  my $amount       = $params->{amount}; | 
            
            
              | 228 | 
                  my $update_type  = $params->{type}; | 
            
            
              | 229 | 
               | 
            
            
              | 230 | 
                  unless ( exists($Koha::Account::Line::offset_type->{$update_type}) ) { | 
            
            
              | 231 | 
                      Koha::Exceptions::Account::UnrecognisedType->throw(  | 
            
            
              | 232 | 
                          error => 'Update type not recognised'  | 
            
            
              | 233 | 
                      );  | 
            
            
              | 234 | 
                  }  | 
            
            
              | 235 | 
               | 
            
            
              | 236 | 
                  my $account_type = $self->accounttype;  | 
            
            
              | 237 | 
                  unless ( $Koha::Account::Line::allowed_update->{$update_type} eq $account_type ) { | 
            
            
              | 238 | 
                      Koha::Exceptions::Account::UnrecognisedType->throw(  | 
            
            
              | 239 | 
                          error => 'Update type not allowed on this accounttype'  | 
            
            
              | 240 | 
                      );  | 
            
            
              | 241 | 
                  }  | 
            
            
              | 242 | 
               | 
            
            
              | 243 | 
                  my $schema = Koha::Database->new->schema;  | 
            
            
              | 244 | 
               | 
            
            
              | 245 | 
                  $schema->txn_do(  | 
            
            
              | 246 | 
                      sub { | 
            
            
              | 247 | 
               | 
            
            
              | 248 | 
                          my $amount_before             = $self->amount;  | 
            
            
              | 249 | 
                          my $amount_outstanding_before = $self->amountoutstanding;  | 
            
            
              | 250 | 
                          my $difference                = $amount - $amount_before;  | 
            
            
              | 251 | 
                          my $new_outstanding           = $amount_outstanding_before + $difference;  | 
            
            
              | 252 | 
               | 
            
            
              | 253 | 
                          # Update the account line  | 
            
            
              | 254 | 
                          $self->set(  | 
            
            
              | 255 | 
                              {    | 
            
            
              | 256 | 
                                  date              => \'NOW()',  | 
            
            
              | 257 | 
                                  amount            => $amount,  | 
            
            
              | 258 | 
                                  amountoutstanding => $new_outstanding,  | 
            
            
              | 259 | 
                                  ( $update_type eq 'fine_increment' ? ( lastincrement => $difference ) : ()),  | 
            
            
              | 260 | 
                              }  | 
            
            
              | 261 | 
                          )->store();  | 
            
            
              | 262 | 
               | 
            
            
              | 263 | 
                          # Record the account offset  | 
            
            
              | 264 | 
                          my $account_offset = Koha::Account::Offset->new(  | 
            
            
              | 265 | 
                              { | 
            
            
              | 266 | 
                                  debit_id => $self->id,  | 
            
            
              | 267 | 
                                  type     => $Koha::Account::Line::offset_type->{$update_type}, | 
            
            
              | 268 | 
                                  amount   => $difference  | 
            
            
              | 269 | 
                              }  | 
            
            
              | 270 | 
                          )->store();  | 
            
            
              | 271 | 
               | 
            
            
              | 272 | 
                          if ( C4::Context->preference("FinesLog") ) { | 
            
            
              | 273 | 
                              logaction(  | 
            
            
              | 274 | 
                                  "FINES", 'UPDATE', #undef becomes UPDATE in UpdateFine  | 
            
            
              | 275 | 
                                  $self->borrowernumber,  | 
            
            
              | 276 | 
                                  Dumper(  | 
            
            
              | 277 | 
                                      {   action            => $update_type, | 
            
            
              | 278 | 
                                          borrowernumber    => $self->borrowernumber,  | 
            
            
              | 279 | 
                                          accountno         => $self->accountno,  | 
            
            
              | 280 | 
                                          amount            => $amount,  | 
            
            
              | 281 | 
                                          description       => undef,  | 
            
            
              | 282 | 
                                          amountoutstanding => $new_outstanding,  | 
            
            
              | 283 | 
                                          accounttype       => $self->accounttype,  | 
            
            
              | 284 | 
                                          note              => undef,  | 
            
            
              | 285 | 
                                          itemnumber        => $self->itemnumber,  | 
            
            
              | 286 | 
                                          manager_id        => undef,  | 
            
            
              | 287 | 
                                      }  | 
            
            
              | 288 | 
                                  )  | 
            
            
              | 289 | 
                              ) if ( $update_type eq 'fine_increment' );  | 
            
            
              | 290 | 
                          }  | 
            
            
              | 291 | 
                      }  | 
            
            
              | 292 | 
                  );  | 
            
            
              | 293 | 
               | 
            
            
              | 294 | 
                  return $self;  | 
            
            
              | 295 | 
              }  | 
            
            
              | 296 | 
               | 
            
        
          | 208 | 
          =head3 is_credit  | 
          297 | 
          =head3 is_credit  | 
        
        
          | 209 | 
           | 
          298 | 
           | 
        
        
          | 210 | 
              my $bool = $line->is_credit;  | 
          299 | 
              my $bool = $line->is_credit;  | 
        
  
    | 
      
            Lines 242-244
          sub _type {
      
      
        Link Here
      
     | 
  
        
          | 242 | 
          }  | 
          331 | 
          }  | 
        
        
          | 243 | 
           | 
          332 | 
           | 
        
        
          | 244 | 
          1;  | 
          333 | 
          1;  | 
        
          
            
              | 245 | 
              -   | 
              334 | 
               | 
            
            
               | 
               | 
              335 | 
              =head2 Name mappings  | 
            
            
              | 336 | 
               | 
            
            
              | 337 | 
              =head3 $offset_type  | 
            
            
              | 338 | 
               | 
            
            
              | 339 | 
              =cut  | 
            
            
              | 340 | 
               | 
            
            
              | 341 | 
              our $offset_type = { 'fine_increment' => 'Fine Update', }; | 
            
            
              | 342 | 
               | 
            
            
              | 343 | 
              =head3 $allowed_update  | 
            
            
              | 344 | 
               | 
            
            
              | 345 | 
              =cut  | 
            
            
              | 346 | 
               | 
            
            
              | 347 | 
              our $allowed_update = { 'fine_increment' => 'FU', }; | 
            
            
              | 348 | 
               | 
            
            
              | 349 | 
              =head1 AUTHORS  | 
            
            
              | 350 | 
               | 
            
            
              | 351 | 
              Kyle M Hall <kyle.m.hall@gmail.com>  | 
            
            
              | 352 | 
              Tomás Cohen Arazi <tomascohen@gmail.com>  | 
            
            
              | 353 | 
              Martin Renvoize <martin.renvoize@ptfs-europe.com>  | 
            
            
              | 354 | 
               | 
            
            
              | 355 | 
              =cut  |