// DLG_Agent_Pay.cpp : implementation file
//

#include "stdafx.h"
#include "smsmanager.h"
#include "DLG_Agent_Pay.h"

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

/////////////////////////////////////////////////////////////////////////////
// DLG_Agent_Pay dialog

#include "DLG_Agent_Pay_Modify.h"

DLG_Agent_Pay::DLG_Agent_Pay(CWnd* pParent /*=NULL*/)
	: CDialog(DLG_Agent_Pay::IDD, pParent)
{
	//{{AFX_DATA_INIT(DLG_Agent_Pay)
	m_strAgentName = _T("");
	m_strTotal = _T("");
	m_strUsed = _T("");
	//}}AFX_DATA_INIT

	m_lModifyCount = 0;
	memset( &m_PayReq , 0 , sizeof(m_PayReq) );
	m_pPayData     = NULL;
}


void DLG_Agent_Pay::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DLG_Agent_Pay)
	DDX_Control(pDX, IDC_AGENT_PAY_LIST, m_wndList);
	DDX_Text(pDX, IDC_AGENT_PAY_AGENTNAME, m_strAgentName);
	DDX_Text(pDX, IDC_AGENT_PAY_TOTAL, m_strTotal);
	DDX_Text(pDX, IDC_AGENT_PAY_USED, m_strUsed);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(DLG_Agent_Pay, CDialog)
	//{{AFX_MSG_MAP(DLG_Agent_Pay)
	ON_BN_CLICKED(IDC_AGENT_PAY_ADD, OnAgentPayAdd)
	ON_BN_CLICKED(IDC_AGENT_PAY_SEE, OnAgentPaySee)
	ON_NOTIFY(NM_DBLCLK, IDC_AGENT_PAY_LIST, OnDblclkAgentPayList)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLG_Agent_Pay message handlers

BOOL DLG_Agent_Pay::OnInitDialog() 
{
	CDialog::OnInitDialog();

	m_strAgentName = m_PayReq.szAgentName;
	//m_strUsed.Format( _T("%.2f") , m_PayReq.fUsed );
	//m_strTotal.Format( _T("%.2f") , m_PayReq.fTotal );
	m_strUsed.Format( _T("%d") , (long)(m_PayReq.fUsed*10.0f) );
	m_strTotal.Format( _T("%d") ,(long)(m_PayReq.fTotal*10.0f) );

	this->UpdateData(false);
	
	//��ʼ��List
	m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_AGENT) );
	m_wndList.SubClassWindow2();
	//m_wndList.SetHeadings(_T("���,50; �ɷ���,80;�ɷѷ�ʽ,80;�ɷѽ��,80; ����,80;  С��,70;  ����,70; ������,70;Ԥ��Ʊ,55;Ӧ��,55;����,55;�ɷ�ʱ��,130;����ʱ��,130;�տ�ʱ��,130;��Ʊ,55;��Ʊ״̬,80;��Ʊʱ��,130;������Ʒ,80;��Ʒ��ֵ,80;������,80;�Ƽ�����,80   �� ע;200"));

#ifdef MANAGER_VER_YWY
	m_wndList.SetHeadings(_T("���,50; ������,80;�ɷѷ�ʽ,80;�ɷѽ��,80; ����,80;  С��,70;  ����,70; ������,70;�ɷ�ʱ��,130;����ʱ��,130;Ԥ��Ʊ,55;Ӧ��,55;����,55;�տ�ʱ��,130;��Ʊ,55;��Ʊ״̬,80;��Ʊʱ��,130;  �� ע,200;"));
#else
	m_wndList.SetHeadings(_T("���,50; ������,80;�ɷѷ�ʽ,80;�ɷѽ��,80; ����,80;  С��,70;  ����,70; ������,70;�ɷ�ʱ��,130;����ʱ��,130;  ��ע,200;"));
#endif

	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_Agent_PayData * pData = new ANS_Agent_PayData;
		*pData = m_pPayData[i];
		pos = m_Pay.AddTail( pData );
		_stprintf( Buf , _T("%d") , i+1 );
		m_wndList.InsertItem( i , Buf , 0 );   //ItemΪ0��ԭ���ǵ�ת��ʾ
		m_wndList.SetItemData( i , (DWORD)pos);
		int iIndex=1;
		m_wndList.SetItemText( i , iIndex++ , pData->szPayMan );
		m_wndList.SetItemText( i , iIndex++ , pData->szPayMode );
		_stprintf( Buf , _T("%8.2f") , pData->fPrice );
		m_wndList.SetItemText( i , iIndex++ , Buf );
		_stprintf( Buf , _T("%8.4f") , pData->fPriceOne);
		m_wndList.SetItemText( i , iIndex++ , 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( i , iIndex++ , Buf );
		
		_stprintf( Buf , _T("%8d") , pData->lPresent);
		m_wndList.SetItemText( i , iIndex++ , Buf );
		_stprintf( Buf , _T("%8d") , pData->lSMSCount);
		m_wndList.SetItemText( i , iIndex++ , 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( i , iIndex++ , 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( i , iIndex++ , Buf);


#ifdef MANAGER_VER_YWY
		switch(pData->lYSType )
		{
		case 0:
		default:
			iIndex++;
			break;
		case 1:
			m_wndList.SetItemText( i , iIndex++ , _T(" ��") );
			break;
		case 2:
			m_wndList.SetItemText( i , iIndex++ , _T("����") );
			break;
			 
		}

		if ( pData->bYS )
			m_wndList.SetItemText( i , iIndex++ , _T(" ��") );
		else
			iIndex++;
		if ( pData->bTest )
			m_wndList.SetItemText( i , iIndex++ , _T(" ��") );
		else
			iIndex++;


		_stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tYSTime.wYear,pData->tYSTime.wMonth,pData->tYSTime.wDay,pData->tYSTime.wHour,pData->tYSTime.wMinute );
		m_wndList.SetItemText( i , iIndex++ , Buf);
		if ( pData->bFP>0 )
		{
			CString strType;
			switch (pData->bFP)
			{
			case 0:
				strType = _T("���跢Ʊ");
				break;
			case 1:
				strType = _T("��˰��Ʊ");
				break;
			case 2:
				strType = _T("��ֵ˰��Ʊ");
				break;
			case 3:
				strType = _T("�ƶ���Ʊ");
				break;
			case 4:
				strType = _T("��ֵ˰רƱ");
				break;
			case 5:
				strType = _T("���跢Ʊ�ѱ�˰");
				break;
			}
			m_wndList.SetItemText( i , iIndex++ , strType );
			switch(pData->lFPStatus)
			{
			case 0:
			default:
				 m_wndList.SetItemText( i , iIndex++ , _T("δ��Ʊ") );
				 break;
			case 1:
				 m_wndList.SetItemText( i , iIndex++ , _T("�ѿ�Ʊ") );
				 break;
			case 2:
				 m_wndList.SetItemText( i , iIndex++ , _T("�Ѽij�") );
				 break;
			}
			if ( pData->lFPStatus>0 )
			{
				_stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tFPTime.wYear,pData->tFPTime.wMonth,pData->tFPTime.wDay,pData->tFPTime.wHour,pData->tFPTime.wMinute );
				m_wndList.SetItemText( i , iIndex++ , Buf);
			}
			else
			{
				iIndex++;
			}
		}
		else
		{
			iIndex+=3;
		}


#endif

		m_wndList.SetItemText( i , iIndex , pData->szBZ);
	}

#if defined(MANAGER_VER_YWY) || defined(MANAGER_VER_HF)
	GetDlgItem(IDC_AGENT_PAY_TOTAL)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_AGENT_PAY_TOTAL_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::SetParam(ANS_Agent_Pay Pay, ANS_Agent_PayData *pPayData)
{
	m_PayReq    = Pay;
	m_pPayData  = pPayData;
}

long DLG_Agent_Pay::GetCurrentSelected()
{
	POSITION pos = m_wndList.GetFirstSelectedItemPosition();
	if ( pos )
	{
		return m_wndList.GetNextSelectedItem(pos);
	}
	return -1;
}

void DLG_Agent_Pay::OnAgentPayAdd() 
{
	return ;
/*
	DLG_Agent_Pay_Modify dlg(this);
	if ( dlg.DoModal() == IDOK )
	{
		ANS_Agent_PayData * pData = new ANS_Agent_PayData;
		*pData = dlg.GetParam();
		pData->ucStatus = AGENT_PAY_ADD;
		m_lModifyCount ++;    //��Ҫ�޸ĵļ�¼����
		POSITION pos = m_Pay.AddTail( pData );
		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("%04d.%02d.%02d %02d:%02d") , pData->tPayTime.wYear,pData->tPayTime.wMonth,pData->tPayTime.wDay,pData->tPayTime.wHour,pData->tPayTime.wMinute );
		m_wndList.SetItemText( 0 , 4 , Buf);

		//��������
		m_PayReq.fTotal += pData->fPrice;
		m_PayReq.fUsed  += pData->fPrice;
		m_strUsed.Format( _T("%.2f") , m_PayReq.fUsed );
		m_strTotal.Format( _T("%.2f") , m_PayReq.fTotal );
		this->UpdateData(false);
	}	
*/
}

void DLG_Agent_Pay::OnAgentPaySee() 
{
	return ;
	long lItem = GetCurrentSelected();
	if ( lItem < 0 )
		return ;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_Agent_PayData * pData = m_Pay.GetNext( pos );
	if (pData)
	{
		DLG_Agent_Pay_Modify dlg(this);
		dlg.SetParam( *pData,false);
		dlg.DoModal();
	}
}

void DLG_Agent_Pay::OnDblclkAgentPayList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;
	OnAgentPaySee();
}

void DLG_Agent_Pay::OnOK() 
{

	CDialog::OnOK();
}