생산관리_mbom 제작수량 로직 변경 (항목수량*총생산수량 -> 상위의 항목수량 계속 곱해가면서 계산)
This commit is contained in:
@@ -957,6 +957,9 @@ function fn_initGrid() {
|
||||
function fn_preprocessBomData(dataList) {
|
||||
if(!dataList || dataList.length === 0) return dataList;
|
||||
|
||||
// 레벨별 항목수량 추적 (제작수량 누적 곱 계산용)
|
||||
var parentItemQtyByLevel = {};
|
||||
|
||||
dataList.forEach(function(row) {
|
||||
// 필드명 정규화 (소문자 → 대문자 복사, 기존 대문자 유지)
|
||||
if(row.part_unit_qty !== undefined && row.PART_UNIT_QTY === undefined) {
|
||||
@@ -985,13 +988,27 @@ function fn_initGrid() {
|
||||
|
||||
console.log("전처리 - PART_NO:", row.PART_NO, "소재품번:", row.RAW_MATERIAL_NO, "소재소요량(DB):", savedRequiredQty, "소재소요량(최종):", row.REQUIRED_QTY);
|
||||
|
||||
// 제작수량: 저장된 값이 있으면 유지, 없으면 항목수량 × 총생산수량으로 자동계산
|
||||
// 제작수량: 상위 항목수량을 누적 곱하여 계산
|
||||
var level = parseInt(row.LEVEL) || 1;
|
||||
var itemQty = parseFloat(row.ITEM_QTY || row.item_qty) || 0;
|
||||
|
||||
// 현재 레벨의 항목수량 저장 (하위 레벨 계산에 사용)
|
||||
parentItemQtyByLevel[level] = itemQty;
|
||||
// 현재 레벨보다 깊은 레벨 데이터 제거 (형제 노드 전환 시 오염 방지)
|
||||
for(var l = level + 1; l <= _maxLevel; l++) {
|
||||
delete parentItemQtyByLevel[l];
|
||||
}
|
||||
|
||||
var savedProdQty = parseFloat(row.PRODUCTION_QTY) || 0;
|
||||
if(savedProdQty > 0) {
|
||||
row.PRODUCTION_QTY = savedProdQty;
|
||||
} else {
|
||||
var itemQty = parseFloat(row.ITEM_QTY || row.item_qty) || 0;
|
||||
row.PRODUCTION_QTY = itemQty * totalProductionQty;
|
||||
// 최상위(1)부터 현재 레벨까지 항목수량 누적 곱 × 총생산수량
|
||||
var cumulativeItemQty = 1;
|
||||
for(var l = 1; l <= level; l++) {
|
||||
cumulativeItemQty *= (parentItemQtyByLevel[l] || 1);
|
||||
}
|
||||
row.PRODUCTION_QTY = cumulativeItemQty * totalProductionQty;
|
||||
}
|
||||
|
||||
// 소재발주수량: 저장된 값이 있으면 유지, 없으면 계산
|
||||
|
||||
Reference in New Issue
Block a user