68a1ff43102285dcda74ec46604f8f2f2e220d90
[fa-stable.git] / sales / allocations / customer_allocate.php
1 <?php
2 /**********************************************************************
3     Copyright (C) FrontAccounting, LLC.
4         Released under the terms of the GNU General Public License, GPL, 
5         as published by the Free Software Foundation, either version 3 
6         of the License, or (at your option) any later version.
7     This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
10     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12 $page_security = 'SA_SALESALLOC';
13 $path_to_root = "../..";
14
15 include($path_to_root . "/includes/ui/allocation_cart.inc");
16 include_once($path_to_root . "/includes/session.inc");
17 include_once($path_to_root . "/includes/data_checks.inc");
18 include_once($path_to_root . "/sales/includes/sales_ui.inc");
19 include_once($path_to_root . "/sales/includes/sales_db.inc");
20
21 $js = "";
22 if ($SysPrefs->use_popup_windows)
23         $js .= get_js_open_window(900, 500);
24
25 add_js_file('allocate.js');
26
27 page(_($help_context = "Allocate Customer Payment or Credit Note"), false, false, "", $js);
28
29 //--------------------------------------------------------------------------------
30
31 function clear_allocations()
32 {
33         if (isset($_SESSION['alloc']))
34         {
35                 unset($_SESSION['alloc']->allocs);
36                 unset($_SESSION['alloc']);
37         }
38         //session_register('alloc');
39 }
40
41 //--------------------------------------------------------------------------------
42
43 function edit_allocations_for_transaction($type, $trans_no)
44 {
45         global $systypes_array;
46
47         $cart = $_SESSION['alloc'];
48         
49         if ($cart->type == ST_JOURNAL && $cart->bank_amount < 0)
50         {
51                 $cart->bank_amount = -$cart->bank_amount;
52                 $cart->amount = -$cart->amount;
53         }       
54     display_heading(sprintf(_("Allocation of %s # %d"), $systypes_array[$cart->type], $cart->trans_no));
55
56     display_heading($cart->person_name);
57
58     display_heading2(_("Date:") . " <b>" . $cart->date_ . "</b>");
59         display_heading2(_("Total:"). " <b>" . price_format($cart->bank_amount).' '.$cart->currency."</b>");
60
61         if (floatcmp($cart->bank_amount, $cart->amount))
62         {
63             $total = _("Amount ot be settled:") . " <b>" . price_format($cart->amount).' '.$cart->person_curr."</b>";
64                 if ($cart->currency != $cart->person_curr)
65                 $total .= sprintf(" (%s %s/%s)",  exrate_format($cart->bank_amount/$cart->amount), $cart->currency, $cart->person_curr);
66                 display_heading2($total);
67         }
68
69     echo "<br>";
70
71         start_form();
72         div_start('alloc_tbl');
73     if (count($cart->allocs) > 0)
74     {
75                 show_allocatable(true);
76         submit_center_first('UpdateDisplay', _("Refresh"), _('Start again allocation of selected amount'), true);
77         submit('Process', _("Process"), true, _('Process allocations'), 'default');
78                 submit_center_last('Cancel', _("Back to Allocations"),_('Abandon allocations and return to selection of allocatable amounts'), 'cancel');
79         }
80         else
81         {
82         display_note(_("There are no unsettled transactions to allocate."), 0, 1);
83
84                 submit_center('Cancel', _("Back to Allocations"), true,
85                         _('Abandon allocations and return to selection of allocatable amounts'), 'cancel');
86     }
87         div_end();
88         end_form();
89 }
90
91 //--------------------------------------------------------------------------------
92
93 if (isset($_POST['Process']))
94 {
95         if (check_allocations())
96         {
97                 write_cust_allocation($_SESSION['alloc']);
98                 clear_allocations();
99                 $_POST['Cancel'] = 1;
100         }
101 }
102 //--------------------------------------------------------------------------------
103
104 if (isset($_POST['Cancel']))
105 {
106         clear_allocations();
107         meta_forward($path_to_root . "/sales/allocations/customer_allocation_main.php");
108 }
109
110 //--------------------------------------------------------------------------------
111
112 if (isset($_GET['trans_no']) && isset($_GET['trans_type']))
113 {
114         clear_allocations();
115         $_SESSION['alloc'] = new allocation($_GET['trans_type'], $_GET['trans_no'], @$_GET['debtor_no'], PT_CUSTOMER);
116 }
117
118 if(get_post('UpdateDisplay'))
119 {
120         $_SESSION['alloc']->read();
121         $Ajax->activate('alloc_tbl');
122 }
123
124 if (isset($_SESSION['alloc']))
125 {
126         edit_allocations_for_transaction($_SESSION['alloc']->type, $_SESSION['alloc']->trans_no);
127 }
128
129 //--------------------------------------------------------------------------------
130
131 end_page();
132