| 
      
            Lines 3-11
          
      
      
        Link Here
      
     | 
  
        
          | 3 | 
          #written 11/1/2000 by chris@katipo.oc.nz  | 
          3 | 
          #written 11/1/2000 by chris@katipo.oc.nz  | 
        
        
          | 4 | 
          #script to display borrowers account details  | 
          4 | 
          #script to display borrowers account details  | 
        
        
          | 5 | 
           | 
          5 | 
           | 
        
            
              | 6 | 
               | 
               | 
               | 
            
        
          | 7 | 
          # Copyright 2000-2002 Katipo Communications  | 
          6 | 
          # Copyright 2000-2002 Katipo Communications  | 
        
        
          | 8 | 
          # Copyright 2010 BibLibre  | 
          7 | 
          # Copyright 2010 BibLibre  | 
        
            
               | 
               | 
              8 | 
              # Copyright 2019 PTFS Europe  | 
            
        
          | 9 | 
          #  | 
          9 | 
          #  | 
        
        
          | 10 | 
          # This file is part of Koha.  | 
          10 | 
          # This file is part of Koha.  | 
        
        
          | 11 | 
          #  | 
          11 | 
          #  | 
        
  
    | 
      
            Lines 36-129
          use Koha::Items;
      
      
        Link Here
      
     | 
  
        
          | 36 | 
          use Koha::Patrons;  | 
          36 | 
          use Koha::Patrons;  | 
        
        
          | 37 | 
           | 
          37 | 
           | 
        
        
          | 38 | 
          use Koha::Patron::Categories;  | 
          38 | 
          use Koha::Patron::Categories;  | 
        
            
               | 
               | 
              39 | 
              use Koha::Account::DebitTypes;  | 
            
        
          | 39 | 
           | 
          40 | 
           | 
        
          
            
              | 40 | 
              my $input=new CGI;  | 
              41 | 
              my $input = new CGI;  | 
            
            
              | 41 | 
              my $flagsrequired = { borrowers => 'edit_borrowers' }; | 
               | 
               | 
            
        
          | 42 | 
          my ( $template, $loggedinuser, $cookie ) = get_template_and_user(  | 
          42 | 
          my ( $template, $loggedinuser, $cookie ) = get_template_and_user(  | 
        
          
            
              | 43 | 
                  {   template_name   => "members/maninvoice.tt", | 
              43 | 
                  { | 
            
            
               | 
               | 
              44 | 
                      template_name   => "members/maninvoice.tt",  | 
            
        
          | 44 | 
                  query           => $input,  | 
          45 | 
                  query           => $input,  | 
        
        
          | 45 | 
                  type            => "intranet",  | 
          46 | 
                  type            => "intranet",  | 
        
        
          | 46 | 
                  authnotrequired => 0,  | 
          47 | 
                  authnotrequired => 0,  | 
        
          
            
              | 47 | 
                      flagsrequired   => $flagsrequired,  | 
              48 | 
                      flagsrequired   => { | 
            
            
              | 48 | 
                      debug           => 1,  | 
              49 | 
                          borrowers     => 'edit_borrowers',  | 
            
            
               | 
               | 
              50 | 
                          updatecharges => 'remaining_permissions'  | 
            
            
              | 51 | 
                      }  | 
            
        
          | 49 | 
              }  | 
          52 | 
              }  | 
        
        
          | 50 | 
          );  | 
          53 | 
          );  | 
        
        
          | 51 | 
           | 
          54 | 
           | 
        
          
            
              | 52 | 
              my $borrowernumber=$input->param('borrowernumber'); | 
              55 | 
              my $borrowernumber = $input->param('borrowernumber'); | 
            
            
              | 53 | 
               | 
              56 | 
              my $patron         = Koha::Patrons->find($borrowernumber);  | 
            
            
              | 54 | 
              my $patron = Koha::Patrons->find( $borrowernumber );  | 
              57 | 
              unless ($patron) { | 
            
            
              | 55 | 
              unless ( $patron ) { | 
              58 | 
                  print $input->redirect(  | 
            
            
              | 56 | 
                  print $input->redirect("/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrowernumber"); | 
              59 | 
                      "/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrowernumber");  | 
            
        
          | 57 | 
              exit;  | 
          60 | 
              exit;  | 
        
        
          | 58 | 
          }  | 
          61 | 
          }  | 
        
        
          | 59 | 
           | 
          62 | 
           | 
        
          
            
              | 60 | 
              my $add=$input->param('add'); | 
              63 | 
              my $library_id = C4::Context->userenv->{'branch'}; | 
            
            
              | 61 | 
              if ($add){ | 
               | 
               | 
            
            
              | 62 | 
                  if ( checkauth( $input, 0, $flagsrequired, 'intranet' ) ) { | 
            
            
              | 63 | 
                      output_and_exit( $input, $cookie, $template,  'wrong_csrf_token' )  | 
            
            
              | 64 | 
                          unless Koha::Token->new->check_csrf( { | 
            
            
              | 65 | 
                              session_id => scalar $input->cookie('CGISESSID'), | 
            
            
              | 66 | 
                              token => scalar $input->param('csrf_token'), | 
            
            
              | 67 | 
                          });  | 
            
            
              | 68 | 
                      # Note: If the logged in user is not allowed to see this patron an invoice can be forced  | 
            
            
              | 69 | 
                      # Here we are trusting librarians not to hack the system  | 
            
            
              | 70 | 
                      my $barcode=$input->param('barcode'); | 
            
            
              | 71 | 
                      my $itemnum;  | 
            
            
              | 72 | 
                      if ($barcode) { | 
            
            
              | 73 | 
                          my $item = Koha::Items->find({barcode => $barcode}); | 
            
            
              | 74 | 
                          $itemnum = $item->itemnumber if $item;  | 
            
            
              | 75 | 
                      }  | 
            
            
              | 76 | 
                      my $desc=$input->param('desc'); | 
            
            
              | 77 | 
                      my $amount=$input->param('amount'); | 
            
            
              | 78 | 
                      my $type=$input->param('type'); | 
            
            
              | 79 | 
                      my $note    = $input->param('note'); | 
            
            
              | 80 | 
                      my $error   = C4::Accounts::manualinvoice( $borrowernumber, $itemnum, $desc, $type, $amount, $note );  | 
            
            
              | 81 | 
                      if ($error) { | 
            
            
              | 82 | 
                          if ( $error =~ /FOREIGN KEY/ && $error =~ /itemnumber/ ) { | 
            
            
              | 83 | 
                              $template->param( 'ITEMNUMBER' => 1 );  | 
            
            
              | 84 | 
                          }  | 
            
            
              | 85 | 
                          $template->param( csrf_token => Koha::Token->new->generate_csrf({ session_id => scalar $input->cookie('CGISESSID') }) ); | 
            
            
              | 86 | 
                          $template->param( 'ERROR' => $error );  | 
            
            
              | 87 | 
                          output_html_with_http_headers $input, $cookie, $template->output;  | 
            
            
              | 88 | 
                      } else { | 
            
        
          | 89 | 
           | 
          64 | 
           | 
        
          
            
              | 90 | 
                          if ( C4::Context->preference('AccountAutoReconcile') ) { | 
              65 | 
              my $add = $input->param('add'); | 
            
            
              | 91 | 
                              $patron->account->reconcile_balance;  | 
              66 | 
              if ($add) { | 
            
            
              | 92 | 
                          }  | 
              67 | 
                  output_and_exit( $input, $cookie, $template, 'wrong_csrf_token' )  | 
            
            
              | 93 | 
               | 
              68 | 
                    unless Koha::Token->new->check_csrf(  | 
            
            
              | 94 | 
                          print $input->redirect("/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber"); | 
              69 | 
                      { | 
            
            
              | 95 | 
                          exit;  | 
              70 | 
                          session_id => scalar $input->cookie('CGISESSID'), | 
            
            
               | 
               | 
              71 | 
                          token      => scalar $input->param('csrf_token'), | 
            
        
          | 96 | 
                  }  | 
          72 | 
                  }  | 
        
            
               | 
               | 
              73 | 
                    );  | 
            
            
              | 74 | 
               | 
            
            
              | 75 | 
              # Note: If the logged in user is not allowed to see this patron an invoice can be forced  | 
            
            
              | 76 | 
              # Here we are trusting librarians not to hack the system  | 
            
            
              | 77 | 
                  my $barcode = $input->param('barcode'); | 
            
            
              | 78 | 
                  my $itemnum;  | 
            
            
              | 79 | 
                  if ($barcode) { | 
            
            
              | 80 | 
                      my $item = Koha::Items->find( { barcode => $barcode } ); | 
            
            
              | 81 | 
                      $itemnum = $item->itemnumber if $item;  | 
            
        
          | 97 | 
              }  | 
          82 | 
              }  | 
        
          
            
              | 98 | 
              } else { | 
              83 | 
                  my $desc   = $input->param('desc'); | 
            
            
              | 99 | 
               | 
              84 | 
                  my $amount = $input->param('amount'); | 
            
            
              | 100 | 
                  my ($template, $loggedinuser, $cookie) = get_template_and_user({ | 
              85 | 
                  my $type   = $input->param('type'); | 
            
            
              | 101 | 
                      template_name   => "members/maninvoice.tt",  | 
              86 | 
                  my $note   = $input->param('note'); | 
            
            
              | 102 | 
                      query           => $input,  | 
              87 | 
                  my $error =  | 
            
            
              | 103 | 
                      type            => "intranet",  | 
              88 | 
                    C4::Accounts::manualinvoice( $borrowernumber, $itemnum, $desc, $type,  | 
            
            
              | 104 | 
                      authnotrequired => 0,  | 
              89 | 
                      $amount, $note );  | 
            
            
              | 105 | 
                      flagsrequired   => { borrowers => 'edit_borrowers', | 
              90 | 
                  if ($error) { | 
            
            
              | 106 | 
                                           updatecharges => 'remaining_permissions' },  | 
              91 | 
                      if ( $error =~ /FOREIGN KEY/ && $error =~ /itemnumber/ ) { | 
            
            
              | 107 | 
                      debug           => 1,  | 
              92 | 
                          $template->param( 'ITEMNUMBER' => 1 );  | 
            
            
              | 108 | 
                  });  | 
              93 | 
                      }  | 
            
            
               | 
               | 
              94 | 
                      $template->param(  | 
            
            
              | 95 | 
                          csrf_token => Koha::Token->new->generate_csrf(  | 
            
            
              | 96 | 
                              { session_id => scalar $input->cookie('CGISESSID') } | 
            
            
              | 97 | 
                          )  | 
            
            
              | 98 | 
                      );  | 
            
            
              | 99 | 
                      $template->param( 'ERROR' => $error );  | 
            
            
              | 100 | 
                      output_html_with_http_headers $input, $cookie, $template->output;  | 
            
            
              | 101 | 
                  }  | 
            
            
              | 102 | 
                  else { | 
            
        
          | 109 | 
           | 
          103 | 
           | 
        
          
            
              | 110 | 
                  my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in";  | 
              104 | 
                      if ( C4::Context->preference('AccountAutoReconcile') ) { | 
            
            
              | 111 | 
                  output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } ); | 
              105 | 
                          $patron->account->reconcile_balance;  | 
            
            
               | 
               | 
              106 | 
                      }  | 
            
        
          | 112 | 
           | 
          107 | 
           | 
        
          
            
              | 113 | 
                # get authorised values with type of MANUAL_INV  | 
              108 | 
                      print $input->redirect(  | 
            
            
              | 114 | 
                my @invoice_types;  | 
              109 | 
                          "/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber"  | 
            
            
              | 115 | 
                my $dbh = C4::Context->dbh;  | 
              110 | 
                      );  | 
            
            
              | 116 | 
                my $sth = $dbh->prepare('SELECT * FROM authorised_values WHERE category = "MANUAL_INV"'); | 
              111 | 
                      exit;  | 
            
            
              | 117 | 
                $sth->execute();  | 
              112 | 
                  }  | 
            
            
              | 118 | 
                while ( my $row = $sth->fetchrow_hashref() ) { | 
              113 | 
              }  | 
            
            
              | 119 | 
                  push @invoice_types, $row;  | 
              114 | 
              else { | 
            
            
              | 120 | 
                }  | 
              115 | 
               | 
            
            
              | 121 | 
                $template->param( invoice_types_loop => \@invoice_types );  | 
              116 | 
                  my $logged_in_user = Koha::Patrons->find($loggedinuser)  | 
            
            
               | 
               | 
              117 | 
                    or die "Not logged in";  | 
            
            
              | 118 | 
                  output_and_exit_if_error(  | 
            
            
              | 119 | 
                      $input, $cookie,  | 
            
            
              | 120 | 
                      $template,  | 
            
            
              | 121 | 
                      { | 
            
            
              | 122 | 
                          module         => 'members',  | 
            
            
              | 123 | 
                          logged_in_user => $logged_in_user,  | 
            
            
              | 124 | 
                          current_patron => $patron  | 
            
            
              | 125 | 
                      }  | 
            
            
              | 126 | 
                  );  | 
            
        
          | 122 | 
           | 
          127 | 
           | 
        
            
               | 
               | 
              128 | 
                  my @debit_types = Koha::Account::DebitTypes->search_with_library_limits(  | 
            
            
              | 129 | 
                      { can_be_added_manually => 1 }, | 
            
            
              | 130 | 
                      {}, $library_id ); | 
            
            
              | 131 | 
                  $template->param( debit_types => \@debit_types );  | 
            
        
          | 123 | 
              $template->param(  | 
          132 | 
              $template->param(  | 
        
          
            
              | 124 | 
                      csrf_token => Koha::Token->new->generate_csrf({ session_id => scalar $input->cookie('CGISESSID') }), | 
              133 | 
                      csrf_token => Koha::Token->new->generate_csrf(  | 
            
            
              | 125 | 
                      patron         => $patron,  | 
              134 | 
                          { session_id => scalar $input->cookie('CGISESSID') } | 
            
            
              | 126 | 
                      finesview      => 1,  | 
              135 | 
                      ),  | 
            
            
               | 
               | 
              136 | 
                      patron    => $patron,  | 
            
            
              | 137 | 
                      finesview => 1,  | 
            
        
          | 127 | 
              );  | 
          138 | 
              );  | 
        
        
          | 128 | 
              output_html_with_http_headers $input, $cookie, $template->output;  | 
          139 | 
              output_html_with_http_headers $input, $cookie, $template->output;  | 
        
        
          | 129 | 
          }  | 
          140 | 
          }  | 
        
            
              | 130 | 
              -   | 
               | 
               |