📄 thmainunt.pas
字号:
unit thmainunt;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, DBGridEh, DB, ExtCtrls, BaseGrid,
AdvGrid;
type
Tthmainfrm = class(TForm)
Label13: TLabel;
Label14: TLabel;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
Bevel1: TBevel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
BitBtn1: TBitBtn;
Label7: TLabel;
Label8: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label9: TLabel;
Edit3: TEdit;
Label10: TLabel;
Label11: TLabel;
AdvStringGrid1: TAdvStringGrid;
Timer1: TTimer;
Label12: TLabel;
Label15: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure Edit2Enter(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
procedure Edit1Enter(Sender: TObject);
procedure AdvStringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Timer1Timer(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
thmainfrm: Tthmainfrm;
implementation
uses data,datam,mainunt,maind;
var
tno:integer;
{$R *.dfm}
procedure Tthmainfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
dataman.thmQuery.Close;
dataman.thmxQuery.Close;
dataman.kcQuery.Close;
inherited;
thmainfrm:=nil;
thmainfrm.Free;
end;
procedure Tthmainfrm.FormActivate(Sender: TObject);
var
i:integer;
begin
Label6.caption:=create_withdraw_no('withdrawm');
tno:=1;
label4.Caption:=formatdatetime('yyyy-mm-dd',date);
advstringgrid1.Cells[1,0]:='商品条形码';
advstringgrid1.Cells[2,0]:='单价';
advstringgrid1.Cells[3,0]:='数量';
advstringgrid1.Cells[4,0]:='金额';
advstringgrid1.Cells[5,0]:='退货原因';
for i:=1 to 8 do
advstringgrid1.Cells[0,i]:=inttostr(i);
edit1.Text:='';
edit2.Text:='';
edit3.Text:=main.Edit8.Text;
label10.Caption:='0';
label11.Caption:='0';
label12.Caption:='';
edit2.SetFocus;
end;
procedure Tthmainfrm.Edit1Exit(Sender: TObject);
begin
Edit1.color:=clWindow;
end;
procedure Tthmainfrm.Edit2Enter(Sender: TObject);
begin
Edit2.Color:=clSkyBlue;
end;
procedure Tthmainfrm.Edit2Exit(Sender: TObject);
begin
Edit2.color:=clWindow;
if trim(edit2.Text)<>'' then
begin
with dataman.thmainQuery do
begin
close;
sql.Clear;
sql.Add('select 打折比例 from menber where VIP卡号='''+edit2.Text+'''');
open;
if not isempty then
label12.Caption:=floattostr(fields[0].value)
else
begin
showmessage('没有这位'+edit2.Text+'会员');
edit2.SetFocus;
end;
end;
end;
end;
procedure Tthmainfrm.Edit1Enter(Sender: TObject);
begin
Edit1.Color:=clSkyBlue;
end;
procedure Tthmainfrm.AdvStringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
s:string;
r:TRect;
begin
with advStringGrid1 do
begin
Canvas.FillRect(Rect);
if ACol = 4 then
begin
Canvas.Font.Color := clred;
canvas.Font.Style:=[fsBold];
end;
s:=Cells[ACol,ARow];
r:=Rect;
DrawText(Canvas.Handle,PChar(s),Length(s),r,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
end;
end;
procedure Tthmainfrm.Edit1KeyPress(Sender: TObject; var Key: Char);
var
i:integer;
begin
if trim(edit1.Text)='' then exit;
if not (key in ['0'..'9',#8,#39,#13]) then key:=#0;
if key=#13 then
begin
with dataman.thmainQuery do
begin
close;
sql.Clear;
sql.Add('select distinct 单价 from kc where 货物条形码='''+edit1.text+'''');
open;
end;
if dataman.thmainQuery.IsEmpty then
begin
showmessage('库存里没有'+trim(edit1.text)+'商品');
edit1.SelectAll;
edit1.SetFocus;
end
else
begin
//第一条记录
if advstringgrid1.Cells[1,1]='' then
begin
advstringgrid1.Cells[1,tno]:=trim(edit1.Text);
advstringgrid1.Cells[2,tno]:=floattostr(dataman.thmainQuery.Fields[0].value);
advstringgrid1.Cells[3,tno]:='1';
//advstringgrid1.Cells[5,i]:='';
tno:=tno+1;
edit1.Text:='';
end
else
//不是第一条记录
begin
for i:=1 to 8 do
begin
//if advstringgrid1.Cells[1,i]='' then break;
if trim(edit1.Text)=trim(advstringgrid1.Cells[1,i]) then
begin
advstringgrid1.Cells[3,i]:=inttostr(strtoint(trim(advstringgrid1.Cells[3,i]))+1);
edit1.Text:='';
break;
exit;
end;
end;
for i:=8 downto 1 do
begin
if trim(edit1.Text)<>trim(advstringgrid1.Cells[1,i]) then
begin
advstringgrid1.Cells[1,tno]:=trim(edit1.Text);
advstringgrid1.Cells[2,tno]:=floattostr(dataman.thmainQuery.Fields[0].value);
advstringgrid1.Cells[3,tno]:='1';
tno:=tno+1;
edit1.Text:='';
break;
exit;
end;
break;
end;
end;
end;
end;
end;
procedure Tthmainfrm.Timer1Timer(Sender: TObject);
var
j,quality:integer;
totalth:real;
begin
totalth:=0;
quality:=0;
for j:=1 to 8 do
begin
if advstringgrid1.Cells[1,j]='' then break;
if trim(edit2.Text)='' then
advstringgrid1.Cells[4,j]:=floattostr(strtofloatdef(trim(advstringgrid1.Cells[2,j]),0)*strtointdef(trim(advstringgrid1.Cells[3,j]),0))
else
advstringgrid1.Cells[4,j]:=floattostr(round(strtofloatdef(trim(advstringgrid1.Cells[2,j]),0)*strtointdef(trim(advstringgrid1.Cells[3,j]),0)*strtofloatdef(trim(label12.Caption),0.9)));
totalth:=strtofloatdef(trim(advstringgrid1.cells[4,j]),0)+totalth;
label11.Caption:=floattostr(totalth);
quality:=strtoint(trim(advstringgrid1.cells[3,j]))+quality;
label10.Caption:=inttostr(quality);
end;
end;
procedure Tthmainfrm.BitBtn6Click(Sender: TObject);
var
m,n:integer;
begin
try
dataman.ADOCon.BeginTrans;
// 插入退货单据表
with dataman.thmQuery do
begin
open;
append;
fieldbyname('退货单据号').Value:=trim(label6.Caption);
if trim(edit2.Text)='' then
fieldbyname('VIP卡号').Value:=null
else
fieldbyname('VIP卡号').Value:=edit2.Text;
fieldbyname('退货数量').AsString:=trim(label10.Caption);
fieldbyname('退货金额').AsString:=trim(label11.Caption);
fieldbyname('退货时间').AsDateTime:=date();
fieldbyname('经手人').AsString:=trim(edit3.Text);
post;
end;
//插入退货明细表
with dataman.thmxQuery do
begin
open;
for m:=1 to 8 do
begin
if trim(advstringgrid1.Cells[1,m])='' then break;
append;
fieldbyname('退货单据号').AsString:=trim(label6.Caption);
fieldbyname('货物条形码').AsString:=trim(advstringgrid1.Cells[1,m]);
fieldbyname('单价').AsString:=trim(advstringgrid1.Cells[2,m]);
fieldbyname('数量').AsString:=trim(advstringgrid1.Cells[3,m]);
fieldbyname('金额').AsString:=trim(advstringgrid1.Cells[4,m]);
if trim(advstringgrid1.Cells[5,m])='' then
fieldbyname('退货原因').Value:=null
else
fieldbyname('退货原因').AsString:=trim(advstringgrid1.Cells[5,m]);
post;
end;
end;
// 修改库存
with dataman.kcQuery do
begin
close;
sql.Clear;
for n:=1 to 8 do
begin
if trim(advstringgrid1.Cells[1,n])='' then break;
sql.Add('update kc set 库存数量=库存数量+:thnumb where 货物条形码=:gno');
parameters.ParamByName('thnumb').Value:=trim(advstringgrid1.Cells[3,n]);
parameters.ParamByName('gno').Value:=trim(advstringgrid1.Cells[1,n]);
execsql;
end;
end;
//修改会员消费额
if trim(edit2.Text)<>'' then
begin
with dataman.xfztQuery do
begin
close;
sql.Clear;
sql.Add('update consume set 会员消费总金额=会员消费总金额- :thxf where VIP卡号=:kh');
parameters.ParamByName('thxf').Value:=strtoint(trim(label11.Caption));
parameters.ParamByName('kh').Value:=trim(edit2.Text);
execsql;
end;
end;
dataman.thmQuery.UpdateBatch();
dataman.thmxQuery.UpdateBatch();
Dataman.ADOCon.CommitTrans;
showmessage('存盘成功!');
except
begin
Dataman.ADOCon.RollbackTrans;
showmessage('存盘失败!');
exit;
timer1.Enabled:=true;
end;
end;
end;
procedure Tthmainfrm.BitBtn7Click(Sender: TObject);
var
i,j:integer;
begin
tno:=1;
for i:=1 to advstringgrid1.RowCount do
for j:=1 to advstringgrid1.ColCount do
advstringgrid1.Cells[j,i]:='';
label10.Caption:='0';
label11.Caption:='0';
edit2.SetFocus;
end;
procedure Tthmainfrm.BitBtn8Click(Sender: TObject);
begin
Close;
end;
procedure Tthmainfrm.BitBtn1Click(Sender: TObject);
var
l:integer;
f:TextFile;
OutFile,th:string;
begin
try
OutFile:=ExtractFilePath(Application.ExeName)+'withdraw.txt';
AssignFile(F, OutFile);
Rewrite(F);
write(f,chr(27)+chr(64));
th:=stringOfChar(' ',(32-Length('牧羊人服饰退货单据')) div 2)+'牧羊人服饰退货单据';
write(f,th+chr(10));
write(f,'退货单据号 :'+trim(label6.caption)+chr(10));
write(f,('日期 :'+trim(label4.caption)):16);
write(f,('经手人 :'+trim(edit3.text)):16);
write(f,chr(10));
write(f,'--------------------------------'+chr(10));
// 12345678901234567890123456789012
Write(F,'商品条形码 单价 数量 金额 退货原因'+chr(10));
Write(F,'--------------------------------');
for l:=1 to 8 do
begin
if trim(advstringgrid1.Cells[1,l])='' then break;
write(f,trim(advstringgrid1.cells[1,l]):15);
write(f,trim(advstringgrid1.cells[2,l]):4);
write(f,trim(advstringgrid1.cells[3,l]):4);
write(f,trim(advstringgrid1.cells[4,l]):4);
write(f,trim(advstringgrid1.cells[5,l]):5);
write(f,chr(10));
end;
Writeln(F,' ');
Write(F,'--------------------------------');
write(f,('退货总数量 :'+trim(label10.caption)):16);
write(f,('退货总金额 :'+trim(label11.caption)):16);
Writeln(F,' ');
Writeln(F,' ');
Writeln(F,' ');
Writeln(F,' ');
Writeln(F,' ');
CloseFile(f);
PrintFile(Outfile);
except
abort;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -