// C_CmccCJ.cpp : implementation file // #include "stdafx.h" #include "smsmanager.h" #include "C_CmccCJ.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CC_CmccCJ dialog #include "MainFrm.h" #include "ProcessSocket.h" #include "DLG_HZB_Export.h" #include "DLG_Pay_TC.h" #include "DLG_C_CmccCJ_See.h" #include "DLG_C_CmccCJ_Pay.h" CC_CmccCJ::CC_CmccCJ(CWnd* pParent /*=NULL*/) : CDialog(CC_CmccCJ::IDD, pParent) { //{{AFX_DATA_INIT(CC_CmccCJ) m_tBegin = COleDateTime::GetCurrentTime(); m_tEnd = COleDateTime::GetCurrentTime(); m_lCJType = -1; //}}AFX_DATA_INIT m_bInit = false; m_bRefresh = false; memset(&m_SeeData , 0 , sizeof(m_SeeData)); } void CC_CmccCJ::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CC_CmccCJ) DDX_Control(pDX, IDC_C_AGENTCJ_S1, m_S_S1); DDX_Control(pDX, IDC_C_AGENTCJ_LIST, m_wndList); DDX_DateTimeCtrl(pDX, IDC_C_AGENTCJ_TBEGIN, m_tBegin); DDX_DateTimeCtrl(pDX, IDC_C_AGENTCJ_TEND, m_tEnd); DDX_CBIndex(pDX, IDC_C_AGENTCJ_TYPE, m_lCJType); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CC_CmccCJ, CDialog) //{{AFX_MSG_MAP(CC_CmccCJ) ON_WM_SIZE() ON_BN_CLICKED(IDC_C_AGENTCJ_QUERY, OnCAgentpayQuery) ON_NOTIFY(NM_DBLCLK, IDC_C_AGENTCJ_LIST, OnDblclkCAgentpayList) ON_NOTIFY(NM_RCLICK, IDC_C_AGENTCJ_LIST, OnRclickCAgentpayList) //}}AFX_MSG_MAP ON_COMMAND(MENU_AGENTCJ_SEE , On_User_See ) ON_COMMAND(MENU_AGENTCJ_YS , On_User_YS ) ON_COMMAND(MENU_AGENTCJ_EXPORT , On_User_Export ) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CC_CmccCJ message handlers void CC_CmccCJ::Close() { //清除队列中的内容 while (!m_PayData.IsEmpty()) { ANS_CMCC_CJData * pData = m_PayData.GetHead(); m_PayData.RemoveHead(); delete pData; } } BOOL CC_CmccCJ::RefreshInfo() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) ) { return false; } return true; } BOOL CC_CmccCJ::ReHide() { ShowWindow( SW_HIDE ); return true; } BOOL CC_CmccCJ::ReShow(BOOL bRefresh) { ShowWindow( SW_SHOW ); if ( bRefresh || !m_bRefresh ) { RefreshInfo(); } return true; } BOOL CC_CmccCJ::ProcessSocket(Socket_Head *pHead) { CString strTemp; if(pHead->lFuncType == SMSFUNC_CMCC_CJ ) { ANS_CMCC_CJ * pPay = (ANS_CMCC_CJ *)pHead->pFrame; ANS_CMCC_CJData * pData= (ANS_CMCC_CJData *)(pHead->pFrame+sizeof(ANS_CMCC_CJ)); Close(); for ( int i=0 ; ilCount ; i++ ) { ANS_CMCC_CJData * pNewData = new ANS_CMCC_CJData; *pNewData = *pData; POSITION pos = m_PayData.AddTail(pNewData); pData ++; } RefreshAgentCJData(); return true; } if(pHead->lFuncType == SMSFUNC_CMCC_TC ) { ANS_CMCC_TC * pPay = (ANS_CMCC_TC *)pHead->pFrame; ANS_CMCC_TCData * pData= (ANS_CMCC_TCData *)(pHead->pFrame+sizeof(ANS_CMCC_TC)); DLG_C_CMCCCJ_See dlg(this); dlg.SetParam(&m_SeeData , pPay , pData ); dlg.DoModal(); return true; } if(pHead->lFuncType == SMSFUNC_CMCC_CJFF ) { ANS_CMCC_CJFF * pPay = (ANS_CMCC_CJFF *)pHead->pFrame; ANS_CMCC_CJFFData * pData= (ANS_CMCC_CJFFData *)(pHead->pFrame+sizeof(ANS_CMCC_CJFF)); for ( int i=0 ; i< pPay->lCount ; i++ ) { m_wndList.SetItemText( pData->lItem , 5 , _T(" 已收") ); pData ++; } CString str; str.Format( _T("已收运营商酬金成功,共设置%d条记录!") , pPay->lCount ); MessageBox( str , _T("信息") , MB_ICONINFORMATION ); return true; } return false; } BOOL CC_CmccCJ::OnInitDialog() { CDialog::OnInitDialog(); //取得共用参数 //CMainFrame * pFrame = static_cast ((CMainFrame *)AfxGetMainWnd()); this->GetParent()->GetParentFrame(); m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame(); m_pSocket = &m_pMainFrame->m_Socket; //初始化List m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LIST) ); m_wndList.SubClassWindow2(); m_wndList.SetHeadings(_T("序号,50; 酬金月份,80;计费金额,90;酬金金额,80;酬金笔数,80;是否支付,80; 支付时间,120;支付金额,80;出单人,80; 备注,120;")); m_wndList.SetGridLines(true); // m_wndList.SetImageList(&m_Image,LVSIL_SMALL); m_bInit = true; /* //默认取上月的内容 SYSTEMTIME t; ::GetLocalTime(&t); t.wDay = 1;//从1号起 t.wMonth = t.wMonth-1; if ( t.wMonth <=0 ) { t.wMonth = 12; t.wYear = t.wYear-1; } m_tBegin.SetDate( t.wYear,t.wMonth,t.wDay ); //起始 if ( t.wMonth == 1 || t.wMonth == 3 || t.wMonth == 5 || t.wMonth == 7 || t.wMonth == 8 || t.wMonth == 10 || t.wMonth == 12 ) { t.wDay = 31; } else if (t.wMonth == 2 ) t.wDay = 28; else t.wDay = 30; m_tEnd.SetDate( t.wYear,t.wMonth,t.wDay );//结束 */ SYSTEMTIME t; ::GetLocalTime(&t); m_tBegin.SetDate( t.wYear,t.wMonth,1 ); //起始 m_tEnd.SetDate( t.wYear,t.wMonth,t.wDay );//结束 m_lCJType = 0; UpdateData(false); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CC_CmccCJ::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if ( m_bInit ) { CRect rect; m_S_S1.GetWindowRect(&rect); m_wndList.MoveWindow( 0 , 0+rect.Height()+5 , cx,cy-rect.Height()-5); } } void CC_CmccCJ::OnCAgentpayQuery() { UpdateData(true); if ( m_tEnd < m_tBegin ) { MessageBox( _T("查询结束日期不能小于起始日期,请改正!") , _T("错误") , MB_ICONWARNING ); return ; } REQ_CMCC_CJ * pCJ = new REQ_CMCC_CJ;memset(pCJ,0,sizeof(REQ_CMCC_CJ)); m_tBegin.GetAsSystemTime( pCJ->tBegin ); m_tEnd.GetAsSystemTime( pCJ->tEnd ); pCJ->lType = m_lCJType; m_pMainFrame->SendFrame(SMSFUNC_CMCC_CJ,(BYTE*)pCJ,sizeof(REQ_CMCC_CJ)); } void CC_CmccCJ::RefreshAgentCJData() { long lAgentID = -10; //显示所有的 m_wndList.ShowWindow(SW_HIDE); m_wndList.DeleteAllItems(); //删除原有的内容 POSITION pos = m_PayData.GetHeadPosition(); POSITION pos2=0; int i=0; TCHAR Buf[128]={0}; double fTotal=0; double fCJTotal=0; double fPayTotal=0; long lCount=0; while ( pos ) { pos2 = pos; ANS_CMCC_CJData * pData = m_PayData.GetNext(pos); if ( pData ) { /* if ( (lAgentID == -10) || (lAgentID == -11 && pData->lAgentID <=0 ) || (lAgentID == -12 && pData->lAgentID >0 ) || (lAgentID == pData->lAgentID ) ) */ { //m_wndList.SetHeadings(_T("序号,50; 酬金月份,80;计费金额,90;酬金金额,80;酬金笔数,80;是否支付,80; 支付时间,120;出单人,80; 备注,120;")); _stprintf( Buf , _T("%d") , i+1 ); m_wndList.InsertItem( i , Buf , 0 ); //Item为0的原因是倒转显示 //_stprintf( Buf , _T("%d-%s"),pData->lAgentID,pData->szAgentName); _stprintf( Buf , _T("%04d-%02d") , pData->tCJTime.wYear , pData->tCJTime.wMonth ); m_wndList.SetItemText( i , 1 , Buf ); _stprintf( Buf , _T("%8.2f") , pData->fTotal); m_wndList.SetItemText( i , 2 , Buf ); _stprintf( Buf , _T("%8.2f") , pData->fCJTotal); m_wndList.SetItemText( i , 3 , Buf ); _stprintf( Buf , _T("%7d") , pData->lCJCount ); m_wndList.SetItemText( i , 4 , Buf ); if ( pData->lCJType==1 ) m_wndList.SetItemText( i , 5 , _T(" 已收") ); else m_wndList.SetItemText( i , 5 , _T(" 应收") ); _stprintf( Buf , _T("%04d.%02d.%02d") , pData->lCJFFTime.wYear,pData->lCJFFTime.wMonth,pData->lCJFFTime.wDay); m_wndList.SetItemText( i , 6 , Buf ); _stprintf( Buf , _T("%8.2f") , pData->fPayTotal); m_wndList.SetItemText( i , 7 , Buf ); m_wndList.SetItemText( i , 8 , pData->szCJFFUser ); m_wndList.SetItemText( i , 9 , pData->szBZ ); m_wndList.SetItemData(i , (DWORD_PTR)pos2 ); fTotal += pData->fTotal; fCJTotal += pData->fCJTotal; fPayTotal+= pData->fPayTotal; lCount += pData->lCJCount; i++; } } } m_wndList.InsertItem(i,_T(""),0 ); i++; m_wndList.InsertItem(i,_T("合计"),0 ); _stprintf( Buf , _T("%8.2f") , fTotal ); m_wndList.SetItemText( i , 2 , Buf ); _stprintf( Buf , _T("%8.2f") , fCJTotal ); m_wndList.SetItemText( i , 3 , Buf ); _stprintf( Buf , _T("%8d") , lCount); m_wndList.SetItemText( i , 4 , Buf ); _stprintf( Buf , _T("%8.2f") , fPayTotal ); m_wndList.SetItemText( i , 7 , Buf ); m_wndList.ShowWindow(SW_SHOW); } void CC_CmccCJ::OnDblclkCAgentpayList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; On_User_See(); } void CC_CmccCJ::OnRclickCAgentpayList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; ShowRMenu(); } void CC_CmccCJ::ShowRMenu() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) ) { return ; } CMenu menu; menu.CreatePopupMenu(); BOOL bLock = false; ANS_CMCC_CJData * pData = NULL; long lItem = this->GetCurrentSelected(); if ( lItem>=0 ) { POSITION pos = (POSITION)m_wndList.GetItemData(lItem); pData = m_PayData.GetNext( pos ); } //添加 if ( lItem>=0 ) { menu.AppendMenu(MF_STRING , MENU_AGENTCJ_SEE , _T(" 查 看 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_AGENTCJ_SEE , _T(" 查 看 ") ); } menu.AppendMenu(MF_SEPARATOR ); if ( lItem>=0 && pData && pData->lCJType==0) { menu.AppendMenu(MF_STRING , MENU_AGENTCJ_YS , _T(" 确认已收酬金 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_AGENTCJ_YS , _T(" 确认已收酬金 ") ); } menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING , MENU_AGENTCJ_EXPORT , _T(" 导 出 ") ); //显示菜单 POINT pt ; ::GetCursorPos( &pt ); //this->ClientToScreen( &pt); menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL); menu.DestroyMenu(); } long CC_CmccCJ::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } void CC_CmccCJ::On_User_See() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); ANS_CMCC_CJData * pData = m_PayData.GetNext( pos ); if (pData) { m_SeeData = *pData; REQ_CMCC_TC * pTC = new REQ_CMCC_TC;memset(pTC,0,sizeof(REQ_CMCC_TC)); //代理商 pTC->lCJID = m_SeeData.lCJID; pTC->tCJTime=m_SeeData.tCJTime; m_pMainFrame->SendFrame(SMSFUNC_CMCC_TC,(BYTE*)pTC,sizeof(REQ_CMCC_TC)); } } void CC_CmccCJ::On_User_YS() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) ) { return ; } long lItem = this->GetCurrentSelected(); if ( lItem <0 ) return ; DLG_C_CMCCCJ_Pay dlg(this); if ( dlg.DoModal() != IDOK ) return ; long lCount = m_wndList.GetItemCount(); ANS_CMCC_CJFFData * pData = new ANS_CMCC_CJFFData[lCount]; memset(pData , 0 , sizeof(ANS_CMCC_CJFFData)*lCount ); long lDataCount=0; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); ANS_CMCC_CJData * pCJData2; POSITION pos2; while(pos) { long lItem = m_wndList.GetNextSelectedItem(pos); pos2 = (POSITION)m_wndList.GetItemData(lItem); pCJData2 = m_PayData.GetNext(pos2); //取得列表中的pos if ( pCJData2->lCJType==0 ) { pData[lDataCount].lItem = lItem; pData[lDataCount].lCJID = pCJData2->lCJID; lDataCount++; } } if ( lDataCount >0 ) { long lSize = sizeof(REQ_CMCC_CJFF) + sizeof(ANS_CMCC_CJFFData)*lDataCount ; BYTE * pSendData = new BYTE[lSize]; memset(pSendData,0,lSize); REQ_CMCC_CJFF * pCJFF = (REQ_CMCC_CJFF*)pSendData; ANS_CMCC_CJFFData * pCJFFData = (ANS_CMCC_CJFFData*)(pSendData+sizeof(REQ_CMCC_CJFF)); pCJFF->lCount = lDataCount; dlg.m_tTime.GetAsSystemTime(pCJFF->tTime); _tcscpy(pCJFF->szBZ , dlg.m_strBZ ); pCJFF->fPayTotal = dlg.m_fPayTotal; memcpy(pCJFFData , pData , sizeof(ANS_CMCC_CJFFData)*lDataCount ); m_pMainFrame->SendFrame( SMSFUNC_CMCC_CJFF , (BYTE*)pSendData , lSize); } delete pData; } void CC_CmccCJ::On_User_Export() { //m_wndList.SetHeadings(_T("序号,50; 代理名称,200; 酬金月份,80;酬金金额,80;酬金笔数,80;是否支付,80; 支付时间,120;出单人,80; 备注,120;")); SortItem item[32]={0}; _tcscpy(item[0].szItem,_T("酬金月份")); _tcscpy(item[1].szItem,_T("计费金额")); _tcscpy(item[2].szItem,_T("酬金金额")); _tcscpy(item[3].szItem,_T("酬金笔数")); _tcscpy(item[4].szItem,_T("是否支付")); _tcscpy(item[5].szItem,_T("支付时间")); _tcscpy(item[6].szItem,_T("出单人")); _tcscpy(item[7].szItem,_T("备注")); DLG_HZB_Export dlg(this); dlg.SetParam( &m_wndList ); dlg.SetListItem(item,8,-3); dlg.DoModal(); }