Exemplo n.º 1
0
function create_bus_enterprise_nature_fee($dbLink, $trans_id, $business_id, $owner_id, $permit_id, $permit_type, $action, $creator, $nature_code = NULL)
{
    // removed bus nature code from tax_fee table instead transfer nature code to business nature code table
    if (is_array($nature_code)) {
        $nature_code_lst = "'" . join("','", $nature_code) . "'";
        $sql = " SELECT a.business_nature_code, c.tax_fee_code, c.tax_fee_desc, c.tax_account_code, c.tax_formula ";
        $sql .= " FROM ebpls_business_nature AS a ";
        $sql .= " INNER JOIN ebpls_tax_fee_table as b ON a.tax_fee_code = b.tax_fee_code WHERE a.business_nature_code IN ('{$nature_code_lst}')";
    } else {
        $sql = " SELECT a.business_nature_code, c.tax_fee_code, c.tax_fee_desc, c.tax_account_code, c.tax_formula ";
        $sql .= " FROM ebpls_business_nature AS a ";
        $sql .= " INNER JOIN ebpls_tax_fee_table as b ON a.tax_fee_code = b.tax_fee_code WHERE a.business_nature_code = '{$nature_code}'";
    }
    ebpls_db_funcs_debug("create_bus_enterprise_nature_fee : {$sql}");
    $result = mysql_query($sql, $dbLink);
    if ($result) {
        $i = 0;
        while ($row = mysql_fetch_array($result)) {
            $clsTaxFee = new EBPLTaxFeeSysRef($dbLink, false);
            $res_tax = $clsTaxFee->select($row["tax_fee_code"]);
            if (is_array($res_tax)) {
                $clsNature = new EBPLSTransactionBusinessNature($dbLink, true);
                $clsNature->setData(TRANS_BUSNATURE_TRANS_ID, $trans_id);
                $clsNature->setData(TRANS_BUSNATURE_BUSINESS_ID, $business_id);
                $clsNature->setData(TRANS_BUSNATURE_OWNER_ID, $owner_id);
                $clsNature->setData(TRANS_BUSNATURE_CAPITAL_INVESTMENT, "0.0");
                $clsNature->setData(TRANS_BUSNATURE_LAST_GROSS, "0.0");
                $clsNature->setData(TRANS_BUSNATURE_BUSINESS_NATURE_CODE, $row["business_nature_code"]);
                if ($clsNature->add() < 0) {
                    ebpls_db_funcs_debug("create_bus_enterprise_nature_fee : error on creation of business nature record");
                    return -5;
                }
                $clsTaxFormula = $res_tax["result"][0]->getData(EBPLS_TAX_FORMULA);
                $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}', 'BUSTAX','" . $row["tax_fee_code"] . "','" . $row["business_nature_code"] . "','" . $row["tax_fee_desc"] . "','" . $row["tax_account_code"] . "', 0, now(), '{$creator}')";
                ebpls_db_funcs_debug("create_bus_enterprise_nature_fee tax/fee found : {$sql}");
                $rs = mysql_query($sql, $dbLink);
                // add nature to business enterprise nature table
                if (!$rs) {
                    set_db_error($dbLink);
                    return -1;
                }
                $i++;
            } else {
                ebpls_db_funcs_debug("create_bus_enterprise_nature_fee tax/fee code not found : " . $row["tax_fee_code"]);
                set_db_error(NULL, "create_bus_enterprise_nature_fee tax/fee code not found : " . $row["tax_fee_code"]);
                return -3;
            }
        }
        return $i;
    } else {
        set_db_error($dbLink);
        return -2;
    }
}
Exemplo n.º 2
0
 function _createRetireLOBTransaction($nature_code, $creator, $user_level)
 {
     $clsTrans = new EBPLSTransaction($this->m_dbLink);
     // insert to transaction table
     $clsTrans->data_elems[TRANS_TYPE] = TRANS_TYPE_RETIREMENT;
     $clsTrans->data_elems[TRANS_PAYMENT_STATUS] = TPS_PAYMENT_STATE_UNPAID;
     $clsTrans->data_elems[TRANS_OWNER_ID] = $this->getData(TRANS_OWNER_ID);
     $clsTrans->data_elems[TRANS_BUSINESS_ID] = $this->getData(TRANS_BUSINESS_ID);
     $clsTrans->data_elems[TRANS_PERMIT_TYPE] = "BUS";
     $this->debug("BUS ID : " . $clsTrans->data_elems[TRANS_BUSINESS_ID]);
     ebpls_start_transaction($clsTrans->m_dbLink);
     // get next transaction code
     $app_code = get_next_system_code($this->m_dbLink, CODES_APP_COL);
     $clsTrans->data_elems[TRANS_APPLICATION_CODE] = $app_code;
     $clsTrans->data_elems[TRANS_TRANSACTION_DATE] = date("Y-m-d H:i:s");
     $clsTrans->data_elems[TRANS_APPLICATION_DATE] = date("Y-m-d H:i:s");
     $clsTrans->data_elems[TRANS_ADMIN_USER] = $creator;
     $clsTrans->data_elems[TRANS_TRANSACTION_STATUS] = TRANS_STATUS_APPLICATION;
     $clsTrans->data_elems[TRANS_APPLICATION_CODE] = $app_code;
     $strValues = $clsTrans->data_elems;
     $ret = ebpls_insert_data($this->m_dbLink, EBPLS_TRANSACTION_TABLE, $strValues);
     if ($ret > 0) {
         $clsTrans->data_elems[TRANS_ID] = $ret;
         // create default application requirements
         $req_create = create_permit_requirements($this->m_dbLink, $ret, 0, "BUS", $creator, "APP", TRANS_TYPE_RETIREMENT);
         if ($req_create < 0) {
             $this->setError(-1, get_db_error());
         }
         // create default fees
         $fee_create = create_permit_requirements($this->m_dbLink, $ret, 0, "BUS", $creator, "FEE", TRANS_TYPE_RETIREMENT);
         if ($fee_create < 0) {
             $this->setError(-1, get_db_error());
         }
         // create default payable taxes
         $tax_nature_create = create_permit_requirements($this->m_dbLink, $ret, 0, "BUS", $creator, "TAX", TRANS_TYPE_RETIREMENT);
         if ($tax_nature_create < 0) {
             $this->setError(-1, get_db_error());
         }
         if (!is_array($nature_code)) {
             $nature_code = array($nature_code);
         }
         for ($i = 0; $i < count($nature_code); $i++) {
             // check if there are already pending retirement business nature of this kind
             $clsExistNature = new EBPLSTransactionBusinessNature($clsTrans->m_dbLink, false);
             if ($clsExistNature->exist($this->data_elems[TRANS_BUSINESS_ID], $this->data_elems[TRANS_OWNER_ID], $nature_code[$i], "RETIREMENT") > 0) {
                 $this->debug("_createRetireLOBTransaction : retirement of " . $nature_code[$i] . " already exist.");
                 $this->setError(-19, "_createRetireLOBTransaction : retirement of " . $nature_code[$i] . " already exist.");
                 ebpls_rollback_transaction($this->m_dbLink);
                 return -19;
             }
             $clsNatureView = new EBPLSTransactionBusinessNature($this->m_dbLink, false);
             if ($clsNatureView->view($this->data_elems[TRANS_ID], $nature_code[$i]) > 0) {
                 $clsFee = new EBPLSTransactionFee($this->m_dbLink, false);
                 if ($clsFee->view($this->data_elems[TRANS_ID], NULL, $nature_code[$i]) > 0) {
                     $clsPayables = new EBPLSTransactionPaymentSchedule($this->m_dbLink, false);
                     $payables_due = $clsPayables->getTotalAmountDue($this->data_elems[TRANS_ID], $clsFee->getData(TF_TAX_FEE_CODE));
                     if ($payables_due > 0) {
                         $this->debug("_createRetireLOBTransaction : retirement of " . $nature_code[$i] . " failed, current line of bus have pending payables.");
                         $this->setError(-21, "_createRetireLOBTransaction : retirement of " . $nature_code[$i] . " failed, current line of bus have pending payables.");
                         ebpls_rollback_transaction($this->m_dbLink);
                         return -21;
                     }
                 } else {
                     $this->debug("_createRetireLOBTransaction : retirement of " . $nature_code[$i] . " failed, nature code not linked to current transaction.");
                     $this->setError(-21, "_createRetireLOBTransaction : retirement of " . $nature_code[$i] . " failed, nature code not linked to current transaction.");
                     ebpls_rollback_transaction($this->m_dbLink);
                     return -21;
                 }
                 $clsNature = new EBPLSTransactionBusinessNature($clsTrans->m_dbLink, false);
                 $clsNature->setData(TRANS_BUSNATURE_TRANS_ID, $clsTrans->data_elems[TRANS_ID]);
                 $clsNature->setData(TRANS_BUSNATURE_BUSINESS_ID, $clsTrans->data_elems[TRANS_BUSINESS_ID]);
                 $clsNature->setData(TRANS_BUSNATURE_OWNER_ID, $clsTrans->data_elems[TRANS_OWNER_ID]);
                 $clsNature->setData(TRANS_BUSNATURE_STATUS, "RETIREMENT");
                 $clsNature->setData(TRANS_BUSNATURE_CAPITAL_INVESTMENT, "0.0");
                 $clsNature->setData(TRANS_BUSNATURE_LAST_GROSS, "0.0");
                 $clsNature->setData(TRANS_BUSNATURE_BUSINESS_NATURE_CODE, $clsNatureView->getData(TRANS_BUSNATURE_BUSINESS_NATURE_CODE));
                 $clsNature->setData(TRANS_BUSNATURE_BUSINESS_DESCRIPTION, $clsNatureView->getData(TRANS_BUSNATURE_BUSINESS_DESCRIPTION));
                 $fee_nature_create = $clsNature->add();
                 if ($fee_nature_create < 0) {
                     $this->setError($ret, $clsNature->getError());
                     $fee_nature_create = -12;
                 } else {
                     $clsNatureView2 = new EBPLSTransactionBusinessNature($this->m_dbLink, false);
                     $clsNatureView2->setData(TRANS_BUSNATURE_STATUS, "RETIRED");
                     if (($fee_nature_create = $clsNatureView2->update($this->data_elems[TRANS_ID], $clsNatureView->getData(TRANS_BUSNATURE_BUSINESS_NATURE_CODE))) < 0) {
                         //print_r( $clsNatureView2->getError() );
                         $this->setError($ret, $clsNatureView2->getError());
                         ebpls_rollback_transaction($this->m_dbLink);
                         $fee_nature_create = -11;
                     }
                     // remove LOB from enterprise nature records
                     // delete line of business from business nature list
                     $clsBus = new EBPLSEnterprise($this->m_dbLink);
                     $clsBus->deleteBusinessNature($nature_code[$i]);
                     if ($clsBus->update($this->getData(TRANS_BUSINESS_ID), $admin, $user_level) < 0) {
                         $this->debug("deleteLineOfBusiness : error on deleting line of business {$nature_code[$i]} on enterprise table.");
                         $this->setError(-15, "deleteLineOfBusinessdeleteLineOfBusiness : error on deleting line of business {$nature_code[$i]} on enterprise table.");
                         ebpls_rollback_transaction($this->m_dbLink);
                         return $retAddFee;
                     }
                     // update trans
                     $clsNature2 = new EBPLSTransactionBusinessNature($clsTrans->m_dbLink, false);
                     $ret1 = $clsNature2->getList($this->data_elems[TRANS_ID], "PENDING");
                     $ret2 = $clsNature2->getList($this->data_elems[TRANS_ID], "PROCESSED");
                     if ($ret1 < 0 && $ret2 < 0) {
                         $this->_setTransToRetire($admin);
                     }
                 }
             } else {
                 // unable to find nature code
                 $this->setError(-10, "Unable to find nature code {$nature_code[$i]} on current transaction!");
                 $fee_nature_create = -10;
                 break;
             }
         }
         // update application system code
         $ret_app_code = update_system_code($this->m_dbLink, CODES_APP_COL, $app_code);
         if ($ret_app_code < 0) {
             $this->setError(-1, "FATAL ERROR : failed to update app code on codes table. [ret_app_code = {$ret_app_code}, req_create = {$req_create}, fee_create= {$fee_create}, fee_nature_create = {$fee_nature_create} ]");
         }
         if ($ret_app_code < 0 || $req_create < 0 || $fee_create < 0 || $fee_nature_create < 0) {
             $this->debug("FATAL ERROR : failed to create transaction child records. [ret_app_code = {$ret_app_code}, req_create = {$req_create}, fee_create= {$fee_create}, fee_nature_create = {$fee_nature_create} ]");
             $call_ret = -1;
         } else {
             $this->debug("Create transaction record ok.[trans_id={$ret}]");
             $clsTrans->data_elems[TRANS_ID] = $ret;
             $call_ret = 1;
         }
     } else {
         $this->debug("FATAL ERROR : failed to create transaction record.");
         $this->setError(-1, get_db_error());
         $call_ret = -1;
     }
     if ($call_ret < 0) {
         // rollback caused by error return on any of the sql executed above...
         ebpls_rollback_transaction($this->m_dbLink);
         return -1;
     }
     ebpls_commit_transaction($this->m_dbLink);
     return $clsTrans;
 }