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

📄 mmhdl.cpp

📁 速达开源ERP系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//---------------------------------------------------------------------------
#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 + -