// DLG_Agent_MmsPay_Modify.cpp : implementation file
//

#include "stdafx.h"
#include "smsmanager.h"
#include "DLG_Agent_MmsPay_Modify.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// DLG_Agent_MmsPay_Modify dialog


DLG_Agent_MmsPay_Modify::DLG_Agent_MmsPay_Modify(CWnd* pParent /*=NULL*/)
	: CDialog(DLG_Agent_MmsPay_Modify::IDD, pParent)
{
	//{{AFX_DATA_INIT(DLG_Agent_MmsPay_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("");
	//}}AFX_DATA_INIT
	memset( &m_Pay , 0 , sizeof(m_Pay) );
	m_bAdd = true;
	m_bTest2= false;
}


void DLG_Agent_MmsPay_Modify::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DLG_Agent_MmsPay_Modify)
	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, 250);
	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);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(DLG_Agent_MmsPay_Modify, CDialog)
	//{{AFX_MSG_MAP(DLG_Agent_MmsPay_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)
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDOK, &DLG_Agent_MmsPay_Modify::OnBnClickedOk)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLG_Agent_MmsPay_Modify message handlers

ANS_Agent_MmsPayData DLG_Agent_MmsPay_Modify::GetParam()
{
	return m_Pay;
}

void DLG_Agent_MmsPay_Modify::SetParam(ANS_Agent_MmsPayData pay, BOOL bAdd)
{
	m_Pay = pay;
	m_bAdd = bAdd;
}

BOOL DLG_Agent_MmsPay_Modify::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	if ( m_bAdd )  //���������
	{
		COleDateTime ot = COleDateTime::GetCurrentTime();  //ȡ�õ���ʱ��
		m_strPayMode = _T("�ֽ�");
		m_strPriceOne = _T("0.10");  //Ĭ�Ϸ���Ϊ0.10
		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 );

		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_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 );
		CEdit * pEdit =(CEdit * )GetDlgItem(IDC_AGENT_PAYMODIFY_BZ);
		pEdit->SetReadOnly(true);
	}

	if ( m_bTest2 )
	{
		m_bTest = true;
		GetDlgItem(IDC_AGENT_PAYMODIFY_TEST)->EnableWindow( false );
	}
	this->UpdateData( false );
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void DLG_Agent_MmsPay_Modify::OnBnClickedOk() 
{
	//����������ӣ�ֱ�ӷ���
	if ( !m_bAdd )
		CDialog::OnCancel();

	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 ;
	}

	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;

	::GetLocalTime( &m_Pay.tPayTime );
	
	CDialog::OnOK();
}

void DLG_Agent_MmsPay_Modify::OnChangeAgentPaymodifyJfprice() 
{
	ResetSMSUsed();
}

void DLG_Agent_MmsPay_Modify::OnChangeAgentPaymodifyPriceone() 
{
	ResetSMSUsed();
}

void DLG_Agent_MmsPay_Modify::OnChangeAgentPaymodifyPresend() 
{
	ResetSMSUsed();
}

void DLG_Agent_MmsPay_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_MmsPay_Modify::SetTest(BOOL bTest)
{
	m_bTest2 = bTest;
	return m_bTest2;
}