fdz.cpp

来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 498 行 · 第 1/2 页

CPP
498
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Fdz.h"
#include "WnQuery.h"
#include "FdzAutoFil.h"
#include "FdzHand.h"
#include "FdzUndo.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;
TfrmFdzAutoFil *FdzAutoFilfrm;
TfrmFdzHand *FdzHandfrm;
TfrmFdzUndo  *FdzUndofrm;
//---------------------------------------------------------------------------
__fastcall TfrmFdz::TfrmFdz(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
    : TListBaseForm(Owner,chWnd,"","")
{
 g_ClientHandle=chWnd;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::ChangeToBrowseState(bool Browse)
{
    return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::InitEditControl()
{
    FillComboBox(Handle,scFmonth,"select * from sdFc order by FcMonth","FcMonth");
    AnsiString sSQL;
    sSQL="select CacCode,memo=CacCode+space(2)+CacGlkm+'-'+GlkmName,CacBankName,CacCurrency=CurrencyName";
    sSQL+=" from sdCac,sdGlkm,sdCurrency where CacGlkm=GlkmCode and CacCurrency=CurrencyCode order by CacCode";
    FillEdit(Handle,seCacCode,sSQL,"memo","CacCode","CacCurrency","CacBankName");
    scFmonth->LocateKey(g_sdFMonth);
    seCacCode->ItemIndex=-1;
    labCurrency->Caption="";
    labBankName->Caption="";
    chkShowNoFlag->Checked=false;

    sgFbb->RowCount=1;
    sgBcs->RowCount=1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::FillFbbGrid()
{
    AnsiString sSQL,sFrom,sWhere,sOrder;
    TComResultSet *RsFdz=new  TComResultSet(Handle,g_ClientHandle);
    AnsiString ItemStr;
    sSQL=" select FbbVerify,FbbNo,FbbDate,FbbZy,FbbZyMemo=(select NoteBookText from  sdNoteBook where NoteBookCode =fbbzy),SettleModeName,FbbSettleNo,FbbAmt,FbbDir,FbbBcsCode,FbbBcsLine";
    sFrom=" from sdFbb,sdSettleMode ";
    sWhere=" where FbbSettleMode=SettleModecode and FbbFmonth = '"+scFmonth->Text+"'";
    if(seCacCode->ItemData[1]!="")
      sWhere+=" and FbbCac='"+seCacCode->ItemData[1]+"'";
    if(chkShowNoFlag->Checked)        
      sWhere=sWhere+" and FbbVerify = 0";
    sOrder=" order by FbbNo,FbbDate,SettleModeName,FbbSettleNo";
    sSQL=sSQL+sFrom+sWhere+sOrder;
    sgFbb->RowCount=1;
    try
    {
      RsFdz->Open(sSQL,"");
      RsFdz->MoveFirst();
      while(RsFdz->Eof == 0)
      {
        if(RsFdz->FieldByName("FbbVerify")=="1")
          ItemStr=AnsiString("√") + "\t" + RsFdz->FieldByName("FbbNo") + "\t"
                  +RsFdz->FieldByName("FbbDate")+"\t" + RsFdz->FieldByName("FbbZyMemo")+"\t"
                  +RsFdz->FieldByName("SettleModeName")+"\t" + RsFdz->FieldByName("FbbSettleNo");
        else
          ItemStr=AnsiString("")+"\t"+RsFdz->FieldByName("FbbNo")+"\t"+
                  RsFdz->FieldByName("FbbDate")+"\t"+RsFdz->FieldByName("FbbZyMemo")+"\t"+
                  RsFdz->FieldByName("SettleModeName")+"\t"+RsFdz->FieldByName("FbbSettleNo");
        if(RsFdz->FieldByName("FbbDir")==1)
          ItemStr=ItemStr+"\t"+ "收" + "\t" + FormatFloat("#,###.00",RsFdz->FieldByName("FbbAmt").ToDouble())+"\t"+
                  RsFdz->FieldByName("FbbBcsCode")+"\t"+RsFdz->FieldByName("FbbBcsLine");
        else
          ItemStr=ItemStr+"\t"+ "支" + "\t" + FormatFloat("#,###.00",RsFdz->FieldByName("FbbAmt").ToDouble())+"\t"+
                  RsFdz->FieldByName("FbbBcsCode")+"\t"+RsFdz->FieldByName("FbbBcsLine");

        sgFbb->AddItem(ItemStr);
        RsFdz->MoveNext();
      }
      RsFdz->Close();
    }
    __finally
    {
      delete RsFdz;
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::FillBcsGrid()
{
    AnsiString sSQL,sFrom,sWhere,sOrder;
    TComResultSet *RsFdz=new  TComResultSet(Handle,g_ClientHandle);
    AnsiString ItemStr;
    sSQL=" select BcsVeriry,BcsLine,BcsDate,BcsZy,BcsZyMemo=(select NoteBookText from  sdNoteBook where NoteBookCode =BcsZy),SettleModeName,BcsSettleNo,BcsAmt,BcsDir,BcsCode,BcsFbbNo";
    sFrom=" from sdBcs,sdSettleMode ";
    sWhere=" where BcsSettleMode=SettleModecode and BcsFmonth = '"+scFmonth->Text+"'";
    if(seCacCode->ItemData[1]!="")
      sWhere+=" and BcsCac='"+seCacCode->ItemData[1]+"'";
    if(chkShowNoFlag->Checked)
      sWhere=sWhere+" and BcsVeriry = 0";
    sOrder=" order by BcsLine,BcsDate,SettleModeName,BcsSettleNo";
    sSQL=sSQL+sFrom+sWhere+sOrder;
    sgBcs->RowCount=1;
    try
    {
      RsFdz->Open(sSQL,"");
      RsFdz->MoveFirst();
      while(RsFdz->Eof == 0)
      {
        if(RsFdz->FieldByName("BcsVeriry")==1)
          ItemStr=AnsiString("√")+"\t"+ RsFdz->FieldByName("BcsCode")+"\t"+RsFdz->FieldByName("BcsLine")+"\t"+
                  RsFdz->FieldByName("BcsDate")+"\t" + RsFdz->FieldByName("BcsZyMemo")+"\t"+
                  RsFdz->FieldByName("SettleModeName")+"\t" + RsFdz->FieldByName("BcsSettleNo");
        else
          ItemStr=AnsiString("")+"\t"+RsFdz->FieldByName("BcsCode")+"\t"+RsFdz->FieldByName("BcsLine")+"\t"+
                  RsFdz->FieldByName("BcsDate")+"\t"+RsFdz->FieldByName("BcsZyMemo")+"\t"+
                  RsFdz->FieldByName("SettleModeName")+"\t"+RsFdz->FieldByName("BcsSettleNo");
        if(RsFdz->FieldByName("BcsDir")==1)
          ItemStr=ItemStr+"\t"+ "借" + "\t" + FormatFloat("#,###.00",RsFdz->FieldByName("BcsAmt").ToDouble())+"\t"+RsFdz->FieldByName("BcsFbbNo");
        else
          ItemStr=ItemStr+"\t"+ "贷" + "\t" + FormatFloat("#,###.00",RsFdz->FieldByName("BcsAmt").ToDouble())+"\t"+RsFdz->FieldByName("BcsFbbNo");

        sgBcs->AddItem(ItemStr);
        RsFdz->MoveNext();
      }
      RsFdz->Close();
    }
    __finally
    {
      delete RsFdz;
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmFdz::btnQueryClick(TObject *Sender)
{
    if(seCacCode->ItemData[1] == "")
    {
      ShowMessageWindow("帐户的资料不能为空",mwsWarning);
      return;
    }
    FillFbbGrid();
    FillBcsGrid();
    if(sgBcs->RowCount>1)
    {
      sgBcs->Row=1;
      sgBcsClick(Sender);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmFdz::btnClearClick(TObject *Sender)
{
    InitEditControl();
}
//---------------------------------------------------------------------------


bool __fastcall TfrmFdz::IsAccord(int bRow,int fRow)
{
    if(FModeAndNo=="1")
    {
       if(Trim(sgBcs->Cells[5][bRow])==Trim(sgFbb->Cells[4][fRow]) &&
          Trim(sgBcs->Cells[6][bRow])==Trim(sgFbb->Cells[5][fRow]) &&
         ((Trim(sgBcs->Cells[7][bRow])=="贷" && Trim(sgFbb->Cells[6][fRow])=="支出" &&
          sgBcs->Cells[8][bRow]==sgFbb->Cells[7][fRow]) ||
         (Trim(sgBcs->Cells[7][bRow])=="借" && Trim(sgFbb->Cells[6][fRow])=="收入" &&
          sgBcs->Cells[8][bRow]==sgFbb->Cells[7][fRow])))
         return true;
       else
         return false;
    }
    else
    {
       if((Trim(sgBcs->Cells[7][bRow])=="贷" && Trim(sgFbb->Cells[6][fRow])=="支出" &&
          sgBcs->Cells[8][bRow]==sgFbb->Cells[7][fRow]) ||
         (Trim(sgBcs->Cells[7][bRow])=="借" && Trim(sgFbb->Cells[6][fRow])=="收入" &&
          sgBcs->Cells[8][bRow]==sgFbb->Cells[7][fRow]))
         return true;
       else
         return false;
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmFdz::AutoAccord()
{
    int iCount=0;
    int fRow,bRow;
    try
    {
      StartWaitForm("系统正在自动对帐...");
      for(bRow=1;bRow<sgBcs->RowCount;bRow++)
      {
        if(Trim(sgBcs->Cells[0][bRow])=="")
        {
          for(fRow=1;fRow<sgFbb->RowCount;fRow++)
          {
             if(Trim(sgFbb->Cells[0][fRow])==""){
               if(IsAccord(bRow,fRow))
               {
                 SaveFdzRecord(bRow,fRow);
                 iCount++;
                 break;
               }
             }
          }
        }
      }
      ShowMessage("已经成功的对帐:'"+AnsiString(iCount)+"'条记录");
    }
    __finally
    {
      EndWaitForm();
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFdz::SaveFdzRecord(int bRow,int fRow)
{
    //回填日记帐库
    AnsiString sSQL,sSet,sWhere,sBcsCode,sBcsLine,sFbbCac,sFbbNo,sFbbFmonth;

    TComResultSet *RsFdz=new  TComResultSet(Handle,g_ClientHandle);

    sSQL=" update sdFbb ";
    sBcsCode=sgBcs->Cells[1][bRow];  //对帐单号
    sBcsLine=sgBcs->Cells[2][bRow];  //对帐行号
    sSet=" set FbbVerify = 1,FbbBcsCode = '"+sBcsCode+"',FbbBcsLine = "+sBcsLine+"";
    sFbbCac=seCacCode->ItemData[1];  //帐号
    sFbbNo=sgFbb->Cells[1][fRow];    //流水号
    sFbbFmonth=Trim(scFmonth->Text); //财务月份
    sWhere=" where FbbCac = '"+sFbbCac+"' and FbbNo = "+sFbbNo+" and FbbFMonth = '"+sFbbFmonth+"'";
    sSQL=sSQL+sSet+sWhere;
    try
    {
      RsFdz->Execute(sSQL);
      RsFdz->Close();
    }
    catch(Exception &e)
    {

⌨️ 快捷键说明

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