📄 inv310_01.pas.svn-base
字号:
unit Inv310_01;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Bas200_11, dxExEdtr, DB, ADODB, ActnList, Menus, dxCntner, dxTL,
dxDBCtrl, dxDBGrid, ExtCtrls, ComCtrls, ToolWin, StdCtrls,
wwdbdatetimepicker, Buttons, dxDBTLCl, dxGrClms;
type
TInv310_01Form = class(TBas200_11Form)
lblDate: TLabel;
lblWhs: TLabel;
sbSearch: TSpeedButton;
edtFromDate: TwwDBDateTimePicker;
edtToDate: TwwDBDateTimePicker;
cbWhs: TComboBox;
lblItem: TLabel;
edtItemID: TEdit;
sbItem: TSpeedButton;
qryInv500: TADOQuery;
qryInv150: TADOQuery;
adsLists: TADODataSet;
adsListsFNo: TIntegerField;
adsListsFName: TStringField;
adsListsFParent: TIntegerField;
ADODataSet1FDate: TDateTimeField;
ADODataSet1FBillNo: TStringField;
ADODataSet1FType: TStringField;
ADODataSet1FWhsID: TStringField;
ADODataSet1FWhsName: TStringField;
ADODataSet1FLocID: TStringField;
ADODataSet1FLocName: TStringField;
ADODataSet1FRemark: TStringField;
ADODataSet1FInQty: TFloatField;
ADODataSet1FOutQty: TFloatField;
ADODataSet1FInvQty: TFloatField;
dxDBGrid1FDate: TdxDBGridDateColumn;
dxDBGrid1FBillNo: TdxDBGridMaskColumn;
dxDBGrid1FType: TdxDBGridMaskColumn;
dxDBGrid1FRemark: TdxDBGridMaskColumn;
dxDBGrid1FInQty: TdxDBGridMaskColumn;
dxDBGrid1FOutQty: TdxDBGridMaskColumn;
dxDBGrid1FInvQty: TdxDBGridMaskColumn;
dxDBGrid1FWhsName: TdxDBGridMaskColumn;
dxDBGrid1FLocName: TdxDBGridMaskColumn;
ADODataSet1FTypeNo: TIntegerField;
qryInv150I150_001: TAutoIncField;
qryInv150I150_002: TWideStringField;
qryInv150I150_003: TWideStringField;
qryInv150I140_003: TWideStringField;
adsInv100: TADODataSet;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbSearchClick(Sender: TObject);
procedure sbItemClick(Sender: TObject);
procedure edtItemIDExit(Sender: TObject);
procedure dxDBGrid1FWhsNameDrawSummaryFooter(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; var AText: String;
var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
var ADone: Boolean);
procedure ActPrintExecute(Sender: TObject);
private
{ Private declarations }
public
procedure OpenData(AWhsNo,AItemNo:Integer;AFromDate,AToDate:TDateTime);
procedure SetInterface; override;
procedure BrowseEvent; override;
procedure RefreshEvent; override;
procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
{ Public declarations }
end;
var
Inv310_01Form: TInv310_01Form;
implementation
uses SYSDATA, CommFun, InvComm, Inv500_02, Inv510_02, HwSelData;
{$R *.dfm}
procedure TInv310_01Form.OpenData(AWhsNo,AItemNo:Integer;AFromDate,AToDate:TDateTime);
begin
adsLists.Locate('FNo',AWhsNo,[]);
cbWhs.Text:=adsLists.FieldByName('FName').AsString;
qryInv150.Locate('I150_001',AItemNo,[]);
edtItemID.Text:=qryInv150.FieldByName('I150_002').AsString;
edtFromDate.Date:=AFromDate;
edtToDate.Date:=AToDate;
sbSearch.Click;
end;
procedure TInv310_01Form.SetInterface;
begin
inherited;
Caption:=GetDBString('INV31001001'); //仓库状况查询
lblWhs.Caption:=GetDBString('INV31001002'); //仓库
lblItem.Caption:=GetDBString('INV31001003'); //料品
lblDate.Caption:=GetDBString('INV31001004'); //日期
sbSearch.Caption:=GetDBString('INV31001005'); //查询
ADODataSet1FWhsID.DisplayLabel:=GetDBString('INV31001006'); //仓库编号
ADODataSet1FWhsName.DisplayLabel:=GetDBString('INV31001007'); //仓库名称
ADODataSet1FLocID.DisplayLabel:=GetDBString('INV31001008'); //库位编号
ADODataSet1FLocName.DisplayLabel:=GetDBString('INV31001009'); //库位名称
ADODataSet1FDate.DisplayLabel:=GetDBString('INV31001010'); //进出日期
ADODataSet1FBillNo.DisplayLabel:=GetDBString('INV31001011'); //单据编号
ADODataSet1FType.DisplayLabel:=GetDBString('INV31001012'); //操作类型
ADODataSet1FRemark.DisplayLabel:=GetDBString('INV31001013'); //摘要说明
ADODataSet1FInQty.DisplayLabel:=GetDBString('INV31001014'); //入库数量
ADODataSet1FOutQty.DisplayLabel:=GetDBString('INV31001015'); //出库数量
ADODataSet1FInvQty.DisplayLabel:=GetDBString('INV31001016'); //库存数量
end;
procedure TInv310_01Form.FormCreate(Sender: TObject);
var
ADate:TDateTime;
begin
inherited;
ADate:=GetServerDate;
edtFromDate.Date:=GetMonthFirstDate(ADate);
edtToDate.Date:=GetMonthEndDate(ADate);
//取得所有仓库库位列表
adsLists.Close;
adsLists.CreateDataSet;
GetAllWhs(adsLists,cbWhs);
qryInv150.Open;
edtItemID.Text:=qryInv150.FieldByName('I150_002').AsString;
sbSearch.Click;
end;
procedure TInv310_01Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
adsLists.Close;
qryInv150.Close;
end;
procedure TInv310_01Form.RefreshEvent;
begin
inherited;
sbSearch.Click;
end;
procedure TInv310_01Form.ReportGetValue(const ParName: String;
var ParValue: Variant);
begin
inherited;
end;
//取得所有仓库和库位列表
procedure GetAllWhs(ADataSet: TADODataSet; AWhsNo,ALocNo:Integer);
var
S:String;
begin
ADataSet.Close;
ADataSet.CreateDataSet;
ADataSet.DisableControls;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
//取得所要的数据
// if ASuper then
// begin
SYSDM.qryQuery.SQL.Add('select * from INV100 A left join INV110 B on A.I100_001=B.I110_002');
if AWhsNo<>0 then S:='where A.I100_001='+IntToStr(AWhsNo);
if ALocNo<>0 then
if S='' then S:='where B.I110_001='+IntToStr(ALocNo) else S:=S+' and B.I110_001='+IntToStr(ALocNo);
{ end else
begin
SYSDM.qryQuery.SQL.Add('select * from SYS500C, INV100');
SYSDM.qryQuery.SQL.Add('where S500C_002=I100_001 and ');
SYSDM.qryQuery.SQL.Add(' S500C_003=''WHS'' and S500C_004='+GetBoolean(True));
SYSDM.qryQuery.SQL.Add(' and S500C_001='+IntToStr(AUserID));
SYSDM.qryQuery.SQL.Add('order by I100_002');
end; }
SYSDM.qryQuery.Open;
while not SYSDM.qryQuery.Eof do
begin
ADataSet.Append;
ADataSet.FieldByName('I100_001').Value:=SYSDM.qryQuery.FieldByName('I100_001').Value;
ADataSet.FieldByName('I100_002').Value:=SYSDM.qryQuery.FieldByName('I100_002').Value;
ADataSet.FieldByName('I100_003').Value:=SYSDM.qryQuery.FieldByName('I100_003').Value;
ADataSet.FieldByName('I110_001').Value:=SYSDM.qryQuery.FieldByName('I110_001').Value;
ADataSet.FieldByName('I110_003').Value:=SYSDM.qryQuery.FieldByName('I110_003').Value;
ADataSet.FieldByName('I110_004').Value:=SYSDM.qryQuery.FieldByName('I110_004').Value;
SYSDM.qryQuery.Next;
end;
ADataSet.First;
ADataSet.EnableControls;
end;
procedure TInv310_01Form.sbSearchClick(Sender: TObject);
var
AWhsNo,ALocNo,AItemNo:Integer;
AFromDate,AToDate:TDateTime;
ABanlance,APrice,AAmount:Double;
begin
inherited;
if adsLists.IsEmpty then Exit;
adsLists.Locate('FName',cbWhs.Text,[]);
AWhsNo:=adsLists.FieldByName('FNo').AsInteger;
ALocNo:=0;
if AWhsNo<0 then
AWhsNo:=AWhsNo*-1
else if AWhsNo>0 then
begin
ALocNo:=AWhsNo;
AWhsNo:=0;
end;
if not qryInv150.Locate('I150_002',edtItemID.Text,[]) then
begin
ShowMsg('UMS10000460'); //输入的料品编号无效,请重新输入
edtItemID.SetFocus;
Abort;
end;
AItemNo:=qryInv150.FieldByName('I150_001').Value;
if (edtFromDate.Text='') or (edtToDate.Text='') then
begin
ShowMsg('UMS10000319'); //起止日期不可为空
if edtFromDate.Text='' then edtFromDate.SetFocus else edtToDate.SetFocus;
Abort;
end;
if edtFromDate.Date>edtToDate.Date then
begin
ShowMsg('UMS10000320'); //结束日期不能小于起始日期
edtToDate.SetFocus;
Abort;
end;
AFromDate:=edtFromDate.Date;
AToDate:=edtToDate.Date;
try
Screen.Cursor:=crHourGlass;
ADODataSet1.DisableControls;
ADODataSet1.Close;
ADODataSet1.CreateDataSet;
//取得所有进出仓记录
qryInv500.Close;
qryInv500.SQL.Clear;
qryInv500.SQL.Add('select A.*,B.I550_002,B.I550_003,C.I100_002,C.I100_003,D.I110_003,D.I110_004');
qryInv500.SQL.Add('from (((INV500 A left join INV550 B on A.I500_003=B.I550_001)');
qryInv500.SQL.Add(' left join INV100 C on A.I500_007=C.I100_001)');
qryInv500.SQL.Add(' left join INV110 D on A.I500_008=D.I110_001)');
qryInv500.SQL.Add('where I500_009='+IntToStr(AItemNo));
if AWhsNo<>0 then qryInv500.SQL.Add(' and I500_007='+IntToStr(AWhsNo));
if ALocNo<>0 then qryInv500.SQL.Add(' and I500_008='+IntToStr(ALocNo));
qryInv500.SQL.Add('and I500_005>='+GetDateString(AFromDate)+' and I500_005<='+GetDateString(AToDate)+' and I500_004<>0');
qryInv500.SQL.Add('order by I100_002,I110_003,I500_005,I500_017,I500_001');
qryInv500.Open;
while not qryInv500.Eof do
begin
ADODataSet1.Append;
ADODataSet1.FieldByName('FDate').Value:=qryInv500.FieldByName('I500_005').Value; //进出日期
ADODataSet1.FieldByName('FBillNo').Value:=qryInv500.FieldByName('I500_001').Value; //单据编号
ADODataSet1.FieldByName('FTypeNo').Value:=qryInv500.FieldByName('I500_003').Value; //操作类型电脑编号
ADODataSet1.FieldByName('FType').Value:=qryInv500.FieldByName('I550_003').Value; //操作类型
ADODataSet1.FieldByName('FWhsID').Value:=qryInv500.FieldByName('I100_002').Value; //仓库编号
ADODataSet1.FieldByName('FWhsName').Value:='['+qryInv500.FieldByName('I100_002').Value+']'+qryInv500.FieldByName('I100_003').Value; //仓库名称
ADODataSet1.FieldByName('FLocID').Value:=qryInv500.FieldByName('I110_003').Value; //库位编号
ADODataSet1.FieldByName('FLocName').Value:='['+qryInv500.FieldByName('I110_003').Value+']'+qryInv500.FieldByName('I110_004').Value; //库位名称
ADODataSet1.FieldByName('FRemark').Value:=qryInv500.FieldByName('I500_006').Value; //摘要说明
case qryInv500.FieldByName('I500_004').AsInteger of
0:ADODataSet1.FieldByName('FInQty').Value:=qryInv500.FieldByName('I500_011').Value; //期初建账
1:ADODataSet1.FieldByName('FInQty').Value:=qryInv500.FieldByName('I500_011').Value; //入仓数量
2:ADODataSet1.FieldByName('FOutQty').Value:=qryInv500.FieldByName('I500_011').Value; //出仓数量
3:ADODataSet1.FieldByName('FInQty').Value:=qryInv500.FieldByName('I500_011').Value; //调整数量
end;
ADODataSet1.FieldByName('FInvQty').Value:=qryInv500.FieldByName('I500_014').Value; //库存数量
ADODataSet1.Post;
qryInv500.Next;
end;
//取得仓库的期初余额
GetAllWhs(adsInv100,AWhsNo,ALocNo);
while not adsInv100.Eof do
begin
AWhsNo:=adsInv100.FieldByName('I100_001').AsInteger;
ALocNo:=adsInv100.FieldByName('I110_001').AsInteger;
GetItemOpenValue(AWhsNo,ALocNo,AItemNo,AFromDate,ABanlance,APrice,AAmount);
if (ADODataSet1.Locate('FWhsID;FLocID',VarArrayOf([adsInv100.FieldByName('I100_002').Value,adsInv100.FieldByName('I110_003').Value]),[])) or (ABanlance<>0) then
begin
ADODataSet1.Append;
ADODataSet1.FieldByName('FWhsID').Value:=adsInv100.FieldByName('I100_002').Value; //仓库编号
ADODataSet1.FieldByName('FWhsName').Value:='['+adsInv100.FieldByName('I100_002').Value+']'+adsInv100.FieldByName('I100_003').Value; //仓库名称
ADODataSet1.FieldByName('FLocID').Value:=adsInv100.FieldByName('I110_003').Value; //库位编号
ADODataSet1.FieldByName('FLocName').Value:='['+adsInv100.FieldByName('I110_003').Value+']'+adsInv100.FieldByName('I110_004').Value; //库位名称
ADODataSet1.FieldByName('FRemark').Value:='期初余额';
ADODataSet1.FieldByName('FInvQty').Value:=ABanlance;
ADODataSet1.Post;
end;
adsInv100.Next;
end;
finally
ADODataSet1.EnableControls;
Screen.Cursor:=crDefault;
end;
ARecordCount:=GetDataSetCount(ADODataSet1);
end;
procedure TInv310_01Form.BrowseEvent;
begin
inherited;
if ADODataSet1FBillNo.AsString='' then Exit;
if ADODataSet1.FieldByName('FTypeNo').AsInteger=15 then //转仓
begin
Inv510_02Form:=TInv510_02Form.Create(Application);
Inv510_02Form.OpenData(ADODataSet1FBillNo.AsString);
Inv510_02Form.ShowModal;
end else
begin
Inv500_02Form:=TInv500_02Form.Create(Application);
Inv500_02Form.OpenData(ADODataSet1FBillNo.AsString);
Inv500_02Form.ShowModal;
end;
end;
procedure TInv310_01Form.sbItemClick(Sender: TObject);
begin
inherited;
//料品资料
if not edtItemID.Focused then edtItemID.SetFocus;
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryInv150,nil);
if HwSelDataForm.ShowModal=1 then
begin
edtItemID.Text:=qryInv150.FieldByName('I150_002').AsString;
end;
end;
procedure TInv310_01Form.edtItemIDExit(Sender: TObject);
begin
inherited;
//料品编号
if trim(edtItemID.Text)='' then Exit;
if qryInv150.Locate('I150_002',edtItemID.Text,[]) then
begin
edtItemID.Text:=qryInv150.FieldByName('I150_002').AsString;
end else
begin
edtItemID.Text:='';
ShowMsg('UMS10000460'); //输入的料品编号无效,请重新输入
edtItemID.SetFocus;
Abort;
end;
end;
procedure TInv310_01Form.dxDBGrid1FWhsNameDrawSummaryFooter(
Sender: TObject; ACanvas: TCanvas; ARect: TRect; var AText: String;
var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
var ADone: Boolean);
begin
inherited;
AColor:=clWhite;
AText:=GetDBString('COM00004002')+IntToStr(ARecordCount); //记录总数:
end;
procedure TInv310_01Form.ActPrintExecute(Sender: TObject);
begin
inherited;
end;
initialization
RegisterClass(TInv310_01Form);
finalization
UnRegisterClass(TInv310_01Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -