// IncomeInput2.cpp : implementation file // #include "stdafx.h" #include "ylgl.h" #include "IncomeInput2.h" #include "MyMdi.H" #include "SPLBDlg.h" #include "SelPayType.h" #include "AddIncome.h" #include "Singleincomemoney.h" #include "SearchFilter4.h" #include "SendMsgDlg.h" #include "Other2SaleChart.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // IncomeInput2 IDC_COMBO4 IMPLEMENT_DYNCREATE(IncomeInput2, MyFormView) IncomeInput2::IncomeInput2() : MyFormView(IncomeInput2::IDD) { //{{AFX_DATA_INIT(IncomeInput2) m_bz = _T(""); m_date = g_date; m_money = _T(""); m_name = _T(""); m_renyuan1 = _T(""); m_renyuan2 = g_user.name; m_year = atoi(g_date.Mid (0,4)); m_month = atoi(g_date.Mid (5,2)); m_day = atoi(g_date.Mid (8,2)); m_filter = _T(""); m_bInit=0; //}}AFX_DATA_INIT } IncomeInput2::~IncomeInput2() { } void IncomeInput2::DoDataExchange(CDataExchange* pDX) { MyFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(IncomeInput2) DDX_Control(pDX, IDC_BUTTON5, m_btn); DDX_Control(pDX, IDC_COMBO7, m_combo1); DDX_Control(pDX, IDC_COMBO4, m_combobz); 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_COMBO2, m_comboren); DDX_Control(pDX, IDC_EDITmoney, m_editctrl1); DDX_Control(pDX, IDC_LIST2, m_List1); DDX_Control(pDX, IDC_STATIC1, m_static1); DDX_Text(pDX, IDC_EDITbz, m_bz); DDV_MaxChars(pDX, m_bz, 1000); 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_EDITrenyuan1, m_renyuan1); DDX_Text(pDX, IDC_EDITrenyuan2, m_renyuan2); DDX_Text(pDX, IDC_EDITyear, m_year); DDV_MinMaxUInt(pDX, m_year, 1900, 3000); DDX_Text(pDX, IDC_EDITmonth, m_month); DDV_MinMaxUInt(pDX, m_month, 1, 12); DDX_Text(pDX, IDC_EDITday, m_day); DDV_MinMaxUInt(pDX, m_day, 1, 31); DDX_CBString(pDX, IDC_COMBO7, m_filter); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(IncomeInput2, MyFormView) //{{AFX_MSG_MAP(IncomeInput2) 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_EN_CHANGE(IDC_EDITyear, OnChangeEDITyear) ON_EN_CHANGE(IDC_EDITmonth, OnChangeEDITmonth) ON_EN_CHANGE(IDC_EDITday, OnChangeEDITday) ON_BN_CLICKED(IDC_BUTprint, OnBUTprint) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_BUTsave2, OnBUTsave2) ON_BN_CLICKED(IDC_BUTpay, OnBUTpay) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_BN_CLICKED(IDC_BUTTON4, OnButton4) ON_BN_CLICKED(IDC_BUTTON5, OnButton5) ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST2, OnCustomdrawList) ON_NOTIFY(NM_DBLCLK, IDC_LIST2, OnDblclkList2) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // IncomeInput2 diagnostics #ifdef _DEBUG void IncomeInput2::AssertValid() const { MyFormView::AssertValid(); } void IncomeInput2::Dump(CDumpContext& dc) const { MyFormView::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // IncomeInput2 message handlers void IncomeInput2::OnInitialUpdate() { MyFormView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class CMyMdi Mdi; Mdi.SetSubView((CWnd*)GetParent(), (CWnd*)this); if(IsHasRights2new(49)==0) { GetDlgItem(IDC_BUTTON1)->EnableWindow(0); } m_btn.SetIcon(IDI_ICONchart); m_btn.DrawTransparent(); // 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); int idarray[]={IDC_BUTsave,IDC_BUTpay,IDC_BUTsave2,IDC_BUTdel,IDC_BUTprint,IDC_BUTclose}; int idcount=6; int btnwid; CRect prerc; for(int a=idcount-2; a>=0; a--) { GetDlgItem(idarray[a+1])->GetWindowRect (prerc); ScreenToClient(prerc); GetDlgItem(idarray[a])->GetWindowRect (rc2); ScreenToClient(rc2); btnwid=rc2.Width (); rc2.right =prerc.left ; rc2.left =rc2.right -btnwid; GetDlgItem(idarray[a])->MoveWindow (rc2); } m_comboren.RefDroppedWidth(); GetDlgItem(IDC_BUTdel)->EnableWindow(IsHasRights2new(49)); m_static1.SetFont (&g_titlefont); m_List1.SetHeadings("编号,100;客人,100;手机,100;项目名称, 100;应付, 100;已付,100;欠款,100;经手人,100;开单人,100;日期, 100;二销类别,100;备注,100;数量,100" ); m_List1.LoadColumnInfo (141); m_comboren.GetWindowRect (rc2); ScreenToClient(rc2); rc2.bottom +=400; m_comboren.MoveWindow (rc2); m_combobz.GetWindowRect (rc2); ScreenToClient(rc2); rc2.bottom +=400; m_combobz.MoveWindow (rc2); m_combo1.GetWindowRect (rc2); ScreenToClient(rc2); rc2.bottom +=200; m_combo1.MoveWindow (rc2); GetDlgItem(IDC_BUTclose)->GetWindowRect(rc2); SetComboHei(&m_combo1, rc2.Height ()); for(int i=0; ig_filterdate2) continue; } if(g_waiter1!="") { if(m_List1array.ElementAt (ii).ElementAt (3)!=g_waiter1 ) continue; } if(g_waiter2!="") { if(m_List1array.ElementAt (ii).ElementAt (8)!=g_waiter2 ) continue; } if(g_waiter3!="") { if(m_List1array.ElementAt (ii).ElementAt (10)!=g_waiter3 ) continue; } if(g_waiter4!="" || g_waiter4!="全部") { if(g_waiter4=="欠款") { if( atoi(m_List1array.ElementAt (ii).ElementAt (6))==0 ) continue; } else if(g_waiter4=="付清") { if( atoi(m_List1array.ElementAt (ii).ElementAt (6)) ) continue; } } if(1) { 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); CString str; str.Format ("单数:%d", ii); SetDlgItemText(IDC_STATIC2, str); } else { m_List1.DeleteAllItems2 (); int ii=0; m_List1.m_arLabels.SetSize( m_List1array.GetSize (), 1 ); int count=0; if(m_filter.IsEmpty ()) { for(ii=0; iiSendMessage(WM_CLOSE); } void IncomeInput2::OnClickList2(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here // ListSelChange(); *pResult = 0; } void IncomeInput2::ListSelChange() { /* POSITION pos; pos=m_List1.GetFirstSelectedItemPosition(); if(pos==NULL) { ClearCtrl(); return; } int iItem=m_List1.GetNextSelectedItem(pos); CString id=m_List1.GetItemText (iItem, 0); for(int ii=0; iiEnableWindow(0);*/ } void IncomeInput2::OnBUTdel() { // TODO: Add your control notification handler code here if(IsHasRights2new(49)==0)return; 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 bz=m_List1.GetItemText (iItem, 1); CString money=m_List1.GetItemText (iItem, 2); CString date=m_List1.GetItemText (iItem, 3); CString sql; sql.Format ("delete from singleincome where id=%d***delete from singleincomemoney where id='%s' ", atoi(id), id); sql+=SGLIN_REF; g_sendhead.bsql=1; g_pMainWnd->ProcessChatMessageRequest2(sql);if(g_bSendOK==0)return; GetData(); CString str; str="删除其它二销"; str+=bz; str+="金额:"; str+=money; str+="日期:"; str+=date; WriteLog(str); } void IncomeInput2::GetData() { if(m_bInit==0)return; m_spinyear.EnableWindow(0); m_spinmonth.EnableWindow(0); m_spinday.EnableWindow(0); UpdateData(); CString sql,strdate; // strdate.Format ("%04d-%02d-%02d", m_year, m_month, m_day); sql.Format ("sale2type<>'';;"); if(m_combobz.GetCount ()) { g_sendhead.bsql=0; g_sendhead.code[0]=196; g_sendhead.tabcount=1; g_pMainWnd->ProcessChatMessageRequest2(sql); if(g_bSendOK==0) { m_spinyear.EnableWindow(1); m_spinmonth.EnableWindow(1); m_spinday.EnableWindow(1); return; } DataToArray(&m_List1array); } else { g_sendhead.bsql=0; g_sendhead.code[0]=196; g_sendhead.code[1]=160; g_sendhead.code[2]=195; g_sendhead.tabcount=3; g_pMainWnd->ProcessChatMessageRequest2(sql); if(g_bSendOK==0) { m_spinyear.EnableWindow(1); m_spinmonth.EnableWindow(1); m_spinday.EnableWindow(1); return; } DataToArray(&m_List1array, &expendtypearray, &itemarray); for(int i=0; iEnableWindow(1); } void IncomeInput2::OnChangeEDITyear() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the MyFormView::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 IncomeInput2::OnChangeEDITmonth() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the MyFormView::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 IncomeInput2::OnChangeEDITday() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the MyFormView::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 IncomeInput2::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 VK_RETURN: OnButton2(); return 1; 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 MyFormView::PreTranslateMessage(pMsg); } catch(...) { } } void IncomeInput2::OnBUTprint() { // TODO: Add your control notification handler code here POSITION pos; pos=m_List1.GetFirstSelectedItemPosition(); if(pos==NULL) { AfxMessageBox("请先选中您要发送短信的客人!", MB_ICONINFORMATION); return; } int iItem; CStringArray array; while (pos) { iItem = m_List1.GetNextSelectedItem(pos); if(!m_List1.GetItemText (iItem, 2).IsEmpty ()) array.Add (m_List1.GetItemText (iItem, 2)); } SendMsgDlg dlg; dlg.m_mode=1; dlg.m_pArray=&array; dlg.DoModal (); } void IncomeInput2::OnButton1() { // TODO: Add your control notification handler code here } void IncomeInput2::OnBUTsave() { // TODO: Add your control notification handler code here if(g_nYearpos!=-1) { AfxMessageBox("当前为历史数据查看状态,不能更改历史数据!", MB_ICONSTOP); return; } AddIncome dlg; dlg.expendtypearray=&expendtypearray; dlg.itemarray=&itemarray; if(dlg.DoModal()==IDOK) { GetData(); } } void IncomeInput2::OnBUTsave2() { // TODO: Add your control notification handler code here POSITION pos; pos=m_List1.GetFirstSelectedItemPosition(); if(pos==NULL) { return; } int iItem=m_List1.GetNextSelectedItem(pos); AddIncome dlg; dlg.m_id=m_List1.GetItemText (iItem, 0); dlg.m_renyuan1=m_List1.GetItemText (iItem, 1); dlg.m_phone=m_List1.GetItemText (iItem, 2); dlg.m_name=m_List1.GetItemText (iItem, 3); dlg.m_money=m_List1.GetItemText (iItem, 4); dlg.m_renyuan3=m_List1.GetItemText (iItem, 8); dlg.m_sale2type=m_List1.GetItemText (iItem, 10); dlg.m_bz=m_List1.GetItemText (iItem, 11); dlg.m_count=m_List1.GetItemText (iItem, 12); dlg.m_renyuan2=m_List1.GetItemText (iItem, 7); dlg.m_date=m_List1.GetItemText (iItem, 9); dlg.expendtypearray=&expendtypearray; dlg.itemarray=&itemarray; if(dlg.DoModal()==IDOK) { GetData(); } } void IncomeInput2::OnButton2() { // TODO: Add your control notification handler code here UpdateData(); m_filter.TrimLeft (); m_filter.TrimRight (); FillGrid(); } void IncomeInput2::OnCustomdrawList ( NMHDR* pNMHDR, LRESULT* pResult ) { NMLVCUSTOMDRAW* pLVCD = reinterpret_cast( pNMHDR ); // Take the default processing unless we set this to something else below. *pResult = 0; // First thing - check the draw stage. If it's the control's prepaint // stage, then tell Windows we want messages for every item. if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage ) { *pResult = CDRF_NOTIFYITEMDRAW; } else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage ) { // This is the prepaint stage for an item. Here's where we set the // item's text color. Our return value will tell Windows to draw the // item itself, but it will use the new color we set here. // We'll cycle the colors through red, green, and light blue. if(m_List1.m_arLabels.ElementAt (pLVCD->nmcd.dwItemSpec).ElementAt (6)=="") { } else if(atoi(m_List1.m_arLabels.ElementAt (pLVCD->nmcd.dwItemSpec).ElementAt (6))!=0) pLVCD->clrText = RGB(220,0,0); else pLVCD->clrText = RGB(20,133,20); if(pLVCD->nmcd.dwItemSpec%2) pLVCD->clrTextBk = g_gridcol1; else pLVCD->clrTextBk = g_gridcol2; // Store the color back in the NMLVCUSTOMDRAW struct. // Tell Windows to paint the control itself. *pResult = CDRF_DODEFAULT; } } void IncomeInput2::OnBUTpay() { // TODO: Add your control notification handler code here POSITION pos; pos=m_List1.GetFirstSelectedItemPosition(); if(pos==NULL) { return; } int iItem=m_List1.GetNextSelectedItem(pos); Singleincomemoney dlg; dlg.m_id=m_List1.GetItemText (iItem, 0); dlg.m_name=m_List1.GetItemText (iItem, 1); dlg.m_phone=m_List1.GetItemText (iItem, 2); dlg.m_sitem=m_List1.GetItemText (iItem, 3); dlg.m_money1=m_List1.GetItemText (iItem, 4); dlg.m_money2=m_List1.GetItemText (iItem, 5); dlg.m_money3=m_List1.GetItemText (iItem, 6); dlg.m_ren=m_List1.GetItemText (iItem, 8); dlg.m_bz=m_List1.GetItemText (iItem, 11); dlg.DoModal();GetData(); } void IncomeInput2::OnButton4() { // TODO: Add your control notification handler code here SearchFilter4 dlg; if(dlg.DoModal ()==IDOK) { FillGrid(); } g_bSearchFilter=0; } void IncomeInput2::OnButton5() { // TODO: Add your control notification handler code here Other2SaleChart dlg; dlg.DoModal (); } void IncomeInput2::OnDblclkList2(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here OnBUTsave2(); *pResult = 0; }