⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delete_user_un.pas

📁 布林电话收费管理系统
💻 PAS
字号:
unit delete_user_un;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, stand_un, BusinessSkinForm, bsSkinCtrls, bsMessages,
  bsSkinBoxCtrls, StdCtrls, Mask,DateUtils;

type
  Tdelete_user = class(Tstand)
    bsSkinPanel1: TbsSkinPanel;
    bsSkinXFormButton2: TbsSkinXFormButton;
    bsSkinXFormButton3: TbsSkinXFormButton;
    bsSkinGroupBox2: TbsSkinGroupBox;
    bsSkinLabel12: TbsSkinLabel;
    bsSkinEdit12: TbsSkinEdit;
    bsSkinLabel1: TbsSkinLabel;
    bsSkinEdit1: TbsSkinEdit;
    bsSkinLabel2: TbsSkinLabel;
    bsSkinEdit2: TbsSkinEdit;
    bsSkinLabel3: TbsSkinLabel;
    bsSkinEdit3: TbsSkinEdit;
    bsSkinLabel19: TbsSkinLabel;
    bsSkinMessage1: TbsSkinMessage;
    bsSkinXFormButton4: TbsSkinXFormButton;
    bsSkinGroupBox3: TbsSkinGroupBox;
    bsSkinLabel4: TbsSkinLabel;
    bsSkinEdit4: TbsSkinEdit;
    bsSkinLabel5: TbsSkinLabel;
    bsSkinEdit5: TbsSkinEdit;
    bsSkinLabel6: TbsSkinLabel;
    bsSkinEdit6: TbsSkinEdit;
    bsSkinLabel7: TbsSkinLabel;
    bsSkinEdit7: TbsSkinEdit;
    bsSkinLabel8: TbsSkinLabel;
    bsSkinDateEdit2: TbsSkinDateEdit;
    bsSkinXFormButton5: TbsSkinXFormButton;
    bsSkinEdit8: TbsSkinEdit;
    procedure bsSkinXFormButton2Click(Sender: TObject);
    procedure screen_xt;
    procedure bsSkinXFormButton5Click(Sender: TObject);
    procedure bsSkinEdit4KeyPress(Sender: TObject; var Key: Char);
    function user_money(var user_tel,user_sfzh:string):boolean;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  delete_user: Tdelete_user;

implementation
  uses globe,dm_un,main_un,del_money_un;
{$R *.dfm}

procedure Tdelete_user.bsSkinXFormButton2Click(Sender: TObject);
begin
  inherited;
 close;
end;

function tdelete_user.user_money(var user_tel,user_sfzh:string):boolean;
begin
 //用于查看用户的话费情况,两种情况,1用户当前余款,2用户当前欠款。
 //两种都进入系统的收费面页. 如果用户已没有费用,则返回TRUE,有则返回FALSE;
 //查看当前用户的许费,用户的所有费用,包括不在结帐期内的
 //默认有费用
 USER_MONEY:=FALSE;
 dm:=tdm.Create(nil);
 with dm do
   with dm do
    begin
     q_c.Close;
     q_c.SQL.Clear;
     q_c.SQL.Add('select * from tel_no');
     q_c.SQL.Add(' where zj_tel=:zj_tel and  b_time<:b_time and tel_sfzh=:tel_sfzh');
     q_c.Parameters.ParamByName('zj_tel').Value:=trim(user_tel);
     q_c.Parameters.ParamByName('b_time').Value:=strtodatetime(sys_end);
     q_c.Parameters.ParamByName('tel_sfzh').Value:=trim(user_sfzh);
     q_c.Open;
    end;
    if dm.q_c.Recordset.RecordCount >0 then
     begin
       result:=FALSE;
     end
    else
     //开始查找用户的服务费用
     begin
        result:=true;
        with dm do
         begin
           q_e.Close;
           q_e.SQL.Clear;
           q_e.SQL.Add('select up_bh as 收据编号,UP_JE as 交费金额,');
           q_e.SQL.Add('UP_DATE as 交费时间,Up_qj as 交费的区间,');
           q_e.SQL.Add('UP_LB as 交费类别,User_time as 操作员收款时间,up_ye');
           q_e.SQL.Add('from TEL_UP_MX where UP_TEL=:up_tel and ');
           q_e.SQL.Add('UP_SFZH=:UP_SFZH ');
           q_e.Parameters.ParamByName('up_tel').Value:=trim(user_tel);
           q_e.Parameters.ParamByName('up_sfzh').Value:=trim(user_sfzh);
           q_e.Prepared;
           q_e.Open;
         end;
         if dm.q_e.Recordset.RecordCount >0 then
          begin
              dm.q_e.last;
              //用户的最后一次交费结帐日..
              //进行服务费的计算.
               if  monthof(strtodatetime(sys_end))-monthof(dm.q_e.FieldValues ['交费时间'])<>0 then
                 begin
                   user_money:=false;
                   result:=FALSE;
                   exit;
                 end
               else
                 //查找用户是否有话费的余额
                  if dm.q_e.FieldValues ['up_ye']<>0 then
                    begin
                     user_money:=false;
                     result:=FALSE;
                     exit;
                    end
                  else
                    result:=true;
          end
         else
           // 这里放的是用户的开户时间,从而计算出用户的应交的服务费
        if result then
         begin
            with dm do
             begin
              q_1.Close;
              q_1.SQL.clear;
              q_1.SQL.Add('select * from tel_user where tel_num=:tel_num');
              q_1.Parameters.ParamByName('tel_num').Value:=user_tel;
              q_1.Prepared;
              q_1.Open;
             end;
           //如果用户的报开日期大于当前结帐期,则没有费用.
           //如果用户的报开日期小于当前的结帐期,没发生服务费.
            if dm.q_1.FieldValues ['tel_time']>strtodatetime(sys_end) then
              USER_MONEY:=true
            else
              user_money:=false;
          end;
     end;
end;

procedure Tdelete_user.screen_xt;
begin
 bsskinedit12.clear;
 bsskinedit1.clear;
 bsskinedit2.Clear;
 bsskinedit3.Clear;
 bsskinedit4.Clear;
 bsskinedit5.Clear;
 bsskinedit6.Clear;
 bsskinedit7.Clear;
 bsskinedit8.Clear;
 bsskindateedit2.Date:=now;
end;procedure Tdelete_user.bsSkinXFormButton5Click(Sender: TObject);
begin
  inherited;
 screen_xt;
 bsskinedit4.SetFocus;
end;

procedure Tdelete_user.bsSkinEdit4KeyPress(Sender: TObject; var Key: Char);
var
 user_te,user_sfz:string;
 del_money:tdel_money;
begin
  inherited;
 if key=#13 then
  begin
   dm:=tdm.Create(nil);
   with dm do
    begin
     q_a.Close;
     q_a.SQL.Clear;
     q_a.SQL.Add('select * from tel_user where tel_num=:tel_num');
     q_a.Parameters.ParamByName('tel_num').Value:=trim(bsskinedit4.Text);
     q_a.Prepared;
     q_a.Open;
    end;
   if dm.q_a.Recordset.RecordCount >0 then
    begin
      bsskinedit5.Text:=dm.q_a.FieldValues ['tel_name'];
      bsskinedit6.Text:=dm.q_a.FieldValues ['tel_sfzh'];
      bsskinedit7.Text:=dm.q_a.FieldValues ['tel_dw'];
      bsskinedit12.Text:=dm.q_a.FieldValues ['DBR_TEL1'];
      bsskinedit1.Text:=dm.q_a.FieldValues ['DBR_NAME'];
      bsskinedit2.Text:=dm.q_a.FieldValues ['DBR_SFZH'];
      bsskinedit3.Text:=dm.q_a.FieldValues ['DBR_GZDW'];
      bsskinedit8.Text:=dm.q_a.FieldValues ['DBR_LXDZ'];
      bsskindateedit2.Date:=dm.q_a.FieldValues ['tel_time'];
      user_te:=bsskinedit4.Text;
      user_sfz:= bsskinedit6.Text;
      if user_money(user_te,user_sfz) THEN
         //说明是用户没有任何的费用.
         //查看用户是否存在超过本结帐期的费用。
         //加入客户的消户程序。
       begin
         with dm do
          begin
             q_1.Close;
             q_1.SQL.Clear;
             q_1.SQL.Add('select * from tel_no');
             q_1.SQL.Add(' where zj_tel=:zj_tel and tel_sfzh=:tel_sfzh');
             q_1.Parameters.ParamByName('zj_tel').Value:=trim(user_te);
             q_1.Parameters.ParamByName('tel_sfzh').Value:=trim(user_sfz);
             q_1.Prepared;
             q_1.Open;
          end;
         if dm.q_1.Recordset.RecordCount >0 then
          begin
           bsskinmessage1.MessageDlg('已发生下一结帐期的费用,本月内本电话不能进行消户操作!',mterror,[mbok],0);
           screen_xt;
           if SYS_OPER<>'消户' then close;
          end
         else
          begin
            //进行正式的消户操作
          if bsskinmessage1.MessageDlg('你是否确定对号码为:'+user_te+'姓名为:'+bsskinedit5.Text +'的用户进行消户操作?',mtconfirmation,[mbyes,mbcancel],0)=mryes then
            begin
             //先将用户的信息导入到消户表中
              with dm do
               begin
                q_2.Close;
                q_2.SQL.Clear;
                q_2.SQL.Add('insert into tel_xh ');
                q_2.SQL.Add(' select * from tel_user where tel_num=:tel_num ');
                q_2.Parameters.ParamByName('tel_num').Value :=user_te;
                q_2.Prepared;
                q_2.ExecSQL;
                q_2.Close;
                Q_2.SQL.Clear;
                Q_2.SQL.Add('update tel_xh set user_time=:user_time where ');
                q_2.SQL.Add('tel_num=:tel_num and tel_sfzh=:tel_sfzh');
                q_2.Parameters.ParamByName('tel_num').Value :=user_te;
                q_2.Parameters.ParamByName('user_time').Value :=now;
                q_2.Parameters.ParamByName('tel_sfzh').Value :=user_sfz;
                q_2.Prepared;
                q_2.ExecSQL;
                q_2.close;
                q_2.SQL.Clear;
                q_2.SQL.Add('delete from tel_user where tel_num=:tel_num');
                q_2.Parameters.ParamByName('tel_num').Value :=user_te;
                q_2.Prepared;
                q_2.ExecSQL;
                //放入业务变更表中
                q_2.Close;
                q_2.SQL.Clear;
                q_2.SQL.Add('insert into tel_change (USER_ID,USER_TIME,YW_DATE,TEL_SFZH,TEL_LXDH, ');
                q_2.SQL.Add('YW_MEMO)');
                q_2.SQL.Add('values(:USER_ID,:USER_TIME,:YW_DATE,:TEL_SFZH,:TEL_LXDH,');
                q_2.SQL.Add(':YW_MEMO)');
                q_2.Parameters.ParamByName('USER_ID').Value:=USER_ID;
                q_2.Parameters.ParamByName('USER_time').Value:=now;
                q_2.Parameters.ParamByName('YW_DATE').Value:=now;
                q_2.Parameters.ParamByName('TEL_SFZH').Value:=trim(bsskinedit6.Text );
                q_2.Parameters.ParamByName('TEL_lxdh').Value:=trim(bsskinedit7.Text );
                q_2.Parameters.ParamByName('yw_memo').Value:=SYS_OPER;
                q_2.Prepared;
                q_2.ExecSQL;
                writetolog('0.00');
                bsskinmessage1.MessageDlg('用户消户保存完毕!',mtinformation,[mbok],0);
               end;
               screen_xt;
               if SYS_OPER<>'消户' then close;
             //删除用户
             //写操作记录
            end
          else
           begin
            screen_xt;
            if SYS_OPER<>'消户' then close;
           end;
          end;
        end
      else
         //说明用户有费用,则打用收费的页面,进行收费操作.
        begin
         bsskinmessage1.MessageDlg('用户存在未结费用,系统将进行收费操作.',mtinformation,[mbyes],0);
         del_money:=tdel_money.Create(delete_user);
         del_money.Caption:='正在进行用户的消户收费操作....';
         del_money.bsskinedit12.Text:=user_te;
         postmessage(del_money.Handle,WM_KEYDOWN,VK_return,0);
         del_money.bsSkinEdit12.Enabled:=false;
         del_money.bsskinedit12exit(nil);
         del_money.ShowModal;
         del_money.Free;
         if user_money(user_te,user_sfz) THEN
           begin
         //说明是用户没有任何的费用.
         //查看用户是否存在超过本结帐期的费用。
         //加入客户的消户程序。
         user_te:=bsskinedit4.Text;
         with dm do
          begin
             q_1.Close;
             q_1.SQL.Clear;
             q_1.SQL.Add('select * from tel_no');
             q_1.SQL.Add(' where zj_tel=:zj_tel and tel_sfzh=:tel_sfzh');
             q_1.Parameters.ParamByName('zj_tel').Value:=trim(user_te);
             q_1.Parameters.ParamByName('tel_sfzh').Value:=trim(user_sfz);
             q_1.Prepared;
             q_1.Open;
          end;
         if dm.q_1.Recordset.RecordCount >0 then
          begin
           bsskinmessage1.MessageDlg('已发生下一结帐期的费用,本月内本电话不能进行消户操作!',mterror,[mbok],0);
           screen_xt;
          end
         else
          begin
            //进行正式的消户操作
          if bsskinmessage1.MessageDlg('你是否确定对号码为:'+user_te+'姓名为:'+bsskinedit5.Text +'的用户进行消户操作?',mtconfirmation,[mbyes,mbcancel],0)=mryes then
            begin
             //先将用户的信息导入到消户表中
              with dm do
               begin
                q_2.Close;
                q_2.SQL.Clear;
                q_2.SQL.Add('insert into tel_xh ');
                q_2.SQL.Add(' select * from tel_user where tel_num=:tel_num ');
                q_2.Parameters.ParamByName('tel_num').Value :=user_te;
                q_2.Prepared;
                q_2.ExecSQL;
                q_2.Close;
                Q_2.SQL.Clear;
                Q_2.SQL.Add('update tel_xh set user_time=:user_time where ');
                q_2.SQL.Add('tel_num=:tel_num and tel_sfzh=:tel_sfzh');
                q_2.Parameters.ParamByName('tel_num').Value :=user_te;
                q_2.Parameters.ParamByName('user_time').Value :=now;
                q_2.Parameters.ParamByName('tel_sfzh').Value :=user_sfz;
                q_2.Prepared;
                q_2.ExecSQL;
                q_2.close;
                q_2.SQL.Clear;
                q_2.SQL.Add('delete from tel_user where tel_num=:tel_num');
                q_2.Parameters.ParamByName('tel_num').Value :=user_te;
                q_2.Prepared;
                q_2.ExecSQL;
                //放入业务变更表中
                q_2.Close;
                q_2.SQL.Clear;
                q_2.SQL.Add('insert into tel_change (USER_ID,USER_TIME,YW_DATE,TEL_SFZH,TEL_LXDH, ');
                q_2.SQL.Add('YW_MEMO)');
                q_2.SQL.Add('values(:USER_ID,:USER_TIME,:YW_DATE,:TEL_SFZH,:TEL_LXDH,');
                q_2.SQL.Add(':YW_MEMO)');
                q_2.Parameters.ParamByName('USER_ID').Value:=USER_ID;
                q_2.Parameters.ParamByName('USER_time').Value:=now;
                q_2.Parameters.ParamByName('YW_DATE').Value:=now;
                q_2.Parameters.ParamByName('TEL_SFZH').Value:=trim(bsskinedit6.Text );
                q_2.Parameters.ParamByName('TEL_lxdh').Value:=trim(bsskinedit7.Text );
                q_2.Parameters.ParamByName('yw_memo').Value:=SYS_OPER;
                q_2.Prepared;
                q_2.ExecSQL;
                writetolog('0.00');
                bsskinmessage1.MessageDlg('用户消户保存完毕!',mtinformation,[mbok],0);
               end;
             //删除用户
             //写操作记录
              screen_xt;
              if SYS_OPER<>'消户' then close;
            end
          else
              screen_xt;
          end;
         end
         else
          begin
           bsskinmessage1.MessageDlg('用户存在未结费用,不能对用户进行消户操作!',mterror,[mbyes],0);
           screen_xt;
           if SYS_OPER<>'消户' then close;
          end;
        end;
    end
   else
    begin
      bsskinmessage1.MessageDlg('当前电话号码不存在,请确定后再输入!!',mterror,[mbyes],0);
      screen_xt;
      if SYS_OPER<>'消户' then close;
    end;
  end;
end;

end.

⌨️ 快捷键说明

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