Feature 5388: Print Invoices (documents) list gets too long. Fixed by default 180...
[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                 
19                 if (i.name != 'amount' && i.name != 'charge' && i.name != 'discount')
20                         change = Math.min(change, get_amount('maxval'+i.name.substr(6), 1))
21
22                 price_format(i.name, change, user.pdec);
23                 if (i.name != 'amount' && i.name != 'charge') {
24                         if (change<0) change = 0;
25                         change = change-i.getAttribute('_last');
26                         if (i.name == 'discount') change = -change;
27
28                         var total = get_amount('amount')+change;
29                         price_format('amount', total, user.pdec, 0);
30                 }
31 }
32
33 function allocate_all(doc) {
34         var amount = get_amount('amount'+doc);
35         var unallocated = get_amount('un_allocated'+doc);
36         var total = get_amount('amount');
37         var left = 0;
38         total -=  (amount-unallocated);
39         left -= (amount-unallocated);
40         amount = unallocated;
41         if(left<0) {
42                 total  += left;
43                 amount += left;
44                 left = 0;
45         }
46         price_format('amount'+doc, amount, user.pdec);
47         price_format('amount', total, user.pdec);
48 }
49
50 function allocate_none(doc) {
51         amount = get_amount('amount'+doc);
52         total = get_amount('amount');
53         price_format('amount'+doc, 0, user.pdec);
54         price_format('amount', total-amount, user.pdec);
55 }
56
57 var allocations = {
58         '.amount': function(e) {
59                 if(e.name == 'allocated_amount' || e.name == 'bank_amount')
60                 {
61                   e.onblur = function() {
62                         var dec = this.getAttribute("dec");
63                         price_format(this.name, get_amount(this.name), dec);
64                   };
65                 } else {
66                         e.onblur = function() {
67                                 blur_alloc(this);
68                         };
69                         e.onfocus = function() {
70                                 focus_alloc(this);
71                         };
72                 }
73         }
74 }
75
76 Behaviour.register(allocations);