| 
      
            Lines 33-105
          use C4::Accounts;
      
      
        Link Here
      
     | 
  
        
          | 33 | 
          use C4::Items;  | 
          33 | 
          use C4::Items;  | 
        
        
          | 34 | 
          use C4::Members::Attributes qw(GetBorrowerAttributes);  | 
          34 | 
          use C4::Members::Attributes qw(GetBorrowerAttributes);  | 
        
        
          | 35 | 
           | 
          35 | 
           | 
        
            
              | 36 | 
              use Koha::Account;  | 
               | 
               | 
            
        
          | 37 | 
          use Koha::Items;  | 
          36 | 
          use Koha::Items;  | 
        
        
          | 38 | 
          use Koha::Patrons;  | 
          37 | 
          use Koha::Patrons;  | 
        
        
          | 39 | 
          use Koha::Patron::Categories;  | 
          38 | 
          use Koha::Patron::Categories;  | 
        
        
          | 40 | 
          use Koha::Token;  | 
          39 | 
          use Koha::Token;  | 
        
        
          | 41 | 
           | 
          40 | 
           | 
        
        
          | 42 | 
          my $input=new CGI;  | 
          41 | 
          my $input=new CGI;  | 
        
            
              | 43 | 
              my $flagsrequired = { borrowers => 'edit_borrowers', updatecharges => 1 }; | 
               | 
               | 
            
        
          | 44 | 
           | 
          42 | 
           | 
        
          
            
              | 45 | 
              my $borrowernumber=$input->param('borrowernumber'); | 
              43 | 
              my ($template, $loggedinuser, $cookie) = get_template_and_user(  | 
            
            
               | 
               | 
              44 | 
                  { | 
            
            
              | 45 | 
                      template_name   => "members/mancredit.tt",  | 
            
            
              | 46 | 
                      query           => $input,  | 
            
            
              | 47 | 
                      type            => "intranet",  | 
            
            
              | 48 | 
                      authnotrequired => 0,  | 
            
            
              | 49 | 
                      flagsrequired   => { borrowers     => 'edit_borrowers', | 
            
            
              | 50 | 
                                           updatecharges => 'remaining_permissions' }  | 
            
            
              | 51 | 
                  }  | 
            
            
              | 52 | 
              );  | 
            
            
              | 53 | 
               | 
            
            
              | 54 | 
              my $logged_in_user = Koha::Patrons->find($loggedinuser) or die "Not logged in";  | 
            
            
              | 55 | 
              my $borrowernumber = $input->param('borrowernumber'); | 
            
            
              | 56 | 
              my $patron         = Koha::Patrons->find($borrowernumber);  | 
            
        
          | 46 | 
           | 
          57 | 
           | 
        
            
              | 47 | 
              my $patron = Koha::Patrons->find( $borrowernumber );  | 
               | 
               | 
            
        
          | 48 | 
          unless ( $patron ) { | 
          58 | 
          unless ( $patron ) { | 
        
        
          | 49 | 
              print $input->redirect("/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrowernumber"); | 
          59 | 
              print $input->redirect("/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrowernumber"); | 
        
        
          | 50 | 
              exit;  | 
          60 | 
              exit;  | 
        
        
          | 51 | 
          }  | 
          61 | 
          }  | 
        
          
            
              | 52 | 
              my $add=$input->param('add'); | 
              62 | 
              my $add = $input->param('add'); | 
            
        
          | 53 | 
           | 
          63 | 
           | 
        
        
          | 54 | 
          if ($add){ | 
          64 | 
          if ($add){ | 
        
        
          | 55 | 
           | 
          65 | 
           | 
        
          
            
              | 56 | 
                  my ( $user_id ) = checkauth( $input, 0, $flagsrequired, 'intranet' );  | 
              66 | 
                  die "Wrong CSRF token"  | 
            
            
              | 57 | 
               | 
              67 | 
                      unless Koha::Token->new->check_csrf( { | 
            
            
              | 58 | 
                  if ( $user_id ) { | 
              68 | 
                          session_id => scalar $input->cookie('CGISESSID'), | 
            
            
              | 59 | 
               | 
              69 | 
                          token  => scalar $input->param('csrf_token'), | 
            
            
              | 60 | 
                      die "Wrong CSRF token"  | 
               | 
               | 
            
            
              | 61 | 
                          unless Koha::Token->new->check_csrf( { | 
            
            
              | 62 | 
                              session_id => scalar $input->cookie('CGISESSID'), | 
            
            
              | 63 | 
                              token  => scalar $input->param('csrf_token'), | 
            
            
              | 64 | 
                          });  | 
            
            
              | 65 | 
               | 
            
            
              | 66 | 
                      # Note: If the logged in user is not allowed to see this patron an invoice can be forced  | 
            
            
              | 67 | 
                      # Here we are trusting librarians not to hack the system  | 
            
            
              | 68 | 
                      my $barcode = $input->param('barcode'); | 
            
            
              | 69 | 
                      my $item_id;  | 
            
            
              | 70 | 
                      if ($barcode) { | 
            
            
              | 71 | 
                          my $item = Koha::Items->find({barcode => $barcode}); | 
            
            
              | 72 | 
                          $item_id = $item->itemnumber if $item;  | 
            
            
              | 73 | 
                      }  | 
            
            
              | 74 | 
                      my $description = $input->param('desc'); | 
            
            
              | 75 | 
                      my $note        = $input->param('note'); | 
            
            
              | 76 | 
                      my $amount      = $input->param('amount') || 0; | 
            
            
              | 77 | 
                      my $type        = $input->param('type'); | 
            
            
              | 78 | 
               | 
            
            
              | 79 | 
                      Koha::Account->new({ patron_id => $borrowernumber })->add_credit({ | 
            
            
              | 80 | 
                          amount      => $amount,  | 
            
            
              | 81 | 
                          description => $description,  | 
            
            
              | 82 | 
                          item_id     => $item_id,  | 
            
            
              | 83 | 
                          note        => $note,  | 
            
            
              | 84 | 
                          type        => $type,  | 
            
            
              | 85 | 
                          user_id     => $user_id  | 
            
        
          | 86 | 
                  });  | 
          70 | 
                  });  | 
        
        
          | 87 | 
           | 
          71 | 
           | 
        
          
            
              | 88 | 
                      print $input->redirect("/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber"); | 
              72 | 
                  # Note: If the logged in user is not allowed to see this patron an invoice can be forced  | 
            
            
               | 
               | 
              73 | 
                  # Here we are trusting librarians not to hack the system  | 
            
            
              | 74 | 
                  my $barcode = $input->param('barcode'); | 
            
            
              | 75 | 
                  my $item_id;  | 
            
            
              | 76 | 
                  if ($barcode) { | 
            
            
              | 77 | 
                      my $item = Koha::Items->find({barcode => $barcode}); | 
            
            
              | 78 | 
                      $item_id = $item->itemnumber if $item;  | 
            
        
          | 89 | 
              }  | 
          79 | 
              }  | 
        
            
               | 
               | 
              80 | 
                  my $description = $input->param('desc'); | 
            
            
              | 81 | 
                  my $note        = $input->param('note'); | 
            
            
              | 82 | 
                  my $amount      = $input->param('amount') || 0; | 
            
            
              | 83 | 
                  my $type        = $input->param('type'); | 
            
            
              | 84 | 
               | 
            
            
              | 85 | 
                  $patron->account->add_credit({ | 
            
            
              | 86 | 
                      amount      => $amount,  | 
            
            
              | 87 | 
                      description => $description,  | 
            
            
              | 88 | 
                      item_id     => $item_id,  | 
            
            
              | 89 | 
                      note        => $note,  | 
            
            
              | 90 | 
                      type        => $type,  | 
            
            
              | 91 | 
                      user_id     => $logged_in_user->id  | 
            
            
              | 92 | 
                  });  | 
            
            
              | 93 | 
               | 
            
            
              | 94 | 
                  print $input->redirect("/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber"); | 
            
            
              | 95 | 
               | 
            
        
          | 90 | 
          } else { | 
          96 | 
          } else { | 
        
            
              | 91 | 
                  my ($template, $loggedinuser, $cookie) = get_template_and_user(  | 
               | 
               | 
            
            
              | 92 | 
                      { | 
            
            
              | 93 | 
                          template_name   => "members/mancredit.tt",  | 
            
            
              | 94 | 
                          query           => $input,  | 
            
            
              | 95 | 
                          type            => "intranet",  | 
            
            
              | 96 | 
                          authnotrequired => 0,  | 
            
            
              | 97 | 
                          flagsrequired   => { borrowers     => 'edit_borrowers', | 
            
            
              | 98 | 
                                               updatecharges => 'remaining_permissions' },  | 
            
            
              | 99 | 
                          debug           => 1,  | 
            
            
              | 100 | 
                      }  | 
            
            
              | 101 | 
                  );  | 
            
            
              | 102 | 
                  my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in";  | 
            
        
          | 103 | 
              output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } ); | 
          97 | 
              output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } ); | 
        
        
          | 104 | 
           | 
          98 | 
           | 
        
        
          | 105 | 
              if (C4::Context->preference('ExtendedPatronAttributes')) { | 
          99 | 
              if (C4::Context->preference('ExtendedPatronAttributes')) { | 
        
            
              | 106 | 
              -   | 
               | 
               |