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

/////////////////////////////////////////////////////////////////////////////
// PayOutInput

IMPLEMENT_DYNCREATE(PayOutInput, CFormView)

PayOutInput::PayOutInput()
	: CFormView(PayOutInput::IDD)
{
	//{{AFX_DATA_INIT(PayOutInput)
	m_bz = _T("");
	m_date = CTime::GetCurrentTime ().Format ("%Y-%m-%d");
	m_money = _T("");
	m_name = _T("");
	m_renyuan2 = g_user.name;
	m_renyuan1 = _T("");
	m_year = CTime::GetCurrentTime ().GetYear ();
	m_month = CTime::GetCurrentTime ().GetMonth ();
	m_day = CTime::GetCurrentTime ().GetDay ();
	m_bInit=0;
	//}}AFX_DATA_INIT
}

PayOutInput::~PayOutInput()
{
}

void PayOutInput::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(PayOutInput)
	DDX_Control(pDX, IDC_SPIN3, m_spinday);
	DDX_Control(pDX, IDC_SPIN2, m_spinmonth);
	DDX_Control(pDX, IDC_SPIN1, m_spinyear);
	DDX_Control(pDX, IDC_COMBOrenyuan1, m_comborenyuan);
	DDX_Control(pDX, IDC_EDITmoney, m_editctrl1);
	DDX_Control(pDX, IDC_LIST1, m_list2);
	DDX_Control(pDX, IDC_LIST2, m_List1);
	DDX_Control(pDX, IDC_STATIC1, m_static1);
	DDX_Text(pDX, IDC_EDITbz, m_bz);
	DDX_Text(pDX, IDC_EDITdate, m_date);
	DDX_Text(pDX, IDC_EDITmoney, m_money);
	DDX_Text(pDX, IDC_EDITname, m_name);
	DDX_Text(pDX, IDC_EDITrenyuan2, m_renyuan2);
	DDX_CBString(pDX, IDC_COMBOrenyuan1, m_renyuan1);
	DDX_Text(pDX, IDC_EDITday, m_day);
	DDV_MinMaxUInt(pDX, m_day, 1, 31);
	DDX_Text(pDX, IDC_EDITmonth, m_month);
	DDV_MinMaxUInt(pDX, m_month, 1, 31);
	DDX_Text(pDX, IDC_EDITyear, m_year);
	DDV_MinMaxUInt(pDX, m_year, 1900, 3000);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(PayOutInput, CFormView)
	//{{AFX_MSG_MAP(PayOutInput)
	ON_BN_CLICKED(IDC_BUTsave, OnBUTsave)
	ON_BN_CLICKED(IDC_BUTdel, OnBUTdel)
	ON_BN_CLICKED(IDC_BUTclose, OnBUTclose)
	ON_NOTIFY(NM_CLICK, IDC_LIST2, OnClickList2)
	ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeList1)
	ON_EN_CHANGE(IDC_EDITyear, OnChangeEDITyear)
	ON_EN_CHANGE(IDC_EDITmonth, OnChangeEDITmonth)
	ON_EN_CHANGE(IDC_EDITday, OnChangeEDITday)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// PayOutInput diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// PayOutInput message handlers

void PayOutInput::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("id,0;������Ŀ, 130;���, 60;����, 90;ȡ����,100;������,100;��ע,110" );
  	m_List1.LoadColumnInfo (105);
 

	g_sendhead.bsql=0;
	g_sendhead.code[0]=12;
	g_sendhead.tabcount=1;
	g_pMainWnd->ProcessChatMessageRequest2(12);if(g_bSendOK==0)return;
	DataToArray(&g_List1array);

	for(int i=0; i<g_userarray.GetSize (); i++)
		m_comborenyuan.AddString (g_userarray.ElementAt (i).ElementAt (1));


	m_comborenyuan.GetWindowRect (rc2);
	ScreenToClient(rc2);
	rc2.bottom +=200;
	m_comborenyuan.MoveWindow (rc2);


	for(int ii=0; ii<g_List1array.GetSize (); ii++)
	{
		m_list2.AddString (g_List1array.ElementAt (ii).ElementAt(0));
	}
 
	m_spinyear.SetRange (1900, 3000);
	m_spinmonth.SetRange (1, 12);
	m_spinday.SetRange (1, 31);


	m_bInit=1;
    GetData();
}

void PayOutInput::FillGrid()
{
	m_List1.DeleteAllItems2 ();
	int ii=0;
	m_List1.m_arLabels.SetSize( m_List1array.GetSize (), 1 );
	int count=0;
	for(ii=0; ii<m_List1.m_arLabels.GetSize (); ii++)
	{
 
		m_List1.m_arLabels.ElementAt (count++).Copy (m_List1array.ElementAt (ii));
 
	}
	m_List1.m_arLabels.SetSize(count, 1);
	ii=count;
	m_List1.m_LabelCount=ii;
	m_List1.SetItemCountEx (ii);
}

void PayOutInput::OnBUTclose() 
{
	// TODO: Add your control notification handler code here
	GetParent()->SendMessage(WM_CLOSE);
}
 
void PayOutInput::OnClickList2(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
//	ListSelChange();
	*pResult = 0;
}

void PayOutInput::ListSelChange()
{
	POSITION pos; 
	pos=m_List1.GetFirstSelectedItemPosition();	
	if(pos==NULL)
	{
		return;	
	}
	int iItem=m_List1.GetNextSelectedItem(pos);
	
	CString id=m_List1.GetItemText (iItem, 0);		
    for(int ii=0; ii<m_List1array.GetSize (); ii++)
	{
		if(m_List1array.ElementAt (ii).ElementAt (0)==id)
		{	
			CString bm;
			m_name = m_List1array.ElementAt (ii).ElementAt (1); 
			m_money = m_List1array.ElementAt (ii).ElementAt (2); 
			m_date = m_List1array.ElementAt (ii).ElementAt (3); 
			m_renyuan1 = m_List1array.ElementAt (ii).ElementAt (4); 
			m_renyuan2 = m_List1array.ElementAt (ii).ElementAt (5); 
			m_bz = m_List1array.ElementAt (ii).ElementAt (6);
			UpdateData(false);
			return;
		}
	}
}

void PayOutInput::OnBUTsave() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	m_name.TrimRight ();
	if(m_name.IsEmpty () || m_money.IsEmpty () )
	{
		AfxMessageBox("���ϲ�ȫ!", MB_ICONINFORMATION);
		return;
	}
 
	CString sql;
sql.Format ("insert into gudingfeiyong([name],[money],[dat],[renyuan1],[renyuan2],[bz])\
values('%s','%s','%s','%s','%s','%s')",m_name,m_money,m_date,m_renyuan1,m_renyuan2,m_bz);
sql+=GDFY_REF;
g_sendhead.bsql=1;
	    g_pMainWnd->ProcessChatMessageRequest2(sql);if(g_bSendOK==0)return;

	 	AfxMessageBox("����ɹ�!", MB_ICONINFORMATION);
    	GetData();
}

void PayOutInput::OnBUTdel() 
{
	// TODO: Add your control notification handler code here
 	POSITION pos; 
	pos=m_List1.GetFirstSelectedItemPosition();	
	if(pos==NULL)
	{
		return;	
	}
	if(AfxMessageBox("ȷ��ɾ����?", MB_YESNO|MB_ICONINFORMATION)!=IDYES)return;
	int iItem=m_List1.GetNextSelectedItem(pos);
	CString id=m_List1.GetItemText (iItem, 0);
	CString sql;
	sql.Format ("delete from gudingfeiyong where id=%d ", atoi(id));
	sql+=GDFY_REF;
	g_sendhead.bsql=1;
	    g_pMainWnd->ProcessChatMessageRequest2(sql);if(g_bSendOK==0)return;
		GetData(); 
}

void PayOutInput::GetData()
{
	if(m_bInit==0)return;
	UpdateData();
	CString sql,strdate;
	strdate.Format ("%04d-%02d-%02d", m_year, m_month, m_day);
	sql.Format ("dat='"+strdate+"'");
	g_sendhead.bsql=0;
	g_sendhead.code[0]=13;
	g_sendhead.tabcount=1;
	g_pMainWnd->ProcessChatMessageRequest2(sql);if(g_bSendOK==0)return;
	DataToArray(&m_List1array);
	FillGrid();
	m_date=strdate;
	UpdateData(false);
}

void PayOutInput::ClearCtrl()
{
	m_bz = _T("");
	m_date = CTime::GetCurrentTime ().Format ("%Y-%m-%d");
	m_money = _T("");
	m_name = _T("");
	m_renyuan1 = _T("");
	m_renyuan2 = g_user.name;
	UpdateData(false);
}

void PayOutInput::OnSelchangeList1() 
{
	// TODO: Add your control notification handler code here
	int pos=m_list2.GetCurSel ();
	if(pos==-1)return;
	CString str;
	m_list2.GetText (pos, str);
	m_name=str;

	m_bz = _T("");
	m_money = _T("");
	m_renyuan1 = _T("");
	UpdateData(false);
}

void PayOutInput::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.
	GetData();
	// TODO: Add your control notification handler code here
	
}

void PayOutInput::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.
	GetData();
	// TODO: Add your control notification handler code here
	
}

void PayOutInput::OnChangeEDITday() 
{
	// 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.
	GetData();
	// TODO: Add your control notification handler code here
	
}

BOOL PayOutInput::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	try
	{
	if(pMsg->message==WM_KEYDOWN)
	{
		switch (pMsg->wParam)
		{
		case 0x43: // copy
			if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
			{
				GetFocus()->SendMessage(WM_COPY);
				return TRUE;
			}
			break;
		case 0x56: //Ctrl + V:
			if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
			{
				GetFocus()->SendMessage(WM_PASTE);
				return TRUE;
			}
			break;
		case 0x58: // cut
			if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
			{
				GetFocus()->SendMessage(WM_CUT);
				return TRUE;
			}
			break;
		case 0x5A: //undo
		case 0x59: //redo
			if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
			{
				GetFocus()->SendMessage(WM_UNDO);
				return TRUE;
			}
			break;
		}
	}
	return CFormView::PreTranslateMessage(pMsg);
	}
	catch(...)
	{
	}
}