From a5d243d19128eead3cb7003c2143ecdbd61ab078 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Fri, 27 Feb 2026 11:14:35 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B5=AC=EB=A7=A4=EB=A6=AC=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=86=8C=EC=9E=AC,=20=EA=B0=80=EA=B3=B5=20=EB=B0=9C?= =?UTF-8?q?=EC=A3=BC=EC=9D=BC,=20=EC=9E=85=EA=B3=A0=EC=9D=BC=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C=20=EC=BB=AC=EB=9F=BC=20=EC=B6=94=EA=B0=80,=20?= =?UTF-8?q?=EC=97=91=EC=85=80=EB=8B=A4=EC=9A=B4=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/salesMng/purchaseListFormPopUp.jsp | 68 +++++++++++-- src/com/pms/mapper/salesMng.xml | 98 ++++++++++++++++++- 2 files changed, 156 insertions(+), 10 deletions(-) diff --git a/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp b/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp index 9690de4..e42704c 100644 --- a/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp +++ b/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp @@ -75,6 +75,7 @@ body, html {

구매리스트

+ @@ -565,13 +566,11 @@ function fn_initGrid() { title: '공급업체', field: 'VENDOR_PM', editor: function(cell, onRendered, success, cancel, editorParams) { - // Select2 에디터 (가공업체와 동일한 목록 사용) return createSelect2Editor(processingVendorList)(cell, onRendered, success, cancel, editorParams); }, formatter: function(cell) { - var value = cell.getValue(); + var value = (typeof cell.getValue === 'function') ? cell.getValue() : (cell.value || ''); if(!value) return ''; - // processingVendorList에서 해당 값의 이름 찾기 for(var i = 0; i < processingVendorList.length; i++) { if(processingVendorList[i].id == value) { return processingVendorList[i].text; @@ -686,9 +685,8 @@ function fn_initGrid() { return createSelect2Editor(processingVendorList)(cell, onRendered, success, cancel, editorParams); }, formatter: function(cell) { - var value = cell.getValue(); + var value = (typeof cell.getValue === 'function') ? cell.getValue() : (cell.value || ''); if(!value) return ''; - for(var i = 0; i < processingVendorList.length; i++) { if(processingVendorList[i].id == value) { return processingVendorList[i].text; @@ -783,6 +781,32 @@ function fn_initGrid() { return value; } }, + // 35. 소재발주일 + { + headerHozAlign: 'center', + hozAlign: 'center', + width: 100, + title: '소재발주일', + field: 'MATERIAL_PO_DATE', + formatter: function(cell) { + var value = (typeof cell.getValue === 'function') ? cell.getValue() : (cell.value || ''); + if(!value) return ''; + return value.length >= 10 ? value.substring(0, 10) : value; + } + }, + // 36. 소재입고일 + { + headerHozAlign: 'center', + hozAlign: 'center', + width: 100, + title: '소재입고일', + field: 'MATERIAL_RECEIPT_DATE', + formatter: function(cell) { + var value = (typeof cell.getValue === 'function') ? cell.getValue() : (cell.value || ''); + if(!value) return ''; + return value.length >= 10 ? value.substring(0, 10) : value; + } + }, // 34. 가공 품의서작성일 { headerHozAlign: 'center', @@ -791,14 +815,39 @@ function fn_initGrid() { title: '가공품의서일', field: 'PROCESSING_PROPOSAL_DATE', formatter: function(cell) { - var value = cell.getValue(); + var value = (typeof cell.getValue === 'function') ? cell.getValue() : (cell.value || ''); if(!value) return ''; - // YYYY-MM-DD 형식으로 표시 if(value.length >= 10) { return value.substring(0, 10); } return value; } + }, + // 37. 가공발주일 + { + headerHozAlign: 'center', + hozAlign: 'center', + width: 100, + title: '가공발주일', + field: 'PROCESSING_PO_DATE', + formatter: function(cell) { + var value = (typeof cell.getValue === 'function') ? cell.getValue() : (cell.value || ''); + if(!value) return ''; + return value.length >= 10 ? value.substring(0, 10) : value; + } + }, + // 38. 가공입고일 + { + headerHozAlign: 'center', + hozAlign: 'center', + width: 100, + title: '가공입고일', + field: 'PROCESSING_RECEIPT_DATE', + formatter: function(cell) { + var value = (typeof cell.getValue === 'function') ? cell.getValue() : (cell.value || ''); + if(!value) return ''; + return value.length >= 10 ? value.substring(0, 10) : value; + } } ]; @@ -875,8 +924,9 @@ function fn_loadFromMBom(callback) { url: "/salesMng/getMBomForPurchaseList.do", method: 'post', data: { - PROJECT_MGMT_OBJID: mbomHeaderObjid, // MBOM_HEADER_OBJID를 직접 사용 - bomReportObjId: bomReportObjid + PROJECT_MGMT_OBJID: mbomHeaderObjid, + bomReportObjId: bomReportObjid, + SALES_REQUEST_MASTER_OBJID: salesRequestMasterObjid }, dataType: 'json', success: function(data) { diff --git a/src/com/pms/mapper/salesMng.xml b/src/com/pms/mapper/salesMng.xml index 78719d1..2545a63 100644 --- a/src/com/pms/mapper/salesMng.xml +++ b/src/com/pms/mapper/salesMng.xml @@ -3187,7 +3187,51 @@ UPDATE SET 0 AS GRAND_TOTAL_PRICE, SRP.PROPOSAL_DATE, NULL AS PROCESSING_PROPOSAL_DATE, - 'SRP' AS DATA_SOURCE -- 데이터 소스 구분용 + -- 소재발주일: 소재품번으로 매칭 + (SELECT POM.MAIL_SEND_DATE + FROM PURCHASE_ORDER_MASTER POM + JOIN PURCHASE_ORDER_PART POP ON POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID + JOIN SALES_REQUEST_MASTER SRM_PO ON POM.SALES_REQUEST_OBJID = SRM_PO.OBJID + WHERE COALESCE(SRP.RAW_MATERIAL_PART_NO, '') != '' + AND POP.PART_OBJID::VARCHAR = (SELECT PM2.OBJID::VARCHAR FROM PART_MNG PM2 WHERE PM2.PART_NO = SRP.RAW_MATERIAL_PART_NO LIMIT 1) + AND SRM_PO.PROJECT_NO = (SELECT PROJECT_NO FROM SALES_REQUEST_MASTER WHERE OBJID = SRP.SALES_REQUEST_MASTER_OBJID) + AND POM.MAIL_SEND_DATE IS NOT NULL + ORDER BY POM.MAIL_SEND_DATE DESC + LIMIT 1) AS MATERIAL_PO_DATE, + -- 소재입고일 + (SELECT SUBSTRING(AP.RECEIPT_DATE, 1, 10) + FROM ARRIVAL_PLAN AP + JOIN PURCHASE_ORDER_PART POP ON AP.ORDER_PART_OBJID = POP.OBJID + JOIN PURCHASE_ORDER_MASTER POM ON POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID + JOIN SALES_REQUEST_MASTER SRM_PO ON POM.SALES_REQUEST_OBJID = SRM_PO.OBJID + WHERE COALESCE(SRP.RAW_MATERIAL_PART_NO, '') != '' + AND POP.PART_OBJID::VARCHAR = (SELECT PM2.OBJID::VARCHAR FROM PART_MNG PM2 WHERE PM2.PART_NO = SRP.RAW_MATERIAL_PART_NO LIMIT 1) + AND SRM_PO.PROJECT_NO = (SELECT PROJECT_NO FROM SALES_REQUEST_MASTER WHERE OBJID = SRP.SALES_REQUEST_MASTER_OBJID) + AND AP.RECEIPT_DATE IS NOT NULL AND AP.RECEIPT_DATE != '' + ORDER BY AP.RECEIPT_DATE DESC + LIMIT 1) AS MATERIAL_RECEIPT_DATE, + -- 가공발주일: 부품 PART_OBJID로 직접 매칭 + (SELECT POM.MAIL_SEND_DATE + FROM PURCHASE_ORDER_MASTER POM + JOIN PURCHASE_ORDER_PART POP ON POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID + JOIN SALES_REQUEST_MASTER SRM_PO ON POM.SALES_REQUEST_OBJID = SRM_PO.OBJID + WHERE POP.PART_OBJID::VARCHAR = SRP.PART_OBJID::VARCHAR + AND SRM_PO.PROJECT_NO = (SELECT PROJECT_NO FROM SALES_REQUEST_MASTER WHERE OBJID = SRP.SALES_REQUEST_MASTER_OBJID) + AND POM.MAIL_SEND_DATE IS NOT NULL + ORDER BY POM.MAIL_SEND_DATE DESC + LIMIT 1) AS PROCESSING_PO_DATE, + -- 가공입고일 + (SELECT SUBSTRING(AP.RECEIPT_DATE, 1, 10) + FROM ARRIVAL_PLAN AP + JOIN PURCHASE_ORDER_PART POP ON AP.ORDER_PART_OBJID = POP.OBJID + JOIN PURCHASE_ORDER_MASTER POM ON POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID + JOIN SALES_REQUEST_MASTER SRM_PO ON POM.SALES_REQUEST_OBJID = SRM_PO.OBJID + WHERE POP.PART_OBJID::VARCHAR = SRP.PART_OBJID::VARCHAR + AND SRM_PO.PROJECT_NO = (SELECT PROJECT_NO FROM SALES_REQUEST_MASTER WHERE OBJID = SRP.SALES_REQUEST_MASTER_OBJID) + AND AP.RECEIPT_DATE IS NOT NULL AND AP.RECEIPT_DATE != '' + ORDER BY AP.RECEIPT_DATE DESC + LIMIT 1) AS PROCESSING_RECEIPT_DATE, + 'SRP' AS DATA_SOURCE FROM SALES_REQUEST_PART SRP LEFT JOIN PART_MNG PM ON SRP.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR @@ -3519,6 +3563,58 @@ SELECT G.PROCESSING_UNIT_PRICE, G.PROCESSING_TOTAL_PRICE, G.GRAND_TOTAL_PRICE, + + -- 소재발주일: 소재품번(RAW_MATERIAL_PART_NO)으로 PART_MNG OBJID 조회 후 매칭 + (SELECT POM.MAIL_SEND_DATE + FROM PURCHASE_ORDER_MASTER POM + JOIN PURCHASE_ORDER_PART POP ON POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID + JOIN SALES_REQUEST_MASTER SRM_PO ON POM.SALES_REQUEST_OBJID = SRM_PO.OBJID + WHERE COALESCE(G.RAW_MATERIAL_PART_NO, '') != '' + AND POP.PART_OBJID::VARCHAR = (SELECT PM2.OBJID::VARCHAR FROM PART_MNG PM2 WHERE PM2.PART_NO = G.RAW_MATERIAL_PART_NO LIMIT 1) + AND SRM_PO.PROJECT_NO = (SELECT PROJECT_NO FROM SALES_REQUEST_MASTER WHERE OBJID = #{SALES_REQUEST_MASTER_OBJID}) + AND POM.MAIL_SEND_DATE IS NOT NULL + ORDER BY POM.MAIL_SEND_DATE DESC + LIMIT 1) AS MATERIAL_PO_DATE, + -- 소재입고일 + (SELECT SUBSTRING(AP.RECEIPT_DATE, 1, 10) + FROM ARRIVAL_PLAN AP + JOIN PURCHASE_ORDER_PART POP ON AP.ORDER_PART_OBJID = POP.OBJID + JOIN PURCHASE_ORDER_MASTER POM ON POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID + JOIN SALES_REQUEST_MASTER SRM_PO ON POM.SALES_REQUEST_OBJID = SRM_PO.OBJID + WHERE COALESCE(G.RAW_MATERIAL_PART_NO, '') != '' + AND POP.PART_OBJID::VARCHAR = (SELECT PM2.OBJID::VARCHAR FROM PART_MNG PM2 WHERE PM2.PART_NO = G.RAW_MATERIAL_PART_NO LIMIT 1) + AND SRM_PO.PROJECT_NO = (SELECT PROJECT_NO FROM SALES_REQUEST_MASTER WHERE OBJID = #{SALES_REQUEST_MASTER_OBJID}) + AND AP.RECEIPT_DATE IS NOT NULL AND AP.RECEIPT_DATE != '' + ORDER BY AP.RECEIPT_DATE DESC + LIMIT 1) AS MATERIAL_RECEIPT_DATE, + -- 가공발주일: 부품 PART_OBJID로 직접 매칭 + (SELECT POM.MAIL_SEND_DATE + FROM PURCHASE_ORDER_MASTER POM + JOIN PURCHASE_ORDER_PART POP ON POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID + JOIN SALES_REQUEST_MASTER SRM_PO ON POM.SALES_REQUEST_OBJID = SRM_PO.OBJID + WHERE POP.PART_OBJID::VARCHAR = G.PART_OBJID::VARCHAR + AND SRM_PO.PROJECT_NO = (SELECT PROJECT_NO FROM SALES_REQUEST_MASTER WHERE OBJID = #{SALES_REQUEST_MASTER_OBJID}) + AND POM.MAIL_SEND_DATE IS NOT NULL + ORDER BY POM.MAIL_SEND_DATE DESC + LIMIT 1) AS PROCESSING_PO_DATE, + -- 가공입고일 + (SELECT SUBSTRING(AP.RECEIPT_DATE, 1, 10) + FROM ARRIVAL_PLAN AP + JOIN PURCHASE_ORDER_PART POP ON AP.ORDER_PART_OBJID = POP.OBJID + JOIN PURCHASE_ORDER_MASTER POM ON POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID + JOIN SALES_REQUEST_MASTER SRM_PO ON POM.SALES_REQUEST_OBJID = SRM_PO.OBJID + WHERE POP.PART_OBJID::VARCHAR = G.PART_OBJID::VARCHAR + AND SRM_PO.PROJECT_NO = (SELECT PROJECT_NO FROM SALES_REQUEST_MASTER WHERE OBJID = #{SALES_REQUEST_MASTER_OBJID}) + AND AP.RECEIPT_DATE IS NOT NULL AND AP.RECEIPT_DATE != '' + ORDER BY AP.RECEIPT_DATE DESC + LIMIT 1) AS PROCESSING_RECEIPT_DATE, + + + NULL AS MATERIAL_PO_DATE, + NULL AS MATERIAL_RECEIPT_DATE, + NULL AS PROCESSING_PO_DATE, + NULL AS PROCESSING_RECEIPT_DATE, + 'MBOM' AS DATA_SOURCE FROM GROUPED_BOM G LEFT JOIN PART_MNG P ON P.OBJID::VARCHAR = G.PART_OBJID::VARCHAR