// C_Pay.cpp : implementation file
//

#include "stdafx.h"
#include "smsmanager.h"
#include "C_Pay.h"

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

/////////////////////////////////////////////////////////////////////////////
// CC_Pay dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_HZB_Export.h"
#include "DLG_Pay_TC.h"
#include "DLG_C_Pay_ADCCJ.h"
#include "DLG_C_Pay_YS.h"
#include "DLG_Corp_FP.h"
#include "DLG_Corp_LXR.h"

CC_Pay::CC_Pay(CWnd* pParent /*=NULL*/)
	: CDialog(CC_Pay::IDD, pParent)
{
	//{{AFX_DATA_INIT(CC_Pay)
	m_lCorp = -1;
	m_tBegin = COleDateTime::GetCurrentTime();
	m_tEnd = COleDateTime::GetCurrentTime();
	m_lPayType = -1;
	m_lType = -1;
	m_lAdcStatus = -1;
	m_lFPType = -1;
	//}}AFX_DATA_INIT
	m_bInit = false;
	m_bRefresh = false;
	m_bProcess = false;
	m_pLXRDlg = NULL;
	m_pFPDlg = NULL;
}


void CC_Pay::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CC_Pay)
	DDX_Control(pDX, IDC_C_PAY_FPTYPE, m_L_FPType);
	DDX_Control(pDX, IDC_C_PAY_AGENTID, m_E_AgentID);
	DDX_Control(pDX, IDC_C_PAY_AGENT, m_L_Agent);
	DDX_Control(pDX, IDC_C_PAY_YWY, m_L_YWY);
	DDX_Control(pDX, IDC_C_PAY_S1, m_S_S1);
	DDX_Control(pDX, IDC_C_PAY_LIST, m_wndList);
	DDX_Control(pDX, IDC_C_PAY_CORPID, m_E_CorpID);
	DDX_Control(pDX, IDC_C_PAY_CORP, m_L_Corp);
	DDX_CBIndex(pDX, IDC_C_PAY_CORP, m_lCorp);
	DDX_DateTimeCtrl(pDX, IDC_C_PAY_TBEGIN, m_tBegin);
	DDX_DateTimeCtrl(pDX, IDC_C_PAY_TEND, m_tEnd);
	DDX_CBIndex(pDX, IDC_C_PAY_PAYTYPE, m_lPayType);
	DDX_CBIndex(pDX, IDC_C_PAY_TYPE, m_lType);
	DDX_CBIndex(pDX, IDC_C_PAY_ADCSTATUS, m_lAdcStatus);
	DDX_CBIndex(pDX, IDC_C_PAY_FPTYPE, m_lFPType);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CC_Pay, CDialog)
	//{{AFX_MSG_MAP(CC_Pay)
	ON_WM_SIZE()
	ON_BN_CLICKED(IDC_C_PAY_QUERY, OnCPayQuery)
	ON_BN_CLICKED(IDC_C_PAY_QUERY2, OnCPayQuery2)
	ON_CBN_SELCHANGE(IDC_C_PAY_CORP, OnSelchangeCPayCorp)
	ON_NOTIFY(NM_DBLCLK, IDC_C_PAY_LIST, OnDblclkCPayList)
	ON_NOTIFY(NM_RCLICK, IDC_C_PAY_LIST, OnRclickCPayList)
	ON_CBN_SELCHANGE(IDC_C_PAY_AGENT, OnSelchangeCPayAgent)
	ON_BN_CLICKED(IDC_C_PAY_TC, OnCPayTc)
	ON_BN_CLICKED(IDC_C_PAY_QUERY3, OnCPayQuery3)
	//}}AFX_MSG_MAP
	ON_COMMAND(MENU_PAY_SEE     , On_User_See )
	ON_COMMAND(MENU_PAY_YS      , On_User_YS )
	ON_COMMAND(MENU_PAY_EXPORT  , On_User_Export )
	ON_COMMAND(MENU_PAY_ADC_PROCESS , On_User_Adc_Process)
	ON_COMMAND(MENU_PAY_ADC_YCJ     , On_User_Adc_YCJ)
	ON_COMMAND(MENU_PAY_ADC_YFP     , On_User_Adc_YFP)
	ON_COMMAND(MENU_PAY_ADC_TC_SEL  , On_User_Adc_TC_Sel)
	ON_COMMAND(MENU_PAY_ADC_TC_QR   , On_User_Adc_TC_QR)
	ON_COMMAND(MENU_PAY_FP     , On_User_FP )
	ON_COMMAND(MENU_PAY_FP_YK  , On_User_FP_YK )
	ON_COMMAND(MENU_PAY_FP_YJ  , On_User_FP_YJ )
	ON_COMMAND(MENU_PAY_FP_PRINT , On_User_FP_PRINT )
	ON_COMMAND(MENU_PAY_TEST     , On_User_Test )
	ON_COMMAND(MENU_PAY_CB       , On_User_CB )
	ON_COMMAND(MENU_PAY_YSTYPE_YC       , On_User_YSTYPE_YC )
	ON_COMMAND(MENU_PAY_YSTYPE_ZF       , On_User_YSTYPE_ZF )
	ON_COMMAND_RANGE( MENU_PAY_FP_NO, MENU_PAY_FP_TYPE7, On_User_FP_Type )
	ON_COMMAND(MENU_PAY_FPMANAGER      , On_User_FPManager )
	ON_COMMAND(MENU_PAY_LXRMANAGER     , On_User_LXRManager )
	
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CC_Pay message handlers

BOOL CC_Pay::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//ȡ�ù��ò���
	//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
	this->GetParent()->GetParentFrame();
	m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
	m_pSocket    = &m_pMainFrame->m_Socket;

	//��ʼ��List
	m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LIST) );
	m_wndList.SubClassWindow2();
#ifdef SMSCENTER_ADC
	m_wndList.SetHeadings(_T("���,50;    ��ҵ����,180; ������,80;��ֵ����,80;ADC״̬,80;��ֵ��ʽ,80;��ֵ���,80; ����,80;С��,70; ����,70; ������,70;Ԥ��Ʊ,55;Ӧ��,55;����,55;�ɱ�,55;��ֵʱ��,130;����ʱ��,130;�տ�ʱ��,130; ��Ʊ,80;��Ʊ״̬,80;��Ʊʱ��,130;������Ʒ,80;��Ʒ��ֵ,80;������,80;�Ƽ�����,80;  �� ע,130; ������,120;�������,70;ADC���Ŵ���,100;ADC CA����,100;ADC�������,130;ADC�����ʱ��,130;�����������,80;1�³��,70;2�³��,70;3�³��,70;4�³��,70;5�³��,70;6�³��,70;7�³��,70;"));
#else
	m_wndList.SetHeadings(_T("���,50;    ��ҵ����,180; ������,80;��ֵ��ʽ,80;��ֵ���,80; ����,80;С��,70; ����,70; ������,70;Ԥ��Ʊ,55;Ӧ��,55;����,55;�ɱ�,55;��ֵʱ��,130;����ʱ��,130;�տ�ʱ��,130; ��Ʊ,80;��Ʊ״̬,80;��Ʊʱ��,130;������Ʒ,80;��Ʒ��ֵ,80;������,80;�Ƽ�����,80;  �� ע,130;�ͻ�����,90; ������,130;�������,70;"));
#endif
	m_wndList.SetGridLines(true);
//	m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
#ifdef SMSCENTER_ADC
	m_wndList.SetCheckboxes(true);
#endif
	m_bInit = true;

#ifdef SMSMANAGER_KF
	GetDlgItem(IDC_C_PAY_S1)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_C_PAY_CORP)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_C_PAY_CORPID)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_C_PAY_QUERY2)->ShowWindow(SW_HIDE);
	//GetDlgItem(IDC_C_PAY_AGENT)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_C_PAY_AGENTID)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_C_PAY_QUERY3)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_C_PAY_PAYTYPE)->ShowWindow(SW_HIDE);
#endif

#ifdef SMSCENTER_NX
	GetDlgItem(IDC_C_PAY_ADC_S1)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_C_PAY_ADC_S2)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_C_PAY_YWY)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_C_PAY_PAYTYPE)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_C_PAY_FPTYPE)->ShowWindow(SW_HIDE);
#endif

	/*
	//Ĭ��ȡ���µ�����
	SYSTEMTIME t; ::GetLocalTime(&t);
	t.wDay = 1;//��1����
	t.wMonth = t.wMonth-1;
	if ( t.wMonth <=0 )
	{
		t.wMonth = 12;
		t.wYear  = t.wYear-1;
	}
	m_tBegin.SetDate( t.wYear,t.wMonth,t.wDay );  //��ʼ
	if ( t.wMonth == 1 ||
		 t.wMonth == 3 ||
		 t.wMonth == 5 ||
		 t.wMonth == 7 ||
		 t.wMonth == 8 ||
		 t.wMonth == 10 ||
		 t.wMonth == 12 )
	{
		 t.wDay = 31;
	}
	else
		if (t.wMonth == 2 )
			t.wDay = 28;
		else
			t.wDay = 30;
	m_tEnd.SetDate( t.wYear,t.wMonth,t.wDay );//����
	*/

	SYSTEMTIME t; ::GetLocalTime(&t);
	m_tBegin.SetDate( t.wYear,t.wMonth,1 );  //��ʼ
	m_tEnd.SetDate( t.wYear,t.wMonth,t.wDay );//����

	m_lPayType = 0;  //Ĭ�ϲ鿴�����ֻ�����

	m_lFPType = 0;  //Ĭ�ϲ鿴�����ֻ�����
#ifdef SMSMANAGER_KF
	m_L_FPType.DeleteString(0);
	m_lFPType = 1;  //Ĭ�ϲ鿴�����ֻ�����
#endif

#ifdef SMSCENTER_ADC
	GetDlgItem(IDC_C_PAY_ADC_S)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_C_PAY_TYPE)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_C_PAY_ADCSTATUS)->ShowWindow(SW_SHOW);
	m_lType = 0;
	m_lAdcStatus=0;
#endif

	UpdateData(false);		
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

BOOL CC_Pay::ReShow(BOOL bRefresh)
{
	ShowWindow( SW_SHOW );
	if ( bRefresh || !m_bRefresh )
	{
		RefreshInfo();
	}
	return true;
}

BOOL CC_Pay::ReHide()
{
	ShowWindow( SW_HIDE );
	return true;
}

BOOL CC_Pay::RefreshInfo()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return false;
	}
#ifndef SMSMANAGER_KF
	m_pMainFrame->SendFrame(SMSFUNC_CORP_NAME,NULL,0);
#endif

	m_pMainFrame->SendFrame(SMSFUNC_AGENT_NAME,NULL,0);   //ȡ������Ϣ
	m_pMainFrame->SendFrame(SMSFUNC_YWY_NAME,NULL,0);   //ȡ������Ϣ
	return true;
}

BOOL CC_Pay::ProcessSocket(Socket_Head *pHead)
{
	CString strTemp;
	//ȡ������Ϣ
	if (pHead->lFuncType == SMSFUNC_CORP_NAME)
	{
		m_bRefresh = true;  //�Ѿ�ˢ�¹�
		ANS_Corp_Name     * pCorp = (ANS_Corp_Name *)pHead->pFrame;
		ANS_Corp_NameData * pData = (ANS_Corp_NameData *)(pHead->pFrame+sizeof(ANS_Corp_Name));
		m_L_Corp.ResetContent();  //ɾ��ԭ���е���ҵ
		m_L_Corp.AddString( _T("������ҵ") );
		this->Close_Corp();              //�ر�ԭ����
		for ( int i=0;i<pCorp->lCount;i++ )
		{
			ANS_Corp_NameData * pNewData = new ANS_Corp_NameData;
			*pNewData = *pData;
			POSITION pos = m_Corp.AddTail(pNewData);
			strTemp.Format( _T("%d-%s"),pData->lCorpID,pData->szCorpName);
			long lItem = m_L_Corp.AddString( strTemp );
			m_L_Corp.SetItemData( lItem , (DWORD)pos);
			pData ++;
		}
		m_L_Corp.SetCurSel(0);
		return true;
	}

	//ȡҵ��Ա����
	if (pHead->lFuncType == SMSFUNC_YWY_NAME)
	{
		ANS_YWY_Name     * pYWY = (ANS_YWY_Name *)pHead->pFrame;
		ANS_YWY_NameData * pData = (ANS_YWY_NameData *)(pHead->pFrame+sizeof(ANS_YWY_Name));
		m_L_YWY.ResetContent();  //ɾ��ԭ���е���ҵ
		m_L_YWY.AddString( _T("����ҵ��Ա") );
		m_L_YWY.AddString( _T("��˾�ͻ�") );
		this->Close_YWY();  
		for ( int i=0;i<pYWY->lCount;i++ )
		{
			ANS_YWY_NameData * pNewData = new ANS_YWY_NameData;
			*pNewData = *pData;
			POSITION pos = m_YWY.AddTail(pNewData);
			long lItem = m_L_YWY.AddString( pData->szYWYName );
			m_L_YWY.SetItemData( lItem , (DWORD)pos);
			pData ++;
		}
		m_L_YWY.SetCurSel(0);
		return true;
	}

	//ȡ��������Ϣ
	if (pHead->lFuncType == SMSFUNC_AGENT_NAME)
	{
		ANS_Agent_Name     * pAgent = (ANS_Agent_Name *)pHead->pFrame;
		ANS_Agent_NameData * pData = (ANS_Agent_NameData *)(pHead->pFrame+sizeof(ANS_Agent_Name));
		this->Close_Agent();
		POSITION pos;
		m_L_Agent.ResetContent();
		long lItem;
		CString strTemp;
		lItem = m_L_Agent.AddString( _T("�����û�") );
		m_L_Agent.SetItemData( lItem , (DWORD)-10);
		lItem = m_L_Agent.AddString( _T("�����û�") );
		m_L_Agent.SetItemData( lItem , (DWORD)-11);
		lItem = m_L_Agent.AddString( _T("�����û�") );
		m_L_Agent.SetItemData( lItem , (DWORD)-12);
		for ( int i=0;i<pAgent->lCount;i++ )
		{
			ANS_Agent_NameData * pNewData = new ANS_Agent_NameData;
			*pNewData = *pData;
			pos = m_Agent.AddTail(pNewData);

			strTemp.Format( _T("%d-%s"),pData->lAgentID,pData->szAgentName);
			lItem = m_L_Agent.AddString( strTemp );
			m_L_Agent.SetItemData( lItem , (DWORD)pos);
			//m_L_Agent.SetItemData( lItem , (DWORD)pData->lAgentID);

			pData ++;
		}
		m_L_Agent.SetCurSel(0);
		return true;
	}


	if(pHead->lFuncType == SMSFUNC_PAY_SEE )
	{
		ANS_Pay_See     * pPay = (ANS_Pay_See *)pHead->pFrame;
		ANS_Pay_SeeData * pData= (ANS_Pay_SeeData *)(pHead->pFrame+sizeof(ANS_Pay_See));
		Close_PayData();
		for ( int i=0 ; i<pPay->lCount ; i++ )
		{
			ANS_Pay_SeeData * pNewData = new ANS_Pay_SeeData;
			*pNewData = *pData;
			POSITION pos = m_PayData.AddTail(pNewData);

			pData ++;
		}
		RefreshPayData();
		return true;
	}
	if ( pHead->lFuncType == SMSFUNC_CORP_PAY_YS )
	{
		ANS_Corp_Pay_YS * pYS = (ANS_Corp_Pay_YS *)pHead->pFrame;

		if ( pYS->bOK )
		{
#ifdef SMSCENTER_ADC
			switch(pYS->lType)
			{
			case 10:
				if ( pYS->bFP )
					m_wndList.SetItemText(pYS->lItem,17,_T(" ��"));
				else
					m_wndList.SetItemText(pYS->lItem,17,_T(""));
				 break;
			case 20:
				 m_wndList.SetItemText(pYS->lItem,18,_T("�ѿ�Ʊ"));
				 break;
			case 30:
				 m_wndList.SetItemText(pYS->lItem,18,_T("�Ѽij�"));
				 break;
			default:
				 m_wndList.SetItemText(pYS->lItem,11,_T(""));
				 break;
			}
#else
			switch(pYS->lType)
			{
			case 10:
				{
					CString strType = DLG_Corp_FP::GetFPType2(pYS->bFP);
					m_wndList.SetItemText(pYS->lItem,16,strType);
				}
				 break;
			case 20:
				 m_wndList.SetItemText(pYS->lItem,17,_T("�ѿ�Ʊ"));
				 break;
			case 30:
				 m_wndList.SetItemText(pYS->lItem,17,_T("�Ѽij�"));
				 break;
			case 40:
				if ( pYS->bFP )
					m_wndList.SetItemText(pYS->lItem,11,_T(" ��"));
				else
					m_wndList.SetItemText(pYS->lItem,11,_T(""));
				 break;
			case 50:
				if ( pYS->bFP )
					m_wndList.SetItemText(pYS->lItem,12,_T(" ��"));
				else
					m_wndList.SetItemText(pYS->lItem,12,_T(""));
				 break;
			case 60:
				//if ( pYS->bFP )
					m_wndList.SetItemText(pYS->lItem,9,_T(""));
				 break;
			case 70:
				//if ( pYS->bFP )
					m_wndList.SetItemText(pYS->lItem,9,_T("����"));
				 break;
			case 0:
				m_wndList.SetItemText(pYS->lItem,10,_T(""));
				 break;
			default:
				 break;
			}
#endif
		}
		return true;
	}
	if ( pHead->lFuncType == SMSFUNC_PAY_SETADCSTATUS )
	{
		ANS_Pay_SetAdcStatus * pAdc = (ANS_Pay_SetAdcStatus *)pHead->pFrame;

		CString str;
		if ( pAdc->bOK )
		{
			str.Format( _T("����ADC��ֵ״̬�ɹ���������%d����¼��") , pAdc->lCount );
			MessageBox( str , _T("��Ϣ") , MB_ICONINFORMATION );
		}
		else
		{
			MessageBox( _T("����ADC��ֵ״̬ʧ�ܣ�") ,  _T("����") , MB_ICONWARNING );
		}
		return true;
	}
	if ( pHead->lFuncType == SMSFUNC_PAY_SETADCAGENTTC )
	{
		ANS_Pay_SetAdcAgentTC * pAdc = (ANS_Pay_SetAdcAgentTC *)pHead->pFrame;

		CString str;
		if ( pAdc->bOK )
		{
			str.Format( _T("����ADC�����̳���ֵ״̬�ɹ���������%d����¼��") , pAdc->lCount );
			MessageBox( str , _T("��Ϣ") , MB_ICONINFORMATION );
		}
		else
		{
			MessageBox( _T("����ADC�����̳���ֵ״̬ʧ�ܣ�") ,  _T("����") , MB_ICONWARNING );
		}
		return true;
	}
	
	//�鿴��ϵ��
	if (pHead->lFuncType == SMSFUNC_CORP_LXR)
	{
		ANS_Corp_LXR     * pLXR = (ANS_Corp_LXR     *)pHead->pFrame;
		if (pLXR->lCount < 0)   //Ȩ�޲���
			return true;
		ANS_Corp_LXRData * pData= (ANS_Corp_LXRData *)(pHead->pFrame+sizeof(ANS_Corp_LXR));
		ANS_Corp_LXR_YWYData * pYWYData = (ANS_Corp_LXR_YWYData *)(pHead->pFrame + sizeof(ANS_Corp_LXR) + sizeof(ANS_Corp_LXRData)*pLXR->lCount);
		DLG_Corp_LXR dlg(this);
		m_pLXRDlg = &dlg;
		dlg.SetParam( *pLXR , pData,0, pYWYData);  //��ҵ����Ϊ:0(��ҵ)
		if ( dlg.DoModal() == IDOK && dlg.m_lModifyCount>0)
		{
			long lSize = sizeof(REQ_Corp_LXRModify) + sizeof(ANS_Corp_LXRData)*dlg.m_lModifyCount;
			BYTE * pDataSend = new BYTE[lSize];memset( pDataSend , 0 , lSize );
			REQ_Corp_LXRModify * pModifySend = (REQ_Corp_LXRModify*)pDataSend;
			ANS_Corp_LXRData   * pLXRSend    = (ANS_Corp_LXRData  *)(pDataSend+sizeof(REQ_Corp_LXRModify));
			pModifySend->lCorpID= pLXR->lCorpID;
			pModifySend->lCount = dlg.m_lModifyCount;
			//������������
			ANS_Corp_LXRData * pLXRTemp;
			while (!dlg.m_LXR.IsEmpty())
			{
				pLXRTemp = dlg.m_LXR.GetHead();
				//pLXRTemp->lCorpType = 0;  //ǿ��������ҵ����Ϊ:0(��ҵ)
				dlg.m_LXR.RemoveHead();
				if (pLXRTemp->ucStatus != 0 )  //��Ϊ0,��Ҫ�޸�
				{
					*pLXRSend = *pLXRTemp;
					pLXRSend ++;
				}
				delete pLXRTemp;
			}
			m_pMainFrame->SendFrame( SMSFUNC_CORP_LXRMODIFY , pDataSend , lSize );
		}
		else
		{
			//������������
			ANS_Corp_LXRData * pLXRTemp;
			while (!dlg.m_LXR.IsEmpty())
			{
				pLXRTemp = dlg.m_LXR.GetHead();
				dlg.m_LXR.RemoveHead();
				delete pLXRTemp;
			}
		}
		m_pLXRDlg = NULL;
		return true;
	}
	//��ϵ���޸�
	if (pHead->lFuncType == SMSFUNC_CORP_LXRMODIFY)
	{
		return true;
	}

	
	return false;
}

BOOL CC_Pay::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
	//�鿴��ϵ��
	if (pHead->lFuncType == SMSFUNC_CORP_FP)
	{
		ANS_Corp_FP     * pFP = (ANS_Corp_FP     *)pFrame;
		if (pFP->lCount < 0)   //Ȩ�޲���
			return true;
		ANS_Corp_FPData * pData= (ANS_Corp_FPData *)(pFrame+sizeof(ANS_Corp_FP));
		ANS_Corp_LXR_YWYData * pYWYData = (ANS_Corp_LXR_YWYData *)(pFrame + sizeof(ANS_Corp_FP) + sizeof(ANS_Corp_FPData)*pFP->lCount);
		DLG_Corp_FP dlg(this);
		m_pFPDlg = &dlg;
		dlg.SetParam( *pFP , pData,0, pYWYData);  //��ҵ����Ϊ:0(��ҵ)
		if ( dlg.DoModal() == IDOK && dlg.m_lModifyCount>0)
		{
			long lSize = sizeof(REQ_Corp_FPModify) + sizeof(ANS_Corp_FPData)*dlg.m_lModifyCount;
			BYTE * pDataSend = new BYTE[lSize];memset( pDataSend , 0 , lSize );
			REQ_Corp_FPModify * pModifySend = (REQ_Corp_FPModify*)pDataSend;
			ANS_Corp_FPData   * pFPSend    = (ANS_Corp_FPData  *)(pDataSend+sizeof(REQ_Corp_FPModify));
			pModifySend->lCorpID= pFP->lCorpID;
			pModifySend->lCount = dlg.m_lModifyCount;
			//������������
			ANS_Corp_FPData * pFPTemp;
			while (!dlg.m_FP.IsEmpty())
			{
				pFPTemp = dlg.m_FP.GetHead();
				//pFPTemp->lCorpType = 0;  //ǿ��������ҵ����Ϊ:0(��ҵ)
				dlg.m_FP.RemoveHead();
				if (pFPTemp->ucStatus != 0 )  //��Ϊ0,��Ҫ�޸�
				{
					*pFPSend = *pFPTemp;
					pFPSend ++;
				}
				delete pFPTemp;
			}
			m_pMainFrame->SendFrame( SMSFUNC_CORP_FPMODIFY , pDataSend , lSize );
		}
		else
		{
			//������������
			ANS_Corp_FPData * pFPTemp;
			while (!dlg.m_FP.IsEmpty())
			{
				pFPTemp = dlg.m_FP.GetHead();
				dlg.m_FP.RemoveHead();
				delete pFPTemp;
			}
		}
		m_pFPDlg = NULL;
		return true;
	}
	//��ϵ���޸�
	if (pHead->lFuncType == SMSFUNC_CORP_FPMODIFY)
	{
		return true;
	}
	if (pHead->lFuncType == SMSFUNC_CORP_SF_ADD ||
		pHead->lFuncType == SMSFUNC_CORP_SF_CANCEL ||
		pHead->lFuncType == SMSFUNC_CORP_SF_ROUTE)
	{
		if (m_pLXRDlg)
		{
			m_pLXRDlg->ProcessSocket(pHead, pFrame);
		}
		if (m_pFPDlg)
		{
			m_pFPDlg->ProcessSocket(pHead, pFrame);
		}
		return true;
	}

	return false;
}


void CC_Pay::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	
	if ( m_bInit )
	{
		CRect rect;
		m_S_S1.GetWindowRect(&rect);
		m_wndList.MoveWindow( 0 , 0+rect.Height()+5 , cx,cy-rect.Height()-5);
	}	
}

void CC_Pay::Close()
{
	Close_Corp();
	Close_YWY();
	Close_PayData();
	Close_Agent();
}

void CC_Pay::OnCPayQuery() 
{
	UpdateData(true);
	if ( m_tEnd < m_tBegin )
	{
		MessageBox( _T("��ѯ�������ڲ���С����ʼ���ڣ������!") , _T("����") , MB_ICONWARNING );
		return ;
	}
	REQ_Pay_See * pPay = new REQ_Pay_See;memset(pPay,0,sizeof(REQ_Pay_See));

	//��ҵ
	if ( m_lCorp <= 0 )  //ѡ��������ҵ
	{
		pPay->lCorpID = -1;
	}
	else
	{
		POSITION pos = (POSITION)m_L_Corp.GetItemData(m_lCorp);
		POSITION pos2 = pos;
		ANS_Corp_NameData * pData = m_Corp.GetNext( pos );
		if (pData)
		{
			pPay->lCorpID = pData->lCorpID;
		}
		else
		{
			return;
		}
	}

	//ҵ��Ա
	long lYWY = m_L_YWY.GetCurSel();
	if ( lYWY <= 1 )  //ѡ��������ҵ
	{
		if ( lYWY <= 0 )
			pPay->lYWYID =  -1;
		else
			pPay->lYWYID =  0;
	}
	else
	{
		POSITION pos = (POSITION)m_L_YWY.GetItemData(lYWY);
		POSITION pos2 = pos;
		ANS_YWY_NameData * pData = m_YWY.GetNext( pos );
		if (pData)
		{
			pPay->lYWYID = pData->lYWYID;
		}
		else
		{
			return;
		}
	}
	m_tBegin.GetAsSystemTime( pPay->tBegin );
	m_tEnd.GetAsSystemTime( pPay->tEnd );
	pPay->lPayType = m_lPayType; 

#ifdef SMSMANAGER_KF
	pPay->lFPType  = m_lFPType;
#else
	pPay->lFPType  = m_lFPType-1;
#endif

#ifdef SMSCENTER_ADC
	pPay->lType      = m_lType-1;
	pPay->lAdcStatus = m_lAdcStatus-1;
#endif
	m_pMainFrame->SendFrame(SMSFUNC_PAY_SEE,(BYTE*)pPay,sizeof(REQ_Pay_See));

	return ;		
}

void CC_Pay::OnCPayQuery2() 
{
	CString strTemp;
	CString strFind;
	m_E_CorpID.GetWindowText(strFind);
	if ( strFind.GetLength()<=0 )
		return ;
	long lSel   = m_L_Corp.GetCurSel();
	long lCount = m_L_Corp.GetCount();
	for ( int i=lSel+1 ; i<lCount ; i++ )
	{
		m_L_Corp.GetLBText(i,strTemp);
		if ( strTemp.Find(strFind)>=0 )
		{
			m_L_Corp.SetCurSel(i);
			OnSelchangeCPayCorp();
			return ;
		}
	}
	for ( i=0 ; i<lSel ; i++ )
	{
		m_L_Corp.GetLBText(i,strTemp);
		if ( strTemp.Find(strFind)>=0 )
		{
			m_L_Corp.SetCurSel(i);
			OnSelchangeCPayCorp();
			return ;
		}
	}	
}

void CC_Pay::OnSelchangeCPayCorp() 
{
	if ( m_L_Corp.GetCurSel()<=0 )
	{
		m_L_YWY.EnableWindow(true);
	}
	else
	{
		m_L_YWY.EnableWindow(false);
	}
}

void CC_Pay::OnDblclkCPayList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	On_User_See();
}

void CC_Pay::OnRclickCPayList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	ShowRMenu();
}

void CC_Pay::ShowRMenu()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}

	CMenu menu;
	menu.CreatePopupMenu();
	BOOL bLock = false;
	long lItem = this->GetCurrentSelected();
	ANS_Pay_SeeData * pData = NULL;

	if ( lItem>=0 && lItem<m_PayData.GetCount() )
	{
		POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
		if ( (DWORD)pos>=0 )
		{
			pData = m_PayData.GetNext( pos );
		}
	}
	if ( !pData )
		return ;

#ifdef SMSCENTER_ADC
	CString str = m_wndList.GetItemText(lItem,11);
	CString strFP = m_wndList.GetItemText(lItem,16);
	CString strFPS= m_wndList.GetItemText(lItem,17);
#else
	CString str = m_wndList.GetItemText(lItem,9);
	CString strFP = m_wndList.GetItemText(lItem,14);
	CString strFPS= m_wndList.GetItemText(lItem,15);
#endif

#if !defined(SMSCENTER_NX)

#ifndef SMSMANAGER_KF
	//����
	if ( lItem>=0 )
	{
		menu.AppendMenu(MF_STRING     , MENU_PAY_SEE    , _T(" �� �� ") );
	}
	else
	{
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_PAY_SEE    , _T(" �� �� ") );
	}
	menu.AppendMenu(MF_SEPARATOR );
	if ( m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_ADD,false) )  //ֻ�л�С������Ȩ��
	{
		if ( lItem>=0 && pData && pData->bYS )
		{
			menu.AppendMenu(MF_STRING  | MF_DISABLED | MF_GRAYED, MENU_PAY_YS    , _T(" ��Ϊ��������(�Ѽ��ɵ��ۺϲ�ѯ) ") );
		}
		else
		{
			menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_PAY_YS    , _T(" ��Ϊ��������(�Ѽ��ɵ��ۺϲ�ѯ) ") );
		}
	}
	if ( lItem>=0 && pData && pData->bTest )
	{
		menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_PAY_TEST    , _T(" ��Ϊ�Dz��Գ�ֵ(�Ѽ��ɵ��ۺϲ�ѯ) ") );
	}
	if ( lItem>=0 && pData && !pData->bTest )
	{
		menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_PAY_TEST    , _T(" ��Ϊ���Գ�ֵ(�Ѽ��ɵ��ۺϲ�ѯ) ") );
	}
	if ( lItem>=0 && pData && pData->bCB )
	{
		menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_PAY_CB    , _T(" ��Ϊ�dzɱ�����(�Ѽ��ɵ��ۺϲ�ѯ) ") );
	}
	if ( lItem>=0 && pData && !pData->bCB )
	{
		menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_PAY_CB    , _T(" ��Ϊ�ɱ�����(�Ѽ��ɵ��ۺϲ�ѯ) ") );
	}
	if ( lItem>=0 && pData && pData->lYSType==1 )  //��Ԥ����ţ������ó��ѳ估����
	{
		menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_PAY_YSTYPE_YC    , _T(" ȷ�ϳ�ֵ(�Ѽ��ɵ��ۺϲ�ѯ) ") );
		menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_PAY_YSTYPE_ZF    , _T(" ���ϳ�ֵ(�Ѽ��ɵ��ۺϲ�ѯ) ") );
	}
	if ( lItem>=0 && pData && pData->lFPStatus==0 )
	{
		CMenu MenuFP;
		MenuFP.CreatePopupMenu();
		MenuFP.AppendMenu(MF_STRING     , MENU_PAY_FP_NO         , _T(" ���跢Ʊ ") );
		MenuFP.AppendMenu(MF_STRING     , MENU_PAY_FP_TYPE1      , _T(" ��˰Ʊ ") );
		MenuFP.AppendMenu(MF_STRING     , MENU_PAY_FP_TYPE2      , _T(" ��ֵ˰��Ʊ ") );
		MenuFP.AppendMenu(MF_STRING     , MENU_PAY_FP_TYPE3      , _T(" �ƶ�Ʊ ") );
		MenuFP.AppendMenu(MF_STRING     , MENU_PAY_FP_TYPE4      , _T(" ��ֵ˰רƱ ") );
		MenuFP.AppendMenu(MF_STRING     , MENU_PAY_FP_TYPE5      , _T(" ���跢Ʊ�ѱ�˰ ") );
		MenuFP.AppendMenu(MF_STRING, MENU_PAY_FP_TYPE6, _T(" ӯ�׸���Ʊ "));
		MenuFP.AppendMenu(MF_STRING, MENU_PAY_FP_TYPE7, _T(" ӯ�׸�רƱ "));

		menu.AppendMenu(MF_STRING|MF_POPUP | MF_DISABLED | MF_GRAYED ,(UINT)MenuFP.GetSafeHmenu(), _T(" ��Ʊѡ��(�Ѽ��ɵ��ۺϲ�ѯ) ") );
	}
	/*
	if ( lItem>=0 && pData && !pData->bFP )
	{
		menu.AppendMenu(MF_STRING     , MENU_PAY_FP    , _T(" ��Ϊ��Ҫ��Ʊ ") );
	}
	*/
#endif
	if ( lItem>=0 && pData && pData->bFP>0 && pData->lFPStatus==0 )
	{
		menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_PAY_FP_YK    , _T(" ��Ϊ�ѿ���Ʊ(�Ѽ��ɵ��ۺϲ�ѯ) ") );
	}
	if ( lItem>=0 && pData &&  pData->bFP>0 && pData->lFPStatus==1 )
	{
		menu.AppendMenu(MF_STRING | MF_DISABLED | MF_GRAYED, MENU_PAY_FP_YJ    , _T(" ��Ϊ�Ѽķ�Ʊ(�Ѽ��ɵ��ۺϲ�ѯ) ") );
	}

	if ( lItem>=0 && pData )  //��Ԥ����ţ������ó��ѳ估����
	{
		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING     , MENU_PAY_FPMANAGER    , _T(" ��Ʊ̧ͷ... ") );
		menu.AppendMenu(MF_STRING     , MENU_PAY_LXRMANAGER   , _T(" ��ϵ��... ") );
	}

//	if ( lItem>=0 )
//	{
//		menu.AppendMenu(MF_SEPARATOR );
//		menu.AppendMenu(MF_STRING     , MENU_PAY_FP_PRINT    , _T(" ��ӡ�ŷ� ") );
//	}
#ifndef SMSMANAGER_KF

#ifdef SMSCENTER_ADC
	menu.AppendMenu(MF_SEPARATOR );
	menu.AppendMenu(MF_STRING     , MENU_PAY_ADC_PROCESS    , _T(" ADC��ֵ_�Ѵ��� ") );
	menu.AppendMenu(MF_STRING     , MENU_PAY_ADC_YCJ        , _T(" ADC��ֵ_�ѳ�ֵ ") );
	menu.AppendMenu(MF_STRING     , MENU_PAY_ADC_YFP        , _T(" ADC��ֵ_�Ѻ˷�Ʊ ") );
	
/*
	CMenu MenuType;
	MenuType.CreatePopupMenu();
	MenuType.AppendMenu(MF_STRING     , MENU_PAY_ADC_TC_SEL   , _T(" ����ѡ��Ӧ�����¼ ") );
	MenuType.AppendMenu(MF_STRING     , MENU_PAY_ADC_TC_QR    , _T(" ȷ�Ϸ��Ŵ������ ") );
	menu.AppendMenu(MF_SEPARATOR );
	menu.AppendMenu(MF_STRING|MF_POPUP,(UINT)MenuType.GetSafeHmenu(), _T(" ADC�����̳���� ") );
*/
#endif
	menu.AppendMenu(MF_SEPARATOR );
	menu.AppendMenu(MF_STRING     , MENU_PAY_EXPORT    , _T(" �������� ") );
#endif

#else
	menu.AppendMenu(MF_STRING     , MENU_PAY_EXPORT    , _T(" �������� ") );
#endif


	//��ʾ�˵�
	POINT pt ;
	::GetCursorPos( &pt );
	//this->ClientToScreen( &pt);
	menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
	menu.DestroyMenu();
}

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

void CC_Pay::On_User_See()
{
	MessageBox( _T("�Բ�����ʱû�в鿴���ܣ�"),_T("^_^"),MB_ICONINFORMATION );
}
void CC_Pay::On_User_YS()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}
	long lItem = this->GetCurrentSelected();
	if ( lItem <0 )
		return ;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	if ( (long)pos<0 )
		return ;
	POSITION pos2 = pos;
	ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );

	if ( !pData->bYS )
		return ;

	int iRet = MessageBox( _T("���Ҫ���˱ʿ����ó����գ���״̬�󽫲��ָܻ���") , _T("����") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 );
	if ( iRet != IDYES )
		return ;

	DLG_C_Pay_YS dlg(this);
	COleDateTime t(pData->tYSTime);
	if ( t.GetStatus() == COleDateTime::valid)
	{
		dlg.SetPayTime(t);
	}
	if ( dlg.DoModal() != IDOK )
		return ;


	REQ_Corp_Pay_YS *pYS = new REQ_Corp_Pay_YS;
	memset( pYS , 0 , sizeof(REQ_Corp_Pay_YS));
	pYS->lPayID = pData->lPayID;
	pYS->lItem  = lItem;
	pYS->lType  = 0;

	_tcscpy(pYS->szPayMode , dlg.m_strPayMode );
	_tcscpy(pYS->szBZ      , dlg.m_strBZ );
	dlg.m_tPayTime.GetAsSystemTime(pYS->tPayTime);

	m_pMainFrame->SendFrame( SMSFUNC_CORP_PAY_YS , (BYTE*)pYS , sizeof(REQ_Corp_Pay_YS));

}

void CC_Pay::On_User_FPManager()
{
	long lItem = this->GetCurrentSelected();
	if ( lItem <0 )
		return ;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	if ( (long)pos<0 )
		return ;
	POSITION pos2 = pos;
	ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );
	if ( !pData )
		return ;


	REQ_Corp_FP * pFP = new REQ_Corp_FP;
	memset( pFP , 0 , sizeof(REQ_Corp_FP));
	_tcscpy( pFP->szCorpName , pData->szCorpName );
	pFP->lCorpID = pData->lCorpID;
	pFP->lYWYID = pData->lYWYID;
	pFP->lAgentID = pData->lAgentID;
	pFP->lCorpType=0;  //���ն���ҵ
	pFP->lPayType = 1;//���ų�ֵ
	pFP->lPayID = pData->lPayID;  //��ֵID
	pFP->fPrice = pData->fPrice;  //��ֵ���
	m_pMainFrame->SendFrame( SMSFUNC_CORP_FP , (BYTE*)pFP , sizeof(REQ_Corp_FP) );   //ȡ��ϵ����Ϣ

}

void CC_Pay::On_User_LXRManager()
{

	long lItem = this->GetCurrentSelected();
	if ( lItem <0 )
		return ;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	if ( (long)pos<0 )
		return ;
	POSITION pos2 = pos;
	ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );
	if ( !pData )
		return ;

	REQ_Corp_LXR * pLXR = new REQ_Corp_LXR;
	memset( pLXR , 0 , sizeof(REQ_Corp_LXR));
	_tcscpy( pLXR->szCorpName , pData->szCorpName );
	pLXR->lCorpID = pData->lCorpID;
	pLXR->lCorpType=0;  //���ն���ҵ
	pLXR->lPayType = 1;//���ų�ֵ
	pLXR->lPayID = pData->lPayID;  //��ֵID
	pLXR->fPrice = pData->fPrice;  //��ֵ���

	m_pMainFrame->SendFrame( SMSFUNC_CORP_LXR , (BYTE*)pLXR , sizeof(REQ_Corp_LXR) );   //ȡ��ϵ����Ϣ
}


void CC_Pay::On_User_Test()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}
	long lItem = this->GetCurrentSelected();
	if ( lItem <0 )
		return ;
	BOOL bOK=false;
	BOOL bTest=true;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	if ( (long)pos<0 )
		return ;
	POSITION pos2 = pos;
	ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );

	if ( pData->bTest )
	{
		bOK = true;
		bTest = false;
	}
	if ( !pData->bTest )
	{
		bOK = true;
		bTest = true;
	}
	if ( !bOK )
		return ;

	CString str;
	str.Format( _T("ȷ����Ҫ���IJ���ת��״̬Ϊ:%s��") , bTest?_T("��"):_T("��"));
	int iRet = MessageBox( str , _T("����") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 );
	if ( iRet != IDYES )
		return ;

	REQ_Corp_Pay_YS *pYS = new REQ_Corp_Pay_YS;
	memset( pYS , 0 , sizeof(REQ_Corp_Pay_YS));
	pYS->lPayID = pData->lPayID;
	pYS->lItem  = lItem;
	pYS->lType  = 40;
	pYS->bFP    = bTest;

	m_pMainFrame->SendFrame( SMSFUNC_CORP_PAY_YS , (BYTE*)pYS , sizeof(REQ_Corp_Pay_YS));
}
void CC_Pay::On_User_CB()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}
	long lItem = this->GetCurrentSelected();
	if ( lItem <0 )
		return ;
	BOOL bOK=false;
	BOOL bTest=true;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	if ( (long)pos<0 )
		return ;
	POSITION pos2 = pos;
	ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );

	if ( pData->bCB )
	{
		bOK = true;
		bTest = false;
	}
	if ( !pData->bCB )
	{
		bOK = true;
		bTest = true;
	}
	if ( !bOK )
		return ;

	CString str;
	str.Format( _T("ȷ����Ҫ���ijɱ�����״̬Ϊ:%s��") , bTest?_T("��"):_T("��"));
	int iRet = MessageBox( str , _T("����") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 );
	if ( iRet != IDYES )
		return ;

	REQ_Corp_Pay_YS *pYS = new REQ_Corp_Pay_YS;
	memset( pYS , 0 , sizeof(REQ_Corp_Pay_YS));
	pYS->lPayID = pData->lPayID;
	pYS->lItem  = lItem;
	pYS->lType  = 50;
	pYS->bFP    = bTest;

	m_pMainFrame->SendFrame( SMSFUNC_CORP_PAY_YS , (BYTE*)pYS , sizeof(REQ_Corp_Pay_YS));
}
void CC_Pay::On_User_YSTYPE_YC()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}
	long lItem = this->GetCurrentSelected();
	if ( lItem <0 )
		return ;
	BOOL bOK=false;
	BOOL bTest=true;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	if ( (long)pos<0 )
		return ;
	POSITION pos2 = pos;
	ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );

	if ( pData->lYSType!=1 )  //ֻ����Ԥ���ʱ�������ʽ��ֵ
	{
		return;
	}

	CString str;
	str.Format( _T("�Ƿ�ȷ�ϴ˱ʳ�ֵ��ȷ�Ϻ󽫲������ϣ�") );
	int iRet = MessageBox( str , _T("����") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 );
	if ( iRet != IDYES )
		return ;

	REQ_Corp_Pay_YS *pYS = new REQ_Corp_Pay_YS;
	memset( pYS , 0 , sizeof(REQ_Corp_Pay_YS));
	pYS->lPayID = pData->lPayID;
	pYS->lItem  = lItem;
	pYS->lType  = 60;
	pYS->bFP    = bTest;

	m_pMainFrame->SendFrame( SMSFUNC_CORP_PAY_YS , (BYTE*)pYS , sizeof(REQ_Corp_Pay_YS));
}
void CC_Pay::On_User_YSTYPE_ZF()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}
	long lItem = this->GetCurrentSelected();
	if ( lItem <0 )
		return ;
	BOOL bOK=false;
	BOOL bTest=true;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	if ( (long)pos<0 )
		return ;
	POSITION pos2 = pos;
	ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );

	if ( pData->lYSType!=1 )  //ֻ����Ԥ���ʱ�������ʽ��ֵ
	{
		return;
	}

	CString str;
	str.Format( _T("�Ƿ����ϴ˱ʳ�ֵ��ȷ�Ϻ󽫲��ָܻ���") );
	int iRet = MessageBox( str , _T("����") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 );
	if ( iRet != IDYES )
		return ;

	REQ_Corp_Pay_YS *pYS = new REQ_Corp_Pay_YS;
	memset( pYS , 0 , sizeof(REQ_Corp_Pay_YS));
	pYS->lPayID = pData->lPayID;
	pYS->lItem  = lItem;
	pYS->lType  = 70;
	pYS->bFP    = bTest;

	m_pMainFrame->SendFrame( SMSFUNC_CORP_PAY_YS , (BYTE*)pYS , sizeof(REQ_Corp_Pay_YS));
}
void CC_Pay::On_User_FP_Type(UINT nID)
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}
	long lItem = this->GetCurrentSelected();
	if ( lItem <0 )
		return ;
	BOOL bOK=false;
	BOOL bKP=true;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	if ( (long)pos<0 )
		return ;
	POSITION pos2 = pos;
	ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );

	if ( pData->lFPStatus!=0 )
		return ;

	CString strType=_T("δ֪");
	UINT ll=MENU_PAY_FP_NO;
	long lType=nID - ll;
	switch(lType)
	{
	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;
	case 6:
		strType = _T("ӯ�׸���Ʊ");
		break;
	case 7:
		strType = _T("ӯ�׸�רƱ");
		break;
	}
	CString str;
	str.Format( _T("ȷ����Ҫ���ķ�Ʊ״̬Ϊ:%s��") , strType);
	int iRet = MessageBox( str , _T("����") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 );
	if ( iRet != IDYES )
		return ;

	REQ_Corp_Pay_YS *pYS = new REQ_Corp_Pay_YS;
	memset( pYS , 0 , sizeof(REQ_Corp_Pay_YS));
	pYS->lPayID = pData->lPayID;
	pYS->lItem  = lItem;
	pYS->lType  = 10;
	pYS->bFP    = lType;

	m_pMainFrame->SendFrame( SMSFUNC_CORP_PAY_YS , (BYTE*)pYS , sizeof(REQ_Corp_Pay_YS));
}

void CC_Pay::On_User_FP()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}
	long lItem = this->GetCurrentSelected();
	if ( lItem <0 )
		return ;
	BOOL bOK=false;
	BOOL bKP=true;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	if ( (long)pos<0 )
		return ;
	POSITION pos2 = pos;
	ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );

	if ( pData->bFP && pData->lFPStatus==0 )
	{
		bOK = true;
		bKP = false;
	}
	if ( !pData->bFP )
	{
		bOK = true;
		bKP = true;
	}
	if ( !bOK )
		return ;

	CString str;
	str.Format( _T("ȷ����Ҫ���ķ�Ʊ״̬Ϊ:%s��") , bKP?_T("��"):_T("��"));
	int iRet = MessageBox( str , _T("����") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 );
	if ( iRet != IDYES )
		return ;

	REQ_Corp_Pay_YS *pYS = new REQ_Corp_Pay_YS;
	memset( pYS , 0 , sizeof(REQ_Corp_Pay_YS));
	pYS->lPayID = pData->lPayID;
	pYS->lItem  = lItem;
	pYS->lType  = 10;
	pYS->bFP    = bKP;

	m_pMainFrame->SendFrame( SMSFUNC_CORP_PAY_YS , (BYTE*)pYS , sizeof(REQ_Corp_Pay_YS));
}

void CC_Pay::On_User_FP_YK()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}
	long lItem = this->GetCurrentSelected();
	if ( lItem <0 )
		return ;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	if ( (long)pos<0 )
		return ;
	POSITION pos2 = pos;
	ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );

	if ( !pData->bFP || pData->lFPStatus!=0 )  //����Ҫ����Ʊ������״̬����Ϊ��δ��Ʊ���IJ�����
	{
		return ;
	}

	CString str;
	str= _T("ȷ����Ҫ���ķ�Ʊ״̬Ϊ:�ѿ�Ʊ��");
	int iRet = MessageBox( str , _T("����") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 );
	if ( iRet != IDYES )
		return ;

	REQ_Corp_Pay_YS *pYS = new REQ_Corp_Pay_YS;
	memset( pYS , 0 , sizeof(REQ_Corp_Pay_YS));
	pYS->lPayID = pData->lPayID;
	pYS->lItem  = lItem;
	pYS->lType  = 20;

	m_pMainFrame->SendFrame( SMSFUNC_CORP_PAY_YS , (BYTE*)pYS , sizeof(REQ_Corp_Pay_YS));
}

void CC_Pay::On_User_FP_YJ()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}
	long lItem = this->GetCurrentSelected();
	if ( lItem <0 )
		return ;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	if ( (long)pos<0 )
		return ;
	POSITION pos2 = pos;
	ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );

	if ( !pData->bFP || pData->lFPStatus!=1 )  //����Ҫ����Ʊ������״̬����Ϊ���ѿ�Ʊ���IJ�����
	{
		return ;
	}

	CString str;
	str= _T("ȷ����Ҫ���ķ�Ʊ״̬Ϊ:�Ѽij���");
	int iRet = MessageBox( str , _T("����") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 );
	if ( iRet != IDYES )
		return ;

	REQ_Corp_Pay_YS *pYS = new REQ_Corp_Pay_YS;
	memset( pYS , 0 , sizeof(REQ_Corp_Pay_YS));
	pYS->lPayID = pData->lPayID;
	pYS->lItem  = lItem;
	pYS->lType  = 30;

	m_pMainFrame->SendFrame( SMSFUNC_CORP_PAY_YS , (BYTE*)pYS , sizeof(REQ_Corp_Pay_YS));
}

void CC_Pay::On_User_FP_PRINT()
{
}
void CC_Pay::On_User_Export()
{
	m_wndList.CopyToClipboard();
/*
	//m_wndList.SetHeadings(_T("���,50;    ��ҵ����,120; ��ֵ��,80;��ֵ��ʽ,80;��ֵ���,80; ����,80;С��,70; ����,70;	������,70;��ֵʱ��,130;����ʱ��,130;  �� ע,130;"));
	SortItem item[32]={0};
	_tcscpy(item[0].szItem,_T("��ҵ����"));
	_tcscpy(item[1].szItem,_T("������"));
	_tcscpy(item[2].szItem,_T("��ֵ��ʽ"));
	_tcscpy(item[3].szItem,_T("��ֵ���"));
	_tcscpy(item[4].szItem,_T("����"));
	_tcscpy(item[5].szItem,_T("��"));
	_tcscpy(item[6].szItem,_T("����"));
	_tcscpy(item[7].szItem,_T("������"));
	_tcscpy(item[8].szItem,_T("Ӧ��"));
	_tcscpy(item[9].szItem,_T("����"));
	_tcscpy(item[10].szItem,_T("��ֵʱ��"));
	_tcscpy(item[11].szItem,_T("����ʱ��"));
	_tcscpy(item[12].szItem,_T("��ע"));
	_tcscpy(item[13].szItem,_T("������"));
	DLG_HZB_Export dlg(this);
	dlg.SetParam( &m_wndList );
	dlg.SetListItem(item,14,-3);
	dlg.DoModal();
*/
}

BOOL CC_Pay::PreTranslateMessage(MSG* pMsg) 
{
	if ( pMsg->hwnd == m_E_CorpID && pMsg->message == WM_KEYDOWN )
	{
		if ( pMsg->wParam == 13 ) //�س���
		{
			this->OnCPayQuery2();
			return true;
		}
	}
	return CDialog::PreTranslateMessage(pMsg);
}


void CC_Pay::Close_PayData()
{
	//������������
	while (!m_PayData.IsEmpty())
	{
		ANS_Pay_SeeData * pData = m_PayData.GetHead();
		m_PayData.RemoveHead();
		delete pData;
	}
}

void CC_Pay::RefreshPayData()
{
	CString str;

	long lAgentID=m_L_Agent.GetItemData(m_L_Agent.GetCurSel());
	if ( lAgentID >=0 )
	{
		POSITION pos = (POSITION)lAgentID;
		ANS_Agent_NameData * pData = m_Agent.GetNext( pos );
		if (pData)
			lAgentID = pData->lAgentID;
	}

	if ( lAgentID==0 || lAgentID==-1 )
		lAgentID=-10;

	m_wndList.ShowWindow(SW_HIDE);
	m_wndList.DeleteAllItems(); //ɾ��ԭ�е�����
	
	POSITION pos = m_PayData.GetHeadPosition();
	POSITION pos2=0;
	int i=0;
	TCHAR Buf[128]={0};
	double fTotal=0;
	double fLPTotal=0;
	long   lCommend_VipIntTotal = 0;
	long   lSms=0;
	long   lPresent=0;
	long   lSmsAll=0;
	while ( pos )
	{
		pos2 = pos;
		ANS_Pay_SeeData * pData = m_PayData.GetNext(pos);
		if ( pData )
		{
			if ( (lAgentID == -10) ||
				 (lAgentID == -11 && pData->lAgentID <=0 ) ||
				 (lAgentID == -12 && pData->lAgentID >0 ) ||
				 (lAgentID == pData->lAgentID ) )
			{
				//m_wndList.SetHeadings(_T("���,50;    ��ҵ����,180; ������,80;��ֵ����,80;ADC״̬,80;��ֵ��ʽ,80;��ֵ���,80; ����,80;С��,70; ����,70; ������,70;Ӧ��,55;����,55;��ֵʱ��,130;����ʱ��,130;  �� ע,130; ������,70;ADC�������,130;ADC��ֵ���ʱ��,130;"));
				//m_wndList.SetHeadings(_T("���,50; ��ֵ��,80;��ֵ��ʽ,80;��ֵ���,80; ����,60;С��,70; ����,70; ������,70;��ֵʱ��,130;����ʱ��,130;  �� ע,130;"));
				_stprintf( Buf , _T("%d") , i+1 );
				m_wndList.InsertItem( i , Buf , 0 );   //ItemΪ0��ԭ���ǵ�ת��ʾ
				int iIndex=1;
				_stprintf( Buf , _T("%d-%s"),pData->lCorpID,pData->szCorpName);
				m_wndList.SetItemText( i , iIndex++ , Buf);
				//m_wndList.SetItemText( i , iIndex++ , pData->szPayMan );
				m_wndList.SetItemText( i , iIndex++ , pData->szCreateUser );
#ifdef SMSCENTER_ADC
				if ( pData->lPayType ==1 )
					m_wndList.SetItemText( i , iIndex++ , _T("ADC��ֵ") );
				else
					m_wndList.SetItemText( i , iIndex++ , _T("�����׳�ֵ") );



				if ( pData->lPayType ==1 )
				{
					switch( pData->lAdcStatus )
					{
					case 1:
						m_wndList.SetItemText( i , iIndex++ , _T("������") );
						break;
					case 2:
						m_wndList.SetItemText( i , iIndex++ , _T("�ѳ�ֵ") );
						break;
					case 3:
						m_wndList.SetItemText( i , iIndex++ , _T("��ע��") );
						break;
					case 4:
						m_wndList.SetItemText( i , iIndex++ , _T("�Ѻ˷�Ʊ") );
						break;
					default:
						m_wndList.SetItemText( i , iIndex++ , _T("���") );
					}
				}
				else
				{
					iIndex++;
				}
#endif
				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 );
				double l = 0.0f;
				if (pData->fPrice!=0 && pData->fPriceOne!=0 )
					l=pData->fPrice/pData->fPriceOne;
				long 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 );
				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++;
				if ( pData->bCB )
					m_wndList.SetItemText( i , iIndex++ , _T(" ��") );
				else
					iIndex++;
				_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);

				_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 = DLG_Corp_FP::GetFPType2(pData->bFP);
					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++;iIndex++;iIndex++;
				}

				switch( pData->lLPType )
				{
				case 1:
					m_wndList.SetItemText( i , iIndex++ , _T("��ֵ��") );
					break;
				case 2:
					m_wndList.SetItemText( i , iIndex++ , _T("�ֽ�") );
					break;
				case 3:
					m_wndList.SetItemText(i, iIndex++, _T("������"));
					break;	
				case 4:
					m_wndList.SetItemText(i, iIndex++, _T("ת������"));
					break;
				case 5:
					m_wndList.SetItemText(i, iIndex++, _T("������Ʒ"));
					break;
				case 0:
				default:
					m_wndList.SetItemText( i , iIndex++ , _T("��") );
					break;
				}
				str.Format( _T("%.2f") , pData->fLPPrice );
				m_wndList.SetItemText( i , iIndex++ , str);
				m_wndList.SetItemText( i , iIndex++ , pData->szLXRName);
				if ( pData->lLPType>0 )
					fLPTotal += pData->fLPPrice;

				str.Format( _T("%d") , pData->lCommend_VipInt );
				m_wndList.SetItemText( i , iIndex++ , str);  //�Ƽ�����
				lCommend_VipIntTotal += pData->lCommend_VipInt;

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

				//_stprintf( Buf , _T(" %d") , pData->lAgentID );
				m_wndList.SetItemText(i, iIndex++, GetName_YWY(pData->lYWYID));
				m_wndList.SetItemText( i , iIndex++ , GetName_Agent(pData->lAgentID));
				
				str.Format( _T("%d") , pData->lBalance );
				m_wndList.SetItemText( i , iIndex++ , str);  //�Ƽ�����

				m_wndList.SetItemData( i , (DWORD)pos2 );    //��Pos

#ifdef SMSCENTER_ADC
				m_wndList.SetItemText( i , iIndex++ , pData->szAdcSmsCode );
				m_wndList.SetItemText( i , iIndex++ , pData->szAdcLoginCode );
				m_wndList.SetItemText( i , iIndex++ , pData->szAdcProcessUser );
				_stprintf( Buf , _T("%04d.%02d.%02d") , pData->tAdcPayTime.wYear,pData->tAdcPayTime.wMonth,pData->tAdcPayTime.wDay);
				m_wndList.SetItemText( i , iIndex++ , Buf);

				if ( pData->lPayType ==1 && pData->lAdcStatus<=2 )// ADC��ֵ�ı�ǣ�����Ϊ��������ֵ�ļ�¼
					m_wndList.SetCheck(i , true );

				_stprintf(Buf , _T("%.2f") , pData->fAdcTC0 );
				m_wndList.SetItemText( i , iIndex++ , Buf );
				_stprintf(Buf , _T("%.2f") , pData->fAdcTC1 );
				m_wndList.SetItemText( i , iIndex++ , Buf );
				_stprintf(Buf , _T("%.2f") , pData->fAdcTC2 );
				m_wndList.SetItemText( i , iIndex++ , Buf );
				_stprintf(Buf , _T("%.2f") , pData->fAdcTC3 );
				m_wndList.SetItemText( i , iIndex++ , Buf );
				_stprintf(Buf , _T("%.2f") , pData->fAdcTC4 );
				m_wndList.SetItemText( i , iIndex++ , Buf );
				_stprintf(Buf , _T("%.2f") , pData->fAdcTC5 );
				m_wndList.SetItemText( i , iIndex++ , Buf );
				_stprintf(Buf , _T("%.2f") , pData->fAdcTC6 );
				m_wndList.SetItemText( i , iIndex++ , Buf );
				_stprintf(Buf , _T("%.2f") , pData->fAdcTC7 );
				m_wndList.SetItemText( i , iIndex++ , Buf );
#endif
#ifdef SMSCENTER_ADC
				if ( pData->lAdcStatus !=3 )  //״̬����ע���IJ������ܶ�
#endif
				{
					fTotal += pData->fPrice;
					lSms   += a;
					lPresent += pData->lPresent;
					lSmsAll += pData->lSMSCount;
				}

				i++;
			}
		}
	}



		m_wndList.InsertItem(i,_T(""),0 );
		i++;
		m_wndList.InsertItem(i,_T("�ϼ�"),0 );
		_stprintf( Buf , _T("%8.2f") , fTotal );
		m_wndList.SetItemText( i , 4 , Buf );
		_stprintf( Buf , _T("%8d") , lSms);
		m_wndList.SetItemText( i , 6 , Buf );
		_stprintf( Buf , _T("%8d") , lPresent);
		m_wndList.SetItemText( i , 7 , Buf );
		_stprintf( Buf , _T("%8d") , lSmsAll);
		m_wndList.SetItemText( i , 8 , Buf );

		_stprintf( Buf , _T("%.2f") , fLPTotal );
		m_wndList.SetItemText( i , 19 , Buf );

		_stprintf( Buf , _T("%d") , fLPTotal );
		m_wndList.SetItemText( i , 20 , lCommend_VipIntTotal );

	m_wndList.ShowWindow(SW_SHOW);

}

void CC_Pay::OnSelchangeCPayAgent() 
{
	RefreshPayData();	
}

void CC_Pay::OnCPayTc() 
{
	long lAgentID=m_L_Agent.GetItemData(m_L_Agent.GetCurSel());
	if ( lAgentID >=0 )
	{
		POSITION pos = (POSITION)lAgentID;
		ANS_Agent_NameData * pData = m_Agent.GetNext( pos );
		if (pData)
			lAgentID = pData->lAgentID;
	}

	if ( lAgentID==0 || lAgentID==-1 )
		lAgentID=-10;

	DLG_Pay_TC	dlg ( this );
	dlg.SetParam( &m_PayData,NULL,NULL,lAgentID );
	dlg.DoModal();
}

void CC_Pay::Close_Corp()
{
	//������������
	while (!m_Corp.IsEmpty())
	{
		ANS_Corp_NameData * pData = m_Corp.GetHead();
		m_Corp.RemoveHead();
		delete pData;
	}
}

void CC_Pay::Close_YWY()
{
	//������������
	while (!m_YWY.IsEmpty())
	{
		ANS_YWY_NameData * pData = m_YWY.GetHead();
		m_YWY.RemoveHead();
		delete pData;
	}
}


void CC_Pay::On_User_Adc_Process()
{
#ifdef SMSCENTER_ADC
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}

	static TCHAR BASED_CODE szFilter[] = _T("xls Files (*.xls)|*.xls|All Files (*.*)|*.*||");
	CFileDialog dlg(TRUE,_T("xls"),_T("adc.xls"),  OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
	if (dlg.DoModal() != IDOK)
	{
		return ;
	}
	CString strFileName = dlg.GetPathName();

	::DeleteFile(strFileName);  //��ɾ������Ȼ���ظ�
	CSpreadSheet * pSS;
	pSS = new CSpreadSheet(strFileName,_T("ADCҵ���ֵ"));
	CStringArray sampleArray, testRow;
	
	//SS.BeginTransaction();
	pSS->BeginTransaction();
	
	// �������
	sampleArray.RemoveAll();
	sampleArray.Add(_T("��ӡ����"));
	sampleArray.Add(_T("��ҵ����"));
	sampleArray.Add(_T("CA���"));
	sampleArray.Add(_T("��ֵ���"));
	sampleArray.Add(_T("��������"));
	sampleArray.Add(_T("����ͨ����"));
	sampleArray.Add(_T("��ע"));
	pSS->AddHeaders(sampleArray);

	long lCount=m_wndList.GetItemCount();
	REQ_Pay_SetAdcStatus_Data * pAdc = new REQ_Pay_SetAdcStatus_Data[lCount];
	memset(pAdc , 0 , sizeof(REQ_Pay_SetAdcStatus_Data)*lCount);

	CString str;
	SYSTEMTIME t;::GetLocalTime(&t);
	long lAdcCount=0;
	for ( int i=0 ; i<lCount ; i++ )
	{
		if ( m_wndList.GetCheck(i) )  //ѡ�е�
		{
			POSITION pos = (POSITION)m_wndList.GetItemData(i);
			if ( (long)pos>0 )
			{

				POSITION pos2 = pos;
				ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );
				if (pData && pData->lPayType==1 && pData->lAdcStatus==0)  //adc��ֵ��û�����IJ��ܽ��д�������
				{
					pAdc[lAdcCount].lPayID = pData->lPayID;
					lAdcCount ++;

					//����excel��
					sampleArray.RemoveAll();
					str.Format( _T("%04d-%02d-%02d") , t.wYear,t.wMonth,t.wDay);
					sampleArray.Add(str);
					sampleArray.Add(pData->szADCCorpName);
					sampleArray.Add(pData->szAdcLoginCode);
					str.Format( _T("%8.2f") , pData->fPrice );
					sampleArray.Add(str);
					str.Format( _T("%6d") , pData->lSMSCount );
					sampleArray.Add(str);
					sampleArray.Add(pData->szAdcSmsCode);
					str.Format( _T("%6d") , pData->lCorpID );
					sampleArray.Add(str);

					pSS->AddRow(sampleArray);
				}
				else
				{
					m_wndList.SetCheck(i,false);
				}
			}
		}
	}

	pSS->Commit();
	pSS->Close();
	delete pSS;

	long lSize = sizeof(REQ_Pay_SetAdcStatus) + sizeof(REQ_Pay_SetAdcStatus_Data)*lAdcCount;
	BYTE * pData = new BYTE[lSize];
	memset(pData , 0 , lSize );
	REQ_Pay_SetAdcStatus * pAdcReq = (REQ_Pay_SetAdcStatus *) pData;
	REQ_Pay_SetAdcStatus_Data * pAdcReqData = (REQ_Pay_SetAdcStatus_Data *)(pData+sizeof(REQ_Pay_SetAdcStatus));

	pAdcReq->lCorpCount = lAdcCount;
	pAdcReq->lNewStatus = 1;   //�óɴ�����
	::GetLocalTime(&pAdcReq->tPayTime);
	memcpy(pAdcReqData,pAdc,sizeof(REQ_Pay_SetAdcStatus_Data)*lAdcCount);

	delete pAdc;
	m_pMainFrame->SendFrame( SMSFUNC_PAY_SETADCSTATUS , (BYTE*)pData , lSize );

#endif
}

void CC_Pay::On_User_Adc_YCJ()
{
#ifdef SMSCENTER_ADC
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}


	long lCount=m_wndList.GetItemCount();
	REQ_Pay_SetAdcStatus_Data * pAdc = new REQ_Pay_SetAdcStatus_Data[lCount];
	memset(pAdc , 0 , sizeof(REQ_Pay_SetAdcStatus_Data)*lCount);

	CString str;
	SYSTEMTIME t;::GetLocalTime(&t);


	long lAdcCount=0;
	for ( int i=0 ; i<lCount ; i++ )
	{
		if ( m_wndList.GetCheck(i) )  //ѡ�е�
		{
			POSITION pos = (POSITION)m_wndList.GetItemData(i);
			if ( (long)pos>0 )
			{

				POSITION pos2 = pos;
				ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );
				if (pData && pData->lPayType==1 && pData->lAdcStatus==1)  //adc��ֵ�������еIJ��ܽ��д�������
				{
					pAdc[lAdcCount].lPayID = pData->lPayID;
					lAdcCount ++;
				}
				else
				{
					m_wndList.SetCheck(i,false);
				}
			}
		}
	}

	DLG_C_Pay_ADCCJ dlg(this);
	if ( dlg.DoModal()!=IDOK )
	{
		delete pAdc;
		return ;
	}

	long lSize = sizeof(REQ_Pay_SetAdcStatus) + sizeof(REQ_Pay_SetAdcStatus_Data)*lAdcCount;
	BYTE * pData = new BYTE[lSize];
	memset(pData , 0 , lSize );
	REQ_Pay_SetAdcStatus * pAdcReq = (REQ_Pay_SetAdcStatus *) pData;
	REQ_Pay_SetAdcStatus_Data * pAdcReqData = (REQ_Pay_SetAdcStatus_Data *)(pData+sizeof(REQ_Pay_SetAdcStatus));

	pAdcReq->lCorpCount = lAdcCount;
	pAdcReq->lNewStatus = 2;   //�Ѵ���
	dlg.m_tDate.GetAsSystemTime(pAdcReq->tPayTime);
	pAdcReq->tPayTime.wHour = 0;  //��ֵ�ɹ���Ҫʱ�䣬ֻҪ����
	pAdcReq->tPayTime.wMinute=0;
	pAdcReq->tPayTime.wSecond=0;
	memcpy(pAdcReqData,pAdc,sizeof(REQ_Pay_SetAdcStatus_Data)*lAdcCount);

	delete pAdc;
	m_pMainFrame->SendFrame( SMSFUNC_PAY_SETADCSTATUS , (BYTE*)pData , lSize );
#endif
}


void CC_Pay::On_User_Adc_YFP()
{
#ifdef SMSCENTER_ADC
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}


	long lCount=m_wndList.GetItemCount();
	REQ_Pay_SetAdcStatus_Data * pAdc = new REQ_Pay_SetAdcStatus_Data[lCount];
	memset(pAdc , 0 , sizeof(REQ_Pay_SetAdcStatus_Data)*lCount);

	CString str;
	SYSTEMTIME t;::GetLocalTime(&t);


	long lAdcCount=0;
	for ( int i=0 ; i<lCount ; i++ )
	{
		if ( m_wndList.GetCheck(i) )  //ѡ�е�
		{
			POSITION pos = (POSITION)m_wndList.GetItemData(i);
			if ( (long)pos>0 )
			{

				POSITION pos2 = pos;
				ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );
				if (pData && pData->lPayType==1 && pData->lAdcStatus==2)  //adc��ֵ���ѳ�ֵ�IJ��ܽ��д�������
				{
					pAdc[lAdcCount].lPayID = pData->lPayID;
					lAdcCount ++;
				}
				else
				{
					m_wndList.SetCheck(i,false);
				}
			}
		}
	}

	DLG_C_Pay_ADCCJ dlg(this);
	if ( dlg.DoModal()!=IDOK )
	{
		delete pAdc;
		return ;
	}


	long lSize = sizeof(REQ_Pay_SetAdcStatus) + sizeof(REQ_Pay_SetAdcStatus_Data)*lAdcCount;
	BYTE * pData = new BYTE[lSize];
	memset(pData , 0 , lSize );
	REQ_Pay_SetAdcStatus * pAdcReq = (REQ_Pay_SetAdcStatus *) pData;
	REQ_Pay_SetAdcStatus_Data * pAdcReqData = (REQ_Pay_SetAdcStatus_Data *)(pData+sizeof(REQ_Pay_SetAdcStatus));

	pAdcReq->lCorpCount = lAdcCount;
	pAdcReq->lNewStatus = 4;   //�Ѻ˷�Ʊ
	dlg.m_tDate.GetAsSystemTime(pAdcReq->tPayTime);
	pAdcReq->tPayTime.wHour = 0;  //��ֵ�ɹ���Ҫʱ�䣬ֻҪ����
	pAdcReq->tPayTime.wMinute=0;
	pAdcReq->tPayTime.wSecond=0;
	memcpy(pAdcReqData,pAdc,sizeof(REQ_Pay_SetAdcStatus_Data)*lAdcCount);

	delete pAdc;
	m_pMainFrame->SendFrame( SMSFUNC_PAY_SETADCSTATUS , (BYTE*)pData , lSize );
#endif
}

void CC_Pay::On_User_Adc_TC_Sel()
{
#ifdef SMSCENTER_ADC
	SYSTEMTIME t;::GetLocalTime(&t);
	long lNow =t.wYear*100+t.wMonth;

	long lCount = m_wndList.GetItemCount();
	for ( int i=lCount-1 ; i>=0 ; i-- )
	{
		BOOL bOK=false;
		POSITION pos = (POSITION)m_wndList.GetItemData(i);
		if ( (long)pos>0 )
		{
			ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );
			if (pData && pData->lPayType==1 && pData->lAdcStatus==2 && pData->lAgentID>0 && !pData->bTest && !pData->bYS)  //adc��ֵ�������Ѵ������,�����Ǵ����̵�,���Dz��Եģ�����Ӧ�յ�
			{
				//���ݴ˴����̵Ľ������ͣ�������û�Ӧ������·�
				long lMon=3;
				if ( GetAdcAgentTcType(pData->lAgentID) == 1 )
					lMon = 7;
				SYSTEMTIME t2 = pData->tPayTime;
			
				for ( int i=0 ; i<lMon ; i++ )
				{
					t2.wMonth++;
					if ( t2.wMonth>12  )
					{
						t2.wMonth = 1;
						t2.wYear++;
					}
					long lPay = t2.wYear*100 + t2.wMonth;

					float fPayTC=0.0f;
					switch(i)
					{
					case 0:
						 fPayTC = pData->fAdcTC1;
						 break;
					case 1:
						 fPayTC = pData->fAdcTC2;
						 break;
					case 2:
						 fPayTC = pData->fAdcTC3;
						 break;
					case 3:
						 fPayTC = pData->fAdcTC4;
						 break;
					case 4:
						 fPayTC = pData->fAdcTC5;
						 break;
					case 5:
						 fPayTC = pData->fAdcTC6;
						 break;
					case 6:
						 fPayTC = pData->fAdcTC7;
						 break;
					}
					if ( lPay <= lNow &&  fPayTC<=0.0f )
					{
						bOK = true;
						break;
					}
					if ( lPay>lNow )
						break;
				}
			}
		}
		if ( !bOK )
			m_wndList.DeleteItem(i);
		else
			m_wndList.SetCheck(i);
	}
#endif
}
void CC_Pay::On_User_Adc_TC_QR()
{

#ifdef SMSCENTER_ADC
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return ;
	}

	int iRet=MessageBox( _T("�������д����̳����㣬����ǰ��ע�������Ƿ��������������ˢ��״̬����Ƿ�ɹ���\r\n��ȷ�����������������") , _T("��������") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 );
	if ( iRet != IDYES )
		return ;

	static TCHAR BASED_CODE szFilter[] = _T("xls Files (*.xls)|*.xls|All Files (*.*)|*.*||");
	CFileDialog dlg(TRUE,_T("xls"),_T("adcAgent.xls"),  OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
	if (dlg.DoModal() != IDOK)
	{
		return ;
	}
	CString strFileName = dlg.GetPathName();


	::DeleteFile(strFileName);  //��ɾ������Ȼ���ظ�
	CSpreadSheet * pSS;
	pSS = new CSpreadSheet(strFileName,_T("ADC�����̳�����"));
	CStringArray sampleArray, testRow;
	
	//SS.BeginTransaction();
	pSS->BeginTransaction();
	
	// �������
	sampleArray.RemoveAll();
	sampleArray.Add(_T("��ӡ����"));
	sampleArray.Add(_T("����������"));
	sampleArray.Add(_T("��ҵID"));
	sampleArray.Add(_T("��ҵ����"));
	sampleArray.Add(_T("��ֵʱ��"));
	sampleArray.Add(_T("��ֵ���"));
	sampleArray.Add(_T("��������"));
	sampleArray.Add(_T("����ͨ����"));
	sampleArray.Add(_T("1�³��"));
	sampleArray.Add(_T("2�³��"));
	sampleArray.Add(_T("3�³��"));
	sampleArray.Add(_T("4�³��"));
	sampleArray.Add(_T("5�³��"));
	sampleArray.Add(_T("6�³��"));
	sampleArray.Add(_T("7�³��"));
	pSS->AddHeaders(sampleArray);

	long lCount=m_wndList.GetItemCount();
	REQ_Pay_SetAdcAgentTC_Data * pAdc = new REQ_Pay_SetAdcAgentTC_Data[lCount];
	memset(pAdc , 0 , sizeof(REQ_Pay_SetAdcAgentTC_Data)*lCount);

	CString str;
	SYSTEMTIME t;::GetLocalTime(&t);
	long lNow =t.wYear*100+t.wMonth;
	long lAdcCount=0;
	for ( int i=0 ; i<lCount ; i++ )
	{
		if ( m_wndList.GetCheck(i) )  //ѡ�е�
		{

			BOOL bOK=false;
			POSITION pos = (POSITION)m_wndList.GetItemData(i);
			if ( (long)pos>0 )
			{
				ANS_Pay_SeeData * pData = m_PayData.GetNext( pos );
				if (pData && pData->lPayType==1 && pData->lAdcStatus==2 && pData->lAgentID>0 && !pData->bTest && !pData->bYS)  //adc��ֵ�������Ѵ������,�����Ǵ����̵�,���Dz��Եģ�����Ӧ�յ�
				{
					//���ݴ˴����̵Ľ������ͣ�������û�Ӧ������·�
					long lMon=3;
					if ( GetAdcAgentTcType(pData->lAgentID) == 1 )
						lMon = 7;
					SYSTEMTIME t2 = pData->tPayTime;
					
					for ( int i=0 ; i<lMon ; i++ )
					{
						t2.wMonth++;
						if ( t2.wMonth>12  )
						{
							t2.wMonth = 1;
							t2.wYear++;
						}
						long lPay = t2.wYear*100 + t2.wMonth;
						
						float fPayTC=0.0f;
						float * fNowPayTC=NULL;
						switch(i)
						{
						case 0:
							fPayTC = pData->fAdcTC1;
							fNowPayTC = &pAdc[lAdcCount].fADCTC1;
							break;
						case 1:
							fPayTC = pData->fAdcTC2;
							fNowPayTC = &pAdc[lAdcCount].fADCTC2;
							break;
						case 2:
							fPayTC = pData->fAdcTC3;
							fNowPayTC = &pAdc[lAdcCount].fADCTC3;
							break;
						case 3:
							fPayTC = pData->fAdcTC4;
							fNowPayTC = &pAdc[lAdcCount].fADCTC4;
							break;
						case 4:
							fPayTC = pData->fAdcTC5;
							fNowPayTC = &pAdc[lAdcCount].fADCTC5;
							break;
						case 5:
							fPayTC = pData->fAdcTC6;
							fNowPayTC = &pAdc[lAdcCount].fADCTC6;
							break;
						case 6:
							fPayTC = pData->fAdcTC7;
							fNowPayTC = &pAdc[lAdcCount].fADCTC7;
							break;
						}
						if ( lPay <= lNow &&  fPayTC<=0.0f && fNowPayTC )
						{
							float fPayPer = 0.1f;  //ǰ������ɱ���Ϊ10%
							if ( lMon==3 && i==2 )
								fPayPer = 0.05f;   //����������ɱ���Ϊ5%
							if ( lMon==7 )
								fPayPer = 0.05f;   //��7������ɱ���Ϊÿ����5%
							*fNowPayTC = pData->fPrice * fPayPer;
							bOK = true;
						}
						if ( fPayTC>0.0f && fNowPayTC ) //�ѽ���ģ������
						{
							*fNowPayTC = -1.0f;
						}
						if ( lPay>lNow )
							break;
					}
					if ( bOK )
					{
						pAdc[lAdcCount].lPayID = pData->lPayID;
						pAdc[lAdcCount].lAgentID = pData->lAgentID;
						pAdc[lAdcCount].lCorpID = pData->lCorpID;
						pAdc[lAdcCount].fPrice = pData->fPrice;
						
						//����excel��
						sampleArray.RemoveAll();
						str.Format( _T("%04d-%02d-%02d") , t.wYear,t.wMonth,t.wDay);
						sampleArray.Add(str);  //����
						sampleArray.Add(GetName_Agent(pData->lAgentID));//����������
						str.Format( _T("%d") , pData->lCorpID );
						sampleArray.Add(str);  //��ҵID
						sampleArray.Add(pData->szCorpName);  //��ҵ����
						str.Format( _T("%04d-%02d-%02d") , pData->tPayTime.wYear,pData->tPayTime.wMonth,pData->tPayTime.wDay);
						sampleArray.Add(str);  //��ֵʱ��
						str.Format( _T("%8.2f") , pData->fPrice );
						sampleArray.Add(str);  //��ֵ���
						str.Format( _T("%8d") , pData->lSMSCount );
						sampleArray.Add(str);  //��������
						sampleArray.Add(pData->szAdcSmsCode);  //����ͨ����
						
						if ( pAdc[lAdcCount].fADCTC1 >0.0f )
							str.Format( _T("%8.2f") , pAdc[lAdcCount].fADCTC1 );
						else
							if ( pAdc[lAdcCount].fADCTC1 == -1.0f )
							{
								str=_T("�ѽ���") ;
								pAdc[lAdcCount].fADCTC1 =0.0f;  //�ѽ���Ļָ�Ϊ0;
							}
							else
								str=_T("������");
						sampleArray.Add(str);
						if ( pAdc[lAdcCount].fADCTC2 >0.0f )
							str.Format( _T("%8.2f") , pAdc[lAdcCount].fADCTC2 );
						else
							if ( pAdc[lAdcCount].fADCTC2 == -1.0f )
							{
								str=_T("�ѽ���") ;
								pAdc[lAdcCount].fADCTC2 =0.0f;  //�ѽ���Ļָ�Ϊ0;
							}
							else
								str=_T("������");
						sampleArray.Add(str);
						if ( pAdc[lAdcCount].fADCTC3 >0.0f )
							str.Format( _T("%8.2f") , pAdc[lAdcCount].fADCTC3 );
						else
							if ( pAdc[lAdcCount].fADCTC3 == -1.0f )
							{
								str=_T("�ѽ���") ;
								pAdc[lAdcCount].fADCTC3 =0.0f;  //�ѽ���Ļָ�Ϊ0;
							}
							else
								str=_T("������");

						sampleArray.Add(str);
						if ( lMon>3 )
						{
							if ( pAdc[lAdcCount].fADCTC4 >0.0f )
								str.Format( _T("%8.2f") , pAdc[lAdcCount].fADCTC4 );
							else
							if ( pAdc[lAdcCount].fADCTC4 == -1.0f )
							{
								str=_T("�ѽ���") ;
								pAdc[lAdcCount].fADCTC4 =0.0f;  //�ѽ���Ļָ�Ϊ0;
							}
							else
								str=_T("������");

							sampleArray.Add(str);
							if ( pAdc[lAdcCount].fADCTC5 >0.0f )
								str.Format( _T("%8.2f") , pAdc[lAdcCount].fADCTC5 );
							else
							if ( pAdc[lAdcCount].fADCTC5 == -1.0f )
							{
								str=_T("�ѽ���") ;
								pAdc[lAdcCount].fADCTC5 =0.0f;  //�ѽ���Ļָ�Ϊ0;
							}
							else
								str=_T("������");

							sampleArray.Add(str);
							if ( pAdc[lAdcCount].fADCTC6 >0.0f )
								str.Format( _T("%8.2f") , pAdc[lAdcCount].fADCTC6 );
							else
							if ( pAdc[lAdcCount].fADCTC6 == -1.0f )
							{
								str=_T("�ѽ���") ;
								pAdc[lAdcCount].fADCTC6 =0.0f;  //�ѽ���Ļָ�Ϊ0;
							}
							else
								str=_T("������");

							sampleArray.Add(str);
							if ( pAdc[lAdcCount].fADCTC7 >0.0f )
								str.Format( _T("%8.2f") , pAdc[lAdcCount].fADCTC7 );
							else
							if ( pAdc[lAdcCount].fADCTC7 == -1.0f )
							{
								str=_T("�ѽ���") ;
								pAdc[lAdcCount].fADCTC7 =0.0f;  //�ѽ���Ļָ�Ϊ0;
							}
							else
								str=_T("������");

							sampleArray.Add(str);
						}
						
						pSS->AddRow(sampleArray);
						
						lAdcCount ++;
					}
				}
			}
			if ( !bOK )
			{
				m_wndList.SetCheck(i,false);
			}
		}
	}

	pSS->Commit();
	pSS->Close();
	delete pSS;

	long lSize = sizeof(REQ_Pay_SetAdcAgentTC) + sizeof(REQ_Pay_SetAdcAgentTC_Data)*lAdcCount;
	BYTE * pData = new BYTE[lSize];
	memset(pData , 0 , lSize );
	REQ_Pay_SetAdcAgentTC * pAdcReq = (REQ_Pay_SetAdcAgentTC *) pData;
	REQ_Pay_SetAdcAgentTC_Data * pAdcReqData = (REQ_Pay_SetAdcAgentTC_Data *)(pData+sizeof(REQ_Pay_SetAdcAgentTC));

	pAdcReq->lCorpCount = lAdcCount;
	memcpy(pAdcReqData,pAdc,sizeof(REQ_Pay_SetAdcAgentTC_Data)*lAdcCount);

	delete pAdc;
	m_pMainFrame->SendFrame( SMSFUNC_PAY_SETADCAGENTTC , (BYTE*)pData , lSize );

#endif

}


CString CC_Pay::GetName_YWY(long lYWYID)
{
	//������
	CString strTemp = _T("");//��ҵ��Ա
	POSITION pos = m_YWY.GetHeadPosition();
	POSITION pos2;
	while (pos)
	{
		pos2 = pos;
		ANS_YWY_NameData * pYWY = m_YWY.GetNext(pos);
		if (pYWY->lYWYID == lYWYID)
		{
			strTemp = pYWY->szYWYName;
			break;
		}
	}
	return strTemp;
}

CString CC_Pay::GetName_Agent(long lAgentID)
{
	//������
	CString strTemp=_T("");//�޴�����
	POSITION pos = m_Agent.GetHeadPosition();
	POSITION pos2;
	while (pos)
	{
		pos2=pos;
		ANS_Agent_NameData * pAgent = m_Agent.GetNext( pos );
		if ( pAgent->lAgentID == lAgentID )
		{
			strTemp = pAgent->szAgentName;
			break;
		}
	}
	return strTemp;
}

ANS_Agent_NameData *  CC_Pay::GetName_Agent2(long lAgentID)
{
	//������
	ANS_Agent_NameData * pAgent2=NULL;
	POSITION pos = m_Agent.GetHeadPosition();
	POSITION pos2;
	while (pos)
	{
		pos2=pos;
		ANS_Agent_NameData * pAgent = m_Agent.GetNext( pos );
		if( pAgent && pAgent->lAgentID==lAgentID)
		{
			pAgent2 = pAgent;
			break;
		}
	}
	return pAgent2;
}

void CC_Pay::Close_Agent()
{
	//������������
	while (!m_Agent.IsEmpty())
	{
		ANS_Agent_NameData * pAgent = m_Agent.GetHead();
		m_Agent.RemoveHead();
		delete pAgent;
	}
}

long CC_Pay::GetAdcAgentTcType(long lAgentID)
{
#ifdef SMSCENTER_ADC
	ANS_Agent_NameData * pData = GetName_Agent2(lAgentID);
	if ( pData )
		return pData->lAdcTcType;
#endif
	return 0;
}

void CC_Pay::OnCPayQuery3() 
{
	CString strTemp;
	CString strFind;
	m_E_AgentID.GetWindowText(strFind);
	if ( strFind.GetLength()<=0 )
		return ;
	long lSel   = m_L_Agent.GetCurSel();
	long lCount = m_L_Agent.GetCount();
	for ( int i=lSel+1 ; i<lCount ; i++ )
	{
		m_L_Agent.GetLBText(i,strTemp);
		if ( strTemp.Find(strFind)>=0 )
		{
			m_L_Agent.SetCurSel(i);
			return ;
		}
	}
	for ( i=0 ; i<lSel ; i++ )
	{
		m_L_Agent.GetLBText(i,strTemp);
		if ( strTemp.Find(strFind)>=0 )
		{
			m_L_Agent.SetCurSel(i);
			return ;
		}
	}	
}