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