// DLG_User_Pay.cpp : implementation file // #include "stdafx.h" #include "smsmanager.h" #include "DLG_User_Pay.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DLG_User_Pay dialog #include "DLG_User_Pay_Modify.h" DLG_User_Pay::DLG_User_Pay(CWnd* pParent /*=NULL*/) : CDialog(DLG_User_Pay::IDD, pParent) { //{{AFX_DATA_INIT(DLG_User_Pay) m_strLoginName = _T(""); m_strSMSNum = _T(""); m_strSMSSendAll = _T(""); m_strSMSUsed = _T(""); m_strTotal = _T(""); //}}AFX_DATA_INIT m_lModifyCount = 0; memset( &m_PayReq , 0 , sizeof(m_PayReq) ); m_pPayData = NULL; m_bModify = true; m_fUsed = 0.0f; m_fAdd = 0.0f; } void DLG_User_Pay::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(DLG_User_Pay) DDX_Control(pDX, IDC_USER_PAY_LIST, m_wndList); DDX_Text(pDX, IDC_USER_PAY_LOGINNAME, m_strLoginName); DDX_Text(pDX, IDC_USER_PAY_SMSNUM, m_strSMSNum); DDX_Text(pDX, IDC_USER_PAY_SMSSENDALL, m_strSMSSendAll); DDX_Text(pDX, IDC_USER_PAY_SMSUSED, m_strSMSUsed); DDX_Text(pDX, IDC_USER_PAY_TOTAL, m_strTotal); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(DLG_User_Pay, CDialog) //{{AFX_MSG_MAP(DLG_User_Pay) ON_BN_CLICKED(IDC_USER_PAY_ADD, OnUserPayAdd) ON_BN_CLICKED(IDC_USER_PAY_SEE, OnUserPaySee) ON_NOTIFY(NM_DBLCLK, IDC_USER_PAY_LIST, OnDblclkUserPayList) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DLG_User_Pay message handlers BOOL DLG_User_Pay::OnInitDialog() { CDialog::OnInitDialog(); m_strLoginName = m_PayReq.szUserName; m_strSMSNum = m_PayReq.szSMSNum; m_strSMSUsed.Format( _T("%d") , m_PayReq.lSmsUsed ); if ( m_PayReq.lSmsUsed == -100 ) m_strSMSUsed=_T("无限制"); m_strSMSSendAll.Format( _T("%d") , m_PayReq.lSmsSendAll ); float fTotal=0.0f; //初始化List m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP) ); m_wndList.SubClassWindow2(); if ( m_PayReq.lPayType==0 ) { m_wndList.SetHeadings(_T("序号,50; 出单人,80;缴费方式,80;缴费金额,80; 费率,80; 小计,70; 赠送,70; 短信量,70;缴费时间,130; 备 注,130;")); this->SetWindowText(_T("短信充值 注意:子帐号有多种方式修改余额,此充值仅供记录参考!")); } if ( m_PayReq.lPayType==1 ) { m_wndList.SetHeadings(_T("序号,50; 出单人,80;缴费方式,80;缴费金额,80; 费率,80; 小计,70; 赠送,70; 彩信量,70;缴费时间,130; 备 注,130;")); this->SetWindowText(_T("彩信充值 注意:子帐号有多种方式修改余额,此充值仅供记录参考!")); } m_wndList.SetGridLines(true); m_wndList.SetImageList(&m_Image,LVSIL_SMALL); POSITION pos; TCHAR Buf[32]; for ( int i = 0 ; i< m_PayReq.lCount ; i++ ) { ANS_User_PayData * pData = new ANS_User_PayData; *pData = m_pPayData[i]; pos = m_Pay.AddTail( pData ); _stprintf( Buf , _T("%d") , i+1 ); m_wndList.InsertItem( 0 , Buf , 0 ); //Item为0的原因是倒转显示 m_wndList.SetItemData( 0 , (DWORD)pos); //m_wndList.SetItemText( 0 , 1 , pData->szPayMan ); m_wndList.SetItemText( 0 , 1 , pData->szCreateUser ); m_wndList.SetItemText( 0 , 2 , pData->szPayMode ); _stprintf( Buf , _T("%8.2f") , pData->fPrice ); m_wndList.SetItemText( 0 , 3 , Buf ); fTotal += pData->fPrice; _stprintf( Buf , _T("%8.4f") , pData->fPriceOne); m_wndList.SetItemText( 0 , 4 , Buf ); long a=0; if ( pData->fPrice!=0 && pData->fPriceOne!=0 ) { double l = pData->fPrice/pData->fPriceOne; a = long(l+0.5f); if ( a<0 ) a = long(l-0.5f); } _stprintf( Buf , _T("%8d") , a); m_wndList.SetItemText( 0 , 5 , Buf ); _stprintf( Buf , _T("%8d") , pData->lPresent); m_wndList.SetItemText( 0 , 6 , Buf ); _stprintf( Buf , _T("%8d") , pData->lSMSCount); m_wndList.SetItemText( 0 , 7 , Buf ); _stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tPayTime.wYear,pData->tPayTime.wMonth,pData->tPayTime.wDay,pData->tPayTime.wHour,pData->tPayTime.wMinute ); m_wndList.SetItemText( 0 , 8 , Buf); //_stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tOvrTime.wYear,pData->tOvrTime.wMonth,pData->tOvrTime.wDay,pData->tOvrTime.wHour,pData->tOvrTime.wMinute ); //m_wndList.SetItemText( 0 , 9 , Buf); m_wndList.SetItemText( 0 , 9 , pData->szBZ); } /* if ( !m_bModify || m_PayReq.lSmsUsed == -100 ) //不允许修改 { GetDlgItem(IDC_USER_PAY_ADD)->EnableWindow(false); } */ if (!m_bModify ) //不允许修改 { GetDlgItem(IDC_USER_PAY_ADD)->EnableWindow(false); } m_strTotal.Format( _T("%.2f") , fTotal ); this->UpdateData(false); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void DLG_User_Pay::OnOK() { CDialog::OnOK(); } long DLG_User_Pay::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } void DLG_User_Pay::SetParam(ANS_User_Pay Pay, ANS_User_PayData *pPayData, BOOL bModify, float fUsed) { m_PayReq = Pay; m_pPayData = pPayData; m_bModify = bModify; m_fUsed = fUsed; } void DLG_User_Pay::OnUserPayAdd() { DLG_User_Pay_Modify dlg(m_PayReq.lSmsUsed,this); if ( dlg.DoModal() == IDOK ) { ANS_User_PayData * pData = new ANS_User_PayData; *pData = dlg.GetParam(); pData->ucStatus = CORP_PAY_ADD; pData->lPayType = this->m_PayReq.lPayType; m_lModifyCount ++; //需要修改的记录增加 POSITION pos = m_Pay.AddTail( pData ); m_fAdd = m_fAdd + pData->fPrice; //记录总数 long lCount = m_wndList.GetItemCount(); TCHAR Buf[32]; _stprintf( Buf, _T("%d") , lCount +1 ); //设置新的数据 m_wndList.InsertItem( 0 , Buf , 0); //Item为0的原因是倒转显示 m_wndList.SetItemData( 0, (DWORD)pos ); m_wndList.SetItemText( 0 , 1 , pData->szPayMan ); m_wndList.SetItemText( 0 , 2 , pData->szPayMode ); _stprintf( Buf , _T("%8.2f") , pData->fPrice ); m_wndList.SetItemText( 0 , 3 , Buf ); _stprintf( Buf , _T("%8.4f") , pData->fPriceOne); m_wndList.SetItemText( 0 , 4 , Buf ); long a=0; if ( pData->fPrice!=0 && pData->fPriceOne!=0 ) { double l = pData->fPrice/pData->fPriceOne; a = long(l+0.5f); if ( a<0 ) a = long(l-0.5f); } _stprintf( Buf , _T("%8d") , a); m_wndList.SetItemText( 0 , 5 , Buf ); _stprintf( Buf , _T("%8d") , pData->lPresent); m_wndList.SetItemText( 0 , 6 , Buf ); _stprintf( Buf , _T("%8d") , pData->lSMSCount); m_wndList.SetItemText( 0 , 7 , Buf ); _stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tPayTime.wYear,pData->tPayTime.wMonth,pData->tPayTime.wDay,pData->tPayTime.wHour,pData->tPayTime.wMinute ); m_wndList.SetItemText( 0 , 8 , Buf); m_wndList.SetItemText( 0 , 9 , pData->szBZ ); //_stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tOvrTime.wYear,pData->tOvrTime.wMonth,pData->tOvrTime.wDay,pData->tOvrTime.wHour,pData->tOvrTime.wMinute ); //m_wndList.SetItemText( 0 , 9 , Buf); //增加数据 //m_PayReq.fTotal += pData->fPrice; //m_PayReq.lTotalSms += pData->lSMSCount; if (m_PayReq.lSmsUsed == -100) m_PayReq.lSmsUsed = 0; //如果是无限制的,充值后就变成从0开始 m_PayReq.lSmsUsed += pData->lSMSCount; m_strSMSUsed.Format( _T("%d") , m_PayReq.lSmsUsed ); float fTotal = _tstof(m_strTotal) + pData->fPrice; m_strTotal.Format( _T("%.2f") , fTotal ); this->UpdateData(false); } } void DLG_User_Pay::OnUserPaySee() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_User_PayData * pData = m_Pay.GetNext( pos ); if (pData) { DLG_User_Pay_Modify dlg(m_PayReq.lSmsUsed,this); dlg.SetParam( *pData,false); dlg.DoModal(); } } void DLG_User_Pay::OnDblclkUserPayList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; OnUserPaySee(); }