Code cleanup.
[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 if(get_post('RefreshInquiry'))
99 {
100         $Ajax->activate('totals_tbl');
101 }
102 //------------------------------------------------------------------------------------------------
103
104 function systype_name($dummy, $type)
105 {
106         return systypes::name($type);
107 }
108
109 function order_view($row)
110 {
111         return $row['order_']>0 ?
112                 get_customer_trans_view_str(systypes::sales_order(), $row['order_'])
113                 : "";
114 }
115
116 function trans_view($trans)
117 {
118         return get_trans_view_str($trans["type"], $trans["trans_no"]);
119 }
120
121 function due_date($row)
122 {
123         return ($row["type"]==20 || $row["type"]==21)
124                 ? $row["due_date"] : '';
125 }
126
127 function gl_view($row)
128 {
129         return get_gl_view_str($row["type"], $row["trans_no"]);
130 }
131
132 function fmt_debit($row)
133 {
134         $value =
135             $row['type']==11 || $row['type']==12 || $row['type']==2 ?
136                 -$row["TotalAmount"] : $row["TotalAmount"];
137         return $value>=0 ? price_format($value) : '';
138
139 }
140
141 function fmt_credit($row)
142 {
143         $value =
144             !($row['type']==11 || $row['type']==12 || $row['type']==2) ?
145                 -$row["TotalAmount"] : $row["TotalAmount"];
146         return $value>0 ? price_format($value) : '';
147 }
148
149 function credit_link($row)
150 {
151         return $row['type'] == 10 ?
152                 pager_link(_("Credit This"),
153                         "/sales/customer_credit_invoice.php?InvoiceNumber=".
154                         $row['trans_no'])
155                         : '';
156 }
157
158 function edit_link($row)
159 {
160         $str = '';
161
162         switch($row['type']) {
163         case 10:
164                 $str = "/sales/customer_invoice.php?ModifyInvoice=".$row['trans_no'];
165                 break;
166         case 11:
167                 if ($row['order_']==0) // free-hand credit note
168                     $str = "/sales/credit_note_entry.php?ModifyCredit=".$row['trans_no'];
169                 else    // credit invoice
170                     $str = "/sales/customer_credit_invoice.php?ModifyCredit=".$row['trans_no'];
171                 break;
172          case 13:
173                 $str = "/sales/customer_delivery.php?ModifyDelivery=".$row['trans_no'];
174                 break;
175         }
176         return pager_link(_('Edit'), $str);
177 }
178
179 function prt_link($row)
180 {
181         if ($row['type'] != 12) // customer payment printout not defined yet.
182                 return print_document_link($row['trans_no'], _("Print"), true, $row['type']);
183 }
184
185 function check_overdue($row)
186 {
187         return $row['OverDue'] == 1
188                 && (abs($row["TotalAmount"]) - $row["Allocated"] != 0);
189 }
190 //------------------------------------------------------------------------------------------------
191     $date_after = date2sql($_POST['TransAfterDate']);
192     $date_to = date2sql($_POST['TransToDate']);
193
194   $sql = "SELECT 
195                 trans.type, 
196                 trans.trans_no, 
197                 trans.order_, 
198                 trans.reference,
199                 trans.tran_date, 
200                 trans.due_date, 
201                 debtor.name, 
202                 branch.br_name,
203                 debtor.curr_code,
204                 (trans.ov_amount + trans.ov_gst + trans.ov_freight 
205                         + trans.ov_freight_tax + trans.ov_discount)     AS TotalAmount, 
206                 trans.alloc AS Allocated,
207                 ((trans.type = 10)
208                         AND trans.due_date < '" . date2sql(Today()) . "') AS OverDue
209                 FROM "
210                         .TB_PREF."debtor_trans as trans, "
211                         .TB_PREF."debtors_master as debtor, "
212                         .TB_PREF."cust_branch as branch
213                 WHERE debtor.debtor_no = trans.debtor_no
214                         AND trans.tran_date >= '$date_after'
215                         AND trans.tran_date <= '$date_to'
216                         AND trans.branch_code = branch.branch_code";
217
218         if ($_POST['customer_id'] != reserved_words::get_all())
219                 $sql .= " AND trans.debtor_no = '" . $_POST['customer_id'] . "'";
220
221         if ($_POST['filterType'] != reserved_words::get_all())
222         {
223                 if ($_POST['filterType'] == '1')
224                 {
225                         $sql .= " AND (trans.type = 10 OR trans.type = 1) ";
226                 }
227                 elseif ($_POST['filterType'] == '2')
228                 {
229                         $sql .= " AND (trans.type = 10) ";
230                 }
231                 elseif ($_POST['filterType'] == '3')
232                 {
233                         $sql .= " AND (trans.type = " . systypes::cust_payment() 
234                                         ." OR trans.type = 2) ";
235                 }
236                 elseif ($_POST['filterType'] == '4')
237                 {
238                         $sql .= " AND trans.type = 11 ";
239                 }
240                 elseif ($_POST['filterType'] == '5')
241                 {
242                         $sql .= " AND trans.type = 13 ";
243                 }
244
245         if ($_POST['filterType'] == '2')
246         {
247                 $today =  date2sql(Today());
248                 $sql .= " AND trans.due_date < '$today'
249                                 AND (trans.ov_amount + trans.ov_gst + trans.ov_freight_tax + 
250                                 trans.ov_freight + trans.ov_discount - trans.alloc > 0) ";
251         }
252         }
253
254 //------------------------------------------------------------------------------------------------
255
256 $cols = array(
257         _("Type") => array('fun'=>'systype_name', 'ord'=>''),
258         _("#") => array('fun'=>'trans_view', 'ord'=>''),
259         _("Order") => array('fun'=>'order_view'), 
260         _("Reference"), 
261         _("Date") => array('type'=>'date', 'ord'=>'desc'),
262         _("Due Date") => array('type=>date', 'fun'=>'due_date'),
263         _("Customer") => array('ord'=>''), 
264         _("Branch") => array('ord'=>''), 
265         _("Currency") => array('align'=>'center'),
266         _("Debit") => array('align'=>'right', 'fun'=>'fmt_debit'), 
267         _("Credit") => array('align'=>'right','insert'=>true, 'fun'=>'fmt_credit'), 
268                 array('insert'=>true, 'fun'=>'gl_view'),
269                 array('insert'=>true, 'fun'=>'credit_link'),
270                 array('insert'=>true, 'fun'=>'edit_link'),
271                 array('insert'=>true, 'fun'=>'prt_link')
272         );
273
274 if ($_POST['customer_id'] != reserved_words::get_all()) {
275         $cols[_("Customer")] = 'skip';
276         $cols[_("Currency")] = 'skip';
277 }
278
279
280 $table =& new_db_pager('trans_tbl', $sql, $cols);
281 $table->set_marker('check_overdue', _("Marked items are overdue."));
282
283
284 start_form();
285
286 display_db_pager($table);
287
288 end_form();
289 end_page();
290
291 ?>