// DLG_Corp_LXR.cpp : implementation file
//

#include "stdafx.h"
#include "smsmanager.h"
#include "DLG_Corp_LXR.h"

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

/////////////////////////////////////////////////////////////////////////////
// DLG_Corp_LXR dialog

#include "DLG_Corp_LXR_Modify.h"
#include "DLG_Corp_LXR_Print.h"
#include "DLG_Corp_LXR_PrintHT.h"
#include "DLG_Corp_LXR_SF.h"

DLG_Corp_LXR::DLG_Corp_LXR(CWnd* pParent /*=NULL*/)
	: CDialog(DLG_Corp_LXR::IDD, pParent)
{
	//{{AFX_DATA_INIT(DLG_Corp_LXR)
	m_strCorpName = _T("");
	m_strSMSNum = _T("");
	//}}AFX_DATA_INIT
	m_lModifyCount = 0;
	m_lLXRCount    = 0;
	memset( &m_LXRReq , 0 , sizeof(m_LXRReq) );
	m_pLXRData     = NULL;
	m_pLXR_YWYData = NULL;
	m_lCorpType = 0;
	m_pSFDlg = NULL;
}


void DLG_Corp_LXR::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DLG_Corp_LXR)
	DDX_Control(pDX, IDC_CORP_LXR_LIST, m_wndList);
	DDX_Text(pDX, IDC_CORP_LXR_CORPNAME, m_strCorpName);
	DDX_Text(pDX, IDC_CORP_LXR_SMSNUM, m_strSMSNum);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(DLG_Corp_LXR, CDialog)
	//{{AFX_MSG_MAP(DLG_Corp_LXR)
	ON_NOTIFY(NM_DBLCLK, IDC_CORP_LXR_LIST, OnDblclkCorpLxrList)
	ON_BN_CLICKED(IDC_CORP_LXR_MODIFY, OnCorpLxrModify)
	ON_BN_CLICKED(IDC_CORP_LXR_ADD, OnCorpLxrAdd)
	ON_BN_CLICKED(IDC_CORP_LXR_DEL, OnCorpLxrDel)
	ON_BN_CLICKED(IDC_CORP_LXR_PRINT, OnCorpLxrPrint)
	ON_BN_CLICKED(IDC_CORP_LXR_PRINTHT, OnCorpLxrPrintht)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLG_Corp_LXR message handlers

void DLG_Corp_LXR::SetParam(ANS_Corp_LXR LXR , ANS_Corp_LXRData *pLXRData , long lCorpType, ANS_Corp_LXR_YWYData * pYWYData)
{
	m_lLXRCount = LXR.lCount;
	m_LXRReq    = LXR;
	m_pLXRData  = pLXRData;
	m_pLXR_YWYData = pYWYData;
	m_lCorpType = lCorpType;
}

BOOL DLG_Corp_LXR::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	m_strCorpName = m_LXRReq.szCorpName;
	m_strSMSNum   = m_LXRReq.szSMSNum;

	this->UpdateData(false);
	
	//��ʼ��List
	m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP) );
	m_wndList.SubClassWindow2();
	m_wndList.SetHeadings(_T("���,50; ����,80; �dz�,80; ����,80; �绰,80; �ֻ�,80;��Ա,60;�ܳ�ֵ,90;����Ʒ,90;��Ա��ʼ����,90;"));
	m_wndList.SetGridLines(true);
	m_wndList.SetImageList(&m_Image,LVSIL_SMALL);

	POSITION pos;
	TCHAR Buf[32];
	CString str;
	for ( int i = 0 ; i< m_lLXRCount ; i++ )
	{
		ANS_Corp_LXRData * pData = new ANS_Corp_LXRData;
		*pData = m_pLXRData[i];
		pos = m_LXR.AddTail( pData );
		_stprintf( Buf , _T("%d") , i+1 );
		m_wndList.InsertItem( i , Buf , 0 );
		m_wndList.SetItemData( i , (DWORD)pos);
		int iTemp=1;
		m_wndList.SetItemText( i , iTemp++ , pData->szName );
		m_wndList.SetItemText( i , iTemp++ , pData->szNickName );
		m_wndList.SetItemText( i , iTemp++ , pData->szBranch );
		m_wndList.SetItemText( i , iTemp++ , pData->szTel );
		m_wndList.SetItemText( i , iTemp++ , pData->szMobile );
		if ( pData->bMember )
			m_wndList.SetItemText( i , iTemp++ , _T(" ��") );
		else
			iTemp++;
		str.Format( _T("%.2f") ,pData->fTotalCJ ); 
		m_wndList.SetItemText( i , iTemp++ , str );
		str.Format( _T("%.2f") ,pData->fTotalLP ); 
		m_wndList.SetItemText( i , iTemp++ , str );
		str.Format( _T("%04d.%02d.%02d") ,pData->tMemberBegin.wYear,pData->tMemberBegin.wMonth,pData->tMemberBegin.wDay ); 
		m_wndList.SetItemText( i , iTemp++ , str );

	}

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

void DLG_Corp_LXR::OnDblclkCorpLxrList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnCorpLxrModify();
	
	*pResult = 0;
}

void DLG_Corp_LXR::OnCorpLxrModify() 
{
	long lItem = GetCurrentSelected();
	if ( lItem < 0 )
		return ;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_Corp_LXRData * pData = m_LXR.GetNext( pos );
	if (pData)
	{
		DLG_Corp_LXR_Modify dlg(this);
		dlg.SetParam( *pData,pos2);
		if ( dlg.DoModal() == IDOK )
		{
			*pData = dlg.GetParam();  //ȡ���޸Ĺ����ֵ
			m_wndList.SetItemText( lItem , 1 , pData->szName );
			m_wndList.SetItemText( lItem , 2 , pData->szNickName );
			m_wndList.SetItemText( lItem , 3 , pData->szBranch );
			m_wndList.SetItemText( lItem , 4 , pData->szTel );
			m_wndList.SetItemText( lItem , 5 , pData->szMobile );

			if ( pData->ucStatus == 0 )
			{
				pData->ucStatus = CORP_LXR_MODIFY;  //��Ҫ�޸�
				m_lModifyCount ++;    //��Ҫ�޸ĵļ�¼����
			}
		}
	}		
}

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

BOOL DLG_Corp_LXR::FindLXRName(const TCHAR *pLXRName, POSITION exPos)
{
	POSITION pos = m_LXR.GetHeadPosition();
	POSITION pos2;
	while (pos)
	{
		pos2 = pos;
		ANS_Corp_LXRData * pData = m_LXR.GetNext( pos );
		if ( pos2 != exPos )
		{
			if ( !_tcscmp( pData->szName , pLXRName ) )
				return true;
		}
	}
	return false;
}

void DLG_Corp_LXR::OnCorpLxrAdd() 
{
	ANS_Corp_LXRData LXRData={0};
	DLG_Corp_LXR_Modify dlg(this);
	dlg.SetParam( LXRData,0);
	if ( dlg.DoModal() == IDOK )
	{
		ANS_Corp_LXRData * pData = new ANS_Corp_LXRData;
		*pData = dlg.GetParam();
		pData->ucStatus = CORP_LXR_ADD;
		pData->lCorpType = m_lCorpType;
		m_lModifyCount ++;    //��Ҫ�޸ĵļ�¼����
		POSITION pos = m_LXR.AddTail( pData );
		long lCount = m_wndList.GetItemCount();
		TCHAR Buf[32];
		_stprintf( Buf, _T("%d") , lCount +1 );
		//�����µ�����
		m_wndList.InsertItem( lCount , Buf , 0);
		m_wndList.SetItemData( lCount, (DWORD)pos );
		m_wndList.SetItemText( lCount , 1 , pData->szName );
		m_wndList.SetItemText( lCount , 2 , pData->szNickName );
		m_wndList.SetItemText( lCount , 3 , pData->szBranch );
		m_wndList.SetItemText( lCount , 4 , pData->szTel );
		m_wndList.SetItemText( lCount , 5 , pData->szMobile );
	}
}

void DLG_Corp_LXR::OnCorpLxrDel() 
{
	long lCount = m_wndList.GetSelectedCount();
	if ( lCount <= 0 )
		return ;
	long lRet = MessageBox( _T("�˲�������ɾ����ϵ�ˣ��Ƿ������") , _T("����") , MB_ICONQUESTION|MB_YESNOCANCEL|MB_DEFBUTTON2);
	if ( lRet != IDYES )
		return;

	long * lDel = new long[lCount];
	POSITION pos = m_wndList.GetFirstSelectedItemPosition();
	long i=0;
	while ( pos )
	{
		lDel[i] = m_wndList.GetNextSelectedItem(pos);
		i++;
	}
	for ( i = lCount-1 ; i>=0 ; i-- )  //��תɾ��
	{
		long lItem = lDel[i];
		POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
		m_wndList.DeleteItem( lItem );  //ɾ��
		POSITION pos2 = pos;
		ANS_Corp_LXRData * pData = m_LXR.GetNext( pos );
		if (pData)
		{
			if (pData->ucStatus == 0)
			{
				pData->ucStatus = CORP_LXR_DEL;
				m_lModifyCount ++;    //��Ҫ�޸ĵļ�¼����
			}
			else
			{
				pData->ucStatus = 0;
				m_lModifyCount --;    //��Ϊ�޸�����ʱ���1
			}
		}
	}
	delete lDel;

	
}

void DLG_Corp_LXR::OnCorpLxrPrint() 
{
	if (m_lModifyCount>0 )
	{
		MessageBox( _T("���Ѷ���ϵ�������޸ģ���ȷ���������´�ӡ��") , _T("��ʾ") , MB_ICONINFORMATION );
		return ;
	}
	DLG_Corp_LXR_Print dlg(this);

	dlg.m_strCorpName = m_LXRReq.szCorpName;
	dlg.m_strAddress  = m_LXRReq.szAddress;
	dlg.m_strPostCode = m_LXRReq.szPostCode;
	long lItem = GetCurrentSelected();
	if ( lItem >= 0 )
	{
		POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
		POSITION pos2 = pos;
		ANS_Corp_LXRData * pData = m_LXR.GetNext( pos );
		if (pData)
		{
			dlg.m_strLXR = pData->szName;
			dlg.m_strTelNum=pData->szTel;
			if ( _tcslen(pData->szMobile)>0 )
			{
				if ( dlg.m_strTelNum.GetLength()>0 )
					dlg.m_strTelNum += _T("��");
				dlg.m_strTelNum += CString(pData->szMobile);
			}
		}
		dlg.DoModal();
	}
	else
	{
		MessageBox(_T("����ѡ����ϵ�ˣ��ٿ�ʼ��ӡ��"), _T("��ʾ"), MB_ICONINFORMATION);
		return;

	}
	
}

void DLG_Corp_LXR::OnCorpLxrPrintht() 
{

	if (m_lModifyCount>0 )
	{
		MessageBox( _T("���Ѷ���ϵ�������޸ģ���ȷ����������˳��ļ���") , _T("��ʾ") , MB_ICONINFORMATION );
		return ;
	}
	long lItem = GetCurrentSelected();
	if (lItem < 0)
	{
		MessageBox(_T("����ѡ����ϵ�ˣ��ٿ�ʼ˳��ļ���"), _T("��ʾ"), MB_ICONINFORMATION);
		return;
	}

	ANS_Corp_SFData sf = { 0 };
	GetLocalTime(&sf.tCreate);  //����ʱ��
	sf.lStatus = 0;     //״̬��0-���ɣ�1-���ռ�,2-��ǩ��
	sf.pay_method = 0;  //���ʽ��0:�ĸ��½ᣬ1:�ķ��� 2 : �շ��� 3 : ��������
	sf.express_type = 1; //˳���ػ�
	sf.lCorpType = m_LXRReq.lCorpType;   //��ҵ���ͣ�0-�ն˿ͻ���1-�����̡�
	sf.lCorpID = m_LXRReq.lCorpID;    //��ҵid�������ID
	sf.lPayType = m_LXRReq.lPayType;    //֧�����ͣ�0-�dz�ֵ��1-���ų�ֵ��2-���ų�ֵ��3-�����̶��ų�ֵ��4-�����̲��ų�ֵ��5-���ܿ�ͨ��ֵ��6-�½��ʵ���7-����ʵ�
	sf.lPayID = m_LXRReq.lPayID;      //֧����¼ID
	sf.fPrice = m_LXRReq.fPrice;   //��Ʊ���

	_tcscpy(sf.d_company, m_LXRReq.szCorpName);
	_tcscpy(sf.d_address, m_LXRReq.szAddress);
	_tcscpy(sf.d_post_code, m_LXRReq.szPostCode);

	if (lItem >= 0)
	{
		POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
		POSITION pos2 = pos;
		ANS_Corp_LXRData * pData = m_LXR.GetNext(pos);
		if (pData)
		{
			_tcscpy(sf.d_contact, pData->szName);
			_tcscpy(sf.d_tel, pData->szTel);
			_tcscpy(sf.d_mobile, pData->szMobile);
		}
	}
	//_tcscpy(sf.Cargo_name, _T("��ͬ"));  //����ϵ�˷���ģ�Ĭ���Ǻ�ͬ
	sf.Cargo_count=1;      //��������

	DLG_Corp_LXR_SF dlg(this);
	m_pSFDlg = &dlg;
	dlg.SetParam(m_LXRReq.lYWYCount, m_LXRReq.lDefaultYWYID, m_pLXR_YWYData, sf,true);
	dlg.DoModal();
	m_pSFDlg = NULL;
/*
#ifdef SMSCENTER_ADC
	DLG_Corp_LXR_PrintHT dlg(this);
	dlg.m_strAgentName = _T("����������Ϣ�������޹�˾");
	dlg.m_strAgentNo   = _T("S542487");
	dlg.m_strCorpName  = m_LXRReq.szCorpName;
	dlg.m_strCorpDB    = m_LXRReq.szFDDB;
	dlg.m_strCorpYGS   = m_LXRReq.szCorpRS;
	dlg.m_strCorpJS    = m_LXRReq.szCorpSJS;
	dlg.m_strCorpHY    = m_LXRReq.szHY;
	dlg.m_strCorpAddr  = m_LXRReq.szAddress;
	dlg.m_strCorpPostCode = m_LXRReq.szPostCode;
	long lItem = GetCurrentSelected();
	if ( lItem >= 0 )
	{
		POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
		POSITION pos2 = pos;
		ANS_Corp_LXRData * pData = m_LXR.GetNext( pos );
		if (pData)
		{
			dlg.m_strCorpLXR = pData->szName;
			dlg.m_strCorpLXRJW=pData->szJob;
			dlg.m_strCorpLXDH=pData->szTel;
			if ( _tcslen(pData->szMobile)>0 )
			{
				if ( dlg.m_strCorpLXDH.GetLength()>0 )
					dlg.m_strCorpLXDH += _T(";");
				dlg.m_strCorpLXDH += CString(pData->szMobile);
			}
			dlg.m_strCorpFax=pData->szFax;
			dlg.m_lCorpZJType=pData->lZJType;
			dlg.m_strCorpCFD=pData->szCFD;
			dlg.m_strCorpZJHM=pData->szZJH;
			dlg.m_strFuncAdmin = pData->szName;
			dlg.m_strFuncTel = pData->szTel;

		}
	}
	dlg.m_strFuncAgent = _T("��������");
	dlg.m_strFuncCM = m_LXRReq.szCM;
	dlg.m_strFuncEmail= _T("adc@mobset.com");
	dlg.m_strFuncMobile=_T("13922432209");
	dlg.m_strFuncSmsCode=m_LXRReq.szADCSmsCode;
	dlg.m_bFuncType=true;
	dlg.m_bFuncCW  = true;
	dlg.m_bFuncAdd = true;

	SYSTEMTIME t;::GetLocalTime(&t);
	dlg.m_lTC = 0;
	dlg.m_lTCYear = t.wYear-2000;
	dlg.m_lTCMon  = t.wMonth-1;

	dlg.m_tDateSL = COleDateTime::GetCurrentTime();
	dlg.m_tDateGJ.SetStatus(COleDateTime::null);


	dlg.DoModal();	

#endif
*/

}

BOOL DLG_Corp_LXR::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
	if (pHead->lFuncType == SMSFUNC_CORP_SF_ADD ||
		pHead->lFuncType == SMSFUNC_CORP_SF_CANCEL ||
		pHead->lFuncType == SMSFUNC_CORP_SF_ROUTE)
	{
		//ANS_Corp_SF_Add     * pAdd = (ANS_Corp_SF_Add  *)pFrame;
		//ANS_Corp_SFData     * pData = (ANS_Corp_SFData *)(pFrame + sizeof(ANS_Corp_SF_Add));
		if (this->m_pSFDlg)
		{
			m_pSFDlg->ProcessSocket(pHead, pFrame);
		}
		return true;
	}
	return false;
}