bdl.cpp

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

CPP
279
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Bdl.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"
TfrmBdl *frmBdl;
//---------------------------------------------------------------------------
__fastcall TfrmBdl::TfrmBdl(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
        : TRecBaseForm(Owner,chWnd,MidCode,WhereStr)
{
SetAutoCodeString(seBdlCode,"Acm-70");
 //AutoCtl=seBdlCode;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::ClearControl(bool BringToNext)
{
    if(!BringToNext)
    {
      seBdlCode->Text   ="";
      seBdlFmonth->Text=g_sdFMonth;  //月份
      deBdlDate->Text   =g_sdCurDate;  //日期
      scBdlBdr->ItemIndex =0;
      scBdlDocType->ItemIndex =0;
      scBdlCurrency->ItemIndex =-1;  //币种
      seBdlEnrate->Text   ="1";  //汇率
      seBdlAmt->Text   ="0.00";
      seBdlGAmt->Text   ="0.00";
      seBdlBAmt->Text   ="0.00";
      seBdlDocCode->Text="";
      seBdlDocLine->Text="0";
      memBdlDesc->Text="";  //备注
      lblBdlUser->Caption=g_sdUserCode;  //操作员
      chkBdlCheck->Checked=false;  //审核标志
      lblBdlChecker->Caption   ="";  //审核人
      lblBdlCheckDate->Caption   ="";  //审核日期
      SetCheckToolbarStatus(false);
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::InitEditControl()
{
       ClientGroup->AddComponent(2,false,false,true, FloatPanel1,FloatPanel1->Name);
       ClientGroup->AddComponent(2,true,true,false, sgBdl,sgBdl->Name);
       ClientGroup->AddComponent(2,false,false,false, seBdlCode,seBdlCode->Name);
       ClientGroup->AddComponent(2,true,true,true, seBdlFmonth,seBdlFmonth->Name);
       scBdlDocType->ClearAll();
       scBdlDocType->AddItems("1-来自发票","1");
       scBdlDocType->AddItems("2-来自应收单","2");
       FillComboBox(Handle,scBdlBdr,"select ArBdrDesc Memo,ArBdrCode from sdArBdr order by ArBdrCode" ,"Memo","ArBdrCode");
       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,scBdlCurrency,sSql,"memo","CurrencyCode","CurrencyRate","CurrencyLocal");
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::GetDataFromComObject()
{
    seBdlCode->Text   =GetFieldValue("BdlCode");
    sgBdl->LocateGrid(1,GetFieldValue("BdlCode"));
    seBdlFmonth->Text=GetFieldValue("BdlFmonth");  //月份
    deBdlDate->Text   =GetFieldValue("BdlDate");  //日期
   scBdlBdr->LocateKey(GetFieldValue("BdlBdr"));
    scBdlDocType->LocateKey(GetFieldValue("BdlDocType"));
    scBdlCurrency->LocateKey(GetFieldValue("BdlCurrency"));  //币种
    seBdlEnrate->Text   =GetFieldValue("BdlEnrate");  //汇率
   seBdlAmt->Text   =GetFieldValue("BdlAmt");
    seBdlGAmt->Text   =GetFieldValue("BdlGAmt");
    seBdlBAmt->Text   =GetFieldValue("BdlBAmt");
    seBdlDocCode->Text   =GetFieldValue("BdlDocCode");
    seBdlDocLine->Text   =GetFieldValue("BdlDocLine");
    memBdlDesc->Text=GetFieldValue("BdlDesc");  //备注
    lblBdlUser->Caption=GetFieldValue("BdlUser");  //操作员
    chkBdlCheck->Checked=(GetFieldValue("BdlCheck")=="1"?true:false);  //审核标志
    lblBdlChecker->Caption   =GetFieldValue("BdlChecker");  //审核人
    lblBdlCheckDate->Caption   =GetFieldValue("BdlCheckDate");  //审核日期
     //根据审核状态,设置工具栏
    if(GetFieldValue("BdlCheck")=="1")
       SetCheckToolbarStatus(true);
      else
       SetCheckToolbarStatus(false);
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::SendDataToComObject()
{
    SetFieldValue("BdlCode",seBdlCode->Text);
    SetFieldValue("BdlFmonth",seBdlFmonth->Text);
    SetFieldValue("BdlDate",deBdlDate->Text);
    SetFieldValue("BdlBdr",scBdlBdr->ItemData[1]);
    SetFieldValue("BdlDocType",scBdlDocType->ItemData[1]);
    SetFieldValue("BdlCurrency",scBdlCurrency->ItemData[1]);
    SetFieldValue("BdlEnrate",seBdlEnrate->Text);
    SetFieldValue("BdlAmt",seBdlAmt->Text);
    SetFieldValue("BdlDocCode",seBdlDocCode->Text);
    SetFieldValue("BdlDocLine",seBdlDocLine->Text);
    SetFieldValue("BdlBAmt",seBdlBAmt->Text);
    SetFieldValue("BdlGAmt",seBdlGAmt->Text);
    SetFieldValue("BdlDesc",memBdlDesc->Text);
    SetFieldValue("BdlUser",lblBdlUser->Caption);
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::WaitUserInput()
{
      if(seBdlCode->Enabled)
       seBdlCode->SetFocus();
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmBdl::GetDataToGrid()
{
      AnsiString  s;
    s = "\t" + GetFieldValue("BdlCode") +
        "\t" + GetFieldValue("BdlDate")  +
        "\t" + GetFieldValue("BdlBAmt")  ;
      return s;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::RefreshGridData(int mAction)
{
      AnsiString ItemStr;
      ItemStr = GetDataToGrid();
      if (mAction ==  0)   //Add
      {
          sgBdl->AddItem(ItemStr);
      }
      else if(mAction ==  1)   //Modify
      {
          int i   =   sgBdl->Row;
          sgBdl->ChangeItem(ItemStr,i);
      }
      else if(mAction ==  2)      //Delete
      {
          sgBdl->RemoveItem(sgBdl->Row);
      }
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::FillGridWithData()
{
      AnsiString ItemStr;
      comServer->MoveFirst();
      sgBdl->RowCount    =   1;
      while (comServer->Eof   ==  0)
      {
         ItemStr =  GetDataToGrid();
         sgBdl->AddItem(ItemStr);
         comServer->MoveNext();
      }
      comServer->MoveFirst();
}
//---------------------------------------------------------------------------

void __fastcall TfrmBdl::FormShow(TObject *Sender)
{
      FillGridWithData();
      comServer->MoveFirst();
      GetDataFromComObject();
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::sgBdlClick(TObject *Sender)
{
      if (sgBdl->Row > 0)
          comServer->LocateByKey(WideString(sgBdl->TextMatrix[sgBdl->Row][1]));
      if (comServer->RecordCount>0)
          GetDataFromComObject();
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::seBdlCodeExit(TObject *Sender)
{
    if(CurrentState==caNormal)
    {
      comServer->LocateByKey(WideString(seBdlCode->Text));
      GetDataFromComObject();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmBdl::scBdlCurrencyClick(TObject *Sender)
{
 seBdlEnrate->Text=scBdlCurrency->ItemData[2];
}
//---------------------------------------------------------------------------

void __fastcall TfrmBdl::seBdlDocCodeButtonClick(TObject *Sender)
{
    AnsiString SqlStr;
    TfrmWnQuery *p;
    if(scBdlDocType->ItemIndex == 0) //坏账单据来自发票
    {
      SqlStr="008[应收发票号][财务月份][登记日期][客户][发票行][应收金额][币种][汇率] ";
      SqlStr+=" select ArivhCode,ArivhFmonth,ArivhDate,ArivhClient,ArivdLine,ArivdAmt=ArivdAmt-ArivdCAmt-ArivdRAmt-ArivdBAmt,ArivhCurrency,ArivhEnrate ";
      SqlStr+=" from sdArivh,sdArivd where ArivhCode=ArivdCode and ArivhRed=1 and ArivhCheck=1 and ArivdAmt>ArivdCAmt+ArivdRAmt+ArivdBAmt ";
      SqlStr+=" order by ArivhClient,ArivhDate DESC,ArivhCode,ArivdLine ";
      try
      {
        StartWaitForm("正在查询,请稍候...");
        p=new TfrmWnQuery(this,"应收发票查询",SqlStr);
      }
      __finally
      {
        EndWaitForm();
      }
      if(p->ShowModal()==mrOk)
      {
       seBdlDocCode->Text=p->ColData[1];
       seBdlDocLine->Text=p->ColData[5];
       seBdlAmt->Text=p->ColData[6];
       scBdlCurrency->LocateKey(p->ColData[7]);
       seBdlEnrate->Text=p->ColData[8];
      }
      delete p;
    }
    else                             //坏账单据来自应收单
    {
      SqlStr="007[应收单号][财务月份][登记日期][客户][应收金额][币种][汇率] ";
      SqlStr+=" select ArobCode,ArobFmonth,ArobDate,ArobClient,ArobAmt=ArobAmt-ArobCAmt-ArobRAmt-ArobBAmt,ArobCurrency,ArobEnrate  ";
      SqlStr+=" from sdArob where ArobCheck=1 and ArobRed=1 and ArobAmt>ArobCAmt+ArobRAmt+ArobBAmt ";
      SqlStr+=" order by ArobClient,ArobDate DESC,ArobCode ";
      try
      {
        StartWaitForm("正在查询,请稍候...");
        p=new TfrmWnQuery(this,"其他应收单查询",SqlStr);
      }
      __finally
      {
        EndWaitForm();
      }
      if(p->ShowModal()==mrOk)
      {
       seBdlDocCode->Text=p->ColData[1];
       seBdlDocLine->Text="0";
       seBdlAmt->Text=p->ColData[5];
       scBdlCurrency->LocateKey(p->ColData[6]);
       seBdlEnrate->Text=p->ColData[7];
      }
      delete p;
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmBdl::scBdlDocTypeChange(TObject *Sender)
{
 seBdlDocCode->Text="";
 seBdlDocLine->Text="0";
}
//---------------------------------------------------------------------------
void __fastcall TfrmBdl::RefreshUpdateData(int MsgSrc,int MsgType)
{
 
}
//---------------------------------------------------------------------------
bool __fastcall TfrmBdl::BeforeCheck()
{
  SetFieldValue("BdlCheck",1);
  SetFieldValue("BdlChecker",g_sdUserCode);
  SetFieldValue("BdlCheckDate",g_sdCurDate);
  return true;
}
//---------------------------------------------------------------------------
bool __fastcall TfrmBdl::BeforeUnCheck()
{
  SetFieldValue("BdlCheck",0);
  SetFieldValue("BdlChecker","");
  SetFieldValue("BdlCheckDate",NULL);
  return true;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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