mpsgen.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 380 行
CPP
380 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MpsGen.h"
//#include "VW_Mps.h"
#include "VW_Mps_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" //计划管理参数代码
TfrmMpsGen *frmMpsGen;
//---------------------------------------------------------------------------
__fastcall TfrmMpsGen::TfrmMpsGen(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 TfrmMpsGen::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 TfrmMpsGen::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)
{
TComResultSet *RsGenQuery=new TComResultSet(Handle,g_ClientHandle);
RsGenQuery->Close();
RsGenQuery->Open(" EXEC ksGen_MpsMcr '"+g_sdUserCode+"'" ,""); // 设置MPS物料来源
AnsiString ItemStr;
sgMcr->RowCount=1;
RsQuery->Close();
sSQL="select * from sdVW_Mcrd where Mcrdfrom=4 order by Mcrdcode,McrdRDate,McrdGoods";
try
{
StartWaitForm("正在查询物料需求,请稍候...");
RsQuery->Open(sSQL,"");
RsQuery->MoveFirst();
while( RsQuery->Eof == 0)
{
ItemStr= "\t"+RsQuery->FieldByName("Mcrdcode")+
"\t"+RsQuery->FieldByName("McrdRDate")+
"\t"+RsQuery->FieldByName("McrdGoods")+
"\t"+RsQuery->FieldByName("GoodsName")+
"\t"+RsQuery->FieldByName("McrdRQty");
sgMcr->AddItem(ItemStr);
RsQuery->MoveNext();
}
}
__finally
{
EndWaitForm();
}
}
break;
case 4: //计划选项
PageControl1->ActivePage=TabSheet4;
break;
case 5: //计划调整
break;
default:
break;
}
delete RsQuery;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsGen::tbQueryClick(TObject *Sender)
{
int ARow;
TfrmVW_MpsColumn *p;
if(ARow < 1)
return;
try
{
StartWaitForm("正在启动MRP查询,请稍候...");
p=new TfrmVW_MpsColumn(this,"");
}
__finally
{
EndWaitForm();
}
p->ShowModal();
delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsGen::GenData()
{
AnsiString sParam;
TComResultSet *RsQuery=new TComResultSet(Handle,g_ClientHandle);
if ( Application->MessageBox("确定要重新生成主生产计划(MPS)吗?","系统提示",MB_YESNO) == IDNO)
return;
try
{
try
{
StartWaitForm("正在生成计划...");
// sParam=GetPlanParam();
// MrpCom->Execute(WideString(sParam));
sParam = " EXEC ksMpsInitialize '"+g_sdUserCode+"'" ;
RsQuery->Close();
RsQuery->Open(sParam,"");
RsQuery->Close();
RsQuery->Execute(" update sdParameter set parametervalue=0 where Parametercode='11116'");
RsQuery->Close();
}
__finally
{
EndWaitForm();
// MrpCom->FreeClass();
}
}
catch(Exception &e)
{
RsQuery->Close();
RsQuery->Execute(" update sdParameter set parametervalue=0 where Parametercode='11116'");
RsQuery->Close();
throw Exception(e.Message);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsGen::FormShow(TObject *Sender)
{
InitForm();
}
//---------------------------------------------------------------------------
//构造运行计划的参数字串
AnsiString __fastcall TfrmMpsGen::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 TfrmMpsGen::BitBtn1Click(TObject *Sender)
{
//打开计划参数窗体
ShowClientForm(ClientCommHandle,1110102,"");
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsGen::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='10912'";
try
{
RsQuery->Execute(sSQL);
}
__finally
{
delete RsQuery;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsGen::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 TfrmMpsGen::BitBtn3Click(TObject *Sender)
{
for(int i=1;i<sgMcr->RowCount;i++)
sgMcr->Cells[0][i] = "√";
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsGen::BitBtn4Click(TObject *Sender)
{
for(int i=1;i<sgMcr->RowCount;i++)
sgMcr->Cells[0][i] = "";
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsGen::sgMcrClick(TObject *Sender)
{
/* int ARow=sgMcr->Row;
if (ARow >0)
{
if(sgMcr->Col==0)
{
if (sgMcr->Cells[0][ARow] == "√")
sgMcr->Cells[0][ARow] = "";
else
sgMcr->Cells[0][ARow] = "√";
}
} */
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsGen::BitBtn2Click(TObject *Sender)
{
AnsiString sParam;
AnsiString l_code,l_goodscode,l_Date;
float l_Qty;
if ( Application->MessageBox("确定要生成主生产计划(MPS)吗?","系统提示",MB_YESNO) == IDNO)
return;
try
{
try
{
StartWaitForm("正在生成计划...");
for(int i=1;i<sgMcr->RowCount;i++)
{
if(sgMcr->Cells[0][i]=="√")
{
l_code = sgMcr->Cells[1][i];
l_Date = sgMcr->Cells[2][i];
l_goodscode = sgMcr->Cells[3][i];
l_Qty =sgMcr->Cells[5][i].ToDouble();
TComResultSet *RsQuery=new TComResultSet(Handle,g_ClientHandle);
sParam = " EXEC ksMpsInitializeChoose '"+g_sdUserCode+"','"+ l_code+"','"+l_goodscode+"','"+l_Date+"',"+l_Qty;
RsQuery->Close();
RsQuery->Open(sParam,"");
}
}
}
__finally
{
EndWaitForm();
// MrpCom->FreeClass();
}
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMpsGen::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 + -
显示快捷键?