// DLG_User_Pay_Modify.cpp : implementation file // #include "stdafx.h" #include "smsmanager.h" #include "DLG_User_Pay_Modify.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DLG_User_Pay_Modify dialog DLG_User_Pay_Modify::DLG_User_Pay_Modify(long lSmsCount,CWnd* pParent /*=NULL*/) : CDialog(DLG_User_Pay_Modify::IDD, pParent) { //{{AFX_DATA_INIT(DLG_User_Pay_Modify) m_strBZ = _T(""); m_strCreateUser = _T(""); m_tOvrTime = COleDateTime::GetCurrentTime(); m_strPayMode = _T(""); m_strPayName = _T(""); m_strPayTime = _T(""); m_strPresent = _T(""); m_strPriceOne = _T(""); m_strPrice = _T(""); m_strSMSCount = _T(""); //}}AFX_DATA_INIT memset( &m_Pay , 0 , sizeof(m_Pay) ); m_bAdd = true; m_lSmsCount = lSmsCount; } void DLG_User_Pay_Modify::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(DLG_User_Pay_Modify) DDX_Text(pDX, IDC_USER_PAYMODIFY_BZ, m_strBZ); DDV_MaxChars(pDX, m_strBZ, 126); DDX_Text(pDX, IDC_USER_PAYMODIFY_CREATEUSER, m_strCreateUser); DDX_DateTimeCtrl(pDX, IDC_USER_PAYMODIFY_OVRTIME, m_tOvrTime); DDX_CBString(pDX, IDC_USER_PAYMODIFY_PAYMODE, m_strPayMode); DDV_MaxChars(pDX, m_strPayMode, 16); DDX_Text(pDX, IDC_USER_PAYMODIFY_PAYNAME, m_strPayName); DDV_MaxChars(pDX, m_strPayName, 16); DDX_Text(pDX, IDC_USER_PAYMODIFY_PAYTIME, m_strPayTime); DDX_Text(pDX, IDC_USER_PAYMODIFY_PRESEND, m_strPresent); DDV_MaxChars(pDX, m_strPresent, 16); DDX_Text(pDX, IDC_USER_PAYMODIFY_PRICEONE, m_strPriceOne); DDV_MaxChars(pDX, m_strPriceOne, 16); DDX_Text(pDX, IDC_USER_PAYMODIFY_PRICE, m_strPrice); DDV_MaxChars(pDX, m_strPrice, 16); DDX_Text(pDX, IDC_USER_PAYMODIFY_SMSCOUNT, m_strSMSCount); DDV_MaxChars(pDX, m_strSMSCount, 16); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(DLG_User_Pay_Modify, CDialog) //{{AFX_MSG_MAP(DLG_User_Pay_Modify) ON_EN_CHANGE(IDC_USER_PAYMODIFY_PRICE, OnChangeUserPaymodifyPrice) ON_EN_CHANGE(IDC_USER_PAYMODIFY_PRICEONE, OnChangeUserPaymodifyPriceone) ON_EN_CHANGE(IDC_USER_PAYMODIFY_PRESEND, OnChangeUserPaymodifyPresend) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DLG_User_Pay_Modify message handlers BOOL DLG_User_Pay_Modify::OnInitDialog() { CDialog::OnInitDialog(); if ( m_bAdd ) //如果是添加 { SYSTEMTIME t; GetLocalTime(&t); COleDateTime ot(t); //取得到当时间 t.wYear+=1; //过期日往后加1年 m_tOvrTime.SetDateTime(t.wYear,t.wMonth,t.wDay,t.wHour,t.wMinute,t.wSecond); UpdateData(false); m_tOvrTime.SetStatus( COleDateTime::valid ); //没有过期时间 m_strPriceOne = _T("0.10"); //默认费率为0.10 m_strPayMode = _T("现金"); m_strPayTime.Format( _T("%04d.%02d.%02d %02d:%02d") , ot.GetYear(),ot.GetMonth(),ot.GetDay(),ot.GetHour(),ot.GetMinute() ); } else { m_strPayName = m_Pay.szPayMan; m_strPayMode = m_Pay.szPayMode; m_strPrice.Format( _T("%.2f"),m_Pay.fPrice ); m_strPriceOne.Format( _T("%.4f"),m_Pay.fPriceOne ); m_strPresent.Format( _T("%d") , m_Pay.lPresent ); m_strSMSCount.Format( _T("%d") , m_Pay.lSMSCount ); COleDateTime tt(m_Pay.tOvrTime); if ( tt.GetStatus() == COleDateTime::valid ) m_tOvrTime.SetDateTime( m_Pay.tOvrTime.wYear , m_Pay.tOvrTime.wMonth,m_Pay.tOvrTime.wDay,m_Pay.tOvrTime.wHour,m_Pay.tOvrTime.wMinute,m_Pay.tOvrTime.wSecond); else m_tOvrTime.SetStatus( COleDateTime::null ); m_strBZ = m_Pay.szBZ; m_strCreateUser = m_Pay.szCreateUser; m_strPayTime.Format( _T("%04d.%02d.%02d %02d:%02d"),m_Pay.tPayTime.wYear,m_Pay.tPayTime.wMonth,m_Pay.tPayTime.wDay,m_Pay.tPayTime.wHour,m_Pay.tPayTime.wMinute ); GetDlgItem(IDC_USER_PAYMODIFY_PAYNAME)->EnableWindow( false ); GetDlgItem(IDC_USER_PAYMODIFY_PAYMODE)->EnableWindow( false ); GetDlgItem(IDC_USER_PAYMODIFY_PRICE)->EnableWindow( false ); GetDlgItem(IDC_USER_PAYMODIFY_PRICEONE)->EnableWindow( false ); GetDlgItem(IDC_USER_PAYMODIFY_PRESEND)->EnableWindow( false ); GetDlgItem(IDC_USER_PAYMODIFY_SMSCOUNT)->EnableWindow( false ); GetDlgItem(IDC_USER_PAYMODIFY_OVRTIME)->EnableWindow( false ); //GetDlgItem(IDC_CORP_PAYMODIFY_BZ)->EnableWindow( false ); CEdit * pEdit =(CEdit * )GetDlgItem(IDC_USER_PAYMODIFY_BZ); pEdit->SetReadOnly(true); } 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_Modify::OnOK() { //如果不是添加,直接返回 if ( !m_bAdd ) CDialog::OnCancel(); this->UpdateData( true ); /* if ( m_strPayName.GetLength() <= 0 ) { MessageBox( _T("缴费人姓名不能为空,请输入!") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_USER_PAYMODIFY_PAYNAME)->SetFocus(); return ; } */ _tcscpy( m_Pay.szPayMan , m_strPayName ); _tcscpy( m_Pay.szPayMode , m_strPayMode ); _tcscpy( m_Pay.szBZ , m_strBZ ); m_Pay.fPrice = _tstof( m_strPrice ); m_Pay.fPriceOne = _tstof( m_strPriceOne ); /* if ( m_Pay.fPrice<=0 ) { MessageBox( _T("缴费金额不能小于零,请输入正确的缴费金额!") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_USER_PAYMODIFY_PRICE)->SetFocus(); return ; } if ( m_fUsedSetFocus(); return ; } */ if ( m_Pay.fPriceOne <= 0 ) { MessageBox( _T("短信费率不能小于零,请输入正确的费率!") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_USER_PAYMODIFY_PRICEONE)->SetFocus(); return ; } m_Pay.lPresent = _ttol( m_strPresent ); double l = m_Pay.fPrice/m_Pay.fPriceOne; long a = long(l+0.5f); if ( a<0 ) a = long(l-0.5f); m_Pay.lSMSCount = (long)a + m_Pay.lPresent; long lSmsCount = m_lSmsCount; if (lSmsCount == -100) lSmsCount = 0; if (lSmsCount + m_Pay.lSMSCount < 0) { MessageBox(_T("此用户充值后短信量小于0,请检查!"), _T("错误"), MB_ICONERROR); return; } /* SYSTEMTIME t;GetSystemTime(&t); COleDateTime ot(t); if ( m_tOvrTime.GetStatus() == COleDateTime::valid && m_tOvrTime < ot ) { MessageBox( _T("过期日期不能小于今天,请调整!") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_USER_PAYMODIFY_OVRTIME)->SetFocus(); return ; } */ ::GetLocalTime( &m_Pay.tPayTime ); if ( m_tOvrTime.GetStatus() == COleDateTime::valid ) m_tOvrTime.GetAsSystemTime( m_Pay.tOvrTime ); else memset(&m_Pay.tOvrTime,0,sizeof(m_Pay.tOvrTime)); CDialog::OnOK(); } ANS_User_PayData DLG_User_Pay_Modify::GetParam() { return m_Pay; } void DLG_User_Pay_Modify::SetParam(ANS_User_PayData pay, BOOL bAdd) { m_Pay = pay; m_bAdd = bAdd; } void DLG_User_Pay_Modify::ResetSMSUsed() { this->UpdateData( true ); m_Pay.fPrice = _tstof( m_strPrice ); m_Pay.fPriceOne = _tstof( m_strPriceOne ); if ( m_Pay.fPriceOne <= 0 ) { m_Pay.lSMSCount = 0; } else { m_Pay.lPresent = _ttol( m_strPresent ); double l = m_Pay.fPrice/m_Pay.fPriceOne; long a = long(l+0.5f); if ( l< 0 ) a = long(l-0.5f); m_Pay.lSMSCount = (long)a + m_Pay.lPresent; } m_strSMSCount.Format( _T("%d") , m_Pay.lSMSCount ); this->UpdateData( false ); } void DLG_User_Pay_Modify::OnChangeUserPaymodifyPrice() { ResetSMSUsed(); } void DLG_User_Pay_Modify::OnChangeUserPaymodifyPriceone() { ResetSMSUsed(); } void DLG_User_Pay_Modify::OnChangeUserPaymodifyPresend() { ResetSMSUsed(); }