⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 statdlg.cpp

📁 用VC开发的一个餐饮系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// StatDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MyPos.h"
#include "StatDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CStatDlg dialog
extern CMyPosApp theApp;


CStatDlg::CStatDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CStatDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CStatDlg)
	//}}AFX_DATA_INIT
}


void CStatDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStatDlg)
	DDX_Control(pDX, IDC_DATETIMEPICKER_SD, m_oSdate);
	DDX_Control(pDX, IDC_DATETIMEPICKER_OD, m_oOdate);
	DDX_Control(pDX, IDC_RADIO_WEEK, m_oWeek);
	DDX_Control(pDX, IDC_EDIT_LISTTITLE, m_oListtitle);
	DDX_Control(pDX, IDC_LIST_REPORT, m_oListreport);
	DDX_Control(pDX, IDC_EDIT_ST, m_oSt);
	DDX_Control(pDX, IDC_EDIT_OT, m_oOt);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CStatDlg, CDialog)
	//{{AFX_MSG_MAP(CStatDlg)
	ON_BN_CLICKED(IDC_BUTTON_STAT, OnButtonStat)
	ON_BN_CLICKED(IDC_BUTTON_PRINTREPORT, OnButtonPrintreport)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStatDlg message handlers

BOOL CStatDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	m_oWeek.SetCheck(1);
	m_oSt.SetWindowText("00:00:00");
	m_oOt.SetWindowText("23:59:59");
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}


void CStatDlg::OnButtonStat() 
{
	int n;
	CString sql,sfloor,scompany,ssdate,sodate,sstime,sotime;
	CString sbegin,send,stotal;
	_RecordsetPtr m_pRecordset;

	int nselect=GetCheckedRadioButton(IDC_RADIO_SINGLE,IDC_RADIO_WEEK); 
	switch(nselect)//Get if it is discount.
	{
	case IDC_RADIO_WEEK:
		n=0;
		m_oListtitle.SetWindowText("           ** 销售汇总报表 **");
		break;
	case IDC_RADIO_SINGLE:
		n=1;
		m_oListtitle.SetWindowText("             ** 单品报表 **");
		break;
	default:
		break;
	}

	int ncount=m_oListreport.GetCount()-1;
	for(int i=ncount;i>=0;i--)//Clear report listbox.
		m_oListreport.DeleteString(i);

	sql="Select * from COMPANY";	
	try
	{ 
		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

		if(!m_pRecordset->adoEOF)	
		{
			 sfloor=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("FLOORNUMBER");
			 scompany=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("COMPANYNAME");
		}
		m_pRecordset->Close();
	}
	catch(_com_error e)///捕捉异常
	{
		CString sdate;
		sdate.Format("读取楼层号出错:%s",e.ErrorMessage());
		AfxMessageBox(sdate);
	}
	m_oListreport.AddString("                                      ");
	int ns=32-scompany.GetLength()-sfloor.GetLength();
	CString space=" ";
	for(int j=0;j<ns-1;j++)
		space=space+" ";
	m_oListreport.AddString(scompany+space+"楼层号 "+sfloor);
	m_oListreport.AddString("---------------------------------------");

	m_oSdate.GetWindowText(ssdate);
	ssdate=Dateformat(ssdate);
	m_oSt.GetWindowText(sstime);
	sbegin=ssdate+" "+sstime;
	m_oListreport.AddString("开始时间:           "+sbegin);

	m_oOdate.GetWindowText(sodate);
	sodate=Dateformat(sodate);
	m_oOt.GetWindowText(sotime);
	send=sodate+" "+sotime;
	m_oListreport.AddString("结束时间:           "+send);
	m_oListreport.AddString("---------------------------------------");

	sql="where ENDDATE>='"+sbegin+"' and ENDDATE<='"+send+"' and STATUS='已结帐'";
	if(n==0)
		SumBillTotal(sql);
	if(n==1)
	{
		m_oListreport.AddString("商品名称                           数量");
		SumSingleItem(sql);
	}

}

CString CStatDlg::Dateformat(CString sdate)
{
	if(sdate.GetLength()==8)
	{
		sdate.Insert(7,'0');
		sdate.Insert(5,'0');
	}
	if(sdate.GetLength()==9)
	{
		if(sdate.GetAt(6)=='-')
			sdate.Insert(5,'0');
		else
			sdate.Insert(8,'0');
	}
	return sdate;
}

void CStatDlg::SumBillTotal(CString scondition)
{
	float fsum,fttl;
	long lcount,lpersonqa,lbillqa;
	CString sql,ssum,scount,spersonqa,sbillqa;
	_RecordsetPtr m_pRecordset; //Must define it in function!!!!
	CString space,space1;
	int i,n;
	//count bills quantity.
	sql="Select COUNT(*) as XXX from SALEBILL "+scondition+"";
	try
	{ 
		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

		lcount=(long)m_pRecordset->GetCollect("XXX");
		m_pRecordset->Close();
	}
	catch(_com_error e)///捕捉异常
	{
		CString stemp;
		stemp.Format("[报表]读取记录数出错:%s",e.ErrorMessage());
		AfxMessageBox(stemp);
	}
	if(lcount==0)
	{
		m_oListreport.AddString("人民币:                           0.00");
		return;
	}
	//Calculate sum acttotal , people's quantity and bill's quantity.
	sql="Select SUM(ACTTOTAL) as AAA,SUM(PEOPLES) as BBB,COUNT(*) as CCC from SALEBILL "+scondition+"";
	try
	{ 
		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

		if(!m_pRecordset->adoEOF)
		{
			fsum =m_pRecordset->GetCollect("AAA");
			fttl=fsum;
			lpersonqa=m_pRecordset->GetCollect("BBB");
			lbillqa=m_pRecordset->GetCollect("CCC");
		}
		ssum.Format("%.2f",fsum);
		spersonqa.Format("%d",lpersonqa);
		sbillqa.Format("%d",lbillqa);

		n=31-ssum.GetLength();
		space=" ";
		for(i=0;i<n-1;i++)
			space=space+" ";
		m_oListreport.AddString("人民币:"+space+ssum);

		m_pRecordset->Close();
	}
	catch(_com_error e)///捕捉异常
	{
		CString stemp;
		stemp.Format("[报表]计算单据金额出错:%s",e.ErrorMessage());
		AfxMessageBox(stemp);
	}
	//Sum hang bills total.
	_variant_t vtemp;
	sql="Select SUM(TOTAL) as XXX from SALEBILL "+scondition+"";
	sql.Replace("已结帐","挂帐");
	sql.Replace("ENDDATE","BEGINDATE");
	try
	{ 
		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		vtemp=m_pRecordset->GetCollect("XXX");
		fsum=vtemp.dblVal;
		if(fsum>0)
		{
			fttl=fttl+fsum;
			ssum.Format("%.2f",fsum);
		}
		else
			ssum="0.00";

		n=33-ssum.GetLength();
		space=" ";
		for(i=0;i<n-1;i++)
			space=space+" ";
		m_oListreport.AddString("挂帐:"+space+ssum);

		m_pRecordset->Close();
	}
	catch(_com_error e)///捕捉异常
	{
		CString stemp;
		stemp.Format("[报表]计算单据挂帐金额出错:%s",e.ErrorMessage());
		AfxMessageBox(stemp);
	}
	//Sum RF bills total.
	sql="Select SUM(TOTAL) as XXX from SALEBILL "+scondition+" and PAYMODE=88";
//	sql="Select SUM(TOTAL) as XXX from (Select * from SALEBILL "+scondition+") where PAYMODE=88";
	try
	{ 
		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		vtemp=m_pRecordset->GetCollect("XXX");
		fsum=vtemp.dblVal;
		if(fsum>0)
		{
			fttl=fttl+fsum;
			ssum.Format("%.2f",fsum);
		}
		else
			ssum="0.00";

		n=35-ssum.GetLength();
		space=" ";
		for(i=0;i<n-1;i++)
			space=space+" ";
		m_oListreport.AddString("RF:"+space+ssum);
		m_oListreport.AddString("                       ----------------");

		CString sttl;
		sttl.Format("%.2f",fttl);
		n=38-sttl.GetLength();
		space=" ";
		for(i=0;i<n-1;i++)
			space=space+" ";
		m_oListreport.AddString(space+sttl);
		m_oListreport.AddString("                                       ");
		m_oListreport.AddString("类别                 汇总          折扣");

		m_pRecordset->Close();
	}
	catch(_com_error e)///捕捉异常

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -