diff --git a/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp b/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp
index 951d68c..ddb36dc 100644
--- a/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp
+++ b/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp
@@ -97,196 +97,23 @@ $(function(){
// }, 500);
- //Part 연결
+ //Part 연결 (M-BOM용)
$("#moveLeft").click(function(){
- // Tabulator에서 선택된 오른쪽 행 데이터 가져오기
- var rightFrame = parent.frames['rightFrame'];
- var rightSelectedRows = rightFrame.getSelectedRows ? rightFrame.getSelectedRows() : [];
-
- if(rightSelectedRows.length === 0) {
- showConfirm("선택된 파트가 없습니다.");
- return false;
- }
-
- // 왼쪽 프레임에서 선택된 행 데이터 가져오기
- var leftPartNoObj = $("input[name=checkedPartNo]:checked", parent.frames['leftFrame'].document);
-
- var leftPartChildObjId = null;
- var leftPartNo = null;
- var leftPartNoQty = null;
- var leftParentObjId = null;
- var leftPartLastObjId = null;
- var leftQtyParObjId = null;
- var leftParentParts = "";
-
- if(leftPartNoObj.length > 0) {
- leftPartChildObjId = leftPartNoObj.val();
- leftPartNo = leftPartNoObj.attr("data-PART_NO");
- leftPartNoQty = leftPartNoObj.attr("data-PART_NO_QTY");
- leftParentObjId = leftPartNoObj.attr("data-OBJID");
- leftPartLastObjId = leftPartNoObj.attr("data-LAST_PART_OBJID");
- leftQtyParObjId = leftPartNoObj.attr("data-PART_OBJID");
- leftParentParts = leftPartNoObj.attr("data-PARENT_PARTS") || "";
- }
-
- // 같은 Part를 연결한건지 체크
- var isSamePart = false;
- for(var i = 0; i < rightSelectedRows.length; i++){
- var rowData = rightSelectedRows[i].getData();
- var rightPartNo = rowData.PART_NO;
- if(rightPartNo == leftPartNo){
- showConfirm({
- title: '연결 불가',
- html: '오류 Part No : ['+rightPartNo+']
같은 Part No끼리 연결할 수 없습니다.',
- icon: 'error'
- });
- isSamePart = true;
- break;
- }
- }
-
- if(isSamePart) return false;
-
- // 연결하려는 part가 상위에 있는 part인지 확인
- var deniedPartArr = [];
- if(fnc_checkNull(leftParentParts).indexOf(",") > 0){
- deniedPartArr = leftParentParts.split(",");
- }
- var isDeniedPart = false;
-
- for(var i = 0; i < rightSelectedRows.length; i++){
- var rowData = rightSelectedRows[i].getData();
- var rightPartNo = rowData.PART_NO;
- var rightPartType = rowData.PART_TYPE;
-
- if("unique" == rightPartType){
- for(var j = 0 ; j < deniedPartArr.length ; j++){
- if(rightPartNo == deniedPartArr[j]){
- showConfirm({
- title: '연결 불가',
- html: '오류 Part No : ['+rightPartNo+']
이미 상위에 등록된 Part No 입니다.',
- icon: 'error'
- });
- isDeniedPart = true;
- break;
- }
- }
- if(isDeniedPart) break;
- }
- }
-
- if(isDeniedPart) return;
-
- // 선택된 파트의 OBJID 배열 생성
- var rightCheckedArr = [];
- for(var i = 0; i < rightSelectedRows.length; i++){
- var rowData = rightSelectedRows[i].getData();
- rightCheckedArr.push(rowData.OBJID);
- }
-
- if(fnc_checkNull(leftPartNo) == ""){
- var flag = fn_checkSameTopPartNo(rightCheckedArr);
- if(flag == "true"){
- showConfirm({
- title: '중복 등록 불가',
- text: '1레벨에 같은 Part No가 중복 등록될 수 없습니다.',
- icon: 'error'
- });
- return;
- }
- }
-
- // Part 연결 확인
- showConfirm({
- title: 'Part 연결',
- text: '선택한 Part를 연결하시겠습니까?',
- icon: 'question',
- showCancelButton: true,
- confirmButtonColor: '#3085d6',
- cancelButtonColor: '#d33',
- confirmButtonText: '연결',
- cancelButtonText: '취소',
- reverseButtons: false
- }).then(result => {
- if (result.isConfirmed) {
- fn_relatePartInfo(leftPartChildObjId, rightCheckedArr, leftPartNoQty, leftPartLastObjId, leftPartChildObjId, leftQtyParObjId);
- }
- });
+ fn_mbomAddPart();
});
- //end of Part 연결
- //연결된 part 삭제
+ //연결된 part 삭제 (M-BOM용)
$("#moveRight").click(function(){
- var leftPartNoObj = $("input[name=checkedPartNo]:checked", parent.frames['leftFrame'].document);
- var leftPartChildObjId = leftPartNoObj.val();
- var leftPartNo = $("input[name=checkedPartNo]:checked", parent.frames['leftFrame'].document).attr("data-PART_NO");
- var leftParentPartNo = $("input[name=checkedPartNo]:checked", parent.frames['leftFrame'].document).attr("data-PARENT_PART_NO");
- var leftParentObjId = $("input[name=checkedPartNo]:checked", parent.frames['leftFrame'].document).attr("data-PARENT_OBJID");
- var leftPartLastObjId = $("input[name=checkedPartNo]:checked", parent.frames['leftFrame'].document).attr("data-LAST_PART_OBJID");
-
- fn_deletePartRelateInfo(leftPartNoObj.val(), leftPartLastObjId, leftParentPartNo, leftParentObjId, leftPartChildObjId);
+ fn_mbomDeletePart();
});
- //end of 연결된 part 삭제
- //연결된 part 변경
+ //연결된 part 변경 (M-BOM용)
$("#moveChange").click(function(){
- var leftPartNoList = $("input[name=checkedPartNo]:checked", parent.frames['leftFrame'].document);
-
- if(leftPartNoList.length === 0){
- showConfirm("선택된 파트가 없습니다.");
- return false;
- }
-
- if(leftPartNoList.length > 1){
- showConfirm("한번에 1개의 파트만 변경가능합니다.");
- return false;
- }
-
- var leftPartNo = leftPartNoList.attr("data-PART_NO");
- var leftPartObjid = leftPartNoList.attr("data-BOM_LAST_PART_OBJID");
- var leftParentPartObjid = leftPartNoList.attr("data-PARENT_PART_NO");
- var leftPartChildObjId = leftPartNoList.val();
- var leftPartBomQtyObjId = leftPartNoList.attr("data-OBJID");
-
- // Tabulator에서 선택된 오른쪽 행 데이터 가져오기
- var rightFrame = parent.frames['rightFrame'];
- var rightSelectedRows = rightFrame.getSelectedRows ? rightFrame.getSelectedRows() : [];
-
- if(rightSelectedRows.length === 0){
- showConfirm("선택된 파트가 없습니다.");
- return false;
- }
-
- if(rightSelectedRows.length > 1){
- showConfirm("한번에 1개의 파트만 변경가능합니다.");
- return false;
- }
-
- var rightRowData = rightSelectedRows[0].getData();
- var rightPartNo = rightRowData.PART_NO;
- var rightPartRev = rightRowData.REVISION || "";
- var rightObjId = rightRowData.OBJID;
-
- // Part 변경 확인
- showConfirm({
- title: 'Part 변경',
- html: '선택한 Part를 변경하시겠습니까?
' +
- '기존: ' + leftPartNo + '
' +
- '변경: ' + rightPartNo,
- icon: 'warning',
- showCancelButton: true,
- confirmButtonColor: '#3085d6',
- cancelButtonColor: '#d33',
- confirmButtonText: '변경',
- cancelButtonText: '취소',
- reverseButtons: false
- }).then(result => {
- if (result.isConfirmed) {
- fn_changeRelatePartInfo(leftPartBomQtyObjId, rightObjId, leftPartChildObjId, leftParentPartObjid, leftPartChildObjId, leftPartObjid, rightPartNo, rightPartRev);
- }
- });
+ fn_mbomChangePart();
});
+
+
// 이력보기 버튼 클릭
$("#btnHistory").click(function(){
fn_showHistory();
@@ -309,197 +136,6 @@ $(function(){
});
-//1레벨에 같은 Part No가 등록되어있는지 확인.
-function fn_checkSameTopPartNo(rightCheckedArr){
- var result = false;
-
- $.ajax({
- url: "/productionplanning/checkSameTopPartNo.do",
- method: 'post',
- traditional: true, // 배열 파라미터 처리를 위한 옵션
- data: {"OBJID":$("#objId").val(), "rightCheckedArr[]":rightCheckedArr}, // [] 추가
- dataType: 'json',
- async:false,
- success: function(data) {
- result = data.result;
- }
- , error: function(jqxhr, status, error){
- /* alert(jqxhr.statusText + ", " + status + ", " + error);
- alert(jqxhr.status);
- alert(jqxhr.responseText); */
- }
- });
- return result;
-}
-//end of 1레벨에 같은 Part No가 등록되어있는지 확인.
-
-//구조 연결 해제
-function fn_deletePartRelateInfo(leftObjId, leftPartLastObjId, leftParentPartNo, leftParentObjId, leftPartChildObjId){
- if(leftObjId == null){
- showConfirm("연결 해제할 Part를 선택해 주시기 바랍니다.");
- return;
- }
-
- showConfirm({
- title: 'Part 연결 해제',
- text: '선택한 Part의 연결을 해제하시겠습니까?',
- icon: 'warning',
- showCancelButton: true,
- confirmButtonColor: '#3085d6',
- cancelButtonColor: '#d33',
- confirmButtonText: '연결 해제',
- cancelButtonText: '취소',
- reverseButtons: false
- }).then(result => {
- if (!result.isConfirmed) return;
-
- fn_executeDeletePartRelateInfo(leftObjId, leftPartLastObjId, leftParentPartNo, leftParentObjId, leftPartChildObjId);
- });
-}
-
-// 실제 Part 연결 해제 실행 함수
-function fn_executeDeletePartRelateInfo(leftObjId, leftPartLastObjId, leftParentPartNo, leftParentObjId, leftPartChildObjId){
-
- $.ajax({
- url: "/productionplanning/deleteStatusPartRelateInfo.do",
- method: 'post',
- data: {"OBJID":$("#objId").val(), "leftObjId":leftObjId, "partObjId":leftPartLastObjId, "BOM_REPORT_OBJID":$("#objId").val()
- , "leftPartChildObjId":leftPartChildObjId, "leftParentPartNo":leftParentPartNo, "leftParentObjId":leftParentObjId},
- dataType: 'json',
- success: function(data) {
- if(data.result){
- $(parent.frames['leftFrame'].document.location.reload());
- //$(parent.frames['rightFrame'].fn_searchPart());
-
- // 부모 창(E-BOM 목록) 새로고침
- if(window.opener && window.opener.fn_search) {
- window.opener.fn_search();
- }
- }
- }
- , error: function(jqxhr, status, error){
- /* alert(jqxhr.statusText + ", " + status + ", " + error);
- alert(jqxhr.status);
- alert(jqxhr.responseText); */
- }
- });
-}
-//end of 구조 연결 해제
-
-//구조 연결
-function fn_relatePartInfo(leftObjId, rightCheckedArr, leftPartNoQty, leftPartLastObjId, leftPartChildObjId, leftQtyParObjId){
- if(typeof rightCheckedArr != "undefined" && rightCheckedArr.length == 0){
- showConfirm("선택된 Part가 없습니다.");
- return;
- }
-
- if(leftObjId == null){
- showConfirm({
- title: '1레벨 등록 확인',
- html: '좌측에 선택된 Part정보가 없습니다.
이대로 연결하면 1레벨로 등록됩니다.
진행하시겠습니까?',
- icon: 'warning',
- showCancelButton: true,
- confirmButtonColor: '#3085d6',
- cancelButtonColor: '#d33',
- confirmButtonText: '진행',
- cancelButtonText: '취소',
- reverseButtons: false
- }).then(result => {
- if (result.isConfirmed) {
- fn_executeRelatePartInfo(leftObjId, rightCheckedArr, leftPartNoQty, leftPartLastObjId, leftPartChildObjId, leftQtyParObjId);
- }
- });
- return;
- }
-
- fn_executeRelatePartInfo(leftObjId, rightCheckedArr, leftPartNoQty, leftPartLastObjId, leftPartChildObjId, leftQtyParObjId);
-}
-
-// 실제 Part 연결 실행 함수
-function fn_executeRelatePartInfo(leftObjId, rightCheckedArr, leftPartNoQty, leftPartLastObjId, leftPartChildObjId, leftQtyParObjId){
-
- $.ajax({
- url: "/productionplanning/relatePartInfo.do",
- method: 'post',
- traditional: true, // 배열 파라미터 처리를 위한 옵션
- data: {
- "leftObjId": leftObjId,
- "leftPartNoQty": leftPartNoQty,
- "OBJID": $("#objId").val(),
- "rightCheckedArr[]": rightCheckedArr, // Spring의 @RequestParam(value = "rightCheckedArr[]") 형식
- "partObjId": leftPartLastObjId,
- "BOM_REPORT_OBJID": $("#objId").val(),
- "leftPartChildObjId": leftPartChildObjId,
- "leftQtyParObjId": leftQtyParObjId
- },
- dataType: 'json',
- async:false,
- success: function(data) {
- if(data.result){
- // 왼쪽 프레임 새로고침
- $(parent.frames['leftFrame'].document.location.reload());
-
- // 오른쪽 프레임 선택 해제 (Tabulator)
- var rightFrame = parent.frames['rightFrame'];
- if(rightFrame.clearSelection) {
- rightFrame.clearSelection();
- }
-
- // 부모 창(E-BOM 목록) 새로고침
- if(window.opener && window.opener.fn_search) {
- window.opener.fn_search();
- }
- }
- }
- , error: function(jqxhr, status, error){
- /* alert(jqxhr.statusText + ", " + status + ", " + error);
- alert(jqxhr.status);
- alert(jqxhr.responseText); */
- }
- });
-}
-//end of 구조 연결
-
-//구조 연결 변경
-function fn_changeRelatePartInfo(objId,rightObjId,leftObjId,leftPartNoQty,leftPartChildObjId,leftPartObjid,rightPartNo,rightPartRev){
- $.ajax({
- url: "/productionplanning/changeRelatePartInfo.do",
- method: 'post',
- data: {"rightObjId":rightObjId, "OBJID":objId,"BOM_REPORT_OBJID":$("#objId").val(),
- "leftObjId":leftObjId,"leftPartNoQty":leftPartNoQty,"leftPartChildObjId":leftPartChildObjId,
- "leftPartObjid":leftPartObjid, "rightPartNo":rightPartNo, "rightPartRev":rightPartRev},
- dataType: 'json',
- async:false,
- success: function(data) {
- if(data.result){
- // 왼쪽 프레임 새로고침
- $(parent.frames['leftFrame'].document.location.reload());
-
- // 오른쪽 프레임 검색 다시 수행
- var rightFrame = parent.frames['rightFrame'];
- if(rightFrame.fn_searchPart) {
- rightFrame.fn_searchPart();
- }
-
- // 오른쪽 프레임 선택 해제 (Tabulator)
- if(rightFrame.clearSelection) {
- rightFrame.clearSelection();
- }
-
- // 부모 창(E-BOM 목록) 새로고침
- if(window.opener && window.opener.fn_search) {
- window.opener.fn_search();
- }
- }
- }
- , error: function(jqxhr, status, error){
- /* alert(jqxhr.statusText + ", " + status + ", " + error);
- alert(jqxhr.status);
- alert(jqxhr.responseText); */
- }
- });
-}
-
// 가공납기/연삭납기 일괄 적용
function fn_applyBulkDeadline() {
var processingDeadline = $("#bulk_processing_deadline").val();
@@ -1198,6 +834,260 @@ function compareItemFields(before, after) {
-
+
+
+
+