📄 del_money_un.pas
字号:
unit del_money_un;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, stand_un, BusinessSkinForm, bsSkinCtrls, bsSkinGrids, bsDBGrids,
bsMessages, StdCtrls, Mask, bsSkinBoxCtrls,db,DateUtils, QRCtrls,
QuickRpt, ExtCtrls,math;
type
Tdel_money = class(Tstand)
bsSkinPanel1: TbsSkinPanel;
bsSkinXFormButton2: TbsSkinXFormButton;
bsSkinXFormButton3: TbsSkinXFormButton;
bsSkinXFormButton4: TbsSkinXFormButton;
bsSkinXFormButton5: TbsSkinXFormButton;
bsSkinXFormButton6: TbsSkinXFormButton;
bsSkinGroupBox2: TbsSkinGroupBox;
bsSkinGroupBox3: TbsSkinGroupBox;
bsSkinGroupBox4: TbsSkinGroupBox;
bsSkinPanel2: TbsSkinPanel;
bsSkinPanel3: TbsSkinPanel;
bsSkinEdit12: TbsSkinEdit;
bsSkinLabel12: TbsSkinLabel;
bsSkinMessage1: TbsSkinMessage;
bsSkinLabel5: TbsSkinLabel;
bsSkinPanel4: TbsSkinPanel;
bsSkinEdit1: TbsSkinEdit;
bsSkinLabel1: TbsSkinLabel;
bsSkinLabel2: TbsSkinLabel;
bsSkinEdit2: TbsSkinEdit;
bsSkinLabel4: TbsSkinLabel;
bsSkinEdit4: TbsSkinEdit;
bsSkinLabel3: TbsSkinLabel;
bsSkinEdit3: TbsSkinEdit;
bsSkinDateEdit1: TbsSkinDateEdit;
bsSkinLabel19: TbsSkinLabel;
bsSkinEdit5: TbsSkinEdit;
bsSkinLabel6: TbsSkinLabel;
bsSkinLabel7: TbsSkinLabel;
bsSkinEdit7: TbsSkinEdit;
bsSkinEdit6: TbsSkinEdit;
bsSkinPanel5: TbsSkinPanel;
bsSkinDBGrid1: TbsSkinDBGrid;
c: TbsSkinScrollBar;
bsSkinScrollBar1: TbsSkinScrollBar;
bsSkinGroupBox5: TbsSkinGroupBox;
bsSkinCheckListBox1: TbsSkinCheckListBox;
bsSkinLabel8: TbsSkinLabel;
bsSkinLabel9: TbsSkinLabel;
bsSkinEdit8: TbsSkinEdit;
bsSkinLabel10: TbsSkinLabel;
bsSkinEdit9: TbsSkinEdit;
bsSkinPanel6: TbsSkinPanel;
bsSkinLabel20: TbsSkinLabel;
bsSkinLabel21: TbsSkinLabel;
bsSkinLabel22: TbsSkinLabel;
bsSkinLabel11: TbsSkinLabel;
bsSkinGroupBox6: TbsSkinGroupBox;
bsSkinPanel7: TbsSkinPanel;
bsSkinDBGrid2: TbsSkinDBGrid;
bsSkinScrollBar3: TbsSkinScrollBar;
bsSkinScrollBar2: TbsSkinScrollBar;
bsSkinDBGrid3: TbsSkinDBGrid;
bsSkinScrollBar4: TbsSkinScrollBar;
bsSkinScrollBar5: TbsSkinScrollBar;
bsSkinLabel13: TbsSkinLabel;
bsSkinDateEdit2: TbsSkinDateEdit;
bsSkinLabel14: TbsSkinLabel;
bsSkinEdit10: TbsSkinEdit;
bsSkinLabel15: TbsSkinLabel;
bsSkinEdit11: TbsSkinEdit;
bsSkinPanel8: TbsSkinPanel;
ga1: TbsSkinGauge;
bsSkinButton1: TbsSkinButton;
procedure bsSkinXFormButton2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure screen_xt;
procedure bsSkinEdit12KeyPress(Sender: TObject; var Key: Char);
procedure bsSkinEdit12Exit(Sender: TObject);
procedure bsSkinXFormButton6Click(Sender: TObject);
procedure bsSkinEdit5Exit(Sender: TObject);
procedure bsSkinEdit5KeyPress(Sender: TObject; var Key: Char);
procedure bsSkinXFormButton5Click(Sender: TObject);
procedure bsSkinXFormButton3Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure bsSkinEdit5Enter(Sender: TObject);
procedure bsSkinXFormButton5MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure bsSkinEdit5Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
del_money: Tdel_money;
implementation
uses globe,dm_un,main_un,prin_un,print_fp_un;
var
b_time,e_time:tdatetime;
{$R *.dfm}
procedure Tdel_money.bsSkinXFormButton2Click(Sender: TObject);
begin
inherited;
close;
end;
procedure Tdel_money.FormCreate(Sender: TObject);
begin
inherited;
bsskingroupbox1.Caption:='用户交费信息录入 正在收取的是用户'+sys_end+'以前的话费';
// screen_xt;
bsskingroupbox3.Caption:='用户信息区 '+'当前正在进行的操作为:'+SYS_OPER;
end;
procedure tdel_money.screen_xt;
var
i:integer;
begin
bsskinedit12.Clear;
bsskinedit5.clear;
bsskinedit6.text:='0.00';
bsskinedit7.text:='0.00';
bsskinedit1.Clear;
bsskinedit2.Clear;
bsskinedit3.Clear;
bsskinedit4.Clear;
bsskinedit8.text:='0.00';
bsskinedit9.text:='0.00';
bsskinedit10.text:='0.00';
bsskindateedit1.Date:=now;
bsskindateedit2.Date:=now;
bsskindbgrid1.Columns.Clear;
bsskindbgrid2.Columns.Clear;
bsskindbgrid3.Columns.Clear;
dm.Free;
dm:=tdm.Create(nil);
with dm do
begin
q_3.Close;
q_3.SQL.Clear;
q_3.SQL.Add('select * from TEL_CGYW');
q_3.Prepared;
q_3.Open;
end;
if dm.q_3.Recordset.RecordCount >0 then
begin
bsskinchecklistbox1.Clear;
dm.q_3.First;
while not dm.q_3.Eof do
begin
bsskinchecklistbox1.Items.Add(dm.q_3.FieldValues['yw_id']+' '+dm.q_3.FieldValues['YW_NAME']+' '+floattostr(dm.q_3.FieldValues['YW_money']));
dm.q_3.Next;
end;
end;
//当前的收据号为:
with dm do
begin
q_3.Close;
q_3.SQL.Clear;
q_3.SQL.Add('select max(up_xh) as maxxh from TEL_UP_MX');
q_3.Prepared;
q_3.Open;
end;
if dm.q_3.FieldValues ['maxxh'] >0 then
begin
dm.q_3.Last;
bsskinedit11.Text :=inttostr(yearof(now))+inttostr(monthof(now))+inttostr(dayof(now))+user_id+inttostr(dm.q_3.FieldValues['maxxh']+1 );
end
else
begin
bsskinedit11.Text :=inttostr(yearof(now))+inttostr(monthof(now))+inttostr(dayof(now))+user_id+'1';
end;
// bsskinedit12.SetFocus;
main.stu.Caption:='';
ga1.Value:=1;
end;
procedure Tdel_money.bsSkinEdit12KeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if key=#13 then
begin
key:=#0;
postmessage(handle,WM_KEYDOWN,VK_TAB,0);
end;
end;
procedure Tdel_money.bsSkinEdit12Exit(Sender: TObject);
var
i:integer;
hj1:real;
fw_tmp:string;
data1,data2,data3:tdatasource;
begin
inherited;
//首先判断号是不是存在。
if trim(bsskinedit12.Text)<>'' then
begin
fw_tmp:=bsskinedit12.Text;
screen_xt;
bsskinedit12.Text:=fw_tmp;
dm:=tdm.Create(nil);
with dm do
begin
q_a.Close;
q_a.SQL.Add('select * from tel_user where tel_num=:tel_num');
q_a.Parameters.ParamByName('tel_num').Value:= trim(bsskinedit12.Text );
q_a.Prepared;
q_a.Open;
end;
if dm.q_a.Recordset.RecordCount <1 then
begin
bsskinmessage1.MessageDlg('所输入的号码不存在!,请确认后再输放!',mterror,[mbyes],0);
bsskinedit12.Clear;
screen_xt;
// bsskinxformbutton6.SetFocus;
exit;
end;
//如果电话号码是存在的,那么收集用户的各项费用。在表单中列示出来。
//1首先集用户的基本信息
{screen_xt;
with dm do
begin
q_a.Close;
q_a.SQL.Add('select * from tel_user where tel_num=:tel_num');
q_a.Parameters.ParamByName('tel_num').Value:= trim(bsskinedit12.Text );
q_a.Prepared;
q_a.Open;
end;}
bsskinedit1.Text:=dm.q_a.FieldValues['tel_name'];
bsskinedit2.Text:=dm.q_a.FieldValues['tel_sfzh'];
if dm.q_a.FieldValues['tel_fffs']='1' then
bsskinedit4.Text:='预付费方式'
ELSE
bsskinedit4.Text:='后付费方式';
bsskinedit3.Text:=dm.q_a.FieldValues['tel_dw'];
bsskindateedit1.Date:=dm.q_a.FieldValues['tel_time'];
for i:=0 to bsskinchecklistbox1.Items.count-1 do
begin
fw_tmp:=copy(trim(bsskinchecklistbox1.Items.Strings[i] ),1,1);
if pos(fw_tmp,dm.q_a.FieldValues['tel_fw'])<>0 then
begin
bsskinchecklistbox1.Checked[i]:=true;
with dm do
begin
q_b.Close;
q_b.SQL.Clear;
q_b.SQL.Add('select * from TEL_CGYW where yw_id=:yw_id');
q_b.Parameters.ParamByName('yw_id').Value:=fw_tmp;
q_b.Prepared;
q_b.Open;
end;
hj1:=hj1+dm.q_b.FieldValues ['yw_money'];
end;
end;
bsskinedit9.Text:=floattostr(hj1);
//基本信息收集完毕,收集用户的交费信息。收集电话未交费信息,在TEL_NO
with dm do
begin
q_c.Close;
q_c.SQL.Clear;
q_c.SQL.Add('select ZJ_TEL as 主叫号码,BJ_TEL as 被叫号码,');
q_c.SQL.add('B_DATE as 开始日期,B_TIME as 开始时间,E_TIME as 结束时间,');
q_c.SQL.Add('round((e_time-b_time)*3600*24,2) as 通话时间秒,');
q_c.SQL.Add('TEL_UNIT as 单元,FL_NAME as 费类名称,TOTAL_MONEY as 总费用,');
q_c.SQL.Add('JBFL as 基本费率,USER_ID as 操作员工号 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(bsskinedit12.Text);
q_c.Parameters.ParamByName('b_time').Value:=strtodatetime(sys_end);
q_c.Parameters.ParamByName('tel_sfzh').Value:=trim(bsskinedit2.Text);
q_c.Open;
end;
if dm.q_c.Recordset.RecordCount >0 then
begin
dm.q_c.First;
hj1:=0;
e_time:=dm.q_c.FieldValues ['开始时间'];
while not dm.q_c.Eof do
begin
hj1:=hj1+roundto(dm.q_c.FieldValues ['总费用'],-2);
dm.q_c.Next;
end;
dm.q_c.Last;
b_time:=dm.q_c.FieldValues ['开始时间'];
dm.q_c.First;
//showmessage(floattostr(roundto(hj1,-2)));
bsskinedit8.Text:=floattostr(roundto(hj1,-2));
data1:=tdatasource.Create(nil);
data1.DataSet:=dm.q_c;
bsskindbgrid1.DataSource:=data1;
end
else
begin
data1:=tdatasource.Create(nil);
data1.DataSet:=dm.q_c;
bsskindbgrid1.DataSource:=data1;
end;
// 查找用户的已交费信息
with dm do
begin
q_D.Close;
q_d.SQL.Clear;
q_d.SQL.Add('select ZJ_TEL as 主叫号码,BJ_TEL as 被叫号码,');
q_d.SQL.add('B_DATE as 开始日期,B_TIME as 开始时间,E_TIME as 结束时间,');
q_d.SQL.Add('round((e_time-b_time)*3600*24,2) as 通话时间秒,');
q_d.SQL.Add('TEL_UNIT as 单元,FL_NAME as 费类名称,TOTAL_MONEY as 总费用,');
q_d.SQL.Add('JBFL as 基本费率,USER_ID as 操作员工号 from tel_YES');
q_d.SQL.Add(' where zj_tel=:zj_tel and b_time<:b_time and tel_sfzh=:tel_sfzh');
q_d.Parameters.ParamByName('zj_tel').Value:=trim(bsskinedit12.Text);
q_d.Parameters.ParamByName('b_time').Value:=strtodatetime(sys_end);
q_d.Parameters.ParamByName('tel_sfzh').Value:=trim(bsskinedit2.Text);
q_d.Open;
end;
if dm.q_d.Recordset.RecordCount >0 then
begin
dm.q_d.First;
hj1:=0;
while not dm.q_d.Eof do
begin
hj1:=hj1+roundto(dm.q_d.FieldValues ['总费用'],-2);
dm.q_d.Next;
end;
dm.q_d.First;
bsskinedit10.Text:=floattostr(hj1);
data2:=tdatasource.Create(nil);
data2.DataSet:=dm.q_d;
bsskindbgrid2.DataSource:=data2;
end
else
begin
data2:=tdatasource.Create(nil);
data2.DataSet:=dm.q_d;
bsskindbgrid2.DataSource:=data2;
end;
//用户所有的交费细项收集完毕。。收集用户的交费收据项目。TEL_UP_MX
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 操作员收款时间');
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(bsskinedit12.Text );
q_e.Parameters.ParamByName('up_sfzh').Value:=trim(bsskinedit2.Text );
q_e.Prepared;
q_e.Open;
end;
if dm.q_e.Recordset.RecordCount >0 then
begin
data3:=tdatasource.Create(nil);
data3.DataSet:=dm.q_e;
bsskindbgrid3.DataSource:=data3;
dm.q_e.First;
bsskinedit10.Clear;
bsskinedit10.Text:='0.00';
while not dm.q_e.Eof do
begin
bsskinedit10.Text :=floattostr(strtofloat(bsskinedit10.Text)+dm.q_e.FieldValues ['交费金额']);
dm.q_e.Next;
end;
end
else
begin
bsskinedit10.Clear;
bsskinedit10.Text:='0.00';
data3:=tdatasource.Create(nil);
data3.DataSet:=dm.q_e;
bsskindbgrid3.DataSource:=data3;
end;
//计算用户的合计费用
//主要是用户的服务费的计算.分为如果上月交了费用,可以直接收入读入时间,计算服务费.
//如果以前没有交过服务费,则以用户的开户时间准计算服务的收入.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -