Fixed acording to latest db_pager api changes
[fa-stable.git] / sales / inquiry / customer_inquiry.php
1 <?php
2
3 $page_security = 1;
4 $path_to_root="../..";
5 include($path_to_root . "/includes/db_pager.inc");
6 include_once($path_to_root . "/includes/session.inc");
7
8 include_once($path_to_root . "/sales/includes/sales_ui.inc");
9 include_once($path_to_root . "/sales/includes/sales_db.inc");
10 include_once($path_to_root . "/reporting/includes/reporting.inc");
11
12 $js = "";
13 if ($use_popup_windows)
14         $js .= get_js_open_window(900, 500);
15 if ($use_date_picker)
16         $js .= get_js_date_picker();
17 page(_("Customer Transactions"), false, false, "", $js);
18
19
20 if (isset($_GET['customer_id']))
21 {
22         $_POST['customer_id'] = $_GET['customer_id'];
23 }
24
25 //------------------------------------------------------------------------------------------------
26
27 start_form();
28
29 if (!isset($_POST['customer_id']))
30         $_POST['customer_id'] = get_global_customer();
31
32 start_table("class='tablestyle_noborder'");
33 start_row();
34
35 customer_list_cells(_("Select a customer: "), 'customer_id', null, true);
36
37 date_cells(_("From:"), 'TransAfterDate', '', null, -30);
38 date_cells(_("To:"), 'TransToDate', '', null, 1);
39
40 if (!isset($_POST['filterType']))
41         $_POST['filterType'] = 0;
42
43 cust_allocations_list_cells(null, 'filterType', $_POST['filterType'], true);
44
45 submit_cells('RefreshInquiry', _("Search"),'',_('Refresh Inquiry'), true);
46 end_row();
47 end_table();
48
49 end_form();
50
51 set_global_customer($_POST['customer_id']);
52
53 //------------------------------------------------------------------------------------------------
54
55 function display_customer_summary($customer_record)
56 {
57         global $table_style;
58
59         $past1 = get_company_pref('past_due_days');
60         $past2 = 2 * $past1;
61     if ($customer_record["dissallow_invoices"] != 0)
62     {
63         echo "<center><font color=red size=4><b>" . _("CUSTOMER ACCOUNT IS ON HOLD") . "</font></b></center>";
64     }
65
66         $nowdue = "1-" . $past1 . " " . _('Days');
67         $pastdue1 = $past1 + 1 . "-" . $past2 . " " . _('Days');
68         $pastdue2 = _('Over') . " " . $past2 . " " . _('Days');
69
70     start_table("width=80% $table_style");
71     $th = array(_("Currency"), _("Terms"), _("Current"), $nowdue,
72         $pastdue1, $pastdue2, _("Total Balance"));
73     table_header($th);
74
75         start_row();
76     label_cell($customer_record["curr_code"]);
77     label_cell($customer_record["terms"]);
78         amount_cell($customer_record["Balance"] - $customer_record["Due"]);
79         amount_cell($customer_record["Due"] - $customer_record["Overdue1"]);
80         amount_cell($customer_record["Overdue1"] - $customer_record["Overdue2"]);
81         amount_cell($customer_record["Overdue2"]);
82         amount_cell($customer_record["Balance"]);
83         end_row();
84
85         end_table();;
86 }
87 //------------------------------------------------------------------------------------------------
88
89 div_start('totals_tbl');
90 if ($_POST['customer_id'] != "" && $_POST['customer_id'] != reserved_words::get_all())
91 {
92         $customer_record = get_customer_details($_POST['customer_id'], $_POST['TransToDate']);
93     display_customer_summary($customer_record);
94     echo "<br>";
95 }
96 div_end();
97
98
99 //------------------------------------------------------------------------------------------------
100 function systype_name($dummy, $type)
101 {
102         return systypes::name($type);
103 }
104
105 function order_view($row)
106 {
107         return $row['order_']>0 ?
108                 get_customer_trans_view_str(systypes::sales_order(), $row['order_'])
109                 : "";
110 }
111
112 function trans_view($trans)
113 {
114         return get_trans_view_str($trans["type"], $trans["trans_no"]);
115 }
116
117 function due_date($row)
118 {
119         return ($row["type"]==20 || $row["type"]==21)
120                 ? $row["due_date"] : '';
121 }
122
123 function gl_view($row)
124 {
125         return get_gl_view_str($row["type"], $row["trans_no"]);
126 }
127
128 function fmt_debit($row)
129 {
130         $value =
131             $row['type']==11 || $row['type']==12 || $row['type']==2 ?
132                 -$row["TotalAmount"] : $row["TotalAmount"];
133         return $value>=0 ? price_format($value) : '';
134
135 }
136
137 function fmt_credit($row)
138 {
139         $value =
140             !($row['type']==11 || $row['type']==12 || $row['type']==2) ?
141                 -$row["TotalAmount"] : $row["TotalAmount"];
142         return $value>0 ? price_format($value) : '';
143 }
144
145 function alloc_link($row)
146 {
147         if ($row['type'] == 10)
148                 if ($row["TotalAmount"] - $row["Allocated"] > 0)
149                         return pager_link(_("Allocation"),
150                                 "/sales/allocations/customer_allocate.php"
151                                 ."?trans_no={$row['trans_no']}&trans_type="
152                                 .$row['type']);
153         return '';
154 }
155
156 function credit_link($row)
157 {
158         return $row['type'] == 10 ?
159                 pager_link(_("Credit This"),
160                         "/sales/customer_credit_invoice.php?InvoiceNumber=".
161                         $row['trans_no'])
162                         : '';
163 }
164
165 function edit_link($row)
166 {
167         $str = '';
168
169         switch($row['type']) {
170         case 10:
171                 $str = "/sales/customer_invoice.php?ModifyInvoice=".$row['trans_no'];
172                 break;
173         case 11:
174                 if ($row['order_']==0) // free-hand credit note
175                     $str = "/sales/credit_note_entry.php?ModifyCredit=".$row['trans_no'];
176                 else    // credit invoice
177                     $str = "/sales/customer_credit_invoice.php?ModifyCredit=".$row['trans_no'];
178                 break;
179          case 13:
180                 $str = "/sales/customer_delivery.php?ModifyDelivery=".$row['trans_no'];
181                 break;
182         }
183         return pager_link(_('Edit'), $str);
184 }
185
186 function prt_link($row)
187 {
188         if ($row['type'] != 12) // customer payment printout not defined yet.
189                 return print_document_link($row['trans_no'], _("Print"), true, $row['type']);
190 }
191
192 function check_overdue($row)
193 {
194         return $row['OverDue'] == 1
195                 && (abs($row["TotalAmount"]) - $row["Allocated"] != 0);
196 }
197 //------------------------------------------------------------------------------------------------
198     $date_after = date2sql($_POST['TransAfterDate']);
199     $date_to = date2sql($_POST['TransToDate']);
200
201   $sql = "SELECT 
202                 trans.type, 
203                 trans.trans_no, 
204                 trans.order_, 
205                 trans.reference,
206                 trans.tran_date, 
207                 trans.due_date, 
208                 debtor.name, 
209                 branch.br_name,
210                 debtor.curr_code,
211                 (trans.ov_amount + trans.ov_gst + trans.ov_freight 
212                         + trans.ov_freight_tax + trans.ov_discount)     AS TotalAmount, 
213                 trans.alloc AS Allocated,
214                 ((trans.type = 10)
215                         AND trans.due_date < '" . date2sql(Today()) . "') AS OverDue
216                 FROM "
217                         .TB_PREF."debtor_trans as trans, "
218                         .TB_PREF."debtors_master as debtor, "
219                         .TB_PREF."cust_branch as branch
220                 WHERE debtor.debtor_no = trans.debtor_no
221                         AND trans.tran_date >= '$date_after'
222                         AND trans.tran_date <= '$date_to'";
223
224         if ($_POST['customer_id'] != reserved_words::get_all())
225                 $sql .= " AND trans.debtor_no = '" . $_POST['customer_id'] . "'";
226
227         if ($_POST['filterType'] != reserved_words::get_all())
228         {
229                 if ($_POST['filterType'] == '1')
230                 {
231                         $sql .= " AND (trans.type = 10 OR trans.type = 1) ";
232                 }
233                 elseif ($_POST['filterType'] == '2')
234                 {
235                         $sql .= " AND (trans.type = 10) ";
236                 }
237                 elseif ($_POST['filterType'] == '3')
238                 {
239                         $sql .= " AND (trans.type = " . systypes::cust_payment() 
240                                         ." OR trans.type = 2) ";
241                 }
242                 elseif ($_POST['filterType'] == '4')
243                 {
244                         $sql .= " AND trans.type = 11 ";
245                 }
246                 elseif ($_POST['filterType'] == '5')
247                 {
248                         $sql .= " AND trans.type = 13 ";
249                 }
250
251         if ($_POST['filterType'] == '2')
252         {
253                 $today =  date2sql(Today());
254                 $sql .= " AND trans.due_date < '$today'
255                                 AND (trans.ov_amount + trans.ov_gst + trans.ov_freight_tax + 
256                                 trans.ov_freight + trans.ov_discount - trans.alloc > 0) ";
257         }
258         }
259
260 //------------------------------------------------------------------------------------------------
261
262 $cols = array(
263         _("Type") => array('fun'=>'systype_name', 'ord'=>''),
264         _("#") => array('fun'=>'trans_view', 'ord'=>''),
265         _("Order") => array('fun'=>'order_view'), 
266         _("Reference"), 
267         _("Date") => array('type'=>'date', 'ord'=>'desc'),
268         _("Due Date") => array('type=>date', 'fun'=>'due_date'),
269         _("Customer") => array('ord'=>''), 
270         _("Branch") => array('ord'=>''), 
271         _("Currency") => array('align'=>'center'),
272         _("Debit") => array('align'=>'right', 'fun'=>'fmt_debit'), 
273         _("Credit") => array('align'=>'right','insert'=>true, 'fun'=>'fmt_credit'), 
274                 array('insert'=>true, 'fun'=>'gl_view'),
275                 array('insert'=>true, 'fun'=>'alloc_link'),
276                 array('insert'=>true, 'fun'=>'credit_link'),
277                 array('insert'=>true, 'fun'=>'edit_link'),
278                 array('insert'=>true, 'fun'=>'prt_link')
279         );
280
281 if ($_POST['customer_id'] != reserved_words::get_all()) {
282         $cols[_("Customer")] = 'skip';
283         $cols[_("Currency")] = 'skip';
284 }
285
286
287 $table =& new_db_pager('trans_tbl', $sql, $cols);
288 $table->set_marker('check_overdue', _("Marked items are overdue."));
289
290
291 if(get_post('RefreshInquiry'))
292 {
293         $table->set_sql($sql);
294         $table->set_columns($cols);
295         $Ajax->activate('trans_tbl');
296         $Ajax->activate('totals_tbl');
297 }
298
299         start_form();
300         display_db_pager($table);
301         end_form();
302 end_page();
303
304
305 ?>