📄 mmhdl.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#define _YW_SDERP_DLL
#include "mmhdl.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
//************************************
// Class:TsdWo //
// Description:加工生产工单 //
// Created on 2000/10/12 //
//************************************
void __fastcall TsdWo::SetWoCode(AnsiString value)
{
if(value.IsEmpty())
throw Exception("加工单的单号不能为空!");
if(value.Length()>18)
throw Exception("加工单号长度不能大于18!");
if(value!=m_WoCode)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select WoCode From sdWo Where WoCode='"+value+"'");
m_Query->Open();
if(m_Query->RecordCount>0)
{
m_Query->Close();
throw Exception("加工单的单号:'"+value+"'已经存在,不能重复!");
}
m_Query->Close();
}
m_WoCode = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoStatus(int value)
{
if(value!=1 && value!=2 && value!=3 && value!=4 && value!=5)
throw Exception("加工单状态只能取值(1-预备,2-确认计划,3-待下达,4-已下达,5-已完工)!");
m_WoStatus = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoType(int value)
{
if(value!=1 && value!=2 && value!=3 && value!=4 && value!=5)
throw Exception("加工单类型只能取值(1-常规加工,2-返工,3-改装,4-委外加工,5-副产品)!");
m_WoType = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoConsume(int value)
{
if(value!=1 && value!=2 && value!=3)
throw Exception("物料消耗方式只能取值(1-配套表,2-BOM表,3-不消耗)!");
m_WoConsume = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoTrace(int value)
{
if(value!=1 && value!=2 && value!=3)
throw Exception("跟踪标志只能取值(1-工艺路线,2-工单路线,3-不跟踪)!");
m_WoTrace = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoGoods(AnsiString value)
{
if(value.IsEmpty())
throw Exception("加工单的加工件编号不能为空!");
if(value.Length()>18)
throw Exception("加工件编码长度不能大于18!");
if(value!=m_WoGoods)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select GoodsCode,GoodsUnitCode,GoodsTrackSo,GoodsBatch From sdGoods Where (GoodsType=1 or GoodsType=2) and GoodsFrom=2 and GoodsCode='"+value+"'");
m_Query->Open();
if(m_Query->RecordCount>0)
{
m_WoUnit=m_Query->FieldValues["GoodsUnitCode"];
FTrackSo=m_Query->FieldValues["GoodsTrackSo"]; //跟踪订单
FBatchCode=m_Query->FieldValues["GoodsBatch"]; //批次管理
m_Query->Close();
}
else
{
m_Query->Close();
throw Exception("加工单的加工件编码:'"+value+"'不存在或不符合条件!");
}
}
m_WoGoods = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoSoCode(AnsiString value)
{
if(!value.IsEmpty())
{
if(FTrackSo!=1)
throw Exception("加工件:'"+m_WoGoods+"'未定义成可跟踪订单");
if(value.Length()>18)
throw Exception("订单号长度不能大于18!");
if(value.IsEmpty()==false)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select SohCode from sdSoh where SohCheck=1 and SohCancel=0 and SohClose=0 and SohCode='"+value+"'");
m_Query->Open();
if(m_Query->RecordCount<=0)
{
m_Query->Close();
throw Exception("销售订单:"+value+"不存在,或未审核,或已作废,或已结清!");
}
m_Query->Close();
}
m_WoSoCode = value;
}
else
m_WoSoCode="";
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoSodLine(int value)
{
if(!m_WoSoCode.IsEmpty())
{
if(value<0 || value==0)
throw Exception("当订单的单号不为空时,订单的行号不能为空!");
if(value!=m_WoSodLine)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select SodLine,SodGoods from sdSod where SodCode='"+m_WoSoCode+"' and SodLine="+AnsiString(value));
m_Query->Open();
if(m_Query->RecordCount<=0)
{
m_Query->Close();
throw Exception("订单号:'"+m_WoSoCode+"'的订单行号:'"+IntToStr(value)+"'不存在!");
}
else
{
AnsiString FGoodsCode;
FGoodsCode=m_Query->FieldValues["SodGoods"];
if(FGoodsCode!=m_WoGoods)
throw Exception("加工件:'"+m_WoGoods+"'和订单行'"+AnsiString(value)+"'对应的货物编码:'"+FGoodsCode+"'不相同.");
}
m_Query->Close();
}
m_WoSodLine = value;
}
else
m_WoSodLine=0;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoRoute(AnsiString value)
{
if(m_WoTrace==1)
{
if(value.IsEmpty())
throw Exception("按工艺路线加工时,工艺路线号不能为空!");
if(value.Length()>18)
throw Exception("工艺路线长度不能大于18!");
if(value!=m_WoRoute)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select RoutehCode from sdRouteh where RoutehCancel=0 and RoutehCode='"+value+"'");
m_Query->Open();
if(m_Query->RecordCount<=0)
{
m_Query->Close();
throw Exception("工艺路线的代码:'"+value+"'不存在或已取消!");
}
m_Query->Close();
}
m_WoRoute = value;
}
else
m_WoRoute="";
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoBatch(AnsiString value)
{
if(!value.IsEmpty())
{
if(FBatchCode!=1 )
throw Exception("加工件:'"+m_WoGoods+"'未定义成可批次管理");
if(value.Length()>18)
throw Exception("批号的长度不能大于18!");
if(value.IsEmpty()==false)
{
if(value!=m_WoBatch)
{
m_Query->Close();
m_Query->SQL->Clear();
AnsiString m_Sql=AnsiString("select BatchCode from sdBatch where '"+g_sdCurDate+"'>=BatchEffectdate and ")+
AnsiString("'"+g_sdCurDate+"'<=(case BatchAbatedate when '' then '9999-99-99' else BatchAbatedate end) ")+
AnsiString("and BatchCode='"+value+"'");
m_Query->SQL->Add(m_Sql);
m_Query->Open();
if(m_Query->RecordCount<=0)
{
m_Query->Close();
throw Exception("批号:'"+value+"'的资料未定义,\n或者批号的有效使用期不符合条件!");
}
m_Query->Close();
m_WoBatch=value;
}
}
}
else
m_WoBatch="";
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoFrom(int value)
{
if(value!=1 && value!=2)
throw Exception("加工单来源只能取值(1-手工录入,2-计划生成)!");
m_WoFrom = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoChkFlg(int value)
{
if(value!=0 && value!=1)
throw Exception("质检标志只能取值(0-不需质检,1-需质检)!");
m_WoChkFlg = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoQty(double value)
{
if(value<0 || value==0)
throw Exception("加工的数量不能小于或等于0!");
m_WoQty = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoDate(AnsiString value)
{
if(value.IsEmpty())
throw Exception("制单日期不能为空!");
else
m_WoDate = Validate(value);
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoRdate(AnsiString value)
{
if(value.IsEmpty())
throw Exception("要求完工日期不能为空!");
else
m_WoRdate = Validate(value);
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoSdate(AnsiString value)
{
if(value.IsEmpty())
throw Exception("开工日期不能为空!");
else
m_WoSdate = Validate(value);
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoUser(AnsiString value)
{
if(value.IsEmpty())
throw Exception("操作员不能为空!");
if(value.Length()>18)
throw Exception("操作员代码长度不能大于18!");
if(value!=m_WoUser)
{
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_WoUser = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoDesc(AnsiString value)
{
m_WoDesc = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoClose(int value)
{
if(value!=0 && value!=1)
throw Exception("结清标志只能取值(0-未结清,1-已结清)!");
m_WoClose=value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoCloseDate(AnsiString value)
{
if(m_WoClose==1)
{
if(value.IsEmpty())
throw Exception("结清日期不能为空!");
m_WoCloseDate=Validate(value);
}
else
m_WoCloseDate="";
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoCheck(int value)
{
if(value!=0 && value!=1)
throw Exception("审核标志只能取值(0-未审核,1-已审核.)");
m_WoCheck=value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoChecker(AnsiString value)
{
if(m_WoCheck==1)
{
if(value.IsEmpty())
throw Exception("加工单的审核人不能为空!");
if(value!=m_WoChecker)
{
m_Query->Close();
m_Query->SQL->Clear();
m_Query->SQL->Add("select ProducterCode from sdProducter where ProducterCode='"+value+"' and ProducterCheck=1");
m_Query->Open();
if(m_Query->RecordCount<=0)
{
m_Query->Close();
throw Exception("审核人:'"+value+"'无审核的权限或未定义!");
}
m_Query->Close();
}
m_WoChecker=value;
}
else
m_WoChecker="";
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoCheckDate(AnsiString value)
{
if(m_WoCheck==1)
{
if(value.IsEmpty())
throw Exception("审核日期不能为空!");
m_WoCheckDate=Validate(value);
}
else
m_WoCheckDate="";
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoCancel(int value)
{
if(value!=0 && value!=1)
throw Exception("取消标志只能取值(0-正常,1-取消)!");
m_WoCancel=value;
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoCancelDate(AnsiString value)
{
if(m_WoCancel==1)
{
if(value.IsEmpty())
throw Exception("取消日期不能为空!");
m_WoCancelDate=Validate(value);
}
else
m_WoCancelDate="";
}
//---------------------------------------------------------------------------
void __fastcall TsdWo::SetWoProducter(AnsiString value)
{
if(value.IsEmpty())
throw Exception("生管员代码不能为空!");
if(value.Length()>18)
throw Exception("生管员代码长度不能大于18!");
if(value!=m_WoProducter)
{
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_WoProducter=value;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -