diff --git a/WebContent/WEB-INF/classes/com/pms/mapper/admin.xml b/WebContent/WEB-INF/classes/com/pms/mapper/admin.xml index b72f70f..acf5040 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/admin.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/admin.xml @@ -9383,7 +9383,7 @@ SELECT - SELECT OBJID, MATERIAL_CODE, @@ -9394,8 +9394,21 @@ SELECT ORDER BY MATERIAL_CODE + + - SELECT OBJID, MATERIAL_CODE, @@ -9407,8 +9420,21 @@ SELECT ORDER BY SIZE_SPEC + + - SELECT OBJID, MATERIAL_CODE, @@ -9422,6 +9448,22 @@ SELECT LIMIT 1 + + + SELECT * + FROM ( + SELECT A.*, ROW_NUMBER() OVER (ORDER BY ACCT_CD ASC) RNUM + FROM ( + SELECT CO_CD + , ACCT_CD + , ACCT_NM + , DRCR_FG + , CASE WHEN DRCR_FG = '1' THEN '차변' WHEN DRCR_FG = '2' THEN '대변' ELSE DRCR_FG END AS DRCR_FG_NM + , SUB_DISP + , SUB_DISP_NM + , CH_FG + , CH_FG_NM + , ACCT_NMK + , GROUP_CD + , GROUP_NM + , BUD_FG + , BUD_FG_NM + , ATTR_FG + , ATTR_FG_NM + , CTRL_CDS + , RACCT_CD + , RACCT_NM + FROM ERP_ACCT_CODE + WHERE 1=1 + + AND UPPER(ACCT_CD) LIKE UPPER('%${search_acctCd}%') + + + AND UPPER(ACCT_NM) LIKE UPPER('%${search_acctNm}%') + + + AND CH_FG = #{search_chFg} + + ) A + WHERE 1=1 + ) A + WHERE 1=1 + AND + AND = #{PAGE_START}::integer]]> + + + + + \ No newline at end of file diff --git a/WebContent/WEB-INF/classes/com/pms/mapper/approval.xml b/WebContent/WEB-INF/classes/com/pms/mapper/approval.xml index 55bafb9..29bc617 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/approval.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/approval.xml @@ -603,7 +603,156 @@ SELECT CONTRACT_OBJID FROM ESTIMATE_TEMPLATE - WHERE OBJID = #{estObjId}::NUMERIC + WHERE OBJID::VARCHAR = #{estObjId} + + + + + + + + INSERT INTO AMARANTH_APPROVAL ( + APPRO_KEY, TARGET_TYPE, TARGET_OBJID, APPROVAL_TITLE, WRITER, STATUS, REGDATE + ) VALUES ( + #{approKey}, #{targetType}, #{targetObjId}, #{approvalTitle}, #{writer}, 'create', NOW() + ) + + + + + UPDATE AMARANTH_APPROVAL SET + APPROVAL_TITLE = #{approvalTitle}, + WRITER = #{writer}, + UPDATE_DATE = NOW() + WHERE TARGET_OBJID = #{targetObjId} AND TARGET_TYPE = #{targetType} + + + + + + + + UPDATE AMARANTH_APPROVAL SET + AMARANTH_DOC_ID = #{amaranthDocId}, + DOC_STS = #{docSts}, + STATUS = #{status}, + UPDATE_DATE = NOW() + WHERE APPRO_KEY = #{approKey} + + + + + INSERT INTO AMARANTH_APPROVAL ( + APPRO_KEY, TARGET_TYPE, TARGET_OBJID, APPROVAL_TITLE, WRITER, STATUS, REGDATE + ) VALUES ( + #{approKey}, #{targetType}, #{targetObjId}, '결재불필요', #{writer}, 'notRequired', NOW() + ) + + + + + UPDATE AMARANTH_APPROVAL SET + STATUS = 'notRequired', + UPDATE_DATE = NOW() + WHERE TARGET_OBJID = #{targetObjId} AND TARGET_TYPE = #{targetType} + + + + + UPDATE SALES_REQUEST_MASTER SET + STATUS = #{status} + WHERE OBJID::VARCHAR = #{targetObjId}::VARCHAR + + + + + UPDATE ECR_MNG SET + STATUS_CD = #{statusCd} + WHERE OBJID::VARCHAR = #{targetObjId}::VARCHAR + + + + + + + + \ No newline at end of file diff --git a/WebContent/WEB-INF/classes/com/pms/mapper/productionplanning.xml b/WebContent/WEB-INF/classes/com/pms/mapper/productionplanning.xml index a98532c..f0edca5 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/productionplanning.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/productionplanning.xml @@ -3137,12 +3137,22 @@ PM.CONTRACT_OBJID, PM.PROJECT_NO, PM.BOM_REPORT_OBJID, + PM.PART_OBJID, PM.PART_NO, PM.PART_NAME, PM.SOURCE_BOM_TYPE, PM.SOURCE_EBOM_OBJID, PM.SOURCE_MBOM_OBJID, PM.QUANTITY, + -- 총생산수량 = 수주수량 + 추가생산수량 (PRODUCTION_PLAN 테이블) + COALESCE( + (SELECT NULLIF(PP.TOTAL_PROD_QTY, '')::numeric + FROM PRODUCTION_PLAN PP + WHERE PP.PROJECT_OBJID = PM.OBJID + AND UPPER(PP.STATUS) = 'ACTIVE' + LIMIT 1), + COALESCE(NULLIF(PM.QUANTITY, '')::numeric, 0) + ) AS TOTAL_PROD_QTY, COALESCE( (SELECT PBR.PART_NO FROM PART_BOM_REPORT PBR @@ -3293,7 +3303,11 @@ 0 AS PO_QTY, '' AS VENDOR, 0 AS UNIT_PRICE, + 0 AS PROCESSING_UNIT_PRICE, 0 AS TOTAL_PRICE, + -- 소재소요량 계산용 (E-BOM 단계에서는 소재 미선택이므로 0) + 0 AS PART_UNIT_QTY, + 0 AS PART_UNIT_LENGTH, 1 AS LEVEL FROM BOM_PART_QTY BPQ @@ -3373,7 +3387,11 @@ 0 AS PO_QTY, '' AS VENDOR, 0 AS UNIT_PRICE, + 0 AS PROCESSING_UNIT_PRICE, 0 AS TOTAL_PRICE, + -- 소재소요량 계산용 (E-BOM 단계에서는 소재 미선택이므로 0) + 0 AS PART_UNIT_QTY, + 0 AS PART_UNIT_LENGTH, 1 AS LEVEL FROM PROJECT_MGMT PROJ @@ -3388,31 +3406,25 @@ BPQ.SEQ - + @@ -3426,6 +3438,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, @@ -3743,6 +3756,21 @@ (SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('3D_CAD')) AS CU01_CNT, (SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('2D_DRAWING_CAD')) AS CU02_CNT, (SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('2D_PDF_CAD')) AS CU03_CNT, + -- 소재소요량 계산용: 소재품번(RAW_MATERIAL_PART_NO)에 해당하는 PART_MNG의 UNIT_QTY / UNIT_LENGTH + COALESCE( + (SELECT NULLIF(MP.UNIT_QTY, '')::numeric + FROM PART_MNG MP + WHERE MP.PART_NO = V.RAW_MATERIAL_PART_NO + LIMIT 1), + 0 + ) AS PART_UNIT_QTY, + COALESCE( + (SELECT NULLIF(MP.UNIT_LENGTH, '')::numeric + FROM PART_MNG MP + WHERE MP.PART_NO = V.RAW_MATERIAL_PART_NO + LIMIT 1), + 0 + ) AS PART_UNIT_LENGTH, V.LEV FROM VIEW_BOM V LEFT JOIN PART_MNG P ON V.PART_OBJID = P.OBJID @@ -3848,7 +3876,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 +3889,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 +4075,7 @@ MD.PO_QTY, MD.VENDOR, MD.UNIT_PRICE, + MD.PROCESSING_UNIT_PRICE, MD.TOTAL_PRICE, MD.CURRENCY, MD.LEAD_TIME, @@ -4100,6 +4129,7 @@ SHORTAGE_QTY, VENDOR, UNIT_PRICE, + PROCESSING_UNIT_PRICE, TOTAL_PRICE, CURRENCY, LEAD_TIME, @@ -4144,6 +4174,7 @@ A.SHORTAGE_QTY, A.VENDOR, A.UNIT_PRICE, + A.PROCESSING_UNIT_PRICE, A.TOTAL_PRICE, A.CURRENCY, A.LEAD_TIME, @@ -4196,6 +4227,7 @@ B.SHORTAGE_QTY, B.VENDOR, B.UNIT_PRICE, + B.PROCESSING_UNIT_PRICE, B.TOTAL_PRICE, B.CURRENCY, B.LEAD_TIME, @@ -4248,6 +4280,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, @@ -4285,6 +4318,21 @@ (SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('3D_CAD')) AS CU01_CNT, (SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('2D_DRAWING_CAD')) AS CU02_CNT, (SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('2D_PDF_CAD')) AS CU03_CNT, + -- 소재소요량 계산용: 소재품번(RAW_MATERIAL_PART_NO)에 해당하는 PART_MNG의 UNIT_QTY / UNIT_LENGTH + COALESCE( + (SELECT NULLIF(MP.UNIT_QTY, '')::numeric + FROM PART_MNG MP + WHERE MP.PART_NO = V.RAW_MATERIAL_PART_NO + LIMIT 1), + 0 + ) AS PART_UNIT_QTY, + COALESCE( + (SELECT NULLIF(MP.UNIT_LENGTH, '')::numeric + FROM PART_MNG MP + WHERE MP.PART_NO = V.RAW_MATERIAL_PART_NO + LIMIT 1), + 0 + ) AS PART_UNIT_LENGTH, V.LEV FROM VIEW_BOM V INNER JOIN PART_MNG P ON P.OBJID = V.PART_OBJID @@ -4314,7 +4362,8 @@ PATH2, CYCLE, UNIT, - WRITER + WRITER, + RAW_MATERIAL_PART_NO ) AS ( SELECT A.MBOM_HEADER_OBJID, @@ -4335,7 +4384,8 @@ ARRAY [A.SEQ::TEXT], FALSE, A.UNIT, - A.WRITER + A.WRITER, + A.RAW_MATERIAL_PART_NO FROM MBOM_DETAIL A WHERE 1=1 @@ -4364,7 +4414,8 @@ PATH2||B.SEQ::TEXT, B.PARENT_OBJID = ANY(PATH), B.UNIT, - B.WRITER + B.WRITER, + B.RAW_MATERIAL_PART_NO FROM MBOM_DETAIL B JOIN @@ -4410,6 +4461,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, @@ -4445,6 +4497,21 @@ (SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('3D_CAD')) AS CU01_CNT, (SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('2D_DRAWING_CAD')) AS CU02_CNT, (SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.STATUS = 'Active' AND F.DOC_TYPE IN ('2D_PDF_CAD')) AS CU03_CNT, + -- 소재소요량 계산용: 소재품번(RAW_MATERIAL_PART_NO)에 해당하는 PART_MNG의 UNIT_QTY / UNIT_LENGTH + COALESCE( + (SELECT NULLIF(MP.UNIT_QTY, '')::numeric + FROM PART_MNG MP + WHERE MP.PART_NO = V.RAW_MATERIAL_PART_NO + LIMIT 1), + 0 + ) AS PART_UNIT_QTY, + COALESCE( + (SELECT NULLIF(MP.UNIT_LENGTH, '')::numeric + FROM PART_MNG MP + WHERE MP.PART_NO = V.RAW_MATERIAL_PART_NO + LIMIT 1), + 0 + ) AS PART_UNIT_LENGTH, V.LEV FROM VIEW_BOM V INNER JOIN PART_MNG P ON P.OBJID = V.PART_OBJID @@ -4513,9 +4580,18 @@ COALESCE((SELECT SUM(RESULT_QTY) FROM PRODUCTION_RESULT PR WHERE PR.PROJECT_OBJID = PM.OBJID::VARCHAR AND PR.RESULT_TYPE = 'ASSEMBLY' AND PR.STATUS = 'active'), 0) AS ASSEMBLY_QTY, COALESCE((SELECT SUM(RESULT_QTY) FROM PRODUCTION_RESULT PR WHERE PR.PROJECT_OBJID = PM.OBJID::VARCHAR AND PR.RESULT_TYPE = 'INSPECTION' AND PR.STATUS = 'active'), 0) AS INSPECTION_QTY, COALESCE((SELECT SUM(RESULT_QTY) FROM PRODUCTION_RESULT PR WHERE PR.PROJECT_OBJID = PM.OBJID::VARCHAR AND PR.RESULT_TYPE = 'SHIP_WAIT' AND PR.STATUS = 'active'), 0) AS SHIP_WAIT_QTY, - '' AS EQUIPMENT_WBS, + -- '' AS EQUIPMENT_WBS, + (SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = PM.OBJID AND ( + O.PRODUCE_PLAN_START !='' OR O.PRODUCE_PLAN_END !='' OR O.PRODUCE_ACT_START!='' OR O.PRODUCE_ACT_END !='' OR O.PRODUCE_USER_ID !='' + OR O.DESIGN_USER_ID !='' OR O.DESIGN_PLAN_START !='' OR O.DESIGN_PLAN_END !='' OR O.DESIGN_ACT_START !='' OR O.DESIGN_ACT_END !='' + OR O.PURCHASE_USER_ID !='' OR O.PURCHASE_PLAN_START !='' OR O.PURCHASE_PLAN_END !='' OR O.PURCHASE_ACT_START !='' OR O.PURCHASE_ACT_END !='' + )) AS EQUIPMENT_WBS, PP.OBJID AS PROD_PLAN_OBJID, - PM.REGDATE AS SORT_DATE + PM.REGDATE AS SORT_DATE, + PP.WRITER, + USER_NAME(PP.WRITER) AS WRITER_NAME, + TO_CHAR(PP.REGDATE, 'YYYY-MM-DD') AS REGDATE_TITLE, + PP.REGDATE FROM PROJECT_MGMT PM LEFT JOIN CONTRACT_MGMT CM ON PM.CONTRACT_OBJID = CM.OBJID @@ -4563,9 +4639,13 @@ COALESCE((SELECT SUM(RESULT_QTY) FROM PRODUCTION_RESULT PR WHERE PR.PROJECT_OBJID = PP.OBJID::VARCHAR AND PR.RESULT_TYPE = 'ASSEMBLY' AND PR.STATUS = 'active'), 0) AS ASSEMBLY_QTY, COALESCE((SELECT SUM(RESULT_QTY) FROM PRODUCTION_RESULT PR WHERE PR.PROJECT_OBJID = PP.OBJID::VARCHAR AND PR.RESULT_TYPE = 'INSPECTION' AND PR.STATUS = 'active'), 0) AS INSPECTION_QTY, COALESCE((SELECT SUM(RESULT_QTY) FROM PRODUCTION_RESULT PR WHERE PR.PROJECT_OBJID = PP.OBJID::VARCHAR AND PR.RESULT_TYPE = 'SHIP_WAIT' AND PR.STATUS = 'active'), 0) AS SHIP_WAIT_QTY, - '' AS EQUIPMENT_WBS, + 0 AS EQUIPMENT_WBS, PP.OBJID AS PROD_PLAN_OBJID, - PP.REGDATE AS SORT_DATE + PP.REGDATE AS SORT_DATE, + PP.WRITER, + USER_NAME(PP.WRITER) AS WRITER_NAME, + TO_CHAR(PP.REGDATE, 'YYYY-MM-DD') AS REGDATE_TITLE, + PP.REGDATE FROM PRODUCTION_PLAN PP WHERE PP.STATUS = 'active' AND (PP.PROJECT_OBJID IS NULL OR PP.PROJECT_OBJID = '') @@ -4617,6 +4697,17 @@ AND UPPER(T.SERIAL_NO) LIKE '%' || UPPER(#{search_serial_no}) || '%' + + + AND T.WRITER = #{search_writer} + + + + AND T.REGDATE >= TO_DATE(#{search_regdate_from}, 'YYYY-MM-DD') + + + AND T.REGDATE <= TO_DATE(#{search_regdate_to}, 'YYYY-MM-DD') + ORDER BY T.SORT_DATE DESC, T.PROJECT_NO DESC @@ -4635,7 +4726,7 @@ COALESCE(CI.DUE_DATE, PM.DUE_DATE, CM.REQ_DEL_DATE, '') AS REQ_DEL_DATE, COALESCE(NULLIF(PM.QUANTITY, '')::numeric, 0) AS ORDER_QTY, COALESCE((SELECT NULLIF(PP.EXTRA_PROD_QTY, '')::numeric FROM PRODUCTION_PLAN PP WHERE PP.PROJECT_OBJID = PM.OBJID AND UPPER(PP.STATUS) = 'ACTIVE' LIMIT 1), 0) AS EXTRA_PROD_QTY, - COALESCE(CM.CUSTOMER_REQUEST, '') AS CUSTOMER_REQUEST, + COALESCE(CI.CUSTOMER_REQUEST, CM.CUSTOMER_REQUEST, '') AS CUSTOMER_REQUEST, COALESCE(( SELECT STRING_AGG(CIS.SERIAL_NO, ', ' ORDER BY CIS.SERIAL_NO) FROM CONTRACT_ITEM_SERIAL CIS @@ -4689,8 +4780,9 @@ PP.TOTAL_PROD_QTY, PP.CUSTOMER_REQUEST, PP.STATUS, - PP.REGDATE, - PP.WRITER + TO_CHAR(PP.REGDATE, 'YYYY-MM-DD') AS REGDATE, + PP.WRITER, + (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PP.WRITER) AS WRITER_NAME FROM PRODUCTION_PLAN PP WHERE PP.OBJID = #{objid} @@ -4931,4 +5023,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..d6dfb64 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/purchaseOrder.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/purchaseOrder.xml @@ -879,10 +879,10 @@ 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, + COALESCE(NULLIF(SRP.QTY::VARCHAR, ''), '0') 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, @@ -1193,7 +1193,7 @@ #{PART_OBJID}, REPLACE(#{BOM_QTY}::VARCHAR, ',', ''), REPLACE(#{QTY}::VARCHAR, ',', ''), - REPLACE(#{ORDER_QTY}::VARCHAR, ',', ''), + COALESCE(NULLIF(REPLACE(#{ORDER_QTY}::VARCHAR, ',', ''), '')::NUMERIC::INTEGER, 0), #{PARTNER_PRICE}, #{REMARK}, #{WRITER}, @@ -1231,7 +1231,7 @@ ) ON CONFLICT (OBJID) DO UPDATE SET - ORDER_QTY = REPLACE(#{ORDER_QTY} ::VARCHAR, ',', '') + ORDER_QTY = COALESCE(NULLIF(REPLACE(#{ORDER_QTY}::VARCHAR, ',', ''), '')::NUMERIC::INTEGER, 0) ,PARTNER_PRICE = REPLACE(#{PARTNER_PRICE} ::VARCHAR, ',', '') ,REMARK = #{REMARK} + (ORDER_QTY::NUMERIC - TOTAL_DELIVERY_QTY::NUMERIC) AS NON_ARRIVAL_QTY FROM( SELECT ROW_NUMBER() OVER(ORDER BY PM.PART_NO, POP.REGDATE DESC) AS RNUM, @@ -1855,7 +1854,7 @@ WHEN POM.PARTNER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG WHERE 'C_' || OBJID::VARCHAR = POM.PARTNER_OBJID) ELSE (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) END AS PARTNER_NAME, - POP.ORDER_QTY, + COALESCE(NULLIF(POP.ORDER_QTY::VARCHAR, '')::NUMERIC::INTEGER, 0) AS ORDER_QTY, POP.REAL_ORDER_QTY, POP.OBJID AS ORDER_PART_OBJID, POP.PURCHASE_ORDER_MASTER_OBJID, @@ -3231,6 +3230,8 @@ SELECT POM.OBJID ,POM.TOTAL_SUPPLY_UNIT_PRICE ,POM.TOTAL_REAL_SUPPLY_PRICE ,POM.NEGO_RATE + ,POM.WRITER + ,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.WRITER) AS WRITER_NAME @@ -3317,7 +3318,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') + + AND SRM.PURCHASE_TYPE = #{purchase_type} + + + + AND POM.WRITER = #{writer} + + + + + + AND POM.MAIL_SEND_YN = 'Y' + AND (POM.STATUS IS NULL OR POM.STATUS != 'orderCancel') + + + AND POM.STATUS = 'orderCancel' + + + AND (POM.MAIL_SEND_YN IS NULL OR POM.MAIL_SEND_YN = '' OR POM.MAIL_SEND_YN = 'N') + AND (POM.STATUS IS NULL OR POM.STATUS != 'orderCancel') + + + ORDER BY SPLIT_PART( PURCHASE_ORDER_NO, '-', 3)::NUMERIC DESC @@ -4246,6 +4271,7 @@ SELECT T.* + + + + + + 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..faa0ba2 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 @@ -1418,8 +1428,96 @@ 반제품검사 관리 ===================================================== --> - + + + + + + + + + + - - + 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 +2178,7 @@ , STATUS , REMARK , WRITER + , RECEIPT_USER_ID , REG_DATE ) VALUES ( #{OBJID} @@ -2047,6 +2200,7 @@ , #{STATUS} , #{REMARK} , #{WRITER} + , #{RECEIPT_USER_ID} , NOW() ) @@ -2067,6 +2221,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 +2240,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') + + @@ -2112,7 +2279,19 @@ , (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = ECR.OBJID AND AFI.DOC_TYPE = 'ECR_RESULT' AND STATUS = 'Active') AS ATTACH_FILE , (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = ECR.OBJID AND AFI.DOC_TYPE = 'ECR_DOC' AND STATUS = 'Active') AS ECR_DOC_FILE , CASE WHEN (ECR.ECR_DOC_SUMMARY IS NOT NULL AND ECR.ECR_DOC_SUMMARY != '') OR (ECR.ECR_DOC_REASON IS NOT NULL AND ECR.ECR_DOC_REASON != '') THEN 1 ELSE 0 END AS ECR_DOC_CNT + , ECR.CHANGE_TYPE + , CODE_NAME(ECR.CHANGE_TYPE) AS CHANGE_TYPE_NAME + , COALESCE(AMR.STATUS, '') AS AMARANTH_STATUS + , CASE + WHEN AMR.STATUS = 'complete' THEN '결재완료' + WHEN AMR.STATUS = 'inProcess' THEN '결재 상신중' + WHEN AMR.STATUS = 'reject' THEN '반려' + ELSE '' + END AS AMARANTH_STATUS_TITLE FROM PMS_QUALITY_ECR ECR + LEFT OUTER JOIN AMARANTH_APPROVAL AMR + ON ECR.OBJID::VARCHAR = AMR.TARGET_OBJID + AND AMR.TARGET_TYPE = 'ECR' WHERE 1=1 AND ECR.REQUEST_DATE >= #{search_request_date_from} @@ -2159,6 +2338,9 @@ AND ECR.COMPLETE_DATE #{search_complete_date_to} + + AND ECR.CHANGE_TYPE = #{search_change_type} + ORDER BY ECR.REQUEST_DATE DESC, ECR.REG_DATE DESC @@ -2192,6 +2374,8 @@ , ECR.ECR_REV_DATE , ECR.ECR_DOC_FORM_NO , ECR.ECR_DOC_AUTHOR + , ECR.CHANGE_TYPE + , (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = ECR.CHANGE_TYPE) AS CHANGE_TYPE_NAME FROM PMS_QUALITY_ECR ECR WHERE ECR.OBJID = #{OBJID} @@ -2217,6 +2401,7 @@ , DUE_DATE , ACTION_DEPT , ACTION_MANAGER_ID + , CHANGE_TYPE , ATTACH_FILE_OBJID , REMARK , WRITER @@ -2233,6 +2418,7 @@ , #{DUE_DATE} , #{ACTION_DEPT} , #{ACTION_MANAGER_ID} + , #{CHANGE_TYPE} , #{ATTACH_FILE_OBJID} , #{REMARK} , #{WRITER} @@ -2252,6 +2438,7 @@ , DUE_DATE = #{DUE_DATE} , ACTION_DEPT = #{ACTION_DEPT} , ACTION_MANAGER_ID = #{ACTION_MANAGER_ID} + , CHANGE_TYPE = #{CHANGE_TYPE} , REMARK = #{REMARK} , MODIFIER = #{WRITER} , MOD_DATE = NOW() @@ -2292,6 +2479,14 @@ SELECT IMI.OBJID , IMI.PARENT_OBJID , IM.PART_OBJID + /* 제품구분: PROJECT_MGMT.PRODUCT (코드명 조회) */ + , COALESCE((SELECT CODE_NAME(PJM.PRODUCT) FROM SALES_REQUEST_MASTER SRM2 + LEFT JOIN PROJECT_MGMT PJM ON PJM.OBJID::VARCHAR = SRM2.PROJECT_NO + WHERE SRM2.OBJID = POM.SALES_REQUEST_OBJID), '') AS PRODUCT_TYPE + /* 품명(모델명): PROJECT_MGMT.PART_NAME */ + , COALESCE((SELECT PJM.PART_NAME FROM SALES_REQUEST_MASTER SRM2 + LEFT JOIN PROJECT_MGMT PJM ON PJM.OBJID::VARCHAR = SRM2.PROJECT_NO + WHERE SRM2.OBJID = POM.SALES_REQUEST_OBJID), '') AS MODEL_NAME , PM.PART_NO , PM.PART_NAME , COALESCE(IMI.RECEIPT_DATE, TO_CHAR(IMI.REGDATE, 'YYYY-MM-DD')) AS DELIVERY_DATE @@ -2343,7 +2538,7 @@ ORDER BY IMI.REGDATE, PM.PART_NO - + - + + + + + + + INSERT INTO INCOMING_INSPECTION_DETAIL ( @@ -2558,4 +2914,12 @@ WHERE INSPECTION_DETAIL_OBJID = #{INSPECTION_DETAIL_OBJID} + + + UPDATE INCOMING_INSPECTION_DETAIL + SET DEFECT_QTY = #{DEFECT_QTY} + , MOD_DATE = NOW() + WHERE OBJID = #{OBJID} + + \ No newline at end of file diff --git a/WebContent/WEB-INF/classes/com/pms/mapper/salesMng.xml b/WebContent/WEB-INF/classes/com/pms/mapper/salesMng.xml index 3061ba6..27b856e 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/salesMng.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/salesMng.xml @@ -3161,7 +3161,8 @@ UPDATE SET COALESCE(PM.HEAT_TREATMENT_HARDNESS, '') AS HEAT_TREATMENT_HARDNESS, COALESCE(PM.HEAT_TREATMENT_METHOD, '') AS HEAT_TREATMENT_METHOD, COALESCE(PM.SURFACE_TREATMENT, '') AS SURFACE_TREATMENT, - COALESCE(PM.MAKER, '') AS VENDOR, + COALESCE(PM.MAKER, '') AS MAKER, + '' AS VENDOR, (SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = PM.PART_TYPE) AS PART_TYPE_TITLE, '' AS SUPPLY_TYPE, '' AS RAW_MATERIAL, @@ -3171,7 +3172,7 @@ UPDATE SET 0 AS ORDER_QTY, 0 AS ITEM_QTY2, 0 AS PRODUCTION_QTY, - COALESCE(SRP.PROCESSING_VENDOR, '') AS PROCESSING_VENDOR, + CASE WHEN SRP.PROCESSING_VENDOR IS NULL THEN '0000008377' ELSE SRP.PROCESSING_VENDOR END AS PROCESSING_VENDOR, NULL AS PROCESSING_DEADLINE, NULL AS GRINDING_DEADLINE, -- 구매 관련 컬럼 (SALES_REQUEST_PART에서 조회) @@ -3462,7 +3463,7 @@ SELECT G.RAW_MATERIAL_SPEC, G.RAW_MATERIAL, G.RAW_MATERIAL_SIZE AS SIZE, - G.PROCESSING_VENDOR, + CASE WHEN G.PROCESSING_VENDOR IS NULL THEN '0000008377' ELSE G.PROCESSING_VENDOR END AS PROCESSING_VENDOR, G.PROCESSING_DEADLINE, G.GRINDING_DEADLINE, G.REQUIRED_QTY, @@ -3471,7 +3472,7 @@ SELECT G.STOCK_QTY, G.SHORTAGE_QTY, G.VENDOR AS VENDOR_PM, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE OBJID::VARCHAR = G.VENDOR) AS VENDOR_NAME, + (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = G.VENDOR) AS VENDOR_NAME, G.UNIT_PRICE, G.TOTAL_PRICE, G.CURRENCY, @@ -3492,7 +3493,8 @@ SELECT P.WEIGHT, P.PART_TYPE, P.REVISION, - COALESCE(P.MAKER, G.VENDOR) AS VENDOR, + COALESCE(P.MAKER, '') AS MAKER, + G.VENDOR AS VENDOR, P.THICKNESS, P.WIDTH, P.HEIGHT, @@ -3734,7 +3736,7 @@ SELECT V.STOCK_QTY, V.SHORTAGE_QTY, V.VENDOR AS VENDOR_PM, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE OBJID::VARCHAR = V.VENDOR) AS VENDOR_NAME, + (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = V.VENDOR) AS VENDOR_NAME, V.UNIT_PRICE, V.TOTAL_PRICE, V.CURRENCY, @@ -3757,7 +3759,8 @@ SELECT P.WEIGHT, P.PART_TYPE, P.REVISION, - COALESCE(P.MAKER, V.VENDOR) AS VENDOR, + COALESCE(P.MAKER, '') AS MAKER, + V.VENDOR AS VENDOR, P.THICKNESS, P.WIDTH, P.HEIGHT, @@ -3897,21 +3900,43 @@ ORDER BY V.PATH2 - + + + - + + + + + - + + - + + - SELECT ROW_NUMBER() OVER(ORDER BY SRP.REGDATE) AS RNUM, SRP.OBJID, @@ -4809,14 +4901,17 @@ ORDER BY V.PATH2 PM.PART_NAME, PM.SPEC, PM.MATERIAL, - SRP.UNIT, + COALESCE(SRP.UNIT, PM.UNIT) AS UNIT, COALESCE( (SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRP.UNIT), (SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = PM.UNIT) ) AS UNIT_TITLE, SRP.QTY, - SRP.UNIT_PRICE, - SRP.TOTAL_PRICE, + COALESCE(SRP.UNIT_PRICE, 0) AS UNIT_PRICE, + CASE + WHEN COALESCE(SRP.TOTAL_PRICE::NUMERIC, 0) > 0 THEN SRP.TOTAL_PRICE::NUMERIC + ELSE COALESCE(SRP.QTY::NUMERIC, 0) * COALESCE(SRP.UNIT_PRICE::NUMERIC, 0) + END AS TOTAL_PRICE, SRP.VENDOR_PM, (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = SRP.VENDOR_PM) AS VENDOR_NAME, SRP.REMARK, @@ -4873,6 +4968,35 @@ ORDER BY V.PATH2 WHERE MD.OBJID = #{OBJID} + + + @@ -4973,7 +5097,7 @@ ORDER BY V.PATH2 LEFT JOIN SALES_REQUEST_MASTER SRM ON QRM.SALES_REQUEST_MASTER_OBJID::VARCHAR = SRM.OBJID::VARCHAR LEFT JOIN PROJECT_MGMT PM ON PM.OBJID = SRM.PROJECT_NO LEFT JOIN CONTRACT_MGMT CTM ON CTM.OBJID = PM.CONTRACT_OBJID - LEFT JOIN CLIENT_MNG CM ON QRM.VENDOR_OBJID::VARCHAR = CM.OBJID::VARCHAR + LEFT JOIN CLIENT_MNG CM ON QRM.VENDOR_OBJID = CM.OBJID::VARCHAR WHERE 1=1 AND QRM.SALES_REQUEST_MASTER_OBJID::VARCHAR = #{SALES_REQUEST_MASTER_OBJID} @@ -4992,8 +5116,16 @@ ORDER BY V.PATH2 AND QRM.VENDOR_OBJID::VARCHAR = #{VENDOR_OBJID} - - AND QRM.STATUS = #{STATUS} + + + + + AND QRM.MAIL_SEND_DATE IS NOT NULL + + + AND QRM.MAIL_SEND_DATE IS NULL + + @@ -5049,7 +5181,7 @@ ORDER BY V.PATH2 LEFT JOIN SALES_REQUEST_MASTER SRM ON QRM.SALES_REQUEST_MASTER_OBJID::VARCHAR = SRM.OBJID::VARCHAR LEFT JOIN PROJECT_MGMT PM ON PM.OBJID = SRM.PROJECT_NO LEFT JOIN CONTRACT_MGMT CTM ON CTM.OBJID = PM.CONTRACT_OBJID - LEFT JOIN CLIENT_MNG CM ON QRM.VENDOR_OBJID::VARCHAR = CM.OBJID::VARCHAR + LEFT JOIN CLIENT_MNG CM ON QRM.VENDOR_OBJID = CM.OBJID::VARCHAR WHERE QRM.OBJID = #{QUOTATION_REQUEST_MASTER_OBJID}::NUMERIC @@ -5068,16 +5200,25 @@ ORDER BY V.PATH2 QRD.UNIT_PRICE, QRD.REMARK, QRD.REG_DATE, + QRD.DELIVERY_REQUEST_DATE, -- 마스터 정보 QRM.VENDOR_TYPE, QRM.VENDOR_OBJID, - (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = QRM.VENDOR_OBJID::VARCHAR) AS VENDOR_NAME + (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = QRM.VENDOR_OBJID) AS VENDOR_NAME FROM QUOTATION_REQUEST_DETAIL QRD LEFT JOIN QUOTATION_REQUEST_MASTER QRM ON QRD.QUOTATION_REQUEST_MASTER_OBJID = QRM.OBJID WHERE QRD.QUOTATION_REQUEST_MASTER_OBJID = #{QUOTATION_REQUEST_MASTER_OBJID}::NUMERIC ORDER BY QRD.OBJID + + + - SELECT - MD.OBJID, - #{SALES_REQUEST_MASTER_OBJID} AS SALES_REQUEST_MASTER_OBJID, - MD.PART_OBJID, - PM.PART_NO, - PM.PART_NAME, - MD.RAW_MATERIAL, - 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, - MD.RAW_MATERIAL_PART_NO AS RAW_MATERIAL_NO, - 'MBOM' AS DATA_SOURCE, - -- 공급업체 견적요청서 생성 가능 여부 - CASE WHEN MD.VENDOR IS NOT NULL AND MD.VENDOR != '' AND NOT EXISTS ( - SELECT 1 FROM QUOTATION_REQUEST_DETAIL QRD - INNER JOIN QUOTATION_REQUEST_MASTER QRM ON QRD.QUOTATION_REQUEST_MASTER_OBJID = QRM.OBJID - WHERE QRD.SALES_REQUEST_PART_OBJID::VARCHAR = MD.OBJID::VARCHAR - AND QRM.VENDOR_TYPE = 'SUPPLY' - AND QRM.VENDOR_OBJID::VARCHAR = MD.VENDOR - ) THEN 'Y' ELSE 'N' END AS CAN_CREATE_SUPPLY, - -- 가공업체 견적요청서 생성 가능 여부 - CASE WHEN MD.PROCESSING_VENDOR IS NOT NULL AND MD.PROCESSING_VENDOR != '' AND NOT EXISTS ( - SELECT 1 FROM QUOTATION_REQUEST_DETAIL QRD - INNER JOIN QUOTATION_REQUEST_MASTER QRM ON QRD.QUOTATION_REQUEST_MASTER_OBJID = QRM.OBJID - WHERE QRD.SALES_REQUEST_PART_OBJID::VARCHAR = MD.OBJID::VARCHAR - AND QRM.VENDOR_TYPE = 'PROCESSING' - AND QRM.VENDOR_OBJID::VARCHAR = MD.PROCESSING_VENDOR - ) THEN 'Y' ELSE 'N' END AS CAN_CREATE_PROCESSING - FROM MBOM_DETAIL MD - LEFT JOIN PART_MNG PM ON MD.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR - WHERE MD.MBOM_HEADER_OBJID = #{MBOM_HEADER_OBJID} - AND ( - (MD.VENDOR IS NOT NULL AND MD.VENDOR != '') - OR (MD.PROCESSING_VENDOR IS NOT NULL AND MD.PROCESSING_VENDOR != '') + WITH GROUPED_MBOM AS ( + SELECT + MIN(MD.OBJID) AS OBJID, + STRING_AGG(MD.OBJID::VARCHAR, ',' ORDER BY MD.OBJID) AS ORIGINAL_OBJIDS, + MD.PART_OBJID, + MIN(PM.PART_NO) AS PART_NO, + MIN(PM.PART_NAME) AS PART_NAME, + COALESCE(MIN(MD.RAW_MATERIAL), '') AS RAW_MATERIAL, + COALESCE(MIN(MD.RAW_MATERIAL_SIZE), '') AS SIZE, + SUM(COALESCE(MD.PO_QTY, 0)) AS PO_QTY, + SUM(COALESCE(MD.PRODUCTION_QTY, 0)) AS PRODUCTION_QTY, + MIN(MD.UNIT_PRICE) AS UNIT_PRICE, + MIN(MD.PROCESSING_UNIT_PRICE) AS PROCESSING_UNIT_PRICE, + MIN(MD.VENDOR) AS VENDOR_PM, + MIN(MD.PROCESSING_VENDOR) AS PROCESSING_VENDOR, + MIN(MD.RAW_MATERIAL_PART_NO) AS RAW_MATERIAL_NO + FROM MBOM_DETAIL MD + LEFT JOIN PART_MNG PM ON MD.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR + WHERE MD.MBOM_HEADER_OBJID = #{MBOM_HEADER_OBJID} + AND ( + (MD.VENDOR IS NOT NULL AND MD.VENDOR != '') + OR (MD.PROCESSING_VENDOR IS NOT NULL AND MD.PROCESSING_VENDOR != '') + ) + GROUP BY MD.PART_OBJID, + COALESCE(MD.SUPPLY_TYPE, ''), + COALESCE(MD.RAW_MATERIAL, ''), + COALESCE(MD.RAW_MATERIAL_SIZE, '') ) - -- 공급업체 또는 가공업체 중 하나라도 견적요청서 생성 가능해야 함 - AND ( - -- 공급업체 견적요청서 생성 가능 - (MD.VENDOR IS NOT NULL AND MD.VENDOR != '' AND NOT EXISTS ( + SELECT + G.OBJID, + G.ORIGINAL_OBJIDS, + #{SALES_REQUEST_MASTER_OBJID} AS SALES_REQUEST_MASTER_OBJID, + G.PART_OBJID, + G.PART_NO, + G.PART_NAME, + G.RAW_MATERIAL, + G.SIZE, + G.PO_QTY, + G.PRODUCTION_QTY, + G.UNIT_PRICE, + G.PROCESSING_UNIT_PRICE, + G.VENDOR_PM, + (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = G.VENDOR_PM) AS VENDOR_NAME, + G.PROCESSING_VENDOR, + (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = G.PROCESSING_VENDOR) AS PROCESSING_VENDOR_NAME, + G.RAW_MATERIAL_NO, + 'MBOM' AS DATA_SOURCE, + CASE WHEN G.VENDOR_PM IS NOT NULL AND G.VENDOR_PM != '' AND NOT EXISTS ( SELECT 1 FROM QUOTATION_REQUEST_DETAIL QRD INNER JOIN QUOTATION_REQUEST_MASTER QRM ON QRD.QUOTATION_REQUEST_MASTER_OBJID = QRM.OBJID - WHERE QRD.SALES_REQUEST_PART_OBJID::VARCHAR = MD.OBJID::VARCHAR + WHERE QRD.SALES_REQUEST_PART_OBJID = G.OBJID AND QRM.VENDOR_TYPE = 'SUPPLY' - AND QRM.VENDOR_OBJID::VARCHAR = MD.VENDOR + AND QRM.VENDOR_OBJID::VARCHAR = G.VENDOR_PM + ) THEN 'Y' ELSE 'N' END AS CAN_CREATE_SUPPLY, + CASE WHEN G.PROCESSING_VENDOR IS NOT NULL AND G.PROCESSING_VENDOR != '' AND NOT EXISTS ( + SELECT 1 FROM QUOTATION_REQUEST_DETAIL QRD + INNER JOIN QUOTATION_REQUEST_MASTER QRM ON QRD.QUOTATION_REQUEST_MASTER_OBJID = QRM.OBJID + WHERE QRD.SALES_REQUEST_PART_OBJID = G.OBJID + AND QRM.VENDOR_TYPE = 'PROCESSING' + AND QRM.VENDOR_OBJID::VARCHAR = G.PROCESSING_VENDOR + ) THEN 'Y' ELSE 'N' END AS CAN_CREATE_PROCESSING + FROM GROUPED_MBOM G + WHERE ( + (G.VENDOR_PM IS NOT NULL AND G.VENDOR_PM != '' AND NOT EXISTS ( + SELECT 1 FROM QUOTATION_REQUEST_DETAIL QRD + INNER JOIN QUOTATION_REQUEST_MASTER QRM ON QRD.QUOTATION_REQUEST_MASTER_OBJID = QRM.OBJID + WHERE QRD.SALES_REQUEST_PART_OBJID = G.OBJID + AND QRM.VENDOR_TYPE = 'SUPPLY' + AND QRM.VENDOR_OBJID::VARCHAR = G.VENDOR_PM )) OR - -- 가공업체 견적요청서 생성 가능 - (MD.PROCESSING_VENDOR IS NOT NULL AND MD.PROCESSING_VENDOR != '' AND NOT EXISTS ( + (G.PROCESSING_VENDOR IS NOT NULL AND G.PROCESSING_VENDOR != '' AND NOT EXISTS ( SELECT 1 FROM QUOTATION_REQUEST_DETAIL QRD INNER JOIN QUOTATION_REQUEST_MASTER QRM ON QRD.QUOTATION_REQUEST_MASTER_OBJID = QRM.OBJID - WHERE QRD.SALES_REQUEST_PART_OBJID::VARCHAR = MD.OBJID::VARCHAR + WHERE QRD.SALES_REQUEST_PART_OBJID = G.OBJID AND QRM.VENDOR_TYPE = 'PROCESSING' - AND QRM.VENDOR_OBJID::VARCHAR = MD.PROCESSING_VENDOR + AND QRM.VENDOR_OBJID::VARCHAR = G.PROCESSING_VENDOR )) ) - ORDER BY MD.REGDATE + ORDER BY G.PART_NO diff --git a/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/contractMgmt.xml b/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/contractMgmt.xml index 1e6214b..83ce317 100644 --- a/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/contractMgmt.xml +++ b/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/contractMgmt.xml @@ -3556,54 +3556,56 @@ SELECT (CASE WHEN GROUPING(cc.code_id) = 1 THEN '소계' ELSE cc.CODE_ID END) AS @@ -3682,23 +3662,20 @@ SELECT year, annual, five SELECT ASM.OBJID - ,ASM.SUPPLY_NAME + ,ASM.CLIENT_NM ,S1.* FROM - SUPPLY_MNG ASM + CLIENT_MNG ASM ,( SELECT CM.CUSTOMER_OBJID @@ -3784,12 +3757,12 @@ FROM FROM CONTRACT_MGMT CM WHERE CM.CONTRACT_RESULT = '0000964' - AND TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = #{Year} + AND TO_CHAR(TO_DATE(ORDER_DATE,'YYYY-MM-DD'),'YYYY') = #{Year} GROUP BY CM.CUSTOMER_OBJID ) AS S1 WHERE 1=1 - AND ASM.OBJID::VARCHAR = S1.CUSTOMER_OBJID -ORDER BY ASM.SUPPLY_NAME + AND 'C_' || ASM.OBJID::VARCHAR = S1.CUSTOMER_OBJID +ORDER BY ASM.CLIENT_NM diff --git a/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml b/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml index 5c83660..1fb1c24 100644 --- a/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml +++ b/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/salesNcollectMgmt.xml @@ -2142,6 +2142,102 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC LOADING_DATE = #{loadingDate} WHERE OBJID::VARCHAR = #{OBJID} - + + + + + + + + + + + + /* salesNcollectMgmt.updateSlipInfo - 전표 연동 정보 저장 */ + UPDATE PROJECT_MGMT + SET + SALES_STATUS = '완료', + SALES_DEADLINE_DATE = #{deadlineDate}, + SALES_SLIP_DATE = #{slipDate}, + SALES_SLIP_MENU_SQ = #{slipMenuSq} + WHERE OBJID::VARCHAR = #{OBJID} + + diff --git a/WebContent/WEB-INF/view/quality/ecrList.jsp b/WebContent/WEB-INF/view/quality/ecrList.jsp index b49b324..9cd54a5 100644 --- a/WebContent/WEB-INF/view/quality/ecrList.jsp +++ b/WebContent/WEB-INF/view/quality/ecrList.jsp @@ -116,6 +116,16 @@ var columns = [ var objid = fnc_checkNull(cell.getData().OBJID); fn_FileRegist(objid,"ECR_RESULT","ECR결과첨부"); } + }, + {title:'AMARANTH_STATUS', field:'AMARANTH_STATUS', visible: false}, + {headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'결재상태', field:'AMARANTH_STATUS_TITLE', + formatter:function(cell){ + var val = fnc_checkNull(cell.getValue()); + if(val == "결재 상신중") return "" + val + ""; + if(val == "결재완료") return "" + val + ""; + if(val == "반려") return "" + val + ""; + return val; + } } ]; @@ -247,7 +257,7 @@ function fn_openEcrDocPopUp(objId){ }, 500); } -// 결재상신 +// 결재상신 (Amaranth10 전자결재 SSO 방식) function fn_approval(){ var selected = _tabulGrid.getSelectedData(); if(selected.length == 0){ @@ -259,7 +269,16 @@ function fn_approval(){ return; } - var title = fnc_checkNull(selected[0].ECR_NO) + " " + fnc_checkNull(selected[0].PART_NO); + var amaranthStatus = fnc_checkNull(selected[0].AMARANTH_STATUS); + if(amaranthStatus == "inProcess"){ + Swal.fire("결재 진행중인 건은 상신할 수 없습니다."); + return; + } else if(amaranthStatus == "complete"){ + Swal.fire("결재 완료된 건은 상신할 수 없습니다."); + return; + } + + var title = "ECR 결재 - " + fnc_checkNull(selected[0].ECR_NO); var objId = fnc_checkNull(selected[0].OBJID); Swal.fire({ @@ -271,7 +290,35 @@ function fn_approval(){ cancelButtonText: '취소' }).then((result) => { if(result.isConfirmed){ - window.open("/approval/registApproval.do?targetType=ECR&targetObjId="+objId+"&approvalTitle="+encodeURIComponent(title)+"&callbackFnc=fn_search","registApproval","width=700,height=700"); + fn_openAmaranthApproval(objId, title); + } + }); +} + +// Amaranth10 전자결재 SSO 팝업 열기 +function fn_openAmaranthApproval(objId, title){ + $.ajax({ + url: "/approval/getAmaranthSsoUrl.do", + type: "POST", + data: { + "targetType": "ECR", + "targetObjId": objId, + "approvalTitle": title, + "outProcessCode": "${AMARANTH_OUT_PROCESS_CODE}", + "formId": "", + "compSeq": "1000", + "deptSeq": "" + }, + dataType: "json", + success: function(data){ + if(data.resultCode == 0 && data.resultData && data.resultData.fullUrl){ + window.open(data.resultData.fullUrl, "amaranthApproval", "width=1200,height=900,scrollbars=yes,resizable=yes"); + } else { + Swal.fire("결재 연동 오류: " + (data.resultMsg || "알 수 없는 오류")); + } + }, + error: function(xhr, status, error){ + Swal.fire("결재 시스템 연동 중 오류가 발생했습니다."); } }); } @@ -291,7 +338,7 @@ function fn_approval(){ <%=menuName%>
- + diff --git a/src/com/pms/controller/QualityController.java b/src/com/pms/controller/QualityController.java index e9083cd..7d6e8bc 100644 --- a/src/com/pms/controller/QualityController.java +++ b/src/com/pms/controller/QualityController.java @@ -901,6 +901,7 @@ public class QualityController { e.printStackTrace(); } request.setAttribute("code_map", code_map); + request.setAttribute("AMARANTH_OUT_PROCESS_CODE", Constants.AMARANTH_OUT_PROCESS_CODE); return "/quality/ecrList"; } diff --git a/src/com/pms/mapper/approval.xml b/src/com/pms/mapper/approval.xml index b1d5838..29bc617 100644 --- a/src/com/pms/mapper/approval.xml +++ b/src/com/pms/mapper/approval.xml @@ -694,6 +694,13 @@ STATUS = #{status} WHERE OBJID::VARCHAR = #{targetObjId}::VARCHAR + + + + UPDATE ECR_MNG SET + STATUS_CD = #{statusCd} + WHERE OBJID::VARCHAR = #{targetObjId}::VARCHAR +