qcproch.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 768 行 · 第 1/2 页
CPP
768 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "QcProcH.h"
//---------------------------------------------------------------------------
#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"
TfrmQcProcH *frmQcProcH;
//---------------------------------------------------------------------------
__fastcall TfrmQcProcH::TfrmQcProcH(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TGenBaseForm(Owner,chWnd,MidCode,WhereStr)
{
SetAutoCodeString(seQcshCode); //指定自动编码
CurLineCount=0;
}
//---------------------------------------------------------------------------
void __fastcall TfrmQcProcH::InitEditControl()
{
/* DONE -chead&&detail : InitEditControl */
//head // int mSection, bool NewAct,bool EditAct,bool BrowseAct
ClientGroup->AddComponent(1,false,false,true,fpQcshHead,fpQcshHead->Name); //头面板
ClientGroup->AddComponent(1,false,true,true,seQcshCode,seQcshCode->Name);//质栓单号
ClientGroup->AddComponent(1,false,false,true,scQcWay,scQcWay->Name); //检验方法
ClientGroup->AddComponent(1,false,false,true,seQcsdGoods,seQcsdGoods->Name); //物料代码
ClientGroup->AddComponent(1,true,true,true,seQcsdGoodsName,seQcsdGoodsName->Name);//物料名
ClientGroup->AddComponent(1,true,true,true,seQcsdGoodsSpec,seQcsdGoodsSpec->Name);//物料规格
ClientGroup->AddComponent(1,false,false,true,seQcCkupHSupply,seQcCkupHSupply->Name); //供应商
ClientGroup->AddComponent(1,false,false,true,seQcshDocCode,seQcshDocCode->Name); //批号
ClientGroup->AddComponent(1,false,false,true,scQcCkupHDept,scQcCkupHDept->Name); //部门
ClientGroup->AddComponent(1,false,false,true,seQcCkupHProc,seQcCkupHProc->Name); //工序
ClientGroup->AddComponent(1,false,false,true,scQcCkupHDeal,scQcCkupHDeal->Name); //处理方法
ClientGroup->AddComponent(1,false,false,true,seCkupDQty,seCkupDQty->Name); //报检数量
ClientGroup->AddComponent(1,false,false,true,seCkupCQty,seCkupCQty->Name); //实检数量
ClientGroup->AddComponent(1,false,false,true,seCkupPQty,seCkupPQty->Name); //合格数量,
ClientGroup->AddComponent(1,false,false,true,seCkupPRate,seCkupPRate->Name); //合格率,自动完成
ClientGroup->AddComponent(1,false,false,true,scQcshUser,scQcshUser->Name); //质检员
ClientGroup->AddComponent(1,false,false,true,memCkupResult,memCkupResult->Name); //质检结果
ClientGroup->AddComponent(1,false,false,true,memCkupDesc,memCkupDesc->Name); //备注
//detail
ClientGroup->AddComponent(2,false,false,true,fpQcsdDetail,fpQcsdDetail->Name); //细面板
ClientGroup->AddComponent(2,false,false,true,seQcsdLine,seQcsdLine->Name); //行号
ClientGroup->AddComponent(2,false,false,true,scQcCkupDProject,scQcCkupDProject->Name); //检验内容
ClientGroup->AddComponent(2,false,false,true,scQcCkupDQdl,scQcCkupDQdl->Name); //缺陷等级
ClientGroup->AddComponent(2,false,false,true,scQcsdState,scQcsdState->Name); //单位
ClientGroup->AddComponent(2,false,false,true,seQcsdDQty,seQcsdDQty->Name); //检验数量
ClientGroup->AddComponent(2,false,false,true,seQcsdCQty,seQcsdCQty->Name); //合格数量
ClientGroup->AddComponent(2,false,false,true,memQcsdDesc,memQcsdDesc->Name); //备注
ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);
//head--------------
//质检方法
FillComboBox(Handle,scQcWay,"SELECT QcWayName memo,QcWayCode FROM ksQcWay Order by QcWayCode","memo","QcWayCode");//取第二个字段值为key
//部门
FillComboBox(Handle,scQcCkupHDept," select DeptName memo,DeptCode,DeptItem,DeptUpperCode,DeptLinkman From sdDept order by DeptCode ","memo","DeptCode");
//处理方法
scQcCkupHDeal->ClearAll();
scQcCkupHDeal->AddItems("1-退货","1");//key=cbItem2
scQcCkupHDeal->AddItems("2-换货","2");
scQcCkupHDeal->AddItems("3-返工","3");
//质检员
FillComboBox(Handle,scQcshUser,"SELECT UserName memo,QcmCode FROM sdQcm,sdUser where QcmCode=UserCode order by QcmCode","memo","QcmCode");//取第二个字段值为key
//detail---------------
//质检内容
FillComboBox(Handle,scQcCkupDProject," select QccName memo ,QccCode,QccDesc from sdQcc order by QccCode ","memo","QccCode");
//单位
FillComboBox(Handle,scQcsdState," select UnitName memo ,UnitCode,UnitDefault,UnitRate from sdunit order by UnitCode","memo","UnitCode");
//缺陷等级
FillComboBox(Handle,scQcCkupDQdl," select QdlName memo ,QdlCode,QdlDesc from sdQdl order by QdlCode","memo","QdlCode");
}
//---------------------------------------------------------------------------
void __fastcall TfrmQcProcH::ClearControl(int Section,bool BringToNext)
{
/* DONE -chead&&detail : ClearControl */
if (Section == 1)
{
if (! BringToNext)
{
seQcshCode->Text=""; //质检单号,加入自动编码代码在此,例如:ACM-004
deQcshDate->Text=g_sdCurDate; //质检日期
scQcWay->ItemIndex=0; //质检方法
seQcsdGoods->Text=""; //物料编码
seQcsdGoodsName->Text=""; //物料名称
seQcsdGoodsSpec->Text=""; //物料规格
seQcCkupHSupply->Text=""; //供应商
seQcshDocCode->Text=""; //批号
scQcCkupHDept->ItemIndex=0; //部门
seQcCkupHProc->Text=""; //工序
scQcCkupHDeal->ItemIndex=0; //处理方法
seCkupDQty->Text="";
seCkupPQty->Text="";
seCkupPRate->Text="";
seCkupCQty->Text="";
scQcshUser->LocateKey(g_sdUserCode); //质检员
memCkupResult->Lines->Clear(); //检验结果
memCkupDesc->Lines->Clear(); //备注
cbxQcshCheck->Checked=false; //审核标志
labQcshChecker->Caption=""; //审核人
labQcshCheckDate->Caption=""; //审核日期
SetCheckToolbarStatus(false);
}
sgQcsh->RowCount=1;
}
else if (Section==2)
{
if (!BringToNext)
{
seQcsdLine->Text=(++CurLineCount); //当前明细行数;因为没有保存生效前,ItemCount始终不变的,故要用到全局变量
scQcCkupDProject->ItemIndex=0; //检验内容
scQcCkupDQdl->ItemIndex=0; //缺陷等级
scQcsdState->ItemIndex=0; //单位
seQcsdDQty->Text=""; //送检数量
seQcsdCQty->Text=""; //合格数量
memQcsdDesc->Text=""; //备注
}
}
}
//-------------------------------------------------------------
void __fastcall TfrmQcProcH::GetDataFromComObject(int Section)
{
/* DONE -ocomData -chead&&detail : GetDataFromComObject */
AnsiString s;
if (Section==1) //head
{
seQcshCode->Text=GetHeadValue("CkupHCode"); //质检单号
deQcshDate->Text=GetHeadValue("CkupHDate"); //质检日期
scQcWay->LocateKey(GetHeadValue("CkupHWay")); //质检方法
seQcsdGoods->Text=GetHeadValue("CkupHGoods");; //物料编码
seQcsdGoodsName->Text=GetHeadValue("QcCkupHGoodsName"); //物料名称
seQcsdGoodsSpec->Text=GetHeadValue("QcCkupHGoodsSpec"); //物料规格
seQcCkupHSupply->Text=GetHeadValue("CkupHSupply"); //供应商
seQcshDocCode->Text=GetHeadValue("CkupHBatch"); //批号
scQcCkupHDept->LocateKey(GetHeadValue("CkupHDept")); //部门
seQcCkupHProc->Text=GetHeadValue("CkupHRoute"); //工序
scQcCkupHDeal->LocateKey(GetHeadValue("CkupHDeal")); //处理方法
seCkupDQty->Text=GetHeadValue("CkupHDQty");
seCkupPQty->Text=GetHeadValue("CkupHPQty");
seCkupPRate->Text=GetHeadValue("CkupHPRate");
seCkupCQty->Text=GetHeadValue("CkupHCQty");
scQcshUser->LocateKey(GetHeadValue("CkupHMan")); //质检员 //
memCkupResult->Text=GetHeadValue("CkupHResult"); //检验结果
memCkupDesc->Text=GetHeadValue("CkupHDesc"); //备注
cbxQcshCheck->Checked=((GetHeadValue("CkupHCheck")=="1")?true:false); //审核标志
labQcshChecker->Caption=GetHeadValue("CkupHChecker"); //审核人
labQcshCheckDate->Caption=GetHeadValue("CkupHCheckDate"); //审核日期
//根据审核、取消状态,设置工具栏
if(GetHeadValue("CkupHCheck")=="1")
SetCheckToolbarStatus(true);
else
SetCheckToolbarStatus(false);
}
else //details
{
seQcsdLine->Text= GetDetailValue("CkupdLine"); //行号
scQcCkupDProject->LocateKey(GetDetailValue("CkupdProject")); //检验内容
scQcCkupDQdl->LocateKey(GetDetailValue("CkupdQdl")); //缺陷等级
scQcsdState->LocateKey(GetDetailValue("CkupdUnit")); //单位
seQcsdDQty->Text= GetDetailValue("CkupdCQty"); //检验数量
seQcsdCQty->Text= GetDetailValue("CkupdPQty"); //合格数量
memQcsdDesc->Text= GetDetailValue("CkupdDesc"); //备注
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmQcProcH::SendDataToComObject(int Section)
{
/* DONE -ocomData -chead&&detail : SendDataToComObject */
if (Section==1) // Head
{
double DQty,CQty,PQty,PRate;
if(seQcshCode->Text == "")
throw Exception("请输入质检单号");
if(seQcshDocCode->Text == "")
throw Exception("请输入批号");
if(seCkupDQty->Text == "")
throw Exception("请输入报检数量");
if(seCkupPQty->Text == "")
throw Exception("请输入合格数量");
if(seCkupCQty->Text == "")
throw Exception("请输入实检数量");
if(scQcshUser->Text == "")
throw Exception("请输入质检员");
if(seQcCkupHProc->Text == "")
throw Exception("请输入工序");
DQty=StrToFloat( seCkupDQty->Text);//报检
CQty=StrToFloat( seCkupCQty->Text);//实检
PQty=StrToFloat( seCkupPQty->Text);//合格检
if (CQty>DQty )
{
throw Exception("实检数量不能大于报检数量");
}
else if(PQty>CQty || PQty>DQty)
{
throw Exception("合格数量不能大于实检数量");
}
SetHeadValue("CkupHCode",seQcshCode->Text); //质检单号
SetHeadValue("CkupHType","2"); //质检类型
SetHeadValue("CkupHDate",deQcshDate->Text ); //质检日期
SetHeadValue("CkupHWay" ,scQcWay->ItemData[1]); //质检方法
SetHeadValue("CkupHGoods",seQcsdGoods->Text ); //物料编码
SetHeadValue("QcCkupHGoodsName",seQcsdGoodsName->Text );//物料名称
SetHeadValue("QcCkupHGoodsSpec",seQcsdGoodsSpec->Text );//物料规格
SetHeadValue("CkupHSupply",seQcCkupHSupply->Text ); //供应商
SetHeadValue("CkupHBatch",seQcshDocCode->Text ); //批号
SetHeadValue("CkupHDept",scQcCkupHDept->ItemData[1]); //部门
SetHeadValue("CkupHRoute",seQcCkupHProc->Text ); //工序
SetHeadValue("CkupHDeal",scQcCkupHDeal->ItemData[1]); //处理方法
SetHeadValue("CkupHDQty",seCkupDQty->Text ); //float型
SetHeadValue("CkupHPQty",seCkupPQty->Text );
SetHeadValue("CkupHPRate",seCkupPRate->Text );
if (CQty<=0)
{
PRate=0;
}
else
{
PRate=PQty/CQty*100;
}
seCkupPRate->Text=FloatToStr(PRate);
//---------------
SetHeadValue("CkupHCQty",seCkupCQty->Text );
SetHeadValue("CkupHMan",scQcshUser->ItemData[1]);//质检员
SetHeadValue("CkupHResult",memCkupResult->Text ); //检验结果
SetHeadValue("CkupHDesc",memCkupDesc->Text ); //备注
SetHeadValue("CkupHChecker",labQcshChecker->Caption); //审核人
this->comServer->FieldValue["CkupHCheck"]=((cbxQcshCheck->Checked)?1:0); //审核标志
SetHeadValue("CkupHCheckDate",labQcshCheckDate->Caption); //审核日期
SetHeadValue("CkupHUser",g_sdUserCode); //操作员,全局变量
}
else //detail
{
if(seQcsdDQty->Text == "")
throw Exception("请输入检验数量");
if(seQcsdCQty->Text == "")
throw Exception("请输入合格数量");
double CQty,PQty;
CQty=StrToFloat(seQcsdDQty->Text);//实检
PQty=StrToFloat(seQcsdCQty->Text);//合格
if (PQty>CQty )
{
throw Exception("合格数量不能大于检验数量");
}
SetDetailValue("CkupdCode",seQcshCode->Text); //质检单号
SetDetailValue("CkupdLine",seQcsdLine->Text); //行号
SetDetailValue("CkupdProject",scQcCkupDProject->ItemData[1]); //检验内容
SetDetailValue("CkupdQdl",scQcCkupDQdl->ItemData[1]); //缺陷等级
SetDetailValue("CkupdUnit",scQcsdState->ItemData[1]); //单位
SetDetailValue("CkupdCQty",seQcsdDQty->Text); //检验数量
SetDetailValue("CkupdPQty",seQcsdCQty->Text); //实检数量
SetDetailValue("CkupdDesc",memQcsdDesc->Text); //备注
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmQcProcH::WaitUserInput(int Section)
{
/* DONE -chead&&detail : WaitUserInput */
if (Section ==1) //head
{
if(seQcshCode->Enabled)
seQcshCode->SetFocus();
else
deQcshDate->SetFocus();
}
else //details
{
sgQcsh->Visible=false;
fpQcsdDetail->Visible=true;
}
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmQcProcH::GetDataToGrid()
{
/* DONE -cdetail : GetDataToGrid 返回明细表查询结果当前记录行*/
AnsiString ItemStr;
ItemStr="\t"+GetDetailValue("CkupdLine")+
"\t"+GetDetailValue("CkupdProject")+
"\t"+GetDetailValue("CkupdUnit")+
"\t"+GetDetailValue("CkupdCQty")+
"\t"+GetDetailValue("CkupdPQty")+
"\t"+GetDetailValue("CkupdQdl")+
"\t"+GetDetailValue("CkupdDesc");
return ItemStr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmQcProcH::RefreshGridData(int mAction)
{
/* DONE -ogrid -cdetail : RefreshGridData,当前记录行Append,change,remove */
int i;
AnsiString ItemStr=GetDataToGrid();
switch(mAction)
{
case 0: // Append
sgQcsh->AddItem(ItemStr);
break;
case 1: // Modify
i=sgQcsh->Row;
sgQcsh->ChangeItem(ItemStr,i);
break;
case 2: // Delete
sgQcsh->RemoveItem(sgQcsh->Row);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmQcProcH::FillGridWithData()
{
/* DONE -ogrid -cdetail : FillGridWithData */
int i;
AnsiString ItemStr;
sgQcsh->RowCount=1;
if(comServer->RecordCount > 0)
for (i=0;i<comServer->ItemCount;i++)
{
comServer->LocateItemByIndex(i);//
RefreshGridData(0); // Append
}
CurLineCount=comServer->ItemCount; //当前明细行数
}
//---------------------------------------------------------------------------
void __fastcall TfrmQcProcH::DisplayBill()
{
/* DONE -chead : DisplayBill */
if(comServer->RecordCount<1)
return;
GetDataFromComObject(1); // Head
ChangeToBrowseState(true);
FillGridWithData(); //
}
//---------------------------------------------------------------------------
void __fastcall TfrmQcProcH::GetBill(AnsiString BillID)
{
/* DONE -chead : GetBill 自动根据单号定位并显示出来*/
int iRow;
comServer->Find("CkupHCode='"+BillID+"'"); //
if (iRow>0) //FIND THIS BILL
{
DisplayBill();
}
else
if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
{
AddHeadRecord();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmQcProcH::FormCreate(TObject *Sender)
{
// FormIniFile="D:\Test.Ini";
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?