+/*
+ Get contacts of given type for customer branch.
+ $branch_code - branch id
+ $action - type of contact
+ $customer_id - if passed: get also customer contacts for given action
+ $default - return only single record selected with defaults order defined in $defs array,
+ otherways get all $action contacts
+*/
+function get_branch_contacts($branch_code, $action=null, $customer_id=null, $default = true)
+{
+ $defs = array('cust_branch.'.$action,
+ 'customer.'.$action,
+ 'cust_branch.general',
+ 'customer.general');
+
+ $sql = "SELECT p.*, r.action, r.type, CONCAT(r.type,'.',r.action) as ext_type
+ FROM "
+ .TB_PREF."crm_persons p,"
+ .TB_PREF."crm_contacts r
+ WHERE r.person_id=p.id AND ((r.type='cust_branch'
+ AND r.entity_id=".db_escape($branch_code).')';
+ if($customer_id) {
+ $sql .= " OR (r.type='customer' AND r.entity_id=".db_escape($customer_id).")";
+ }
+ $sql .= ')';
+
+ if ($action)
+ $sql .= ' AND (r.action='.db_escape($action).($default ? " OR r.action='general'" : '').')';
+
+ $res = db_query($sql, "can't retrieve branch contacts");
+
+ $results = array();
+ while($contact = db_fetch($res))
+ $results[] = $contact;
+
+ if ($results && $default) {
+ // select first available contact in $defs order
+ foreach($defs as $type) {
+ if ($n = array_search_value($type, $results, 'ext_type'))
+ return $n;
+ }
+ return null;
+ }
+ return $results;
+}
+
+function _get_branch_contacts($branch_code, $action=null, $customer_id=null, $default = false)
+{
+ $sql = "SELECT p.*, r.action, r.type, CONCAT(r.type,'.',r.action) as ext_type
+ FROM ".TB_PREF."crm_persons p,"
+ .TB_PREF."crm_contacts r
+ WHERE r.person_id=p.id AND r.type='cust_branch'
+ AND r.entity_id=".db_escape($branch_code);
+
+ if ($action)
+ $sql .= ' AND (r.action='.db_escape($action).($default ? " OR r.action='general'":'').')';
+
+ if($customer_id) {
+ $sql = "($sql) UNION (SELECT p.*, r.action, r.type, CONCAT(r.type,'.',r.action) as ext_type
+ FROM ".TB_PREF."crm_persons p,"
+ .TB_PREF."crm_contacts r
+ WHERE r.person_id=p.id AND r.type='customer'
+ AND r.entity_id=".db_escape($customer_id);
+ if ($action)
+ $sql .= ' AND (r.action='.db_escape($action).($default ? " OR r.action='general'":'').')';
+ $sql .= ')';
+ }
+
+ $res = db_query($sql, "can't retrieve branch contacts");
+ $results = array();
+ $type = '';
+ while($contact = db_fetch($res)) {
+ if ($type && $type != $contact['type']) break; // skip cust when branch contacts found
+ $results[] = $contact;
+ $type = $contact['type'];
+ }
+ if ($results && $default) {
+ // here we have general and action contacts selected
+ if ($n = array_search_value($action, $results, 'action')) {
+ return $n;
+ }
+ // only general contact found
+ return $results[0];
+ }
+ return $results;
+}
+
+function get_default_branch($customer_id, $ar_account=null)
+{
+ $sql = "SELECT *
+ FROM ".TB_PREF."cust_branch WHERE debtor_no = ".db_escape($customer_id);
+ if($ar_account)
+ $sql .= " AND receivables_account=".db_escape($ar_account);
+ $result = db_query($sql,"cannot retrieve default branch");
+ return db_fetch($result);
+}
+
+function get_branches_search($customer, $branch)
+{
+ global $SysPrefs;
+
+ if (isset($SysPrefs->max_rows_in_search))
+ $limit = $SysPrefs->max_rows_in_search;
+ else
+ $limit = 10;
+
+ $sql = "SELECT
+ b.branch_code,
+ b.branch_ref,
+ b.br_name,
+ p.name as contact_name,
+ p.phone
+ FROM ".TB_PREF."cust_branch b
+ LEFT JOIN ".TB_PREF."crm_contacts c
+ ON c.entity_id=b.branch_code AND c.type='cust_branch' AND c.action='general'
+ LEFT JOIN ".TB_PREF."crm_persons p ON c.person_id=p.id
+ WHERE b.debtor_no = ".db_escape($customer)."
+ AND b.br_name LIKE " . db_escape("%" . $branch. "%") . "
+ ORDER BY b.br_name LIMIT 0,".(int)($limit);
+
+ return db_query($sql, "Failed in retreiving branches list.");
+}
+