📄 bmhdl.cpp
字号:
b_BomdDesc="";
break;
}
}
//----------------------------------------------------------------------------
void TsdBomd::BatchLetValue()
{
m_BomdPgoods=m_Query->FieldValues["BomdPgoods"];
m_BomdGoods=m_Query->FieldValues["BomdGoods"];
m_BomdUnit=m_Query->FieldValues["BomdUnit"];
m_BomdType=m_Query->FieldValues["BomdType"];
m_BomdFrom=m_Query->FieldValues["BomdFrom"];
m_BomdSn=m_Query->FieldValues["BomdSn"];
m_BomdQty=m_Query->FieldValues["BomdQty"];
m_BomdShl=m_Query->FieldValues["Bomdshl"];
m_BomdProcess=m_Query->FieldValues["BomdProcess"];
m_BomdPp=m_Query->FieldValues["BomdPp"];
m_BomdOp=m_Query->FieldValues["BomdOp"];
m_BomdCfg=m_Query->FieldValues["BomdCfg"];
m_BomdLlc=m_Query->FieldValues["BomdLlc"];
m_BomdRepFlg=m_Query->FieldValues["BomdRepFlg"];
m_BomdEco=m_Query->FieldValues["BomdEco"];
m_BomdLot=m_Query->FieldValues["BomdLot"];
m_BomdDesc=m_Query->FieldValues["BomdDesc"];
BackupValue();
}
//---------------------------------------------------------------------------
void TsdBomd::Update()
{
if(CurStatus==0||CurStatus==1)
throw Exception("当前不是编辑状态,不能进行存盘操作!");
if(m_BomdSn == 0)
throw Exception("物料单的序号不能为空!");
if(m_BomdPgoods.IsEmpty()==true)
throw Exception("物料单的父件编码不能为空!");
if(m_BomdGoods.IsEmpty()==true)
throw Exception("物料单的子件编码不能为空!");
m_StoredProc->Close();
if(CurStatus==2||CurStatus==4)
{
m_StoredProc->ProcedureName="sdBomd_Insert";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@BomdSn",ftInteger,pdInput,10,m_BomdSn);
m_StoredProc->Parameters->CreateParameter("@BomdPgoods",ftString,pdInput,18,m_BomdPgoods);
m_StoredProc->Parameters->CreateParameter("@BomdGoods",ftString,pdInput,18,m_BomdGoods);
m_StoredProc->Parameters->CreateParameter("@BomdType",ftInteger,pdInput,1,m_BomdType);
m_StoredProc->Parameters->CreateParameter("@BomdFrom",ftInteger,pdInput,1,m_BomdFrom);
m_StoredProc->Parameters->CreateParameter("@BomdUnit",ftString,pdInput,18,m_BomdUnit);
m_StoredProc->Parameters->CreateParameter("@BomdQty",ftFloat,pdInput,12,m_BomdQty);
m_StoredProc->Parameters->CreateParameter("@BomdShl",ftFloat,pdInput,5,m_BomdShl);
m_StoredProc->Parameters->CreateParameter("@BomdProcess",ftString,pdInput,18,m_BomdProcess);
m_StoredProc->Parameters->CreateParameter("@BomdPp",ftInteger,pdInput,1,m_BomdPp);
m_StoredProc->Parameters->CreateParameter("@BomdOp",ftInteger,pdInput,1,m_BomdOp);
m_StoredProc->Parameters->CreateParameter("@BomdCfg",ftInteger,pdInput,1,m_BomdCfg);
m_StoredProc->Parameters->CreateParameter("@BomdRepFlg",ftInteger,pdInput,1,m_BomdRepFlg);
m_StoredProc->Parameters->CreateParameter("@BomdLot",ftFloat,pdInput,7,m_BomdLot);
m_StoredProc->Parameters->CreateParameter("@BomdDesc",ftString,pdInput,40,m_BomdDesc);
m_StoredProc->ExecProc();
m_StoredProc->Close();
}
else
{
m_StoredProc->ProcedureName="sdBomd_Update";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_BomdGoods",ftString,pdInput,18,b_BomdGoods);
m_StoredProc->Parameters->CreateParameter("@W_BomdPgoods",ftString,pdInput,18,b_BomdPgoods);
m_StoredProc->Parameters->CreateParameter("@BomdSn",ftInteger,pdInput,10,m_BomdSn);
m_StoredProc->Parameters->CreateParameter("@BomdGoods",ftString,pdInput,18,m_BomdGoods);
m_StoredProc->Parameters->CreateParameter("@BomdType",ftInteger,pdInput,1,m_BomdType);
m_StoredProc->Parameters->CreateParameter("@BomdFrom",ftInteger,pdInput,1,m_BomdFrom);
m_StoredProc->Parameters->CreateParameter("@BomdUnit",ftString,pdInput,18,m_BomdUnit);
m_StoredProc->Parameters->CreateParameter("@BomdQty",ftFloat,pdInput,12,m_BomdQty);
m_StoredProc->Parameters->CreateParameter("@BomdShl",ftFloat,pdInput,5,m_BomdShl);
m_StoredProc->Parameters->CreateParameter("@BomdProcess",ftString,pdInput,18,m_BomdProcess);
m_StoredProc->Parameters->CreateParameter("@BomdPp",ftInteger,pdInput,1,m_BomdPp);
m_StoredProc->Parameters->CreateParameter("@BomdOp",ftInteger,pdInput,1,m_BomdOp);
m_StoredProc->Parameters->CreateParameter("@BomdRepFlg",ftInteger,pdInput,1,m_BomdRepFlg);
m_StoredProc->Parameters->CreateParameter("@BomdCfg",ftInteger,pdInput,1,m_BomdCfg);
m_StoredProc->Parameters->CreateParameter("@BomdLot",ftFloat,pdInput,7,m_BomdLot);
m_StoredProc->Parameters->CreateParameter("@BomdDesc",ftString,pdInput,40,m_BomdDesc);
m_StoredProc->ExecProc();
m_StoredProc->Close();
}
TsdBomd *p=new TsdBomd();
SetActionID(1);
p->Assign(this);
ChangeRecord((void *)p,p->BomdGoods,this->b_BomdGoods);
}
//---------------------------------------------------------------------------
void TsdBomd::Delete()
{
if(CurStatus!=1)
throw Exception("当前状态不能进行删除操作!");
if(m_BomdSn == 0)
throw Exception("当前没有记录可以删除!");
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdBomd_Delete";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_BomdGoods",ftString,pdInput,18,b_BomdGoods);
m_StoredProc->Parameters->CreateParameter("@W_BomdPgoods",ftString,pdInput,18,b_BomdPgoods);
m_StoredProc->ExecProc();
m_StoredProc->Close();
DeleteRecord(this->b_BomdGoods);
}
//---------------------------------------------------------------------------
void TsdBomd::Assign(TsdBomd *p)
{
this->SetActionID(p->CurStatus);
this->m_BomdPgoods=p->m_BomdPgoods;
this->m_BomdGoods=p->m_BomdGoods;
this->m_BomdUnit=p->m_BomdUnit;
this->m_BomdType=p->m_BomdType;
this->m_BomdFrom=p->m_BomdFrom;
this->m_BomdSn=p->m_BomdSn;
this->m_BomdQty=p->m_BomdQty;
this->m_BomdShl=p->m_BomdShl;
this->m_BomdProcess=p->m_BomdProcess;
this->m_BomdPp=p->m_BomdPp;
this->m_BomdOp=p->m_BomdOp;
this->m_BomdCfg=p->m_BomdCfg;
this->m_BomdLlc=p->m_BomdLlc;
this->m_BomdRepFlg=p->m_BomdRepFlg;
this->m_BomdEco=p->m_BomdEco;
this->m_BomdLot=p->m_BomdLot;
this->m_BomdDesc=p->m_BomdDesc;
if(this->CurStatus==3)
{
this->b_BomdPgoods=p->b_BomdPgoods;
this->b_BomdGoods=p->b_BomdGoods;
this->b_BomdUnit=p->b_BomdUnit;
this->b_BomdType=p->b_BomdType;
this->b_BomdFrom=p->b_BomdFrom;
this->b_BomdSn=p->b_BomdSn;
this->b_BomdQty=p->b_BomdQty;
this->b_BomdShl=p->b_BomdShl;
this->b_BomdProcess=p->b_BomdProcess;
this->b_BomdPp=p->b_BomdPp;
this->b_BomdOp=p->b_BomdOp;
this->b_BomdCfg=p->b_BomdCfg;
this->b_BomdLlc=p->b_BomdLlc;
this->b_BomdRepFlg=p->b_BomdRepFlg;
this->b_BomdEco=p->b_BomdEco;
this->b_BomdLot=p->b_BomdLot;
this->b_BomdDesc=p->b_BomdDesc;
}
else
this->BackupValue();
}
//---------------------------------------------------------------------------
void TsdBomd::AssignValue()
{
TsdBomd *p=(TsdBomd *)Records(CurRecNo);
Assign(p);
}
//---------------------------------------------------------------------------
int TsdBomd::Query()
{
AnsiString m_SqlStr;
m_SqlStr=QueryString;
if(FilterString.IsEmpty()==false)
m_SqlStr=m_SqlStr+ " Where " + FilterString;
if(OrderString.IsEmpty()==false)
m_SqlStr=m_SqlStr+" Order by "+OrderString;
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add(m_SqlStr);
m_Query->Open();
ClearRecord();
if(m_Query->RecordCount>0)
{
m_Query->First();
while(!m_Query->Eof)
{
BatchLetValue();
TsdBomd *p=new TsdBomd();
SetActionID(1);
p->Assign(this);
AddRecord((void *)p,p->BomdGoods);
m_Query->Next();
}
MoveFirst();
}
m_Query->Close();
return Count;
}
//---------------------------------------------------------------------------
bool TsdBomd::Find(AnsiString WhereStr)
{
AnsiString m_SqlStr;
if(WhereStr.IsEmpty()==true)
throw Exception("查找的条件表达式不能为空!");
m_SqlStr="select * from sdBomd where "+WhereStr;
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add(m_SqlStr);
m_Query->Open();
if(m_Query->RecordCount!=1)
{
m_Query->Close();
return false;
}
else
{
BatchLetValue();
m_Query->Close();
return true;
}
}
//---------------------------------------------------------------------------
TsdBomd::~TsdBomd()
{
try
{
}
catch(...)
{
throw Exception("析构函数出错!");
}
}
//---------------------------------------------------------------------------
//***************************************
// ClassName:(TsdPbomh) //
// Description:计划物料单头的维护 //
// Created On:2000/06/01 //
//***************************************
TsdPbomh::TsdPbomh(TDataComm *DC)
:TsdHead(DC)
{
try
{
QueryString="Select * from sdPbomh";
FilterString="";
OrderString=" PbomhGoods";
m_sdPbomd=NULL;
EmptyValue(0);
EmptyValue(1);
}
catch(...)
{
throw Exception("构造函数出错!");
}
}
//---------------------------------------------------------------------------
TsdPbomh::TsdPbomh()
:TsdHead()
{
try
{
QueryString="Select * from sdPbomh";
FilterString="";
OrderString=" PbomhGoods";
m_sdPbomd=NULL;
EmptyValue(0);
EmptyValue(1);
}
catch(...)
{
throw Exception("构造函数出错!");
}
}
//---------------------------------------------------------------------------
void __fastcall TsdPbomh::SetPbomhGoods(AnsiString value)
{
if(value.IsEmpty())
throw Exception("计划物料清单的父件编码不能为空!");
if(value != m_PbomhGoods)
{
//唯一性
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select PbomhGoods from sdPbomh Where PbomhGoods='"+value+"'");
m_Query->Open();
if(m_Query->RecordCount>0)
{
m_Query->Close();
throw Exception("计划物料清单的父件编码:'"+value+"'已经存在!");
}
//合法性
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select GoodsUnitCode,GoodsType,GoodsEoq from sdGoods Where (GoodsType=1 or GoodsType=2) and GoodsFrom=2 and GoodsCode='"+value+"'");
m_Query->Open();
if(m_Query->RecordCount>0)
{
m_PbomhType=m_Query->FieldValues["GoodsType"];
m_PbomhUnit=m_Query->FieldValues["GoodsUnitCode"];
m_PbomhEoq=m_Query->FieldValues["GoodsEoq"]; //批量
m_Query->Close();
}
else
{
m_Query->Close();
throw Exception("该物料编码:'"+value+"'不存在或者不符合条件!");
}
}
m_PbomhGoods = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPbomh::SetPbomhRlt(double value)
{
if(value<0)
throw Exception("运行提前期不能小于零!");
m_PbomhRlt = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPbomh::SetPbomhOp(int value)
{
if(value!=1 && value!=1 && value!=2 && value!=3 && value!=4 && value!=5 && value!=6)
throw Exception("订货策略只能取值(1-无策略,2-订货点策略,3-订货上限策略,\n4-定期订货策略,5-定量订货策略,6-手工订货策略.)");
m_PbomhOp = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPbomh::SetPbomhPp(int value)
{
if(value!=1 && value!=2 && value!=3 && value!=4 && value!=5 && value!=6)
throw Exception("计划方法只能取值(1-MRP,2-MPS,3-订货点,4-预测,5-成套件,6-自定义.)");
m_PbomhPp = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPbomh::SetPbomhEoq(double value)
{
if(value<0)
throw Exception("批量的大小不能够小于零!");
m_PbomhEoq = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPbomh::SetPbomhFpr(double value)
{
if(value<0 && value>1)
throw Exception("成品率不能小于零或大于100%");
m_PbomhFpr = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPbomh::SetPbomhUser(AnsiString value)
{
if(value.IsEmpty())
throw Exception("操作员代码不能为空!");
if(value.Length()>18)
throw Exception("操作员代码长度不能大于18!");
if(value!=m_PbomhUser)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select UserCode from sdUser where UserCode='"+value+"'");
m_Query->Open();
if(m_Query->RecordCount<=0)
{
m_Query->Close();
throw Exception("未定义操作员:'"+value+"'!");
}
m_Query->Close();
}
m_PbomhUser = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPbomh::SetPbomhProducter(AnsiString value)
{
if(value.IsEmpty())
throw Exception("生管员代码不能为空!");
if(value.Length()>18)
throw Exception("生管员代码长度不能大于18!");
if(value!=m_PbomhProducter)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select ProducterCode from sdProducter where ProducterCode='"+value+"'");
m_Query->Open();
if(m_Query->RecordCount<=0)
{
m_Query->Close();
throw Exception("未定义生管员:"+value);
}
m_Query->Close();
}
m_PbomhProducter = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdPbomh::SetPbomhEdate(AnsiString value)
{
if(value.IsEmpty()==false)
m_PbomhEdate=Validate(value);
else
throw Exception("计划物料清单的生效日期不能为空!");
}
//---------------------------------------------------------------------------
void __fastcall TsdPbomh::SetPbomhIdate(AnsiString value)
{
if(m_PbomhEdate.IsEmpty())
throw Exception("生效日期不能为空");
if(!value.IsEmpty())
{
m_PbomhIdate=Validate(value);
if(m_PbomhIdate<=m_PbomhEdate)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -