srewh.cpp

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

CPP
675
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Srewh.h"
#include "Srewd.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"

TfrmSrewh *frmSrewh;
//---------------------------------------------------------------------------
__fastcall TfrmSrewh::TfrmSrewh(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
        : TGenBaseForm(Owner,chWnd,MidCode,WhereStr)
{
	  SetAutoCodeString(seSrewhCode,"Acm-016");      
}
//---------------------------------------------------------------------------
void __fastcall TfrmSrewh::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, sgSrewd,sgSrewd->Name);
    ClientGroup->AddComponent(1,false,true,true,seSrewhClient,seSrewhClient->Name);
    ClientGroup->AddComponent(1,false,true,false,seSrewhCode,seSrewhCode->Name);
    ClientGroup->AddComponent(1,true,true,true,scSrewhFmonth,scSrewhFmonth->Name);
    ClientGroup->AddComponent(1,false,false,true,seSrewhCurrency,seSrewhCurrency->Name);
    ClientGroup->AddComponent(1,false,false,true,seSrewhEnrate,seSrewhEnrate->Name);

    ClientGroup->AddComponent(2,false,false,true, FloatPanel2,FloatPanel2->Name);
    ClientGroup->AddComponent(2,false,true,true, seSrewdSretCode,seSrewdSretCode->Name);
    ClientGroup->AddComponent(2,true,true,true,seSrewdSretdLine,seSrewdSretdLine->Name);
    ClientGroup->AddComponent(2,true,true,true,seSrewdGoods,seSrewdGoods->Name);
    ClientGroup->AddComponent(2,true,true,true,seSrewdGoodsName,seSrewdGoodsName->Name);
    ClientGroup->AddComponent(2,true,true,true,seSrewdUnit,seSrewdUnit->Name);
    ClientGroup->AddComponent(2,true,true,true,seSrewdConv,seSrewdConv->Name);
    ClientGroup->AddComponent(2,true,true,true,seSrewdAmt,seSrewdAmt->Name);
    ClientGroup->AddComponent(2,true,true,true,seSrewdBatch,seSrewdBatch->Name);
    ClientGroup->AddComponent(2,true,true,true,seSrewdLoc,seSrewdLoc->Name);
    ClientGroup->AddComponent(2,true,true,true,scSrewdState,scSrewdState->Name);
    ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
    ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);

    //Srewh
    FillComboBox(Handle,scSrewhFmonth,"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,seSrewhCurrency,sSql,"CurrencyName","CurrencyCode","CurrencyRate","CurrencyLocal");
    FillEdit(Query,seSrewhClient,"SELECT ClientCode,ClientName FROM sdClient where ClientCancel=0","ClientName","ClientCode");
    FillComboBox(Handle,scSrewhRr,"SELECT SrewRrCode FROM sdSrewRr","SrewRrCode");
    FillEdit(Query,seSrewhUser,"select UserName,UserCode from sdUser  order by usercode","UserName","UserCode");
    FillEdit(Query,seSrewhChecker,"select UserName,UserCode from sdUser  order by usercode","UserName","UserCode");
    //Srewd
    FillEdit(Query,seSrewdUnit,"SELECT UnitCode,UnitName FROM sdUnit","UnitName","UnitCode");
    FillEdit(Query,seSrewdLoc,"SELECT LocCode,LocName FROM sdLoc","Locname","LocCode");
    FillEdit(Query,seSrewdBatch,"SELECT BatchCode,BatchDesc FROM sdBatch where BatchEffectDate<='"+g_sdCurDate+"' and (BatchAbateDate>='"+g_sdCurDate+"' or BatchAbateDate='') ","BatchDesc","BatchCode");
    scSrewdState->ClearAll();
    scSrewdState->AddItems("预备","1");
    scSrewdState->AddItems("确认","2");
    scSrewdState->AddItems("待下达","3");
    scSrewdState->AddItems("已下达","4");
    scSrewdState->AddItems("已完成","5");

}
//---------------------------------------------------------------------------
void __fastcall TfrmSrewh::ClearControl(int Section,bool BringToNext)
{
    if (Section == 1)
    {
       if (! BringToNext)
       {
         seSrewhCode->Text        ="";
         deSrewhDate->Text        =g_sdCurDate;
		 seSrewhClient->ItemIndex      =1;
		 seSrewhCurrency->ItemIndex    =1;
		 seSrewhDesc->Text       ="";
		 cheSrewhCheck->Checked   =false;
		 seSrewhChecker->ItemIndex  =1;
		 cheSrewhCancel->Checked  =false;
		 seSrewhUser->LocateKey(g_sdUserCode);
		 seSrewhEnrate->Text      ="1";
		 scSrewhFmonth->Text      =g_sdSMonth;
		 scSrewhRr->Text          ="";
		 lbSrewhSysDate->Caption="";
	   }
	   sgSrewd->RowCount=1;
	}
	else if (Section==2)
	{
		if (!BringToNext)
		{
		  seSrewdLine->Text =AnsiString(comServer->ItemCount+1);
		  seSrewdSretdLine->Text   ="";
		  seSrewdSretCode->Text   ="";
		  seSrewdGoods->Text       ="";
		  seSrewdGoodsName->Text   ="";
		  seSrewdUnit->ItemIndex   =1;
		  seSrewdConv->Text        ="1";
		  seSrewdQty->Text         ="0";
		  seSrewdExes->Text        ="0.00";
		  scSrewdState->ItemIndex  =0;
		  seSrewdBatch->ItemIndex  =1;
		  memSrewdDesc->Text       ="";
		  seSrewdLoc->ItemIndex    =1;
		  seSrewdAmt->Text         ="0.00";
		  seSrewdPrice->Text       ="0";
		}
	}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSrewh::GetDataFromComObject(int Section)
{
	  if (Section==1)
	  {
		seSrewhCode->Text      =GetHeadValue("SrewhCode");
		deSrewhDate->Text      =GetHeadValue("SrewhDate");
		seSrewhClient->LocateKey(GetHeadValue("SrewhClient"));
		seSrewhCurrency->LocateKey(GetHeadValue("SrewhCurrency"));
		if(seSrewhCurrency->ItemData[cbItem4]=="1")
		  seSrewhEnrate->Enabled=false;
		seSrewhDesc->Text      =GetHeadValue("SrewhDesc");
		cheSrewhCheck->Checked =GetHeadValue("SrewhCheck")=="1";
		seSrewhChecker->Text=GetHeadValue("SrewhChecker");
		cheSrewhCancel->Checked=GetHeadValue("SrewhCancel")=="1";
		seSrewhUser->Text=GetHeadValue("SrewhUser");
		seSrewhEnrate->Text    =GetHeadValue("SrewhEnrate");
		scSrewhFmonth->Text    =GetHeadValue("SrewhFmonth");
		scSrewhRr->Text        =GetHeadValue("SrewhRr");
		lbSrewhSysDate->Caption=GetHeadValue("SrewhSysDate");
		SetCheckToolbarStatus(cheSrewhCheck->Checked);
		SetCancelToolbarStatus(cheSrewhCancel->Checked);
	  }
	  else
	  {
		seSrewdLine->Text      =GetDetailValue("SrewdLine");
		seSrewdSretCode->Text  =GetDetailValue("SrewdSretCode");
		seSrewdSretdLine->Text =GetDetailValue("SrewdSretdLine");
		seSrewdGoods->Text     =GetDetailValue("SrewdGoods");
		if(InitRsGoods(seSrewdGoods->Text)){
		  seSrewdGoodsName->Text = GetGoodsValue(gtInitRs,"GoodsName");
		  seSrewdGoodsName->Text = "" ;// GetGoodsValue(gtInitRs,"CoodsSpec");
		}
		seSrewdUnit->LocateKey(GetDetailValue("SrewdUnit"));
		seSrewdConv->Text      =GetDetailValue("SrewdConv");
		seSrewdQty->Text       =GetDetailValue("SrewdQty");
		seSrewdPrice->Text     =GetDetailValue("SrewdPrice");
		seSrewdAmt->Text       =GetDetailValue("SrewdAmt");
		seSrewdExes->Text      =GetDetailValue("SrewdExes");
		scSrewdState->LocateKey(GetDetailValue("SrewdState"));
		seSrewdBatch->LocateKey(GetDetailValue("SrewdBatch"));
		memSrewdDesc->Text     =GetDetailValue("SrewdDesc");
		seSrewdLoc->LocateKey(GetDetailValue("SrewdLoc"));
	  }
}
//---------------------------------------------------------------------------

void __fastcall TfrmSrewh::SendDataToComObject(int Section)
{
	   AnsiString s;
		if (Section==1)
		{
			if ( seSrewhCode->Text.IsEmpty() )
			  throw Exception("返修单号不能为空!");
			if ( deSrewhDate->Text.IsEmpty())
			  throw Exception("反修日期不能为空!");
			if ( scSrewhFmonth->Text.IsEmpty())
			  throw Exception("财务月份不能为空!");
			if ( seSrewhClient->ItemData[cbItem2]=="" )
			  throw Exception("客户不能为空!");
			if ( seSrewhCurrency->ItemData[cbItem2]=="" )
			   throw Exception("币种不能为空!");

			SetHeadValue("SrewhCode",        seSrewhCode->Text       );
			SetHeadValue("SrewhDate",        deSrewhDate->Text);
			SetHeadValue("SrewhClient",      seSrewhClient->ItemData[cbItem2]     );
			SetHeadValue("SrewhCurrency",    seSrewhCurrency->ItemData[cbItem2]   );
			SetHeadValue("SrewhDesc",        seSrewhDesc->Text      );
			SetHeadValue("SrewhUser",        g_sdUserCode/*scSrewhUser->Text*/);
			SetHeadValue("SrewhEnrate",      seSrewhEnrate->Text     );
			SetHeadValue("SrewhFmonth",      scSrewhFmonth->Text     );
			SetHeadValue("SrewhRr",          scSrewhRr->Text         );
		 }
		else
		{
//			if(seSrewdGoods->Text.IsEmpty())
//			   throw Exception("货品编码不能为空!");
			if(seSrewdUnit->ItemData[cbItem2]=="")
			   throw Exception("计量单位不能为空!");
			if(seSrewdPrice->Text.IsEmpty())
			   throw Exception("单价!");

			CalculateAmt();
			SetDetailValue("SrewdCode",		 seSrewhCode->Text);
			SetDetailValue("SrewdLine",      seSrewdLine->Text       );
			SetDetailValue("SrewdSretCode",  seSrewdSretCode->Text   );
			SetDetailValue("SrewdSretdLine", seSrewdSretdLine->Text  );
			SetDetailValue("SrewdUnit",      seSrewdUnit->ItemData[cbItem2] );
			SetDetailValue("SrewdConv",      seSrewdConv->Text       );
			SetDetailValue("SrewdGoods",     seSrewdGoods->Text      );
			SetDetailValue("SrewdGoodsName", seSrewdGoodsName->Text  );
			SetDetailValue("SrewdGoodsSpec", seSrewdGoodsSpec->Text  );
			SetDetailValue("SrewdLoc",       seSrewdLoc->ItemData[cbItem2]);
			SetDetailValue("SrewdQty",       seSrewdQty->Text        );
			SetDetailValue("SrewdPrice",     seSrewdPrice->Text      );
			SetDetailValue("SrewdAmt",       seSrewdAmt->Text        );
			SetDetailValue("SrewdExes",      seSrewdExes->Text       );
			SetDetailValue("SrewdBatch",     seSrewdBatch->ItemData[cbItem2]);
			SetDetailValue("SrewdDesc",      memSrewdDesc->Text      );
			SetDetailValue("SrewdState",     scSrewdState->ItemData[cbItem2]);
		}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSrewh::WaitUserInput(int Section)
{
	   if (Section ==1)
	   {
//        FloatPanel1->Enabled=true;
	   if(seSrewhCode->Enabled)
		  seSrewhCode->SetFocus();
		}
	   else
	   {
//          FloatPanel1->Enabled=false;
		  sgSrewd->Visible=false;
		  sgSrewd->Align=alNone;
		  FloatPanel2->Visible=true;
		  FloatPanel2->Align=alClient;
		  if(seSrewdLine->Enabled)
			seSrewdLine->SetFocus();
	   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmSrewh::RefreshGridData(int mAction)
{
		AnsiString ItemStr;
			  ItemStr="\t"+GetDetailValue("SrewdLine")+"\t"+GetDetailValue("SrewdSretCode")+"\t"+
				  GetDetailValue("SrewdSretdLine")+"\t"+GetDetailValue("SrewdGoods")+"\t"+
				  GetDetailValue("SrewdGoodsName")+"\t"+GetDetailValue("SrewdGoodsSpec")+"\t"+
				  GetDetailValue("SrewdUnit")+"\t"+GetDetailValue("SrewdQty")+"\t"+
				  GetDetailValue("SrewdAmt")+"\t"+GetDetailValue("SrewdExes");
		switch(mAction)
		{
		   case 0:
			  sgSrewd->AddItem(ItemStr);
			  break;
		   case 1:
			   sgSrewd->ChangeItem(ItemStr,sgSrewd->Row);
				 break;
		   case 2:
				sgSrewd->RemoveItem(sgSrewd->Row);
		}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSrewh::DisplayBill()
{

	   if(comServer->RecordCount<1)
		 return;
	   GetDataFromComObject(1);
	   ChangeToBrowseState(true);
	   FillGridWithData();
/*       if (sgSrewd->RowCount >1)
		{
		   AnsiString Keystr;
		   Keystr=sgSrewd->Cells[1][sgSrewd->Row];
		   comServer->LocateItemByKey(WideString(Keystr));
		   GetDataFromComObject(2);
		}*/
}
//---------------------------------------------------------------------------

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

void __fastcall TfrmSrewh::sgSrewdDblClick(TObject *Sender)
{
	  int iRow;
	  iRow=sgSrewd->Row;
	  if (iRow == 0)
		 return;
	GetDataFromComObject(2);

	  sgSrewd->Visible=false;
	  sgSrewd->Align=alNone;
	  FloatPanel2->Visible=true;
	  FloatPanel2->Align=alClient;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSrewh::ChangeToBrowseState(bool Browse)
{
       FloatPanel2->Visible=false;
       FloatPanel2->Align =alNone;
       sgSrewd->Visible=true;
       sgSrewd->Align=alClient;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSrewh::btnOKClick(TObject *Sender)
{

⌨️ 快捷键说明

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