glb_dlz.cpp

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

CPP
408
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Glb_DLZ.h"
#include "Pzh.h"
#include "Glb_DlzFil.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "QueryBaseForm"
#pragma link "SDGrid"
#pragma link "KSAdvReport"
#pragma resource "*.dfm"
TfrmGlb_DLZ *frmGlb_DLZ;
//---------------------------------------------------------------------------
__fastcall TfrmGlb_DLZ::TfrmGlb_DLZ(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
   : TQueryBaseForm(Owner,chWnd,MidCode,WhereStr)
{
    QueryGrid=sgGlb_Dlz;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::InitSDGridControl()
{
   int iColCount;
   TComResultSet *RstQuery;
   RstQuery=new  TComResultSet(Handle,g_ClientHandle);
   RstQuery->Open("select GlkmCode,GlkmName from sdGlkm where GlkmCode Like '"+FGlkmCodeDlz+"%' and GlkmMx=1 order by GlkmCode","GlkmCode");
   iColCount=RstQuery->RecordCount;
   if(iColCount==0)
      throw Exception("多栏帐科目:'"+FGlkmCodeDlz+"'没有定义明细资料");
   else
      sgGlb_Dlz->ColCount=iColCount+6;
   RstQuery->MoveFirst();

   int iCol=0;
   while(RstQuery->Eof==0)
   {
      iCol++;
      sgGlb_Dlz->Cells[5+iCol][0]=RstQuery->FieldByName("GlkmName");
      RstQuery->MoveNext();
   }
   RstQuery->Close();
   delete RstQuery;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::tbQueryClick(TObject *Sender)
{
   if(!ShowQueryWindow())
     return;
   try
   {
     StartWaitForm("正在查询,请稍候...");
     InitSDGridControl();
     FillGridWithData();
   }
   __finally
   {
     EndWaitForm();
   }
}
//---------------------------------------------------------------------------

bool __fastcall TfrmGlb_DLZ::ShowQueryWindow()
{
    TfrmGlb_DlzFil *frmGlb_DlzFil;
    frmGlb_DlzFil=new TfrmGlb_DlzFil(this);
    frmGlb_DlzFil->ShowModal();
    if(frmGlb_DlzFil->CancelQuery)
    {
        delete frmGlb_DlzFil;
        return false;
    }
    PzhFilterStr=frmGlb_DlzFil->CreatePzhSQLString;
    GlbFilterStr=frmGlb_DlzFil->CreateGlbSQLString;
    OrderStr=frmGlb_DlzFil->OrderString;
    FGlkmCodeDlz=frmGlb_DlzFil->GlkmCodeDlz;
    delete frmGlb_DlzFil;
    return true;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::ClearControl(bool BringToNext)
{
   return;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::GetDataFromComObject()
{
   return;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::WaitUserInput()
{
   return;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::RefreshGridData(int mAction)
{
   return;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::DisplayBill()
{
   return;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::GetBill(AnsiString BillID)
{
   return;
}
//---------------------------------------------------------------------------

AnsiString __fastcall TfrmGlb_DLZ::GetHeadQueryStr()
{
    AnsiString Selectstr,Fromstr,Wherestr;
    Selectstr="select PzhDate,PzhFvct,PzhCode,PzdZy=isnull((select NoteBookText from sdNoteBook where NoteBookCode=PzdZy),''),";
    Fromstr=" PzdGlkm,GlkmName,PzdDir,PzdAmt,PzdWbAmt from sdPzh,sdPzd,sdGlkm";
    if(PzhFilterStr=="")
       Wherestr=" where PzhCode=PzdCode and PzdGlkm=GlkmCode ";
    else
       Wherestr=" where PzhCode=PzdCode and PzdGlkm=GlkmCode and " + PzhFilterStr;

    sSQL=Selectstr+Fromstr+Wherestr+OrderStr;
    return(sSQL);
}
//---------------------------------------------------------------------------

AnsiString __fastcall TfrmGlb_DLZ::GetSpace(int iNum)
{
    AnsiString strSpace;
    for(int i=1;i<iNum;i++)
      strSpace=strSpace+AnsiString(" ");
    return strSpace;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::FillGridWithData()
{
    TComResultSet *RstPzh;
    TComResultSet *RstGlb;
    TComResultSet *RstGlkm;
    TComResultSet *RstMxTotal;

    AnsiString ItemStr,ItemStr1,ItemStr2,sSql;
    double m_Amt=0;
    sSql=GetHeadQueryStr();  //取Head查询的SQL语句
    if(sSql=="")
      return;
    sgGlb_Dlz->RowCount=1;

    RstGlkm=new  TComResultSet(Handle,g_ClientHandle);
    RstGlkm->Open("select GlkmCode,GlkmName from sdGlkm where GlkmCode like '"+FGlkmCodeDlz+"%' and GlkmMx=1 order by GlkmCode","");

    RstGlb=new  TComResultSet(Handle,g_ClientHandle);
    AnsiString SqlStr;
    SqlStr="select GlbGlkm,GlbMx,GlbDir,GlbBopAmt,GlbDopAmt,GlbCopAmt,GlbDoyAmt,GlbCoyAmt from sdGlb where GlbGlkm ='"+FGlkmCodeDlz+"'";
    SqlStr+=" union select GlbGlkm,GlbMx,GlbDir,GlbBopAmt,GlbDopAmt,GlbCopAmt,GlbDoyAmt,GlbCoyAmt from sdGlb where GlbGlkm like '"+FGlkmCodeDlz+"%' and GlbMx=1";
    SqlStr+=" order by GlbGlkm";
    RstGlb->Open(SqlStr,"GlbGlkm");
    RstGlb->MoveFirst();
    ItemStr =AnsiString("")+"\t"+AnsiString("")+"\t"+"期 初 余 额"+"\t"+""+"\t"+"";
    //期初余额
    while(!RstGlb->Eof)
    {
       if(RstGlb->FieldByName("GlbMx")==0)
       {
         if(RstGlb->FieldByName("GlbBopAmt")==0)
            if(RstGlb->FieldByName("GlbGlkm")==FGlkmCodeDlz)
            {
              m_Amt=0;
              ItemStr=ItemStr+"\t"+"平"+GetSpace(2)+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
            }
            else
              ItemStr=ItemStr+"\t"+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
         else
         {

            if(RstGlb->FieldByName("GlbDir")==1)
              if(RstGlb->FieldByName("GlbGlkm")==FGlkmCodeDlz)
              {
                m_Amt=RstGlb->FieldByName("GlbBopAmt").ToDouble();
                ItemStr=ItemStr+"\t"+"借"+GetSpace(2)+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
              }
              else
                ItemStr=ItemStr+"\t"+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
            else
              if(RstGlb->FieldByName("GlbGlkm")==FGlkmCodeDlz)
              {
                m_Amt=RstGlb->FieldByName("GlbBopAmt").ToDouble();
                ItemStr=ItemStr+"\t"+"贷"+GetSpace(2)+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
              }
              else
                ItemStr=ItemStr+"\t"+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
         }
       }
       else
       {
         if(RstGlb->FieldByName("GlbGlkm")==FGlkmCodeDlz)
           throw Exception("明细科目:'"+FGlkmCodeDlz+"'不能定义为多栏帐");
         else
           ItemStr=ItemStr+"\t"+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble());
       }
       RstGlb->MoveNext();
    }
    sgGlb_Dlz->AddItem(ItemStr);

    //凭证明细
    RstPzh=new  TComResultSet(Handle,g_ClientHandle);
    RstPzh->Open(sSql,"");
    RstPzh->MoveFirst();
    ItemStr="";
    while(RstPzh->Eof == 0)
    {
      if(RstPzh->FieldByName("PzdDir")==1)
      {
        ItemStr=RstPzh->FieldByName("PzhDate")+"\t"+RstPzh->FieldByName("PzhFvct")+GetSpace(2)+
                RstPzh->FieldByName("PzhCode")+"\t"+RstPzh->FieldByName("PzdZy")+"\t"+
                FormatFloat("#,##0.00",RstPzh->FieldByName("PzdAmt").ToDouble())+"\t"+AnsiString("");
        if(sgGlb_Dlz->Cells[5][sgGlb_Dlz->RowCount-1].SubString(1,2)=="平")
        {
          m_Amt=RstPzh->FieldByName("PzdAmt").ToDouble();
          ItemStr=ItemStr+"\t"+ "借"+GetSpace(2)+FormatFloat("#,##0.00",RstPzh->FieldByName("PzdAmt").ToDouble());
        }
        else
        {
          if(sgGlb_Dlz->Cells[5][sgGlb_Dlz->RowCount-1].SubString(1,2)=="借")
          {
            m_Amt=m_Amt+ RstPzh->FieldByName("PzdAmt").ToDouble();
            ItemStr=ItemStr+"\t"+ "借"+GetSpace(2)+FormatFloat("#,##0.00",m_Amt);
          }
          else
          {
            m_Amt=m_Amt - RstPzh->FieldByName("PzdAmt").ToDouble();
            if(m_Amt==0)
              ItemStr=ItemStr+"\t"+ "平"+GetSpace(2)+FormatFloat("#,##0.00",m_Amt);
            else
            {
              if(m_Amt>0)
                ItemStr=ItemStr+"\t"+ "贷"+GetSpace(2)+FormatFloat("#,##0.00",m_Amt);
              else
                ItemStr=ItemStr+"\t"+ "借"+GetSpace(2)+FormatFloat("#,##0.00",-m_Amt);
            }
          }
        }
      }
      else
      {
        ItemStr=RstPzh->FieldByName("PzhDate")+"\t"+RstPzh->FieldByName("PzhFvct")+GetSpace(2)+
                RstPzh->FieldByName("PzhCode")+"\t"+RstPzh->FieldByName("PzdZy")+"\t"+
                AnsiString("")+"\t"+FormatFloat("#,##0.00",RstPzh->FieldByName("PzdAmt").ToDouble());
        if(sgGlb_Dlz->Cells[5][sgGlb_Dlz->RowCount-1].SubString(1,2)=="平")
        {
          m_Amt=RstPzh->FieldByName("PzdAmt").ToDouble();
          ItemStr=ItemStr+"\t"+ "贷"+GetSpace(2)+FormatFloat("#,##0.00",RstPzh->FieldByName("PzdAmt").ToDouble());
        }
        else
        {
          if(sgGlb_Dlz->Cells[5][sgGlb_Dlz->RowCount-1].SubString(1,2)=="借")
          {
            m_Amt=m_Amt- RstPzh->FieldByName("PzdAmt").ToDouble();
            if(m_Amt==0)
              ItemStr=ItemStr+"\t"+ "平"+GetSpace(2)+FormatFloat("#,##0.00",m_Amt);
            else
            {
              if(m_Amt>0)
                ItemStr=ItemStr+"\t"+ "借"+GetSpace(2)+FormatFloat("#,##0.00",m_Amt);
              else
                ItemStr=ItemStr+"\t"+ "贷"+GetSpace(2)+FormatFloat("#,##0.00",-m_Amt);
            }
          }
          else
          {
            m_Amt=m_Amt+ RstPzh->FieldByName("PzdAmt").ToDouble();
            ItemStr=ItemStr+"\t"+ "贷"+GetSpace(2)+FormatFloat("#,##0.00",m_Amt);
          }
        }
      }
      RstGlkm->MoveFirst();

      while(RstGlkm->Eof == 0)
      {
         if(RstPzh->FieldByName("PzdGlkm")==RstGlkm->FieldByName("GlkmCode"))
            if(RstPzh->FieldByName("PzdDir")=="1")
               ItemStr=ItemStr+"\t"+FormatFloat("#,##0.00",RstPzh->FieldByName("PzdAmt").ToDouble());
            else
               ItemStr=ItemStr+"\t"+FormatFloat("#,##0.00",-RstPzh->FieldByName("PzdAmt").ToDouble());
         else
            ItemStr=ItemStr+"\t"+AnsiString("");
         RstGlkm->MoveNext();
      }
      sgGlb_Dlz->AddItem(ItemStr);
      RstPzh->MoveNext();
    }
    //本期合计
    AnsiString tempStr;
    tempStr=sgGlb_Dlz->Cells[5][sgGlb_Dlz->RowCount-1];
    RstGlb->MoveFirst();
    while(RstGlb->Eof==0)
    {
       if(RstGlb->FieldByName("GlbGlkm")==FGlkmCodeDlz)
       {
         ItemStr1=AnsiString("")+"\t"+AnsiString("")+"\t"+"本 期 合 计"+"\t"+
                 FormatFloat("#,##0.00",RstGlb->FieldByName("GlbDopAmt").ToDouble())+"\t"+
                 FormatFloat("#,##0.00",RstGlb->FieldByName("GlbCopAmt").ToDouble())+"\t"+
                 tempStr;
         ItemStr2=AnsiString("")+"\t"+AnsiString("")+"\t"+"本 年 累 计"+"\t"+
                 FormatFloat("#,##0.00",RstGlb->FieldByName("GlbDoyAmt").ToDouble())+"\t"+
                 FormatFloat("#,##0.00",RstGlb->FieldByName("GlbCoyAmt").ToDouble())+"\t"+
                 tempStr;
       }
       else
       {
         ItemStr1=ItemStr1+"\t"+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbDopAmt").ToDouble()-RstGlb->FieldByName("GlbCopAmt").ToDouble());
         ItemStr2=ItemStr2+"\t"+FormatFloat("#,##0.00",RstGlb->FieldByName("GlbBopAmt").ToDouble()+RstGlb->FieldByName("GlbDoyAmt").ToDouble()-RstGlb->FieldByName("GlbCoyAmt").ToDouble());
       }
       RstGlb->MoveNext();
    }
    sgGlb_Dlz->AddItem(ItemStr1);
    sgGlb_Dlz->AddItem(ItemStr2);

    RstPzh->Close();
    delete RstPzh;
    RstGlb->Close();
    delete RstGlb;
    RstGlkm->Close();
    delete RstGlkm;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::muFirstClick(TObject *Sender)
{
    if(sgGlb_Dlz->RowCount > 1)
      sgGlb_Dlz->Row=1;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::muNextClick(TObject *Sender)
{
    if(sgGlb_Dlz->RowCount > 1 && sgGlb_Dlz->Row < sgGlb_Dlz->RowCount-1)
      sgGlb_Dlz->Row=sgGlb_Dlz->Row+1;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::muLastClick(TObject *Sender)
{
    if(sgGlb_Dlz->RowCount > 1)
      sgGlb_Dlz->Row=sgGlb_Dlz->RowCount-1;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::muPreviousClick(TObject *Sender)
{
    if(sgGlb_Dlz->RowCount > 1 && sgGlb_Dlz->Row > 1)
      sgGlb_Dlz->Row=sgGlb_Dlz->Row-1;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::tbRefreshClick(TObject *Sender)
{
    if(sSQL=="")
      return;
    FillGridWithData();
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::FormShow(TObject *Sender)
{
    tbQueryClick(this);
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlb_DLZ::sgGlb_DlzDblClick(TObject *Sender)
{
    int iRow;
    int iPos;
    AnsiString tPzhCode;
    iRow=sgGlb_Dlz->Row;
    tPzhCode= Trim(sgGlb_Dlz->Cells[1][iRow]);
    iPos=tPzhCode.Pos(" ");
    tPzhCode=tPzhCode.SubString(iPos+1,tPzhCode.Length()-iPos);
    if(tPzhCode.IsEmpty())
      return;
    TfrmPzh *Glb_DlzPzh;
    try
    {
      StartWaitForm("正在调阅凭证,请稍候...");
      Glb_DlzPzh=new TfrmPzh(this,g_ClientHandle,"1100302","");
      Glb_DlzPzh->comServer->FilterString="PzhCode='"+tPzhCode+"'";
      Glb_DlzPzh->comServer->Query();
      EndWaitForm();
      Glb_DlzPzh->ShowModal();
    }
    catch (Exception &e)
    {
      delete Glb_DlzPzh;
      throw Exception(e.Message);
    }
    delete Glb_DlzPzh;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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