// MySalary.cpp : implementation file
//
#include "stdafx.h"
#include "LYFZIPManage.h"
#include "MySalary.h"
#include "MyMdi.H"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// MySalary

IMPLEMENT_DYNCREATE(MySalary, CFormView)

MySalary::MySalary()
	: CFormView(MySalary::IDD)
{
	//{{AFX_DATA_INIT(MySalary)
	m_name = _T("");
	m_rate1 = _T("");
	m_rate2 = _T("");
	m_bz = _T("");
	m_base = _T("");
	m_month = CTime::GetCurrentTime ().GetMonth ();
	m_salary = _T("");
	m_money1 = _T("");
	m_money2 = _T("");
	m_year = CTime::GetCurrentTime ().GetYear ();
	m_bInit=0;
	m_bAll=0;
	//}}AFX_DATA_INIT
}

MySalary::~MySalary()
{
}

void MySalary::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(MySalary)
	DDX_Control(pDX, IDC_LIST3, m_List3);
	DDX_Control(pDX, IDC_LIST1, m_ListBox1);
	DDX_Control(pDX, IDC_SPIN2, m_spinmonth);
	DDX_Control(pDX, IDC_SPIN1, m_spinyear);
	DDX_Control(pDX, IDC_LIST2, m_List1);
	DDX_Control(pDX, IDC_STATIC1, m_static1);
	DDX_Text(pDX, IDC_EDITname, m_name);
	DDX_Text(pDX, IDC_EDITrate1, m_rate1);
	DDX_Text(pDX, IDC_EDITrate2, m_rate2);
	DDX_Text(pDX, IDC_EDITbz, m_bz);
	DDX_Text(pDX, IDC_EDITbase, m_base);
	DDX_Text(pDX, IDC_EDITmonth, m_month);
	DDV_MinMaxUInt(pDX, m_month, 1, 12);
	DDX_Text(pDX, IDC_EDITsalary, m_salary);
	DDX_Text(pDX, IDC_EDITrate3, m_money1);
	DDX_Text(pDX, IDC_EDITrate4, m_money2);
	DDX_Text(pDX, IDC_EDITyear, m_year);
	DDV_MinMaxUInt(pDX, m_year, 1900, 3000);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(MySalary, CFormView)
	//{{AFX_MSG_MAP(MySalary)
	ON_BN_CLICKED(IDC_BUTclose, OnBUTclose)
	ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeList1)
	ON_EN_CHANGE(IDC_EDITyear, OnChangeEDITyear)
	ON_EN_CHANGE(IDC_EDITmonth, OnChangeEDITmonth)
	ON_BN_CLICKED(IDC_BUTshowall, OnBUTshowall)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// MySalary diagnostics

#ifdef _DEBUG
void MySalary::AssertValid() const
{
	CFormView::AssertValid();
}

void MySalary::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// MySalary message handlers

void MySalary::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	// TODO: Add your specialized code here and/or call the base class
	CMyMdi Mdi;
	Mdi.SetSubView((CWnd*)GetParent(), (CWnd*)this);
	
	// Here we create the outbar control using the splitter as its parent
	// and setting its id to the first pane.
	CRect rc2;
	GetWindowRect(rc2);
	::MoveWindow(m_hWnd,g_rc.left,g_rc.top,g_rc.Width(),g_rc.Height(),TRUE);

 	EnumChildWindows(m_hWnd,(WNDENUMPROC)EnumChildProc,0);
	m_static1.SetFont (&g_titlefont);
	m_List1.SetHeadings("�տ���,100;�տ�����,100;�������,100;�б�����,100;Ů������,100" );
	m_List1.LoadColumnInfo (23);

	m_List3.SetHeadings("����,100;�ܹ���,100;��������,100;ǰ��ҵ��,100;����ҵ��,100;ǰ�����,100;�������,100;����,100" );
	m_List3.LoadColumnInfo (124);

	m_spinyear.SetRange (1900, 3000);
	m_spinmonth.SetRange (1, 12);

	BOOL bShowAll=0;
	if(g_ncount==100)bShowAll=1;
	g_ncount=0;
    GetData();

	
	if(bShowAll==0)
		GetDlgItem(IDC_LIST3)->ShowWindow(0);
	if(IsHasRights2new(26)==0)
	{
		m_ListBox1.EnableWindow (0);
		GetDlgItem(IDC_BUTshowall)->EnableWindow (0);
	}
	else if(bShowAll)
	{
		g_ncount=0;
		OnBUTshowall(); 
	}
}

void MySalary::FillGrid(CArray<CStringArray, CStringArray>*array)
{
	m_List1.DeleteAllItems2 ();
	int ii=0;
	m_List1.m_arLabels.SetSize( array->GetSize (), 1 );
	int count=0;
	for(ii=0; ii<m_List1.m_arLabels.GetSize (); ii++)
	{
		m_List1.m_arLabels.ElementAt (count++).Copy (array->ElementAt (ii));
	}
	m_List1.m_arLabels.SetSize(count, 1);
	ii=count;
	m_List1.m_LabelCount=ii;
	m_List1.SetItemCountEx (ii);
}

void MySalary::OnBUTclose() 
{
	// TODO: Add your control notification handler code here
	GetParent()->SendMessage(WM_CLOSE);
}

void MySalary::GetData()
{
	m_bInit=1;
	g_sendhead.bsql=0;
	g_sendhead.code[0]=34;
	g_sendhead.tabcount=1;
	int g_nYearposTemp=g_nYearpos;
	g_nYearpos=-1;
	g_pMainWnd->ProcessChatMessageRequest2(13);
	g_nYearpos=g_nYearposTemp;
	if(g_bSendOK==0)return;
	DataToArray(&m_List1array);

	m_ListBox1.ResetContent ();
	for(int i=0; i<m_List1array.GetSize (); i++)
	{
		m_ListBox1.AddString (m_List1array.ElementAt (i).ElementAt (0));
	}

	CString str;
 	for( i=0; i<m_ListBox1.GetCount (); i++)
	{
		m_ListBox1.GetText (i, str);
		if(str==g_user.name)
		{
			m_ListBox1.SetCurSel (i);
			OnSelchangeList1();
			break;
		}
	}
}

void MySalary::OnChangeEDITyear() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CFormView::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	OnSelchangeList1();
	// TODO: Add your control notification handler code here
	
}

void MySalary::OnChangeEDITmonth() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CFormView::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	OnSelchangeList1();
	// TODO: Add your control notification handler code here
	
}
void IsWaiter(CString id, CString name, CArray<CStringArray, CStringArray>*waiterarray, BOOL &bWait1, BOOL &bWait2)
{
	for(int i=0; i<waiterarray->GetSize (); i++)
	{
		if(id==waiterarray->ElementAt (i).ElementAt (0))
		{
			if(name==waiterarray->ElementAt (i).ElementAt (1))
				bWait1=1;
			if(name==waiterarray->ElementAt (i).ElementAt (2))
				bWait2=1;
			return;
		}
	}
	return;
}

extern int GetYearPos(int year);
void MySalary::OnSelchangeList1() 
{
	// TODO: Add your control notification handler code here
	if(m_bInit==0)return;
	if(m_bAll)
	{
		m_List3array.RemoveAll ();
		FillGrid2();
		return;
	}
	int pos=m_ListBox1.GetCurSel ();
	if(pos==-1)return;
	UpdateData();
	CString name;
	m_ListBox1.GetText (pos, name);
	CString date1,date2;
	date1.Format ("%d-%02d-01", m_year, m_month);
	date2.Format ("%d-%02d-31", m_year, m_month);


	int i;
	int g_nYearposTemp=g_nYearpos;
	BOOL bLastYear=0;
	BOOL bThisYear=0;
	BOOL bOldYear=0;
	if(m_year==atoi(g_date.Left (4)) && g_hisyeararray.GetSize () )
		bThisYear=1;
	else if(m_year==atoi(g_date.Left (4))-1 && g_hisyeararray.GetSize ())
		bLastYear=1;
	else if(atoi(g_date.Left (4))-m_year>1 && g_hisyeararray.GetSize ()>=(atoi(g_date.Left (4))-m_year))
	{
		bOldYear=1;
	}
	g_nYearpos=GetYearPos(m_year);

///////////////
	CString filter="name='"+name+"';date>='"+date1+"' and date<='"+date2+"';waiter1='"+name+"' or waiter2='"+name+"';dat>='"+date1+"' and dat<='"+date2+"' and renyuan3='"+name+"';time2>='"+date1+"' and time2<='"+date2+"' and status<>'�'";
 
//;time2>='"+date1+"' and time2<='"+date2+"' and status<>'�'
 
	g_sendhead.code[0]=34;
	g_sendhead.code[1]=59;
	g_sendhead.code[2]=60;
	g_sendhead.code[3]=14;
	g_sendhead.code[4]=61;
	g_sendhead.tabcount=5;
	g_sendhead.bsql=0;
	g_pMainWnd->ProcessChatMessageRequest2(filter);
	if(g_bSendOK==0)
	{
		g_nYearpos=g_nYearposTemp;
		return;
	}
	CArray<CStringArray, CStringArray>userarray;
	CArray<CStringArray, CStringArray>bukuanarray;
	CArray<CStringArray, CStringArray>waiterarray;
	CArray<CStringArray, CStringArray>singleincomearray;
	CArray<CStringArray, CStringArray>bukuanarray2;
 	DataToArray(&userarray,&bukuanarray,&waiterarray,&singleincomearray,&bukuanarray2);
///////////////////
	if(bLastYear)//�����ȥ��, ��ӽ���IJ���
	{
	g_nYearpos=-1;//����
	filter="name='"+name+"';date>='"+date1+"' and date<='"+date2+"';waiter1='"+name+"' or waiter2='"+name+"';time2>='"+date1+"' and time2<='"+date2+"' and status<>'�'";
	g_sendhead.code[0]=34;
	g_sendhead.code[1]=59;
	g_sendhead.code[2]=60;
	g_sendhead.code[3]=61;
	g_sendhead.tabcount=4;
	g_sendhead.bsql=0;
	g_pMainWnd->ProcessChatMessageRequest2(filter);
	if(g_bSendOK==0)
	{
		g_nYearpos=g_nYearposTemp;
		return;
	}
	CArray<CStringArray, CStringArray>ThisYearbukuanarray;
	CArray<CStringArray, CStringArray>ThisYearwaiterarray;
	CArray<CStringArray, CStringArray>ThisYearbukuanarray2;
 	DataToArray(&userarray,&ThisYearbukuanarray,&ThisYearwaiterarray,&ThisYearbukuanarray2);

	int oldsize=bukuanarray.GetSize ();
	bukuanarray.SetSize(oldsize+ThisYearbukuanarray.GetSize ());
	for(i=oldsize; i<oldsize+ThisYearbukuanarray.GetSize (); i++)
	{
		bukuanarray.ElementAt (i).Copy(ThisYearbukuanarray.ElementAt (i-oldsize));
	}
	oldsize=bukuanarray2.GetSize ();
	bukuanarray2.SetSize(oldsize+ThisYearbukuanarray2.GetSize ());
	for(i=oldsize; i<oldsize+ThisYearbukuanarray2.GetSize (); i++)
	{
		bukuanarray2.ElementAt (i).Copy(ThisYearbukuanarray2.ElementAt (i-oldsize));
	}
	oldsize=waiterarray.GetSize ();
	waiterarray.SetSize(oldsize+ThisYearwaiterarray.GetSize ());
	for(i=oldsize; i<oldsize+ThisYearwaiterarray.GetSize (); i++)
	{
		waiterarray.ElementAt (i).Copy(ThisYearwaiterarray.ElementAt (i-oldsize));
	}
	}
 	else if(bThisYear)//����ǽ���, ���ȥ��IJ���
	{
	g_nYearpos=0;//ȥ��
	filter="date>='"+date1+"' and date<='"+date2+"';waiter1='"+name+"' or waiter2='"+name+"';time2>='"+date1+"' and time2<='"+date2+"' and status<>'�'";
	g_sendhead.code[0]=59;
	g_sendhead.code[1]=60;
	g_sendhead.code[2]=61;
	g_sendhead.tabcount=3;
	g_sendhead.bsql=0;
	g_pMainWnd->ProcessChatMessageRequest2(filter);
	if(g_bSendOK==0)
	{
		g_nYearpos=g_nYearposTemp;
		return;
	}
	CArray<CStringArray, CStringArray>LastYearbukuanarray;
	CArray<CStringArray, CStringArray>LastYearwaiterarray;
	CArray<CStringArray, CStringArray>LastYearbukuanarray2;
 	DataToArray(&LastYearbukuanarray,&LastYearwaiterarray,&LastYearbukuanarray2);
	int oldsize=bukuanarray.GetSize ();
	bukuanarray.SetSize(oldsize+LastYearbukuanarray.GetSize ());
	for(i=oldsize; i<oldsize+LastYearbukuanarray.GetSize (); i++)
	{
		bukuanarray.ElementAt (i).Copy(LastYearbukuanarray.ElementAt (i-oldsize));
	}

	oldsize=bukuanarray2.GetSize ();
	bukuanarray2.SetSize(oldsize+LastYearbukuanarray2.GetSize ());
	for(i=oldsize; i<oldsize+LastYearbukuanarray2.GetSize (); i++)
	{
		bukuanarray2.ElementAt (i).Copy(LastYearbukuanarray2.ElementAt (i-oldsize));
	}

	oldsize=waiterarray.GetSize ();
	waiterarray.SetSize(oldsize+LastYearwaiterarray.GetSize ());
	for(i=oldsize; i<oldsize+LastYearwaiterarray.GetSize (); i++)
	{
		waiterarray.ElementAt (i).Copy(LastYearwaiterarray.ElementAt (i-oldsize));
	}
	}
	else if(bLastYear)//������������, �������Ա����Ϣ
	{
	g_nYearpos=-1;//����
	filter="name='"+name+"'";
	g_sendhead.code[0]=34;
	g_sendhead.tabcount=1;
	g_sendhead.bsql=0;
	g_pMainWnd->ProcessChatMessageRequest2(filter);
	if(g_bSendOK==0)
	{
		g_nYearpos=g_nYearposTemp;
		return;
	}
 	DataToArray(&userarray);
	}
	g_nYearpos=g_nYearposTemp;

	CArray<CStringArray, CStringArray>array;
	array.SetSize(bukuanarray.GetSize ()*4+singleincomearray.GetSize ()+bukuanarray2.GetSize ()*4);
	CString temp;
	float money1=0;
	float money2=0;
	int arraypos=0;
 	for(int ii=0; ii<bukuanarray.GetSize (); ii++)
	{
		array.ElementAt (arraypos).RemoveAll ();
		if(bukuanarray.ElementAt (ii).ElementAt (2)=="3" || bukuanarray.ElementAt (ii).ElementAt (2)=="4")
		{
	/*	BOOL bWait1=0;
		BOOL bWait2=0;
		IsWaiter(bukuanarray.ElementAt (ii).ElementAt (5), name, &waiterarray, bWait1, bWait2);
        if(bWait1)//������Ӱʦ
		{
		temp.Format ("%f", atof(bukuanarray.ElementAt (ii).ElementAt (0)) );
		ConvertToPrice(temp);
		money1+=atof(temp);
		array.ElementAt (arraypos).Add(temp) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (1)) ;
		array.ElementAt (arraypos).Add("ǰ���տ�") ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (3)) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (4)) ;
		arraypos++;
		}
        if(bWait2)//���ǻ�ױʦ
		{
		temp.Format ("%f", atof(bukuanarray.ElementAt (ii).ElementAt (0)) );
		ConvertToPrice(temp);
		money1+=atof(temp);
		array.ElementAt (arraypos).Add(temp) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (1)) ;
		array.ElementAt (arraypos).Add("ǰ���տ�") ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (3)) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (4)) ;
		arraypos++;
		}*/

		if(bukuanarray.ElementAt (ii).ElementAt (6)!=name)continue;
		temp.Format ("%f", atof(bukuanarray.ElementAt (ii).ElementAt (0)) );
		ConvertToPrice(temp);
		money1+=atof(temp);
		array.ElementAt (arraypos).Add(temp) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (1)) ;
		array.ElementAt (arraypos).Add("ǰ���տ�") ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (3)) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (4)) ;
		}
		else if(bukuanarray.ElementAt (ii).ElementAt (2)=="2")//ѡƬ����, �����Ӱʦ�ͻ�ױʦ
		{
		BOOL bWait1=0;
		BOOL bWait2=0;
		IsWaiter(bukuanarray.ElementAt (ii).ElementAt (5), name, &waiterarray, bWait1, bWait2);
        if(bWait1)//������Ӱʦ
		{
		temp.Format ("%f", atof(bukuanarray.ElementAt (ii).ElementAt (0)) );
		ConvertToPrice(temp);
		money2+=atof(temp);
		array.ElementAt (arraypos).Add(temp) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (1)) ;
		array.ElementAt (arraypos).Add("�����տ�") ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (3)) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (4)) ;
		arraypos++;
		}
        if(bWait2)//���ǻ�ױʦ
		{
		temp.Format ("%f", atof(bukuanarray.ElementAt (ii).ElementAt (0)) );
		ConvertToPrice(temp);
		money2+=atof(temp);
		array.ElementAt (arraypos).Add(temp) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (1)) ;
		array.ElementAt (arraypos).Add("�����տ�") ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (3)) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (4)) ;
		arraypos++;
		}

		if(bukuanarray.ElementAt (ii).ElementAt (6)!=name)continue;
 
		temp.Format ("%f", atof(bukuanarray.ElementAt (ii).ElementAt (0)) );
		ConvertToPrice(temp);
		money2+=atof(temp);
		array.ElementAt (arraypos).Add(temp) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (1)) ;
		array.ElementAt (arraypos).Add("�����տ�") ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (3)) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (4)) ;
 


		}
		else
		{
		if(bukuanarray.ElementAt (ii).ElementAt (6)!=name)continue;
		temp.Format ("%f", atof(bukuanarray.ElementAt (ii).ElementAt (0)) );
		ConvertToPrice(temp);
		money2+=atof(temp);
		array.ElementAt (arraypos).Add(temp) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (1)) ;
		array.ElementAt (arraypos).Add("�����տ�") ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (3)) ;
		array.ElementAt (arraypos).Add(bukuanarray.ElementAt (ii).ElementAt (4)) ;
		}

		arraypos++;	
	}

 	for( ii=0; ii<bukuanarray2.GetSize (); ii++)
	{
		array.ElementAt (arraypos).RemoveAll ();
		if(bukuanarray2.ElementAt (ii).ElementAt (2)=="3" || bukuanarray2.ElementAt (ii).ElementAt (2)=="4")
		{
		BOOL bWait1=0;
		BOOL bWait2=0;
		IsWaiter(bukuanarray2.ElementAt (ii).ElementAt (5), name, &waiterarray, bWait1, bWait2);
        if(bWait1)//������Ӱʦ
		{
		temp.Format ("%f", atof(bukuanarray2.ElementAt (ii).ElementAt (0)) );
		ConvertToPrice(temp);
		money1+=atof(temp);
		array.ElementAt (arraypos).Add(temp) ;
		array.ElementAt (arraypos).Add(bukuanarray2.ElementAt (ii).ElementAt (1)) ;
		array.ElementAt (arraypos).Add("ǰ���տ�") ;
		array.ElementAt (arraypos).Add(bukuanarray2.ElementAt (ii).ElementAt (3)) ;
		array.ElementAt (arraypos).Add(bukuanarray2.ElementAt (ii).ElementAt (4)) ;
		arraypos++;
		}
        if(bWait2)//���ǻ�ױʦ
		{
		temp.Format ("%f", atof(bukuanarray2.ElementAt (ii).ElementAt (0)) );
		ConvertToPrice(temp);
		money1+=atof(temp);
		array.ElementAt (arraypos).Add(temp) ;
		array.ElementAt (arraypos).Add(bukuanarray2.ElementAt (ii).ElementAt (1)) ;
		array.ElementAt (arraypos).Add("ǰ���տ�") ;
		array.ElementAt (arraypos).Add(bukuanarray2.ElementAt (ii).ElementAt (3)) ;
		array.ElementAt (arraypos).Add(bukuanarray2.ElementAt (ii).ElementAt (4)) ;
		arraypos++;
		}
		}
	}
	for( ii=0; ii<singleincomearray.GetSize (); ii++)
	{
		array.ElementAt (arraypos).RemoveAll ();
		temp.Format ("%f", atof(singleincomearray.ElementAt (ii).ElementAt (2)) );
		ConvertToPrice(temp);
		money2+=atof(temp);
		array.ElementAt (arraypos).Add(temp) ;
		array.ElementAt (arraypos).Add(singleincomearray.ElementAt (ii).ElementAt (3)) ;
		array.ElementAt (arraypos).Add("�����տ�") ;
		array.ElementAt (arraypos).Add(singleincomearray.ElementAt (ii).ElementAt (4)) ;
		array.ElementAt (arraypos).Add(singleincomearray.ElementAt (ii).ElementAt (1)) ;
		arraypos++;	
	}
	array.SetSize(arraypos);

	FillGrid(&array);
	if(userarray.GetSize ())
	{
		m_name = userarray.ElementAt (0).ElementAt (0);	
		m_base = userarray.ElementAt (0).ElementAt (1);
		m_rate1 = userarray.ElementAt (0).ElementAt (2)+"%";
		m_rate2 = userarray.ElementAt (0).ElementAt (3)+"%";	
		m_bz = userarray.ElementAt (0).ElementAt (4);

		m_money1.Format ("%f", money1);
		ConvertToPrice(m_money1);
		m_money2.Format ("%f", money2);
		ConvertToPrice(m_money2);
		m_salary.Format ("%f", atof(m_base)+money1*atof(m_rate1)/100.0+money2*atof(m_rate2)/100.0);
		ConvertToPrice(m_salary);
	}
	else
	{
		m_name = _T("");
		m_base = _T("");
		m_rate1 = _T("");
		m_rate2 = _T("");	
		m_bz = _T("");
		m_salary = _T("");
		m_money1 = _T("");
		m_money2 = _T("");
	}
	UpdateData(false);
}

void MySalary::OnBUTshowall() 
{
	// TODO: Add your control notification handler code here
	m_bAll=!m_bAll;
	if(m_bAll)
	{
		GetDlgItem(IDC_BUTshowall)->SetWindowText("�鿴����");

	}
	else
	{
		GetDlgItem(IDC_BUTshowall)->SetWindowText("�鿴ȫ��");
	}
	GetDlgItem(IDC_STATIC2)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_STATIC3)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_STATIC4)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_STATIC5)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_STATIC6)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_STATIC7)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_STATIC8)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_STATIC9)->ShowWindow(!m_bAll);
//	GetDlgItem(IDC_STATIC10)->ShowWindow(!m_bAll);
//	GetDlgItem(IDC_STATIC11)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_EDITname)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_EDITbz)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_EDITbase)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_EDITrate1)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_EDITrate2)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_EDITsalary)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_EDITrate3)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_EDITrate4)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_LIST1)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_LIST2)->ShowWindow(!m_bAll);
	GetDlgItem(IDC_LIST3)->ShowWindow(m_bAll);
	if(m_bAll)
		FillGrid2();
	else
	{
		POSITION pos; 
		pos=m_List3.GetFirstSelectedItemPosition();	
		if(pos)
		{
			int iItem=m_List3.GetNextSelectedItem(pos);	
			CString name=m_List3.GetItemText (iItem, 0);
			CString temp;
			for(int i=0; i<m_ListBox1.GetCount (); i++)
			{
				m_ListBox1.GetText (i, temp);
				if(temp==name)
				{
					m_ListBox1.SetCurSel (i);
					OnSelchangeList1();
					break;
				}
			}
		}
	}
}

void MySalary::FillGrid2()
{
	if(m_List3array.GetSize ()==0)GetAllData();
	m_List3.DeleteAllItems2 ();
	int ii=0;
	m_List3.m_arLabels.SetSize( m_List3array.GetSize (), 1 );
	int count=0;
	for(ii=0; ii<m_List3.m_arLabels.GetSize (); ii++)
	{
		m_List3.m_arLabels.ElementAt (count++).Copy (m_List3array.ElementAt (ii));
	}
	m_List3.m_arLabels.SetSize(count, 1);
	ii=count;
	m_List3.m_LabelCount=ii;
	m_List3.SetItemCountEx (ii);
}

void MySalary::GetAllData()
{
	if(m_bInit==0)return;
	UpdateData();
  
	CString date1,date2;
	date1.Format ("%d-%02d-01", m_year, m_month);
	date2.Format ("%d-%02d-31", m_year, m_month);
 
	int i;
	int g_nYearposTemp=g_nYearpos;
	BOOL bLastYear=0;
	BOOL bThisYear=0;
	BOOL bOldYear=0;
	if(m_year==atoi(g_date.Left (4)) && g_hisyeararray.GetSize () )
		bThisYear=1;
	else if(m_year==atoi(g_date.Left (4))-1 && g_hisyeararray.GetSize ())
		bLastYear=1;
	else if(atoi(g_date.Left (4))-m_year>1 && g_hisyeararray.GetSize ()>=(atoi(g_date.Left (4))-m_year))
	{
		bOldYear=1;
	}
	g_nYearpos=GetYearPos(m_year);


	CString filter="date>='"+date1+"' and date<='"+date2+"';;dat>='"+date1+"' and dat<='"+date2+"';time2>='"+date1+"' and time2<='"+date2+"' and status<>'�'";

//;time2>='"+date1+"' and time2<='"+date2+"' and status<>'�'

	g_sendhead.code[0]=59;
	g_sendhead.code[1]=60;
	g_sendhead.code[2]=14;
	g_sendhead.code[3]=61;
	g_sendhead.tabcount=4;
	g_sendhead.bsql=0;
	g_pMainWnd->ProcessChatMessageRequest2(filter);if(g_bSendOK==0)return;
 
	CArray<CStringArray, CStringArray>bukuanarray;
	CArray<CStringArray, CStringArray>waiterarray;
	CArray<CStringArray, CStringArray>singleincomearray;
	CArray<CStringArray, CStringArray>bukuanarray2;
 	DataToArray(&bukuanarray,&waiterarray,&singleincomearray,&bukuanarray2);
 ///////////////////
	if(bLastYear)//�����ȥ��, ��ӽ���IJ���
	{
	g_nYearpos=-1;//����
	
	filter="date>='"+date1+"' and date<='"+date2+"';;time2>='"+date1+"' and time2<='"+date2+"' and status<>'�'";
	g_sendhead.code[0]=59;
	g_sendhead.code[1]=60;
	g_sendhead.code[2]=61;
	g_sendhead.tabcount=3;
	g_sendhead.bsql=0;
	g_pMainWnd->ProcessChatMessageRequest2(filter);
	if(g_bSendOK==0)
	{
		g_nYearpos=g_nYearposTemp;
		return;
	}
	CArray<CStringArray, CStringArray>ThisYearbukuanarray;
	CArray<CStringArray, CStringArray>ThisYearwaiterarray;
	CArray<CStringArray, CStringArray>ThisYearbukuanarray2;
 	DataToArray(&ThisYearbukuanarray,&ThisYearwaiterarray,&ThisYearbukuanarray2);

	int oldsize=bukuanarray.GetSize ();
	bukuanarray.SetSize(oldsize+ThisYearbukuanarray.GetSize ());
	for(i=oldsize; i<oldsize+ThisYearbukuanarray.GetSize (); i++)
	{
		bukuanarray.ElementAt (i).Copy(ThisYearbukuanarray.ElementAt (i-oldsize));
	}
	oldsize=bukuanarray2.GetSize ();
	bukuanarray2.SetSize(oldsize+ThisYearbukuanarray2.GetSize ());
	for(i=oldsize; i<oldsize+ThisYearbukuanarray2.GetSize (); i++)
	{
		bukuanarray2.ElementAt (i).Copy(ThisYearbukuanarray2.ElementAt (i-oldsize));
	}
	oldsize=waiterarray.GetSize ();
	waiterarray.SetSize(oldsize+ThisYearwaiterarray.GetSize ());
	for(i=oldsize; i<oldsize+ThisYearwaiterarray.GetSize (); i++)
	{
		waiterarray.ElementAt (i).Copy(ThisYearwaiterarray.ElementAt (i-oldsize));
	}
	}
 	else if(bThisYear)//����ǽ���, ���ȥ��IJ���
	{
	g_nYearpos=0;//ȥ��
	filter="date>='"+date1+"' and date<='"+date2+"';;time2>='"+date1+"' and time2<='"+date2+"' and status<>'�'";
	g_sendhead.code[0]=59;
	g_sendhead.code[1]=60;
	g_sendhead.code[2]=61;
	g_sendhead.tabcount=3;
	g_sendhead.bsql=0;
	g_pMainWnd->ProcessChatMessageRequest2(filter);
	if(g_bSendOK==0)
	{
		g_nYearpos=g_nYearposTemp;
		return;
	}
	CArray<CStringArray, CStringArray>LastYearbukuanarray;
	CArray<CStringArray, CStringArray>LastYearwaiterarray;
	CArray<CStringArray, CStringArray>LastYearbukuanarray2;
 	DataToArray(&LastYearbukuanarray,&LastYearwaiterarray,&LastYearbukuanarray2);
	int oldsize=bukuanarray.GetSize ();
	bukuanarray.SetSize(oldsize+LastYearbukuanarray.GetSize ());
	for(i=oldsize; i<oldsize+LastYearbukuanarray.GetSize (); i++)
	{
		bukuanarray.ElementAt (i).Copy(LastYearbukuanarray.ElementAt (i-oldsize));
	}

	oldsize=bukuanarray2.GetSize ();
	bukuanarray2.SetSize(oldsize+LastYearbukuanarray2.GetSize ());
	for(i=oldsize; i<oldsize+LastYearbukuanarray2.GetSize (); i++)
	{
		bukuanarray2.ElementAt (i).Copy(LastYearbukuanarray2.ElementAt (i-oldsize));
	}

	oldsize=waiterarray.GetSize ();
	waiterarray.SetSize(oldsize+LastYearwaiterarray.GetSize ());
	for(i=oldsize; i<oldsize+LastYearwaiterarray.GetSize (); i++)
	{
		waiterarray.ElementAt (i).Copy(LastYearwaiterarray.ElementAt (i-oldsize));
	}
	}
    g_nYearpos=g_nYearposTemp;


	int ii=0;

	CString m_base,m_rate1,m_rate2,m_money1,m_money2;
	double sum1=0;
	double sum2=0;
	double sum3=0;
	double sum4=0;	CString temp;
	m_List3array.SetSize(m_List1array.GetSize ()+1);
	for(int n=0; n<m_List1array.GetSize (); n++)
	{
		m_List3array.ElementAt (n).RemoveAll ();
		m_List3array.ElementAt (n).Add("");
		m_List3array.ElementAt (n).Add("");
		m_List3array.ElementAt (n).Add("");
		m_List3array.ElementAt (n).Add("");
		m_List3array.ElementAt (n).Add("");
		m_List3array.ElementAt (n).Add("");
		m_List3array.ElementAt (n).Add("");
		m_List3array.ElementAt (n).Add("");

		m_List3array.ElementAt (n).SetAt (0, m_List1array.ElementAt (n).ElementAt (0));
 	CString name=m_List1array.ElementAt (n).ElementAt (0);
	float money1=0;
	float money2=0;
	int arraypos=0;
 	for( ii=0; ii<bukuanarray.GetSize (); ii++)
	{
		if(bukuanarray.ElementAt (ii).ElementAt (2)=="3" || bukuanarray.ElementAt (ii).ElementAt (2)=="4")
		{
	 /*	BOOL bWait1=0;
		BOOL bWait2=0;
		IsWaiter(bukuanarray.ElementAt (ii).ElementAt (5), name, &waiterarray, bWait1, bWait2);
        if(bWait1)//������Ӱʦ
		{
			money1+=atof(bukuanarray.ElementAt (ii).ElementAt (0));
		}
        if(bWait2)//���ǻ�ױʦ
		{
			money1+=atof(bukuanarray.ElementAt (ii).ElementAt (0));
		}*/
		if(bukuanarray.ElementAt (ii).ElementAt (6)!=name)continue;
		money1+=atof(bukuanarray.ElementAt (ii).ElementAt (0));
		}
		else if(bukuanarray.ElementAt (ii).ElementAt (2)=="2")//ѡƬ����, �����Ӱʦ�ͻ�ױʦ
		{
		BOOL bWait1=0;
		BOOL bWait2=0;
		IsWaiter(bukuanarray.ElementAt (ii).ElementAt (5), name, &waiterarray, bWait1, bWait2);
        if(bWait1)//������Ӱʦ
		{
			money2+=atof(bukuanarray.ElementAt (ii).ElementAt (0));
		}
        if(bWait2)//���ǻ�ױʦ
		{
			money2+=atof(bukuanarray.ElementAt (ii).ElementAt (0));
		}
		if(bukuanarray.ElementAt (ii).ElementAt (6)!=name)continue;
		money2+=atof(bukuanarray.ElementAt (ii).ElementAt (0));
		}
		else
		{
		if(bukuanarray.ElementAt (ii).ElementAt (6)!=name)continue;
		money2+=atof(bukuanarray.ElementAt (ii).ElementAt (0));
		}
	}
 	for( ii=0; ii<bukuanarray2.GetSize (); ii++)
	{
		if(bukuanarray2.ElementAt (ii).ElementAt (2)=="3" || bukuanarray2.ElementAt (ii).ElementAt (2)=="4")
		{
	 	BOOL bWait1=0;
		BOOL bWait2=0;
		IsWaiter(bukuanarray2.ElementAt (ii).ElementAt (5), name, &waiterarray, bWait1, bWait2);
        if(bWait1)//������Ӱʦ
		{
			money1+=atof(bukuanarray2.ElementAt (ii).ElementAt (0));
		}
        if(bWait2)//���ǻ�ױʦ
		{
			money1+=atof(bukuanarray2.ElementAt (ii).ElementAt (0));
		}
		}
	}
	for( ii=0; ii<singleincomearray.GetSize (); ii++)
	{
		if(singleincomearray.ElementAt (ii).ElementAt (6)!=name)continue;
		money2+=atof(singleincomearray.ElementAt (ii).ElementAt (2));
	}
	m_base = m_List1array.ElementAt (n).ElementAt (1);
	m_rate1 = m_List1array.ElementAt (n).ElementAt (2);
	m_rate2 = m_List1array.ElementAt (n).ElementAt (3);
	m_money1.Format ("%f", money1);
	ConvertToPrice(m_money1);
	m_money2.Format ("%f", money2);
	ConvertToPrice(m_money2);
	temp.Format ("%f", atof(m_base)+money1*atof(m_rate1)/100.0+money2*atof(m_rate2)/100.0 );
	ConvertToPrice(temp);
	m_List3array.ElementAt (n).SetAt (1, temp);
	m_List3array.ElementAt (n).SetAt (2, m_base);
	m_List3array.ElementAt (n).SetAt (3, m_money1);
	m_List3array.ElementAt (n).SetAt (4, m_money2);
	sum1+=atof(temp);
	sum2+=atof(m_base);
	sum3+=money1;
	sum4+=money2;
	m_List3array.ElementAt (n).SetAt (5, m_rate1);
	m_List3array.ElementAt (n).SetAt (6, m_rate2);
	m_List3array.ElementAt (n).SetAt (7, m_List1array.ElementAt (n).ElementAt (5));
	}
	temp.Format ("%f", sum1);
	ConvertToPrice(temp);
	m_List3array.ElementAt (n).Add ("ͳ��:");
	m_List3array.ElementAt (n).Add (temp);
	temp.Format ("%f", sum2);
	ConvertToPrice(temp);
	m_List3array.ElementAt (n).Add (temp);
	temp.Format ("%f", sum3);
	ConvertToPrice(temp);
	m_List3array.ElementAt (n).Add (temp);
	temp.Format ("%f", sum4);
	ConvertToPrice(temp);
	m_List3array.ElementAt (n).Add (temp);
	m_List3array.ElementAt (n).Add ("");
	m_List3array.ElementAt (n).Add ("");
	m_List3array.ElementAt (n).Add ("");
}