diff --git a/WebContent/WEB-INF/classes/com/pms/mapper/admin.xml b/WebContent/WEB-INF/classes/com/pms/mapper/admin.xml index d365846..7d2c81a 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/admin.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/admin.xml @@ -8042,6 +8042,61 @@ FROM ( DELETE FROM SUPPLY_CHARGER_MNG WHERE SUPPLY_OBJID = #{objid} + + + + + + INSERT INTO SUPPLY_CHARGER_MNG + ( + OBJID, + CHARGER_TYPE, + SUPPLY_OBJID, + CHARGER_NAME, + PHONE, + TEL, + FAX, + EMAIL, + WRITER, + REGDATE + ) + VALUES + ( + #{OBJID}::INTEGER, + #{CHARGER_TYPE}, + #{CLIENT_OBJID}, + #{CHARGER_NAME}, + #{PHONE}, + #{TEL}, + #{FAX}, + #{EMAIL}, + #{WRITER}, + NOW() + ) + + + + + DELETE FROM SUPPLY_CHARGER_MNG WHERE SUPPLY_OBJID::VARCHAR = #{objid}::VARCHAR + + DELETE FROM ADMIN_SUPPLY_MNG WHERE OBJID = #{objId}::NUMERIC @@ -8864,8 +8919,8 @@ SELECT SELECT * FROM CLIENT_MNG WHERE 1=1 - - AND OBJID != #{OBJID}::numeric + + AND OBJID != #{objid}::numeric AND TRIM(UPPER(CLIENT_CD)) = TRIM(UPPER(#{CLIENT_CD})) @@ -8932,8 +8987,8 @@ SELECT #{BIZCON_FG}, #{BIZCON_NM}, #{SHIP_TP}, #{SHIP_NM}, #{PLAN_DAY_TYPE}, #{PLAN_DAY}, #{PURPOSE_TYPE}, #{FOR_YN}, #{CHECK_DATA}, #{CHECK_STATE}, - CASE WHEN #{CHECK_ORDER} = '' THEN NULL ELSE #{CHECK_ORDER}::numeric END, - #{FIXED_ORDER}, + CASE WHEN #{CHECK_ORDER} = '' OR #{CHECK_ORDER} !~ '^[0-9]+$' THEN NULL ELSE #{CHECK_ORDER}::numeric END, + CASE WHEN #{FIXED_ORDER} = '' OR #{FIXED_ORDER} !~ '^[0-9]+$' THEN NULL ELSE #{FIXED_ORDER}::numeric END, #{INSERT_ID}, #{INSERT_IP}, CASE WHEN #{INSERT_DT} = '' THEN NOW() ELSE COALESCE(#{INSERT_DT}::timestamp, NOW()) END, #{MODIFY_ID}, #{MODIFY_IP}, @@ -9048,8 +9103,8 @@ SELECT FOR_YN = #{FOR_YN}, CHECK_DATA = #{CHECK_DATA}, CHECK_STATE = #{CHECK_STATE}, - CHECK_ORDER = CASE WHEN #{CHECK_ORDER} = '' THEN NULL ELSE #{CHECK_ORDER}::numeric END, - FIXED_ORDER = #{FIXED_ORDER}, + CHECK_ORDER = CASE WHEN #{CHECK_ORDER} = '' OR #{CHECK_ORDER} !~ '^[0-9]+$' THEN NULL ELSE #{CHECK_ORDER}::numeric END, + FIXED_ORDER = CASE WHEN #{FIXED_ORDER} = '' OR #{FIXED_ORDER} !~ '^[0-9]+$' THEN NULL ELSE #{FIXED_ORDER}::numeric END, MODIFY_ID = #{MODIFY_ID}, MODIFY_IP = #{MODIFY_IP}, MODIFY_DT = NOW() @@ -9325,5 +9380,58 @@ SELECT ) RESULT --> + + + + + + + + + + + + \ No newline at end of file diff --git a/WebContent/WEB-INF/classes/com/pms/mapper/common.xml b/WebContent/WEB-INF/classes/com/pms/mapper/common.xml index 07508a3..9876cb0 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/common.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/common.xml @@ -1526,29 +1526,57 @@ --> SELECT T.OBJID::varchar AS CODE - ,COALESCE(T.REVISION, T.REV, '1.0') AS NAME + ,COALESCE(T.REVISION, '1.0') AS NAME ,T1.PRODUCT_CODE AS CODE_CD ,'' AS STATUS ,T.spec_name AS ID @@ -2541,7 +2569,7 @@ SELECT option_objid::VARCHAR AS CODE FROM PART_BOM_REPORT T,PRODUCT_MGMT T1 WHERE T.PRODUCT_MGMT_OBJID = T1.OBJID AND T1.OBJID = #{code}::numeric -ORDER BY COALESCE(T.REVISION, T.REV, '1.0') +ORDER BY COALESCE(T.REVISION, '1.0') @@ -3206,31 +3234,63 @@ ORDER BY COALESCE(T.REVISION, T.REV, '1.0') AND MASTER_OBJID::varchar = #{masterObjid} - + \ No newline at end of file diff --git a/WebContent/WEB-INF/classes/com/pms/mapper/purchaseOrder.xml b/WebContent/WEB-INF/classes/com/pms/mapper/purchaseOrder.xml index 499e730..775e357 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/purchaseOrder.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/purchaseOrder.xml @@ -32,7 +32,10 @@ POM.PARTNER_OBJID, (SELECT SUPPLY_CODE FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_CODE, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME, + CASE + 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, ( SELECT SUM(ORDER_QTY::numeric) @@ -274,7 +277,10 @@ POM.PARTNER_OBJID, (SELECT SUPPLY_CODE FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_CODE, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME, + CASE + 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, ( SELECT SUM(ORDER_QTY::numeric) @@ -578,8 +584,8 @@ ( #{OBJID}, #{PO_CLIENT_ID}, - - (SELECT 'PO-'||TO_CHAR(NOW(),'YYMM')||'-'||(COALESCE(MAX(case when SPLIT_PART( PURCHASE_ORDER_NO, '-', 3) = '' or PURCHASE_ORDER_NO is null then '0' else SPLIT_PART( PURCHASE_ORDER_NO, '-', 3) end ::numeric ))::INTEGER+1)::TEXT FROM PURCHASE_ORDER_MASTER), + + (SELECT 'RPS'||TO_CHAR(NOW(),'YY')||'-'||TO_CHAR(NOW(),'MMDD')||'-'||LPAD((COALESCE(MAX(CASE WHEN PURCHASE_ORDER_NO LIKE 'RPS'||TO_CHAR(NOW(),'YY-MMDD')||'-%' THEN SPLIT_PART(PURCHASE_ORDER_NO, '-', 3) ELSE '0' END)::INTEGER, 0) + 1)::TEXT, 2, '0') FROM PURCHASE_ORDER_MASTER), #{CATEGORY_CD}, #{PRODUCT_GROUP}, #{PRODUCT}, @@ -757,8 +763,8 @@ ( #{OBJID}, #{PO_CLIENT_ID}, - (SELECT 'PO-'||TO_CHAR(NOW(),'YYMM')||'-'||(COALESCE(MAX(case when SPLIT_PART( PURCHASE_ORDER_NO, '-', 3) = '' or PURCHASE_ORDER_NO is null then '0' else SPLIT_PART( PURCHASE_ORDER_NO, '-', 3) end ::numeric ))::INTEGER+1)::TEXT FROM PURCHASE_ORDER_MASTER), - + (SELECT 'RPS'||TO_CHAR(NOW(),'YY')||'-'||TO_CHAR(NOW(),'MMDD')||'-'||LPAD((COALESCE(MAX(CASE WHEN PURCHASE_ORDER_NO LIKE 'RPS'||TO_CHAR(NOW(),'YY-MMDD')||'-%' THEN SPLIT_PART(PURCHASE_ORDER_NO, '-', 3) ELSE '0' END)::INTEGER, 0) + 1)::TEXT, 2, '0') FROM PURCHASE_ORDER_MASTER), + #{PARTNER_OBJID}, #{DELIVERY_REQUEST_DATE}, #{DELIVERY_PLACE}, @@ -772,15 +778,15 @@ #{SALES_MNG_USER_ID} ,#{TITLE} ,#{PURCHASE_DATE} - ,#{PROJECT_NO}::NUMERIC + ,NULLIF(#{PROJECT_NO}::TEXT, '')::NUMERIC ,#{TYPE } ,#{INSPECT_METHOD } ,#{TOTAL_PRICE_TXT } ,#{VAT_METHOD } - ,#{TOTAL_SUPPLY_UNIT_PRICE} - ,#{DISCOUNT_PRICE } - ,#{TOTAL_PRICE } - ,#{NEGO_RATE } + ,NULLIF(#{TOTAL_SUPPLY_UNIT_PRICE}::TEXT, '')::NUMERIC + ,NULLIF(#{DISCOUNT_PRICE}::TEXT, '')::NUMERIC + ,NULLIF(#{TOTAL_PRICE}::TEXT, '')::NUMERIC + ,NULLIF(#{NEGO_RATE}::TEXT, '')::NUMERIC ,#{SUPPLY_BUS_NO } ,#{SUPPLY_USER_NAME } ,#{SUPPLY_USER_HP } @@ -807,7 +813,7 @@ SALES_MNG_USER_ID = #{SALES_MNG_USER_ID} ,TITLE = #{TITLE} ,PURCHASE_DATE = #{PURCHASE_DATE} - ,CONTRACT_MGMT_OBJID = #{CONTRACT_MGMT_OBJID}::NUMERIC + ,CONTRACT_MGMT_OBJID = NULLIF(#{CONTRACT_MGMT_OBJID}::TEXT, '')::NUMERIC ,TYPE = #{TYPE } ,INSPECT_METHOD = #{INSPECT_METHOD } ,TOTAL_PRICE_TXT = #{TOTAL_PRICE_TXT } @@ -839,6 +845,64 @@ GROUP BY PARTNER_OBJID + + + + + + + + + INSERT INTO PURCHASE_ORDER_MASTER ( @@ -887,7 +951,7 @@ ( #{OBJID}, #{PO_CLIENT_ID}, - (SELECT 'PO-'||TO_CHAR(NOW(),'YYMM')||'-'||LPAD((COALESCE(MAX(SUBSTR(PURCHASE_ORDER_NO,9,11)),'0')::INTEGER+1)::TEXT,3,'0') FROM PURCHASE_ORDER_MASTER), + (SELECT 'RPS'||TO_CHAR(NOW(),'YY')||'-'||TO_CHAR(NOW(),'MMDD')||'-'||LPAD((COALESCE(MAX(CASE WHEN PURCHASE_ORDER_NO LIKE 'RPS'||TO_CHAR(NOW(),'YY-MMDD')||'-%' THEN SPLIT_PART(PURCHASE_ORDER_NO, '-', 3) ELSE '0' END)::INTEGER, 0) + 1)::TEXT, 2, '0') FROM PURCHASE_ORDER_MASTER), #{CATEGORY_CD}, #{PRODUCT_GROUP}, #{PRODUCT}, @@ -1223,7 +1287,10 @@ SM.OFFICE_NO AS MY_COMPANY_SUPPLY_OFFICE_NO, POM.PARTNER_OBJID, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME, + CASE + 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, ( SELECT SUM(ORDER_QTY::numeric) @@ -1396,7 +1463,10 @@ SM.OFFICE_NO AS MY_COMPANY_SUPPLY_OFFICE_NO, POM.PARTNER_OBJID, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME, + CASE + 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, ( SELECT SUM(ORDER_QTY::numeric) @@ -1634,7 +1704,10 @@ PM.REVISION, PM.PART_NAME||'('||PM.MATERIAL||','||PM.SPEC||')/'||PM.PART_NO||(CASE WHEN PM.REVISION IS NULL THEN '' ELSE PM.REVISION END) AS TARGET_TITLE, (SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = pop.UNIT) as UNIT_TITLE, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME, + CASE + 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, POP.OBJID, POP.PURCHASE_ORDER_MASTER_OBJID, @@ -1723,7 +1796,10 @@ PM.REVISION, PM.PART_NAME||'('||PM.MATERIAL||','||PM.SPEC||')/'||PM.PART_NO||(CASE WHEN PM.REVISION IS NULL THEN '' ELSE PM.REVISION END) AS TARGET_TITLE, (SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = pop.UNIT) as UNIT_TITLE, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME, + CASE + 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, POP.REAL_ORDER_QTY, POP.OBJID AS ORDER_PART_OBJID, @@ -2805,8 +2881,102 @@ WHERE OBJID = (SELECT PURCHASE_ORDER_MASTER_OBJID FROM PURCHASE_ORDER_PART POP W WHERE OBJID = #{PURCHASE_ORDER_MASTER_OBJID} - + + + + + + + UPDATE PURCHASE_ORDER_MASTER + SET + MAIL_SEND_YN = #{MAIL_SEND_YN} + ,MAIL_SEND_DATE = #{MAIL_SEND_DATE} + 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 4c0da6b..c9877d9 100644 --- a/WebContent/WEB-INF/classes/com/pms/mapper/salesMng.xml +++ b/WebContent/WEB-INF/classes/com/pms/mapper/salesMng.xml @@ -607,12 +607,13 @@ PRODUCT_NAME, AREA_CD, CUSTOMER_OBJID, - PAID_TYPE + PAID_TYPE, + DOC_TYPE ) 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), + (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), #{REQUEST_CD }, #{PROJECT_NO }, #{RELEASE }, @@ -631,7 +632,8 @@ VALUES #{PRODUCT_NAME }, #{AREA_CD }, #{CUSTOMER_OBJID }, - #{PAID_TYPE } + #{PAID_TYPE }, + 'PURCHASE_REQUEST' ) ON CONFLICT (OBJID) DO UPDATE SET @@ -667,19 +669,19 @@ VALUES PM.OBJID, (SELECT OBJID FROM PROJECT_MGMT WHERE PROJECT_NO = SRM.PROJECT_NO LIMIT 1) ) AS PROJECT_MGMT_OBJID, - -- M-BOM 조회용: MBOM_HEADER에서 직접 OBJID 가져오기 - (SELECT MH.OBJID FROM MBOM_HEADER MH - WHERE MH.PROJECT_OBJID = COALESCE(PM.OBJID, (SELECT OBJID FROM PROJECT_MGMT WHERE PROJECT_NO = SRM.PROJECT_NO LIMIT 1)) - AND MH.STATUS = 'Y' - ORDER BY MH.REGDATE DESC LIMIT 1 - ) AS MBOM_HEADER_OBJID, + -- M-BOM 조회용: SALES_REQUEST_MASTER에 저장된 MBOM_HEADER_OBJID 사용 + SRM.MBOM_HEADER_OBJID, COALESCE( PM.BOM_REPORT_OBJID, (SELECT BOM_REPORT_OBJID FROM PROJECT_MGMT WHERE PROJECT_NO = SRM.PROJECT_NO LIMIT 1) ) AS BOM_REPORT_OBJID, PM.SETUP, - SM.SUPPLY_NAME AS CUSTOMER_NAME, - SM.OBJID::VARCHAR AS CUSTOMER_OBJID, -- 고객사 OBJID (드롭다운 선택용) + CASE + WHEN SM.OBJID IS NOT NULL THEN SM.SUPPLY_NAME + WHEN CM.CUSTOMER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG WHERE 'C_' || OBJID::VARCHAR = CM.CUSTOMER_OBJID) + ELSE SM.SUPPLY_NAME + END AS CUSTOMER_NAME, + COALESCE(SM.OBJID::VARCHAR, CM.CUSTOMER_OBJID) AS CUSTOMER_OBJID, -- 고객사 OBJID (드롭다운 선택용) PM.MECHANICAL_TYPE, SRM.RELEASE_DATE, SRM.REQUEST_REASONS, @@ -755,8 +757,8 @@ VALUES #{SALES_BOM_QTY_OBJID }, #{PART_OBJID }, #{SALES_REQUEST_MASTER_OBJID}, - #{QTY }, - #{ORG_QTY }, + COALESCE(NULLIF(TRIM(#{QTY}::TEXT), '')::NUMERIC, 0), + COALESCE(NULLIF(TRIM(#{ORG_QTY}::TEXT), '')::NUMERIC, 0), #{PARTNER_OBJID }, #{PARTNER_PRICE }, #{DELIVERY_REQUEST_DATE }, @@ -770,8 +772,8 @@ VALUES SALES_BOM_QTY_OBJID = #{SALES_BOM_QTY_OBJID }, PART_OBJID = #{PART_OBJID }, SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_MASTER_OBJID}, - QTY = #{QTY }, - ORG_QTY = #{ORG_QTY }, + QTY = COALESCE(NULLIF(TRIM(#{QTY}::TEXT), '')::NUMERIC, 0), + ORG_QTY = COALESCE(NULLIF(TRIM(#{ORG_QTY}::TEXT), '')::NUMERIC, 0), PARTNER_OBJID = #{PARTNER_OBJID }, PARTNER_PRICE = #{PARTNER_PRICE }, DELIVERY_REQUEST_DATE = #{DELIVERY_REQUEST_DATE }, @@ -963,46 +965,123 @@ VALUES SRM.REQUEST_CD, (SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.REQUEST_CD) AS REQUEST_CD_NAME, - -- 구매요청서 작성 여부 (SALES_REQUEST_PART에 데이터가 있으면 'Y') - (SELECT CASE WHEN COUNT(*) > 0 THEN 'Y' ELSE 'N' END FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID) AS HAS_PURCHASE_REQUEST, + -- 문서유형 (PURCHASE_REQUEST: 구매요청서, PROPOSAL: 품의서) + SRM.DOC_TYPE, - -- 추가된 컬럼들 - SRM.PURCHASE_TYPE, - (SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.PURCHASE_TYPE) AS PURCHASE_TYPE_NAME, - SRM.ORDER_TYPE, - (SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.ORDER_TYPE) AS ORDER_TYPE_NAME, - SRM.PRODUCT_NAME, - (SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.PRODUCT_NAME) AS PRODUCT_NAME_FULL, - SRM.AREA_CD, - (SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.AREA_CD) AS AREA_CD_NAME, - SRM.CUSTOMER_OBJID, - (SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID::VARCHAR = SRM.CUSTOMER_OBJID) AS CUSTOMER_NAME, - SRM.PAID_TYPE, - (CASE WHEN SRM.PAID_TYPE = 'paid' THEN '유상' WHEN SRM.PAID_TYPE = 'free' THEN '무상' ELSE SRM.PAID_TYPE END) AS PAID_TYPE_NAME, + -- 구매요청서 작성 여부 (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 관련 컬럼 + SRM.MBOM_HEADER_OBJID, + + -- 추가된 컬럼들 + SRM.PURCHASE_TYPE, + CODE_NAME(SRM.PURCHASE_TYPE) AS PURCHASE_TYPE_NAME, + + -- 주문유형: 프로젝트 정보(CATEGORY_CD) 우선, 없으면 SALES_REQUEST_MASTER 값 + COALESCE( + (SELECT PM.CATEGORY_CD FROM PROJECT_MGMT PM WHERE PM.OBJID::VARCHAR = SRM.PROJECT_NO), + SRM.ORDER_TYPE + ) AS ORDER_TYPE, + CODE_NAME(COALESCE( + (SELECT PM.CATEGORY_CD FROM PROJECT_MGMT PM WHERE PM.OBJID::VARCHAR = SRM.PROJECT_NO), + SRM.ORDER_TYPE + )) AS ORDER_TYPE_NAME, + + -- 제품구분: 프로젝트 정보 우선, 없으면 SALES_REQUEST_MASTER 값 + COALESCE( + (SELECT CC.CODE_NAME + FROM PROJECT_MGMT PM + LEFT JOIN CONTRACT_MGMT CM ON CM.OBJID = PM.CONTRACT_OBJID + LEFT JOIN COMM_CODE CC ON CC.CODE_ID = CM.PRODUCT + WHERE PM.OBJID::VARCHAR = SRM.PROJECT_NO), + (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = SRM.PRODUCT_NAME) + ) AS PRODUCT_NAME_FULL, + + SRM.AREA_CD, + (SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.AREA_CD) AS AREA_CD_NAME, + + -- 고객사: 프로젝트 정보 우선, 없으면 SALES_REQUEST_MASTER 값 (일반거래처 지원) + COALESCE( + (SELECT + CASE + WHEN CM.CUSTOMER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG WHERE 'C_' || OBJID::VARCHAR = CM.CUSTOMER_OBJID) + ELSE SM.SUPPLY_NAME + END + FROM PROJECT_MGMT PM + LEFT JOIN CONTRACT_MGMT CM ON CM.OBJID = PM.CONTRACT_OBJID + LEFT JOIN SUPPLY_MNG SM ON SM.OBJID::VARCHAR = CM.CUSTOMER_OBJID::VARCHAR + WHERE PM.OBJID::VARCHAR = SRM.PROJECT_NO), + (SELECT + CASE + WHEN SRM.CUSTOMER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG WHERE 'C_' || OBJID::VARCHAR = SRM.CUSTOMER_OBJID) + ELSE (SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID::VARCHAR = SRM.CUSTOMER_OBJID) + END + ) + ) AS CUSTOMER_NAME, + + -- 유/무상: 프로젝트 정보 우선, 없으면 SALES_REQUEST_MASTER 값 + COALESCE( + (SELECT CASE + WHEN CM.PAID_TYPE = 'paid' THEN '유상' + WHEN CM.PAID_TYPE = 'free' THEN '무상' + ELSE CM.PAID_TYPE + END + FROM PROJECT_MGMT PM + LEFT JOIN CONTRACT_MGMT CM ON CM.OBJID = PM.CONTRACT_OBJID + WHERE PM.OBJID::VARCHAR = SRM.PROJECT_NO), + (CASE WHEN SRM.PAID_TYPE = 'paid' THEN '유상' WHEN SRM.PAID_TYPE = 'free' THEN '무상' ELSE SRM.PAID_TYPE END) + ) AS PAID_TYPE_NAME, -- 품번/품명 ("외 N건" 형태로 표시) - ( - SELECT - CASE - WHEN COUNT(*) > 1 THEN - (SELECT PM.PART_NO FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)) || ' 외 ' || (COUNT(*) - 1) || '건' - ELSE - (SELECT PM.PART_NO FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)) - END - FROM SALES_REQUEST_PART - WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID - ) AS PART_NO, - ( - SELECT - CASE - WHEN COUNT(*) > 1 THEN - (SELECT PM.PART_NAME FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)) || ' 외 ' || (COUNT(*) - 1) || '건' - ELSE - (SELECT PM.PART_NAME FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)) - END - FROM SALES_REQUEST_PART - WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID - ) AS PART_NAME, + -- M-BOM이 있으면 MBOM_DETAIL에서, 없으면 SALES_REQUEST_PART에서 조회 + CASE + WHEN SRM.MBOM_HEADER_OBJID IS NOT NULL AND SRM.MBOM_HEADER_OBJID != '' THEN + (SELECT + CASE + WHEN COUNT(*) > 1 THEN + (SELECT PM.PART_NO FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM MBOM_DETAIL WHERE MBOM_HEADER_OBJID = SRM.MBOM_HEADER_OBJID ORDER BY REGDATE LIMIT 1)) || ' 외 ' || (COUNT(*) - 1) || '건' + WHEN COUNT(*) = 1 THEN + (SELECT PM.PART_NO FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM MBOM_DETAIL WHERE MBOM_HEADER_OBJID = SRM.MBOM_HEADER_OBJID ORDER BY REGDATE LIMIT 1)) + ELSE NULL + END + FROM MBOM_DETAIL WHERE MBOM_HEADER_OBJID = SRM.MBOM_HEADER_OBJID) + ELSE + (SELECT + CASE + WHEN COUNT(*) > 1 THEN + (SELECT PM.PART_NO FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)) || ' 외 ' || (COUNT(*) - 1) || '건' + WHEN COUNT(*) = 1 THEN + (SELECT PM.PART_NO FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)) + ELSE NULL + END + FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID) + END AS PART_NO, + CASE + WHEN SRM.MBOM_HEADER_OBJID IS NOT NULL AND SRM.MBOM_HEADER_OBJID != '' THEN + (SELECT + CASE + WHEN COUNT(*) > 1 THEN + (SELECT PM.PART_NAME FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM MBOM_DETAIL WHERE MBOM_HEADER_OBJID = SRM.MBOM_HEADER_OBJID ORDER BY REGDATE LIMIT 1)) || ' 외 ' || (COUNT(*) - 1) || '건' + WHEN COUNT(*) = 1 THEN + (SELECT PM.PART_NAME FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM MBOM_DETAIL WHERE MBOM_HEADER_OBJID = SRM.MBOM_HEADER_OBJID ORDER BY REGDATE LIMIT 1)) + ELSE NULL + END + FROM MBOM_DETAIL WHERE MBOM_HEADER_OBJID = SRM.MBOM_HEADER_OBJID) + ELSE + (SELECT + CASE + WHEN COUNT(*) > 1 THEN + (SELECT PM.PART_NAME FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)) || ' 외 ' || (COUNT(*) - 1) || '건' + WHEN COUNT(*) = 1 THEN + (SELECT PM.PART_NAME FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)) + ELSE NULL + END + FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID) + END AS PART_NAME, SRM.PROJECT_NO, (SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE PM.OBJID = SRM.PROJECT_NO) AS PROJECT_NUMBER, @@ -1123,6 +1202,8 @@ VALUES ) SRP ON SRP.SALES_REQUEST_MASTER_OBJID::VARCHAR = SRM.OBJID::VARCHAR AND SRP.SUB_RNUM = 1 --> WHERE 1=1 + -- 구매요청서만 조회 (품의서 제외) + AND (SRM.DOC_TYPE = 'PURCHASE_REQUEST' OR SRM.DOC_TYPE IS NULL) AND TO_CHAR(REGDATE,'YYYY') = #{Year} @@ -1159,26 +1240,40 @@ VALUES - AND SRM.OBJID IN ( - SELECT - SRP.SALES_REQUEST_MASTER_OBJID - FROM - SALES_REQUEST_PART SRP - LEFT OUTER JOIN PART_MNG PM - ON SRP.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR - WHERE PM.PART_NO LIKE '%${SEARCH_PART_NO}%' - ) + AND ( + -- SALES_REQUEST_PART에서 검색 + SRM.OBJID IN ( + SELECT SRP.SALES_REQUEST_MASTER_OBJID + FROM SALES_REQUEST_PART SRP + LEFT OUTER JOIN PART_MNG PM ON SRP.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR + WHERE PM.PART_NO LIKE UPPER('%${SEARCH_PART_NO}%') + ) + -- MBOM_DETAIL에서 검색 (M-BOM이 있는 경우) + OR SRM.MBOM_HEADER_OBJID IN ( + SELECT MD.MBOM_HEADER_OBJID + FROM MBOM_DETAIL MD + LEFT OUTER JOIN PART_MNG PM ON MD.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR + WHERE PM.PART_NO LIKE UPPER('%${SEARCH_PART_NO}%') + ) + ) - AND SRM.OBJID IN ( - SELECT - SRP.SALES_REQUEST_MASTER_OBJID - FROM - SALES_REQUEST_PART SRP - LEFT OUTER JOIN PART_MNG PM - ON SRP.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR - WHERE PM.PART_NAME LIKE '%${SEARCH_PART_NAME}%' - ) + AND ( + -- SALES_REQUEST_PART에서 검색 + SRM.OBJID IN ( + SELECT SRP.SALES_REQUEST_MASTER_OBJID + FROM SALES_REQUEST_PART SRP + LEFT OUTER JOIN PART_MNG PM ON SRP.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR + WHERE PM.PART_NAME LIKE UPPER('%${SEARCH_PART_NAME}%') + ) + -- MBOM_DETAIL에서 검색 (M-BOM이 있는 경우) + OR SRM.MBOM_HEADER_OBJID IN ( + SELECT MD.MBOM_HEADER_OBJID + FROM MBOM_DETAIL MD + LEFT OUTER JOIN PART_MNG PM ON MD.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR + WHERE PM.PART_NAME LIKE UPPER('%${SEARCH_PART_NAME}%') + ) + ) @@ -3191,6 +3286,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, V.UNIT_PRICE, V.TOTAL_PRICE, V.CURRENCY, @@ -3264,7 +3360,7 @@ ORDER BY V.PATH2 VENDOR = #{VENDOR_PM}, UNIT_PRICE = COALESCE(NULLIF(TRIM(#{UNIT_PRICE}::TEXT), '')::NUMERIC, 0), TOTAL_PRICE = COALESCE(NULLIF(TRIM(#{TOTAL_PRICE}::TEXT), '')::NUMERIC, 0), - PROPOSAL_DATE = CASE WHEN NULLIF(TRIM(#{PROPOSAL_DATE}::TEXT), '') IS NOT NULL THEN #{PROPOSAL_DATE}::DATE ELSE NULL END, + -- PROPOSAL_DATE는 품의서 생성 시에만 자동 설정 (여기서는 업데이트하지 않음) EDITER = #{EDITER}, EDIT_DATE = NOW() WHERE OBJID::VARCHAR = #{OBJID} @@ -3279,30 +3375,38 @@ ORDER BY V.PATH2 VENDOR_PM = #{VENDOR_PM}, UNIT_PRICE = COALESCE(NULLIF(TRIM(#{UNIT_PRICE}::TEXT), '')::NUMERIC, 0), TOTAL_PRICE = COALESCE(NULLIF(TRIM(#{TOTAL_PRICE}::TEXT), '')::NUMERIC, 0), - PROPOSAL_DATE = CASE WHEN NULLIF(TRIM(#{PROPOSAL_DATE}::TEXT), '') IS NOT NULL THEN #{PROPOSAL_DATE}::DATE ELSE NULL END, + -- PROPOSAL_DATE는 품의서 생성 시에만 자동 설정 (여기서는 업데이트하지 않음) WRITER = #{EDITER} WHERE OBJID::VARCHAR = #{OBJID} - + - + + + + @@ -3311,23 +3415,269 @@ ORDER BY V.PATH2 OBJID, REQUEST_MNG_NO, PROJECT_NO, + MBOM_HEADER_OBJID, REQUEST_USER_ID, STATUS, WRITER, - REGDATE + REGDATE, + DOC_TYPE ) VALUES ( #{OBJID}, #{REQUEST_MNG_NO}, #{PROJECT_NO}, + #{MBOM_HEADER_OBJID}, #{REQUEST_USER_ID}, #{STATUS}, #{WRITER}, - NOW() + NOW(), + 'PURCHASE_REQUEST' ) + + + + + + + + + + + + + + + + INSERT INTO SALES_REQUEST_MASTER ( + OBJID, + REQUEST_MNG_NO, + PROJECT_NO, + MBOM_HEADER_OBJID, + PURCHASE_TYPE, + ORDER_TYPE, + PRODUCT_NAME, + AREA_CD, + CUSTOMER_OBJID, + PAID_TYPE, + REQUEST_USER_ID, + STATUS, + WRITER, + REGDATE, + DOC_TYPE + ) VALUES ( + #{OBJID}, + #{REQUEST_MNG_NO}, + #{PROJECT_NO}, + #{MBOM_HEADER_OBJID}, + #{PURCHASE_TYPE}, + #{ORDER_TYPE}, + #{PRODUCT_NAME}, + #{AREA_CD}, + #{CUSTOMER_OBJID}, + #{PAID_TYPE}, + #{REQUEST_USER_ID}, + 'create', + #{WRITER}, + NOW(), + '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, + UNIT_PRICE, + TOTAL_PRICE, + 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, + 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, + UNIT_PRICE, + TOTAL_PRICE, + 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() + WHERE OBJID IN + + #{objid} + + + + + + UPDATE MBOM_DETAIL + SET PROPOSAL_DATE = NOW() + WHERE OBJID IN + + #{objid} + + + + + + + + + UPDATE SALES_REQUEST_MASTER SET + RECIPIENT_REF = #{RECIPIENT_REF}, + EXECUTOR = #{EXECUTOR}, + EXECUTION_DATE = CASE WHEN #{EXECUTION_DATE} IS NOT NULL AND #{EXECUTION_DATE} != '' THEN #{EXECUTION_DATE}::DATE ELSE NULL END, + TITLE = #{TITLE} + WHERE OBJID = #{PROPOSAL_OBJID} + + + + + UPDATE SALES_REQUEST_PART SET + DELIVERY_REQUEST_DATE = CASE WHEN #{DELIVERY_REQUEST_DATE} IS NOT NULL AND #{DELIVERY_REQUEST_DATE} != '' THEN #{DELIVERY_REQUEST_DATE} ELSE NULL END, + UNIT = #{UNIT}, + REMARK = #{REMARK} + WHERE OBJID = #{PART_OBJID} + + \ No newline at end of file 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 aac84a8..91a4a64 100644 --- a/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/contractMgmt.xml +++ b/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/contractMgmt.xml @@ -427,7 +427,42 @@ ,CATEGORY_CD ,CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME ,CUSTOMER_OBJID - ,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN + (SELECT CLIENT_NM FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) + ELSE + (SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID::VARCHAR) + END AS CUSTOMER_NAME + + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN + (SELECT CLIENT_CD FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) + ELSE NULL + END AS CLIENT_CD + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN + (SELECT BUS_REG_NO FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) + ELSE NULL + END AS CLIENT_BUS_REG_NO + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN + (SELECT CEO_NM FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) + ELSE NULL + END AS CLIENT_CEO_NM + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN + (SELECT TEL_NO FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) + ELSE NULL + END AS CLIENT_TEL_NO + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN + (SELECT EMAIL FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) + ELSE NULL + END AS CLIENT_EMAIL + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN 'CLIENT' + ELSE 'SUPPLY' + END AS CUSTOMER_TYPE ,PRODUCT ,CODE_NAME(PRODUCT) AS PRODUCT_NAME ,CUSTOMER_PROJECT_NAME @@ -1625,13 +1660,16 @@ + - + diff --git a/WebContent/WEB-INF/view/admin/clientMng/clientMngListFormPopUp.jsp b/WebContent/WEB-INF/view/admin/clientMng/clientMngListFormPopUp.jsp index 35f1f19..8289315 100644 --- a/WebContent/WEB-INF/view/admin/clientMng/clientMngListFormPopUp.jsp +++ b/WebContent/WEB-INF/view/admin/clientMng/clientMngListFormPopUp.jsp @@ -6,6 +6,28 @@ <%=Constants.SYSTEM_NAME%> + -
-
-

일반 거래처 등록/수정

-
-
-
- - "> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - -
-
-
+
+ +"> + +
+

일반 거래처 등록/수정

+
+ +
+
+

거래처 정보

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+ + +
+
+
+
diff --git a/WebContent/WEB-INF/view/salesMng/proposalMngList.jsp b/WebContent/WEB-INF/view/salesMng/proposalMngList.jsp index 2676618..be42926 100644 --- a/WebContent/WEB-INF/view/salesMng/proposalMngList.jsp +++ b/WebContent/WEB-INF/view/salesMng/proposalMngList.jsp @@ -9,7 +9,7 @@ <% // DB에서 메뉴명 조회 (공통 유틸 사용) String menuObjId = request.getParameter("menuObjId"); -String menuName = CommonUtils.getMenuName(menuObjId, "기본메뉴명"); +String menuName = CommonUtils.getMenuName(menuObjId, "구매관리_품의서관리"); %> @@ -140,20 +140,27 @@ $(document).ready(function(){ }).then(result => { // 만약 Promise리턴을 받으면, if (result.isConfirmed) { // 만약 모달창에서 confirm 버튼을 눌렀다면 + console.log("=== 발주서 생성 API 호출 ==="); + console.log("selectedRowIds:", selectedRowIds); $.ajax({ url:"/purchaseOrder/purchaseOrder_salesRequest_Save.do" ,type:"POST" ,data: $("#form1").serialize() + "&jqGrid="+ encodeURIComponent(JSON.stringify(selectedRowIds)) - ,dataType:"json" + ,dataType:"text" ,success:function(data){ + console.log("발주서 생성 응답:", data); if(data =="SUCCESS"){ alert("저장되었습니다."); - }; + } else { + alert("발주서 생성 결과: " + data); + } /* if(typeof opener.fn_search =="function"){ opener.fn_search() }; */ fn_search(); //self.close(); } ,error: function(jqxhr, status, error){ + console.log("발주서 생성 에러:", status, error); + alert("발주서 생성 중 오류가 발생했습니다: " + error); } }); } diff --git a/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp b/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp index 44e8f85..6f7d616 100644 --- a/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp +++ b/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp @@ -116,21 +116,21 @@ $(document).ready(function(){ }); }); -// 공급업체 목록 로드 (기준정보_협력업체관리 - ADMIN_SUPPLY_MNG) +// 공급업체 목록 로드 (협력업체관리 ADMIN_SUPPLY_MNG + 일반거래처관리 CLIENT_MNG) function fn_loadVendorList(callback) { + vendorList = {}; // 객체 형태로 변경 + vendorList[''] = '선택'; // 빈 값 + + // 1. 협력업체 로드 (ADMIN_SUPPLY_MNG) $.ajax({ url: "/admin/supplyMngPagingGridList.do", method: 'post', data: { - searchStatus: 'Y', - countPerPage: 1000 // 충분히 많이 가져오기 + countPerPage: 9999 }, dataType: 'json', success: function(data) { - // console.log("공급업체 목록 응답:", data); if(data && data.RESULTLIST) { - vendorList = {}; // 객체 형태로 변경 - vendorList[''] = '선택'; // 빈 값 data.RESULTLIST.forEach(function(item) { var name = item.SUPPLY_NAME || ''; var objid = item.OBJID || ''; @@ -138,13 +138,38 @@ function fn_loadVendorList(callback) { vendorList[objid] = name; } }); - // console.log("vendorList 생성 완료:", Object.keys(vendorList).length + "개"); } - if(callback) callback(); + console.log("협력업체 로드 완료:", Object.keys(vendorList).length + "개", vendorList); + + // 2. 일반거래처 로드 (CLIENT_MNG) - C_ 접두사 붙여서 구분 + $.ajax({ + url: "/admin/clientMngListPagingGridList.do", + method: 'post', + data: { + countPerPage: 9999 + }, + dataType: 'json', + success: function(data2) { + if(data2 && data2.RESULTLIST) { + data2.RESULTLIST.forEach(function(item) { + var name = item.CLIENT_NM || ''; + var objid = item.OBJID || ''; + if(objid && name) { + vendorList['C_' + objid] = name + ' (일반)'; + } + }); + } + console.log("vendorList 최종 생성 완료:", Object.keys(vendorList).length + "개", vendorList); + if(callback) callback(); + }, + error: function(xhr, status, error) { + logError("일반거래처 목록 로드 실패:", error); + if(callback) callback(); + } + }); }, error: function(xhr, status, error) { - logError("공급업체 목록 로드 실패:", error); - vendorList = {'': '선택'}; // 기본값 + logError("협력업체 목록 로드 실패:", error); if(callback) callback(); } }); diff --git a/WebContent/WEB-INF/view/salesMng/salesRequestMngRegList.jsp b/WebContent/WEB-INF/view/salesMng/salesRequestMngRegList.jsp index b416dbd..9526ccf 100644 --- a/WebContent/WEB-INF/view/salesMng/salesRequestMngRegList.jsp +++ b/WebContent/WEB-INF/view/salesMng/salesRequestMngRegList.jsp @@ -8,7 +8,7 @@ <% // DB에서 메뉴명 조회 (공통 유틸 사용) String menuObjId = request.getParameter("menuObjId"); -String menuName = CommonUtils.getMenuName(menuObjId, "기본메뉴명"); +String menuName = CommonUtils.getMenuName(menuObjId, "구매관리_구매요청서관리"); %> diff --git a/src/com/pms/controller/AdminController.java b/src/com/pms/controller/AdminController.java index 104351a..d455160 100644 --- a/src/com/pms/controller/AdminController.java +++ b/src/com/pms/controller/AdminController.java @@ -4849,6 +4849,17 @@ public String clientImportFileProc(HttpServletRequest request, HttpSession sessi return resultList; } + /** + * 일반거래처 담당자 목록 조회 + */ + @ResponseBody + @RequestMapping("/admin/getClientChargerList.do") + public List> getClientChargerList(HttpServletRequest request, @RequestParam Map paramMap){ + List> resultList = new ArrayList(); + resultList = adminService.getClientChargerList(paramMap); + return resultList; + } + // 공급업체의 담당자 정보 목록을 삭제한다. @RequestMapping("/admin/deletesupplyMngInfo.do") public String deletesupplyMngInfo(HttpServletRequest request, @RequestParam Map paramMap){ diff --git a/src/com/pms/controller/PurchaseOrderController.java b/src/com/pms/controller/PurchaseOrderController.java index e18f312..9efe721 100644 --- a/src/com/pms/controller/PurchaseOrderController.java +++ b/src/com/pms/controller/PurchaseOrderController.java @@ -704,6 +704,8 @@ public class PurchaseOrderController { @RequestMapping("/purchaseOrder/purchaseOrder_salesRequest_Save.do") @ResponseBody public String purchaseOrder_salesRequest_Save(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){ + System.out.println("=== purchaseOrder_salesRequest_Save 컨트롤러 호출 ==="); + System.out.println("paramMap: " + paramMap); String result = ""; try{ PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); @@ -711,9 +713,11 @@ public class PurchaseOrderController { purchaseOrderService.savePurchaseOrder_salesRequest(request, paramMap); result = "SUCCESS"; + System.out.println("=== purchaseOrder_salesRequest_Save 완료: SUCCESS ==="); }catch(Exception e){ e.printStackTrace(); result = "FAIL"; + System.out.println("=== purchaseOrder_salesRequest_Save 실패: " + e.getMessage() + " ==="); } return result; } diff --git a/src/com/pms/mapper/admin.xml b/src/com/pms/mapper/admin.xml index 02d18a9..7d2c81a 100644 --- a/src/com/pms/mapper/admin.xml +++ b/src/com/pms/mapper/admin.xml @@ -8042,6 +8042,61 @@ FROM ( DELETE FROM SUPPLY_CHARGER_MNG WHERE SUPPLY_OBJID = #{objid} + + + + + + INSERT INTO SUPPLY_CHARGER_MNG + ( + OBJID, + CHARGER_TYPE, + SUPPLY_OBJID, + CHARGER_NAME, + PHONE, + TEL, + FAX, + EMAIL, + WRITER, + REGDATE + ) + VALUES + ( + #{OBJID}::INTEGER, + #{CHARGER_TYPE}, + #{CLIENT_OBJID}, + #{CHARGER_NAME}, + #{PHONE}, + #{TEL}, + #{FAX}, + #{EMAIL}, + #{WRITER}, + NOW() + ) + + + + + DELETE FROM SUPPLY_CHARGER_MNG WHERE SUPPLY_OBJID::VARCHAR = #{objid}::VARCHAR + + DELETE FROM ADMIN_SUPPLY_MNG WHERE OBJID = #{objId}::NUMERIC @@ -8864,8 +8919,8 @@ SELECT SELECT * FROM CLIENT_MNG WHERE 1=1 - - AND OBJID != #{OBJID}::numeric + + AND OBJID != #{objid}::numeric AND TRIM(UPPER(CLIENT_CD)) = TRIM(UPPER(#{CLIENT_CD})) @@ -8932,8 +8987,8 @@ SELECT #{BIZCON_FG}, #{BIZCON_NM}, #{SHIP_TP}, #{SHIP_NM}, #{PLAN_DAY_TYPE}, #{PLAN_DAY}, #{PURPOSE_TYPE}, #{FOR_YN}, #{CHECK_DATA}, #{CHECK_STATE}, - CASE WHEN #{CHECK_ORDER} = '' THEN NULL ELSE #{CHECK_ORDER}::numeric END, - #{FIXED_ORDER}, + CASE WHEN #{CHECK_ORDER} = '' OR #{CHECK_ORDER} !~ '^[0-9]+$' THEN NULL ELSE #{CHECK_ORDER}::numeric END, + CASE WHEN #{FIXED_ORDER} = '' OR #{FIXED_ORDER} !~ '^[0-9]+$' THEN NULL ELSE #{FIXED_ORDER}::numeric END, #{INSERT_ID}, #{INSERT_IP}, CASE WHEN #{INSERT_DT} = '' THEN NOW() ELSE COALESCE(#{INSERT_DT}::timestamp, NOW()) END, #{MODIFY_ID}, #{MODIFY_IP}, @@ -9048,8 +9103,8 @@ SELECT FOR_YN = #{FOR_YN}, CHECK_DATA = #{CHECK_DATA}, CHECK_STATE = #{CHECK_STATE}, - CHECK_ORDER = CASE WHEN #{CHECK_ORDER} = '' THEN NULL ELSE #{CHECK_ORDER}::numeric END, - FIXED_ORDER = #{FIXED_ORDER}, + CHECK_ORDER = CASE WHEN #{CHECK_ORDER} = '' OR #{CHECK_ORDER} !~ '^[0-9]+$' THEN NULL ELSE #{CHECK_ORDER}::numeric END, + FIXED_ORDER = CASE WHEN #{FIXED_ORDER} = '' OR #{FIXED_ORDER} !~ '^[0-9]+$' THEN NULL ELSE #{FIXED_ORDER}::numeric END, MODIFY_ID = #{MODIFY_ID}, MODIFY_IP = #{MODIFY_IP}, MODIFY_DT = NOW() diff --git a/src/com/pms/mapper/common.xml b/src/com/pms/mapper/common.xml index 4628365..9876cb0 100644 --- a/src/com/pms/mapper/common.xml +++ b/src/com/pms/mapper/common.xml @@ -1526,29 +1526,57 @@ --> - + \ No newline at end of file diff --git a/src/com/pms/mapper/purchaseOrder.xml b/src/com/pms/mapper/purchaseOrder.xml index 3534bc1..775e357 100644 --- a/src/com/pms/mapper/purchaseOrder.xml +++ b/src/com/pms/mapper/purchaseOrder.xml @@ -32,7 +32,10 @@ POM.PARTNER_OBJID, (SELECT SUPPLY_CODE FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_CODE, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME, + CASE + 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, ( SELECT SUM(ORDER_QTY::numeric) @@ -274,7 +277,10 @@ POM.PARTNER_OBJID, (SELECT SUPPLY_CODE FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_CODE, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME, + CASE + 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, ( SELECT SUM(ORDER_QTY::numeric) @@ -772,15 +778,15 @@ #{SALES_MNG_USER_ID} ,#{TITLE} ,#{PURCHASE_DATE} - ,#{PROJECT_NO}::NUMERIC + ,NULLIF(#{PROJECT_NO}::TEXT, '')::NUMERIC ,#{TYPE } ,#{INSPECT_METHOD } ,#{TOTAL_PRICE_TXT } ,#{VAT_METHOD } - ,#{TOTAL_SUPPLY_UNIT_PRICE} - ,#{DISCOUNT_PRICE } - ,#{TOTAL_PRICE } - ,#{NEGO_RATE } + ,NULLIF(#{TOTAL_SUPPLY_UNIT_PRICE}::TEXT, '')::NUMERIC + ,NULLIF(#{DISCOUNT_PRICE}::TEXT, '')::NUMERIC + ,NULLIF(#{TOTAL_PRICE}::TEXT, '')::NUMERIC + ,NULLIF(#{NEGO_RATE}::TEXT, '')::NUMERIC ,#{SUPPLY_BUS_NO } ,#{SUPPLY_USER_NAME } ,#{SUPPLY_USER_HP } @@ -807,7 +813,7 @@ SALES_MNG_USER_ID = #{SALES_MNG_USER_ID} ,TITLE = #{TITLE} ,PURCHASE_DATE = #{PURCHASE_DATE} - ,CONTRACT_MGMT_OBJID = #{CONTRACT_MGMT_OBJID}::NUMERIC + ,CONTRACT_MGMT_OBJID = NULLIF(#{CONTRACT_MGMT_OBJID}::TEXT, '')::NUMERIC ,TYPE = #{TYPE } ,INSPECT_METHOD = #{INSPECT_METHOD } ,TOTAL_PRICE_TXT = #{TOTAL_PRICE_TXT } @@ -1281,7 +1287,10 @@ SM.OFFICE_NO AS MY_COMPANY_SUPPLY_OFFICE_NO, POM.PARTNER_OBJID, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME, + CASE + 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, ( SELECT SUM(ORDER_QTY::numeric) @@ -1454,7 +1463,10 @@ SM.OFFICE_NO AS MY_COMPANY_SUPPLY_OFFICE_NO, POM.PARTNER_OBJID, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME, + CASE + 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, ( SELECT SUM(ORDER_QTY::numeric) @@ -1692,7 +1704,10 @@ PM.REVISION, PM.PART_NAME||'('||PM.MATERIAL||','||PM.SPEC||')/'||PM.PART_NO||(CASE WHEN PM.REVISION IS NULL THEN '' ELSE PM.REVISION END) AS TARGET_TITLE, (SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = pop.UNIT) as UNIT_TITLE, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME, + CASE + 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, POP.OBJID, POP.PURCHASE_ORDER_MASTER_OBJID, @@ -1781,7 +1796,10 @@ PM.REVISION, PM.PART_NAME||'('||PM.MATERIAL||','||PM.SPEC||')/'||PM.PART_NO||(CASE WHEN PM.REVISION IS NULL THEN '' ELSE PM.REVISION END) AS TARGET_TITLE, (SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = pop.UNIT) as UNIT_TITLE, - (SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME, + CASE + 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, POP.REAL_ORDER_QTY, POP.OBJID AS ORDER_PART_OBJID, @@ -3146,7 +3164,10 @@ SELECT POM.OBJID ,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.TYPE) AS TYPE_NAME ,POM.PARTNER_OBJID - ,(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME + ,CASE + 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 ,POM.SALES_MNG_USER_ID ,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_NAME @@ -3397,7 +3418,10 @@ SELECT POM.OBJID ,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.TYPE) AS TYPE_NAME ,POM.PARTNER_OBJID - ,(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME + ,CASE + 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 ,POM.SALES_MNG_USER_ID ,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_NAME @@ -4178,7 +4202,10 @@ SELECT POM.OBJID ,POM.DELIVERY_DATE ,POM.PARTNER_OBJID - ,(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME + ,CASE + 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 ,POM.SALES_MNG_USER_ID ,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_NAME @@ -5288,7 +5315,10 @@ FROM( ,(SELECT PART_NAME FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = DH.PART_OBJID) AS PART_NAME ,(SELECT PART_NO FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = DH.PART_OBJID) AS PART_NO ,DH.ORDER_QTY - ,(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME + ,CASE + 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 ,DH.INSPECT_DATE ,DH.DEFECT_QTY ,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = DH.DEFECT_REASON) AS DEFECT_REASON_NAME @@ -5392,7 +5422,10 @@ FROM( ,(SELECT PART_NAME FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = DH.PART_OBJID) AS PART_NAME ,(SELECT PART_NO FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = DH.PART_OBJID) AS PART_NO ,DH.ORDER_QTY - ,(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME + ,CASE + 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 ,DH.INSPECT_DATE ,DH.DEFECT_QTY ,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = DH.DEFECT_REASON) AS DEFECT_REASON_NAME @@ -5528,7 +5561,10 @@ FROM( ,POP.PART_NO ,POP.PART_NAME ,POP.ORDER_QTY - ,(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME + ,CASE + 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 ,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_NAME ,(SELECT (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PM.WRITER) FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = AP.PART_OBJID) AS DESIGN_NAME @@ -5697,7 +5733,10 @@ FROM( ,POP.PART_NO ,POP.PART_NAME ,POP.SPEC - ,(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME + ,CASE + 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 ,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_NAME ,(SELECT (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PM.WRITER) FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = AP.PART_OBJID) AS DESIGN_NAME diff --git a/src/com/pms/mapper/salesMng.xml b/src/com/pms/mapper/salesMng.xml index 0487101..c9877d9 100644 --- a/src/com/pms/mapper/salesMng.xml +++ b/src/com/pms/mapper/salesMng.xml @@ -676,8 +676,12 @@ VALUES (SELECT BOM_REPORT_OBJID FROM PROJECT_MGMT WHERE PROJECT_NO = SRM.PROJECT_NO LIMIT 1) ) AS BOM_REPORT_OBJID, PM.SETUP, - SM.SUPPLY_NAME AS CUSTOMER_NAME, - SM.OBJID::VARCHAR AS CUSTOMER_OBJID, -- 고객사 OBJID (드롭다운 선택용) + CASE + WHEN SM.OBJID IS NOT NULL THEN SM.SUPPLY_NAME + WHEN CM.CUSTOMER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG WHERE 'C_' || OBJID::VARCHAR = CM.CUSTOMER_OBJID) + ELSE SM.SUPPLY_NAME + END AS CUSTOMER_NAME, + COALESCE(SM.OBJID::VARCHAR, CM.CUSTOMER_OBJID) AS CUSTOMER_OBJID, -- 고객사 OBJID (드롭다운 선택용) PM.MECHANICAL_TYPE, SRM.RELEASE_DATE, SRM.REQUEST_REASONS, @@ -1000,14 +1004,23 @@ VALUES SRM.AREA_CD, (SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.AREA_CD) AS AREA_CD_NAME, - -- 고객사: 프로젝트 정보 우선, 없으면 SALES_REQUEST_MASTER 값 + -- 고객사: 프로젝트 정보 우선, 없으면 SALES_REQUEST_MASTER 값 (일반거래처 지원) COALESCE( - (SELECT SM.SUPPLY_NAME + (SELECT + CASE + WHEN CM.CUSTOMER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG WHERE 'C_' || OBJID::VARCHAR = CM.CUSTOMER_OBJID) + ELSE SM.SUPPLY_NAME + END FROM PROJECT_MGMT PM LEFT JOIN CONTRACT_MGMT CM ON CM.OBJID = PM.CONTRACT_OBJID - LEFT JOIN SUPPLY_MNG SM ON SM.OBJID = CM.CUSTOMER_OBJID::NUMERIC + LEFT JOIN SUPPLY_MNG SM ON SM.OBJID::VARCHAR = CM.CUSTOMER_OBJID::VARCHAR WHERE PM.OBJID::VARCHAR = SRM.PROJECT_NO), - (SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID::VARCHAR = SRM.CUSTOMER_OBJID) + (SELECT + CASE + WHEN SRM.CUSTOMER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG WHERE 'C_' || OBJID::VARCHAR = SRM.CUSTOMER_OBJID) + ELSE (SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID::VARCHAR = SRM.CUSTOMER_OBJID) + END + ) ) AS CUSTOMER_NAME, -- 유/무상: 프로젝트 정보 우선, 없으면 SALES_REQUEST_MASTER 값 @@ -3873,7 +3886,10 @@ ORDER BY V.PATH2 SRM.AREA_CD, (SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.AREA_CD) AS AREA_CD_NAME, SRM.CUSTOMER_OBJID, - (SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID::VARCHAR = SRM.CUSTOMER_OBJID) AS CUSTOMER_NAME, + CASE + WHEN SRM.CUSTOMER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG WHERE 'C_' || OBJID::VARCHAR = SRM.CUSTOMER_OBJID) + ELSE (SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID::VARCHAR = SRM.CUSTOMER_OBJID) + END AS CUSTOMER_NAME, SRM.PAID_TYPE, (CASE WHEN SRM.PAID_TYPE = 'paid' THEN '유상' WHEN SRM.PAID_TYPE = 'free' THEN '무상' ELSE SRM.PAID_TYPE END) AS PAID_TYPE_NAME, SRM.STATUS, diff --git a/src/com/pms/salesmgmt/mapper/contractMgmt.xml b/src/com/pms/salesmgmt/mapper/contractMgmt.xml index aac84a8..91a4a64 100644 --- a/src/com/pms/salesmgmt/mapper/contractMgmt.xml +++ b/src/com/pms/salesmgmt/mapper/contractMgmt.xml @@ -427,7 +427,42 @@ ,CATEGORY_CD ,CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME ,CUSTOMER_OBJID - ,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN + (SELECT CLIENT_NM FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) + ELSE + (SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID::VARCHAR) + END AS CUSTOMER_NAME + + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN + (SELECT CLIENT_CD FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) + ELSE NULL + END AS CLIENT_CD + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN + (SELECT BUS_REG_NO FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) + ELSE NULL + END AS CLIENT_BUS_REG_NO + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN + (SELECT CEO_NM FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) + ELSE NULL + END AS CLIENT_CEO_NM + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN + (SELECT TEL_NO FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) + ELSE NULL + END AS CLIENT_TEL_NO + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN + (SELECT EMAIL FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) + ELSE NULL + END AS CLIENT_EMAIL + ,CASE + WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN 'CLIENT' + ELSE 'SUPPLY' + END AS CUSTOMER_TYPE ,PRODUCT ,CODE_NAME(PRODUCT) AS PRODUCT_NAME ,CUSTOMER_PROJECT_NAME @@ -1625,13 +1660,16 @@