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