📄 c_tdzd.pas
字号:
{立方酒店管理系统 v1.0
Copyright by CubicSoft
program by ls.
Date:20020301-20020601
20020627 加入注释
}
unit C_Tdzd;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, C_StdJd, DosMove, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, C_Define,
DB, DBTables;
type
TTdzdForm = class(TStdJdForm)
Label1: TLabel;
lblXfje: TLabel;
Label3: TLabel;
lblJsje: TLabel;
Label5: TLabel;
lblYjje: TLabel;
Label7: TLabel;
lblTfje: TLabel;
Label9: TLabel;
lblYfje: TLabel;
Label11: TLabel;
lblYhje: TLabel;
Label2: TLabel;
Label4: TLabel;
lblJzfs: TLabel;
Label8: TLabel;
Label10: TLabel;
lblJzrq: TLabel;
lblJzsj: TLabel;
Label6: TLabel;
Bevel2: TBevel;
edtSjje: TEdit;
dbgZd: TDBGrid;
tblYsk: TTable;
tblKryj: TTable;
qryZd: TQuery;
tblKrjz: TTable;
tblKrjzD_XFXM: TStringField;
dsKrjz: TDataSource;
qryKrzd: TQuery;
btnPrint: TBitBtn;
tblKrjzD_JZBH: TStringField;
tblKrjzD_HH: TIntegerField;
tblKrjzD_XMBH: TStringField;
tblKrjzD_XFDJ: TFloatField;
tblKrjzD_XFSL: TFloatField;
tblKrjzD_XFGG: TStringField;
tblKrjzD_XFJE: TFloatField;
tblKrjzD_YJJE: TFloatField;
tblKrjzD_YHJE: TFloatField;
tblKrjzD_JZFS: TStringField;
tblKrjzD_JZLX: TStringField;
tblKrjzD_KHBH: TStringField;
tblKrjzD_XYKBH: TStringField;
tblKrjzD_JZRQ: TDateTimeField;
tblKrjzD_JZSJ: TDateTimeField;
tblKrjzD_CZYXM: TStringField;
tblKrjzD_BZ: TStringField;
tblKrjzD_YSRQ: TStringField;
qryKrzdD_ZDBH: TStringField;
qryKrzdD_HH: TIntegerField;
qryKrzdD_ZDLB: TStringField;
qryKrzdD_KRBH: TStringField;
qryKrzdD_YJBH: TStringField;
qryKrzdD_KFBH: TStringField;
qryKrzdD_SJFJ: TFloatField;
qryKrzdD_XMBH: TStringField;
qryKrzdD_XFDJ: TFloatField;
qryKrzdD_XFSL: TFloatField;
qryKrzdD_XFJE: TFloatField;
qryKrzdD_XFRQ: TDateTimeField;
qryKrzdD_XFSJ: TDateTimeField;
qryKrzdD_YHJE: TFloatField;
qryKrzdD_JZRQ: TDateTimeField;
qryKrzdD_JZSJ: TDateTimeField;
qryKrzdD_JZBZ: TStringField;
qryKrzdD_JSBZ: TStringField;
qryKrzdD_DLR1: TStringField;
qryKrzdD_DLR2: TStringField;
qryKrzdD_DLR3: TStringField;
qryKrzdD_DLR4: TStringField;
qryKrzdD_CZYXM: TStringField;
qryKrzdD_JZYXM: TStringField;
qryKrzdD_TYR: TStringField;
qryKrzdD_BZ: TStringField;
qryKrzdD_YSRQ: TStringField;
qryKrzdD_JZBH: TStringField;
tblKrjzD_BMBH: TStringField;
qryKrzdD_BMBH: TStringField;
Label12: TLabel;
lblKrxm: TLabel;
btnFjmx: TBitBtn;
btnZdmx: TBitBtn;
procedure tblKrjzNewRecord(DataSet: TDataSet);
procedure tblKrjzBeforeInsert(DataSet: TDataSet);
procedure tblKrjzAfterPost(DataSet: TDataSet);
procedure tblKrjzBeforeDelete(DataSet: TDataSet);
procedure tblKrjzD_YHJEValidate(Sender: TField);
procedure btnCancClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure edtSjjeExit(Sender: TObject);
procedure btnPrintClick(Sender: TObject);
procedure btnFjmxClick(Sender: TObject);
procedure btnZdmxClick(Sender: TObject);
private
{ Private declarations }
FBmbh: string;
FJzxx: TTdJzxx;
FYfje: Currency;
FYjje: Currency;
FXfje: Currency;
FJsje: Currency;
FSjje: Currency;
FYhje: Currency;
FTfje: Currency;
FEwf : Currency;
FJzbh: string;
FHh : Integer;
IsAppend: Boolean;
procedure ShowJzfs;
procedure ShowJzxx;
function SumYfje: Currency;
function SumYjje: Currency;
function SumXfje: Currency;
function SumEwf : Currency;
procedure AddEwf;
procedure CanYh;
procedure AddKrjz;
procedure SumYhje;
procedure UpdateEwf;
procedure UpdateKrzd(const ABz: string);
procedure AddKrzd(const AXmbh: string;AXfje: Currency);
procedure UpdateKrjz;
procedure UpdateKrxx;
procedure BakKrxx;
procedure EmptyKrxx;
procedure EmptyKryj;
procedure BakKrzd;
//procedure EmptyKrzd;
procedure UpdateYsk;
procedure AddYjk(AGbkJzxx: TGbkJzxx);
procedure AddYsk(const AKhbh,AZdbh,AXmbh: string;AHh: Integer;AXfje: Currency);
public
{ Public declarations }
end;
var
TdzdForm: TTdzdForm;
procedure Tdzd(AJzxx: TTdJzxx);
implementation
uses C_HotelData, C_Sysprint, C_CardXf, C_Fjmx, C_Zdmx;
{$R *.dfm}
//团队结帐
procedure Tdzd(AJzxx: TTdJzxx);
begin
TdzdForm := TTdzdForm.Create(Application);
try
with TdzdForm do
begin
//获取部门编号
FBmbh := HotelData.FindBh('YGDA','D_BMBH','D_YGBH',CZY.CzyBh);
//获取结帐信息
FJzxx := AJzxx;
//是否能优惠
CanYh;
//获取客房信息
//GetKfxx;
//显示结帐方式
ShowJzfs;
//计算押金金额
FYfje := SumYfje;
//计算已结金额
FYjje := SumYjje;
//计算消费金额
FXfje := SumXfje;
//显示结帐信息
ShowJzxx;
//显示帐单列表
AddKrjz;
ShowModal;
end;
finally
TdzdForm.Free;
end;
end;
//判断是否允许优惠
procedure TTdzdForm.CanYh;
begin
dbgZd.Columns[2].ReadOnly :=
not((FJzxx.AJzfs=JZFS_RMB)or(FJzxx.AJzfs=JZFS_ZP)or(FJzxx.AJzfs=JZFS_XYK));
end;
//获取预付金额
function TTdzdForm.SumYfje: Currency;
var
SqlStr: string;
begin
SqlStr :=
'select sum(D_YFJE) from KRYJ where (D_FKFS="'+FKFS_RMB
+'")and(D_YJBH="'+FJzxx.AYjbh+'")';
Result := HotelData.SumJe(SqlStr);
end;
//获取已结金额
function TTdzdForm.SumYjje: Currency;
var
SqlStr: string;
begin
SqlStr := 'select sum(D_XFJE) from KRZD where ((D_JZBZ="'+JZ_YX+'")'
+'or(D_XMBH="'+XMBH_YJK+'"))and(D_ZDBH="'+FJzxx.AZdbh+'")';
Result := 0-HotelData.SumJe(SqlStr);
end;
//获取消费金额
function TTdzdForm.SumXfje: Currency;
var
SqlStr: string;
begin
SqlStr := 'select sum(D_XFJE) from KRZD where (D_HH<>0)'
+'and(D_ZDBH="'+FJzxx.AZdbh+'")and(D_XMBH<>"'+XMBH_YJK+'")and(D_JZBZ<>"'+JZ_YX+'")';
Result := HotelData.SumJe(SqlStr);
end;
//显示结帐方式
procedure TTdzdForm.ShowJzfs;
begin
lblKrxm.Caption := FJzxx.AKrxm;
//edit by ls. 2002/09/02
if FJzxx.AJzfs = JZFS_JZ then
lblJzfs.Caption := FJzxx.AJzfs+'('+FJzxx.AKhbh+')'
else if FJzxx.AJzfs = JZFS_XYK then
lblJzfs.Caption := FJzxx.AJzfs+'('+HotelData.FindMc('XYK','D_XYKBH','D_XYKMC',FJzxx.AXykbh)+')'
//else if FJzxx.AJzfs = JZFS_GSK then
//lblJzfs.Caption := FJzxx.AJzfs+'('+FJzxx.AKfbh+')'
//else if FJzxx.AJzfs = JZFS_GTD then
//lblJzfs.Caption := FJzxx.AJzfs+'('+HotelData.FindMc('KRXX','D_KRBH','D_KRXM',FJzxx.AKrbh)+')'
else
lblJzfs.Caption := FJzxx.AJzfs;
lblJzrq.Caption := FormatDateTime('yyyy-mm-dd',FJzxx.AJzrq);
lblJzsj.Caption := FormatDateTime('hh:mm',FJzxx.AJzsj);
end;
//显示结帐信息
procedure TTdzdForm.ShowJzxx;
begin
//结算金额
FJsje := FXfje-FYjje-FYhje;
//实结金额
if FJsje>=0 then
FSjje := Trunc(FJsje+0.99)
else
FSjje := Trunc(FJsje-0.99);
//20020627 edit by ls. 如果不是人民币结帐 退还全部押金
if FJzxx.AJzfs=JZFS_RMB then
begin
if FYfje>0 then
FTfje := FYfje-FSjje
else
FTfje := 0;
end
else
FTfje := FYfje;
lblYfje.Caption := FormatFloat('#.##',FYfje);//CurrToStr(FYfje)+'元';
lblXfje.Caption := FormatFloat('#.##',FXfje);//CurrToStr(FXfje)+'元';
lblYjje.Caption := FormatFloat('#.##',FYjje);//CurrToStr(FYjje)+'元';
lblYhje.Caption := FormatFloat('#.##',FYhje);//CurrToStr(FYhje)+'元';
lblJsje.Caption := FormatFloat('#.##',FJsje);//CurrToStr(FJsje)+'元';
lblTfje.Caption := FormatFloat('#.##',FTfje);//CurrToStr(FTfje)+'元';
edtSjje.Text := FormatFloat('#.##',FSjje);//CurrToStr(FSjje);
end;
//添加结帐帐单列表
procedure TTdzdForm.AddKrjz;
var
SqlStr: string;
begin
SqlStr := 'select D_XMBH,sum(D_XFJE) as XFJE from KRZD where (D_HH<>0)'
+'and(D_ZDBH="'+FJzxx.AZdbh+'") group by D_XMBH';
with qryZd do
begin
SQL.Clear;
SQL.Add(SqlStr);
try
Open;
except
On E:Exception do
begin
ShowWarning('打开数据库出错,请检查网络连接是否正常!'
+#13#10
+'错误信息:'
+E.Message);
raise;
end;
end;
end;
tblKrjz.DisableControls;
try
IsAppend := True;
//获取结帐编号
FJzbh := HotelData.GetBh('D_JZBH',PREV_JZBH);
//行号=1
FHh := 1;
try
tblKrjz.Open;
except
On E:Exception do
begin
ShowWarning('打开数据库出错,请检查网络连接是否正常!'
+#13#10
+'错误信息:'
+E.Message);
raise;
end;
end;
tblKrjz.Filter := 'D_JZBH='''+FJzbh+'''';
tblKrjz.Filtered := True;
//添加消费明细
qryZd.First;
while not qryZd.Eof do
begin
if qryZd.FieldByName('D_XMBH').AsString<>'' then
begin
tblKrjz.Insert;
tblKrjzD_XMBH.Value := qryZd.FieldByName('D_XMBH').AsString;
tblKrjzD_XFJE.Value := qryZd.FieldByName('XFJE').AsCurrency;
tblKrjz.Post;
end;
qryZd.Next;
end;
finally
IsAppend := False;
tblKrjz.First;
tblKrjz.EnableControls;
end;
end;
//累加优惠金额
procedure TTdzdForm.SumYhje;
var
PrevRecord: TBookMark;
begin
PrevRecord := tblKrjz.GetBookmark;
try
tblKrjz.DisableControls;
FYhje := 0;
tblKrjz.First;
while not tblKrjz.Eof do
begin
FYhje := FYhje + tblKrjzD_YHJE.Value;
tblKrjz.Next;
end;
finally
tblKrjz.EnableControls;
if PrevRecord<>nil then
begin
tblKrjz.GotoBookmark(PrevRecord);
tblKrjz.FreeBookmark(PrevRecord);
end;
ShowJzxx;
end;
end;
procedure TTdzdForm.tblKrjzNewRecord(DataSet: TDataSet);
begin
inherited;
if IsAppend then
begin
tblKrjzD_JZBH.Value := FJzbh;
tblKrjzD_HH.Value := FHh;
tblKrjzD_JZRQ.Value := FJzxx.AJzrq;
tblKrjzD_JZSJ.Value := FJzxx.AJzsj;
tblKrjzD_JZFS.Value := FJzxx.AJzfs;
tblKrjzD_XYKBH.Value:= FJzxx.AXykbh;
tblKrjzD_KHBH.Value := FJzxx.AKhbh;
tblKrjzD_JZLX.Value := JZLX_YK;
tblKrjzD_CZYXM.Value:= CZY.CzyXm;
tblKrjzD_BMBH.Value := FBmbh;
tblKrjzD_BZ.Value := JZBZ_TD+' '+FJzxx.AKrxm;
end;
end;
procedure TTdzdForm.tblKrjzBeforeInsert(DataSet: TDataSet);
begin
inherited;
if not IsAppend then
Abort;
end;
procedure TTdzdForm.tblKrjzAfterPost(DataSet: TDataSet);
begin
inherited;
if not IsAppend then
SumYhje
else
Inc(FHh);
end;
procedure TTdzdForm.tblKrjzBeforeDelete(DataSet: TDataSet);
begin
inherited;
Abort;
end;
//检查优惠金额有效性
procedure TTdzdForm.tblKrjzD_YHJEValidate(Sender: TField);
begin
inherited;
if tblKrjzD_XMBH.Value <> XMBH_YJK then
begin
if tblKrjzD_YHJE.AsCurrency>tblKrjzD_XFJE.AsCurrency then
raise Exception.Create('优惠金额不能大于消费金额!');
end
else
begin
if tblKrjzD_YHJE.Value <> 0 then
raise Exception.Create('预交款不能优惠!');
end;
end;
//获取额外费
function TTdzdForm.SumEwf: Currency;
begin
Result := FSjje-FJsje;
end;
//结帐库中添加额外费
procedure TTdzdForm.AddEwf;
begin
IsAppend := True;
tblKrjz.Insert;
tblKrjzD_XMBH.Value := XMBH_EWF;
tblKrjzD_XFJE.Value := FEwf;
tblKrjz.Post;
IsAppend := False;
end;
//结帐库中添加额外费,更新额外费库
procedure TTdzdForm.UpdateEwf;
begin
//获取额外费
FEwf := SumEwf;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -