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

📄 fsummoney.cpp

📁 一套BCB6开发的电话管理系统
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "FSumMoney.h"
#include "DSumMoney.h"
#include "PSumMoney.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFrmSumMoney *FrmSumMoney;
//---------------------------------------------------------------------------
__fastcall TFrmSumMoney::TFrmSumMoney( TIniFile *pMessageIniFile, TDMTelSys* pDMTelSys,
        TComponent* Owner)
        : TotalSecond( 0), TotalMoney( 0), pMsgIniFile( pMessageIniFile), pDMTelSys( pDMTelSys), TForm(Owner)
{
    if( pDMTelSys->FirmQuery->Active == false) {
        pDMTelSys->FirmQuery->Open();
    }
    pDMTelSys->FirmQuery->First();
    while( !pDMTelSys->FirmQuery->Eof) {
        CompanyMap[ pDMTelSys->FirmQuery->FieldByName( "gscode")->AsString]
            = pDMTelSys->FirmQuery->FieldByName( "gsname")->AsString;
        pDMTelSys->FirmQuery->Next();
    }
    CDSSum->CreateDataSet();

    TLocateOptions Options;
    Options.Clear();
    Options << loPartialKey;
    if( pDMTelSys->UserRightQuery->Locate( "FormID", Variant( "FrmStatSelfTel"), Options)) {
        if( pDMTelSys->UserRightQuery->FieldByName( "Write")->AsString == "No") {
            PrintToolButton->Enabled = false;
        }
    }
}
//---------------------------------------------------------------------------
void __fastcall TFrmSumMoney::FindToolButtonClick(TObject *Sender)
{
    DlgSumMoney = new TDlgSumMoney( BeginDate, EndDate, this);
    if( DlgSumMoney->ShowModal() == mrOk) {
        CDSSum->Close();
        CDSSum->Open();
        CDSSum->EmptyDataSet();
        std::map< String, String>::iterator pIter;

        for( pIter = CompanyMap.begin(); pIter != CompanyMap.end(); ++pIter) {
            HandleACompany( pIter->first);
        }
        CDSSum->Close();
        CDSSum->Open();
    }//  if( DlgSumMoney->ShowModal() == mrOk)

    TLocateOptions Options;
    Options.Clear();
    Options << loPartialKey;
    if( pDMTelSys->UserRightQuery->Locate( "FormID", Variant( "FrmSumMoney"), Options)) {
        if( pDMTelSys->UserRightQuery->FieldByName( "Write")->AsString == "No") {
            PrintToolButton->Enabled = false;
        }
    }
}
//---------------------------------------------------------------------------
void __fastcall TFrmSumMoney::SumCompanyQueryCalcFields(TDataSet *DataSet)
{
   int second;
    String TimeStr = SumCompanyQuery->FieldByName( "duration")->AsString;
    int hIndex, mIndex;
    hIndex = TimeStr.Pos( ":");
    second = StrToInt( TimeStr.SubString( 1, hIndex - 1)) * 3600;
    TimeStr = TimeStr.SubString( hIndex + 1, TimeStr.Length());
    mIndex = TimeStr.Pos( ":");
    second += StrToInt( TimeStr.SubString( 1, mIndex - 1)) * 60;
    TimeStr = TimeStr.SubString( mIndex + 1, TimeStr.Length());
    second += StrToInt( TimeStr);

    SumCompanyQuery->FieldByName( "TDuration")->AsInteger = second;
}
//---------------------------------------------------------------------------
void TFrmSumMoney::HandleACompany( String CompanyNo)
{
    String SQLStr = "select gscode, charge, duration";
    SQLStr += " from GS_Bill where charge > 0 and gscode = '" + CompanyNo + "' ";
    SQLStr += " and startdate >= :BeginDate and startdate <= :EndDate"; 

    CDSSumMoney->Close();
    SumCompanyQuery->Close();
    SumCompanyQuery->SQL->Clear();
    SumCompanyQuery->SQL->Add( SQLStr);
    SumCompanyQuery->Parameters->Clear();
    SumCompanyQuery->Parameters->ParseSQL( SQLStr, true);
    SumCompanyQuery->Parameters->ParamByName( "BeginDate")->Value = BeginDate;
    SumCompanyQuery->Parameters->ParamByName( "EndDate")->Value = EndDate;
   // SumCompanyQuery->Open();
    CDSSumMoney->Open();

    CDSSum->Append();
    if( CDSSumMoney->Aggregates->Items[0]->Value().IsNull() == false) {
        int second = CDSSumMoney->Aggregates->Items[0]->Value().operator int();
        TotalSecond += second;

        int hour = second / 3600;
        int minute = (second - hour * 3600) / 60;
        second = second - hour * 3600 - 60 * minute;

        String str = "";
        if( hour < 10)
            str = "0" ;
        str += IntToStr( hour) + ":";
        if( minute < 10)
            str += "0";
        str += IntToStr( minute) + ":";
        if( second < 10)
            str += "0";
        str += IntToStr( second);
        CDSSum->FieldByName( "TotalTime")->AsString = str;
    }

    if( CDSSumMoney->Aggregates->Items[1]->Value().IsNull() == false) {
        float money = CDSSumMoney->Aggregates->Items[1]->Value().operator float();
        TotalMoney += money;
        CDSSum->FieldByName( "TotalMoney")->AsString = FormatFloat( "##00.00", money);
    }

    CDSSum->FieldByName( "CompanyName")->AsString = CompanyMap[ CompanyNo];
    CDSSum->Post();
}
void __fastcall TFrmSumMoney::PrintToolButtonClick(TObject *Sender)
{
    PrtSumMoney = new TPrtSumMoney( this);
    PrtSumMoney->Visible = false;

    PrtSumMoney->QuickRep1->DataSet = CDSSum;
    PrtSumMoney->QRDBText1->DataSet = CDSSum;
    PrtSumMoney->QRDBText1->DataField = "CompanyName";
    PrtSumMoney->QRDBText2->DataSet = CDSSum;
    PrtSumMoney->QRDBText2->DataField = "TotalTime";
    PrtSumMoney->QRDBText3->DataSet = CDSSum;
    PrtSumMoney->QRDBText3->DataField = "TotalMoney";
    int hour = TotalSecond / 3600;
    int minute = (TotalSecond - hour * 3600) / 60;
    int second = TotalSecond - hour * 3600 - 60 * minute;

    String str = "";
    if( hour < 10)
        str = "0" ;
    str += IntToStr( hour) + ":";
    if( minute < 10)
        str += "0";
    str += IntToStr( minute) + ":";
    if( second < 10)
        str += "0";
    str += IntToStr( second);
    PrtSumMoney->QRLabel5->Caption = str;
    PrtSumMoney->QRLabel6->Caption = FormatFloat( "##00.00", TotalMoney);


    PrtSumMoney->QRLabel7->Caption = BeginDate.DateString() + "-" + EndDate.DateString();
    if( pDMTelSys->GSNameQuery->Active == false) {
        pDMTelSys->GSNameQuery->Open();
    }

    PrtSumMoney->ReportTitle->Caption = pDMTelSys->GSNameQuery->FieldByName( "coname")->AsString;

    PrtSumMoney->QuickRep1->PreviewModal();

}
//---------------------------------------------------------------------------

void __fastcall TFrmSumMoney::ExitToolButtonClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------

void __fastcall TFrmSumMoney::FirstPageToolButtonClick(TObject *Sender)
{
    CDSSum->First();        
}
//---------------------------------------------------------------------------

void __fastcall TFrmSumMoney::PrevPageToolButtonClick(TObject *Sender)
{
    CDSSum->Prior();        
}
//---------------------------------------------------------------------------

void __fastcall TFrmSumMoney::NextPageToolButtonClick(TObject *Sender)
{
    CDSSum->Next();        
}
//---------------------------------------------------------------------------

void __fastcall TFrmSumMoney::LastPageToolButtonClick(TObject *Sender)
{
    CDSSum->Last();        
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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