📄 pfm_fdtcdok.pas
字号:
unit pfm_fdtcdok;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, ComCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls, Mask,
Buttons, pvar_lib;
type
Tfm_fdtcdok = class(TForm)
DataSource1: TDataSource;
Query1: TQuery;
GroupBox1: TGroupBox;
TV1: TTreeView;
DBGrid1: TDBGrid;
GroupBox2: TGroupBox;
Label1: TLabel;
DBEdit1: TDBEdit;
BBtnRevise: TBitBtn;
Label2: TLabel;
BBtnThd: TBitBtn;
DBEdit2: TDBEdit;
Splitter1: TSplitter;
Label3: TLabel;
SProc1: TStoredProc;
Label4: TLabel;
Edit1: TEdit;
Label5: TLabel;
Edit2: TEdit;
DateTimePicker1: TDateTimePicker;
Label6: TLabel;
Label7: TLabel;
TabfdThd: TTable;
BatMove1: TBatchMove;
Query2: TQuery;
Table1: TTable;
DataSource2: TDataSource;
CbBox1: TComboBox;
Query2id: TIntegerField;
Query2fdmc: TStringField;
Query2spbm: TStringField;
Query2sptxm: TStringField;
Query2spnum: TFloatField;
Query2oldspnum: TFloatField;
Query2spmc: TStringField;
Query2ckmc: TStringField;
Query2djhm: TStringField;
Query2rq: TDateTimeField;
Query2jsrm: TStringField;
procedure FormCreate(Sender: TObject);
procedure BBtnReviseClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BBtnThdClick(Sender: TObject);
procedure TV1Click(Sender: TObject);
procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
procedure Query2AfterOpen(DataSet: TDataSet);
procedure Table1AfterPost(DataSet: TDataSet);
procedure CbBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fm_fdtcdok: Tfm_fdtcdok;
implementation
uses pfm_fdthdselck;
{$R *.DFM}
var
CompFdmc:TstringList;
GridColName:Tstringlist;
thdLsh:integer;
procedure Tfm_fdtcdok.FormCreate(Sender: TObject);
var
tvnoderoot:TTreeNode;
//i:integer;
begin
CompFdmc:=TStringlist.create;
GridColName:=TStringlist.create;
GridColName.add('fdmc=分店名称');
GridColName.add('spbm=商品编码');
GridColName.add('sptxm=商品条形码');
GridColName.add('spnum=确认退仓商品数量');
GridColName.add('oldspnum=退仓商品数量');
GridColName.add('spmc=商品名称');
GridColName.add('jsrm=经办人码');
GridColName.add('rq=日期');
GridColName.add('ckmc=仓库名称');
GridColName.add('djhm=单据号码');
query1.SQL.add('select fdmc,fdset from t_fendianxx');
query1.open;
tvnoderoot:=TV1.Items.add(nil,'全部分店');
compFdmc.add('全部分店=all');
while not query1.Eof do
begin
TV1.Items.Addchild(tvnoderoot,query1.fieldbyname('fdmc').asstring);
compFdmc.add(query1.fieldbyname('fdmc').asstring + '='+query1.fieldbyname('fdset').asstring);
query1.Next;
end;
query1.active:=false;
query1.sql.clear;
query1.SQL.add('select ckmc from t_ckxx');
query1.open;
while not query1.Eof do
begin
cbbox1.items.add(query1.fieldbyname('ckmc').asstring);
query1.next;
end;
//利用存储过程取得提货单的最大流水号
sproc1.Prepare;
SProc1.Params[1].value:='tb_mdtcd';
Sproc1.ExecProc;
thdLsh:=sproc1.Params[2].value+1;
sproc1.UnPrepare;
edit1.text:=inttostr(thdlsh);
end;
procedure Tfm_fdtcdok.BBtnReviseClick(Sender: TObject);
begin
if table1.State=dsEdit then
begin
table1.post;
end;
end;
procedure Tfm_fdtcdok.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CompFdmc.free;
GridColName.free;
Action:=CaFree;
end;
procedure Tfm_fdtcdok.BBtnThdClick(Sender: TObject);
var
cnt:integer;
thnum:integer;
sptxm:string;
spbm,djhm:string;
fdset:string;
dbfile:string;
i:integer;
begin
if length(edit2.text)=0 then
begin
showmessage('请选择分店');
exit;
end;
cnt:=0;
query2.First;
while not query2.Eof do
begin
if query2.FieldByName('spnum').asinteger>query2.FieldByName('oldspnum').asinteger then
begin
showmessage('确认退仓商品['+query2.FieldByName('spmc').asstring
+']不能大于原来的退仓商品数量');
exit;
end;
cnt:=cnt+1;
query2.Next;
end;
label3.caption:='退仓商品种类共'+inttostr(cnt)+'种';
if cnt=0 then exit;
//生成退仓单和退仓单明细
query1.sql.clear;
query1.SQL.add('insert into tb_mdtcd(lsh,ckmc,thfd,rq) values('+
inttostr(thdlsh)+','''+cbbox1.text+''','''+edit2.text+''','''+datetostr(now())+''')');
query1.ExecSQL;
query1.close;
query2.First;
while not query2.Eof do
begin
sptxm:=query2.FieldByName('sptxm').asstring;
spbm:=query2.FieldByName('spbm').asstring;
thnum:=query2.FieldByName('spnum').asinteger;
djhm:=query2.FieldByName('djhm').asstring;
if thnum=0 then continue;
query1.SQL.clear;
query1.sql.Add('insert into tb_mdtcdmx(lsh,spbm,sptxm,tcnum,djhm) values('+inttostr(thdlsh)+','''+spbm+''','''+sptxm+''','+inttostr(thnum)+','''+djhm+''')');
query1.ExecSQL;
query1.close;
query2.Next;
end;
fdset:=CompFdmc.Values[edit2.Text];
dbfile:='comdata\retfddata\retfdtcd'+fdset+'.db';
batmove1.mode:=batCopy;
if fileExists(dbfile) then
begin
if application.messagebox(pchar(tv1.Selected.Text+'的退仓单还没传送出去,是追加新纪录按YES,覆盖按NO'),
pchar('生成确认退仓单'),MB_YESNO)=IDYES then
begin
batmove1.Mode:=batAppend;
end;
end;
tabFdthd.tablename:=dbfile;
//保存提货内容到dbf文件中
batmove1.Source:=query2;
Batmove1.Execute;
query2.active:=false;
query1.sql.Clear;
query1.sql.add('delete from tab_fdtcd where fdmc='''+edit2.text+''' and ckmc='''+cbbox1.text+'''');
query1.ExecSQL;
query1.close;
query2.active:=true;
dbgrid1.Refresh;
for i:=0 to dbgrid1.columns.count-1 do
begin
dbgrid1.columns[i].Title.caption:=GridColName.values[dbgrid1.columns[i].FieldName];
end;
AddOptRecord('生成分店退货确认单:流水号('+inttostr(thdlsh)+'),仓库代码('+cbbox1.text+'),分店代码('+edit2.text+')');
end;
procedure Tfm_fdtcdok.TV1Click(Sender: TObject);
begin
if tv1.selected.Level=1 then
begin
query2.Filter:='fdmc='''+tv1.selected.Text+'''';
query2.Filtered:=true;
edit2.text:=tv1.selected.text;
end
else
begin
edit2.text:='';
end;
end;
procedure Tfm_fdtcdok.DBGrid1DrawDataCell(Sender: TObject;
const Rect: TRect; Field: TField; State: TGridDrawState);
begin
{ if lowercase(field.fieldName)='spnum' then
begin
if field.AsInteger<=query2.Fieldbyname('stocknum').asinteger then
(sender as tdbgrid).Canvas.Font.Color:=clGreen
else
(sender as tdbgrid).Canvas.Font.Color:=clRed;
end;
(sender as tdbgrid).DefaultDrawDataCell(Rect, Field, State); }
//如果确认数量大于库存数量
if (query2.fieldbyname('spnum').asfloat<>query2.fieldbyname('oldspnum').asfloat) and (not(gdselected in state)) then
begin
(sender as tdbgrid).Canvas.Brush.Color:=RGB(219,253,253);
(sender as tdbgrid).Canvas.font.Color:=clred;
end;
(sender as tdbgrid).DefaultDrawDataCell(Rect, Field, State);
end;
procedure Tfm_fdtcdok.Query2AfterOpen(DataSet: TDataSet);
var
i:integer;
begin
for i:=0 to dbgrid1.columns.count-1 do
begin
dbgrid1.columns[i].Title.caption:=GridColName.values[dbgrid1.columns[i].FieldName];
end;
end;
procedure Tfm_fdtcdok.Table1AfterPost(DataSet: TDataSet);
var
i:integer;
begin
query2.close;
query2.open;
for i:=0 to dbgrid1.columns.count-1 do
begin
dbgrid1.columns[i].Title.caption:=GridColName.values[dbgrid1.columns[i].FieldName];
end;
//dbgrid1.Refresh;
end;
procedure Tfm_fdtcdok.CbBox1Change(Sender: TObject);
var
i:integer;
begin
table1.Close;
query2.close;
query2.ParamByName('ckmc').asstring:=cbbox1.text;
query2.Open;
table1.Open;
{ for i:=0 to dbgrid1.columns.count-1 do
begin
dbgrid1.columns[i].Title.caption:=GridColName.values[dbgrid1.columns[i].FieldName];
end;}
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -