unitroomcheck.pas

来自「自己做过的工程」· PAS 代码 · 共 1,358 行 · 第 1/4 页

PAS
1,358
字号
    end;

        //在这里就清空所有的控件中的信息
ed_roomid.Clear;
ed_username.Clear;
ed_intime.Clear;
ed_checktime.Clear;
//ed_employeeid.Clear;
ed_roomthings.Clear;
ed_roomfee.Clear;
ed_kalaok.Clear;
ed_ballroom.Clear;
ed_commercecenter.Clear;
ed_suproom.Clear;
ed_supsecond.Clear;
ed_hairdressing.Clear;
ed_discount.Text:='10';
ed_totalfee.Clear;
ed_remark.Clear;

ed_roomid.ReadOnly:=false;
//将计算按钮重新设置为不可用
   but_compute.Enabled:=false;

   DMHotel.ADODataSet_roomin.Requery;
   DMHotel.ADODataSet_roomdebt.Requery;
   DMHotel.ADODataSet_roomstatus.Requery;
   DMHotel.ADODataSet_roomstatus.Close;
   DMHotel.ADODataSet_roomdebt.Close;
   DMHotel.ADODataSet_roomin.Close;
   DMHotel.ADOConnection1.CommitTrans;
end;


procedure Tformroomcheck.but_cancelClick(Sender: TObject);
begin
   if MessageDlg('您确定要重新填写吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
         exit;

ed_roomid.Clear;
ed_roomid.ReadOnly:=false;
ed_username.Clear;
ed_intime.Clear;
ed_checktime.Clear;
//ed_employeeid.Clear;
ed_roomthings.Clear;
ed_roomfee.Clear;
ed_kalaok.Clear;
ed_ballroom.Clear;
ed_commercecenter.Clear;
ed_suproom.Clear;
ed_supsecond.Clear;
ed_hairdressing.Clear;
ed_discount.Text:='10';
ed_totalfee.Clear;
ed_remark.Clear;

//费用计算要设置为不可用
but_compute.Enabled:=false;

end;
  //房客帐单查询
procedure Tformroomcheck.but_roomselectClick(Sender: TObject);
var
oldtotalfee:extended;
begin
if    ed_oldusername.Text='' then
begin
showmessage('你输入的要查询的人的姓名为空,请重新输入!');
exit;
end;

    DMHotel.SetDebtView1(ed_oldusername.Text,oldtotalfee);
    //showmessage(floattostr(oldtotalfee));
    ed_oldtotalfee.Text:=floattostr(oldtotalfee);
    button9.Enabled:=true;
   but_printdebt.Enabled:=false;
    cb_judge.Enabled:=true;
    cb_judge.Checked:=false;
end;

procedure Tformroomcheck.Button10Click(Sender: TObject);
// var
// oldusername:string;
begin
   if MessageDlg('您确定要重新填写吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
         exit;
//  oldusername:=ed_oldusername.Text;

  DMHotel.ADODataSet_roomdebt.Close;
  DMHotel.ADODataSet_roomdebt.Prepared:=false;
  //这个地方不能用变量 .一定要用这种查询的形式!
  //首先要进行条件判断     >=:N1 and username<=:N2  username like   and
  DMHotel.ADODataSet_roomdebt.CommandText:='select * from room_debt where '+
     ' checkornot=:yesornot' ;
  //DMHotel.ADODataSet_roomdebt.Parameters.ParamByName('oldusername').Value:=oldusername;
  DMHotel.ADODataSet_roomdebt.Parameters.ParamByName('yesornot').Value:='欠账';


  //在这里进行统一的结算所有的帐单
  DMHotel.ADODataSet_roomdebt.Prepared:=true;
  DMHotel.ADODataSet_roomdebt.Open;

ed_oldusername.Clear;
ed_oldtotalfee.Clear;
end;

procedure Tformroomcheck.Button11Click(Sender: TObject);
begin
close;
end;
//房客还帐
procedure Tformroomcheck.Button9Click(Sender: TObject);
//var
//oldtotalfee:extended;
begin
     if MessageDlg('您确定要进行'+ed_oldusername.text+'的结帐操作吗吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
         exit;
    //  DMHotel.SetDebtView1(ed_oldusername.Text,oldtotalfee);
              // DMHotel.ADODataSet_roomdebt.Open;
      DMHotel.ADODataSet_roomdebt.First;
  while not  DMHotel.ADODataSet_roomdebt.Eof do
 // showmessage('aaa');
    begin
               //这个地方收银实际上就是要将room_debt 中的checkornot字段的值改变 ’欠帐 ‘该为’已还‘
               //还要将还帐的时间记在里面
               //这个地方有个问题,但是不暂时不知道应该怎么解决?
     {  if DMHotel.ADODataSet_roomdebt.FieldByName('username').AsString=ed_oldusername.Text then
       showmessage('aaa');  }
       begin
        DMHotel.ADODataSet_roomdebt.Edit;
        DMHotel.ADODataSet_roomdebt.FieldByName('redebttime').Value:=date+time;
        DMHotel.ADODataSet_roomdebt.FieldByName('checkornot').AsString:='帐务已还清';
        DMHotel.ADODataSet_roomdebt.Post;
        showmessage('  '+ed_oldusername.Text+'  房客的帐单已经还清,记录已写入数据库中!');
       end;
        DMHotel.ADODataSet_roomdebt.Next;
       // showmessage('  '+ed_oldusername.Text+'  房客的帐单已经还清,记录已写入数据库中!');
     end;
      //showmessage('  '+ed_oldusername.Text+'  房客的帐单已经还清,记录已写入数据库中!');
      button9.Enabled:=false;
      ed_oldusername.Clear;
      ed_oldtotalfee.Clear;
      DMHotel.ADODataSet_roomdebt.Requery;
    DMHotel.ADODataSet_roomdebt.Close;
  DMHotel.ADODataSet_roomdebt.Prepared:=false;
  DMHotel.ADODataSet_roomdebt.CommandText:='select * from room_debt where '+
  ' checkornot=:yesornot' ;
  // DMHotel.ADODataSet_roomdebt.Parameters.ParamByName('oldusername').Value:=oldusername;
  DMHotel.ADODataSet_roomdebt.Parameters.ParamByName('yesornot').Value:='欠帐' ;
  DMHotel.ADODataSet_roomdebt.Prepared:=true;
  DMHotel.ADODataSet_roomdebt.Open;    
  but_printdebt.Enabled:=true;
end;

procedure Tformroomcheck.Button2Click(Sender: TObject);
var
vtest:extended;
begin
if  ed_customername.Text='' then
  begin
    showmessage('你的顾客姓名为空,请重新输入!' );
    exit;
  end;

 //判断各个控件是否为空,要是空就要将值设置为零
 if  ed_debtkalaok.Text='' then
      ed_debtkalaok.Text:=inttostr(0);

  if  ed_debtballroom.Text='' then
      ed_debtballroom.Text:=inttostr(0);

   if  ed_debtcommerce.Text='' then
      ed_debtcommerce.Text:=inttostr(0);

     if  ed_debtsuproom.Text='' then
      ed_debtsuproom.Text:=inttostr(0);

  if  ed_debtsupsecond.Text='' then
      ed_debtsupsecond.Text:=inttostr(0);

    if  ed_debthairdressing.Text='' then
      ed_debthairdressing.Text:=inttostr(0);

    //判断是不是实数
      //1
if not  trystrtofloat( ed_debtkalaok.Text,vtest)     then
begin
messagebox(handle,'你输入的卡拉OK不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
 //2
if not  trystrtofloat( ed_debtballroom.Text,vtest)     then
begin
messagebox(handle,'你输入的歌舞厅费不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
//3
if not  trystrtofloat( ed_debtcommerce.Text,vtest)     then
begin
messagebox(handle,'你输入的商务中心费用用不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
//4
if not  trystrtofloat( ed_debtsupsecond.Text,vtest)     then
begin
messagebox(handle,'你输入的散座餐费用不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
//5
if not  trystrtofloat( ed_debtdiscount.Text,vtest)     then
begin
messagebox(handle,'你输入的折扣不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
//6
if not  trystrtofloat(ed_debthairdressing.Text,vtest)     then
begin
messagebox(handle,'你输入的美容中心费用用不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;        //   ed_debtsupsecond
//7
if not  trystrtofloat(ed_debtsuproom.Text,vtest)     then
begin
messagebox(handle,'你输入的包间餐费不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;


button1.Enabled:=true;
ed_debttotalfee.Text:=floattostr(strtofloat(ed_debtdiscount.Text)*(strtofloat(ed_debtkalaok.Text)+strtofloat(ed_debtballroom.Text)+strtofloat(ed_debtcommerce.Text)+strtofloat(ed_debtsuproom.Text)+strtofloat(ed_debtsupsecond.Text)+strtofloat(ed_debthairdressing.Text))/10);
end;

procedure Tformroomcheck.Button1Click(Sender: TObject);
var
itemtype:string;
customerid:integer;
begin
   if ed_customername.Text='' then
         begin
             showmessage('你没有输入顾客的姓名,请重新输入!');
             exit;
         end;
//帐单入录的实质就是要将这些记录记到customer_debt表中
   if ed_debttotalfee.Text=inttostr(0) then
        begin
            showmessage('该顾客的帐单为 0 ,不能进行帐单入库操作!');
            exit;
        end;



//注意在这里一定要使表中有一个主键,才可以进行删除的操作。因为可能回遇到
//多条记录相同的情况。如果没有主件就会不能进行删除的操作
   itemtype:='customermanagecode';
   DMHotel.ADODataSet_itemnumber.Open;
   DMHotel.ADODataSet_itemnumber.Locate('itemtype',itemtype,[]);
   customerid:=DMHotel.ADODataSet_itemnumber.FieldValues['itemno'];
   customerid:=customerid+1;
   DMHotel.ADODataSet_itemnumber.Edit;
   DMHotel.ADODataSet_itemnumber.FieldValues['itemno']:=customerid;
   DMHotel.ADODataSet_itemnumber.Post;
   //showmessage(inttostr(customerid));
   DMHotel.ADODataSet_itemnumber.Close;

   //先要打开数据集

   DMHotel.ADOConnection1.BeginTrans;
   dmhotel.ADODataSet_customerdebt.Open;
   with DMHotel.ADOQuery1 do
      begin
        close;//关闭以前的操作
        sql.Clear;
        sql.Add('Insert into customer_debt(code,customername,indebttime,employeeid,'+
'kalaok,ballroom,commercecenter,suproom,supsecond,hairdressing,discount,totalfee,remark,checkornot)');
        sql.Add('Values (:code,:customername,:indebttime,:employeeid,:kalaok,:ballroom,'+
':commercecenter,:suproom,:supsecond,:hairdressing,:discount,:totalfee,:remark,:checkornot)');
        parameters.ParamByName('code').Value:=customerid;
        parameters.ParamByName('customername').Value:=ed_customername.Text;
        parameters.ParamByName('indebttime').Value:=strtodatetime(ed_indebttime.Text);
        parameters.ParamByName('employeeid').Value:=ed_debtemployeeid.Text;
        parameters.ParamByName('kalaok').Value:=strtofloat(ed_debtkalaok.Text);
        parameters.ParamByName('ballroom').Value:=strtofloat(ed_debtballroom.Text);
        parameters.ParamByName('commercecenter').Value:=strtofloat(ed_debtcommerce.Text);
        parameters.ParamByName('suproom').Value:=strtofloat(ed_debtsuproom.Text);
        parameters.ParamByName('supsecond').Value :=strtofloat(ed_debtsupsecond.Text);
        parameters.ParamByName('hairdressing').Value :=strtofloat(ed_debthairdressing.Text);
        parameters.ParamByName('discount').Value :=strtofloat(ed_debtdiscount.Text);
        parameters.ParamByName('totalfee').Value := strtofloat(ed_debttotalfee.Text);
        parameters.ParamByName('remark').Value:=ed_debtremark.Text;
        parameters.ParamByName('checkornot').Value:='欠账';
        close;
   end;
      try
      DMHotel.ADOQuery1.ExecSQL;
      showmessage(ed_customername.text+'的帐单已经成功的入库!');
      button1.Enabled:=false;
   except
      DMHotel.ADOConnection1.RollbackTrans;
      showmessage('入录失败');
      exit;
   end;
     DMhotel.ADODataSet_customerdebt.Requery;
     DMHotel.ADOConnection1.CommitTrans;

     //取消的操作
         ed_customername.Clear;
        ed_indebttime.Text:=datetimetostr(date+time);
         ed_debtkalaok.Clear;
          ed_debtballroom.Clear;
         ed_debtcommerce.Clear;
        ed_debtsuproom.Clear;
        ed_debtsupsecond.Clear;
        ed_debthairdressing.Clear;
        ed_debtdiscount.Text:='10';
       // ed_debtemployeeid.Clear;
        ed_debtremark.Clear;
        ed_debttotalfee.Clear;

        //刷新显示
  DMHotel.ADODataSet_customerdebt.Close;
  DMHotel.ADODataSet_customerdebt.Prepared:=false;
  DMHotel.ADODataSet_customerdebt.CommandText:='select * from customer_debt where '+
  ' checkornot=:yesornot' ;
  DMHotel.ADODataSet_customerdebt.Parameters.ParamByName('yesornot').Value:='欠账';
  DMHotel.ADODataSet_customerdebt.Prepared:=true;
  DMHotel.ADODataSet_customerdebt.Open;
  DMHotel.ADODataSet_customerdebt.Locate('code',customerid,[]);

end;

procedure Tformroomcheck.FormCreate(Sender: TObject);
begin

//ed_indebttime.Text:=datetimetostr(date+time);
end;

procedure Tformroomcheck.Button5Click(Sender: TObject);
var
totalfee:extended;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?