Restored reversed transaction option.
[fa-stable.git] / gl / includes / ui / gl_journal_ui.inc
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 include_once($path_to_root . "/includes/ui.inc");
13 include_once($path_to_root . "/includes/ui/items_cart.inc");
14
15 //--------------------------------------------------------------------------------
16
17 function display_order_header(&$Order)
18 {
19         global $table_style2, $Ajax;
20
21         $qes = has_quick_entries(QE_JOURNAL);
22         $new = $Order->order_id==0;
23         start_outer_table("$table_style2 width=90%");
24         table_section(1);
25
26         start_row();
27     date_cells(_("Date:"), 'date_', '', $new);
28
29         table_section(2, $qes ? "20%" : "50%");
30         if ($new)
31                 ref_cells(_("Reference:"), 'ref', '');
32         else
33                 label_cells(_("Reference:"), $Order->reference);
34         end_row();
35
36
37         if ($new) {
38                 table_section(3, "20%");
39                 start_row();
40                 check_cells(_("Reverse Transaction:"), 'Reverse', null);
41                 end_row();
42         }
43
44         if ($qes !== false)
45         {
46                 table_section(3, "50%");
47                 start_row();
48                 quick_entries_list_cells(_("Quick Entry").":", 'person_id', null, QE_JOURNAL, true);
49                 $qid = get_quick_entry(get_post('person_id'));
50                 if (list_updated('person_id')) {
51                         unset($_POST['totamount']); // enable default
52                 $Ajax->activate('totamount');
53                 }
54                 amount_cells($qid['base_desc'].":", 'totamount', price_format($qid['base_amount']),
55                  null, "&nbsp;&nbsp;".submit('go', _("Go"), false, false, true));
56                 end_row();
57
58         }
59                 
60         end_outer_table(1);
61 }
62
63 //---------------------------------------------------------------------------------
64
65 function display_gl_items($title, &$order)
66 {
67         global $table_style, $path_to_root;
68
69         display_heading($title);
70
71         $dim = get_company_pref('use_dimension');
72
73     div_start('items_table');
74         start_table("$table_style colspan=7 width=95%");
75         if ($dim == 2)
76                 $th = array(_("Account Code"), _("Account Description"), _("Dimension")." 1",
77                         _("Dimension")." 2", _("Debit"), _("Credit"), _("Memo"), "");
78         else if ($dim == 1)
79                 $th = array(_("Account Code"), _("Account Description"), _("Dimension"),
80                         _("Debit"), _("Credit"), _("Memo"), "");
81         else
82                 $th = array(_("Account Code"), _("Account Description"),
83                         _("Debit"), _("Credit"), _("Memo"), "");
84
85         if (count($order->gl_items)) $th[] = '';
86
87         table_header($th);      
88
89         $k = 0;
90
91         $id = find_submit('Edit');
92         foreach ($order->gl_items as $line => $item) 
93         {
94                 if ($id != $line)
95                 {
96                 alt_table_row_color($k);
97
98                         label_cells($item->code_id, $item->description);
99                 if ($dim >= 1)
100                                 label_cell(get_dimension_string($item->dimension_id, true));
101                 if ($dim > 1)
102                                 label_cell(get_dimension_string($item->dimension2_id, true));
103                 if ($item->amount > 0)
104                 {
105                         amount_cell(abs($item->amount));
106                         label_cell("");
107                 }       
108                 else
109                 {
110                         label_cell("");
111                         amount_cell(abs($item->amount));
112                 }       
113                         label_cell($item->reference);
114
115                         edit_button_cell("Edit$line", _("Edit"),
116                                 _('Edit journal line'));
117                         delete_button_cell("Delete$line", _("Delete"),
118                                 _('Remove line from journal'));
119                 end_row();
120                 } 
121                 else 
122                 {
123                         gl_edit_item_controls($order, $dim, $line);
124                 }
125         }
126
127         if ($id == -1)
128                 gl_edit_item_controls($order, $dim);
129
130         if ($order->count_gl_items()) 
131         {
132                 $colspan = ($dim == 2 ? "4" : ($dim == 1 ? "3" : "2"));
133                 start_row();
134                 label_cell(_("Total"), "align=right colspan=" . $colspan);
135                 amount_cell($order->gl_items_total_debit());
136                 amount_cell(abs($order->gl_items_total_credit()));
137                 label_cell('', "colspan=3");
138                 end_row();
139         }
140
141     end_table();
142         div_end();
143 }
144
145 //---------------------------------------------------------------------------------
146
147 function gl_edit_item_controls(&$order, $dim, $Index=null)
148 {
149         global $Ajax;
150         start_row();
151
152         $id = find_submit('Edit');
153         if ($Index != -1 && $Index == $id)
154         {
155                 $item = $order->gl_items[$Index];
156                 $_POST['code_id'] = $item->code_id;
157                 $_POST['dimension_id'] = $item->dimension_id;
158                 $_POST['dimension2_id'] = $item->dimension2_id;
159                 if ($item->amount > 0)
160                 {
161                         $_POST['AmountDebit'] = price_format($item->amount);
162                         $_POST['AmountCredit'] = "";
163                 }
164                 else
165                 {
166                         $_POST['AmountDebit'] = "";
167                         $_POST['AmountCredit'] = price_format(abs($item->amount));
168                 }       
169                 $_POST['description'] = $item->description;
170                 $_POST['LineMemo'] = $item->reference;
171
172                 hidden('Index', $id);
173                 hidden('code_id', $item->code_id);
174                 label_cell($_POST['code_id']);
175                 label_cell($item->description);
176                 if ($dim >= 1) 
177                         dimensions_list_cells(null, 'dimension_id', null, true, " ", false, 1);
178                 if ($dim > 1) 
179                         dimensions_list_cells(null, 'dimension2_id', null, true, " ", false, 2);
180             $Ajax->activate('items_table');
181         }
182         else
183         {
184                 $_POST['AmountDebit'] = '';  //price_format(0);
185                 $_POST['AmountCredit'] = ''; //price_format(0);
186                 $_POST['dimension_id'] = 0;
187                 $_POST['dimension2_id'] = 0;
188                 $_POST['LineMemo'] = "";
189                 $_POST['_code_id_edit'] = "";
190                 $_POST['code_id'] = "";
191                 if(isset($_POST['_code_id_update'])) {
192                             $Ajax->activate('code_id');
193                 }
194                 
195                 $skip_bank = ($_SESSION["wa_current_user"]->access != 2);
196                 gl_all_accounts_list('code_id', null, $skip_bank, true);
197                 if ($dim >= 1)
198                         dimensions_list_cells(null, 'dimension_id', null, true, " ", false, 1);
199                 if ($dim > 1)
200                         dimensions_list_cells(null, 'dimension2_id', null, true, " ", false, 2);
201         }
202         if ($dim < 1)
203                 hidden('dimension_id', 0);
204         if ($dim < 2)
205                 hidden('dimension2_id', 0);
206
207         small_amount_cells(null, 'AmountDebit');
208         small_amount_cells(null, 'AmountCredit');
209         text_cells_ex(null, 'LineMemo', 35, 50);
210
211         if ($id != -1)
212         {
213                 button_cell('UpdateItem', _("Update"),
214                                 _('Confirm changes'), ICON_UPDATE);
215                 button_cell('CancelItemChanges', _("Cancel"),
216                                 _('Cancel changes'), ICON_CANCEL);
217                 set_focus('amount');
218         } 
219         else 
220                 submit_cells('AddItem', _("Add Item"), "colspan=2",
221                     _('Add new line to journal'), true);
222
223         end_row();
224 }
225
226 //---------------------------------------------------------------------------------
227
228 function gl_options_controls()
229 {
230           echo "<br><table align='center'>";
231
232           textarea_row(_("Memo"), 'memo_', null, 50, 3);
233
234           echo "</table>";
235 }
236
237
238 //---------------------------------------------------------------------------------
239
240 ?>