📄 del_money_un.pas
字号:
//这里先不考虑,如果用户中间进行了服务业务的变更的问题.以后升级时加以考虑.
if dm.q_e.Recordset.RecordCount >0 then
begin
dm.q_e.Last ;
bsskinedit6.text:=floattostr((monthof(strtodate(sys_end))-monthof(
dateof(dm.q_e.FieldValues ['交费时间'])))*strtofloat(bsskinedit9.Text)+
strtofloat(bsskinedit8.Text )+(yearof(strtodate(sys_end))-yearof(
dateof(dm.q_e.FieldValues ['交费时间'])))*strtofloat(bsskinedit9.Text)*12);
end
else
begin
bsskinedit6.text:=floattostr((monthof(strtodate(sys_end))-monthof(
dateof(dm.q_a.FieldValues['tel_time'])))*strtofloat(bsskinedit9.Text)+
strtofloat(bsskinedit8.Text )+(yearof(strtodate(sys_end))-yearof(
dateof(dm.q_a.FieldValues['tel_time'])))*strtofloat(bsskinedit9.Text)*12);
end;
//取出用户的累计交款余额
with dm do
begin
q_f.Close;
q_f.SQL.Clear;
q_f.SQL.Add('select up_ye from TEL_UP where UP_TEL=:up_tel and UP_SFZH=:up_sfzh');
q_f.Parameters.ParamByName('up_tel').Value:=trim(bsskinedit12.Text );
q_f.Parameters.ParamByName('up_sfzh').Value:=trim(bsskinedit2.Text );
q_f.Prepared;
q_f.Open;
end;
if dm.q_f.Recordset.RecordCount >0 then
begin
dm.q_f.last;
if dm.q_f.FieldValues ['up_ye']>0 then
bsskinedit7.Text:=floattostr(dm.q_f.FieldValues ['up_ye']);
end
else
bsskinedit7.Text:='0.00';
// bsskinedit5.SetFocus;
exit;
end;
end;
procedure Tdel_money.bsSkinXFormButton6Click(Sender: TObject);
begin
inherited;
screen_xt;
bsskinedit12.SetFocus;
end;
procedure Tdel_money.bsSkinEdit5Exit(Sender: TObject);
var
i,j:integer;
begin
inherited;
if trim(bsskinedit12.Text)<>'' then
begin
if trim(bsskinedit5.Text )<>'' then
begin
j:=0;
for i:=1 to length(trim(bsskinedit5.Text)) do
begin
if pos(copy(trim(bsskinedit5.Text),i,1),'0123456789.-')=0 then
j:=1
end;
if j=1 then
begin
bsskinmessage1.MessageDlg('当前输入的交款金额中存在非法字符!!!!!'+CHR(13)+'可以输入的字符为:0到9的数字及小数点和负号',mterror,[mbyes],0);
bsskinedit5.Clear;
bsskinedit5.SetFocus;
exit;
end;
end;
end
else
bsskinedit12.SetFocus;
end;
procedure Tdel_money.bsSkinEdit5KeyPress(Sender: TObject; var Key: Char);
var
i,j:integer;
begin
inherited;
if key=#13 then
begin
///
if trim(bsskinedit5.Text )<>'' then
if trim(bsskinedit12.Text)<>'' then
begin
if trim(bsskinedit5.Text )<>'' then
begin
j:=0;
for i:=1 to length(trim(bsskinedit5.Text)) do
begin
if pos(copy(trim(bsskinedit5.Text),i,1),'0123456789.-')=0 then
j:=1
end;
if j=1 then
begin
bsskinmessage1.MessageDlg('当前输入的交款金额中存在非法字符!!!!!'+CHR(13)+'可以输入的字符为:0到9的数字及小数点和负数',mterror,[mbyes],0);
bsskinedit5.Clear;
bsskinedit5.SetFocus;
exit;
end
else
begin
if trim(bsskinedit5.Text)<>'' then
if strtofloat(bsskinedit6.Text )> strtofloat(bsskinedit5.Text )+strtofloat(bsskinedit7.Text ) then
begin
bsskinmessage1.MessageDlg('用户实交与余额之和不能小于应交款金额!!',mterror,[mbok],0);
bsskinedit5.Text:='';
bsskinedit12.SetFocus;
end
else
if bsskinmessage1.MessageDlg('你是否确定保存用户交款数据?',mtconfirmation,[mbyes,mbcancel],0)=mryes then
bsSkinXFormButton5Click(nil)
else
bsskinedit12.SetFocus
else
bsskinedit5.SetFocus;
end;
end;
end
else
bsskinedit12.SetFocus;
///
end;
if key=#27 then
begin
screen_xt;
bsskinedit12.SetFocus;
end;
end;
procedure Tdel_money.bsSkinXFormButton5Click(Sender: TObject);
var
prin_fp:tprin_fp;
st1,st2:string;
key_temp:char;
begin
inherited;
//进行交款数据的保存操作
//要进行数据保存的表分别为:收据明细,收据汇总,将用户的余额写入用户中,
//将交款数据从NO表中导入YES表中.
//write to TEL_UP_MX table;
dm:=tdm.Create(nil);
with dm do
begin
q_b.Close;
q_b.SQL.Add('select * from tel_user where tel_num=:tel_num');
q_b.Parameters.ParamByName('tel_num').Value:= trim(bsskinedit12.Text );
q_b.Prepared;
q_b.Open;
end;
if dm.q_b.Recordset.RecordCount >0 then
begin
main.stu.Caption:='正用保存用户的交费信息,请稍候。。。。。当前为收据明细';
ga1.Value:=15;
with dm do
begin
q_a.Close;
q_a.SQL.Clear;
q_a.SQL.Add('insert into tel_up_mx (UP_BH,UP_TEL,UP_SFZH,UP_NAME,UP_JE,');
q_a.SQL.Add('UP_DATE,UP_USER,Up_qj,UP_LB,Up_fw,UP_SKJZ,User_time,UP_ye,up_hf,up_fwje,up_prn ) ');
q_a.SQL.Add('values(:UP_BH,:UP_TEL,:UP_SFZH,:UP_NAME,:UP_JE,');
q_a.SQL.Add(':UP_DATE,:UP_USER,:Up_qj,:UP_LB,:Up_fw,:UP_SKJZ,:User_time,:UP_ye,:up_hf,:up_fwje,:up_prn )');
q_a.Parameters.ParamByName('UP_BH').Value:=trim(bsskinedit11.Text);
q_a.Parameters.ParamByName('UP_TEL').Value:=trim(bsskinedit12.Text);
q_a.Parameters.ParamByName('UP_sfzh').Value:=trim(bsskinedit2.Text);
q_a.Parameters.ParamByName('UP_name').Value:=trim(bsskinedit1.Text);
q_a.Parameters.ParamByName('UP_je').Value:=strtofloat(trim(bsskinedit5.Text));
q_a.Parameters.ParamByName('UP_date').Value:=strtodatetime(sys_end);
q_a.Parameters.ParamByName('UP_user').Value:=user_id;
q_a.Parameters.ParamByName('UP_prn').Value:='0';
q_a.Parameters.ParamByName('UP_qj').Value:=inttostr(yearof(strtodate(sys_end)))+inttostr(monthof(strtodate(sys_end)));
q_a.Parameters.ParamByName('UP_lb').Value:=SYS_OPER;
q_a.Parameters.ParamByName('UP_fw').Value:=trim(dm.q_b.FieldValues['tel_fw'] );
q_a.Parameters.ParamByName('UP_skjz').Value:='1';
q_a.Parameters.ParamByName('user_time').Value:=now;
q_a.Parameters.ParamByName('UP_ye').Value:=strtofloat(bsskinedit7.Text)+strtofloat(bsskinedit5.Text)-strtofloat(bsskinedit6.Text);
q_a.Parameters.ParamByName('UP_hf').Value:=strtofloat(bsskinedit8.Text);
q_a.Parameters.ParamByName('UP_fwje').Value:=strtofloat(bsskinedit6.Text)-strtofloat(bsskinedit8.Text);
q_a.Prepared;
// Q_A.Last;
q_a.ExecSQL;
//开始写收据汇总
main.stu.Caption:='正用保存用户的交费信息,请稍候。。。。。当前为收据汇总';
ga1.Value:=30;
q_c.Close;
q_c.SQL.Clear;
q_c.SQL.Add('insert into TEL_UP ( UP_BH1,UP_TEL,UP_SFZH,UP_NAME,UP_B_TIME,');
q_c.SQL.Add('UP_E_TIME,UP_COUNT,DOWN_COUNT,Up_fw,UP_YE,UP_STUT)');
q_c.SQL.Add('values( :UP_BH1,:UP_TEL,:UP_SFZH,:UP_NAME,:UP_B_TIME,');
q_c.SQL.Add(':UP_E_TIME,:UP_COUNT,:DOWN_COUNT,:Up_fw,:UP_YE,:UP_STUT)');
q_c.Parameters.ParamByName('UP_BH1').Value:=trim(bsskinedit11.Text);
q_c.Parameters.ParamByName('UP_TEL').Value:=trim(bsskinedit12.Text);
q_c.Parameters.ParamByName('UP_sfzh').Value:=trim(bsskinedit2.Text);
q_c.Parameters.ParamByName('UP_name').Value:=trim(bsskinedit1.Text);
q_c.Parameters.ParamByName('UP_B_TIME').Value:=b_time;
q_c.Parameters.ParamByName('UP_E_TIME').Value:=e_time;
// q_c.Parameters.ParamByName('UP_prn').Value:='0';
q_c.Parameters.ParamByName('UP_COUNT').Value:=strtofloat(bsskinedit10.Text)+strtofloat(bsskinedit5.Text);
q_c.Parameters.ParamByName('down_COUNT').Value:=strtofloat(bsskinedit10.Text)-strtofloat(bsskinedit7.Text)+strtofloat(bsskinedit6.Text);
q_c.Parameters.ParamByName('UP_fw').Value:=trim(dm.q_b.FieldValues['tel_fw'] );
q_c.Parameters.ParamByName('UP_ye').Value:=strtofloat(bsskinedit7.Text)+strtofloat(bsskinedit5.Text)-strtofloat(bsskinedit6.Text);
q_c.Parameters.ParamByName('UP_stut').Value:=trim(dm.q_b.FieldValues['YW_STUT'] );
q_c.Prepared;
// q_c.Last;
q_c.ExecSQL;
//置用户表中的用户的余额
main.stu.Caption:='正用保存用户的交费信息,请稍候。。。。。当前为保存余额数据';
ga1.Value:=45;
q_d.Close;
q_d.SQL.Clear;
q_d.SQL.Add('update tel_user set TEL_YCFS=:TEL_YCFS where tel_num=:tel_num ');
q_d.Parameters.ParamByName('tel_num').Value:= trim(bsskinedit12.Text );
q_d.Parameters.ParamByName('TEL_YCFS').Value:=strtofloat(bsskinedit7.Text)+strtofloat(bsskinedit5.Text)-strtofloat(bsskinedit6.Text);
q_d.Prepared;
q_d.ExecSQL;
//将表NO中的数导入YES中
main.stu.Caption:='正用保存用户的交费信息,请稍候。。。。。正在将收费数据导出。';
ga1.Value:=40;
q_e.Close;
q_e.SQL.Clear;
q_e.SQL.Add('select * from tel_no');
q_e.SQL.Add(' where zj_tel=:zj_tel and b_time<:b_time and tel_sfzh=:tel_sfzh');
q_e.Parameters.ParamByName('zj_tel').Value:=trim(bsskinedit12.Text);
q_e.Parameters.ParamByName('b_time').Value:=strtodatetime(sys_end);
q_e.Parameters.ParamByName('tel_sfzh').Value:=trim(bsskinedit2.Text);
q_e.Open;
if q_e.Recordset.RecordCount >0 then
begin
q_e.First;
main.stu.Caption:='正用保存用户的交费信息,请稍候。。。。。正在将收费数据导出。';
ga1.Value:=60;
while not q_e.Eof do
begin
q_1.Close;
q_1.SQL.Clear;
q_1.SQL.Add('insert into TEL_YES (TEL_SFZH ,TEL_NAME,TEL_JFSJ,ZJ_TEL,');
q_1.SQL.Add('BJ_TEL,B_DATE,E_DATE,B_TIME,E_TIME,TEL_UNIT,FL_NAME, ');
q_1.SQL.Add('TOTAL_MONEY,JBFL,USER_ID,USER_TIME)');
q_1.SQL.Add('values(:TEL_SFZH ,:TEL_NAME,:TEL_JFSJ,:ZJ_TEL,');
q_1.SQL.Add(':BJ_TEL,:B_DATE,:E_DATE,:B_TIME,:E_TIME,:TEL_UNIT,:FL_NAME,');
q_1.SQL.Add(':TOTAL_MONEY,:JBFL,:USER_ID,:USER_TIME)');
q_1.Parameters.ParamByName('TEL_SFZH').Value:=q_e.FieldValues ['TEL_SFZH'];
q_1.Parameters.ParamByName('TEL_NAME').Value:=q_e.FieldValues ['TEL_NAME'];
q_1.Parameters.ParamByName('TEL_JFSJ').Value:=strtodatetime(sys_end);
q_1.Parameters.ParamByName('ZJ_TEL').Value:=q_e.FieldValues ['ZJ_TEL'];
q_1.Parameters.ParamByName('BJ_TEL').Value:=q_e.FieldValues ['BJ_TEL'];
q_1.Parameters.ParamByName('B_DATE').Value:=q_e.FieldValues ['B_DATE'];
q_1.Parameters.ParamByName('B_TIME').Value:=q_e.FieldValues ['B_TIME'];
q_1.Parameters.ParamByName('E_TIME').Value:=q_e.FieldValues ['E_TIME'];
q_1.Parameters.ParamByName('TEL_UNIT').Value:=q_e.FieldValues ['TEL_UNIT'];
q_1.Parameters.ParamByName('FL_NAME').Value:=q_e.FieldValues ['FL_NAME'];
q_1.Parameters.ParamByName('TOTAL_MONEY').Value:=q_e.FieldValues ['TOTAL_MONEY'];
q_1.Parameters.ParamByName('JBFL').Value:=q_e.FieldValues ['JBFL'];
q_1.Parameters.ParamByName('USER_ID').Value:=q_e.FieldValues ['USER_ID'];
q_1.Parameters.ParamByName('USER_TIME').Value:=q_e.FieldValues ['USER_TIME'];
q_1.Prepared;
// q_1.Last;
q_1.ExecSQL;
q_e.Next;
end;
end;
//删除NO表中的数据
main.stu.Caption:='正用保存用户的交费信息,请稍候。。。。。收费数据导出完毕。';
ga1.Value:=80;
q_e.Close;
q_e.SQL.Clear;
q_e.SQL.Add('delete from tel_no');
q_e.SQL.Add(' where zj_tel=:zj_tel and b_time<:b_time and tel_sfzh=:tel_sfzh');
q_e.Parameters.ParamByName('zj_tel').Value:=trim(bsskinedit12.Text);
q_e.Parameters.ParamByName('b_time').Value:=strtodatetime(sys_end);
q_e.Parameters.ParamByName('tel_sfzh').Value:=trim(bsskinedit2.Text);
q_e.Prepared;
q_e.ExecSQL;
end;
st1:= bsskinedit5.Text;
writetolog(st1);
main.stu.Caption:='正在保存用户的交费信息,请稍候。。。。。用户收费数据保存完毕。';
ga1.Value:=100;
bsskinmessage1.MessageDlg('用户数据保存完毕,以下将进行用户收据的打印操作...'+CHR(13)+'请准备好打印机及打印纸...',mtinformation,[mbyes],0);
//进行用户收据的打印.并将打印印次数记入收据细表中
st1:=bsskinedit11.text;
prin_fp:=tprin_fp.Create(del_money);
prin_fp.start_data(st1);
prin_fp.QuickRep1.Prepare;
prin_fp.QuickRep1.Print;
prin_fp.Free;
{ st1:=bsskinedit12.text;
st2:=bsskinedit2.text;
//quickrep1.Print;
prin:=tprin.Create(del_money);
prin.load_data(st1,st2);
prin.bsSkinEdit2.Enabled:=false;
prin.ShowModal;
prin.Free;}
if SYS_OPER='收费' then
begin
screen_xt;
bsskinedit12.SetFocus;
end
else
close;
end
else
begin
bsskinmessage1.MessageDlg('用户电话号码有误,请重新输入....',mterror,[mbyes],0);
screen_xt;
end;
end;
procedure Tdel_money.bsSkinXFormButton3Click(Sender: TObject);
var
prin:tprin;
st1,st2:string;
begin
inherited;
st1:=bsskinedit12.text;
st2:=bsskinedit2.text;
//quickrep1.Print;
prin:=tprin.Create(del_money);
prin.load_data(st1,st2);
prin.bsSkinEdit2.Enabled:=false;
prin.ShowModal;
prin.Free;
end;
procedure Tdel_money.FormActivate(Sender: TObject);
begin
inherited;
if bsskinedit12.Text ='' then
screen_xt ;
end;
procedure Tdel_money.bsSkinEdit5Enter(Sender: TObject);
begin
inherited;
if bsskinedit12.Text='' then
bsskinedit12.SetFocus;
bsskinxformbutton5.Enabled:=false;
end;
procedure Tdel_money.bsSkinXFormButton5MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
key_temp:char;
begin
inherited;
if trim(bsskinedit5.text)<>'' then
begin
key_temp:=#13;
bsskinedit5keypress(nil,key_temp);
exit;
end
else
begin
bsskinedit5.SetFocus;
exit;
end;
end;
procedure Tdel_money.bsSkinEdit5Change(Sender: TObject);
begin
inherited;
if trim(bsskinedit5.Text)=''then
bsskinxformbutton5.Enabled:=false
else
bsskinxformbutton5.Enabled:=true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -