Beispiel #1
0
 /**
   Function: changeStatusFromTranferingToMatchedOrFailedForCancelOrderForHN
   Description: change Status
   Input: Order id
   Output: success / error code
 */
 function changeStatusFromTranferingToMatchedOrFailedForCancelOrderForHN($OrderID, $IsMatched, $AccountNo, $UpdatedBy)
 {
     $function_name = 'changeStatusFromTranferingToMatchedOrFailedForCancelOrderForHN';
     $struct = '{urn:' . $this->class_name . '}' . $function_name . 'Struct';
     if (authenUser(func_get_args(), $this, $function_name) > 0) {
         return returnXML(func_get_args(), $this->class_name, $function_name, $this->_ERROR_CODE, $this->items, $this);
     }
     if (!required($OrderID) || !unsigned($OrderID)) {
         $this->_ERROR_CODE = 30220;
     } else {
         if (intval($IsMatched) == 1) {
             $query = sprintf("SELECT o1.OrderQuantity, o1.OrderPrice, o1.OrderAgencyFee,\r\n                    o2.OrderQuantity AS OlderQuantity, o2.OrderAgencyFee AS OldOrderAgencyFee,\r\n                    o1.OldOrderID, o1.AccountID, o2.OrderSideID, o2.UnitCode, o2.BankID\r\n                    FROM %s o1, %s o2\r\n                    WHERE o1.ID=%u\r\n                    AND o1.Deleted='0'\r\n                    AND o2.Deleted='0'\r\n                    AND o1.OldOrderID=o2.ID\r\n                    AND o1.OrderStockStatusID=%u ", TBL_ORDER, TBL_ORDER, $OrderID, ORDER_TRANSFERING);
             $rs = $this->_MDB2->extended->getRow($query);
             //block money in bank
             $query = sprintf("SELECT vw_ListAccountBank_Detail.*\r\n                    FROM vw_ListAccountBank_Detail, %s\r\n                    WHERE AccountNo='%s'\r\n                    AND %s.Deleted='0'\r\n                    AND vw_ListAccountBank_Detail.AccountID = %s.AccountID\r\n                    AND vw_ListAccountBank_Detail.BankID = %u\r\n                    ORDER BY Priority LIMIT 1", TBL_ORDER, $AccountNo, TBL_ORDER, TBL_ORDER, $rs['bankid']);
             $bank_rs = $this->_MDB2->extended->getRow($query);
             $vip = checkVIPAccount($AccountNo);
             // 1: exist 0: not exist
             if ($rs['ordersideid'] == ORDER_BUY) {
                 if ($bank_rs['accountid'] == $rs['accountid']) {
                     //last Order
                     $oldTempFee = $rs['olderquantity'] * $rs['orderprice'] * $rs['oldorderagencyfee'];
                     $oldTempFee = $oldTempFee > 10000 ? $oldTempFee : 10000;
                     $oldOrderValue = $rs['olderquantity'] * $rs['orderprice'] + $oldTempFee;
                     $oldOrderValue = number_format($oldOrderValue, 0, ".", "");
                     //remain Quantity
                     $remainQuantity = $rs['olderquantity'] - $rs['orderquantity'];
                     $remainQuantity = number_format($remainQuantity, 0, ".", "");
                     //cancel Order
                     if ($remainQuantity > 0) {
                         //incompleted cancel
                         $tempCancelFee = $remainQuantity * $rs['orderprice'] * $rs['orderagencyfee'];
                         $tempCancelFee = $tempCancelFee > 10000 ? $tempCancelFee : 10000;
                         $cancelOrderValue = $remainQuantity * $rs['orderprice'] + $tempCancelFee;
                         $cancelOrderValue = number_format($cancelOrderValue, 0, ".", "");
                     } else {
                         //completed cancel
                         $cancelOrderValue = 0;
                     }
                     $cancelValue = $oldOrderValue - $cancelOrderValue;
                     if (strpos(PAGODA_ACCOUNT, $AccountNo) === false && $vip == 0) {
                         switch ($bank_rs['bankid']) {
                             case DAB_ID:
                                 $dab =& new CDAB();
                                 $dab_rs = $dab->cancelBlockMoney($bank_rs['bankaccount'], $AccountNo, $rs['oldorderid'], $cancelValue);
                                 break;
                             case VCB_ID:
                                 $dab =& new CVCB();
                                 $oldOrderID = $rs['oldorderid'] . $rs['unitcode'];
                                 $suffix = date("His");
                                 $newOrderID = $rs['oldorderid'] . $suffix;
                                 if ($cancelOrderValue > 0) {
                                     $dab_rs = $dab->editBlockMoney($AccountNo, $oldOrderID, $newOrderID, $oldOrderValue, $cancelOrderValue);
                                 } else {
                                     $dab_rs = $dab->cancelBlockMoney($AccountNo, $oldOrderID, $oldOrderValue);
                                 }
                                 break;
                             case NVB_ID:
                                 $dab =& new CNVB();
                                 $dab_rs = $dab->cancelBlockMoney(substr($rs['oldorderid'] . date("His"), 3), $bank_rs['bankaccount'], $cancelValue, $rs['oldorderid']);
                                 break;
                             case NHHM:
                             case OFFLINE:
                                 $query = sprintf("CALL sp_VirtualBank_Cancel('%s', %u, %u, %f, '%s')", $AccountNo, $bank_rs['bankid'], $rs['oldorderid'], $cancelValue, $UpdatedBy);
                                 $mdb = initWriteDB();
                                 $off_rs = $mdb->extended->getRow($query);
                                 $mdb->disconnect();
                                 $dab_rs = $off_rs['varerror'];
                                 break;
                         }
                         // switch
                     } else {
                         $dab_rs = 0;
                     }
                     if ($dab_rs != 0) {
                         //fail
                         $IsMatched = 0;
                         switch ($bank_rs['bankid']) {
                             case DAB_ID:
                                 switch ($dab_rs) {
                                     case '-1':
                                         $this->_ERROR_CODE = 41060;
                                         break;
                                     case '-2':
                                         $this->_ERROR_CODE = 41061;
                                         break;
                                     case '-3':
                                         $this->_ERROR_CODE = 41062;
                                         break;
                                     case '-4':
                                         $this->_ERROR_CODE = 41063;
                                         break;
                                     case '-5':
                                         $this->_ERROR_CODE = 41064;
                                         break;
                                     case '1':
                                         $this->_ERROR_CODE = 41065;
                                         break;
                                     default:
                                         $this->_ERROR_CODE = $dab_rs;
                                 }
                                 // switch
                                 break;
                             case VCB_ID:
                                 $arrErr = explode("_", $dab_rs);
                                 $this->_ERROR_CODE = $arrErr[1];
                                 break;
                             case NVB_ID:
                                 $this->_ERROR_CODE = $dab_rs;
                                 break;
                             case NHHM:
                             case OFFLINE:
                                 switch ($dab_rs) {
                                     case '-1':
                                         $this->_ERROR_CODE = 30730;
                                         break;
                                     case '-2':
                                         $this->_ERROR_CODE = 30731;
                                         break;
                                     case '-3':
                                         $this->_ERROR_CODE = 30732;
                                         break;
                                     case '-4':
                                         $this->_ERROR_CODE = 30733;
                                         break;
                                     case '-5':
                                         $this->_ERROR_CODE = 30734;
                                         break;
                                     default:
                                         $this->_ERROR_CODE = $dab_rs;
                                 }
                                 break;
                         }
                     }
                     // bank
                 } else {
                     // AccountNo doesn't match
                     $this->_ERROR_CODE = 30225;
                     return returnXML(func_get_args(), $this->class_name, $function_name, $this->_ERROR_CODE, $this->items, $this);
                 }
             }
         }
         $query = sprintf("CALL sp_updateFromTranferingToMatchedOrFailedForCancelOrderForHN(%u, '%u', '%s', '%s')", $OrderID, $IsMatched, $UpdatedBy, $suffix);
         $rs = $this->_MDB2_WRITE->extended->getRow($query);
         if (empty($rs)) {
             $this->_ERROR_CODE = 30221;
         } else {
             $result = $rs['varerror'];
             if ($result < 0) {
                 switch ($result) {
                     case '-2':
                         $this->_ERROR_CODE = 30223;
                         break;
                     default:
                         $this->_ERROR_CODE = 666;
                 }
                 //switch
             }
             // if result
         }
         // if store
     }
     // return returnXML(func_get_args(), $this->class_name, $function_name, /*$this->_ERROR_CODE*/33333, $this->items, $this );
     return returnXML(func_get_args(), $this->class_name, $function_name, $this->_ERROR_CODE, $this->items, $this);
 }
Beispiel #2
0
 function getListInvalidFutureBuyingOrder($OrderDate, $StockExchangeID)
 {
     // End 20100723 - Them $StockExchangeID ------------------------------------------------------- //
     $function_name = 'getListInvalidFutureBuyingOrder';
     $struct = '{urn:' . $this->class_name . '}' . $function_name . 'Struct';
     if (authenUser(func_get_args(), $this, $function_name) > 0) {
         return returnXML(func_get_args(), $this->class_name, $function_name, $this->_ERROR_CODE, $this->items, $this);
     }
     if (!required($OrderDate)) {
         $this->_ERROR_CODE = 30480;
     } elseif (!required($StockExchangeID)) {
         $this->_ERROR_CODE = 30001;
     } else {
         // $query = sprintf( "CALL sp_getListInvalidFutureBuyingOrder('%s' )", $OrderDate );
         $query = sprintf("CALL sp_getListInvalidFutureBuyingOrder('%s', '%s' )", $OrderDate, $StockExchangeID);
         $rs = $this->_MDB2_WRITE->extended->getAll($query);
         $this->_MDB2_WRITE->disconnect();
         $count = count($rs);
         for ($i = 0; $i < $count; $i++) {
             // 20100723 - Quang change ---------------------------------
             // $vip = checkVIPAccount($AccountNo);// 1: exist 0: not exist
             $vip = checkVIPAccount($rs[$i]['accountno']);
             // 1: exist 0: not exist
             // End 20100723 - Quang change -----------------------------
             if (strpos(PAGODA_ACCOUNT, $rs[$i]['accountno']) === false && $vip == 0) {
                 if ($rs[$i]['ordersideid'] == ORDER_BUY) {
                     switch ($rs[$i]['bankid']) {
                         case DAB_ID:
                             $dab =& new CDAB();
                             $dab_rs = $dab->cancelBlockMoney($rs[$i]['bankaccount'], $rs[$i]['accountno'], $rs[$i]['id'], $rs[$i]['amount']);
                             break;
                         case VCB_ID:
                             $dab =& new CVCB();
                             $newOrderID = $rs[$i]['id'] . $rs[$i]['unitcode'];
                             $dab_rs = $dab->cancelBlockMoney($rs[$i]['accountno'], $newOrderID, $rs[$i]['amount']);
                             break;
                         case NVB_ID:
                             $dab =& new CNVB();
                             $dab_rs = $dab->cancelBlockMoney(substr($rs[$i]['id'] . date("His"), 3), $rs[$i]['bankaccount'], $rs[$i]['amount'], $rs[$i]['id']);
                             break;
                         case OFFLINE:
                             $query = sprintf("CALL sp_VirtualBank_Cancel('%s', %u, %u, %f, '%s')", $rs[$i]['accountno'], OFFLINE, $rs[$i]['id'], $rs[$i]['amount'], $function_name);
                             $this->_MDB2_WRITE->connect();
                             $off_rs = $this->_MDB2_WRITE->extended->getRow($query);
                             $this->_MDB2_WRITE->disconnect();
                             $dab_rs = $off_rs['varerror'];
                             break;
                     }
                     // switch
                     if ($dab_rs == 0) {
                         $success = 1;
                     } else {
                         $success = 0;
                     }
                     $this->_MDB2_WRITE->connect();
                     $query = sprintf("CALL sp_updateFromApprovedToDeniedForFutureBuyingOrder( %u, %u )", $rs[$i]['id'], $success);
                     $update_rs = $this->_MDB2_WRITE->extended->getRow($query);
                     $this->_MDB2_WRITE->disconnect();
                 }
                 // BUY order
                 $bank_result .= $rs[$i]['accountno'] . "   " . $rs[$i]['id'] . "   " . $rs[$i]['amount'] . " --> " . $dab_rs . "\r\n";
                 $arraySMS['Phone'] = $rs[$i]['mobilephone'];
                 $OrderSide = $rs[$i]['ordersideid'] == ORDER_BUY ? "Mua" : "Ban";
                 $arraySMS['Content'] = "EPS: Lenh " . $OrderSide . " " . $rs[$i]['symbol'] . " - TK: " . $rs[$i]['accountno'] . " khong hop le do sai gia Tran/San";
                 sendSMS($arraySMS);
             }
             // PAGODA_ACCOUNT
         }
         // for
         mailSMTP('Quản lý Đặt lệnh', '*****@*****.**', '*****@*****.**', '*****@*****.**', '', 'Danh sách lệnh đặt trước không hợp lệ - StockExchangeID:' . $StockExchangeID, 'Danh sách lệnh đặt trước không hợp lệ \\r\\n <br>' . $bank_result);
         // mailSMTP('Quản lý Đặt lệnh','*****@*****.**','*****@*****.**','*****@*****.**', '', 'Danh sách lệnh đặt trước không hợp lệ - StockExchangeID:'.$StockExchangeID,'Danh sách lệnh đặt trước không hợp lệ \r\n <br>'.$bank_result);
         $filename = $_SERVER['DOCUMENT_ROOT'] . "/bank/unlock/" . date("Ymd");
         file_put_contents($filename, $bank_result);
     }
     return returnXML(func_get_args(), $this->class_name, $function_name, $this->_ERROR_CODE, $this->items, $this);
 }
Beispiel #3
0
 function insertCoSellOrder($CoAccountNo, $AccountNo, $StockID, $OrderQuantity, $OrderPrice, $Session, $FromTypeID, $Note, $OrderDate, $IsAssigner, $IsGotPaper, $CreatedBy, $AccountNoContra, $CompanyNameContra)
 {
     $function_name = 'insertCoSellOrder';
     $struct = '{urn:' . $this->class_name . '}' . $function_name . 'Struct';
     $log[] = sprintf('insertCoSellOrder - CoAccountNo:%s;AccountNo:%s;StockID:%s;OrderQuantity:%s;OrderPrice:%s;Session:%s;FromTypeID:%s;Note:%s;OrderDate:%s;IsAssigner:%s;IsGotPaper:%s;CreatedBy:%s;AccountNoContra:%s;CompanyNameContra:%s;ExecutedTime:%s', $CoAccountNo, $AccountNo, $StockID, $OrderQuantity, $OrderPrice, $Session, $FromTypeID, $Note, $OrderDate, $IsAssigner, $IsGotPaper, $CreatedBy, $AccountNoContra, $CompanyNameContra, date('Y-m-d h:i:s'));
     if (authenUser(func_get_args(), $this, $function_name) > 0) {
         $log[] = sprintf('authenUser: ERROR_CODE: %s', $this->_ERROR_CODE);
         write_my_log_path("insertCoSellOrder", implode("\n --> ", $log), '/home/vhosts/eSMS/htdocs/logs/otc/');
         return returnXML(func_get_args(), $this->class_name, $function_name, $this->_ERROR_CODE, $this->items, $this);
     }
     $log[] = sprintf('authenUser: ERROR_CODE: %s', $this->_ERROR_CODE);
     // checking account is active / not
     if (!checkAccountIsActive($AccountNo) || !checkAccountIsActive($CoAccountNo)) {
         $this->_ERROR_CODE = 30275;
         $log[] = sprintf('checkAccountIsActive: ERROR_CODE: %s; AccountNo:%s,%s;CoAccountNo: %s,%s', $this->_ERROR_CODE, $AccountNo, checkAccountIsActive($AccountNo) ? 'TRUE' : 'FALSE', $CoAccountNo, checkAccountIsActive($CoAccountNo) ? 'TRUE' : 'FALSE');
         write_my_log_path("insertCoSellOrder", implode("\n --> ", $log), '/home/vhosts/eSMS/htdocs/logs/otc/');
         return returnXML(func_get_args(), $this->class_name, $function_name, 30275, $this->items, $this);
     }
     $log[] = sprintf('checkAccountIsActive: ERROR_CODE: %s; AccountNo:%s,%s;CoAccountNo: %s,%s', $this->_ERROR_CODE, $AccountNo, checkAccountIsActive($AccountNo) ? 'TRUE' : 'FALSE', $CoAccountNo, checkAccountIsActive($CoAccountNo) ? 'TRUE' : 'FALSE');
     if (!required($CoAccountNo) || !required($AccountNo) || !required($OrderDate) || !required($StockID) || !required($OrderQuantity) || !required($OrderPrice) || !required($Session) || !unsigned($OrderQuantity) || !unsigned($StockID)) {
         if (!required($AccountNo) || !required($CoAccountNo)) {
             $this->_ERROR_CODE = 30051;
         }
         if (!required($OrderDate)) {
             $this->_ERROR_CODE = 30052;
         }
         if (!required($StockID) || !unsigned($StockID)) {
             $this->_ERROR_CODE = 30053;
         }
         if (!required($OrderQuantity) || !unsigned($OrderQuantity)) {
             $this->_ERROR_CODE = 30054;
         }
         if (!required($Session)) {
             $this->_ERROR_CODE = 30055;
         }
         if (!required($OrderPrice)) {
             $this->_ERROR_CODE = 30056;
         }
         $log[] = sprintf('check require: ERROR_CODE: %s', $this->_ERROR_CODE);
     } else {
         $vip = checkVIPAccount($AccountNo);
         // 1: exist 0: not exist
         $vipCo = checkVIPAccount($CoAccountNo);
         // 1: exist 0: not exist
         if (($vip == 1 || $vipCo == 1) && $FromTypeID == 5) {
             // web
             $this->_ERROR_CODE = 30602;
             $log[] = sprintf('Vip on web: Fail; AccountNo: %s;CoAccountNo: %s', $vip == 0 ? 'not vip' : 'vip', $vipCo == 0 ? 'not vip' : 'vip');
             write_my_log_path("insertCoSellOrder", implode("\n --> ", $log), '/home/vhosts/eSMS/htdocs/logs/otc/');
             return returnXML(func_get_args(), $this->class_name, $function_name, $this->_ERROR_CODE, $this->items, $this);
         }
         if ((strpos(EOT_PROHIBITION_ACCOUNT, $AccountNo) !== false || strpos(EOT_PROHIBITION_ACCOUNT, $CoAccountNo) !== false) && $FromTypeID == 5) {
             $this->_ERROR_CODE = 30602;
             $log[] = sprintf('check EOT_PROHIBITION_ACCOUNT: ERROR_CODE: %s;AccountNo:%s,%s;CoAccountNo:%s,%s', $this->_ERROR_CODE, $AccountNo, strpos(EOT_PROHIBITION_ACCOUNT, $AccountNo), $CoAccountNo, strpos(EOT_PROHIBITION_ACCOUNT, $CoAccountNo));
             write_my_log_path("insertCoSellOrder", implode("\n --> ", $log), '/home/vhosts/eSMS/htdocs/logs/otc/');
             return returnXML(func_get_args(), $this->class_name, $function_name, $this->_ERROR_CODE, $this->items, $this);
         }
         if (!checkStockPrice($StockID, $OrderPrice, $OrderDate)) {
             $this->_ERROR_CODE = 30057;
         }
         $log[] = sprintf('checkStockPrice: ERROR_CODE: %s', $this->_ERROR_CODE);
         $sellingOrderID = '';
         $buyingOrderID = '';
         try {
             if ($this->_ERROR_CODE == 0) {
                 // -------------------------------------------------------------------------------------- //
                 // Insert sell order for $CoAccountNo
                 // -------------------------------------------------------------------------------------- //
                 $query = sprintf("CALL sp_upcom_insertSellingOrder('%s', %u, %u, %u, %u, '%u', '%s', '%s', '%u', '%u', '%s', '%s', '%s')", $CoAccountNo, $StockID, $OrderQuantity, $OrderPrice, $Session, $FromTypeID, $Note, $OrderDate, $IsAssigner, $IsGotPaper, $CreatedBy, $AccountNoContra, $CompanyNameContra);
                 $log[] = sprintf('%s', $query);
                 $mdb = initWriteDB();
                 $rs = $mdb->extended->getRow($query);
                 $mdb->disconnect();
                 if (empty($rs)) {
                     $this->_ERROR_CODE = 30060;
                 } else {
                     $result = $rs['varerror'];
                     if ($result < 0) {
                         switch ($result) {
                             case '-1':
                                 $this->_ERROR_CODE = 19010;
                                 break;
                             case '-2':
                                 $this->_ERROR_CODE = 19011;
                                 break;
                             case '-3':
                                 $this->_ERROR_CODE = 19012;
                                 break;
                             case '-4':
                                 $this->_ERROR_CODE = 19013;
                                 break;
                             case '-5':
                                 $this->_ERROR_CODE = 19014;
                                 break;
                             case '-6':
                                 $this->_ERROR_CODE = 19015;
                                 break;
                             default:
                                 $this->_ERROR_CODE = $result;
                         }
                     } else {
                         $sellingOrderID = $result;
                     }
                 }
                 $log[] = sprintf('ERROR_CODE: %s', $this->_ERROR_CODE);
                 $log[] = sprintf('SellingOrderID: %s', $sellingOrderID);
             }
             if ($this->_ERROR_CODE == 0) {
                 // -------------------------------------------------------------------------------------- //
                 // Insert buy order for $AccountNo
                 // -------------------------------------------------------------------------------------- //
                 $query = sprintf("CALL sp_upcom_insertBuyingOrder('%s', %u, %u, %u, %u, %u, '%s', '%s', '%u', '%u', '%s', '%s', '%s')", $AccountNo, $StockID, $OrderQuantity, $OrderPrice, $Session, $FromTypeID, $Note, $OrderDate, $IsAssigner, $IsGotPaper, $CreatedBy, $AccountNoContra, $CompanyNameContra);
                 $log[] = sprintf('%s', $query);
                 $rs = $this->_MDB2_WRITE->extended->getRow($query);
                 if (empty($rs)) {
                     $this->_ERROR_CODE = 30015;
                     $log[] = sprintf('ERROR_CODE: %s', $this->_ERROR_CODE);
                 } else {
                     $result = $rs['varerror'];
                     if ($result < 0) {
                         switch ($result) {
                             case '-1':
                                 $this->_ERROR_CODE = 19001;
                                 break;
                             case '-2':
                                 $this->_ERROR_CODE = 19002;
                                 break;
                             case '-3':
                                 $this->_ERROR_CODE = 19003;
                                 break;
                             case '-4':
                                 $this->_ERROR_CODE = 19004;
                                 break;
                             case '-5':
                                 $this->_ERROR_CODE = 19005;
                                 break;
                             default:
                                 $this->_ERROR_CODE = $result;
                         }
                         $log[] = sprintf('ERROR_CODE: %s', $this->_ERROR_CODE);
                     } else {
                         $isQuotaAccount = CheckIsQuotaAccount($AccountNo);
                         $vip = checkVIPAccount($AccountNo);
                         // 1: exist 0: not exist
                         $log[] = sprintf('ERROR_CODE: %s', $this->_ERROR_CODE);
                         $log[] = sprintf('BuyingOrderID: %s', $result);
                         $buyingOrderID = $result;
                         //block money in bank
                         $query = sprintf("SELECT * FROM vw_ListAccountBank_Detail WHERE AccountNo='%s' ORDER BY Priority ", $AccountNo);
                         $log[] = sprintf('%s', $query);
                         $mdb = initWriteDB();
                         $bank_rs = $mdb->extended->getAll($query);
                         $log[] = sprintf('PAGODA_ACCOUNT: %s', strpos(PAGODA_ACCOUNT, $AccountNo) === false ? 'FALSE' : 'TRUE');
                         $log[] = sprintf('VIP_ACCOUNT: %s', $vip == 0 ? 'FALSE' : 'TRUE');
                         if (strpos(PAGODA_ACCOUNT, $AccountNo) === false && $vip == 0) {
                             $dab_rs = 999;
                             if ($isQuotaAccount != 0) {
                                 $BankID = NHHM;
                                 $mdb = initWriteDB();
                                 $query = sprintf("CALL sp_VirtualBank_Lock('%s', %u,  %u, %f, '%s', '%s')", $AccountNo, NHHM, $result, $rs['varordervalue'], $OrderDate, $CreatedBy);
                                 $off_rs = $mdb->extended->getRow($query);
                                 $mdb->disconnect();
                                 $dab_rs = $off_rs['varerror'];
                                 $log[] = sprintf('block_money: bankid:NHHM;result:%s', $dab_rs);
                             } else {
                                 for ($i = 0; $i < count($bank_rs); $i++) {
                                     switch ($bank_rs[$i]['bankid']) {
                                         case DAB_ID:
                                             $dab =& new CDAB();
                                             $dab_rs = $dab->blockMoney($bank_rs[$i]['bankaccount'], $bank_rs[$i]['cardno'], $AccountNo, $result, $rs['varordervalue'], $OrderDate);
                                             $log[] = sprintf('block_money: bankid:DAB_ID;result:%s', $dab_rs);
                                             break;
                                         case VCB_ID:
                                             $dab =& new CVCB();
                                             $OrderID = $result . $rs['varunitcode'];
                                             if (!killStupidBank()) {
                                                 // VCB is stupid
                                                 $dab_rs = $dab->blockMoney($AccountNo, $OrderID, $rs['varordervalue']);
                                             } else {
                                                 $dab_rs = 30999;
                                             }
                                             $log[] = sprintf('block_money: bankid:VCB_ID;result:%s', $dab_rs);
                                             break;
                                         case ANZ_ID:
                                             $OrderID = $result;
                                             $query = sprintf("CALL sp_anz_money_request_lock( %u, '%s', '%s', '%s' )", $OrderID, $AccountNo, $rs['varordervalue'], $CreatedBy);
                                             $this->_MDB2_WRITE->connect();
                                             $rs1 = $this->_MDB2_WRITE->extended->getRow($query);
                                             $this->_MDB2_WRITE->disconnect();
                                             switch ($rs1['varerror']) {
                                                 case -1:
                                                     $dab_rs = 34511;
                                                     //database error
                                                     break;
                                                 case -2:
                                                     $dab_rs = 34512;
                                                     //not enough money to unlock
                                                     break;
                                                 case -3:
                                                     $dab_rs = 34513;
                                                     //account does not exist
                                                     break;
                                                 default:
                                                     $dab_rs = $rs1['varerror'];
                                             }
                                             $log[] = sprintf('block_money: bankid:ANZ_ID;result:%s', $dab_rs);
                                             // added by Quang, 20100407 ------------------------------------
                                             break;
                                         case OFFLINE:
                                             //inAccountNo varchar(20),inBankID int,inOrderID bigint,inOrderAmount double,inOrderDate date,inCreatedBy
                                             $mdb = initWriteDB();
                                             $query = sprintf("CALL sp_VirtualBank_Lock('%s', %u,  %u, %f, '%s', '%s')", $AccountNo, OFFLINE, $result, $rs['varordervalue'], $OrderDate, $CreatedBy);
                                             $off_rs = $mdb->extended->getRow($query);
                                             $mdb->disconnect();
                                             $dab_rs = $off_rs['varerror'];
                                             $log[] = sprintf('block_money: bankid:OFFLINE;result:%s', $dab_rs);
                                             break;
                                             // end add -----------------------------------------------------
                                     }
                                     if ($dab_rs == 0) {
                                         $BankID = $bank_rs[$i]['bankid'];
                                         break;
                                     }
                                 }
                             }
                         } else {
                             $dab_rs = 0;
                         }
                         if ($dab_rs == 0) {
                             //Successfully
                             $log[] = sprintf('successded_block_money');
                             $mdb = initWriteDB();
                             if ($Session <= 3) {
                                 $query = sprintf("CALL sp_updateBuyingOrderFromPendingToApproved(%u, %u) ", $result, $BankID);
                             } else {
                                 $query = sprintf("CALL sp_updateBuyingOrderFromPendingToTransfered(%u, %u) ", $result, $BankID);
                             }
                             $log[] = sprintf('%s', $query);
                             $status_rs = $mdb->extended->getRow($query);
                             $mdb->disconnect();
                             if (empty($status_rs)) {
                                 $this->_ERROR_CODE = 30143;
                             } else {
                                 $result = $status_rs['varerror'];
                                 if ($result < 0) {
                                     //update Order Status fail
                                     switch ($result) {
                                         case '-1':
                                             $this->_ERROR_CODE = 30141;
                                             break;
                                         case '-2':
                                             $this->_ERROR_CODE = 30142;
                                             break;
                                     }
                                     //switch
                                 }
                                 // if
                             }
                             // if WS
                             $log[] = sprintf('ERROR_CODE: %s', $this->_ERROR_CODE);
                         } else {
                             // bank fail
                             $log[] = sprintf('failed_block_money');
                             switch ($dab_rs) {
                                 case '-1':
                                     $this->_ERROR_CODE = 41020;
                                     break;
                                 case '-2':
                                     $this->_ERROR_CODE = 41021;
                                     break;
                                 case '-3':
                                     $this->_ERROR_CODE = 41022;
                                     break;
                                 case '-4':
                                     $this->_ERROR_CODE = 41023;
                                     break;
                                 case '-5':
                                     $this->_ERROR_CODE = 41024;
                                     break;
                                 case '1':
                                     $this->_ERROR_CODE = 41025;
                                     break;
                                 case '2':
                                     $this->_ERROR_CODE = 41026;
                                     break;
                                 case '3':
                                     $this->_ERROR_CODE = 41027;
                                     break;
                                 case '4':
                                     $this->_ERROR_CODE = 41028;
                                     break;
                                 case '5':
                                     $this->_ERROR_CODE = 41030;
                                     break;
                                 case '99':
                                     $this->_ERROR_CODE = 41029;
                                     break;
                                 default:
                                     $this->_ERROR_CODE = $dab_rs;
                             }
                             $log[] = sprintf('ERROR_CODE: %s', $this->_ERROR_CODE);
                             $mdb = initWriteDB();
                             $query = sprintf("CALL sp_updateBuyingOrderFromPendingToDenied(%u, '%s') ", $result, $dab_rs);
                             $log[] = sprintf('%s', $query);
                             $status_rs = $mdb->extended->getRow($query);
                             $mdb->disconnect();
                             if (empty($status_rs)) {
                                 $this->_ERROR_CODE = 30144;
                             } else {
                                 $result = $status_rs['varerror'];
                                 if ($result < 0) {
                                     //update Order Status fail
                                     switch ($result) {
                                         case '-1':
                                             $this->_ERROR_CODE = 30145;
                                             break;
                                         case '-2':
                                             $this->_ERROR_CODE = 30146;
                                             break;
                                     }
                                     //switch
                                 }
                                 // if
                             }
                             // if WS
                             $log[] = sprintf('ERROR_CODE: %s', $this->_ERROR_CODE);
                         }
                     }
                 }
                 // -------------------------------------------------------------------------------------- //
                 // End Insert buy order for $AccountNo
                 // -------------------------------------------------------------------------------------- //
             }
             $this->items[0] = new SOAP_Value('item', $struct, array("BuyingOrderID" => new SOAP_Value("BuyingOrderID", "string", $buyingOrderID), "SellingOrderID" => new SOAP_Value("SellingOrderID", "string", $sellingOrderID)));
         } catch (Exception $e) {
             $log[] = sprintf('Exception: %s', $e->getMessage());
             $this->_ERROR_CODE = 30060;
         }
     }
     write_my_log_path("insertCoSellOrder", implode("\n --> ", $log), '/home/vhosts/eSMS/htdocs/logs/otc/');
     return returnXML(func_get_args(), $this->class_name, $function_name, $this->_ERROR_CODE, $this->items, $this);
 }