From b63bf68f4ece1951c3fc223459fedd8e38ab1a71 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Tue, 27 Jan 2026 11:30:52 +0900 Subject: [PATCH] auto commit --- .../com/pms/mapper/productionplanning.xml | 103 +- .../classes/com/pms/mapper/purchaseOrder.xml | 204 +++- .../classes/com/pms/mapper/quality.xml | 86 +- .../classes/com/pms/mapper/salesMng.xml | 1080 ++++++++++++++++- 4 files changed, 1403 insertions(+), 70 deletions(-) diff --git a/WebContent/WEB-INF/classes/com/pms/mapper/productionplanning.xml b/WebContent/WEB-INF/classes/com/pms/mapper/productionplanning.xml index a98532c..f79103a 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/productionplanning.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/productionplanning.xml @@ -3137,6 +3137,7 @@ PM.CONTRACT_OBJID, PM.PROJECT_NO, PM.BOM_REPORT_OBJID, + PM.PART_OBJID, PM.PART_NO, PM.PART_NAME, PM.SOURCE_BOM_TYPE, @@ -3293,6 +3294,7 @@ 0 AS PO_QTY, '' AS VENDOR, 0 AS UNIT_PRICE, + 0 AS PROCESSING_UNIT_PRICE, 0 AS TOTAL_PRICE, 1 AS LEVEL FROM @@ -3373,6 +3375,7 @@ 0 AS PO_QTY, '' AS VENDOR, 0 AS UNIT_PRICE, + 0 AS PROCESSING_UNIT_PRICE, 0 AS TOTAL_PRICE, 1 AS LEVEL FROM @@ -3426,6 +3429,7 @@ MH.BEFORE_DATA, MH.AFTER_DATA, MH.CHANGE_USER, + USER_NAME(MH.CHANGE_USER) AS CHANGE_USER_NAME, TO_CHAR(MH.CHANGE_DATE, 'YYYY-MM-DD HH24:MI:SS') AS CHANGE_DATE, -- MBOM_HEADER 정보 조인 MHD.MBOM_NO AS MBOM_PART_NO, @@ -3848,7 +3852,7 @@ PROCESSING_VENDOR, PROCESSING_DEADLINE, GRINDING_DEADLINE, REQUIRED_QTY, ORDER_QTY, PRODUCTION_QTY, STOCK_QTY, SHORTAGE_QTY, NET_QTY, PO_QTY, - VENDOR, UNIT_PRICE, TOTAL_PRICE, CURRENCY, LEAD_TIME, MIN_ORDER_QTY, + VENDOR, UNIT_PRICE, PROCESSING_UNIT_PRICE, TOTAL_PRICE, CURRENCY, LEAD_TIME, MIN_ORDER_QTY, PROPOSAL_DATE, @@ -3861,7 +3865,7 @@ #{processingVendor}, #{processingDeadline}, #{grindingDeadline}, #{requiredQty}, #{orderQty}, #{productionQty}, #{stockQty}, #{shortageQty}, #{netQty}, #{poQty}, - #{vendor}, #{unitPrice}, #{totalPrice}, #{currency}, #{leadTime}, #{minOrderQty}, + #{vendor}, #{unitPrice}, #{processingUnitPrice}, #{totalPrice}, #{currency}, #{leadTime}, #{minOrderQty}, #{proposalDate}, @@ -4047,6 +4051,7 @@ MD.PO_QTY, MD.VENDOR, MD.UNIT_PRICE, + MD.PROCESSING_UNIT_PRICE, MD.TOTAL_PRICE, MD.CURRENCY, MD.LEAD_TIME, @@ -4100,6 +4105,7 @@ SHORTAGE_QTY, VENDOR, UNIT_PRICE, + PROCESSING_UNIT_PRICE, TOTAL_PRICE, CURRENCY, LEAD_TIME, @@ -4144,6 +4150,7 @@ A.SHORTAGE_QTY, A.VENDOR, A.UNIT_PRICE, + A.PROCESSING_UNIT_PRICE, A.TOTAL_PRICE, A.CURRENCY, A.LEAD_TIME, @@ -4196,6 +4203,7 @@ B.SHORTAGE_QTY, B.VENDOR, B.UNIT_PRICE, + B.PROCESSING_UNIT_PRICE, B.TOTAL_PRICE, B.CURRENCY, B.LEAD_TIME, @@ -4248,6 +4256,7 @@ V.VENDOR, (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = V.VENDOR) AS VENDOR_NAME, V.UNIT_PRICE, + V.PROCESSING_UNIT_PRICE, V.TOTAL_PRICE, V.CURRENCY, V.LEAD_TIME, @@ -4410,6 +4419,7 @@ NULL AS SHORTAGE_QTY, NULL AS VENDOR, NULL AS UNIT_PRICE, + NULL AS PROCESSING_UNIT_PRICE, NULL AS TOTAL_PRICE, NULL AS CURRENCY, NULL AS LEAD_TIME, @@ -4931,4 +4941,93 @@ WHERE PROJECT_OBJID = #{projectObjid} + + + + + + diff --git a/WebContent/WEB-INF/classes/com/pms/mapper/purchaseOrder.xml b/WebContent/WEB-INF/classes/com/pms/mapper/purchaseOrder.xml index 56624c4..320d447 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/purchaseOrder.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/purchaseOrder.xml @@ -879,10 +879,15 @@ SELECT SRP.OBJID, SRP.PART_OBJID, - SRP.QTY, - COALESCE(SRP.PO_QTY, SRP.QTY::NUMERIC, 0) AS ORDER_QTY, -- 발주수량 (PO_QTY 우선, 없으면 QTY) - SRP.UNIT_PRICE AS PARTNER_PRICE, - SRP.TOTAL_PRICE, + COALESCE(NULLIF(SRP.QTY::VARCHAR, ''), '0') AS QTY, + -- 발주수량: PO_QTY가 있고 0보다 크면 사용, 아니면 QTY 사용 + CASE + WHEN SRP.PO_QTY IS NOT NULL AND SRP.PO_QTY::NUMERIC > 0 THEN SRP.PO_QTY::VARCHAR + WHEN SRP.QTY IS NOT NULL THEN SRP.QTY::VARCHAR + ELSE '0' + END AS ORDER_QTY, + COALESCE(SRP.UNIT_PRICE, 0) AS PARTNER_PRICE, + COALESCE(SRP.TOTAL_PRICE, 0) AS TOTAL_PRICE, SRP.VENDOR_PM AS PARTNER_OBJID, PM.PART_NO, PM.PART_NAME, @@ -3317,7 +3322,7 @@ SELECT POM.OBJID ON POM.CONTRACT_MGMT_OBJID = CM.OBJID left outer join SALES_REQUEST_MASTER as SRM on POM.SALES_REQUEST_OBJID = SRM.OBJID - and SRM.DOC_TYPE = 'PROPOSAL' + and SRM.DOC_TYPE IN ('PROPOSAL', 'PURCHASE_REG_PROPOSAL') ,TO_CHAR(POM.REGDATE,'YYYY') AS POM_YEAR ,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = CM.CUSTOMER_OBJID) AS CUSTOMER_NAME @@ -6123,4 +6129,192 @@ FROM( ORDER BY PART_NO + + + + + + UPDATE PURCHASE_ORDER_MASTER + SET STATUS = #{STATUS} + WHERE OBJID = #{OBJID} + + + + + UPDATE PURCHASE_ORDER_MASTER + SET STATUS = #{STATUS} + WHERE MULTI_MASTER_OBJID = #{OBJID} + + + + + \ No newline at end of file diff --git a/WebContent/WEB-INF/classes/com/pms/mapper/quality.xml b/WebContent/WEB-INF/classes/com/pms/mapper/quality.xml index e290c55..ed91339 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/quality.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/quality.xml @@ -1208,6 +1208,12 @@ AND (SELECT CASE WHEN COUNT(CASE WHEN PID.INSPECTION_RESULT = 'NG' THEN 1 END) > 0 THEN 'NG' ELSE 'OK' END FROM PROCESS_INSPECTION_DETAIL PID WHERE PID.MASTER_OBJID = PIM.OBJID) = #{search_inspection_result} + /* 진행공정 */ + + AND EXISTS (SELECT 1 FROM PROCESS_INSPECTION_DETAIL PID + WHERE PID.MASTER_OBJID = PIM.OBJID + AND PID.PROCESS_CD = #{search_process_cd}) + ORDER BY PIM.REG_DATE DESC @@ -1411,6 +1417,10 @@ AND PID.INSPECTION_RESULT = #{search_inspection_result} + /* 진행공정 */ + + AND PID.PROCESS_CD = #{search_process_cd} + ORDER BY PIM.INSPECTION_DATE DESC, PIM.REG_DATE DESC, PID.REG_DATE @@ -1486,17 +1496,17 @@ AND (T2.INSPECTOR IS NOT NULL OR T2.WRITER IS NOT NULL)) sub WHERE val IS NOT NULL AND val != '' ) AS WRITER_NAME - - , SUM(T.RECEIPT_QTY) AS RECEIPT_QTY - , SUM(T.GOOD_QTY) AS GOOD_QTY - , SUM(T.DEFECT_QTY) AS DEFECTIVE_QTY + + , SUM(CASE WHEN T.DATA_TYPE = 'GOOD' THEN T.RECEIPT_QTY ELSE 0 END) AS RECEIPT_QTY + , SUM(CASE WHEN T.DATA_TYPE = 'GOOD' THEN T.GOOD_QTY ELSE 0 END) AS GOOD_QTY + , SUM(CASE WHEN T.DATA_TYPE = 'DEFECT' THEN T.DEFECT_QTY ELSE 0 END) AS DEFECTIVE_QTY , CASE - WHEN SUM(T.RECEIPT_QTY) > 0 - THEN ROUND(SUM(T.DEFECT_QTY) * 100.0 / SUM(T.RECEIPT_QTY), 2) + WHEN SUM(CASE WHEN T.DATA_TYPE = 'GOOD' THEN T.RECEIPT_QTY ELSE 0 END) > 0 + THEN ROUND(SUM(CASE WHEN T.DATA_TYPE = 'DEFECT' THEN T.DEFECT_QTY ELSE 0 END) * 100.0 / SUM(CASE WHEN T.DATA_TYPE = 'GOOD' THEN T.RECEIPT_QTY ELSE 0 END), 2) ELSE 0 END AS DEFECT_RATE - , SUM(CASE WHEN T.DISPOSITION_TYPE = '수정' THEN T.DEFECT_QTY ELSE 0 END) AS REGENERATION_QTY - , SUM(T.GOOD_QTY) + SUM(CASE WHEN T.DISPOSITION_TYPE = '수정' THEN T.DEFECT_QTY ELSE 0 END) AS FINAL_GOOD_QTY + , SUM(CASE WHEN T.DATA_TYPE = 'DEFECT' AND T.DISPOSITION_TYPE = '수정' THEN T.DEFECT_QTY ELSE 0 END) AS REGENERATION_QTY + , SUM(CASE WHEN T.DATA_TYPE = 'GOOD' THEN T.GOOD_QTY ELSE 0 END) + SUM(CASE WHEN T.DATA_TYPE = 'DEFECT' AND T.DISPOSITION_TYPE = '수정' THEN T.DEFECT_QTY ELSE 0 END) AS FINAL_GOOD_QTY FROM ( SELECT SPI.OBJID , COALESCE(SPI.MODEL_NAME, '') AS MODEL_NAME @@ -1537,6 +1547,14 @@ AND SPI.WRITER = #{search_writer} + + + AND UPPER(SPI.DEFECT_TYPE) LIKE UPPER('%' || #{search_defect_type} || '%') + + + + AND UPPER(SPI.RESPONSIBLE_DEPT) LIKE UPPER('%' || #{search_responsible_dept} || '%') + ) T GROUP BY T.INSPECTION_GROUP_ID ORDER BY MIN(T.INSPECTION_DATE) DESC, T.INSPECTION_GROUP_ID @@ -1645,6 +1663,24 @@ ORDER BY NAME + + + + + + - - + SELECT COALESCE(MAX( + CAST(SPLIT_PART(RECEIPT_NO, '-', 3) AS INTEGER) + ), 0) + 1 + FROM CUSTOMER_CS + WHERE RECEIPT_NO LIKE 'CS-' || #{TARGET_DATE} || '-%' @@ -2026,6 +2073,7 @@ , STATUS , REMARK , WRITER + , RECEIPT_USER_ID , REG_DATE ) VALUES ( #{OBJID} @@ -2047,6 +2095,7 @@ , #{STATUS} , #{REMARK} , #{WRITER} + , #{RECEIPT_USER_ID} , NOW() ) @@ -2067,6 +2116,7 @@ , SERIAL_NO = #{SERIAL_NO} , MANUFACTURER = #{MANUFACTURER} , COMPLAINT_CONTENT = #{COMPLAINT_CONTENT} + , RECEIPT_USER_ID = #{RECEIPT_USER_ID} , MOD_DATE = NOW() WHERE OBJID = #{OBJID} @@ -2085,6 +2135,18 @@ WHERE OBJID = #{OBJID} + + + DELETE FROM CUSTOMER_CS WHERE OBJID = #{OBJID} + + + + + DELETE FROM ATTACH_FILE_INFO + WHERE TARGET_OBJID = #{OBJID} + AND DOC_TYPE IN ('CUSTOMER_CS_IMAGE', 'CUSTOMER_CS_ACTION') + + diff --git a/WebContent/WEB-INF/classes/com/pms/mapper/salesMng.xml b/WebContent/WEB-INF/classes/com/pms/mapper/salesMng.xml index 3009f6a..8cbe26c 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/salesMng.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/salesMng.xml @@ -613,7 +613,7 @@ VALUES ( #{SALES_REQUEST_MASTER_OBJID }, - (SELECT 'R'||TO_CHAR(NOW(),'YYYYMMDD')||'-'||LPAD((COALESCE(MAX(SUBSTR(REQUEST_MNG_NO,11,13)),'0')::INTEGER+1)::TEXT,3,'0') FROM SALES_REQUEST_MASTER WHERE DOC_TYPE = 'PURCHASE_REQUEST' OR DOC_TYPE IS NULL), + (SELECT 'R'||TO_CHAR(NOW(),'YYYYMMDD')||'-'||LPAD((COALESCE(MAX(SUBSTR(REQUEST_MNG_NO,11,13)),'0')::INTEGER+1)::TEXT,3,'0') FROM SALES_REQUEST_MASTER WHERE DOC_TYPE IN ('PURCHASE_REQUEST', 'PURCHASE_REG') OR DOC_TYPE IS NULL), #{REQUEST_CD }, #{PROJECT_NO }, #{RELEASE }, @@ -633,7 +633,7 @@ VALUES #{AREA_CD }, #{CUSTOMER_OBJID }, #{PAID_TYPE }, - 'PURCHASE_REQUEST' + COALESCE(NULLIF(#{DOC_TYPE}, ''), 'PURCHASE_REQUEST') ) ON CONFLICT (OBJID) DO UPDATE SET @@ -721,7 +721,8 @@ VALUES COALESCE(NULLIF(SRM.AREA_CD, ''), SM.AREA_CD) AS AREA_CD, -- 국내/해외 COALESCE(NULLIF(SRM.CUSTOMER_OBJID, ''), SM.OBJID::VARCHAR) AS CUSTOMER_OBJID, -- 고객사 COALESCE(NULLIF(SRM.PAID_TYPE, ''), CM.PAID_TYPE) AS PAID_TYPE, -- 유/무상 - CM.CATEGORY_CD AS CATEGORY_CD -- 제품유형 코드 ID (드롭다운 선택용) + CM.CATEGORY_CD AS CATEGORY_CD, -- 제품유형 코드 ID (드롭다운 선택용) + SRM.DOC_TYPE -- 문서유형 (PURCHASE_REQUEST, PURCHASE_REG, PROPOSAL 등) -- 품번/품명: 첫 번째 품목 + 외 N건 형태 - ) - VALUES + ) + VALUES ( #{SALES_REQUEST_PART_OBJID }, #{SALES_BOM_QTY_OBJID }, @@ -788,8 +789,8 @@ VALUES #{STATUS} ) ON CONFLICT (OBJID) DO - UPDATE - SET + UPDATE + SET SALES_BOM_QTY_OBJID = #{SALES_BOM_QTY_OBJID }, PART_OBJID = #{PART_OBJID }, SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_MASTER_OBJID}, @@ -989,11 +990,24 @@ VALUES -- 문서유형 (PURCHASE_REQUEST: 구매요청서, PROPOSAL: 품의서) SRM.DOC_TYPE, - -- 구매요청서 작성 여부 (SALES_REQUEST_PART에 DOC_TYPE이 PURCHASE_REQUEST인 데이터가 있으면 'Y') - (SELECT CASE WHEN COUNT(*) > 0 THEN 'Y' ELSE 'N' END - FROM SALES_REQUEST_PART - WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID - AND (DOC_TYPE = 'PURCHASE_REQUEST' OR DOC_TYPE IS NULL)) AS HAS_PURCHASE_REQUEST, + -- 구매요청서 작성 여부 + -- M-BOM 기반이면 MBOM_HEADER_OBJID가 있으므로 'Y' + -- 수동 작성이면 SALES_REQUEST_PART에 데이터가 있으면 'Y' + CASE + WHEN SRM.MBOM_HEADER_OBJID IS NOT NULL AND SRM.MBOM_HEADER_OBJID::VARCHAR != '' THEN 'Y' + WHEN (SELECT COUNT(*) FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID AND (DOC_TYPE = 'PURCHASE_REQUEST' OR DOC_TYPE IS NULL)) > 0 THEN 'Y' + ELSE 'N' + END AS HAS_PURCHASE_REQUEST, + + -- 견적요청서 존재 여부 (QUOTATION_REQUEST_MASTER에 데이터가 있으면 'Y') + COALESCE((SELECT CASE WHEN COUNT(*) > 0 THEN 'Y' ELSE 'N' END + FROM QUOTATION_REQUEST_MASTER + WHERE SALES_REQUEST_MASTER_OBJID::VARCHAR = SRM.OBJID::VARCHAR), 'N') AS HAS_QUOTATION_REQUEST, + + -- 견적요청서 개수 + COALESCE((SELECT COUNT(*) + FROM QUOTATION_REQUEST_MASTER + WHERE SALES_REQUEST_MASTER_OBJID::VARCHAR = SRM.OBJID::VARCHAR), 0) AS QUOTATION_REQUEST_COUNT, -- M-BOM 관련 컬럼 SRM.MBOM_HEADER_OBJID, @@ -1117,6 +1131,15 @@ VALUES (SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = SRM.UNIT_NAME) AS UNIT_CODE_NAME, SRM.STATUS, CASE + -- PURCHASE_REG(구매요청서작성) 페이지용 상태 + WHEN SRM.DOC_TYPE = 'PURCHASE_REG' THEN + CASE + -- 품의서 생성 여부 확인 (PROPOSAL 타입의 SALES_REQUEST_MASTER가 연결되어 있는지) + WHEN EXISTS (SELECT 1 FROM SALES_REQUEST_MASTER P WHERE P.DOC_TYPE = 'PROPOSAL' AND P.PROJECT_NO = SRM.OBJID::VARCHAR) THEN '품의서생성' + WHEN SRM.STATUS = 'confirmed' THEN '확정' + ELSE '작성중' + END + -- 기존 PURCHASE_REQUEST용 상태 WHEN ((SELECT COUNT(1) FROM PURCHASE_ORDER_MASTER AS O WHERE O.SALES_REQUEST_OBJID IN (SRM.OBJID)) >= (SELECT COUNT(1) FROM SALES_REQUEST_PART AS SRP WHERE srp.SALES_REQUEST_master_OBJID = SRM.OBJID )) and ((SELECT COUNT(1) FROM PURCHASE_ORDER_MASTER AS O WHERE O.SALES_REQUEST_OBJID IN (SRM.OBJID)) > 0) THEN '발주완료' WHEN ((SELECT COUNT(1) FROM PURCHASE_ORDER_MASTER AS O WHERE O.SALES_REQUEST_OBJID IN (SRM.OBJID)) < (SELECT COUNT(1) FROM SALES_REQUEST_PART AS SRP WHERE srp.SALES_REQUEST_master_OBJID = SRM.OBJID )) and ((SELECT COUNT(1) FROM PURCHASE_ORDER_MASTER AS O WHERE O.SALES_REQUEST_OBJID IN (SRM.OBJID)) > 0) THEN '발주부분완료' WHEN SRM.STATUS = 'create' THEN '등록' @@ -1125,7 +1148,7 @@ VALUES WHEN SRM.STATUS = 'approvalRequest' THEN '결재중' WHEN SRM.STATUS = 'approvalComplete' THEN '결재완료' WHEN SRM.STATUS = 'reject' THEN '반려' - + WHEN SRM.STATUS = 'confirmed' THEN '확정' ELSE '' END STATUS_TITLE, SRM.RECEIPT_USER_ID, @@ -1224,7 +1247,15 @@ VALUES AND SRP.SUB_RNUM = 1 --> WHERE 1=1 -- 구매요청서만 조회 (품의서 제외) - AND (SRM.DOC_TYPE = 'PURCHASE_REQUEST' OR SRM.DOC_TYPE IS NULL) + -- DOC_TYPE_FILTER가 있으면 해당 값으로 필터링, 없으면 기존 조건 적용 + + + AND SRM.DOC_TYPE = #{DOC_TYPE_FILTER} + + + AND (SRM.DOC_TYPE = 'PURCHASE_REQUEST' OR SRM.DOC_TYPE IS NULL) + + AND TO_CHAR(REGDATE,'YYYY') = #{Year} @@ -1403,24 +1434,24 @@ VALUES SELECT @@ -3097,7 +3128,11 @@ UPDATE SET COALESCE(SRP.VENDOR_PM, SRP.PARTNER_OBJID) AS VENDOR_PM, COALESCE(SRP.UNIT_PRICE, NULLIF(SRP.PARTNER_PRICE, '')::numeric, 0) AS UNIT_PRICE, COALESCE(SRP.TOTAL_PRICE, 0) AS TOTAL_PRICE, + 0 AS PROCESSING_UNIT_PRICE, + 0 AS PROCESSING_TOTAL_PRICE, + 0 AS GRAND_TOTAL_PRICE, SRP.PROPOSAL_DATE, + NULL AS PROCESSING_PROPOSAL_DATE, 'SRP' AS DATA_SOURCE -- 데이터 소스 구분용 FROM SALES_REQUEST_PART SRP @@ -3156,7 +3191,11 @@ WITH RECURSIVE VIEW_BOM( USE_YN, NET_QTY, PO_QTY, - PROPOSAL_DATE + PROPOSAL_DATE, + PROCESSING_PROPOSAL_DATE, + PROCESSING_UNIT_PRICE, + PROCESSING_TOTAL_PRICE, + GRAND_TOTAL_PRICE ) AS ( SELECT A.MBOM_HEADER_OBJID, @@ -3204,7 +3243,11 @@ WITH RECURSIVE VIEW_BOM( COALESCE(A.USE_YN, 'Y'), COALESCE(A.NET_QTY, 0), COALESCE(A.PO_QTY, 0), - A.PROPOSAL_DATE + A.PROPOSAL_DATE, + A.PROCESSING_PROPOSAL_DATE, + COALESCE(A.PROCESSING_UNIT_PRICE, 0), + COALESCE(A.PROCESSING_TOTAL_PRICE, 0), + COALESCE(A.GRAND_TOTAL_PRICE, 0) FROM MBOM_DETAIL A INNER JOIN MBOM_HEADER MH ON MH.OBJID = A.MBOM_HEADER_OBJID @@ -3264,7 +3307,11 @@ WITH RECURSIVE VIEW_BOM( COALESCE(B.USE_YN, 'Y'), COALESCE(B.NET_QTY, 0), COALESCE(B.PO_QTY, 0), - B.PROPOSAL_DATE + B.PROPOSAL_DATE, + B.PROCESSING_PROPOSAL_DATE, + COALESCE(B.PROCESSING_UNIT_PRICE, 0), + COALESCE(B.PROCESSING_TOTAL_PRICE, 0), + COALESCE(B.GRAND_TOTAL_PRICE, 0) FROM MBOM_DETAIL B JOIN @@ -3352,10 +3399,15 @@ SELECT V.NET_QTY, V.PO_QTY, V.PROPOSAL_DATE, + V.PROCESSING_PROPOSAL_DATE, + V.PROCESSING_UNIT_PRICE, + V.PROCESSING_TOTAL_PRICE, + V.GRAND_TOTAL_PRICE, 'MBOM' AS DATA_SOURCE -- 데이터 소스 구분용 FROM VIEW_BOM V LEFT JOIN PART_MNG P ON P.OBJID::VARCHAR = V.PART_OBJID::VARCHAR WHERE 1=1 + AND COALESCE(V.PRODUCTION_QTY, 0) > 0 -- 제작수량이 0인 항목 제외 ORDER BY V.PATH2 @@ -3382,6 +3434,9 @@ ORDER BY V.PATH2 PROCESSING_VENDOR = #{PROCESSING_VENDOR}, UNIT_PRICE = COALESCE(NULLIF(TRIM(#{UNIT_PRICE}::TEXT), '')::NUMERIC, 0), TOTAL_PRICE = COALESCE(NULLIF(TRIM(#{TOTAL_PRICE}::TEXT), '')::NUMERIC, 0), + PROCESSING_UNIT_PRICE = COALESCE(NULLIF(TRIM(#{PROCESSING_UNIT_PRICE}::TEXT), '')::NUMERIC, 0), + PROCESSING_TOTAL_PRICE = COALESCE(NULLIF(TRIM(#{PROCESSING_TOTAL_PRICE}::TEXT), '')::NUMERIC, 0), + GRAND_TOTAL_PRICE = COALESCE(NULLIF(TRIM(#{GRAND_TOTAL_PRICE}::TEXT), '')::NUMERIC, 0), EDITER = #{EDITER}, EDIT_DATE = NOW() WHERE OBJID::VARCHAR = #{OBJID} @@ -3397,6 +3452,9 @@ ORDER BY V.PATH2 PROCESSING_VENDOR = #{PROCESSING_VENDOR}, UNIT_PRICE = COALESCE(NULLIF(TRIM(#{UNIT_PRICE}::TEXT), '')::NUMERIC, 0), TOTAL_PRICE = COALESCE(NULLIF(TRIM(#{TOTAL_PRICE}::TEXT), '')::NUMERIC, 0), + PROCESSING_UNIT_PRICE = COALESCE(NULLIF(TRIM(#{PROCESSING_UNIT_PRICE}::TEXT), '')::NUMERIC, 0), + PROCESSING_TOTAL_PRICE = COALESCE(NULLIF(TRIM(#{PROCESSING_TOTAL_PRICE}::TEXT), '')::NUMERIC, 0), + GRAND_TOTAL_PRICE = COALESCE(NULLIF(TRIM(#{GRAND_TOTAL_PRICE}::TEXT), '')::NUMERIC, 0), WRITER = #{EDITER} WHERE OBJID::VARCHAR = #{OBJID} @@ -3418,16 +3476,16 @@ ORDER BY V.PATH2 @@ -3459,7 +3517,7 @@ ORDER BY V.PATH2 - + - + + + + - + + + + - + + + + + + + INSERT INTO SALES_REQUEST_MASTER ( @@ -3606,11 +3790,11 @@ ORDER BY V.PATH2 'create', #{WRITER}, NOW(), - 'PROPOSAL' + #{DOC_TYPE} ) - + INSERT INTO SALES_REQUEST_PART ( OBJID, @@ -3645,7 +3829,42 @@ ORDER BY V.PATH2 WHERE OBJID = #{SOURCE_OBJID} - + + + INSERT INTO SALES_REQUEST_PART ( + OBJID, + SALES_REQUEST_MASTER_OBJID, + PART_OBJID, + QTY, + UNIT_PRICE, + TOTAL_PRICE, + VENDOR_PM, + NET_QTY, + PO_QTY, + USE_YN, + PROPOSAL_DATE, + WRITER, + REGDATE + ) + SELECT + #{NEW_OBJID}, + #{PROPOSAL_MASTER_OBJID}, + PART_OBJID, + PRODUCTION_QTY AS QTY, + PROCESSING_UNIT_PRICE AS UNIT_PRICE, + PROCESSING_TOTAL_PRICE AS TOTAL_PRICE, + PROCESSING_VENDOR AS VENDOR_PM, + NET_QTY, + PO_QTY, + USE_YN, + NOW() AS PROPOSAL_DATE, + #{WRITER}, + NOW() + FROM MBOM_DETAIL + WHERE OBJID = #{SOURCE_OBJID} + + + INSERT INTO SALES_REQUEST_PART ( OBJID, @@ -3680,7 +3899,42 @@ ORDER BY V.PATH2 WHERE OBJID = #{SOURCE_OBJID} - + + + INSERT INTO SALES_REQUEST_PART ( + OBJID, + SALES_REQUEST_MASTER_OBJID, + PART_OBJID, + QTY, + UNIT_PRICE, + TOTAL_PRICE, + VENDOR_PM, + NET_QTY, + PO_QTY, + USE_YN, + PROPOSAL_DATE, + WRITER, + REGDATE + ) + SELECT + #{NEW_OBJID}, + #{PROPOSAL_MASTER_OBJID}, + PART_OBJID, + PRODUCTION_QTY AS QTY, + PROCESSING_UNIT_PRICE AS UNIT_PRICE, + PROCESSING_TOTAL_PRICE AS TOTAL_PRICE, + PROCESSING_VENDOR AS VENDOR_PM, + NET_QTY, + PO_QTY, + USE_YN, + NOW() AS PROPOSAL_DATE, + #{WRITER}, + NOW() + FROM SALES_REQUEST_PART + WHERE OBJID = #{SOURCE_OBJID} + + + UPDATE SALES_REQUEST_PART SET PROPOSAL_DATE = NOW() @@ -3690,7 +3944,17 @@ ORDER BY V.PATH2 - + + + UPDATE SALES_REQUEST_PART + SET PROCESSING_PROPOSAL_DATE = NOW() + WHERE OBJID IN + + #{objid} + + + + UPDATE MBOM_DETAIL SET PROPOSAL_DATE = NOW() @@ -3700,6 +3964,16 @@ ORDER BY V.PATH2 + + + UPDATE MBOM_DETAIL + SET PROCESSING_PROPOSAL_DATE = NOW() + WHERE OBJID IN + + #{objid} + + + + + + + SELECT + MD.OBJID, + MD.MBOM_HEADER_OBJID, + MD.PART_OBJID, + PM.PART_NO, + PM.PART_NAME, + MD.RAW_MATERIAL, + MD.RAW_MATERIAL_PART_NO AS RAW_MATERIAL_NO, + MD.RAW_MATERIAL_SIZE AS SIZE, + MD.PO_QTY, + MD.PRODUCTION_QTY, + MD.UNIT_PRICE, + MD.PROCESSING_UNIT_PRICE, + MD.VENDOR AS VENDOR_PM, + (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = MD.VENDOR) AS VENDOR_NAME, + MD.PROCESSING_VENDOR, + (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = MD.PROCESSING_VENDOR) AS PROCESSING_VENDOR_NAME + FROM MBOM_DETAIL MD + LEFT JOIN PART_MNG PM ON MD.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR + WHERE MD.OBJID = #{OBJID} + + + + + + + + + + + + + + + + + + + + + INSERT INTO QUOTATION_REQUEST_MASTER ( + OBJID, + QUOTATION_REQUEST_NO, + SALES_REQUEST_MASTER_OBJID, + PROJECT_MGMT_OBJID, + VENDOR_OBJID, + VENDOR_TYPE, + STATUS, + DUE_DATE, + REMARK, + WRITER, + REG_DATE + ) VALUES ( + #{OBJID}::NUMERIC, + #{QUOTATION_REQUEST_NO}, + #{SALES_REQUEST_MASTER_OBJID}::NUMERIC, + #{PROJECT_MGMT_OBJID}::NUMERIC, + #{VENDOR_OBJID}::NUMERIC, + #{VENDOR_TYPE}, + 'create', + #{DUE_DATE}::DATE + NULL, + #{REMARK}, + #{WRITER}, + NOW() + ) + + + + + INSERT INTO QUOTATION_REQUEST_DETAIL ( + OBJID, + QUOTATION_REQUEST_MASTER_OBJID, + SALES_REQUEST_PART_OBJID, + PART_OBJID, + PART_NO, + PART_NAME, + RAW_MATERIAL, + SIZE, + QTY, + UNIT_PRICE, + REMARK, + REG_DATE + ) VALUES ( + #{OBJID}::NUMERIC, + #{QUOTATION_REQUEST_MASTER_OBJID}::NUMERIC, + #{SALES_REQUEST_PART_OBJID}::NUMERIC, + #{PART_OBJID}::NUMERIC, + #{PART_NO}, + #{PART_NAME}, + #{RAW_MATERIAL}, + #{SIZE}, + COALESCE(#{QTY}::NUMERIC, 0), + COALESCE(#{UNIT_PRICE}::NUMERIC, 0), + #{REMARK}, + NOW() + ) + + + + + UPDATE QUOTATION_REQUEST_DETAIL SET + UNIT_PRICE = #{UNIT_PRICE}::NUMERIC, + TOTAL_PRICE = #{QTY}::NUMERIC * #{UNIT_PRICE}::NUMERIC, + EDIT_DATE = NOW() + WHERE OBJID = #{OBJID}::NUMERIC + + + + + UPDATE QUOTATION_REQUEST_MASTER SET + STATUS = #{STATUS}, + EDIT_DATE = NOW() + + , MAIL_SEND_YN = #{MAIL_SEND_YN} + , MAIL_SEND_DATE = NOW() + + WHERE OBJID = #{QUOTATION_REQUEST_MASTER_OBJID}::NUMERIC + + + + + UPDATE MBOM_DETAIL SET + + UNIT_PRICE = #{UNIT_PRICE}::NUMERIC + + + PROCESSING_UNIT_PRICE = #{UNIT_PRICE}::NUMERIC + + , EDIT_DATE = NOW() + WHERE OBJID = #{SALES_REQUEST_PART_OBJID} + + + + + + + + + + + + DELETE FROM QUOTATION_REQUEST_MASTER WHERE OBJID = #{QUOTATION_REQUEST_MASTER_OBJID}::NUMERIC + + + + + DELETE FROM QUOTATION_REQUEST_DETAIL WHERE QUOTATION_REQUEST_MASTER_OBJID = #{QUOTATION_REQUEST_MASTER_OBJID}::NUMERIC + + + + + UPDATE QUOTATION_REQUEST_MASTER + SET MAIL_SEND_YN = 'Y', + MAIL_SEND_DATE = NOW() + WHERE OBJID = #{QUOTATION_REQUEST_MASTER_OBJID}::NUMERIC + + + + + + + + + + + + + INSERT INTO SALES_REQUEST_MASTER ( + OBJID, + REQUEST_MNG_NO, + PROJECT_NO, + PURCHASE_TYPE, + ORDER_TYPE, + PRODUCT_NAME, + AREA_CD, + CUSTOMER_OBJID, + PAID_TYPE, + REQUEST_USER_ID, + DELIVERY_REQUEST_DATE, + STATUS, + WRITER, + REGDATE, + DOC_TYPE + ) VALUES ( + #{OBJID}, + #{REQUEST_MNG_NO}, + #{PROJECT_NO}, + #{PURCHASE_TYPE}, + #{ORDER_TYPE}, + #{PRODUCT_NAME}, + #{AREA_CD}, + #{CUSTOMER_OBJID}, + #{PAID_TYPE}, + #{REQUEST_USER_ID}, + #{DELIVERY_REQUEST_DATE}, + 'create', + #{WRITER}, + NOW(), + 'PURCHASE_REG_PROPOSAL' + ) + + + + + INSERT INTO SALES_REQUEST_PART ( + OBJID, + SALES_REQUEST_MASTER_OBJID, + PART_OBJID, + QTY, + UNIT_PRICE, + TOTAL_PRICE, + VENDOR_PM, + NET_QTY, + PO_QTY, + USE_YN, + PROPOSAL_DATE, + WRITER, + REGDATE + ) + SELECT + #{NEW_OBJID}, + #{PROPOSAL_MASTER_OBJID}, + PART_OBJID, + QTY, + CASE + WHEN UNIT_PRICE IS NOT NULL AND UNIT_PRICE > 0 THEN UNIT_PRICE + WHEN PARTNER_PRICE IS NOT NULL AND PARTNER_PRICE != '' THEN PARTNER_PRICE::NUMERIC + ELSE 0 + END AS UNIT_PRICE, + CASE + WHEN TOTAL_PRICE IS NOT NULL AND TOTAL_PRICE > 0 THEN TOTAL_PRICE + ELSE COALESCE(QTY::NUMERIC, 0) * + CASE + WHEN UNIT_PRICE IS NOT NULL AND UNIT_PRICE > 0 THEN UNIT_PRICE + WHEN PARTNER_PRICE IS NOT NULL AND PARTNER_PRICE != '' THEN PARTNER_PRICE::NUMERIC + ELSE 0 + END + END AS TOTAL_PRICE, + COALESCE(NULLIF(VENDOR_PM, ''), PARTNER_OBJID) AS VENDOR_PM, + NET_QTY, + COALESCE(QTY::NUMERIC, 0) AS PO_QTY, -- 발주수량에 QTY 값 저장 + USE_YN, + NOW() AS PROPOSAL_DATE, + #{WRITER}, + NOW() + FROM SALES_REQUEST_PART + WHERE OBJID = #{SOURCE_OBJID} + + + + + UPDATE SALES_REQUEST_PART + SET PROPOSAL_DATE = NOW() + WHERE OBJID IN + + #{objid} + + + \ No newline at end of file