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

📄 bmhdl.cpp

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