📄 fdz.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Fdz.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "DateEdit"
#pragma link "ListBaseForm"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"
TfrmFdz *frmFdz;
//---------------------------------------------------------------------------
__fastcall TfrmFdz::TfrmFdz(TComponent* Owner)
: TListBaseForm(Owner,euSdFbb,"")
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::ChangeToBrowseState(bool Browse)
{
return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::InitEditControl()
{
deBeginDate->Text=AnsiString(StrToDate(g_sdCurDate)-30);
sgFbb->RowCount=1;
sgBcs->RowCount=1;
for(int i=0;i<MAXNUM;i++)
AccordNum[i]=0;
AccordFlag=false;
btnSave->Enabled=false;
chkShowNoFlag->Checked=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::FillFbbGrid()
{
AnsiString sSQL,sFrom,sWhere,sOrder,sTemp;
TComResultSet *RsFdz=NewResultSet();
AnsiString ItemStr,TempStr,TempStr2;
sSQL=" select "
+AnsiString("FbbVerify,")
+AnsiString("SettleModeName,")
+AnsiString("FbbSettleNo,")
+AnsiString("FbbAmt,")
+AnsiString("FbbDir,")
+AnsiString("FbbDate,")
+AnsiString("FbbCac,")
+AnsiString("FbbNo,")
+AnsiString("FbbFMonth");
//生成查询条件
sFrom=" from sdFbb,sdSettleMode ";
sWhere=" where FbbSettleMode=SettleModecode and FbbDate >= '"+deBeginDate->Text+"'";
if(chkShowNoFlag->Checked)
sWhere=sWhere+" and FbbVerify = 0 ";
sOrder=" order by FbbDate,FbbCac,SettleModeName,FbbSettleNo";
sSQL=sSQL+sFrom+sWhere+sOrder;
sgFbb->RowCount=1;
try
{
RsFdz->Open(sSQL,"");
if(RsFdz->RecordCount > MAXNUM)
throw Exception("出纳帐帐目数量超限,请将起始日期往后移");
RsFdz->MoveFirst();
while( RsFdz->Eof == 0)
{
TempStr=RsFdz->FieldByName("FbbVerify");
if(TempStr=="1")
TempStr="√";
else
TempStr=" ";
TempStr2=RsFdz->FieldByName("FbbDir");
if(TempStr2=="1")
TempStr2="收入";
else
TempStr2="支出";
ItemStr=TempStr+
"\t"+RsFdz->FieldByName("SettleModeName")+
"\t"+RsFdz->FieldByName("FbbSettleNo")+
"\t"+RsFdz->FieldByName("FbbAmt")+
"\t"+TempStr2+
"\t"+RsFdz->FieldByName("FbbDate")+
"\t"+RsFdz->FieldByName("FbbCac")+
"\t"+RsFdz->FieldByName("FbbNo")+
"\t"+RsFdz->FieldByName("FbbFMonth");
sgFbb->AddItem(ItemStr);
RsFdz->MoveNext();
}
RsFdz->Close();
}
__finally
{
delete RsFdz;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::FillBcsGrid()
{
AnsiString sSQL,sFrom,sWhere,sOrder,sTemp;
TComResultSet *RsFdz=NewResultSet();
AnsiString ItemStr,TempStr,TempStr2;
sSQL=" select "
+AnsiString("BcsVeriry,")
+AnsiString("SettleModeName,")
+AnsiString("BcsSettleNo,")
+AnsiString("BcsAmt,")
+AnsiString("BcsDir,")
+AnsiString("BcsDate,")
+AnsiString("BcsCac,")
+AnsiString("BcsCode,")
+AnsiString("BcsLine");
//生成查询条件
sFrom=" from sdBcs,sdSettleMode ";
sWhere=" where BcsSettleMode=SettleModecode and BcsDate >= '"+deBeginDate->Text+"'";
if(chkShowNoFlag->Checked)
sWhere=sWhere+" and BcsVeriry = 0 ";
sOrder=" order by Bcsdate,BcsCac,SettleModeName,BcsSettleNo";
sSQL=sSQL+sFrom+sWhere+sOrder;
sgBcs->RowCount=1;
try
{
RsFdz->Open(sSQL,"");
while( RsFdz->Eof == 0)
{
TempStr=RsFdz->FieldByName("BcsVeriry");
if(TempStr=="1")
TempStr="√";
else
TempStr=" ";
TempStr2=RsFdz->FieldByName("BcsDir");
if(TempStr2=="1")
TempStr2="收入";
else
TempStr2="支出";
ItemStr=TempStr+
"\t"+RsFdz->FieldByName("SettleModeName")+
"\t"+RsFdz->FieldByName("BcsSettleNo")+
"\t"+RsFdz->FieldByName("BcsAmt")+
"\t"+TempStr2+
"\t"+RsFdz->FieldByName("BcsDate")+
"\t"+RsFdz->FieldByName("BcsCac")+
"\t"+RsFdz->FieldByName("BcsCode")+
"\t"+RsFdz->FieldByName("BcsLine");
sgBcs->AddItem(ItemStr);
RsFdz->MoveNext();
}
RsFdz->Close();
}
__finally
{
delete RsFdz;
}
}
void __fastcall TfrmFdz::btnQueryClick(TObject *Sender)
{
if(deBeginDate->Text == "")
return;
AccordFlag=false;
btnSave->Enabled=false;
FillFbbGrid();
FillBcsGrid();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::btnClearClick(TObject *Sender)
{
InitEditControl();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::BitExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
//判断日记帐和对帐单的给定行是否吻合
bool __fastcall TfrmFdz::IsAccordant(int fRow,int bRow)
{
if(fRow < 1 || bRow < 1 || fRow >= sgFbb->RowCount || bRow >= sgBcs->RowCount)
return false;
if(sgFbb->Cells[4][fRow] == "收入")
{
if(sgBcs->Cells[4][bRow] == "支出")
if(sgFbb->Cells[1][fRow] == sgBcs->Cells[1][bRow] &&
UpperCase(sgFbb->Cells[2][fRow]) == UpperCase(sgBcs->Cells[2][bRow]) &&
sgFbb->Cells[3][fRow] == sgBcs->Cells[3][bRow] &&
sgFbb->Cells[6][fRow] == sgBcs->Cells[6][bRow])
return true;
else
return false;
else
return false;
}
else
{
if(sgBcs->Cells[4][bRow] == "收入")
if(sgFbb->Cells[1][fRow] == sgBcs->Cells[1][bRow] &&
UpperCase(sgFbb->Cells[2][fRow]) == UpperCase(sgBcs->Cells[2][bRow]) &&
sgFbb->Cells[3][fRow] == sgBcs->Cells[3][bRow]&&
sgFbb->Cells[6][fRow] == sgBcs->Cells[6][bRow])
return true;
else
return false;
else
return false;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::AutoAccord()
{
int fRow,bRow;
try
{
StartWaitForm("系统正在自动对帐...");
for(int i=0;i<MAXNUM;i++)
AccordNum[i]=0;
for(fRow=1;fRow < sgFbb->RowCount;fRow++)
for(bRow=1;bRow < sgBcs->RowCount;bRow++)
if(IsAccordant(fRow,bRow)) //对帐成功
{
AccordNum[fRow]=bRow;
sgFbb->Cells[0][fRow]="√";
sgBcs->Cells[0][bRow]="√";
btnSave->Enabled=true;
}
AccordFlag=true;
}
__finally
{
EndWaitForm();
}
}
void __fastcall TfrmFdz::btnCheckClick(TObject *Sender)
{
AutoAccord();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::btnSaveClick(TObject *Sender)
{
AnsiString sSQL,sSet,sWhere,sTemp1,sTemp2,sTemp3;
TComResultSet *RsFdz=NewResultSet();
if(AccordFlag==false)
return;
for(int i=0;i < MAXNUM;i++)
if(AccordNum[i] > 0)
{
//更新出纳帐
sSQL=" update sdFbb ";
sTemp1=sgBcs->Cells[7][AccordNum[i]]; //对帐单号
sTemp2=sgBcs->Cells[8][AccordNum[i]]; //对帐行号
sSet=" set FbbVerify = 1,FbbBcsCode = '"+sTemp1+"',FbbBcsLine = '"+sTemp2+"'";
sTemp1=sgFbb->Cells[6][i]; //帐号
sTemp2=sgFbb->Cells[7][i]; //流水号
sTemp3=sgFbb->Cells[8][i]; //财务月份
sWhere=" where FbbCac = '"+sTemp1+"' and FbbNo = "+sTemp2+" and FbbFMonth = '"+sTemp3+"'";
sSQL=sSQL+sSet+sWhere;
try
{
RsFdz->Open(sSQL,"");
RsFdz->Close();
//更新对帐单
sSQL=" update sdBcs ";
sTemp1=sgFbb->Cells[6][i]; //帐号
sTemp2=sgFbb->Cells[7][i]; //流水号
sTemp3=sgFbb->Cells[8][i]; //财务月份
sSet=" set BcsVeriry = 1 , BcsCac = '"+sTemp1+"' , BcsFbbNo = "+sTemp2+" , BcsFMonth = '"+sTemp3+"'";
sTemp1=sgBcs->Cells[7][AccordNum[i]]; //对帐单号
sTemp2=sgBcs->Cells[8][AccordNum[i]]; //对帐行号
sWhere=" where BcsCode = '"+sTemp1+"' and BcsLine = "+sTemp2;
sSQL=sSQL+sSet+sWhere;
RsFdz->Open(sSQL,"");
RsFdz->Close();
}
__finally
{
delete RsFdz;
}
}
btnSave->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::sgBcsClick(TObject *Sender)
{
int ARow=sgBcs->Row;
if(ARow < 1)
return;
if(AccordFlag == false)
AutoAccord();
if(sgBcs->Cells[0][ARow] == "√")
{
for(int i=0;i < sgFbb->RowCount;i++)
if(AccordNum[i]==ARow)
{
if(sgFbb->Row != i)
sgFbb->Row=i;
break;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::sgFbbClick(TObject *Sender)
{
int ARow=sgFbb->Row;
if(ARow < 1 ||sgFbb->RowCount <= 1)
return;
if(AccordFlag==false)
AutoAccord();
if(sgFbb->Cells[0][ARow] == "√" && AccordNum[ARow] > 0)
if(sgBcs->Row != AccordNum[ARow])
sgBcs->Row=AccordNum[ARow];
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -