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 |
- |
|
|