glbmqtywillrev.cpp

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

CPP
422
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "GlbmQtyWillRev.h"
#include "GlbmQF_NeedGet.h"
#include "Pzh.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "QueryBaseForm"
#pragma link "SDGrid"
#pragma link "KSAdvReport"
#pragma resource "*.dfm"

TfrmGlbmQtyWillRev *frmGlbmQtyWillRev;
TfrmGlbmQF_NeedGet *GlbmQF_NeedGet;
TfrmPzh *TmpWillRev;
//---------------------------------------------------------------------------
__fastcall TfrmGlbmQtyWillRev::TfrmGlbmQtyWillRev(TComponent* Owner)
   : TQueryBaseForm(Owner)
{
   //InitGridControl();
   RstGlkm=NULL;
   labMemory->Caption="";
   QueryGrid=sgGlbmQtyWillRev;
}
//---------------------------------------------------------------------------
__fastcall TfrmGlbmQtyWillRev::TfrmGlbmQtyWillRev(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
   : TQueryBaseForm(Owner, chWnd, MidCode, WhereStr)
{
   //InitGridControl();
   RstGlkm=NULL;
   labMemory->Caption="";
   QueryGrid=sgGlbmQtyWillRev;
}
//---------------------------------------------------------------------------
void __fastcall TfrmGlbmQtyWillRev::InitGridControl()
{

}
//---------------------------------------------------------------------------

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

bool __fastcall TfrmGlbmQtyWillRev::ShowQueryWindow()
{
   if(FGlbQtyAmtSign==1)
      return true;
   GlbmQF_NeedGet=new TfrmGlbmQF_NeedGet(this);
   GlbmQF_NeedGet->Caption="预付帐款明细查询过滤";
   GlbmQF_NeedGet->FQtyAmtSign="1";
   GlbmQF_NeedGet->ShowModal();
   FCancelQuery=GlbmQF_NeedGet->CancelQuery;
   if(FCancelQuery==true)
   {
     delete GlbmQF_NeedGet;
     return false;
   }
   FGlbSQLFilStr=GlbmQF_NeedGet->CreateGlbSQLString;
   FPzhSQLFilStr=GlbmQF_NeedGet->CreatePzhSQLString;
   FMfcmonthInfo=GlbmQF_NeedGet->FmonthInfo;
   delete GlbmQF_NeedGet;
   return true;
}
//---------------------------------------------------------------------------

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

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

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

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

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

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

void __fastcall TfrmGlbmQtyWillRev::FillRstGlkmWithData()
{
    AnsiString tSQL;
    RstGlkm=new  TComResultSet(Handle,g_ClientHandle);
    if(FGlbSQLFilStr!="")
    {
      tSQL="select GlbFmonth,GlbGlkm from sdGlb,sdGlkm";  // and GlkmSl=1
      tSQL+=" where GlbGlkm Like '115%' and GlbGlkm=GlkmCode and "+ FGlbSQLFilStr+ " order by GlbFmonth,GlbGlkm";
    }
    else
    {
      tSQL="select GlbFmonth,GlbGlkm from sdGlb,sdGlkm";  // and GlkmSl=1
      tSQL+=" where GlbGlkm Like '115%' and GlbGlkm=GlkmCode order by GlbFmonth,GlbGlkm";
    }
    RstGlkm->Open(tSQL,"GlbGlkm");
    if(RstGlkm->RecordCount==0)
    {
      sgGlbmQtyWillRev->RowCount=2;
      throw Exception("当前查询条件下的帐目不存在!");
    }
    else
      RstGlkm->MoveFirst();
}
//---------------------------------------------------------------------------

AnsiString __fastcall TfrmGlbmQtyWillRev::GetHeadQueryStr()
{
    AnsiString Selectstr,Fromstr,Wherestr,Orderstr;
    Selectstr="select PzhDate,PzhFvct,PzhCode,NoteBookText=IsNULL(NoteBookText,''),PzdDir,PzdGlkm,GlkmName,";
    Selectstr+="PzdQty,CurrencyName=IsNULL(CurrencyName,''),UnitName=IsNULL(UnitName,''),PzdAmt,GlkmDir";
    Fromstr=" from sdPzh,sdPzd,sdGlkm,sdNoteBook,sdUnit,sdCurrency";

    if(FPzhSQLFilStr=="")
    {
       if(FGlbQtyAmtSign==1)
       {
          Wherestr=" where PzhCode=PzdCode and PzdZy*=NoteBookCode and PzdUnit*=UnitCode and PzdGlkm=GlkmCode and PzhPost=1";
          Wherestr+=" And PzdCurrency*=CurrencyCode And PzhFmonth='"+FQtyAmtFmonth+"' And PzdGlkm Like '115%'";//'"+FQtyAmtGlkm+"%'";
          Wherestr+=" And exists(select * from sdPzd where PzdCode=sdPzh.PzhCode and PzdGlkm Like '115%')";//'"+FQtyAmtGlkm+"%')";
       }
       else
       {
          Wherestr=" where PzhCode=PzdCode and PzdZy*=NoteBookCode and PzdUnit*=UnitCode and PzdGlkm=GlkmCode and PzhPost=1";
          Wherestr+=" And PzdCurrency*=CurrencyCode And PzhFmonth='"+RstGlkm->FieldByName("GlbFmonth")+"' And PzdGlkm Like '115%'";//'"+RstGlkm->FieldByName("GlbGlkm")+"%'";
          Wherestr+=" And exists(select * from sdPzd where PzdCode=sdPzh.PzhCode and PzdGlkm Like '115%')";//'"+RstGlkm->FieldByName("GlbGlkm")+"%')";
       }
    }
    else
    {
       if(FGlbQtyAmtSign==1)
       {
         Wherestr=" where PzhCode=PzdCode and PzdZy*=NoteBookCode and PzdUnit*=UnitCode and PzdGlkm=GlkmCode and PzhPost=1";
         Wherestr+=" And PzdCurrency*=CurrencyCode And PzhFmonth='"+FQtyAmtFmonth+"' And PzdGlkm Like '115%'";//'"+FQtyAmtGlkm+"%'";
         Wherestr+=" And exists(select * from sdPzd where PzdCode=sdPzh.PzhCode and PzdGlkm Like '115%')";//'"+FQtyAmtGlkm+"%')";
       }
       else
       {
         Wherestr=" where PzhCode=PzdCode and PzdZy*=NoteBookCode and PzdUnit*=UnitCode and PzdGlkm=GlkmCode and PzhCheck=1";
         Wherestr+=" And PzdCurrency*=CurrencyCode And PzhFmonth='"+RstGlkm->FieldByName("GlbFmonth")+"' And PzdGlkm Like '115%'";//'"+RstGlkm->FieldByName("GlbGlkm")+"%'";
         Wherestr+=" And exists(select * from sdPzd where PzdCode=sdPzh.PzhCode And PzdGlkm Like '115%')";//'"+RstGlkm->FieldByName("GlbGlkm")+"%')";
       }
       Wherestr=Wherestr+" And "+FPzhSQLFilStr;
    }
    Orderstr=" order by PzhDate,PzdGlkm";
    sSQL=Selectstr+Fromstr+Wherestr+Orderstr;
    return(sSQL);
}
//---------------------------------------------------------------------------

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

void __fastcall TfrmGlbmQtyWillRev::FillGridWithData()
{
    TComResultSet *RsQuery;
    AnsiString ItemStr,sSql;
    sSql=GetHeadQueryStr();  //取Head查询的SQL语句
    if(sSql=="")
      return;
    sgGlbmQtyWillRev->RowCount=1;

    RsQuery=new  TComResultSet(Handle,g_ClientHandle);
    RsQuery->Open(sSql,"");
    RsQuery->MoveFirst();
    ItemStr="";

    TComResultSet *RsGlbQuery;
    RsGlbQuery=new  TComResultSet(Handle,g_ClientHandle);
    if(FGlbQtyAmtSign==1)
      sSql="select GlbDir,GlbBopQty,GlbBopAmt,GlbDopAmt,GlbCopAmt,GlbDopQty,GlbCopQty,GlbDoyAmt,GlbCoyAmt,GlbDoyQty,GlbCoyQty from sdGlb where GlbFmonth='"+FQtyAmtFmonth+"' and GlbGlkm='"+Trim(FQtyAmtGlkm)+"'";
    else
      sSql="select GlbDir,GlbBopQty,GlbBopAmt,GlbDopAmt,GlbCopAmt,GlbDopQty,GlbCopQty,GlbDoyAmt,GlbCoyAmt,GlbDoyQty,GlbCoyQty from sdGlb where GlbFmonth='"+RstGlkm->FieldByName("GlbFmonth")+"' and GlbGlkm='"+Trim(RstGlkm->FieldByName("GlbGlkm"))+"'";
    RsGlbQuery->Open(sSql,"");
    RsGlbQuery->MoveFirst();

    if(FGlbQtyAmtSign==1)
      labMemory->Caption="--"+FMfcmonthInfo+",科目:["+FQtyAmtGlkm+"]";
    else
      labMemory->Caption="--第"+RstGlkm->FieldByName("GlbFmonth")+"期,科目:["+RstGlkm->FieldByName("GlbGlkm")+"]";

    if(RsGlbQuery->Eof==1)
      throw Exception("科目:'"+FQtyAmtGlkm+"'在期间:'"+FQtyAmtFmonth+"'的帐务没有初始化");
    ItemStr="";
    //显示科目期初的余额
    
    ItemStr = "\t\t\t期初余额";
    if(RsGlbQuery->FieldByName("GlbBopAmt")==0)
    ItemStr += "\t0.00\t0.00\t平\t0.00";
    else
    {
        ItemStr += AnsiString("\t0.00\t0.00\t") + (RsGlbQuery->FieldByName("GlbDir")==1 ? "借":"贷") + "\t" +
        FormatFloat("#,##0.00",RsGlbQuery->FieldByName("GlbBopAmt").ToDouble());
    }
    sgGlbmQtyWillRev->AddItem(ItemStr);

    double fBopAmt,fBopQty;
    fBopAmt=0;
    fBopQty=0;
    while(RsQuery->Eof == 0)
    {
      if(fBopAmt==0)
        fBopAmt=RsGlbQuery->FieldByName("GlbBopAmt").ToDouble()+
                RsQuery->FieldByName("PzdDir").ToDouble()*
                RsQuery->FieldByName("GlkmDir").ToDouble()*
                RsQuery->FieldByName("PzdAmt").ToDouble();
      else
        fBopAmt=fBopAmt+RsQuery->FieldByName("PzdAmt").ToDouble()*
                RsQuery->FieldByName("PzdDir").ToDouble()*
                RsQuery->FieldByName("GlkmDir").ToDouble();

      if(fBopQty==0)
        fBopQty=RsGlbQuery->FieldByName("GlbBopQty").ToDouble()+
                RsQuery->FieldByName("PzdDir").ToDouble()*
                RsQuery->FieldByName("GlkmDir").ToDouble()*
                RsQuery->FieldByName("PzdQty").ToDouble();
      else
        fBopQty=fBopAmt+RsQuery->FieldByName("PzdQty").ToDouble()*
                RsQuery->FieldByName("PzdDir").ToDouble()*
                RsQuery->FieldByName("GlkmDir").ToDouble();

      if(RsQuery->FieldByName("PzdDir")=="1")
        ItemStr=RsQuery->FieldByName("PzhDate")+"\t"+ RsQuery->FieldByName("FvctName") + "\t" +
                RsQuery->FieldByName("PzhCode")+"\t"+
                RsQuery->FieldByName("NoteBookText")+"\t"+
                FormatFloat("#,##0.00",fBopQty)+"\t"+
                FormatFloat("#,##0.00",fBopAmt);
      else
        ItemStr=RsQuery->FieldByName("PzhDate")+"\t"+ RsQuery->FieldByName("PzhCode")+"\t"+
                RsQuery->FieldByName("PzhCode")+"\t"+
                RsQuery->FieldByName("NoteBookText")+"\t"+
                FormatFloat("#,##0.00",RsQuery->FieldByName("PzdQty").ToDouble())+"\t"+
                FormatFloat("#,##0.00",RsQuery->FieldByName("PzdAmt").ToDouble())+"\t"+
                FormatFloat("#,##0.00",fBopQty)+"\t"+
                FormatFloat("#,##0.00",fBopAmt);
      sgGlbmQtyWillRev->AddItem(ItemStr);
      RsQuery->MoveNext();
    }
    if(sgGlbmQtyWillRev->RowCount >= 2)
    {
        AnsiString tempStr;
        tempStr=sgGlbmQtyWillRev->Cells[6][sgGlbmQtyWillRev->RowCount-1]+"\t"+sgGlbmQtyWillRev->Cells[7][sgGlbmQtyWillRev->RowCount-1];

        ItemStr=AnsiString("")+"\t"+AnsiString("")+"\t"+AnsiString("")+"\t"+
                "本期合计:"+"\t"+
                FormatFloat("#,##0.00",RsGlbQuery->FieldByName("GlbDopAmt").ToDouble())+"\t"+
                FormatFloat("#,##0.00",RsGlbQuery->FieldByName("GlbCopAmt").ToDouble())+"\t";
        ItemStr=ItemStr+tempStr;
        sgGlbmQtyWillRev->AddItem(ItemStr);

        ItemStr=AnsiString("")+"\t"+AnsiString("")+"\t"+AnsiString("")+"\t"+
                "本年累计:"+"\t"+
                FormatFloat("#,##0.00",RsGlbQuery->FieldByName("GlbDoyAmt").ToDouble())+"\t"+
                FormatFloat("#,##0.00",RsGlbQuery->FieldByName("GlbCoyAmt").ToDouble())+"\t";
        ItemStr=ItemStr+tempStr;
        sgGlbmQtyWillRev->AddItem(ItemStr);
    }

    RsQuery->Close();
    RsGlbQuery->Close();
    delete RsQuery;
    delete RsGlbQuery;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlbmQtyWillRev::muFirstClick(TObject *Sender)
{
    if(FGlbQtyAmtSign==1 || FCancelQuery==true)
      return;
    if(RstGlkm->RecordCount>1)
    {
      RstGlkm->MoveFirst();
      FillGridWithData();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlbmQtyWillRev::muNextClick(TObject *Sender)
{
    if(FGlbQtyAmtSign==1 || FCancelQuery==true)
      return;
    if(RstGlkm->RecordCount > 1 && RstGlkm->CurRecNo < RstGlkm->RecordCount-1)
    {
      RstGlkm->MoveNext();
      FillGridWithData();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlbmQtyWillRev::muLastClick(TObject *Sender)
{
    if(FGlbQtyAmtSign==1 || FCancelQuery==true)
      return;
    if(RstGlkm->RecordCount > 1)
    {
      RstGlkm->MoveLast();
      FillGridWithData();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlbmQtyWillRev::muPreviousClick(TObject *Sender)
{
    if(FGlbQtyAmtSign==1 || FCancelQuery==true)
      return;
    if(RstGlkm->RecordCount > 1 && RstGlkm->CurRecNo > 1)
    {
      RstGlkm->MovePrious();
      FillGridWithData();
    }
}
//---------------------------------------------------------------------------

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

void __fastcall TfrmGlbmQtyWillRev::FormShow(TObject *Sender)
{
    if(FGlbQtyAmtSign==1)
    {
      tbQuery->Enabled=false;
      tbControl->Enabled=false;
    }
    else
    {
      tbQuery->Enabled=true;
      tbControl->Enabled=true;
    }
    tbQueryClick(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlbmQtyWillRev::FormClose(TObject *Sender,
      TCloseAction &Action)
{
   if(FGlbQtyAmtSign!=1 && RstGlkm!=NULL)
   {
      RstGlkm->Close();
      delete RstGlkm;
   }
   TQueryBaseForm::FormClose(Sender,Action);
}
//---------------------------------------------------------------------------




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

⌨️ 快捷键说明

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