1<?php
2/**********************************************************************
3    Copyright (C) FrontAccounting, LLC.
4	Released under the terms of the GNU General Public License, GPL,
5	as published by the Free Software Foundation, either version 3
6	of the License, or (at your option) any later version.
7    This program is distributed in the hope that it will be useful,
8    but WITHOUT ANY WARRANTY; without even the implied warranty of
9    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11***********************************************************************/
12
13function add_supplier($supp_name, $supp_ref, $address, $supp_address, $gst_no,
14	$website, $supp_account_no, $bank_account, $credit_limit, $dimension_id, $dimension2_id,
15	$curr_code, $payment_terms, $payable_account, $purchase_account, $payment_discount_account,
16	$notes, $tax_group_id, $tax_included)
17{
18	$sql = "INSERT INTO ".TB_PREF."suppliers (supp_name, supp_ref, address, supp_address, gst_no, website,
19		supp_account_no, bank_account, credit_limit, dimension_id, dimension2_id, curr_code,
20		payment_terms, payable_account, purchase_account, payment_discount_account, notes,
21		tax_group_id, tax_included)
22		VALUES (".db_escape($supp_name). ", "
23		.db_escape($supp_ref). ", "
24		.db_escape($address) . ", "
25		.db_escape($supp_address) . ", "
26		.db_escape($gst_no). ", "
27		.db_escape($website). ", "
28		.db_escape($supp_account_no). ", "
29		.db_escape($bank_account). ", "
30		.db_escape($credit_limit). ", "
31		.db_escape($dimension_id). ", "
32		.db_escape($dimension2_id). ", "
33		.db_escape($curr_code). ", "
34		.db_escape($payment_terms). ", "
35		.db_escape($payable_account). ", "
36		.db_escape($purchase_account). ", "
37		.db_escape($payment_discount_account). ", "
38		.db_escape($notes). ", "
39		.db_escape($tax_group_id). ", "
40		.db_escape($tax_included). ")";
41
42	db_query($sql,"The supplier could not be added");
43}
44
45function update_supplier($supplier_id, $supp_name, $supp_ref, $address, $supp_address, $gst_no,
46	$website, $supp_account_no, $bank_account, $credit_limit, $dimension_id, $dimension2_id,
47	$curr_code, $payment_terms, $payable_account, $purchase_account, $payment_discount_account,
48	$notes, $tax_group_id, $tax_included)
49{
50	$sql = "UPDATE ".TB_PREF."suppliers SET supp_name=".db_escape($supp_name) . ",
51		supp_ref=".db_escape($supp_ref) . ",
52		address=".db_escape($address) . ",
53		supp_address=".db_escape($supp_address) . ",
54		gst_no=".db_escape($gst_no) . ",
55		website=".db_escape($website) . ",
56		supp_account_no=".db_escape($supp_account_no) . ",
57		bank_account=".db_escape($bank_account) . ",
58		credit_limit=".$credit_limit . ",
59		dimension_id=".db_escape($dimension_id) . ",
60		dimension2_id=".db_escape($dimension2_id) . ",
61		curr_code=".db_escape($curr_code).",
62		payment_terms=".db_escape($payment_terms) . ",
63		payable_account=".db_escape($payable_account) . ",
64		purchase_account=".db_escape($purchase_account) . ",
65		payment_discount_account=".db_escape($payment_discount_account) . ",
66		notes=".db_escape($notes) . ",
67		tax_group_id=".db_escape($tax_group_id). ",
68		tax_included=".db_escape($tax_included)
69		." WHERE supplier_id = ".db_escape($supplier_id);
70
71	db_query($sql,"The supplier could not be updated");
72}
73
74function delete_supplier($supplier_id)
75{
76	$sql="DELETE FROM ".TB_PREF."suppliers WHERE supplier_id=".db_escape($supplier_id);
77	db_query($sql,"check failed");
78}
79
80function get_supplier_details($supplier_id, $to=null, $all=true)
81{
82
83	if ($to == null)
84		$todate = date("Y-m-d");
85	else
86		$todate = date2sql($to);
87	$past1 = get_company_pref('past_due_days');
88	$past2 = 2 * $past1;
89	// removed - supp_trans.alloc from all summations
90
91	if ($all)
92    	$value = "(trans.ov_amount + trans.ov_gst + trans.ov_discount)";
93    else
94    	$value = "IF (trans.type=".ST_SUPPINVOICE." OR trans.type=".ST_BANKDEPOSIT.",
95    		(trans.ov_amount + trans.ov_gst + trans.ov_discount - trans.alloc),
96    		(trans.ov_amount + trans.ov_gst + trans.ov_discount + trans.alloc))";
97	$due = "IF (trans.type=".ST_SUPPINVOICE." OR trans.type=".ST_SUPPCREDIT.",trans.due_date,trans.tran_date)";
98    $sql = "SELECT supp.supp_name, supp.curr_code, ".TB_PREF."payment_terms.terms,
99
100		Sum(IFNULL($value,0)) AS Balance,
101
102		Sum(IF ((TO_DAYS('$todate') - TO_DAYS($due)) > 0,$value,0)) AS Due,
103		Sum(IF ((TO_DAYS('$todate') - TO_DAYS($due)) > $past1,$value,0)) AS Overdue1,
104		Sum(IF ((TO_DAYS('$todate') - TO_DAYS($due)) > $past2,$value,0)) AS Overdue2,
105		supp.credit_limit - Sum(IFNULL(IF(trans.type=".ST_SUPPCREDIT.", -1, 1)
106			* (ov_amount + ov_gst + ov_discount),0)) as cur_credit,
107		supp.tax_group_id
108
109		FROM ".TB_PREF."suppliers supp
110			 LEFT JOIN ".TB_PREF."supp_trans trans ON supp.supplier_id = trans.supplier_id AND trans.tran_date <= '$todate',
111			 ".TB_PREF."payment_terms
112
113		WHERE
114			 supp.payment_terms = ".TB_PREF."payment_terms.terms_indicator
115			 AND supp.supplier_id = $supplier_id ";
116	if (!$all)
117		$sql .= "AND ABS(trans.ov_amount + trans.ov_gst + trans.ov_discount) - trans.alloc > ".FLOAT_COMP_DELTA." ";
118	$sql .= "GROUP BY
119			  supp.supp_name,
120			  ".TB_PREF."payment_terms.terms,
121			  ".TB_PREF."payment_terms.days_before_due,
122			  ".TB_PREF."payment_terms.day_in_following_month";
123
124    $result = db_query($sql,"The customer details could not be retrieved");
125    $supp = db_fetch($result);
126
127    return $supp;
128}
129
130function get_supplier($supplier_id)
131{
132	$sql = "SELECT * FROM ".TB_PREF."suppliers WHERE supplier_id=".db_escape($supplier_id);
133
134	$result = db_query($sql, "could not get supplier");
135
136	return db_fetch($result);
137}
138
139function get_supplier_name($supplier_id)
140{
141	$sql = "SELECT supp_name AS name FROM ".TB_PREF."suppliers WHERE supplier_id=".db_escape($supplier_id);
142
143	$result = db_query($sql, "could not get supplier");
144
145	$row = db_fetch_row($result);
146
147	return $row[0];
148}
149
150function get_supplier_accounts($supplier_id)
151{
152	$sql = "SELECT payable_account,purchase_account,payment_discount_account FROM ".TB_PREF."suppliers WHERE supplier_id=".db_escape($supplier_id);
153
154	$result = db_query($sql, "could not get supplier");
155
156	return db_fetch($result);
157}
158
159function get_supplier_contacts($supplier_id, $action=null)
160{
161	$results = array();
162	$res = get_crm_persons('supplier', $action, $supplier_id);
163	while($contact = db_fetch($res))
164		$results[] = $contact;
165
166	return $results;
167}
168
169function get_current_supp_credit($supplier_id)
170{
171	$suppdet = get_supplier_details($supplier_id);
172	return $suppdet['cur_credit'];
173
174}
175
176function is_new_supplier($id)
177{
178	$tables = array('supp_trans', 'grn_batch', 'purch_orders', 'purch_data');
179
180	return !key_in_foreign_table($id, $tables, 'supplier_id');
181}
182?>