From ea0dde85011ef5d3e98f565729e3c39230c7414e Mon Sep 17 00:00:00 2001 From: hjjeong Date: Mon, 23 Feb 2026 18:33:32 +0900 Subject: [PATCH] =?UTF-8?q?=EC=86=8C=EC=9E=AC=20=ED=92=88=EC=9D=98?= =?UTF-8?q?=EC=84=9C=20=EA=B5=AC=EB=B6=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/pms/mapper/salesMng.xml | 16 ++++++++++++++++ .../pms/salesmgmt/service/SalesMngService.java | 12 +++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/com/pms/mapper/salesMng.xml b/src/com/pms/mapper/salesMng.xml index d98ebda..41c86ce 100644 --- a/src/com/pms/mapper/salesMng.xml +++ b/src/com/pms/mapper/salesMng.xml @@ -3908,6 +3908,14 @@ ORDER BY V.PATH2 MIN(MD.OBJID) AS OBJID, STRING_AGG(MD.OBJID::VARCHAR, ',' ORDER BY MD.OBJID) AS ORIGINAL_OBJIDS, MD.PART_OBJID, + /* 소재 있으면 소재 PART_OBJID, 없으면 부품 PART_OBJID */ + CASE WHEN COALESCE(MIN(MD.RAW_MATERIAL_PART_NO), '') != '' + THEN COALESCE( + (SELECT PM2.OBJID::VARCHAR FROM PART_MNG PM2 WHERE PM2.PART_NO = MIN(MD.RAW_MATERIAL_PART_NO) LIMIT 1), + MD.PART_OBJID::VARCHAR + ) + ELSE MD.PART_OBJID::VARCHAR + END AS PROPOSAL_PART_OBJID, MIN(PM.PART_NO) AS PART_NO, MIN(PM.PART_NAME) AS PART_NAME, CASE WHEN COALESCE(MIN(MD.RAW_MATERIAL_PART_NO), '') != '' @@ -4239,7 +4247,9 @@ ORDER BY V.PATH2 VENDOR_PM, NET_QTY, PO_QTY, + PRODUCTION_QTY, USE_YN, + MATERIAL_YN, PROPOSAL_DATE, WRITER, REGDATE @@ -4254,7 +4264,9 @@ ORDER BY V.PATH2 #{VENDOR_PM}, #{NET_QTY}, #{PO_QTY}, + #{PRODUCTION_QTY}, #{USE_YN}, + #{MATERIAL_YN}, NOW(), #{WRITER}, NOW() @@ -4275,7 +4287,9 @@ ORDER BY V.PATH2 VENDOR_PM, NET_QTY, PO_QTY, + PRODUCTION_QTY, USE_YN, + MATERIAL_YN, PROPOSAL_DATE, WRITER, REGDATE @@ -4290,7 +4304,9 @@ ORDER BY V.PATH2 #{VENDOR_PM}, #{NET_QTY}, #{PO_QTY}, + #{PRODUCTION_QTY}, #{USE_YN}, + #{MATERIAL_YN}, NOW(), #{WRITER}, NOW() diff --git a/src/com/pms/salesmgmt/service/SalesMngService.java b/src/com/pms/salesmgmt/service/SalesMngService.java index c359a11..b55c19e 100644 --- a/src/com/pms/salesmgmt/service/SalesMngService.java +++ b/src/com/pms/salesmgmt/service/SalesMngService.java @@ -2205,7 +2205,15 @@ public class SalesMngService { // M-BOM 기반 여부 + 소재/가공 구분에 따라 INSERT 쿼리 분기 if(!mbomHeaderObjid.isEmpty()) { // M-BOM 기반: 그룹핑된 합산 데이터를 직접 파라미터로 전달 - partParam.put("PART_OBJID", part.get("PART_OBJID")); + // 소재 있으면 소재 PART_OBJID, 없으면 부품 PART_OBJID + String rawMaterialNo = CommonUtils.checkNull(part.get("RAW_MATERIAL_NO")); + boolean isMaterial = !rawMaterialNo.isEmpty(); + + Object proposalPartObjid = part.get("PROPOSAL_PART_OBJID"); + if(proposalPartObjid == null || "".equals(CommonUtils.checkNull(proposalPartObjid))) { + proposalPartObjid = part.get("PART_OBJID"); + } + partParam.put("PART_OBJID", proposalPartObjid); partParam.put("QTY", part.get("QTY")); partParam.put("UNIT", CommonUtils.checkNull(part.get("UNIT"))); partParam.put("UNIT_PRICE", part.get("UNIT_PRICE")); @@ -2213,7 +2221,9 @@ public class SalesMngService { partParam.put("VENDOR_PM", CommonUtils.checkNull(part.get("VENDOR_PM"))); partParam.put("NET_QTY", part.get("NET_QTY")); partParam.put("PO_QTY", part.get("PO_QTY")); + partParam.put("PRODUCTION_QTY", part.get("PRODUCTION_QTY")); partParam.put("USE_YN", CommonUtils.checkNull(part.get("USE_YN"))); + partParam.put("MATERIAL_YN", isMaterial ? "Y" : "N"); if("PROCESSING".equals(proposalType)) { sqlSession.insert("salesMng.insertProposalPartFromMBomProcessing", partParam); -- 2.49.1