/***************************************************************************
****************************************************************************
** FUNCTION NAME : PrcsTradeFeeInqry **
** **
** INPUT PARAMS : TRADE_FEE_INQRY_IN *pTradeFeeInqryIn **
** **
** OUTPUT PARAMS : **
** **
** DESCRIPTION : **
** **
** NON LOCAL DATA REF: **
** **
** CALLING FUNCTIONS : **
** **
** RETURN VALUE : iReturnValue **
** **
** MOD HISTORY : **
****************************************************************************
***************************************************************************/
RETURN_VALUE PrcsTradeFeeInqry(TRADE_FEE_INQRY_IN *pTradeFeeInqryIn)
{
RETURN_VALUE iReturnValue = 0 ;
BOOL bStatusValue = FALSE ;
COUNT iNumOfRecord = 0 ;
COUNT iResult = 0 ;
AMNT dTtlFeeAmnt = 0 ;
INDC iCheckLastPkt = 0 ;
COUNT iNumOfRcrd = 0 ;
TRADE_FEE_INQRY_IN_BODY sTradeFeeInqryInBody ;
TRADE_FEE_INQRY_IN_BODY *pTradeFeeInqryInBody ;
TRADE_FEE_INQRY_OUT_BODY saTradeFeeInqryOutBody[TRADE_FEE_RECORDS];
TRADE_FEE_INQRY_OUT sTradeFeeInqryOut ;
TRADE_FEE_INQRY_OUT *pTradeFeeInqryOut ;
pTradeFeeInqryInBody = &sTradeFeeInqryInBody ;
pTradeFeeInqryOut = &sTradeFeeInqryOut ;
memset(pTradeFeeInqryInBody,NULL,sizeof(CDC_DEAL_INQRY_IN_BODY));
memset(pTradeFeeInqryOut,NULL,sizeof(CDC_DEAL_INQRY_OUT));
pTradeFeeInqryInBody = &pTradeFeeInqryIn->sTradeFeeInqryInBody ;
#ifdef DBG
ProcessEventLog(TRC_DBG,ERR_TRC,Info(iReturnValue),"%s","Entered function : PrcsTradeFeeInqry");
#endif
#ifdef DBG
ProcessEventLog(TRC_DBG,ERR_TRC,0,"Receive value Mktsrno is <%ld> ,caFromDate is <%s>, caToDate is <%s>, lDealSrno is <%lf>",pTradeFeeInqryInBody->lMktSrno, pTradeFeeInqryInBody->caFromDate,pTradeFeeInqryInBody->caToDate,pTradeFeeInqryInBody->caDealSrno);
#endif
memset(saTradeFeeInqryOutBody,NULL,
sizeof(TRADE_FEE_INQRY_OUT_BODY)*TRADE_FEE_RECORDS);
iReturnValue = FtchNumOfRcrdsDB(pTradeFeeInqryInBody,&iNumOfRcrd);
if(iReturnValue NOT_EQUAL 0 && abs(iReturnValue) NOT_EQUAL RECORD_NOT_FOUND)
{
ProcessEventLog(TRC_ERR,ERR_APPL,Warn(iReturnValue),"Error in function FtchNumOfRcrdsDB from function PrcsTradeFeeInqry");
return (iReturnValue);
}
iResult = iNumOfRcrd/TRADE_FEE_RECORDS ;
iReturnValue = FtchTtlFeeAmntDB(pTradeFeeInqryInBody,&dTtlFeeAmnt);
if(iReturnValue NOT_EQUAL 0 && abs(iReturnValue) NOT_EQUAL RECORD_NOT_FOUND)
{
ProcessEventLog(TRC_ERR,ERR_APPL,Warn(iReturnValue),"Error in function FtchTtlFeeAmntDB from function PrcsTradeFeeInqry");
return (iReturnValue);
}
iReturnValue = FtchTradeFeeMktInfrmnDB(pTradeFeeInqryInBody,
saTradeFeeInqryOutBody,
&iNumOfRecord);
if(abs(iReturnValue) EQUAL 0)
{
iNumOfRecord = TRADE_FEE_RECORDS ;
}
else if(abs((iReturnValue) EQUAL RECORD_NOT_FOUND&&iNumOfRecord NOT_EQUAL 0)
||
abs((iReturnValue) EQUAL NO_ERROR&&pTradeFeeInqryInBody->iPageNum EQUAL iResult))
{
/** This is for check last packet **/
pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.iLastPktOrNot = 1 ;
}
else if(abs(iReturnValue) EQUAL RECORD_NOT_FOUND&&iNumOfRecord EQUAL 0)
{
memset(pTradeFeeInqryOut,NULL,sizeof(TRADE_FEE_INQRY_OUT));
memcpy(&pTradeFeeInqryOut->sHeader,
&pTradeFeeInqryIn->sHeader,sizeof(HEADER));
memcpy(&pTradeFeeInqryOut->sTrailer,
&pTradeFeeInqryIn->sTrailer,sizeof(TRAILER));
pTradeFeeInqryOut->sHeader.error_code = RECORD_NOT_FOUND ;
/** This is for check last packet **/
pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.iLastPktOrNot = 1 ;
pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.dTtlFeeAmnt = dTtlFeeAmnt;
}else if(iReturnValue NOT_EQUAL 0 && abs(iReturnValue) NOT_EQUAL RECORD_NOT_FOUND)
{
ProcessEventLog(TRC_ERR,ERR_APPL,Warn(iReturnValue),"Error in function FtchTradeFeeMktInfrmnDB from function PrcsTradeFeeInqry");
return (iReturnValue);
}
pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.dTtlFeeAmnt = dTtlFeeAmnt;
#ifdef DBG
ProcessEventLog(TRC_DBG,ERR_TRC,0,"Total Fee Amnt Is ==> <%lf> ",pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.dTtlFeeAmnt);
#endif
iReturnValue = PpltInfoForTradeFeeInqry(iNumOfRecord,
pTradeFeeInqryIn,
saTradeFeeInqryOutBody,
pTradeFeeInqryOut);
if(iReturnValue NOT_EQUAL 0)
{
ProcessEventLog(TRC_ERR,ERR_APPL,Warn(iReturnValue),"Error in function PpltInfoForCdcDealInqry from function PrcsTradeFeeInqry");
return (iReturnValue);
}
/*******************************************************************
Return the total number of records which had fetched.
********************************************************************/
pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.iNumOfRecords =iNumOfRecord ;
#ifdef DBG
ProcessEventLog(TRC_DBG,ERR_TRC,0,"Total Number Of Records Fetched Is ==><%d> iLastPktOrNot is ==><%d>",pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.iNumOfRecords,pTradeFeeInqryOut->saTradeFeeInqryOutBodyDtls.iLastPktOrNot);
#endif
iReturnValue = SendToTrader(pTradeFeeInqryOut,
sizeof(TRADE_FEE_INQRY_OUT),
TC_TRADE_FEE_OUT);
if(iReturnValue NOT_EQUAL 0)
{
ProcessEventLog(TRC_ERR,ERR_APPL,Warn(iReturnValue),"Error in function : SendToTrader from function PrcsTradeFeeInqry");
return (iReturnValue);
}
#ifdef DBG
ProcessEventLog(TRC_DBG,ERR_TRC,Info(iReturnValue),"Exiting function: PrcsTradeFeeInqry");
#endif
return (iReturnValue);
}
==================== pc file ========================
/**************************************************************************
***************************************************************************
** **
** Function Name : FtchTradeFeeMktInfrmnDB **
** **
** Input Params : **
** **
** Output Params : **
** **
** Description : **
** **
** Return Value : returns 0 on success and sqlcode on failure **
** **
** Mod History : **
** **
***************************************************************************
**************************************************************************/
RETURN_VALUE FtchTradeFeeMktInfrmnDB(
TRADE_FEE_INQRY_IN_BODY *pTradeFeeInqryInBody,
TRADE_FEE_INQRY_OUT_BODY *pTradeFeeInqryOutBody,
COUNT *pCount)
{
#ifdef DBG
ProcessEventLog(TRC_DBG,ERR_TRC,Info(0),"Entered FtchTradeFeeMktInfrmnDB");
#endif
EXEC SQL BEGIN DECLARE SECTION ;
struct sqlca sqlca ;
QUERY_STRING caQueryString[MAX_QUERY_LEN];
QUERY_STRING caCnclString[MAX_QUERY_LEN] ;
QUERY_STRING caThirdString[MAX_QUERY_LEN] ;
COUNT iDepth = TRADE_FEE_RECORDS ;
DESC caTempStr[30] ;
EXEC SQL END DECLARE SECTION ;
memset(caQueryString,NULL,QUERY_STRING_LNGTH);
strcpy(caQueryString," SELECT * FROM (SELECT QR.*, ROWNUM AS RS FROM ( ");
strcat(caQueryString," SELECT ");
strcat(caQueryString," NVL(FEE_DEAL_AMNT,0),");
strcat(caQueryString," NVL(FEE_STLMNT_AMNT,0),");
strcat(caQueryString," NVL(FEE_FEE_AMNT,0), ");
strcat(caQueryString," NVL(FEE_FEE_MKT_SRNO,0) ,");
strcat(caQueryString," NVL(FEE_DEAL_DEAL_IDNTY,0) ,");
strcat(caQueryString," NVL(FEE_TRADER_USER_ID,0) ,");
strcat(caQueryString," NVL(FEE_CP_USER_ID,0) ,");
strcat(caQueryString," NVL(FEE_CP_ENTY_CODE,0) ,");
strcat(caQueryString," NVL(FEE_DEAL_DRCTN_INDC,0) ");
strcat(caQueryString," FROM TRDX_FEE_TABLE");
memset(caCnclString,NULL,sizeof(QUERY_STRING_LNGTH));
sprintf(caCnclString," WHERE FEE_FEE_MKT_SRNO = '%ld' AND FEE_DEAL_DATE >= to_date('%s','yyyymmdd') AND FEE_DEAL_DATE <= to_date('%s','yyyymmdd') ",
pTradeFeeInqryInBody->lMktSrno,
pTradeFeeInqryInBody->caFromDate,
pTradeFeeInqryInBody->caToDate);
strcat(caQueryString,caCnclString);
if(!strcmp(pTradeFeeInqryInBody->caDealSrno,"NULL"))
{
}
else
{
memset(caTempStr,0,sizeof(caTempStr));
strcpy(caTempStr,"'%");
strcat(caTempStr,pTradeFeeInqryInBody->caDealSrno);
strcat(caTempStr,"%'");
memset(caCnclString,0,sizeof(caCnclString));
sprintf(caCnclString," AND FEE_DEAL_DEAL_IDNTY like %s ",caTempStr);
strcat(caQueryString,caCnclString);
}
memset(caThirdString,NULL,sizeof(QUERY_STRING_LNGTH));
sprintf(caThirdString," ) QR) WHERE RS >= ('%d'-1)*TRADE_FEE_RECORDS+1 AND RS <=('%d')*TRADE_FEE_RECORDS",pTradeFeeInqryInBody->iPageNum,pTradeFeeInqryInBody->iPageNum);
strcat(caQueryString,caThirdString);
#ifdef DBG
ProcessEventLog(TRC_DBG,ERR_TRC,Info(0),"query_string : [%s]",caQueryString);
#endif
EXEC SQL PREPARE FtchTradeFeeQueryDB FROM : caQueryString ;
if(sqlca.sqlcode)
{
ProcessEventLog(TRC_DBG,ERR_TRC,Warn(0),"Error in Prepare Statement. sqlcode : [%d]",sqlca.sqlcode);
return(sqlca.sqlcode);
}
EXEC SQL DECLARE FTCH_TRADE_FEE_CURSOR CURSOR FOR FtchTradeFeeQueryDB ;
if( sqlca.sqlcode NOT_EQUAL NO_ERROR )
{
ProcessEventLog(TRC_WRN,ERR_DB,Warn(sqlca.sqlcode),
"Err in declaring cursor FTCH_TRADE_FEE_CURSOR ");
return sqlca.sqlcode ;
}
EXEC SQL OPEN FTCH_TRADE_FEE_CURSOR;
if(sqlca.sqlcode NOT_EQUAL NO_ERROR)
{
ProcessEventLog(TRC_DBG,ERR_DB,Warn(sqlca.sqlcode)," Error in opening cursor FTCH_TRADE_FEE_CURSOR");
return(sqlca.sqlcode);
}
EXEC SQL FOR :iDepth FETCH FTCH_TRADE_FEE_CURSOR
INTO :pTradeFeeInqryOutBody;
*pCount = sqlca.sqlerrd[2] ;
if(sqlca.sqlcode && abs(sqlca.sqlcode) NOT_EQUAL RECORD_NOT_FOUND)
{
ProcessEventLog(TRC_DBG,ERR_DB,Warn(sqlca.sqlcode),"%s"
,"Error in fetching cursor FTCH_TRADE_FEE_CURSOR.");
return(sqlca.sqlcode);
}
#ifdef DBG
ProcessEventLog(TRC_DBG,ERR_TRC,sqlca.sqlcode,"%s"," Exit FtchTradeFeeMktInfrmnDB");
#endif
return sqlca.sqlcode ;
}