sexch.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 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 + -
显示快捷键?