Bug 22359: Prevent undercollection at the server
authorMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 24 Jan 2020 12:23:39 +0000 (12:23 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 21 Feb 2020 15:39:41 +0000 (15:39 +0000)
This patch adds some additional handling to prevent undercollection of
fees at the server side.

Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt
members/paycollect.pl

index dc00be1..3d13d3a 100644 (file)
     You must pay a value less than or equal to [% total_due | format('%.2f') %].
     </div>
 [% END %]
+[% IF ( error_under ) %]
+    <div id="error_message" class="dialog alert">
+    You must collect a value greater than or equal to [% total_paid | format('%.2f') %].
+    </div>
+[% END %]
 
 [% IF ( pay_individual ) %]
     [% IF ( error_registers ) %]
index a7f0e39..5c29053 100755 (executable)
@@ -67,7 +67,8 @@ my $user           = $input->remote_user;
 my $library_id = C4::Context->userenv->{'branch'};
 my $total_due  = $account->outstanding_debits->total_outstanding;
 
-my $total_paid = $input->param('paid');
+my $total_paid      = $input->param('paid');
+my $total_collected = $input->param('collected');
 
 my $selected_lines = $input->param('selected'); # comes from pay.pl
 my $pay_individual   = $input->param('pay_individual');
@@ -164,6 +165,11 @@ if ( $total_paid and $total_paid ne '0.00' ) {
             error_over => 1,
             total_due => $total_due
         );
+    } elsif ( $total_collected < $total_paid && !( $writeoff_individual || $type eq 'writeoff') ) {
+        $template->param(
+            error_under => 1,
+            total_paid => $total_paid
+        );
     } else {
         output_and_exit( $input, $cookie, $template,  'wrong_csrf_token' )
             unless Koha::Token->new->check_csrf( {