📄 bmhdl.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#define _YW_SDERP_DLL
#include "Bmhdl.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
//***************************************
// ClassName:(TsdBomh) //
// Description:物料单头的维护 //
// Created On:2000/06/01 //
//***************************************
//---------------------------------------------------------------------------
TsdBomh::TsdBomh(TDataComm *DC)
:TsdHead(DC)
{
try
{
QueryString="select * from sdBomh";
FilterString="";
OrderString=" BomhGoods";
m_sdBomd=NULL;
EmptyValue(0);
EmptyValue(1);
}
catch(...)
{
throw Exception("构造函数出错!");
}
}
//---------------------------------------------------------------------------
TsdBomh::TsdBomh()
:TsdHead()
{
try
{
QueryString="select * from sdBomh";
FilterString="";
OrderString=" BomhGoods";
m_sdBomd=NULL;
EmptyValue(0);
EmptyValue(1);
}
catch(...)
{
throw Exception("构造函数出错!");
}
}
//---------------------------------------------------------------------------
void __fastcall TsdBomh::SetBomhGoods(AnsiString value)
{
if(value.IsEmpty())
throw Exception("物料单的父件编码不能为空!");
if(value.Length()>18)
throw Exception("物料单的父件编码的长度不能大于18!");
if(value != m_BomhGoods)
{
//唯一性(关键字)
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select BomhGoods from sdBomh Where BomhGoods='"+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_BomhType=m_Query->FieldValues["GoodsType"];
m_BomhUnit=m_Query->FieldValues["GoodsUnitCode"];
m_BomhEoq=m_Query->FieldValues["GoodsEoq"]; //批量
m_Query->Close();
}
else
{
m_Query->Close();
throw Exception("该货物编码:'"+value+"'不存在或者不符合条件!");
}
}
m_BomhGoods = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomh::SetBomhEoq(double value)
{
if(value<0)
throw Exception("批量的数量不能小于零!");
m_BomhEoq = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomh::SetBomhRlt(double value)
{
if(value<0)
throw Exception("运行提前期不能小于零!");
m_BomhRlt = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomh::SetBomhOp(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_BomhOp = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomh::SetBomhPp(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_BomhPp = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomh::SetBomhFpr(double value)
{
if(value<0 && value>1)
throw Exception("成品率不能小于零或大于1.");
m_BomhFpr = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomh::SetBomhUser(AnsiString value)
{
if(value.IsEmpty())
throw Exception("操作员代码不能为空!");
if(value.Length()>18)
throw Exception("操作员代码长度不能大于18!");
if(value!=m_BomhUser)
{
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_BomhUser = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomh::SetBomhEdate(AnsiString value)
{
if(!value.IsEmpty())
m_BomhEdate=Validate(value);
else
throw Exception("物料单的生效日期不能为空!");
}
//---------------------------------------------------------------------------
void __fastcall TsdBomh::SetBomhIdate(AnsiString value)
{
if(m_BomhEdate.IsEmpty())
throw Exception("生效日期不能为空!");
if(!value.IsEmpty())
{
m_BomhIdate=Validate(value);
if(m_BomhIdate<=m_BomhEdate)
{
m_BomhIdate="";
throw Exception("失效日期不能小于等于生效日期!");
}
}
else
m_BomhIdate="";
}
//---------------------------------------------------------------------------
void __fastcall TsdBomh::SetBomhProducter(AnsiString value)
{
if(value.IsEmpty())
throw Exception("生管员代码不能为空!");
if(value.Length()>18)
throw Exception("生管员代码长度不能大于18!");
if(value!=m_BomhProducter)
{
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_BomhProducter = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomh::SetBomhDesc(AnsiString value)
{
if(value.Length()>40)
throw Exception("备注长度不能大于40!");
m_BomhDesc = value;
}
//---------------------------------------------------------------------------
AnsiString TsdBomh::GetFieldValue(euBomh sdFieldName)
{
switch(sdFieldName)
{
case fiBomhGoods:
return BomhGoods;
case fiBomhUnit:
return BomhUnit;
case fiBomhType:
return AnsiString(BomhType);
case fiBomhEoq:
return AnsiString(BomhEoq);
case fiBomhRlt:
return AnsiString(BomhRlt);
case fiBomhFpr:
return AnsiString(BomhFpr);
case fiBomhPp:
return AnsiString(BomhPp);
case fiBomhOp:
return AnsiString(BomhOp);
case fiBomhUser:
return BomhUser;
case fiBomhEdate:
return BomhEdate;
case fiBomhIdate:
return BomhIdate;
case fiBomhProducter:
return BomhProducter;
case fiBomhDesc:
return BomhDesc;
case fiBomhSysDate:
return BomhSysDate;
default:
throw Exception("当前字段未定义可取值!");
}
}
//----------------------------------------------------------------------------
void TsdBomh::SetFieldValue(euBomh sdFieldName, AnsiString value)
{
switch(sdFieldName)
{
case fiBomhGoods:
BomhGoods=value;
break;
case fiBomhEoq:
BomhEoq=value.ToDouble();
break;
case fiBomhRlt:
BomhRlt=value.ToDouble();
break;
case fiBomhFpr:
BomhFpr=value.ToDouble();
break;
case fiBomhPp:
BomhPp=value.ToInt();
break;
case fiBomhOp:
BomhOp=value.ToInt();
break;
case fiBomhUser:
BomhUser=value;
break;
case fiBomhProducter:
BomhProducter=value;
break;
case fiBomhEdate:
BomhEdate=value;
break;
case fiBomhIdate:
BomhIdate=value;
break;
case fiBomhDesc:
BomhDesc=value;
break;
default:
throw Exception("当前字段未定义可赋值!");
}
}
//----------------------------------------------------------------------------
void TsdBomh::Update()
{
if(CurStatus==0 || CurStatus==1)
throw Exception("当前不是编辑状态,不能进行存盘操作!");
if(m_BomhGoods.IsEmpty()==true)
throw Exception("物料单的父件编码不能为空!");
if(ItemCount<=0)
throw Exception("物料单没有没有定义行明细字段!");
m_StoredProc->Close();
switch(CurStatus)
{
case 2:
case 4:
m_StoredProc->ProcedureName="sdBomh_Insert";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@BomhGoods",ftString,pdInput,18,m_BomhGoods);
m_StoredProc->Parameters->CreateParameter("@BomhType",ftInteger,pdInput,1,m_BomhType);
m_StoredProc->Parameters->CreateParameter("@BomhUnit",ftString,pdInput,18,m_BomhUnit);
m_StoredProc->Parameters->CreateParameter("@BomhEoq",ftFloat,pdInput,12,m_BomhEoq);
m_StoredProc->Parameters->CreateParameter("@BomhRlt",ftFloat,pdInput,12,m_BomhRlt);
m_StoredProc->Parameters->CreateParameter("@BomhFpr",ftFloat,pdInput,5,m_BomhFpr);
m_StoredProc->Parameters->CreateParameter("@BomhPp",ftInteger,pdInput,1,m_BomhPp);
m_StoredProc->Parameters->CreateParameter("@BomhOp",ftInteger,pdInput,1,m_BomhOp);
m_StoredProc->Parameters->CreateParameter("@BomhUser",ftString,pdInput,18,m_BomhUser);
m_StoredProc->Parameters->CreateParameter("@BomhProducter",ftString,pdInput,18,m_BomhProducter);
m_StoredProc->Parameters->CreateParameter("@BomhEdate",ftString,pdInput,10,m_BomhEdate);
m_StoredProc->Parameters->CreateParameter("@BomhIdate",ftString,pdInput,10,m_BomhIdate);
m_StoredProc->Parameters->CreateParameter("@BomhDesc",ftString,pdInput,40,m_BomhDesc);
m_StoredProc->Parameters->CreateParameter("@BomhSysDate",ftString,pdOutput,40,m_BomhSysDate);
m_StoredProc->ExecProc();
m_BomhSysDate=m_StoredProc->Parameters->ParamValues["@BomhSysDate"];
m_StoredProc->Close();
for(int i=0;i<ItemCount;i++)
{
LocateItemByIndex(i);
m_sdBomd->Update();
}
break;
case 3:
m_StoredProc->ProcedureName="sdBomh_Update";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_BomhGoods",ftString,pdInput,18,b_BomhGoods);
m_StoredProc->Parameters->CreateParameter("@BomhRlt",ftFloat,pdInput,12,m_BomhRlt);
m_StoredProc->Parameters->CreateParameter("@BomhFpr",ftFloat,pdInput,5,m_BomhFpr);
m_StoredProc->Parameters->CreateParameter("@BomhPp",ftInteger,pdInput,1,m_BomhPp);
m_StoredProc->Parameters->CreateParameter("@BomhOp",ftInteger,pdInput,1,m_BomhOp);
m_StoredProc->Parameters->CreateParameter("@BomhUser",ftString,pdInput,18,m_BomhUser);
m_StoredProc->Parameters->CreateParameter("@BomhProducter",ftString,pdInput,18,m_BomhProducter);
m_StoredProc->Parameters->CreateParameter("@BomhEdate",ftString,pdInput,10,m_BomhEdate);
m_StoredProc->Parameters->CreateParameter("@BomhIdate",ftString,pdInput,10,m_BomhIdate);
m_StoredProc->Parameters->CreateParameter("@BomhDesc",ftString,pdInput,40,m_BomhDesc);
m_StoredProc->Parameters->CreateParameter("@BomhSysDate",ftString,pdOutput,40,m_BomhSysDate);
m_StoredProc->ExecProc();
m_BomhSysDate=m_StoredProc->Parameters->ParamValues["@BomhSysDate"];
m_StoredProc->Close();
break;
case 5:
case 6:
case 7:
for(int i=0;i<ItemCount;i++)
{
LocateItemByIndex(i);
if(m_sdBomd->CurStatus==2 || m_sdBomd->CurStatus==3)
m_sdBomd->Update();
}
break;
}
TsdBomh *p=new TsdBomh();
if(CurStatus==2)
{
SetActionID(1);
p->Assign(this);
AddRecord((void *)p,p->BomhGoods);
}
else
{
SetActionID(1);
p->Assign(this);
ChangeRecord((void *)p,p->BomhGoods,this->b_BomhGoods);
}
}
//---------------------------------------------------------------------------
void TsdBomh::Delete()
{
if(CurStatus!=1)
throw Exception("当前状态不能进行删除操作!");
if(m_BomhGoods.IsEmpty()==true)
throw Exception("当前没有记录可以删除!");
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdBomh_Delete";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_BomhGoods",ftString,pdInput,18,b_BomhGoods);
m_StoredProc->ExecProc();
m_StoredProc->Close();
delete m_sdBomd;
DeleteRecord(this->b_BomhGoods);
}
//---------------------------------------------------------------------------
void TsdBomh::NewDetail()
{
m_sdBomd=new TsdBomd(DataComm);
m_sdBomd->sdParent=this;
}
//---------------------------------------------------------------------------
void TsdBomh::DeleteDetail()
{
delete m_sdBomd;
m_sdBomd=NULL;
}
//---------------------------------------------------------------------------
void TsdBomh::AddItem()
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -