Compare commits
2 Commits
V202601270
...
V202512190
| Author | SHA1 | Date | |
|---|---|---|---|
| b63bf68f4e | |||
| aa51e3668f |
@@ -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,
|
||||
<if test="proposalDate != null">
|
||||
PROPOSAL_DATE,
|
||||
</if>
|
||||
@@ -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},
|
||||
<if test="proposalDate != null">
|
||||
#{proposalDate},
|
||||
</if>
|
||||
@@ -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}
|
||||
</delete>
|
||||
|
||||
<!-- M-BOM 변경이력 목록 조회 (MBOM_HISTORY 기준) -->
|
||||
<select id="getMbomHistoryGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
||||
SELECT
|
||||
MH.OBJID AS HISTORY_OBJID,
|
||||
MH.MBOM_HEADER_OBJID,
|
||||
MH.CHANGE_TYPE,
|
||||
--TO_CHAR(MH.CHANGE_DATE, 'YYYY-MM-DD HH24:MI:SS') AS CHANGE_DATE,
|
||||
TO_CHAR(MH.CHANGE_DATE, 'YYYY-MM-DD') AS CHANGE_DATE,
|
||||
MH.CHANGE_USER,
|
||||
COALESCE(
|
||||
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = MH.CHANGE_USER LIMIT 1),
|
||||
MH.CHANGE_USER
|
||||
) AS CHANGE_USER_NAME,
|
||||
PM.OBJID AS PROJECT_OBJID,
|
||||
PM.PROJECT_NO,
|
||||
PM.PART_NO,
|
||||
PM.PART_NAME,
|
||||
COALESCE(PM.QUANTITY::numeric, 0) AS QUANTITY,
|
||||
COALESCE(PM.DUE_DATE, CM.REQ_DEL_DATE) AS REQ_DEL_DATE,
|
||||
CM.OBJID AS CONTRACT_OBJID,
|
||||
COALESCE((SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = CM.CATEGORY_CD LIMIT 1), '') AS CATEGORY_NAME,
|
||||
COALESCE((SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = CM.PRODUCT LIMIT 1), '') AS PRODUCT_NAME,
|
||||
COALESCE((SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = CM.AREA_CD LIMIT 1), '') AS AREA_NAME,
|
||||
TO_CHAR(PM.REGDATE, 'YYYY-MM-DD') AS RECEIPT_DATE,
|
||||
COALESCE(
|
||||
CASE WHEN CM.CUSTOMER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = CM.CUSTOMER_OBJID LIMIT 1) ELSE (SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID::VARCHAR = CM.CUSTOMER_OBJID::VARCHAR LIMIT 1) END,
|
||||
''
|
||||
) AS CUSTOMER_NAME,
|
||||
COALESCE(
|
||||
(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = CM.PAID_TYPE LIMIT 1),
|
||||
CASE
|
||||
WHEN CM.PAID_TYPE = 'paid' THEN '유상'
|
||||
WHEN CM.PAID_TYPE = 'free' THEN '무상'
|
||||
ELSE ''
|
||||
END
|
||||
) AS PAID_TYPE_NAME,
|
||||
COALESCE(CI.CUSTOMER_REQUEST, '') AS CUSTOMER_REQUEST
|
||||
FROM MBOM_HISTORY MH
|
||||
INNER JOIN MBOM_HEADER MHD ON MH.MBOM_HEADER_OBJID = MHD.OBJID
|
||||
INNER JOIN PROJECT_MGMT PM ON MHD.PROJECT_OBJID = PM.OBJID::VARCHAR
|
||||
LEFT OUTER JOIN CONTRACT_ITEM CI ON PM.CONTRACT_OBJID = CI.CONTRACT_OBJID
|
||||
LEFT JOIN CONTRACT_MGMT CM ON PM.CONTRACT_OBJID = CM.OBJID
|
||||
WHERE 1=1
|
||||
<if test="search_category_cd != null and search_category_cd != ''">
|
||||
AND CM.CATEGORY_CD = #{search_category_cd}
|
||||
</if>
|
||||
<if test="search_product_cd != null and search_product_cd != ''">
|
||||
AND CM.PRODUCT = #{search_product_cd}
|
||||
</if>
|
||||
<if test="search_area_cd != null and search_area_cd != ''">
|
||||
AND CM.AREA_CD = #{search_area_cd}
|
||||
</if>
|
||||
<if test="search_customer_objid != null and search_customer_objid != ''">
|
||||
AND CM.CUSTOMER_OBJID = #{search_customer_objid}
|
||||
</if>
|
||||
<if test="search_change_date_from != null and search_change_date_from != ''">
|
||||
AND MH.CHANGE_DATE >= TO_DATE(#{search_change_date_from}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="search_change_date_to != null and search_change_date_to != ''">
|
||||
AND MH.CHANGE_DATE <= TO_DATE(#{search_change_date_to}, 'YYYY-MM-DD') + INTERVAL '1 day'
|
||||
</if>
|
||||
ORDER BY MH.CHANGE_DATE DESC
|
||||
</select>
|
||||
|
||||
<!-- M-BOM 변경이력 상세 조회 (개별 히스토리 건) -->
|
||||
<select id="getMbomHistoryDetail" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
||||
SELECT
|
||||
MH.OBJID AS HISTORY_OBJID,
|
||||
MH.MBOM_HEADER_OBJID,
|
||||
MH.CHANGE_TYPE,
|
||||
MH.CHANGE_DESCRIPTION,
|
||||
MH.BEFORE_DATA::TEXT AS BEFORE_DATA,
|
||||
MH.AFTER_DATA::TEXT AS AFTER_DATA,
|
||||
TO_CHAR(MH.CHANGE_DATE, 'YYYY-MM-DD HH24:MI:SS') AS CHANGE_DATE,
|
||||
MH.CHANGE_USER,
|
||||
COALESCE(
|
||||
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = MH.CHANGE_USER LIMIT 1),
|
||||
MH.CHANGE_USER
|
||||
) AS CHANGE_USER_NAME,
|
||||
-- PROJECT 정보
|
||||
PM.PROJECT_NO,
|
||||
PM.PART_NO,
|
||||
PM.PART_NAME
|
||||
FROM MBOM_HISTORY MH
|
||||
INNER JOIN MBOM_HEADER MHD ON MH.MBOM_HEADER_OBJID = MHD.OBJID
|
||||
INNER JOIN PROJECT_MGMT PM ON MHD.PROJECT_OBJID = PM.OBJID::VARCHAR
|
||||
WHERE MH.OBJID::VARCHAR = #{historyObjId}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -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')
|
||||
<!-- 230907 outer join으로 변경
|
||||
,PROJECT_MGMT AS CM
|
||||
WHERE POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
||||
@@ -4246,6 +4251,7 @@ SELECT T.*
|
||||
|
||||
<select id="deliveryMngList_new" parameterType="map" resultType="map">
|
||||
SELECT POM.OBJID
|
||||
,POM.STATUS
|
||||
<!-- ,TO_CHAR(CM.REGDATE, 'YYYY') AS CM_YEAR -->
|
||||
,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
|
||||
</select>
|
||||
|
||||
<!-- 발주 취소를 위한 입고 수량 조회 (ARRIVAL_PLAN 테이블) -->
|
||||
<select id="getTotalReceiptQtyForCancel" parameterType="map" resultType="map">
|
||||
SELECT
|
||||
COALESCE(SUM(
|
||||
CASE
|
||||
WHEN AP.RECEIPT_QTY IS NULL OR AP.RECEIPT_QTY = '' THEN 0
|
||||
ELSE AP.RECEIPT_QTY::NUMERIC
|
||||
END
|
||||
), 0) AS TOTAL_RECEIPT_QTY
|
||||
FROM ARRIVAL_PLAN AP
|
||||
WHERE AP.PARENT_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
||||
</select>
|
||||
|
||||
<!-- 발주 취소 상태 업데이트 -->
|
||||
<update id="updateOrderCancelStatus" parameterType="map">
|
||||
UPDATE PURCHASE_ORDER_MASTER
|
||||
SET STATUS = #{STATUS}
|
||||
WHERE OBJID = #{OBJID}
|
||||
</update>
|
||||
|
||||
<!-- 동시발주 하위건 발주 취소 상태 업데이트 -->
|
||||
<update id="updateOrderCancelStatusMulti" parameterType="map">
|
||||
UPDATE PURCHASE_ORDER_MASTER
|
||||
SET STATUS = #{STATUS}
|
||||
WHERE MULTI_MASTER_OBJID = #{OBJID}
|
||||
</update>
|
||||
|
||||
<!-- =====================================================
|
||||
품목별 입고 관리 리스트 조회
|
||||
===================================================== -->
|
||||
<select id="deliveryMngPartList" parameterType="map" resultType="map">
|
||||
SELECT
|
||||
POP.OBJID AS PURCHASE_ORDER_PART_OBJID
|
||||
,POM.OBJID AS PURCHASE_ORDER_MASTER_OBJID
|
||||
,POM.STATUS
|
||||
,COALESCE(POM.FORM_TYPE, '') AS FORM_TYPE
|
||||
|
||||
<!-- 품의서 정보 -->
|
||||
,POM.SALES_REQUEST_OBJID
|
||||
,(SELECT REQUEST_MNG_NO FROM SALES_REQUEST_MASTER SRM
|
||||
WHERE SRM.OBJID::VARCHAR = POM.SALES_REQUEST_OBJID
|
||||
AND SRM.DOC_TYPE IN ('PROPOSAL', 'PURCHASE_REG_PROPOSAL')) AS PROPOSAL_NO
|
||||
|
||||
<!-- 발주서 정보 -->
|
||||
,POM.PURCHASE_ORDER_NO
|
||||
,CM.PROJECT_NO
|
||||
|
||||
<!-- 품목 정보 -->
|
||||
,POP.PART_NO
|
||||
,POP.PART_NAME
|
||||
|
||||
<!-- 공급업체 -->
|
||||
,(SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME
|
||||
|
||||
<!-- 발주수량 -->
|
||||
,COALESCE(POP.ORDER_QTY::NUMERIC, 0) AS ORDER_QTY
|
||||
|
||||
<!-- 입고수량 (ARRIVAL_PLAN에서 합계) -->
|
||||
,COALESCE(AP_AGG.DELIVERY_QTY, 0) AS DELIVERY_QTY
|
||||
|
||||
<!-- 미입고수량 = 발주수량 - 입고수량 -->
|
||||
,(COALESCE(POP.ORDER_QTY::NUMERIC, 0) - COALESCE(AP_AGG.DELIVERY_QTY, 0)) AS NON_DELIVERY_QTY
|
||||
|
||||
<!-- 수입검사 검사현황 (품목별: INVENTORY_MGMT_IN → INVENTORY_MGMT → PART_MNG 연결) -->
|
||||
,(CASE
|
||||
WHEN IID_AGG.TOTAL_COUNT > 0 AND IID_AGG.TOTAL_COUNT = IID_AGG.COMPLETED_COUNT THEN '완료'
|
||||
WHEN IID_AGG.COMPLETED_COUNT > 0 THEN '진행중'
|
||||
ELSE ''
|
||||
END) AS INSPECTION_STATUS
|
||||
|
||||
<!-- 반품 처리결과 폐기수량 (품목별) -->
|
||||
,COALESCE(DEFECT_AGG.DEFECT_QTY, 0) AS DEFECT_QTY
|
||||
|
||||
<!-- 매입마감수량 확정입고수량 = 입고수량 - 폐기수량 -->
|
||||
,(COALESCE(AP_AGG.DELIVERY_QTY, 0) - COALESCE(DEFECT_AGG.DEFECT_QTY, 0)) AS CONFIRMED_QTY
|
||||
|
||||
<!-- 매입마감일 -->
|
||||
,POM.PURCHASE_CLOSE_DATE
|
||||
|
||||
<!-- 입고결과 -->
|
||||
,(CASE
|
||||
WHEN COALESCE(POP.ORDER_QTY::NUMERIC, 0) - COALESCE(AP_AGG.DELIVERY_QTY, 0) <![CDATA[ <= ]]> 0 THEN '입고완료'
|
||||
WHEN TO_CHAR(NOW(),'YYYY-MM-DD') <![CDATA[ > ]]> POM.DELIVERY_DATE THEN '지연'
|
||||
ELSE '입고중'
|
||||
END) AS DELIVERY_STATUS
|
||||
|
||||
FROM PURCHASE_ORDER_PART POP
|
||||
INNER JOIN PURCHASE_ORDER_MASTER POM ON POM.OBJID::VARCHAR = POP.PURCHASE_ORDER_MASTER_OBJID
|
||||
LEFT OUTER JOIN PROJECT_MGMT CM ON POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
||||
|
||||
<!-- 입고 수량 집계 (ARRIVAL_PLAN) -->
|
||||
LEFT OUTER JOIN (
|
||||
SELECT ORDER_PART_OBJID
|
||||
,SUM(COALESCE(RECEIPT_QTY::NUMERIC, 0)) AS DELIVERY_QTY
|
||||
FROM ARRIVAL_PLAN
|
||||
GROUP BY ORDER_PART_OBJID
|
||||
) AP_AGG ON POP.OBJID = AP_AGG.ORDER_PART_OBJID
|
||||
|
||||
<!-- 수입검사 현황 집계 (발주마스터+품목 기준: 불량상세가 있는 건만 카운트) -->
|
||||
LEFT OUTER JOIN (
|
||||
SELECT IMI.PURCHASE_ORDER_MASTER_OBJID
|
||||
,IM.PART_OBJID
|
||||
,COUNT(IDF.OBJID) AS TOTAL_COUNT /* 불량상세가 있는 건수 */
|
||||
,COUNT(CASE WHEN IDF.ACTION_RESULT IS NOT NULL AND IDF.ACTION_RESULT != '' THEN 1 END) AS COMPLETED_COUNT
|
||||
FROM INCOMING_INSPECTION_DETAIL IID
|
||||
INNER JOIN INVENTORY_MGMT_IN IMI ON IMI.OBJID = IID.INVENTORY_IN_OBJID
|
||||
INNER JOIN INVENTORY_MGMT IM ON IM.OBJID = IMI.PARENT_OBJID
|
||||
LEFT JOIN INCOMING_INSPECTION_DEFECT IDF ON IDF.INSPECTION_DETAIL_OBJID = IID.OBJID
|
||||
WHERE IMI.PURCHASE_ORDER_MASTER_OBJID IS NOT NULL
|
||||
GROUP BY IMI.PURCHASE_ORDER_MASTER_OBJID, IM.PART_OBJID
|
||||
) IID_AGG ON POM.OBJID::VARCHAR = IID_AGG.PURCHASE_ORDER_MASTER_OBJID
|
||||
AND POP.PART_OBJID = IID_AGG.PART_OBJID
|
||||
|
||||
<!-- 폐기수량 집계 (발주마스터+품목 기준) -->
|
||||
LEFT OUTER JOIN (
|
||||
SELECT IMI.PURCHASE_ORDER_MASTER_OBJID
|
||||
,IM.PART_OBJID
|
||||
,SUM(COALESCE(NULLIF(IDF.DEFECT_QTY, '')::NUMERIC, 0)) AS DEFECT_QTY
|
||||
FROM INCOMING_INSPECTION_DETAIL IID
|
||||
INNER JOIN INVENTORY_MGMT_IN IMI ON IMI.OBJID = IID.INVENTORY_IN_OBJID
|
||||
INNER JOIN INVENTORY_MGMT IM ON IM.OBJID = IMI.PARENT_OBJID
|
||||
LEFT JOIN INCOMING_INSPECTION_DEFECT IDF ON IDF.INSPECTION_DETAIL_OBJID = IID.OBJID
|
||||
WHERE IMI.PURCHASE_ORDER_MASTER_OBJID IS NOT NULL
|
||||
AND IDF.ACTION_RESULT IN ('폐기', 'SCRAP')
|
||||
GROUP BY IMI.PURCHASE_ORDER_MASTER_OBJID, IM.PART_OBJID
|
||||
) DEFECT_AGG ON POM.OBJID::VARCHAR = DEFECT_AGG.PURCHASE_ORDER_MASTER_OBJID
|
||||
AND POP.PART_OBJID = DEFECT_AGG.PART_OBJID
|
||||
|
||||
WHERE 1=1
|
||||
AND POM.MAIL_SEND_DATE IS NOT NULL
|
||||
AND pom.status = 'create'
|
||||
AND (POM.MULTI_MASTER_YN = 'Y' OR NVL(POM.MULTI_MASTER_YN, '') != 'Y' AND NVL(POM.MULTI_YN, '') != 'Y')
|
||||
|
||||
<if test="Year != null and Year != ''">
|
||||
AND TO_CHAR(POM.REGDATE, 'YYYY') = #{Year}
|
||||
</if>
|
||||
<if test="customer_cd != null and customer_cd != ''">
|
||||
AND CM.CUSTOMER_OBJID = REPLACE(#{customer_cd}, 'C_', '')
|
||||
</if>
|
||||
<if test="project_nos != null and project_nos != ''">
|
||||
AND CM.OBJID IN
|
||||
<foreach item="state" collection="project_nos.split(',')" open="(" separator="," close=")">
|
||||
#{state}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="purchase_order_no != null and purchase_order_no != ''">
|
||||
AND TRIM(UPPER(POM.PURCHASE_ORDER_NO)) LIKE '%'||TRIM(UPPER(#{purchase_order_no}))||'%'
|
||||
</if>
|
||||
<if test="delivery_start_date != null and delivery_start_date != ''">
|
||||
AND TO_DATE(POM.DELIVERY_DATE, 'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{delivery_start_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="delivery_end_date != null and delivery_end_date != ''">
|
||||
AND TO_DATE(POM.DELIVERY_DATE, 'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{delivery_end_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="partner_objid != null and partner_objid != ''">
|
||||
AND POM.PARTNER_OBJID = REPLACE(#{partner_objid}, 'C_', '')
|
||||
</if>
|
||||
<if test="sales_mng_user_ids != null and sales_mng_user_ids != ''">
|
||||
AND POM.SALES_MNG_USER_ID IN
|
||||
<foreach item="value" collection="sales_mng_user_ids.split(',')" open="(" separator="," close=")">
|
||||
#{value}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="reg_start_date != null and reg_start_date != ''">
|
||||
AND TO_DATE(TO_CHAR(POM.REGDATE,'YYYY-MM-DD'), 'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{reg_start_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="reg_end_date != null and reg_end_date != ''">
|
||||
AND TO_DATE(TO_CHAR(POM.REGDATE,'YYYY-MM-DD'), 'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{reg_end_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="delivery_status != null and delivery_status != ''">
|
||||
AND (CASE
|
||||
WHEN COALESCE(POP.ORDER_QTY::NUMERIC, 0) - COALESCE(AP_AGG.DELIVERY_QTY, 0) <![CDATA[ <= ]]> 0 THEN '입고완료'
|
||||
WHEN TO_CHAR(NOW(),'YYYY-MM-DD') <![CDATA[ > ]]> POM.DELIVERY_DATE THEN '지연'
|
||||
ELSE '입고중'
|
||||
END) = #{delivery_status}
|
||||
</if>
|
||||
<if test="SEARCH_PART_NO != null and SEARCH_PART_NO != ''">
|
||||
AND TRIM(UPPER(POP.PART_NO)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NO}))||'%'
|
||||
</if>
|
||||
<if test="SEARCH_PART_NAME != null and SEARCH_PART_NAME != ''">
|
||||
AND TRIM(UPPER(POP.PART_NAME)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NAME}))||'%'
|
||||
</if>
|
||||
<if test="SEARCH_PART_SPEC != null and SEARCH_PART_SPEC != ''">
|
||||
AND TRIM(UPPER(POP.SPEC)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_SPEC}))||'%'
|
||||
</if>
|
||||
ORDER BY POM.REGDATE DESC, POP.OBJID
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -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}
|
||||
</if>
|
||||
/* 진행공정 */
|
||||
<if test="search_process_cd != null and search_process_cd != ''">
|
||||
AND EXISTS (SELECT 1 FROM PROCESS_INSPECTION_DETAIL PID
|
||||
WHERE PID.MASTER_OBJID = PIM.OBJID
|
||||
AND PID.PROCESS_CD = #{search_process_cd})
|
||||
</if>
|
||||
ORDER BY PIM.REG_DATE DESC
|
||||
</select>
|
||||
|
||||
@@ -1411,6 +1417,10 @@
|
||||
<if test="search_inspection_result != null and search_inspection_result != ''">
|
||||
AND PID.INSPECTION_RESULT = #{search_inspection_result}
|
||||
</if>
|
||||
/* 진행공정 */
|
||||
<if test="search_process_cd != null and search_process_cd != ''">
|
||||
AND PID.PROCESS_CD = #{search_process_cd}
|
||||
</if>
|
||||
ORDER BY PIM.INSPECTION_DATE DESC, PIM.REG_DATE DESC, PID.REG_DATE
|
||||
</select>
|
||||
|
||||
@@ -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 @@
|
||||
<if test="search_writer != null and search_writer != ''">
|
||||
AND SPI.WRITER = #{search_writer}
|
||||
</if>
|
||||
<!-- 불량유형 검색 -->
|
||||
<if test="search_defect_type != null and search_defect_type != ''">
|
||||
AND UPPER(SPI.DEFECT_TYPE) LIKE UPPER('%' || #{search_defect_type} || '%')
|
||||
</if>
|
||||
<!-- 귀책부서 검색 -->
|
||||
<if test="search_responsible_dept != null and search_responsible_dept != ''">
|
||||
AND UPPER(SPI.RESPONSIBLE_DEPT) LIKE UPPER('%' || #{search_responsible_dept} || '%')
|
||||
</if>
|
||||
) 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>
|
||||
|
||||
<!-- 반제품검사 불량유형 드롭박스 목록 (CODE, NAME 형태) -->
|
||||
<select id="getSemiProductDefectTypeList" parameterType="map" resultType="map">
|
||||
SELECT DISTINCT SPI.DEFECT_TYPE AS CODE
|
||||
, SPI.DEFECT_TYPE AS NAME
|
||||
FROM PMS_QUALITY_SEMI_PRODUCT_INSPECTION SPI
|
||||
WHERE SPI.DEFECT_TYPE IS NOT NULL AND SPI.DEFECT_TYPE != ''
|
||||
ORDER BY NAME
|
||||
</select>
|
||||
|
||||
<!-- 반제품검사 귀책부서 드롭박스 목록 (CODE, NAME 형태) -->
|
||||
<select id="getSemiProductResponsibleDeptList" parameterType="map" resultType="map">
|
||||
SELECT DISTINCT SPI.RESPONSIBLE_DEPT AS CODE
|
||||
, SPI.RESPONSIBLE_DEPT AS NAME
|
||||
FROM PMS_QUALITY_SEMI_PRODUCT_INSPECTION SPI
|
||||
WHERE SPI.RESPONSIBLE_DEPT IS NOT NULL AND SPI.RESPONSIBLE_DEPT != ''
|
||||
ORDER BY NAME
|
||||
</select>
|
||||
|
||||
<!-- 반제품검사 상세 조회 -->
|
||||
<select id="getSemiProductInspectionInfo" parameterType="map" resultType="map">
|
||||
SELECT SPI.OBJID
|
||||
@@ -1902,11 +1938,15 @@
|
||||
, CODE_NAME(CCS.ACTION_TYPE) AS ACTION_TYPE_NAME
|
||||
, CCS.ACTION_CONTENT
|
||||
, CCS.BLAME_DECISION
|
||||
, CASE CCS.BLAME_DECISION WHEN 'R' THEN 'RPS' WHEN 'C' THEN '고객사' WHEN 'O' THEN '외주업체' ELSE CCS.BLAME_DECISION END AS BLAME_DECISION_NAME
|
||||
, CASE CCS.BLAME_DECISION WHEN 'R' THEN 'RPS' WHEN 'C' THEN '고객사' WHEN 'O' THEN '외주업체' WHEN 'E' THEN '단순문의' ELSE CCS.BLAME_DECISION END AS BLAME_DECISION_NAME
|
||||
, CCS.STATUS
|
||||
, CCS.REMARK
|
||||
, CCS.ACTION_DATE
|
||||
, CCS.ACTION_USER_ID
|
||||
, CCS.WRITER
|
||||
, USER_NAME(CCS.WRITER) as WRITER_NAME
|
||||
, CCS.RECEIPT_USER_ID
|
||||
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.RECEIPT_USER_ID) AS RECEIPT_USER_NAME
|
||||
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.ACTION_USER_ID) AS ACTION_USER_NAME
|
||||
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = CCS.OBJID AND AFI.DOC_TYPE = 'CUSTOMER_CS_IMAGE' AND STATUS = 'Active') AS IMAGE_FILE
|
||||
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = CCS.OBJID AND AFI.DOC_TYPE = 'CUSTOMER_CS_ACTION' AND STATUS = 'Active') AS ATTACH_FILE
|
||||
@@ -1994,14 +2034,21 @@
|
||||
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.ACTION_USER_ID) AS ACTION_USER_NAME
|
||||
, CCS.ATTACH_FILE_OBJID
|
||||
, CCS.WRITER
|
||||
, USER_NAME(CCS.WRITER) AS WRITER_NAME
|
||||
, CCS.RECEIPT_USER_ID
|
||||
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.RECEIPT_USER_ID) AS RECEIPT_USER_NAME
|
||||
, TO_CHAR(CCS.REG_DATE, 'YYYY-MM-DD') AS REG_DATE
|
||||
FROM CUSTOMER_CS CCS
|
||||
WHERE CCS.OBJID = #{OBJID}
|
||||
</select>
|
||||
|
||||
<!-- 고객 CS 시퀀스 조회 -->
|
||||
<select id="getCustomerCsSeq" resultType="int">
|
||||
SELECT NEXTVAL('SEQ_CUSTOMER_CS_RECEIPT_NO')
|
||||
<!-- 고객 CS 날짜별 순번 조회 (해당 날짜의 다음 순번 반환) -->
|
||||
<select id="getCustomerCsSeqByDate" parameterType="map" resultType="int">
|
||||
SELECT COALESCE(MAX(
|
||||
CAST(SPLIT_PART(RECEIPT_NO, '-', 3) AS INTEGER)
|
||||
), 0) + 1
|
||||
FROM CUSTOMER_CS
|
||||
WHERE RECEIPT_NO LIKE 'CS-' || #{TARGET_DATE} || '-%'
|
||||
</select>
|
||||
|
||||
<!-- 고객 CS 등록 -->
|
||||
@@ -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()
|
||||
)
|
||||
</insert>
|
||||
@@ -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}
|
||||
</update>
|
||||
@@ -2085,6 +2135,18 @@
|
||||
WHERE OBJID = #{OBJID}
|
||||
</update>
|
||||
|
||||
<!-- 고객 CS 삭제 -->
|
||||
<delete id="deleteCustomerCs" parameterType="map">
|
||||
DELETE FROM CUSTOMER_CS WHERE OBJID = #{OBJID}
|
||||
</delete>
|
||||
|
||||
<!-- 고객 CS 첨부파일 삭제 (이미지, 조치첨부) -->
|
||||
<delete id="deleteCustomerCsAttachFiles" parameterType="map">
|
||||
DELETE FROM ATTACH_FILE_INFO
|
||||
WHERE TARGET_OBJID = #{OBJID}
|
||||
AND DOC_TYPE IN ('CUSTOMER_CS_IMAGE', 'CUSTOMER_CS_ACTION')
|
||||
</delete>
|
||||
|
||||
<!-- =====================================================
|
||||
ECR 관리
|
||||
===================================================== -->
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -317,7 +317,7 @@ function fn_purchaseClose(){
|
||||
</h2>
|
||||
<div class="btnArea">
|
||||
<input type="button" class="plm_btns" value="조회" id="btnSearch">
|
||||
<input type="button" class="plm_btns" value="입고등록" id="btnAccept">
|
||||
<!-- <input type="button" class="plm_btns" value="입고등록" id="btnAccept"> -->
|
||||
<input type="button" class="plm_btns" value="매입마감" id="btnClose">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user