From 2ee76a8f20b9bdc70616bec5dabdde20eca88319 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Tue, 23 Dec 2025 16:05:49 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=85=EA=B3=A0=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EB=B0=9C=EC=A3=BC=EA=B8=88=EC=95=A1=20=ED=91=9C=EC=8B=9C=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deliveryMngAcceptanceList.jsp | 12 ++++--- src/com/pms/mapper/purchaseOrder.xml | 32 +++++++++++-------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/WebContent/WEB-INF/view/purchaseOrder/deliveryMngAcceptanceList.jsp b/WebContent/WEB-INF/view/purchaseOrder/deliveryMngAcceptanceList.jsp index 1983352..da96cd2 100644 --- a/WebContent/WEB-INF/view/purchaseOrder/deliveryMngAcceptanceList.jsp +++ b/WebContent/WEB-INF/view/purchaseOrder/deliveryMngAcceptanceList.jsp @@ -86,7 +86,8 @@ $(document).ready(function(){ var columns = [ // 요구사항: 품의서 No, 발주서 No, 프로젝트번호, 품번, 품명, 공급업체, 발주수량, 입고수량, 미입고수량, 검사성적서, 입고결과 {title:'TOTAL_SUPPLY_PRICE' ,field:'TOTAL_SUPPLY_PRICE' ,visible:false, frozen:true}, - {title:'TOTAL_DELIVERY_PRICE' ,field:'TOTAL_DELIVERY_PRICE' ,visible:false, frozen:true}, + {title:'TOTAL_DELIVERY_PRICE' ,field:'TOTAL_DELIVERY_PRICE' ,visible:false, frozen:true}, + {title:'TOTAL_NOT_DELIVERY_PRICE',field:'TOTAL_NOT_DELIVERY_PRICE',visible:false, frozen:true}, {headerHozAlign : 'center', hozAlign : 'center', minWidth : 130, widthGrow : 1, title : '품의서 No', field : 'PROPOSAL_NO', formatter: fnc_createGridAnchorTag, cellClick : function(e, cell) { @@ -179,17 +180,18 @@ function fn_calculateTotalAmount(){ // 현재 그리드에 표시된 데이터 가져오기 var data = _tabulGrid.getData(); - var totalOrderAmount = 0; // 총 발주금액 + var totalOrderAmount = 0; // 총 발주금액 var totalDeliveredAmount = 0; // 입고금액 var totalNotDeliveredAmount = 0; // 미입고금액 if(data.length > 0) { data.forEach(function(row) { - var rowTotalPrice = parseFloat(row.TOTAL_SUPPLY_PRICE || 0); + // SQL에서 계산된 값 사용 + var rowSupplyPrice = parseFloat(row.TOTAL_SUPPLY_PRICE || 0); var rowDeliveredPrice = parseFloat(row.TOTAL_DELIVERY_PRICE || 0); - var rowNotDeliveredPrice = rowTotalPrice - rowDeliveredPrice; + var rowNotDeliveredPrice = parseFloat(row.TOTAL_NOT_DELIVERY_PRICE || 0); - totalOrderAmount += rowTotalPrice; + totalOrderAmount += rowSupplyPrice; totalDeliveredAmount += rowDeliveredPrice; totalNotDeliveredAmount += rowNotDeliveredPrice; }); diff --git a/src/com/pms/mapper/purchaseOrder.xml b/src/com/pms/mapper/purchaseOrder.xml index 13aacec..77b36e4 100644 --- a/src/com/pms/mapper/purchaseOrder.xml +++ b/src/com/pms/mapper/purchaseOrder.xml @@ -4293,7 +4293,8 @@ SELECT POM.OBJID ,POM.TOTAL_PRICE ,POM.DISCOUNT_PRICE ,POM.TOTAL_SUPPLY_UNIT_PRICE - ,POM.TOTAL_SUPPLY_PRICE + -- ,POM.TOTAL_SUPPLY_PRICE + ,S1.TOTAL_SUPPLY_PRICE ,POM.NEGO_RATE ,POM.MULTI_MASTER_YN ,POM.MULTI_YN @@ -4304,6 +4305,7 @@ SELECT POM.OBJID ,S1.CUR_DELIVERY_DATE ,S1.TOTAL_DELIVERY_QTY ,S1.TOTAL_DELIVERY_PRICE + ,S1.TOTAL_NOT_DELIVERY_PRICE ,((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - (S1.TOTAL_DELIVERY_QTY )) AS NON_DELIVERY_QTY @@ -4355,19 +4357,23 @@ SELECT POM.OBJID LEFT OUTER JOIN( SELECT POP.PURCHASE_ORDER_MASTER_OBJID ,SUM(POP.ORDER_QTY::NUMERIC) AS TOTAL_PO_QTY - ,MAX(DH.RECEIPT_DATE) AS CUR_DELIVERY_DATE - ,SUM(DH.RECEIPT_QTY::NUMERIC) AS TOTAL_DELIVERY_QTY - ,SUM(pop.partner_price::NUMERIC * DH.RECEIPT_QTY::NUMERIC) AS TOTAL_DELIVERY_PRICE - - - + ,MAX(AP_AGG.MAX_RECEIPT_DATE) AS CUR_DELIVERY_DATE + ,SUM(COALESCE(AP_AGG.SUM_RECEIPT_QTY, 0)) AS TOTAL_DELIVERY_QTY + -- 발주금액 = 단가 × 발주수량 + ,SUM(COALESCE(POP.PARTNER_PRICE::NUMERIC, 0) * COALESCE(POP.ORDER_QTY::NUMERIC, 0)) AS TOTAL_SUPPLY_PRICE + -- 입고금액 = 단가 × 입고수량 + ,SUM(COALESCE(POP.PARTNER_PRICE::NUMERIC, 0) * COALESCE(AP_AGG.SUM_RECEIPT_QTY, 0)) AS TOTAL_DELIVERY_PRICE + -- 미입고금액 = 단가 × (발주수량 - 입고수량) + ,SUM(COALESCE(POP.PARTNER_PRICE::NUMERIC, 0) * (COALESCE(POP.ORDER_QTY::NUMERIC, 0) - COALESCE(AP_AGG.SUM_RECEIPT_QTY, 0))) AS TOTAL_NOT_DELIVERY_PRICE FROM PURCHASE_ORDER_PART POP - LEFT OUTER JOIN ARRIVAL_PLAN DH - ON POP.OBJID = DH.ORDER_PART_OBJID - - + LEFT OUTER JOIN ( + -- ARRIVAL_PLAN을 ORDER_PART_OBJID별로 먼저 집계 + SELECT ORDER_PART_OBJID + ,SUM(RECEIPT_QTY::NUMERIC) AS SUM_RECEIPT_QTY + ,MAX(RECEIPT_DATE) AS MAX_RECEIPT_DATE + FROM ARRIVAL_PLAN + GROUP BY ORDER_PART_OBJID + ) AP_AGG ON POP.OBJID = AP_AGG.ORDER_PART_OBJID GROUP BY POP.PURCHASE_ORDER_MASTER_OBJID ) AS S1 ON POM.OBJID::VARCHAR = S1.PURCHASE_ORDER_MASTER_OBJID LEFT OUTER JOIN PROJECT_MGMT AS CM