📄 inv600_01.pas.svn-base
字号:
unit Inv600_01;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BAS200_10, dxExEdtr, ActnList, DB, ADODB, Menus, dxCntner, dxTL,
dxDBCtrl, dxDBGrid, ExtCtrls, ComCtrls, ToolWin, dxDBTLCl, dxGrClms,
Buttons, StdCtrls, wwdbdatetimepicker, FR_DSet;
type
TInv600_01Form = class(TBas200_10Form)
lblDate: TLabel;
lblClass: TLabel;
Label1: TLabel;
edtFromDate: TwwDBDateTimePicker;
edtToDate: TwwDBDateTimePicker;
sbSearch: TSpeedButton;
ADOQuery1I600A_001: TWideStringField;
ADOQuery1I600A_002: TWideStringField;
ADOQuery1I600A_003: TSmallintField;
ADOQuery1I100_002: TWideStringField;
ADOQuery1I100_003: TWideStringField;
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;
dxDBGrid1I600A_001: TdxDBGridColumn;
dxDBGrid1I600A_002: TdxDBGridColumn;
dxDBGrid1I600A_003: TdxDBGridMaskColumn;
dxDBGrid1I100_002: TdxDBGridColumn;
dxDBGrid1I100_003: TdxDBGridColumn;
dxDBGrid1I600A_005: TdxDBGridDateColumn;
dxDBGrid1I600A_006: TdxDBGridDateColumn;
dxDBGrid1I600A_007: TdxDBGridDateColumn;
dxDBGrid1I600A_008: TdxDBGridDateColumn;
dxDBGrid1I600A_009: TdxDBGridMaskColumn;
dxDBGrid1I600A_010: TdxDBGridDateColumn;
dxDBGrid1I600A_011: TdxDBGridColumn;
dxDBGrid1I600A_012: TdxDBGridDateColumn;
dxDBGrid1I600A_013: TdxDBGridColumn;
qryInv600B: TADOQuery;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbSearchClick(Sender: TObject);
procedure Action1Execute(Sender: TObject);
procedure ADOQuery1I600A_003GetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure ActPrintExecute(Sender: TObject);
procedure ADOQuery1AfterScroll(DataSet: TDataSet);
private
AStatus:array [0..2] of string;
procedure UpdatePrintData;
{ Private declarations }
public
procedure SetInterface; override;
procedure InsertEvent; override;
procedure UpdateEvent; override;
procedure DeleteEvent; override;
procedure BrowseEvent; override;
procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
{ Public declarations }
end;
var
Inv600_01Form: TInv600_01Form;
implementation
uses SYSDATA, CommFun, Inv600_02, Inv600_03;
{$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_01Form.UpdatePrintData;
begin
//设置盘点计划明细表的已打印字段=True
ExecSQL('update INV600B set I600B_006='+GetBoolean(True)+' where I600B_001='+''''+ADOQuery1I600A_001.AsString+'''');
//设置盘点计划状态为“执行”状态,实际开始日期=当前打印日期
ExecSQL('update INV600A set I600A_003=1,I600A_007='+GetDateString(GetServerDate)+' where I600A_001='+''''+ADOQuery1I600A_001.AsString+'''');
end;
procedure TInv600_01Form.SetInterface;
begin
inherited;
Caption:=GetDBString('INV60001001'); //盘点计划维护
ADOQuery1I600A_001.DisplayLabel:=GetDBString('INV60001002'); //盘点单号
ADOQuery1I600A_002.DisplayLabel:=GetDBString('INV60001003'); //盘点名称
ADOQuery1I600A_003.DisplayLabel:=GetDBString('INV60001004'); //盘点状态
ADOQuery1I600A_004.DisplayLabel:=GetDBString('INV60001005'); //预计开始
ADOQuery1I600A_005.DisplayLabel:=GetDBString('INV60001006'); //实际开始
ADOQuery1I600A_006.DisplayLabel:=GetDBString('INV60001007'); //实际完成
ADOQuery1I600A_007.DisplayLabel:=GetDBString('INV60001008'); //项目数量
ADOQuery1I600A_008.DisplayLabel:=GetDBString('INV60001009'); //制单日期
ADOQuery1I600A_009.DisplayLabel:=GetDBString('INV60001010'); //制单人员
ADOQuery1I600A_010.DisplayLabel:=GetDBString('INV60001011'); //修改日期
ADOQuery1I600A_011.DisplayLabel:=GetDBString('INV60001012'); //修改人员
ADOQuery1I600A_012.DisplayLabel:=GetDBString('INV60001013'); //备注说明
Action1.Caption:=GetDBString('INV60001014'); //生成
Action1.Enabled:=ActInsert.Enabled;
lblDate.Caption:=GetDBString('INV60001015'); //日期
sbSearch.Caption:=GetDBString('INV60001016'); //查询
AStatus[0]:=GetDBString('INV60002017'); //计划
AStatus[1]:=GetDBString('INV60002018'); //执行
AStatus[2]:=GetDBString('INV60002019'); //完成
end;
procedure TInv600_01Form.FormCreate(Sender: TObject);
var
ADate:TDateTime;
begin
inherited;
SetInterface;
ADate:=GetServerDate;
edtFromDate.Date:=GetMonthFirstDate(ADate);
edtToDate.Date:=GetMonthEndDate(ADate);
sbSearch.Click;
end;
procedure TInv600_01Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
//
end;
procedure TInv600_01Form.sbSearchClick(Sender: TObject);
begin
inherited;
//查询
Screen.Cursor:=crHourGlass;
ADOQuery1.DisableControls;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from INV600A,INV100 where I600A_004=I100_001');
ADOQuery1.SQL.Add(' and I600A_005>='+GetDateString(edtFromDate.Date)+' and I600A_005<='+GetDateString(edtToDate.Date));
ADOQuery1.SQL.Add('order by I600A_001');
ADOQuery1.Open;
ADOQuery1.EnableControls;
ADOQuery1AfterScroll(ADOQuery1);
Screen.Cursor:=crDefault;
end;
procedure TInv600_01Form.ReportGetValue(const ParName: String; var ParValue: Variant);
begin
inherited;
if ParName='ADate' then ParValue:=lblDate.Caption //
else if ParName='AFromDate' then ParValue:=edtFromDate.Text //
else if ParName='AToDate' then ParValue:=edtToDate.Text //
else if ParName='I600A_001' then ParValue:=ADOQuery1I600A_001.DisplayLabel //
else if ParName='I600A_002' then ParValue:=ADOQuery1I600A_002.DisplayLabel //
else if ParName='I600A_003' then ParValue:=ADOQuery1I600A_003.DisplayLabel //
else if ParName='I600A_004' then ParValue:=ADOQuery1I600A_004.DisplayLabel //
else if ParName='I600A_005' then ParValue:=ADOQuery1I600A_005.DisplayLabel //
else if ParName='I600A_006' then ParValue:=ADOQuery1I600A_006.DisplayLabel //
else if ParName='I600A_007' then ParValue:=ADOQuery1I600A_007.DisplayLabel //
else if ParName='I600A_008' then ParValue:=ADOQuery1I600A_008.DisplayLabel //
else if ParName='I600A_009' then ParValue:=ADOQuery1I600A_009.DisplayLabel //
else if ParName='I600A_010' then ParValue:=ADOQuery1I600A_010.DisplayLabel //
else if ParName='I600A_011' then ParValue:=ADOQuery1I600A_011.DisplayLabel //
end;
procedure TInv600_01Form.Action1Execute(Sender: TObject);
begin
inherited;
//生成
Screen.Cursor:=crHourGlass;
Inv600_03Form:=TInv600_03Form.Create(Application);
Screen.Cursor:=crDefault;
Inv600_03Form.ShowModal;
sbSearch.Click;
end;
procedure TInv600_01Form.ADOQuery1I600A_003GetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
inherited;
if ADOQuery1.IsEmpty then Exit;
case Sender.AsInteger of
0:Text:=AStatus[0]; //计划
1:Text:=AStatus[1]; //执行
2:Text:=AStatus[2]; //完成
end;
end;
procedure TInv600_01Form.BrowseEvent;
begin
inherited;
Inv600_02Form:=TInv600_02Form.Create(Application);
Inv600_02Form.OpenData(ADOQuery1I600A_001.Value);
Inv600_02Form.ShowModal;
end;
procedure TInv600_01Form.DeleteEvent;
var
ACode:string;
begin
inherited;
//删除
if ADOQuery1I600A_003.AsInteger=2 then
begin
ShowMsg('UMS10000435'); //不允许删除完成状态的盘点计划
Abort;
end;
if IsExists('select 1 from INV610A where I610A_002='+''''+ADOQuery1I600A_001.AsString+'''') then
begin
ShowMsg('UMS10000514'); //不允许删除已汇报的盘点计划
Abort;
end;
ACode:=ADOQuery1I600A_001.AsString;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from INV600B where I600B_001='+''''+ACode+'''');
SYSDM.qryQuery.ExecSQL;
DeleteTableRecord(ADOQuery1,'INV600A','I600A_001='+''''+ACode+'''');
end;
procedure TInv600_01Form.InsertEvent;
begin
inherited;
//新增
Inv600_02Form:=TInv600_02Form.Create(Application);
Inv600_02Form.OpenData('');
Inv600_02Form.ActInsert.Execute;
Inv600_02Form.ShowModal;
end;
procedure TInv600_01Form.UpdateEvent;
begin
inherited;
//修改
//0=计划,1=执行,2=完成
if ADOQuery1I600A_003.AsInteger=1 then
begin
ShowMsg('UMS10000516'); //不允许修改执行状态的盘点计划
Abort;
end;
if ADOQuery1I600A_003.AsInteger=2 then
begin
ShowMsg('UMS10000434'); //不允许修改完成状态的盘点计划
Abort;
end;
Inv600_02Form:=TInv600_02Form.Create(Application);
Inv600_02Form.OpenData(ADOQuery1I600A_001.Value);
Inv600_02Form.ActUpdate.Execute;
Inv600_02Form.ShowModal;
end;
procedure TInv600_01Form.ActPrintExecute(Sender: TObject);
begin
if ADOQuery1I600A_003.AsInteger=2 then
begin
ShowMsg('UMS10000515'); //不允许打印完成状态的盘点计划
Abort;
end;
//更新盘点计划的库存数量
UpdateInvQty;
try
SYSDM.frReport2.OnPrintReport:=UpdatePrintData;
SYSDM.frDBDataSet1.RangeBegin:=rbCurrent;
SYSDM.frDBDataSet1.RangeEnd:=reCurrent;
SYSDM.frDBDataSet2.DataSet:=qryInv600B;
inherited;
finally
SYSDM.frDBDataSet1.RangeBegin:=rbFirst;
SYSDM.frDBDataSet1.RangeEnd:=reLast;
SYSDM.frReport2.OnPrintReport:=nil;
end;
end;
procedure TInv600_01Form.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
qryInv600B.Close;
qryInv600B.SQL.Clear;
qryInv600B.SQL.Add('select A.I600B_002 as FNo,A.I600B_003 as FItemNo,A.I600B_004 as FLocNo,A.I600B_005 as FQty,A.I600B_006 as FIsPrint,A.I600B_007 as FIsFinish,');
qryInv600B.SQL.Add(' B.I110_003 as FLocID,B.I110_004 as FLocName,C.I150_002 as FItemID,C.I150_003 as FItemName,C.I150_004 as FItemSpec,D.I140_002 as FUnitID,D.I140_003 as FUnitName');
qryInv600B.SQL.Add('from ((INV600B A left join INV110 B on A.I600B_004=B.I110_001) left join INV150 C on A.I600B_003=C.I150_001) left join INV140 D on C.I150_011=D.I140_001');
qryInv600B.SQL.Add('where I600B_001='+''''+ADOQuery1I600A_001.AsString+'''');
qryInv600B.SQL.Add('order by I600B_002');
qryInv600B.Open;
inherited;
end;
initialization
RegisterClass(TInv600_01Form);
finalization
UnRegisterClass(TInv600_01Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -