Bugzilla – Attachment 26108 Details for
Bug 11373
Add "change calculation" feature to the fine payment forms
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 11373: Add a "cash register" feature to the fine payment form.
Bug-11373-Add-a-cash-register-feature-to-the-fine-.patch (text/plain), 11.00 KB, created by
Biblibre Sandboxes
on 2014-03-11 13:10:33 UTC
(
hide
)
Description:
Bug 11373: Add a "cash register" feature to the fine payment form.
Filename:
MIME Type:
Creator:
Biblibre Sandboxes
Created:
2014-03-11 13:10:33 UTC
Size:
11.00 KB
patch
obsolete
>From 253e409aa6226d7f5853c9473d4cc3cd0d14117f Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?Fr=C3=A9d=C3=A9rick?= <frederick.capovilla@libeo.com> >Date: Tue, 10 Dec 2013 16:51:39 -0500 >Subject: [PATCH] Bug 11373: Add a "cash register" feature to the fine payment form. > >If the amount received is greater than the amount to pay, a message is >shown to tell the employee how much money to give back. > >Signed-off-by: Joel Aloi <aloi54@live.fr> >--- > C4/Accounts.pm | 12 ++- > .../prog/en/modules/members/paycollect.tt | 88 ++++++++++++++++---- > members/paycollect.pl | 34 ++++++-- > 3 files changed, 104 insertions(+), 30 deletions(-) > >diff --git a/C4/Accounts.pm b/C4/Accounts.pm >index 3fbb2ad..e474568 100644 >--- a/C4/Accounts.pm >+++ b/C4/Accounts.pm >@@ -696,11 +696,12 @@ sub makepartialpayment { > } > > # create new line >+ my $payment = 0 - $amount; > my $insert = 'INSERT INTO accountlines (borrowernumber, accountno, date, amount, ' > . 'description, accounttype, amountoutstanding, itemnumber, manager_id, note) ' > . ' VALUES (?, ?, now(), ?, ?, ?, 0, ?, ?, ?)'; > >- $dbh->do( $insert, undef, $borrowernumber, $nextaccntno, $amount, >+ $dbh->do( $insert, undef, $borrowernumber, $nextaccntno, $payment, > "Payment, thanks - $user", 'Pay', $data->{'itemnumber'}, $manager_id, $payment_note); > > UpdateStats( $user, 'payment', $amount, '', '', '', $borrowernumber, $accountno ); >@@ -710,7 +711,7 @@ sub makepartialpayment { > action => 'create_payment', > borrowernumber => $user, > accountno => $nextaccntno, >- amount => 0 - $amount, >+ amount => $payment, > accounttype => 'Pay', > itemnumber => $data->{'itemnumber'}, > accountlines_paid => [ $data->{'accountlines_id'} ], >@@ -772,14 +773,15 @@ sub WriteOffFee { > "; > $sth = $dbh->prepare( $query ); > my $acct = getnextacctno($borrowernumber); >- $sth->execute( $borrowernumber, $acct, $itemnum, $amount, $manager_id, $payment_note ); >+ my $payment = 0 - $amount; >+ $sth->execute( $borrowernumber, $acct, $itemnum, $payment, $manager_id, $payment_note ); > > if ( C4::Context->preference("FinesLog") ) { > logaction("FINES", 'CREATE',$borrowernumber,Dumper({ > action => 'create_writeoff', > borrowernumber => $borrowernumber, > accountno => $acct, >- amount => 0 - $amount, >+ amount => $payment, > accounttype => 'W', > itemnumber => $itemnum, > accountlines_paid => [ $accountlines_id ], >@@ -787,7 +789,7 @@ sub WriteOffFee { > })); > } > >- UpdateStats( $branch, 'writeoff', $amount, q{}, q{}, q{}, $borrowernumber ); >+ UpdateStats( $branch, 'writeoff', $payment, q{}, q{}, q{}, $borrowernumber ); > > } > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt >index 9cec275..8b897ee 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt >@@ -3,13 +3,6 @@ > [% INCLUDE 'doc-head-close.inc' %] > <script type= "text/javascript"> > //<![CDATA[ >-$(document).ready(function() { >- $('#payindivfine, #woindivfine, #payfine').preventDoubleFormSubmit(); >-}); >-//]]> >-</script> >-<script type= "text/javascript"> >-//<![CDATA[ > function moneyFormat(textObj) { > var newValue = textObj.value; > var decAmount = ""; >@@ -58,6 +51,10 @@ function moneyFormat(textObj) { > > textObj.value = dolAmount + "." + decAmount; > } >+ >+$(document).ready(function() { >+ $('#payform, #woindivfine').preventDoubleFormSubmit(); >+}); > //]]> > </script> > </head> >@@ -91,14 +88,32 @@ function moneyFormat(textObj) { > </li> > </ul> > <div class="tabs-container"> >-[% IF ( error_over ) %] >+[% IF (error_negative) %] > <div id="error_message" class="dialog alert"> >- You must pay a value less than or equal to [% total_due | format('%.2f') %]. >+ <span>The amount paid can't be negative!</span> > </div> > [% END %] > >+[% IF (error_collected_less) %] >+ <div id="error_message" class="dialog alert"> >+ <span>The amount collected can't be lower than the amount paid!</span> >+ </div> >+[% END %] >+ >+[% UNLESS (writeoff_individual) %] >+ <form name="payform" id="payform" action="/cgi-bin/koha/members/paycollect.pl" method="post"> >+[% END %] >+ >+[% IF (give_change) %] >+ <div id="change_message" class="dialog message"> >+ <span>The amount collected is greater than the total amount paid.</span><br /> >+ <strong>Change to give back: [% give_change %]</strong><br /><br /> >+ <input type="submit" name="submitbutton" value="Confirm payment" /> >+ <a class="cancel" href="/cgi-bin/koha/members/pay.pl?borrowernumber=[% borrower.borrowernumber %]">Cancel</a> >+ </div> >+[% END %] >+ > [% IF ( pay_individual ) %] >- <form name="payindivfine" id="payindivfine" onsubmit="return validatePayment(this);" method="post" action="/cgi-bin/koha/members/paycollect.pl"> > <input type="hidden" name="borrowernumber" id="borrowernumber" value="[% borrower.borrowernumber %]" /> > <input type="hidden" name="pay_individual" id="pay_individual" value="[% pay_individual %]" /> > <input type="hidden" name="itemnumber" id="itemnumber" value="[% itemnumber %]" /> >@@ -140,12 +155,32 @@ function moneyFormat(textObj) { > </table> > > <ol> >- >+ [% IF ( give_change ) %] > <li> >- <label for="paid">Collect from patron: </label> >- <!-- default to paying all --> >- <input name="paid" id="paid" value="[% amountoutstanding | format('%.2f') %]" onchange="moneyFormat(document.payindivfine.paid)"/> >+ <label for="paid">Amount paid:</label> >+ <input type="hidden" name="paid" id="paid" value="[% amount_paid %]" /> >+ <input type="hidden" name="collected" id="collected" value="[% amount_paid %]" /> >+ [% amount_paid %] > </li> >+ <li> >+ <label>Collect from patron:</label> >+ [% amount_collected %] >+ </li> >+ <li> >+ <label>Change to give back:</label> >+ [% give_change %] >+ </li> >+ [% ELSE %] >+ <li> >+ <label for="paid">Amount paid :</label> >+ <input name="paid" id="paid" value="[% amountoutstanding | format('%.2f') %]" onchange="moneyFormat(document.payform.paid)"/> >+ [% amount_paid %] >+ </li> >+ <li> >+ <label for="collected">Collect from patron:</label> >+ <input name="collected" id="collected" value="[% amountoutstanding | format('%.2f') %]" onchange="moneyFormat(document.payform.collected)" /> >+ </li> >+ [% END %] > </ol> > </fieldset> > >@@ -194,7 +229,6 @@ function moneyFormat(textObj) { > </form> > [% ELSE %] > >- <form name="payfine" id="payfine" onsubmit="return validatePayment(this);" method="post" action="/cgi-bin/koha/members/paycollect.pl"> > <input type="hidden" name="borrowernumber" id="borrowernumber" value="[% borrower.borrowernumber %]" /> > <input type="hidden" name="selected_accts" id="selected_accts" value="[% selected_accts %]" /> > <input type="hidden" name="total" id="total" value="[% total %]" /> >@@ -206,11 +240,31 @@ function moneyFormat(textObj) { > <span class="label">Total amount outstanding: </span> > <span class="debit">[% total | format('%.2f') %]</span> > </li> >+ [% IF ( give_change ) %] >+ <li> >+ <label for="paid">Amount paid:</label> >+ <!-- default to paying all --> >+ <input name="paid" id="paid" value="[% total | format('%.2f') %]" onchange="moneyFormat(document.payform.paid)"/> >+ </li> >+ <li> >+ <label>Collect from patron:</label> >+ [% amount_collected %] >+ </li> >+ <li> >+ <label>Change to give back:</label> >+ [% give_change %] >+ </li> >+ [% ELSE %] >+ <li> >+ <label for="paid">Amount paid :</label> >+ <input name="paid" id="paid" value="[% total | format('%.2f') %]" onchange="moneyFormat(document.payform.paid)" /> >+ </li> > <li> >- <label for="paid">Collect from patron: </label> >+ <label for="collected">Collect from patron:</label> > <!-- default to paying all --> >- <input name="paid" id="paid" value="[% total | format('%.2f') %]" onchange="moneyFormat(document.payfine.paid)"/> >+ <input name="collected" id="collected" value="[% total | format('%.2f') %]" onchange="moneyFormat(document.payform.collected)"/> > </li> >+ [% END %] > <li> > <label for="selected_accts_notes">Note: </label> > <textarea name="selected_accts_notes" id="selected_accts_notes">[% selected_accts_notes %]</textarea> >diff --git a/members/paycollect.pl b/members/paycollect.pl >index 96ca0fb..18a6c5d 100755 >--- a/members/paycollect.pl >+++ b/members/paycollect.pl >@@ -51,11 +51,11 @@ my $branch = GetBranch( $input, GetBranches() ); > > my ( $total_due, $accts, $numaccts ) = GetMemberAccountRecords($borrowernumber); > my $total_paid = $input->param('paid'); >+my $total_collected = $input->param('collected'); > > my $individual = $input->param('pay_individual'); > my $writeoff = $input->param('writeoff_individual'); >-my $select_lines = $input->param('selected'); >-my $select = $input->param('selected_accts'); >+my $select = ($input->param('selected') || $input->param('selected_accts')); > my $payment_note = uri_unescape $input->param('payment_note'); > my $accountno; > my $accountlines_id; >@@ -89,20 +89,38 @@ if ( $individual || $writeoff ) { > notify_level => $notify_level, > payment_note => $payment_note, > ); >-} elsif ($select_lines) { >- $total_due = $input->param('amt'); >+} elsif ($select) { >+ $total_due = ($input->param('amt') || $input->param('total')); > $template->param( >- selected_accts => $select_lines, >+ selected_accts => $select, > amt => $total_due, > selected_accts_notes => $input->param('notes'), > ); > } > > if ( $total_paid and $total_paid ne '0.00' ) { >- if ( $total_paid < 0 or $total_paid > $total_due ) { >+ if ( $total_paid < 0 ) { >+ $template->param( >+ error_negative => 1, >+ ); >+ } >+ elsif (($total_collected - $total_paid) < 0) { >+ $template->param( >+ error_collected_less => 1, >+ ); >+ } >+ elsif ($total_paid > $total_due) { > $template->param( >- error_over => 1, >- total_due => $total_due >+ amount_paid => sprintf('%.2f', $total_due), >+ amount_collected => sprintf('%.2f', $total_collected), >+ give_change => sprintf('%.2f',($total_collected-$total_due)) >+ ); >+ } >+ elsif ($total_paid < $total_due and $total_collected ne $total_paid) { >+ $template->param( >+ amount_paid => sprintf('%.2f', $total_paid), >+ amount_collected => sprintf('%.2f', $total_collected), >+ give_change => sprintf('%.2f',($total_collected-$total_paid)) > ); > } else { > if ($individual) { >-- >1.7.2.5
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 11373
:
23382
|
26103
|
26108
|
29757
|
29938
|
36875
|
36876
|
36877
|
60528
|
60529
|
61233
|
61234
|
67348
|
68296
|
70043
|
71975
|
71976
|
77584
|
77585
|
79122
|
79171
|
79188
|
79507
|
79509
|
79529
|
79530
|
79538
|
79549
|
79759
|
79944
|
79951
|
80414
|
80986
|
82420
|
82797
|
83804
|
83812
|
83813
|
84653
|
84654