SELECT A.*, ROW_NUMBER() OVER (ORDER BY REGDATE_ORG DESC) RNUM
FROM(
SELECT A.*
FROM(
SELECT A.OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID)) AS OEM_NAME
, A.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, (SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS MODEL_CODE
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID)) AS PROD_GROUP_NAME
, A.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, A.TEST_TYPE_OBJID
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = A.TEST_TYPE_OBJID) AS TEST_TYPE_NAME
, A.STEP1
, A.STEP2
, A.WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_USER_NAME
, A.REGDATE AS REGDATE_ORG
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS REGDATE
, A.STATUS
FROM PMS_QUALITY_TEST_INFO A
WHERE 1=1
AND UPPER(STATUS) = 'CREATE'
)A WHERE 1=1
<iftest="search_oem !=null and search_oem !=''">
AND OEM_OBJID = #{search_oem}
</if>
<iftest="search_productGroup != null and search_productGroup !=''">
AND PROD_GROUP_OBJID = #{search_productGroup}
</if>
<iftest="search_carType != null and search_carType != ''">
AND CAR_OBJID = #{search_carType}
</if>
<iftest="search_productType != null and search_productType !=''">
AND PROD_OBJID = #{search_productType}
</if>
<iftest="search_writer != null and !''.equals(search_writer)">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
<iftest="search_status !=null and search_status !='' ">
AND STATUS = #{search_status}
</if>
<iftest="search_testType !=null and search_testType !='' ">
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID)) AS OEM_NAME
, A.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, (SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS MODEL_CODE
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID)) AS PROD_GROUP_NAME
, A.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, A.TEST_TYPE_OBJID
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = A.TEST_TYPE_OBJID) AS TEST_TYPE_NAME
, A.STEP1
, A.STEP2
, A.WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_USER_NAME
, A.REGDATE AS REGDATE_ORG
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS REGDATE
, A.STATUS
FROM PMS_QUALITY_TEST_INFO A
WHERE 1=1
AND UPPER(STATUS) = 'CREATE'
)A WHERE 1=1
<iftest="search_oem !=null and search_oem !=''">
AND OEM_OBJID = #{search_oem}
</if>
<iftest="search_productGroup != null and search_productGroup !=''">
AND PROD_GROUP_OBJID = #{search_productGroup}
</if>
<iftest="search_carType != null and search_carType != ''">
AND CAR_OBJID = #{search_carType}
</if>
<iftest="search_productType != null and search_productType !=''">
AND PROD_OBJID = #{search_productType}
</if>
<iftest="search_resDeptName != null and !''.equals(search_resDeptName)">
AND UPPER(RES_PIC_DEPT_NAME) LIKE UPPER('%${search_resDeptName}%')
</if>
<iftest="search_status !=null and search_status !='' ">
AND STATUS = #{search_status}
</if>
<iftest="search_testType !=null and search_testType !='' ">
SELECT A.*, ROW_NUMBER() OVER (ORDER BY REGDATE_ORG DESC) RNUM
FROM(
SELECT A.*
FROM(
SELECT A.OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID)) AS OEM_NAME
, A.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, (SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS MODEL_CODE
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID)) AS PROD_GROUP_NAME
, A.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, A.TEST_TYPE_OBJID
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = A.TEST_TYPE_OBJID) AS TEST_TYPE_NAME
, A.STEP1
, A.STEP2
, A.WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_USER_NAME
, A.REGDATE AS REGDATE_ORG
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS REGDATE
, A.STATUS
, (SELECT COUNT(WBS_TASK.OBJID) AS TASK_CNT FROM PMS_WBS_TASK WBS_TASK,PMS_REL_WBS_TASK_FNC_TASK REL WHERE REL.TARGET_OBJID = WBS_TASK.OBJID AND REL.SUB_OBJID = A.OBJID) AS REL_TASK_CNT
FROM PMS_QUALITY_TEST_INFO A
WHERE 1=1
AND UPPER(STATUS) = 'COMPLETE'
)A WHERE 1=1
<iftest="search_oem !=null and search_oem !=''">
AND OEM_OBJID = #{search_oem}
</if>
<iftest="search_productGroup != null and search_productGroup !=''">
AND PROD_GROUP_OBJID = #{search_productGroup}
</if>
<iftest="search_carType != null and search_carType != ''">
AND CAR_OBJID = #{search_carType}
</if>
<iftest="search_productType != null and search_productType !=''">
AND PROD_OBJID = #{search_productType}
</if>
<iftest="search_writer != null and !''.equals(search_writer)">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
<iftest="search_status !=null and search_status !='' ">
AND STATUS = #{search_status}
</if>
<iftest="search_testType !=null and search_testType !='' ">
AND TEST_TYPE_OBJID = #{search_testType}
</if>
<iftest="step1 !=null and step1 !='' ">
AND STEP1 = #{step1}
</if>
<iftest="step2 !=null and step2 !='' ">
AND STEP2 = #{step2}
</if>
<iftest="search_fromMonthRegDate != null and search_fromMonthRegDate !='' ">
AND TO_DATE(TO_CHAR(A.REGDATE, 'YYYY-MM'),'YYYY-MM') <![CDATA[ >= ]]> TO_DATE(#{search_fromMonthRegDate},'YYYY-MM')
</if>
<iftest="search_toMonthRegDate != null and search_toMonthRegDate !='' ">
AND TO_DATE(TO_CHAR(A.REGDATE, 'YYYY-MM'),'YYYY-MM') <![CDATA[ <= ]]> TO_DATE(#{search_toMonthRegDate},'YYYY-MM')
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID)) AS OEM_NAME
, A.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, (SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS MODEL_CODE
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID)) AS PROD_GROUP_NAME
, A.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, A.TEST_TYPE_OBJID
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = A.TEST_TYPE_OBJID) AS TEST_TYPE_NAME
, A.STEP1
, A.STEP2
, A.WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_USER_NAME
, A.REGDATE AS REGDATE_ORG
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS REGDATE
, A.STATUS
FROM PMS_QUALITY_TEST_INFO A
WHERE 1=1
AND UPPER(STATUS) = 'COMPLETE'
)A WHERE 1=1
<iftest="search_oem !=null and search_oem !=''">
AND OEM_OBJID = #{search_oem}
</if>
<iftest="search_productGroup != null and search_productGroup !=''">
AND PROD_GROUP_OBJID = #{search_productGroup}
</if>
<iftest="search_carType != null and search_carType != ''">
AND CAR_OBJID = #{search_carType}
</if>
<iftest="search_productType != null and search_productType !=''">
AND PROD_OBJID = #{search_productType}
</if>
<iftest="search_writer != null and !''.equals(search_writer)">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%search_writer%')
</if>
<iftest="search_status !=null and search_status !='' ">
AND STATUS = #{search_status}
</if>
<iftest="search_testType !=null and search_testType !='' ">
AND TEST_TYPE_OBJID = #{search_testType}
</if>
<iftest="step1 !=null and step1 !='' ">
AND STEP1 = #{step1}
</if>
<iftest="step2 !=null and step2 !='' ">
AND STEP2 = #{step2}
</if>
<iftest="search_fromMonthRegDate != null and search_fromMonthRegDate !='' ">
AND TO_DATE(TO_CHAR(A.REGDATE, 'YYYY-MM'),'YYYY-MM') <![CDATA[ >= ]]> TO_DATE(#{search_fromMonthRegDate},'YYYY-MM')
</if>
<iftest="search_toMonthRegDate != null and search_toMonthRegDate !='' ">
AND TO_DATE(TO_CHAR(A.REGDATE, 'YYYY-MM'),'YYYY-MM') <![CDATA[ <= ]]> TO_DATE(#{search_toMonthRegDate},'YYYY-MM')
, (SELECT PART_NAME FROM PART_INFO WHERE PART_NO = S.PART_NO AND UPPER(STATUS) = 'COMPLETE' AND IS_LAST = 1) AS PART_NAME
, S.SEQ
<!--
, (SELECT RATE FROM (SELECT TARGET_OBJID, RATE, PART_NO FROM PMS_DEV_MASTER_REL_PART_INFO WHERE RATE IS NOT NULL ORDER BY DEV_POINT DESC) A, PMS_DEV_MASTER B WHERE A.TARGET_OBJID = B.OBJID AND B.TARGET_OBJID = M.OBJID AND A.PART_NO = S.PART_NO AND ROWNUM = 1) AS RATE
, (SELECT MOLD_MAKE_COMPANY FROM (SELECT TARGET_OBJID, MOLD_MAKE_COMPANY, PART_NO FROM PMS_DEV_MASTER_REL_PART_INFO WHERE MOLD_MAKE_COMPANY IS NOT NULL ORDER BY DEV_POINT DESC) A, PMS_DEV_MASTER B WHERE A.TARGET_OBJID = B.OBJID AND B.TARGET_OBJID = M.OBJID AND A.PART_NO = S.PART_NO AND ROWNUM = 1) AS MOLD_MAKE_COMPANY
-->
, (SELECT RATE FROM (SELECT B.RATE, B.PART_NO FROM PMS_DEV_MASTER A, PMS_DEV_MASTER_REL_PART_INFO B WHERE A.OBJID = B.TARGET_OBJID AND B.RATE IS NOT NULL ORDER BY DEV_POINT DESC) A WHERE A.PART_NO = S.PART_NO AND ROWNUM = 1) AS RATE
, (SELECT MOLD_MAKE_COMPANY FROM (SELECT B.MOLD_MAKE_COMPANY, B.PART_NO FROM PMS_DEV_MASTER A, PMS_DEV_MASTER_REL_PART_INFO B WHERE A.OBJID = B.TARGET_OBJID AND B.MOLD_MAKE_COMPANY IS NOT NULL ORDER BY DEV_POINT DESC) A WHERE A.PART_NO = S.PART_NO AND ROWNUM = 1) AS MOLD_MAKE_COMPANY
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO = S.PART_NO AND UNMANAGE_TYPE IS NULL) PROBLEM_CNT
FROM PMS_PART_MASTER M, PMS_PART_MASTER_CONNECT_PART S
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = CAR_OBJID)) AS OEM_NAME
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS OEM_OBJID
, CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_CODE
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID)) AS PRODUCT_GROUP_NAME
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID) AS PROD_GROUP_OBJID
, PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID) AS PRODUCT_NAME
, TEST_TYPE_OBJID
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = TEST_TYPE_OBJID) AS TEST_TYPE_NAME
WHEN COUNT(*) > 1 THEN MIN(POP.PART_NO) || ' 외 ' || (COUNT(*) - 1) || '건'
ELSE MIN(POP.PART_NO)
END
FROM PURCHASE_ORDER_PART POP
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID::VARCHAR
) AS PART_NO
,(SELECT
CASE
WHEN COUNT(*) > 1 THEN MIN(POP.PART_NAME) || ' 외 ' || (COUNT(*) - 1) || '건'
ELSE MIN(POP.PART_NAME)
END
FROM PURCHASE_ORDER_PART POP
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID::VARCHAR
) AS PART_NAME
<!-- 공급업체 (CLIENT_MNG) -->
,POM.PARTNER_OBJID
,(SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME
<!-- 발주수량 -->
,(SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) AS TOTAL_PO_QTY
<!-- 입고수량/미입고수량 -->
,S1.TOTAL_DELIVERY_QTY
,((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - COALESCE(S1.TOTAL_DELIVERY_QTY, 0)) AS NON_DELIVERY_QTY
<!-- 입고상태 -->
,(CASE WHEN 0 <![CDATA[ >= ]]> ((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - COALESCE(S1.TOTAL_DELIVERY_QTY, 0)) THEN '입고완료'
WHEN TO_CHAR(NOW(),'YYYY-MM-DD') <![CDATA[ > ]]> POM.DELIVERY_DATE THEN '지연'
/* 검사여부: 검사가 하나라도 있으면 '검사', 모두 스킵이면 '스킵', 아무것도 없으면 빈값 */
,(CASE WHEN IID.INSPECTION_YN_COUNT > 0 THEN '검사'
WHEN IID.SKIP_YN_COUNT > 0 AND IID.INSPECTION_YN_COUNT = 0 THEN '스킵'
ELSE '' END) AS INSPECTION_YN
/* 요청현황: 입고내역 기준으로 검사여부 선택 현황 계산
미요청: 입고건이 있지만 전부 검사여부 미선택
요청중: 일부만 검사여부 선택됨
요청완료: 전부 검사여부 선택됨 */
,(CASE WHEN REQ.DELIVERY_TOTAL_COUNT IS NULL OR REQ.DELIVERY_TOTAL_COUNT = 0 THEN ''
WHEN REQ.SELECTED_COUNT = 0 THEN '미요청'
WHEN REQ.SELECTED_COUNT <![CDATA[ < ]]> REQ.DELIVERY_TOTAL_COUNT THEN '요청중'
ELSE '요청완료' END) AS REQUEST_STATUS
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO AF WHERE AF.TARGET_OBJID = POM.OBJID AND AF.DOC_TYPE = 'INSPECTION_FILE' AND UPPER(AF.STATUS) = 'ACTIVE') AS INSPECTION_FILE_CNT
AND (CASE WHEN 0 <![CDATA[ >= ]]> ((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - COALESCE(S1.TOTAL_DELIVERY_QTY, 0)) THEN '입고완료'
WHEN TO_CHAR(NOW(),'YYYY-MM-DD') <![CDATA[ > ]]> POM.DELIVERY_DATE THEN '지연'
(SELECT REQUEST_MNG_NO FROM SALES_REQUEST_MASTER WHERE OBJID::VARCHAR = POM.SALES_REQUEST_OBJID) AS PROPOSAL_NO
, POM.PURCHASE_ORDER_NO
, CM.PROJECT_NO
, PM.PART_NO
, PM.PART_NAME
, (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME
, (CASE WHEN 0 <![CDATA[ >= ]]> ((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - COALESCE(S1.TOTAL_DELIVERY_QTY, 0)) THEN '입고완료'
WHEN TO_CHAR(NOW(),'YYYY-MM-DD') <![CDATA[ > ]]> POM.DELIVERY_DATE THEN '지연'
ELSE '입고중'
END) AS DELIVERY_STATUS
/* 검사 등록 상세 정보 (입고내역 + 검사상세) */
, TO_CHAR(IMI.REGDATE, 'YYYY-MM-DD') AS DELIVERY_DATE
, IMI.RECEIPT_QTY AS DELIVERY_QTY
, IID.INSPECTION_TYPE
, COALESCE(IID.INSPECTION_YN, '검사') AS INSPECTION_YN
, (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = IID.DEFECT_TYPE) AS DEFECT_TYPE_NAME
, (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = IID.DEFECT_REASON) AS DEFECT_REASON_NAME
, IID.ACTION_STATUS
, IID.INSPECTION_QTY
, IID.DEFECT_QTY
, CASE WHEN NULLIF(IID.INSPECTION_QTY, '')::NUMERIC > 0
THEN ROUND((COALESCE(NULLIF(IID.DEFECT_QTY, '')::NUMERIC, 0) / NULLIF(IID.INSPECTION_QTY, '')::NUMERIC) * 100, 2)
ELSE NULL END AS DEFECT_RATE
, IID.INSPECTION_RESULT
, IID.REMARK
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = IID.INSPECTOR_ID) AS INSPECTOR_NAME
, IID.INSPECTION_DATE
FROM PURCHASE_ORDER_MASTER POM
LEFT OUTER JOIN PROJECT_MGMT CM ON POM.CONTRACT_MGMT_OBJID = CM.OBJID
LEFT OUTER JOIN (
SELECT POP.PURCHASE_ORDER_MASTER_OBJID
, SUM(POP.ORDER_QTY::NUMERIC) AS TOTAL_PO_QTY
, MAX(DH.RECEIPT_DATE) AS CUR_DELIVERY_DATE
, SUM(DH.RECEIPT_QTY::NUMERIC) AS TOTAL_DELIVERY_QTY
FROM PURCHASE_ORDER_PART POP
LEFT OUTER JOIN ARRIVAL_PLAN DH ON POP.OBJID = DH.ORDER_PART_OBJID
GROUP BY POP.PURCHASE_ORDER_MASTER_OBJID
) S1 ON POM.OBJID::VARCHAR = S1.PURCHASE_ORDER_MASTER_OBJID
/* 입고내역과 조인 (검사등록 팝업과 동일한 구조) */
LEFT OUTER JOIN INVENTORY_MGMT_IN IMI ON IMI.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID::VARCHAR
LEFT OUTER JOIN INVENTORY_MGMT IM ON IM.OBJID = IMI.PARENT_OBJID
LEFT OUTER JOIN PART_MNG PM ON PM.OBJID::VARCHAR = IM.PART_OBJID
LEFT OUTER JOIN INCOMING_INSPECTION_DETAIL IID ON IID.INVENTORY_IN_OBJID = IMI.OBJID
WHERE 1=1
AND POM.MAIL_SEND_DATE IS NOT NULL
AND (MULTI_MASTER_YN = 'Y' OR NVL(MULTI_MASTER_YN, '') != 'Y' AND NVL(MULTI_YN, '') != 'Y')
/* 입고된 건만 조회 (검사등록된 데이터) */
AND IMI.OBJID IS NOT NULL
<iftest="search_proposal_no != null and search_proposal_no != ''">
AND (SELECT REQUEST_MNG_NO FROM SALES_REQUEST_MASTER WHERE OBJID::VARCHAR = POM.SALES_REQUEST_OBJID) LIKE '%' || #{search_proposal_no} || '%'
</if>
<iftest="search_purchase_order_no != null and search_purchase_order_no != ''">
AND TRIM(UPPER(POM.PURCHASE_ORDER_NO)) LIKE '%' || TRIM(UPPER(#{search_purchase_order_no})) || '%'
</if>
<iftest="project_nos != null and project_nos != ''">
<iftest="search_part_no != null and search_part_no != ''">
AND TRIM(UPPER(PM.PART_NO)) LIKE '%' || TRIM(UPPER(#{search_part_no})) || '%'
</if>
<iftest="search_part_name != null and search_part_name != ''">
AND TRIM(UPPER(PM.PART_NAME)) LIKE '%' || TRIM(UPPER(#{search_part_name})) || '%'
</if>
<iftest="search_partner != null and search_partner != ''">
AND POM.PARTNER_OBJID = #{search_partner}
</if>
<iftest="search_delivery_status != null and search_delivery_status != ''">
<iftest="search_delivery_status == '입고완료'">
AND 0 <![CDATA[ >= ]]> ((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - COALESCE(S1.TOTAL_DELIVERY_QTY, 0))
</if>
<iftest="search_delivery_status == '입고중'">
AND 0 <![CDATA[ < ]]> ((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - COALESCE(S1.TOTAL_DELIVERY_QTY, 0))
</if>
</if>
<iftest="inspector_id != null and inspector_id != ''">
AND IID.INSPECTOR_ID = #{inspector_id}
</if>
<iftest="inspection_start_date != null and inspection_start_date != ''">
AND IID.INSPECTION_DATE <![CDATA[>=]]> #{inspection_start_date}
</if>
<iftest="inspection_end_date != null and inspection_end_date != ''">
AND IID.INSPECTION_DATE <![CDATA[<=]]> #{inspection_end_date}
</if>
<iftest="search_inspection_result != null and search_inspection_result != ''">
AND IID.INSPECTION_RESULT = #{search_inspection_result}
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO F WHERE F.TARGET_OBJID = PIM.OBJID AND F.DOC_TYPE = 'PROCESS_INSPECTION_FILE' AND UPPER(F.STATUS) = 'ACTIVE') AS PROCESS_INSPECTION_FILE_CNT
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO F WHERE F.TARGET_OBJID = PID.OBJID AND F.DOC_TYPE = 'PROCESS_INSPECTION_IMAGE' AND UPPER(F.STATUS) = 'ACTIVE') AS IMAGE_FILE_CNT
/* 첨부파일 카운트 */
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO F WHERE F.TARGET_OBJID = PID.OBJID AND F.DOC_TYPE = 'PROCESS_INSPECTION_FILE' AND UPPER(F.STATUS) = 'ACTIVE') AS ATTACH_FILE_CNT
, COALESCE(SPI.WORK_ORDER_NO, '') AS WORK_ORDER_NO
, COALESCE(SPI.PART_NO, '') AS PART_NO
, COALESCE(SPI.PART_NAME, '') AS PART_NAME
, COALESCE(SPI.RECEIPT_QTY, 0) AS RECEIPT_QTY
, COALESCE(SPI.GOOD_QTY, 0) AS GOOD_QTY
, COALESCE(SPI.DEFECT_QTY, 0) AS DEFECT_QTY
, SPI.DISPOSITION_TYPE
, SPI.DATA_TYPE
, COALESCE(TO_CHAR(SPI.INSPECTION_DATE, 'YYYY-MM-DD'), TO_CHAR(SPI.REG_DATE, 'YYYY-MM-DD')) AS INSPECTION_DATE
, COALESCE((SELECT USER_NAME FROM USER_INFO WHERE USER_ID = SPI.INSPECTOR), (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = SPI.WRITER)) AS WRITER_NAME
, COALESCE(SPI.INSPECTION_GROUP_ID, SPI.OBJID) AS INSPECTION_GROUP_ID
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = SPI.OBJID AND AFI.DOC_TYPE = 'SEMI_INSPECTION_IMAGE' AND AFI.STATUS = 'Active') AS "IMAGE_FILE_CNT"
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = SPI.OBJID AND AFI.DOC_TYPE = 'SEMI_INSPECTION_NCR' AND AFI.STATUS = 'Active') AS "NCR_FILE_CNT"
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = SPI.OBJID AND AFI.DOC_TYPE = 'SEMI_INSPECTION_REPORT' AND AFI.STATUS = 'Active') AS "REPORT_FILE_CNT"
, (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
FROM CUSTOMER_CS CCS
WHERE 1=1
<iftest="search_receipt_date_from != null and search_receipt_date_from != ''">
AND CCS.RECEIPT_DATE <![CDATA[>=]]> #{search_receipt_date_from}
</if>
<iftest="search_receipt_date_to != null and search_receipt_date_to != ''">
AND CCS.RECEIPT_DATE <![CDATA[<=]]> #{search_receipt_date_to}
</if>
<iftest="search_customer_objid != null and search_customer_objid != ''">
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ECR.REQUESTER_ID) AS REQUESTER_NAME
, ECR.PART_NO
, ECR.PART_NAME
, ECR.ISSUE_CONTENT
, ECR.DUE_DATE
, ECR.ACTION_DEPT
, (SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = ECR.ACTION_DEPT) AS ACTION_DEPT_NAME
, ECR.ACTION_MANAGER_ID
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ECR.ACTION_MANAGER_ID) AS ACTION_MANAGER_NAME
, ECR.ACTION_USER_ID
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = ECR.ACTION_USER_ID) AS ACTION_USER_NAME
, ECR.ACTION_CONTENT
, ECR.COMPLETE_DATE
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = ECR.OBJID AND AFI.DOC_TYPE = 'ECR_RESULT_IMAGE' AND STATUS = 'Active') AS IMAGE_FILE
, (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
, (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = IID.DEFECT_TYPE) AS DEFECT_TYPE_NAME
, IID.DEFECT_REASON
, (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = IID.DEFECT_REASON) AS DEFECT_REASON_NAME
, IID.ACTION_STATUS
, IID.INSPECTION_QTY
, IID.DEFECT_QTY
, CASE WHEN NULLIF(IID.INSPECTION_QTY, '')::NUMERIC > 0
THEN ROUND((COALESCE(NULLIF(IID.DEFECT_QTY, '')::NUMERIC, 0) / NULLIF(IID.INSPECTION_QTY, '')::NUMERIC) * 100, 2)
ELSE NULL END AS DEFECT_RATE
, IID.INSPECTION_RESULT
, IID.ATTACH_FILE_OBJID
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = IMI.OBJID AND AFI.DOC_TYPE = 'INCOMING_INSPECTION' AND STATUS = 'Active') AS ATTACH_FILE_CNT
/* 불량수량 합계 (INCOMING_INSPECTION_DETAIL.DEFECT_QTY에 저장된 값 사용) */
, COALESCE(NULLIF(IID.DEFECT_QTY, '')::NUMERIC, 0) AS DEFECT_QTY_SUM
/* 불량율 (불량수량합계 / 입고수량 * 100) */
, CASE WHEN IMI.RECEIPT_QTY::NUMERIC > 0
THEN ROUND(COALESCE(NULLIF(IID.DEFECT_QTY, '')::NUMERIC, 0) / IMI.RECEIPT_QTY::NUMERIC * 100, 2)
ELSE NULL END AS LEFT_DEFECT_RATE
/* 검사성적서 파일 수 */
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = IID.OBJID AND AFI.DOC_TYPE = 'INSPECTION_REPORT' AND UPPER(AFI.STATUS) = 'ACTIVE') AS INSPECTION_FILE_CNT
, COALESCE(IMI.RECEIPT_DATE, TO_CHAR(IMI.REGDATE, 'YYYY-MM-DD')) AS DELIVERY_DATE
, IMI.RECEIPT_QTY AS DELIVERY_QTY
, CASE WHEN EXISTS (
SELECT 1 FROM ATTACH_FILE_INFO DF
WHERE DF.TARGET_OBJID = POM.OBJID::VARCHAR
AND DF.DOC_TYPE = 'INSPECTION_FILE'
) THEN 'Y' ELSE 'N' END AS INSPECTION_FILE
, IID.OBJID AS INSPECTION_DETAIL_OBJID
, IID.INSPECTION_TYPE
, IID.INSPECTION_YN
, IID.REQUEST_DATE
, IID.REQUEST_USER_ID
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = IID.REQUEST_USER_ID) AS REQUEST_USER_NAME
, IID.DEFECT_TYPE
, (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = IID.DEFECT_TYPE) AS DEFECT_TYPE_NAME
, IID.DEFECT_REASON
, (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = IID.DEFECT_REASON) AS DEFECT_REASON_NAME
, IID.ACTION_STATUS
, IID.INSPECTION_QTY
, IID.DEFECT_QTY
, CASE WHEN NULLIF(IID.INSPECTION_QTY, '')::NUMERIC > 0
THEN ROUND((COALESCE(NULLIF(IID.DEFECT_QTY, '')::NUMERIC, 0) / NULLIF(IID.INSPECTION_QTY, '')::NUMERIC) * 100, 2)
ELSE NULL END AS DEFECT_RATE
, IID.INSPECTION_RESULT
, IID.ATTACH_FILE_OBJID
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = IMI.OBJID AND AFI.DOC_TYPE = 'INCOMING_INSPECTION' AND STATUS = 'Active') AS ATTACH_FILE_CNT
, IID.REMARK
, IMI.PURCHASE_ORDER_MASTER_OBJID
, POM.PURCHASE_ORDER_NO
FROM INVENTORY_MGMT_IN IMI
INNER JOIN INVENTORY_MGMT IM ON IM.OBJID = IMI.PARENT_OBJID
INNER JOIN PART_MNG PM ON PM.OBJID::VARCHAR = IM.PART_OBJID
LEFT JOIN PURCHASE_ORDER_MASTER POM ON POM.OBJID = IMI.PURCHASE_ORDER_MASTER_OBJID
INNER JOIN INCOMING_INSPECTION_DETAIL IID ON IID.INVENTORY_IN_OBJID = IMI.OBJID AND IID.INSPECTION_YN = '검사'
WHERE IMI.PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO F WHERE F.TARGET_OBJID = D.OBJID AND F.DOC_TYPE = 'INSPECTION_DEFECT_IMAGE' AND UPPER(F.STATUS) = 'ACTIVE') AS IMAGE_FILE_CNT
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO F WHERE F.TARGET_OBJID = D.OBJID AND F.DOC_TYPE = 'INSPECTION_DEFECT_FILE' AND UPPER(F.STATUS) = 'ACTIVE') AS ATTACH_FILE_CNT
FROM INCOMING_INSPECTION_DEFECT D
LEFT JOIN USER_INFO U ON D.INSPECTOR_ID = U.USER_ID
WHERE D.INSPECTION_DETAIL_OBJID = #{INSPECTION_DETAIL_OBJID}