Fixed journal entry type and system type lists, code cleanup.
[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 $systypes_array = array (
46         ST_JOURNAL => _("Journal Entry"),
47         ST_BANKPAYMENT => _("Bank Payment"),
48         ST_BANKDEPOSIT => _("Bank Deposit"),
49         ST_BANKTRANSFER => _("Funds Transfer"),
50         ST_SALESINVOICE => _("Sales Invoice"),
51         ST_CUSTCREDIT => _("Customer Credit Note"),
52         ST_CUSTPAYMENT => _("Customer Payment"),
53         ST_CUSTDELIVERY => _("Delivery Note"),
54         ST_LOCTRANSFER => _("Location Transfer"),
55         ST_INVADJUST => _("Inventory Adjustment"),
56         ST_PURCHORDER => _("Purchase Order"),
57         ST_SUPPINVOICE => _("Supplier Invoice"),
58         ST_SUPPCREDIT => _("Supplier Credit Note"),
59         ST_SUPPAYMENT => _("Supplier Payment"),
60         ST_SUPPRECEIVE => _("Purchase Order Delivery"),
61         ST_WORKORDER => _("Work Order"),
62         ST_MANUISSUE => _("Work Order Issue"),
63         ST_MANURECEIVE => _("Work Order Production"),
64         ST_SALESORDER => _("Sales Order"),
65         ST_SALESQUOTE => _("Sales Quotation"),
66         ST_COSTUPDATE => _("Cost Update"),
67         ST_DIMENSION => _("Dimension")
68         );
69
70 //----------------------------------------------------------------------------------
71 //              Bank transaction types
72 //
73 define('BT_TRANSFER', 0);
74 define('BT_CHEQUE', 1);
75 define('BT_CREDIT', 2);
76 define('BT_CASH', 3);
77
78 $bank_account_types = array (
79         BT_TRANSFER => _("Savings Account"),
80                 _("Chequing Account"),
81                 _("Credit Account"),
82                 _("Cash Account")
83         );
84
85 $bank_transfer_types = array(
86         BT_TRANSFER => _("Transfer"),
87                         _("Cheque"),
88                         _("Credit"),
89                         _("Cash")
90         );
91
92 //----------------------------------------------------------------------------------
93 // Core FA menu tabs (modules)
94 //
95 $tabs = array('orders'=>_("Sales"), 
96                         'AP'=>_("Purchases"),
97                         'stock'=>_("Items and Inventory"),
98                         'manuf'=>_("Manufacturing"), 
99                         'proj'=>_("Dimensions"),
100                         'GL'=>_("Banking and General Ledger"),
101                         'system'=>_("Setup"));
102
103 //----------------------------------------------------------------------------------
104 //      Payment types
105 //
106 define('PT_MISC', 0);
107 define('PT_WORKORDER', 1);
108 define('PT_CUSTOMER', 2);
109 define('PT_SUPPLIER', 3);
110 define('PT_QUICKENTRY', 4);
111 define('PT_DIMESION', 5);
112
113 $payment_person_types = array (
114         PT_MISC => _("Miscellaneous"),
115                                 _("Work Order"),
116                                 _("Customer"),
117                                 _("Supplier"),
118                                 _("Quick Entry")
119         );
120
121 function payment_person_currency($type, $person_id)  {
122         switch ($type)
123         {
124                 case PT_MISC :
125                 case PT_QUICKENTRY :
126                 case PT_WORKORDER :
127                         return get_company_currency();
128
129                 case PT_CUSTOMER :
130                         return get_customer_currency($person_id);
131
132                 case PT_SUPPLIER :
133                         return get_supplier_currency($person_id);
134
135                 default :
136                         return get_company_currency();
137         }
138 }
139
140 function payment_person_name($type, $person_id, $full=true) {
141         global $payment_person_types;
142
143         switch ($type)
144         {
145                 case PT_MISC :
146                         return $person_id;
147                 case PT_QUICKENTRY :
148                         $qe = get_quick_entry($person_id);
149                         return ($full ? $payment_person_types[$type] . " ":"") . $qe["description"];
150                 case PT_WORKORDER :
151                         global $wo_cost_types;
152                         return $wo_cost_types[$person_id];
153                 case PT_CUSTOMER :
154                         return ($full ?$payment_person_types[$type] . " ":"") . get_customer_name($person_id);
155                 case PT_SUPPLIER :
156                         return ($full ? $payment_person_types[$type] . " ":"") . get_supplier_name($person_id);
157                 default :
158                         //DisplayDBerror("Invalid type sent to person_name");
159                         //return;
160                         return '';
161         }
162 }
163
164 function payment_person_has_items($type) {
165         switch ($type)
166         {
167                 case PT_MISC :
168                         return true;
169                 case PT_QUICKENTRY :
170                         return db_has_quick_entries();
171                 case PT_WORKORDER : // 070305 changed to open workorders JH
172                         return db_has_open_workorders();
173                 case PT_CUSTOMER :
174                         return db_has_customers();
175                 case PT_SUPPLIER :
176                         return db_has_suppliers();
177                 default :
178                         display_db_error("Invalid type sent to has_items", "");
179                         return false;
180         }
181 }
182
183 //----------------------------------------------------------------------------------
184 //      Manufacturing types
185 //
186 define('WO_ASSEMBLY', 0);
187 define('WO_UNASSEMBLY', 1);
188 define('WO_ADVANCED', 2);
189
190 $wo_types_array = array (
191         WO_ASSEMBLY => _("Assemble"),
192         WO_UNASSEMBLY => _("Unassemble"),
193         WO_ADVANCED => _("Advanced Manufacture")
194         );
195
196 define('WO_LABOUR', 0);
197 define('WO_OVERHEAD', 1);
198
199 $wo_cost_types = array(
200                 WO_LABOUR => _("Labour Cost"),
201                 WO_OVERHEAD => _("Overhead Cost"),
202 );
203
204 //----------------------------------------------------------------------------------
205 //      GL account classes
206 //
207 define('CL_NONE', 0); // for backward compatibility
208 define('CL_ASSETS', 1);
209 define('CL_LIABILITIES', 2);
210 define('CL_EQUITY', 3);
211 define('CL_INCOME', 4);
212 define('CL_COGS', 5);
213 define('CL_EXPENSE', 6);
214
215 $class_types = array(
216                 CL_ASSETS => _("Assets"),
217                 CL_LIABILITIES => _("Liabilities"),
218                 CL_EQUITY => _("Equity"),
219                 CL_INCOME => _("Income"),
220                 CL_COGS => _("Cost of Goods Sold"),
221                 CL_EXPENSE => _("Expense"),
222 );
223
224 function get_class_type_convert($ctype)
225 {
226         global $use_oldstyle_convert;
227         if (isset($use_oldstyle_convert) && $use_oldstyle_convert == 1)
228                 return (($ctype >= CL_INCOME || $ctype == CL_NONE) ? -1 : 1);
229         else    
230                 return ((($ctype >= CL_LIABILITIES && $ctype <= CL_INCOME) || $ctype == CL_NONE) ? -1 : 1);
231 }
232 //----------------------------------------------------------------------------------
233 //      Quick entry types
234 //
235 $quick_actions = array(
236         '=' => _('Remainder'), // post current base amount to GL account
237         'a' => _('Amount'), // post amount to GL account
238         'a+' => _('Amount, increase base'), // post amount to GL account and increase base
239         'a-' => _('Amount, reduce base'), // post amount to GL account and reduce base
240         '%' => _('% amount of base'),   // store acc*amount% to GL account
241         '%+' => _('% amount of base, increase base'),   // ditto & increase base amount
242         '%-' => _('% amount of base, reduce base'),     // ditto & reduce base amount
243         'T' => _('Taxes added'), // post taxes calculated on base amount
244         'T+' => _('Taxes added, increase base'), // ditto & increase base amount
245         'T-' => _('Taxes added, reduce base'), // ditto & reduce base amount
246         't' => _('Taxes included'), // post taxes calculated on base amount
247         't+' => _('Taxes included, increase base'), // ditto & increase base amount
248         't-' => _('Taxes included, reduce base') // ditto & reduce base amount
249 );
250
251 define('QE_PAYMENT', '1');
252 define('QE_DEPOSIT', '2');
253 define('QE_JOURNAL', '3');
254 define('QE_SUPPINV', '4');
255
256 $quick_entry_types = array(
257                 QE_DEPOSIT => _("Bank Deposit"),
258                 QE_PAYMENT => _("Bank Payment"),
259                 QE_JOURNAL => _("Journal Entry"),
260                 QE_SUPPINV => _("Supplier Invoice/Credit")
261 );
262
263 //----------------------------------------------------------------------------------
264 //      Special option values for various list selectors.
265 //
266 define('ANY_TEXT', '');
267 define('ANY_NUMERIC', -1);
268 define('ALL_TEXT', '');
269 define('ALL_NUMERIC', -1);
270
271
272 //----------------------------------------------------------------------------------
273 // Types of stock items
274 $stock_types = array(
275                 'M' => _("Manufactured"),
276                 'B' => _("Purchased"),
277                 'D' => _("Service")
278 );
279
280 ?>