⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 salemang.cpp

📁 IP电话计费管理系统本地版
💻 CPP
📖 第 1 页 / 共 4 页
字号:
							 }
						 }
						 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 + -