AgentManager/DLG_Corp_Pay_Modify.cpp

294 lines
8.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// DLG_Corp_Pay_Modify.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "DLG_Corp_Pay_Modify.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DLG_Corp_Pay_Modify dialog
DLG_Corp_Pay_Modify::DLG_Corp_Pay_Modify(float fUsed,long lCorpSmsUsed, float fPriceOne, DWORD dwYJ, long lAgentID,CWnd* pParent /*=NULL*/)
: CDialog(DLG_Corp_Pay_Modify::IDD, pParent)
{
//{{AFX_DATA_INIT(DLG_Corp_Pay_Modify)
m_strBZ = _T("");
m_tOvrTime = COleDateTime::GetCurrentTime();
m_strPayMode = _T("");
m_strPayName = _T("");
m_strPresent = _T("");
m_strPrice = _T("");
m_strPriceOne = _T("");
m_strSMSCount = _T("");
m_strPayTime = _T("");
m_strCreateUser = _T("");
//}}AFX_DATA_INIT
memset( &m_Pay , 0 , sizeof(m_Pay) );
m_bAdd = true;
m_fUsed = fUsed;
m_lCorpSmsUsed = lCorpSmsUsed;
m_fPriceOne = fPriceOne;
m_dwYJ = dwYJ;
m_lAgentID = lAgentID; //´úÀíÉÌID
}
void DLG_Corp_Pay_Modify::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DLG_Corp_Pay_Modify)
DDX_Text(pDX, IDC_CORP_PAYMODIFY_BZ, m_strBZ);
DDV_MaxChars(pDX, m_strBZ, 250);
DDX_DateTimeCtrl(pDX, IDC_CORP_PAYMODIFY_OVRTIME, m_tOvrTime);
DDX_CBString(pDX, IDC_CORP_PAYMODIFY_PAYMODE, m_strPayMode);
DDV_MaxChars(pDX, m_strPayMode, 16);
DDX_Text(pDX, IDC_CORP_PAYMODIFY_PAYNAME, m_strPayName);
DDV_MaxChars(pDX, m_strPayName, 16);
DDX_Text(pDX, IDC_CORP_PAYMODIFY_PRESEND, m_strPresent);
DDV_MaxChars(pDX, m_strPresent, 16);
DDX_Text(pDX, IDC_CORP_PAYMODIFY_PRICE, m_strPrice);
DDV_MaxChars(pDX, m_strPrice, 16);
DDX_Text(pDX, IDC_CORP_PAYMODIFY_PRICEONE, m_strPriceOne);
DDV_MaxChars(pDX, m_strPriceOne, 16);
DDX_Text(pDX, IDC_CORP_PAYMODIFY_SMSCOUNT, m_strSMSCount);
DDV_MaxChars(pDX, m_strSMSCount, 16);
DDX_Text(pDX, IDC_CORP_PAYMODIFY_PAYTIME, m_strPayTime);
DDX_Text(pDX, IDC_CORP_PAYMODIFY_CREATEUSER, m_strCreateUser);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DLG_Corp_Pay_Modify, CDialog)
//{{AFX_MSG_MAP(DLG_Corp_Pay_Modify)
ON_EN_CHANGE(IDC_CORP_PAYMODIFY_PRICE, OnChangeCorpPaymodifyPrice)
ON_EN_CHANGE(IDC_CORP_PAYMODIFY_PRICEONE, OnChangeCorpPaymodifyPriceone)
ON_EN_CHANGE(IDC_CORP_PAYMODIFY_PRESEND, OnChangeCorpPaymodifyPresend)
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDOK, &DLG_Corp_Pay_Modify::OnBnClickedOk)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DLG_Corp_Pay_Modify message handlers
BOOL DLG_Corp_Pay_Modify::OnInitDialog()
{
CDialog::OnInitDialog();
if ( m_bAdd ) //Èç¹ûÊÇÌí¼Ó
{
SYSTEMTIME t;
GetLocalTime(&t);
COleDateTime ot(t); //È¡µÃµ½µ±Ê±¼ä
t.wYear+=1; //¹ýÆÚÈÕÍùºó¼Ó1Äê
if (m_lAgentID == 300082 || m_lAgentID == 300229)
t.wYear += 1; //´´¶ÈµÄ£¬Ä¬ÈϳäÖµ2ÄêÓÐЧÆÚ
#ifdef _DEBUG
if (m_lAgentID == 100000)
t.wYear += 1; //Ê×Ò׵ģ¬Ä¬ÈϳäÖµ2ÄêÓÐЧÆÚ
#endif
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_strPriceOne.Format(_T("%.4f"), m_fPriceOne);
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_CORP_PAYMODIFY_PAYNAME)->EnableWindow( false );
GetDlgItem(IDC_CORP_PAYMODIFY_PAYMODE)->EnableWindow( false );
GetDlgItem(IDC_CORP_PAYMODIFY_PRICE)->EnableWindow( false );
GetDlgItem(IDC_CORP_PAYMODIFY_PRICEONE)->EnableWindow( false );
GetDlgItem(IDC_CORP_PAYMODIFY_PRESEND)->EnableWindow( false );
GetDlgItem(IDC_CORP_PAYMODIFY_SMSCOUNT)->EnableWindow( false );
GetDlgItem(IDC_CORP_PAYMODIFY_OVRTIME)->EnableWindow( false );
//GetDlgItem(IDC_CORP_PAYMODIFY_BZ)->EnableWindow( false );
CEdit * pEdit =(CEdit * )GetDlgItem(IDC_CORP_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
}
ANS_Corp_PayData DLG_Corp_Pay_Modify::GetParam()
{
return m_Pay;
}
void DLG_Corp_Pay_Modify::OnChangeCorpPaymodifyPrice()
{
ResetSMSUsed();
}
void DLG_Corp_Pay_Modify::OnChangeCorpPaymodifyPriceone()
{
ResetSMSUsed();
}
void DLG_Corp_Pay_Modify::OnChangeCorpPaymodifyPresend()
{
ResetSMSUsed();
}
void DLG_Corp_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_Corp_Pay_Modify::SetParam(ANS_Corp_PayData pay,long lAgentID, BOOL bAdd)
{
m_Pay = pay;
m_bAdd = bAdd;
m_lAgentID = lAgentID;
}
void DLG_Corp_Pay_Modify::OnBnClickedOk()
{
//Èç¹û²»ÊÇÌí¼Ó£¬Ö±½Ó·µ»Ø
if (!m_bAdd)
CDialog::OnCancel();
this->UpdateData(true);
/*
if ( m_strPayName.GetLength() <= 0 )
{
MessageBox( _T("½É·ÑÈËÐÕÃû²»ÄÜΪ¿Õ£¬ÇëÊäÈë!") , _T("´íÎó") , MB_ICONWARNING );
GetDlgItem(IDC_CORP_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);
/*
#ifndef SMSCENTER_NX
if (m_Pay.fPrice<0)
{
MessageBox(_T("½É·Ñ½ð¶î²»ÄÜСÓÚÁ㣬ÇëÊäÈëÕýÈ·µÄ½É·Ñ½ð¶î!"), _T("´íÎó"), MB_ICONWARNING);
GetDlgItem(IDC_CORP_PAYMODIFY_PRICE)->SetFocus();
return;
}
#endif
*/
if (m_Pay.fPriceOne <= 0)
{
MessageBox(_T("¶ÌÐÅ·ÑÂʲ»ÄÜСÓÚÁ㣬ÇëÊäÈëÕýÈ·µÄ·ÑÂÊ!"), _T("´íÎó"), MB_ICONWARNING);
GetDlgItem(IDC_CORP_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;
#ifndef SMSCENTER_NX
if (m_Pay.lSMSCount < 0)
{
if (!(m_dwYJ & AGENT_ALLOWMINUS)) //ûÓг为¹¦ÄÜ
{
MessageBox(_T("×ܶÌÐÅÁ¿²»ÄÜСÓÚÁ㣬ÇëÊäÈëÕýÈ·µÄ½É·Ñ½ð¶î!"), _T("´íÎó"), MB_ICONWARNING);
return;
}
else
{
if (-m_Pay.lSMSCount > m_lCorpSmsUsed)
{
MessageBox(_T("»ØÊÕ¶ÌÐÅʱ£¬»ØÊÕ¶ÌÐÅÁ¿²»ÄÜ´óÓÚÆóÒµÏÖÓÐÓà¶î!"), _T("´íÎó"), MB_ICONWARNING);
GetDlgItem(IDC_CORP_PAYMODIFY_PRICE)->SetFocus();
return;
}
}
}
#endif
if (m_fUsed<(float)m_Pay.lSMSCount / 10.0f)
{
MessageBox(_T("ÄãµÄ´úÀíÉÌ¿ÉÓÃÓà¶î²»×㣬²»ÄÜÌí´Ë´Î½É·Ñ!"), _T("´íÎó"), MB_ICONWARNING);
GetDlgItem(IDC_CORP_PAYMODIFY_PRICE)->SetFocus();
return;
}
SYSTEMTIME t; GetSystemTime(&t);
COleDateTime ot(t);
if (m_tOvrTime.GetStatus() == COleDateTime::valid && m_tOvrTime < ot)
{
MessageBox(_T("¹ýÆÚÈÕÆÚ²»ÄÜСÓÚ½ñÌ죬Çëµ÷Õû!"), _T("´íÎó"), MB_ICONWARNING);
GetDlgItem(IDC_CORP_PAYMODIFY_OVRTIME)->SetFocus();
return;
}
if (m_tOvrTime.GetStatus() == COleDateTime::valid && m_tOvrTime - ot > COleDateTimeSpan(366 * 2, 0, 0, 0))
{
MessageBox(_T("¹ýÆÚÈÕÆÚ²»ÄÜ´óÓÚ2Ä꣬Çëµ÷Õû!"), _T("´íÎó"), MB_ICONWARNING);
GetDlgItem(IDC_CORP_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();
}