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

📄 fdz.cpp

📁 速达开源ERP系统
💻 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 + -