📄 selldlg.cpp
字号:
// SellDlg.cpp : implementation file
//
#include "stdafx.h"
#include "QGZX_InfoPlat.h"
#include "SellDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSellDlg dialog
CSellDlg::CSellDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSellDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSellDlg)
m_className = _T("");
m_customerID = _T("");
m_customerName = _T("");
m_goodName = _T("");
m_managerName = _T("");
m_address = _T("");
m_email = _T("");
m_info = _T("");
m_inteqral = _T("");
m_num = _T("");
m_price = _T("");
m_qq = _T("");
m_sum = _T("");
m_tele = _T("");
m_sellID = _T("");
//}}AFX_DATA_INIT
m_ds = new CData();
m_ds->InitData();
}
void CSellDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSellDlg)
DDX_Control(pDX, IDC_LIST_THISSELL, m_listThisSell);
DDX_Control(pDX, IDC_LIST_TEMP, m_listTEMP);
DDX_Control(pDX, IDC_COMBO_CUSTOMERID, m_comboCustomerID);
DDX_Control(pDX, IDC_COMBO_GOODNAME, m_comboGoodName);
DDX_Control(pDX, IDC_COMBO_CLASSNAME, m_comboClassName);
DDX_Control(pDX, IDC_SPIN_NUM, m_spinNum);
DDX_CBString(pDX, IDC_COMBO_CLASSNAME, m_className);
DDX_CBString(pDX, IDC_COMBO_CUSTOMERID, m_customerID);
DDX_CBString(pDX, IDC_COMBO_CUSTOMERNAME, m_customerName);
DDX_CBString(pDX, IDC_COMBO_GOODNAME, m_goodName);
DDX_CBString(pDX, IDC_COMBO_MANAGERNAME, m_managerName);
DDX_Text(pDX, IDC_EDIT_ADDRESS, m_address);
DDX_Text(pDX, IDC_EDIT_EMAIL, m_email);
DDX_Text(pDX, IDC_EDIT_INFO, m_info);
DDX_Text(pDX, IDC_EDIT_INTEQRAL, m_inteqral);
DDX_Text(pDX, IDC_EDIT_NUM, m_num);
DDX_Text(pDX, IDC_EDIT_PRICE, m_price);
DDX_Text(pDX, IDC_EDIT_QQ, m_qq);
DDX_Text(pDX, IDC_EDIT_SUM, m_sum);
DDX_Text(pDX, IDC_EDIT_TELE, m_tele);
DDX_Text(pDX, IDC_EDIT_SELLID, m_sellID);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSellDlg, CDialog)
//{{AFX_MSG_MAP(CSellDlg)
ON_WM_CTLCOLOR()
ON_CBN_SELCHANGE(IDC_COMBO_CLASSNAME, OnSelchangeComboClassname)
ON_CBN_SELCHANGE(IDC_COMBO_GOODNAME, OnSelchangeComboGoodname)
ON_CBN_EDITCHANGE(IDC_COMBO_CUSTOMERID, OnEditchangeComboCustomerid)
ON_LBN_KILLFOCUS(IDC_LIST_TEMP, OnKillfocusListTemp)
ON_LBN_SELCHANGE(IDC_LIST_TEMP, OnSelchangeListTemp)
ON_EN_CHANGE(IDC_EDIT_NUM, OnChangeEditNum)
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_NUM, OnDeltaposSpinNum)
ON_BN_CLICKED(IDC_BTN_CALC, OnBtnCalc)
ON_BN_CLICKED(IDC_BTN_ADDCUSTOMER, OnBtnAddcustomer)
ON_LBN_DBLCLK(IDC_LIST_TEMP, OnDblclkListTemp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSellDlg message handlers
HBRUSH CSellDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(pWnd->GetDlgCtrlID()==IDC_STATIC_NOTICE)
{
pDC->SetTextColor(RGB(255, 100, 0)); //设置文本颜色
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
void CSellDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData();
if(this->m_className == "" || this->m_goodName == "" ||
this->m_sellID== "" || this->m_num == "" ||
this->m_price == "" || this->m_sum == "" ||
this->m_managerName == "" || this->m_info == "")
{
MessageBox("错误:销售信息不完整!","信息不完整",MB_ICONERROR | MB_OK);
return;
}
else
{
CString strGoodID ,strClassID, strDate, strManagerID, strIsCheck;
CString strSQL;
int nIsCheck;
//判断是否添加了客户信息
if(m_customerID == "" || m_customerName == "")
{
if(MessageBox("提示:您目前还没有添加客户信息,是否添加?","客户信息提示",MB_YESNO) == IDYES)
{
this->m_comboCustomerID.SetFocus();
return;
}
}
//如果金额为0
UpdateData(TRUE);
if(m_sum == "0.00")
{
MessageBox("提示:总金额不能为零,请按计算按钮重新计算","错误",MB_ICONINFORMATION | MB_OK);
return;
}
//如果库存不足则返回
int nStorageNum; //库存数量
int nSellNum; //将要买出的数量
CString str_Notice;
strSQL.Format("Select StorageNum From _tGoodsLibrary Where GoodName = '%s'", \
this->m_goodName);
m_ds->ExecuteSQL(strSQL);
nStorageNum = m_ds->GetAsInteger("StorageNum");
nSellNum = atoi(this->m_num);
if(nSellNum > nStorageNum)
{
str_Notice.Format("提示:\n尊敬的客户,当前库存数量只有:%d件产品,无法开单!", nStorageNum);
MessageBox(str_Notice, "错误", MB_ICONINFORMATION | MB_OK);
return;
}
//获取商品编号
strSQL.Format("Select GoodID From _tGoodsLibrary Where GoodName = '%s'", \
this->m_goodName);
m_ds->ExecuteSQL(strSQL);
strGoodID = m_ds->GetAsString("GoodID");
//获取分类编号
strSQL.Format("Select ClassID From _tClass Where ClassName = '%s'", \
this->m_className);
m_ds->ExecuteSQL(strSQL);
strClassID = m_ds->GetAsString("ClassID");
//获取日期
strDate = this->m_sellID.Left(8);
//获取管理员的ID
strSQL.Format("Select ManagerID From _tSysManager Where ManagerName = '%s'", \
this->m_strManager);
m_ds->ExecuteSQL(strSQL);
strManagerID = m_ds->GetAsString("ManagerID");
//是否为内部员工 1是 0不是
nIsCheck = ((CButton*)GetDlgItem(IDC_CHECK_INTER))->GetCheck();
if(nIsCheck == 1)
{
strIsCheck = "是";
}
else
{
strIsCheck = "否";
}
//库存减nSellNum , 买出件数加nSellNum;
strSQL.Format("Update _tGoodsLibrary set StorageNum = StorageNum - %d, \
SellNum = SellNum + %d Where GoodID = '%s'", nSellNum, nSellNum, strGoodID);
m_ds->ExecuteOther(strSQL);
//记录销售事件
strSQL.Format("Insert into _tGoodsSellEvent(GoodSellID, GoodID, ClassID, \
Price, Num, SumMoney, SellDate, ManagerID, CustomerID, Remarks, IsInner) \
values('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", \
this->m_sellID, strGoodID, strClassID, this->m_price, this->m_num, this->m_sum, strDate, \
strManagerID, this->m_customerID, this->m_info, strIsCheck);
m_ds->ExecuteOther(strSQL);
CString str_notice;
str_notice.Format("事务处理完成!以下是本次交易情况:\n\n单价:%s\n\n数量:%s\n\n总金额:%s",this->m_price,this->m_num,this->m_sum);
MessageBox(str_notice, "提交成功", MB_OK);
this->m_sellID = m_ds->AutoNumber("_tGoodsSellEvent", "GoodSellID", "NO", 2);
UpdateData(FALSE);
//更新列表视图
int nListViewCount;
nListViewCount = m_listThisSell.GetItemCount();
m_listThisSell.InsertItem(nListViewCount, "");
m_listThisSell.SetItemText(nListViewCount, 0, this->m_sellID);
m_listThisSell.SetItemText(nListViewCount, 1, this->m_className);
m_listThisSell.SetItemText(nListViewCount, 2, this->m_goodName);
m_listThisSell.SetItemText(nListViewCount, 3, this->m_price);
m_listThisSell.SetItemText(nListViewCount, 4, this->m_num);
m_listThisSell.SetItemText(nListViewCount, 5, this->m_sum);
m_listThisSell.SetItemText(nListViewCount, 6, this->m_strManager);
m_listThisSell.SetItemText(nListViewCount, 7, this->m_customerName);
/*
m_listThisSell.InsertColumn(0,"销售编号",LVCFMT_LEFT,80);
m_listThisSell.InsertColumn(1,"分类名称",LVCFMT_LEFT,120);
m_listThisSell.InsertColumn(2,"商品名",LVCFMT_LEFT,90);
m_listThisSell.InsertColumn(3,"单价",LVCFMT_LEFT,100);
m_listThisSell.InsertColumn(4,"数量",LVCFMT_LEFT,100);
m_listThisSell.InsertColumn(5,"总额",LVCFMT_LEFT,150);
m_listThisSell.InsertColumn(6,"操作员",LVCFMT_LEFT,150);
m_listThisSell.InsertColumn(7,"客户姓名",LVCFMT_LEFT,150);*/
}
// CDialog::OnOK();
}
BOOL CSellDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//************************CSpintButtonCtrl的使用方法********************
/*
CSpinButtonCtrl使用说明2007/05/11 14:01CSpinButtonCtrl使用起来比较特殊,使用起来,需要注意一些地方.实际的教程也比较少.为了让后人少走弯路,这里写这篇文章以说明.
1.添加EDIT控件
2.添加Spin控件
如果不是这样的顺序的话,使用ctrl+D改变Tab顺序,使spin紧靠edit后面
3.在EDIT控件上面设置group属性(特别注意)
4.在Spin控件上设置
Auto Buddy 为 true
Set Buddy Integer 为 true
Alignment 为 Right Align
5.添加Edit控件 int 变量 m_nNumK;
这个时候点击向下应该可以增加数值
6.在OnInitDialog中添加以下语句
((CSpinButtonCtrl *)GetDlgItem(IDC_SPIN1))->SetRange(-100, 100);
这个时候向上的箭头为增加,向下的箭头为减小.
大功告成.欢迎留言.*/
//*************************************************
this->m_spinNum.SetBuddy(GetDlgItem(IDC_EDIT_NUM));
this->m_spinNum.SetRange(1, 100);
this->m_spinNum.SetPos(1);
this->m_num = "1";
this->m_price = "0.00";
this->m_sum = "0.00";
this->m_info = "<无>";
UpdateData(FALSE);
//初始化类名ComboBox
CString str_tmp1;
/* int nRecordCount = 0;
m_ds->ExecuteSQL("Select * From _tClass");
nRecordCount = m_ds->GetRecordCount();
for(int i = 0; i < nRecordCount; i++)
{
str_tmp1 = m_ds->GetAsString("ClassName");
m_comboClassName.InsertString(i,str_tmp1);
m_ds->MoveNext();
}*/
InitComboBox(&m_comboClassName);
this->m_inteqral = "0";
//生成商品销售编号
str_tmp1 = m_ds->AutoNumber("_tGoodsSellEvent", "GoodSellID", "NO", 2);
m_sellID = str_tmp1;
this->m_managerName = this->m_strManager;
UpdateData(FALSE);
//**********************初始化列表视图*********************
m_listThisSell.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
// m_listThisSell.SetBkColor(RGB(250,250,0));
// m_classView.SetTextBkColor(RGB(255,0,0));
m_listThisSell.InsertColumn(0,"销售编号",LVCFMT_LEFT,90);
m_listThisSell.InsertColumn(1,"分类名称",LVCFMT_LEFT,110);
m_listThisSell.InsertColumn(2,"商品名",LVCFMT_LEFT,150);
m_listThisSell.InsertColumn(3,"单价",LVCFMT_LEFT,70);
m_listThisSell.InsertColumn(4,"数量",LVCFMT_LEFT,60);
m_listThisSell.InsertColumn(5,"总额",LVCFMT_LEFT,80);
m_listThisSell.InsertColumn(6,"操作员",LVCFMT_LEFT,85);
m_listThisSell.InsertColumn(7,"客户姓名",LVCFMT_LEFT,85);
// HBITMAP hbmp=::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));
// m_listThisSell.SetBkImage(hbmp);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSellDlg::OnDeltaposSpinPrice(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
// TODO: Add your control notification handler code here
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -