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

📄 del_money_un.pas

📁 布林电话收费管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -