📄 wo.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Wo.h"
#include "Wrg.h"
#include "Wsgm.h"
#include "Wn.h"
#include "WoGen.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "DateEdit"
#pragma resource "*.dfm"
TfrmWo *frmWo;
//---------------------------------------------------------------------------
__fastcall TfrmWo::TfrmWo(TComponent* Owner)
: TRecBaseForm(Owner,euSdWo,"")
{
AutoCtl=seWoCode;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmWo::GetFieldValue(int FieldIndex)
{
return ReadFieldValue(comServer,FieldIndex);
}
//---------------------------------------------------------------------------
void __fastcall TfrmWo::SetFieldValue(int iFieldIndex,AnsiString sFieldValue)
{
WriteFieldValue(comServer,iFieldIndex,sFieldValue);
}
//---------------------------------------------------------------------------
void __fastcall TfrmWo::ClearControl(bool BringToNext)
{
if(!BringToNext)
{
seWoCode->Text = "";
scWoStatus->ItemIndex = 0;
scWoType->ItemIndex = 0;
scWoConsume->ItemIndex= 0;
scWoTrace->ItemIndex = 1;
seWoGoods->Text = "";
seWoGoodsName->Text = "";
scWoUnit->ItemIndex = -1;
seWoSoCode->Text = "";
seWoSodLine->Text = "";
seWoRoute->ItemIndex = -1;
scWoFrom->ItemIndex = 0;
scWoProducter->ItemIndex= -1;
scWoBatch->ItemIndex = -1;
labUserCode->Caption = g_sdUserCode;
cheWoChkFlg->Checked = false;
cheWoCheck->Checked = false;
labChecker->Caption = "";
labCheckDate->Caption = "";
cheWoCancel->Checked = false;
labCancelDate->Caption= "";
cheWoClose->Checked = false;
labCloseDate->Caption = "";
seWoQty->Text = "0";
labWoCqty->Caption = "0";
labWoEqty->Caption = "0";
labWoWqty->Caption = "0";
labWoRqty->Caption = "0";
labWoSqty->Caption = "0";
deWoDate->Text = g_sdCurDate ;
deWoRdate->Text = "" ;
deWoSdate->Text = "";
labWoMdate->Caption = "" ;
labWoSysDate->Caption = "" ;
labWoTwt->Caption = "0.00";
labWoPamt->Caption = "0.00";
labWoMamt->Caption = "0.00";
memWoDesc->Text = "" ;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmWo::GetDataFromComObject()
{
seWoCode->Text = GetFieldValue(fiWoCode);
//MoveFirst,MovePrority,MoveNext,MoveLast
sgWo->LocateGrid(0,seWoCode->Text);
scWoStatus->ItemIndex = StrToInt(GetFieldValue(fiWoStatus))-1;
scWoType->ItemIndex = StrToInt(GetFieldValue(fiWoType))-1;
scWoConsume->ItemIndex = StrToInt(GetFieldValue(fiWoConsume))-1;
scWoTrace->ItemIndex = StrToInt(GetFieldValue(fiWoTrace))-1;
if(scWoTrace->ItemIndex==1)
seWoRoute->Enabled=false;
seWoGoods->Text = GetFieldValue(fiWoGoods);
//取货物编码的名称
if(g_sdRsGoods->LocateByKey(WideString(seWoGoods->Text))==0)
{
seWoGoodsName->Text = GetGoodsValue("GoodsName");
if(GetGoodsValue("GoodsBatch")=="0")
{
scWoBatch->ItemIndex=-1;
scWoBatch->Enabled=false;
}
if(GetGoodsValue("GoodsTrackSo")=="0")
seWoSoCode->Enabled=false;
}
scWoUnit->LocateKey(GetFieldValue(fiWoUnit));
seWoSoCode->Text = GetFieldValue(fiWoSoCode);
if(!seWoSoCode->Text.IsEmpty())
seWoSodLine->Text=GetFieldValue(fiWoSodLine);
else
seWoSodLine->Text="";
seWoRoute->LocateKey(GetFieldValue(fiWoRoute));
scWoFrom->ItemIndex = StrToInt(GetFieldValue(fiWoFrom))-1;
scWoProducter->LocateKey(GetFieldValue(fiWoProducter));
scWoBatch->LocateKey(GetFieldValue(fiWoBatch));
labUserCode->Caption = GetFieldValue(fiWoUser);
//质检标志
cheWoChkFlg->Checked = GetFieldValue(fiWoChkFlg)=="1";
cheWoCheck->Checked = GetFieldValue(fiWoCheck)=="1";
//设置Check时的状态
if(cheWoCheck->Checked)
SetCheckToolbarStatus(true);
else
SetCheckToolbarStatus(false);
labChecker->Caption = GetFieldValue(fiWoChecker);
labCheckDate->Caption = GetFieldValue(fiWoCheckDate);
cheWoCancel->Checked = GetFieldValue(fiWoCancel)=="1";
//设置Cancel时的状态
if(cheWoCancel->Checked)
SetCancelToolbarStatus(true);
else
SetCancelToolbarStatus(false);
labCancelDate->Caption = GetFieldValue(fiWoCancelDate);
cheWoClose->Checked = GetFieldValue(fiWoClose)=="1";
//设置Close时的状态
if(cheWoClose->Checked)
SetCloseToolbarStatus(true);
else
SetCloseToolbarStatus(false);
labCloseDate->Caption = GetFieldValue(fiWoCloseDate);
seWoQty->Text = GetFieldValue(fiWoQty);
labWoCqty->Caption = GetFieldValue(fiWoCQty);
labWoEqty->Caption = GetFieldValue(fiWoEQty);
labWoWqty->Caption = GetFieldValue(fiWoWQty);
labWoRqty->Caption = GetFieldValue(fiWoRQty);
labWoSqty->Caption = GetFieldValue(fiWoSQty);
deWoDate->Text = GetFieldValue(fiWoDate);
deWoRdate->Text = GetFieldValue(fiWoRdate);
deWoSdate->Text = GetFieldValue(fiWoSdate);
labWoMdate->Caption = GetFieldValue(fiWoMDate);
labWoSysDate->Caption = GetFieldValue(fiWoSysDate);
labWoTwt->Caption = GetFieldValue(fiWoTwt);
labWoMamt->Caption = GetFieldValue(fiWoMamt);
labWoPamt->Caption = GetFieldValue(fiWoPamt);
memWoDesc->Text = GetFieldValue(fiWoDesc);
}
//---------------------------------------------------------------------------
void __fastcall TfrmWo::SendDataToComObject()
{
SetFieldValue(fiWoCode,seWoCode->Text);
SetFieldValue(fiWoStatus,IntToStr(scWoStatus->ItemIndex+1));
SetFieldValue(fiWoType,IntToStr(scWoType->ItemIndex+1));
SetFieldValue(fiWoConsume,IntToStr(scWoConsume->ItemIndex+1));
SetFieldValue(fiWoTrace,IntToStr(scWoTrace->ItemIndex+1));
SetFieldValue(fiWoFrom,IntToStr(scWoFrom->ItemIndex+1));
SetFieldValue(fiWoGoods,seWoGoods->Text);
SetFieldValue(fiWoRoute,seWoRoute->ItemData[1]);
SetFieldValue(fiWoBatch,scWoBatch->ItemData[1]);
SetFieldValue(fiWoProducter,scWoProducter->ItemData[1]);
SetFieldValue(fiWoUser,labUserCode->Caption);
SetFieldValue(fiWoChkFlg,cheWoChkFlg->Checked ? "1":"0");
SetFieldValue(fiWoCheck,cheWoCheck->Checked ? "1":"0");
if(cheWoCheck->Checked) //当审核时
{
SetFieldValue(fiWoCheckDate,labCheckDate->Caption);
SetFieldValue(fiWoChecker,labChecker->Caption);
}
SetFieldValue(fiWoCancel,cheWoCancel->Checked ? "1":"0");
if(cheWoCancel->Checked) //当作废时
SetFieldValue(fiWoCancelDate,labCancelDate->Caption);
SetFieldValue(fiWoClose,cheWoClose->Checked ? "1":"0");
if(cheWoClose->Checked) //当结清时
SetFieldValue(fiWoCloseDate,labCloseDate->Caption);
SetFieldValue(fiWoQty,seWoQty->Text);
SetFieldValue(fiWoSoCode,seWoSoCode->Text);
if(!seWoSoCode->Text.IsEmpty()) //当订单不为空时
SetFieldValue(fiWoSodLine,seWoSodLine->Text);
SetFieldValue(fiWoDate,deWoDate->Text);
SetFieldValue(fiWoRdate,deWoRdate->Text);
SetFieldValue(fiWoSdate,deWoSdate->Text);
SetFieldValue(fiWoDesc,memWoDesc->Text);
}
//---------------------------------------------------------------------------
void __fastcall TfrmWo::WaitUserInput()
{
PageControl1->ActivePage=BaseInfo;
if(seWoCode->Enabled)
seWoCode->SetFocus();
if(CurrentState==caEditDetail)
{
g_sdRsGoods->LocateByKey(WideString(GetFieldValue(fiWoGoods)));
//货物编码需要批号处理
if(GetGoodsValue("GoodsBatch")=="1")
scWoBatch->Enabled=true;
else
scWoBatch->Enabled=false;
//货物编码需要订单跟踪
if(GetGoodsValue("GoodsTrackSo")=="1")
seWoSoCode->Enabled=true;
else
seWoSoCode->Enabled=false;
//如果跟踪方式为工艺路线时
if(GetFieldValue(fiWoTrace)=="1")
seWoRoute->Enabled=true;
else
seWoRoute->Enabled=false;
}
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmWo::GetDataToGrid()
{
AnsiString s,tempS;
s = GetFieldValue(fiWoUnit);
scWoUnit->LocateKey(s);
tempS = GetFieldValue(fiWoCode)+
"\t" + GetFieldValue(fiWoGoods)+
"\t" + scWoUnit->ItemData[0]+
"\t" + GetFieldValue(fiWoQty)+
"\t" + GetFieldValue(fiWoRdate);
return(tempS);
}
//---------------------------------------------------------------------------
void __fastcall TfrmWo::RefreshGridData(int mAction)
{
AnsiString ItemStr;
ItemStr = GetDataToGrid();
if(mAction == 0) //Add
{
sgWo->AddItem(ItemStr);
sgWo->Row = sgWo->RowCount-1;
}
else if(mAction == 1)//Chg
{
int i= sgWo->Row;
sgWo->ChangeItem(ItemStr,i);
}
else if(mAction == 2)//Del
{
sgWo->RemoveItem(sgWo->Row);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmWo::FillGridWithData()
{
AnsiString ItemStr;
comServer->MoveFirst();
sgWo->RowCount = 1;
while(comServer->Eof == 0)
{
ItemStr = GetDataToGrid();
sgWo->AddItem(ItemStr);
comServer->MoveNext();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmWo::InitEditControl()
{
ClientGroup->AddComponent(2,false,false,true,FloatPanel1,FloatPanel1->Name);
ClientGroup->AddComponent(2,true,true,true,GroupBox1,GroupBox1->Name);
ClientGroup->AddComponent(2,true,true,true,GroupBox2,GroupBox2->Name);
ClientGroup->AddComponent(2,true,true,true,GroupBox3,GroupBox3->Name);
ClientGroup->AddComponent(2,true,true,false,sgWo,sgWo->Name);
ClientGroup->AddComponent(2,false,true,false,seWoCode,seWoCode->Name);
ClientGroup->AddComponent(2,false,false,true,memWoDesc,memWoDesc->Name);
ClientGroup->AddComponent(2,true,true,false,sbtWrg,sbtWrg->Name);
ClientGroup->AddComponent(2,true,true,false,sbtWsgm,sbtWsgm->Name);
ClientGroup->AddComponent(2,true,true,false,sbtWn,sbtWn->Name);
ClientGroup->AddComponent(2,true,true,true,scWoStatus,scWoStatus->Name);
ClientGroup->AddComponent(2,true,true,true,scWoFrom,scWoFrom->Name);
ClientGroup->AddComponent(2,true,true,true,cheWoChkFlg,cheWoChkFlg->Name);
ClientGroup->AddComponent(2,true,true,true,scWoBatch,scWoBatch->Name);
ClientGroup->AddComponent(2,true,true,true,seWoSoCode,seWoSoCode->Name);
ClientGroup->AddComponent(2,true,true,true,seWoSodLine,seWoSodLine->Name);
ClientGroup->AddComponent(2,true,true,true,seWoRoute,seWoRoute->Name);
ClientGroup->AddComponent(2,true,true,true,seWoGoodsName,seWoGoodsName->Name);
ClientGroup->AddComponent(2,true,true,true,scWoUnit,scWoUnit->Name);
ClientGroup->AddComponent(2,false,true,true,seWoGoods,seWoGoods->Name);
//Wo
FillEdit(seWoRoute,"select RoutehCode,RoutehName=RoutehCode+space(1)+'('+RoutehName+')' from sdRouteh where RoutehCancel=0 order by RoutehCode","RoutehName","RoutehCode");
FillComboBox(scWoUnit,"select UnitCode,UnitName from sdUnit order by UnitCode","UnitName","UnitCode");
FillComboBox(scWoProducter,"select ProducterCode,memo=ProducterCode+space(1)+'('+UserName+')' from sdProducter,sdUser where ProducterCode=UserCode Order by ProducterCode",
"memo","ProducterCode");
AnsiString mSql=AnsiString("Select BatchCode,BatchCode+space(1)+'('+BatchDesc+')' memo from sdBatch ")+
AnsiString("where '"+g_sdCurDate+"'>=BatchEffectdate and '"+g_sdCurDate+"'<=(case BatchAbatedate when '' then '9999-99-99' else BatchAbatedate end) ")+
AnsiString("order by BatchCode");
FillComboBox(scWoBatch,mSql,"memo","BatchCode");
PageControl1->ActivePage=BaseInfo;
}
//---------------------------------------------------------------------------
void __fastcall TfrmWo::RefreshUpdateData(int MsgSrc,int MsgType)
{
try{
switch (MsgSrc){
case euSdUnit:
if(ShowUpdateMessage(MsgSrc,MsgType)){
StartWaitForm("正在刷新引用数据!");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -