📄 zdpk.pas
字号:
unit zdpk;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Db, Grids, DBGrids, ComCtrls, DBTables, Buttons;
type
TzdpkForm = class(TForm)
kfname: TTabControl;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Panel1: TPanel;
cwsys: TComboBox;
kfh: TComboBox;
Query1: TQuery;
Panel2: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
Panel3: TPanel;
Label1: TLabel;
pksj: TComboBox;
jsr: TLabel;
GroupBox1: TGroupBox;
Label3: TLabel;
Edit1: TEdit;
Label4: TLabel;
Edit2: TEdit;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
dm: TComboBox;
xzpksj: TDateTimePicker;
Label5: TLabel;
begtime: TDateTimePicker;
BitBtn7: TBitBtn;
Button1: TButton;
Query2: TQuery;
Table1: TTable;
Table1cysl: TFloatField;
procedure FormShow(Sender: TObject);
procedure kfnameChange(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit1Exit(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit2Exit(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
zdpkForm: TzdpkForm;
implementation
uses dataproc,zdpkprintunit, zdbb;
{$R *.DFM}
procedure TzdpkForm.FormShow(Sender: TObject);
var i:integer;
begin
shortdateformat:='yyyy-mm-dd';
xzpksj.DateTime:=now;
begtime.Time:=now;
// begtime.Time:=strtotime('00:00');
Panel1.Caption:=curper.sydw+curper.workjsj+'站点库存盘点表';
kfh.Items.Clear;
kfname.Tabs.Clear;
cwsys.Items.Clear;
try
cwsys.Items.LoadFromFile(curper.workpath+'\cwsys.dll');
except
end;
for i:=2 to cwsys.Items.Count-1 do
begin
if trim(copy(cwsys.Items[i],5,10))<>'' then
begin
kfh.Items.Add(trim(copy(cwsys.Items[i],5,10)));
dm.Items.Add(trim(copy(cwsys.Items[i],1,4)));
kfname.Tabs.Add(trim(copy(cwsys.Items[i],45,30)));
end;
end;
fm.Query2.Active:=false;
fm.Query2.SQL.Clear;
fm.Query2.SQL.Add('select distinct regtime from zdpk where jsj='''+curper.workjsj+''' order by regtime DESC');
fm.Query2.Open;
pksj.Items.Clear;
while not fm.Query2.Eof do
begin
pksj.Items.Add(fm.Query2.Fields[0].AsString);
fm.Query2.Next;
end;
fm.Query2.Active:=false;
fm.Query2.SQL.Clear;
if pksj.Items.Count>0 then pksj.ItemIndex:=0;
if kfname.Tabs.Count>0 then kfnameChange(nil);
end;
procedure TzdpkForm.kfnameChange(Sender: TObject);
begin
pksj.Text:=formatdatetime('yyyy-MM-dd',xzpksj.Date)+' '+formatdatetime('hh:mm:ss',begtime.Time);
if pksj.Enabled then
begin
table1.Active:=FALSE;
table1.Filter:=' jsj='''+curper.workjsj+''' and kf='''+kfh.Items[kfname.TabIndex]+''' and regtime='''+pksj.Text+'''';
table1.Open;
{ Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQL.Add('select * from zdpk where jsj=:pjsj and kf=:pkf and regtime=:psj');
Query1.ParamByName('pkf').asstring:=kfh.Items[kfname.TabIndex];
Query1.ParamByName('psj').asstring:=pksj.Text;
Query1.ParamByName('pjsj').asstring:=curper.workjsj;
Query1.Open;}
DataSource1.DataSet:=table1;
end else
begin
table1.Active:=FALSE;
table1.TableName:='zdpkls';
{Query2.Active:=false;
Query2.SQL.Clear;
Query2.SQL.Add('select spcode,cuscode,name,dw,dj,innum,outnum,outnumwj,xsnum,num,');
Query2.SQL.Add('sjnum,xsje,(sjnum-num) as cysl ,regtime,jsj,kf,jsr,czy,cbj from zdpkls where jsj='''+curper.workjsj+''' and kf='''+kfh.Items[kfname.TabIndex]+'''');
Query2.Open;
DataSource1.DataSet:=Query2;}
table1.Filter:=' jsj='''+curper.workjsj+''' and kf='''+kfh.Items[kfname.TabIndex]+'''';
table1.Open;
// table1.FieldByName('cysl').asfloat:=table1.FieldByName('sjnum').asfloat-table1.FieldByName('num').asfloat;
DataSource1.DataSet:=table1;
end;
end;
procedure TzdpkForm.BitBtn4Click(Sender: TObject);
begin
close;
end;
procedure TzdpkForm.BitBtn1Click(Sender: TObject);
var i:integer;cuscode,cusname,dw:string;cusnum,cusnumwj,dj,cusje:Currency;
begin
if messagedlg('盘库时间是否正确?',mtInformation, [mbYes, mbNo], 0) = mrno then
exit;
pksj.Enabled:=false;
pksj.Text:=formatdatetime('yyyy-mm-dd',xzpksj.Date)+' '+formatdatetime('hh:mm:ss',begtime.Time);
fm.Query2.Active:=false;
fm.Query2.SQL.Clear;
fm.Query2.SQL.Add('delete from zdpkls where jsj='''+curper.workjsj+'''');
fm.Query2.ExecSQL;
for i:=0 to dm.Items.Count-1 do
begin
fm.Query2.SQL.Clear;
fm.Query2.SQL.Add('select Cuscode,Cusname,Unit,Price,spcode from Cusitem where ');
fm.Query2.SQL.Add('substring(custype,1,2)='''+trim(dm.Items[i])+''' and isnull(spcode,'''')<>''''');
fm.Query2.Open;
while not fm.Query2.Eof do
begin
fm.Query3.Active:=false;
fm.Query3.SQL.Clear;
fm.Query3.SQL.Add('select 现有数量,(select sum(num) from 调拨表 where spcode=数量表.商品编号 and xkcode=数量表.仓库编号 and rq>=:pbeg and rq<=:pend) as innum,');
fm.Query3.SQL.Add('(select sum(数量) from 销售明细 where 商品ID=数量表.商品编号 and 仓库=数量表.仓库编号 and 销售单ID in (select ID from 销售单 where 销售日期>=:pbeg and 销售日期<=:pend)) as outnum,(select 最新进价 from 商品表 where 商品编号=数量表.商品编号) as cbj ');
fm.Query3.SQL.Add(' from 数量表 where 仓库编号='''+kfh.Items[i]+''' and 商品编号='''+fm.Query2.fieldbyname('spcode').asstring+''' ');
if pksj.Items.Count=0 then
fm.Query3.ParamByName('pbeg').asdatetime:=strtodatetime('2000-01-01 00:00:00')
else
fm.Query3.ParamByName('pbeg').asdatetime:=strtodatetime(pksj.Items[0]);
fm.Query3.ParamByName('pend').asdatetime:=strtodatetime(pksj.Text);
fm.Query3.Open;
Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQL.Add('select sum(CusNum) from custom where Regtime>:pbeg and Regtime<=:pend and jsj='''+trim(curper.workjsj)+''' and Cuscode='''+fm.Query2.fieldbyname('cuscode').asstring+''' ');
if pksj.Items.Count=0 then
Query1.ParamByName('pbeg').asdatetime:=strtodatetime('2000-01-01 00:00:00')
else
Query1.ParamByName('pbeg').asdatetime:=strtodatetime(pksj.Items[0]);
Query1.ParamByName('pend').asdatetime:=strtodatetime(pksj.Text);
Query1.Open;
cusnumwj:=Query1.Fields[0].AsCurrency;
Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQL.Add('select sum(CusNum),sum(Money) from qbcustom where Regtime>:pbeg and Regtime<=:pend and jsj='''+trim(curper.workjsj)+''' and Cuscode='''+fm.Query2.fieldbyname('cuscode').asstring+''' ');
if pksj.Items.Count=0 then
Query1.ParamByName('pbeg').asdatetime:=strtodatetime('2000-01-01 00:00:00')
else
Query1.ParamByName('pbeg').asdatetime:=strtodatetime(pksj.Items[0]);
Query1.ParamByName('pend').asdatetime:=strtodatetime(pksj.Text);
Query1.Open;
cusnum:=Query1.Fields[0].AsCurrency;
cusje:=Query1.Fields[1].AsCurrency;
Query1.SQL.Clear;
Query1.SQL.Add('insert into zdpkls values(:pspcode,:pcuscode,:pname,:pdw,:pdj,:pinnum,:poutnum,:poutnumwj,:pxsnum,:pnum,:pnum,:pje,:pregtime,:pjsj,:pkf,:pjsr,:pczy,:pcbj)');
Query1.ParamByName('pspcode').asstring:=fm.Query2.Fieldbyname('spcode').AsString;
Query1.ParamByName('pcuscode').asstring:=fm.Query2.Fieldbyname('cuscode').AsString;
Query1.ParamByName('pdw').asstring:=fm.Query2.Fieldbyname('unit').AsString;
Query1.ParamByName('pdj').asCurrency:=fm.Query2.Fieldbyname('price').AsCurrency;
Query1.ParamByName('pname').asstring:=fm.Query2.Fieldbyname('cusname').AsString;
Query1.ParamByName('pinnum').asCurrency:=fm.Query3.Fieldbyname('innum').AsCurrency;
Query1.ParamByName('pxsnum').asCurrency:=cusnum;
Query1.ParamByName('poutnum').asCurrency:=fm.Query3.Fieldbyname('outnum').AsCurrency;
Query1.ParamByName('poutnumwj').asCurrency:=cusnumwj;
Query1.ParamByName('pnum').asCurrency:=fm.Query3.Fieldbyname('现有数量').AsCurrency;
Query1.ParamByName('pje').asCurrency:=cusje;
Query1.ParamByName('pregtime').asdatetime:=strtodatetime(pksj.Text);
Query1.ParamByName('pjsj').asstring:=curper.workjsj;
Query1.ParamByName('pkf').asstring:=kfh.Items[i];
Query1.ParamByName('pczy').asstring:=curper.name;
Query1.ParamByName('pjsr').asstring:='';
Query1.ParamByName('pcbj').asCurrency:=fm.Query3.Fieldbyname('cbj').AsCurrency;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -