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