Bug 3150: (follow-up) Make subs to get host/related parts for notices
[koha-ffzg.git] / members / boraccount.pl
index 7bd5509..83fa43b 100755 (executable)
 # along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 use Modern::Perl;
-use URI::Escape;
+use URI::Escape qw( uri_unescape );
 
-use C4::Auth;
-use C4::Output;
+use C4::Auth qw( get_template_and_user );
+use C4::Output qw( output_and_exit_if_error output_and_exit output_html_with_http_headers );
 use CGI qw ( -utf8 );
 use C4::Members;
 use C4::Accounts;
@@ -46,7 +46,6 @@ my ($template, $loggedinuser, $cookie) = get_template_and_user(
         type            => "intranet",
         flagsrequired   => { borrowers     => 'edit_borrowers',
                              updatecharges => 'remaining_permissions'},
-        debug           => 1,
     }
 );
 
@@ -55,7 +54,7 @@ my $borrowernumber = $input->param('borrowernumber');
 my $payment_id     = $input->param('payment_id');
 my $change_given   = $input->param('change_given');
 my $action         = $input->param('action') || '';
-my @renew_results  = $input->param('renew_result');
+my @renew_results  = $input->multi_param('renew_result');
 
 my $logged_in_user = Koha::Patrons->find( $loggedinuser );
 my $library_id = C4::Context->userenv->{'branch'};
@@ -72,28 +71,51 @@ my $registerid = $input->param('registerid');
 if ( $action eq 'void' ) {
     my $payment_id = scalar $input->param('accountlines_id');
     my $payment    = Koha::Account::Lines->find( $payment_id );
-    $payment->void();
+    $payment->void(
+        {
+            branch    => $library_id,
+            staff_id  => $logged_in_user->id,
+            interface => 'intranet',
+        }
+    );
 }
 
 if ( $action eq 'payout' ) {
-    my $payment_id        = scalar $input->param('accountlines_id');
-    my $payment           = Koha::Account::Lines->find($payment_id);
+    my $payment_id       = scalar $input->param('accountlines_id');
     my $amount           = scalar $input->param('amount');
     my $payout_type = scalar $input->param('payout_type');
-    $schema->txn_do(
-        sub {
-            my $payout = $payment->payout(
-                {
-                    payout_type   => $payout_type,
-                    branch        => $library_id,
-                    staff_id      => $logged_in_user->id,
-                    cash_register => $registerid,
-                    interface     => 'intranet',
-                    amount        => $amount
-                }
-            );
-        }
-    );
+    if ( $payment_id eq "" ) {
+        $schema->txn_do(
+            sub {
+                $patron->account->payout_amount(
+                     {
+                        payout_type   => $payout_type,
+                        branch        => $library_id,
+                        staff_id      => $logged_in_user->id,
+                        cash_register => $registerid,
+                        interface     => 'intranet',
+                        amount        => $amount
+                    }
+                );
+            }
+        );
+    } else {
+        my $payment = Koha::Account::Lines->find($payment_id);
+        $schema->txn_do(
+            sub {
+                my $payout = $payment->payout(
+                    {
+                        payout_type   => $payout_type,
+                        branch        => $library_id,
+                        staff_id      => $logged_in_user->id,
+                        cash_register => $registerid,
+                        interface     => 'intranet',
+                        amount        => $amount
+                    }
+                );
+            }
+        );
+    }
 }
 
 if ( $action eq 'refund' ) {
@@ -152,7 +174,7 @@ if ( $action eq 'discount' ) {
 #get account details
 my $total = $patron->account->balance;
 
-my @accountlines = Koha::Account::Lines->search(
+my $accountlines = Koha::Account::Lines->search(
     { borrowernumber => $patron->borrowernumber },
     { order_by       => { -desc => 'accountlines_id' } }
 );
@@ -187,7 +209,7 @@ $template->param(
     finesview           => 1,
     total               => sprintf("%.2f",$total),
     totalcredit         => $totalcredit,
-    accounts            => \@accountlines,
+    accounts            => $accountlines,
     payment_id          => $payment_id,
     change_given        => $change_given,
     renew_results       => $renew_results_display,