460c51930dacebffddf49b1449c485ba229ca406
[fa-stable.git] / includes / types.inc
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 //----------------------------------------------------------------------------------
13 //      FrontAccounting system transaction types
14 //
15 define('ST_JOURNAL', 0);
16
17 define('ST_BANKPAYMENT', 1);
18 define('ST_BANKDEPOSIT', 2);
19 define('ST_BANKTRANSFER', 4);
20
21 define('ST_SALESINVOICE', 10);
22 define('ST_CUSTCREDIT', 11);
23 define('ST_CUSTPAYMENT', 12);
24 define('ST_CUSTDELIVERY', 13);
25
26 define('ST_LOCTRANSFER', 16);
27 define('ST_INVADJUST', 17);
28
29 define('ST_PURCHORDER', 18);
30 define('ST_SUPPINVOICE', 20);
31 define('ST_SUPPCREDIT', 21);
32 define('ST_SUPPAYMENT', 22);
33 define('ST_SUPPRECEIVE', 25);
34
35 define('ST_WORKORDER', 26);
36 define('ST_MANUISSUE', 28);
37 define('ST_MANURECEIVE', 29);
38
39
40 define('ST_SALESORDER', 30);
41 define('ST_SALESQUOTE', 32);
42 define('ST_COSTUPDATE', 35);
43 define('ST_DIMENSION', 40);
44
45 // Don't include these defines in the $systypes_array.
46 // They are used for documents only.
47 define ('ST_STATEMENT', 91);
48 define ('ST_CHEQUE', 92);
49
50 // document inheritance
51 $document_child_types = array(
52                 ST_SALESQUOTE => ST_SALESORDER,
53                 ST_SALESORDER => ST_CUSTDELIVERY,
54                 ST_CUSTDELIVERY => ST_SALESINVOICE,
55                 ST_SALESINVOICE => ST_CUSTCREDIT,
56
57                 ST_PURCHORDER => ST_SUPPRECEIVE,
58                 ST_SUPPRECEIVE => ST_SUPPINVOICE,
59                 ST_SUPPINVOICE => ST_SUPPCREDIT,
60 );
61
62 function get_child_type($type)
63 {
64         global $document_child_types;
65         return isset($document_child_types[$type]) ? $document_child_types[$type] : 0;
66 }
67
68 function get_parent_type($type)
69 {
70         global $document_child_types;
71         $child = array_search($type, $document_child_types);
72         return $child ? $child : 0;
73 }
74
75 //----------------------------------------------------------------------------------
76 //              Bank transaction types
77 //
78 define('BT_TRANSFER', 0);
79 define('BT_CHEQUE', 1);
80 define('BT_CREDIT', 2);
81 define('BT_CASH', 3);
82
83 include_once($path_to_root . "/manufacturing/includes/manufacturing_db.inc");
84 include_once($path_to_root . "/purchasing/includes/purchasing_db.inc");
85 include_once($path_to_root . "/sales/includes/sales_db.inc");
86 include_once($path_to_root . "/dimensions/includes/dimensions_db.inc");
87 //----------------------------------------------------------------------------------
88 //      Payment types
89 //
90 define('PT_MISC', 0);
91 define('PT_WORKORDER', 1);
92 define('PT_CUSTOMER', 2);
93 define('PT_SUPPLIER', 3);
94 define('PT_QUICKENTRY', 4);
95 define('PT_DIMESION', 5);
96
97 function payment_person_currency($type, $person_id)  {
98         switch ($type)
99         {
100                 case PT_MISC :
101                 case PT_QUICKENTRY :
102                 case PT_WORKORDER :
103                         return get_company_currency();
104
105                 case PT_CUSTOMER :
106                         return get_customer_currency($person_id);
107
108                 case PT_SUPPLIER :
109                         return get_supplier_currency($person_id);
110
111                 default :
112                         return get_company_currency();
113         }
114 }
115
116 function payment_person_name($type, $person_id, $full=true) {
117         global $payment_person_types;
118
119         switch ($type)
120         {
121                 case PT_MISC :
122                         return $person_id;
123                 case PT_QUICKENTRY :
124                         $qe = get_quick_entry($person_id);
125                         return ($full ? $payment_person_types[$type] . " ":"") . $qe["description"];
126                 case PT_WORKORDER :
127                         global $wo_cost_types;
128                         return $wo_cost_types[$person_id];
129                 case PT_CUSTOMER :
130                         return ($full ?$payment_person_types[$type] . " ":"") . get_customer_name($person_id);
131                 case PT_SUPPLIER :
132                         return ($full ? $payment_person_types[$type] . " ":"") . get_supplier_name($person_id);
133                 default :
134                         //DisplayDBerror("Invalid type sent to person_name");
135                         //return;
136                         return '';
137         }
138 }
139
140 //
141 //      Returns counterparty (supplier/customer) name for selected transaction.
142 //
143 function get_counterparty_name($trans_type, $trans_no, $full=true)
144 {
145         switch($trans_type)
146         {
147                 case ST_SALESORDER:
148                 case ST_SALESQUOTE:
149                         $sql = "SELECT order.customer_id as person_id, debtor.name as name
150                         FROM ".TB_PREF."sales_orders order, ".TB_PREF."debtors_master debtor
151                         WHERE order_no=".db_escape($trans_no)." AND trans_type=".db_escape($trans_type)
152                         ." AND order.debtor_no=debtor.debtor_no";
153                         break;
154
155                 case ST_SALESINVOICE :
156                 case ST_CUSTCREDIT :
157                 case ST_CUSTPAYMENT :
158                 case ST_CUSTDELIVERY :
159                         $sql = "SELECT trans.debtor_no as person_id, debtor.name as name
160                         FROM ".TB_PREF."debtor_trans trans, ".TB_PREF."debtors_master debtor
161                         WHERE trans_no=".db_escape($trans_no)." AND type=".db_escape($trans_type)
162                         ." AND trans.debtor_no=debtor.debtor_no";
163                         break;
164
165                 case ST_PURCHORDER :
166                         $sql = "SELECT order.supplier_id as person_id, supp.supp_name as name
167                         FROM ".TB_PREF."purch_orders order, ".TB_PREF."suppliers supp
168                         WHERE order_no=".db_escape($trans_no)
169                         ." AND order.supplier_id=supp.supplier_id";
170                         break;
171
172                 case ST_SUPPINVOICE :
173                 case ST_SUPPCREDIT :
174                 case ST_SUPPAYMENT :
175                         $sql = "SELECT trans.supplier_id as person_id, supp.supp_name as name
176                         FROM ".TB_PREF."supp_trans trans, ".TB_PREF."suppliers supp
177                         WHERE trans_no=".db_escape($trans_no)." AND type=".db_escape($trans_type)
178                         ." AND trans.supplier_id=supp.supplier_id";
179                         break;
180
181                 case ST_SUPPRECEIVE :
182                         $sql = "SELECT trans.supplier_id as person_id, supp.supp_name as name
183                         FROM ".TB_PREF."grn_batch trans, ".TB_PREF."suppliers supp
184                         WHERE id=".db_escape($trans_no)
185                         ." AND trans.supplier_id=supp.supplier_id";
186                         break;
187
188                 case ST_JOURNAL:        // FIXME - this one can have multiply counterparties of various types depending on person_type_id
189
190                 default: 
191                 /*      // internal operations
192                 case ST_WORKORDER :
193                 case ST_INVADJUST : // GRN/DN returns ?
194                 case ST_BANKTRANSFER :
195                 case ST_LOCTRANSFER :
196                 case ST_MANUISSUE :
197                 case ST_MANURECEIVE :
198                 case ST_COSTUPDATE :
199                 case ST_BANKPAYMENT :   // generic bank transactions
200                 case ST_BANKDEPOSIT :*/
201                         return null;
202         }
203
204         $result = db_query($sql, 'cannot retrieve counterparty name');
205         if (db_num_rows($result))
206         {
207                 $row = db_fetch($result);
208                 return sprintf("[%05s] %s", $row['person_id'], $row['name']);
209         }
210
211         return '';
212 }
213
214 function payment_person_has_items($type) {
215         switch ($type)
216         {
217                 case PT_MISC :
218                         return true;
219                 case PT_QUICKENTRY :
220                         return db_has_quick_entries();
221                 case PT_WORKORDER : // 070305 changed to open workorders JH
222                         return db_has_open_workorders();
223                 case PT_CUSTOMER :
224                         return db_has_customers();
225                 case PT_SUPPLIER :
226                         return db_has_suppliers();
227                 default :
228                         display_db_error("Invalid type sent to has_items", "");
229                         return false;
230         }
231 }
232 //----------------------------------------------------------------------------------
233 //      Payment terms categories
234 //
235 define('PM_ANY', 0);
236 define('PM_CASH', 1);
237 define('PM_CREDIT', 2);
238
239 //----------------------------------------------------------------------------------
240 //      Manufacturing types
241 //
242 define('WO_ASSEMBLY', 0);
243 define('WO_UNASSEMBLY', 1);
244 define('WO_ADVANCED', 2);
245
246 define('WO_LABOUR', 0);
247 define('WO_OVERHEAD', 1);
248 define('WO_MATERIALS', 2);
249
250 //----------------------------------------------------------------------------------
251 //      GL account classes
252 //
253 define('CL_NONE', 0); // for backward compatibility
254 define('CL_ASSETS', 1);
255 define('CL_LIABILITIES', 2);
256 define('CL_EQUITY', 3);
257 define('CL_INCOME', 4);
258 define('CL_COGS', 5);
259 define('CL_EXPENSE', 6);
260
261 function get_class_type_convert($ctype)
262 {
263         global $use_oldstyle_convert;
264         if (isset($use_oldstyle_convert) && $use_oldstyle_convert == 1)
265                 return (($ctype >= CL_INCOME || $ctype == CL_NONE) ? -1 : 1);
266         else    
267                 return ((($ctype >= CL_LIABILITIES && $ctype <= CL_INCOME) || $ctype == CL_NONE) ? -1 : 1);
268 }
269 //----------------------------------------------------------------------------------
270 //      Quick entry types
271 //
272 define('QE_PAYMENT', '1');
273 define('QE_DEPOSIT', '2');
274 define('QE_JOURNAL', '3');
275 define('QE_SUPPINV', '4');
276
277 //----------------------------------------------------------------------------------
278 //      Special option values for various list selectors.
279 //
280 define('ANY_TEXT', '');
281 define('ANY_NUMERIC', -1);
282 define('ALL_TEXT', '');
283 define('ALL_NUMERIC', -1);
284
285 //----------------------------------------------------------------------------------
286 // Special class values for tables (start_table())
287 define('TABLESTYLE',  1);
288 define('TABLESTYLE2', 2);
289 define('TABLESTYLE_NOBORDER', 3);
290
291 //----------------------------------------------------------------------------------
292
293 define('TAG_ACCOUNT',   1);
294 define('TAG_DIMENSION', 2);
295
296 //----------------------------------------------------------------------------------
297 // Payment term types
298
299 define('PTT_PRE', 1);
300 define('PTT_CASH', 2);
301 define('PTT_DAYS', 3);
302 define('PTT_FOLLOWING', 4);
303
304 //----------------------------------------------------------------------------------
305 // Tax calculation algorithms used in als and purchase (depends on supplier's invoicing software)
306
307 define('TCA_TOTALS', 1); // taxes are calculated from respective net totals for all lines
308 define('TCA_LINES', 2); // taxes calculated for every line, then summed
309
310 include_once($path_to_root . '/includes/sysnames.inc');
311
312 ?>