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