arcavh.cpp

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

CPP
443
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Arcavh.h"
#include "Arcavd.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "GenBaseForm"
#pragma link "DateEdit"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"

TfrmArcavh *frmArcavh;
//---------------------------------------------------------------------------
__fastcall TfrmArcavh::TfrmArcavh(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
        : TGenBaseForm(Owner,chWnd,MidCode,WhereStr)
{
  SetAutoCodeString(seArcavhCode,"Acm-67");

}
//---------------------------------------------------------------------------
void __fastcall TfrmArcavh::sgArcavdSelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
    if (ARow == 0)
    {
       return;
    }
    comServer->LocateItemByKey(seArcavhCode->Text+"\t"+sgArcavd->TextMatrix[ARow][1]);
    GetDataFromComObject(2);
}
//---------------------------------------------------------------------------

void __fastcall TfrmArcavh::sgArcavdDblClick(TObject *Sender)
{
    int iRow;
    iRow=sgArcavd->Row;
    if (iRow == 0)
    {
       return;
    }
    if (comServer->ItemCount >0)
    {
       GetDataFromComObject(2);
       sgArcavd->Visible=false;
       FloatPanel2->Visible=true;
    }
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

void __fastcall TfrmArcavh::btnOKClick(TObject *Sender)
{

   if ((CurrentState==caAddDetail)||(CurrentState==caAddBill))
       {
         try
         {
          if(DetailState==caAddDetail)
            comServer->AddItem();
           SendDataToComObject(2);
           comServer->AddToObject();
           ClearControl(2,false);
          }
        catch(Exception &e)
        {
         throw Exception(e.Message);
        }
       }
       else
       ChangeToBrowseState(false);
}
//---------------------------------------------------------------------------

void __fastcall TfrmArcavh::btnCancelClick(TObject *Sender)
{
        CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcavh::FormShow(TObject *Sender)
{
       ClearControl(1,false);
       ClearControl(2,false);
       TGenBaseForm::MoveToFirst();
       ChangeToBrowseState(true);
}
//---------------------------------------------------------------------------
void  __fastcall TfrmArcavh::RefreshUpdateData(int MsgSrc,int MsgType)
{
//在这里添加相应消息的语句
}
void __fastcall TfrmArcavh::InitEditControl()
{
    ClientGroup->AddComponent(1,false,false,true, FloatPanel1,FloatPanel1->Name);
    ClientGroup->AddComponent(1,false,true,false, seArcavhCode,seArcavhCode->Name);
    ClientGroup->AddComponent(1,false,true,true, seArcavhDocCode,seArcavhDocCode->Name);
    ClientGroup->AddComponent(1,false,true,true, scArcavhDocType,scArcavhDocType->Name);

    ClientGroup->AddComponent(2,false,false,true,FloatPanel2,FloatPanel2->Name);
    ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
    ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);

    scArcavhDocType->ClearAll();
    scArcavhDocType->AddItems("1-收款单","1");
    scArcavhDocType->AddItems("2-预收单","2");
    scArcavhDocType->AddItems("3-票据","3");

    scArcavdDocType->ClearAll();
    scArcavdDocType->AddItems("1-应收发票","1");
    scArcavdDocType->AddItems("2-其他应收单","2");
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcavh::ClearControl(int Section,bool BringToNext)
{
    if (Section == 1)
    {
       if (! BringToNext)
       {
          seArcavhCode->Text="";
          deArcavhDate->Text=g_sdCurDate;
          scArcavhDocType->ItemIndex=0;
          seArcavhDocCode->Text="";
          memArcavhDesc->Text="";
          lblArcavhUser->Caption=g_sdUserCode;
          chkArcavhCheck->Checked=false;
          lblArcavhChecker->Caption="";
          lblArcavhCheckDate->Caption="";

          SetCheckToolbarStatus(false);
       }
       sgArcavd->RowCount=1;
     }
    else if (Section==2)
    {
       if (! BringToNext)
       {
//          if(comServer->RecordCount > 0)
           seArcavdLine->Text=AnsiString(comServer->ItemCount+1);
//          else
//           seArcavdLine->Text="1";
          scArcavdDocType->ItemIndex=0;
          seArcavdDocCode->Text="";
          seArcavdDocLine->Text="0";
          seArcavdCAmt->Text="0.00";
          seArcavdRAmt->Text="0.00";
          seArcavdConv->Text="0.00";
          memArcavdDesc->Text="";
       }
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcavh::GetDataFromComObject(int Section)
{
    if (Section == 1)
    {
       seArcavhCode->Text=GetHeadValue("ArcavhCode");
       deArcavhDate->Text=GetHeadValue("ArcavhDate");
       scArcavhDocType->LocateKey(GetHeadValue("ArcavhDocType"));
       seArcavhDocCode->Text=GetHeadValue("ArcavhDocCode");
       memArcavhDesc->Text=GetHeadValue("ArcavhDesc");
       lblArcavhUser->Caption=GetHeadValue("ArcavhUser");
       chkArcavhCheck->Checked=(GetHeadValue("ArcavhCheck")=="1");
       lblArcavhChecker->Caption=GetHeadValue("ArcavhChecker");
       lblArcavhCheckDate->Caption=GetHeadValue("ArcavhCheckDate");

       if((GetHeadValue("ArcavhCheck")=="1"))
        SetCheckToolbarStatus(true);
       else
        SetCheckToolbarStatus(false);
    }
    else
    {
      seArcavdLine->Text=GetDetailValue("ArcavdLine");
      scArcavdDocType->LocateKey(GetDetailValue("ArcavdDocType"));
      seArcavdDocCode->Text=GetDetailValue("ArcavdDocCode");
      seArcavdDocLine->Text=GetDetailValue("ArcavdDocLine");
      seArcavdCAmt->Text=GetDetailValue("ArcavdCAmt");
      seArcavdRAmt->Text=GetDetailValue("ArcavdRAmt");
      seArcavdConv->Text=GetDetailValue("ArcavdConv");
      memArcavdDesc->Text=GetDetailValue("ArcavdDesc");
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcavh::SendDataToComObject(int Section)
{
        if (Section==1)
        {
         SetHeadValue("ArcavhCode",seArcavhCode->Text);
         SetHeadValue("ArcavhDate",deArcavhDate->Text);
         SetHeadValue("ArcavhDocType",scArcavhDocType->ItemData[cbItem2]);
         SetHeadValue("ArcavhDocCode",seArcavhDocCode->Text);
         SetHeadValue("ArcavhDesc",memArcavhDesc->Text);
         SetHeadValue("ArcavhUser",lblArcavhUser->Caption);
        }
        else
        {
         SetDetailValue("ArcavdCode",seArcavhCode->Text);
         SetDetailValue("ArcavdLine",seArcavdLine->Text);
         SetDetailValue("ArcavdDocType",scArcavdDocType->ItemData[cbItem2]);
         SetDetailValue("ArcavdDocCode",seArcavdDocCode->Text);
         SetDetailValue("ArcavdDocLine",seArcavdDocLine->Text);
         SetDetailValue("ArcavdCAmt",seArcavdCAmt->Text);
         SetDetailValue("ArcavdRAmt",seArcavdRAmt->Text);
         SetDetailValue("ArcavdConv",seArcavdConv->Text);
         SetDetailValue("ArcavdDesc",memArcavdDesc->Text);
        }
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcavh::WaitUserInput(int Section)
{
       if (Section ==1)
         {
          if(seArcavhCode->Enabled)
             seArcavhCode->SetFocus();
         }
       else
       {
          sgArcavd->Visible=false;
          FloatPanel2->Visible=true;
          if(scArcavdDocType->Enabled)
            scArcavdDocType->SetFocus();
       }
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcavh::RefreshGridData(int mAction)
{
        AnsiString ItemStr;
        ItemStr = GetItemStringToGrid();
        switch(mAction)
        {
           case 0:
             sgArcavd->AddItem(ItemStr);
             break;
           case 1:
             sgArcavd->ChangeItem(ItemStr,sgArcavd->Row);
             break;
           case 2:
             sgArcavd->RemoveItem(sgArcavd->Row);
             break;
           default:
             break;
        }
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmArcavh::GetItemStringToGrid()
{
    scArcavdDocType->LocateKey(GetDetailValue("ArcavdDocType"));
    AnsiString s_ItemStr;
    s_ItemStr ="\t"+GetDetailValue("ArcavdLine")+
               "\t"+scArcavdDocType->ItemData[0]+
               "\t"+GetDetailValue("ArcavdDocCode")+
               "\t"+GetDetailValue("ArcavdDocLine")+
               "\t"+GetDetailValue("ArcavdCAmt")+
               "\t"+GetDetailValue("ArcavdRAmt")+
               "\t"+GetDetailValue("ArcavdConv")+
               "\t"+GetDetailValue("ArcavdDesc");
     return s_ItemStr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcavh::DisplayBill()
{
       if(comServer->RecordCount<1)
         return;
        GetDataFromComObject(1);
        ChangeToBrowseState(true);
        FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcavh::GetBill(AnsiString BillID)
{
       if(comServer->Find("ArcavhCode='"+BillID+"'"))
       {
           DisplayBill();
       }
       else
    if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
       {
           AddHeadRecord();
       }
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcavh::FillGridWithData()
{
      AnsiString ItemStr;
      sgArcavd->RowCount=1;
      if(comServer->RecordCount<1)
       return;
      for (int i=0;i<comServer->ItemCount;i++)
      {
          comServer->LocateItemByIndex(i);
          RefreshGridData(0);
      }
      comServer->LocateItemByIndex(0);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcavh::GenrateBill()
{
    int TempCount;
    TempCount = comServer->ItemCount;
    TfrmArcavd *p;
    p=new TfrmArcavd(this);
    SetControlState(caAddBill);
    p->GetComObject(comServer);

     p->ShowModal();

    if (TempCount < comServer->ItemCount)
      TGenBaseForm::tbSaveClick(NULL);
    else
      CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcavh::ChangeToBrowseState(bool Browse)
{
       FloatPanel2->Visible=false;
       sgArcavd->Visible=true;
       if(Browse == false)
        sgArcavd->SetFocus();

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

void __fastcall TfrmArcavh::seArcavhCodeExit(TObject *Sender)
{
    if(CurrentState==caNormal && seArcavhCode->Text != GetHeadValue("ArcavhCode"))
    {
      comServer->LocateByKey(WideString(seArcavhCode->Text));
      DisplayBill();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmArcavh::seArcavhDocCodeButtonClick(TObject *Sender)
{
 AnsiString SqlStr;
 TfrmWnQuery *p;
 switch(scArcavhDocType->ItemIndex)
 {
  case 0:  //单据类型为收款单
    SqlStr="007[收款单号][客户][财务月份][收款日期][币种][金额][类别] ";
    SqlStr+=" select ArrbCode,ArrbClient,ArrbFmonth,ArrbDate,ArrbCurrency,ArrbAmt-ArrbBAmt-ArrbCAmt NetAmt,ArrbRbt ";
    SqlStr+=" from sdArrb where ArrbCheck=1 and ArrbAmt-ArrbBAmt-ArrbCAmt>0 ";
    SqlStr+=" order by ArrbClient,ArrbFmonth DESC,ArrbDate DESC,ArrbCode ";
    try
    {
      StartWaitForm("正在查询,请稍候...");
      p=new TfrmWnQuery(this,"收款单查询",SqlStr);
    }
    __finally
    {
      EndWaitForm();
    }
    if(p->ShowModal()==mrOk)
    {
      seArcavhDocCode->Text=p->ColData[1];
    }
    delete p;
    break;
  case 1:  //单据类型为预款单
    SqlStr="006[预收单号][客户][财务月份][收款日期][币种][金额] ";
    SqlStr+=" select PreRbCode,PreRbClient,PreRbFmonth,PreRbDate,PreRbCurrency,PreRbAmt-PreRbBAmt-PreRbCAmt NetAmt ";
    SqlStr+=" from sdPreRb where PreRbCheck=1 and PreRbAmt-PreRbBAmt-PreRbCAmt>0 ";
    SqlStr+=" order by PreRbClient,PreRbFmonth DESC,PreRbDate DESC,PreRbCode ";
    try
    {
      StartWaitForm("正在查询,请稍候...");
      p=new TfrmWnQuery(this,"预收单查询",SqlStr);
    }
    __finally
    {
      EndWaitForm();
    }
    if(p->ShowModal()==mrOk)
    {
      seArcavhDocCode->Text=p->ColData[1];
    }
    delete p;
    break;
  case 2:  //单据类型为票据
    SqlStr="007[票据号][客户][财务月份][登记日期][币种][金额][状态] ";
    SqlStr+=" select ArnrCode,ArnrClient,ArnrFmonth,ArnrDate,ArnrCurrency,ArnrAmt-ArnrCAmt NetAmt, ";
    SqlStr+=" (case ArnrState when 1 then '未处理' when 2 then '已收款' when 3 then '已贴现' when 4 then '已背书' else '已退回' end) tmp ";
    SqlStr+=" from sdArnr where ArnrCheck=1  and ArnrState<5 and ArnrAmt-ArnrCAmt>0 ";
    SqlStr+=" order by ArnrClient,ArnrFmonth DESC,ArnrDate DESC,ArnrCode ";
    try
    {
      StartWaitForm("正在查询,请稍候...");
      p=new TfrmWnQuery(this,"应收票据查询",SqlStr);
    }
    __finally
    {
      EndWaitForm();
    }
    if(p->ShowModal()==mrOk)
    {
      seArcavhDocCode->Text=p->ColData[1];
    }
    delete p;
    break;
  default:
   break;
 }
}
//---------------------------------------------------------------------------

void __fastcall TfrmArcavh::scArcavhDocTypeChange(TObject *Sender)
{
 seArcavhDocCode->Text="";
}
//---------------------------------------------------------------------------

void __fastcall TfrmArcavh::tbGenDetailClick(TObject *Sender)
{
 if(scArcavhDocType->ItemIndex<0)
  return;
 if(seArcavhDocCode->Text == "")
  return;
 TGenBaseForm::tbGenDetailClick(Sender);
}
//---------------------------------------------------------------------------
bool __fastcall TfrmArcavh::BeforeCheck()
{
  SetHeadValue("ArcavhCheck",1);
  SetHeadValue("ArcavhChecker",g_sdUserCode);
  SetHeadValue("ArcavhCheckDate",g_sdCurDate);
  return true;
}
//---------------------------------------------------------------------------
bool __fastcall TfrmArcavh::BeforeUnCheck()
{
  SetHeadValue("ArcavhCheck",0);
  SetHeadValue("ArcavhChecker","");
  SetHeadValue("ArcavhCheckDate",NULL);
  return true;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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