📄 c_ctjz.pas
字号:
unit C_ctjz;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, Grids, DBGrids, DB, DBTables, C_CtDefine,
DosMove;
type
TCtjzForm = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
lblTitle: TLabel;
DBGrid1: TDBGrid;
btnOk: TBitBtn;
btnCanc: TBitBtn;
tblCtjz: TTable;
dsCtjz: TDataSource;
radJzfs: TRadioGroup;
cmbJz: TComboBox;
Label1: TLabel;
edtZkl: TEdit;
Label2: TLabel;
edtYhje: TEdit;
Label3: TLabel;
Label4: TLabel;
lblXfje: TLabel;
lblSjje: TLabel;
tblCtxm: TTable;
DosMove1: TDosMove;
tblKrxx: TTable;
tblKrzd: TTable;
tblKrjz: TTable;
tblCtdc: TTable;
tblYsk: TTable;
btnPrint: TBitBtn;
Bevel1: TBevel;
tblCtjzD_XMBH: TStringField;
tblCtjzD_XFJE: TFloatField;
tblCtjzD_YHJE: TFloatField;
tblCtjzD_BZ: TStringField;
tblCtjzD_XMMC: TStringField;
procedure tblCtjzAfterPost(DataSet: TDataSet);
procedure tblCtjzBeforeEdit(DataSet: TDataSet);
procedure edtZklExit(Sender: TObject);
procedure edtYhjeExit(Sender: TObject);
procedure radJzfsClick(Sender: TObject);
procedure btnOkClick(Sender: TObject);
procedure btnPrintClick(Sender: TObject);
procedure tblCtjzBeforeInsert(DataSet: TDataSet);
procedure cmbJzDblClick(Sender: TObject);
procedure cmbJzKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
FCtzts: TCtzts;
FCtzt: TCtzt;
FXfje: Currency;
FYhje: Currency;
FSjje: Currency;
FSpje: Currency;
FBjje: Currency;
FXyje: Currency;
FZkl : Double;
//FKcje: Currency;
FJzfs: string;
FXykbh: string;
FKhbh: string;
FKfbh: string;
FKrbh: string;
FBmbh: string;
FZdbh: string;
FJzbh: string;
IsAppend : Boolean;
FGbkJzxx : TGbkJzxx;
procedure GetJzje;
procedure SumXfje;
procedure ShowJzxx;
procedure SumQtje;
procedure GetTdmc;
function IsValid: Boolean;
procedure UpdateKrzd;
procedure UpdateKrzdWjz;
procedure UpdateKrjz;
procedure UpdateCtdc(const ABz: string);
procedure UpdateCtzt;
procedure UpdateGz(const AZdbh,AZdlb: string);
procedure UpdateYsk;
public
{ Public declarations }
end;
var
CtjzForm: TCtjzForm;
procedure Ctjz(var ACtzts: TCtzts);
implementation
uses C_CtData, C_Sysprint, C_CardXf, C_KhdaSel;
{$R *.dfm}
//餐厅结帐
procedure Ctjz(var ACtzts: TCtzts);
begin
CtjzForm := TCtjzForm.Create(Application);
try
with CtjzForm do
begin
FBmbh := CtData.FindBh('YGDA','D_BMBH','D_YGBH',CZY.CzyBh);
FCtzts := ACtzts;
FCtzt := FCtzts[0];
FJzfs := JZFS_RMB;
radJzfs.ItemIndex := 0;
GetJzje;
ShowJzxx;
tblCtjz.Close;
tblCtjz.Open;
ShowModal;
ACtzts := FCtzts;
end;
finally
CtjzForm.tblCtjz.Close;
CtjzForm.Free;
end;
end;
procedure TCtjzForm.SumQtje;
var
PrevRecord: TBookMark;
FTotals : Currency;
begin
PrevRecord := tblCtjz.GetBookmark;
try
tblCtjz.DisableControls;
FTotals := 0;
tblCtjz.First;
while not tblCtjz.Eof do
begin
FTotals := FTotals + tblCtjzD_XFJE.Value;
tblCtjz.Next;
end;
FXfje := FTotals;
ShowJzxx;
finally
tblCtjz.EnableControls;
if PrevRecord<>nil then
begin
tblCtjz.GotoBookmark(PrevRecord);
tblCtjz.FreeBookmark(PrevRecord);
end;
end;
end;
//消费金额
procedure TCtjzForm.SumXfje;
var
s: string;
begin
//消费总额
s := 'select sum((D_XFSL-D_THSL)*D_DJ) from DCMX'
+' where (D_DEL="F")and(D_DCBH="'+FCtzt.ADcbh+'")';
FXfje := CtData.SumJe(s);
//食品金额
s := 'select sum((D_XFSL-D_THSL)*D_DJ) from DCMX'
+' where (D_DEL="F")and(D_DCBH="'+FCtzt.ADcbh
+'")and(D_XMBH="'+XMBH_SP+'")';
FSpje := CtData.SumJe(s);
//酒水
s := 'select sum((D_XFSL-D_THSL)*D_DJ) from DCMX where (D_DEL="F")and(D_DCBH="'
+FCtzt.ADcbh+'")and(D_XMBH="'
+XMBH_JS+'")';
FBjje := CtData.SumJe(s);
//香烟
s := 'select sum((D_XFSL-D_THSL)*D_DJ) from DCMX where (D_DEL="F")and(D_DCBH="'
+FCtzt.ADcbh+'")and(D_XMBH="'
+XMBH_XY+'")';
FXyje := CtData.SumJe(s);
//折扣率
FZkl := 100;
//优惠金额 //只优惠食品
//FYhje := FXfje*(1-FZkl*0.01);
FYhje := FSpje*(1-FZkl*0.01);
//实结金额
FSjje := Trunc(FXfje - FYhje + 0.99);
end;
//获取结帐金额
procedure TCtjzForm.GetJzje;
begin
edtZkl.Text := '';
edtYhje.Text := '';
IsAppend := True;
SumXfje;
tblCtjz.Close;
tblCtjz.EmptyTable;
tblCtjz.Open;
try
tblCtxm.Open;
tblCtxm.First;
while not tblCtxm.Eof do
begin
tblCtjz.Insert;
tblCtjzD_XMBH.Value := tblCtxm.FieldByName('D_XMBH').AsString;
if tblCtxm.FieldByName('D_XMBH').AsString = XMBH_SP then
begin
tblCtjzD_XFJE.Value := FSpje;
tblCtjzD_BZ.Value := 'T';
end;
if tblCtxm.FieldByName('D_XMBH').AsString = XMBH_JS then
begin
tblCtjzD_XFJE.Value := FBjje;
tblCtjzD_BZ.Value := 'T';
end;
if tblCtxm.FieldByName('D_XMBH').AsString = XMBH_XY then
begin
tblCtjzD_XFJE.Value := FXyje;
tblCtjzD_BZ.Value := 'T';
end;
tblCtjz.Post;
tblCtxm.Next;
end;
finally
IsAppend := False;
tblCtxm.Close;
end;
end;
//显示结帐信息
procedure TCtjzForm.ShowJzxx;
begin
FSjje := Trunc(FXfje - FYhje + 0.99);
lblXfje.Caption := CurrToStr(FXfje)+'元';
lblSjje.Caption := CurrToStr(FSjje)+'元';
end;
procedure TCtjzForm.tblCtjzAfterPost(DataSet: TDataSet);
begin
if not IsAppend then
SumQtje;
end;
procedure TCtjzForm.tblCtjzBeforeEdit(DataSet: TDataSet);
begin
if tblCtjzD_BZ.Value='T' then
Abort;
end;
procedure TCtjzForm.edtZklExit(Sender: TObject);
begin
if edtZkl.Text<>'' then
begin
try
FZkl := StrToFloat(edtZkl.Text);
except
Exit;
raise;
end;
if (FZkl>=0)and(FZkl<=100) then
begin
//只优惠食品
//FYhje := Trunc(FXfje*(1-FZkl*0.01));
FYhje := Trunc(FSpje*(1-FZkl*0.01));
edtYhje.Text := CurrToStr(FYhje);
end
else
FZkl := 100;
ShowJzxx;
end;
end;
procedure TCtjzForm.edtYhjeExit(Sender: TObject);
begin
if edtYhje.Text <> '' then
begin
try
FYhje := StrToCurr(edtYhje.Text);
except
Exit;
raise;
end;
ShowJzxx;
end
else
begin
FYhje := 0;
ShowJzxx;
end;
end;
procedure TCtjzForm.GetTdmc;
begin
tblKrxx.Open;
tblKrxx.Filter := 'D_KRLX=''T''';
tblKrxx.Filtered := True;
tblKrxx.First;
while not tblKrxx.Eof do
begin
cmbJz.Items.Add(tblKrxx.FieldByName('D_KRXM').AsString);
tblKrxx.Next;
end;
tblKrxx.Filter := '';
tblKrxx.Filtered := False;
tblKrxx.Close;
end;
procedure TCtjzForm.radJzfsClick(Sender: TObject);
begin
cmbJz.Items.Clear;
cmbJz.Style := csDropDownList;
case radJzfs.ItemIndex of
0: FJzfs := JZFS_RMB;
1:
begin
CtData.ListMc(cmbJz,'XYK','D_XYKMC');
FJzfs := JZFS_XYK;
end;
2: FJzfs := JZFS_ZP;
3:
begin
cmbJz.Style := csDropDown;
CtData.ListDm(cmbJz,'KHDA','D_KHMC');
FJzfs := JZFS_JZ;
end;
4:
begin
cmbJz.Style := csDropDown;
FJzfs := JZFS_GSK;
end;
5:
begin
GetTdmc;
FJzfs := JZFS_GTD;
end;
6:
begin
FJzfs := JZFS_ZD;
end;
7: FJzfs := JZFS_GBK;
8: FJzfs := JZFS_WJZ;
end;
end;
//是否有效
function TCtjzForm.IsValid: Boolean;
var
s: string;
begin
Result := False;
case radJzfs.ItemIndex of
1:
begin
FXykbh := CtData.FindBh('XYK','D_XYKBH','D_XYKMC',cmbJz.Text);
if FXykbh<>'' then
Result := True
else
ShowInfo('请选择信用卡!');
end;
3:
begin
s := GetMc(cmbJz.Text);
FKhbh := CtData.FindBh('KHDA','D_KHBH','D_KHMC',s);
if FKhbh<>'' then
Result := True
else
ShowInfo('请选择记帐客户!');
end;
4:
begin
if CtData.CheckKfzt(cmbJz.Text)=KFZT_BF then
begin
FKfbh := cmbJz.Text;
Result := True;
end
else
ShowInfo('请选择挂帐散客!');
end;
5:
begin
tblKrxx.Open;
if tblKrxx.Locate('D_KRXM',cmbJz.Text,[]) then
begin
FKrbh := tblKrxx.FieldByName('D_KRBH').AsString;
Result := True;
end
else
ShowInfo('请选择挂帐团队!');
tblKrxx.Close;
end;
else
Result := True;
end;
end;
//更新客人结帐
procedure TCtjzForm.UpdateKrjz;
begin
FJzbh := CtData.GetBh('D_JZBH',PREV_JZBH);
try
tblKrjz.Open;
tblKrjz.Insert;
tblKrjz.FieldByName('D_JZBH').AsString := FJzbh;
tblKrjz.FieldByName('D_HH').AsInteger := 0;
tblKrjz.FieldByName('D_JZLX').AsString := JZLX_FYK;
tblKrjz.FieldByName('D_XFJE').AsCurrency := FSjje+FYhje;
tblKrjz.FieldByName('D_YHJE').AsCurrency := FYhje;
tblKrjz.FieldByName('D_JZRQ').AsDateTime := Date;
tblKrjz.FieldByName('D_JZSJ').AsDateTime := Time;
tblKrjz.FieldByName('D_CZYXM').AsString := CZY.CzyXm;
tblKrjz.FieldByName('D_BMBH').AsString := FBmbh;
tblKrjz.FieldByName('D_BZ').AsString := JZBZ_FYK+' '+'餐费';
tblKrjz.FieldByName('D_JZFS').AsString := FJzfs;
tblKrjz.FieldByName('D_XYKBH').AsString := FXykbh;
tblKrjz.FieldByName('D_KHBH').AsString := FKhbh;
tblKrjz.Post;
if FJzfs<>JZFS_GBK then
begin
tblKrjz.Insert;
tblKrjz.FieldByName('D_JZBH').AsString := FJzbh;
tblKrjz.FieldByName('D_HH').AsInteger := 1;
tblKrjz.FieldByName('D_XMBH').AsString := XMBH_CF;
tblKrjz.FieldByName('D_JZLX').AsString := JZLX_FYK;
tblKrjz.FieldByName('D_XFJE').AsCurrency := FSjje+FYhje;
tblKrjz.FieldByName('D_YHJE').AsCurrency := FYhje;
tblKrjz.FieldByName('D_JZRQ').AsDateTime := Date;
tblKrjz.FieldByName('D_JZSJ').AsDateTime := Time;
tblKrjz.FieldByName('D_CZYXM').AsString := CZY.CzyXm;
tblKrjz.FieldByName('D_BMBH').AsString := FBmbh;
tblKrjz.FieldByName('D_BZ').AsString := JZBZ_FYK+' 餐费 ';
tblKrjz.FieldByName('D_JZFS').AsString := FJzfs;
tblKrjz.FieldByName('D_XYKBH').AsString := FXykbh;
tblKrjz.FieldByName('D_KHBH').AsString := FKhbh;
tblKrjz.Post;
end
else //贵宾卡
begin
//添加预交款
tblKrjz.Insert;
tblKrjz.FieldByName('D_JZBH').AsString := FJzbh;
tblKrjz.FieldByName('D_HH').AsInteger := 2;
tblKrjz.FieldByName('D_XMBH').AsString := XMBH_YJK;
tblKrjz.FieldByName('D_JZLX').AsString := JZLX_FYK;
tblKrjz.FieldByName('D_XFJE').AsCurrency := 0-FGbkJzxx.AKcje;
tblKrjz.FieldByName('D_YHJE').AsCurrency := 0;
tblKrjz.FieldByName('D_JZRQ').AsDateTime := Date;
tblKrjz.FieldByName('D_JZSJ').AsDateTime := Time;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -