bdrg.cpp

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

CPP
275
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Bdrg.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "SDComboBox"
#pragma link "DateEdit"
#pragma resource "*.dfm"
TfrmBdrg *frmBdrg;
//---------------------------------------------------------------------------
__fastcall TfrmBdrg::TfrmBdrg(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
        : TRecBaseForm(Owner,chWnd,MidCode,WhereStr)
{
SetAutoCodeString(seBdrgCode,"Acm-71");
// AutoCtl=seBdrgCode;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmBdrg::ClearControl(bool BringToNext)
{
    if(!BringToNext)
    {
      seBdrgCode->Text   ="";
      seBdrgFmonth->Text=g_sdFMonth;  //月份
      deBdrgDate->Text   =g_sdCurDate;  //日期
      scBdrgClient->ItemIndex =-1;  //客户
      scBdrgCurrency->ItemIndex =-1;  //币种
      seBdrgEnrate->Text   ="1";  //汇率
      seBdrgAmt->Text   ="0.00";
      seBdrgBAmt->Text   ="0.00";
      seBdrgBdl->Text="";
      memBdrgDesc->Text="";  //备注
      lblBdrgUser->Caption=g_sdUserCode;  //操作员
      chkBdrgCheck->Checked=false;  //审核标志
      lblBdrgChecker->Caption   ="";  //审核人
      lblBdrgCheckDate->Caption   ="";  //审核日期
      SetCheckToolbarStatus(false);
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdrg::InitEditControl()
{
       ClientGroup->AddComponent(2,false,false,true, FloatPanel1,FloatPanel1->Name);
       ClientGroup->AddComponent(2,true,true,false, sgBdrg,sgBdrg->Name);
       ClientGroup->AddComponent(2,false,false,false, seBdrgCode,seBdrgCode->Name);
       ClientGroup->AddComponent(2,true,true,true, scBdrgClient,scBdrgClient->Name);
       ClientGroup->AddComponent(2,true,true,true, seBdrgFmonth,seBdrgFmonth->Name);

       FillComboBox(Handle,scBdrgClient,"select ClientName Memo,ClientCode from sdClient order by ClientCode" ,"Memo","ClientCode");
       AnsiString sSql;
       sSql =AnsiString("select currencycode,currencyname+'-'+currencycode memo,currencyrate=coalesce(rateratio,1),currencylocal from sdcurrency,sdrate");
       sSql+=" where currencycode*=ratecurrency and ";
       sSql+=" ratefmonth='"+g_sdFMonth+"'";
       sSql+=" order by currencylocal desc ";
       FillComboBox(Handle,scBdrgCurrency,sSql,"memo","CurrencyCode","CurrencyRate","CurrencyLocal");
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdrg::GetDataFromComObject()
{
      seBdrgCode->Text   =GetFieldValue("BdrgCode");
      sgBdrg->LocateGrid(1,GetFieldValue("BdrgCode"));
      seBdrgFmonth->Text=GetFieldValue("BdrgFmonth");  //月份
      deBdrgDate->Text   =GetFieldValue("BdrgDate");  //日期
      seBdrgBdl->Text   =GetFieldValue("BdrgBdl");
      scBdrgClient->LocateKey(GetFieldValue("BdrgClient"));  //客户
      scBdrgCurrency->LocateKey(GetFieldValue("BdrgCurrency"));  //币种
      seBdrgEnrate->Text   =GetFieldValue("BdrgEnrate");  //汇率
      seBdrgAmt->Text   =GetFieldValue("BdrgAmt");
      seBdrgBAmt->Text   =GetFieldValue("BdrgBAmt");
      memBdrgDesc->Text=GetFieldValue("BdrgDesc");  //备注
      lblBdrgUser->Caption=GetFieldValue("BdrgUser");  //操作员
      chkBdrgCheck->Checked=(GetFieldValue("BdrgCheck")=="1"?true:false);  //审核标志
      lblBdrgChecker->Caption   =GetFieldValue("BdrgChecker");  //审核人
      lblBdrgCheckDate->Caption   =GetFieldValue("BdrgCheckDate");  //审核日期
      //根据审核状态,设置工具栏
      if(GetFieldValue("BdrgCheck")=="1")
       SetCheckToolbarStatus(true);
      else
       SetCheckToolbarStatus(false);
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdrg::SendDataToComObject()
{
      SetFieldValue("BdrgCode",seBdrgCode->Text);
      SetFieldValue("BdrgFmonth",seBdrgFmonth->Text);
      SetFieldValue("BdrgDate",deBdrgDate->Text);
      SetFieldValue("BdrgBdl",seBdrgBdl->Text);
      SetFieldValue("BdrgClient",scBdrgClient->ItemData[1]);
      SetFieldValue("BdrgCurrency",scBdrgCurrency->ItemData[1]);
      SetFieldValue("BdrgEnrate",seBdrgEnrate->Text);
      SetFieldValue("BdrgAmt",seBdrgAmt->Text);
      SetFieldValue("BdrgBAmt",seBdrgBAmt->Text);
      SetFieldValue("BdrgDesc",memBdrgDesc->Text);
      SetFieldValue("BdrgUser",lblBdrgUser->Caption);
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdrg::WaitUserInput()
{
      if(seBdrgCode->Enabled)
       seBdrgCode->SetFocus();
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmBdrg::GetDataToGrid()
{
      AnsiString  s;
      s = "\t" + GetFieldValue("BdrgCode")    +
          "\t" + GetFieldValue("BdrgBdl")  +
          "\t" + GetFieldValue("BdrgAmt")  ;
      return s;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdrg::RefreshGridData(int mAction)
{
      AnsiString ItemStr;
      ItemStr = GetDataToGrid();
      if (mAction ==  0)   //Add
      {
          sgBdrg->AddItem(ItemStr);
      }
      else if(mAction ==  1)   //Modify
      {
          int i   =   sgBdrg->Row;
          sgBdrg->ChangeItem(ItemStr,i);
      }
      else if(mAction ==  2)      //Delete
      {
          sgBdrg->RemoveItem(sgBdrg->Row);
      }
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdrg::FillGridWithData()
{
      AnsiString ItemStr;
      comServer->MoveFirst();
      sgBdrg->RowCount    =   1;
      while (comServer->Eof   ==  0)
      {
         ItemStr =  GetDataToGrid();
         sgBdrg->AddItem(ItemStr);
         comServer->MoveNext();
      }
      comServer->MoveFirst();
}
//---------------------------------------------------------------------------

void __fastcall TfrmBdrg::FormShow(TObject *Sender)
{
      FillGridWithData();
      comServer->MoveFirst();
      GetDataFromComObject();
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdrg::sgBdrgClick(TObject *Sender)
{
      if (sgBdrg->Row > 0)
          comServer->LocateByKey(WideString(sgBdrg->TextMatrix[sgBdrg->Row][1]));
      if (comServer->RecordCount>0)
          GetDataFromComObject();
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdrg::seBdrgCodeExit(TObject *Sender)
{
    if(CurrentState==caNormal)
    {
      comServer->LocateByKey(WideString(seBdrgCode->Text));
      GetDataFromComObject();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmBdrg::scBdrgCurrencyClick(TObject *Sender)
{
 seBdrgEnrate->Text=scBdrgCurrency->ItemData[2];
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdrg::seBdrgBdlButtonClick(TObject *Sender)
{
  AnsiString SqlStr;
  SqlStr="008[坏账登记号][财务月份][登记日期][币种][坏账金额][坏账来源][来源代码][来源单号] ";
  SqlStr+=" select BdlCode,BdlFmonth,BdlDate,BdlCurrency,BdlBAmt-BdlGAmt Amt,(case BdlDocType when 1 then '来自发票' else '来自应收单' end) Type,BdlDocType,BdlDocCode,BdlDocLine ";
  SqlStr+=" from sdBdl where BdlCheck=1 and BdlBAmt>BdlGAmt ";
  SqlStr+=" order by BdlDate Desc,BdlCode ";
  TfrmWnQuery *p;
  try
  {
    StartWaitForm("正在查询,请稍候...");
    p=new TfrmWnQuery(this,"坏账登记查询",SqlStr);
  }
  __finally
  {
    EndWaitForm();
  }
  if(p->ShowModal()==mrOk)
  {
    seBdrgBdl->Text=p->ColData[1];
    seBdrgBAmt->Text=p->ColData[5];
    //获取坏账所属客户
    TComResultSet *RsQuery;
    if(p->ColData[7] == "1")  //来源应收发票
    {
     SqlStr=" select ArivhClient Client from sdArivh where ArivhCode='"+p->ColData[8]+"'";
    }
    else                      //来源其他应收单
    {
     SqlStr=" select ArobClient Client from sdArob where ArobCode='"+p->ColData[8]+"'";
    }
    RsQuery=new  TComResultSet(Handle,g_ClientHandle);
    RsQuery->Open(SqlStr,"");
    RsQuery->MoveFirst();
    if(RsQuery->RecordCount > 0)
    {
      scBdrgClient->LocateKey(RsQuery->FieldByName("Client"));
    }
    RsQuery->Close();
    delete RsQuery;

    scBdrgCurrency->LocateKey(p->ColData[4]);
    seBdrgEnrate->Text=scBdrgCurrency->ItemData[2];
  }
  delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdrg::RefreshUpdateData(int MsgSrc,int MsgType)
{
/*
  switch(MsgSrc)
  {
   case euSdCurrency:
    if(ShowUpdateMessage(MsgSrc,MsgType))
    {
       AnsiString sSql;
       sSql =AnsiString("select currencycode,currencyname+'-'+currencycode memo,currencyrate=coalesce(rateratio,1),currencylocal from sdcurrency,sdrate");
       sSql+=" where currencycode*=ratecurrency and ";
       sSql+=" ratefmonth='"+g_sdFMonth+"'";
       sSql+=" order by currencylocal desc ";
       FillComboBox(Handle,scBdrgCurrency,sSql,"memo","CurrencyCode","CurrencyRate","CurrencyLocal");
    }
    break;
   case euSdClient:
    if(ShowUpdateMessage(MsgSrc,MsgType))
    {
       FillComboBox(Handle,scBdrgClient,"select ClientName Memo,ClientCode from sdClient order by ClientCode" ,"Memo","ClientCode");
    }
    break;
   default:
    break;
  }
  */
}
//---------------------------------------------------------------------------
bool __fastcall TfrmBdrg::BeforeCheck()
{
  SetFieldValue("BdrgCheck",1);
  SetFieldValue("BdrgChecker",g_sdUserCode);
  SetFieldValue("BdrgCheckDate",g_sdCurDate);
  return true;
}
//---------------------------------------------------------------------------
bool __fastcall TfrmBdrg::BeforeUnCheck()
{
  SetFieldValue("BdrgCheck",0);
  SetFieldValue("BdrgChecker","");
  SetFieldValue("BdrgCheckDate",NULL);
  return true;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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