📄 salemang.cpp
字号:
}
}
break;
case 5:
if((strcmp(strCalledNo[nCalledNum],"00852")==0)||(strcmp(strCalledNo[nCalledNum],"00853")==0)||(strcmp(strCalledNo[nCalledNum],"00886")==0))
Ipdlg->strAreaName[nLineNum]="港台";
else
{
if(strcmp(strCalledNo[nCalledNum].Mid(0,3),"001")==0)
Ipdlg->strAreaName[nLineNum]="美加";
else
{
if(strcmp(strCalledNo[nCalledNum].Mid(0,2),"00")==0)
Ipdlg->strAreaName[nLineNum]="国际";
else
{
if(strcmp(strCalledNo[nCalledNum].Mid(0,1),"0")==0)
Ipdlg->strAreaName[nLineNum]="国内";
else
Ipdlg->strAreaName[nLineNum]="本地";
}
}
}
break;
default:
break;
}
return;
}
}
}
}
}
void CSaleMang::ControlLine(int nClk,int nLine)
{
CIPCountDlg *Idlg;
Idlg=(CIPCountDlg *)GetParent();
div_t nRes;
nRes=div(nClk,2);
CString strSendLine="";
strSendLine.Format("%d", nLine);
if(nRes.rem==1)
{
Idlg->bClosedLine[nLine-1]=FALSE;
m_SaleGrid.SetTextMatrix(nLine,9,"开");
Idlg->nFlagLine[nLine-1]=0;
Idlg->ShowLineColor(nLine-1,RGB(0,40,140));//显示蓝颜色
//AfxMessageBox(strSendLine);
if(nLine>8)
{
strSendLine.Format("line %d",nLine-9);
Idlg->SendCommand("no bil", strSendLine, Idlg->nGwCom[1]);
}
else
{
strSendLine.Format("line %d",nLine-1);
Idlg->SendCommand("no bil", strSendLine, Idlg->nGwCom[0]);
}
ResetList(nLine);
}
else
{
Idlg->bClosedLine[nLine-1]=TRUE;
m_SaleGrid.SetTextMatrix(nLine,9,"关");
m_SaleGrid.SetTextMatrix(nLine,1,"锁定");
Idlg->ShowLineColor(nLine-1,RGB(255,0,0));//显示红颜色
Idlg->nFlagLine[nLine-1]=7;
if(nLine>8)
{
strSendLine.Format("line %d",nLine-9);
Idlg->SendCommand("bil", strSendLine, Idlg->nGwCom[1]);
}
else
{
strSendLine.Format("line %d",nLine-1);
Idlg->SendCommand("bil", strSendLine, Idlg->nGwCom[0]);
}
if(Idlg->bClosed[nLine-1])
{
Idlg->bTalking[nLine-1]=FALSE;
Idlg->bClosed[nLine-1]=FALSE;
}
}
}
void CSaleMang::ResetList(int nLine)
{
m_SaleGrid.SetTextMatrix(nLine,1,"空闲");
m_SaleGrid.SetTextMatrix(nLine,7,strNum[nLine-1]);
m_SaleGrid.SetTextMatrix(nLine,2,"");
m_SaleGrid.SetTextMatrix(nLine,3,"");
m_SaleGrid.SetTextMatrix(nLine,4,"");
m_SaleGrid.SetTextMatrix(nLine,5,"");
m_SaleGrid.SetTextMatrix(nLine,6,"");
}
BOOL CSaleMang::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
int j=0;
CIPCountDlg *Ipcdlg;
Ipcdlg=(CIPCountDlg *)GetParent();
int nMax=0;
//获得文件的当前路径
TCHAR pFileName[MAX_PATH];
GetModuleFileName(NULL,pFileName,MAX_PATH);
if(strchr(pFileName,'\\'))
*strrchr(pFileName,'\\')='\0';
strcat(pFileName,"\\IPCount.chm");
if (pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_F2:
::ShellExecute(NULL,"Open",pFileName,NULL,NULL,SW_SHOW);
break;
default:
break;
}
}
if (pMsg->message == WM_KEYDOWN && (pMsg->hwnd == hGrid ) )
{
nMax = Ipcdlg->nOperateLines;
switch (pMsg->wParam )
{
case VK_ADD:
if(nMax==16)
bAddKey=TRUE;
break;
case VK_SUBTRACT:
if(nMax==16)
bAddKey=FALSE;
break;
case 49:
case VK_NUMPAD1:
if(bAddKey)
return OnClickNum(9);
return OnClickNum(1);
case 50:
case VK_NUMPAD2:
if(bAddKey)
return OnClickNum(10);
return OnClickNum(2);
case 51:
case VK_NUMPAD3:
if(bAddKey)
return OnClickNum(11);
return OnClickNum(3);
case 52:
case VK_NUMPAD4:
if(bAddKey)
return OnClickNum(12);
return OnClickNum(4);
case 53:
case VK_NUMPAD5:
if(bAddKey)
return OnClickNum(13);
return OnClickNum(5);
case 54:
case VK_NUMPAD6:
if(bAddKey)
return OnClickNum(14);
return OnClickNum(6);
case 55:
case VK_NUMPAD7:
if(bAddKey)
return OnClickNum(15);
return OnClickNum(7);
case 48:
case VK_NUMPAD0:
if(bAddKey)
return OnClickNum(8);
return OnClickNum(0);
case 56:
case VK_F11:
case VK_NUMPAD8:
for(j=0;j<nMax;j++)
{
Ipcdlg->bClosedLine[j]=FALSE;
if(strcmp(m_SaleGrid.GetTextMatrix(j+1,9),"开")!=0)
{
Ipcdlg->nFlagLine[j]=0;
nCountClk[j]++;
m_SaleGrid.SetTextMatrix(j+1,9,"开");
if(strcmp(m_SaleGrid.GetTextMatrix(j+1,1),"锁定")==0)//待测试
ResetList(j+1);
Ipcdlg->ShowLineColor(j,RGB(0,40,140));//显示蓝颜色
}
else
{
if(strcmp(m_SaleGrid.GetTextMatrix(j+1,1),"空闲")==0)
{
Ipcdlg->nFlagLine[j]=0;
ResetList(j+1);
}
}
}
Ipcdlg->SendCommand("no bil", "line", Ipcdlg->nGwCom[0]);
if (nMax==16)
{
Ipcdlg->SendCommand("no bil", "line", Ipcdlg->nGwCom[1]);
}
break;
case 57:
case VK_F12:
case VK_NUMPAD9:
SetAllLineHot();
break;
default:
break;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
void CSaleMang::OnCancel()
{
// TODO: Add extra cleanup here
CIPCountDlg *cdlg;
cdlg=(CIPCountDlg *)GetParent();
if(cdlg==NULL)
return;
//有通话未结束,不能退出营业管理
bQuitSaleMang=TRUE;//是退出营业管理
bCheckLineCount=FALSE;//线路是否全部结算
if((cdlg->bTalking[0])||(cdlg->bTalking[1])||(cdlg->bTalking[2])||(cdlg->bTalking[3])||(cdlg->bTalking[4])||(cdlg->bTalking[5])||(cdlg->bTalking[6])||(cdlg->bTalking[7])||(cdlg->bTalking[8])||(cdlg->bTalking[9])||(cdlg->bTalking[10])||(cdlg->bTalking[11])||(cdlg->bTalking[12])||(cdlg->bTalking[13])||(cdlg->bTalking[14])||(cdlg->bTalking[15]))
{
bCanQuit=FALSE;
this->ShowWindow(SW_NORMAL);
m_SaleGrid.SetFocus();
return;
}
GetFromTemp("");
if(bCheckLineCount)
{
bCanQuit=FALSE;
this->ShowWindow(SW_NORMAL);
m_SaleGrid.SetFocus();
return;
}
for (int nQuit=0; nQuit<nMaxPort; nQuit++)
{
if (cdlg->bOpenCom[nQuit])
{
cdlg->SendCommand("bil", "line", cdlg->nGwCom[nQuit]);
}
}
cdlg->bOpenSale=FALSE;
bCanQuit=TRUE;
KillTimer(OneSecondTimer);
CDialog::OnCancel();
DestroyWindow();
}
void CSaleMang::OnChgoper()
{
// TODO: Add your control notification handler code here
odlg.DoModal();
m_SaleGrid.SetFocus();
}
HBRUSH CSaleMang::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(pWnd ->m_hWnd == GetDlgItem(IDC_EDIT_CBCOUNT) ->m_hWnd)
{
pDC ->SetTextColor(RGB(0,0,255));
}
if(pWnd ->m_hWnd == GetDlgItem(IDC_EDIT_CDCOUNT) ->m_hWnd)
{
pDC ->SetTextColor(RGB(255,0,0));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
//从Temp标获得信息
void CSaleMang::GetFromTemp(CString strLine)
{
SQLHENV henv = NULL;
SQLHDBC hdbc = NULL;
BOOL bIsConnected=FALSE;
SQLHSTMT hstmt = NULL;
SQLRETURN rc;
SWORD sMsgNum = 0;
SDWORD pfNative=0;
if (SQL_SUCCESS == (rc =::SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv)))
{
if (SQL_SUCCESS == (rc = ::SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3,SQL_IS_INTEGER)))
{
if (SQL_SUCCESS == (rc =::SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc)))
{
rc = ::SQLConnect(hdbc,(SQLCHAR*)"IPCount",SQL_NTS,(SQLCHAR*)"", SQL_NTS, (SQLCHAR*)"", SQL_NTS);
if ((SQL_SUCCESS == rc)|| (SQL_SUCCESS_WITH_INFO == rc))
{
bIsConnected=TRUE;
if (SQL_SUCCESS == (rc =::SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt)))
{
CString strChar='\'';
CString strSQL="";
if((atoi(strLine)==16)||(atoi(strLine)==18))
strSQL="SELECT * FROM Temp";
else if(bQuitSaleMang)
strSQL="SELECT * FROM Temp";
else
strSQL = "SELECT * FROM Temp where [线号] ="+strChar+strLine+strChar;
LPCSTR szSQL =strSQL;
if (SQL_SUCCESS == (rc = ::SQLPrepare(hstmt,(unsigned char*)szSQL, SQL_NTS)))
{
if (SQL_SUCCESS == (rc = ::SQLExecute(hstmt)))
{
SDWORD cb;
char szLineNum[PERSON_INFO]="";//线号
char szNum[PERSON_INFO]="";//流水号
char szCalledNum[PERSON_INFO]="";//被叫
char szDay[PERSON_INFO]="";//日期
char szTLen[PERSON_INFO]="";//时长
char szFeeRate[PERSON_INFO]="";//费率
char szCount[PERSON_INFO]="";//话费
char szPreMoney[PERSON_INFO]="";
char szRemain[PERSON_INFO]="";
char szAreaName[PERSON_INFO]="";
char szORate[PERSON_INFO]="";
if(!bQuitSaleMang)
{
SQLBindCol(hstmt,2,SQL_C_CHAR,szLineNum,PERSON_INFO,&cb);
SQLBindCol(hstmt,1,SQL_C_CHAR,szNum,PERSON_INFO,&cb);
SQLBindCol(hstmt,3,SQL_C_CHAR,szCalledNum,PERSON_INFO,&cb);
SQLBindCol(hstmt,4,SQL_C_CHAR,szDay,PERSON_INFO,&cb);
SQLBindCol(hstmt,5,SQL_C_CHAR,szTLen,PERSON_INFO,&cb);
SQLBindCol(hstmt,6,SQL_C_CHAR,szFeeRate,PERSON_INFO,&cb);
SQLBindCol(hstmt,7,SQL_C_CHAR,szCount,PERSON_INFO,&cb);
SQLBindCol(hstmt,11,SQL_C_CHAR,szORate,PERSON_INFO,&cb);
SQLBindCol(hstmt,8,SQL_C_CHAR,szPreMoney,PERSON_INFO,&cb);
SQLBindCol(hstmt,9,SQL_C_CHAR,szRemain,PERSON_INFO,&cb);
SQLBindCol(hstmt,10,SQL_C_CHAR,szAreaName,PERSON_INFO,&cb);
}
else
{
SQLBindCol(hstmt,2,SQL_C_CHAR,szLineNum,PERSON_INFO,&cb);
}
rc = SQLFetch(hstmt);
double nCallCount=0;
CString strCallCount="";
CString strGridCount="";
CString strLineNoCount="";//没有结算的线路
while (SQL_SUCCESS == rc)
{
if(!bQuitSaleMang)
{
nGridCount++;
strGridCount.Format("%d",nGridCount);
ldlg->m_LineGrid.SetTextMatrix(nGridCount,0,szNum);
ldlg->m_LineGrid.SetTextMatrix(nGridCount,1,strGridCount);
//ldlg->m_strShowLine=szLineNum;
ldlg->m_LineGrid.SetTextMatrix(nGridCount,2,szCalledNum);
ldlg->m_LineGrid.SetTextMatrix(nGridCount,3,szDay);
ldlg->m_LineGrid.SetTextMatrix(nGridCount,4,szTLen);
ldlg->m_LineGrid.SetTextMatrix(nGridCount,5,szFeeRate);
ldlg->m_LineGrid.SetTextMatrix(nGridCount,7,szCount);
ldlg->m_LineGrid.SetTextMatrix(nGridCount,6,szORate);
ldlg->m_LineGrid.SetTextMatrix(nGridCount,8,szPreMoney);
ldlg->m_LineGrid.SetTextMatrix(nGridCount,9,szRemain);
ldlg->m_LineGrid.SetTextMatrix(nGridCount,10,szAreaName);
nCallCount+=atof(szCount);
}
else
{
if(strLineNoCount.IsEmpty())
strLineNoCount=szLineNum;
else
strLineNoCount=strLineNoCount+','+szLineNum;
}
//重新初始化每一个变量
strcpy((char *)szNum,LPCTSTR(""));
strcpy((char *)szLineNum,LPCTSTR(""));
strcpy((char *)szCalledNum,LPCTSTR(""));
strcpy((char *)szDay,LPCTSTR(""));
strcpy((char *)szTLen,LPCTSTR(""));
strcpy((char *)szFeeRate,LPCTSTR(""));
strcpy((char *)szCount,LPCTSTR(""));
strcpy((char *)szORate,LPCTSTR(""));
strcpy((char *)szPreMoney,LPCTSTR(""));
strcpy((char *)szRemain,LPCTSTR(""));
strcpy((char *)szAreaName,LPCTSTR(""));
rc = SQLFetch(hstmt);
}
if(!bQuitSaleMang)
{
strCallCount.Format("%.2f",nCallCount);
//strCallCount=strCallCount.Mid(0,strCallCount.GetLength()-4);
ldlg->m_strShowStatic=strCallCount;
ldlg->m_strShowCount.Format("%d",nGridCount);
}
else
{
if(!strLineNoCount.IsEmpty())
{
bCheckLineCount=TRUE;
AfxMessageBox("线路"+strLineNoCount+"没结算");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -