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

📄 dinventory.cpp

📁 物流综合管理系统
💻 CPP
字号:
// DInventory.cpp: implementation of the CDInventory class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MyProject.h"
#include "DInventory.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDInventory::CDInventory()
{

}

CDInventory::~CDInventory()
{

}

void CDInventory::Init()
{
	this->SetCaption("库存盘点");
	this->SetNoteIDTitle("盘点票号:");
	this->SetStoreTitle("盘点仓库:");
	this->SetOperationTitle("经 手 人:");
	this->SetManTitle("其    他:");

	this->SetGridHeader("扫描码 , 商品名称 , 规格 , 产地 , 计量单位 , 原库存数量 , 盘点数量"); 
	this->SetHeadersWidth("70 , 100 , 60 , 100 , 74 , 74 , 74");
	RxRecordset rst;
	CString sSQL;
	rst.Open("员工信息表");
	m_EdtOperation.Initialize(this->GetParent());
	m_EdtOperation.SetRecordset(rst);//设置数据源
	m_EdtOperation.SetSelectField("姓名");
	
	m_EdtMan.Initialize(this->GetParent());
	m_EdtMan.IsShowing=true;


	rst.Open("仓库信息表");
	m_EdtStore.StartUpAssciation=true;
	m_EdtStore.Initialize(this->GetParent());
	m_EdtStore.SetRecordset(rst);//设置数据源
	m_EdtStore.SetSelectField("仓库名称");

	m_Grid.m_Edit.PopHide=true;
	m_Grid.m_Edit.Initialize(this->GetParent());
	m_Grid.m_Edit.SetRecordset(rst);//设置数据源
	m_Grid.m_Edit.SetSelectField("仓库名称");
	CRect rcGrid,rcWnd,rcNew;
	this->GetWindowRect(&rcWnd);
	m_Grid.GetWindowRect(&rcGrid);

	rcNew.top=rcGrid.top-rcWnd.top-24;
	rcNew.left=rcGrid.left-rcWnd.left-2;
	rcNew.bottom=rcNew.top+rcGrid.Height()+31;
	rcNew.right=rcNew.left+rcGrid.Width();

	m_Grid.MoveWindow(&rcNew,true);
	this->DrawCheck(SW_HIDE);
}

void CDInventory::OnButEnrol()
{
	Clear();
	CString sNewID;
	sNewID=ado.AutoNumber("盘点记录表","盘点票号","PD",3);
	this->m_StaIDValue.SetWindowText(sNewID);
	this->m_StaIDValue.Invalidate();
	this->Enabled(true);
	this->m_EdtOperation.SetFocus();

}

void CDInventory::OnButSave()
{
	if(MessageBox("确定要保存吗?","系统提示",MB_OKCANCEL|MB_ICONQUESTION)!=1)
		return;
	//取出编辑文本的值
	CString sID,sStore,sMan,sTime,sOther;
	this->m_StaIDValue.GetWindowText(sID);
	this->m_EdtOperation.GetWindowText(sMan);
	this->m_EdtStore.GetWindowText(sStore);
	this->m_EdtMan.GetWindowText(sOther);
	this->m_StaDateValue.GetWindowText(sTime);
	sStore=ado.FieldToOtherField("仓库信息表","仓库名称",sStore,"编号",1);

	sMan=ado.FieldToOtherField("员工信息表","姓名",sMan,"编号",1);

	if(sStore.IsEmpty()==true)
	{
		MessageBox("请输入调货仓库!","系统提示",MB_OK|MB_ICONSTOP);
		m_EdtStore.SetFocus();
		return;
	}
	if(sMan.IsEmpty()==true)
	{
		MessageBox("请输入经手人!","系统提示",MB_OK|MB_ICONSTOP);
		this->m_EdtOperation.SetFocus();
		return;
	}
	
	CString sOPID;
	sOPID=ado.FieldToOtherField("操作员信息表","用户名",OP,"操作员编号",1);
	//存入记录表
	CString sSQL;
	sSQL.Format("INSERT INTO 盘点记录表 VALUES('%s',%s,'%s',%s,%s,'%s')",sID,sStore,sTime,sMan,sOPID,sOther);
	RxRecordset rst;
	rst.Open(sSQL,adCmdText);

	CString sYNumber,sPNumber,sCode;
	int nRow=0,nNum=0;
	for(int i=0;i<m_Grid.GetItemCount();i++)
	{
		sCode=m_Grid.GetItemText(i,0);
		sYNumber=m_Grid.GetItemText(i,5);
		sPNumber=m_Grid.GetItemText(i,6);
		if(sPNumber.IsEmpty()==true)
			sYNumber=sYNumber;
		if(sYNumber=="0")
		{
			sSQL.Format("SELECT * FROM 库存信息表 WHERE 商品条形码='%s' AND 仓库编号=%s",sCode,sStore);
			rst.Open(sSQL,adCmdText);
			if(rst.GetRecordCount()<1)
			{   //盘点库中不存在的商品
				//获得空闲货位
				nRow=Autoplace(sStore,true);    
				nNum=Autoplace(sStore,false);
				sSQL.Format("INSERT INTO 库存信息表 VALUES('%s',%s,%s,%d,%d,10,100)",sCode,sStore,sPNumber,nRow,nNum);
				rst.Open(sSQL,adCmdText);
			}
		}	
		sSQL.Format("INSERT INTO 盘点明细表 VALUES('%s','%s',%s,%s)",sID,sCode,sYNumber,sPNumber);
		rst.Open(sSQL,adCmdText);
		//更改库存
		sSQL.Format("UPDATE 库存信息表 SET 库存数量=%s WHERE 商品条形码='%s' AND 仓库编号=%s ",sPNumber,sCode,sStore);
		rst.Open(sSQL,adCmdText);
	}
	this->Enabled(false);
}



void CDInventory::OnCellSetFocus()
{
	RxRecordset rst;
	CString sSQL,sName,sSpec,sAddr,sCode,sStore;
	this->m_EdtStore.GetWindowText(sStore);
	sStore=ado.FieldToOtherField("仓库信息表","仓库名称",sStore,"编号",1);
	switch(this->m_Grid.GetCol())
	{
	case 1:
		{
			rst.Open("SELECT DISTINCT 名称,简称 from 商品信息表",adCmdText);		
			m_Grid.m_Edit.NumberOnly(false);
			m_Grid.m_Edit.PopHide=false;
			m_Grid.m_Edit.EnterNumber=0;     
			m_Grid.m_Edit.ClearAll();
			m_Grid.m_Edit.StartUpAssciation=true;
			m_Grid.m_Edit.SetRecordset(rst);
			m_Grid.m_Edit.SetSelectField("名称");
			m_Grid.m_Edit.AutoPosition();
			break;
		}
	case 2:
		{
			m_Grid.m_Edit.NumberOnly(false);
			m_Grid.m_Edit.PopHide=false;
			m_Grid.m_Edit.EnterNumber=0;     
			m_Grid.m_Edit.ClearAll();
			sName=m_Grid.GetItemText(m_Grid.GetRow(),1);
			sSQL.Format("SELECT DISTINCT 名称,规格 FROM 商品信息表 WHERE 名称='%s'",sName);
			rst.Open(sSQL,adCmdText);		
			m_Grid.m_Edit.StartUpAssciation=false;
			m_Grid.m_Edit.SetRecordset(rst);
			m_Grid.m_Edit.SetSelectField("规格");
			m_Grid.m_Edit.AutoPosition();
			break;
		}
	case 3:
		{
			m_Grid.m_Edit.NumberOnly(false);
			m_Grid.m_Edit.PopHide=false;
			m_Grid.m_Edit.EnterNumber=0;     
			m_Grid.m_Edit.ClearAll();
			sName=m_Grid.GetItemText(m_Grid.GetRow(),1);
			sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2);
			sSQL.Format("SELECT DISTINCT 名称,产地 from 商品信息表 WHERE 名称='%s' AND 规格='%s'",sName,sSpec);
			rst.Open(sSQL,adCmdText);		
			m_Grid.m_Edit.StartUpAssciation=false;
			m_Grid.m_Edit.SetRecordset(rst);
			m_Grid.m_Edit.SetSelectField("产地");
			m_Grid.m_Edit.AutoPosition();
			break;
		}
	case 4:
		{
			m_Grid.m_Edit.NumberOnly(false);
			m_Grid.m_Edit.PopHide=false;
			m_Grid.m_Edit.EnterNumber=0;     
			m_Grid.m_Edit.ClearAll();
			sName=m_Grid.GetItemText(m_Grid.GetRow(),1);
			sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2);
			sAddr=m_Grid.GetItemText(m_Grid.GetRow(),3);
			sSQL.Format("SELECT * from 商品信息表 WHERE 名称='%s' AND 规格='%s' AND 产地='%s'",sName,sSpec,sAddr);
			rst.Open(sSQL,adCmdText);
			this->m_Grid.SetItemText(m_Grid.GetRow(),0,rst.GetFieldValue("条形码"));
			sSQL.Format("SELECT DISTINCT 名称,计量单位 from 商品信息表 WHERE 名称='%s' AND 规格='%s' AND 产地='%s'",sName,sSpec,sAddr);
			rst.Open(sSQL,adCmdText);
			
			m_Grid.m_Edit.StartUpAssciation=false;
			m_Grid.m_Edit.SetRecordset(rst);
			m_Grid.m_Edit.SetSelectField("计量单位");
			m_Grid.m_Edit.AutoPosition();
			break;
		}
	case 5:
		{
			sCode=m_Grid.GetItemText(m_Grid.GetRow(),0);
			sSQL.Format("SELECT a.名称,b.库存数量 from 商品信息表 a inner join 库存信息表 b on a.条形码=b.商品条形码  WHERE a.条形码='%s' AND b.仓库编号=%s",sCode,sStore);
			rst.Open(sSQL,adCmdText);		
			if(rst.GetRecordCount()<1)
				m_Grid.m_Edit.SetWindowText("0");
			else
				m_Grid.m_Edit.SetWindowText(rst.GetFieldValue("库存数量"));
			m_Grid.m_Edit.PopHide=true;
			m_Grid.m_Edit.SetReadOnly(true);
			m_Grid.m_Edit.NumberOnly(true);
			m_Grid.m_Edit.HideGrid();
			break;
		}
	case 6:
		{
			m_Grid.m_Edit.SetReadOnly(false);
			m_Grid.m_Edit.PopHide=true;
			m_Grid.m_Edit.NumberOnly(true);
			m_Grid.m_Edit.HideGrid();
			break;
		}
	}
}

void CDInventory::OnCellKillFocus()
{
	CString sCode,sSQL;
	RxRecordset rst;
	if(this->m_Grid.GetCol()==0)
	{
		sCode=m_Grid.GetItemText(m_Grid.GetRow(),0);
		sSQL.Format("SELECT * FROM 商品信息表 WHERE 条形码='%s'",sCode);
		rst.Open(sSQL,adCmdText);	
		if(rst.GetRecordCount()<1)
			return;
		m_Grid.SetItemText(m_Grid.GetRow(),1,rst.GetFieldValue("名称"));
		m_Grid.SetItemText(m_Grid.GetRow(),2,rst.GetFieldValue("规格"));
		m_Grid.SetItemText(m_Grid.GetRow(),3,rst.GetFieldValue("产地"));
		m_Grid.SetItemText(m_Grid.GetRow(),4,rst.GetFieldValue("计量单位"));
	}
}

void CDInventory::OnButPrint()
{
	m_ps.MainCaptionFontSize=400;
	m_ps.DeckCaptionFontSize=180;
	m_ps.MainCaption=m_sCaption+"单据";
	CString sMem;
	m_ps.DeckCaptionNumber=4;
	this->m_StaNoteID.GetWindowText(m_ps.DeckCaptions[0]);
	this->m_StaIDValue.GetWindowText(sMem);
	m_ps.DeckCaptions[0]=m_ps.DeckCaptions[0]+sMem;

	this->m_StaOperation.GetWindowText(m_ps.DeckCaptions[1]);
	this->m_EdtOperation.GetWindowText(sMem);
	m_ps.DeckCaptions[1]=m_ps.DeckCaptions[1]+sMem;

	this->m_StaStore.GetWindowText(m_ps.DeckCaptions[2]);
	this->m_EdtStore.GetWindowText(sMem);
	m_ps.DeckCaptions[2]=m_ps.DeckCaptions[2]+sMem;

	this->m_StaMan.GetWindowText(m_ps.DeckCaptions[3]);
	this->m_EdtMan.GetWindowText(sMem);
	m_ps.DeckCaptions[3]=m_ps.DeckCaptions[3]+sMem;
	
	m_ps.TotalNumber=1;	
	m_ps.Totals[0]="操 作 员:"+OP;
	this->m_EdtPay.GetWindowText(sMem);

	
	m_ps.Grid=&m_Grid;
	CMyApp* theApp;
	theApp=(CMyApp*)::AfxGetApp();
	theApp->Print();
}

⌨️ 快捷键说明

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