// C_AgentCJ.cpp : implementation file // #include "stdafx.h" #include "smsmanager.h" #include "C_AgentCJ.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CC_AgentCJ dialog #include "MainFrm.h" #include "ProcessSocket.h" #include "DLG_HZB_Export.h" #include "DLG_Pay_TC.h" #include "DLG_C_AgentCJ_See.h" #include "DLG_C_AgentCJ_Pay.h" CC_AgentCJ::CC_AgentCJ(CWnd* pParent /*=NULL*/) : CDialog(CC_AgentCJ::IDD, pParent) { //{{AFX_DATA_INIT(CC_AgentCJ) 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_AgentCJ::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CC_AgentCJ) DDX_Control(pDX, IDC_C_AGENTCJ_S1, m_S_S1); DDX_Control(pDX, IDC_C_AGENTCJ_LIST, m_wndList); DDX_Control(pDX, IDC_C_AGENTCJ_AGENTID, m_E_AgentID); DDX_Control(pDX, IDC_C_AGENTCJ_AGENT, m_L_Agent); 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_AgentCJ, CDialog) //{{AFX_MSG_MAP(CC_AgentCJ) ON_WM_SIZE() ON_BN_CLICKED(IDC_C_AGENTCJ_QUERY3, OnCAgentpayQuery3) 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_AgentCJ message handlers void CC_AgentCJ::Close() { //清除队列中的内容 while (!m_PayData.IsEmpty()) { ANS_Agent_CJData * pData = m_PayData.GetHead(); m_PayData.RemoveHead(); delete pData; } } BOOL CC_AgentCJ::RefreshInfo() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) ) { return false; } m_pMainFrame->SendFrame(SMSFUNC_AGENT_NAME,NULL,0); //取代理信息 m_pMainFrame->SendFrame(SMSFUNC_YWY_NAME,NULL,0); //取代理信息 return true; } BOOL CC_AgentCJ::ReHide() { ShowWindow( SW_HIDE ); return true; } BOOL CC_AgentCJ::ReShow(BOOL bRefresh) { ShowWindow( SW_SHOW ); if ( bRefresh || !m_bRefresh ) { RefreshInfo(); } return true; } BOOL CC_AgentCJ::ProcessSocket(Socket_Head *pHead) { CString strTemp; //取代理商信息 if (pHead->lFuncType == SMSFUNC_AGENT_NAME) { ANS_Agent_Name * pAgent = (ANS_Agent_Name *)pHead->pFrame; ANS_Agent_NameData * pData = (ANS_Agent_NameData *)(pHead->pFrame+sizeof(ANS_Agent_Name)); m_L_Agent.ResetContent(); long lItem=0; CString strTemp; lItem = m_L_Agent.AddString( _T("所有代理商") ); m_L_Agent.SetItemData( lItem , (DWORD_PTR)-10); for ( int i=0;ilCount;i++ ) { //ANS_Agent_NameData * pNewData = new ANS_Agent_NameData; //*pNewData = *pData; //pos = m_Agent.AddTail(pNewData); strTemp.Format( _T("%d-%s"),pData->lAgentID,pData->szAgentName); lItem = m_L_Agent.AddString( strTemp ); //m_L_Agent.SetItemData( lItem , (DWORD_PTR)pos); m_L_Agent.SetItemData( lItem , (DWORD_PTR)pData->lAgentID); pData ++; } m_L_Agent.SetCurSel(0); return true; } if(pHead->lFuncType == SMSFUNC_AGENT_CJ ) { ANS_Agent_CJ * pPay = (ANS_Agent_CJ *)pHead->pFrame; ANS_Agent_CJData * pData= (ANS_Agent_CJData *)(pHead->pFrame+sizeof(ANS_Agent_CJ)); Close(); for ( int i=0 ; ilCount ; i++ ) { ANS_Agent_CJData * pNewData = new ANS_Agent_CJData; *pNewData = *pData; POSITION pos = m_PayData.AddTail(pNewData); pData ++; } RefreshAgentCJData(); return true; } if(pHead->lFuncType == SMSFUNC_AGENT_TC ) { ANS_Agent_TC * pPay = (ANS_Agent_TC *)pHead->pFrame; ANS_Agent_TCData * pData= (ANS_Agent_TCData *)(pHead->pFrame+sizeof(ANS_Agent_TC)); DLG_C_AgentCJ_See dlg(this); dlg.SetParam(&m_SeeData , pPay , pData ); dlg.DoModal(); return true; } if(pHead->lFuncType == SMSFUNC_AGENT_CJFF ) { ANS_Agent_CJFF * pPay = (ANS_Agent_CJFF *)pHead->pFrame; ANS_Agent_CJFFData * pData= (ANS_Agent_CJFFData *)(pHead->pFrame+sizeof(ANS_Agent_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_AgentCJ::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; 代理名称,200; 酬金月份,80;酬金金额,80;酬金笔数,80;是否支付,80; 支付时间,120;出单人,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_AgentCJ::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_AgentCJ::OnCAgentpayQuery3() { CString strTemp; CString strFind; m_E_AgentID.GetWindowText(strFind); if ( strFind.GetLength()<=0 ) return ; long lSel = m_L_Agent.GetCurSel(); long lCount = m_L_Agent.GetCount(); for ( int i=lSel+1 ; i=0 ) { m_L_Agent.SetCurSel(i); return ; } } for ( i=0 ; i=0 ) { m_L_Agent.SetCurSel(i); return ; } } } BOOL CC_AgentCJ::PreTranslateMessage(MSG* pMsg) { if ( pMsg->hwnd == m_E_AgentID && pMsg->message == WM_KEYDOWN ) { if ( pMsg->wParam == 13 ) //回车键 { this->OnCAgentpayQuery3(); return true; } } return CDialog::PreTranslateMessage(pMsg); } void CC_AgentCJ::OnCAgentpayQuery() { UpdateData(true); if ( m_tEnd < m_tBegin ) { MessageBox( _T("查询结束日期不能小于起始日期,请改正!") , _T("错误") , MB_ICONWARNING ); return ; } REQ_Agent_CJ * pCJ = new REQ_Agent_CJ;memset(pCJ,0,sizeof(REQ_Agent_CJ)); //代理商 pCJ->lAgentID = m_L_Agent.GetItemData(m_L_Agent.GetCurSel()); if (pCJ->lAgentID<=0 ) //选了所有代理商 pCJ->lAgentID = -1; m_tBegin.GetAsSystemTime( pCJ->tBegin ); m_tEnd.GetAsSystemTime( pCJ->tEnd ); pCJ->lType = m_lCJType; m_pMainFrame->SendFrame(SMSFUNC_AGENT_CJ,(BYTE*)pCJ,sizeof(REQ_Agent_CJ)); } void CC_AgentCJ::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; long lCount=0; while ( pos ) { pos2 = pos; ANS_Agent_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; 代理名称,200; 酬金月份,80;酬金金额,80;酬金笔数,80;是否支付,80; 支付时间,120; 备注,120;")); _stprintf( Buf , _T("%d") , i+1 ); m_wndList.InsertItem( i , Buf , 0 ); //Item为0的原因是倒转显示 //_stprintf( Buf , _T("%d-%s"),pData->lAgentID,pData->szAgentName); m_wndList.SetItemText( i , 1 , pData->szAgentName); _stprintf( Buf , _T("%04d-%02d") , pData->tCJTime.wYear , pData->tCJTime.wMonth ); 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 ); m_wndList.SetItemText( i , 7 , pData->szCJFFUser ); m_wndList.SetItemText( i , 8 , pData->szBZ ); m_wndList.SetItemData(i , (DWORD_PTR)pos2 ); fTotal += pData->fCJTotal; 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 , 3 , Buf ); _stprintf( Buf , _T("%8d") , lCount); m_wndList.SetItemText( i , 4 , Buf ); m_wndList.ShowWindow(SW_SHOW); } void CC_AgentCJ::OnDblclkCAgentpayList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; On_User_See(); } void CC_AgentCJ::OnRclickCAgentpayList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; ShowRMenu(); } void CC_AgentCJ::ShowRMenu() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) ) { return ; } CMenu menu; menu.CreatePopupMenu(); BOOL bLock = false; ANS_Agent_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_AgentCJ::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } void CC_AgentCJ::On_User_See() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); ANS_Agent_CJData * pData = m_PayData.GetNext( pos ); if (pData) { m_SeeData = *pData; REQ_Agent_TC * pTC = new REQ_Agent_TC;memset(pTC,0,sizeof(REQ_Agent_TC)); //代理商 pTC->lAgentID = m_SeeData.lAgentID; pTC->tProcessTime=m_SeeData.tCJTime; m_pMainFrame->SendFrame(SMSFUNC_AGENT_TC,(BYTE*)pTC,sizeof(REQ_Agent_TC)); } } void CC_AgentCJ::On_User_YS() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) ) { return ; } long lItem = this->GetCurrentSelected(); if ( lItem <0 ) return ; DLG_C_AgentCJ_Pay dlg(this); if ( dlg.DoModal() != IDOK ) return ; long lCount = m_wndList.GetItemCount(); ANS_Agent_CJFFData * pData = new ANS_Agent_CJFFData[lCount]; memset(pData , 0 , sizeof(ANS_Agent_CJFFData)*lCount ); long lDataCount=0; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); ANS_Agent_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; pData[lDataCount].lAgentID=pCJData2->lAgentID; lDataCount++; } } if ( lDataCount >0 ) { long lSize = sizeof(REQ_Agent_CJFF) + sizeof(ANS_Agent_CJFFData)*lDataCount ; BYTE * pSendData = new BYTE[lSize]; memset(pSendData,0,lSize); REQ_Agent_CJFF * pCJFF = (REQ_Agent_CJFF*)pSendData; ANS_Agent_CJFFData * pCJFFData = (ANS_Agent_CJFFData*)(pSendData+sizeof(REQ_Agent_CJFF)); pCJFF->lCount = lDataCount; dlg.m_tTime.GetAsSystemTime(pCJFF->tTime); _tcscpy(pCJFF->szBZ , dlg.m_strBZ ); memcpy(pCJFFData , pData , sizeof(ANS_Agent_CJFFData)*lDataCount ); m_pMainFrame->SendFrame( SMSFUNC_AGENT_CJFF , (BYTE*)pSendData , lSize); } delete pData; } void CC_AgentCJ::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(); }