This repo is archived. You can view files and clone it, but cannot push or open issues or pull requests.
SXS20240115/SRC/iMES_PAD/module/moduleWIP/program/dialog/material/material.js

307 lines
17 KiB
JavaScript
Raw Permalink Normal View History

2024-01-24 16:47:50 +08:00
define(["angularAMD"], function (angularAMD) {
angularAMD.service('material', ['$rootScope', '$filter', 'config', 'MMWService', '$mdDialog', '$timeout', '$calculater',
function ($rootScope, $filter, config, $MMWService, $mdDialog, $timeout, $calculater) {
this.init = function (options) {
(function openDialog() {
$mdDialog.dialog('module/moduleWIP/program/dialog/material/material.tmp.html',
function (dialog) {
dialog.ISCI = options.ISCI;
//dialog.listMaterialLot = [];
function funRefreshUseQty(sub_mtl, item) {
if (!(sub_mtl.USEQTY) ||
typeof sub_mtl.USEQTY !== 'number') {
sub_mtl.USEQTY = 0;
}
if (parseFloat(sub_mtl.USEQTY) > sub_mtl.QTY) {
$rootScope.showMessage('[%USEQTY%] > [%MATERIALSTATE%], [%MATERIALLOT%]:' + sub_mtl.MATERIALLOTNO, "0000-203083");
return;
}
//更新Temp Material 總數量
var int_useqty = 0;
item.mtl_lot.forEach(function (ary_tmp) {
int_useqty = parseFloat(int_useqty) + parseFloat(ary_tmp.USEQTY);
});
item.USEQTY = int_useqty;
}
return {
css_url: 'module/moduleWIP/program/dialog/material/material.css',
lotno: options.lotno,
materials_list: options.materials_list,
beforeShown: function () { },
confirm: function () {
var listMaterialLot = [];
dialog.materials_list.forEach(material => {
material.mtl_lot.forEach(mtl => {
listMaterialLot.push(mtl);
});
});
//料批需要數入數量
for (var i = 0; i < listMaterialLot.length; i++) {
var number = parseFloat(listMaterialLot[i].USEQTY);
if (isNaN(number)) {
$rootScope.showAlert($filter('translate')('mrs04.msg.QtyEmpty') + " " +
$filter('translate')('wp03_e_runcard.material.mtlNo') + ":" + listMaterialLot[i].MATERIALNO + " " +
$filter('translate')('wp03_e_runcard.material.mtlLot') + ":" + listMaterialLot[i].MATERIALLOTNO);
return;
}
}
dialog.hide();
//20210714 13871,刪除angular索引物件,避免後端轉型錯誤
var result = $rootScope.deepCopy(dialog.materials_list);
result.forEach(item => {
if (item["$$hashKey"])
delete item["$$hashKey"];
//20211125 13871,小鍵盤回傳值會字串,轉為數值,避免後端應用錯誤
item.USEQTY = Number(item.USEQTY);
if (item.mtl_lot != undefined) {
item.mtl_lot.forEach(item2 => {
if (item2["$$hashKey"])
delete item2["$$hashKey"];
//20211125 13871,小鍵盤回傳值會字串,轉為數值,避免後端應用錯誤
item2.USEQTY = Number(item2.USEQTY);
});
}
});
if (options.callback) {
options.callback({
listTempMaterial: result,
listMaterialLot: listMaterialLot
});
}
},
background: {
click: function () {
dialog.hide();
if (typeof (feedback) == 'function')
feedback();
}
},
back: function () {
dialog.hide();
if (options.close)
options.close();
},
mtlqty_chk_click: function (event, item, sub_mtl) {
var target = event.currentTarget;
angular.element(target).addClass('is-focus');
$calculater.open(function (num, calcDialog) {
if ((+num) > sub_mtl.QTY) {
$rootScope.showMessage('[%USEQTY%] > [%MATERIALSTATE%], [%MATERIALLOT%]:' + sub_mtl.MATERIALLOTNO, "0000-203083");
return;
}
angular.element(target).removeClass('is-focus');
sub_mtl.USEQTY = num;
//更新Temp Material 總數量
funCalculateUseQty(item);
calcDialog.hide();
},
function (calcDialog) {
angular.element(target).removeClass('is-focus');
calcDialog.hide();
},
{
title: '',
decimal: true
});
},
mtlqty_chk_enter: function (event, item, sub_mtl) {
if (event.keyCode != 13) return;
funRefreshUseQty(sub_mtl, item);
},
mtlqty_chk_blur: function (event, item, sub_mtl) {
funRefreshUseQty(sub_mtl, item);
},
scanQrcode1: function () {
$rootScope.OpenScanner({
after: function (result) {
if ($rootScope.IsNullOrEmpty(result.text))
return;
//20210827 13871修正錯誤變數使用mtl_no -> mtlno
dialog.mtlno = result.text;
dialog.scanQrcode2();
},
exception: function () {
//目前裝置無法使用相機
$rootScope.showAlert($filter('translate')('common.msg.camera_not_support'));
},
orientation: "landscape"
});
},
scanQrcode2: function () {
$rootScope.OpenScanner({
after: function (result) {
if ($rootScope.IsNullOrEmpty(result.text))
return;
//20210827 13871修正錯誤變數使用mtl_lotno -> mtllotno
dialog.mtllotno = result.text;
if (!$rootScope.IsNullOrEmpty(dialog.mtlno))
dialog.barcodeScan_mtllotno({ keyCode: 13 });
},
exception: function () {
//目前裝置無法使用相機
$rootScope.showAlert($filter('translate')('common.msg.camera_not_support'));
},
orientation: "landscape"
});
},
barcodeScan_mtlno: function (event) {
if (event == undefined || event.keyCode == 13) {
if (event && event.currentTarget)
event.currentTarget.blur();
if (event && event.keyCode == 13 && dialog.mtlno == '') {
$rootScope.showAlert($filter('translate')('mrs04.msg.barcode_empty_mtlno'));
return;
}
$rootScope.focusById('intput_mtllotno');
}
},
barcodeScan_mtllotno: function (event) {
if (!event || event.keyCode != 13) {
return;
}
if (event.currentTarget)
event.currentTarget.blur();
if (dialog.mtllotno == '') {
$rootScope.showAlert($filter('translate')('mrs04.msg.barcode_empty_mtllotno'));
return;
}
//20210714 13871,改寫方式AutoFeedingByPutinPlace不在迴圈內執行
//檢查料批是否已存在
var bln_feeding = false;
dialog.materials_list.forEach(function (tmp_obj) {
if (tmp_obj.mtl_lot != undefined && tmp_obj.mtl_lot != null) {
tmp_obj.mtl_lot.forEach(function (tmp_mtl_lot) {
//20210714 13871,修正變數名稱錯誤 -> 全大寫
if (tmp_mtl_lot.SUBSTITUTEMATERIALNO == dialog.mtlno
&& tmp_mtl_lot.MATERIALLOTNO == dialog.mtllotno) {
bln_feeding = true;
}
})
}
});
//20210714 13871,後端查核移出迴圈
if (bln_feeding) {
$rootScope.showAlert($filter('translate')('lc_co_gen.dialog.material.msg.mtlalreadyfeed'));
return;
}
AutoFeedingByPutinPlace({
LotNo: dialog.lotno,
MaterialNo: dialog.mtlno,
MaterialLotNo: dialog.mtllotno
//UnitNo: tmp_obj.UNITNO //20210714 13871,後端根本沒有使用此資訊改為傳入空字串
}, function (options) {
var SubstituteMaterial = options.SubstituteMaterial;
if (SubstituteMaterial.length <= 0) {
$rootScope.showAlert($filter('translate')('lc_co_gen.dialog.material.msg.mtlunexist'));
return;
}
var lst_tmp_obj = dialog.materials_list.filter(item => { return item.MATERIALNO == SubstituteMaterial[0].MATERIALNO });
if (lst_tmp_obj.length > 0) {
//CHECKLOTNO開啟, 物料批號不允許輸入N/A
if (lst_tmp_obj[0].CHECKLOTNO == 1) {
if (SubstituteMaterial[0].MATERIALLOTNO == "N/A") {
$rootScope.showAlert(lst_tmp_obj[0].MATERIALNO + $filter('translate')('lc_ci_gen.msg.NACannotBeUsedAsTheMaterialLotNo'));
return;
}
}
if (!lst_tmp_obj[0].mtl_lot)
lst_tmp_obj[0].mtl_lot = [];
//填入還缺少的數量
SubstituteMaterial[0].USEQTY =
(lst_tmp_obj[0].STDUSEQTY - lst_tmp_obj[0].USEQTY) *
(SubstituteMaterial[0].SUBSTITUTESTDQTY / lst_tmp_obj[0].STDQTY);
//料批數量不足以填補
if (SubstituteMaterial[0].USEQTY > SubstituteMaterial[0].QTY)
SubstituteMaterial[0].USEQTY = SubstituteMaterial[0].QTY;
lst_tmp_obj[0].mtl_lot.push(SubstituteMaterial[0]);
//更新Temp Material 總數量
funCalculateUseQty(lst_tmp_obj[0]);
}
});
}
}
});
//計算各料批用量(要考量替代料用量SUBSTITUTESTDQTY)
function funCalculateUseQty(TempMaterial) {
var UseQty = 0;
TempMaterial.mtl_lot.forEach(MaterialLot => {
UseQty += (MaterialLot.USEQTY * (TempMaterial.STDQTY / MaterialLot.SUBSTITUTESTDQTY));
});
TempMaterial.USEQTY = UseQty;
}
function AutoFeedingByPutinPlace(options, callback) {
$MMWService.sendToMESSrv({
uri: 'kcWIP.clsMDS.AutoFeedingByPutinPlace',
content: {
LotNo: options.LotNo,
MaterialNo: options.MaterialNo,
MaterialLotNo: options.MaterialLotNo,
//UnitNo:options.UnitNo //20210714 13871,後端根本沒有使用此資訊改為傳入空字串
UnitNo: ''
},
success: function (data) {
if (data.Code == '0') {
data = JSON.parse(data.ResultJson);
if (callback) {
callback(data);
}
}
}
});
}
})();
}
}
]);
});