sreth.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 1,045 行 · 第 1/3 页
CPP
1,045 行
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Sreth.h"
#include "Sretd.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"
TfrmSreth *frmSreth;
//---------------------------------------------------------------------------
__fastcall TfrmSreth::TfrmSreth(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TGenBaseForm(Owner,chWnd,MidCode,WhereStr)
{
SetAutoCodeString(seSrethCode,"Acm-015");
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::InitEditControl()
{
ClientGroup->AddComponent(1,false,false,true, FloatPanel1,FloatPanel1->Name);
ClientGroup->AddComponent(1,true,true,true, FloatPanel3,FloatPanel3->Name);
ClientGroup->AddComponent(1,true,true,false, sgSretd,sgSretd->Name);
ClientGroup->AddComponent(1,false,true,false,seSrethCode,seSrethCode->Name);
ClientGroup->AddComponent(1,false,true,true,scSrethType,scSrethType->Name);
ClientGroup->AddComponent(1,true,true,true,scSrethFmonth,scSrethFmonth->Name);
ClientGroup->AddComponent(1,false,true,true,seSrethClient,seSrethClient->Name);
ClientGroup->AddComponent(1,false,true,true, scSrethTaxCode,scSrethTaxCode->Name);
ClientGroup->AddComponent(1,false,true,true,scSrethSaler,scSrethSaler->Name);
ClientGroup->AddComponent(2,false,false,true, FloatPanel2,FloatPanel2->Name);
ClientGroup->AddComponent(2,true,true,true,GroupBox4,GroupBox4->Name);
ClientGroup->AddComponent(2,true,true,true,seSretdSogdLine,seSretdSogdLine->Name);
ClientGroup->AddComponent(2,false,true,true,seSretdSogCode,seSretdSogCode->Name);
ClientGroup->AddComponent(2,true,true,true, seSretdGoodsName,seSretdGoodsName->Name);
ClientGroup->AddComponent(2,true,true,true,seSretdConv,seSretdConv->Name);
ClientGroup->AddComponent(2,true,true,true,seSretdAmt,seSretdAmt->Name);
ClientGroup->AddComponent(2,true,true,true,seSretdTaxAmt,seSretdTaxAmt->Name);
ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);
DynamicSetControlState();
//Sreth
FillComboBox(Handle,scSrethTaxCode,"SELECT TaxCode,TaxName,TaxRate FROM sdTax","TaxName","TaxCode","TaxRate");
FillComboBox(Handle,scSrethFmonth,"SELECT FcMonth FROM sdFc","FcMonth");
FillComboBox(Handle,scSrethPosType,"SELECT PosTypeCode,PosTypeName FROM sdPosType where postypeflg=2 order by PosTypeCode","PosTypeName","PosTypeCode");
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,seSrethCurrency,sSql,"CurrencyName","CurrencyCode","CurrencyRate","CurrencyLocal");
FillEdit(Query,seSrethClient,"SELECT ClientCode,ClientName FROM sdClient where ClientCancel=0","ClientName","ClientCode");
FillComboBox(Handle,scSrethSettleMode,"SELECT SettleModeCode,SettleModeName FROM sdSettleMode order by settlemodename","SettleModeName","SettleModeCode");
FillComboBox(Handle,scSrethDeliver,"SELECT DeliverName,DeliverCode FROM sdDeliver order by delivername","DeliverName","DeliverCode");
FillEdit(Query,seSrethSsite,"SELECT SsiteCode,SSiteName FROM sdSsite","SsiteName","SsiteCode");
FillComboBox(Handle,scSrethTransMode,"SELECT TransModeCode,TransModeName FROM sdTransMode order by TransModeName","TransModeName","TransModeCode");
FillComboBox(Handle,scSrethRr,"SELECT SretRrCode,SretRrDesc FROM sdSretRr order by sretrrdesc","Sretrrdesc","SretRrCode");
FillComboBox(Handle,scSrethSaler,"Select Salercode,UserName As Salername from sduser,sdsaler where salercode=usercode order by username","Salername","Salercode");
// FillEdit(Query,seSrethUser,"select UserName,UserCode from sdUser order by usercode","UserName","UserCode");
// FillEdit(Query,seSrethChecker,"select UserName,UserCode from sdUser order by usercode","UserName","UserCode");
//Sretd
FillEdit(Query,seSretdUnit,"SELECT UnitCode,UnitName FROM sdUnit","UnitName","UnitCode");
FillEdit(Query,seSretdLoc,"SELECT LocCode,LocName FROM sdLoc ","LocName","LocCode");
FillEdit(Query,seSretdBatch,"SELECT BatchCode,BatchDesc FROM sdBatch ","BatchDesc","BatchCode");
scSrethType->ClearAll();
scSrethType->AddItems("据发货单退货","1");
scSrethType->AddItems("据客户退货","2");
scSretdState->ClearAll();
scSretdState->AddItems("预备","1");
scSretdState->AddItems("确认","2");
scSretdState->AddItems("待下达","3");
scSretdState->AddItems("已下达","4");
scSretdState->AddItems("已完成","5");
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::ClearControl(int Section,bool BringToNext)
{
if (Section == 1)
{
if (! BringToNext)
{
seSrethCode->Text = " ";
scSrethType->ItemIndex = 0;
DynamicSetControlState();
tbGenDetail->Enabled =true;
scSrethFmonth->Text = g_sdSMonth;
scSrethPosType->ItemIndex = -1;
deSrethDate->Text=g_sdCurDate;;
seSrethClient->ItemIndex = -1;
seSrethCurrency->ItemIndex= -1;
seSrethEnrate->Text = "1";
scSrethTaxCode->ItemIndex = -1;
scSrethSettleMode->ItemIndex = -1;
scSrethDeliver->ItemIndex = -1;
seSrethSsite->ItemIndex = -1;
scSrethTransMode->ItemIndex = -1;
seSrethUser->Text=g_sdUserCode;
cheSrethCheck->Checked = false;
seSrethChecker->Text = " ";
cheSrethClose->Checked = false;
cheSrethCancel->Checked = false;
lbSrethSysDate->Caption = " ";
scSrethRr->ItemIndex = -1;
scSrethSaler->ItemIndex = -1;
memSrethDesc->Text = " ";
}
sgSretd->RowCount=1;
}
else if (Section==2)
{
if (!BringToNext)
{
seSretdLine->Text = AnsiString(comServer->ItemCount+1);
seSretdSogCode->Text = " ";
seSretdSogdLine->Text= " ";
seSretdGoods->Text = " ";
seSretdGoodsName->Text = " ";
seSretdUnit->ItemIndex = -1;
seSretdConv->Text = "1";
seSretdQty->Text = "0";
seSretdPrice->Text = "0";
seSretdAmt->Text = "0.00";
seSretdTaxAmt->Text = "0.00";
scSretdState->ItemIndex = 1;
seSretdExes->Text = "0.00";
seSretdLoc->ItemIndex = -1;
seSretdBatch->ItemIndex = -1;
memSretdDesc->Text = " ";
cheSretdClose->Checked = false;
seSretdCloseDate->Text = "";
seSretdOQty->Text = "0";
seSretdFQty->Text = "0";
seSretdEQty->Text = "0";
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::GetDataFromComObject(int Section)
{
if (Section==1)
{
seSrethCode->Text = GetHeadValue("SrethCode");
scSrethType->LocateKey(GetHeadValue("SrethType"));
scSrethPosType->LocateKey(GetHeadValue("SrethPosType"));
DynamicSetControlState();
scSrethFmonth->Text = GetHeadValue("SrethFmonth");
deSrethDate->Text= GetHeadValue("SrethDate");
seSrethClient->LocateKey(GetHeadValue("SrethClient"));
seSrethCurrency->LocateKey(GetHeadValue("SrethCurrency"));
if(seSrethCurrency->ItemData[cbItem4]=="1")
seSrethEnrate->Enabled=false;
seSrethEnrate->Text = GetHeadValue("SrethEnrate");
scSrethTaxCode->LocateKey(GetHeadValue("SrethTaxCode"));
scSrethSettleMode->LocateKey(GetHeadValue("SrethSettleMode"));
scSrethDeliver->LocateKey(GetHeadValue("SrethDeliver"));
seSrethSsite->LocateKey(GetHeadValue("SrethSsite"));
scSrethTransMode->Text = GetHeadValue("SrethTransMode");
seSrethUser->Text=GetHeadValue("SrethUser");
scSrethSaler->LocateKey(GetHeadValue("SrethSaler"));
cheSrethCheck->Checked =(GetHeadValue("SrethCheck")=="1");
seSrethChecker->Text=GetHeadValue("SrethChecker");
cheSrethClose->Checked =(GetHeadValue("SrethClose")=="1");
cheSrethCancel->Checked =(GetHeadValue("SrethCancel")=="1");
scSrethRr->LocateKey(GetHeadValue("SrethRr"));
lbSrethSysDate->Caption = GetHeadValue("SrethSysDate");
memSrethDesc->Text = GetHeadValue("SrethDesc");
SetCheckToolbarStatus(cheSrethCheck->Checked);
SetCancelToolbarStatus(cheSrethCancel->Checked);
SetCloseToolbarStatus(cheSrethClose->Checked);
}
else
{
seSretdLine->Text = GetDetailValue("SretdLine");
seSretdSogCode->Text = GetDetailValue("SretdSogCode");
seSretdSogdLine->Text = GetDetailValue("SretdSogdLine");
seSretdGoods->Text = GetDetailValue("SretdGoods");
if(InitRsGoods(seSretdGoods->Text)){
seSretdGoodsName->Text =GetGoodsValue(gtInitRs,"GoodsName");
seSretdGoodsSpec->Text =GetGoodsValue(gtInitRs,"GoodsSpec");
}
seSretdGoodsName->Text = GetDetailValue("SretdGoodsName");
seSretdGoodsSpec->Text = GetDetailValue("SretdGoodsSpec");
seSretdUnit->LocateKey(GetDetailValue("SretdUnit"));
seSretdConv->Text = GetDetailValue("SretdConv");
seSretdQty->Text = GetDetailValue("SretdQty");
seSretdPrice->Text=GetDetailValue("SretdPrice");
seSretdAmt->Text=GetDetailValue("SretdAmt");
seSretdTaxAmt->Text=GetDetailValue("SretdTaxAmt");
scSretdState->ItemIndex=StrToInt(GetDetailValue("SretdState"))-1;
seSretdExes->Text = GetDetailValue("SretdExes");
seSretdLoc->LocateKey(GetDetailValue("SretdLoc"));
seSretdBatch->LocateKey(GetDetailValue("SretdBatch"));
memSretdDesc->Text=GetDetailValue("SretdDesc");
seSretdOQty->Text=GetDetailValue("SretdOQty");
seSretdFQty->Text=GetDetailValue("SretdFQty");
seSretdEQty->Text=GetDetailValue("SretdEQty");
cheSretdClose->Checked=GetDetailValue("SretdClose")=="1";
seSretdCloseDate->Text=GetDetailValue("SretdCloseDate");
SetCloseItemStatus(cheSretdClose->Checked);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::SendDataToComObject(int Section)
{
AnsiString s;
if (Section==1)
{
if ( seSrethCode->Text.IsEmpty() )
throw Exception("退货单号不能为空!");
if ( deSrethDate->Text.IsEmpty())
throw Exception("退货日期不能为空!");
if ( scSrethFmonth->Text.IsEmpty())
throw Exception("财务月份不能为空!");
if ( seSrethClient->ItemData[cbItem2]=="" )
throw Exception("客户不能为空!");
if ( seSrethCurrency->ItemData[cbItem2]=="" )
throw Exception("币种不能为空!");
if ( scSrethTaxCode->ItemData[cbItem2]=="" )
throw Exception("税码不能为空!");
if ( scSrethSaler->Text.IsEmpty() )
throw Exception("业务员不能为空!");
SetHeadValue("SrethCode",seSrethCode->Text);
SetHeadValue("SrethType",scSrethType->ItemData[cbItem2]);
SetHeadValue("SrethPosType",scSrethPosType->ItemData[cbItem2]);
SetHeadValue("SrethFmonth",scSrethFmonth->Text);
SetHeadValue("SrethDate",deSrethDate->Text);
SetHeadValue("SrethClient",seSrethClient->ItemData[cbItem2]);
SetHeadValue("SrethUser",g_sdUserCode/*scSrethUser->Text*/);
SetHeadValue("SrethSaler",scSrethSaler->ItemData[cbItem2]);
SetHeadValue("SrethCurrency",seSrethCurrency->ItemData[cbItem2]);
SetHeadValue("SrethEnrate",seSrethEnrate->Text);
SetHeadValue("SrethTaxCode",scSrethTaxCode->ItemData[cbItem2]);
SetHeadValue("SrethSettleMode",scSrethSettleMode->ItemData[cbItem2]);
SetHeadValue("SrethDeliver",scSrethDeliver->ItemData[cbItem2]);
SetHeadValue("SrethSsite",seSrethSsite->ItemData[cbItem2]);
SetHeadValue("SrethTransMode",scSrethTransMode->ItemData[cbItem2]);
SetHeadValue("SrethRr",scSrethRr->ItemData[cbItem2]);
SetHeadValue("SrethDesc",memSrethDesc->Text);
}
else
{
// if(seSretdSog->Text.IsEmpty())
// throw Exception("货品编码不能为空!");
if(seSretdUnit->ItemData[cbItem2]=="")
throw Exception("计量单位不能为空!");
if(seSretdPrice->Text.IsEmpty())
throw Exception("退货单价不能为空!");
if (seSretdBatch->Text == "<没有批号>")
throw Exception("该物料需要批次管理");
CalculateAmt();
SetDetailValue("SretdCode",seSrethCode->Text);
SetDetailValue("SretdLine",seSretdLine->Text);
SetDetailValue("SretdSogCode",seSretdSogCode->Text);
SetDetailValue("SretdSogdLine",seSretdSogdLine->Text);
SetDetailValue("SretdGoods",seSretdGoods->Text);
SetDetailValue("SretdGoodsName",seSretdGoodsName->Text);
SetDetailValue("SretdGoodsSpec",seSretdGoodsSpec->Text);
SetDetailValue("SretdUnit",seSretdUnit->ItemData[cbItem2]);
SetDetailValue("SretdConv",seSretdConv->Text);
SetDetailValue("SretdLoc",seSretdLoc->ItemData[cbItem2]);
SetDetailValue("SretdQty",seSretdQty->Text);
SetDetailValue("SretdPrice",seSretdPrice->Text);
SetDetailValue("SretdAmt",seSretdAmt->Text);
SetDetailValue("SretdTaxAmt",seSretdTaxAmt->Text);
SetDetailValue("SretdBatch",seSretdBatch->ItemData[1]);
SetDetailValue("SretdExes",seSretdExes->Text);
SetDetailValue("SretdDesc",memSretdDesc->Text);
SetDetailValue("SretdState",scSretdState->ItemData[1]);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::WaitUserInput(int Section)
{
if (Section ==1)
{
FloatPanel1->Enabled=true;
if(seSrethCode->Enabled)
seSrethCode->SetFocus();
}
else
{
FloatPanel1->Enabled=false;
sgSretd->Visible=false;
sgSretd->Align=alNone;
FloatPanel2->Visible=true;
FloatPanel2->Align=alClient;
if(seSretdLine->Enabled)
seSretdLine->SetFocus();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::RefreshGridData(int mAction)
{
AnsiString ItemStr;
ItemStr="\t"+GetDetailValue("SretdLine")+"\t"+GetDetailValue("SretdSogCode")+"\t"+
GetDetailValue("SretdSogdLine")+"\t"+GetDetailValue("SretdGoods")+"\t"+
GetDetailValue("SretdGoodsName")+"\t"+GetDetailValue("SretdGoodsSpec")+"\t"+
GetDetailValue("SretdUnit")+"\t"+GetDetailValue("SretdConv")+"\t"+
GetDetailValue("SretdLoc")+"\t"+GetDetailValue("SretdQty")+"\t"+
GetDetailValue("SretdPrice")+"\t"+GetDetailValue("SretdAmt")+"\t"+
GetDetailValue("SretdTaxAmt");
switch(mAction)
{
case 0:
sgSretd->AddItem(ItemStr);
break;
case 1:
sgSretd->ChangeItem(ItemStr,sgSretd->Row);
break;
case 2:
sgSretd->RemoveItem(sgSretd->Row);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::DisplayBill()
{
if(comServer->RecordCount<1)
return;
GetDataFromComObject(1);
ChangeToBrowseState(true);
FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::GetBill(AnsiString BillID)
{
if(comServer->Find("SrethCode='"+BillID+"'"))
{
DisplayBill();
}
else
if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
{
AddHeadRecord();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::FillGridWithData()
{
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?