📄 delete_user_un.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 + -