From 29d27220f674ef00c6cce7c28787d8354c5d24d6 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: Show the difference between the amount collected
and the amount paid of a fine payment.
This patch adds a feature in the fine payment section. It allows to see the change due to patrons when the amount collected is higher than the amount paid.
Test plan :
- Apply patch.
- Select a patron with a fine.
- Go to Fines > Pay fines.
- Click the button pay.
- Choose the amount paid equal to the outstanding amount (exemple : 3$).
- Choose the amount collected to be more than the outstanding amount (exemple : 5$).
- Confirm that the change is correct (example : 5$ - 3$ = 2$).
- Click the button confirm.
- Click on Yes in the dialog box.
- Confirm that the payment has been made (example : last amount = 3$).
Signed-off-by: Michal Denar <black23@gmail.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
---
.../prog/en/modules/members/paycollect.tt | 84 +++++++++++++++++--
1 file changed, 76 insertions(+), 8 deletions(-)
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 e0af674642..d3c84c8aea 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt
@@ -99,9 +99,16 @@
<ol>
<li>
- <label for="paid">Collect from patron: </label>
- <!-- default to paying all -->
- <input name="paid" id="paid" value="[% amountoutstanding | html %]" type="text" />
+ <label for="paid">Amount paid: </label>
+ <input name="paid" id="paid" value="[% amountoutstanding | $Price %]"/>
+ </li>
+ <li>
+ <label for="collected">Collect from patron: </label>
+ <input id="collected" value="[% amountoutstanding | $Price %]"/>
+ </li>
+ <li>
+ <label>Change to give: </label>
+ <span id="change">0.00</span>
</li>
[% SET payment_types = AuthorisedValues.GetAuthValueDropbox('PAYMENT_TYPE') %]
[% IF payment_types %]
@@ -191,14 +198,21 @@
<span class="label">Total amount outstanding: </span>
<span class="debit">[% total | format('%.2f') %]</span>
</li>
+ <li>
+ <label for="paid">Amount paid :</label>
+ <input name="paid" id="paid" value="[% total | $Price %]"/>
+ </li>
<li>
[% IF type == 'writeoff' %]
- <label for="paid">Writeoff amount: </label>
+ <label for="collected">Writeoff amount: </label>
[% ELSE %]
- <label for="paid">Collect from patron: </label>
+ <label for="collected">Collect from patron: </label>
[% END %]
- <!-- default to paying all -->
- <input name="paid" id="paid" value="[% total | format('%.2f') %]" type="text" />
+ <input id="collected" value="[% total | $Price %]"/>
+ </li>
+ <li>
+ <label>Change to give: </label>
+ <span id="change">0.00</span>
</li>
[% SET payment_types = AuthorisedValues.GetAuthValueDropbox('PAYMENT_TYPE') %]
[% IF payment_types %]
@@ -233,14 +247,54 @@
</div>
</div>
+<!-- Modal -->
+<a class="hidden" href="#confirm_change_form" data-toggle="modal"></a>
+<div id="confirm_change_form" class="modal" tabindex="-1" role="dialog" aria-hidden="true">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3>Amount collected higher than paid</h3>
+ </div>
+ <div class="modal-body">
+ <p>The amount collected from the patron is higher than the amount paid.</p>
+ <p>The change to give is <b><span id="modal_change">0.00</span></b>.</p>
+ <p>Do you still confirm the payment?</p>
+ </div>
+ <div class="modal-footer">
+ <button class="btn btn-default approve" id="modal_submit" type="button"><i class="fa fa-check"></i> Yes</button>
+ <button class="btn btn-default deny cancel" href="#" data-dismiss="modal" aria-hidden="true"><i class="fa fa-times"></i> No</button>
+ </div>
+ </div>
+ </div>
+</div>
+
[% MACRO jsinclude BLOCK %]
[% INCLUDE 'str/members-menu.inc' %]
[% Asset.js("js/members-menu.js") | $raw %]
<script type= "text/javascript">
$(document).ready(function() {
+ var forms = $('#payindivfine, #payfine');
+ var change = $('#change')[0];
+
$('#payindivfine, #payfine').preventDoubleFormSubmit();
- $("#paid").on("change",function(){
+ $("#paid, #collected").on("change",function() {
moneyFormat( this );
+ if (change != undefined) {
+ updateChangeValues();
+ }
+ });
+
+ if (change != undefined) {
+ forms.bind('submit', function(e) {
+ if (change.innerHTML > 0.00) {
+ e.preventDefault();
+ $('a[href="#confirm_change_form"]').click();
+ }
+ });
+ }
+
+ $('#modal_submit').click(function() {
+ forms[0].submit();
});
});
@@ -310,6 +364,20 @@
textObj.value = dolAmount + "." + decAmount;
}
+
+ function updateChangeValues() {
+ var change = $('#change')[0];
+ change.innerHTML = Math.round(($('#collected')[0].value - $('#paid')[0].value) * 100) / 100;
+ if (change.innerHTML <= 0) {
+ change.innerHTML = "0.00";
+ } else {
+ change.value = change.innerHTML;
+ moneyFormat(change);
+ change.innerHTML = change.value;
+ }
+
+ $('#modal_change').html(change.innerHTML);
+ }
</script>
[% END %]
--
2.19.2