//工時合計函式
var CALL_TALHR_CAL = function () {
var Tmp_isOk = true;
//myalert(" click 工時合計");
//1>判斷主步序(1.xx) 的工時>0 時, 不可以有明細步序(1.xx.xx)
var mysubstore = Ext.getCmp('sub_Grid').store;
var Tmp_cnt = mysubstore.data.length;
console.log("mysubstore.count : ", Tmp_cnt);
console.log("mysubstore.data.items : ", mysubstore.data.items);
var i;
var Tmp_Str;
var Tmp_AMINO, Tmp_ITMNO, Tmp_RQHR, Tmp_ITMNO_NEXT;
var Tmp_ITMNO_dot_cnt, Tmp_ITMNO_NEXT_dot_cnt;
var Tmp_rec, Tmp_rec_NEXT;
for (i = 0; i < Tmp_cnt; i++) {
if (i == Tmp_cnt - 1) //若為最後一筆資料,則離開 , 不需再檢查
break;
Tmp_rec = mysubstore.getAt(i);
Tmp_AMINO = nulltoStr(Tmp_rec.data["AMINO"]);
Tmp_ITMNO = nulltoStr(Tmp_rec.data["ITMNO"]);
//Tmp_ITMNO = nulltoStr(mysubstore.data.items[i].data["ITMNO"]);
console.log("i: ", i);
console.log("Tmp_ITMNO: ", Tmp_ITMNO);
Tmp_ITMNO_dot_cnt = Tmp_ITMNO.split(".").length - 1;
console.log("Tmp_ITMNO_dot_cnt: ", Tmp_ITMNO_dot_cnt);
if (checkisnull(Tmp_rec.data["RQHR"])) {
Tmp_Str = "AMM項次(" + Tmp_AMINO + ")的需求工時不可為空白<br>"
+ "敬請檢核 !!";
mywarnalert(Tmp_Str);
Tmp_isOk = false;
return Tmp_isOk;
}
//1>>若為主步序(1.xx)且需求工時>0 ,且有子步序,則顯示訊息, 主步序工時>0 , 不可有子步序
if (Tmp_ITMNO_dot_cnt == 1) { //為主步序
Tmp_RQHR = Number(nulltoStr(Tmp_rec.data["RQHR"]));
//Tmp_RQHR = Number(nulltoStr(mysubstore.data.items[i].data["RQHR"]));
console.log("Tmp_RQHR : ", Tmp_RQHR);
if (Tmp_RQHR > 0) { //為主步序,且[需求時數]>0, 判斷是否有明細步序
Tmp_rec_NEXT = mysubstore.getAt(i + 1);
Tmp_ITMNO_NEXT = nulltoStr(Tmp_rec_NEXT.data["ITMNO"]);
//Tmp_ITMNO_NEXT = nulltoStr(mysubstore.data.items[i + 1].data["ITMNO"]);
console.log("Tmp_ITMNO_NEXT : ", Tmp_ITMNO_NEXT);
Tmp_ITMNO_NEXT_dot_cnt = Tmp_ITMNO_NEXT.split(".").length - 1;
console.log("Tmp_ITMNO_NEXT_dot_cnt: ", Tmp_ITMNO_NEXT_dot_cnt);
if (Tmp_ITMNO_NEXT_dot_cnt >= 2) { //有明細步序
Tmp_Str = "目前主步序(項次:" + Tmp_ITMNO + ")的需求工時(" + Tmp_RQHR.toString() + ")<br>"
+ "因本主步序有子步序(項次:" + Tmp_ITMNO + ".xx)<br> "
+ "則本主步序的需求工時必需為 0 或 空白 <br>"
+ "敬請檢核 !!<br>";
mywarnalert(Tmp_Str);
Tmp_isOk = false;
return Tmp_isOk;
}
}
}
} // end of for (i=0)
//2>檢核 [需求工時] 不可大於 [標準工時] , 若大於,則[備註]欄位不可空白
//var mysubstore = Ext.getCmp('sub_Grid').store;
//var Tmp_cnt = mysubstore.data.length;
var Tmp_REMARK;
var Tmp_RQ_HR = 0, Tmp_STD_HR = 0;
for (i = 0; i < Tmp_cnt; i++) {
Tmp_rec = mysubstore.getAt(i);
Tmp_ITMNO = nulltoStr(Tmp_rec.data["ITMNO"]);
Tmp_RQ_HR = Number(nulltoStr(Tmp_rec.data["RQHR"]));
Tmp_STD_HR = Number(nulltoStr(Tmp_rec.data["STDHR"]));
Tmp_REMARK = nulltoStr(Tmp_rec.data["REMARK"]);
if (Tmp_ITMNO == "1.04.04")
mywarnalert("項次:1.04.04");
if (Tmp_RQ_HR > Tmp_STD_HR) {
if (checkisnull(Tmp_REMARK)) {
Tmp_Str = "步序(項次:" + Tmp_ITMNO + ")的[需求工時(" + Tmp_RQ_HR + ")]<br>"
+ "大於[標準工時(" + Tmp_STD_HR + ")]<br>"
+ "[備註]欄位必需說明原因<br>"
+ "不可空白 !!";
mywarnalert(Tmp_Str);
Tmp_isOk = false;
return Tmp_isOk;
}
} // end of if (Tmp_RQ_HR > Tmp_STD_HR) {
} // end of for (i = 0; i < Tmp_cnt; i++) {
//2>>累加拆解工時 & 維修工時(因尚未存入資料庫,所以必需在前端小計時數)
var Tmp_ITMNO_14;
var Tmp_TAL_RPNOAF_HR = 0, Tmp_TAL_MRPNOAF_HR = 0;
for (i = 0; i < Tmp_cnt; i++) {
Tmp_rec = mysubstore.getAt(i);
Tmp_ITMNO = nulltoStr(Tmp_rec.data["ITMNO"]);
Tmp_ITMNO_14 = Tmp_ITMNO.substr(0, 4);
Tmp_RQHR = Number(nulltoStr(Tmp_rec.data["RQHR"]));
switch (Tmp_ITMNO_14) {
case '1.01': case '1.02': case '1.03': case '1.04': case '1.05':
case '1.06': case '1.07': case '1.08': case '1.09': case '1.10':
case '3.01':
Tmp_TAL_RPNOAF_HR = Tmp_TAL_RPNOAF_HR + Tmp_RQHR;
break;
case '2.01': case '2.02': case '2.03': case '2.04': case '2.05':
case '2.06': case '2.07': case '2.08': case '2.09': case '2.10':
Tmp_TAL_MRPNOAF_HR = Tmp_TAL_MRPNOAF_HR + Tmp_RQHR;
break;
default:
Tmp_TAL_MRPNOAF_HR = Tmp_TAL_MRPNOAF_HR + Tmp_RQHR;
break;
}
} // end of for (i=0,)
Ext.getCmp("sub_RPNOAF_TALHR").setValue(Tmp_TAL_RPNOAF_HR);
Ext.getCmp("sub_MRPNOAF_TALHR").setValue(Tmp_TAL_MRPNOAF_HR);
mysuccessalert("工時合計完成 !!");
return Tmp_isOk; //return true
}; // end of CALL_TALHR_CAL
//[工時提列].[確認]鈕
function V20304A_OK() {
//1>檢核欄位是否有輸入
var Tmp_sub_RPNOAF = Ext.getCmp("sub_RPNOAF").getValue();
var Tmp_sub_RRNRAR = Ext.getCmp("sub_RRNRAR").getValue();
var Tmp_sub_QDEP = Ext.getCmp("sub_QDEP").getValue();
var Tmp_sub_IRESAK = Ext.getCmp("sub_IRESAK").getValue();
var Tmp_sub_NOTEAR = Ext.getCmp("sub_NOTEAR").getValue();
var Tmp_Str;
if (checkisnull(Tmp_sub_RRNRAR)) {
Tmp_Str = "TLS實際拆檢完工日不可空白<br>"
+ "敬請檢核<br>";
mywarnalert(Tmp_Str);
return false;
}
if (checkisnull(Tmp_sub_QDEP)) {
Tmp_Str = "品保單位不可空白<br>"
+ "敬請檢核<br>";
mywarnalert(Tmp_Str);
return false;
}
if (checkisnull(Tmp_sub_NOTEAR)) {
Tmp_Str = "檢測結果說明不可空白<br>"
+ "敬請檢核<br>";
mywarnalert(Tmp_Str);
return false;
}
//直接呼叫[合計]鈕函式, - 檢核 主步序&子步序是否有問題, 若有問題,則顯示訊息,不寫入 AMM_TLSAR & AMM_AR
//[確認]時, 不重複寫檢核程式
if (CALL_TALHR_CAL()==false) {
return;
}
////1>判斷主步序(1.xx) 的工時>0 時, 不可以有明細步序(1.xx.xx)
var mysubstore = Ext.getCmp('sub_Grid').store;
var Tmp_cnt = mysubstore.data.length;
//3>> 寫入 AMM_AR(寫入明細步序所有工時) & AMM_TLSAR(只寫主步序 & 拆檢小計工時 & 維修小計工時)
//將子畫面資料寫入 np , 以便新增 AMM_AR & AMM_TLSAR
let Tmp_DataAry1 = [];
for (var i = 0; i < Tmp_cnt; i++) {
Tmp_rec = mysubstore.getAt(i);
Tmp_DataAry1.push(Tmp_rec.data);
}
// 將目前子畫面的資料(Table)轉成 JSON字串
let Tmp_DataString1 = JSON.stringify(Tmp_DataAry1);
var np = {};
np = {
FMNO: Tmp_FMNO,
RPNOAF: Tmp_sub_RPNOAF,
IRESAK: Tmp_sub_IRESAK,
RRNRAR: Tmp_sub_RRNRAR,
QDEP: Tmp_sub_QDEP,
NOTEAR: Tmp_sub_NOTEAR,
DataString1: Tmp_DataString1, //目前子畫面的資料
};
var Tmp_url = "../../api/V20304AAPI/UPDATE_AMM_AR_TLSAR";
//取得挑選資料的 dt2JSON 字串
//getUrlStr : 必需傳回字串( dt.JSON字串) , 非 ds
var rtn_Str = getUrlStr(Tmp_url, np, "工時提列");
console.log("rtn_Str:", rtn_Str);
if (checkRtnOK(rtn_Str)) {
mysuccessalert(rtn_Str);
console.log("win1.closeAction:", win1.closeAction);
win1.close();
win1.destroy(); //必需寫 destroy() , 不然畫面會亂掉
}
else
mywarnalert(rtn_Str);
} // end of function V20304A_OK() {
// } // end of abc()
}; // end of function Call_V20304A() {