📄 imdoc.cpp
字号:
m_Query->Close();
throw Exception("货位代码'"+value+"'已存在");
}
m_Query->Close();
}
m_LocCode=value;
}
void __fastcall TsdLoc::SetLocName(AnsiString value)
{
if(value.IsEmpty())
throw Exception("贷位名称不能为空");
if(value.Length()>20)
throw Exception("货位名称长度不能大于20");
m_LocName=value;
}
void __fastcall TsdLoc::SetLocDesc(AnsiString value)
{
if(value.Length()>40)
throw Exception("备注长度不能大于40");
m_LocDesc=value;
}
void __fastcall TsdLoc::SetLocType(int value)
{
if(value!=1 && value!=2 && value!=3 && value!=4 && value!=5 && value!=6 && value!=7 && value!=8 && value!=9)
throw Exception("货位类型只能取值1-存储,2-在制,3-待检,4-待发,5-在途,6-维修,7-次品,8-废品,9-待处理");
m_LocType=value;
}
void __fastcall TsdLoc::SetLocSthCode(AnsiString value)
{
if(value.IsEmpty())
throw Exception("仓库编码不能为空");
if(value.Length()>18)
throw Exception("仓库编码长度不能大于18");
if(value!=m_LocSthCode)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("SELECT SthCODE FROM SDSth WHERE SthCODE='" +value+"'");
m_Query->Open();
if(m_Query->RecordCount<=0)
{
m_Query->Close();
throw Exception("仓库编码'"+value+"'未定义");
}
m_Query->Close();
}
m_LocSthCode=value;
}
void __fastcall TsdLoc::SetLocStkCode(int value)
{
if(value!=1 && value!=2 && value!=3)
throw Exception("盘点方法只能是:1-一般盘点,2-定期盘点,3-循环盘点");
m_LocStkCode=value;
}
void __fastcall TsdLoc::SetLocVirtual(int value)
{
if(value!=0 && value!=1)
throw Exception("虚拟货位标志只能取值0-实物货位1-虚拟货位");
m_LocVirtual=value;
}
void __fastcall TsdLoc::SetLocPlnflg(int value)
{
if(value!=0 && value!=1)
throw Exception("计划运算标志只能取值0-不运算1-运算");
m_LocPlnflg=value;
}
TsdLoc::TsdLoc(TDataComm *DC)
:TsdStandard(DC)
{
try{
QueryString="SELECT * FROM SDLoc";
FilterString="";
OrderString="LOCCODE";
EmptyValue(0);
EmptyValue(1);
}
catch(...)
{
throw Exception("构造函数出错!");
}
}
TsdLoc::TsdLoc()
:TsdStandard()
{
try{
QueryString="SELECT * FROM SDLoc";
FilterString="";
OrderString="LOCCODE";
EmptyValue(0);
EmptyValue(1);
}
catch(...)
{
throw Exception("构造函数出错!");
}
}
AnsiString TsdLoc::GetFieldValue(euLoc sdFieldName)
{
switch(sdFieldName)
{
case fiLocCode:
return LocCode;
case fiLocName:
return LocName;
case fiLocDesc:
return LocDesc;
case fiLocType:
return AnsiString(LocType);
case fiLocSthCode:
return LocSthCode;
case fiLocStkCode:
return LocStkCode;
case fiLocVirtual:
return AnsiString(LocVirtual);
case fiLocPlnflg:
return AnsiString(LocPlnflg);
default:
throw Exception("当前字段未定义可取值");
}
}
void TsdLoc::SetFieldValue(euLoc sdFieldName, AnsiString value)
{
switch(sdFieldName)
{
case fiLocCode:
LocCode=value;
break;
case fiLocName:
LocName=value;
break;
case fiLocDesc:
LocDesc=value;
break;
case fiLocType:
LocType=value.ToInt();
break;
case fiLocSthCode:
LocSthCode=value;
break;
case fiLocStkCode:
LocStkCode=value.ToInt();
break;
case fiLocVirtual:
LocVirtual=value.ToInt();
break;
case fiLocPlnflg:
LocPlnflg=value.ToInt();
break;
default:
throw Exception("当前字段未定义可赋值");
}
}
void TsdLoc::Update()
{
if(CurStatus==0||CurStatus==1)
throw Exception("当前不是编辑状态,不能进行存盘操作!");
if(m_LocCode.IsEmpty()==true)
throw Exception("货位的编码不能为空!");
m_StoredProc->Close();
if(CurStatus==2||CurStatus==4)
{
m_StoredProc->ProcedureName="sdLoc_Insert";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@LocCode",ftString,pdInput,18,m_LocCode);
m_StoredProc->Parameters->CreateParameter("@LocSthCode",ftString,pdInput,18,m_LocSthCode);
m_StoredProc->Parameters->CreateParameter("@LocName",ftString,pdInput,20,m_LocName);
m_StoredProc->Parameters->CreateParameter("@LocDesc",ftString,pdInput,40,m_LocDesc);
m_StoredProc->Parameters->CreateParameter("@LocType",ftInteger,pdInput,1,m_LocType);
m_StoredProc->Parameters->CreateParameter("@LocStkCode",ftInteger,pdInput,1,m_LocStkCode);
m_StoredProc->Parameters->CreateParameter("@LocVirtual",ftInteger,pdInput,1,m_LocVirtual);
m_StoredProc->Parameters->CreateParameter("@LocPlnflg",ftInteger,pdInput,1,m_LocPlnflg);
m_StoredProc->ExecProc();
}
else
{
m_StoredProc->ProcedureName="sdLoc_Update";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_LocCode",ftString,pdInput,18,b_LocCode);
m_StoredProc->Parameters->CreateParameter("@W_LocSthCode",ftString,pdInput,18,b_LocSthCode);
m_StoredProc->Parameters->CreateParameter("@LocCode",ftString,pdInput,18,m_LocCode);
m_StoredProc->Parameters->CreateParameter("@LocSthCode",ftString,pdInput,18,m_LocSthCode);
m_StoredProc->Parameters->CreateParameter("@LocName",ftString,pdInput,20,m_LocName);
m_StoredProc->Parameters->CreateParameter("@LocDesc",ftString,pdInput,40,m_LocDesc);
m_StoredProc->Parameters->CreateParameter("@LocType",ftInteger,pdInput,1,m_LocType);
m_StoredProc->Parameters->CreateParameter("@LocStkCode",ftInteger,pdInput,1,m_LocStkCode);
m_StoredProc->Parameters->CreateParameter("@LocVirtual",ftInteger,pdInput,1,m_LocVirtual);
m_StoredProc->Parameters->CreateParameter("@LocPlnflg",ftInteger,pdInput,1,m_LocPlnflg);
m_StoredProc->ExecProc();
}
TsdLoc *p=new TsdLoc();
if(CurStatus==2)
{
SetActionID(1);
p->Assign(this);
AddRecord((void *)p,p->LocCode);
}
else
{
SetActionID(1);
p->Assign(this);
ChangeRecord((void *)p,p->LocCode,this->b_LocCode);
}
}
void TsdLoc::Delete()
{
if(CurStatus!=1)
throw Exception("当前状态不能进行删除操作!");
if(m_LocCode.IsEmpty()==true)
throw Exception("当前没有记录可以删除!");
m_StoredProc->Close();
m_StoredProc->ProcedureName="sdLoc_Delete";
m_StoredProc->Parameters->Clear();
m_StoredProc->Parameters->CreateParameter("@W_LocCode",ftString,pdInput,18,b_LocCode);
m_StoredProc->Parameters->CreateParameter("@W_LocSthCode",ftString,pdInput,18,b_LocSthCode);
m_StoredProc->ExecProc();
DeleteRecord(this->b_LocCode);
}
void TsdLoc::BackupValue()
{
b_LocCode=m_LocCode;
b_LocName=m_LocName;
b_LocDesc=m_LocDesc;
b_LocType=m_LocType;
b_LocSthCode=m_LocSthCode;
b_LocStkCode=m_LocStkCode;
b_LocVirtual=m_LocVirtual;
b_LocPlnflg=m_LocPlnflg;
}
void TsdLoc::RestoreValue()
{
m_LocCode=b_LocCode;
m_LocName=b_LocName;
m_LocDesc=b_LocDesc;
m_LocType=b_LocType;
m_LocSthCode=b_LocSthCode;
m_LocStkCode=b_LocStkCode;
m_LocVirtual=b_LocVirtual;
m_LocPlnflg=b_LocPlnflg;
}
void TsdLoc::EmptyValue(int Index)
{
switch(Index)
{
case 0:
m_LocCode="";
m_LocName="";
m_LocDesc="";
m_LocType=1;
m_LocSthCode="";
m_LocStkCode=1;
m_LocVirtual=0;
m_LocPlnflg=1;
break;
case 1:
b_LocCode="";
b_LocName="";
b_LocDesc="";
b_LocType=1;
b_LocSthCode="";
b_LocStkCode=1;
b_LocVirtual=0;
b_LocPlnflg=1;
break;
}
}
void TsdLoc::BatchLetValue()
{
m_LocCode=m_Query->FieldValues["LocCode"];
m_LocName=m_Query->FieldValues["LocName"];
m_LocDesc=m_Query->FieldValues["LocDesc"];
m_LocType=m_Query->FieldValues["LocType"];
m_LocSthCode=m_Query->FieldValues["LocSthCode"];
m_LocStkCode=m_Query->FieldValues["LocStkCode"];
m_LocVirtual=m_Query->FieldValues["LocVirtual"];
m_LocPlnflg=m_Query->FieldValues["LocPlnflg"];
BackupValue();
}
void TsdLoc::Assign(TsdLoc *p)
{
SetActionID(p->CurStatus);
m_LocCode=p->m_LocCode;
m_LocName=p->m_LocName;
m_LocDesc=p->m_LocDesc;
m_LocType=p->m_LocType;
m_LocSthCode=p->m_LocSthCode;
m_LocStkCode=p->m_LocStkCode;
m_LocVirtual=p->m_LocVirtual;
m_LocPlnflg=p->m_LocPlnflg;
BackupValue();
}
void TsdLoc::AssignValue()
{
TsdLoc *p=(TsdLoc *)Records(CurRecNo);
Assign(p);
}
int TsdLoc::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();
TsdLoc *p=new TsdLoc();
SetActionID(1);
p->Assign(this);
AddRecord((void *)p,p->LocCode);
m_Query->Next();
}
MoveFirst();
}
m_Query->Close();
return Count;
}
bool TsdLoc::Find(AnsiString WhereStr)
{
AnsiString m_SqlStr;
if(WhereStr.IsEmpty()==true)
throw Exception("查找表达式不能为空");
m_SqlStr="SELECT * FROM SDLoc 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;
}
}
//-------------------------------------------------------------------------
TsdLoc::~TsdLoc()
{
try
{
}
catch(...)
{
throw Exception("析构函数出错");
}
}
//-------------------------------------------------------------------------
///////////////////////////////////////////////////////
// (库存操作原因) ImReason implement
///////////////////////////////////////////////////////
void __fastcall TsdImReason::SetImReasonCode(AnsiString value)
{
if (value.IsEmpty() )
throw Exception("库存操作原因代码不能为空!");
if(value.Length()>18)
throw Exception("原因代码长度不能大于18");
if (value.UpperCase()!=m_ImReasonCode.UpperCase())
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("SELECT ImReasonCode FROM SDImReason WHERE ImReasonCode='" +value+"'");
m_Query->Open();
if(m_Query->RecordCount>0)
{
m_Query->Close();
throw Exception("库存操作原因代码'"+value+"'已存在");
}
m_Query->Close();
}
m_ImReasonCode=value;
}
//-------------------------------------------------------------------------
void __fastcall TsdImReason::SetImReasonDesc(AnsiString value)
{
if(value.IsEmpty())
throw Exception("操作原因不能为空");
if(value.Length()>80)
throw Exception("操作原因长度不能大于80");
m_ImReasonDesc=value;
}
//-------------------------------------------------------------------------
void __fastcall TsdImReason::SetImReasonType(int value)
{
if(value!=1 && value!=2 && value!=3 && value!=4 && value!=5)
throw Exception("操作类型只能是:1-入库,2-出库,3-调拔,4-报废,5-盘点");
m_ImReasonType=value;
}
//-------------------------------------------------------------------------
void __fastcall TsdImReason::SetImReasonFrom(int value)
{
if(value!=1 && value!=2 && value!=3 && value!=4 && value!=5)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -