📄 ctjz.pas
字号:
unit ctjz;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons, Mask, Spin, Grids, ComCtrls, Db, DBGrids,
DBTables;
type
TctjzForm = class(TForm)
TabControl1: TTabControl;
xfbm: TComboBox;
Label1: TLabel;
tabno: TEdit;
GroupBox2: TGroupBox;
Label20: TLabel;
Label21: TLabel;
Label23: TLabel;
Label24: TLabel;
Label4: TLabel;
GroupBox6: TGroupBox;
gzno: TComboBox;
mfw: TCheckBox;
mbj: TCheckBox;
jzfsname: TComboBox;
jzfs: TComboBox;
Label2: TLabel;
Label3: TLabel;
mcf: TCheckBox;
Label5: TLabel;
Label6: TLabel;
hdno: TEdit;
Label7: TLabel;
BitBtn1: TBitBtn;
BitBtn3: TBitBtn;
BitBtn2: TBitBtn;
zs: TLabel;
Panel1: TPanel;
Label9: TLabel;
yy: TEdit;
wy: TEdit;
Label10: TLabel;
Label11: TLabel;
qb: TEdit;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Query1: TQuery;
Panel3: TPanel;
bjf: TMaskEdit;
cf: TMaskEdit;
fwf: TMaskEdit;
hj: TMaskEdit;
Panel4: TPanel;
yf: TMaskEdit;
jm: TMaskEdit;
Panel5: TPanel;
man: TRadioButton;
woman: TRadioButton;
zk: TSpinEdit;
zkhj: TEdit;
Label8: TLabel;
MaskEdit1: TMaskEdit;
Label12: TLabel;
Label13: TLabel;
jzdh: TEdit;
czy: TLabel;
BitBtn4: TBitBtn;
state: TComboBox;
zke: TEdit;
Label14: TLabel;
StoredProc1: TStoredProc;
Query2: TQuery;
procedure FormCreate(Sender: TObject);
procedure tabnoDblClick(Sender: TObject);
procedure TabControl1Change(Sender: TObject);
procedure jzfsnameChange(Sender: TObject);
procedure mfwClick(Sender: TObject);
procedure jmChange(Sender: TObject);
procedure hdnoDblClick(Sender: TObject);
procedure zkChange(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure jzfsnameExit(Sender: TObject);
procedure tabnoExit(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ctjzForm: TctjzForm;
implementation
uses ctdj, dataproc, newdj;
var acc,bkwelid:string;
bje,cfe,jme:real;
{$R *.DFM}
procedure init;
begin
with ctjzform do
begin
xfbm.text:='';
tabno.text:='';
gzno.text:='';
mfw.Checked:=false;
mbj.Checked:=false;
mcf.Checked:=false;
hdno.text:='';
yy.text:='';
wy.text:='';
qb.text:='';
bjf.text:='0';
cf.text:='0';
fwf.text:='0';
hj.text:='0';
zke.text:='0';
yf.text:='0';
jm.text:='0';
zk.text:='100';
zkhj.text:='0';
jzfs.ItemIndex:=0;
jzfsname.ItemIndex:=0;
end;
end;
procedure js;
begin
with ctjzform do
begin
if mbj.Checked then
bjf.text:='0'
else
bjf.text:=floattostr(bje);
if mcf.Checked then
cf.text:='0'
else
cf.Text:=floattostr(cfe);
if mfw.Checked then
fwf.text:='0'
else
fwf.Text:=floattostr((strtofloat(bjf.text)+strtofloat(cf.text)-strtofloat(jm.text)-strtofloat(zke.text))*0.1);
hj.text:=floattostr(strtofloat(bjf.text)+strtofloat(cf.text)+strtofloat(fwf.text));
yf.Text:=floattostr(strtofloat(hj.text)-strtofloat(zke.Text)-strtofloat(jm.Text));
end;
end;
procedure seemx(d:integer;dd:string);
begin
with ctjzform do
begin
Query1.Active :=false;
Query1.sql.clear;
Query1.SQL.Add('select sum(Money) from custom where accno='''+acc+''' and iszk=1 and tabno='''+trim(TabControl1.Tabs[d])+'''');
Query1.Open;
zkhj.Text:=floattostr(Query1.Fields[0].asfloat);
Query1.Active :=false;
Query1.sql.clear;
Query1.SQL.Add('select sum(Money) from custom where accno='''+acc+''' and tabno='''+trim(TabControl1.Tabs[d])+'''');
Query1.Open;
qb.Text:=floattostr(Query1.Fields[0].asfloat);
// cf.Text:=floattostr(Query1.Fields[0].asfloat);
Query1.Active :=false;
Query1.sql.clear;
Query1.SQL.Add('select sum(Money) from custom where accno='''+acc+''' and isuse=1 and tabno='''+trim(TabControl1.Tabs[d])+'''');
Query1.Open;
yy.Text:=floattostr(Query1.Fields[0].asfloat);
Query1.Active :=false;
Query1.sql.clear;
Query1.SQL.Add('select sum(Money) from custom where accno='''+acc+''' and isuse=0 and tabno='''+trim(TabControl1.Tabs[d])+'''');
Query1.Open;
wy.Text:=floattostr(Query1.Fields[0].asfloat);
Query1.Active :=false;
Query1.sql.clear;
Query1.SQL.Add('select cusitem.cusname,CusPrice,CusNum,Money,Isuse,Regtime,fwy,Djcode from custom,cusitem where cusitem.Cuscode=custom.Cuscode and tabno='''+trim(TabControl1.Tabs[d])+''' order by '+dd);
Query1.Open;
DataSource1.DataSet:=Query1;
chinesegrid(dbgrid1);
DBGrid1.fields[0].displaylabel:=' 菜 名 称';
DBGrid1.fields[1].displaylabel:='价格';
DBGrid1.fields[2].displaylabel:='数量';
DBGrid1.fields[3].displaylabel:='金额';
DBGrid1.fields[4].displaylabel:='上菜否';
DBGrid1.fields[6].displaylabel:='服务员';
// dbgrid1.Columns[0].width:=60;
dbgrid1.Columns[1].width:=30;
dbgrid1.Columns[2].width:=30;
dbgrid1.Columns[3].width:=30;
js;
end;
end;
procedure TctjzForm.FormCreate(Sender: TObject);
begin
shortdateformat:='yyyy-mm-dd';
// lc:=copy(curper.Headship,1,1);
comadd(gzno,2,'select gzno,gzname from gzdbf');
gzno.ItemIndex:=-1;
fm.query2.Active :=false;
fm.query2.sql.Clear ;
fm.query2.sql.add('select * from mode');
fm.query2.Prepare;
fm.query2.open;
jzfsname.Items.Clear;
jzfs.Items.Clear;
while not fm.query2.Eof do
begin
jzfs.Items.Add(fm.query2.FieldByName('Code').asstring);
jzfsname.Items.Add(fm.query2.FieldByName('name').asstring);
fm.query2.Next;
end;
fm.query2.Close;
fm.query2.UnPrepare;
czy.Caption:=curper.name;
init;
end;
procedure TctjzForm.tabnoDblClick(Sender: TObject);
begin
Application.CreateForm(Tycdjform, ycdjform);
ycdjform.Caption:='';
ycdjform.ydj.Enabled:=false;
ycdjform.showmodal;
tabno.Text:=ycdjform.ydj.Text;
ycdjform.free;
DBGrid1.SetFocus ;
end;
procedure TctjzForm.TabControl1Change(Sender: TObject);
begin
if state.Items[TabControl1.TabIndex]='1' then
begin
BitBtn4.Enabled:=true;
Label14.Caption:='';
end
else
begin
BitBtn4.Enabled:=false;
Label14.Caption:='已撤台';
end;
seemx(TabControl1.TabIndex,'custom.Cuscode');
end;
procedure TctjzForm.jzfsnameChange(Sender: TObject);
begin
jzfs.ItemIndex:=jzfsname.ItemIndex;
if (trim(jzfsname.text)='记帐') or (trim(jzfsname.text)='挂帐') then
gzno.Enabled:=true
else
begin
gzno.ItemIndex:=-1;// .Text:='';
gzno.Enabled:=false;
end;
if trim(jzfsname.text)='免费' then
begin
mfw.Checked:=true;
mbj.Checked:=true;
mcf.Checked:=true;
js;
end
else
begin
mfw.Checked:=false;
mbj.Checked:=false;
mcf.Checked:=false;
js;
end;
end;
procedure TctjzForm.mfwClick(Sender: TObject);
begin
js;
end;
procedure TctjzForm.jmChange(Sender: TObject);
begin
js;
end;
procedure TctjzForm.hdnoDblClick(Sender: TObject);
begin
Application.CreateForm(Tdjform, djform);
djform.Panel1.Visible:=false;
djform.rmnogrid.Visible:=false;
djform.Button1.Enabled:=false;
djform.Timer1.Free;
djform.showmodal;
hdno.Text:=copy(trim(djform.xfrmno.Text),1,6);
if length(trim(djform.xfrmno.Text))>6 then
begin
Panel5.Visible:=true;
if trim(copy(trim(djform.xfrmno.Text),7,6))='1' then
begin
man.Checked:=true;
woman.Checked:=false;
end
else
begin
man.Checked:=false;
woman.Checked:=true;
end;
end
else Panel5.Visible:=false;
djform.Free;
end;
procedure TctjzForm.zkChange(Sender: TObject);
begin
zke.text:=floattostr((strtofloat(zkhj.text)*(1-(zk.Value/100))));
end;
procedure TctjzForm.BitBtn1Click(Sender: TObject);
var i:integer;
begin
if trim(HDNO.text)<>'' then
begin //餐厅挂帐
if bkwelid='' then
begin
fm.Query2.Active:=false;
fm.Query2.SQL.Clear;
fm.Query2.SQL.Add('select welid from nowin where roomno='''+hdno.Text+''' and sex=:psex');
if Panel5.Visible then
begin
if man.Checked then
fm.Query2.ParamByName('psex').asstring:='1'
else
fm.Query2.ParamByName('psex').asstring:='0';
end
else
begin
if copy(trim(hdno.text),1,1)='Y' then
fm.Query2.ParamByName('psex').asstring:='3'
else
fm.Query2.ParamByName('psex').asstring:='2';
end;
fm.Query2.Open;
if fm.Query2.Eof then
begin
fm.Query2.Active:=false;
fm.Query2.SQL.Clear;
showmessage('挂帐房间不对,不能挂帐!');
exit;
end;
bkwelid:=fm.Query2.Fields[0].asstring;
fm.Query2.Active:=false;
fm.Query2.SQL.Clear;
end;
end;
Query2.Active :=false;
Query2.sql.clear;
for i:=0 to TabControl1.Tabs.Count-1 do
begin
seemx(i,'custom.Cuscode');
Query2.SQL.add('update ctnowin set money='+yy.text+' where isjz=0 and tabno='''+trim(TabControl1.Tabs[i])+''' and accno='''+acc+'''');
end;
Query2.SQL.Add('update tabledb set state='''+'2'+''' where tabno in (select tabno from ctnowin where accno='''+trim(acc)+''') and not tabno in (select tabno from ctnowin where accno<>'''+trim(acc)+''') and state=''1''');
Query2.SQL.add('update custom set jzfs='''+jzfs.Text+''',Moditime='''+formatdatetime('yyyy-mm-dd hh:mm',now)+''' where accno='''+acc+'''');
Query2.SQL.add('update ctnowin set jzfs='''+jzfs.Text+''',isjz=1,isgz=:pgz,gzno='''+gzno.Text+''',isbk=:pbk,bkroom='''+hdno.Text+''',czy='''+curper.name+''',EndTime='''+formatdatetime('yyyy-mm-dd hh:mm',now)+''' where isjz=0 and accno='''+trim(acc)+'''');
Query2.SQL.add('insert into ctjz values('''+jzdh.Text+''','''+acc+''','+bjf.text+','+cf.text+','+fwf.text+','+hj.text+','+inttostr(ZK.value)+','+zke.Text+','+jm.Text+','+yf.Text+',:pmcf,:pmfwf,:pmbjf,'''+jzfs.Text+''',');
Query2.SQL.Add(':pgz,'''+gzno.Text+''',:pbk,'''+hdno.Text+''','''+curper.name+''','''+formatdatetime('yyyy-mm-dd hh:mm',now)+''','''+curper.curbc+''')');
Query2.ParamByName('pgz').asboolean:=gzno.Enabled;
Query2.ParamByName('pbk').asboolean:=(trim(hdno.text)<>'');
Query2.ParamByName('pmfwf').asboolean:=mfw.Checked;
Query2.ParamByName('pmcf').asboolean:=mcf.Checked;
Query2.ParamByName('pmbjf').asboolean:=mbj.Checked;
// showmessage(Query1.sql.text);
Query2.Prepare;
Query2.ExecSQL;
Query2.Active :=false;
Query2.sql.clear;
Query2.SQL.Add('insert into lsctnowin select * from ctnowin where accno='''+trim(acc)+''' and isjz=1');
Query2.SQL.Add('delete from ctnowin where accno='''+trim(acc)+''' and isjz=1');
Query2.SQL.Add('insert into lscustom select * from custom where accno='''+trim(acc)+'''');
Query2.SQL.Add('delete from custom where accno='''+trim(acc)+'''');
Query2.Prepare;
Query2.ExecSQL;
Query2.Active :=false;
Query2.sql.clear;
if trim(bkwelid)<>'' then
begin //餐厅挂帐
fm.Query2.Active:=false;
fm.Query2.SQL.Clear;
fm.Query2.SQL.Add('insert into custom select handno,sex,accno,welid,''8801'',''880101'','+yf.Text+',1,'+yf.Text+',0,0,'''','''',:ptime,null,'''','''+curper.name+''','''','''' from nowin where welid='''+bkwelid+'''');
fm.Query2.ParamByName('ptime').asdatetime:=now;
fm.Query2.ExecSQL;
fm.Query2.Active:=false;
fm.Query2.SQL.Clear;
StoredProc1.Prepare;
StoredProc1.ParamByName('@iwelid').asstring:=bkwelid;
StoredProc1.ParamByName('@iwdno').asstring:='餐厅';
StoredProc1.ExecProc;
end;
showmessage('结帐完毕');
init;
end;
procedure TctjzForm.jzfsnameExit(Sender: TObject);
begin
if trim(jzfsname.Text)='' then
begin
jzfsname.ItemIndex:=0;
jzfs.ItemIndex:=0;
end;
end;
procedure TctjzForm.tabnoExit(Sender: TObject);
var i:integer;
begin
if trim(tabno.text)<>'' then
begin
Query1.Active :=false;
Query1.sql.clear;
Query1.SQL.Add('select distinct ctnowin.tabno,accno,price,bkwelid,bkroom,state from ctnowin,tabtype,tabledb where accno in (select accno from ctnowin where tabno='''+trim(Tabno.text)+''') and ctnowin.tabno=tabledb.tabno and tabledb.ztype=tabtype.code');
Query1.Open;
acc:=Query1.Fields[1].asstring;
state.Items.Clear;
TabControl1.Tabs.Clear;
bje:=0;
i:=0;
while not Query1.Eof do
begin
state.Items.Add(Query1.Fieldbyname('state').asstring);
TabControl1.Tabs.Add(Query1.Fields[0].asstring);
bje:=bje+Query1.Fields[2].asfloat;
Query1.Next;
i:=i+1;
end;
hdno.Text:=Query1.Fieldbyname('bkroom').asstring;
bkwelid:=Query1.Fieldbyname('bkwelid').asstring;
zs.Caption:='共 '+inttostr(i)+' 桌';
Query1.Active :=false;
Query1.sql.clear;
Query1.SQL.Add('select sum(Money) from custom where accno='''+acc+''' and isuse=0');
Query1.Open;
jme:=Query1.Fields[0].asfloat;
jm.Text:=floattostr(jme);
Query1.Active :=false;
Query1.sql.clear;
Query1.SQL.Add('select sum(Money) from custom where accno='''+acc+'''');
Query1.Open;
cfe:=Query1.Fields[0].asfloat;
BitBtn1.Enabled:=true;
BitBtn2.Enabled:=true;
if TabControl1.Tabs.Count>0 then
TabControl1Change(nil);
end
else
begin
Query1.Active :=false;
Query1.sql.clear;
init;
end;
end;
procedure TctjzForm.BitBtn4Click(Sender: TObject);
var i,hj:integer;
begin
hj:=0;
for i:=0 to state.Items.Count-1 do
if trim(state.Items[i])='1' then hj:=hj+1;
if hj<=1 then
begin
showmessage('不能撤台');
exit;
end;
Query1.Active :=false;
Query1.sql.clear;
Query1.SQL.Add('update tabledb set state=''2'' where tabno='''+TabControl1.Tabs[TabControl1.TabIndex]+''' and state=''1''');
Query1.ExecSQL;
Query1.Active :=false;
Query1.sql.clear;
end;
procedure TctjzForm.BitBtn3Click(Sender: TObject);
begin
close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -