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 + -
显示快捷键?