⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bmhdl.cpp

📁 邮 电 公 司 erp源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//---------------------------------------------------------------------------
AnsiString __fastcall TsdBomh::GetItemBookMark()
{
    return m_sdBomd->BookMark;
}
//---------------------------------------------------------------------------
TsdBomh::~TsdBomh()
{
    try{
       for(int i=0;i<this->Count;i++)
       {
         this->LocateByIndex(i);
         this->AssignValue();
         delete m_sdBomd;
       }
    }
    catch(...)
    {
       throw Exception("析构函数出错!");
    }
}
//---------------------------------------------------------------------------

//***************************************
//     ClassName:(TsdBomd)             //
//     Description:物料单明细的维护    //
//     Created On:2000/06/01           //
//***************************************
TsdBomd::TsdBomd(TDataComm *DC)
:TsdDetail(DC)
{
    try
    {
      QueryString="select * from sdBomd";
      FilterString="";
      OrderString=" BomdPgoods,BomdSn";
      EmptyValue(0);
      EmptyValue(1);
    }
    catch(...)
    {
       throw Exception("构造函数出错!");
    }
}
//---------------------------------------------------------------------------
TsdBomd::TsdBomd()
:TsdDetail()
{
    try
    {
      QueryString="select * from sdBomd";
      FilterString="";
      OrderString=" BomdPgoods,BomdSn";
      EmptyValue(0);
      EmptyValue(1);
    }
    catch(...)
    {
       throw Exception("构造函数出错!");
    }
}
//---------------------------------------------------------------------------

void __fastcall TsdBomd::SetBomdGoods(AnsiString value)
{
    if(value.IsEmpty())
       throw Exception("工程物料单的子件编码不能为空!");
    if(value.Length()>18)
       throw Exception("工程物料单的子件编码的长度不能大于18!");
    if(value.UpperCase()==sdParent->GetFieldValue(fiBomhGoods).UpperCase())
      throw Exception("子件编码不能重用父件编码");
    if(value != m_BomdGoods)
    {
      if(this->FindKey(value))
         throw Exception("工程物料单的子件编码:'"+value+"'已存在!");
      m_Query->Close();
      m_Query->SQL->Clear();
      m_Query->SQL->Add("select GoodsUnitCode,GoodsType,GoodsFrom from sdGoods Where GoodsType<>1 and GoodsCode='"+value+"'");
      m_Query->Open();
      if(m_Query->RecordCount>0)
      {
         m_BomdUnit=m_Query->FieldValues["GoodsUnitCode"];
         m_BomdType=m_Query->FieldValues["GoodsType"];
         m_BomdFrom=m_Query->FieldValues["GoodsFrom"];
         m_Query->Close();
      }
      else
      {
         m_Query->Close();
         throw Exception("该货物编码:'"+value+"'不存在或者不符合条件!");
      }
    }
    m_BomdGoods = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomd::SetBomdPgoods(AnsiString value)
{
    if(value.IsEmpty())
       throw Exception("工程物料单子件编码的父件编码不能为空!");
    m_BomdPgoods = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomd::SetBomdSn(int value)
{
    if(value<=0)
       throw Exception("工程物料单子件编码的序号必须为整数且大于零!");
    m_BomdSn = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomd::SetBomdQty(double value)
{
    if(value<=0)
       throw Exception("消耗定额不能小于等于零!");
    m_BomdQty = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomd::SetBomdShl(double value)
{
    if(value<0 || value>1)
       throw Exception("损耗率不能小于零或大于1.");
    m_BomdShl = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomd::SetBomdPp(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_BomdPp = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomd::SetBomdOp(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_BomdOp = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomd::SetBomdProcess(AnsiString value)
{
    if(value.IsEmpty())
      throw Exception("工序的代码不能为空!");
    if(value.Length()>18)
      throw Exception("工序的代码长度不能大于18!");
    if(value != m_BomdProcess)
    {
      m_Query->Close();
      m_Query->SQL->Clear();
      m_Query->SQL->Add("select ProcessCode from sdProcess where ProcessCode='"+value+"'");
      m_Query->Open();
      if(m_Query->RecordCount<=0)
      {
        m_Query->Close();
        throw Exception("未定义工序代码:"+value);
      }
      m_Query->Close();
    }
    m_BomdProcess = value;
}
//---------------------------------------------------------------------------

void __fastcall TsdBomd::SetBomdCfg(int value)
{
    if(value!=1 && value!=2 && value!=3)
      throw Exception("配置类型只能取值(1-必需件,2-可选件,3-常用件.)");
    m_BomdCfg = value;
}
//---------------------------------------------------------------------------

void __fastcall TsdBomd::SetBomdRepFlg(int value)
{
    //非写属性
    //0-未被替换,1-已被替换
    m_BomdRepFlg = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomd::SetBomdLot(double value)
{
    if(value<0)
       throw Exception("偏置时间不能小于零!");
    m_BomdLot = value;
}
//---------------------------------------------------------------------------
void __fastcall TsdBomd::SetBomdDesc(AnsiString value)
{
    if(value.Length()>40)
       throw Exception("备注长度不能大于40!");
    m_BomdDesc = value;
}
//---------------------------------------------------------------------------
AnsiString TsdBomd::GetFieldValue(euBomd sdFieldName)
{
    switch(sdFieldName)
    {
      case fiBomdPgoods:
        return BomdPgoods;
      case fiBomdGoods:
        return BomdGoods;
      case fiBomdUnit:
        return BomdUnit;
      case fiBomdProcess:
        return BomdProcess;
      case fiBomdType:
        return AnsiString(BomdType);
      case fiBomdFrom:
        return AnsiString(BomdFrom);
      case fiBomdSn:
        return AnsiString(BomdSn);
      case fiBomdQty:
        return AnsiString(BomdQty);
      case fiBomdShl:
        return AnsiString(BomdShl);
      case fiBomdPp:
        return AnsiString(BomdPp);
      case fiBomdOp:
        return AnsiString(BomdOp);
      case fiBomdCfg:
        return AnsiString(BomdCfg);
      case fiBomdLlc:
        return AnsiString(BomdLlc);
      case fiBomdRepFlg:
        return AnsiString(BomdRepFlg);
      case fiBomdEco:
        return BomdEco;
      case fiBomdLot:
        return AnsiString(BomdLot);
      case fiBomdDesc:
        return BomdDesc;
      default:
        throw Exception("当前字段未定义可取值!");
    }
}
//----------------------------------------------------------------------------

AnsiString TsdBomd::GetOldFieldValue(euBomd sdFieldName)
{
    switch(sdFieldName)
    {
      case fiBomdPgoods:
        return b_BomdPgoods;
      case fiBomdGoods:
        return b_BomdGoods;
      case fiBomdUnit:
        return b_BomdUnit;
      case fiBomdProcess:
        return b_BomdProcess;
      case fiBomdType:
        return AnsiString(b_BomdType);
      case fiBomdFrom:
        return AnsiString(b_BomdFrom);
      case fiBomdSn:
        return AnsiString(b_BomdSn);
      case fiBomdQty:
        return AnsiString(b_BomdQty);
      case fiBomdShl:
        return AnsiString(b_BomdShl);
      case fiBomdPp:
        return AnsiString(b_BomdPp);
      case fiBomdOp:
        return AnsiString(b_BomdOp);
      case fiBomdCfg:
        return AnsiString(b_BomdCfg);
      case fiBomdLlc:
        return AnsiString(b_BomdLlc);
      case fiBomdRepFlg:
        return AnsiString(b_BomdRepFlg);
      case fiBomdEco:
        return b_BomdEco;
      case fiBomdLot:
        return AnsiString(b_BomdLot);
      case fiBomdDesc:
        return b_BomdDesc;
      default:
        throw Exception("当前字段未定义可取值!");
    }
}

void TsdBomd::SetFieldValue(euBomd sdFieldName, AnsiString value)
{
    switch(sdFieldName)
    {
      case fiBomdPgoods:
        BomdPgoods=value;
        break;
      case fiBomdGoods:
        BomdGoods=value;
        break;
      case fiBomdSn:
        BomdSn=value.ToInt();
        break;
      case fiBomdRepFlg:
        BomdRepFlg=value.ToInt();
        break;
      case fiBomdQty:
        BomdQty=value.ToDouble();
        break;
      case fiBomdShl:
        BomdShl=value.ToDouble();
        break;
      case fiBomdProcess:
        BomdProcess=value;
        break;
      case fiBomdPp:
        BomdPp=value.ToInt();
        break;
      case fiBomdOp:
        BomdOp=value.ToInt();
        break;
      case fiBomdCfg:
        BomdCfg=value.ToInt();
        break;
      case fiBomdLot:
        BomdLot=value.ToDouble();
        break;
      case fiBomdDesc:
        BomdDesc=value;
        break;
      default:
        throw Exception("当前字段未定义可赋值!");
    }
}
//----------------------------------------------------------------------------
void TsdBomd::BackupValue()
{
    b_BomdPgoods=m_BomdPgoods;
    b_BomdGoods=m_BomdGoods;
    b_BomdUnit=m_BomdUnit;
    b_BomdType=m_BomdType;
    b_BomdFrom=m_BomdFrom;
    b_BomdSn=m_BomdSn;
    b_BomdQty=m_BomdQty;
    b_BomdShl=m_BomdShl;
    b_BomdProcess=m_BomdProcess;
    b_BomdPp=m_BomdPp;
    b_BomdOp=m_BomdOp;
    b_BomdCfg=m_BomdCfg;
    b_BomdLlc=m_BomdLlc;
    b_BomdRepFlg=m_BomdRepFlg;
    b_BomdEco=m_BomdEco;
    b_BomdLot=m_BomdLot;
    b_BomdDesc=m_BomdDesc;
}
//----------------------------------------------------------------------------
void TsdBomd::RestoreValue()
{
    m_BomdPgoods=b_BomdPgoods;
    m_BomdGoods=b_BomdGoods;
    m_BomdUnit=b_BomdUnit;
    m_BomdType=b_BomdType;
    m_BomdFrom=b_BomdFrom;
    m_BomdSn=b_BomdSn;
    m_BomdQty=b_BomdQty;
    m_BomdShl=b_BomdShl;
    m_BomdProcess=b_BomdProcess;
    m_BomdPp=b_BomdPp;
    m_BomdOp=b_BomdOp;
    m_BomdCfg=b_BomdCfg;
    m_BomdLlc=b_BomdLlc;
    m_BomdRepFlg=b_BomdRepFlg;
    m_BomdEco=b_BomdEco;
    m_BomdLot=b_BomdLot;
    m_BomdDesc=b_BomdDesc;
}
//----------------------------------------------------------------------------
void TsdBomd::EmptyValue(int Index)
{
   switch(Index)
   {
     case 0:
        m_BomdPgoods="";
        m_BomdGoods="";
        m_BomdUnit="";
        m_BomdType=0;
        m_BomdFrom=0;
        m_BomdSn=0;
        m_BomdQty=0;
        m_BomdShl=0;
        m_BomdProcess="";
        m_BomdPp=0;
        m_BomdOp=0;
        m_BomdCfg=0;
        m_BomdLlc=0;
        m_BomdRepFlg=0;
        m_BomdEco="";
        m_BomdLot=0;
        m_BomdDesc="";
        break;
     case 1:
        b_BomdPgoods="";
        b_BomdGoods="";
        b_BomdUnit="";
        b_BomdType=0;
        b_BomdFrom=0;
        b_BomdSn=0;
        b_BomdQty=0;
        b_BomdShl=0;
        b_BomdProcess="";
        b_BomdPp=0;
        b_BomdOp=0;
        b_BomdCfg=0;
        b_BomdLlc=0;
        b_BomdRepFlg=0;
        b_BomdEco="";
        b_BomdLot=0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -