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

📄 stockprocess.cpp

📁 这是一个工厂的生产线的仓库管理.有计划,实绩,库存等
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			
	}

	return true;
}

bool StockProcess::Deal0(int intNum,String * Strnamec){
	String * strSQL;
	DataSet * dSetTmp;
	DataTable * dTableTmp;
	String * strPartChCode;
	String * strTmp1;
	int intstockqty;
	int intsumstockqty;

	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,													");
	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='",cmbProCode->Text,S"'						");
	strSQL=String::Concat(strSQL,S"					and a.stock_pos='",cboRespon->Text,S"'						");
	strSQL=String::Concat(strSQL,S"					and a.stock_type<>2 										");
	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='",cmbProCode->Text,S"'						");
	strSQL=String::Concat(strSQL,S"					and a.stock_pos='",cboRespon->Text,S"'						");
	strSQL=String::Concat(strSQL,S"					and a.stock_type<>2 										");
	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									");
	strSQL=String::Concat(strSQL,S" order by aa.ymd,aa.lot asc													");
 
	dSetTmp = DBbStockProcess->dSetSQL_Select(strSQL,S"stock_data",0);

	dTableTmp = dSetTmp->Tables->Item[S"stock_data"];

	DBbStockProcess->blnCnnClose();

	System::Collections::IEnumerator* emnFapRow = dTableTmp->Rows->GetEnumerator();

	emnFapRow->Reset();

	intsumstockqty=Convert::ToInt32(txtNum->Text);

	DBbStocka->blnCnnOpen();
	
	DBbStocka->blnBeginTrans();

	while (emnFapRow->MoveNext())
	{
		DataRow *dRowTmp = __try_cast<DataRow*>(emnFapRow->Current);

		strPartChCode=dRowTmp->Item[S"lot"]->ToString();
		
		strTmp1 = String::Format("{0:######}",dRowTmp->Item[S"STOCK_QTY"]);

		if (txtLot->Text->IndexOf(strPartChCode)<0)
		{
			return true;
		}

		intstockqty=System::Int32::Parse(strTmp1);

		intsumstockqty=intsumstockqty-intstockqty;

		Single  strPrice = strGetPrice(cmbProCode->Text);

		////////strSQL = S" insert into QUALITY_CONTROL_DATA ";
		////////strSQL = String::Concat(strSQL,S"(FACTORY_CODE,LINE_CODE,PROCESS_NO,PRODUCT_CODE,REASON_DIV,QUANTITY,UNIT_PRICE,TOTAL_PRICE,REASON_CODE,MANUFACT_YMD,SHIFT,LOT) ");
		////////strSQL = String::Concat(strSQL,S"values (");
		////////strSQL = String::Concat(strSQL,S"'",infStockProcess->strFactoryCode,S"',");
		////////strSQL = String::Concat(strSQL,S"'",infStockProcess->strLine,S"',");
		////////strSQL = String::Concat(strSQL,S"'",infStockProcess->strProcess,S"',");
		////////strSQL = String::Concat(strSQL,S"'",cmbProCode->Text,S"',");
		////////strSQL = String::Concat(strSQL,S"0,");
		////////if (intsumstockqty>0)
		////////{			
		////////	strSQL = String::Concat(strSQL,strTmp1,S",");
		////////	strSQL = String::Concat(strSQL, strPrice.ToString(),S",");
		////////	strSQL = String::Concat(strSQL,(strPrice * Convert::ToSingle(strTmp1)).ToString(),S",");
		////////}
		//////////没有批次的情况

		////////else
		////////{
		////////	strSQL = String::Concat(strSQL,Convert::ToString(intstockqty - (intsumstockqty * -1)),S",");	
		////////	strSQL = String::Concat(strSQL, strPrice.ToString(),S",");
		////////	strSQL = String::Concat(strSQL,(strPrice * Convert::ToSingle(intstockqty - (intsumstockqty * -1))).ToString(),S",");
		////////}

		////////strSQL = String::Concat(strSQL,Strnamec,S",");
		////////strSQL = String::Concat(strSQL, S"to_date('",(DateTime::Now).ToString(),S"','yyyy-mm-dd hh24:mi:ss'),");
		////////strSQL = String::Concat(strSQL,S"'",infStockProcess->strShift,S"',");
		////////strSQL = String::Concat(strSQL,S"'",strPartChCode,S"'");
		////////strSQL = String::Concat(strSQL,S")");

		////////if (DBbStocka->blnSQL_Execute(strSQL)) 
		////////{
		//////////MessageBox::Show(S"处理成功!!");
		////////}
		////////else
		////////{
		////////	return false;
		////////}
		////////Update stock_data

		strSQL = S"update stock_data set STOCK_QTY = STOCK_QTY +";
		if (intsumstockqty>0)
		{			
			strSQL = String::Concat(strSQL,strTmp1);
		}
		//没有批次的情况

		else
		{	
			strSQL = String::Concat(strSQL,Convert::ToString(intstockqty - (intsumstockqty * -1)));	
		}
		strSQL = String::Concat(strSQL,S" where factory_code = '",infStockProcess->strFactoryCode,S"'");
		strSQL = String::Concat(strSQL,S" and STOCK_POS = '",infStockProcess->strProcess,S"'");
		strSQL = String::Concat(strSQL,S" and PRODUCT_CODE = '",cmbProCode->Text,S"'");
		strSQL = String::Concat(strSQL,S" and LOT = '",strPartChCode,S"'");
		strSQL = String::Concat(strSQL,S" and stock_type = 2");

		int intUptRcrds;
		if (!DBbStocka->blnSQL_Execute(strSQL,&intUptRcrds))
		{
			return false;
		}
		if (intUptRcrds <= 0){

				strSQL = S"insert into stock_data(FACTORY_CODE,	STOCK_POS,PRODUCT_CODE,RANK,STOCK_TYPE,STOCK_QTY,LOT)  ";
				strSQL = String::Concat(strSQL,S" select FACTORY_CODE,	STOCK_POS,PRODUCT_CODE,RANK,2 as stock_type,");

				if (intsumstockqty>0)
				{			
					strSQL = String::Concat(strSQL,strTmp1);
					strSQL = String::Concat(strSQL,S" as stock_qty,LOT from stock_data where ");
				}
				//没有批次的情况

				else
				{	
					strSQL = String::Concat(strSQL,Convert::ToString(intstockqty - (intsumstockqty * -1)));	
					strSQL = String::Concat(strSQL,S" as stock_qty,LOT from stock_data where ");
				}
				strSQL = String::Concat(strSQL,S" factory_code = '",infStockProcess->strFactoryCode,S"'");
				strSQL = String::Concat(strSQL,S" and STOCK_POS = '",infStockProcess->strProcess,S"'");
				strSQL = String::Concat(strSQL,S" and PRODUCT_CODE = '",cmbProCode->Text,S"'");
				strSQL = String::Concat(strSQL,S" and LOT = '",strPartChCode,S"'");
				strSQL = String::Concat(strSQL,S" and stock_type <> 2 and rownum <2");
				
				if (DBbStocka->blnSQL_Execute(strSQL)) 
				{
					
				}
				else
				{
					return false;
				}
		}
		strSQL = S"update stock_data set STOCK_QTY = STOCK_QTY -";
		if (intsumstockqty>0)
		{			
			strSQL = String::Concat(strSQL,strTmp1);
		}
		//没有批次的情况

		else
		{	
			strSQL = String::Concat(strSQL,Convert::ToString(intstockqty - (intsumstockqty * -1)));	
		}
		strSQL = String::Concat(strSQL,S" where factory_code = '",infStockProcess->strFactoryCode,S"'");
		strSQL = String::Concat(strSQL,S" and STOCK_POS = '",infStockProcess->strProcess,S"'");
		strSQL = String::Concat(strSQL,S" and PRODUCT_CODE = '",cmbProCode->Text,S"'");
		strSQL = String::Concat(strSQL,S" and LOT = '",strPartChCode,S"'");
		strSQL = String::Concat(strSQL,S" and stock_type <> 2 and rownum <2");


		if (DBbStocka->blnSQL_Execute(strSQL)) 
		{
			
		}
		else{
			return false;
		}

		//MessageBox::Show(strSQL);
			
	}

	return true;
}

Single  StockProcess::strGetPrice(String * strProTmp){
	String * strSQL;
	OleDbDataReader *dReadTmp;

	strSQL =String::Concat(strSQL, S"select distinct RMB from PARTS_MST where PRODUCT_CODE = '",strProTmp,S"'",S" and rownum < 2");
	DBbStockProcess->blnCnnOpen();
	dReadTmp = DBbStockProcess->dReadSQL_Select(strSQL);
	while (dReadTmp->Read()) {
		//try{
		return Convert::ToSingle( dReadTmp->GetDecimal(0));

		//}
	
		//catch (...) {
		//	return 0;
		//}
	} 

	return 0;

}

bool StockProcess::Deal1(int intNum)
{
	String * strLang[]={S"C",S"J",S"E"};

	String * strSQL;

	int intStockType;

	strSQL = S"insert into RETURN_DATA(FACTORY_CODE,ORIGIN_CODE,DESTINATION_CODE,PRODUCT_CODE,RETURN_QTY,RETURN_YMD,REASON_DIV,REASON_CODE,STOCK_TYPE,LOT)";
	
	strSQL = String::Concat(strSQL,S" values (");

	strSQL = String::Concat(strSQL,S"'",infStockProcess->strFactoryCode,S"',");

	strSQL = String::Concat(strSQL,S"'",infStockProcess->strProcess,S"',");

	strSQL = String::Concat(strSQL,S"'",cboReturn->Text,S"',");

	strSQL = String::Concat(strSQL,S"'",cmbProCode->Text,S"',");

	strSQL = String::Concat(strSQL,intNum.ToString(),S",");

	strSQL = String::Concat(strSQL,S"to_date('",(DateTime::Now).ToString(),S"','yyyy-mm-dd hh24-mi-ss'),");

	strSQL = String::Concat(strSQL,S"1,");
	
	strSQL = String::Concat(strSQL,S" ( select REASON_Code from reason_mst where REASON_DIV = 1 and REASON_",strLang[infStockProcess->intLang],S" = '",cboReason->Text,S"' and rownum <2),");

	if (String::Equals(cboReturn->Text,S"MA00")==true)
	{
		intStockType = 0;
	}
	else
	{
		intStockType = 1;
	}

	strSQL = String::Concat(strSQL,intStockType.ToString(),S",");

	strSQL = String::Concat(strSQL,S"'",txtLot->Text,S"'");


	strSQL = String::Concat(strSQL,S" )");

	
	DBbStockProcess->blnCnnOpen();

	DBbStockProcess->blnBeginTrans();

	if (DBbStockProcess->blnSQL_Execute(strSQL)) 
	{
			
	}
	else
	{
		return false;
	}

	strSQL = S"insert into deliver_data(factory_code,origin_code,destination_code,product_code,rank,deliver_qty,parts_div,deliver_ymd,stock_ymd,shift,lot,reslut_ymd)";
	strSQL = String::Concat(strSQL,S" values (");
	strSQL = String::Concat(strSQL,S"'",infStockProcess->strFactoryCode,S"',");
	strSQL = String::Concat(strSQL,S"'",infStockProcess->strProcess,S"',");
	strSQL = String::Concat(strSQL,S"'",cboReturn->Text,S"',");
	strSQL = String::Concat(strSQL,S"'",cmbProCode->Text,S"',");
	strSQL = String::Concat(strSQL,S"NULL,");
	strSQL = String::Concat(strSQL,S"'",intNum.ToString(),S"',");
	strSQL = String::Concat(strSQL,S"'1',");
	strSQL = String::Concat(strSQL,S"to_date('",(DateTime::Now).ToString(),S"','yyyy-mm-dd hh24-mi-ss'),");
	strSQL = String::Concat(strSQL,S"to_date('",(DateTime::Now).ToString(),S"','yyyy-mm-dd hh24-mi-ss'),");
	strSQL = String::Concat(strSQL,S"'",infStockProcess->strShift,S"',");
	strSQL = String::Concat(strSQL,S"'",txtLot->Text,S"',");
	strSQL = String::Concat(strSQL,S"NULL)");
	
	if (DBbStockProcess->blnSQL_Execute(strSQL)) 
	{
			
	}
	else
	{
		return false;
	}
	

	return true;
	
}
bool StockProcess::Deal2(int intNum){

//	// insert into return_data
//
	String * strLang[]={S"C",S"J",S"E"};

	String * strSQL;
//
//	strSQL = S"insert into RETURN_DATA(FACTORY_CODE,ORIGIN_CODE,DESTINATION_CODE,PRODUCT_CODE,RETURN_QTY,RETURN_YMD,REASON_DIV,REASON_CODE,STOCK_TYPE,LOT)";
//
//	strSQL = String::Concat(strSQL,S" values (");
//
//	strSQL = String::Concat(strSQL,S"'",infStockProcess->strFactoryCode,S"',");
//
//	strSQL = String::Concat(strSQL,S"'",infStockProcess->strProcess,S"',");
//
//	strSQL = String::Concat(strSQL,S"'",infStockProcess->strProcess,S"',");
//
//	strSQL = String::Concat(strSQL,S"'",txtProCode->Text,S"',");
//
//	strSQL = String::Concat(strSQL,intNum.ToString(),S",");
//
//	strSQL = String::Concat(strSQL,S"to_date('",(DateTime::Now).ToString(),S"','yyyy-mm-dd hh24-mi-ss'),");
//
//	strSQL = String::Concat(strSQL,cboReason->Text,S",");
//
//	strSQL = String::Concat(strSQL,S" ( select REASON_", strLang[infStockProcess->intLang],S" from reason_mst where REASON_DIV = 1 and REASON_CODE = '",cboReason->Text,S"' and rownum <2),");
//
//	int intStockType;
//
//	intStockType = 2;
//
////	switch(cboReasonDiv->Enabled) {
////	case true:
////		intStockType = intGetStockType(infStockProcess->strFactoryCode,infStockProcess->strProcess, txtProCode->Text,txtLot->Text);
////		//intStockType = 0;
////		break;
////	case false:
////		intStockType = 0;
////		break;

⌨️ 快捷键说明

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