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

📄 deliver.cpp

📁 这是一个工厂的生产线的仓库管理.有计划,实绩,库存等
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include "StdAfx.h"
#include "Deliver.h"
using namespace FAP;
//#include "dbbase.h"

//#include "IniLogFile.h"
//extern IniFile Ini;
//extern LogFile Log;

//#using <mscorlib.dll>
//#using "Office\11.0.0.0__71e9bce111e9429c\Office.dll"
//#using "Microsoft.Office.Interop.Excel\11.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll"
//#using "Microsoft.Vbe.Interop\11.0.0.0__71e9bce111e9429c\Microsoft.Vbe.Interop.dll"

using namespace System;
//using namespace System::Diagnostics;
using namespace System::Reflection;
using namespace Microsoft::Office::Core;
using namespace Microsoft::Office::Interop;
using namespace System::IO;


void Deliver::begin(){
   abc				= new  String __gc  * [8];
switch (iLanguage){
		case 0:abc[0]=S"批次/生产计划号不能为空!!";
			abc[1]=S"请正确填写物料代码!!";
			abc[2]=S"库存数不够!!";
			abc[3]= S"出库失败!!";
			abc[4]=S"出库成功!!";
			abc[5]=S"出库失败!出库数大于库存数";
			abc[6]=S"物料转储单";
			abc[7]=S"确认要打印数据吗?";
			break;
		case 1:abc[0]=S"対象ロットを入力してください!!";
			abc[1]=S"正確的に物料コードを入力してください!!";
		abc[2]=S"在庫数が足りません";
		abc[3]=S"出庫に失敗しまいた!";
		abc[4]=S"出庫に成功しました!";
			abc[5]=S"出庫失敗!出庫数が在庫数より多いです";
			abc[6]=S"物料転儲伝票";
		abc[7]=S"データを印刷してよろしいでしょうか?";
		break;
		case 2:abc[0]=S"Lot Number/The Code For Production Of Plan Shoundn't Be Empty!!";
				abc[1]=S"Please Use Correct Format For Materiel's Code!!";
				abc[2]=S"No Enough Stock!!";
				abc[3]=S"Fail To Output Product From Stock!!";
				abc[4]=S"Success To Output Product From Stock!!";
				abc[5]=S"Fail To Output Product From Stock! The Number Of  Outputing Product Is Larger Than Stock Number!!";
				abc[6]=S"Bill Of Document For Discarding Product!!";
				abc[7]=S"Want To Print Data?";
break;
		default:abc[0]=S"批次/生产计划号不能为空!!";
			abc[1]=S"请正确填写物料代码!!";
			abc[2]=S"库存数不够!!";
			abc[3]= S"出库失败!!";
			abc[4]=S"出库成功!!";
			abc[5]=S"出库失败!出库数大于库存数";
			abc[6]=S"物料转储单";
			abc[7]=S"确认要打印数据吗?";
			break;
		//case 1:abc[0]=S"";

}
}
void Deliver::intprintview()
{
	String *msg[]={S"出库",S"出庫",S"Deliver"};
	if (DialogResult::OK==MessageBox::Show(abc[7],msg[iLanguage],MessageBoxButtons::OKCancel,MessageBoxIcon::Information))
	{
			vstrDateTime=String::Format("{0:yyyyMMddhhmmss}",__box(DateTime::Now));

			vstrYMDHIS=String::Concat(S"物料转储单",S".xls");
			
			CreateViewFAP(vstrYMDHIS);
			
			OutputExcel();
	}
}

void Deliver::InitGrid(int intLang)
{

	DataGridTextBoxColumn *oColRank;// = new DataGridColumnStyle();
	DataGridTextBoxColumn *oColTest;// = new DataGridColumnStyle();
	DataGridTextBoxColumn *oColCost;// = new DataGridColumnStyle();
	DataGridTextBoxColumn *oColCost1;// = new DataGridColumnStyle();

	DataGridTableStyle *oTableStyle;

	oTableStyle = new DataGridTableStyle();

	oTableStyle->MappingName = S"DD";
	
	//col rank
	oColRank = new DataGridTextBoxColumn();
	oColRank->Alignment = HorizontalAlignment::Right;
	oColRank->MappingName = S"STOCK_QTY";
	oColRank->HeaderText = String::Concat(infClsDeliver->saG_QTY[iLanguage],S"       \0");
	oColRank->Width = 120;
	oColRank->ReadOnly = true;
	oColRank->NullText = S"";
	oColRank->Format=S"#,###";

	//col number
	oColCost = new DataGridTextBoxColumn();
	oColCost->Alignment = HorizontalAlignment::Left;
	oColCost->MappingName = S"product_code";
	oColCost->HeaderText = String::Concat(S"          ",infClsDeliver->saG_Code[iLanguage]);
	oColCost->NullText = S"";
	oColCost->Width = 160;
	oColCost->ReadOnly = false;

	//col cost
	oColTest = new DataGridTextBoxColumn();
	oColTest->Alignment = HorizontalAlignment::Left;
	oColTest->MappingName = S"lot";
	oColTest->HeaderText = String::Concat(S"            ",infClsDeliver->saLot[iLanguage]);
	oColTest->NullText = S"";
	oColTest->Width = 160;
	oColTest->ReadOnly = false;

	oColCost1 = new DataGridTextBoxColumn();
	oColCost1->Alignment = HorizontalAlignment::Left;
	oColCost1->MappingName = S"ymd";
	oColCost1->HeaderText = String::Concat(S"          ",infClsDeliver->saG_StocYMD[iLanguage]);
	oColCost1->NullText = S"";
	oColCost1->Width = 160;
	oColCost1->ReadOnly = false;
	oColCost1->Format=S"yyyy-MM-dd";


	oTableStyle->GridColumnStyles->Add(oColCost1);
	oTableStyle->GridColumnStyles->Add(oColTest);
	
	
	oTableStyle->GridColumnStyles->Add(oColCost);
	oTableStyle->GridColumnStyles->Add(oColRank);


	DBGridSim->TableStyles->Add(oTableStyle);

}

void Deliver::setGridPartsMst()
{

	String * strSQL;

	strSQL = S" ";
	strSQL=S"";
	strSQL=String::Concat(strSQL,S"  select aa.stock_qty - nvl(cc.deliver_qty,0) as STOCK_QTY,					");
	strSQL=String::Concat(strSQL,S"         aa.product_code as product_code,									");
	strSQL=String::Concat(strSQL,S"			aa.lot as lot,														");
	strSQL=String::Concat(strSQL,S"			aa.ymd	as ymd														");
	strSQL=String::Concat(strSQL,S" from																		");
	//查找生产实际的日期,按生产日期进行先进先出,但查出来的是生产实绩的数量

	strSQL=String::Concat(strSQL,S"			(Select																");
	strSQL=String::Concat(strSQL,S"						distinct												");
	//strSQL=String::Concat(strSQL,S"					b.product_QTY,												");
	strSQL=String::Concat(strSQL,S"					a.stock_qty,												");
	strSQL=String::Concat(strSQL,S"					a.product_code,												");
	strSQL=String::Concat(strSQL,S"					a.lot as lot,												");
	strSQL=String::Concat(strSQL,S"			nvl(to_char(b.YMD,'yyyymmdd'),'9999-12-31') as YMD					");
	//strSQL=String::Concat(strSQL,S"					b.YMD														");
	strSQL=String::Concat(strSQL,S"			from																");
	strSQL=String::Concat(strSQL,S"					stock_data a												");
	strSQL=String::Concat(strSQL,S"			left outer join product_result_data b on							");
	strSQL=String::Concat(strSQL,S"					a.lot=b.lot													");
	strSQL=String::Concat(strSQL,S"			where																");
	strSQL=String::Concat(strSQL,S"					a.product_code='",txtProCode->Text,S"'						");
	strSQL=String::Concat(strSQL,S"					and a.stock_type='1' 										");
	strSQL=String::Concat(strSQL,S"					and a.stock_qty<>0											");
	strSQL=String::Concat(strSQL,S"					AND a.LOT IS NOT NULL										");
	strSQL=String::Concat(strSQL,S"					order by b.YMD,lot asc										");
	strSQL=String::Concat(strSQL,S"			) aa																");
	strSQL=String::Concat(strSQL,S" left outer join																");
		//查找出库的移动实际(生产实际-移动实际=库存)
	strSQL=String::Concat(strSQL,S"			(																	");
	strSQL=String::Concat(strSQL,S"			select																");
	strSQL=String::Concat(strSQL,S"					sum(b.deliver_qty) as deliver_qty,							");
	strSQL=String::Concat(strSQL,S"					b.lot,														");
	strSQL=String::Concat(strSQL,S"				nvl(to_char(b.RESLUT_YMD,'yyyymmdd'),'9999-12-31') as RESLUT_YMD");
	//strSQL=String::Concat(strSQL,S"					b.RESLUT_YMD												");
	strSQL=String::Concat(strSQL,S"			from																");
	strSQL=String::Concat(strSQL,S"					stock_data a												");
	strSQL=String::Concat(strSQL,S"			left outer join deliver_data b on									");
	strSQL=String::Concat(strSQL,S"					a.lot=b.lot													");
	strSQL=String::Concat(strSQL,S"			where																");
	strSQL=String::Concat(strSQL,S"					a.product_code='",txtProCode->Text,S"'						");
	strSQL=String::Concat(strSQL,S"					and a.stock_type='1'										");
	strSQL=String::Concat(strSQL,S"					and a.stock_qty<>0											");
	strSQL=String::Concat(strSQL,S"					AND a.LOT IS NOT NULL										");
	strSQL=String::Concat(strSQL,S"					AND b.stock_ymd IS NULL										");
	strSQL=String::Concat(strSQL,S"					group by b.lot,b.RESLUT_YMD									");
	strSQL=String::Concat(strSQL,S"					order by b.RESLUT_YMD,lot asc								");
	strSQL=String::Concat(strSQL,S"			) cc on																");
	strSQL=String::Concat(strSQL,S"					aa.lot=cc.lot												");
	strSQL=String::Concat(strSQL,S"					and aa.ymd=cc.RESLUT_YMD									");
	strSQL=String::Concat(strSQL,S" where																		");
	//如果移动实绩=生产实际就表示数量全部出掉,这条数据不进行显示

	strSQL=String::Concat(strSQL,S"   aa.stock_qty - nvl(cc.deliver_qty,0)<>0									");

	////String *Stris=",";
	////Char chars[]={','};
	////String * strnum[];
	////String *strlotnum;
	////strlotnum=txtLot->Text->TrimEnd(Stris->ToCharArray());
	////strnum=strlotnum->Split(chars);


	////for (int ix=0;ix<strnum->Length;ix++)
	////{
	////	strSQL=String::Concat(strSQL,S" and aa.lot='",Convert::ToString(strnum[ix]),S"'							");
	////}
	strSQL=String::Concat(strSQL,S" order by aa.ymd,aa.lot asc													");

	oDataSet=DBDeliver->dSetSQL_Select(strSQL,"DD", 0);
	
	oDataView= oDataSet->Tables->Item[S"DD"]->DefaultView;
	oDataView->AllowNew	= false; 
	oDataView->AllowEdit= false; 
	
	DBGridSim->DataSource = oDataSet->Tables->Item[S"DD"]->DefaultView;
	
}


String * FAP::Deliver::strGetDelFromName(String * strDelFromNo,int iLanguage,DBBase *dbTmp){
		
		System::Data::DataRow *dRowTmp;
		String *strSQL = S"select * from cost_mst ";
		String *strFdName ;
		
		if (String::Compare(strDelFromNo->Trim(), S"")!=0)		
 			strSQL=String::Concat (strSQL, S" where process_no = '" ,strDelFromNo->Trim(),S"'");
		else
			return S"";

		
		if (dbTmp->blnCnnOpen()==false) {
			MessageBox::Show(S"Open Oracle Failed!!",S"Deliver",MessageBoxButtons::OK, MessageBoxIcon::Exclamation);
			return S"";
		}

		switch(iLanguage) {
		case FapLan_EN:
			strFdName = S"name_e";			
			break;
		case FapLan_JP:
			strFdName = S"name_j";
			break;
		case FapLan_CN:
			strFdName = S"name_c";
			break;
		default:
			strFdName = S"name_e";
			
		}
		
		dRowTmp = dbTmp->dRowSQL_Select(strSQL);

		try
		{
			dbTmp->blnCnnClose  ();
		}
		catch (...) {
			
			return S"";
		}

		try
		{
			return Convert::ToString(dRowTmp->Item[strFdName]);
		}
		catch (...) {
			//MessageBox::Show(S"取得工序名称失败!!",S"Deliver");
			return S"";
		}
	
}

String * FAP::Deliver::strGetProName(String * strProCode){

	System::Data::DataRow *dRowTmp;
	String *strSQL = S"select * from parts_mst ";
	String *strFdName ;

	if (String::Compare(strProCode->Trim(), S"")!=0)		
		strSQL=String::Concat (strSQL, S" where product_code = '" ,strProCode->Trim(),S"'");

	if (DBDeliver->blnCnnOpen()==false) {
		//MessageBox::Show  (S"Open Oracle Failed!!",S"Deliver",MessageBoxButtons::OK, MessageBoxIcon::Exclamation);
		return S"";
	}
//	MessageBox::Show(S"²»ÊǰÉ");

	switch(infClsDeliver->intLang) {
		case FapLan_EN:
			strFdName = S"parts_name_e";			
			break;
		case FapLan_JP:
			strFdName = S"parts_name_j";
			break;
		case FapLan_CN:
			strFdName = S"parts_name_c";
			break;
		default:
			strFdName = S"parts_name_e";

	}

	dRowTmp = DBDeliver->dRowSQL_Select(strSQL);

	try
	{
		DBDeliver->blnCnnClose  ();
	}
	catch (...) {
		return S"";
	}

	try
	{
		return Convert::ToString(dRowTmp->Item[strFdName]);
		
	}
	catch (...) {
		//MessageBox::Show(S"取得工序名称失败!!",S"Deliver");
		return S"";
	}

}

String * FAP:: Deliver::strGetCostmst(String * strProcessCode,int iLanguage,DBBase * DBTmp)
{
	String * strSQL;
	DataRow * dRowTmp;
	String * strFdName;

	switch(iLanguage) {
		case FapLan_EN:
			strFdName = S"name_e";			
			break;
		case FapLan_JP:
			strFdName = S"name_j";
			break;
		case FapLan_CN:
			strFdName = S"name_c";
			break;
		default:
			strFdName = S"name_e";
			
		}
	strSQL = String::Concat(S" Select ",strFdName," from cost_mst where process_no='MA00'");

		
	if (!DBTmp->blnCnnOpen()) {
		MessageBox::Show(S"Open Oracle Error!! ",S"lot");
		return S"";
     }
	
	dRowTmp = DBTmp->dRowSQL_Select(strSQL);
	
	try
	{
		return dRowTmp->Item[strFdName]->ToString();
	}
	catch (...) {
		
		return S"";

	}

}

String * FAP:: Deliver::strGetprocessno2(String * strProcessCode,DBBase * dBTMP)
{
	String * strSQL;
	DataRow * dRowTmp;
	
	strSQL = S"";
	strSQL = String::Concat(strSQL,S" Select DESTINATION_CODE from f_process_move where ORIGIN_CODE='",strProcessCode,S"'");

	if (!dBTMP->blnCnnOpen()) {
		MessageBox::Show(S"Open Oracle Error!! ",S"lot");
		return S"";
     }
	
	dRowTmp = dBTMP->dRowSQL_Select(strSQL);
	
	try
	{
		return dRowTmp->Item[S"DESTINATION_CODE"]->ToString();
	}
	catch (...) {
		
		return S"";

	}

}
//取得库存数量
int  Deliver::intGetStockNum(String * strStoreNo,String *strProCode,DBBase * DbbTmp,String *strLotTmp,int intStockType){

⌨️ 快捷键说明

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