5 include($path_to_root . "/includes/db_pager.inc");
6 include_once($path_to_root . "/includes/session.inc");
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");
13 if ($use_popup_windows)
14 $js .= get_js_open_window(900, 500);
16 $js .= get_js_date_picker();
17 page(_("Customer Transactions"), false, false, "", $js);
20 if (isset($_GET['customer_id']))
22 $_POST['customer_id'] = $_GET['customer_id'];
25 //------------------------------------------------------------------------------------------------
29 if (!isset($_POST['customer_id']))
30 $_POST['customer_id'] = get_global_customer();
32 start_table("class='tablestyle_noborder'");
35 customer_list_cells(_("Select a customer: "), 'customer_id', null, true);
37 date_cells(_("From:"), 'TransAfterDate', '', null, -30);
38 date_cells(_("To:"), 'TransToDate', '', null, 1);
40 if (!isset($_POST['filterType']))
41 $_POST['filterType'] = 0;
43 cust_allocations_list_cells(null, 'filterType', $_POST['filterType'], true);
45 submit_cells('RefreshInquiry', _("Search"),'',_('Refresh Inquiry'), true);
49 set_global_customer($_POST['customer_id']);
51 //------------------------------------------------------------------------------------------------
53 function display_customer_summary($customer_record)
57 $past1 = get_company_pref('past_due_days');
59 if ($customer_record["dissallow_invoices"] != 0)
61 echo "<center><font color=red size=4><b>" . _("CUSTOMER ACCOUNT IS ON HOLD") . "</font></b></center>";
64 $nowdue = "1-" . $past1 . " " . _('Days');
65 $pastdue1 = $past1 + 1 . "-" . $past2 . " " . _('Days');
66 $pastdue2 = _('Over') . " " . $past2 . " " . _('Days');
68 start_table("width=80% $table_style");
69 $th = array(_("Currency"), _("Terms"), _("Current"), $nowdue,
70 $pastdue1, $pastdue2, _("Total Balance"));
74 label_cell($customer_record["curr_code"]);
75 label_cell($customer_record["terms"]);
76 amount_cell($customer_record["Balance"] - $customer_record["Due"]);
77 amount_cell($customer_record["Due"] - $customer_record["Overdue1"]);
78 amount_cell($customer_record["Overdue1"] - $customer_record["Overdue2"]);
79 amount_cell($customer_record["Overdue2"]);
80 amount_cell($customer_record["Balance"]);
85 //------------------------------------------------------------------------------------------------
87 div_start('totals_tbl');
88 if ($_POST['customer_id'] != "" && $_POST['customer_id'] != reserved_words::get_all())
90 $customer_record = get_customer_details($_POST['customer_id'], $_POST['TransToDate']);
91 display_customer_summary($customer_record);
96 if(get_post('RefreshInquiry'))
98 $Ajax->activate('totals_tbl');
100 //------------------------------------------------------------------------------------------------
102 function systype_name($dummy, $type)
104 return systypes::name($type);
107 function order_view($row)
109 return $row['order_']>0 ?
110 get_customer_trans_view_str(systypes::sales_order(), $row['order_'])
114 function trans_view($trans)
116 return get_trans_view_str($trans["type"], $trans["trans_no"]);
119 function due_date($row)
121 return ($row["type"]==20 || $row["type"]==21)
122 ? $row["due_date"] : '';
125 function gl_view($row)
127 return get_gl_view_str($row["type"], $row["trans_no"]);
130 function fmt_debit($row)
133 $row['type']==11 || $row['type']==12 || $row['type']==2 ?
134 -$row["TotalAmount"] : $row["TotalAmount"];
135 return $value>=0 ? price_format($value) : '';
139 function fmt_credit($row)
142 !($row['type']==11 || $row['type']==12 || $row['type']==2) ?
143 -$row["TotalAmount"] : $row["TotalAmount"];
144 return $value>0 ? price_format($value) : '';
147 function credit_link($row)
149 return $row['type'] == 10 ?
150 pager_link(_("Credit This"),
151 "/sales/customer_credit_invoice.php?InvoiceNumber=".
156 function edit_link($row)
160 switch($row['type']) {
162 $str = "/sales/customer_invoice.php?ModifyInvoice=".$row['trans_no'];
165 if ($row['order_']==0) // free-hand credit note
166 $str = "/sales/credit_note_entry.php?ModifyCredit=".$row['trans_no'];
167 else // credit invoice
168 $str = "/sales/customer_credit_invoice.php?ModifyCredit=".$row['trans_no'];
171 $str = "/sales/customer_delivery.php?ModifyDelivery=".$row['trans_no'];
174 return pager_link(_('Edit'), $str);
177 function prt_link($row)
179 if ($row['type'] != 12) // customer payment printout not defined yet.
180 return print_document_link($row['trans_no'], _("Print"), true, $row['type']);
183 function check_overdue($row)
185 return $row['OverDue'] == 1
186 && (abs($row["TotalAmount"]) - $row["Allocated"] != 0);
188 //------------------------------------------------------------------------------------------------
189 $date_after = date2sql($_POST['TransAfterDate']);
190 $date_to = date2sql($_POST['TransToDate']);
202 (trans.ov_amount + trans.ov_gst + trans.ov_freight
203 + trans.ov_freight_tax + trans.ov_discount) AS TotalAmount,
204 trans.alloc AS Allocated,
206 AND trans.due_date < '" . date2sql(Today()) . "') AS OverDue
208 .TB_PREF."debtor_trans as trans, "
209 .TB_PREF."debtors_master as debtor, "
210 .TB_PREF."cust_branch as branch
211 WHERE debtor.debtor_no = trans.debtor_no
212 AND trans.tran_date >= '$date_after'
213 AND trans.tran_date <= '$date_to'
214 AND trans.branch_code = branch.branch_code";
216 if ($_POST['customer_id'] != reserved_words::get_all())
217 $sql .= " AND trans.debtor_no = '" . $_POST['customer_id'] . "'";
219 if ($_POST['filterType'] != reserved_words::get_all())
221 if ($_POST['filterType'] == '1')
223 $sql .= " AND (trans.type = 10 OR trans.type = 1) ";
225 elseif ($_POST['filterType'] == '2')
227 $sql .= " AND (trans.type = 10) ";
229 elseif ($_POST['filterType'] == '3')
231 $sql .= " AND (trans.type = " . systypes::cust_payment()
232 ." OR trans.type = 2) ";
234 elseif ($_POST['filterType'] == '4')
236 $sql .= " AND trans.type = 11 ";
238 elseif ($_POST['filterType'] == '5')
240 $sql .= " AND trans.type = 13 ";
243 if ($_POST['filterType'] == '2')
245 $today = date2sql(Today());
246 $sql .= " AND trans.due_date < '$today'
247 AND (trans.ov_amount + trans.ov_gst + trans.ov_freight_tax +
248 trans.ov_freight + trans.ov_discount - trans.alloc > 0) ";
252 //------------------------------------------------------------------------------------------------
255 _("Type") => array('fun'=>'systype_name', 'ord'=>''),
256 _("#") => array('fun'=>'trans_view', 'ord'=>''),
257 _("Order") => array('fun'=>'order_view'),
259 _("Date") => array('type'=>'date', 'ord'=>'desc'),
260 _("Due Date") => array('type=>date', 'fun'=>'due_date'),
261 _("Customer") => array('ord'=>''),
262 _("Branch") => array('ord'=>''),
263 _("Currency") => array('align'=>'center'),
264 _("Debit") => array('align'=>'right', 'fun'=>'fmt_debit'),
265 _("Credit") => array('align'=>'right','insert'=>true, 'fun'=>'fmt_credit'),
266 array('insert'=>true, 'fun'=>'gl_view'),
267 array('insert'=>true, 'fun'=>'credit_link'),
268 array('insert'=>true, 'fun'=>'edit_link'),
269 array('insert'=>true, 'fun'=>'prt_link')
272 if ($_POST['customer_id'] != reserved_words::get_all()) {
273 $cols[_("Customer")] = 'skip';
274 $cols[_("Currency")] = 'skip';
278 $table =& new_db_pager('trans_tbl', $sql, $cols);
279 $table->set_marker('check_overdue', _("Marked items are overdue."));
281 if (get_post('RefreshInquiry')) {
282 $table->set_sql($sql);
283 $table->set_columns($cols);
286 display_db_pager($table);