📄 warehouseoutunit.pas
字号:
unit WarehouseOutUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, SimpleDS, Buttons, ToolWin, ComCtrls, ExtCtrls,
Grids, DBGrids, StdCtrls, Mask, DBCtrls;
type
TfrmWarehouseOut = class(TForm)
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
Label5: TLabel;
Label4: TLabel;
Label3: TLabel;
Label6: TLabel;
Bevel2: TBevel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
edtInReceiveID: TDBEdit;
edtVendorDept: TDBEdit;
edtInvoiceNO: TDBEdit;
edtWareName: TDBEdit;
edtOperator: TDBEdit;
edt_MaterialName: TDBEdit;
edtMaterialSpell: TDBEdit;
edtMaterialSpecs: TDBEdit;
edtMaterialModel: TDBEdit;
edtMaterialType: TDBEdit;
edtRemark: TDBEdit;
edtMaterialUnit: TDBEdit;
edtMaterialNum: TDBEdit;
edtMaterialPrice: TDBEdit;
edtMaterialMoney: TDBEdit;
edtWarehoseID: TDBEdit;
edt_MaterialID: TDBEdit;
dbGrdWarehouseOutDetail: TDBGrid;
ControlBar1: TControlBar;
CoolBar2: TCoolBar;
sbtnFirst: TSpeedButton;
sbtnPrior: TSpeedButton;
sbtnNext: TSpeedButton;
sbtnLast: TSpeedButton;
CoolBar3: TCoolBar;
sbtnAdd: TSpeedButton;
sbtnSave: TSpeedButton;
Bevel1: TBevel;
sbtnExit: TSpeedButton;
sbtnDelete: TSpeedButton;
btnCancel: TSpeedButton;
edtWareDate: TDBEdit;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure edtInReceiveIDKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure sbtnFirstClick(Sender: TObject);
procedure sbtnPriorClick(Sender: TObject);
procedure sbtnNextClick(Sender: TObject);
procedure sbtnLastClick(Sender: TObject);
procedure sbtnAddClick(Sender: TObject);
procedure sbtnSaveClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure sbtnExitClick(Sender: TObject);
procedure edtVendorDeptKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edtWareNameKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edt_MaterialIDKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edtWareDateKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure sbtnDeleteClick(Sender: TObject);
procedure edt_MaterialIDKeyPress(Sender: TObject; var Key: Char);
procedure edtMaterialNumKeyPress(Sender: TObject; var Key: Char);
private
MaterialID:string; //物品编号
MaterialName:string; // 物品名称
MaterialSpell:string;//拼音简码
MaterialModel:string;//型号
MaterialSpecs:string;//规格
MaterialType:string; //类型
MaterialUnit:string; //单位
MaterialPrice:string;//价格
ACode,AName:string;
procedure SaveOutWarehouse(var AWarehouseName,AMaterialID,AMaterialName,AMaterialType,AMaterialModel,AMaterialSpecs,
AMaterialUnit,AMaterialNum,AMaterialPrice,AMaterialMoney:string);
public
{ Public declarations }
end;
var
frmWarehouseOut: TfrmWarehouseOut;
implementation
uses DM_Unit, SpellInputUnit, MaterialInfoSearchUnit;
{$R *.dfm}
procedure TfrmWarehouseOut.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DM.sdsOutWarehouse.Close;
DM.sdsOutWarehouseDetail.Close;
Action:=caFree;
frmWarehouseOut:=nil;
end;
procedure TfrmWarehouseOut.FormCreate(Sender: TObject);
begin
DM.sdsOutWarehouse.Open;
DM.sdsOutWarehouseDetail.Open;
end;
procedure TfrmWarehouseOut.edtInReceiveIDKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
var
InNo: string;
begin
if DM.sdsInWarehouse.State <> dsInsert then
begin
Application.MessageBox('系统错误:请首先点新增功能按钮!','系统信息',mb_ok+MB_ICONWARNING );
edtInReceiveID.SetFocus; Exit;
end;
if key=VK_RETURN then
begin
if trim(edtInReceiveID.text)='' then
begin
if DM.sdsOutWarehouse.State <> dsInsert then
DM.DataSetInsert(DM.sdsInWarehouse);
DM.OfferTypeID('select InReceiveID from WMS_OutWarehouseInfo where InReceiveID like'+#39+'CK'+formatdatetime('yyyymmdd',now)+'%'+#39,InNo);
edtInReceiveID.text:='CK'+formatdatetime('yyyymmdd',now)+'000'+InNo;
edtVendorDept.setfocus;
end
else
begin
edtVendorDept.setfocus;
end;
end;
end;
procedure TfrmWarehouseOut.sbtnFirstClick(Sender: TObject);
begin
DM.DataSetFirst(DM.sdsOutWarehouse);
end;
procedure TfrmWarehouseOut.sbtnPriorClick(Sender: TObject);
begin
DM.DataSetPrior(DM.sdsOutWarehouse);
end;
procedure TfrmWarehouseOut.sbtnNextClick(Sender: TObject);
begin
DM.DataSetNext(DM.sdsOutWarehouse);
end;
procedure TfrmWarehouseOut.sbtnLastClick(Sender: TObject);
begin
DM.DataSetLast(DM.sdsOutWarehouse);
end;
procedure TfrmWarehouseOut.sbtnAddClick(Sender: TObject);
begin
DM.DataSetInsert(DM.sdsOutWarehouse);
DM.DataSetInsert(DM.sdsOutWarehouseDetail);
end;
procedure TfrmWarehouseOut.sbtnSaveClick(Sender: TObject);
var
FWarehouseName,FMaterialID,FMaterialName,FMaterialType,FMaterialModel,FMaterialSpecs,
FMaterialUnit,FMaterialNum,FMaterialPrice,FMaterialMoney:string;
str_sql:string;
begin
if edtInReceiveID.Text='' then
begin
Application.MessageBox('系统错误:出库编号不能为空!','系统信息',mb_ok+MB_ICONWARNING );
edtInReceiveID.SetFocus; Exit;
end;
if edtWareName.Text='' then
begin
Application.MessageBox('系统错误:仓库不能为空!','系统信息',mb_ok+MB_ICONWARNING );
edtWareName.SetFocus; Exit;
end;
if edt_MaterialID.Text='' then
begin
Application.MessageBox('系统错误:物品编号不能为空!','系统信息',mb_ok+MB_ICONWARNING );
edt_MaterialID.SetFocus; Exit;
end;
if edtWareDate.Text='' then
begin
Application.MessageBox('系统错误:出库时间不能为空!','系统信息',mb_ok+MB_ICONWARNING );
edtWareDate.SetFocus; Exit;
end;
try
str_sql := 'select WarehouseNO from wms_warehouse where WarehouseName='+#39+
edtWareName.Text+#39+' and MaterialName='+#39+edt_MaterialName.Text+#39;
DM.sdspub.Close;
DM.sdspub.DataSet.CommandText := str_sql;
DM.sdspub.Open;
if DM.sdspub.RecordCount<=0 then
begin
Application.MessageBox('系统错误:库存中没有此物品,请联系仓库管理员!','系统信息',mb_ok+MB_ICONWARNING );
edtMaterialNum.SetFocus; Exit;
end;
except
on e : exception do
begin
Application.MessageBox(pchar('错误:数据写入数据库失败.错误代码:' + e.Message),
'连接错误',MB_OK+MB_ICONWARNING);
abort;
end;
end;
FWarehouseName := edtWareName.Text;
FMaterialID := edt_MaterialID.Text;
FMaterialName := edt_MaterialName.Text;
FMaterialType := edtMaterialType.Text;
FMaterialModel := edtMaterialModel.Text;
FMaterialSpecs := edtMaterialSpecs.Text;
FMaterialUnit := edtMaterialUnit.Text;
FMaterialNum := edtMaterialNum.Text;
FMaterialPrice := edtMaterialPrice.Text;
FMaterialMoney := edtMaterialMoney.Text;
if DM.sdsOutWarehouse.State in [dsInsert, dsEdit] then
begin
//DM.sdsInWarehouse.fieldbyname('InReceiveDate').AsDateTime := dtpWareDate.Date;
DM.sdsOutWarehouse.ApplyUpdates(-1);
DM.sdsOutWarehouseDetail.ApplyUpdates(-1);
SaveOutWarehouse(FWarehouseName,FMaterialID,FMaterialName,FMaterialType,FMaterialModel,FMaterialSpecs,FMaterialUnit,FMaterialNum,FMaterialPrice,FMaterialMoney);
end;
end;
procedure TfrmWarehouseOut.SaveOutWarehouse(var AWarehouseName,
AMaterialID, AMaterialName, AMaterialType, AMaterialModel,
AMaterialSpecs, AMaterialUnit, AMaterialNum, AMaterialPrice,
AMaterialMoney: string);
var
str_sql:string;
Money:Integer;
begin
try
str_sql := 'select WarehouseNO from wms_warehouse where WarehouseName='+#39+
AWarehouseName+#39+' and MaterialName='+#39+AMaterialName+#39;
DM.sdspub.Close;
DM.sdspub.DataSet.CommandText := str_sql;
DM.sdspub.Open;
if DM.sdspub.RecordCount>0 then
begin
Money :=StrToInt(AMaterialNum) * StrToInt(AMaterialPrice);
str_sql := 'update wms_warehouse set MaterialUnit='+#39+AMaterialUnit+#39+',MaterialPrice='+AMaterialPrice+
',MaterialMoney= MaterialMoney - '+IntToStr(Money)+ ',MaterialNum=MaterialNum - ' +AMaterialNum+
' where MaterialName='+#39+AMaterialName+#39+' and WarehouseName='+#39+AWarehouseName+#39;
DM.sdsWarehouse.Close;
DM.sdsWarehouse.DataSet.CommandText := str_sql;
DM.sdsWarehouse.Execute;
end;
except
on e : exception do
begin
Application.MessageBox(pchar('错误:数据写入数据库失败.错误代码:' + e.Message),
'连接错误',MB_OK+MB_ICONWARNING);
abort;
end
else
Application.MessageBox('出库保存失败','连接错误',MB_OK+MB_ICONWARNING);
end;
end;
procedure TfrmWarehouseOut.btnCancelClick(Sender: TObject);
begin
DM.DataSetCancel(DM.sdsOutWarehouse);
DM.DataSetCancel(DM.sdsOutWarehouseDetail);
end;
procedure TfrmWarehouseOut.sbtnExitClick(Sender: TObject);
begin
Close;
end;
procedure TfrmWarehouseOut.edtVendorDeptKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key=VK_SPACE then
begin
frmSpellInput.showFormData('WMS_Customer','CustomerName','CustomerSpell',ACode,AName); //
edtVendorDept.Text:=AName;
edtWareName.SetFocus;
end;
end;
procedure TfrmWarehouseOut.edtWareNameKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key=VK_SPACE then
begin
frmSpellInput.showFormData('WMS_WareInfo','WarehouseName','WarehouseID',ACode,AName); //
edtWareName.Text:=AName;
edtWareDate.SetFocus;
end;
end;
procedure TfrmWarehouseOut.edt_MaterialIDKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key=VK_SPACE then
begin
frmMaterialSearch.GetMaterialInfo(
MaterialName,
MaterialID,
MaterialSpell,
MaterialModel,
MaterialSpecs,
MaterialType,
MaterialUnit,
MaterialPrice);
edt_MaterialName.text:=MaterialName;
edt_MaterialID.text:=MaterialID;
edtMaterialSpell.text:=MaterialSpell;
edtMaterialModel.text:=MaterialModel;
edtMaterialSpecs.text:=MaterialSpecs;
edtMaterialType.text:=MaterialType;
edtMaterialUnit.text:=MaterialUnit;
edtMaterialPrice.text:=MaterialPrice;
end;
{ }
end;
procedure TfrmWarehouseOut.edtWareDateKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
edtWareDate.Text := formatdatetime('yyyy-mm-dd',now);
edtInvoiceNO.SetFocus;
end;
procedure TfrmWarehouseOut.sbtnDeleteClick(Sender: TObject);
begin
DM.DataSetDelete(DM.sdsOutWarehouse);
if DM.sdsOutWarehouse.State in [dsInsert, dsEdit] then
begin
if DM.sdsOutWarehouse.RecordCount > 0 then
if MessageDlg('确定删除当前记录吗?', mtWarning, [mbOk, mbCancel], 0) = mrOK then
begin
DM.sdsOutWarehouse.Delete;
DM.sdsOutWarehouse.ApplyUpdates(-1);
DM.sdsOutWarehouseDetail.Delete;
DM.sdsOutWarehouseDetail.ApplyUpdates(-1);
end;
end;
end;
procedure TfrmWarehouseOut.edt_MaterialIDKeyPress(Sender: TObject;
var Key: Char);
begin
edtMaterialNum.setfocus;
end;
procedure TfrmWarehouseOut.edtMaterialNumKeyPress(Sender: TObject;
var Key: Char);
var
Money: Integer;
begin
if edtMaterialNum.Text='' then Exit;
Money :=StrToInt(edtMaterialNum.Text) * StrToInt(edtMaterialPrice.Text);
edtMaterialMoney.Text := IntToStr(Money);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -