📄 inv600_02.pas.svn-base
字号:
unit Inv600_02;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BAS200_13, Mask, wwdbedit, Wwdotdot, Grids, Wwdbigrd, Wwdbgrid,
DB, ADODB, wwdbdatetimepicker, StdCtrls, ActnList, Menus, ComCtrls,
ToolWin, Buttons, DBGrids, FR_DSet;
type
TInv600_02Form = class(TBas200_13Form)
lblStatus: TLabel;
lblName: TLabel;
lblRemark: TLabel;
lblFromDate: TLabel;
lblFactFromDate: TLabel;
lblFactToDate: TLabel;
memRemark: TMemo;
edtFactFromDate: TwwDBDateTimePicker;
edtFromDate: TwwDBDateTimePicker;
edtFactToDate: TwwDBDateTimePicker;
edtStatus: TEdit;
edtName: TEdit;
dsInv600B: TDataSource;
adsInv600B: TADODataSet;
pmInv600B: TPopupMenu;
mmiAdd: TMenuItem;
mmiEdit: TMenuItem;
mmiDel: TMenuItem;
wwDBGrid1: TwwDBGrid;
adsInv600BFNo: TIntegerField;
adsInv600BFLocNo: TIntegerField;
adsInv600BFLocID: TWideStringField;
adsInv600BFLocName: TWideStringField;
adsInv600BFItemNo: TIntegerField;
adsInv600BFItemID: TWideStringField;
adsInv600BFItemName: TWideStringField;
adsInv600BFItemSpec: TWideStringField;
adsInv600BFUnitID: TWideStringField;
adsInv600BFUnitName: TWideStringField;
adsInv600BFQty: TFloatField;
adsInv600BFIsPrint: TBooleanField;
adsInv600BFIsFinish: TBooleanField;
edtItemID: TwwDBComboDlg;
qryInv100: TADOQuery;
qryInv501: TADOQuery;
lblToDate: TLabel;
edtToDate: TwwDBDateTimePicker;
lblWhs: TLabel;
edtWhs: TEdit;
edtWhsName: TEdit;
sbWhs: TSpeedButton;
lblQty: TLabel;
edtQty: TEdit;
ADOQuery1I600A_001: TWideStringField;
ADOQuery1I600A_002: TWideStringField;
ADOQuery1I600A_003: TSmallintField;
ADOQuery1I600A_004: TIntegerField;
ADOQuery1I600A_005: TDateTimeField;
ADOQuery1I600A_006: TDateTimeField;
ADOQuery1I600A_007: TDateTimeField;
ADOQuery1I600A_008: TDateTimeField;
ADOQuery1I600A_009: TIntegerField;
ADOQuery1I600A_010: TDateTimeField;
ADOQuery1I600A_011: TWideStringField;
ADOQuery1I600A_012: TDateTimeField;
ADOQuery1I600A_013: TWideStringField;
ADOQuery1I600A_014: TMemoField;
ADOQuery1I100_002: TWideStringField;
ADOQuery1I100_003: TWideStringField;
qryInv100I100_001: TAutoIncField;
qryInv100I100_002: TWideStringField;
qryInv100I100_003: TWideStringField;
ADODataSet1: TADODataSet;
qryInv600B: TADOQuery;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure edtItemIDCustomDlg(Sender: TObject);
procedure sbWhsClick(Sender: TObject);
procedure wwDBGrid1UpdateFooter(Sender: TObject);
procedure edtWhsExit(Sender: TObject);
procedure adsInv600BBeforePost(DataSet: TDataSet);
procedure mmiAddClick(Sender: TObject);
procedure mmiEditClick(Sender: TObject);
procedure mmiDelClick(Sender: TObject);
procedure wwDBGrid1Enter(Sender: TObject);
procedure wwDBGrid1Exit(Sender: TObject);
procedure pmInv600BPopup(Sender: TObject);
procedure ActPrintExecute(Sender: TObject);
private
ALastNo:Integer;
AStatus:array [0..2] of string;
procedure GetDetailData;
procedure UpdatePrintData;
{ Private declarations }
public
procedure OpenData(ACode:String);
procedure SetInterface; override;
procedure GetDataInfo; override;
procedure InsertEvent; override;
procedure UpdateEvent; override;
procedure DeleteEvent; override;
procedure SetEmptyInit; override;
procedure TableBeforePost; override;
procedure TableAfterPost; override;
procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
{ Public declarations }
end;
var
Inv600_02Form: TInv600_02Form;
implementation
uses SYSDATA, CommFun, InvComm, HwSelData, HwSelDataA;
{$R *.dfm}
//更新盘点计划的库存数量
procedure UpdateInvQty;
var
AWhsNo,ALocNo,AItemNo:String;
AQuery:TADOQuery;
AQty:Double;
begin
AQuery:=TADOQuery.Create(nil);
AQuery.Connection:=SYSDM.ADOC;
AQuery.Close;
AQuery.SQL.Clear;
AQuery.SQL.Add('select * from INV600A, INV600B where I600A_001=I600B_001');
AQuery.Open;
while not AQuery.Eof do
begin
AWhsNo:=AQuery.FieldByName('I600A_004').AsString;
ALocNo:=AQuery.FieldByName('I600B_004').AsString;
AItemNo:=AQuery.FieldByName('I600B_003').AsString;
if ALocNo='' then ALocNo:='0';
//取得最新库存余额
AQty:=GetValue('select I501_005 from INV501 where I501_001='+AWhsNo+' and I501_002='+ALocNo+' and I501_003='+AItemNo);
AQuery.Edit;
AQuery.FieldByName('I600B_005').Value:=AQty;
AQuery.Post;
AQuery.Next;
end;
AQuery.Close;
AQuery.Free;
end;
//更新盘点计划的状态及实际开始日期
procedure TInv600_02Form.UpdatePrintData;
begin
//设置盘点计划明细表的已打印字段=True
ExecSQL('update INV600B set I600B_006='+GetBoolean(True)+' where I600B_001='+''''+edtCode.text+'''');
//设置盘点计划状态为“执行”状态,实际开始日期=当前打印日期
ExecSQL('update INV600A set I600A_003=1,I600A_007='+GetDateString(GetServerDate)+' where I600A_001='+''''+edtCode.text+'''');
end;
procedure TInv600_02Form.SetInterface;
begin
inherited;
Caption:=GetDBString('INV60002001'); //盘点计划维护
ADOQuery1I600A_001.DisplayLabel:=GetDBString('INV60002002'); //盘点单号
ADOQuery1I600A_002.DisplayLabel:=GetDBString('INV60002003'); //盘点名称
ADOQuery1I600A_003.DisplayLabel:=GetDBString('INV60002004'); //盘点状态
ADOQuery1I100_002.DisplayLabel:=GetDBString('INV60002005'); //仓库编号
ADOQuery1I100_003.DisplayLabel:=GetDBString('INV60002006'); //仓库名称
ADOQuery1I600A_005.DisplayLabel:=GetDBString('INV60002007'); //预计开始
ADOQuery1I600A_006.DisplayLabel:=GetDBString('INV60002008'); //预计完成
ADOQuery1I600A_007.DisplayLabel:=GetDBString('INV60002009'); //实际开始
ADOQuery1I600A_008.DisplayLabel:=GetDBString('INV60002010'); //实际完成
ADOQuery1I600A_009.DisplayLabel:=GetDBString('INV60002011'); //项目数量
ADOQuery1I600A_010.DisplayLabel:=GetDBString('INV60002012'); //制单日期
ADOQuery1I600A_011.DisplayLabel:=GetDBString('INV60002013'); //制单人员
ADOQuery1I600A_012.DisplayLabel:=GetDBString('INV60002014'); //修改日期
ADOQuery1I600A_013.DisplayLabel:=GetDBString('INV60002015'); //修改人员
ADOQuery1I600A_014.DisplayLabel:=GetDBString('INV60002016'); //备注说明
AStatus[0]:=GetDBString('INV60002017'); //计划
AStatus[1]:=GetDBString('INV60002018'); //执行
AStatus[2]:=GetDBString('INV60002019'); //完成
adsInv600B.FieldByName('FItemID').DisplayLabel:=GetDBString('INV60002020'); //料品编号
adsInv600B.FieldByName('FItemName').DisplayLabel:=GetDBString('INV60002021'); //料品名称
adsInv600B.FieldByName('FItemSpec').DisplayLabel:=GetDBString('INV60002022'); //规格型号
adsInv600B.FieldByName('FUnitID').DisplayLabel:=GetDBString('INV60002023'); //单位编号
adsInv600B.FieldByName('FUnitName').DisplayLabel:=GetDBString('INV60002024'); //单位名称
adsInv600B.FieldByName('FLocID').DisplayLabel:=GetDBString('INV60002025'); //库位编号
adsInv600B.FieldByName('FLocName').DisplayLabel:=GetDBString('INV60002026'); //库位名称
adsInv600B.FieldByName('FQty').DisplayLabel:=GetDBString('INV60002027'); //库存数量
adsInv600B.FieldByName('FIsPrint').DisplayLabel:=GetDBString('INV60002028'); //已打印否
adsInv600B.FieldByName('FIsFinish').DisplayLabel:=GetDBString('INV60002029'); //已完成否
lblCode.Caption:=GetDBString('INV60002030'); //盘点单号
lblName.Caption:=GetDBString('INV60002031'); //盘点名称
lblStatus.Caption:=GetDBString('INV60002032'); //盘点状态
lblWhs.Caption:=GetDBString('INV60002033'); //仓库编号
lblQty.Caption:=GetDBString('INV60002034'); //项目数量
lblFromDate.Caption:=GetDBString('INV60002035'); //预计开始
lblToDate.Caption:=GetDBString('INV60002036'); //预计完成
lblFactFromDate.Caption:=GetDBString('INV60002037'); //实际开始
lblFactToDate.Caption:=GetDBString('INV60002038'); //实际完成
lblRemark.Caption:=GetDBString('INV60002039'); //备注说明
end;
procedure TInv600_02Form.FormCreate(Sender: TObject);
begin
inherited;
ATableName:='INV600A';
AFieldName:='I600A_001';
qryInv100.Open;
qryInv501.Open;
end;
procedure TInv600_02Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
qryInv100.Close;
qryInv501.Close;
end;
procedure TInv600_02Form.OpenData(ACode: String);
begin
inherited;
if ACode='' then AMode:='ADD' else AMode:='UPD';
ADOQuery1.DisableControls;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from INV600A,INV100 where I600A_004=I100_001 order by I600A_001');
ADOQuery1.Open;
ADOQuery1.Locate('I600A_001',ACode,[]);
ADOQuery1.EnableControls;
ADOQuery1AfterScroll(ADOQuery1);
end;
//从数据表中取得界面信息
procedure TInv600_02Form.GetDataInfo;
begin
//显示数据信息
edtCode.Text :=ADOQuery1.FieldByName('I600A_001').AsString; //盘点单号
edtName.Text :=ADOQuery1.FieldByName('I600A_002').AsString; //盘点名称
edtStatus.Text :=AStatus[ADOQuery1.FieldByName('I600A_003').AsInteger]; //盘点状态
edtWhs.Text :=ADOQuery1.FieldByName('I100_002').AsString; //预计开始
edtWhsName.Text :=ADOQuery1.FieldByName('I100_003').AsString; //预计开始
edtFromDate.Date :=ADOQuery1.FieldByName('I600A_005').Value; //预计开始
edtToDate.Date :=ADOQuery1.FieldByName('I600A_006').Value; //预计完成
if ADOQuery1.FieldByName('I600A_007').AsString<>'' then edtFactFromDate.Date :=ADOQuery1.FieldByName('I600A_007').Value; //实际开始
if ADOQuery1.FieldByName('I600A_008').AsString<>'' then edtFactToDate.Date :=ADOQuery1.FieldByName('I600A_008').Value; //实际完成
edtQty.Text :=ADOQuery1.FieldByName('I600A_009').AsString; //项目数量
edtCreateDate.Text :=ADOQuery1.FieldByName('I600A_010').AsString; //制单日期
edtCreateBy.Text :=ADOQuery1.FieldByName('I600A_011').AsString; //制单人员
edtUpdateDate.Text :=ADOQuery1.FieldByName('I600A_012').AsString; //修改日期
edtUpdateBy.Text :=ADOQuery1.FieldByName('I600A_013').AsString; //修改人员
memRemark.Text :=ADOQuery1.FieldByName('I600A_014').AsString; //备注说明
//取得明细表数据
GetDetailData;
end;
procedure TInv600_02Form.TableBeforePost;
var
ADate:TDateTime;
begin
inherited;
if trim(edtName.Text)='' then
begin
ShowMsg('UMS10000438'); //盘点名称不能为空
edtName.SetFocus;
Abort;
end;
if trim(edtWhs.Text)='' then
begin
ShowMsg('UMS10000439'); //仓库编号不能为空
edtWhs.SetFocus;
Abort;
end;
if not qryInv100.Locate('I100_002',edtWhs.Text,[]) then
begin
ShowMsg('UMS10000440'); //无效的仓库编号,请重新输入
edtWhs.SetFocus;
Abort;
end;
if trim(edtFromDate.Text)='' then
begin
ShowMsg('UMS10000441'); //预计开始日期不能为空
edtFromDate.SetFocus;
Abort;
end;
if trim(edtToDate.Text)='' then
begin
ShowMsg('UMS10000442'); //预计完成日期不能为空
edtToDate.SetFocus;
Abort;
end;
if edtToDate.Date>edtToDate.Date then
begin
ShowMsg('UMS10000443'); //预计开始日期不能大于完成日期
edtToDate.SetFocus;
Abort;
end;
if adsInv600B.IsEmpty then
begin
ShowMsg('UMS10000444'); //盘点项目数量不能为空
wwDBGrid1.SetFocus;
Abort;
end;
qryInv600B.Close;
qryInv600B.SQL.Clear;
qryInv600B.SQL.Add('delete from INV600B where I600B_001='+''''+edtCode.Text+'''');
qryInv600B.ExecSQL;
if AMode='ADD' then
begin
ADOQuery1.Insert;
ADOQuery1.FieldByName('I600A_003').Value:=0; //
ADOQuery1.FieldByName('I600A_010').AsString:=edtCreateDate.Text; //制单日期
ADOQuery1.FieldByName('I600A_011').AsString:=edtCreateBy.Text; //制单人员
ADOQuery1.FieldByName('I600A_012').AsString:=edtUpdateDate.Text; //修改日期
ADOQuery1.FieldByName('I600A_013').AsString:=edtUpdateBy.Text; //修改人员
end else
begin
ADate:=GetServerDate;
ADOQuery1.Edit;
ADOQuery1.FieldByName('I600A_012').Value:=ADate; //修改日期
ADOQuery1.FieldByName('I600A_013').Value:=AUserName; //修改人员
end;
ADOQuery1.FieldByName('I600A_002').Value:=edtName.Text; //
ADOQuery1.FieldByName('I600A_004').Value:=qryInv100.FieldByName('I100_001').Value; //
ADOQuery1.FieldByName('I600A_005').Value:=edtFromDate.Date; //
ADOQuery1.FieldByName('I600A_006').Value:=edtToDate.Date; //
ADOQuery1.FieldByName('I600A_009').Value:=StrToInt(edtQty.Text); //
ADOQuery1.FieldByName('I600A_014').Value:=memRemark.Text; //
end;
procedure TInv600_02Form.TableAfterPost;
begin
inherited;
qryInv600B.Close;
qryInv600B.SQL.Clear;
qryInv600B.SQL.Add('select * from INV600B where I600B_001='+''''+edtCode.Text+'''');
qryInv600B.Open;
adsInv600B.First;
while not adsInv600B.Eof do
begin
qryInv600B.Append;
qryInv600B.FieldByName('I600B_001').Value:=edtCode.Text;
qryInv600B.FieldByName('I600B_002').Value:=adsInv600B.FieldByName('FNo').Value;
qryInv600B.FieldByName('I600B_003').Value:=adsInv600B.FieldByName('FItemNo').Value;
if adsInv600B.FieldByName('FLocNo').Value<>0 then
qryInv600B.FieldByName('I600B_004').Value:=adsInv600B.FieldByName('FLocNo').Value;
qryInv600B.FieldByName('I600B_005').Value:=adsInv600B.FieldByName('FQty').Value;
qryInv600B.FieldByName('I600B_006').Value:=adsInv600B.FieldByName('FIsPrint').Value;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -