function selectWithSystemData($code = NULL, $desc = NULL, $type = NULL, $system_data = NULL, $page = 1, $maxrec = 1, $orderkey = EBPLS_TAX_FEE_CODE, $is_desc = true)
 {
     if ($code != NULL && $code != "") {
         $strWhere[EBPLS_TAX_FEE_CODE] = $code;
     }
     if ($desc != NULL && $desc != "") {
         $strWhere[EBPLS_TAX_FEE_DESC] = array("like", "{$desc}%");
     }
     if ($type != NULL) {
         if (is_array($type)) {
             $strWhere[EBPLS_TAX_FEE_TYPE] = array("IN", " ( '" . join("','", $type) . "')");
         } else {
             $strWhere[EBPLS_TAX_FEE_TYPE] = $type;
         }
     }
     if (!is_null($system_data) && ($system_data == "0" || $system_data == "1")) {
         $strWhere[EBPLS_TAX_SYSTEMDATA] = $system_data;
     }
     // select all columns
     $strValues[] = "*";
     if ($orderkey != NULL) {
         $strOrder[$orderkey] = $orderkey;
     } else {
         $strOrder[$orderkey] = EBPLS_TAX_FEE_CODE;
     }
     $result = ebpls_select_data_bypage($this->m_dbLink, EBPLS_TAX_FEE_TABLE, $strValues, $strWhere, NULL, $strOrder, $is_desc ? "DESC" : "ASC", $page, $maxrec);
     if (!is_array($result) && $result < 0) {
         $this->setError($result, get_db_error());
         return $result;
     } else {
         for ($i = 0; $i < count($result["result"]); $i++) {
             $records[$i] = new EBPLTaxFeeSysRef($this->m_dbLink, false);
             $clsFormula = new TaxFeeFormula($this->m_dbLink, false);
             $ret = $clsFormula->view($result["result"][$i][EBPLS_TAX_FORMULA_ID]);
             if ($ret > 0) {
                 $result["result"][$i][EBPLS_TAX_FORMULA] = unserialize($clsFormula->getData(EBPLS_FORMULAS_FORMULA_CLASS));
                 if (!$result["result"][$i][EBPLS_TAX_FORMULA]) {
                     $this->debug("<HR>Error loading formula : " . $result["result"][$i][EBPLS_TAX_FORMULA_ID] . "!<HR>");
                     $this->setError(-2, "Invalid formula on unserialize : " . $result["result"][$i][EBPLS_TAX_FORMULA_ID] . "!");
                     $this->debug("Invalid formula on unserialize : " . $result["result"][$i][EBPLS_TAX_FORMULA_ID] . "!");
                     return -2;
                 }
                 $result["result"][$i][EBPLS_TAX_FORMULA]->setData(NULL, $clsFormula->getData());
                 $records[$i]->setData(NULL, $result["result"][$i]);
             } else {
                 echo 'ID: ' . $result["result"][$i][EBPLS_TAX_FORMULA_ID];
                 return $ret;
             }
         }
         $result["result"] = $records;
         return $result;
     }
 }
/**
 * Create default requiremetns to ebpls_transaction_fees and ebpls_transaction_requirements table
 *
 *
 **/
function create_permit_requirements($dbLink, $trans_id, $permit_id, $permit_type, $creator, $permit_req_type, $trans_type)
{
    if ($permit_req_type == "FEE" || $permit_req_type == "TAX") {
        require_once "ebpls-php-lib/ebpls.taxfeeformula.class.php";
        if ($permit_req_type == "FEE") {
            $sql .= " SELECT b.tax_fee_code, b.tax_fee_desc,b.tax_account_code, b.tax_formula_id ";
            $sql .= " FROM ebpls_permit_fee_requirements AS a INNER JOIN ebpls_tax_fee_table AS b on a.tax_fee_code = b.tax_fee_code WHERE a.permit_type = '{$permit_type}' and a.pfr_trans_type = '{$trans_type}' and b.tax_fee_type = 'FEE'";
        } else {
            if ($permit_req_type == "TAX") {
                $sql .= " SELECT b.tax_fee_code, b.tax_fee_desc,b.tax_account_code, b.tax_formula_id ";
                $sql .= " FROM ebpls_permit_tax_requirements AS a INNER JOIN ebpls_tax_fee_table AS b on a.tax_fee_code = b.tax_fee_code WHERE a.permit_type = '{$permit_type}' and a.ptr_trans_type = '{$trans_type}' and b.tax_fee_type = 'TAX'";
            }
        }
        ebpls_db_funcs_debug("create_permit_requirements : {$sql}");
        $result = mysql_query($sql, $dbLink);
        if ($result) {
            $i = 0;
            while ($row = mysql_fetch_array($result)) {
                $clsTaxFormula = new TaxFeeFormula($dbLink, false);
                $clsTaxFormula->view($row["tax_formula_id"]);
                $clsFormula = unserialize($clsTaxFormula->getData(EBPLS_FORMULAS_FORMULA_CLASS));
                if ($clsFormula) {
                    $tax_total_amount_due = $clsFormula->computeTax();
                    if ($tax_total_amount_due >= 0) {
                        if ($tax_total_amount_due == "" || $tax_total_amount_due == NULL) {
                            $tax_total_amount_due = 0;
                        }
                        if ($permit_req_type == "FEE") {
                            $sql = "INSERT INTO ebpls_transaction_payables ( trans_id, permit_id,permit_type, tax_fee_type, tax_fee_code, tax_fee_desc, tax_account_code, tax_business_nature_code, tax_total_amount_due, ts_create, last_updated_by )";
                            $sql .= " values({$trans_id}, {$permit_id}, '{$permit_type}', 'FEE','" . $row["tax_fee_code"] . "','" . $row["tax_fee_desc"] . "','" . $row["tax_account_code"] . "','NONE', {$tax_total_amount_due}, now(), '{$creator}')";
                        } else {
                            $sql = "INSERT INTO ebpls_transaction_payables ( trans_id, permit_id,permit_type, tax_fee_type, tax_fee_code, tax_business_nature_code, tax_fee_desc, tax_account_code, tax_total_amount_due, ts_create, last_updated_by )";
                            $sql .= " values({$trans_id}, {$permit_id}, '{$permit_type}', 'TAX','" . $row["tax_fee_code"] . "','" . $row["tax_business_nature_code"] . "','" . $row["tax_fee_desc"] . "','" . $row["tax_account_code"] . "', {$tax_total_amount_due}, now(), '{$creator}')";
                        }
                        ebpls_db_funcs_debug("create_permit_requirements insert : {$sql}");
                        $rs = mysql_query($sql, $dbLink);
                        $i++;
                    } else {
                        set_db_error(NULL, "Invalid formula for tax : " . $row["tax_formula_id"]);
                        return -5;
                    }
                } else {
                    set_db_error(NULL, "Invalid formula for tax : " . $row["tax_formula_id"]);
                    return -5;
                }
            }
            return $i;
        } else {
            set_db_error($dbLink);
            return -1;
        }
    } else {
        if ($permit_req_type == "APP") {
            $sql = "INSERT INTO ebpls_transaction_requirements (trans_id,permit_id,permit_type,requirement_code,status,ts_create, last_updated_by )";
            $sql .= " SELECT {$trans_id},{$permit_id},'{$permit_type}',requirement_code,'PENDING',now(),'{$creator}' FROM ebpls_permit_app_requirements WHERE permit_type = '{$permit_type}' and par_trans_type = '{$trans_type}'";
            ebpls_db_funcs_debug("create_permit_requirements : {$sql}");
            $result = mysql_query($sql, $dbLink);
            if ($result) {
                return mysql_affected_rows($dbLink);
            } else {
                set_db_error($dbLink);
                return -1;
            }
        } else {
            set_db_error(NULL, "Invalid param {$permit_req_type} on function create_permit_requirements ( {$dbLink}, {$trans_id}, {$permit_id}, {$permit_type}, {$creator}, {$permit_req_type} ).");
            return -1;
        }
    }
}