?? deliver.cpp
字號:
?#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?。?quot;;
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"2?ê?°é");
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 + -