Bugzilla – Attachment 98662 Details for
Bug 22393
Remove last remaining manualinvoice use
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 22393: Remove last remaining use of C4::Accounts::manualinvoice
Bug-22393-Remove-last-remaining-use-of-C4Accountsm.patch (text/plain), 6.40 KB, created by
Martin Renvoize (ashimema)
on 2020-02-10 15:13:35 UTC
(
hide
)
Description:
Bug 22393: Remove last remaining use of C4::Accounts::manualinvoice
Filename:
MIME Type:
Creator:
Martin Renvoize (ashimema)
Created:
2020-02-10 15:13:35 UTC
Size:
6.40 KB
patch
obsolete
>From 25cd004f1cfdc781e61bddc37f7679c904833c79 Mon Sep 17 00:00:00 2001 >From: Martin Renvoize <martin.renvoize@ptfs-europe.com> >Date: Mon, 10 Feb 2020 14:55:13 +0000 >Subject: [PATCH] Bug 22393: Remove last remaining use of > C4::Accounts::manualinvoice > >This patch re-arrange the manualinvoice controller script to clarify >code flow, replaces the last call to C4::Accounts::manualinvoice with a >call to Koha::Accounts->add_debit wrapped in a try catch block. It also >adds a check on passed barcodes when the invoice type is 'LOST' so it >can link the subsequently created accuntline to the item and issue. >--- > members/maninvoice.pl | 142 +++++++++++++++++++++++++----------------- > 1 file changed, 86 insertions(+), 56 deletions(-) > >diff --git a/members/maninvoice.pl b/members/maninvoice.pl >index f271d1f791..665bcbbf73 100755 >--- a/members/maninvoice.pl >+++ b/members/maninvoice.pl >@@ -23,6 +23,7 @@ > # along with Koha; if not, see <http://www.gnu.org/licenses>. > > use Modern::Perl; >+use Try::Tiny; > > use C4::Auth; > use C4::Output; >@@ -60,6 +61,17 @@ unless ($patron) { > exit; > } > >+my $logged_in_user = Koha::Patrons->find($loggedinuser); >+output_and_exit_if_error( >+ $input, $cookie, >+ $template, >+ { >+ module => 'members', >+ logged_in_user => $logged_in_user, >+ current_patron => $patron >+ } >+); >+ > my $library_id = C4::Context->userenv->{'branch'}; > > my $add = $input->param('add'); >@@ -72,69 +84,87 @@ if ($add) { > } > ); > >-# Note: If the logged in user is not allowed to see this patron an invoice can be forced >-# Here we are trusting librarians not to hack the system >+ # Note: If the logged in user is not allowed to see this patron an invoice can be forced >+ # Here we are trusting librarians not to hack the system >+ my $desc = $input->param('desc'); >+ my $amount = $input->param('amount'); >+ my $note = $input->param('note'); >+ my $debit_type = $input->param('type'); >+ >+ # If LOST try to match barcode to Item and then try to match Item + Borrower to an Issue. >+ my $failed; >+ my $item_id; > my $barcode = $input->param('barcode'); >- my $itemnum; > if ($barcode) { > my $item = Koha::Items->find( { barcode => $barcode } ); >- $itemnum = $item->itemnumber if $item; >- } >- my $desc = $input->param('desc'); >- my $amount = $input->param('amount'); >- my $type = $input->param('type'); >- my $note = $input->param('note'); >- my $error = >- C4::Accounts::manualinvoice( $borrowernumber, $itemnum, $desc, $type, >- $amount, $note ); >- if ($error) { >- if ( $error =~ /FOREIGN KEY/ && $error =~ /itemnumber/ ) { >- $template->param( 'ITEMNUMBER' => 1 ); >+ if ($item) { >+ $item_id = $item->itemnumber; >+ } >+ else { >+ $template->param( error => 'itemnumber' ); >+ $failed = 1; > } >- $template->param( >- csrf_token => Koha::Token->new->generate_csrf( >- { session_id => scalar $input->cookie('CGISESSID') } >- ) >- ); >- $template->param( 'ERROR' => $error ); >- output_html_with_http_headers $input, $cookie, $template->output; > } >- else { >+ my $issue_id; >+ if ( $debit_type eq 'LOST' && $item_id ) { >+ my $checkouts = Koha::Checkouts->search( >+ { itemnumber => $item_id, borrowernumber => $borrowernumber } ); >+ my $checkout = >+ $checkouts->count >+ ? $checkouts->next >+ : Koha::Old::Checkouts->search( >+ { itemnumber => $item_id, borrowernumber => $borrowernumber }, >+ { order_by => { -desc => 'returndate' }, rows => 1 } >+ )->next; >+ $issue_id = $checkout ? $checkout->issue_id : undef; >+ } > >- if ( C4::Context->preference('AccountAutoReconcile') ) { >- $patron->account->reconcile_balance; >- } >+ unless ($failed) { >+ try { >+ $patron->account->add_debit( >+ { >+ amount => $amount, >+ description => $desc, >+ note => $note, >+ user_id => $logged_in_user->borrowernumber, >+ interface => 'intranet', >+ library_id => $library_id, >+ type => $debit_type, >+ item_id => $item_id, >+ issue_id => $issue_id >+ } >+ ); > >- print $input->redirect( >- "/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber" >- ); >- exit; >- } >-} >-else { >+ if ( C4::Context->preference('AccountAutoReconcile') ) { >+ $patron->account->reconcile_balance; >+ } > >- my $logged_in_user = Koha::Patrons->find($loggedinuser) >- or die "Not logged in"; >- output_and_exit_if_error( >- $input, $cookie, >- $template, >- { >- module => 'members', >- logged_in_user => $logged_in_user, >- current_patron => $patron >+ print $input->redirect( >+ "/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber" >+ ); >+ exit; >+ } >+ catch { >+ my $error = $_; >+ if ( ref($error) eq 'Koha::Exceptions::Object::FKConstraint' ) { >+ $template->param( error => $error->broken_fk ); >+ } else { >+ $template->param( error => '1' ); >+ } > } >- ); >- >- my @debit_types = Koha::Account::DebitTypes->search_with_library_limits( >- { can_be_invoiced => 1, archived => 0 }, >- {}, $library_id ); >- $template->param( debit_types => \@debit_types ); >- $template->param( >- csrf_token => Koha::Token->new->generate_csrf( >- { session_id => scalar $input->cookie('CGISESSID') } >- ), >- patron => $patron, >- finesview => 1, >- ); >- output_html_with_http_headers $input, $cookie, $template->output; >+ } > } >+ >+my @debit_types = Koha::Account::DebitTypes->search_with_library_limits( >+ { can_be_invoiced => 1, archived => 0 }, >+ {}, $library_id ); >+ >+$template->param( >+ debit_types => \@debit_types, >+ csrf_token => Koha::Token->new->generate_csrf( >+ { session_id => scalar $input->cookie('CGISESSID') } >+ ), >+ patron => $patron, >+ finesview => 1, >+); >+output_html_with_http_headers $input, $cookie, $template->output; >-- >2.20.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 22393
:
85516
|
95298
|
95303
|
95308
|
95309
|
95325
|
95326
|
98662
|
98663
|
103336
|
103382
|
103897
|
103898
|
106773
|
108330
|
108331
|
108332