📄 dcunt.pas
字号:
unit dcunt;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, StdCtrls, Buttons, Grids, ExtCtrls, BaseGrid, AdvGrid;
type
Tdcfrm = class(TForm)
Bevel1: TBevel;
Label4: TLabel;
Label3: TLabel;
Label6: TLabel;
Label5: TLabel;
Edit1: TEdit;
Label1: TLabel;
Label8: TLabel;
Edit2: TEdit;
Label9: TLabel;
Label7: TLabel;
ComboBox1: TComboBox;
Edit3: TEdit;
BitBtn2: TBitBtn;
AdvStringGrid1: TAdvStringGrid;
Timer1: TTimer;
Label13: TLabel;
Label12: TLabel;
Label10: TLabel;
Label11: TLabel;
Edit4: TEdit;
Label14: TLabel;
BitBtn1: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
Label2: TLabel;
procedure BitBtn4Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn1Click(Sender: TObject);
procedure Edit1Enter(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure ComboBox1Enter(Sender: TObject);
procedure ComboBox1Exit(Sender: TObject);
procedure Edit3Enter(Sender: TObject);
procedure Edit3Exit(Sender: TObject);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure BitBtn3Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure BitBtn2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Edit2Enter(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
dcfrm: Tdcfrm;
implementation
uses data,maind, mainunt,datam;
{$R *.dfm}
var
dcno:integer;
procedure Tdcfrm.BitBtn4Click(Sender: TObject);
begin
close;
end;
procedure Tdcfrm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
Perform(CM_DialogKey,Vk_TAB,0);
key:=#0;
end;
end;
procedure Tdcfrm.FormActivate(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:=main.Edit8.Text;
advstringgrid1.Cells[0,0]:='';
edit1.SetFocus;
label4.Caption:=formatdatetime('yyyy-mm-dd',date);
Label6.caption:=create_moveout_no('moveoutm');
advstringgrid1.Cells[1,0]:='货物条形码';
advstringgrid1.Cells[2,0]:='标准零售价';
advstringgrid1.Cells[3,0]:='调出数量';
advstringgrid1.Cells[4,0]:='金额';
dcno:=1;
end;
procedure Tdcfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
dcfrm:=nil;
dcfrm.Free;
end;
procedure Tdcfrm.BitBtn1Click(Sender: TObject);
var
i:integer;
begin
timer1.Enabled:=false;
try
dataman.ADOCon.BeginTrans;
//更新出货单据表
with dataman.dcQuery do
begin
close;
sql.Clear;
sql.Add('insert into moveoutm');
sql.Add('values(:dj,:yf,:js,:je,:jsj,:jsr)');
parameters.ParamByName('dj').Value:=trim(label6.Caption);
parameters.ParamByName('yf').Value:=trim(combobox1.text);
parameters.ParamByName('js').Value:=strtoint(trim(label12.Caption));
parameters.ParamByName('je').Value:=strtofloat(trim(label11.Caption));
parameters.ParamByName('jsj').Value:=date();
parameters.ParamByName('jsr').Value:=trim(edit4.Text);
prepared;
execsql;
//end;
//更新出货明细表
close;
for i:=1 to dcno do
begin
if trim(advstringgrid1.Cells[1,i])='' then break;
sql.Clear;
sql.Add('insert into moveout');
sql.Add('values(:dj,:ht,:djq,:shl,:je)');
parameters.ParamByName('dj').Value:=trim(label6.Caption);
parameters.ParamByName('ht').Value:=trim(advstringgrid1.Cells[1,i]);
parameters.ParamByName('djq').Value:=strtofloat(trim(advstringgrid1.Cells[2,i]));
parameters.ParamByName('shl').Value:=strtoint(trim(advstringgrid1.Cells[3,i]));
parameters.ParamByName('je').Value:=strtofloat(trim(advstringgrid1.Cells[4,i]));
prepared;
execsql;
//更新库存
sql.Clear;
sql.Add('update kc set 库存数量=库存数量-:tno where 货物条形码='''+trim(advstringgrid1.Cells[1,i])+'''');
parameters.ParamByName('tno').Value:=strtoint(advstringgrid1.Cells[3,i]);
execsql;
end; //结束循环
end;
dataman.ADOCon.CommitTrans;
showmessage('出货单据号'+trim(label6.Caption)+'存盘成功!');
except
dataman.ADOCon.RollbackTrans;
showmessage('出货单据号'+trim(label6.Caption)+'存盘失败!');
end;
end;
procedure Tdcfrm.Edit1Enter(Sender: TObject);
begin
Edit1.Color:=clSkyBlue;
end;
procedure Tdcfrm.Edit1Exit(Sender: TObject);
begin
Edit1.color:=clWindow;
if (length(edit1.Text)<>15) and (edit1.Text<>'') then
begin
messagedlg('对不起!条形码不等于15位',mtError,[mbOk],0);
edit1.SetFocus;
exit;
end;
if edit1.Text<>'' then
begin
with dataman.dcQuery do
begin
sql.Clear;
sql.Add('select 库存数量,单价 from kc where 货物条形码 ='''+edit1.text+'''');
open;
if IsEmpty then
begin
showmessage('对不起!库里没有此货,请核实数据!');
edit1.SetFocus;
exit;
end
else
begin
if fields[0].Value=0 then
begin
showmessage('库存量为零!');
exit;
end ;
edit3.Text:=floattostr(Fields[1].Value);
end;
end;
end;
end;
procedure Tdcfrm.ComboBox1Enter(Sender: TObject);
begin
ComboBox1.Color:=clSkyBlue;
end;
procedure Tdcfrm.ComboBox1Exit(Sender: TObject);
begin
ComboBox1.color:=clWindow;
end;
procedure Tdcfrm.Edit3Enter(Sender: TObject);
begin
Edit3.Color:=clSkyBlue;
end;
procedure Tdcfrm.Edit3Exit(Sender: TObject);
begin
Edit3.color:=clWindow;
end;
procedure Tdcfrm.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9',#8] )then
begin
key:=#0;
// MessageBeep(-1);
end;
end;
procedure Tdcfrm.BitBtn3Click(Sender: TObject);
var
fd:textfile;
dcfile,dc:string;
i:integer;
begin
try
dcfile:=ExtractFilePath(Application.ExeName)+'dcout.txt';
AssignFile(fd,dcfile);
Rewrite(fd);
write(fd,chr(27)+chr(64));
dc:=stringOfChar(' ',(32-Length('牧羊人服饰'+ini_load_shopname('打印参数','和祥店')+'调出清单')) div 2)+'牧羊人服饰'+ini_load_shopname('打印参数','和祥店')+'调出清单';
write(fd,dc+chr(10));
write(fd,(formatdatetime('yyyy"年"mm"月"dd"日" hh"点"mm"分" ampm',now)+chr(10)):18);
write(fd,('源分店:'+trim(combobox1.Text)):14);
write(fd,('单据号:'+trim(label6.caption)):16);
write(fd,('经手人:'+trim(edit4.Text)):16);
writeln(fd,'--------------------------------');
// 12345678901234567890123456789012
write(fd,'商品条形码 零售价 数量 金额'+chr(10));
write(fd,'--------------------------------');
for i:=1 to dcno do
begin
if advstringgrid1.Cells[1,i]='' then break;
write(fd,trim(advstringgrid1.cells[1,i]):15);
write(fd,trim(advstringgrid1.cells[2,i]):5);
write(fd,trim(advstringgrid1.cells[3,i]):5);
write(fd,trim(advstringgrid1.cells[4,i]):5);
write(fd,chr(10));
end;
Writeln(fd,' ');
write(fd,'-------------------------------');
Writeln(fd,('调出总数:'+trim(label12.Caption)):16);
Writeln(fd,('调出总金额:'+trim(label11.Caption)):16);
Writeln(fd,' ');
Writeln(fd,' ');
Writeln(fd,' ');
Writeln(fd,' ');
Writeln(fd,' ');
CloseFile(fd);
PrintFile(dcfile);
except
abort;
end;
end;
procedure Tdcfrm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9',#8] )then
begin
key:=#0;
end;
end;
procedure Tdcfrm.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9',#8] )then
begin
key:=#0;
end;
end;
procedure Tdcfrm.BitBtn2Click(Sender: TObject);
var
i:integer;
begin
if (edit1.Text='') or (edit2.Text='') or (edit3.Text='') then
begin
showmessage('请输入完整的信息!');
edit1.SetFocus;
end
else
begin
for i:=1 to advstringgrid1.RowCount do
begin
if trim(edit1.Text)=trim(advstringgrid1.Cells[1,i]) then
begin
advstringgrid1.Cells[3,i]:=inttostr(strtoint(trim(advstringgrid1.Cells[3,i]))+strtoint(trim(edit2.Text)));
edit1.Text:='';
edit1.SetFocus;
edit3.Text:='';
break;
exit;
end;
end;
for i:=advstringgrid1.RowCount downto 1 do
begin
if trim(edit1.Text)<>trim(advstringgrid1.cells[1,i]) then
begin
advstringgrid1.Cells[0,dcno]:=inttostr(dcno);
advstringgrid1.Cells[1,dcno]:=trim(edit1.Text);
advstringgrid1.Cells[2,dcno]:=trim(edit3.Text);
advstringgrid1.Cells[3,dcno]:=trim(edit2.Text);
dcno:=dcno+1;
advstringgrid1.RowCount:=dcno;
edit1.Text:='';
edit1.SetFocus;
edit3.Text:='';
break;
exit;
end;
break;
end;
end;
end;
procedure Tdcfrm.Timer1Timer(Sender: TObject);
var
j,quality:integer;
totalth:real;
begin
totalth:=0;
quality:=0;
for j:=1 to advstringgrid1.RowCount do
begin
if advstringgrid1.Cells[1,j]='' then break;
advstringgrid1.Cells[4,j]:=floattostr(strtofloatdef(trim(advstringgrid1.Cells[2,j]),0)*strtointdef(trim(advstringgrid1.Cells[3,j]),0));
totalth:=strtofloatdef(trim(advstringgrid1.cells[4,j]),0)+totalth;
label11.Caption:=floattostr(totalth);
quality:=strtoint(trim(advstringgrid1.cells[3,j]))+quality;
label12.Caption:=inttostr(quality);
end;
end;
procedure Tdcfrm.Edit2Enter(Sender: TObject);
begin
Edit2.Color:=clSkyBlue;
end;
procedure Tdcfrm.Edit2Exit(Sender: TObject);
begin
Edit2.color:=clWindow;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -