// DLG_Agent_Pay_Modify.cpp : implementation file // #include "stdafx.h" #include "smsmanager.h" #include "DLG_Agent_Pay_Modify.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DLG_Agent_Pay_Modify dialog DLG_Agent_Pay_Modify::DLG_Agent_Pay_Modify(CWnd* pParent /*=NULL*/) : CDialog(DLG_Agent_Pay_Modify::IDD, pParent) , m_tYSTime(COleDateTime::GetCurrentTime()) { //{{AFX_DATA_INIT(DLG_Agent_Pay_Modify) m_strCreateUser = _T(""); m_strPayMode = _T(""); m_strPayName = _T(""); m_strPayTime = _T(""); m_strBZ = _T(""); m_strPresent = _T(""); m_strPrice = _T(""); m_strPriceOne = _T(""); m_bTest = FALSE; m_bYS = FALSE; m_strSmsCount = _T(""); m_bFP = FALSE; m_tOvrTime = COleDateTime::GetCurrentTime(); m_lLPType = -1; m_strLPPrice = _T(""); m_lYSType = -1; //}}AFX_DATA_INIT memset( &m_Pay , 0 , sizeof(m_Pay) ); m_bAdd = true; m_bTest2= false; m_fPriceOne=0.10f; memset(&m_PayReq , 0 , sizeof(m_PayReq)); m_pMemberData=NULL; memset(&m_agent,0,sizeof(m_agent)); } void DLG_Agent_Pay_Modify::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(DLG_Agent_Pay_Modify) DDX_Control(pDX, IDC_AGENT_PAYMODIFY_PAYMODE, m_L_PayMode); DDX_Control(pDX, IDC_AGENT_PAYMODIFY_LXRID, m_L_LXRID); DDX_Text(pDX, IDC_AGENT_PAYMODIFY_CREATEUSER, m_strCreateUser); DDX_CBString(pDX, IDC_AGENT_PAYMODIFY_PAYMODE, m_strPayMode); DDV_MaxChars(pDX, m_strPayMode, 16); DDX_Text(pDX, IDC_AGENT_PAYMODIFY_PAYNAME, m_strPayName); DDV_MaxChars(pDX, m_strPayName, 16); DDX_Text(pDX, IDC_AGENT_PAYMODIFY_PAYTIME, m_strPayTime); DDX_Text(pDX, IDC_AGENT_PAYMODIFY_BZ, m_strBZ); DDV_MaxChars(pDX, m_strBZ, 220); DDX_Text(pDX, IDC_AGENT_PAYMODIFY_PRESEND, m_strPresent); DDV_MaxChars(pDX, m_strPresent, 16); DDX_Text(pDX, IDC_AGENT_PAYMODIFY_JFPRICE, m_strPrice); DDV_MaxChars(pDX, m_strPrice, 16); DDX_Text(pDX, IDC_AGENT_PAYMODIFY_PRICEONE, m_strPriceOne); DDV_MaxChars(pDX, m_strPriceOne, 16); DDX_Check(pDX, IDC_AGENT_PAYMODIFY_TEST, m_bTest); DDX_Check(pDX, IDC_AGENT_PAYMODIFY_YS, m_bYS); DDX_Text(pDX, IDC_AGENT_PAYMODIFY_SMSCOUNT, m_strSmsCount); DDV_MaxChars(pDX, m_strSmsCount, 16); DDX_Check(pDX, IDC_AGENT_PAYMODIFY_FP, m_bFP); DDX_DateTimeCtrl(pDX, IDC_AGENT_PAYMODIFY_OVRTIME, m_tOvrTime); DDX_CBIndex(pDX, IDC_AGENT_PAYMODIFY_LPTYPE, m_lLPType); DDX_CBString(pDX, IDC_AGENT_PAYMODIFY_LPPRICE, m_strLPPrice); DDV_MaxChars(pDX, m_strLPPrice, 8); DDX_CBIndex(pDX, IDC_AGENT_PAYMODIFY_YSTYPE, m_lYSType); //}}AFX_DATA_MAP DDX_DateTimeCtrl(pDX, IDC_AGENT_PAYMODIFY_YSTIME, m_tYSTime); } BEGIN_MESSAGE_MAP(DLG_Agent_Pay_Modify, CDialog) //{{AFX_MSG_MAP(DLG_Agent_Pay_Modify) ON_EN_CHANGE(IDC_AGENT_PAYMODIFY_JFPRICE, OnChangeAgentPaymodifyJfprice) ON_EN_CHANGE(IDC_AGENT_PAYMODIFY_PRICEONE, OnChangeAgentPaymodifyPriceone) ON_EN_CHANGE(IDC_AGENT_PAYMODIFY_PRESEND, OnChangeAgentPaymodifyPresend) ON_CBN_SELCHANGE(IDC_AGENT_PAYMODIFY_PAYMODE, OnSelchangeAgentPaymodifyPaymode) ON_WM_TIMER() //}}AFX_MSG_MAP ON_BN_CLICKED(IDOK, &DLG_Agent_Pay_Modify::OnBnClickedOk) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DLG_Agent_Pay_Modify message handlers ANS_Agent_PayData DLG_Agent_Pay_Modify::GetParam() { return m_Pay; } void DLG_Agent_Pay_Modify::SetParam(ANS_Agent_Pay payReq , ANS_Agent_PayData pay, ANS_Corp_MemberData * pMemberData, BOOL bAdd,ANS_Agent_SeeData agent) { m_PayReq = payReq; m_Pay = pay; m_pMemberData = pMemberData; m_bAdd = bAdd; m_agent = agent; } BOOL DLG_Agent_Pay_Modify::OnInitDialog() { CDialog::OnInitDialog(); #ifdef SMSCENTER_NX m_L_PayMode.ResetContent(); m_L_PayMode.AddString(_T("现金")); m_L_PayMode.AddString(_T("银行1")); m_L_PayMode.AddString(_T("银行2")); m_L_PayMode.AddString(_T("银行3")); m_L_PayMode.AddString(_T("银行4")); m_L_PayMode.AddString(_T("银行5")); m_L_PayMode.AddString(_T("银行6")); m_L_PayMode.AddString(_T("银行7")); m_L_PayMode.AddString(_T("银行8")); m_L_PayMode.AddString(_T("银行9")); m_L_PayMode.SetCurSel(0); //GetDlgItem(IDC_AGENT_PAYMODIFY_PAYMODE)->ShowWindow(SW_HIDE); //GetDlgItem(IDC_AGENT_PAYMODIFY_PAYMODE_S)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_YS)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_TEST)->ShowWindow(SW_HIDE); //GetDlgItem(IDC_AGENT_PAYMODIFY_FP)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_YSTYPE_S)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_YSTYPE)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_LP_S)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_LPTYPE)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_LPTYPE_S)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_LXRID)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_LXRID_S)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_LPPRICE)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_LPPRICE_S)->ShowWindow(SW_HIDE); #endif if ( m_bAdd==1 ) //如果是添加 { m_tYSTime.SetStatus(COleDateTime::null); // COleDateTime ot = COleDateTime::GetCurrentTime(); //取得到当时间 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_bYS = true; //限制所有充值都是先应收 m_lYSType = 0; //预充类型 m_strPayMode = _T("应收"); m_strPriceOne.Format( _T("%.4f"),m_fPriceOne); //默认费率为0.10 m_strPayTime.Format( _T("%04d.%02d.%02d %02d:%02d") , ot.GetYear(),ot.GetMonth(),ot.GetDay(),ot.GetHour(),ot.GetMinute() ); #ifdef SMSMANAGER_KF m_bYS = true; GetDlgItem(IDC_AGENT_PAYMODIFY_YS)->EnableWindow(false); GetDlgItem(IDC_AGENT_PAYMODIFY_PRESEND)->EnableWindow(false); GetDlgItem(IDC_AGENT_PAYMODIFY_YSTIME)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_YSTIME_S)->ShowWindow(SW_HIDE); #endif } 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 ); 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 ); COleDateTime tt(m_Pay.tOvrTime); if ( tt.GetStatus() == 0 ) 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 ); COleDateTime tt2(m_Pay.tYSTime); if ( tt2.GetStatus() == 0 ) m_tYSTime.SetDateTime( m_Pay.tYSTime.wYear , m_Pay.tYSTime.wMonth,m_Pay.tYSTime.wDay,m_Pay.tYSTime.wHour,m_Pay.tYSTime.wMinute,m_Pay.tYSTime.wSecond); else m_tYSTime.SetStatus( COleDateTime::null ); m_bYS = m_Pay.bYS; m_bTest = m_Pay.bTest; m_bFP = m_Pay.bFP; m_lYSType=m_Pay.lYSType; m_lLPType = m_Pay.lLPType; m_strLPPrice.Format ( _T("%.2f") , m_Pay.fLPPrice ); GetDlgItem(IDC_AGENT_PAYMODIFY_PAYNAME)->EnableWindow( false ); GetDlgItem(IDC_AGENT_PAYMODIFY_PAYMODE)->EnableWindow( false ); GetDlgItem(IDC_AGENT_PAYMODIFY_JFPRICE)->EnableWindow( false ); GetDlgItem(IDC_AGENT_PAYMODIFY_PRICEONE)->EnableWindow( false ); GetDlgItem(IDC_AGENT_PAYMODIFY_PRESEND)->EnableWindow( false ); GetDlgItem(IDC_AGENT_PAYMODIFY_SMSCOUNT)->EnableWindow( false ); GetDlgItem(IDC_AGENT_PAYMODIFY_YS)->EnableWindow( false ); GetDlgItem(IDC_AGENT_PAYMODIFY_TEST)->EnableWindow( false ); GetDlgItem(IDC_AGENT_PAYMODIFY_FP)->EnableWindow( false ); GetDlgItem(IDC_AGENT_PAYMODIFY_OVRTIME)->EnableWindow(false); GetDlgItem(IDC_AGENT_PAYMODIFY_YSTYPE)->EnableWindow(false); GetDlgItem(IDC_AGENT_PAYMODIFY_YSTIME)->EnableWindow( false ); GetDlgItem(IDC_AGENT_PAYMODIFY_LPTYPE)->EnableWindow(false); GetDlgItem(IDC_AGENT_PAYMODIFY_LXRID)->EnableWindow(false); GetDlgItem(IDC_AGENT_PAYMODIFY_LPPRICE)->EnableWindow(false); CEdit * pEdit =(CEdit * )GetDlgItem(IDC_AGENT_PAYMODIFY_BZ); pEdit->SetReadOnly(true); #ifndef SMSMANAGER_KF if (m_bAdd == 2) { GetDlgItem(IDC_AGENT_PAYMODIFY_PAYMODE)->EnableWindow(true); GetDlgItem(IDC_AGENT_PAYMODIFY_TEST)->EnableWindow(true); GetDlgItem(IDC_AGENT_PAYMODIFY_YSTIME)->EnableWindow(true); GetDlgItem(IDC_AGENT_PAYMODIFY_LPTYPE)->EnableWindow(true); GetDlgItem(IDC_AGENT_PAYMODIFY_LXRID)->EnableWindow(true); GetDlgItem(IDC_AGENT_PAYMODIFY_LPPRICE)->EnableWindow(true); } #endif } if ( m_bTest2 ) { m_bTest = true; GetDlgItem(IDC_AGENT_PAYMODIFY_TEST)->EnableWindow( false ); } //添加会员 long lSel = -1; for (int i = 0; i < m_PayReq.lMemberCount; i++) { int iItem = m_L_LXRID.AddString(CString(m_pMemberData[i].szName)); m_L_LXRID.SetItemData(iItem, m_pMemberData[i].lLXRID); if (m_bAdd != 1) { if (m_pMemberData[i].lLXRID == m_Pay.lLXRID) lSel = i; } } if (m_bAdd != 1 && m_PayReq.lMemberCount > 0) m_L_LXRID.SetCurSel(lSel); this->UpdateData( false ); #ifdef SMSMANAGER_KF GetDlgItem(IDC_AGENT_PAYMODIFY_FP)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_YSTYPE)->ShowWindow(SW_HIDE); GetDlgItem(IDC_AGENT_PAYMODIFY_YSTYPE_S)->ShowWindow(SW_HIDE); #endif return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void DLG_Agent_Pay_Modify::OnChangeAgentPaymodifyJfprice() { ResetSMSUsed(); } void DLG_Agent_Pay_Modify::OnChangeAgentPaymodifyPriceone() { ResetSMSUsed(); } void DLG_Agent_Pay_Modify::OnChangeAgentPaymodifyPresend() { ResetSMSUsed(); } void DLG_Agent_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 ); } BOOL DLG_Agent_Pay_Modify::SetTest(BOOL bTest, double fPriceOne) { m_bTest2 = bTest; m_fPriceOne = fPriceOne; return m_bTest2; } void DLG_Agent_Pay_Modify::OnSelchangeAgentPaymodifyPaymode() { if ( !m_bAdd ) return ; SetTimer(2 , 10 , NULL ); } void DLG_Agent_Pay_Modify::OnTimer(UINT_PTR nIDEvent) { CDialog::OnTimer(nIDEvent); if ( nIDEvent == 2 ) { KillTimer(nIDEvent); UpdateData(true); CEdit * pEdit = (CEdit *)GetDlgItem(IDC_AGENT_PAYMODIFY_PAYMODE); CString strPayMode; pEdit->GetWindowText(strPayMode); COleDateTime ot = COleDateTime::GetCurrentTime(); //取得到当时间 if ( strPayMode == CString(_T("延期")) ) { //过期日往后加1周 ot += COleDateTimeSpan(7,0,0,0); m_tOvrTime.SetDateTime(ot.GetYear(),ot.GetMonth(),ot.GetDay(),ot.GetHour(),ot.GetHour(),ot.GetSecond()); } else { //过期日往后加1年 m_tOvrTime.SetDateTime(ot.GetYear()+1,ot.GetMonth(),ot.GetDay(),ot.GetHour(),ot.GetHour(),ot.GetSecond()); } UpdateData(false); } } void DLG_Agent_Pay_Modify::OnBnClickedOk() { //如果不是添加,直接返回 if (m_bAdd <= 0) { CDialog::OnCancel(); return; } this->UpdateData( true ); /* if ( m_strPayName.GetLength() <= 0 ) { MessageBox( _T("充值人姓名不能为空,请输入!") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_AGENT_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.fPriceOne <= 0 ) { MessageBox( _T("短信费率不能小于零,请输入正确的费率!") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_AGENT_PAYMODIFY_PRICEONE)->SetFocus(); return ; } if (m_tYSTime.GetStatus() == COleDateTime::valid) { if (m_tYSTime > COleDateTime::GetCurrentTime()) { MessageBox(_T("到款时间不能大于当天!)"), _T("错误"), MB_ICONWARNING); GetDlgItem(IDC_AGENT_PAYMODIFY_YSTIME)->SetFocus(); return; } if (m_bAdd == 2 && (COleDateTime(m_Pay.tPayTime) > m_tYSTime) && ((COleDateTime(m_Pay.tPayTime) - m_tYSTime) > COleDateTimeSpan(30, 0, 0, 0))) //不允许修改收款时间比充值时间提前1个月 { MessageBox(_T("收款时间不允许比充值时间提前30日!"), _T("错误"), MB_ICONWARNING); GetDlgItem(IDC_AGENT_PAYMODIFY_YSTIME)->SetFocus(); return; } m_tYSTime.GetAsSystemTime(m_Pay.tYSTime); } else { memset(&m_Pay.tYSTime, 0, sizeof(m_Pay.tYSTime)); } if ( m_lLPType>0 /* && m_bAdd != 2*/) //有选择礼品类型 { m_Pay.lLXRID = 0; if (m_L_LXRID.GetCurSel() >= 0) { m_Pay.lLXRID = m_L_LXRID.GetItemData(m_L_LXRID.GetCurSel()); } if (m_Pay.lLXRID <= 0) { MessageBox(_T("此次充值选择了赠送礼品,但此企业没有设置会员,请先在企业联系人中设置会员!"), _T("错误"), MB_ICONWARNING); return; } m_Pay.fLPPrice = _tstof(m_strLPPrice); if (m_Pay.fLPPrice <= 0.0f || m_Pay.fLPPrice > 100000.0f) { MessageBox(_T("请输入正确的礼品价值! "), _T("错误"), MB_ICONWARNING); GetDlgItem(IDC_CORP_PAYMODIFY_LPPRICE)->SetFocus(); return; } m_Pay.lLPType = m_lLPType; } else { m_Pay.lLPType = 0; m_Pay.lLXRID = 0; m_Pay.fLPPrice = 0.0f; } if (m_lYSType == 1 && m_strPayMode != CString(_T("预开票")) || m_lYSType == 0 && m_strPayMode == CString(_T("预开票"))) { MessageBox(_T("预开票类型与充值方式不匹配!"), _T("错误"), MB_ICONWARNING); GetDlgItem(IDC_AGENT_PAYMODIFY_YSTYPE)->SetFocus(); return; } if( m_lYSType==2 ) { MessageBox(_T("新充值,预开票类型不能选作废!") , _T("错误") , MB_ICONWARNING); GetDlgItem(IDC_AGENT_PAYMODIFY_YSTYPE)->SetFocus(); return ; } m_Pay.lYSType = m_lYSType; 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; m_Pay.bYS = m_bYS; m_Pay.bTest=m_bTest; m_Pay.bFP =m_bFP; SYSTEMTIME t;GetSystemTime(&t); COleDateTime ot(t); if ( m_tOvrTime.GetStatus() == COleDateTime::valid && m_tOvrTime < ot ) { MessageBox( _T("过期日期不能小于今天,请调整!") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_AGENT_PAYMODIFY_OVRTIME)->SetFocus(); return ; } #ifdef SMSMANAGER_KF if ( m_Pay.fPrice==0.0f && m_Pay.lPresent==0 && (m_tOvrTime.GetStatus() != COleDateTime::valid || m_tOvrTime-COleDateTime::GetCurrentTime()>COleDateTimeSpan(15,0,0,0)) ) //客服的,如果没有充值金额,不允许延期过长 { MessageBox( _T("过期日期不能过大,请调整!") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_AGENT_PAYMODIFY_OVRTIME)->SetFocus(); return ; } #endif if ( m_Pay.lPresent!=0 && m_strBZ.GetLength()<=4 ) { MessageBox( _T("有赠送短信,必须注明原因!") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_AGENT_PAYMODIFY_BZ)->SetFocus(); return ; } ::GetLocalTime( &m_Pay.tPayTime ); if ( m_tOvrTime.GetStatus() == 0 ) m_tOvrTime.GetAsSystemTime( m_Pay.tOvrTime ); else memset(&m_Pay.tOvrTime,0,sizeof(m_Pay.tOvrTime)); ::GetLocalTime( &m_Pay.tPayTime ); if ( m_strPayMode != CString(_T("延期")) && (m_Pay.fPrice==0.0f || m_Pay.lSMSCount==0) ) //不是月结的客户,不是延期。需要判断金额是否为0 { int iRet = MessageBox( _T("一般是延期或赠送才允许充值金额为0,\r\n如果充值为延期,请在充值方式中直接选中\"延期\",系统自动计算延期一星期。\r\n是否手工将充值方式修改成延期?如不是延期,将不会修改短信有效期。") , _T("提问") , MB_ICONQUESTION|MB_YESNO ); if ( iRet==IDYES ) { GetDlgItem(IDC_AGENT_PAYMODIFY_PAYMODE)->SetFocus(); #ifdef SMSMANAGER_KF m_L_PayMode.SelectString(0,_T("延期")); OnSelchangeAgentPaymodifyPaymode(); #endif return; } else { m_Pay.tOvrTime = m_agent.tOvrTime; } } CDialog::OnOK(); }