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 + -
显示快捷键?