📄 groupdj.pas
字号:
unit groupdj;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, Db, DBTables, StdCtrls, Grids, Spin, Mask, ExtCtrls, Buttons;
type
Tgroupdjform = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Bevel2: TBevel;
Label8: TLabel;
Label9: TLabel;
labed10: TLabel;
Label10: TLabel;
Label11: TLabel;
country: TEdit;
workunit: TMaskEdit;
master: TEdit;
djtime: TMaskEdit;
daynum: TSpinEdit;
yj: TSpinEdit;
rmnum: TSpinEdit;
pnum: TSpinEdit;
sy: TEdit;
zj: TComboBox;
GroupBox2: TGroupBox;
man: TRadioButton;
woman: TRadioButton;
rmtypegrid: TStringGrid;
rmgrid: TStringGrid;
rmf: TCheckBox;
xf: TCheckBox;
cusgrid: TStringGrid;
phonef: TCheckBox;
Button1: TButton;
Button2: TButton;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
groupname: TEdit;
Bevel1: TBevel;
S1: TStoredProc;
q1: TQuery;
s2: TStoredProc;
isreg: TCheckBox;
Label13: TLabel;
ttjc: TMaskEdit;
BitBtn1: TBitBtn;
s3: TStoredProc;
id: TMaskEdit;
Label14: TLabel;
nl: TSpinEdit;
Bevel4: TBevel;
Bevel5: TBevel;
Panel1: TPanel;
xj: TRadioButton;
zp: TRadioButton;
card: TRadioButton;
cardlist: TComboBox;
gz: TRadioButton;
mf: TRadioButton;
Label15: TLabel;
Bevel3: TBevel;
Bevel6: TBevel;
Bevel7: TBevel;
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure rmtypegridKeyPress(Sender: TObject; var Key: Char);
procedure rmgridKeyPress(Sender: TObject; var Key: Char);
procedure rmtypegridSetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);
procedure PopupMenu1Popup(Sender: TObject);
procedure xfClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure rmgridExit(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn1Click(Sender: TObject);
procedure rmtypegridExit(Sender: TObject);
procedure groupnameExit(Sender: TObject);
procedure djtimeExit(Sender: TObject);
procedure idExit(Sender: TObject);
procedure xjClick(Sender: TObject);
procedure zpClick(Sender: TObject);
procedure gzClick(Sender: TObject);
procedure mfClick(Sender: TObject);
procedure cardClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
groupdjform: Tgroupdjform;
implementation
uses dataproc;
{$R *.DFM}
var
rmtp,custp:array [0..30] of string;
procedure formini;
begin
with groupdjform do
begin
groupname.text:='';
sy.text:='';
country.text:='中国';
workunit.text:='';
master.Text :='';
man.Checked :=true;
zj.Clear ;
id.Text :='';
ttjc.Text :='';
djtime.Text :=datetimetostr(now);
daynum.Value :=3;
yj.Value :=1000;
rmnum.Value :=0;
pnum.Value :=0;
rmf.Checked :=false;
phonef.Checked :=false;
xf.Checked :=false;
isreg.Checked :=false;
end
end;
procedure datatoctl(ss:string);
var
i:integer;
begin
with groupdjform do
begin
i:=1;
q1.Active :=false;
q1.sql.clear;
q1.sql.add('select roomtype,name,bednum from roomtype');
q1.Prepare;
q1.open;
q1.Active :=true;
rmtypegrid.RowCount :=q1.RecordCount+1 ;
while not q1.EOF do
begin
rmtp[i]:=q1.fieldbyname('roomtype').asstring;
rmtypegrid.cells[0,i]:=q1.fieldbyname('name').asstring;
rmtypegrid.Cells [1,i]:=inttostr(q1.fieldbyname('bednum').asinteger);
s1.ParamByName('@iroomtype').asstring:=trim(rmtp[i]);
s1.ParamByName ('@idatetime').asdatetime:=strtodatetime(trim(ss));
s1.ParamByName ('@idate').asdatetime:=strtodatetime(copy(trim(ss),1,10));
s1.Prepare;
s1.ExecProc ;
rmtypegrid.cells[2,i]:=inttostr(s1.ParamByname('@oroomnum').asinteger);
rmtypegrid.cells[3,i]:='';
q1.Next ;
i:=i+1;
end;
i:=1;
q1.Active :=false;
q1.sql.clear;
q1.sql.Add('select custype,cusname from custype where parentcode=:pid');
q1.ParamByName ('pid').asstring:='0';
q1.Prepare;
q1.open;
q1.Active :=true;
cusgrid.rowcount:=q1.recordcount+1 ;
while not q1.eof do
begin
custp[i]:=q1.fieldbyname('custype').asstring;
cusgrid.Cells[0,i]:=q1.fieldbyname('cusname').asstring;
cusgrid.cells[1,i]:='自己付';
q1.Next ;
i:=i+1;
end;
q1.Active :=false;
end;
end;
{procedure wic(k,i:integer;welid,accno:string);
var ss,ls,rq,bx:string;
bb:Word;
fd:smallint;
begin
with groupdjform do
begin
if not xfk.Checked then exit;
if Application.MessageBox(pchar('请插入IC卡(房号:'+trim(rmgrid.cells[0,i])+')!'),'房卡信息',49)=2 then exit;;
ss:=' ';
rq:=formatdatetime('yyyy-mm-dd hh:mm:ss',now);
bx:='001';
fd:=open_com('');
if fd=0 then exit;
ls:=HotelNo+copy('0000000'+trim(rmgrid.Cells[0,k]),length(trim(rmgrid.Cells[0,k])),8)+bx+'00'+formatdatetime('hh',strtodatetime(rq))+newDate(strtodatetime(rq))+'0012'+newdate(strtodatetime(djtime.text)+daynum.value)+'2050000000000';
bb:=write_ic(fd,$30,1,ls);
if bb=0 then
begin
bb:=CT_close(fd);
exit;
end;
ls:=copy(trim(rmgrid.Cells[0,k])+ss,1,7)+copy(trim(trim(ttjc.Text)+' '+trim(rmgrid.cells[0,i]))+ss,1,21)
+copy(formatdatetime('yyyymmddhhmmss',strtodatetime(djtime.text))+ss,1,14)
+copy(formatdatetime('yyyymmddhhmmss',strtodatetime(djtime.text)+daynum.value)+ss,1,14)+copy(trim(id.Text)+ss,1,19)
+copy(welid+ss,1,6)+copy(accno+ss,1,6)+'000000000000';
bb:=write_ic(fd,$70,0,ls);
bb:=CT_close(fd);
q1.Active :=false;
q1.sql.clear;
q1.sql.add('insert into iccmx values(:pRoomNo,:pName,:pWelid,:paccno,:pcodeno,:ptime)');
q1.ParamByName ('proomno').asstring:=trim(rmgrid.Cells[0,k]);
q1.ParamByName ('paccno').asstring:=accno;
q1.ParamByName ('pwelid').asstring:=welid;
q1.ParamByName ('pname').asstring:=trim(ttjc.Text)+' '+trim(rmgrid.cells[0,i]);
// q1.ParamByName ('page').asinteger:=age.Value;
q1.ParamByName ('pcodeno').asstring:=xdh('iccmx','','codeno',5);
q1.ParamByName ('ptime').asstring:=rq;
q1.Prepare;
q1.ExecSQL ;
q1.Active :=false;
end;
end; }
procedure Tgroupdjform.FormCreate(Sender: TObject);
begin
shortdateformat:='yyyy-mm-dd';
bitbtn1.Caption :='自'+#13+'动'+#13+'分'+#13'房';
rmtypegrid.Cells [0,0]:=' 房间类型';
rmtypegrid.Cells [1,0]:=' 房间床数';
rmtypegrid.Cells [2,0]:=' 可用房间';
rmtypegrid.Cells [3,0]:=' 数量';
rmgrid.cells[0,0]:='房间';
rmgrid.cells[1,0]:='价格';
cusgrid.Cells [0,0]:=' 消费类型';
cusgrid.Cells [1,0]:='付款方式';
formini;
comadd(groupdjform.zj,1,'select name from zj');
datatoctl(trim(djtime.text));
cardlist.Clear;
cardlist.items.add('牡丹卡');
cardlist.items.add('龙卡');
cardlist.items.add('长城卡');
cardlist.itemindex:=0;
end;
procedure Tgroupdjform.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
selectnext(activecontrol,true,true);
if key=27 then
groupdjform.close;
end;
procedure Tgroupdjform.rmtypegridKeyPress(Sender: TObject; var Key: Char);
begin
if ((key<'0') or (key>'9')) then
if (key<>char(8)) then
key:=char(0);
end;
procedure Tgroupdjform.rmgridKeyPress(Sender: TObject; var Key: Char);
begin
if ((key<'0') or (key>'9')) then
if (key<>char(8)) then
key:=char(0);
end;
procedure Tgroupdjform.rmtypegridSetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
var
i,rmsl,psl:integer;
begin
if length(trim(rmtypegrid.cells[3,arow]))>0 then
begin
if strtoint(trim(rmtypegrid.cells[3,arow]))>strtoint(trim(rmtypegrid.cells[2,arow])) then
begin
showmessage('只有 '+trim(rmtypegrid.cells[2,arow])+' 间房间可用');
rmtypegrid.cells[3,arow]:='';
end;
end;
i:=1;
rmsl:=0;
psl:=0;
while i<rmtypegrid.RowCount do
begin
if length(trim(rmtypegrid.cells[3,i]))>0 then
begin
rmsl:=rmsl+strtoint(trim(rmtypegrid.cells[3,i]));
psl:=psl+strtoint(trim(rmtypegrid.cells[3,i]))*strtoint(trim(rmtypegrid.cells[1,i]));
end;
i:=i+1;
end;
rmnum.Value :=rmsl;
pnum.Value :=psl;
end;
procedure Tgroupdjform.PopupMenu1Popup(Sender: TObject);
begin
if trim(cusgrid.Cells [1,cusgrid.Row])='自己付' then
begin
n2.Enabled :=false;
n1.Enabled :=true;
end;
if trim(cusgrid.Cells [1,cusgrid.Row])='团体付' then
begin
n1.Enabled :=false;
n2.Enabled :=true;
end;
end;
procedure Tgroupdjform.xfClick(Sender: TObject);
var
i:integer;
begin
i:=1;
while i<cusgrid.RowCount do
begin
if xf.Checked =true then
cusgrid.Cells [1,i]:='团体付'
else
cusgrid.Cells [1,i]:='自己付';
i:=i+1;
end;
end;
procedure Tgroupdjform.N1Click(Sender: TObject);
begin
cusgrid.cells[1,cusgrid.row]:='团体付';
end;
procedure Tgroupdjform.N2Click(Sender: TObject);
begin
cusgrid.cells[1,cusgrid.row]:='自己付';
end;
procedure Tgroupdjform.rmgridExit(Sender: TObject);
var
aa:array [0..1] of string;
i,j:integer;
ls,ss:string;
begin
j:=rmgrid.rowcount-1;
i:=1;
ss:=' ';
while i<rmgrid.RowCount do
begin
if length(trim(rmgrid.cells[0,i]))>0 then
begin
aa[0]:='';
ls:=trim(rmgrid.cells[0,i]);
getvalue(aa,'select status from room where roomno='''+ls+'''');
if trim(aa[0])<>'0' then
begin
if j>i then
j:=i;
ss:=ss+' '+ls;
end
end;
i:=i+1;
end;
if length(trim(ss))>0 then
begin
showmessage('房间 '+ss+' 错误');
rmgrid.SetFocus ;
rmgrid.row:=j;
end;
i:=1;
while i<rmgrid.rowcount do
begin
ls:=rmgrid.Cells [0,i];
if length(trim(ls))>0 then
begin
j:=i+1;
while j<rmgrid.RowCount do
begin
if length(trim(rmgrid.cells[0,j]))>0 then
if trim(rmgrid.cells[0,j])=ls then
begin
showmessage('房间 '+ls+' 重号');
rmgrid.setfocus;
rmgrid.row:=j;
exit;
end;
j:=j+1;
end;
end;
i:=i+1;
end;
i:=1;
while i<rmgrid.rowcount do
begin
if length(trim(rmgrid.Cells [0,i]))=0 then
rmgrid.Cells [1,i]:=''
else
if length(trim(rmgrid.Cells [1,i]))=0 then
rmgrid.Cells [1,i]:=inttostr(roommoney(trim(rmgrid.Cells [0,i]),1,0));
i:=i+1;
end;
end;
procedure Tgroupdjform.Button2Click(Sender: TObject);
begin
groupdjform.close;
end;
procedure Tgroupdjform.Button1Click(Sender: TObject);
var
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -