wrgcopy.cpp

来自「速达开源ERP系统」· C++ 代码 · 共 373 行

CPP
373
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "WrgCopy.h"
#include "Wrg.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "DateEdit"
#pragma resource "*.dfm"

TfrmWrgCopy *frmWrgCopy;
//---------------------------------------------------------------------------
__fastcall TfrmWrgCopy::TfrmWrgCopy(TComponent* Owner)
    : TStdBaseForm(Owner)
{
}
//---------------------------------------------------------------------------
__fastcall TfrmWrgCopy::TfrmWrgCopy(TComponent* Owner,AnsiString FWrgWo)
    : TStdBaseForm(Owner)
{
    FWrgCopyWo=FWrgWo;
    seWrgWo->Text=FWrgWo;
    sgWrg->RowCount=1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::FillGridWithData(AnsiString s_Code)
{
    AnsiString tempSQL,ItemStr;
    Rst=NewResultSet();
    if(rbtRouted->Checked) //按工艺路线生成
    {
      tempSQL=AnsiString("Select RoutedSn,RoutedProcess,RoutedName,RoutedWc,RoutedLoc,")+
              AnsiString("RoutedType,RoutedState,RoutehEdate,RoutehIdate,RoutedChkFlg,")+
              AnsiString("RoutedWxFlg,RoutedWxAmt,RoutedQlt,RoutedSlt,RoutedRlt,RoutedWlt,")+
              AnsiString("RoutedMlt from sdRouted,sdRouteh ")+
              AnsiString("Where RoutehCode=RoutedCode and RoutedCode='"+s_Code+"' Order By RoutedSn");
      Rst->Open(tempSQL,"RoutedSn");
      Rst->MoveFirst();
      while( Rst->Eof == 0 )
      {
          ItemStr=AnsiString("√")+
                  "\t"+ Rst->FieldByName("RoutedSn")+
                  "\t"+ Rst->FieldByName("RoutedProcess")+
                  "\t"+ Rst->FieldByName("RoutedName");
          sgWrg->AddItem(ItemStr);
          Rst->MoveNext();
      }
    }
    else
    {
      tempSQL=AnsiString("Select WrgNo,WrgProcess,WrgName,WrgWc,WrgLoc,")+
              AnsiString("WrgType,WrgState,WrgEdate,WrgIdate,WrgChkFlg,")+
              AnsiString("WrgWxFlg,WrgWxAmt,WrgQlt,WrgSlt,WrgRlt,WrgWlt,")+
              AnsiString("WrgMlt from sdWrg ")+
              AnsiString("Where WrgWo='"+s_Code+"' Order By WrgNo");
      Rst->Open(tempSQL,"WrgNo");
      Rst->MoveFirst();
      while(Rst->Eof == 0 )
      {
          ItemStr=AnsiString("√")+
                  "\t"+ Rst->FieldByName("WrgNo")+
                  "\t"+ Rst->FieldByName("WrgProcess")+
                  "\t"+ Rst->FieldByName("WrgName");
          sgWrg->AddItem(ItemStr);
          Rst->MoveNext();
      }
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::sgWrgSelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
    if(ARow>0 && ACol==0)
    {
       if(sgWrg->Cells[0][ARow]=="")
          sgWrg->Cells[0][ARow]="√";
       else
          sgWrg->Cells[0][ARow]="";
    }
    AnsiString m_Key;
    m_Key=sgWrg->Cells[1][ARow];
    Rst->LocateByKey(m_Key);
    SetValueToControl();
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::SetValueToControl()
{
    if(rbtRouted->Checked)
    {
        scWrgWc->LocateKey(Rst->FieldByName("RoutedWc"));
        scWrgWc->Text = scWrgWc->ItemData[cbItem1];

        scWrgLoc->LocateKey(Rst->FieldByName("RoutedLoc"));
        scWrgLoc->Text=scWrgLoc->ItemData[cbItem1];

        deWrgEdate->Text=Rst->FieldByName("RoutehEdate");
        deWrgIdate->Text=Rst->FieldByName("RoutehIdate");

        scWrgState->ItemIndex=StrToInt(Rst->FieldByName("RoutedState"))-1;
        scWrgType->ItemIndex=StrToInt(Rst->FieldByName("RoutedType"))-1;

        cheChkFlg->Checked=Rst->FieldByName("RoutedChkFlg")=="1";
        cheWxFlg->Checked=Rst->FieldByName("RoutedWxFlg")=="1";
        seWrgWxAmt->Text=Rst->FieldByName("RoutedWxAmt");

        seWrgQlt->Text=Rst->FieldByName("RoutedQlt");
        seWrgSlt->Text=Rst->FieldByName("RoutedSlt");
        seWrgRlt->Text=Rst->FieldByName("RoutedRlt");
        seWrgWlt->Text=Rst->FieldByName("RoutedWlt");
        seWrgMlt->Text=Rst->FieldByName("RoutedMlt");
        seWrgPQty->Text=0;
    }
    else
    {
        scWrgWc->LocateKey(Rst->FieldByName("WrgWc"));
        scWrgWc->Text = scWrgWc->ItemData[cbItem1];

        scWrgLoc->LocateKey(Rst->FieldByName("WrgLoc"));
        scWrgLoc->Text=scWrgLoc->ItemData[cbItem1];

        deWrgEdate->Text=Rst->FieldByName("WrgEdate");
        deWrgIdate->Text=Rst->FieldByName("WrgIdate");

        scWrgState->ItemIndex=StrToInt(Rst->FieldByName("WrgState"))-1;
        scWrgType->ItemIndex=StrToInt(Rst->FieldByName("WrgType"))-1;

        cheChkFlg->Checked=Rst->FieldByName("WrgChkFlg")=="1";
        cheWxFlg->Checked=Rst->FieldByName("WrgWxFlg")=="1";
        seWrgWxAmt->Text=Rst->FieldByName("WrgWxAmt");

        seWrgQlt->Text=Rst->FieldByName("WrgQlt");
        seWrgSlt->Text=Rst->FieldByName("WrgSlt");
        seWrgRlt->Text=Rst->FieldByName("WrgRlt");
        seWrgWlt->Text=Rst->FieldByName("WrgWlt");
        seWrgMlt->Text=Rst->FieldByName("WrgMlt");
        seWrgPQty->Text=0;
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::btnCancelClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::SetcomServer(TComServer *value)
{
    comServer=value;
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::FormShow(TObject *Sender)
{
    seWrgWo->Text = FWrgCopyWo;
    seWrgWo->Enabled=false;
    Panel1->Enabled=false;
    rbtRouted->Checked=true;
    scWrgWoF->Visible =false; //不可见
    FillComboBox(scWrgRoute,"Select RoutehCode from sdRouteh where RoutehCancel=0 order by RoutehCode","RoutehCode");
    FillComboBox(scWrgWoF,"Select WoCode,memo=WoCode+space(1)+'('+WoGoods+')' from sdWo where WoCheck=1 and WoCancel=0 order by WoCode","memo","WoCode");
    FillComboBox(scWrgWc,"Select WcCode,WcName FROM sdWc order by WcCode","WcName","WcCode");
    FillComboBox(scWrgLoc,"Select LocCode,LocName from sdLoc where LocType=2 order by LocCode","LocName","LocCode");
    InitEditControl();
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::SetFieldValue(int Index,AnsiString Value)
{
    WriteFieldValue(comServer,Index,Value);
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::InitEditControl()
{
    scWrgRoute->ItemIndex=-1;
    scWrgRoute->Text = "";
    scWrgWoF->ItemIndex=-1;
    scWrgWoF->Text="";
    scWrgWc->ItemIndex=-1;
    scWrgWc->Text = "";
    scWrgLoc->ItemIndex=-1;
    scWrgLoc->Text = "";
    deWrgEdate->Text="";
    deWrgIdate->Text="";
    scWrgType->ItemIndex=-1;
    scWrgType->Text="";
    scWrgState->ItemIndex=-1;
    scWrgState->Text="";
    seWrgQlt->Text ="";
    seWrgSlt->Text ="";
    seWrgRlt->Text ="";
    seWrgWlt->Text ="";
    seWrgMlt->Text ="";
    seWrgPQty->Text ="";
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::btnOKClick(TObject *Sender)
{
    AnsiString m_Keystr;
    if(sgWrg->RowCount>0){
      for(int i=1;i<sgWrg->RowCount;i++){
        int j;
        if(rbtRouted->Checked){
          if(sgWrg->Cells[0][i]=="√"){
            j=comServer->RecordCount-1;
            if(j>=0)
            {
               comServer->LocateByIndex(j);
               j=StrToInt(frmWrg->GetFieldValue(fiWrgNo));
               j=j+1;
            }
            else
               j=1;
            m_Keystr=sgWrg->Cells[1][i];
            Rst->LocateByKey(m_Keystr);
            comServer->AddNew();
            SetFieldValue(fiWrgWo,frmWrg->labWrgWo->Caption);
            SetFieldValue(fiWrgNo,AnsiString(j));
            SetFieldValue(fiWrgProcess,Rst->FieldByName("RoutedProcess"));
            SetFieldValue(fiWrgName,Rst->FieldByName("RoutedName"));
            SetFieldValue(fiWrgWc,Rst->FieldByName("RoutedWc"));
            SetFieldValue(fiWrgLoc,Rst->FieldByName("RoutedLoc"));
            SetFieldValue(fiWrgFrom,"2");  //1-工艺路线表 2-工单路线表
            SetFieldValue(fiWrgType,Rst->FieldByName("RoutedType"));
            SetFieldValue(fiWrgState,Rst->FieldByName("RoutedState"));
            SetFieldValue(fiWrgEdate,Rst->FieldByName("RoutehEdate"));
            SetFieldValue(fiWrgIdate,Rst->FieldByName("RoutehIdate"));
            SetFieldValue(fiWrgChkFlg,Rst->FieldByName("RoutedChkFlg"));
            SetFieldValue(fiWrgWxFlg,Rst->FieldByName("RoutedWxFlg"));
            SetFieldValue(fiWrgWxAmt,Rst->FieldByName("RoutedWxAmt"));
            SetFieldValue(fiWrgQlt,Rst->FieldByName("RoutedQlt"));
            SetFieldValue(fiWrgSlt,Rst->FieldByName("RoutedSlt"));
            SetFieldValue(fiWrgRlt,Rst->FieldByName("RoutedRlt"));
            SetFieldValue(fiWrgWlt,Rst->FieldByName("RoutedWlt"));
            SetFieldValue(fiWrgMlt,Rst->FieldByName("RoutedMlt"));
            SetFieldValue(fiWrgUser,g_sdUserCode);
            try
            {
               comServer->Post();
            }
            catch(Exception &e)
            {
               comServer->Cancel();
               this->ModalResult=0;
               throw Exception(e.Message);
            }
            j=j+1;
          }
        }
        else{
          if(sgWrg->Cells[0][i]=="√")
          {
            j=frmWrg->comServer->RecordCount-1;
            if(j>=0)
            {
               comServer->LocateByIndex(j);
               j=StrToInt(frmWrg->GetFieldValue(fiWrgNo));
               j=j+1;
            }
            else
               j=1;
            m_Keystr=sgWrg->Cells[1][i];
            Rst->LocateByKey(WideString(m_Keystr));
            comServer->AddNew();
            SetFieldValue(fiWrgWo,frmWrg->labWrgWo->Caption);
            SetFieldValue(fiWrgNo,AnsiString(j));
            SetFieldValue(fiWrgProcess,Rst->FieldByName("WrgProcess"));
            SetFieldValue(fiWrgName,Rst->FieldByName("WrgName"));

            SetFieldValue(fiWrgWc,Rst->FieldByName("WrgWc"));
            SetFieldValue(fiWrgLoc,Rst->FieldByName("WrgLoc"));
            SetFieldValue(fiWrgFrom,"2");  //1-工艺路线表 2-工单路线表
            SetFieldValue(fiWrgType,Rst->FieldByName("WrgType"));
            SetFieldValue(fiWrgState,Rst->FieldByName("WrgState"));
            SetFieldValue(fiWrgEdate,Rst->FieldByName("WrgEdate"));
            SetFieldValue(fiWrgIdate,Rst->FieldByName("WrgIdate"));
            SetFieldValue(fiWrgChkFlg,Rst->FieldByName("WrgChkFlg"));
            SetFieldValue(fiWrgWxFlg,Rst->FieldByName("WrgWxFlg"));
            SetFieldValue(fiWrgWxAmt,Rst->FieldByName("WrgWxAmt"));
            SetFieldValue(fiWrgQlt,Rst->FieldByName("WrgQlt"));
            SetFieldValue(fiWrgSlt,Rst->FieldByName("WrgSlt"));
            SetFieldValue(fiWrgRlt,Rst->FieldByName("WrgRlt"));
            SetFieldValue(fiWrgWlt,Rst->FieldByName("WrgWlt"));
            SetFieldValue(fiWrgMlt,Rst->FieldByName("WrgMlt"));
            SetFieldValue(fiWrgUser,g_sdUserCode);
            try
            {
               comServer->Post();
            }
            catch(Exception &e)
            {
               comServer->Cancel();
               this->ModalResult=0;
               throw Exception(e.Message);
            }
            j=j+1;
          }
        }
      }
    }
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    delete Rst;
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::scWrgRouteClick(TObject *Sender)
{
    AnsiString s_RouteF;
    s_RouteF=Trim(scWrgRoute->Text);
    if(s_RouteF.IsEmpty())
    {
       ::MessageBox(Handle,"复制时的来源工艺路线码不能为空!","错误",MB_OK|MB_ICONSTOP);
       return;
    }
    else
    {
       sgWrg->RowCount=1;
       FillGridWithData(s_RouteF);
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::scWrgWoFClick(TObject *Sender)
{
    AnsiString s_WrgWoF;
    if(scWrgWoF->ItemIndex==-1)
    {
       ::MessageBox(Handle,"复制时的来源工单编号不能为空!","错误",MB_OK|MB_ICONSTOP);
       return;
    }
    else
    {
       sgWrg->RowCount=1;
       s_WrgWoF=Trim(scWrgWoF->ItemData[1]);
       FillGridWithData(s_WrgWoF);
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::rbtWrgClick(TObject *Sender)
{
    if(rbtWrg->Checked)
    {
        scWrgRoute->Visible=false;
        scWrgWoF->Visible=true;
    }
    else
    {
        scWrgRoute->Visible=true;
        scWrgWoF->Visible=false;
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmWrgCopy::rbtRoutedClick(TObject *Sender)
{
    if(rbtRouted->Checked)
    {
        scWrgRoute->Visible=true;
        scWrgWoF->Visible=false;
    }
    else
    {
        scWrgRoute->Visible=false;
        scWrgWoF->Visible=true;
    }
}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?