📄 dlgoutlibsort.cpp
字号:
// DlgOutlibSort.cpp : implementation file
//
#include "stdafx.h"
#include "Manage_WH.h"
#include "DlgOutlibSort.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgOutlibSort dialog
CDlgOutlibSort::CDlgOutlibSort(CWnd* pParent /*=NULL*/)
: CDialog(CDlgOutlibSort::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgOutlibSort)
m_date = 0;
//}}AFX_DATA_INIT
m_iNum = 0;
m_iWhole = 0;
m_hIcon = AfxGetApp()->LoadIcon(IDI_MYICON);
}
void CDlgOutlibSort::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgOutlibSort)
DDX_Control(pDX, IDC_WHOLE_COUNT, m_wholeCount);
DDX_Control(pDX, IDC_GOODS_COUNT, m_goodsCount);
DDX_Control(pDX, IDC_LIST, m_list);
DDX_DateTimeCtrl(pDX, IDC_DATE, m_date);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgOutlibSort, CDialog)
//{{AFX_MSG_MAP(CDlgOutlibSort)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_CBN_SELCHANGE(IDC_CUSTOMER, OnSelchangeCustomer)
ON_CBN_SELCHANGE(IDC_GOODS, OnSelchangeGoods)
ON_CBN_SELCHANGE(IDC_PRIORITY, OnSelchangePriority)
ON_BN_CLICKED(IDC_EXTCUTE, OnExtcute)
ON_BN_CLICKED(IDC_UNDO, OnUndo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgOutlibSort message handlers
BOOL CDlgOutlibSort::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message==WM_KEYDOWN && (pMsg->wParam==13 || pMsg->wParam==27))
return TRUE;
return CDialog::PreTranslateMessage(pMsg);
}
BOOL CDlgOutlibSort::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon,TRUE);
m_list.InsertColumn(0,"货物名称",LVCFMT_LEFT,140,-1);
m_list.InsertColumn(1,"货物数量",LVCFMT_LEFT,140,-1);
m_list.SetExtendedStyle( LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT );
CTime tm(CTime::GetCurrentTime());
m_date = tm;
UpdateData(FALSE);
gFillComboBox(static_cast<CComboBox *>(GetDlgItem(IDC_GOODS)),"T_Products" ,"F_Name");
gFillComboBox(static_cast<CComboBox *>(GetDlgItem(IDC_PRIORITY)),"T_Task_Level","F_Name");
gFillComboBox(static_cast<CComboBox *>(GetDlgItem(IDC_CUSTOMER)),"T_Customers" ,"F_CompanyName");
static_cast<CEdit *>(GetDlgItem(IDC_ORDER))->SetWindowText(GetOrderFormNum());
m_wholeCount.SetWindowText("1");
return TRUE;
}
CString CDlgOutlibSort::GetOrderFormNum()
{
CString sNum,szVal,sYear;
CAdoConnection cn;
if (cn.OpenUDLFile(gstrConSQLSer))
{
CAdoRecordSet rs;
rs.SetAdoConnection(&cn);
rs.Open("select * from T_Order_Form_Index where F_Type = 1",adCmdText);
rs.GetCollect("F_Index",szVal);
rs.GetCollect("F_Year",sYear);
rs.Close();
cn.Close();
sNum = "DH"+sYear+"-"+szVal+"";
}
else
{
AfxMessageBox("数据库连接失败!");
sNum = "";
}
return sNum;
}
void CDlgOutlibSort::SetOrderFormNum()
{
CString sNum;
static_cast<CEdit *>(GetDlgItem(IDC_ORDER))->GetWindowText(sNum);
sNum.Format("%.5d",atoi(sNum.Mid(sNum.Find('-',0)+1)) + 1);
CAdoConnection cn;
cn.OpenUDLFile(gstrConSQLSer);
cn.Execute("UPDATE T_Order_Form_Index SET F_Index='"+sNum+"' WHERE F_Type=1",adCmdText);
cn.Close();
}
void CDlgOutlibSort::OnSelchangeCustomer()
{
static_cast<CComboBox *>(GetDlgItem(IDC_CUSTOMER))->EnableWindow(FALSE);
}
void CDlgOutlibSort::OnSelchangeGoods()
{
//查询所选货物能够用于分配的数量
if (static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->GetCurSel() != -1)
{
CString sName,sTotalNum,sSQL;
int iTotalNum(0),iSortNum(0),iNum(0),iGoodsKind(0),bz(0);
static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->GetWindowText(sName);
iGoodsKind = gfGetGoodsKind(sName);
CAdoConnection cn;
CAdoRecordSet rs;
cn.OpenUDLFile(gstrConSQLSer);
rs.SetAdoConnection(&cn);
//获得所选商品的当前库存总数
sSQL.Format("select * from T_Goods_Site_Manage where F_GoodsKind=%d and F_SiteState!=2",iGoodsKind);
rs.Open(sSQL,adCmdText);
if (rs.GetRecordCount() > 0)
{
bz = 1;
rs.MoveFirst();
while (!rs.IsEOF())
{
rs.GetCollect("F_GoodsCount",iNum);
iTotalNum += iNum;
rs.MoveNext();
}
}
rs.Close();
if (bz == 1)
{
//获得处于等待状态下的任务的总数量
sSQL.Format("select * from T_Manager_Task where F_TaskState=0 and F_GoodsKind=%d and (F_TaskKind=2 or F_TaskKind=3 or F_TaskKind=5)",iGoodsKind);
rs.Open(sSQL,adCmdText);
if (rs.GetRecordCount() != 0)
{
rs.MoveFirst();
while (!rs.IsEOF())
{
rs.GetCollect("F_SortCount",iNum);
iSortNum += iNum;
rs.MoveNext();
}
}
rs.Close();
}
cn.Close();
m_iNum = iTotalNum - iSortNum;
sTotalNum.Format("%d",m_iNum);
static_cast<CStatic *>(GetDlgItem(IDC_STA_TOTAL))->SetWindowText(""+sName+"可供支配的数量为:"+sTotalNum+"");
}
}
void CDlgOutlibSort::OnSelchangePriority()
{
static_cast<CComboBox *>(GetDlgItem(IDC_PRIORITY))->EnableWindow(FALSE);
}
void CDlgOutlibSort::OnAdd()
{
//获取文本框值
CString sGoodsName,sGoodsNum,sCustomerName,sPriority,sGoodsType,sWholeNum,sFormNum,sWarning;
static_cast<CEdit *>(GetDlgItem(IDC_ORDER))->GetWindowText(sFormNum);
static_cast<CComboBox *>(GetDlgItem(IDC_CUSTOMER))->GetWindowText(sCustomerName);
static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->GetWindowText(sGoodsName);
static_cast<CComboBox *>(GetDlgItem(IDC_PRIORITY))->GetWindowText(sPriority);
static_cast<CEdit *>(GetDlgItem(IDC_GOODS_COUNT))->GetWindowText(sGoodsNum);
static_cast<CEdit *>(GetDlgItem(IDC_WHOLE_COUNT))->GetWindowText(sWholeNum);
if (sFormNum.IsEmpty()) sWarning = "订单编号出错,无法生成分拣任务!";
else if (sCustomerName.IsEmpty()) sWarning = "客户名称不能为空,请选择!";
else if (sGoodsName.IsEmpty()) sWarning = "商品名称不能为空,请选择!";
else if (sPriority.IsEmpty()) sWarning = "任务有限级别不能为空,请选择!";
else if (sGoodsNum.IsEmpty() || sGoodsNum.Mid(0,1)=="0") sWarning = "商品数量不正确,请重新输入!";
else if (sWholeNum.IsEmpty() || sWholeNum.Mid(0,1)=="0") sWarning = "成套数量不正确,请重新输入!";
if (!sWarning.IsEmpty())
{
MessageBox(sWarning,"系统提示",MB_ICONSTOP|MB_OK);
return;
}
for (int i=0; i<m_list.GetItemCount(); i++)
{
if (m_list.GetItemText(i,0) == sGoodsName)
{
MessageBox("对不起,相同的货物不能下发两次!","系统提示",MB_ICONSTOP|MB_OK);
return;
}
}
int iGoodsNum = atoi(sGoodsNum);
int iWholeNum = atoi(sWholeNum);
if (iGoodsNum * iWholeNum > m_iNum)
{
MessageBox("无法生成任务,订货数量已超过现有库存!","系统提示",MB_ICONSTOP|MB_OK);
return;
}
if (MessageBox("是否将该任务添加到列表?","系统提示",MB_ICONQUESTION|MB_YESNO)==IDNO)
return;
int iListCount(0);
if (m_list.GetItemCount() != 0)
iListCount = m_list.GetItemCount();
iListCount = m_list.InsertItem(iListCount,"");
m_list.SetItemText(iListCount,0,sGoodsName);
m_list.SetItemText(iListCount,1,sGoodsNum);
static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->SetCurSel(-1);
static_cast<CEdit *>(GetDlgItem(IDC_GOODS_COUNT))->SetWindowText("0");
static_cast<CEdit *>(GetDlgItem(IDC_WHOLE_COUNT))->EnableWindow(FALSE);
static_cast<CStatic *>(GetDlgItem(IDC_STA_TOTAL))->SetWindowText("");
static_cast<CButton *>(GetDlgItem(IDC_EXTCUTE))->EnableWindow(TRUE);
}
void CDlgOutlibSort::OnExtcute()
{
if (MessageBox("是否执行已制定的任务?","系统提示",MB_ICONQUESTION|MB_OKCANCEL) == 0)
return;
UpdateData(TRUE);
CString sWholeNum,sFormNum,sCustomer,sPriority,sTime,sSQL,sDate;
//获取文本框值
static_cast<CEdit *>(GetDlgItem(IDC_ORDER))->GetWindowText(sFormNum);
static_cast<CEdit *>(GetDlgItem(IDC_WHOLE_COUNT))->GetWindowText(sWholeNum);
static_cast<CComboBox *>(GetDlgItem(IDC_CUSTOMER))->GetWindowText(sCustomer);
static_cast<CComboBox *>(GetDlgItem(IDC_PRIORITY))->GetWindowText(sPriority);
int iTaskIndex,iPriority,iGoodsKind,iSortCount;
int iTotalNum = 0;
sTime = GetDate(2);
sDate.Format("%.4d-%.2d-%.2d",m_date.GetYear(),m_date.GetMonth(),m_date.GetDay());
iPriority = gfGetTaskPriority(sPriority);
for (int i=1;i<=atoi(sWholeNum);i++)
for (int j=0;j<m_list.GetItemCount();j++)
{
iTaskIndex = gfGetTaskIndex();
iGoodsKind = gfGetGoodsKind(m_list.GetItemText(j,0));
iSortCount = atoi(m_list.GetItemText(j,1));
sSQL.Format("INSERT INTO T_Manager_Task(F_ManagerIndex,F_OrderIndex,F_GroupIndex,F_TaskKind,F_TaskLevel,\
F_TaskState,F_GoodsKind,F_SortCount,F_DeliverDate,F_SendTime,F_CustomerName)VALUES(%d,'%s',%d,%d,%d,%d,%d,%d,\
'%s','%s','%s')",iTaskIndex,sFormNum,i,3,iPriority,0,iGoodsKind,iSortCount,sDate,sTime,sCustomer);
m_SQLArra.Add(sSQL);
iTotalNum += iSortCount;
}
CAdoConnection cn;
cn.OpenUDLFile(gstrConSQLSer);
for (int k=0;k<m_SQLArra.GetSize();k++)
{
cn.Execute(m_SQLArra[k],adCmdText);
}
sSQL.Format("INSERT INTO T_Order_History(F_OrderIndex,F_Kind,F_Count,F_CompanyName,F_SendTime,F_DeliverDate)VALUES('%s',%d,%d,'%s','%s','%s')",sFormNum,1,iTotalNum,sCustomer,sTime,sDate);
cn.Execute(sSQL,adCmdText);
cn.Close();
AddLog("生成分拣任务单。订单编号:["+sFormNum+"]");
MessageBox("任务下发成功,请返回或继续!","系统提示",MB_ICONINFORMATION|MB_OK);
SetOrderFormNum();
static_cast<CEdit *>(GetDlgItem(IDC_ORDER))->SetWindowText(GetOrderFormNum());
OnUndo();
}
void CDlgOutlibSort::OnUndo()
{
static_cast<CComboBox *>(GetDlgItem(IDC_PRIORITY))->EnableWindow(TRUE);
static_cast<CComboBox *>(GetDlgItem(IDC_PRIORITY))->SetCurSel(-1);
static_cast<CComboBox *>(GetDlgItem(IDC_CUSTOMER))->EnableWindow(TRUE);
static_cast<CComboBox *>(GetDlgItem(IDC_CUSTOMER))->SetCurSel(-1);
static_cast<CComboBox *>(GetDlgItem(IDC_GOODS))->SetCurSel(-1);
static_cast<CEdit *>(GetDlgItem(IDC_GOODS_COUNT))->SetWindowText("0");
static_cast<CStatic *>(GetDlgItem(IDC_STA_TOTAL))->SetWindowText("");
static_cast<CEdit *>(GetDlgItem(IDC_WHOLE_COUNT))->EnableWindow(TRUE);
static_cast<CEdit *>(GetDlgItem(IDC_WHOLE_COUNT))->SetWindowText("1");
static_cast<CButton *>(GetDlgItem(IDC_EXTCUTE))->EnableWindow(FALSE);
m_list.DeleteAllItems();
m_iNum = 0;
m_iWhole = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -