Implemented journal entries with multiply virtual AR/AP subaccounts.
[fa-stable.git] / includes / types.inc
index 570f0c68470dd36f593a19df7d5c4c79a5b3912b..460c51930dacebffddf49b1449c485ba229ca406 100644 (file)
@@ -47,6 +47,31 @@ define('ST_DIMENSION', 40);
 define ('ST_STATEMENT', 91);
 define ('ST_CHEQUE', 92);
 
+// document inheritance
+$document_child_types = array(
+               ST_SALESQUOTE => ST_SALESORDER,
+               ST_SALESORDER => ST_CUSTDELIVERY,
+               ST_CUSTDELIVERY => ST_SALESINVOICE,
+               ST_SALESINVOICE => ST_CUSTCREDIT,
+
+               ST_PURCHORDER => ST_SUPPRECEIVE,
+               ST_SUPPRECEIVE => ST_SUPPINVOICE,
+               ST_SUPPINVOICE => ST_SUPPCREDIT,
+);
+
+function get_child_type($type)
+{
+       global $document_child_types;
+       return isset($document_child_types[$type]) ? $document_child_types[$type] : 0;
+}
+
+function get_parent_type($type)
+{
+       global $document_child_types;
+       $child = array_search($type, $document_child_types);
+       return $child ? $child : 0;
+}
+
 //----------------------------------------------------------------------------------
 //             Bank transaction types
 //
@@ -112,6 +137,80 @@ function payment_person_name($type, $person_id, $full=true) {
        }
 }
 
+//
+//     Returns counterparty (supplier/customer) name for selected transaction.
+//
+function get_counterparty_name($trans_type, $trans_no, $full=true)
+{
+       switch($trans_type)
+       {
+               case ST_SALESORDER:
+               case ST_SALESQUOTE:
+                       $sql = "SELECT order.customer_id as person_id, debtor.name as name
+                       FROM ".TB_PREF."sales_orders order, ".TB_PREF."debtors_master debtor
+                       WHERE order_no=".db_escape($trans_no)." AND trans_type=".db_escape($trans_type)
+                       ." AND order.debtor_no=debtor.debtor_no";
+                       break;
+
+               case ST_SALESINVOICE :
+               case ST_CUSTCREDIT :
+               case ST_CUSTPAYMENT :
+               case ST_CUSTDELIVERY :
+                       $sql = "SELECT trans.debtor_no as person_id, debtor.name as name
+                       FROM ".TB_PREF."debtor_trans trans, ".TB_PREF."debtors_master debtor
+                       WHERE trans_no=".db_escape($trans_no)." AND type=".db_escape($trans_type)
+                       ." AND trans.debtor_no=debtor.debtor_no";
+                       break;
+
+               case ST_PURCHORDER :
+                       $sql = "SELECT order.supplier_id as person_id, supp.supp_name as name
+                       FROM ".TB_PREF."purch_orders order, ".TB_PREF."suppliers supp
+                       WHERE order_no=".db_escape($trans_no)
+                       ." AND order.supplier_id=supp.supplier_id";
+                       break;
+
+               case ST_SUPPINVOICE :
+               case ST_SUPPCREDIT :
+               case ST_SUPPAYMENT :
+                       $sql = "SELECT trans.supplier_id as person_id, supp.supp_name as name
+                       FROM ".TB_PREF."supp_trans trans, ".TB_PREF."suppliers supp
+                       WHERE trans_no=".db_escape($trans_no)." AND type=".db_escape($trans_type)
+                       ." AND trans.supplier_id=supp.supplier_id";
+                       break;
+
+               case ST_SUPPRECEIVE :
+                       $sql = "SELECT trans.supplier_id as person_id, supp.supp_name as name
+                       FROM ".TB_PREF."grn_batch trans, ".TB_PREF."suppliers supp
+                       WHERE id=".db_escape($trans_no)
+                       ." AND trans.supplier_id=supp.supplier_id";
+                       break;
+
+               case ST_JOURNAL:        // FIXME - this one can have multiply counterparties of various types depending on person_type_id
+
+               default: 
+               /*      // internal operations
+               case ST_WORKORDER :
+               case ST_INVADJUST : // GRN/DN returns ?
+               case ST_BANKTRANSFER :
+               case ST_LOCTRANSFER :
+               case ST_MANUISSUE :
+               case ST_MANURECEIVE :
+               case ST_COSTUPDATE :
+               case ST_BANKPAYMENT :   // generic bank transactions
+               case ST_BANKDEPOSIT :*/
+                       return null;
+       }
+
+       $result = db_query($sql, 'cannot retrieve counterparty name');
+       if (db_num_rows($result))
+       {
+               $row = db_fetch($result);
+               return sprintf("[%05s] %s", $row['person_id'], $row['name']);
+       }
+
+       return '';
+}
+
 function payment_person_has_items($type) {
        switch ($type)
        {
@@ -130,6 +229,12 @@ function payment_person_has_items($type) {
                        return false;
        }
 }
+//----------------------------------------------------------------------------------
+//     Payment terms categories
+//
+define('PM_ANY', 0);
+define('PM_CASH', 1);
+define('PM_CREDIT', 2);
 
 //----------------------------------------------------------------------------------
 //     Manufacturing types
@@ -140,6 +245,7 @@ define('WO_ADVANCED', 2);
 
 define('WO_LABOUR', 0);
 define('WO_OVERHEAD', 1);
+define('WO_MATERIALS', 2);
 
 //----------------------------------------------------------------------------------
 //     GL account classes
@@ -187,6 +293,20 @@ define('TABLESTYLE_NOBORDER', 3);
 define('TAG_ACCOUNT',   1);
 define('TAG_DIMENSION', 2);
 
+//----------------------------------------------------------------------------------
+// Payment term types
+
+define('PTT_PRE', 1);
+define('PTT_CASH', 2);
+define('PTT_DAYS', 3);
+define('PTT_FOLLOWING', 4);
+
+//----------------------------------------------------------------------------------
+// Tax calculation algorithms used in als and purchase (depends on supplier's invoicing software)
+
+define('TCA_TOTALS', 1); // taxes are calculated from respective net totals for all lines
+define('TCA_LINES', 2); // taxes calculated for every line, then summed
+
 include_once($path_to_root . '/includes/sysnames.inc');
 
 ?>
\ No newline at end of file