sexch.~cpp

来自「一个以前收集的基于C/S架构的ERP客户端源代码」· ~CPP 代码 · 共 720 行 · 第 1/2 页

~CPP
720
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Sexch.h"
#include "Sexcd.h"
#include "KSSaleFuc.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"

TfrmSexch *frmSexch;
//---------------------------------------------------------------------------
__fastcall TfrmSexch::TfrmSexch(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
        : TGenBaseForm(Owner,chWnd,MidCode,WhereStr)
{
	  SetAutoCodeString(seSexchCode,"Acm-042");
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::InitEditControl()
{
    ClientGroup->AddComponent(1,true,true,true, FloatPanel3,FloatPanel3->Name);
    ClientGroup->AddComponent(1,false,false,true, FloatPanel1,FloatPanel1->Name);
    ClientGroup->AddComponent(1,true,true,false, sgSexcd,sgSexcd->Name);
    ClientGroup->AddComponent(1,false,true,true,seSexchClient,seSexchClient->Name);
    ClientGroup->AddComponent(1,false,true,false,seSexchCode,seSexchCode->Name);
    ClientGroup->AddComponent(1,true,true,true,scSexchFmonth,scSexchFmonth->Name);
    ClientGroup->AddComponent(1,false,false,true,seSexchCurrency,seSexchCurrency->Name);
    ClientGroup->AddComponent(1,false,false,true,seSexchEnrate,seSexchEnrate->Name);

    ClientGroup->AddComponent(2,false,false,true, FloatPanel2,FloatPanel2->Name);
    ClientGroup->AddComponent(2,false,true,true, seSexcdSretCode,seSexcdSretCode->Name);
    ClientGroup->AddComponent(2,true,true,true,seSexcdSretdLine,seSexcdSretdLine->Name);
    ClientGroup->AddComponent(2,true,true,true,seSexcdGoods,seSexcdGoods->Name);
    ClientGroup->AddComponent(2,true,true,true,seSexcdGoodsName,seSexcdGoodsName->Name);
    ClientGroup->AddComponent(2,true,true,true,seSexcdUnit,seSexcdUnit->Name);
    ClientGroup->AddComponent(2,true,true,true,seSexcdConv,seSexcdConv->Name);
    ClientGroup->AddComponent(2,true,true,true,seSexcdAmt,seSexcdAmt->Name);
    ClientGroup->AddComponent(2,true,true,true,seSexcdBatch,seSexcdBatch->Name);
    ClientGroup->AddComponent(2,false,true,true,seSexcdLoc,seSexcdLoc->Name);
    ClientGroup->AddComponent(2,true,true,true,scSexcdState,scSexcdState->Name);
    ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
    ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);

    //Sexch
    FillComboBox(Handle,scSexchFmonth,"SELECT FcMonth FROM sdFc","FcMonth");
    AnsiString sSql;
    sSql =AnsiString("select currencycode,currencyname,currencyrate=coalesce(rateratio,1),currencylocal from sdcurrency,sdrate");
    sSql+=" where currencycode*=ratecurrency and ";
    sSql+=" ratefmonth='"+g_sdSMonth+"'";
    FillEdit(Query,seSexchCurrency,sSql,"CurrencyName","CurrencyCode","CurrencyRate","CurrencyLocal");
	FillEdit(Query,seSexchClient,"SELECT ClientCode,ClientName FROM sdClient where ClientCancel=0","ClientName","ClientCode");
	FillComboBox(Handle,scSexchRr,"SELECT SexcRrCode FROM sdSexcRr","SexcRrCode");
//    FillEdit(Query,seSexchUser,"select UserName,UserCode from sdUser  order by usercode","UserName","UserCode");
//    FillEdit(Query,seSexchChecker,"select UserName,UserCode from sdUser  order by usercode","UserName","UserCode");
    //Sexcd
    FillEdit(Query,seSexcdUnit,"SELECT UnitCode,UnitName FROM sdUnit","UnitName","UnitCode");
    FillEdit(Query,seSexcdLoc,"SELECT LocCode,LocName FROM sdLoc","Locname","LocCode");
    FillEdit(Query,seSexcdBatch,"SELECT BatchCode,BatchDesc FROM sdBatch","BatchDesc","BatchCode");
    scSexcdState->ClearAll();
    scSexcdState->AddItems("预备","1");
    scSexcdState->AddItems("确认","2");
    scSexcdState->AddItems("待下达","3");
	scSexcdState->AddItems("已下达","4");
    scSexcdState->AddItems("已完成","5");

}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::ClearControl(int Section,bool BringToNext)
{
    if (Section == 1)
    {
       if (! BringToNext)
       {
         seSexchCode->Text        ="";
         deSexchDate->Text        =g_sdCurDate;
         seSexchClient->ItemIndex      =-1;
         seSexchCurrency->ItemIndex    =-1;
         seSexchDesc->Text       ="";
         cheSexchCheck->Checked   =false;
         seSexchChecker->ItemIndex  =-1;
         cheSexchCancel->Checked  =false;
         seSexchUser->LocateKey(g_sdUserCode);
         seSexchEnrate->Text      ="1";
         scSexchFmonth->Text      =g_sdSMonth;
         scSexchRr->Text          ="";
         lbSexchSysDate->Caption="";
       }
       sgSexcd->RowCount=1;
    }
    else if (Section==2)
    {
        if (!BringToNext)
        {
          seSexcdLine->Text=AnsiString(comServer->ItemCount+1);
          seSexcdSretdLine->Text   ="";
          seSexcdSretCode->Text   ="";
          seSexcdGoods->Text       ="";
          seSexcdGoodsName->Text   ="";
          seSexcdUnit->ItemIndex   =-1;
          seSexcdConv->Text        ="1";
          seSexcdQty->Text         ="0";
          seSexcdExes->Text        ="0.00";
          scSexcdState->ItemIndex  =0;
          seSexcdBatch->ItemIndex  =-1;
          memSexcdDesc->Text       ="";
          seSexcdLoc->ItemIndex    =-1;
          seSexcdAmt->Text         ="0.00";
          seSexcdPrice->Text       ="0";
        }
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::GetDataFromComObject(int Section)
{
      if (Section==1)
      {
        seSexchCode->Text      =GetHeadValue("SexchCode");
        deSexchDate->Text      =GetHeadValue("SexchDate");
        seSexchClient->LocateKey(GetHeadValue("SexchClient"));
        seSexchCurrency->LocateKey(GetHeadValue("SexchCurrency"));
        if(seSexchCurrency->ItemData[cbItem4]=="1")
          seSexchEnrate->Enabled=false;
        seSexchDesc->Text     =GetHeadValue("SexchDesc");
        cheSexchCheck->Checked =GetHeadValue("SexchCheck")=="1";
        seSexchChecker->Text=GetHeadValue("SexchChecker");
        cheSexchCancel->Checked=GetHeadValue("SexchCancel")=="1";
        seSexchUser->Text=GetHeadValue("SexchUser");
        seSexchEnrate->Text    =GetHeadValue("SexchEnrate");
        scSexchFmonth->Text    =GetHeadValue("SexchFmonth");
        scSexchRr->Text        =GetHeadValue("SexchRr");
        lbSexchSysDate->Caption=GetHeadValue("SexchSysDate");
        SetCheckToolbarStatus(cheSexchCheck->Checked);
        SetCancelToolbarStatus(cheSexchCancel->Checked);
      }
      else
      {
        seSexcdLine->Text      =GetDetailValue("SexcdLine");
        seSexcdSretCode->Text  =GetDetailValue("SexcdSretCode");
        seSexcdSretdLine->Text =GetDetailValue("SexcdSretdLine");
        seSexcdGoods->Text     =GetDetailValue("SexcdGoods");
		if(InitRsGoods(seSexcdGoods->Text)){
			seSexcdGoodsName->Text =GetGoodsValue(gtInitRs,"GoodsName");
			seSexcdGoodsSpec->Text = GetGoodsValue(gtInitRs,"GoodsSpec");
		}
        seSexcdUnit->LocateKey(GetDetailValue("SexcdUnit"));
        seSexcdConv->Text      =GetDetailValue("SexcdConv");
        seSexcdQty->Text       =GetDetailValue("SexcdQty");
        seSexcdPrice->Text     =GetDetailValue("SexcdPrice");
        seSexcdAmt->Text       =GetDetailValue("SexcdAmt");
        seSexcdExes->Text      =GetDetailValue("SexcdExes");
        scSexcdState->LocateKey(GetDetailValue("SexcdState"));
        seSexcdBatch->LocateKey(GetDetailValue("SexcdBatch"));
        memSexcdDesc->Text     =GetDetailValue("SexcdDesc");
        seSexcdLoc->LocateKey(GetDetailValue("SexcdLoc"));
	  }
}
//---------------------------------------------------------------------------

void __fastcall TfrmSexch::SendDataToComObject(int Section)
{
       AnsiString s;
        if (Section==1)
		{
			if ( seSexchCode->Text.IsEmpty() )
			  throw Exception("换货单号不能为空!");
			if (deSexchDate->Text.IsEmpty() )
			  throw Exception("换货换货日期不能为空!");
			if ( scSexchFmonth->Text.IsEmpty())
			  throw Exception("财务月份不能为空!");
			if ( seSexchClient->ItemData[cbItem2]=="" )
			  throw Exception("客户不能为空!");
			if ( seSexchCurrency->ItemData[cbItem2]=="" )
			   throw Exception("币种不能为空!");

		
			SetHeadValue("SexchCode",        seSexchCode->Text       );
			SetHeadValue("SexchDate",        deSexchDate->Text);
			SetHeadValue("SexchClient",      seSexchClient->ItemData[1]     );
            SetHeadValue("SexchCurrency",    seSexchCurrency->ItemData[1]   );
            SetHeadValue("SexchDesc",        seSexchDesc->Text      );
            SetHeadValue("SexchUser",        g_sdUserCode/*scSexchUser->Text*/);
            SetHeadValue("SexchEnrate",      seSexchEnrate->Text     );
            SetHeadValue("SexchFmonth",      scSexchFmonth->Text     );
            SetHeadValue("SexchRr",          scSexchRr->Text         );
         }
        else
		{
//			if(seSexcdGoods->Text.IsEmpty())
//			   throw Exception("物料编码不能为空!");
			if(seSexcdUnit->ItemData[cbItem2]=="")
			   throw Exception("计量单位不能为空!");
			if(seSexcdPrice->Text.IsEmpty())
			   throw Exception("换货单价不能为空!");

            CalculateAmt();
            SetDetailValue("SexcdCode",seSexchCode->Text);
			SetDetailValue("SexcdLine",      seSexcdLine->Text       );
            SetDetailValue("SexcdSretCode",  seSexcdSretCode->Text   );
            SetDetailValue("SexcdSretdLine", seSexcdSretdLine->Text  );
            SetDetailValue("SexcdUnit",      seSexcdUnit->ItemData[cbItem2] );
            SetDetailValue("SexcdConv",      seSexcdConv->Text       );
            SetDetailValue("SexcdGoods",     seSexcdGoods->Text      );
            SetDetailValue("SexcdGoodsName", seSexcdGoodsName->Text  );
            SetDetailValue("SexcdGoodsSpec", seSexcdGoodsSpec->Text  );
            SetDetailValue("SexcdLoc",       seSexcdLoc->ItemData[cbItem2]);
            SetDetailValue("SexcdQty",       seSexcdQty->Text        );
            SetDetailValue("SexcdPrice",     seSexcdPrice->Text      );
            SetDetailValue("SexcdAmt",       seSexcdAmt->Text        );
            SetDetailValue("SexcdExes",      seSexcdExes->Text       );
            SetDetailValue("SexcdBatch",     seSexcdBatch->ItemData[cbItem2]);
            SetDetailValue("SexcdState",     scSexcdState->ItemData[cbItem2]);
            SetDetailValue("SexcdDesc",      memSexcdDesc->Text      );
        }
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::WaitUserInput(int Section)
{
       if (Section ==1)
       {
//        FloatPanel1->Enabled=true;
       if(seSexchCode->Enabled)
          seSexchCode->SetFocus();
        }
       else
       {
//          FloatPanel1->Enabled=false;
          sgSexcd->Visible=false;
          sgSexcd->Align=alNone;
          FloatPanel2->Visible=true;
          FloatPanel2->Align=alClient;
          if(seSexcdLine->Enabled)
            seSexcdLine->SetFocus();
       }
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::RefreshGridData(int mAction)
{
        AnsiString ItemStr;
        switch(mAction)
        {
           case 0:
              ItemStr="\t"+GetDetailValue("SexcdLine")+"\t"+GetDetailValue("SexcdSretCode")+"\t"+
                  GetDetailValue("SexcdSretdLine")+"\t"+GetDetailValue("SexcdGoods")+"\t"+
          		  GetDetailValue("SexcdGoodsName")+"\t"+GetDetailValue("SexcdGoodsSpec")+"\t"+
                  GetDetailValue("SexcdUnit")+"\t"+GetDetailValue("SexcdQty")+"\t"+
                  GetDetailValue("SexcdAmt")+"\t"+GetDetailValue("SexcdExes");
              sgSexcd->AddItem(ItemStr);
              break;
           case 1:
              ItemStr="\t"+GetDetailValue("SexcdLine")+"\t"+GetDetailValue("SexcdSretCode")+"\t"+
                  GetDetailValue("SexcdSretdLine")+"\t"+GetDetailValue("SexcdGoods")+"\t"+
          		  GetDetailValue("SexcdGoodsName")+"\t"+GetDetailValue("SexcdGoodsSpec")+"\t"+
                  GetDetailValue("SexcdUnit")+"\t"+GetDetailValue("SexcdQty")+"\t"+
                  GetDetailValue("SexcdExes")+"\t"+GetDetailValue("SexcdExes");
                  sgSexcd->ChangeItem(ItemStr,sgSexcd->Row);
                 break;
           case 2:
                sgSexcd->RemoveItem(sgSexcd->Row);
        }
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::DisplayBill()
{

       if(comServer->RecordCount<1)
         return;
       GetDataFromComObject(1);
       ChangeToBrowseState(true);
       FillGridWithData();
}
//---------------------------------------------------------------------------

void __fastcall TfrmSexch::GetBill(AnsiString BillID)
{
       if(comServer->Find("SexchCode='"+BillID+"'"))
       {
           DisplayBill();
       }
       else
           if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
           {
               AddHeadRecord();
           }
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::FillGridWithData()
{
      int i;
      AnsiString ItemStr;
      sgSexcd->RowCount=1;
      for (i=0;i<comServer->ItemCount;i++)
      {
          comServer->LocateItemByIndex(i);
          RefreshGridData(0);
      }
      comServer->LocateItemByIndex(0);
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::FormShow(TObject *Sender)
{
       ClearControl(1,false);
       ClearControl(2,false);
       TGenBaseForm::MoveToFirst();
       ChangeToBrowseState(true);
}
//---------------------------------------------------------------------------

void __fastcall TfrmSexch::sgSexcdDblClick(TObject *Sender)
{
	  int iRow;
	  iRow=sgSexcd->Row;
	  if (iRow == 0)
		 return;
	GetDataFromComObject(2);

	  sgSexcd->Visible=false;
      sgSexcd->Align=alNone;
      FloatPanel2->Visible=true;
      FloatPanel2->Align=alClient;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::ChangeToBrowseState(bool Browse)
{
       FloatPanel2->Visible=false;
       FloatPanel2->Align =alNone;
       sgSexcd->Visible=true;
       sgSexcd->Align=alClient;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::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 TfrmSexch::btnCancelClick(TObject *Sender)
{
        CancelChange();

⌨️ 快捷键说明

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