Bug [0000047] Not possible to view delivery sequence
[fa-stable.git] / purchasing / includes / ui / invoice_ui.inc
1 <?php
2
3 //--------------------------------------------------------------------------------------------------
4
5 function copy_from_trans(&$supp_trans)
6 {
7         $_POST['Comments'] = $supp_trans->Comments;
8         $_POST['tran_date'] = $supp_trans->tran_date;
9         $_POST['due_date'] = $supp_trans->due_date;
10         $_POST['supp_reference'] = $supp_trans->supp_reference;
11         $_POST['reference'] = $supp_trans->reference;
12         $_POST['supplier_id'] = $supp_trans->supplier_id;
13 }
14
15 //--------------------------------------------------------------------------------------------------
16
17 function copy_to_trans(&$supp_trans)
18 {
19         $supp_trans->Comments = $_POST['Comments'];
20         $supp_trans->tran_date = $_POST['tran_date'];
21         $supp_trans->due_date = $_POST['due_date'];
22         $supp_trans->supp_reference = $_POST['supp_reference'];
23         $supp_trans->reference = $_POST['reference'];
24
25         $supp_trans->ov_amount = 0; /* for starters */
26         if (count($supp_trans->grn_items) > 0)
27         {
28                 foreach ( $supp_trans->grn_items as $grn)
29                 {
30                         $supp_trans->ov_amount += round(($grn->this_quantity_inv * $grn->chg_price),
31                           user_price_dec());
32                 }
33         }
34         if (count($supp_trans->gl_codes) > 0)
35         {
36                 foreach ( $supp_trans->gl_codes as $gl_line)
37                 {
38                         $supp_trans->ov_amount += $gl_line->amount;
39                 }
40         }
41 }
42
43 //--------------------------------------------------------------------------------------------------
44
45 function invoice_header(&$supp_trans)
46 {
47         // if vars have been lost, recopy
48         if (!isset($_POST['tran_date']))
49                 copy_from_trans($supp_trans);
50
51         start_table("width=100%", 5);
52         start_row();
53         echo"<td>"; // outer
54
55         echo "<table width=100%>";
56
57     if (!isset($_POST['supplier_id']) && (get_global_supplier() != reserved_words::get_all()))
58         $_POST['supplier_id'] = get_global_supplier();
59
60         supplier_list_row(_("Supplier:"), 'supplier_id', $_POST['supplier_id'], false, true);
61
62         if ($supp_trans->supplier_id != $_POST['supplier_id'])
63         {
64                 // supplier has changed
65                 // delete all the order items - drastic but necessary because of
66                 // change of currency, etc
67                 $supp_trans->clear_items();
68                 read_supplier_details_to_trans($supp_trans, $_POST['supplier_id']);
69                 copy_from_trans($supp_trans);
70         }
71
72         if ($supp_trans->is_invoice)
73         ref_row(_("Reference:"), 'reference', '', references::get_next(20));
74     else
75         ref_row(_("Reference:"), 'reference', '', references::get_next(21));
76
77         text_row(_("Supplier's Ref.:"), 'supp_reference', $_POST['supp_reference'], 20, 20);
78
79         echo "</table>";
80
81         echo "</td><td class='tableseparator'>"; // outer
82
83         echo "<table width=100%>";
84
85         date_row(_("Date") . ":", 'tran_date', '', null, 0, 0, 0, "", true);
86
87     date_row(_("Due Date") . ":", 'due_date');
88
89     label_row(_("Terms:"), $supp_trans->terms_description);
90
91         echo "</table>";
92
93         echo "</td><td class='tableseparator'>"; // outer
94
95         echo "<table width=100%>";
96
97         $supplier_currency = get_supplier_currency($supp_trans->supplier_id);
98
99         $company_currency = get_company_currency();
100
101         if ($supplier_currency != $company_currency)
102         {
103         label_row(_("Supplier's Currency:"), "<b>" . $supplier_currency . "</b>");
104                 exchange_rate_display($supplier_currency, $company_currency, $_POST['tran_date']);
105         }
106
107   label_row(_("Tax Group:"), $supp_trans->tax_description);
108         echo "</table>";
109
110         echo "</td>";
111         end_row();
112         end_table(); // outer
113 }
114
115 //--------------------------------------------------------------------------------------------------
116
117 function invoice_totals(&$supp_trans)
118 {
119         global $table_style, $table_style2;
120
121         copy_to_trans($supp_trans);
122
123     start_table("$table_style width=95%");
124         label_row(_("Sub-total:"), price_format( $supp_trans->ov_amount), "align=right", "align=right");
125
126     $taxes = $supp_trans->get_taxes($supp_trans->tax_group_id);
127     $tax_total = display_edit_tax_items($taxes, 1, 0); // tax_included==0 (we are the company)
128
129     $display_total = price_format($supp_trans->ov_amount + $tax_total);
130
131         if ($supp_trans->is_invoice)
132         label_row(_("Invoice Total:"), $display_total, "align=right", "align=right");
133     else
134                 label_row("<font color=red>" . _("Credit Note Total:") . "</font>",
135                         "<font color=red><b>$display_total</b></font>", "align=right", "nowrap align=right");
136
137     end_table();
138         br(1);
139     start_table($table_style2);
140     textarea_row(_("Memo:"), "Comments", null, 50, 3);
141     end_table();
142     br(1);
143 }
144
145 //--------------------------------------------------------------------------------------------------
146
147 // $mode = 0 display on invoice page
148 //               = 1 display on gl items edit page
149 //               = 2 display on view invoice
150 //               = 3 display on view credit
151
152 function display_gl_items(&$supp_trans, $mode=0)
153 {
154         global $table_style, $path_to_root;
155
156     if ($mode == 0 && isset($_POST["InvGL"]))
157     {
158         copy_to_trans($supp_trans);
159                 meta_forward("$path_to_root/purchasing/supplier_trans_gl.php");
160         exit;
161     }
162
163     // if displaying in form, and no items, exit
164     if (($mode == 2 || $mode == 3) && count($supp_trans->gl_codes) == 0)
165         return;
166
167         echo "<br>";
168
169         start_table("width=95%");
170         echo "<tr><td>"; // outertable
171
172         if ($supp_trans->is_invoice)
173                 $heading = _("GL Items for this Invoice");
174         else
175                 $heading = _("GL Items for this Credit Note");
176
177         echo "<table width=100%>";
178         echo "<tr><td align=center><span class='headingtext'>$heading</span></td>";
179         if ($mode == 0)
180         {
181         submit_cells('InvGL', _("Edit"), "align=right",
182                         _('Moves to additional costs posting page'), true);
183         }
184         echo "</tr></table>";
185
186         echo "</td></tr><tr><td>"; // ouer table
187
188         div_start('gl_items');
189         echo "<table width=100% $table_style>";
190
191         $dim = get_company_pref('use_dimension');
192         if ($dim == 2)
193         $th = array(_("Account"), _("Name"), _("Dimension")." 1", _("Dimension")." 2", _("Amount"), _("Memo"));
194         else if ($dim == 1)
195         $th = array(_("Account"), _("Name"), _("Dimension"), _("Amount"), _("Memo"));
196     else
197         $th = array(_("Account"), _("Name"), _("Amount"), _("Memo"));
198
199         table_header($th);
200         $total_gl_value=0;
201         $i = $k = 0;
202
203         if (count($supp_trans->gl_codes) > 0)
204         {
205
206                 foreach ($supp_trans->gl_codes as $entered_gl_code)
207                 {
208
209                         alt_table_row_color($k);
210
211                         if ($mode == 3)
212                                 $entered_gl_code->amount = -$entered_gl_code->amount;
213
214                         label_cell($entered_gl_code->gl_code);
215                         label_cell($entered_gl_code->gl_act_name);
216
217                         if ($dim >= 1)
218                                 label_cell(get_dimension_string($entered_gl_code->gl_dim, true));
219                         if ($dim > 1)
220                                 label_cell(get_dimension_string($entered_gl_code->gl_dim2, true));
221
222                         amount_cell($entered_gl_code->amount);
223                         label_cell($entered_gl_code->memo_);
224
225                         if ($mode == 1)
226                                 edit_button_cell("Delete" . $entered_gl_code->Counter, _("Delete"),
227                                           _('Remove line from document'));
228
229                         end_row();
230
231                         $total_gl_value += $entered_gl_code->amount;
232
233                         $i++;
234                         if ($i > 15)
235                         {
236                                 $i = 0;
237                                 table_header($th);
238                         }
239                 }
240
241         }
242         $colspan = ($dim == 2 ? 4 : ($dim == 1 ? 3 : 2));
243         label_row(_("Total"), price_format($total_gl_value),
244                 "colspan=".$colspan." align=right", "nowrap align=right");
245
246         echo "</table>";
247         div_end();
248
249     echo "</td></tr>";
250
251     end_table(); // outertable
252         return $total_gl_value;
253 }
254
255 //--------------------------------------------------------------------------------------------------
256
257 // $mode = 0 display on invoice page
258 //               = 1 display on grn items edit page
259 //               = 2 display on view invoice
260 //               = 3 display on view credit
261
262 function display_grn_items(&$supp_trans, $mode=0)
263 {
264         global $table_style, $path_to_root;
265
266     if ($mode == 0 && isset($_POST["InvGRN"]))
267     {
268         copy_to_trans($supp_trans);
269                 if ($supp_trans->is_invoice)
270                         meta_forward("$path_to_root/purchasing/supplier_invoice_grns.php");
271         else
272                         meta_forward("$path_to_root/purchasing/supplier_credit_grns.php");
273         exit;
274     }
275
276     // if displaying in form, and no items, exit
277     if (($mode == 2  || $mode == 3) && count($supp_trans->grn_items) == 0)
278         return;
279         br(1);
280         start_table("width=95%");
281         echo "<tr><td>"; // outertable
282
283         if ($supp_trans->is_invoice)
284                 $heading = _("Received Items Charged on this Invoice");
285         else
286                 $heading = _("Received Items Credited on this Note");
287         echo "<table width=100% >";
288         echo "<tr><td align=center><span class='headingtext'>$heading</span></td>";
289         if ($mode == 0)
290         {
291                 submit_cells('InvGRN', _("Edit"), "align=right",
292                         _('Moves to GRN selection page'), true);
293         }
294         echo "</tr></table>";
295
296         echo "</td></tr><tr><td>"; // outer table
297
298   div_start('grn_items');
299         echo "<table width=100% $table_style>";
300         $th = array(_("Delivery"), _("Item"), _("Description"),
301                 _("Quantity"), _("Price"), _("Line Value"));
302
303         table_header($th);
304     $total_grn_value = 0;
305     $i = $k = 0;
306
307         if (count($supp_trans->grn_items) > 0)
308         {
309
310         foreach ($supp_trans->grn_items as $entered_grn)
311         {
312
313                 alt_table_row_color($k);
314
315                         $grn_batch = get_grn_batch_from_item($entered_grn->id);
316                 label_cell(get_trans_view_str(25,$grn_batch));
317                         label_cell($entered_grn->item_code);
318                         label_cell($entered_grn->item_description);
319                         qty_cell(abs($entered_grn->this_quantity_inv), false, get_qty_dec($entered_grn->item_code));
320                         amount_cell($entered_grn->chg_price);
321                         amount_cell( round($entered_grn->chg_price * abs($entered_grn->this_quantity_inv)), user_price_dec());
322
323                         if ($mode == 1)
324                                 edit_button_cell("Delete" . $entered_grn->id, _("Delete"),
325                                           _('Remove item from document'));
326
327                         end_row();
328
329                 $total_grn_value += round($entered_grn->chg_price * abs($entered_grn->this_quantity_inv),
330                            user_price_dec());
331
332                 $i++;
333                 if ($i > 15)
334                 {
335                         $i = 0;
336                         table_header($th);
337                 }
338         }
339     }
340
341         label_row(_("Total"), price_format($total_grn_value),
342                 "colspan=5 align=right", "nowrap align=right");
343     echo "</table>";
344     div_end();
345     echo "</td></tr>";
346
347     end_table(); // outertable
348         return $total_grn_value;
349 }
350
351 //--------------------------------------------------------------------------------------------------
352 function get_duedate_from_terms(&$supp_trans)
353 {
354         if (!is_date($supp_trans->tran_date))
355         {
356                 $supp_trans->tran_date = Today();
357         }
358         if (substr( $supp_trans->terms, 0, 1) == "1")
359         { /*Its a day in the following month when due */
360                 $supp_trans->due_date = add_days(end_month($supp_trans->tran_date), (int) substr( $supp_trans->terms,1));
361         }
362         else
363         { /*Use the Days Before Due to add to the invoice date */
364                 $supp_trans->due_date = add_days($supp_trans->tran_date, (int) substr( $supp_trans->terms,1));
365         }
366 }
367
368 //--------------------------------------------------------------------------------------------------
369
370 ?>