[0000229] Payment overallocation is now forbidden.
[fa-stable.git] / js / payalloc.js
1 /**********************************************************************
2     Copyright (C) FrontAccounting, LLC.
3         Released under the terms of the GNU General Public License, GPL, 
4         as published by the Free Software Foundation, either version 3 
5         of the License, or (at your option) any later version.
6     This program is distributed in the hope that it will be useful,
7     but WITHOUT ANY WARRANTY; without even the implied warranty of
8     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
9     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
10 ***********************************************************************/
11 function focus_alloc(i) {
12     save_focus(i);
13         i.setAttribute('_last', get_amount(i.name));
14 }
15
16 function blur_alloc(i) {
17         var change = get_amount(i.name);
18                 price_format(i.name, change, user.pdec);                
19                 if (i.name != 'amount' && i.name != 'charge') {
20                         if (change<0) change = 0;
21                         change = change-i.getAttribute('_last');
22                         if (i.name == 'discount') change = -change;
23
24                         var total = get_amount('amount')+change;
25                         price_format('amount', total, user.pdec, 0);
26                 }
27 }
28
29 function allocate_all(doc) {
30         var amount = get_amount('amount'+doc);
31         var unallocated = get_amount('un_allocated'+doc);
32         var total = get_amount('amount');
33         var left = 0;
34         total -=  (amount-unallocated);
35         left -= (amount-unallocated);
36         amount = unallocated;
37         if(left<0) {
38                 total  += left;
39                 amount += left;
40                 left = 0;
41         }
42         price_format('amount'+doc, amount, user.pdec);
43         price_format('amount', total, user.pdec);
44 }
45
46 function allocate_none(doc) {
47         amount = get_amount('amount'+doc);
48         total = get_amount('amount');
49         price_format('amount'+doc, 0, user.pdec);
50         price_format('amount', total-amount, user.pdec);
51 }
52
53 var allocations = {
54         '.amount': function(e) {
55                 e.onblur = function() {
56                         blur_alloc(this);
57                   };
58                 e.onfocus = function() {
59                         focus_alloc(this);
60                 };
61         }
62 }
63
64 Behaviour.register(allocations);