da5c2ecd90d520db4dd11668a8bf27870d3f37e4
[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         }
183         echo "</tr></table>";
184
185         echo "</td></tr><tr><td>"; // ouer table
186
187         echo "<table width=100% $table_style>";
188         
189         $dim = get_company_pref('use_dimension');
190         if ($dim == 2)
191         $th = array(_("Account"), _("Name"), _("Dimension")." 1", _("Dimension")." 2", _("Amount"), _("Memo"));
192         else if ($dim == 1)
193         $th = array(_("Account"), _("Name"), _("Dimension"), _("Amount"), _("Memo"));
194     else
195         $th = array(_("Account"), _("Name"), _("Amount"), _("Memo"));
196
197         table_header($th);
198         $total_gl_value=0;
199         $i = $k = 0;
200
201         if (count($supp_trans->gl_codes) > 0)
202         {
203
204                 foreach ($supp_trans->gl_codes as $entered_gl_code)
205                 {
206
207                         alt_table_row_color($k);
208
209                         if ($mode == 3)
210                                 $entered_gl_code->amount = -$entered_gl_code->amount;
211
212                         label_cell($entered_gl_code->gl_code);
213                         label_cell($entered_gl_code->gl_act_name);
214                 
215                         if ($dim >= 1)
216                                 label_cell(get_dimension_string($entered_gl_code->gl_dim, true));
217                         if ($dim > 1)
218                                 label_cell(get_dimension_string($entered_gl_code->gl_dim2, true));
219
220                         amount_cell($entered_gl_code->amount);
221                         label_cell($entered_gl_code->memo_);
222
223                         if ($mode == 1)
224                                 delete_link_cell(SID . "Delete=" . $entered_gl_code->Counter);
225
226                         end_row();
227
228                         $total_gl_value += $entered_gl_code->amount;
229
230                         $i++;
231                         if ($i > 15)
232                         {
233                                 $i = 0; 
234                                 table_header($th); 
235                         }
236                 }
237
238         }
239         $colspan = ($dim == 2 ? 4 : ($dim == 1 ? 3 : 2));
240         label_row(_("Total"), price_format($total_gl_value), 
241                 "colspan=".$colspan." align=right", "nowrap align=right");
242
243         echo "</table>";
244
245     echo "</td></tr>";
246     
247     end_table(); // outertable
248
249         return $total_gl_value;
250 }
251
252 //--------------------------------------------------------------------------------------------------
253
254 // $mode = 0 display on invoice page
255 //               = 1 display on grn items edit page
256 //               = 2 display on view invoice
257 //               = 3 display on view credit
258
259 function display_grn_items(&$supp_trans, $mode=0)
260 {
261         global $table_style, $path_to_root;
262
263     if ($mode == 0 && isset($_POST["InvGRN"]))
264     {
265         copy_to_trans($supp_trans);
266                 if ($supp_trans->is_invoice)
267                         meta_forward("$path_to_root/purchasing/supplier_invoice_grns.php");
268         else
269                         meta_forward("$path_to_root/purchasing/supplier_credit_grns.php");
270         exit;
271     }
272
273     // if displaying in form, and no items, exit
274     if (($mode == 2  || $mode == 3) && count($supp_trans->grn_items) == 0)
275         return;
276         br(1);
277         start_table("width=95%");
278         echo "<tr><td>"; // outertable
279
280         if ($supp_trans->is_invoice)
281                 $heading = _("Received Items Charged on this Invoice");
282         else
283                 $heading = _("Received Items Credited on this Note");
284
285         echo "<table width=100% >";
286         echo "<tr><td align=center><span class='headingtext'>$heading</span></td>";
287         if ($mode == 0) 
288         {
289                 submit_cells('InvGRN', _("Edit"), "align=right");
290         }
291         echo "</tr></table>";
292
293         echo "</td></tr><tr><td>"; // outer table
294
295         echo "<table width=100% $table_style>";
296         $th = array(_("Delivery Sequence #"), _("Item"), _("Description"),
297                 _("Quantity"), _("Price"), _("Line Value"));
298
299         table_header($th);
300     $total_grn_value = 0;
301     $i = $k = 0;
302
303         if (count($supp_trans->grn_items) > 0)
304         {
305
306         foreach ($supp_trans->grn_items as $entered_grn)
307         {
308
309                 alt_table_row_color($k);
310
311                 label_cell(get_trans_view_str(25,$entered_grn->id));
312                         label_cell($entered_grn->item_code);
313                         label_cell($entered_grn->item_description);
314                         qty_cell(abs($entered_grn->this_quantity_inv));
315                         amount_cell($entered_grn->chg_price);
316                         amount_cell( round($entered_grn->chg_price * abs($entered_grn->this_quantity_inv)), user_price_dec());
317
318                         if ($mode == 1)
319                                 delete_link_cell(SID . "Delete=" . $entered_grn->id);
320
321                         end_row();
322
323                 $total_grn_value += round($entered_grn->chg_price * abs($entered_grn->this_quantity_inv),
324                            user_price_dec());
325
326                 $i++;
327                 if ($i > 15)
328                 {
329                         $i = 0;
330                         table_header($th);
331                 }
332         }
333     }
334
335         label_row(_("Total"), price_format($total_grn_value),
336                 "colspan=5 align=right", "nowrap align=right");
337     echo "</table>";
338
339     echo "</td></tr>";
340     
341     end_table(); // outertable
342
343         return $total_grn_value;
344 }
345
346 //--------------------------------------------------------------------------------------------------
347 function get_duedate_from_terms(&$supp_trans)
348 {
349         if (!is_date($supp_trans->tran_date)) 
350         {
351                 $supp_trans->tran_date = Today();
352         }
353         if (substr( $supp_trans->terms, 0, 1) == "1") 
354         { /*Its a day in the following month when due */
355                 $supp_trans->due_date = add_days(end_month($supp_trans->tran_date), (int) substr( $supp_trans->terms,1));
356         } 
357         else 
358         { /*Use the Days Before Due to add to the invoice date */
359                 $supp_trans->due_date = add_days($supp_trans->tran_date, (int) substr( $supp_trans->terms,1));
360         }
361 }
362
363 //--------------------------------------------------------------------------------------------------
364
365 ?>