aprsh.cpp

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

CPP
400
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Aprsh.h"
#include "Aprsd.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "BillBaseForm"
#pragma link "DateEdit"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "GenBaseForm"
#pragma resource "*.dfm"
TfrmAprsh *frmAprsh;
//---------------------------------------------------------------------------
__fastcall TfrmAprsh::TfrmAprsh(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
        : TGenBaseForm(Owner,chWnd,MidCode,WhereStr)
{
 SetAutoCodeString(seAprshCode,"Acm-57");
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::ClearControl(int Section,bool BringToNext)
{
   if (Section == 1)
   {
      if (!BringToNext)
      {
        seAprshCode->Text        ="";  //应付红冲单号
        deAprshDate->Text        =g_sdCurDate;  //日期
        scAprshDocType->ItemIndex=0;  //单据类型
        seAprshDocCode->Text     ="";  //单据号
        lbAprshUser->Caption     =g_sdUserCode;  //操作员
        chkAprshCheck->Checked   =false;  //审核标志
        lbAprshChecker->Caption  ="";  //审核人
        lbAprshCheckDate->Caption="";  //审核日期
        memAprshDesc->Text       =""; //备注
        lbAprshSysDate->Caption  ="";  //系统日期
      }
      sgAprsh->RowCount=1;
   }
   else if (Section==2)
   {
      if (!BringToNext)
      {
        seAprsdLine->Text   =AnsiString(comServer->ItemCount+1);  //行号
        seAprsdCavCode->Text="";  //核销单号
        seAprsdCavLine->Text="";  //核销行号
        seAprsdConv->Text   ="";  //换算系数
        seAprsdRAmt->Text   ="";  //红冲金额
        seAprsdCAmt->Text   ="";  //核销金额
        memAprsdDesc->Text   ="";  //备注
      }
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::InitEditControl()
{
   ClientGroup->AddComponent(1,false,false,true,fpAprshHead,fpAprshHead->Name);
   ClientGroup->AddComponent(2,true,true,true,fpAprshDetail,fpAprshDetail->Name);
   ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
   ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);
   ClientGroup->AddComponent(1,false,true,false,seAprshCode,seAprshCode->Name);
   ClientGroup->AddComponent(1,false,true,true,scAprshDocType,scAprshDocType->Name);
   ClientGroup->AddComponent(1,false,true,true,seAprshDocCode,seAprshDocCode->Name);

   scAprshDocType->AddItems("退款单","1");
   scAprshDocType->AddItems("红字应付单","2");
   scAprshDocType->AddItems("票据退回","3");
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmAprsh::GetDataToGrid()
{
    AnsiString  s;
   s = "\t" + GetDetailValue("AprsdLine")    +
       "\t" + GetDetailValue("AprsdCavCode")    +
       "\t" + GetDetailValue("AprsdCavLine")    +
       "\t" + GetDetailValue("AprsdRAmt")    +
       "\t" + GetDetailValue("AprsdCAmt")    +
       "\t" + GetDetailValue("AprsdConv")    ;
    return s;
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::RefreshGridData(int mAction)
{
    int i;
    AnsiString ItemStr;
    switch(mAction)
    {
       case 0: // Append
         ItemStr=GetDataToGrid();
         sgAprsh->AddItem(ItemStr);
         break;
       case 1: // Modify
         sgAprsh->ChangeItem(ItemStr,sgAprsh->Row);
         break;
       case 2: // Delete
         sgAprsh->RemoveItem(sgAprsh->Row);
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::GetDataFromComObject(int Section)
{
   if (Section==1)
   {
      seAprshCode->Text   = GetHeadValue("AprshCode");
      deAprshDate->Text   = GetHeadValue("AprshDate");
      scAprshDocType->LocateKey(GetHeadValue("AprshDocType"));
      scAprshDocType->Text   = scAprshDocType->ItemData[0];
      seAprshDocCode->Text   = GetHeadValue("AprshDocCode");
      lbAprshUser->Caption   = GetHeadValue("AprshUser");
      chkAprshCheck->Checked = (GetHeadValue("AprshCheck")=="1"?true:false);
      if(chkAprshCheck->Checked)
        SetCheckToolbarStatus(true);
      else
        SetCheckToolbarStatus(false);
      lbAprshChecker->Caption = GetHeadValue("AprshChecker");
      lbAprshCheckDate->Caption= GetHeadValue("AprshCheckDate");
      memAprshDesc->Text   = GetHeadValue("AprshDesc");
      lbAprshSysDate->Caption   = GetHeadValue("AprshSysDate");
   }
   else
   {
      seAprsdLine->Text   = GetDetailValue("AprsdLine");
      seAprsdCavCode->Text   = GetDetailValue("AprsdCavCode");
      seAprsdCavLine->Text   = GetDetailValue("AprsdCavLine");
      seAprsdConv->Text   = GetDetailValue("AprsdConv");
      seAprsdRAmt->Text   = GetDetailValue("AprsdRAmt");
      seAprsdCAmt->Text   = GetDetailValue("AprsdCAmt");
      memAprsdDesc->Text   = GetDetailValue("AprsdDesc");
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::SendDataToComObject(int Section)
{
    if (Section==1)  // Head
   {
      SetHeadValue("AprshCode",seAprshCode->Text);
      SetHeadValue("AprshDate",deAprshDate->Text);
      SetHeadValue("AprshDocType",scAprshDocType->ItemData[1]);
      SetHeadValue("AprshDocCode",seAprshDocCode->Text);
      SetHeadValue("AprshUser",lbAprshUser->Caption);
      SetHeadValue("AprshDesc",memAprshDesc->Text);
   }
   else
   {
      SetDetailValue("AprsdCode",seAprshCode->Text);
      SetDetailValue("AprsdLine",seAprsdLine->Text);
      SetDetailValue("AprsdCavCode",seAprsdCavCode->Text);
      SetDetailValue("AprsdCavLine",seAprsdCavLine->Text);
      SetDetailValue("AprsdConv",seAprsdConv->Text);
      SetDetailValue("AprsdRAmt",seAprsdRAmt->Text);
      SetDetailValue("AprsdCAmt",seAprsdCAmt->Text);
      SetDetailValue("AprsdDesc",memAprsdDesc->Text);
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::WaitUserInput(int Section)
{
   if (Section ==1)
   {
     if(CurrentState==caAddHead)
        seAprshCode->SetFocus();
   }
   else
   {
     sgAprsh->Visible=false;
     fpAprshDetail->Visible=true;
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::DisplayBill()
{
    if(comServer->RecordCount==0)
       return;
    GetDataFromComObject(1);  // Head
    FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::GetBill(AnsiString BillID)
{
    int iRow;
    comServer->Find("AprshCode='"+BillID+"'");
    if (iRow>0)      //FIND THIS BILL
    {
       DisplayBill();
    }
    else if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
    {
      AddHeadRecord();
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::FillGridWithData()
{
    sgAprsh->RowCount=1;
    if(comServer->RecordCount > 0)
      for (int i=0;i<comServer->ItemCount;i++)
      {
        comServer->LocateItemByIndex(i);
        RefreshGridData(0); // Append
      }
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::ChangeToBrowseState(bool Browse)
{
     sgAprsh->Visible=true;
     fpAprshDetail->Visible=false;
     if(Browse==false)
      sgAprsh->SetFocus();
}
//---------------------------------------------------------------------------

void __fastcall TfrmAprsh::sgAprshDblClick(TObject *Sender)
{
    int iRow;
    iRow=sgAprsh->Row;
    if (iRow == 0)
    {
       return;
    }
    comServer->LocateItemByKey(seAprshCode->Text+"\t"+sgAprsh->TextMatrix[iRow][1]+"\t");
    if (comServer->ItemCount>0)
    {
       GetDataFromComObject(2);   // Detail
       sgAprsh->Visible=false;
       fpAprshDetail->Visible=true;
    }

}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::sgAprshSelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
    if (ARow > 0)
      comServer->LocateItemByKey(seAprshCode->Text+"\t"+sgAprsh->TextMatrix[ARow][1]+"\t");
    if (!comServer->Eof)
       GetDataFromComObject(2);    // Detail

}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::btnOKClick(TObject *Sender)
{
   try
   {
    if (CurrentState==caAddDetail||CurrentState==caAddBill)
    {
       if(DetailState==caAddDetail)
         comServer->AddItem();
       SendDataToComObject(2);
       comServer->AddToObject();
       ClearControl(2,false);
       seAprsdLine->SetFocus();
    }
    else
      ChangeToBrowseState();
   }
   catch(Exception &e)
   {
     throw Exception(e.Message);
   }

}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::btnCancelClick(TObject *Sender)
{
     CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::FormShow(TObject *Sender)
{
    ClearControl(1,false); // Head
    ClearControl(2,false); // Detail
    MoveToFirst();
    ChangeToBrowseState();
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::seAprshDocCodeButtonClick(TObject *Sender)
{
    AnsiString SqlStr;
    TfrmWnQuery *p;
    try
    {
        StartWaitForm("正在查询,请稍候...");
        if(scAprshDocType->ItemData[1]=="1")
        {
         SqlStr="005[退款单号][供应商][币种][金额][付款单号]";
         SqlStr+=" select BkpbCode,bkpbSupply,BkpbCurrency,BkpbAmt,BkpbAppb from sdBkpb ";
         SqlStr+=" where Bkpbcheck=1  order by BkpbCode";
         p=new TfrmWnQuery(this,"退款单查询",SqlStr);
        }
        if(scAprshDocType->ItemData[1]=="2")
        {
         SqlStr="005[红字应付单号][供应商][币种][金额][原单号]";
         SqlStr+=" select ApobCode,ApobSupply,ApobCurrency,ApobAmt,ApobOCode from sdApob ";
         SqlStr+=" where Apobcheck=1 and APobRed=-1 order by ApobCode";
         p=new TfrmWnQuery(this,"红字应付单查询",SqlStr);
         }
        if(scAprshDocType->ItemData[1]=="3")
        {
         SqlStr="004[退回票据号][日期][供应商][金额]";
         SqlStr+=" select NpinCode,NpinDate,NpinSupply,NpinAmt from sdNpin";
         SqlStr+=" order by npinCode";
         p=new TfrmWnQuery(this,"退回票据查询",SqlStr);
         }
     }
     __finally
     {
       EndWaitForm();
     }
     if(p->ShowModal()==mrOk)
     {
      seAprshDocCode->Text=p->ColData[1];
      m_Amt=p->ColData[4];
      m_OldCode=p->ColData[5];
     }
     delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::GenrateBill()
{
    int TempCount;
    TempCount = comServer->ItemCount;
    StartWaitForm("正在启动生成界面");
    TfrmAprsd *p=new TfrmAprsd(this);

      p->GetComObject(comServer);
      EndWaitForm();
      p->ShowModal();
      if (TempCount < comServer->ItemCount)
        TGenBaseForm::SaveRecord();
      else
        CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::seAprsdRAmtKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    if(Key==13 )
    {
     AnsiString Temp1,Temp2;
     Temp1=seAprsdRAmt->Text;
     if(Temp1.IsEmpty())
       return;
     Temp2=seAprsdCAmt->Text;
     if(Temp2.IsEmpty())
       return;
     seAprsdConv->Text=AnsiString(Temp1.ToDouble()/Temp2.ToDouble());

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

void __fastcall TfrmAprsh::seAprsdCAmtKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    if(Key==13 )
    {
     AnsiString Temp1,Temp2;
     Temp1=seAprsdRAmt->Text;
     if(Temp1.IsEmpty())
       return;
     Temp2=seAprsdCAmt->Text;
     if(Temp2.IsEmpty())
       return;
     seAprsdConv->Text=AnsiString(Temp1.ToDouble()/Temp2.ToDouble());
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmAprsh::seAprshCodeExit(TObject *Sender)
{
    if(CurrentState==caNormal&&seAprshCode->Text!=GetHeadValue("AprshCode"))
    {
      comServer->LocateByKey(seAprshCode->Text);
      DisplayBill();
    }
}
//---------------------------------------------------------------------------
bool __fastcall TfrmAprsh::BeforeCheck()
{
  SetHeadValue("AprshCheck",1);
  SetHeadValue("AprshChecker",g_sdUserCode);
  SetHeadValue("AprshCheckDate",g_sdCurDate);
  return true;
}
//---------------------------------------------------------------------------
bool __fastcall TfrmAprsh::BeforeUnCheck()
{
  SetHeadValue("AprshCheck",0);
  SetHeadValue("AprshChecker","");
  SetHeadValue("AprshCheckDate",NULL);
  return true;
}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

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