mrp.cpp

来自「科思ERP部分源码及控件」· C++ 代码 · 共 342 行

CPP
342
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Mrp.h"
//#include "VW_Mrp.h"
#include "VW_Mrp_column.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "QueryBaseForm"
#pragma link "SDGrid"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "KSAdvReport"
#pragma resource "*.dfm"
#define ParaCode "111"   //计划管理参数代码
TfrmMrp *frmMrp;
//---------------------------------------------------------------------------
__fastcall TfrmMrp::TfrmMrp(TComponent* Owner, HWND chWnd, AnsiString ClassCode,AnsiString WhereStr)
        : TQueryBaseForm(Owner,chWnd,ClassCode,WhereStr)
{
 InitFlag1=false;
 InitFlag2=false;
 InitFlag3=false;
 InitFlag4=false;
 InitFlag5=false;
 ClientCommHandle=chWnd;
 MrpCom=new TComServer(Handle,chWnd,ClassCode);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMrp::InitForm()
{
 AnsiString sSQL;
 PageControl1->ActivePage=TabSheet1;
 edtUser->Text=g_sdUserCode;
 edtFMonth->Text=g_sdFMonth;
 edtDate->Text=g_sdCurDate;
/*
 TComResultSet *RsQuery=new TComResultSet(Handle,g_ClientHandle);
 sSQL=" select PlannerCode from sdPlanner where PlannerCode='"+g_sdUserCode+"'";
 RsQuery->Open(sSQL,"");
 RsQuery->MoveFirst();
 if( RsQuery->RecordCount < 1 )
 {
   Panel1->Enabled=false;
   tbQuery->Enabled=false;
   tbGenDetail->Enabled=false;
   ShowMessage("当前用户不是计划员,操作被禁止");
 }
 delete RsQuery;
*/
}
//---------------------------------------------------------------------------
void __fastcall TfrmMrp::InitPage(int PageIndex)
{
 AnsiString sSQL;
 TComResultSet *RsQuery=new TComResultSet(Handle,g_ClientHandle);
 switch(PageIndex)
 {
  case 1: //当前信息
   PageControl1->ActivePage=TabSheet1;
   if(InitFlag1==false)
    InitForm();
   break;
  case 2: //计划参数
   PageControl1->ActivePage=TabSheet2;
   if(InitFlag2==false)
   {
    scType->ClearAll();
    scType->AddItems("1-天","1");
    scType->AddItems("2-周","2");
    scType->AddItems("3-旬","3");
    scType->AddItems("4-半月","4");
    scType->AddItems("5-月","5");
    scType->AddItems("6-季","6");
    scType->AddItems("7-半年","7");
    scType->AddItems("8-年","8");
    scType->ItemIndex=-1;
    sePeriod->Text="";
    scEoqRule->ClearAll();
    scEoqRule->AddItems("0-不使用经济批量","0");
    scEoqRule->AddItems("1-固定批量","1");
    scEoqRule->AddItems("2-倍数批量","2");
    scEoqRule->ItemIndex=-1;

    RsQuery->Close();
    sSQL=" select ParameterCode,ParameterValue from sdParameter where ParameterCode like '";
    sSQL+=ParaCode;
    sSQL+="%' order by ParameterCode";
    RsQuery->Open(sSQL,"");
    RsQuery->MoveFirst();
    while(!RsQuery->Eof)
    {
     if(RsQuery->FieldByName("ParameterCode")=="11101") //展望期
     {sePeriod->Text=RsQuery->FieldByName("ParameterValue");}
     else if(RsQuery->FieldByName("ParameterCode")=="11111") //计划周期类型
     {scType->LocateKey(RsQuery->FieldByName("ParameterValue"));}
     else if(RsQuery->FieldByName("ParameterCode")=="11112") //批量规则
     {scEoqRule->LocateKey(RsQuery->FieldByName("ParameterValue"));}
     RsQuery->MoveNext();
    }
    InitFlag2=true;
   }
   break;
  case 3: //主需求计划
   PageControl1->ActivePage=TabSheet3;
   if(InitFlag3==false)
   {
    AnsiString ItemStr;
    sgMcr->RowCount=1;
    RsQuery->Close();
    sSQL="select * from sdVW_Mcrd where Mcrdfrom = 4 order by McrdRDate,McrdGoods";
    try
    {
     StartWaitForm("正在查询物料相关需求,请稍候...");
     RsQuery->Open(sSQL,"");
     RsQuery->MoveFirst();
     while( RsQuery->Eof == 0)
     {
      ItemStr=    RsQuery->FieldByName("McrdRDate")+
         "\t"+RsQuery->FieldByName("McrdGoods")+
         "\t"+RsQuery->FieldByName("GoodsName")+
         "\t"+RsQuery->FieldByName("McrdRQty") +
         "\t"+RsQuery->FieldByName("Mcrdcode") ;

      sgMcr->AddItem(ItemStr);
      RsQuery->MoveNext();
     }
    }
    __finally
    {
      EndWaitForm();
    }
   }
   break;
  case 4: //计划选项
   PageControl1->ActivePage=TabSheet4;
//   if(InitFlag4==false)
   //  InitForm();
   break;
  case 5: //计划调整
//   PageControl1->ActivePage=TabSheet5;
//   if(InitFlag5==false)
   //  InitForm();
   break;
  default:
   break;
 }
 delete RsQuery;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMrp::tbQueryClick(TObject *Sender)
{
 int ARow;
 TfrmVW_Mrp_column *p;
 if(ARow < 1)
  return;
 try
 {
    StartWaitForm("正在启动MRP查询,请稍候...");
    p=new TfrmVW_Mrp_column(this,"");
 }
 __finally
 {
    EndWaitForm();
 }
 p->ShowModal();
 delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMrp::ClearControl(bool BringToNext)
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMrp::GetDataFromComObject()
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMrp::WaitUserInput()
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMrp::RefreshGridData(int mAction)
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMrp::DisplayBill()
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMrp::GetBill(AnsiString BillID)
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMrp::FillGridWithData()
{
 return;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMrp::GenData()
{
  AnsiString sParam;
  TComResultSet *RQuery=new TComResultSet(Handle,g_ClientHandle);
  if ( Application->MessageBox("确定要重新生成物料需求计划(MRP)吗?","系统提示",MB_YESNO) == IDNO)
    return;
  try
  {
    try
    {

      StartWaitForm("正在生成计划...");
      sParam=GetPlanParam();
      MrpCom->Execute(WideString(sParam));


     RQuery->Close();
     RQuery->Execute(" update sdParameter set parametervalue = 0  where Parametercode='11117'");
     delete RQuery ;
    }
    __finally
    {
      EndWaitForm();
      MrpCom->FreeClass();
    }
  }
  catch(Exception &e)
  {
   RQuery->Close();
   RQuery->Execute(" update sdParameter set parametervalue = 0  where Parametercode='11117'");
   delete RQuery ;
   throw Exception(e.Message);
  }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMrp::FormShow(TObject *Sender)
{
 InitForm();
}
//---------------------------------------------------------------------------
//构造运行计划的参数字串
AnsiString __fastcall TfrmMrp::GetPlanParam()
{
 AnsiString sParam,sPlanner,sIsSupply,sBalance;
 AnsiString sFlag;
 sFlag="#";
 sPlanner=g_sdUserCode;
 if(chkMrpSupply->Checked)
  sIsSupply="1";
 else
  sIsSupply="0";
 if(chkBalance->Checked)
  sBalance="1";
 else
  sBalance="0";
 sParam=sFlag+sPlanner+sFlag+sIsSupply+sFlag+sBalance+sFlag;
 return(sParam);
}
//---------------------------------------------------------------------------

void __fastcall TfrmMrp::BitBtn1Click(TObject *Sender)
{
 //打开计划参数窗体
 ShowClientForm(ClientCommHandle,1110102,"");
}
//---------------------------------------------------------------------------

void __fastcall TfrmMrp::scEoqRuleChange(TObject *Sender)
{
 if(Application->MessageBox("确定要改变计划运算的批量规则吗?", "系统提示", MB_YESNO) == IDYES)
 {
   AnsiString sSQL;
   TComResultSet *RsQuery=new TComResultSet(Handle,g_ClientHandle);
   sSQL=" update sdParameter set ParameterValue='"+scEoqRule->ItemData[1]+"'where ParameterCode='11112'";
   try
   {
    RsQuery->Execute(sSQL);
   }
   __finally
   {
    delete RsQuery;
   }
 }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMrp::N2Click(TObject *Sender)
{
 if(tvwControl->Selected == NULL)
  return;
 if(tvwControl->Selected->Text == "当前信息")
 {
   InitFlag1=false;
   InitPage(1);
 }
 else if(tvwControl->Selected->Text == "计划参数")
 {
   InitFlag2=false;
   InitPage(2);
 }
 else if(tvwControl->Selected->Text == "主需求计划")
 {
   InitFlag3=false;
   InitPage(3);
 }
 else if(tvwControl->Selected->Text == "计划选项")
 {
   InitFlag4=false;
   InitPage(4);
 }
 else if(tvwControl->Selected->Text == "计划调整")
 {
   InitFlag5=false;
   InitPage(5);
 }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMrp::tvwControlClick(TObject *Sender)
{
 if(tvwControl->Selected == NULL)
  return;
 if(tvwControl->Selected->Text == "当前信息")
 { InitPage(1); }
 else if(tvwControl->Selected->Text == "计划参数")
 { InitPage(2); }
 else if(tvwControl->Selected->Text == "主需求计划")
 { InitPage(3); }
 else if(tvwControl->Selected->Text == "计划选项")
 { InitPage(4); }
 else if(tvwControl->Selected->Text == "计划调整")
 { InitPage(5); }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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