6119 lines
223 KiB
XML
6119 lines
223 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE mapper
|
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="purchaseOrder">
|
|
|
|
<!-- //출고관리 조회 -->
|
|
<select id="purchaseOrderMasterList" parameterType="map" resultType="map">
|
|
select * From (
|
|
SELECT
|
|
ROW_NUMBER() OVER(ORDER BY A.DELIVERY_DATE DESC) AS RNUM,
|
|
A.*,
|
|
(TOTAL_ORDER_QTY::NUMERIC-TOTAL_DELIVERY_QTY::NUMERIC) AS NON_ARRIVAL_QTY,
|
|
A.TOTAL_DELIVERY_QTY
|
|
FROM (
|
|
SELECT
|
|
POM.OBJID,
|
|
POM.PURCHASE_ORDER_NO,
|
|
|
|
POM.CATEGORY_CD,
|
|
POM.PRODUCT_GROUP,
|
|
POM.PRODUCT,
|
|
POM.PRODUCT_CODE,
|
|
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.CATEGORY_CD) AS CATEGORY_CD_NAME,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PRODUCT_GROUP) AS PRODUCT_GROUP_NAME,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PRODUCT) AS PRODUCT_NAME,
|
|
(SELECT PRODUCT_CODE FROM PRODUCT_MGMT AS O WHERE O.OBJID::VARCHAR = POM.PRODUCT_CODE::VARCHAR) AS PRODUCT_CODE_NAME,
|
|
|
|
POM.MY_COMPANY_OBJID,
|
|
(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.MY_COMPANY_OBJID) AS MY_COMPANY_NAME,
|
|
|
|
POM.PARTNER_OBJID,
|
|
(SELECT SUPPLY_CODE FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_CODE,
|
|
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)
|
|
FROM
|
|
PURCHASE_ORDER_PART
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID= POM.OBJID
|
|
) AS TOTAL_ORDER_QTY,
|
|
|
|
(
|
|
SELECT
|
|
SUM(COALESCE(DH.DELIVERY_QTY,'0')::NUMERIC)
|
|
FROM
|
|
PURCHASE_ORDER_PART POP
|
|
LEFT OUTER JOIN DELIVERY_HISTORY DH
|
|
ON POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID= POM.OBJID
|
|
) AS TOTAL_DELIVERY_QTY,
|
|
|
|
(
|
|
SELECT
|
|
SUM(COALESCE(ORDER_QTY,'0')::NUMERIC * COALESCE(PARTNER_PRICE,'0')::NUMERIC)
|
|
FROM
|
|
PURCHASE_ORDER_PART
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID= POM.OBJID
|
|
|
|
) AS PURCHASE_TOTAL_PRICE,
|
|
|
|
(
|
|
SELECT
|
|
SUM(COALESCE(DH.DELIVERY_QTY,'0')::NUMERIC * COALESCE(DH.DELIVERY_PRICE,'0')::NUMERIC)
|
|
FROM
|
|
PURCHASE_ORDER_PART POP
|
|
LEFT OUTER JOIN DELIVERY_HISTORY DH
|
|
ON POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID= POM.OBJID
|
|
) AS TOTAL_DELIVERY_PRICE,
|
|
|
|
POM.DELIVERY_DATE,
|
|
POM.DELIVERY_PLACE,
|
|
POM.EFFECTIVE_DATE,
|
|
POM.PAYMENT_TERMS,
|
|
POM.REMARK,
|
|
|
|
POM.WRITER,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = POM.WRITER) AS WRITER_NAME,
|
|
|
|
POM.REGDATE,
|
|
TO_CHAR(POM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
|
|
|
TO_CHAR(POM.REGDATE,'YYYY') AS REGDATE_YEAR,
|
|
|
|
POM.STATUS,
|
|
CASE POM.STATUS
|
|
WHEN 'create' THEN '등록'
|
|
WHEN 'approvalRequest' THEN '결재중'
|
|
WHEN 'approvalComplete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
|
|
POM.PURCHASE_DATE,
|
|
POM.SALES_REQUEST_OBJID,
|
|
|
|
P.DELIVERY_CNT,
|
|
|
|
SRM.REQUEST_MNG_NO,
|
|
|
|
A.APPR_STATUS,
|
|
A.ROUTE_OBJID,
|
|
A.APPROVAL_OBJID
|
|
,POM.TITLE
|
|
,POM.CONTRACT_MGMT_OBJID
|
|
,(SELECT CONTRACT_NO FROM CONTRACT_MGMT CNT WHERE CNT.OBJID = POM.CONTRACT_MGMT_OBJID) AS CONTRACT_NO
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
|
|
LEFT OUTER JOIN SALES_REQUEST_MASTER SRM
|
|
ON POM.SALES_REQUEST_OBJID = SRM.OBJID
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
POM.OBJID,
|
|
COUNT(1) AS DELIVERY_CNT
|
|
FROM
|
|
DELIVERY_HISTORY DH
|
|
INNER JOIN PURCHASE_ORDER_PART POP
|
|
ON POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
INNER JOIN PURCHASE_ORDER_MASTER POM
|
|
ON POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
GROUP BY POM.OBJID
|
|
) P ON POM.OBJID = P.OBJID
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
B.OBJID AS ROUTE_OBJID,
|
|
CASE B.STATUS
|
|
WHEN 'inProcess' THEN '결재중'
|
|
WHEN 'complete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
ELSE ''
|
|
END APPR_STATUS,
|
|
A.OBJID AS APPROVAL_OBJID,
|
|
A.TARGET_OBJID,
|
|
B.ROUTE_SEQ
|
|
FROM
|
|
APPROVAL A,
|
|
(
|
|
select
|
|
T1.*
|
|
from
|
|
(
|
|
select
|
|
TARGET_OBJID,
|
|
max(T.ROUTE_SEQ) as ROUTE_SEQ
|
|
from
|
|
ROUTE T
|
|
group by
|
|
T.TARGET_OBJID
|
|
) T,
|
|
ROUTE T1
|
|
where
|
|
T.TARGET_OBJID = T1.TARGET_OBJID
|
|
and T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('PURCHASE_ORDER')
|
|
) A ON POM.OBJID::VARCHAR = A.TARGET_OBJID::VARCHAR
|
|
) A
|
|
WHERE 1=1
|
|
<if test="SEARCH_YEAR != null and SEARCH_YEAR !=''">
|
|
AND REGDATE_YEAR = #{SEARCH_YEAR}
|
|
</if>
|
|
|
|
<if test="SEARCH_PRODUCT_GROUP != null and SEARCH_PRODUCT_GROUP !=''">
|
|
AND PRODUCT_GROUP = #{SEARCH_PRODUCT_GROUP}
|
|
</if>
|
|
|
|
<if test="SEARCH_PRODUCT != null and SEARCH_PRODUCT !=''">
|
|
AND PRODUCT = #{SEARCH_PRODUCT}
|
|
</if>
|
|
|
|
<if test="SEARCH_PRODUCT_CODE != null and SEARCH_PRODUCT_CODE !=''">
|
|
AND PRODUCT_CODE = #{SEARCH_PRODUCT_CODE}
|
|
</if>
|
|
|
|
<if test="SEARCH_PURCHASE_ORDER_NO != null and SEARCH_PURCHASE_ORDER_NO !=''">
|
|
AND PURCHASE_ORDER_NO = #{SEARCH_PURCHASE_ORDER_NO}
|
|
</if>
|
|
|
|
<if test="SEARCH_PARTNER_OBJID != null and SEARCH_PARTNER_OBJID !=''">
|
|
AND PARTNER_OBJID = #{SEARCH_PARTNER_OBJID}
|
|
</if>
|
|
|
|
<if test="SEARCH_PURCHASE_REGDATE_START != null and SEARCH_PURCHASE_REGDATE_START !=''">
|
|
AND TO_DATE(PURCHASE_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{SEARCH_PURCHASE_REGDATE_START}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="SEARCH_PURCHASE_REGDATE_END != null and SEARCH_PURCHASE_REGDATE_END !=''">
|
|
AND TO_DATE(PURCHASE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{SEARCH_PURCHASE_REGDATE_END}, 'YYYY-MM-DD')
|
|
</if>
|
|
|
|
<if test="SEARCH_MASTER_DELIVERY_DATE_START != null and SEARCH_MASTER_DELIVERY_DATE_START !=''">
|
|
AND TO_DATE(DELIVERY_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{SEARCH_MASTER_DELIVERY_DATE_START}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="SEARCH_MASTER_DELIVERY_DATE_END != null and SEARCH_MASTER_DELIVERY_DATE_END !=''">
|
|
AND TO_DATE(DELIVERY_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{SEARCH_MASTER_DELIVERY_DATE_END}, 'YYYY-MM-DD')
|
|
</if>
|
|
|
|
<if test="SEARCH_STATUS != null and SEARCH_STATUS !=''">
|
|
AND STATUS = #{SEARCH_STATUS}
|
|
</if>
|
|
|
|
<if test="SEARCH_NON_ARRIVE eq 'include'">
|
|
AND TOTAL_ORDER_QTY > TOTAL_DELIVERY_QTY
|
|
</if>
|
|
|
|
<if test="SEARCH_NON_ARRIVE eq 'notInclude'">
|
|
|
|
</if>
|
|
|
|
<if test="SEARCH_DELIVERY_DATE_START != null and SEARCH_DELIVERY_DATE_START !=''">
|
|
AND OBJID IN(
|
|
SELECT
|
|
POP.PURCHASE_ORDER_MASTER_OBJID
|
|
FROM
|
|
PURCHASE_ORDER_PART POP
|
|
INNER JOIN DELIVERY_HISTORY DH
|
|
ON POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
AND DH.DELIVERY_DATE IS NOT NULL
|
|
AND DH.DELIVERY_DATE != ''
|
|
AND TO_DATE(TO_CHAR(TO_DATE(DH.DELIVERY_DATE,'YYYY-MM-DD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{SEARCH_DELIVERY_DATE_START}, 'YYYY-MM-DD')
|
|
)
|
|
</if>
|
|
|
|
<if test="SEARCH_DELIVERY_DATE_END != null and SEARCH_DELIVERY_DATE_END !=''">
|
|
AND OBJID IN(
|
|
SELECT
|
|
POP.PURCHASE_ORDER_MASTER_OBJID
|
|
FROM
|
|
PURCHASE_ORDER_PART POP
|
|
INNER JOIN DELIVERY_HISTORY DH
|
|
ON POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
AND DH.DELIVERY_DATE IS NOT NULL
|
|
AND DH.DELIVERY_DATE != ''
|
|
AND TO_DATE(TO_CHAR(TO_DATE(DH.DELIVERY_DATE,'YYYY-MM-DD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{SEARCH_DELIVERY_DATE_END}, 'YYYY-MM-DD')
|
|
)
|
|
</if>
|
|
) AS T99
|
|
where 1=1
|
|
<if test="PAGE_END != null and PAGE_END != ''">
|
|
<![CDATA[ AND RNUM <= #{PAGE_END}::integer ]]>
|
|
</if>
|
|
<if test="PAGE_START != null and PAGE_START != ''">
|
|
<![CDATA[ AND RNUM >= #{PAGE_START}::integer ]]>
|
|
</if>
|
|
</select>
|
|
|
|
<select id="purchaseOrderMasterListCnt" parameterType="map" resultType="map">
|
|
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE
|
|
,TOTAL_CNT::integer
|
|
FROM (
|
|
|
|
SELECT COUNT(1)::float TOTAL_CNT
|
|
FROM (
|
|
SELECT
|
|
POM.OBJID,
|
|
POM.PURCHASE_ORDER_NO,
|
|
|
|
POM.CATEGORY_CD,
|
|
POM.PRODUCT_GROUP,
|
|
POM.PRODUCT,
|
|
POM.PRODUCT_CODE,
|
|
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.CATEGORY_CD) AS CATEGORY_CD_NAME,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PRODUCT_GROUP) AS PRODUCT_GROUP_NAME,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PRODUCT) AS PRODUCT_NAME,
|
|
(SELECT PRODUCT_CODE FROM PRODUCT_MGMT AS O WHERE O.OBJID::VARCHAR = POM.PRODUCT_CODE::VARCHAR) AS PRODUCT_CODE_NAME,
|
|
|
|
POM.MY_COMPANY_OBJID,
|
|
(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.MY_COMPANY_OBJID) AS MY_COMPANY_NAME,
|
|
|
|
POM.PARTNER_OBJID,
|
|
(SELECT SUPPLY_CODE FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_CODE,
|
|
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)
|
|
FROM
|
|
PURCHASE_ORDER_PART
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID= POM.OBJID
|
|
) AS TOTAL_ORDER_QTY,
|
|
|
|
(
|
|
SELECT
|
|
SUM(COALESCE(DH.DELIVERY_QTY,'0')::NUMERIC)
|
|
FROM
|
|
PURCHASE_ORDER_PART POP
|
|
LEFT OUTER JOIN DELIVERY_HISTORY DH
|
|
ON POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID= POM.OBJID
|
|
) AS TOTAL_DELIVERY_QTY,
|
|
|
|
(
|
|
SELECT
|
|
SUM(COALESCE(ORDER_QTY,'0')::NUMERIC * COALESCE(PARTNER_PRICE,'0')::NUMERIC)
|
|
FROM
|
|
PURCHASE_ORDER_PART
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID= POM.OBJID
|
|
|
|
) AS PURCHASE_TOTAL_PRICE,
|
|
|
|
(
|
|
SELECT
|
|
SUM(COALESCE(DH.DELIVERY_QTY,'0')::NUMERIC * COALESCE(DH.DELIVERY_PRICE,'0')::NUMERIC)
|
|
FROM
|
|
PURCHASE_ORDER_PART POP
|
|
LEFT OUTER JOIN DELIVERY_HISTORY DH
|
|
ON POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID= POM.OBJID
|
|
) AS TOTAL_DELIVERY_PRICE,
|
|
|
|
POM.DELIVERY_DATE,
|
|
POM.DELIVERY_PLACE,
|
|
POM.EFFECTIVE_DATE,
|
|
POM.PAYMENT_TERMS,
|
|
POM.REMARK,
|
|
|
|
POM.WRITER,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = POM.WRITER) AS WRITER_NAME,
|
|
|
|
POM.REGDATE,
|
|
TO_CHAR(POM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
|
|
|
TO_CHAR(POM.REGDATE,'YYYY') AS REGDATE_YEAR,
|
|
|
|
POM.STATUS,
|
|
CASE POM.STATUS
|
|
WHEN 'create' THEN '등록'
|
|
WHEN 'approvalRequest' THEN '결재중'
|
|
WHEN 'approvalComplete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
|
|
POM.PURCHASE_DATE,
|
|
POM.SALES_REQUEST_OBJID,
|
|
|
|
P.DELIVERY_CNT,
|
|
|
|
SRM.REQUEST_MNG_NO,
|
|
|
|
A.APPR_STATUS,
|
|
A.ROUTE_OBJID,
|
|
A.APPROVAL_OBJID
|
|
,POM.TITLE
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
|
|
LEFT OUTER JOIN SALES_REQUEST_MASTER SRM
|
|
ON POM.SALES_REQUEST_OBJID = SRM.OBJID
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
POM.OBJID,
|
|
COUNT(1) AS DELIVERY_CNT
|
|
FROM
|
|
DELIVERY_HISTORY DH
|
|
INNER JOIN PURCHASE_ORDER_PART POP
|
|
ON POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
INNER JOIN PURCHASE_ORDER_MASTER POM
|
|
ON POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
GROUP BY POM.OBJID
|
|
) P ON POM.OBJID = P.OBJID
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
B.OBJID AS ROUTE_OBJID,
|
|
CASE B.STATUS
|
|
WHEN 'inProcess' THEN '결재중'
|
|
WHEN 'complete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
ELSE ''
|
|
END APPR_STATUS,
|
|
A.OBJID AS APPROVAL_OBJID,
|
|
A.TARGET_OBJID,
|
|
B.ROUTE_SEQ
|
|
FROM
|
|
APPROVAL A,
|
|
(
|
|
select
|
|
T1.*
|
|
from
|
|
(
|
|
select
|
|
TARGET_OBJID,
|
|
max(T.ROUTE_SEQ) as ROUTE_SEQ
|
|
from
|
|
ROUTE T
|
|
group by
|
|
T.TARGET_OBJID
|
|
) T,
|
|
ROUTE T1
|
|
where
|
|
T.TARGET_OBJID = T1.TARGET_OBJID
|
|
and T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('PURCHASE_ORDER')
|
|
) A ON POM.OBJID::VARCHAR = A.TARGET_OBJID::VARCHAR
|
|
) A
|
|
WHERE 1=1
|
|
<if test="SEARCH_YEAR != null and SEARCH_YEAR !=''">
|
|
AND REGDATE_YEAR = #{SEARCH_YEAR}
|
|
</if>
|
|
|
|
<if test="SEARCH_PRODUCT_GROUP != null and SEARCH_PRODUCT_GROUP !=''">
|
|
AND PRODUCT_GROUP = #{SEARCH_PRODUCT_GROUP}
|
|
</if>
|
|
|
|
<if test="SEARCH_PRODUCT != null and SEARCH_PRODUCT !=''">
|
|
AND PRODUCT = #{SEARCH_PRODUCT}
|
|
</if>
|
|
|
|
<if test="SEARCH_PRODUCT_CODE != null and SEARCH_PRODUCT_CODE !=''">
|
|
AND PRODUCT_CODE = #{SEARCH_PRODUCT_CODE}
|
|
</if>
|
|
|
|
<if test="SEARCH_PURCHASE_ORDER_NO != null and SEARCH_PURCHASE_ORDER_NO !=''">
|
|
AND PURCHASE_ORDER_NO = #{SEARCH_PURCHASE_ORDER_NO}
|
|
</if>
|
|
|
|
<if test="SEARCH_PARTNER_OBJID != null and SEARCH_PARTNER_OBJID !=''">
|
|
AND PARTNER_OBJID = #{SEARCH_PARTNER_OBJID}
|
|
</if>
|
|
|
|
<if test="SEARCH_PURCHASE_REGDATE_START != null and SEARCH_PURCHASE_REGDATE_START !=''">
|
|
AND TO_DATE(PURCHASE_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{SEARCH_PURCHASE_REGDATE_START}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="SEARCH_PURCHASE_REGDATE_END != null and SEARCH_PURCHASE_REGDATE_END !=''">
|
|
AND TO_DATE(PURCHASE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{SEARCH_PURCHASE_REGDATE_END}, 'YYYY-MM-DD')
|
|
</if>
|
|
|
|
<if test="SEARCH_MASTER_DELIVERY_DATE_START != null and SEARCH_MASTER_DELIVERY_DATE_START !=''">
|
|
AND TO_DATE(DELIVERY_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{SEARCH_MASTER_DELIVERY_DATE_START}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="SEARCH_MASTER_DELIVERY_DATE_END != null and SEARCH_MASTER_DELIVERY_DATE_END !=''">
|
|
AND TO_DATE(DELIVERY_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{SEARCH_MASTER_DELIVERY_DATE_END}, 'YYYY-MM-DD')
|
|
</if>
|
|
|
|
<if test="SEARCH_STATUS != null and SEARCH_STATUS !=''">
|
|
AND STATUS = #{SEARCH_STATUS}
|
|
</if>
|
|
|
|
<if test="SEARCH_NON_ARRIVE eq 'include'">
|
|
AND TOTAL_ORDER_QTY > TOTAL_DELIVERY_QTY
|
|
</if>
|
|
|
|
<if test="SEARCH_NON_ARRIVE eq 'notInclude'">
|
|
|
|
</if>
|
|
|
|
<if test="SEARCH_DELIVERY_DATE_START != null and SEARCH_DELIVERY_DATE_START !=''">
|
|
AND OBJID IN(
|
|
SELECT
|
|
POP.PURCHASE_ORDER_MASTER_OBJID
|
|
FROM
|
|
PURCHASE_ORDER_PART POP
|
|
INNER JOIN DELIVERY_HISTORY DH
|
|
ON POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
AND DH.DELIVERY_DATE IS NOT NULL
|
|
AND DH.DELIVERY_DATE != ''
|
|
AND TO_DATE(TO_CHAR(TO_DATE(DH.DELIVERY_DATE,'YYYY-MM-DD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{SEARCH_DELIVERY_DATE_START}, 'YYYY-MM-DD')
|
|
)
|
|
</if>
|
|
|
|
<if test="SEARCH_DELIVERY_DATE_END != null and SEARCH_DELIVERY_DATE_END !=''">
|
|
AND OBJID IN(
|
|
SELECT
|
|
POP.PURCHASE_ORDER_MASTER_OBJID
|
|
FROM
|
|
PURCHASE_ORDER_PART POP
|
|
INNER JOIN DELIVERY_HISTORY DH
|
|
ON POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
AND DH.DELIVERY_DATE IS NOT NULL
|
|
AND DH.DELIVERY_DATE != ''
|
|
AND TO_DATE(TO_CHAR(TO_DATE(DH.DELIVERY_DATE,'YYYY-MM-DD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{SEARCH_DELIVERY_DATE_END}, 'YYYY-MM-DD')
|
|
)
|
|
</if>
|
|
|
|
) T99
|
|
WHERE 1=1
|
|
</select>
|
|
|
|
<select id="selectPurchaseOrderMasterList" parameterType="map" resultType="map">
|
|
SELECT *
|
|
,(SELECT PROJECT_NO FROM PROJECT_MGMT CNT WHERE CNT.OBJID = POM.CONTRACT_MGMT_OBJID) AS CONTRACT_NO
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
WHERE 1=1
|
|
<!--
|
|
<if test="OBJID != null and OBJID !=''">
|
|
AND OBJID = #{OBJID}
|
|
</if>
|
|
<if test="PURCHASE_ORDER_MASTER_OBJID != null and PURCHASE_ORDER_MASTER_OBJID !=''">
|
|
AND OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
</if>
|
|
-->
|
|
AND MULTI_MASTER_OBJID = #{MULTI_MASTER_OBJID}
|
|
<if test="MULTI_MASTER_OBJID != null and MULTI_MASTER_OBJID !=''">
|
|
</if>
|
|
ORDER BY CONTRACT_NO DESC
|
|
<!--
|
|
ORDER BY PURCHASE_ORDER_NO DESC
|
|
-->
|
|
</select>
|
|
|
|
<select id="selectSameProjectMasterList" parameterType="map" resultType="map">
|
|
SELECT
|
|
OBJID
|
|
,CONTRACT_MGMT_OBJID
|
|
,UNIT_CODE
|
|
,BOM_REPORT_OBJID
|
|
,(SELECT PROJECT_NO FROM PROJECT_MGMT CNT WHERE CNT.OBJID = POM.CONTRACT_MGMT_OBJID) AS CONTRACT_NO
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
WHERE 1=1
|
|
AND MULTI_MASTER_OBJID = #{MULTI_MASTER_OBJID}
|
|
<if test="MULTI_MASTER_OBJID != null and MULTI_MASTER_OBJID !=''">
|
|
</if>
|
|
ORDER BY CONTRACT_NO
|
|
</select>
|
|
|
|
<update id="mergePurchaseOrderMaster" parameterType="map">
|
|
INSERT INTO PURCHASE_ORDER_MASTER
|
|
(
|
|
OBJID,
|
|
PO_CLIENT_ID,
|
|
PURCHASE_ORDER_NO,
|
|
CATEGORY_CD,
|
|
PRODUCT_GROUP,
|
|
PRODUCT,
|
|
PRODUCT_CODE,
|
|
MY_COMPANY_OBJID,
|
|
PARTNER_OBJID,
|
|
DELIVERY_DATE,
|
|
DELIVERY_PLACE,
|
|
EFFECTIVE_DATE,
|
|
PAYMENT_TERMS,
|
|
REMARK,
|
|
REQUEST_CONTENT,
|
|
WRITER,
|
|
REGDATE,
|
|
STATUS,
|
|
SALES_REQUEST_OBJID,
|
|
SALES_MNG_USER_ID,
|
|
SALES_MNG_USER_ID2,
|
|
FORM_TYPE
|
|
,TITLE
|
|
,PURCHASE_DATE
|
|
,CONTRACT_MGMT_OBJID
|
|
,TYPE
|
|
,INSPECT_METHOD
|
|
,TOTAL_PRICE_TXT
|
|
,TOTAL_PRICE_TXT_ALL
|
|
,VAT_METHOD
|
|
,TOTAL_SUPPLY_UNIT_PRICE
|
|
,TOTAL_SUPPLY_PRICE
|
|
,TOTAL_REAL_SUPPLY_PRICE
|
|
,DISCOUNT_PRICE
|
|
,TOTAL_PRICE
|
|
,TOTAL_PRICE_ALL
|
|
,NEGO_RATE
|
|
,SUPPLY_BUS_NO
|
|
,SUPPLY_USER_NAME
|
|
,SUPPLY_USER_HP
|
|
,SUPPLY_USER_TEL
|
|
,SUPPLY_USER_FAX
|
|
,SUPPLY_USER_EMAIL
|
|
,SUPPLY_ADDR
|
|
,UNIT_CODE
|
|
,BOM_REPORT_OBJID
|
|
,ORDER_TYPE_CD
|
|
,MULTI_YN
|
|
,MULTI_MASTER_YN
|
|
,MULTI_MASTER_OBJID
|
|
,DELIVERY_PLAN_DATE
|
|
,DELIVERY_PLAN_QTY
|
|
,PURCHASE_ORDER_NO_ORG
|
|
)
|
|
VALUES
|
|
(
|
|
#{OBJID},
|
|
#{PO_CLIENT_ID},
|
|
<!-- 기존: PO-YYMM-순번, 신규: RPSYY-MMDD-순번 (예: RPS25-0926-01) -->
|
|
(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},
|
|
#{PRODUCT_CODE},
|
|
#{MY_COMPANY_OBJID},
|
|
#{PARTNER_OBJID},
|
|
#{DELIVERY_DATE},
|
|
#{DELIVERY_PLACE},
|
|
#{EFFECTIVE_DATE},
|
|
#{PAYMENT_TERMS},
|
|
#{REMARK},
|
|
#{REQUEST_CONTENT},
|
|
#{WRITER},
|
|
NOW(),
|
|
#{STATUS},
|
|
#{SALES_REQUEST_OBJID},
|
|
#{SALES_MNG_USER_ID},
|
|
#{SALES_MNG_USER_ID2},
|
|
#{FORM_TYPE}
|
|
,#{TITLE}
|
|
,#{PURCHASE_DATE}
|
|
,#{CONTRACT_MGMT_OBJID}
|
|
,#{TYPE }
|
|
,#{INSPECT_METHOD }
|
|
,#{TOTAL_PRICE_TXT }
|
|
,#{TOTAL_PRICE_TXT_ALL }
|
|
,#{VAT_METHOD }
|
|
,#{TOTAL_SUPPLY_UNIT_PRICE}
|
|
,#{TOTAL_SUPPLY_PRICE}
|
|
,#{TOTAL_REAL_SUPPLY_PRICE}
|
|
,#{DISCOUNT_PRICE }
|
|
,#{TOTAL_PRICE }
|
|
,#{TOTAL_PRICE_ALL }
|
|
,#{NEGO_RATE }
|
|
,#{SUPPLY_BUS_NO }
|
|
,#{SUPPLY_USER_NAME }
|
|
,#{SUPPLY_USER_HP }
|
|
,#{SUPPLY_USER_TEL }
|
|
,#{SUPPLY_USER_FAX }
|
|
,#{SUPPLY_USER_EMAIL }
|
|
,#{SUPPLY_ADDR }
|
|
,#{UNIT_CODE }
|
|
,#{BOM_REPORT_OBJID }
|
|
,#{ORDER_TYPE_CD }
|
|
,#{MULTI_YN }
|
|
,#{MULTI_MASTER_YN }
|
|
,#{MULTI_MASTER_OBJID }
|
|
,#{DELIVERY_PLAN_DATE}
|
|
,#{DELIVERY_PLAN_QTY}
|
|
,#{PURCHASE_ORDER_NO_ORG}
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE
|
|
SET
|
|
<!--
|
|
PURCHASE_ORDER_NO = #{PURCHASE_ORDER_NO},
|
|
-->
|
|
PO_CLIENT_ID = #{PO_CLIENT_ID},
|
|
CATEGORY_CD = #{CATEGORY_CD},
|
|
PRODUCT_GROUP = #{PRODUCT_GROUP},
|
|
PRODUCT = #{PRODUCT},
|
|
PRODUCT_CODE = #{PRODUCT_CODE},
|
|
MY_COMPANY_OBJID = #{MY_COMPANY_OBJID},
|
|
PARTNER_OBJID = #{PARTNER_OBJID},
|
|
DELIVERY_DATE = #{DELIVERY_DATE},
|
|
DELIVERY_PLACE = #{DELIVERY_PLACE},
|
|
EFFECTIVE_DATE = #{EFFECTIVE_DATE},
|
|
PAYMENT_TERMS = #{PAYMENT_TERMS},
|
|
REMARK = #{REMARK},
|
|
REQUEST_CONTENT = #{REQUEST_CONTENT},
|
|
WRITER = #{WRITER},
|
|
STATUS = #{STATUS},
|
|
SALES_MNG_USER_ID = #{SALES_MNG_USER_ID},
|
|
SALES_MNG_USER_ID2 = #{SALES_MNG_USER_ID2}
|
|
<if test="FORM_TYPE != null and FORM_TYPE != ''">
|
|
,FORM_TYPE = #{FORM_TYPE}
|
|
</if>
|
|
,TITLE = #{TITLE}
|
|
,PURCHASE_DATE = #{PURCHASE_DATE}
|
|
,CONTRACT_MGMT_OBJID = #{CONTRACT_MGMT_OBJID}
|
|
,TYPE = #{TYPE }
|
|
,INSPECT_METHOD = #{INSPECT_METHOD }
|
|
,TOTAL_PRICE_TXT = #{TOTAL_PRICE_TXT }
|
|
,TOTAL_PRICE_TXT_ALL = #{TOTAL_PRICE_TXT_ALL }
|
|
,VAT_METHOD = #{VAT_METHOD }
|
|
,TOTAL_SUPPLY_UNIT_PRICE = #{TOTAL_SUPPLY_UNIT_PRICE}
|
|
,TOTAL_SUPPLY_PRICE = #{TOTAL_SUPPLY_PRICE}
|
|
<!--
|
|
,TOTAL_SUPPLY_PRICE_ALL = #{TOTAL_SUPPLY_PRICE_ALL}
|
|
-->
|
|
,TOTAL_REAL_SUPPLY_PRICE = #{TOTAL_REAL_SUPPLY_PRICE}
|
|
,DISCOUNT_PRICE = #{DISCOUNT_PRICE }
|
|
,TOTAL_PRICE = #{TOTAL_PRICE }
|
|
,TOTAL_PRICE_ALL = #{TOTAL_PRICE_ALL }
|
|
,NEGO_RATE = #{NEGO_RATE }
|
|
,SUPPLY_BUS_NO = #{SUPPLY_BUS_NO }
|
|
,SUPPLY_USER_NAME = #{SUPPLY_USER_NAME }
|
|
,SUPPLY_USER_HP = #{SUPPLY_USER_HP }
|
|
,SUPPLY_USER_TEL = #{SUPPLY_USER_TEL }
|
|
,SUPPLY_USER_FAX = #{SUPPLY_USER_FAX }
|
|
,SUPPLY_USER_EMAIL = #{SUPPLY_USER_EMAIL }
|
|
,SUPPLY_ADDR = #{SUPPLY_ADDR }
|
|
,UNIT_CODE = #{UNIT_CODE }
|
|
,BOM_REPORT_OBJID = #{BOM_REPORT_OBJID }
|
|
,ORDER_TYPE_CD = #{ORDER_TYPE_CD }
|
|
,DELIVERY_PLAN_DATE = #{DELIVERY_PLAN_DATE}
|
|
,DELIVERY_PLAN_QTY = #{DELIVERY_PLAN_QTY}
|
|
,MULTI_YN = #{MULTI_YN}
|
|
,MULTI_MASTER_YN = #{MULTI_MASTER_YN}
|
|
,PURCHASE_ORDER_NO_ORG = #{PURCHASE_ORDER_NO_ORG}
|
|
</update>
|
|
<!--
|
|
<update id="mergePurchaseOrderMulti" parameterType="map">
|
|
INSERT INTO PURCHASE_ORDER_MULTI
|
|
(
|
|
OBJID
|
|
,MULTI_MASTER_OBJID
|
|
,PURCHASE_ORDER_MASTER_OBJID
|
|
,PROJECT_OBJID
|
|
,DELIVERY_PLAN_DATE
|
|
,DELIVERY_PLAN_QTY
|
|
,REGDATE
|
|
,EDITDATE
|
|
,WRITER
|
|
,EDITER
|
|
) VALUES (
|
|
#{OBJID}
|
|
,#{MULTI_MASTER_OBJID}
|
|
,#{PURCHASE_ORDER_MASTER_OBJID}
|
|
,#{PROJECT_OBJID}
|
|
,#{DELIVERY_PLAN_DATE}
|
|
,#{DELIVERY_PLAN_QTY}
|
|
,NOW()
|
|
,NULL
|
|
,#{WRITER}
|
|
,''
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE
|
|
SET
|
|
DELIVERY_PLAN_DATE = #{DELIVERY_PLAN_DATE}
|
|
,DELIVERY_PLAN_QTY = #{DELIVERY_PLAN_QTY}
|
|
,EDITDATE = NOW()
|
|
,EDITER = #{WRITER}
|
|
</update>
|
|
-->
|
|
<update id="mergePurchaseOrderMasterBySalesRequest" parameterType="map">
|
|
INSERT INTO PURCHASE_ORDER_MASTER
|
|
(
|
|
OBJID,
|
|
PO_CLIENT_ID,
|
|
PURCHASE_ORDER_NO,
|
|
PARTNER_OBJID,
|
|
DELIVERY_DATE,
|
|
DELIVERY_PLACE,
|
|
EFFECTIVE_DATE,
|
|
PAYMENT_TERMS,
|
|
REMARK,
|
|
WRITER,
|
|
REGDATE,
|
|
STATUS,
|
|
SALES_REQUEST_OBJID,
|
|
SALES_MNG_USER_ID,
|
|
FORM_TYPE
|
|
,TITLE
|
|
,PURCHASE_DATE
|
|
,CONTRACT_MGMT_OBJID
|
|
,TYPE
|
|
,INSPECT_METHOD
|
|
,TOTAL_PRICE_TXT
|
|
,VAT_METHOD
|
|
,TOTAL_SUPPLY_UNIT_PRICE
|
|
,DISCOUNT_PRICE
|
|
,TOTAL_PRICE
|
|
,NEGO_RATE
|
|
,SUPPLY_BUS_NO
|
|
,SUPPLY_USER_NAME
|
|
,SUPPLY_USER_HP
|
|
,SUPPLY_USER_TEL
|
|
,SUPPLY_USER_FAX
|
|
,SUPPLY_USER_EMAIL
|
|
,SUPPLY_ADDR
|
|
,UNIT_CODE
|
|
,BOM_REPORT_OBJID
|
|
,ORDER_TYPE_CD
|
|
)
|
|
VALUES
|
|
(
|
|
#{OBJID},
|
|
#{PO_CLIENT_ID},
|
|
(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),
|
|
<!-- 기존: PO-YYMM-순번, 신규: RPSYY-MMDD-순번 (예: RPS25-0926-01) -->
|
|
#{PARTNER_OBJID},
|
|
#{DELIVERY_REQUEST_DATE},
|
|
#{DELIVERY_PLACE},
|
|
#{EFFECTIVE_DATE},
|
|
#{PAYMENT_TERMS},
|
|
#{REMARK},
|
|
#{WRITER},
|
|
NOW(),
|
|
'create',
|
|
#{SALES_REQUEST_OBJID},
|
|
#{SALES_MNG_USER_ID},
|
|
#{FORM_TYPE}
|
|
,#{TITLE}
|
|
,#{PURCHASE_DATE}
|
|
,NULLIF(#{PROJECT_NO}::TEXT, '')::NUMERIC
|
|
,#{TYPE }
|
|
,#{INSPECT_METHOD }
|
|
,#{TOTAL_PRICE_TXT }
|
|
,#{VAT_METHOD }
|
|
,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 }
|
|
,#{SUPPLY_USER_TEL }
|
|
,#{SUPPLY_USER_FAX }
|
|
,#{SUPPLY_USER_EMAIL }
|
|
,#{SUPPLY_ADDR }
|
|
,#{UNIT_NAME }
|
|
,#{BOM_REPORT_OBJID }
|
|
,#{ORDER_TYPE_CD }
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE
|
|
SET
|
|
PO_CLIENT_ID = #{PO_CLIENT_ID},
|
|
PURCHASE_ORDER_NO = #{PURCHASE_ORDER_NO},
|
|
PARTNER_OBJID = #{PARTNER_OBJID},
|
|
DELIVERY_DATE = #{DELIVERY_DATE},
|
|
DELIVERY_PLACE = #{DELIVERY_PLACE},
|
|
EFFECTIVE_DATE = #{EFFECTIVE_DATE},
|
|
PAYMENT_TERMS = #{PAYMENT_TERMS},
|
|
REMARK = #{REMARK},
|
|
WRITER = #{WRITER},
|
|
STATUS = #{STATUS},
|
|
SALES_MNG_USER_ID = #{SALES_MNG_USER_ID}
|
|
,TITLE = #{TITLE}
|
|
,PURCHASE_DATE = #{PURCHASE_DATE}
|
|
,CONTRACT_MGMT_OBJID = #{CONTRACT_MGMT_OBJID}
|
|
,TYPE = #{TYPE }
|
|
,INSPECT_METHOD = #{INSPECT_METHOD }
|
|
,TOTAL_PRICE_TXT = #{TOTAL_PRICE_TXT }
|
|
,VAT_METHOD = #{VAT_METHOD }
|
|
,TOTAL_SUPPLY_UNIT_PRICE = #{TOTAL_SUPPLY_UNIT_PRICE}
|
|
,DISCOUNT_PRICE = #{DISCOUNT_PRICE }
|
|
,TOTAL_PRICE = #{TOTAL_PRICE }
|
|
,NEGO_RATE = #{NEGO_RATE }
|
|
,SUPPLY_BUS_NO = #{SUPPLY_BUS_NO }
|
|
,SUPPLY_USER_NAME = #{SUPPLY_USER_NAME }
|
|
,SUPPLY_USER_HP = #{SUPPLY_USER_HP }
|
|
,SUPPLY_USER_TEL = #{SUPPLY_USER_TEL }
|
|
,SUPPLY_USER_FAX = #{SUPPLY_USER_FAX }
|
|
,SUPPLY_USER_EMAIL = #{SUPPLY_USER_EMAIL }
|
|
,SUPPLY_ADDR = #{SUPPLY_ADDR }
|
|
,UNIT_CODE = #{UNIT_CODE }
|
|
,BOM_REPORT_OBJID = #{BOM_REPORT_OBJID }
|
|
,ORDER_TYPE_CD = #{ORDER_TYPE_CD }
|
|
</update>
|
|
|
|
<select id="grtPartnerObjidBySalesRequestObjid" parameterType="map" resultType="map">
|
|
SELECT
|
|
COALESCE(NULLIF(VENDOR_PM, ''), PARTNER_OBJID) AS PARTNER_OBJID
|
|
FROM
|
|
SALES_REQUEST_PART SRP
|
|
LEFT OUTER JOIN SALES_REQUEST_MASTER SRM ON SRP.SALES_REQUEST_MASTER_OBJID = SRM.OBJID
|
|
WHERE SRP.SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_OBJID}
|
|
AND (VENDOR_PM IS NOT NULL AND VENDOR_PM != '' OR PARTNER_OBJID IS NOT NULL AND PARTNER_OBJID != '')
|
|
GROUP BY COALESCE(NULLIF(VENDOR_PM, ''), PARTNER_OBJID)
|
|
</select>
|
|
|
|
<!-- 품의서용 공급업체 조회 (VENDOR_PM 사용) -->
|
|
<select id="getVendorListByProposalObjid" parameterType="map" resultType="map">
|
|
SELECT
|
|
VENDOR_PM as PARTNER_OBJID
|
|
FROM
|
|
SALES_REQUEST_PART SRP
|
|
LEFT OUTER JOIN SALES_REQUEST_MASTER SRM ON SRP.SALES_REQUEST_MASTER_OBJID = SRM.OBJID
|
|
WHERE SRP.SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_OBJID}
|
|
AND VENDOR_PM IS NOT NULL
|
|
AND NOT EXISTS (SELECT 1 FROM PURCHASE_ORDER_MASTER AS P WHERE P.SALES_REQUEST_OBJID = SRM.OBJID AND P.PARTNER_OBJID = SRP.VENDOR_PM)
|
|
GROUP BY VENDOR_PM
|
|
</select>
|
|
|
|
<!-- 품의서의 공급업체별 품목 조회 (VENDOR_PM 기준) -->
|
|
<select id="getProposalPartsByVendor" parameterType="map" resultType="map">
|
|
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,
|
|
SRP.VENDOR_PM AS PARTNER_OBJID,
|
|
PM.PART_NO,
|
|
PM.PART_NAME,
|
|
PM.SPEC,
|
|
PM.UNIT,
|
|
PM.MAKER
|
|
FROM
|
|
SALES_REQUEST_PART SRP
|
|
LEFT JOIN PART_MNG PM ON PM.OBJID::VARCHAR = SRP.PART_OBJID
|
|
WHERE
|
|
SRP.SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_OBJID}
|
|
AND SRP.VENDOR_PM = #{PARTNER_OBJID}
|
|
</select>
|
|
|
|
<!-- 구매요청서의 공급업체별 품목 조회 (PARTNER_OBJID 기준) -->
|
|
<select id="getSalesRequestPartsByVendor" parameterType="map" resultType="map">
|
|
SELECT
|
|
SRP.OBJID,
|
|
SRP.PART_OBJID,
|
|
SRP.QTY,
|
|
SRP.UNIT_PRICE AS PARTNER_PRICE,
|
|
SRP.TOTAL_PRICE,
|
|
SRP.PARTNER_OBJID,
|
|
PM.PART_NO,
|
|
PM.PART_NAME,
|
|
PM.SPEC,
|
|
PM.UNIT,
|
|
PM.MAKER
|
|
FROM
|
|
SALES_REQUEST_PART SRP
|
|
LEFT JOIN PART_MNG PM ON PM.OBJID::VARCHAR = SRP.PART_OBJID
|
|
WHERE
|
|
SRP.SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_OBJID}
|
|
AND SRP.PARTNER_OBJID = #{PARTNER_OBJID}
|
|
</select>
|
|
|
|
<update id="mergePurchaseOrderMasterPrice" parameterType="map">
|
|
INSERT INTO PURCHASE_ORDER_MASTER
|
|
(
|
|
OBJID,
|
|
PO_CLIENT_ID,
|
|
PURCHASE_ORDER_NO,
|
|
CATEGORY_CD,
|
|
PRODUCT_GROUP,
|
|
PRODUCT,
|
|
PRODUCT_CODE,
|
|
MY_COMPANY_OBJID,
|
|
PARTNER_OBJID,
|
|
DELIVERY_DATE,
|
|
DELIVERY_PLACE,
|
|
EFFECTIVE_DATE,
|
|
PAYMENT_TERMS,
|
|
REMARK,
|
|
WRITER,
|
|
REGDATE,
|
|
STATUS,
|
|
SALES_REQUEST_OBJID,
|
|
SALES_MNG_USER_ID
|
|
,TITLE
|
|
,PURCHASE_DATE
|
|
,CONTRACT_MGMT_OBJID
|
|
,TYPE
|
|
,INSPECT_METHOD
|
|
,TOTAL_PRICE_TXT
|
|
,VAT_METHOD
|
|
,TOTAL_SUPPLY_UNIT_PRICE
|
|
,DISCOUNT_PRICE
|
|
,TOTAL_PRICE
|
|
,NEGO_RATE
|
|
,SUPPLY_BUS_NO
|
|
,SUPPLY_USER_NAME
|
|
,SUPPLY_USER_HP
|
|
,SUPPLY_USER_TEL
|
|
,SUPPLY_USER_FAX
|
|
,SUPPLY_USER_EMAIL
|
|
,SUPPLY_ADDR
|
|
,UNIT_CODE
|
|
,BOM_REPORT_OBJID
|
|
,ORDER_TYPE_CD
|
|
)
|
|
VALUES
|
|
(
|
|
#{OBJID},
|
|
#{PO_CLIENT_ID},
|
|
(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},
|
|
#{PRODUCT_CODE},
|
|
#{MY_COMPANY_OBJID},
|
|
#{PARTNER_OBJID},
|
|
#{DELIVERY_DATE},
|
|
#{DELIVERY_PLACE},
|
|
#{EFFECTIVE_DATE},
|
|
#{PAYMENT_TERMS},
|
|
#{REMARK},
|
|
#{WRITER},
|
|
NOW(),
|
|
#{STATUS},
|
|
#{SALES_REQUEST_OBJID},
|
|
#{SALES_MNG_USER_ID}
|
|
,#{TITLE}
|
|
,#{PURCHASE_DATE}
|
|
,#{CONTRACT_MGMT_OBJID}
|
|
,#{TYPE }
|
|
,#{INSPECT_METHOD }
|
|
,#{TOTAL_PRICE_TXT }
|
|
,#{VAT_METHOD }
|
|
,#{TOTAL_SUPPLY_UNIT_PRICE}
|
|
,#{DISCOUNT_PRICE }
|
|
,#{TOTAL_PRICE }
|
|
,#{NEGO_RATE }
|
|
,#{SUPPLY_BUS_NO }
|
|
,#{SUPPLY_USER_NAME }
|
|
,#{SUPPLY_USER_HP }
|
|
,#{SUPPLY_USER_TEL }
|
|
,#{SUPPLY_USER_FAX }
|
|
,#{SUPPLY_USER_EMAIL }
|
|
,#{SUPPLY_ADDR }
|
|
,#{UNIT_CODE }
|
|
,#{BOM_REPORT_OBJID }
|
|
,#{ORDER_TYPE_CD }
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE
|
|
SET
|
|
TOTAL_PRICE_TXT = #{TOTAL_PRICE_TXT }
|
|
,TOTAL_SUPPLY_UNIT_PRICE = #{TOTAL_SUPPLY_UNIT_PRICE}
|
|
,TOTAL_SUPPLY_PRICE = #{TOTAL_SUPPLY_PRICE}
|
|
,TOTAL_REAL_SUPPLY_PRICE = #{TOTAL_REAL_SUPPLY_PRICE}
|
|
,DISCOUNT_PRICE = #{DISCOUNT_PRICE }
|
|
,TOTAL_PRICE = #{TOTAL_PRICE }
|
|
,NEGO_RATE = #{NEGO_RATE }
|
|
</update>
|
|
|
|
<update id="updatePurchaseOrderMasterPrice" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_MASTER
|
|
SET
|
|
TOTAL_PRICE_TXT = #{TOTAL_PRICE_TXT }
|
|
,TOTAL_SUPPLY_PRICE = #{TOTAL_SUPPLY_PRICE }
|
|
,TOTAL_SUPPLY_UNIT_PRICE = #{TOTAL_SUPPLY_UNIT_PRICE}
|
|
,TOTAL_PRICE = TOTAL_SUPPLY_PRICE::NUMERIC - DISCOUNT_PRICE::NUMERIC
|
|
,NEGO_RATE = (case when TOTAL_SUPPLY_PRICE = 0 then 0 else ROUND(DISCOUNT_PRICE/TOTAL_SUPPLY_PRICE, 1) end)
|
|
<!--
|
|
,DISCOUNT_PRICE = #{DISCOUNT_PRICE }
|
|
-->
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<update id="updatePurchaseOrderMasterRealPrice" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_MASTER
|
|
SET
|
|
TOTAL_REAL_SUPPLY_PRICE = #{TOTAL_REAL_SUPPLY_PRICE}
|
|
WHERE OBJID = #{OBJID} OR MULTI_MASTER_OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<update id="updatePurchaseOrderPartPrice" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_PART SET
|
|
PARTNER_PRICE = #{PARTNER_PRICE}
|
|
,PRICE1 = #{PRICE1}
|
|
,PRICE2 = #{PRICE2}
|
|
,PRICE3 = #{PRICE3}
|
|
,PRICE4 = #{PRICE4}
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
|
|
AND OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<update id="updatePurchaseOrderPartSumUnitPrice" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_PART P SET
|
|
<!--
|
|
PARTNER_PRICE = #{PARTNER_PRICE}
|
|
,PRICE1 = #{PRICE1}
|
|
,PRICE2 = #{PRICE2}
|
|
,PRICE3 = #{PRICE3}
|
|
,PRICE4 = #{PRICE4}
|
|
-->
|
|
SUPPLY_UNIT_PRICE = ORDER_QTY::numeric * (PARTNER_PRICE::numeric + PRICE1::numeric + PRICE2::numeric + PRICE3::numeric + PRICE4::numeric)
|
|
,SUPPLY_UNIT_VAT_PRICE = ORDER_QTY::numeric * (PARTNER_PRICE::numeric + PRICE1::numeric + PRICE2::numeric + PRICE3::numeric + PRICE4::numeric) * 0.1
|
|
,SUPPLY_UNIT_VAT_SUM_PRICE = ORDER_QTY::numeric * (PARTNER_PRICE::numeric + PRICE1::numeric + PRICE2::numeric + PRICE3::numeric + PRICE4::numeric)
|
|
+ ORDER_QTY::numeric * (PARTNER_PRICE::numeric + PRICE1::numeric + PRICE2::numeric + PRICE3::numeric + PRICE4::numeric) * 0.1
|
|
,REAL_SUPPLY_PRICE = (SELECT
|
|
SUM(ORDER_QTY::numeric) * (SUM(PARTNER_PRICE::numeric) + SUM(PRICE1::numeric) + SUM(PRICE2::numeric) + SUM(PRICE3::numeric) + SUM(PRICE4::numeric))
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
WHERE (POM.OBJID = #{PURCHASE_ORDER_MASTER_OBJID } OR POM.MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID })
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POP.OBJID = P.OBJID
|
|
)
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
|
|
<!--
|
|
AND OBJID = #{OBJID}
|
|
-->
|
|
</update>
|
|
<update id="updatePurchaseOrderMasterPriceByPart" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_MASTER SET
|
|
TOTAL_SUPPLY_UNIT_PRICE = T.SUPPLY_UNIT_PRICE + T.SUPPLY_UNIT_VAT_PRICE
|
|
,TOTAL_SUPPLY_PRICE = T.SUPPLY_UNIT_PRICE
|
|
,TOTAL_PRICE = (CASE WHEN T.DISCOUNT_PRICE != 0 THEN T.SUPPLY_UNIT_PRICE - T.DISCOUNT_PRICE ELSE NULL END)
|
|
,NEGO_RATE = (CASE WHEN T.DISCOUNT_PRICE != 0 THEN ROUND( ((1-((T.SUPPLY_UNIT_PRICE - T.DISCOUNT_PRICE)/T.SUPPLY_UNIT_PRICE))*100), 1) ELSE NULL END)
|
|
<!--
|
|
,TOTAL_REAL_SUPPLY_PRICE = T.TOTAL_REAL_SUPPLY_PRICE * REAL_ORDER_QTY
|
|
,TOTAL_PRICE = T.SUPPLY_UNIT_PRICE
|
|
,NEGO_RATE = (CASE WHEN SUPPLY_UNIT_PRICE::NUMERIC = 0 THEN 0 ELSE ROUND(T.DISCOUNT_PRICE::NUMERIC/SUPPLY_UNIT_PRICE::NUMERIC, 0) END)
|
|
-->
|
|
,TOTAL_PRICE_TXT = NUM_TO_KOR((T.SUPPLY_UNIT_PRICE + T.SUPPLY_UNIT_VAT_PRICE)::varchar,'일금 ',' 원정 (₩ ') || trim(TO_CHAR((T.SUPPLY_UNIT_PRICE + T.SUPPLY_UNIT_VAT_PRICE), '999,999,999,999')) ||')'
|
|
<!--
|
|
((1-((vTP)/colSum1))*100).toFixed(1)
|
|
-->
|
|
|
|
FROM
|
|
(SELECT
|
|
<!--
|
|
SUM(SUPPLY_UNIT_PRICE::NUMERIC) + SUM(SUPPLY_UNIT_VAT_PRICE::NUMERIC) SUPPLY_UNIT_PRICE
|
|
-->
|
|
SUM(SUPPLY_UNIT_PRICE::NUMERIC) SUPPLY_UNIT_PRICE
|
|
,SUM(TRUNC(SUPPLY_UNIT_VAT_PRICE::NUMERIC, 0)) SUPPLY_UNIT_VAT_PRICE
|
|
,SUM(TRUNC(SUPPLY_UNIT_VAT_SUM_PRICE::NUMERIC, 0)) SUPPLY_UNIT_VAT_SUM_PRICE
|
|
,SUM(TRUNC(REAL_SUPPLY_PRICE::NUMERIC, 0)) REAL_SUPPLY_PRICE
|
|
,MAX(NVL(REAL_ORDER_QTY, '0')::NUMERIC) REAL_ORDER_QTY
|
|
,(CASE WHEN COALESCE(DISCOUNT_PRICE, '') = '' THEN '0'
|
|
ELSE DISCOUNT_PRICE END)::NUMERIC AS DISCOUNT_PRICE
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
GROUP BY POM.OBJID
|
|
) T
|
|
WHERE OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
|
|
<!--
|
|
(SELECT PURCHASE_ORDER_MASTER_OBJID FROM PURCHASE_ORDER_PART POP WHERE OBJID = '1687975702')
|
|
WHERE OBJID = (SELECT PURCHASE_ORDER_MASTER_OBJID FROM PURCHASE_ORDER_PART POP WHERE OBJID = #{PURCHASE_ORDER_PART_OBJID })
|
|
-->
|
|
</update>
|
|
|
|
<!-- 매입마감 처리: PURCHASE_CLOSE_DATE를 현재일자로 업데이트 -->
|
|
<update id="updatePurchaseCloseDate" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_MASTER
|
|
SET PURCHASE_CLOSE_DATE = TO_CHAR(NOW(), 'YYYY-MM-DD')
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<update id="updatePurchaseOrderMasterPriceAll" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_MASTER SET
|
|
TOTAL_PRICE_TXT_ALL = NUM_TO_KOR((T.REAL_SUPPLY_PRICE_VAT)::varchar,'일금 ',' 원정 (₩ ') || TRIM(TO_CHAR((T.REAL_SUPPLY_PRICE_VAT), '999,999,999,999')) ||')'
|
|
,TOTAL_REAL_SUPPLY_PRICE = T.REAL_SUPPLY_PRICE
|
|
,TOTAL_PRICE_ALL = (CASE WHEN T.DISCOUNT_PRICE != 0 THEN T.REAL_SUPPLY_PRICE - T.DISCOUNT_PRICE ELSE NULL END)
|
|
FROM (SELECT
|
|
SUM(REAL_SUPPLY_PRICE::numeric) REAL_SUPPLY_PRICE
|
|
,SUM(REAL_SUPPLY_PRICE::numeric) + ROUND(SUM(REAL_SUPPLY_PRICE::numeric)*0.1) REAL_SUPPLY_PRICE_VAT
|
|
,MAX(NVL(DISCOUNT_PRICE, '0')::NUMERIC) DISCOUNT_PRICE
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
WHERE POM.OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
) T
|
|
WHERE OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
|
|
OR MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
|
|
</update>
|
|
|
|
|
|
<update id="mergePurchaseOrderPartInfo" parameterType="map">
|
|
INSERT INTO PURCHASE_ORDER_PART
|
|
(
|
|
OBJID,
|
|
PURCHASE_ORDER_MASTER_OBJID,
|
|
PART_OBJID,
|
|
BOM_QTY,
|
|
QTY,
|
|
ORDER_QTY,
|
|
PARTNER_PRICE,
|
|
REMARK,
|
|
WRITER,
|
|
REGDATE,
|
|
STATUS
|
|
,PART_NAME
|
|
,PART_NO
|
|
,DO_NO
|
|
,THICKNESS
|
|
,WIDTH
|
|
,HEIGHT
|
|
,OUT_DIAMETER
|
|
,LENGTH
|
|
,IN_DIAMETER
|
|
,INVEN_TOTAL_QTY
|
|
,LD_PART_OBJID
|
|
,SPEC
|
|
,MAKER
|
|
,UNIT
|
|
,SUPPLY_UNIT_PRICE
|
|
,PRICE1
|
|
,PRICE2
|
|
,PRICE3
|
|
,PRICE4
|
|
,SUPPLY_UNIT_VAT_PRICE
|
|
,SUPPLY_UNIT_VAT_SUM_PRICE
|
|
,TOTAL_ORDER_QTY
|
|
,STOCK_QTY
|
|
,REAL_ORDER_QTY
|
|
,REAL_SUPPLY_PRICE
|
|
,PART_DELIVERY_PLACE
|
|
,PRODUCT_NAME
|
|
,WORK_ORDER_NO
|
|
,DELIVERY_REQUEST_DATE
|
|
)
|
|
VALUES
|
|
(
|
|
#{OBJID},
|
|
#{PURCHASE_ORDER_MASTER_OBJID},
|
|
#{PART_OBJID},
|
|
REPLACE(#{BOM_QTY}::VARCHAR, ',', ''),
|
|
REPLACE(#{QTY}::VARCHAR, ',', ''),
|
|
REPLACE(#{ORDER_QTY}::VARCHAR, ',', ''),
|
|
#{PARTNER_PRICE},
|
|
#{REMARK},
|
|
#{WRITER},
|
|
NOW(),
|
|
#{STATUS}
|
|
,#{PART_NAME }
|
|
,#{PART_NO }
|
|
,#{DO_NO }
|
|
,#{THICKNESS }
|
|
,#{WIDTH }
|
|
,#{HEIGHT }
|
|
,#{OUT_DIAMETER }
|
|
,#{LENGTH }
|
|
,#{IN_DIAMETER }
|
|
,#{INVEN_TOTAL_QTY}
|
|
,#{LD_PART_OBJID }
|
|
,#{SPEC }
|
|
,#{MAKER }
|
|
,#{UNIT }
|
|
,REPLACE(#{SUPPLY_UNIT_PRICE} ::VARCHAR, ',', '')
|
|
,REPLACE(#{PRICE1} ::VARCHAR, ',', '')
|
|
,REPLACE(#{PRICE2} ::VARCHAR, ',', '')
|
|
,REPLACE(#{PRICE3} ::VARCHAR, ',', '')
|
|
,REPLACE(#{PRICE4} ::VARCHAR, ',', '')
|
|
,REPLACE(#{SUPPLY_UNIT_VAT_PRICE} ::VARCHAR, ',', '')
|
|
,REPLACE(#{SUPPLY_UNIT_VAT_SUM_PRICE}::VARCHAR, ',', '')
|
|
,REPLACE(#{TOTAL_ORDER_QTY} ::VARCHAR, ',', '')
|
|
,REPLACE(#{STOCK_QTY} ::VARCHAR, ',', '')
|
|
,REPLACE(#{REAL_ORDER_QTY} ::VARCHAR, ',', '')
|
|
,REPLACE(#{REAL_SUPPLY_PRICE} ::VARCHAR, ',', '')
|
|
,#{PART_DELIVERY_PLACE}
|
|
,#{PRODUCT_NAME}
|
|
,#{WORK_ORDER_NO}
|
|
,#{DELIVERY_REQUEST_DATE}
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE
|
|
SET
|
|
ORDER_QTY = REPLACE(#{ORDER_QTY} ::VARCHAR, ',', '')
|
|
,PARTNER_PRICE = REPLACE(#{PARTNER_PRICE} ::VARCHAR, ',', '')
|
|
,REMARK = #{REMARK}
|
|
<!--
|
|
WRITER = #{WRITER},
|
|
-->
|
|
,STATUS = #{STATUS}
|
|
,MODIFIER = #{WRITER }
|
|
,UPDATE_DATE = NOW()
|
|
,LD_PART_OBJID = #{LD_PART_OBJID }
|
|
,SPEC = #{SPEC }
|
|
,MAKER = #{MAKER }
|
|
,UNIT = #{UNIT }
|
|
,SUPPLY_UNIT_PRICE = REPLACE(#{SUPPLY_UNIT_PRICE}, ',', '')
|
|
,PRICE1 = REPLACE(#{PRICE1}::VARCHAR, ',', '')
|
|
,PRICE2 = REPLACE(#{PRICE2}::VARCHAR, ',', '')
|
|
,PRICE3 = REPLACE(#{PRICE3}::VARCHAR, ',', '')
|
|
,PRICE4 = REPLACE(#{PRICE4}::VARCHAR, ',', '')
|
|
,SUPPLY_UNIT_VAT_PRICE = REPLACE(#{SUPPLY_UNIT_VAT_PRICE} ::VARCHAR, ',', '')
|
|
,SUPPLY_UNIT_VAT_SUM_PRICE = REPLACE(#{SUPPLY_UNIT_VAT_SUM_PRICE}::VARCHAR, ',', '')
|
|
,TOTAL_ORDER_QTY = REPLACE(#{TOTAL_ORDER_QTY} ::VARCHAR, ',', '')
|
|
,STOCK_QTY = REPLACE(#{STOCK_QTY} ::VARCHAR, ',', '')
|
|
,REAL_ORDER_QTY = REPLACE(#{REAL_ORDER_QTY} ::VARCHAR, ',', '')
|
|
,REAL_SUPPLY_PRICE = REPLACE(#{REAL_SUPPLY_PRICE} ::VARCHAR, ',', '')
|
|
,PART_DELIVERY_PLACE = #{PART_DELIVERY_PLACE}
|
|
,PRODUCT_NAME = #{PRODUCT_NAME}
|
|
,WORK_ORDER_NO = #{WORK_ORDER_NO}
|
|
,DELIVERY_REQUEST_DATE = #{DELIVERY_REQUEST_DATE}
|
|
</update>
|
|
|
|
<select id="getMyCompanyInfo" parameterType="map" resultType="map">
|
|
SELECT
|
|
SM.OBJID AS MY_COMPANY_OBJID,
|
|
SM.SUPPLY_NAME AS MY_COMPANY_NAME,
|
|
SM.REG_NO AS MY_COMPANY_REG_NO,
|
|
SM.CHARGE_USER_NAME AS MY_COMPANY_CHARGE_USER_NAME,
|
|
SM.SUPPLY_ADDRESS AS MY_COMPANY_SUPPLY_ADDRESS,
|
|
SM.SUPPLY_BUSNAME AS MY_COMPANY_BUS_NAME,
|
|
SM.SUPPLY_STOCKNAME AS MY_COMPANY_SUPPLY_STOCKNAME,
|
|
SM.SUPPLY_TEL_NO AS MY_COMPANY_SUPPLY_TEL_NO,
|
|
SM.SUPPLY_FAX_NO AS MY_COMPANY_SUPPLY_FAX_NO
|
|
FROM
|
|
SUPPLY_MNG SM
|
|
WHERE OBJID::VARCHAR = #{MY_COMPANY_OBJID}::VARCHAR
|
|
</select>
|
|
|
|
<select id="getPurchaseOrderMasterInfo" parameterType="map" resultType="map">
|
|
SELECT
|
|
P.*
|
|
,(SELECT ARRAY_TO_STRING(ARRAY_AGG(OBJID),',') FROM PURCHASE_ORDER_MASTER S
|
|
WHERE P.OBJID = S.MULTI_MASTER_OBJID) MULTI_OBJIDS
|
|
FROM(
|
|
SELECT
|
|
POM.OBJID,
|
|
POM.PURCHASE_ORDER_NO,
|
|
|
|
POM.CATEGORY_CD,
|
|
POM.PRODUCT_GROUP,
|
|
POM.PRODUCT,
|
|
POM.PRODUCT_CODE,
|
|
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.CATEGORY_CD) AS CATEGORY_CD_NAME,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PRODUCT_GROUP) AS PRODUCT_GROUP_NAME,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PRODUCT) AS PRODUCT_NAME,
|
|
(SELECT PRODUCT_CODE FROM PRODUCT_MGMT AS O WHERE O.OBJID::VARCHAR = POM.PRODUCT_CODE::VARCHAR) AS PRODUCT_CODE_NAME,
|
|
|
|
POM.SALES_REQUEST_OBJID,
|
|
POM.MY_COMPANY_OBJID,
|
|
|
|
POM.PO_CLIENT_ID,
|
|
SM1.SUPPLY_NAME AS SALES_NAME,
|
|
SM1.BUS_REG_NO AS SALES_REG_NO,
|
|
SM1.CHARGE_USER_NAME AS SALES_CHARGE_USER_NAME,
|
|
SM1.SUPPLY_ADDRESS AS SALES_SUPPLY_ADDRESS,
|
|
SM1.SUPPLY_BUSNAME AS SALES_BUS_NAME,
|
|
SM1.SUPPLY_STOCKNAME AS SALES_SUPPLY_STOCKNAME,
|
|
SM1.SUPPLY_TEL_NO AS SALES_SUPPLY_TEL_NO,
|
|
SM1.SUPPLY_FAX_NO AS SALES_SUPPLY_FAX_NO,
|
|
SM1.OFFICE_NO AS SALES_SUPPLY_OFFICE_NO,
|
|
SM1.EMAIL AS SALES_EMAIL,
|
|
|
|
SM.SUPPLY_NAME AS MY_COMPANY_NAME,
|
|
SM.REG_NO AS MY_COMPANY_REG_NO,
|
|
SM.CHARGE_USER_NAME AS MY_COMPANY_CHARGE_USER_NAME,
|
|
SM.SUPPLY_ADDRESS AS MY_COMPANY_SUPPLY_ADDRESS,
|
|
SM.SUPPLY_BUSNAME AS MY_COMPANY_BUS_NAME,
|
|
SM.SUPPLY_STOCKNAME AS MY_COMPANY_SUPPLY_STOCKNAME,
|
|
SM.SUPPLY_TEL_NO AS MY_COMPANY_SUPPLY_TEL_NO,
|
|
SM.SUPPLY_FAX_NO AS MY_COMPANY_SUPPLY_FAX_NO,
|
|
SM.OFFICE_NO AS MY_COMPANY_SUPPLY_OFFICE_NO,
|
|
|
|
POM.PARTNER_OBJID,
|
|
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)
|
|
FROM
|
|
PURCHASE_ORDER_PART
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID= POM.OBJID
|
|
) AS TOTAL_ORDER_QTY,
|
|
|
|
POM.TOTAL_PRICE AS TOTAL_PRICE,
|
|
|
|
POM.DELIVERY_DATE,
|
|
POM.DELIVERY_PLACE,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.DELIVERY_PLACE) AS DELIVERY_PLACE_NAME,
|
|
POM.EFFECTIVE_DATE,
|
|
POM.PAYMENT_TERMS,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PAYMENT_TERMS) AS PAYMENT_TERMS_NAME,
|
|
POM.REMARK,
|
|
POM.PURCHASE_DATE,
|
|
|
|
POM.WRITER,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = POM.WRITER) AS WRITER_NAME,
|
|
(SELECT EMAIL FROM USER_INFO WHERE USER_ID = POM.WRITER) AS WRITER_EMAIL,
|
|
|
|
POM.SALES_MNG_USER_ID,
|
|
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_NAME,
|
|
(SELECT EMAIL FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_EMAIL,
|
|
(SELECT CELL_PHONE FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_CELL_PHONE,
|
|
|
|
POM.REGDATE,
|
|
TO_CHAR(POM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
|
POM.STATUS,
|
|
CASE POM.STATUS
|
|
WHEN 'create' THEN '등록'
|
|
WHEN 'approvalRequest' THEN '결재중'
|
|
WHEN 'approvalComplete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
A.APPR_STATUS,
|
|
A.ROUTE_OBJID,
|
|
A.APPROVAL_OBJID
|
|
,POM.TITLE
|
|
,POM.CONTRACT_MGMT_OBJID::VARCHAR
|
|
,(SELECT CONTRACT_NO FROM PROJECT_MGMT CM WHERE CM.OBJID = POM.CONTRACT_MGMT_OBJID) AS CONTRACT_NO
|
|
,(SELECT PROJECT_NO FROM PROJECT_MGMT CM WHERE CM.OBJID = POM.CONTRACT_MGMT_OBJID) AS PROJECT_NO
|
|
,(SELECT FACILITY_TYPE||' ('|| CUSTOMER_PROJECT_NAME ||')' FROM PROJECT_MGMT CM WHERE CM.OBJID = POM.CONTRACT_MGMT_OBJID) AS CONTRACT_MGNT_NAME
|
|
|
|
,POM.TYPE
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.TYPE) AS TYPE_NAME
|
|
,POM.INSPECT_METHOD
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.INSPECT_METHOD) AS INSPECT_METHOD_NAME
|
|
,POM.TOTAL_PRICE_TXT
|
|
,POM.TOTAL_PRICE_TXT_ALL
|
|
,POM.VAT_METHOD
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.VAT_METHOD) AS VAT_METHOD_NAME
|
|
,POM.TOTAL_SUPPLY_UNIT_PRICE
|
|
,POM.TOTAL_SUPPLY_PRICE
|
|
,POM.TOTAL_REAL_SUPPLY_PRICE
|
|
,POM.DISCOUNT_PRICE
|
|
,POM.NEGO_RATE
|
|
,POM.DISCOUNT_PRICE_ALL
|
|
,POM.TOTAL_PRICE_ALL
|
|
|
|
,POM.SUPPLY_BUS_NO
|
|
,POM.SUPPLY_USER_NAME
|
|
,POM.SUPPLY_USER_HP
|
|
,POM.SUPPLY_USER_TEL
|
|
,POM.SUPPLY_USER_FAX
|
|
,POM.SUPPLY_USER_EMAIL
|
|
,POM.SUPPLY_ADDR
|
|
,POM.UNIT_CODE
|
|
<!-- ,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.unit_code) AS UNIT_NAME -->
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = POM.UNIT_CODE) AS UNIT_NAME
|
|
,POM.bom_report_objid
|
|
,POM.ORDER_TYPE_CD
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.ORDER_TYPE_CD) AS ORDER_TYPE_CD_NAME
|
|
,POM.MULTI_YN
|
|
,POM.MULTI_MASTER_YN
|
|
<!--
|
|
,CASE WHEN POM.MULTI_MASTER_YN IN ('Y', 'N') THEN 'Y' ELSE 'N' END MULTI_YN
|
|
-->
|
|
,POM.PURCHASE_ORDER_NO_ORG
|
|
,(SELECT PURCHASE_ORDER_NO FROM PURCHASE_ORDER_MASTER SPOM WHERE SPOM.OBJID = POM.PURCHASE_ORDER_NO_ORG) PURCHASE_ORDER_NO_ORG_NO
|
|
,POM.SALES_STATUS
|
|
,POM.RECEPTION_STATUS
|
|
|
|
-- 담당자1 정보 (일반발주서용)
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS MANAGER_NAME
|
|
,(SELECT POSITION_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS MANAGER_POSITION
|
|
,(SELECT CELL_PHONE FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS MANAGER_PHONE
|
|
,(SELECT EMAIL FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS MANAGER_EMAIL
|
|
|
|
-- 담당자2 정보 (일반발주서용)
|
|
,POM.SALES_MNG_USER_ID2
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID2) AS MANAGER_NAME2
|
|
,(SELECT POSITION_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID2) AS MANAGER_POSITION2
|
|
,(SELECT CELL_PHONE FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID2) AS MANAGER_PHONE2
|
|
,(SELECT EMAIL FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID2) AS MANAGER_EMAIL2
|
|
|
|
-- 요청사항
|
|
,POM.REQUEST_CONTENT
|
|
|
|
-- 양식 타입 (general/outsourcing)
|
|
,COALESCE(POM.FORM_TYPE, 'general') AS FORM_TYPE
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
|
|
LEFT OUTER JOIN ADMIN_SUPPLY_MNG SM1
|
|
ON POM.PO_CLIENT_ID::VARCHAR = SM1.OBJID::VARCHAR
|
|
|
|
LEFT OUTER JOIN ADMIN_SUPPLY_MNG SM
|
|
ON POM.PARTNER_OBJID::VARCHAR = SM.OBJID::VARCHAR
|
|
<!-- ON POM.MY_COMPANY_OBJID::VARCHAR = SM.OBJID::VARCHAR -->
|
|
|
|
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
B.OBJID AS ROUTE_OBJID,
|
|
CASE B.STATUS
|
|
WHEN 'inProcess' THEN '결재중'
|
|
WHEN 'complete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
ELSE ''
|
|
END APPR_STATUS,
|
|
A.OBJID AS APPROVAL_OBJID,
|
|
A.TARGET_OBJID,
|
|
B.ROUTE_SEQ
|
|
FROM
|
|
APPROVAL A,
|
|
(
|
|
SELECT
|
|
T1.*
|
|
FROM
|
|
(
|
|
SELECT
|
|
TARGET_OBJID,
|
|
MAX(T.ROUTE_SEQ) AS ROUTE_SEQ
|
|
FROM
|
|
ROUTE T
|
|
GROUP BY
|
|
T.TARGET_OBJID
|
|
) T,
|
|
ROUTE T1
|
|
WHERE
|
|
T.TARGET_OBJID = T1.TARGET_OBJID
|
|
AND T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('PURCHASE_ORDER')
|
|
) A ON POM.OBJID::VARCHAR = A.TARGET_OBJID::VARCHAR
|
|
|
|
WHERE 1=1
|
|
AND POM.OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
) P
|
|
</select>
|
|
|
|
<select id="getPurchaseOrderMasterInfoInvoice" parameterType="map" resultType="map">
|
|
SELECT
|
|
P.*
|
|
,(SELECT ARRAY_TO_STRING(ARRAY_AGG(OBJID),',') FROM PURCHASE_ORDER_MASTER S
|
|
WHERE P.OBJID = S.MULTI_MASTER_OBJID) MULTI_OBJIDS
|
|
FROM(
|
|
SELECT
|
|
POM.OBJID,
|
|
POM.PURCHASE_ORDER_NO,
|
|
|
|
POM.CATEGORY_CD,
|
|
POM.PRODUCT_GROUP,
|
|
POM.PRODUCT,
|
|
POM.PRODUCT_CODE,
|
|
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.CATEGORY_CD) AS CATEGORY_CD_NAME,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PRODUCT_GROUP) AS PRODUCT_GROUP_NAME,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PRODUCT) AS PRODUCT_NAME,
|
|
(SELECT PRODUCT_CODE FROM PRODUCT_MGMT AS O WHERE O.OBJID::VARCHAR = POM.PRODUCT_CODE::VARCHAR) AS PRODUCT_CODE_NAME,
|
|
|
|
POM.SALES_REQUEST_OBJID,
|
|
POM.MY_COMPANY_OBJID,
|
|
SM.SUPPLY_NAME AS MY_COMPANY_NAME,
|
|
SM.REG_NO AS MY_COMPANY_REG_NO,
|
|
SM.CHARGE_USER_NAME AS MY_COMPANY_CHARGE_USER_NAME,
|
|
SM.SUPPLY_ADDRESS AS MY_COMPANY_SUPPLY_ADDRESS,
|
|
SM.SUPPLY_BUSNAME AS MY_COMPANY_BUS_NAME,
|
|
SM.SUPPLY_STOCKNAME AS MY_COMPANY_SUPPLY_STOCKNAME,
|
|
SM.SUPPLY_TEL_NO AS MY_COMPANY_SUPPLY_TEL_NO,
|
|
SM.SUPPLY_FAX_NO AS MY_COMPANY_SUPPLY_FAX_NO,
|
|
SM.OFFICE_NO AS MY_COMPANY_SUPPLY_OFFICE_NO,
|
|
|
|
POM.PARTNER_OBJID,
|
|
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)
|
|
FROM
|
|
PURCHASE_ORDER_PART
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID= POM.OBJID
|
|
) AS TOTAL_ORDER_QTY,
|
|
|
|
POM.TOTAL_PRICE AS TOTAL_PRICE,
|
|
|
|
POM.DELIVERY_DATE,
|
|
POM.DELIVERY_PLACE,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.DELIVERY_PLACE) AS DELIVERY_PLACE_NAME,
|
|
POM.EFFECTIVE_DATE,
|
|
POM.PAYMENT_TERMS,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PAYMENT_TERMS) AS PAYMENT_TERMS_NAME,
|
|
POM.REMARK,
|
|
POM.PURCHASE_DATE,
|
|
|
|
POM.WRITER,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = POM.WRITER) AS WRITER_NAME,
|
|
(SELECT EMAIL FROM USER_INFO WHERE USER_ID = POM.WRITER) AS WRITER_EMAIL,
|
|
|
|
POM.SALES_MNG_USER_ID,
|
|
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_NAME,
|
|
(SELECT EMAIL FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_EMAIL,
|
|
(SELECT CELL_PHONE FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_CELL_PHONE,
|
|
|
|
POM.REGDATE,
|
|
TO_CHAR(POM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
|
POM.STATUS,
|
|
CASE POM.STATUS
|
|
WHEN 'create' THEN '등록'
|
|
WHEN 'approvalRequest' THEN '결재중'
|
|
WHEN 'approvalComplete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
A.APPR_STATUS,
|
|
A.ROUTE_OBJID,
|
|
A.APPROVAL_OBJID
|
|
,POM.TITLE
|
|
,POM.CONTRACT_MGMT_OBJID::VARCHAR
|
|
,(SELECT CONTRACT_NO FROM PROJECT_MGMT CM WHERE CM.OBJID = POM.CONTRACT_MGMT_OBJID) AS CONTRACT_NO
|
|
,(SELECT PROJECT_NO FROM PROJECT_MGMT CM WHERE CM.OBJID = POM.CONTRACT_MGMT_OBJID) AS PROJECT_NO
|
|
,(SELECT FACILITY_TYPE||' ('|| CUSTOMER_PROJECT_NAME ||')' FROM PROJECT_MGMT CM WHERE CM.OBJID = POM.CONTRACT_MGMT_OBJID) AS CONTRACT_MGNT_NAME
|
|
|
|
,POM.type
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.type) AS type_name
|
|
,POM.inspect_method
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.inspect_method) AS inspect_method_name
|
|
,POM.total_price_txt
|
|
,POM.vat_method
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.vat_method) AS vat_method_name
|
|
,CASE WHEN POM.TOTAL_PRICE is null or POM.TOTAL_PRICE = '' THEN POM.TOTAL_SUPPLY_UNIT_PRICE
|
|
ELSE POM.TOTAL_PRICE
|
|
END TOTAL_SUPPLY_UNIT_PRICE
|
|
<!-- ,POM.total_supply_unit_price -->
|
|
,POM.total_supply_price
|
|
,POM.total_real_supply_price
|
|
,COALESCE(POM.TOTAL_REAL_SUPPLY_PRICE::numeric,0) * 1.1 as TOTAL_REAL_SUPPLY_VAT_PRICE
|
|
,POM.DISCOUNT_PRICE
|
|
,POM.DISCOUNT_PRICE_ALL
|
|
,POM.nego_rate
|
|
,POM.TOTAL_PRICE_ALL
|
|
,POM.supply_bus_no
|
|
,POM.supply_user_name
|
|
,POM.supply_user_hp
|
|
,POM.supply_user_tel
|
|
,POM.supply_user_fax
|
|
,POM.supply_user_email
|
|
,POM.supply_addr
|
|
,POM.unit_code
|
|
<!-- ,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.unit_code) AS UNIT_NAME -->
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = POM.UNIT_CODE) AS UNIT_NAME
|
|
,POM.bom_report_objid
|
|
,POM.ORDER_TYPE_CD
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.ORDER_TYPE_CD) AS ORDER_TYPE_CD_NAME
|
|
,POM.MULTI_YN
|
|
,POM.MULTI_MASTER_YN
|
|
<!--
|
|
,CASE WHEN POM.MULTI_MASTER_YN IN ('Y', 'N') THEN 'Y' ELSE 'N' END MULTI_YN
|
|
-->
|
|
,POM.PURCHASE_ORDER_NO_ORG
|
|
,POM.SALES_STATUS
|
|
,POM.RECEPTION_STATUS
|
|
,POM.NEGO_RATE
|
|
,POM.TOTAL_PRICE_ALL
|
|
<if test="GROUPSEQ != null and GROUPSEQ !='' or checkArr != null and checkArr !='' ">
|
|
,IM.OBJID AS INVOICE_OBJID
|
|
,IM.STATUS INVOICE_STATUS
|
|
,IM.REMARK AS INVOICE_REMARK
|
|
,IM.OUTSTANDING_BALANCE
|
|
,IM.PERCENTAGE
|
|
,IM.REQUEST_AMOUNT
|
|
,IM.TOTAL_SUM
|
|
,IM.DEPOSIT_AMOUNT
|
|
,IM.TOTAL_OUTSTANDING_BALANCE
|
|
,IM.RECEIVE_USER
|
|
,IM.ISSUANCE_ID
|
|
,IM.DISCOUNT_PERCENTAGE
|
|
,IM.INV_DISCOUNT_PRICE
|
|
,IM.NEGO_PRICE_ALL
|
|
,IM.NEGO_VAT_PRICE_ALL
|
|
<if test="GROUPSEQ != null and GROUPSEQ !=''">
|
|
,(SELECT SIGN FROM INVOICE_MGMT T, INBOXTASK I WHERE T.PARENT_OBJID = POM.OBJID AND T.GROUP_SEQ = #{GROUPSEQ} AND I.TARGET_OBJID::varchar = T.OBJID LIMIT 1) SIGN
|
|
,(SELECT SIGN_WIDTH FROM INVOICE_MGMT T, INBOXTASK I WHERE T.PARENT_OBJID = POM.OBJID AND T.GROUP_SEQ = #{GROUPSEQ} AND I.TARGET_OBJID::varchar = T.OBJID LIMIT 1) SIGN_WIDTH
|
|
,(SELECT SIGN_HEIGHT FROM INVOICE_MGMT T, INBOXTASK I WHERE T.PARENT_OBJID = POM.OBJID AND T.GROUP_SEQ = #{GROUPSEQ} AND I.TARGET_OBJID::varchar = T.OBJID LIMIT 1) SIGN_HEIGHT
|
|
</if>
|
|
,(SELECT SUM(NVL(INV_DISCOUNT_PRICE, '0')::NUMERIC) FROM INVOICE_MGMT T
|
|
WHERE 1=1
|
|
<if test="GROUPSEQ != null and GROUPSEQ !=''">
|
|
AND T.PARENT_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
</if>
|
|
<if test="checkArr != null and checkArr !=''">
|
|
AND T.PARENT_OBJID = #{checkArr}
|
|
</if>
|
|
) INV_DISCOUNT_PRICE_SUM
|
|
,(SELECT SUM(NVL(INV_DISCOUNT_PRICE, '0')::NUMERIC) FROM INVOICE_MGMT T
|
|
WHERE 1=1
|
|
<if test="GROUPSEQ != null and GROUPSEQ !=''">
|
|
AND T.PARENT_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
AND T.GROUP_SEQ = #{GROUPSEQ}
|
|
</if>
|
|
<if test="checkArr != null and checkArr !=''">
|
|
AND T.PARENT_OBJID = #{checkArr}
|
|
</if>
|
|
) INV_DISCOUNT_PRICE_SEQ
|
|
</if>
|
|
,(SELECT
|
|
SUM(COALESCE(REQUEST_AMOUNT,'0')::numeric)
|
|
FROM
|
|
INVOICE_MGMT IM
|
|
LEFT JOIN(
|
|
SELECT B.OBJID AS ROUTE_OBJID
|
|
,B.STATUS AS APPR_STATUS
|
|
,A.OBJID AS APPROVAL_OBJID
|
|
,A.TARGET_OBJID
|
|
,B.ROUTE_SEQ
|
|
,TO_CHAR(B.REGDATE,'YYYY-MM-DD') AS APPR_DATE
|
|
FROM APPROVAL A
|
|
,( SELECT T1.*
|
|
FROM (SELECT TARGET_OBJID
|
|
,MAX(T.ROUTE_SEQ) AS ROUTE_SEQ
|
|
FROM ROUTE T
|
|
GROUP BY T.TARGET_OBJID
|
|
) T
|
|
,ROUTE T1
|
|
WHERE T.TARGET_OBJID = T1.TARGET_OBJID
|
|
AND T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('INVOICE')
|
|
) AS A ON (IM.OBJID::VARCHAR = A.TARGET_OBJID::VARCHAR
|
|
OR EXISTS (SELECT 1 FROM APPROVAL_TARGET AT WHERE AT.APPROVAL_OBJID = A.APPROVAL_OBJID AND AT.TARGET_OBJID::VARCHAR = IM.OBJID::VARCHAR))
|
|
WHERE APPR_STATUS = 'complete' AND IM.PARENT_OBJID = POM.OBJID GROUP BY PARENT_OBJID) AS REQUEST_AMOUNT_SUM
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
|
|
LEFT OUTER JOIN ADMIN_SUPPLY_MNG SM
|
|
ON POM.PARTNER_OBJID::VARCHAR = SM.OBJID::VARCHAR
|
|
<!-- ON POM.MY_COMPANY_OBJID::VARCHAR = SM.OBJID::VARCHAR -->
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
B.OBJID AS ROUTE_OBJID,
|
|
CASE B.STATUS
|
|
WHEN 'inProcess' THEN '결재중'
|
|
WHEN 'complete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
ELSE ''
|
|
END APPR_STATUS,
|
|
A.OBJID AS APPROVAL_OBJID,
|
|
A.TARGET_OBJID,
|
|
B.ROUTE_SEQ
|
|
FROM
|
|
APPROVAL A,
|
|
(
|
|
SELECT
|
|
T1.*
|
|
FROM
|
|
(
|
|
SELECT
|
|
TARGET_OBJID,
|
|
MAX(T.ROUTE_SEQ) AS ROUTE_SEQ
|
|
FROM
|
|
ROUTE T
|
|
GROUP BY
|
|
T.TARGET_OBJID
|
|
) T,
|
|
ROUTE T1
|
|
WHERE
|
|
T.TARGET_OBJID = T1.TARGET_OBJID
|
|
AND T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('PURCHASE_ORDER')
|
|
) A ON POM.OBJID::VARCHAR = A.TARGET_OBJID::VARCHAR
|
|
<if test="GROUPSEQ != null and GROUPSEQ !=''">
|
|
LEFT OUTER JOIN INVOICE_MGMT IM
|
|
ON IM.PARENT_OBJID = POM.OBJID
|
|
AND IM.GROUP_SEQ = #{GROUPSEQ}
|
|
</if>
|
|
<if test="checkArr != null and checkArr !=''">
|
|
LEFT OUTER JOIN INVOICE_MGMT IM
|
|
ON IM.PARENT_OBJID = POM.OBJID
|
|
AND IM.OBJID = #{checkArr}
|
|
</if>
|
|
WHERE 1=1
|
|
<if test="GROUPSEQ != null and GROUPSEQ !=''">
|
|
AND POM.OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
</if>
|
|
<if test="checkArr != null and checkArr !=''">
|
|
AND POM.OBJID = (SELECT PARENT_OBJID FROM INVOICE_MGMT WHERE OBJID = #{checkArr})
|
|
</if>
|
|
) P
|
|
</select>
|
|
|
|
<!-- 구매 BOM을 통한 구매 의뢰 시 저장된 Part 정보를 가져온다. -->
|
|
<select id="getPurchaseOrderTargetPartList" parameterType="map" resultType="map">
|
|
SELECT
|
|
P.*,
|
|
(ORDER_QTY::NUMERIC -(TOTAL_DELIVERY_QTY::NUMERIC - TOTAL_DEFECT_QTY::NUMERIC)) AS NON_ARRIVAL_QTY
|
|
FROM(
|
|
SELECT
|
|
ROW_NUMBER() OVER(ORDER BY PM.PART_NO, POP.REGDATE DESC) AS RNUM,
|
|
POM.PURCHASE_ORDER_NO,
|
|
POP.PART_NAME,
|
|
<!-- POP.PART_NO, -->
|
|
PM.MATERIAL,
|
|
POP.SPEC,
|
|
<!-- PM.PART_NO, -->
|
|
CASE WHEN POM.TYPE IN ('0001070','0001069') THEN PM.PART_NO ELSE POP.PART_NO END PART_NO,
|
|
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,
|
|
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,
|
|
POP.PART_OBJID,
|
|
POP.WRITER,
|
|
POP.REGDATE,
|
|
POP.STATUS,
|
|
POP.REMARK,
|
|
POP.PARTNER_PRICE
|
|
,POP.PRICE1
|
|
,POP.PRICE2
|
|
,POP.PRICE3
|
|
,POP.maker
|
|
,pop.unit
|
|
,pop.supply_unit_price
|
|
,pop.SUPPLY_UNIT_VAT_PRICE
|
|
,pop.ld_part_objid
|
|
,(SELECT SUM(DH.DELIVERY_QTY::NUMERIC) FROM DELIVERY_HISTORY DH WHERE DH.PURCHASE_ORDER_PART_OBJID = POP.OBJID) AS TOTAL_DELIVERY_QTY
|
|
,(SELECT SUM(DH.DEFECT_QTY::NUMERIC) FROM DELIVERY_HISTORY DH WHERE DH.PURCHASE_ORDER_PART_OBJID = POP.OBJID) AS TOTAL_DEFECT_QTY
|
|
,(SELECT T.OBJID FROM DELIVERY_HISTORY T WHERE T.PURCHASE_ORDER_PART_OBJID = POP.OBJID AND DELIVERY_QTY::NUMERIC>0 ORDER BY T.REGDATE DESC LIMIT 1) AS DELIVERY_HISTORY_OBJID_LIMIT1
|
|
,(SELECT T.DELIVERY_PLAN_DATE FROM DELIVERY_HISTORY T WHERE T.PURCHASE_ORDER_PART_OBJID = POP.OBJID AND DELIVERY_QTY::NUMERIC>0 ORDER BY T.REGDATE DESC LIMIT 1) AS DELIVERY_PLAN_DATE
|
|
,(SELECT T.INSPECT_DATE FROM DELIVERY_HISTORY T WHERE T.PURCHASE_ORDER_PART_OBJID = POP.OBJID AND DELIVERY_QTY::NUMERIC>0 ORDER BY T.REGDATE DESC LIMIT 1) AS INSPECT_DATE
|
|
,(SELECT T.DEFECT_NOTE FROM DELIVERY_HISTORY T WHERE T.PURCHASE_ORDER_PART_OBJID = POP.OBJID AND DELIVERY_QTY::NUMERIC>0 ORDER BY T.REGDATE DESC LIMIT 1) AS DEFECT_NOTE
|
|
,CASE WHEN COALESCE((SELECT F.DOC_TYPE FROM DELIVERY_HISTORY T, ATTACH_FILE_INFO F WHERE F.TARGET_OBJID = T.OBJID AND DELIVERY_QTY::NUMERIC>0 AND DOC_TYPE='DELIVERY_INSPECT' AND UPPER(STATUS) = 'ACTIVE' ORDER BY T.REGDATE DESC LIMIT 1), '') != '' THEN 1
|
|
ELSE 0 END AS INSPECT_F_CNT
|
|
,(SELECT CODE_NAME FROM DELIVERY_HISTORY T, COMM_CODE C WHERE T.PURCHASE_ORDER_PART_OBJID = POP.OBJID AND DELIVERY_QTY::NUMERIC>0 AND CODE_ID = DELIVERY_PLACE_CD ORDER BY T.REGDATE DESC LIMIT 1) AS DELIVERY_PLACE_NAME
|
|
,(SELECT CODE_NAME FROM DELIVERY_HISTORY T, COMM_CODE C WHERE T.PURCHASE_ORDER_PART_OBJID = POP.OBJID AND DELIVERY_QTY::NUMERIC>0 AND CODE_ID = DEFECT_REASON ORDER BY T.REGDATE DESC LIMIT 1) AS DEFECT_REASON_NAME
|
|
,(SELECT CODE_NAME FROM DELIVERY_HISTORY T, COMM_CODE C WHERE T.PURCHASE_ORDER_PART_OBJID = POP.OBJID AND DELIVERY_QTY::NUMERIC>0 AND CODE_ID = DEFECT_RESP ORDER BY T.REGDATE DESC LIMIT 1) AS DEFECT_RESP_NAME
|
|
<!-- ,(SELECT MAX(DELIVERY_PLAN_DATE) FROM DELIVERY_HISTORY DH WHERE DH.PURCHASE_ORDER_PART_OBJID = POP.OBJID) AS DELIVERY_PLAN_DATE -->
|
|
,(SELECT MAX(DELIVERY_DATE) FROM DELIVERY_HISTORY DH WHERE DH.PURCHASE_ORDER_PART_OBJID = POP.OBJID) AS DELIVERY_DATE
|
|
,pom.delivery_date as pom_delivery_date
|
|
,HASHTEXT(REPLACE(GEN_RANDOM_UUID()::VARCHAR,'-',''))::VARCHAR AS DELIVERY_HISTORY_OBJID /*입고관리 objid*/
|
|
,DPP.OBJID DPP_OBJID
|
|
,COALESCE(DPP.PRICE , POP.PARTNER_PRICE) DPP_PRICE
|
|
,COALESCE(DPP.PRICE1 , POP.PRICE1) DPP_PRICE1
|
|
,COALESCE(DPP.PRICE2 , POP.PRICE2) DPP_PRICE2
|
|
,COALESCE(DPP.PRICE3 , POP.PRICE3) DPP_PRICE3
|
|
,COALESCE(DPP.PRICE_SUM, POP.SUPPLY_UNIT_PRICE) DPP_PRICE_SUM
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
|
|
INNER JOIN PURCHASE_ORDER_PART POP
|
|
ON POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
|
|
<!--
|
|
LEFT OUTER JOIN <include refid="partMng.partMngBase"/> PM
|
|
-->
|
|
LEFT OUTER JOIN PART_MNG PM
|
|
ON POP.PART_OBJID = PM.OBJID::TEXT
|
|
|
|
LEFT OUTER JOIN DELIVERY_PART_PRICE DPP
|
|
ON POP.OBJID = DPP.PURCHASE_ORDER_PART_OBJID
|
|
|
|
WHERE 1=1
|
|
|
|
<if test="PURCHASE_ORDER_MASTER_OBJID != null and PURCHASE_ORDER_MASTER_OBJID !=''">
|
|
AND POM.OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
</if>
|
|
|
|
<if test="checkArr != null and checkArr !=''">
|
|
<![CDATA[ AND 0 < POSITION(POM.OBJID::TEXT || ',' IN #{checkArr}||',') ]]>
|
|
</if>
|
|
) P
|
|
<!--
|
|
ORDER BY PART_NO, PART_NAME
|
|
ORDER BY RNUM
|
|
-->
|
|
</select>
|
|
|
|
<!-- 구매 BOM 정의 후 수입검사 등록 Part 목록을 가져온다. -->
|
|
<select id="getPurchaseOrderDeliveryTargetPartList" parameterType="map" resultType="map">
|
|
SELECT
|
|
P.*,
|
|
(REAL_ORDER_QTY::NUMERIC -TOTAL_DELIVERY_QTY::NUMERIC) AS NON_ARRIVAL_QTY
|
|
<!-- (ORDER_QTY::NUMERIC -(TOTAL_DELIVERY_QTY::NUMERIC - TOTAL_DEFECT_QTY::NUMERIC)) AS NON_ARRIVAL_QTY -->
|
|
FROM(
|
|
SELECT
|
|
ROW_NUMBER() OVER(ORDER BY PM.PART_NO, POP.REGDATE DESC) AS RNUM,
|
|
POM.PURCHASE_ORDER_NO,
|
|
POP.PART_NAME,
|
|
<!-- POP.PART_NO, -->
|
|
PM.MATERIAL,
|
|
POP.SPEC,
|
|
<!-- PM.PART_NO, -->
|
|
CASE WHEN POM.TYPE IN ('0001070','0001069') THEN PM.PART_NO ELSE POP.PART_NO END PART_NO,
|
|
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,
|
|
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,
|
|
POP.PURCHASE_ORDER_MASTER_OBJID,
|
|
POP.PART_OBJID,
|
|
POP.WRITER,
|
|
POP.REGDATE,
|
|
POP.STATUS,
|
|
POP.REMARK,
|
|
POP.PARTNER_PRICE
|
|
,POP.PRICE1
|
|
,POP.PRICE2
|
|
,POP.PRICE3
|
|
,POP.maker
|
|
,pop.unit
|
|
,pop.supply_unit_price
|
|
,pop.SUPPLY_UNIT_VAT_PRICE
|
|
,pop.ld_part_objid
|
|
,coalesce(AP.TOTAL_DELIVERY_QTY, '0') as TOTAL_DELIVERY_QTY
|
|
,coalesce(AP.TOTAL_DEFECT_QTY, '0') as TOTAL_DEFECT_QTY
|
|
,pom.delivery_date as pom_delivery_date
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
INNER JOIN PURCHASE_ORDER_PART POP
|
|
ON POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
<!--
|
|
LEFT OUTER JOIN <include refid="partMng.partMngBase"/> PM
|
|
-->
|
|
LEFT OUTER JOIN PART_MNG PM
|
|
ON POP.PART_OBJID = PM.OBJID::TEXT
|
|
|
|
LEFT OUTER JOIN (
|
|
SELECT
|
|
ORDER_PART_OBJID
|
|
,SUM(RECEIPT_QTY::NUMERIC) AS TOTAL_DELIVERY_QTY
|
|
,SUM(ERROR_QTY::NUMERIC) AS TOTAL_DEFECT_QTY
|
|
FROM
|
|
ARRIVAL_PLAN AP
|
|
WHERE
|
|
PARENT_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
GROUP BY ORDER_PART_OBJID
|
|
)AP on AP.ORDER_PART_OBJID = POP.OBJID
|
|
WHERE 1=1
|
|
|
|
<if test="PURCHASE_ORDER_MASTER_OBJID != null and PURCHASE_ORDER_MASTER_OBJID !=''">
|
|
AND POM.OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
</if>
|
|
|
|
<if test="checkArr != null and checkArr !=''">
|
|
<![CDATA[ AND 0 < POSITION(POM.OBJID::TEXT || ',' IN #{checkArr}||',') ]]>
|
|
</if>
|
|
) P
|
|
<!--
|
|
ORDER BY PART_NO, PART_NAME
|
|
ORDER BY RNUM
|
|
-->
|
|
</select>
|
|
|
|
<update id="updatePurchaseOrderMasterMultiInfo" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_MASTER
|
|
SET MULTI_MASTER_YN = #{MULTI_MASTER_YN}
|
|
,MULTI_YN = #{MULTI_YN}
|
|
WHERE OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
</update>
|
|
|
|
<update id="updatePurchaseOrderNegoPrice" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_MASTER
|
|
SET NEGO_RATE = #{NEGO_RATE}
|
|
,DISCOUNT_PRICE_ALL = #{DISCOUNT_PRICE_ALL}
|
|
,DISCOUNT_PRICE = (CASE WHEN NVL(#{DISCOUNT_PRICE_ALL}::VARCHAR, '') != '' THEN ROUND(NVL(#{DISCOUNT_PRICE_ALL}::VARCHAR, '0')::NUMERIC/(SELECT COUNT(1) FROM PURCHASE_ORDER_MASTER WHERE OBJID = #{OBJID} OR MULTI_MASTER_OBJID = #{OBJID}),1)
|
|
ELSE NULL END)
|
|
<!--
|
|
,TOTAL_SUPPLY_UNIT_PRICE = #{TOTAL_SUPPLY_UNIT_PRICE}
|
|
,TOTAL_PRICE = #{TOTAL_PRICE}
|
|
-->
|
|
,TOTAL_PRICE = (CASE WHEN NVL(#{TOTAL_PRICE_ALL}::VARCHAR, '') != '' THEN ROUND(NVL(#{TOTAL_PRICE_ALL}::VARCHAR, '0')::NUMERIC/(SELECT COUNT(1) FROM PURCHASE_ORDER_MASTER WHERE OBJID = #{OBJID} OR MULTI_MASTER_OBJID = #{OBJID}),1)
|
|
ELSE NULL END)
|
|
,TOTAL_PRICE_ALL = #{TOTAL_PRICE_ALL}
|
|
,TOTAL_SUPPLY_UNIT_PRICE = FLOOR(NVL(#{TOTAL_PRICE}::VARCHAR, TOTAL_SUPPLY_PRICE)::NUMERIC * 1.1)
|
|
,TOTAL_SUPPLY_UNIT_PRICE_ALL = FLOOR(NVL(#{TOTAL_PRICE_ALL}::VARCHAR, TOTAL_REAL_SUPPLY_PRICE)::NUMERIC * 1.1)
|
|
<!--
|
|
,TOTAL_PRICE_TXT = NUM_TO_KOR(#{TOTAL_PRICE_ALL},'일금 ',' 원정 (₩ ') || TO_CHAR((#{TOTAL_PRICE_ALL})::INTEGER, '999,999,999,999') ||')'
|
|
,TOTAL_PRICE_TXT_ALL = NUM_TO_KOR(#{TOTAL_PRICE_ALL},'일금 ',' 원정 (₩ ') || TO_CHAR((#{TOTAL_PRICE_ALL})::INTEGER, '999,999,999,999') ||')'
|
|
-->
|
|
WHERE ( OBJID = #{OBJID}
|
|
OR MULTI_MASTER_OBJID = #{OBJID}
|
|
<!-- 240402 동시발주 단가 싱크처리 막음
|
|
OR MULTI_MASTER_OBJID = #{OBJID}
|
|
-->
|
|
)
|
|
<!-- 241014 네고금액 저장시 결재완료건 조건 막음
|
|
AND STATUS = 'approvalComplete'
|
|
-->
|
|
</update>
|
|
|
|
<update id="updatePurchaseOrderPriceTxt" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_MASTER
|
|
SET
|
|
TOTAL_PRICE_TXT = NUM_TO_KOR(TOTAL_SUPPLY_UNIT_PRICE,'일금 ',' 원정 (₩ ') || TO_CHAR((TOTAL_SUPPLY_UNIT_PRICE)::Numeric, '999,999,999,999') ||')'
|
|
,TOTAL_PRICE_TXT_ALL = NUM_TO_KOR(TOTAL_SUPPLY_UNIT_PRICE_ALL,'일금 ',' 원정 (₩ ') || TO_CHAR((TOTAL_SUPPLY_UNIT_PRICE_ALL)::Numeric, '999,999,999,999') ||')'
|
|
WHERE ( OBJID = #{OBJID}
|
|
OR MULTI_MASTER_OBJID = #{OBJID}
|
|
)
|
|
</update>
|
|
|
|
<!-- 동시발주 저장 시 저장된 프로젝트정보를 초기화 -->
|
|
<delete id="delPurchaseOrderMaster" parameterType="map">
|
|
DELETE FROM PURCHASE_ORDER_MASTER
|
|
WHERE MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
<!-- AND CONTRACT_MGMT_OBJID NOT IN -->
|
|
AND OBJID NOT IN
|
|
<foreach collection="checkArr" item="objkey" index="index" separator="," open="(" close=")">
|
|
#{objkey}
|
|
</foreach>
|
|
</delete>
|
|
<delete id="delPurchaseOrderPart" parameterType="map">
|
|
DELETE FROM PURCHASE_ORDER_PART
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID IN
|
|
(SELECT OBJID FROM PURCHASE_ORDER_MASTER
|
|
WHERE MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
)
|
|
AND PURCHASE_ORDER_MASTER_OBJID IN
|
|
(SELECT OBJID FROM PURCHASE_ORDER_MASTER
|
|
WHERE ( <!-- OBJID = #{PURCHASE_ORDER_MASTER_OBJID} OR -->
|
|
MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID})
|
|
AND OBJID NOT IN
|
|
<foreach collection="checkArr" item="objkey" index="index" separator="," open="(" close=")">
|
|
#{objkey}
|
|
</foreach>
|
|
)
|
|
</delete>
|
|
<delete id="delPurchaseOrderMulti" parameterType="map">
|
|
DELETE FROM PURCHASE_ORDER_MULTI
|
|
WHERE MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
AND OBJID NOT IN
|
|
<foreach collection="checkArr" item="objkey" index="index" separator="," open="(" close=")">
|
|
#{objkey}
|
|
</foreach>
|
|
</delete>
|
|
|
|
<!-- 구매의뢰 저장 시 저장된 파트 정보를 초기화 -->
|
|
<delete id="initPurchaseOrderPart" parameterType="map">
|
|
DELETE FROM PURCHASE_ORDER_PART
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
</delete>
|
|
|
|
<delete id="initPurchaseOrderPartMulti" parameterType="map">
|
|
DELETE FROM PURCHASE_ORDER_PART
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
OR PURCHASE_ORDER_MASTER_OBJID IN (SELECT OBJID
|
|
FROM PURCHASE_ORDER_MASTER
|
|
WHERE MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID})
|
|
</delete>
|
|
<delete id="deletePurchaseOrderMaster" parameterType="map">
|
|
DELETE FROM PURCHASE_ORDER_MASTER
|
|
WHERE 1=1
|
|
<if test="checkArr != null and checkArr !=''">
|
|
<![CDATA[ AND 0 < POSITION(OBJID::TEXT || ',' IN #{checkArr}||',') ]]>
|
|
</if>
|
|
</delete>
|
|
<delete id="deletePurchaseOrderPart" parameterType="map">
|
|
DELETE FROM PURCHASE_ORDER_PART
|
|
WHERE 1=1
|
|
<if test="checkArr != null and checkArr !=''">
|
|
<![CDATA[ AND 0 < POSITION(PURCHASE_ORDER_MASTER_OBJID::TEXT || ',' IN #{checkArr}||',') ]]>
|
|
</if>
|
|
</delete>
|
|
|
|
<!-- 취소 -->
|
|
<update id="cancelPurchaseOrderMasterMulti" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_MASTER
|
|
SET STATUS = 'cancel'
|
|
WHERE
|
|
<![CDATA[ 0 < POSITION(OBJID::TEXT || ',' IN #{materOrdObjId}||',') ]]>
|
|
OR <![CDATA[ 0 < POSITION(MULTI_MASTER_OBJID::TEXT || ',' IN #{materOrdObjId}||',') ]]>
|
|
<if test="checkArr != null and checkArr !=''">
|
|
</if>
|
|
</update>
|
|
|
|
<!-- 입고결과 이력 등록 -->
|
|
<insert id="insertDeliveryHistory" parameterType="map">
|
|
INSERT INTO DELIVERY_HISTORY
|
|
(
|
|
OBJID,
|
|
PART_OBJID,
|
|
LD_PART_OBJID,
|
|
PURCHASE_ORDER_PART_OBJID,
|
|
ORDER_QTY,
|
|
DELIVERY_QTY,
|
|
DELIVERY_PLACE_CD,
|
|
DELIVERY_DATE,
|
|
DELIVERY_PLAN_DATE,
|
|
REMARK,
|
|
WRITER,
|
|
REGDATE,
|
|
NON_ARRIVAL_QTY,
|
|
DELIVERY_MNG_NO
|
|
,DEFECT_QTY
|
|
,INSPECT_DATE
|
|
,DEFECT_REASON
|
|
,DEFECT_RESP
|
|
,RESULT
|
|
,DEFECT_NOTE
|
|
)VALUES(
|
|
#{OBJID},
|
|
#{PART_OBJID},
|
|
#{LD_PART_OBJID},
|
|
#{PURCHASE_ORDER_PART_OBJID},
|
|
#{ORDER_QTY},
|
|
#{DELIVERY_QTY},
|
|
#{DELIVERY_PLACE_CD},
|
|
#{DELIVERY_DATE},
|
|
#{DELIVERY_PLAN_DATE},
|
|
#{REMARK},
|
|
#{WRITER},
|
|
NOW(),
|
|
#{NON_ARRIVAL_QTY},
|
|
(SELECT 'I'||TO_CHAR(NOW(),'YYYYMMDD')||'-'||LPAD((COALESCE(MAX(SUBSTR(DELIVERY_MNG_NO,11,13)),'0')::INTEGER+1)::TEXT,3,'0') FROM DELIVERY_HISTORY)
|
|
,#{DEFECT_QTY}
|
|
,#{INSPECT_DATE}
|
|
,#{DEFECT_REASON}
|
|
,#{DEFECT_RESP}
|
|
,#{RESULT}
|
|
,#{DEFECT_NOTE}
|
|
)
|
|
</insert>
|
|
<update id="updateDeliveryHistory" parameterType="map">
|
|
UPDATE DELIVERY_HISTORY
|
|
SET
|
|
<!--
|
|
ORDER_QTY = #{ORDER_QTY}
|
|
,DELIVERY_PRICE = #{DELIVERY_PRICE}
|
|
,DELIVERY_PLAN_DATE = #{DELIVERY_PLAN_DATE}
|
|
,DELIVERY_MNG_NO = #{DELIVERY_MNG_NO}
|
|
-->
|
|
DELIVERY_QTY = #{DELIVERY_QTY}
|
|
,DELIVERY_PLACE_CD = #{DELIVERY_PLACE_CD}
|
|
,DELIVERY_DATE = #{DELIVERY_DATE}
|
|
|
|
,INSPECT_DATE = #{INSPECT_DATE}
|
|
,DEFECT_QTY = #{DEFECT_QTY}
|
|
,DEFECT_RESP = #{DEFECT_RESP}
|
|
,DEFECT_REASON = #{DEFECT_REASON}
|
|
|
|
,MODWRITER = #{WRITER}
|
|
,MODDATE = NOW()
|
|
<!--
|
|
,NON_ARRIVAL_QTY = #{NON_ARRIVAL_QTY}
|
|
,RESULT = #{RESULT}
|
|
,REMARK = #{REMARK}
|
|
,DEFECT_CONTENT = #{DEFECT_CONTENT}
|
|
,DEFECT_ACTION = #{DEFECT_ACTION}
|
|
,DEFECT_NOTE = #{DEFECT_NOTE}
|
|
,DEFECT_ACTION_DATE = #{DEFECT_ACTION_DATE}
|
|
,DEFECT_ACTION_TITLE = #{DEFECT_ACTION_TITLE}
|
|
-->
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<!-- 자재(RESOURCE_MNG) 생성 - 중복 시 무시 -->
|
|
<insert id="insertResourceMasterMng" parameterType="map">
|
|
INSERT INTO RESOURCE_MNG
|
|
(
|
|
OBJID,
|
|
PART_OBJID,
|
|
LD_PART_OBJID,
|
|
PART_NAME,
|
|
SPEC,
|
|
MATERIAL,
|
|
UNIT,
|
|
MAKER,
|
|
WEIGHT,
|
|
REGDATE,
|
|
WRITER
|
|
)
|
|
VALUES
|
|
(
|
|
#{OBJID}::NUMERIC,
|
|
#{PART_OBJID},
|
|
#{LD_PART_OBJID},
|
|
(SELECT PM.PART_NAME FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = #{PART_OBJID}::VARCHAR),
|
|
#{SPEC},
|
|
(SELECT PM.MATERIAL FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = #{PART_OBJID}::VARCHAR),
|
|
#{MAKER},
|
|
#{UNIT},
|
|
(SELECT PM.WEIGHT FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = #{PART_OBJID}::VARCHAR),
|
|
NOW(),
|
|
#{WRITER}
|
|
)
|
|
ON CONFLICT (PART_OBJID) DO NOTHING
|
|
</insert>
|
|
|
|
<!-- 마지막 재고 정보를 가져온다. -->
|
|
<select id="getLastInventoryInfo" parameterType="map" resultType="map">
|
|
SELECT
|
|
*
|
|
FROM
|
|
INVENTORY_MNG
|
|
WHERE 1=1
|
|
AND IS_LAST = 'Y'
|
|
AND PARENT_OBJID = (SELECT OBJID FROM RESOURCE_MNG WHERE PART_OBJID = #{PART_OBJID})
|
|
AND LOCATION = #{LOCATION}
|
|
AND SUB_LOCATION = #{SUB_LOCATION}
|
|
<!-- AND LOCATION = #{DELIVERY_PLACE_CD} -->
|
|
</select>
|
|
<select id="getLastInventoryInfoLD" parameterType="map" resultType="map">
|
|
SELECT
|
|
*
|
|
FROM
|
|
INVENTORY_MNG
|
|
WHERE 1=1
|
|
AND IS_LAST = 'Y'
|
|
AND LD_PART_OBJID = (SELECT LD_PART_OBJID FROM RESOURCE_MNG WHERE LD_PART_OBJID = #{LD_PART_OBJID})
|
|
AND LOCATION = #{LOCATION}
|
|
AND SUB_LOCATION = #{SUB_LOCATION}
|
|
<!-- AND LOCATION = #{DELIVERY_PLACE_CD} -->
|
|
</select>
|
|
|
|
<!-- 해당 자재마스터내 동일 위치 재고 변경 시 최종여부를 초기화 한다. -->
|
|
<update id="resetInventoryRegist" parameterType="map">
|
|
UPDATE
|
|
INVENTORY_MNG
|
|
SET
|
|
IS_LAST = 'N'
|
|
WHERE PARENT_OBJID = (SELECT RM.OBJID FROM RESOURCE_MNG RM WHERE PART_OBJID = #{PART_OBJID})
|
|
AND LOCATION = #{LOCATION}
|
|
AND SUB_LOCATION = #{SUB_LOCATION}
|
|
<!-- AND LOCATION = #{DELIVERY_PLACE_CD} -->
|
|
</update>
|
|
<update id="resetInventoryRegistLD" parameterType="map">
|
|
UPDATE
|
|
INVENTORY_MNG
|
|
SET
|
|
IS_LAST = 'N'
|
|
WHERE LD_PART_OBJID = #{LD_PART_OBJID}
|
|
AND LOCATION = #{LOCATION}
|
|
AND SUB_LOCATION = #{SUB_LOCATION}
|
|
<!-- AND LOCATION = #{DELIVERY_PLACE_CD} -->
|
|
</update>
|
|
|
|
<select id="getDeliveryResultHistoryList" parameterType="map" resultType="map">
|
|
SELECT
|
|
P.*
|
|
FROM(
|
|
SELECT
|
|
ROW_NUMBER() OVER(ORDER BY PM.PART_NO, DH.REGDATE DESC) AS RNUM,
|
|
POM.PURCHASE_ORDER_NO,
|
|
POP.PART_NAME,
|
|
PM.MATERIAL,
|
|
POP.SPEC,
|
|
PM.PART_NO,
|
|
PM.REVISION,
|
|
PM.PART_NAME||'('||PM.MATERIAL||','||PM.SPEC||')/'||PM.PART_NO 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 SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME,
|
|
(SELECT SUM(DH.DELIVERY_QTY::NUMERIC) FROM DELIVERY_HISTORY DH WHERE DH.PURCHASE_ORDER_PART_OBJID = POP.OBJID) AS TOTAL_DELIVERY_QTY,
|
|
(SELECT SUM(DH.DEFECT_QTY::NUMERIC) FROM DELIVERY_HISTORY DH WHERE DH.PURCHASE_ORDER_PART_OBJID = POP.OBJID) AS TOTAL_DEFECT_QTY,
|
|
POP.OBJID,
|
|
POP.PURCHASE_ORDER_MASTER_OBJID,
|
|
POP.PART_OBJID,
|
|
POP.LD_PART_OBJID,
|
|
|
|
dh.objid as dh_objid,
|
|
DH.OBJID as DELIVERY_HISTORY_OBJID,
|
|
DH.ORDER_QTY,
|
|
DH.DELIVERY_QTY,
|
|
DH.DELIVERY_PLACE_CD,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = DELIVERY_PLACE_CD) AS DELIVERY_PLACE_NAME,
|
|
|
|
DH.WRITER,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = POM.WRITER) AS WRITER_NAME,
|
|
|
|
DH.REMARK,
|
|
DH.DELIVERY_DATE,
|
|
DH.NON_ARRIVAL_QTY,
|
|
DH.DELIVERY_MNG_NO
|
|
|
|
,pop.maker
|
|
,POP.UNIT
|
|
,pop.order_qty as pop_order_qty
|
|
,pop.partner_price
|
|
,pop.supply_unit_price
|
|
,pop.SUPPLY_UNIT_VAT_PRICE
|
|
,dh.delivery_plan_date
|
|
,dh.defect_qty
|
|
,pom.delivery_date as pom_delivery_date
|
|
,dh.inspect_date
|
|
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = DH.OBJID AND DOC_TYPE='DELIVERY_INSPECT' AND UPPER(STATUS) = 'ACTIVE') AS F_CNT
|
|
,dh.defect_reason
|
|
,dh.DEFECT_NOTE
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = dh.defect_reason) AS defect_reason_name
|
|
,dh.defect_resp
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = dh.defect_resp) AS defect_resp_name
|
|
,dh.result
|
|
FROM
|
|
DELIVERY_HISTORY DH
|
|
|
|
INNER JOIN PURCHASE_ORDER_PART POP
|
|
<!-- 240322 아래로 대체
|
|
ON DH.PURCHASE_ORDER_PART_OBJID = POP.OBJID
|
|
-->
|
|
ON DH.PART_OBJID = POP.PART_OBJID
|
|
|
|
INNER JOIN PURCHASE_ORDER_MASTER POM
|
|
ON POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
<!--
|
|
LEFT OUTER JOIN <include refid="partMng.partMngBase"/> PM
|
|
-->
|
|
LEFT OUTER JOIN PART_MNG PM
|
|
ON POP.PART_OBJID = PM.OBJID::TEXT
|
|
WHERE 1=1
|
|
AND <![CDATA[ DH.DELIVERY_QTY::integer > 0::integer]]>
|
|
|
|
<if test="PURCHASE_ORDER_MASTER_OBJID != null and PURCHASE_ORDER_MASTER_OBJID !=''">
|
|
AND POM.OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
</if>
|
|
) P
|
|
|
|
</select>
|
|
|
|
<select id="getPURCHASE_ORDER_PART" parameterType="map" resultType="map">
|
|
SELECT T.*
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = T.UNIT) AS UNIT_NAME
|
|
,P.PART_NO P_PART_NO
|
|
,POM.BOM_REPORT_OBJID
|
|
,POM.PURCHASE_ORDER_NO
|
|
,(SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::varchar = POM.PARTNER_OBJID) AS PARTNER_NAME
|
|
FROM PURCHASE_ORDER_PART T
|
|
INNER JOIN PURCHASE_ORDER_MASTER POM
|
|
ON POM.OBJID = T.PURCHASE_ORDER_MASTER_OBJID
|
|
LEFT OUTER JOIN PART_MNG P
|
|
ON T.PART_OBJID = P.OBJID::VARCHAR
|
|
WHERE T.PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
ORDER BY P.PART_NO
|
|
</select>
|
|
|
|
<select id="getPURCHASE_ORDER_PART_INVOICE" parameterType="map" resultType="map">
|
|
SELECT
|
|
T1.*
|
|
,TOTAL_SUM_PRICE * COALESCE(T1.RECEIPT_QTY::numeric, 0) AS TOTAL_PARTNER_PRICE
|
|
,(TOTAL_SUM_PRICE * COALESCE(T1.RECEIPT_QTY::numeric, 0) * 0.1) AS TOTAL_PARTNER_VAT_PRICE
|
|
FROM
|
|
(SELECT
|
|
T.*
|
|
,(SELECT TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT) AS UNIT_NAME
|
|
,P.PART_NO P_PART_NO
|
|
,AP.RECEIPT_DATE
|
|
,AP.RECEIPT_QTY
|
|
,(COALESCE(NULLIF(T.PARTNER_PRICE, '')::numeric,0) + COALESCE(NULLIF(T.PRICE1, '')::numeric,0) + COALESCE(NULLIF(T.PRICE2, '')::numeric,0) + COALESCE(NULLIF(T.PRICE3, '')::numeric,0) + COALESCE(NULLIF(T.PRICE4, '')::numeric,0)) AS TOTAL_SUM_PRICE
|
|
<!-- ,(T.PARTNER_PRICE::numeric * COALESCE(AP.RECEIPT_QTY::numeric, 0))*0.1 AS TOTAL_PARTNER_VAT_PRICE -->
|
|
FROM
|
|
PURCHASE_ORDER_PART T
|
|
LEFT OUTER JOIN PART_MNG P
|
|
ON T.PART_OBJID = P.OBJID::VARCHAR
|
|
LEFT OUTER JOIN ARRIVAL_PLAN AP
|
|
ON T.OBJID = AP.ORDER_PART_OBJID
|
|
AND T.PURCHASE_ORDER_MASTER_OBJID = AP.PARENT_OBJID
|
|
<if test="GROUPSEQ != null and GROUPSEQ !=''">
|
|
AND GROUP_SEQ = #{GROUPSEQ}
|
|
WHERE T.PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
</if>
|
|
<if test="checkArr != null and checkArr !=''">
|
|
AND GROUP_SEQ = (SELECT group_seq FROM INVOICE_MGMT WHERE OBJID = #{checkArr} )
|
|
WHERE T.PURCHASE_ORDER_MASTER_OBJID = (SELECT PARENT_OBJID FROM INVOICE_MGMT WHERE OBJID = #{checkArr} )
|
|
</if>
|
|
ORDER BY P.PART_NO ) AS T1
|
|
</select>
|
|
|
|
<select id="getPurchase_SAVED_PART_INVOICE" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.OBJID
|
|
,T.INVOICE_OBJID
|
|
,T.PART_OBJID
|
|
,T.REMARK
|
|
,T.QTY AS RECEIPT_QTY
|
|
,T.UNIT_PRICE AS TOTAL_SUM_PRICE
|
|
,T.PARTNER_PRICE AS TOTAL_PARTNER_PRICE
|
|
,T.VAT_PRICE AS TOTAL_PARTNER_VAT_PRICE
|
|
,T.RECEIPT_DATE
|
|
,P.PART_NAME
|
|
,P.PART_NO
|
|
,P.SPEC
|
|
FROM
|
|
INVOICE_MGMT_PART T
|
|
LEFT OUTER JOIN PART_MNG P
|
|
ON T.PART_OBJID = P.OBJID::VARCHAR
|
|
WHERE INVOICE_OBJID = #{INVOICE_OBJID}
|
|
</select>
|
|
|
|
<select id="getPURCHASE_ORDER_PART_INVOICE_sum" parameterType="map" resultType="map">
|
|
SELECT
|
|
SUM(TOTAL_PARTNER_PRICE) AS TOTAL_PARTNER_PRICE_SUM,
|
|
SUM(NEGO_TOTAL_PARTNER_PRICE) AS NEGO_PRICE_ALL,
|
|
SUM(NEGO_TOTAL_PARTNER_PRICE) * 0.1 AS NEGO_VAT_PRICE_ALL,
|
|
SUM(TOTAL_PARTNER_VAT_PRICE) TOTAL_PARTNER_VAT_PRICE_SUM,
|
|
(SUM(TOTAL_PARTNER_PRICE) + SUM(TOTAL_PARTNER_VAT_PRICE)) AS TOTAL_PRICE_SUM
|
|
FROM (
|
|
SELECT
|
|
T1.*
|
|
,TOTAL_SUM_PRICE * COALESCE(T1.RECEIPT_QTY::numeric, 0) AS TOTAL_PARTNER_PRICE
|
|
,TOTAL_SUM_PRICE * COALESCE(T1.RECEIPT_QTY::numeric, 0) * (100 - T1.NEGO_RATE::numeric) / 100 AS NEGO_TOTAL_PARTNER_PRICE
|
|
,(TOTAL_SUM_PRICE * COALESCE(T1.RECEIPT_QTY::numeric, 0) * 0.1) AS TOTAL_PARTNER_VAT_PRICE
|
|
FROM
|
|
(SELECT
|
|
T.*
|
|
,POM.NEGO_RATE
|
|
,(SELECT TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT) AS UNIT_NAME
|
|
,P.PART_NO P_PART_NO
|
|
,AP.RECEIPT_DATE
|
|
,AP.RECEIPT_QTY
|
|
,(COALESCE(T.PARTNER_PRICE::numeric,0) + COALESCE(T.PRICE1::numeric,0) + COALESCE(T.PRICE2::numeric,0) + COALESCE(T.PRICE3::numeric,0) + COALESCE(T.PRICE4::numeric,0)) AS TOTAL_SUM_PRICE
|
|
<!-- ,(T.PARTNER_PRICE::numeric * COALESCE(AP.RECEIPT_QTY::numeric, 0))*0.1 AS TOTAL_PARTNER_VAT_PRICE -->
|
|
FROM
|
|
PURCHASE_ORDER_PART T
|
|
LEFT OUTER JOIN PART_MNG P
|
|
ON T.PART_OBJID = P.OBJID::VARCHAR
|
|
LEFT OUTER JOIN PURCHASE_ORDER_MASTER POM
|
|
ON POM.OBJID = T.PURCHASE_ORDER_MASTER_OBJID
|
|
LEFT OUTER JOIN ARRIVAL_PLAN AP
|
|
ON T.OBJID = AP.ORDER_PART_OBJID
|
|
AND T.PURCHASE_ORDER_MASTER_OBJID = AP.PARENT_OBJID
|
|
<if test="GROUPSEQ != null and GROUPSEQ !=''">
|
|
AND GROUP_SEQ = #{GROUPSEQ}
|
|
WHERE T.PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
</if>
|
|
<if test="checkArr != null and checkArr !=''">
|
|
AND GROUP_SEQ = (SELECT group_seq FROM INVOICE_MGMT WHERE OBJID = #{checkArr} )
|
|
WHERE T.PURCHASE_ORDER_MASTER_OBJID = (SELECT PARENT_OBJID FROM INVOICE_MGMT WHERE OBJID = #{checkArr} )
|
|
</if>
|
|
ORDER BY P.PART_NO ) AS T1
|
|
) AS S1
|
|
WHERE 1=1
|
|
</select>
|
|
|
|
<select id="getPURCHASE_SAVED_PART_INVOICE_sum" parameterType="map" resultType="map">
|
|
SELECT
|
|
TOTAL_PARTNER_PRICE_SUM,
|
|
NEGO_PRICE_ALL,
|
|
NEGO_VAT_PRICE_ALL,
|
|
TOTAL_PARTNER_VAT_PRICE_SUM,
|
|
(COALESCE(TOTAL_PARTNER_PRICE_SUM::NUMERIC,0) + COALESCE(TOTAL_PARTNER_VAT_PRICE_SUM::NUMERIC,0))
|
|
FROM
|
|
INVOICE_MGMT T
|
|
WHERE OBJID = #{INVOICE_OBJID}
|
|
<!-- SELECT
|
|
SUM(coalesce(TOTAL_PARTNER_PRICE::numeric, 0)) AS TOTAL_PARTNER_PRICE_SUM,
|
|
SUM(coalesce(NEGO_TOTAL_PARTNER_PRICE::numeric, 0)) AS NEGO_PRICE_ALL,
|
|
SUM(coalesce(NEGO_TOTAL_PARTNER_PRICE::numeric, 0)) * 0.1 AS NEGO_VAT_PRICE_ALL,
|
|
SUM(coalesce(TOTAL_PARTNER_VAT_PRICE::numeric, 0)) TOTAL_PARTNER_VAT_PRICE_SUM,
|
|
(SUM(coalesce(TOTAL_PARTNER_PRICE::numeric, 0)) + SUM(coalesce(TOTAL_PARTNER_VAT_PRICE::numeric, 0))) AS TOTAL_PRICE_SUM
|
|
FROM (SELECT
|
|
T.OBJID
|
|
,T.INVOICE_OBJID
|
|
,T.PART_OBJID
|
|
,T.REMARK
|
|
,T.QTY AS RECEIPT_QTY
|
|
,T.UNIT_PRICE AS TOTAL_SUM_PRICE
|
|
,T.PARTNER_PRICE AS TOTAL_PARTNER_PRICE
|
|
,T.VAT_PRICE AS TOTAL_PARTNER_VAT_PRICE
|
|
,T.RECEIPT_DATE
|
|
,P.PART_NAME
|
|
,P.PART_NO
|
|
,P.SPEC
|
|
FROM
|
|
INVOICE_MGMT_PART T
|
|
LEFT OUTER JOIN PART_MNG P
|
|
ON T.PART_OBJID = P.OBJID::VARCHAR
|
|
WHERE INVOICE_OBJID = #{INVOICE_OBJID}) AS S1
|
|
WHERE 1=1 -->
|
|
</select>
|
|
|
|
<delete id="deletePURCHASE_ORDER_MASTER" parameterType="map">
|
|
DELETE FROM PURCHASE_ORDER_MASTER
|
|
WHERE OBJID = #{objId} OR MULTI_MASTER_OBJID = #{objId}
|
|
</delete>
|
|
|
|
<!-- 공급처 정보 조회 (CLIENT_MNG 테이블) -->
|
|
<select id="purchaseOrderAdminSupplyInfo" parameterType="map" resultType="map">
|
|
SELECT
|
|
T1.OBJID
|
|
,T1.BUS_REG_NO AS SUPPLY_BUS_NO
|
|
,T1.CEO_NM AS SUPPLY_USER_NAME
|
|
,T1.VENDOR_MOBILE AS SUPPLY_USER_HP
|
|
,T1.TEL_NO AS SUPPLY_USER_TEL
|
|
,T1.FAX_NO AS SUPPLY_USER_FAX
|
|
,T1.EMAIL AS SUPPLY_USER_EMAIL
|
|
,CONCAT(COALESCE(T1.ADDR1,''), ' ', COALESCE(T1.ADDR2,'')) AS SUPPLY_ADDR
|
|
FROM CLIENT_MNG AS T1
|
|
WHERE 1=1
|
|
AND T1.OBJID::VARCHAR = #{PARTNER_OBJID}::VARCHAR
|
|
</select>
|
|
|
|
<select id="purchaseOrderSalesBomPartListByPartnerContract" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
QTY,
|
|
REGDATE,
|
|
SEQ,
|
|
LEV,
|
|
PATH,
|
|
CYCLE,
|
|
IS_LEAF,
|
|
AGGREGATE_QTY
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.QTY,
|
|
A.REGDATE,
|
|
A.SEQ,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
FALSE,
|
|
NOT EXISTS (SELECT 1 FROM BOM_PART_QTY C WHERE C.PARENT_OBJID = A.CHILD_OBJID) AS IS_LEAF,
|
|
NVL(A.QTY, '0')::NUMERIC AS AGGREGATE_QTY
|
|
FROM
|
|
PART_BOM_REPORT AS PBR
|
|
,BOM_PART_QTY A
|
|
WHERE 1=1
|
|
AND PBR.CONTRACT_OBJID = #{CONTRACT_MGMT_OBJID}
|
|
<if test='UNIT_CODE != null and UNIT_CODE != "" '>
|
|
AND PBR.UNIT_CODE = #{UNIT_CODE}
|
|
</if>
|
|
AND PBR.OBJID = A.BOM_REPORT_OBJID
|
|
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
|
|
AND A.STATUS IN ('deploy')
|
|
UNION ALL
|
|
SELECT
|
|
B.BOM_REPORT_OBJID,
|
|
B.OBJID,
|
|
B.PARENT_OBJID,
|
|
B.CHILD_OBJID,
|
|
B.PARENT_PART_NO,
|
|
B.PART_NO,
|
|
B.QTY,
|
|
B.REGDATE,
|
|
B.SEQ,
|
|
LEV + 1,
|
|
PATH||B.CHILD_OBJID::TEXT,
|
|
B.PARENT_OBJID = ANY(PATH),
|
|
NOT EXISTS (SELECT 1 FROM BOM_PART_QTY C WHERE C.PARENT_OBJID = B.CHILD_OBJID) AS IS_LEAF,
|
|
VIEW_BOM.AGGREGATE_QTY * NVL(B.QTY, '0')::NUMERIC AS AGGREGATE_QTY
|
|
FROM
|
|
BOM_PART_QTY B
|
|
JOIN
|
|
VIEW_BOM
|
|
ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID
|
|
AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID
|
|
AND B.STATUS IN ('deploy')
|
|
)
|
|
SELECT T1.PARENT_OBJID AS BOM_REPORT_OBJID
|
|
<!--
|
|
,T1.PART_OBJID
|
|
-->
|
|
,PM.OBJID PART_OBJID
|
|
,T1.OBJID SALES_BOM_REPORT_PART_OBJID
|
|
,PM.PART_NAME
|
|
,PM.PART_NO
|
|
,PM.SPEC
|
|
,PM.MAKER
|
|
,PM.REMARK
|
|
,PM.UNIT
|
|
<!--
|
|
,BPQ.QTY AS ORDER_QTY
|
|
-->
|
|
,(SELECT AGGREGATE_QTY FROM VIEW_BOM V WHERE V.CHILD_OBJID = BPQ.CHILD_OBJID) ORDER_QTY
|
|
,(CASE WHEN T1.SUPPLY_OBJID = #{PARTNER_OBJID} THEN T1.PRICE ELSE '0' END) AS PARTNER_PRICE
|
|
,(CASE WHEN T1.SUPPLY_OBJID1 = #{PARTNER_OBJID} THEN T1.PRICE1 ELSE '0' END) AS PRICE1
|
|
,(CASE WHEN T1.SUPPLY_OBJID2 = #{PARTNER_OBJID} THEN T1.PRICE2 ELSE '0' END) AS PRICE2
|
|
,(CASE WHEN T1.SUPPLY_OBJID3 = #{PARTNER_OBJID} THEN T1.PRICE3 ELSE '0' END) AS PRICE3
|
|
,(CASE WHEN T1.SUPPLY_OBJID4 = #{PARTNER_OBJID} THEN T1.PRICE4 ELSE '0' END) AS PRICE4
|
|
,T1.WRITER
|
|
<!--
|
|
,(SELECT SUM(NVL(QTY, '0')::NUMERIC) FROM INVENTORY_MGMT IM WHERE IM.PART_OBJID = PM.OBJID) STOCK_QTY
|
|
-->
|
|
,(COALESCE((SELECT SUM(CASE WHEN (RECEIPT_QTY IS NULL OR RECEIPT_QTY ='')
|
|
THEN 0
|
|
ELSE RECEIPT_QTY::NUMERIC END)
|
|
FROM INVENTORY_MGMT AS IM
|
|
INNER JOIN INVENTORY_MGMT_IN AS O
|
|
ON O.PARENT_OBJID = IM.OBJID
|
|
WHERE IM.PART_OBJID = PM.OBJID
|
|
),0) - COALESCE((SELECT SUM(CASE WHEN (REQUEST_QTY IS NULL OR REQUEST_QTY ='')
|
|
THEN 0
|
|
ELSE REQUEST_QTY::NUMERIC END)
|
|
FROM INVENTORY_MGMT AS IM
|
|
INNER JOIN INVENTORY_MGMT_OUT AS O
|
|
ON O.PARENT_OBJID = IM.OBJID
|
|
WHERE IM.PART_OBJID = PM.OBJID
|
|
),0)) AS STOCK_QTY
|
|
FROM SALES_BOM_REPORT_PART AS T1
|
|
,PART_BOM_REPORT AS PBR
|
|
,BOM_PART_QTY AS BPQ
|
|
,PART_MNG AS PM
|
|
WHERE T1.PARENT_OBJID = PBR.OBJID
|
|
AND PBR.OBJID = BPQ.BOM_REPORT_OBJID
|
|
<!--
|
|
AND T1.PART_OBJID = BPQ.PART_NO
|
|
AND T1.PART_OBJID = PM.OBJID::VARCHAR
|
|
240108 위에서 아래 조건으로 변경
|
|
AND T1.PART_OBJID = BPQ.LAST_PART_OBJID (설변시 최종파트)
|
|
-->
|
|
AND T1.BOM_PART_QTY_OBJID = BPQ.CHILD_OBJID
|
|
AND BPQ.LAST_PART_OBJID = PM.OBJID::VARCHAR
|
|
AND BPQ.STATUS IN ('deploy')
|
|
AND PBR.CONTRACT_OBJID = #{CONTRACT_MGMT_OBJID}
|
|
<if test='UNIT_CODE != null and UNIT_CODE != "" '>
|
|
AND PBR.UNIT_CODE = #{UNIT_CODE}
|
|
</if>
|
|
|
|
<if test='PART_TYPE != null and PART_TYPE != "" '>
|
|
AND PM.PART_TYPE = #{PART_TYPE}
|
|
</if>
|
|
<if test='PART_TYPE == null or PART_TYPE == "" '>
|
|
AND PM.PART_TYPE NOT IN ( '0001788') <!-- 표준구매품 제외 -->
|
|
</if>
|
|
|
|
<if test='preventDuplYN != null and preventDuplYN != "" and "Y".equals(preventDuplYN) '>
|
|
<!-- 중복발주 방지(241010)
|
|
AND NOT EXISTS (
|
|
SELECT 'E'
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART AS POP
|
|
WHERE 1=1
|
|
AND POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POM.STATUS IN ('create', 'approvalRequest','approvalComplete' )
|
|
AND POP.PART_OBJID = PM.OBJID
|
|
)
|
|
-->
|
|
</if>
|
|
<choose>
|
|
<when test='TYPE_TURNKEY_YN !=null and TYPE_TURNKEY_YN != "" and "Y".equals(TYPE_TURNKEY_YN) '>
|
|
AND ( EXISTS (SELECT 'E' FROM VIEW_BOM SV WHERE SV.LEV = 2 AND SV.CHILD_OBJID = BPQ.CHILD_OBJID)
|
|
AND ( T1.SUPPLY_OBJID = #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID1= #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID2= #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID3= #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID4= #{PARTNER_OBJID}
|
|
)
|
|
OR ( EXISTS (SELECT 'E' FROM VIEW_BOM V WHERE V.LEV > 1 AND V.CHILD_OBJID = BPQ.CHILD_OBJID)
|
|
<!--
|
|
AND ( T1.SUPPLY_OBJID = #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID1= #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID2= #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID3= #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID4= #{PARTNER_OBJID}
|
|
)
|
|
-->
|
|
)
|
|
)
|
|
</when>
|
|
<otherwise>
|
|
AND ( T1.SUPPLY_OBJID = #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID1= #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID2= #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID3= #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID4= #{PARTNER_OBJID}
|
|
)
|
|
</otherwise>
|
|
</choose>
|
|
|
|
ORDER BY BPQ.SEQ
|
|
</select>
|
|
<select id="purchaseOrderSalesBomPartListByPartnerContractTypeBuy" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
QTY,
|
|
REGDATE,
|
|
SEQ,
|
|
LEV,
|
|
PATH,
|
|
CYCLE,
|
|
IS_LEAF,
|
|
AGGREGATE_QTY
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.QTY,
|
|
A.REGDATE,
|
|
A.SEQ,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
FALSE,
|
|
NOT EXISTS (SELECT 1 FROM BOM_PART_QTY C WHERE C.PARENT_OBJID = A.CHILD_OBJID) AS IS_LEAF,
|
|
NVL(A.QTY, '0')::NUMERIC AS AGGREGATE_QTY
|
|
FROM
|
|
PART_BOM_REPORT AS PBR
|
|
,BOM_PART_QTY A
|
|
WHERE 1=1
|
|
AND PBR.CONTRACT_OBJID = #{CONTRACT_MGMT_OBJID}
|
|
<if test='UNIT_CODE != null and UNIT_CODE != "" '>
|
|
AND PBR.UNIT_CODE = #{UNIT_CODE}
|
|
</if>
|
|
AND PBR.OBJID = A.BOM_REPORT_OBJID
|
|
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
|
|
AND A.STATUS IN ('deploy')
|
|
UNION ALL
|
|
SELECT
|
|
B.BOM_REPORT_OBJID,
|
|
B.OBJID,
|
|
B.PARENT_OBJID,
|
|
B.CHILD_OBJID,
|
|
B.PARENT_PART_NO,
|
|
B.PART_NO,
|
|
B.QTY,
|
|
B.REGDATE,
|
|
B.SEQ,
|
|
LEV + 1,
|
|
PATH||B.CHILD_OBJID::TEXT,
|
|
B.PARENT_OBJID = ANY(PATH),
|
|
NOT EXISTS (SELECT 1 FROM BOM_PART_QTY C WHERE C.PARENT_OBJID = B.CHILD_OBJID) AS IS_LEAF,
|
|
VIEW_BOM.AGGREGATE_QTY * NVL(B.QTY, '0')::NUMERIC AS AGGREGATE_QTY
|
|
FROM
|
|
BOM_PART_QTY B
|
|
JOIN
|
|
VIEW_BOM
|
|
ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID
|
|
AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID
|
|
AND B.STATUS IN ('deploy')
|
|
)
|
|
|
|
SELECT
|
|
PM.PART_OBJID
|
|
,PM.PART_NAME
|
|
,PM.PART_NO
|
|
,PM.SPEC
|
|
,PM.MAKER
|
|
,PM.REMARK
|
|
,PM.UNIT
|
|
,SUM(COALESCE(NULLIF(ORDER_QTY, 0), 0)) ORDER_QTY
|
|
,MAX(NVL(PARTNER_PRICE, '0')::NUMERIC) AS PARTNER_PRICE
|
|
,MAX(NVL(PRICE1, '0')::NUMERIC) AS PRICE1
|
|
,MAX(NVL(PRICE2, '0')::NUMERIC) AS PRICE2
|
|
,MAX(NVL(PRICE3, '0')::NUMERIC) AS PRICE3
|
|
,MAX(NVL(PRICE4, '0')::NUMERIC) AS PRICE4
|
|
,SUM(COALESCE(NULLIF(STOCK_QTY, 0), 0)) STOCK_QTY
|
|
FROM
|
|
(
|
|
SELECT
|
|
<!--
|
|
T1.PARENT_OBJID AS BOM_REPORT_OBJID
|
|
,T1.PART_OBJID
|
|
,T1.OBJID SALES_BOM_REPORT_PART_OBJID
|
|
-->
|
|
PM.OBJID PART_OBJID
|
|
,PM.PART_NAME
|
|
,PM.PART_NO
|
|
,PM.SPEC
|
|
,PM.MAKER
|
|
,PM.REMARK
|
|
,PM.UNIT
|
|
<!--
|
|
,BPQ.QTY AS ORDER_QTY
|
|
-->
|
|
,(SELECT AGGREGATE_QTY FROM VIEW_BOM V WHERE V.CHILD_OBJID = BPQ.CHILD_OBJID) ORDER_QTY
|
|
,(CASE WHEN T1.SUPPLY_OBJID = #{PARTNER_OBJID} THEN T1.PRICE ELSE '0' END) AS PARTNER_PRICE
|
|
,(CASE WHEN T1.SUPPLY_OBJID1 = #{PARTNER_OBJID} THEN T1.PRICE1 ELSE '0' END) AS PRICE1
|
|
,(CASE WHEN T1.SUPPLY_OBJID2 = #{PARTNER_OBJID} THEN T1.PRICE2 ELSE '0' END) AS PRICE2
|
|
,(CASE WHEN T1.SUPPLY_OBJID3 = #{PARTNER_OBJID} THEN T1.PRICE3 ELSE '0' END) AS PRICE3
|
|
,(CASE WHEN T1.SUPPLY_OBJID4 = #{PARTNER_OBJID} THEN T1.PRICE4 ELSE '0' END) AS PRICE4
|
|
<!--
|
|
,T1.WRITER
|
|
,(SELECT SUM(NVL(QTY, '0')::NUMERIC) FROM INVENTORY_MGMT IM WHERE IM.PART_OBJID = PM.OBJID) STOCK_QTY
|
|
-->
|
|
,(COALESCE((SELECT SUM(CASE WHEN (RECEIPT_QTY IS NULL OR RECEIPT_QTY ='')
|
|
THEN 0
|
|
ELSE RECEIPT_QTY::NUMERIC - COALESCE(MOVE_QTY,'0')::numeric END)
|
|
FROM INVENTORY_MGMT AS IM
|
|
INNER JOIN INVENTORY_MGMT_IN AS O
|
|
ON O.PARENT_OBJID = IM.OBJID
|
|
WHERE IM.PART_OBJID = PM.OBJID
|
|
),0) - COALESCE((SELECT SUM(CASE WHEN (REQUEST_QTY IS NULL OR REQUEST_QTY ='')
|
|
THEN 0
|
|
ELSE REQUEST_QTY::NUMERIC END)
|
|
FROM INVENTORY_MGMT AS IM
|
|
INNER JOIN INVENTORY_MGMT_OUT AS O
|
|
ON O.PARENT_OBJID = IM.OBJID
|
|
WHERE IM.PART_OBJID = PM.OBJID
|
|
),0)) AS STOCK_QTY
|
|
FROM SALES_BOM_REPORT_PART AS T1
|
|
,PART_BOM_REPORT AS PBR
|
|
,BOM_PART_QTY AS BPQ
|
|
,PART_MNG AS PM
|
|
WHERE T1.PARENT_OBJID = PBR.OBJID
|
|
AND PBR.OBJID = BPQ.BOM_REPORT_OBJID
|
|
<!--
|
|
AND T1.PART_OBJID = BPQ.PART_NO
|
|
AND T1.PART_OBJID = PM.OBJID::VARCHAR
|
|
240108 위에서 아래 조건으로 변경
|
|
AND T1.PART_OBJID = BPQ.LAST_PART_OBJID (설변시 최종파트)
|
|
-->
|
|
AND T1.BOM_PART_QTY_OBJID = BPQ.CHILD_OBJID
|
|
AND BPQ.LAST_PART_OBJID = PM.OBJID::VARCHAR
|
|
AND BPQ.STATUS IN ('deploy')
|
|
AND PBR.CONTRACT_OBJID = #{CONTRACT_MGMT_OBJID}
|
|
<if test='UNIT_CODE != null and UNIT_CODE != "" '>
|
|
AND PBR.UNIT_CODE = #{UNIT_CODE}
|
|
</if>
|
|
|
|
<if test='PART_TYPE != null and PART_TYPE != "" '>
|
|
AND PM.PART_TYPE = #{PART_TYPE}
|
|
</if>
|
|
<if test='PART_TYPE == null or PART_TYPE == "" '>
|
|
AND PM.PART_TYPE NOT IN ( '0001788') <!-- 표준구매품 제외 -->
|
|
</if>
|
|
|
|
<if test='preventDuplYN != null and preventDuplYN != "" and "Y".equals(preventDuplYN) '>
|
|
AND ( T1.SUPPLY_OBJID = #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID1= #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID2= #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID3= #{PARTNER_OBJID}
|
|
OR T1.SUPPLY_OBJID4= #{PARTNER_OBJID}
|
|
)
|
|
</if>
|
|
) PM
|
|
GROUP BY
|
|
PM.PART_OBJID
|
|
,PM.PART_NAME
|
|
,PM.PART_NO
|
|
,PM.SPEC
|
|
,PM.MAKER
|
|
,PM.REMARK
|
|
,PM.UNIT
|
|
ORDER BY PART_NO
|
|
</select>
|
|
|
|
<update id="mergeDeliveryPartPrice" parameterType="map">
|
|
INSERT INTO DELIVERY_PART_PRICE
|
|
(
|
|
OBJID
|
|
,PURCHASE_ORDER_PART_OBJID
|
|
,PART_OBJID
|
|
,LD_PART_OBJID
|
|
,PRICE
|
|
,PRICE1
|
|
,PRICE2
|
|
,PRICE3
|
|
,PRICE4
|
|
,PRICE_SUM
|
|
,WRITER
|
|
,REGDATE
|
|
)
|
|
VALUES
|
|
(
|
|
#{OBJID}
|
|
,#{PURCHASE_ORDER_PART_OBJID}
|
|
,#{PART_OBJID}
|
|
,#{LD_PART_OBJID}
|
|
,#{PRICE}
|
|
,#{PRICE1}
|
|
,#{PRICE2}
|
|
,#{PRICE3}
|
|
,#{PRICE4}
|
|
,#{PRICE_SUM}
|
|
,#{WRITER}
|
|
,NOW()
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE
|
|
SET
|
|
PRICE = #{PRICE}
|
|
,PRICE1 = #{PRICE1}
|
|
,PRICE2 = #{PRICE2}
|
|
,PRICE3 = #{PRICE3}
|
|
,PRICE4 = #{PRICE4}
|
|
,PRICE_SUM = #{PRICE_SUM}
|
|
</update>
|
|
|
|
<update id="updateSalesBomReportPartPriceByPurchase" parameterType="map">
|
|
UPDATE SALES_BOM_REPORT_PART SET
|
|
PRICE = #{PARTNER_PRICE}
|
|
,PRICE1 = #{PRICE1 }
|
|
,PRICE2 = #{PRICE2 }
|
|
,PRICE3 = #{PRICE3 }
|
|
,PRICE4 = #{PRICE4 }
|
|
,PRICE_SUM = #{SUPPLY_UNIT_PRICE }
|
|
,MODIFIER = #{WRITER }
|
|
,UPDATE_DATE = NOW()
|
|
<!--
|
|
,WRITER = #{writer }
|
|
,REGDATE = NOW()
|
|
-->
|
|
WHERE OBJID = (SELECT SBRP.OBJID
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
,SALES_BOM_REPORT_PART SBRP
|
|
,BOM_PART_QTY Q
|
|
<!--
|
|
,PART_MNG P
|
|
-->
|
|
WHERE POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
<!-- AND POP.OBJID = #{PURCHASE_ORDER_PART_OBJID } -->
|
|
AND POP.OBJID = #{OBJID}
|
|
<!--
|
|
AND POM.BOM_REPORT_OBJID #{BOM_REPORT_OBJID}
|
|
-->
|
|
AND SBRP.PARENT_OBJID = POM.BOM_REPORT_OBJID
|
|
<!-- 240723 조건 설변건 저장안되서 아래로 수정
|
|
AND POP.PART_OBJID = SBRP.PART_OBJID
|
|
-->
|
|
AND SBRP.BOM_PART_QTY_OBJID = Q.CHILD_OBJID
|
|
AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = POP.PART_OBJID
|
|
<!--
|
|
AND POP.PART_OBJID = P.OBJID
|
|
AND Q.STATUS = 'deploy'
|
|
-->
|
|
)
|
|
</update>
|
|
|
|
<update id="updatePurchaseOrderPartPriceByDeliveryCost" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_PART SET
|
|
PARTNER_PRICE = #{PRICE }
|
|
,PRICE1 = #{PRICE1 }
|
|
,PRICE2 = #{PRICE2 }
|
|
,PRICE3 = #{PRICE3 }
|
|
,PRICE4 = #{PRICE4 }
|
|
,SUPPLY_UNIT_PRICE = #{PRICE_SUM }
|
|
,SUPPLY_UNIT_VAT_PRICE = #{PRICE_SUM }::numeric *0.1
|
|
WHERE OBJID = #{PURCHASE_ORDER_PART_OBJID }
|
|
</update>
|
|
|
|
<update id="updatePurchaseOrderriceByDeliveryCost" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_MASTER SET
|
|
TOTAL_SUPPLY_UNIT_PRICE = SUPPLY_UNIT_PRICE
|
|
,TOTAL_PRICE = SUPPLY_UNIT_PRICE - T.DISCOUNT_PRICE
|
|
,NEGO_RATE = ROUND( ((1-((SUPPLY_UNIT_PRICE - T.DISCOUNT_PRICE)/SUPPLY_UNIT_PRICE))*100), 1) ||'%'
|
|
,TOTAL_PRICE_TXT = NUM_TO_KOR((SUPPLY_UNIT_PRICE - T.DISCOUNT_PRICE)::INTEGER::VARCHAR,'일금 ',' 원정 (₩ ') || TO_CHAR((SUPPLY_UNIT_PRICE - T.DISCOUNT_PRICE), '999,999,999,999') ||')'
|
|
<!--
|
|
((1-((vTP)/colSum1))*100).toFixed(1)
|
|
-->
|
|
FROM
|
|
(SELECT
|
|
SUM(SUPPLY_UNIT_PRICE::NUMERIC) + SUM(SUPPLY_UNIT_VAT_PRICE::NUMERIC) SUPPLY_UNIT_PRICE
|
|
,(CASE WHEN COALESCE(DISCOUNT_PRICE, '') = '' THEN '0'
|
|
ELSE DISCOUNT_PRICE END)::NUMERIC AS DISCOUNT_PRICE
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
GROUP BY POM.OBJID
|
|
) T
|
|
WHERE OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
|
|
<!--
|
|
(SELECT PURCHASE_ORDER_MASTER_OBJID FROM PURCHASE_ORDER_PART POP WHERE OBJID = '1687975702')
|
|
WHERE OBJID = (SELECT PURCHASE_ORDER_MASTER_OBJID FROM PURCHASE_ORDER_PART POP WHERE OBJID = #{PURCHASE_ORDER_PART_OBJID })
|
|
-->
|
|
</update>
|
|
|
|
|
|
<select id="getMultiObjids" parameterType="map" resultType="map">
|
|
SELECT
|
|
(SELECT ARRAY_TO_STRING(ARRAY_AGG(OBJID),',') FROM PURCHASE_ORDER_MASTER S
|
|
WHERE POM.OBJID = S.MULTI_MASTER_OBJID) MULTI_OBJIDS
|
|
FROM PURCHASE_ORDER_MASTER AS POM
|
|
WHERE OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
</select>
|
|
|
|
<select id="purchaseOrderMasterListSum" parameterType="map" resultType="map">
|
|
SELECT
|
|
SUM(NVL(POM.TOTAL_PRICE_ALL, '0')::NUMERIC) AS TOTAL_PRICE_ALL
|
|
,SUM(NVL(POM.TOTAL_SUPPLY_PRICE, '0')::NUMERIC) AS TOTAL_SUPPLY_PRICE
|
|
,SUM(NVL(POM.TOTAL_REAL_SUPPLY_PRICE, '0')::NUMERIC) AS TOTAL_REAL_SUPPLY_PRICE
|
|
,SUM(NVL(POM.TOTAL_SUPPLY_UNIT_PRICE, '0')::NUMERIC) AS TOTAL_SUPPLY_UNIT_PRICE
|
|
FROM
|
|
PURCHASE_ORDER_MASTER AS POM
|
|
WHERE 1=1
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="customer_cd !=null and customer_cd != '' ">
|
|
AND EXISTS (
|
|
SELECT 'E' FROM PROJECT_MGMT AS S_P
|
|
WHERE POM.CONTRACT_MGMT_OBJID = S_P.OBJID
|
|
AND S_P.CUSTOMER_OBJID = REPLACE(#{customer_cd}, 'C_', '')
|
|
)
|
|
</if>
|
|
<if test="customer_project_name !=null and customer_project_name != '' ">
|
|
AND CM.CUSTOMER_PROJECT_NAME = #{customer_project_name}
|
|
</if>
|
|
<if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if>
|
|
<if test="unit_code !=null and unit_code != '' ">
|
|
AND POM.UNIT_CODE LIKE '%'||#{unit_code}||'%'
|
|
</if>
|
|
<if test="purchase_order_no !=null and purchase_order_no != '' ">
|
|
AND POM.PURCHASE_ORDER_NO LIKE '%'||#{purchase_order_no}||'%'
|
|
</if>
|
|
<if test="type !=null and type != '' ">
|
|
AND POM.TYPE = #{type}
|
|
</if>
|
|
<if test="order_type_cd !=null and order_type_cd != '' ">
|
|
AND POM.ORDER_TYPE_CD = #{order_type_cd}
|
|
</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_id !=null and sales_mng_user_id != '' ">
|
|
AND POM.SALES_MNG_USER_ID = #{sales_mng_user_id}
|
|
</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="appr_status !=null and appr_status != '' ">
|
|
<choose>
|
|
<when test="'cancel'.equals(appr_status)">
|
|
AND POM.STATUS = #{appr_status}
|
|
</when>
|
|
<when test="'complete'.equals(appr_status)">
|
|
AND POM.STATUS = 'approvalComplete'
|
|
</when>
|
|
<when test="'create'.equals(appr_status)">
|
|
AND ( POM.STATUS = #{appr_status}
|
|
AND NOT EXISTS (SELECT 1 FROM APPROVAL AT
|
|
WHERE AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
|
)
|
|
AND NOT EXISTS (SELECT 1 FROM APPROVAL_TARGET AT
|
|
WHERE AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
|
OR AT.MASTER_TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
|
)
|
|
)
|
|
</when>
|
|
<otherwise>
|
|
AND A.APPR_STATUS = #{appr_status}
|
|
</otherwise>
|
|
</choose>
|
|
</if>
|
|
<if test="SEARCH_PART_NO !=null and SEARCH_PART_NO != '' ">
|
|
AND EXISTS (SELECT 1
|
|
FROM PURCHASE_ORDER_PART POP
|
|
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
AND TRIM(UPPER(POP.PART_NO)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NO}))||'%'
|
|
)
|
|
</if>
|
|
<if test="SEARCH_PART_NAME !=null and SEARCH_PART_NAME != '' ">
|
|
AND EXISTS (SELECT 1
|
|
FROM PURCHASE_ORDER_PART POP
|
|
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
AND TRIM(UPPER(POP.PART_NAME)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NAME}))||'%'
|
|
)
|
|
</if>
|
|
</select>
|
|
|
|
<select id="purchaseOrderMasterListSum_old" parameterType="map" resultType="map">
|
|
SELECT
|
|
<!--
|
|
SUM(CASE WHEN (SUPPLY_UNIT_VAT_SUM_PRICE IS NULL OR SUPPLY_UNIT_VAT_SUM_PRICE='')
|
|
THEN 0
|
|
ELSE POP.SUPPLY_UNIT_VAT_SUM_PRICE::NUMERIC
|
|
END) AS TOTAL_SUPPLY_PRICE
|
|
SUM(CASE WHEN (POP.SUPPLY_UNIT_PRICE IS NULL OR POP.SUPPLY_UNIT_PRICE='')
|
|
THEN 0
|
|
ELSE POP.SUPPLY_UNIT_PRICE::NUMERIC
|
|
END) AS TOTAL_SUPPLY_PRICE
|
|
-->
|
|
SUM(NVL(POM.TOTAL_PRICE_ALL, '0')::NUMERIC) AS TOTAL_PRICE_ALL
|
|
,SUM(NVL(POM.TOTAL_SUPPLY_PRICE, '0')::NUMERIC) AS TOTAL_SUPPLY_PRICE
|
|
,SUM(NVL(POM.TOTAL_REAL_SUPPLY_PRICE, '0')::NUMERIC) AS TOTAL_REAL_SUPPLY_PRICE
|
|
,SUM(NVL(POM.TOTAL_SUPPLY_UNIT_PRICE, '0')::NUMERIC) AS TOTAL_SUPPLY_UNIT_PRICE
|
|
FROM
|
|
<!-- 여기있어야 현황 sum이랑 같은 값나옴 240723
|
|
SALES_BOM_REPORT SBR,
|
|
PART_BOM_REPORT PBR
|
|
INNER JOIN
|
|
-->
|
|
PURCHASE_ORDER_MASTER AS POM
|
|
<!--
|
|
ON PBR.OBJID::VARCHAR = POM.BOM_REPORT_OBJID
|
|
INNER JOIN PURCHASE_ORDER_PART AS POP
|
|
ON POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
LEFT OUTER JOIN(
|
|
SELECT B.OBJID AS ROUTE_OBJID
|
|
,B.STATUS AS APPR_STATUS
|
|
,CASE B.STATUS
|
|
WHEN 'inProcess' THEN '결재중'
|
|
WHEN 'complete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
WHEN 'cancel' THEN '취소'
|
|
ELSE '' END APPR_STATUS_NAME
|
|
,A.OBJID AS APPROVAL_OBJID
|
|
,A.TARGET_OBJID
|
|
,B.ROUTE_SEQ
|
|
,TO_CHAR(B.REGDATE,'YYYY-MM-DD') AS APPR_DATE
|
|
FROM APPROVAL A
|
|
,( SELECT T1.*
|
|
FROM ( SELECT TARGET_OBJID
|
|
,MAX(T.ROUTE_SEQ) AS ROUTE_SEQ
|
|
FROM ROUTE T
|
|
GROUP BY T.TARGET_OBJID
|
|
) T
|
|
,ROUTE T1
|
|
WHERE T.TARGET_OBJID = T1.TARGET_OBJID
|
|
AND T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('PURCHASE_ORDER')
|
|
) AS A ON ( POM.OBJID::VARCHAR = A.TARGET_OBJID::VARCHAR
|
|
-->
|
|
|
|
<!-- 동시발주건 조건 주석처리240813
|
|
OR EXISTS (SELECT 1 FROM APPROVAL_TARGET AT WHERE AT.APPROVAL_OBJID = A.APPROVAL_OBJID AND AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR)
|
|
)
|
|
-->
|
|
WHERE 1=1
|
|
<!-- 여기있어야 현황 sum이랑 같은 값나옴 240723
|
|
,PROJECT_MGMT CM
|
|
WHERE SBR.PARENT_OBJID = PBR.OBJID
|
|
AND PBR.CONTRACT_OBJID = CM.OBJID
|
|
AND CM.OBJID = '-203272655'
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
-->
|
|
AND POM.STATUS = 'approvalComplete'
|
|
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
<!--
|
|
AND EXISTS (
|
|
SELECT 'E' FROM PROJECT_MGMT AS S_P
|
|
WHERE POM.CONTRACT_MGMT_OBJID = S_P.OBJID
|
|
AND TO_CHAR(S_P.REGDATE,'YYYY') = #{Year}
|
|
)
|
|
-->
|
|
</if>
|
|
<if test="customer_cd !=null and customer_cd != '' ">
|
|
AND EXISTS (
|
|
SELECT 'E' FROM PROJECT_MGMT AS S_P
|
|
WHERE POM.CONTRACT_MGMT_OBJID = S_P.OBJID
|
|
AND S_P.CUSTOMER_OBJID = REPLACE(#{customer_cd}, 'C_', '')
|
|
)
|
|
</if>
|
|
<if test="customer_project_name !=null and customer_project_name != '' ">
|
|
AND CM.CUSTOMER_PROJECT_NAME = #{customer_project_name}
|
|
</if>
|
|
<if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if>
|
|
<if test="unit_code !=null and unit_code != '' ">
|
|
AND POM.UNIT_CODE LIKE '%'||#{unit_code}||'%'
|
|
</if>
|
|
<if test="purchase_order_no !=null and purchase_order_no != '' ">
|
|
AND POM.PURCHASE_ORDER_NO LIKE '%'||#{purchase_order_no}||'%'
|
|
</if>
|
|
<if test="type !=null and type != '' ">
|
|
AND POM.TYPE = #{type}
|
|
</if>
|
|
<if test="order_type_cd !=null and order_type_cd != '' ">
|
|
AND POM.ORDER_TYPE_CD = #{order_type_cd}
|
|
</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_id !=null and sales_mng_user_id != '' ">
|
|
AND POM.SALES_MNG_USER_ID = #{sales_mng_user_id}
|
|
</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="appr_status !=null and appr_status != '' ">
|
|
<choose>
|
|
<when test="'cancel'.equals(appr_status)">
|
|
AND POM.STATUS = #{appr_status}
|
|
</when>
|
|
<when test="'complete'.equals(appr_status)">
|
|
AND POM.STATUS = 'approvalComplete'
|
|
</when>
|
|
<when test="'create'.equals(appr_status)">
|
|
AND ( POM.STATUS = #{appr_status}
|
|
AND NOT EXISTS (SELECT 1 FROM APPROVAL AT
|
|
WHERE AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
|
)
|
|
AND NOT EXISTS (SELECT 1 FROM APPROVAL_TARGET AT
|
|
WHERE AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
|
OR AT.MASTER_TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
|
)
|
|
)
|
|
</when>
|
|
<otherwise>
|
|
AND A.APPR_STATUS = #{appr_status}
|
|
</otherwise>
|
|
</choose>
|
|
</if>
|
|
<if test="SEARCH_PART_NO !=null and SEARCH_PART_NO != '' ">
|
|
AND EXISTS (SELECT 1
|
|
FROM PURCHASE_ORDER_PART POP
|
|
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
AND TRIM(UPPER(POP.PART_NO)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NO}))||'%'
|
|
)
|
|
</if>
|
|
<if test="SEARCH_PART_NAME !=null and SEARCH_PART_NAME != '' ">
|
|
AND EXISTS (SELECT 1
|
|
FROM PURCHASE_ORDER_PART POP
|
|
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
AND TRIM(UPPER(POP.PART_NAME)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NAME}))||'%'
|
|
)
|
|
</if>
|
|
</select>
|
|
|
|
<select id="purchaseOrderMasterList_new" parameterType="map" resultType="map">
|
|
SELECT POM.OBJID
|
|
,(SELECT ARRAY_TO_STRING(ARRAY_AGG(OBJID),',') FROM PURCHASE_ORDER_MASTER S
|
|
WHERE POM.OBJID = S.MULTI_MASTER_OBJID) MULTI_OBJIDS
|
|
,TO_CHAR(CM.REGDATE, 'YYYY') AS CM_YEAR
|
|
,TO_CHAR(POM.REGDATE, 'YYYY') AS PO_YEAR
|
|
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = CM.CUSTOMER_OBJID) AS CUSTOMER_NAME
|
|
,CM.CUSTOMER_PROJECT_NAME
|
|
,CM.PROJECT_NO
|
|
,POM.PURCHASE_ORDER_NO
|
|
,(CASE WHEN POM.MULTI_YN = 'Y' AND POM.MULTI_MASTER_YN != 'Y' THEN 'ㅡ'
|
|
WHEN POM.MULTI_YN = 'Y' AND POM.MULTI_MASTER_YN != 'Y' THEN ' '
|
|
ELSE '' END)||POM.TITLE TITLE
|
|
,POM.DELIVERY_PLACE
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.DELIVERY_PLACE) AS DELIVERY_PLACE_NAME
|
|
,POM.INSPECT_METHOD
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.INSPECT_METHOD) AS INSPECT_METHOD_NAME
|
|
,POM.PAYMENT_TERMS
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PAYMENT_TERMS) AS PAYMENT_TERMS_NAME
|
|
,POM.DELIVERY_DATE
|
|
|
|
,POM.TYPE
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.TYPE) AS TYPE_NAME
|
|
|
|
,POM.PARTNER_OBJID
|
|
,(SELECT CLIENT_NM FROM CLIENT_MNG WHERE 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
|
|
,TO_CHAR(POM.REGDATE,'YYYY-MM-DD') AS REGDATE
|
|
,POM.TOTAL_PRICE
|
|
,POM.TOTAL_PRICE_ALL
|
|
,POM.DISCOUNT_PRICE
|
|
,POM.DISCOUNT_PRICE_ALL
|
|
,POM.TOTAL_SUPPLY_PRICE
|
|
,POM.TOTAL_SUPPLY_UNIT_PRICE
|
|
,POM.TOTAL_REAL_SUPPLY_PRICE
|
|
,POM.NEGO_RATE
|
|
<!--
|
|
,POM.TOTAL_SUPPLY_UNIT_PRICE::NUMERIC - POM.DISCOUNT_PRICE::NUMERIC as TOTAL_SUPPLY_UNIT_PRICE_NEGO
|
|
-->
|
|
|
|
,POM.ORDER_TYPE_CD
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.ORDER_TYPE_CD) AS ORDER_TYPE_CD_NAME
|
|
,POM.UNIT_CODE
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = POM.UNIT_CODE) AS UNIT_NAME
|
|
,POM.MULTI_YN
|
|
,POM.MULTI_MASTER_YN
|
|
,POM.MULTI_MASTER_OBJID
|
|
,CASE WHEN POM.MULTI_MASTER_YN = 'Y' THEN '' ELSE POM.MULTI_YN END MULTI_YN_MAKED
|
|
|
|
,POM.MAIL_SEND_YN
|
|
,POM.MAIL_SEND_DATE
|
|
,POM.STATUS
|
|
,COALESCE(POM.FORM_TYPE, 'general') AS FORM_TYPE
|
|
,A.APPR_STATUS
|
|
,CASE WHEN POM.STATUS = 'cancel' then '취소'
|
|
ELSE COALESCE(A.APPR_STATUS_NAME,'작성중')
|
|
END AS APPR_STATUS_NAME
|
|
,A.ROUTE_OBJID
|
|
,A.APPROVAL_OBJID
|
|
,A.APPR_DATE
|
|
|
|
,SALES_REQUEST_OBJID
|
|
,SRM.REQUEST_MNG_NO AS PROPOSAL_NO
|
|
,CODE_NAME(SRM.PURCHASE_TYPE) AS PURCHASE_TYPE_NAME
|
|
,CODE_NAME(CM.PRODUCT) AS PRODUCT_NAME
|
|
,CODE_NAME(CM.CATEGORY_CD) AS CATEGORY_NAME
|
|
-- 발주서 품목 정보 (첫번째 품번/품명 + 외 N건)
|
|
,(SELECT
|
|
CASE
|
|
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
|
|
) 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
|
|
) AS PART_NAME
|
|
FROM PURCHASE_ORDER_MASTER AS POM
|
|
LEFT OUTER JOIN(
|
|
SELECT B.OBJID AS ROUTE_OBJID
|
|
,B.STATUS AS APPR_STATUS
|
|
,CASE B.STATUS
|
|
WHEN 'inProcess' THEN '결재중'
|
|
WHEN 'complete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
WHEN 'cancel' THEN '취소'
|
|
ELSE '' END APPR_STATUS_NAME
|
|
,A.OBJID AS APPROVAL_OBJID
|
|
,A.TARGET_OBJID
|
|
,B.ROUTE_SEQ
|
|
,TO_CHAR(B.REGDATE,'YYYY-MM-DD') AS APPR_DATE
|
|
FROM APPROVAL A
|
|
,( SELECT T1.*
|
|
FROM ( SELECT TARGET_OBJID
|
|
,MAX(T.ROUTE_SEQ) AS ROUTE_SEQ
|
|
FROM ROUTE T
|
|
GROUP BY T.TARGET_OBJID
|
|
) T
|
|
,ROUTE T1
|
|
WHERE T.TARGET_OBJID = T1.TARGET_OBJID
|
|
AND T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('PURCHASE_ORDER')
|
|
) AS A ON ( POM.OBJID::VARCHAR = A.TARGET_OBJID::VARCHAR
|
|
<!-- 동시발주건 조건 주석처리(속도)240813
|
|
OR EXISTS (SELECT 1 FROM APPROVAL_TARGET AT WHERE AT.APPROVAL_OBJID = A.APPROVAL_OBJID AND AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR)
|
|
-->
|
|
)
|
|
<!--
|
|
INNER JOIN PROJECT_MGMT AS CM
|
|
-->
|
|
LEFT OUTER JOIN PROJECT_MGMT AS CM
|
|
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'
|
|
<!-- 230907 outer join으로 변경
|
|
,PROJECT_MGMT AS CM
|
|
WHERE POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
-->
|
|
WHERE 1=1
|
|
<!-- for test
|
|
-->
|
|
AND (MULTI_MASTER_YN = 'Y' OR NVL(MULTI_MASTER_YN, '') != 'Y' AND NVL(MULTI_YN, '') != 'Y')
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
<!--
|
|
AND EXISTS (
|
|
SELECT 'E' FROM PROJECT_MGMT AS S_P
|
|
WHERE POM.CONTRACT_MGMT_OBJID = S_P.OBJID
|
|
AND TO_CHAR(S_P.REGDATE,'YYYY') = #{Year}
|
|
)
|
|
-->
|
|
</if>
|
|
<if test="customer_cd !=null and customer_cd != '' ">
|
|
AND EXISTS (
|
|
SELECT 'E' FROM PROJECT_MGMT AS S_P
|
|
WHERE POM.CONTRACT_MGMT_OBJID = S_P.OBJID
|
|
AND S_P.CUSTOMER_OBJID = REPLACE(#{customer_cd}, 'C_', '')
|
|
)
|
|
</if>
|
|
<if test="customer_project_name !=null and customer_project_name != '' ">
|
|
AND CM.CUSTOMER_PROJECT_NAME = #{customer_project_name}
|
|
</if>
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if> -->
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
<if test="unit_code !=null and unit_code != '' ">
|
|
AND POM.UNIT_CODE LIKE '%'||#{unit_code}||'%'
|
|
</if>
|
|
<if test="purchase_order_no !=null and purchase_order_no != '' ">
|
|
AND POM.PURCHASE_ORDER_NO LIKE '%'||#{purchase_order_no}||'%'
|
|
</if>
|
|
<if test="type !=null and type != '' ">
|
|
AND POM.TYPE = #{type}
|
|
</if>
|
|
<if test="order_type_cd !=null and order_type_cd != '' ">
|
|
AND POM.ORDER_TYPE_CD = #{order_type_cd}
|
|
</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_id !=null and sales_mng_user_id != '' ">
|
|
AND POM.SALES_MNG_USER_ID = #{sales_mng_user_id}
|
|
</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="category_cd != null and category_cd != ''">
|
|
AND CM.CATEGORY_CD = #{category_cd}
|
|
</if>
|
|
<!-- 제품구분 필터 -->
|
|
<if test="product_cd != null and product_cd != ''">
|
|
AND CM.PRODUCT = #{product_cd}
|
|
</if>
|
|
|
|
<!-- 발주일 필터: MAIL_SEND_DATE (그리드 컬럼과 일치) -->
|
|
<if test="reg_start_date !=null and reg_start_date != '' ">
|
|
AND TO_DATE(POM.MAIL_SEND_DATE, '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(POM.MAIL_SEND_DATE, 'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{reg_end_date}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="appr_status !=null and appr_status != '' ">
|
|
<choose>
|
|
<when test="'cancel'.equals(appr_status)">
|
|
AND POM.STATUS = #{appr_status}
|
|
</when>
|
|
<when test="'complete'.equals(appr_status)">
|
|
AND POM.STATUS = 'approvalComplete'
|
|
</when>
|
|
<when test="'create'.equals(appr_status)">
|
|
AND ( POM.STATUS = #{appr_status}
|
|
AND NOT EXISTS (SELECT 1 FROM APPROVAL AT
|
|
WHERE AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
|
)
|
|
AND NOT EXISTS (SELECT 1 FROM APPROVAL_TARGET AT
|
|
WHERE AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
|
OR AT.MASTER_TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
|
)
|
|
)
|
|
</when>
|
|
<otherwise>
|
|
AND A.APPR_STATUS = #{appr_status}
|
|
</otherwise>
|
|
</choose>
|
|
</if>
|
|
<if test="SEARCH_PART_NO !=null and SEARCH_PART_NO != '' ">
|
|
AND EXISTS (SELECT 1
|
|
FROM PURCHASE_ORDER_PART POP
|
|
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
AND TRIM(UPPER(POP.PART_NO)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NO}))||'%'
|
|
)
|
|
</if>
|
|
<if test="SEARCH_PART_NAME !=null and SEARCH_PART_NAME != '' ">
|
|
AND EXISTS (SELECT 1
|
|
FROM PURCHASE_ORDER_PART POP
|
|
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
AND TRIM(UPPER(POP.PART_NAME)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NAME}))||'%'
|
|
)
|
|
</if>
|
|
<if test="SEARCH_PART_SPEC !=null and SEARCH_PART_SPEC != '' ">
|
|
AND EXISTS (SELECT 1
|
|
FROM PURCHASE_ORDER_PART POP
|
|
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
AND TRIM(UPPER(POP.SPEC)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_SPEC}))||'%'
|
|
)
|
|
</if>
|
|
|
|
ORDER BY SPLIT_PART( PURCHASE_ORDER_NO, '-', 3)::NUMERIC DESC
|
|
</select>
|
|
|
|
<select id="purchaseOrderMasterList_new_old" parameterType="map" resultType="map">
|
|
SELECT POM.OBJID
|
|
,(SELECT ARRAY_TO_STRING(ARRAY_AGG(OBJID),',') FROM PURCHASE_ORDER_MASTER S
|
|
WHERE POM.OBJID = S.MULTI_MASTER_OBJID) MULTI_OBJIDS
|
|
,TO_CHAR(CM.REGDATE, 'YYYY') AS CM_YEAR
|
|
,TO_CHAR(POM.REGDATE, 'YYYY') AS PO_YEAR
|
|
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = CM.CUSTOMER_OBJID) AS CUSTOMER_NAME
|
|
,CM.CUSTOMER_PROJECT_NAME
|
|
,CM.PROJECT_NO
|
|
,POM.PURCHASE_ORDER_NO
|
|
,(CASE WHEN POM.MULTI_YN = 'Y' AND POM.MULTI_MASTER_YN != 'Y' THEN 'ㅡ'
|
|
WHEN POM.MULTI_YN = 'Y' AND POM.MULTI_MASTER_YN != 'Y' THEN ' '
|
|
ELSE '' END)||POM.TITLE TITLE
|
|
,POM.DELIVERY_PLACE
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.DELIVERY_PLACE) AS DELIVERY_PLACE_NAME
|
|
,POM.INSPECT_METHOD
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.INSPECT_METHOD) AS INSPECT_METHOD_NAME
|
|
,POM.PAYMENT_TERMS
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PAYMENT_TERMS) AS PAYMENT_TERMS_NAME
|
|
,POM.DELIVERY_DATE
|
|
|
|
,POM.TYPE
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.TYPE) AS TYPE_NAME
|
|
|
|
,POM.PARTNER_OBJID
|
|
,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
|
|
,TO_CHAR(POM.REGDATE,'YYYY-MM-DD') AS REGDATE
|
|
,POM.TOTAL_PRICE
|
|
,POM.TOTAL_PRICE_ALL
|
|
,POM.DISCOUNT_PRICE
|
|
,POM.DISCOUNT_PRICE_ALL
|
|
,POM.TOTAL_SUPPLY_PRICE
|
|
,POM.TOTAL_SUPPLY_UNIT_PRICE
|
|
,POM.TOTAL_REAL_SUPPLY_PRICE
|
|
,POM.NEGO_RATE
|
|
<!--
|
|
,POM.TOTAL_SUPPLY_UNIT_PRICE::NUMERIC - POM.DISCOUNT_PRICE::NUMERIC as TOTAL_SUPPLY_UNIT_PRICE_NEGO
|
|
-->
|
|
|
|
,POM.ORDER_TYPE_CD
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.ORDER_TYPE_CD) AS ORDER_TYPE_CD_NAME
|
|
,POM.UNIT_CODE
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = POM.UNIT_CODE) AS UNIT_NAME
|
|
,POM.MULTI_YN
|
|
,POM.MULTI_MASTER_YN
|
|
,POM.MULTI_MASTER_OBJID
|
|
,CASE WHEN POM.MULTI_MASTER_YN = 'Y' THEN '' ELSE POM.MULTI_YN END MULTI_YN_MAKED
|
|
|
|
,POM.STATUS
|
|
,A.APPR_STATUS
|
|
,CASE WHEN POM.STATUS = 'cancel' then '취소'
|
|
ELSE COALESCE(A.APPR_STATUS_NAME,'작성중')
|
|
END AS APPR_STATUS_NAME
|
|
,A.ROUTE_OBJID
|
|
,A.APPROVAL_OBJID
|
|
,A.APPR_DATE
|
|
|
|
FROM PURCHASE_ORDER_MASTER AS POM
|
|
LEFT OUTER JOIN(
|
|
SELECT B.OBJID AS ROUTE_OBJID
|
|
,B.STATUS AS APPR_STATUS
|
|
,CASE B.STATUS
|
|
WHEN 'inProcess' THEN '결재중'
|
|
WHEN 'complete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
WHEN 'cancel' THEN '취소'
|
|
ELSE '' END APPR_STATUS_NAME
|
|
,A.OBJID AS APPROVAL_OBJID
|
|
,A.TARGET_OBJID
|
|
,B.ROUTE_SEQ
|
|
,TO_CHAR(B.REGDATE,'YYYY-MM-DD') AS APPR_DATE
|
|
FROM APPROVAL A
|
|
,( SELECT T1.*
|
|
FROM ( SELECT TARGET_OBJID
|
|
,MAX(T.ROUTE_SEQ) AS ROUTE_SEQ
|
|
FROM ROUTE T
|
|
GROUP BY T.TARGET_OBJID
|
|
) T
|
|
,ROUTE T1
|
|
WHERE T.TARGET_OBJID = T1.TARGET_OBJID
|
|
AND T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('PURCHASE_ORDER')
|
|
) AS A ON ( POM.OBJID::VARCHAR = A.TARGET_OBJID::VARCHAR
|
|
<!-- 동시발주건 조건 주석처리(속도)240813
|
|
OR EXISTS (SELECT 1 FROM APPROVAL_TARGET AT WHERE AT.APPROVAL_OBJID = A.APPROVAL_OBJID AND AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR)
|
|
-->
|
|
)
|
|
<!--
|
|
INNER JOIN PROJECT_MGMT AS CM
|
|
-->
|
|
LEFT OUTER JOIN PROJECT_MGMT AS CM
|
|
ON POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
<!-- 230907 outer join으로 변경
|
|
,PROJECT_MGMT AS CM
|
|
WHERE POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
-->
|
|
WHERE 1=1
|
|
<!-- for test
|
|
-->
|
|
AND (MULTI_MASTER_YN = 'Y' OR NVL(MULTI_MASTER_YN, '') != 'Y' AND NVL(MULTI_YN, '') != 'Y')
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
<!--
|
|
AND EXISTS (
|
|
SELECT 'E' FROM PROJECT_MGMT AS S_P
|
|
WHERE POM.CONTRACT_MGMT_OBJID = S_P.OBJID
|
|
AND TO_CHAR(S_P.REGDATE,'YYYY') = #{Year}
|
|
)
|
|
-->
|
|
</if>
|
|
<if test="customer_cd !=null and customer_cd != '' ">
|
|
AND EXISTS (
|
|
SELECT 'E' FROM PROJECT_MGMT AS S_P
|
|
WHERE POM.CONTRACT_MGMT_OBJID = S_P.OBJID
|
|
AND S_P.CUSTOMER_OBJID = REPLACE(#{customer_cd}, 'C_', '')
|
|
)
|
|
</if>
|
|
<if test="customer_project_name !=null and customer_project_name != '' ">
|
|
AND CM.CUSTOMER_PROJECT_NAME = #{customer_project_name}
|
|
</if>
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if> -->
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
<if test="unit_code !=null and unit_code != '' ">
|
|
AND POM.UNIT_CODE LIKE '%'||#{unit_code}||'%'
|
|
</if>
|
|
<if test="purchase_order_no !=null and purchase_order_no != '' ">
|
|
AND POM.PURCHASE_ORDER_NO LIKE '%'||#{purchase_order_no}||'%'
|
|
</if>
|
|
<if test="type !=null and type != '' ">
|
|
AND POM.TYPE = #{type}
|
|
</if>
|
|
<if test="order_type_cd !=null and order_type_cd != '' ">
|
|
AND POM.ORDER_TYPE_CD = #{order_type_cd}
|
|
</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_id !=null and sales_mng_user_id != '' ">
|
|
AND POM.SALES_MNG_USER_ID = #{sales_mng_user_id}
|
|
</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="appr_status !=null and appr_status != '' ">
|
|
<choose>
|
|
<when test="'cancel'.equals(appr_status)">
|
|
AND POM.STATUS = #{appr_status}
|
|
</when>
|
|
<when test="'complete'.equals(appr_status)">
|
|
AND POM.STATUS = 'approvalComplete'
|
|
</when>
|
|
<when test="'create'.equals(appr_status)">
|
|
AND ( POM.STATUS = #{appr_status}
|
|
AND NOT EXISTS (SELECT 1 FROM APPROVAL AT
|
|
WHERE AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
|
)
|
|
AND NOT EXISTS (SELECT 1 FROM APPROVAL_TARGET AT
|
|
WHERE AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
|
OR AT.MASTER_TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
|
)
|
|
)
|
|
</when>
|
|
<otherwise>
|
|
AND A.APPR_STATUS = #{appr_status}
|
|
</otherwise>
|
|
</choose>
|
|
</if>
|
|
<if test="SEARCH_PART_NO !=null and SEARCH_PART_NO != '' ">
|
|
AND EXISTS (SELECT 1
|
|
FROM PURCHASE_ORDER_PART POP
|
|
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
AND TRIM(UPPER(POP.PART_NO)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NO}))||'%'
|
|
)
|
|
</if>
|
|
<if test="SEARCH_PART_NAME !=null and SEARCH_PART_NAME != '' ">
|
|
AND EXISTS (SELECT 1
|
|
FROM PURCHASE_ORDER_PART POP
|
|
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
AND TRIM(UPPER(POP.PART_NAME)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NAME}))||'%'
|
|
)
|
|
</if>
|
|
<if test="SEARCH_PART_SPEC !=null and SEARCH_PART_SPEC != '' ">
|
|
AND EXISTS (SELECT 1
|
|
FROM PURCHASE_ORDER_PART POP
|
|
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
AND TRIM(UPPER(POP.SPEC)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_SPEC}))||'%'
|
|
)
|
|
</if>
|
|
<!--
|
|
ORDER BY POM.REGDATE DESC
|
|
ORDER BY SUBSTRING(PURCHASE_ORDER_NO, POSITION('-' IN REVERSE(PURCHASE_ORDER_NO))+1) DESC
|
|
-->
|
|
ORDER BY SPLIT_PART( PURCHASE_ORDER_NO, '-', 3)::NUMERIC DESC
|
|
</select>
|
|
|
|
<update id="salesPartChgActStatusByPurchaseOrderId" parameterType="map">
|
|
UPDATE SALES_PART_CHG
|
|
SET
|
|
ACT_STATUS = #{act_status}
|
|
WHERE purchase_order_master_objid = #{targetObjId}
|
|
</update>
|
|
|
|
<update id="salesRequestMasterStatus" parameterType="map">
|
|
UPDATE SALES_REQUEST_MASTER
|
|
SET
|
|
STATUS = #{STATUS}
|
|
WHERE OBJID = #{SALES_REQUEST_OBJID}
|
|
</update>
|
|
|
|
<select id="purchaseOrderPartFileListForMail" parameterType="map" resultType="map">
|
|
SELECT OBJID
|
|
, TARGET_OBJID
|
|
, SAVED_FILE_NAME
|
|
, REAL_FILE_NAME
|
|
, DOC_TYPE
|
|
, DOC_TYPE_NAME
|
|
, FILE_SIZE
|
|
, FILE_EXT
|
|
, UPPER(FILE_EXT) UPPER_FILE_EXT
|
|
, REPLACE(FILE_PATH, '\', '/') AS FILE_PATH
|
|
, WRITER
|
|
, (SELECT USER_NAME FROM USER_INFO USER_INFO_T WHERE USER_INFO_T.USER_ID = WRITER) AS USER_NAME
|
|
, (SELECT DEPT_NAME FROM USER_INFO USER_INFO_T WHERE USER_INFO_T.USER_ID = WRITER) AS DEPT_NAME
|
|
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
|
|
, REGDATE AS REGDATE_ORG
|
|
, STATUS
|
|
FROM ATTACH_FILE_INFO
|
|
WHERE 1=1
|
|
AND TARGET_OBJID::varchar IN (SELECT PART_OBJID<!-- ::NUMERIC 장납기일때 null이면 에러 발생해서 앞쪽을 varchar로 형변환 -->
|
|
FROM PURCHASE_ORDER_PART
|
|
WHERE PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
)
|
|
AND DOC_TYPE IN ('3D_CAD','2D_DRAWING_CAD','2D_PDF_CAD')
|
|
AND UPPER(STATUS) = 'ACTIVE'
|
|
ORDER BY REGDATE_ORG DESC
|
|
</select>
|
|
|
|
<select id="deliveryMngStatus" parameterType="map" resultType="map">
|
|
<!--
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
QTY,
|
|
REGDATE,
|
|
SEQ,
|
|
LEV,
|
|
PATH,
|
|
CYCLE,
|
|
IS_LEAF,
|
|
AGGREGATE_QTY
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.QTY,
|
|
A.REGDATE,
|
|
A.SEQ,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
FALSE,
|
|
NOT EXISTS (SELECT 1 FROM BOM_PART_QTY C WHERE C.PARENT_OBJID = A.CHILD_OBJID AND C.BOM_REPORT_OBJID = A.BOM_REPORT_OBJID) AS IS_LEAF,
|
|
NVL(A.QTY, '0')::NUMERIC AS AGGREGATE_QTY
|
|
FROM
|
|
BOM_PART_QTY A
|
|
WHERE 1=1
|
|
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
B.BOM_REPORT_OBJID,
|
|
B.OBJID,
|
|
B.PARENT_OBJID,
|
|
B.CHILD_OBJID,
|
|
B.PARENT_PART_NO,
|
|
B.PART_NO,
|
|
B.QTY,
|
|
B.REGDATE,
|
|
B.SEQ,
|
|
LEV + 1,
|
|
PATH||B.CHILD_OBJID::TEXT,
|
|
B.PARENT_OBJID = ANY(PATH),
|
|
NOT EXISTS (SELECT 1 FROM BOM_PART_QTY C WHERE C.PARENT_OBJID = B.CHILD_OBJID AND C.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID) AS IS_LEAF,
|
|
VIEW_BOM.AGGREGATE_QTY * NVL(B.QTY, '0')::NUMERIC AS AGGREGATE_QTY
|
|
FROM
|
|
BOM_PART_QTY B
|
|
JOIN
|
|
VIEW_BOM
|
|
ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID
|
|
AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID
|
|
),REF_BOM_INFO AS(
|
|
SELECT
|
|
V.BOM_REPORT_OBJID AS PARENT_OBJID
|
|
,V.PART_NO AS PART_OBJID
|
|
,PM.PART_NO
|
|
,PM.PART_NAME
|
|
,V.LEV
|
|
,V.QTY
|
|
,V.AGGREGATE_QTY
|
|
,V.IS_LEAF
|
|
,(SELECT MAX(LEV) FROM VIEW_BOM) AS MAX_LEV
|
|
,SP.OBJID
|
|
,PM.PART_TYPE
|
|
|
|
,SP.SUPPLY_OBJID
|
|
,SP.PRICE
|
|
,SP.SUPPLY_OBJID1
|
|
,SP.PRICE1
|
|
,SP.SUPPLY_OBJID2
|
|
,SP.PRICE2
|
|
,SP.SUPPLY_OBJID3
|
|
,SP.PRICE3
|
|
,SP.SUPPLY_OBJID4
|
|
,SP.PRICE4
|
|
,SP.PRICE_SUM
|
|
,PM.SPEC
|
|
,PM.MAKER
|
|
,(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = PM.PART_TYPE) AS PART_TYPE_NAME
|
|
|
|
,PBR.CONTRACT_OBJID
|
|
FROM
|
|
VIEW_BOM AS V
|
|
LEFT OUTER JOIN
|
|
SALES_BOM_REPORT_PART AS SP
|
|
ON V.PART_NO = SP.PART_OBJID
|
|
AND SP.PARENT_OBJID::VARCHAR = V.BOM_REPORT_OBJID::VARCHAR
|
|
|
|
LEFT OUTER JOIN
|
|
PART_MNG PM
|
|
ON V.PART_NO = PM.OBJID::VARCHAR
|
|
|
|
LEFT OUTER JOIN
|
|
PART_BOM_REPORT PBR
|
|
ON PBR.OBJID::VARCHAR = V.BOM_REPORT_OBJID::VARCHAR
|
|
|
|
WHERE 1=1
|
|
ORDER BY V.SEQ
|
|
)
|
|
|
|
|
|
WITH V_PRE_T AS (
|
|
SELECT RESULT_TABLE.*
|
|
FROM (
|
|
SELECT
|
|
ROW_NUMBER() OVER() AS RNUM
|
|
,SQL_TABLE.OBJID
|
|
,SQL_TABLE.CONTRACT_OBJID
|
|
FROM (
|
|
SELECT
|
|
DISTINCT PBR.OBJID
|
|
,CM.OBJID CONTRACT_OBJID
|
|
,CM.PROJECT_NO
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = PBR.UNIT_CODE) AS UNIT_PART_NAME
|
|
FROM
|
|
SALES_BOM_REPORT SBR
|
|
,PART_BOM_REPORT PBR
|
|
LEFT OUTER JOIN(
|
|
SELECT POM.BOM_REPORT_OBJID
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
WHERE POM.STATUS = 'approvalComplete'
|
|
GROUP BY POM.BOM_REPORT_OBJID
|
|
) AS S1 ON PBR.OBJID::VARCHAR = S1.BOM_REPORT_OBJID
|
|
,PROJECT_MGMT CM
|
|
WHERE 1=1
|
|
AND SBR.PARENT_OBJID = PBR.OBJID
|
|
AND PBR.CONTRACT_OBJID = CM.OBJID
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(CM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="customer_objid !=null and customer_objid != '' ">
|
|
AND CM.CUSTOMER_OBJID = #{customer_objid}
|
|
</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>
|
|
ORDER BY PROJECT_NO DESC, UNIT_PART_NAME
|
|
) AS SQL_TABLE
|
|
) AS RESULT_TABLE
|
|
WHERE 1=1
|
|
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
|
|
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
|
|
)
|
|
, V1 AS (
|
|
SELECT
|
|
BPQ.BOM_REPORT_OBJID
|
|
,BPQ.status
|
|
,BPQ.OBJID
|
|
,BPQ.PARENT_OBJID
|
|
,BPQ.CHILD_OBJID
|
|
,BPQ.PARENT_PART_NO
|
|
,BPQ.PART_NO PART_NO_BPQ
|
|
,BPQ.QTY
|
|
,pm.part_type
|
|
,pm.part_no
|
|
FROM V_PRE_T V_PRE_T
|
|
,BOM_PART_QTY BPQ
|
|
,PART_MNG PM
|
|
WHERE 1=1
|
|
AND BPQ.BOM_REPORT_OBJID = V_PRE_T.OBJID
|
|
AND BPQ.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
AND NVL(BPQ.LAST_PART_OBJID, BPQ.PART_NO) = PM.OBJID
|
|
)
|
|
, V2 AS (
|
|
SELECT *
|
|
FROM V_PRE_T V_PRE_T
|
|
,PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
WHERE POM.BOM_REPORT_OBJID = V_PRE_T.OBJID
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POM.STATUS = 'approvalComplete'
|
|
AND POM.CONTRACT_MGMT_OBJID = V_PRE_T.CONTRACT_OBJID
|
|
)
|
|
-->
|
|
|
|
SELECT T.*
|
|
<!-- ,ROUND(TOTAL_PO_PART_CNT::NUMERIC / TOTAL_BOM_PART_CNT::NUMERIC * 100, 1) AS PO_RATE /*발주율*/ -->
|
|
,CASE WHEN TOTAL_PO_PART_CNT = '0' THEN 0
|
|
WHEN TOTAL_BOM_PART_CNT = '0' THEN 0
|
|
ELSE ROUND(TOTAL_PO_PART_CNT::NUMERIC / TOTAL_BOM_PART_CNT::NUMERIC * 100, 1)
|
|
END AS PO_RATE
|
|
,(CASE WHEN TOTAL_BOM_PART_CNT - TOTAL_PO_PART_CNT < 0 THEN 0 ELSE TOTAL_BOM_PART_CNT - TOTAL_PO_PART_CNT END) AS NON_PO_PART_CNT /*미발주품수*/
|
|
,(TOTAL_DELIVERY_QTY::NUMERIC <!-- - TOTAL_DEFECT_QTY::NUMERIC -->) AS DELIVERY_QTY /*입고수량*/
|
|
,(TOTAL_PO_QTY - (TOTAL_DELIVERY_QTY::NUMERIC <!-- - TOTAL_DEFECT_QTY::NUMERIC -->)) AS NON_DELIVERY_QTY /*미입고수량*/
|
|
,CASE WHEN TOTAL_DEFECT_QTY = '0' THEN 0
|
|
WHEN TOTAL_DELIVERY_QTY = '0' THEN 0
|
|
<!--
|
|
ELSE ROUND(TOTAL_DEFECT_QTY::NUMERIC / (TOTAL_DELIVERY_QTY::NUMERIC - TOTAL_DEFECT_QTY::NUMERIC) * 100, 1)
|
|
-->
|
|
ELSE ROUND(TOTAL_DEFECT_QTY::NUMERIC / TOTAL_PO_QTY::NUMERIC * 100, 1)
|
|
END AS DELIVERY_RATE
|
|
<!-- ,ROUND(TOTAL_DEFECT_QTY::NUMERIC / TOTAL_DELIVERY_QTY::NUMERIC * 100, 1) AS DELIVERY_RATE /*불량율*/ -->
|
|
FROM (
|
|
SELECT CM.OBJID
|
|
,TO_CHAR(CM.REGDATE, 'YYYY') AS CM_YEAR
|
|
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = CM.CUSTOMER_OBJID) AS CUSTOMER_NAME
|
|
,CM.CUSTOMER_PROJECT_NAME
|
|
,CM.PROJECT_NO
|
|
,SBR.OBJID AS SALES_OBJID
|
|
,PBR.OBJID AS BOM_REPORT_OBJID
|
|
<!--
|
|
,(SELECT COUNT(DISTINCT CASE WHEN PM.PART_TYPE IN ('0000063','0000064') THEN BPQ.PART_NO ELSE NULL END)
|
|
,(SELECT COUNT(DISTINCT CASE WHEN COALESCE(PM.PART_TYPE, 'XX') != 'XX' THEN BPQ.PART_NO ELSE NULL END)
|
|
-->
|
|
,(
|
|
SELECT
|
|
COUNT(DISTINCT CASE WHEN PM.PART_TYPE IN (SELECT CODE_ID FROM COMM_CODE WHERE PARENT_CODE_ID = '0000062') THEN BPQ.PART_NO ELSE NULL END)
|
|
FROM
|
|
BOM_PART_QTY BPQ
|
|
,PART_MNG PM
|
|
WHERE BPQ.PART_NO = PM.OBJID::VARCHAR
|
|
AND BPQ.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND BPQ.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
<!--
|
|
v1으로 속도개선
|
|
FROM V1 BPQ
|
|
WHERE 1=1
|
|
-->
|
|
) AS TOTAL_BOM_PART_CNT /*BOM부품개수*/
|
|
|
|
<!--
|
|
,(SELECT SUM(BPQ.QTY::NUMERIC)
|
|
FROM BOM_PART_QTY BPQ, PART_MNG PM
|
|
WHERE BPQ.PART_NO = PM.OBJID::VARCHAR
|
|
AND BPQ.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND PM.PART_TYPE != '') AS TOTAL_BOM_PART_QTY_SUM2 /*BOM부품 QTY SUM*/
|
|
|
|
아래는 3~ 총합에 * 1 * 2레벨
|
|
,((SELECT RBI.QTY::NUMERIC
|
|
FROM REF_BOM_INFO RBI
|
|
WHERE RBI.PARENT_OBJID = PBR.OBJID
|
|
AND RBI.LEV = 1
|
|
) *
|
|
(SELECT RBI.QTY::NUMERIC
|
|
FROM REF_BOM_INFO RBI
|
|
WHERE RBI.PARENT_OBJID = PBR.OBJID
|
|
AND RBI.LEV = 2
|
|
) *
|
|
(SELECT SUM(RBI.QTY::NUMERIC)
|
|
FROM REF_BOM_INFO RBI
|
|
WHERE RBI.PARENT_OBJID = PBR.OBJID
|
|
AND RBI.PART_TYPE != ''
|
|
AND RBI.LEV > 2
|
|
)
|
|
) AS TOTAL_BOM_PART_QTY_SUM /*BOM부품 QTY SUM*/
|
|
,(SELECT SUM(RBI.AGGREGATE_QTY)
|
|
FROM REF_BOM_INFO RBI
|
|
WHERE RBI.PARENT_OBJID = PBR.OBJID
|
|
AND RBI.LEV > 2
|
|
AND IS_LEAF = TRUE
|
|
) TOTAL_BOM_PART_QTY_SUM /*BOM부품 QTY SUM(VIEW_BOM 기준)*/
|
|
-->
|
|
,(
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
QTY,
|
|
LEV,
|
|
PATH,
|
|
CYCLE,
|
|
IS_LEAF,
|
|
AGGREGATE_QTY
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.QTY,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
FALSE,
|
|
NOT EXISTS (SELECT 1 FROM BOM_PART_QTY C WHERE C.PARENT_OBJID = A.CHILD_OBJID) AS IS_LEAF,
|
|
NVL(A.QTY, '0')::NUMERIC AS AGGREGATE_QTY
|
|
FROM
|
|
BOM_PART_QTY A
|
|
WHERE 1=1
|
|
AND A.BOM_REPORT_OBJID = PBR.OBJID
|
|
<!--
|
|
V_PRE_T으로 속도개선
|
|
,V_PRE_T V_PRE_T
|
|
AND A.BOM_REPORT_OBJID = V_PRE_T.OBJID
|
|
-->
|
|
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
|
|
UNION ALL
|
|
SELECT
|
|
B.BOM_REPORT_OBJID,
|
|
B.OBJID,
|
|
B.PARENT_OBJID,
|
|
B.CHILD_OBJID,
|
|
B.PARENT_PART_NO,
|
|
B.PART_NO,
|
|
B.QTY,
|
|
LEV + 1,
|
|
PATH||B.CHILD_OBJID::TEXT,
|
|
B.PARENT_OBJID = ANY(PATH),
|
|
NOT EXISTS (SELECT 1 FROM BOM_PART_QTY C WHERE C.PARENT_OBJID = B.CHILD_OBJID AND C.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID) AS IS_LEAF,
|
|
VIEW_BOM.AGGREGATE_QTY * NVL(B.QTY, '0')::NUMERIC AS AGGREGATE_QTY
|
|
FROM
|
|
BOM_PART_QTY B
|
|
JOIN
|
|
VIEW_BOM
|
|
ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID
|
|
AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID
|
|
)
|
|
SELECT SUM(V.AGGREGATE_QTY) FROM VIEW_BOM V
|
|
WHERE V.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND V.LEV > 2
|
|
AND V.IS_LEAF = TRUE
|
|
) TOTAL_BOM_PART_QTY_SUM /*BOM부품 QTY SUM*/
|
|
|
|
<!--
|
|
,(SELECT COUNT(DISTINCT POP.PART_OBJID)
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
WHERE POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
) AS TOTAL_PO_PART_CNT /*발주품개수*/
|
|
|
|
,(
|
|
SELECT
|
|
COUNT(DISTINCT RBI.PART_OBJID)
|
|
FROM
|
|
REF_BOM_INFO RBI
|
|
,PURCHASE_ORDER_PART PO
|
|
,PURCHASE_ORDER_MASTER POM
|
|
WHERE RBI.PARENT_OBJID = PBR.OBJID
|
|
AND RBI.PART_OBJID = PO.PART_OBJID
|
|
AND POM.STATUS = 'approvalComplete'
|
|
AND POM.OBJID = PO.PURCHASE_ORDER_MASTER_OBJID
|
|
AND RBI.PART_TYPE IS NOT NULL
|
|
AND RBI.PART_TYPE != ''
|
|
) AS TOTAL_PO_PART_CNT /*발주품개수(VIEW_BOM 기준)*/
|
|
-->
|
|
,(
|
|
SELECT COUNT(DISTINCT PO.PART_NO)
|
|
FROM
|
|
BOM_PART_QTY Q,
|
|
PURCHASE_ORDER_PART PO
|
|
,PURCHASE_ORDER_MASTER POM
|
|
<!--
|
|
,SALES_BOM_REPORT_PART SP
|
|
-->
|
|
,PART_MNG P
|
|
WHERE 1=1
|
|
AND POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
<!--
|
|
AND Q.PART_NO = PO.PART_OBJID
|
|
AND PO.PART_OBJID = SP.PART_OBJID
|
|
AND (Q.LAST_PART_OBJID = PO.PART_OBJID OR Q.PART_NO = PO.PART_OBJID)
|
|
-->
|
|
AND POM.BOM_REPORT_OBJID = Q.BOM_REPORT_OBJID
|
|
AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = PO.PART_OBJID
|
|
AND Q.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
AND P.OBJID = PO.PART_OBJID
|
|
AND POM.STATUS = 'approvalComplete'
|
|
AND POM.OBJID = PO.PURCHASE_ORDER_MASTER_OBJID
|
|
AND P.PART_TYPE IS NOT NULL
|
|
AND P.PART_TYPE != ''
|
|
) AS TOTAL_PO_PART_CNT /*발주품개수(발주서 기준)*/
|
|
,(
|
|
SELECT
|
|
SUM(POP.ORDER_QTY::NUMERIC)
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
WHERE POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND POM.STATUS = 'approvalComplete'
|
|
AND POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
) AS TOTAL_PO_QTY /*발주수량*/
|
|
,(
|
|
SELECT
|
|
SUM(POP.ORDER_QTY::NUMERIC)
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
WHERE POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND POM.ORDER_TYPE_CD = '0001407'
|
|
AND POM.STATUS = 'approvalComplete'
|
|
AND POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
) AS TOTAL_PO_NEW_QTY /*발주수량 신규*/
|
|
,(
|
|
SELECT
|
|
SUM(POP.ORDER_QTY::NUMERIC)
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
WHERE POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND POM.ORDER_TYPE_CD = '0001408'
|
|
AND POM.STATUS = 'approvalComplete'
|
|
AND POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
) AS TOTAL_PO_RE_QTY /*발주수량 재발주*/
|
|
,(
|
|
SELECT
|
|
SUM(DH.RECEIPT_QTY::NUMERIC)
|
|
FROM
|
|
INVENTORY_MGMT_IN DH
|
|
,PURCHASE_ORDER_MASTER POM
|
|
WHERE CM.OBJID = DH.CONTRACT_MGMT_OBJID
|
|
AND POM.OBJID = DH.PURCHASE_ORDER_SUB_OBJID
|
|
AND POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND POM.STATUS = 'approvalComplete'
|
|
AND POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
) AS TOTAL_DELIVERY_QTY /*입고수량*/
|
|
<!-- ,(SELECT SUM(DH.RECEIPT_QTY::NUMERIC)
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
,ARRIVAL_PLAN DH
|
|
,DELIVERY_HISTORY DH
|
|
WHERE POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND POP.OBJID = DH.ORDER_PART_OBJID
|
|
AND POM.STATUS = 'approvalComplete'
|
|
AND POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
) AS TOTAL_DELIVERY_QTY --> /*입고수량*/
|
|
,COALESCE(S1.TOTAL_DEFECT_QTY, 0) TOTAL_DEFECT_QTY
|
|
,COALESCE(S1.DEFECT_QTY_1, 0) DEFECT_QTY_1
|
|
,COALESCE(S1.DEFECT_QTY_2, 0) DEFECT_QTY_2
|
|
,COALESCE(S1.DEFECT_QTY_3, 0) DEFECT_QTY_3
|
|
,COALESCE(S1.DEFECT_QTY_4, 0) DEFECT_QTY_4
|
|
,COALESCE(S1.TOTAL_DEFECT_PRICE, 0) TOTAL_DEFECT_PRICE
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = PBR.UNIT_CODE) AS UNIT_PART_NAME
|
|
<!--
|
|
,(SELECT ARRAY_TO_STRING(ARRAY_AGG(RBI.PART_NAME), ',') FROM REF_BOM_INFO RBI WHERE 1 = 1 AND PBR.OBJID = RBI.PARENT_OBJID AND RBI.LEV = '2') AS UNIT_PART_NAME
|
|
-->
|
|
FROM
|
|
SALES_BOM_REPORT SBR
|
|
,PART_BOM_REPORT PBR
|
|
LEFT OUTER JOIN( <!-- SELECT POM.BOM_REPORT_OBJID
|
|
,SUM(DH.DEFECT_QTY::NUMERIC) AS TOTAL_DEFECT_QTY
|
|
,SUM(CASE WHEN DEFECT_REASON = '0001114' THEN DH.DEFECT_QTY::NUMERIC ELSE NULL END) AS DEFECT_QTY_1 /*설계오류*/
|
|
,SUM(CASE WHEN DEFECT_REASON = '0001115' THEN DH.DEFECT_QTY::NUMERIC ELSE NULL END) AS DEFECT_QTY_2 /*제작불량*/
|
|
,SUM(CASE WHEN DEFECT_REASON = '0001116' THEN DH.DEFECT_QTY::NUMERIC ELSE NULL END) AS DEFECT_QTY_3 /*구매오류*/
|
|
,SUM(CASE WHEN DEFECT_REASON = '0001117' THEN DH.DEFECT_QTY::NUMERIC ELSE NULL END) AS DEFECT_QTY_4 /*오품반입*/
|
|
,SUM(POP.SUPPLY_UNIT_PRICE::NUMERIC * DH.DEFECT_QTY::NUMERIC) AS TOTAL_DEFECT_PRICE
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
,DELIVERY_HISTORY DH -->
|
|
<!-- 미사용
|
|
,DELIVERY_HISTORY_DEFECT DHD
|
|
-->
|
|
SELECT
|
|
POM.BOM_REPORT_OBJID
|
|
,SUM(DH.ERROR_QTY::NUMERIC) AS TOTAL_DEFECT_QTY
|
|
,SUM(CASE WHEN ERROR_REASON = '0001114' THEN DH.ERROR_QTY::NUMERIC ELSE NULL END) AS DEFECT_QTY_1 /*설계오류*/
|
|
,SUM(CASE WHEN ERROR_REASON = '0001115' THEN DH.ERROR_QTY::NUMERIC ELSE NULL END) AS DEFECT_QTY_2 /*제작불량*/
|
|
,SUM(CASE WHEN ERROR_REASON = '0001116' THEN DH.ERROR_QTY::NUMERIC ELSE NULL END) AS DEFECT_QTY_3 /*구매오류*/
|
|
,SUM(CASE WHEN ERROR_REASON = '0001117' THEN DH.ERROR_QTY::NUMERIC ELSE NULL END) AS DEFECT_QTY_4 /*오품반입*/
|
|
,SUM(POP.SUPPLY_UNIT_PRICE::NUMERIC * DH.ERROR_QTY::NUMERIC) AS TOTAL_DEFECT_PRICE
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
,ARRIVAL_PLAN DH
|
|
WHERE POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POP.PART_OBJID = DH.PART_OBJID
|
|
AND POM.OBJID = DH.PARENT_OBJID
|
|
AND POM.STATUS = 'approvalComplete'
|
|
<!-- AND POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID -->
|
|
<!--
|
|
AND POP.OBJID = DHD.PURCHASE_ORDER_PART_OBJID
|
|
-->
|
|
GROUP BY POM.BOM_REPORT_OBJID
|
|
) AS S1 ON PBR.OBJID::VARCHAR = S1.BOM_REPORT_OBJID
|
|
,PROJECT_MGMT CM
|
|
WHERE 1=1
|
|
AND SBR.PARENT_OBJID = PBR.OBJID
|
|
AND PBR.CONTRACT_OBJID = CM.OBJID
|
|
<!-- *** X240913 주의 상단에 검색조건 똑같이 해줘야 함*** -->
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(CM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="customer_objid !=null and customer_objid != '' ">
|
|
AND CM.CUSTOMER_OBJID = #{customer_objid}
|
|
</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="unit_code !=null and unit_code != '' ">
|
|
AND PBR.UNIT_CODE = #{unit_code}
|
|
</if>
|
|
<if test="unit_code_like !=null and unit_code_like != '' ">
|
|
AND PBR.UNIT_CODE LIKE '%'||#{unit_code_like}||'%'
|
|
</if>
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND CM.OBJID = #{project_no}
|
|
</if> -->
|
|
ORDER BY PROJECT_NO DESC, UNIT_PART_NAME
|
|
) AS T
|
|
</select>
|
|
|
|
<select id="deliveryMngList_new" parameterType="map" resultType="map">
|
|
SELECT POM.OBJID
|
|
<!-- ,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
|
|
,CM.CUSTOMER_PROJECT_NAME
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = POM.UNIT_CODE) AS UNIT_NAME
|
|
,CM.PROJECT_NO
|
|
,POM.PURCHASE_ORDER_NO
|
|
,POM.TITLE
|
|
,POM.DELIVERY_PLACE
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.DELIVERY_PLACE) AS DELIVERY_PLACE_NAME
|
|
,POM.INSPECT_METHOD
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.INSPECT_METHOD) AS INSPECT_METHOD_NAME
|
|
,POM.PAYMENT_TERMS
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PAYMENT_TERMS) AS PAYMENT_TERMS_NAME
|
|
,POM.DELIVERY_DATE
|
|
|
|
,POM.PARTNER_OBJID
|
|
,(SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME
|
|
|
|
<!-- 품의서 번호 -->
|
|
,POM.SALES_REQUEST_OBJID
|
|
,(SELECT REQUEST_MNG_NO FROM SALES_REQUEST_MASTER WHERE OBJID::VARCHAR = POM.SALES_REQUEST_OBJID) AS PROPOSAL_NO
|
|
|
|
<!-- 품번/품명 (첫번째 + 외 N건) -->
|
|
,(SELECT
|
|
CASE
|
|
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
|
|
|
|
,POM.SALES_MNG_USER_ID
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_NAME
|
|
,TO_CHAR(POM.REGDATE,'YYYY-MM-DD') AS REGDATE
|
|
,POM.TOTAL_PRICE
|
|
,POM.DISCOUNT_PRICE
|
|
,POM.TOTAL_SUPPLY_UNIT_PRICE
|
|
,POM.TOTAL_SUPPLY_PRICE
|
|
,POM.NEGO_RATE
|
|
,POM.MULTI_MASTER_YN
|
|
,POM.MULTI_YN
|
|
,CASE WHEN POM.MULTI_MASTER_YN = 'Y' THEN '' ELSE POM.MULTI_YN END MULTI_YN_MAKED
|
|
<!-- ,S1.TOTAL_PO_QTY -->
|
|
,(SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) AS TOTAL_PO_QTY
|
|
<!--,(SELECT SUM(REAL_ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) AS TOTAL_PO_QTY -->
|
|
,S1.CUR_DELIVERY_DATE
|
|
,S1.TOTAL_DELIVERY_QTY
|
|
,S1.TOTAL_DELIVERY_PRICE
|
|
<!-- ,(S1.TOTAL_PO_QTY - S1.TOTAL_DELIVERY_QTY - S1.TOTAL_DEFECT_QTY) AS NON_DELIVERY_QTY -->
|
|
,((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - (S1.TOTAL_DELIVERY_QTY <!-- - S1.TOTAL_DEFECT_QTY --> )) AS NON_DELIVERY_QTY
|
|
<!-- ,S1.TOTAL_DEFECT_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) - (S1.TOTAL_DELIVERY_QTY - S1.TOTAL_DEFECT_QTY)) THEN '입고완료' -->
|
|
<!-- ,((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - (S1.TOTAL_DELIVERY_QTY - S1.TOTAL_DEFECT_QTY )) AS NON_DELIVERY_QTY -->
|
|
,((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - (S1.TOTAL_DELIVERY_QTY )) AS NON_DELIVERY_QTY
|
|
<!-- ,S1.TOTAL_DEFECT_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) - (S1.TOTAL_DELIVERY_QTY <!-- - S1.TOTAL_DEFECT_QTY -->)) THEN '입고완료'
|
|
WHEN TO_CHAR(NOW(),'YYYY-MM-DD') <![CDATA[ > ]]> POM.DELIVERY_DATE THEN '지연'
|
|
ELSE '입고중'
|
|
END) AS DELIVERY_STATUS
|
|
,POM.TYPE
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.TYPE) AS TYPE_NAME
|
|
,POM.ORDER_TYPE_CD
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.ORDER_TYPE_CD) AS ORDER_TYPE_CD_NAME
|
|
,(SELECT user_name(RECEIVER_ID) FROM ARRIVAL_PLAN AP WHERE AP.parent_objid = POM.OBJID ORDER BY AP.RECEIPT_DATE desc LIMIT 1) AS CUR_RECEIVER_NAME
|
|
,(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
|
|
,POM.PURCHASE_CLOSE_DATE
|
|
<!-- ,A.APPR_STATUS_NAME -->
|
|
FROM PURCHASE_ORDER_MASTER AS POM
|
|
<!-- LEFT OUTER JOIN(
|
|
SELECT B.OBJID AS ROUTE_OBJID
|
|
,B.STATUS AS APPR_STATUS
|
|
,CASE B.STATUS
|
|
WHEN 'inProcess' THEN '결재중'
|
|
WHEN 'complete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
ELSE '' END APPR_STATUS_NAME
|
|
,A.OBJID AS APPROVAL_OBJID
|
|
,A.TARGET_OBJID
|
|
,B.ROUTE_SEQ
|
|
,TO_CHAR(B.REGDATE,'YYYY-MM-DD') AS APPR_DATE
|
|
FROM APPROVAL A
|
|
,( SELECT T1.*
|
|
FROM ( SELECT TARGET_OBJID
|
|
,MAX(T.ROUTE_SEQ) AS ROUTE_SEQ
|
|
FROM ROUTE T
|
|
GROUP BY T.TARGET_OBJID
|
|
) T
|
|
,ROUTE T1
|
|
WHERE T.TARGET_OBJID = T1.TARGET_OBJID
|
|
AND T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('PURCHASE_ORDER')
|
|
) AS A ON ( POM.OBJID::VARCHAR = A.TARGET_OBJID::VARCHAR
|
|
OR EXISTS (SELECT 1 FROM APPROVAL_TARGET AT WHERE AT.APPROVAL_OBJID = A.APPROVAL_OBJID AND AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR)
|
|
) -->
|
|
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
|
|
,SUM(pop.partner_price::NUMERIC * DH.RECEIPT_QTY::NUMERIC) AS TOTAL_DELIVERY_PRICE
|
|
|
|
<!-- ,SUM(DH.ERROR_QTY::NUMERIC) AS TOTAL_DEFECT_QTY -->
|
|
<!-- ,MAX(DH.DELIVERY_DATE) AS CUR_DELIVERY_DATE
|
|
,SUM(DH.DELIVERY_QTY::NUMERIC) AS TOTAL_DELIVERY_QTY
|
|
,SUM(DH.DEFECT_QTY::NUMERIC) AS TOTAL_DEFECT_QTY -->
|
|
FROM PURCHASE_ORDER_PART POP
|
|
LEFT OUTER JOIN ARRIVAL_PLAN DH
|
|
ON POP.OBJID = DH.ORDER_PART_OBJID
|
|
<!-- LEFT OUTER JOIN DELIVERY_HISTORY DH -->
|
|
<!-- ON POP.PART_OBJID = DH.PART_OBJID -->
|
|
GROUP BY POP.PURCHASE_ORDER_MASTER_OBJID
|
|
) AS S1 ON POM.OBJID::VARCHAR = S1.PURCHASE_ORDER_MASTER_OBJID
|
|
LEFT OUTER JOIN PROJECT_MGMT AS CM
|
|
ON POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
<!-- ,PROJECT_MGMT AS CM -->
|
|
<!-- WHERE POM.CONTRACT_MGMT_OBJID = CM.OBJID -->
|
|
WHERE 1=1
|
|
<!-- AND POM.STATUS = 'approvalComplete' --> <!-- A.APPR_STATUS = 'complete' -->/*결재완료*/
|
|
<!-- AND POM.SALES_STATUS = 'OK' -->
|
|
<!-- AND (POM.SALES_STATUS = 'OK' OR POM.TYPE = '0001538' ) -->
|
|
AND POM.MAIL_SEND_DATE IS NOT NULL
|
|
AND (MULTI_MASTER_YN = 'Y' OR NVL(MULTI_MASTER_YN, '') != 'Y' AND NVL(MULTI_YN, '') != 'Y')
|
|
|
|
<if test="Year !=null and Year != '' ">
|
|
<!-- AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year} -->
|
|
AND TO_CHAR(TO_DATE(S1.CUR_DELIVERY_DATE ,'YYYY-MM-DD'), 'YYYY') = #{Year}
|
|
</if>
|
|
<if test="customer_cd !=null and customer_cd != '' ">
|
|
AND CM.CUSTOMER_OBJID = REPLACE(#{customer_cd}, 'C_', '')
|
|
</if>
|
|
<if test="customer_project_name !=null and customer_project_name != '' ">
|
|
AND TRIM(UPPER(CM.CUSTOMER_PROJECT_NAME)) = TRIM(UPPER(#{customer_project_name}))
|
|
</if>
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND CM.OBJID = #{project_no}
|
|
</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="unit_code !=null and unit_code != '' ">
|
|
AND POM.UNIT_CODE = #{unit_code}
|
|
</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="type !=null and type != '' ">
|
|
AND POM.TYPE = #{type}
|
|
</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_id !=null and sales_mng_user_id != '' ">
|
|
AND POM.SALES_MNG_USER_ID = #{sales_mng_user_id}
|
|
</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 0 <![CDATA[ >= ]]> ((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - (S1.TOTAL_DELIVERY_QTY <!-- - S1.TOTAL_DEFECT_QTY -->)) 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 POM.PURCHASE_ORDER_NO IN (SELECT PURCHASE_ORDER_NO FROM PURCHASE_ORDER_MASTER
|
|
WHERE EXISTS (
|
|
SELECT
|
|
1
|
|
FROM
|
|
PURCHASE_ORDER_PART
|
|
WHERE PURCHASE_ORDER_PART.PURCHASE_ORDER_MASTER_OBJID = PURCHASE_ORDER_MASTER.OBJID
|
|
AND TRIM(UPPER(PURCHASE_ORDER_PART.PART_NO)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NO}))||'%'
|
|
)
|
|
)
|
|
</if>
|
|
<if test="SEARCH_PART_NAME !=null and SEARCH_PART_NAME != '' ">
|
|
AND POM.PURCHASE_ORDER_NO IN (SELECT PURCHASE_ORDER_NO FROM PURCHASE_ORDER_MASTER
|
|
WHERE EXISTS (
|
|
SELECT
|
|
1
|
|
FROM
|
|
PURCHASE_ORDER_PART
|
|
WHERE PURCHASE_ORDER_PART.PURCHASE_ORDER_MASTER_OBJID = PURCHASE_ORDER_MASTER.OBJID
|
|
AND TRIM(UPPER(PURCHASE_ORDER_PART.PART_NAME)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NAME}))||'%'
|
|
)
|
|
)
|
|
</if>
|
|
<if test="SEARCH_PART_SPEC !=null and SEARCH_PART_SPEC != '' ">
|
|
AND POM.PURCHASE_ORDER_NO IN (SELECT PURCHASE_ORDER_NO FROM PURCHASE_ORDER_MASTER
|
|
WHERE EXISTS (
|
|
SELECT
|
|
1
|
|
FROM
|
|
PURCHASE_ORDER_PART
|
|
WHERE PURCHASE_ORDER_PART.PURCHASE_ORDER_MASTER_OBJID = PURCHASE_ORDER_MASTER.OBJID
|
|
AND TRIM(UPPER(PURCHASE_ORDER_PART.SPEC)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_SPEC}))||'%'
|
|
)
|
|
)
|
|
</if>
|
|
ORDER BY POM.REGDATE DESC
|
|
</select>
|
|
|
|
<delete id="deleteDeliveryHistoryDefect" parameterType="map">
|
|
DELETE FROM DELIVERY_HISTORY_DEFECT
|
|
WHERE PURCHASE_ORDER_PART_OBJID = #{PURCHASE_ORDER_PART_OBJID}
|
|
</delete>
|
|
|
|
<insert id="insertDeliveryHistoryDefect" parameterType="map">
|
|
INSERT INTO DELIVERY_HISTORY_DEFECT
|
|
(
|
|
OBJID,
|
|
PURCHASE_ORDER_PART_OBJID,
|
|
DEFECT_QTY,
|
|
DEFECT_REASON_CD,
|
|
WRITER,
|
|
REGDATE
|
|
)VALUES(
|
|
#{OBJID},
|
|
#{PURCHASE_ORDER_PART_OBJID},
|
|
#{DEFECT_QTY},
|
|
#{DEFECT_REASON_CD},
|
|
#{WRITER},
|
|
NOW()
|
|
)
|
|
</insert>
|
|
|
|
<select id="purchaseOrderStatusByProject" parameterType="map" resultType="map">
|
|
<!--
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
QTY,
|
|
REGDATE,
|
|
SEQ,
|
|
LEV,
|
|
PATH,
|
|
CYCLE
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.QTY,
|
|
A.REGDATE,
|
|
A.SEQ,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
FALSE
|
|
FROM
|
|
BOM_PART_QTY A
|
|
WHERE 1=1
|
|
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
|
|
|
|
AND A.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
B.BOM_REPORT_OBJID,
|
|
B.OBJID,
|
|
B.PARENT_OBJID,
|
|
B.CHILD_OBJID,
|
|
B.PARENT_PART_NO,
|
|
B.PART_NO,
|
|
B.QTY,
|
|
B.REGDATE,
|
|
B.SEQ,
|
|
LEV + 1,
|
|
PATH||B.CHILD_OBJID::TEXT,
|
|
B.PARENT_OBJID = ANY(PATH)
|
|
FROM
|
|
BOM_PART_QTY B
|
|
JOIN
|
|
VIEW_BOM
|
|
ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID
|
|
AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID
|
|
|
|
AND B.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
|
|
),REF_BOM_INFO AS(
|
|
SELECT
|
|
V.BOM_REPORT_OBJID AS PARENT_OBJID
|
|
,V.PART_NO AS PART_OBJID
|
|
,PM.PART_NO
|
|
,PM.PART_NAME
|
|
,V.LEV
|
|
,V.QTY
|
|
,(SELECT MAX(LEV) FROM VIEW_BOM) AS MAX_LEV
|
|
,SP.OBJID
|
|
,SP.SUPPLY_OBJID
|
|
,SP.PRICE
|
|
,SP.SUPPLY_OBJID1
|
|
,SP.PRICE1
|
|
,SP.SUPPLY_OBJID2
|
|
,SP.PRICE2
|
|
,SP.SUPPLY_OBJID3
|
|
,SP.PRICE3
|
|
,SP.SUPPLY_OBJID4
|
|
,SP.PRICE4
|
|
,SP.PRICE_SUM
|
|
,PM.SPEC
|
|
,PM.MAKER
|
|
,PM.PART_TYPE
|
|
|
|
,(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = PM.PART_TYPE) AS PART_TYPE_NAME
|
|
|
|
,PBR.CONTRACT_OBJID
|
|
FROM
|
|
VIEW_BOM AS V
|
|
LEFT OUTER JOIN
|
|
SALES_BOM_REPORT_PART AS SP
|
|
ON V.PART_NO = SP.PART_OBJID
|
|
AND SP.PARENT_OBJID::VARCHAR = V.BOM_REPORT_OBJID::VARCHAR
|
|
|
|
LEFT OUTER JOIN
|
|
PART_MNG PM
|
|
ON V.PART_NO = PM.OBJID::VARCHAR
|
|
|
|
LEFT OUTER JOIN
|
|
PART_BOM_REPORT PBR
|
|
ON PBR.OBJID::VARCHAR = V.BOM_REPORT_OBJID::VARCHAR
|
|
|
|
WHERE 1=1
|
|
ORDER BY V.SEQ
|
|
)
|
|
-->
|
|
|
|
SELECT
|
|
T.*
|
|
,(TOTAL_BOM_PART_CNT - TOTAL_PO_PART_CNT) AS NON_PO_PART_CNT /*미발주품수*/
|
|
,CASE
|
|
WHEN COALESCE(TOTAL_PO_PART_CNT, 0) = 0 OR COALESCE(TOTAL_BOM_PART_CNT, 0) = 0 THEN 0
|
|
ELSE ROUND(TOTAL_PO_PART_CNT::numeric / TOTAL_BOM_PART_CNT * 100, 1)
|
|
END AS RATE_PO_S /*발주율*/
|
|
,SBOM_PRICE_SUM * QTY1 * QTY2 as SBOM_PRICE_SUM_ALL
|
|
FROM (
|
|
SELECT
|
|
CM.OBJID
|
|
,TO_CHAR(CM.REGDATE, 'YYYY') AS CM_YEAR
|
|
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = CM.CUSTOMER_OBJID) AS CUSTOMER_NAME
|
|
,CM.CUSTOMER_PROJECT_NAME
|
|
,CM.PROJECT_NAME
|
|
,CM.PROJECT_NO
|
|
,SBR.OBJID AS SALES_OBJID
|
|
,PBR.OBJID AS BOM_REPORT_OBJID
|
|
,(
|
|
SELECT
|
|
COUNT(DISTINCT CASE WHEN PM.PART_TYPE IN (SELECT CODE_ID FROM COMM_CODE WHERE PARENT_CODE_ID = '0000062') THEN BPQ.PART_NO ELSE NULL END)
|
|
FROM
|
|
BOM_PART_QTY BPQ
|
|
,PART_MNG PM
|
|
WHERE 1=1
|
|
<!--
|
|
AND NVL(BPQ.LAST_PART_OBJID, BPQ.PART_NO) = PM.OBJID
|
|
-->
|
|
AND COALESCE(NULLIF(BPQ.LAST_PART_OBJID, ''), BPQ.PART_NO) = PM.OBJID
|
|
AND BPQ.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND BPQ.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
) AS TOTAL_BOM_PART_CNT /*BOM부품개수*/
|
|
<!--
|
|
,(
|
|
SELECT
|
|
COUNT(DISTINCT RBI.PART_OBJID)
|
|
FROM
|
|
REF_BOM_INFO RBI
|
|
,PURCHASE_ORDER_PART PO
|
|
,PURCHASE_ORDER_MASTER POM
|
|
WHERE RBI.PARENT_OBJID = PBR.OBJID
|
|
|
|
WHERE POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
|
|
AND RBI.PART_OBJID = PO.PART_OBJID
|
|
AND POM.STATUS = 'approvalComplete'
|
|
AND POM.OBJID = PO.PURCHASE_ORDER_MASTER_OBJID
|
|
AND RBI.PART_TYPE IS NOT NULL
|
|
AND RBI.PART_TYPE != ''
|
|
<if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if>
|
|
<if test="project_no_array != null and project_no_array.length > 0">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="item" index="index" collection="project_no_array" open="(" separator="," close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if>
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>
|
|
) AS TOTAL_PO_PART_CNT /*발주품개수(VIEW_BOM 기준)*/
|
|
-->
|
|
,(
|
|
CASE
|
|
WHEN EXISTS (
|
|
SELECT 1
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
WHERE POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND POM.TYPE = '0001785'
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
) THEN (
|
|
SELECT COUNT(DISTINCT BPQ.PART_NO)
|
|
FROM BOM_PART_QTY BPQ
|
|
WHERE BPQ.PARENT_PART_NO IN (
|
|
SELECT DISTINCT PO.PART_OBJID
|
|
FROM PURCHASE_ORDER_PART PO
|
|
JOIN PURCHASE_ORDER_MASTER POM ON POM.OBJID = PO.PURCHASE_ORDER_MASTER_OBJID
|
|
WHERE POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND POM.TYPE = '0001785'
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
AND POM.STATUS = 'approvalComplete'
|
|
)
|
|
AND BPQ.STATUS IN ('beforeEdit', 'editing', 'deleting', 'deploy')
|
|
AND BPQ.BOM_REPORT_OBJID = PBR.OBJID )
|
|
|
|
ELSE (
|
|
SELECT COUNT(DISTINCT PO.PART_NO)
|
|
FROM
|
|
BOM_PART_QTY Q,
|
|
PURCHASE_ORDER_PART PO
|
|
,PURCHASE_ORDER_MASTER POM
|
|
<!--
|
|
,SALES_BOM_REPORT_PART SP
|
|
-->
|
|
,PART_MNG P
|
|
WHERE 1=1
|
|
AND POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
<!--
|
|
AND Q.PART_NO = PO.PART_OBJID
|
|
AND PO.PART_OBJID = SP.PART_OBJID
|
|
AND (Q.LAST_PART_OBJID = PO.PART_OBJID OR Q.PART_NO = PO.PART_OBJID)
|
|
-->
|
|
AND POM.BOM_REPORT_OBJID = Q.BOM_REPORT_OBJID
|
|
AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = PO.PART_OBJID
|
|
AND Q.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
AND P.OBJID = PO.PART_OBJID
|
|
AND POM.STATUS = 'approvalComplete'
|
|
AND POM.OBJID = PO.PURCHASE_ORDER_MASTER_OBJID
|
|
AND P.PART_TYPE IS NOT NULL
|
|
AND P.PART_TYPE != ''
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if> -->
|
|
<!-- <if test="project_no_array != null and project_no_array.length > 0">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="item" index="index" collection="project_no_array" open="(" separator="," close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if> -->
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>)
|
|
END
|
|
) AS TOTAL_PO_PART_CNT /*발주품개수(발주서 기준)*/
|
|
|
|
,(
|
|
SELECT
|
|
SUM(POP.ORDER_QTY::NUMERIC)
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
WHERE POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if> -->
|
|
<!-- <if test="project_no_array != null and project_no_array.length > 0">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="item" index="index" collection="project_no_array" open="(" separator="," close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if> -->
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>
|
|
AND POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
) AS TOTAL_PO_QTY /*발주수량*/
|
|
,COALESCE(S1.TOTAL_SUPPLY_UNIT_PRICE, 0) TOTAL_SUPPLY_UNIT_PRICE
|
|
,COALESCE(S1.PRICE_PT_1, 0) PRICE_PT_1
|
|
,COALESCE(S1.PRICE_PT_2, 0) PRICE_PT_2
|
|
,COALESCE(S1.PRICE_PT_3, 0) PRICE_PT_3
|
|
|
|
,CASE
|
|
WHEN COALESCE(S1.PRICE_PT_1, 0) = 0 THEN 0
|
|
ELSE ROUND(COALESCE(S1.PRICE_PT_1, 0) / S1.TOTAL_SUPPLY_UNIT_PRICE * 100, 1)
|
|
END AS RATE_PRICE_PT_1
|
|
|
|
,CASE
|
|
WHEN COALESCE(S1.PRICE_PT_2, 0) = 0 THEN 0
|
|
ELSE ROUND(COALESCE(S1.PRICE_PT_2, 0) / S1.TOTAL_SUPPLY_UNIT_PRICE * 100, 1)
|
|
END AS RATE_PRICE_PT_2
|
|
|
|
,COALESCE(S1.PRICE_PT_ETC, 0) PRICE_PT_ETC
|
|
<!--
|
|
,CASE
|
|
WHEN COALESCE(S1.PRICE_PT_ETC, 0) = 0 THEN 0
|
|
ELSE ROUND(COALESCE(S1.PRICE_PT_ETC, 0) / S1.TOTAL_SUPPLY_UNIT_PRICE * 100, 1)
|
|
END AS RATE_PRICE_PT_ETC
|
|
|
|
,ROUND(COALESCE(S1.PRICE_PT_1, 0) / S1.TOTAL_SUPPLY_UNIT_PRICE * 100, 1) AS RATE_PRICE_PT_1
|
|
,ROUND(COALESCE(S1.PRICE_PT_2, 0) / S1.TOTAL_SUPPLY_UNIT_PRICE * 100, 1) AS RATE_PRICE_PT_2
|
|
,ROUND(COALESCE(S1.PRICE_PT_ETC, 0) / S1.TOTAL_SUPPLY_UNIT_PRICE * 100, 1) AS RATE_PRICE_PT_ETC
|
|
-->
|
|
|
|
,COALESCE(S2.TOTAL_SUPPLY_UNIT_PRICE, 0) RE_TOTAL_SUPPLY_UNIT_PRICE
|
|
,COALESCE(S4.TOTAL_SUPPLY_UNIT_PRICE, 0) TURNKEY_TOTAL_SUPPLY_UNIT_PRICE
|
|
,COALESCE(S3.DISCOUNT_PRICE, 0) DISCOUNT_PRICE
|
|
,COALESCE(S3.TOTAL_SUPPLY_PRICE, 0) TOTAL_SUPPLY_PRICE
|
|
,COALESCE(S3.TOTAL_SUPPLY_PRICE, 0) - COALESCE(S3.DISCOUNT_PRICE, 0) NEGO_TOTAL_PRICE
|
|
,COALESCE(S3.TOTAL_PRICE, 0) TOTAL_PRICE
|
|
,COALESCE(S3.TOTAL_PRICE_ALL, 0) TOTAL_PRICE_ALL
|
|
,(CASE WHEN S3.TOTAL_SUPPLY_PRICE = 0 THEN 0 ELSE ROUND(S3.DISCOUNT_PRICE/S3.TOTAL_SUPPLY_PRICE*100, 4) END) NEGO_RATE
|
|
,(
|
|
SELECT
|
|
COUNT(1)
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
WHERE POM.STATUS = 'approvalComplete'
|
|
AND POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND POM.ORDER_TYPE_CD = '0001408'
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if> -->
|
|
<!-- <if test="project_no_array != null and project_no_array.length > 0">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="item" index="index" collection="project_no_array" open="(" separator="," close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if> -->
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>
|
|
) RE_COUNT
|
|
,(
|
|
SELECT
|
|
COUNT(1)
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
WHERE POM.STATUS = 'approvalComplete'
|
|
AND POM.BOM_REPORT_OBJID = PBR.OBJID
|
|
AND TYPE = '0001785'
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if> -->
|
|
<!-- <if test="project_no_array != null and project_no_array.length > 0">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="item" index="index" collection="project_no_array" open="(" separator="," close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if> -->
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>
|
|
) TURNKEY_COUNT
|
|
|
|
,PWT.UNIT_NO || '-' || PWT.TASK_NAME UNIT_PART_NAME
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = PBR.UNIT_CODE) AS UNIT_PART_NAME2
|
|
,(SELECT SUM(NVL(SBP.PRICE_SUM, '0')::NUMERIC) AS DISCOUNT_PRICE FROM SALES_BOM_REPORT_PART SBP WHERE SBP.PARENT_OBJID = PBR.OBJID) SBOM_PRICE_SUM
|
|
,(SELECT MAX(NVL(BPQ.QTY, '0')::NUMERIC) AS QTY FROM BOM_PART_QTY BPQ WHERE BPQ.BOM_REPORT_OBJID = PBR.OBJID AND NVL(PARENT_PART_NO, '') = '' AND STATUS IN ('adding', 'beforeEdit', 'editing','deleting', 'deploy') ) QTY1
|
|
,(SELECT SUM(NVL(BPQ2.QTY, '0')::NUMERIC) AS QTY FROM BOM_PART_QTY BPQ2 WHERE BPQ2.BOM_REPORT_OBJID = PBR.OBJID AND BPQ2.STATUS IN ('adding', 'beforeEdit', 'editing','deleting', 'deploy')
|
|
AND BPQ2.PARENT_OBJID = (SELECT MAX(BPQ.CHILD_OBJID) FROM BOM_PART_QTY BPQ WHERE BPQ.BOM_REPORT_OBJID = PBR.OBJID AND NVL(PARENT_PART_NO, '') = '' AND BPQ.STATUS IN ('adding', 'beforeEdit', 'editing','deleting', 'deploy')) ) QTY2
|
|
<!--
|
|
(SELECT ARRAY_TO_STRING(ARRAY_AGG(RBI.PART_NAME), ',') FROM REF_BOM_INFO RBI WHERE 1 = 1 AND PBR.OBJID = RBI.PARENT_OBJID AND RBI.LEV = '2') AS UNIT_PART_NAME
|
|
-->
|
|
FROM
|
|
PROJECT_MGMT CM
|
|
LEFT OUTER JOIN PMS_WBS_TASK PWT
|
|
ON PWT.CONTRACT_OBJID = CM.OBJID
|
|
LEFT OUTER JOIN PART_BOM_REPORT PBR
|
|
ON PBR.CONTRACT_OBJID = CM.OBJID
|
|
AND PBR.UNIT_CODE = PWT.OBJID
|
|
LEFT OUTER JOIN SALES_BOM_REPORT SBR
|
|
ON SBR.PARENT_OBJID = PBR.OBJID
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
<!--
|
|
POM.BOM_REPORT_OBJID
|
|
-->
|
|
POM.CONTRACT_MGMT_OBJID, UNIT_CODE
|
|
,SUM(POP.SUPPLY_UNIT_PRICE::NUMERIC) AS TOTAL_SUPPLY_UNIT_PRICE
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000063') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_1
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000064','0001540','0001398','0001397','0001396') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_2
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000065') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_3
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000063','0000064','0001540','0001398','0001397','0001396', '0000065') THEN NULL ELSE POP.SUPPLY_UNIT_PRICE::NUMERIC END) AS PRICE_PT_ETC
|
|
<!--
|
|
-->
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
LEFT OUTER JOIN
|
|
PART_MNG PM
|
|
ON POP.PART_OBJID = PM.OBJID::VARCHAR
|
|
WHERE POM.STATUS = 'approvalComplete'
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POM.ORDER_TYPE_CD = '0001407'
|
|
AND TYPE != '0001785'
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if> -->
|
|
<!-- <if test="project_no_array != null and project_no_array.length > 0">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="item" index="index" collection="project_no_array" open="(" separator="," close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if> -->
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>
|
|
<!--
|
|
GROUP BY POM.BOM_REPORT_OBJID
|
|
-->
|
|
GROUP BY POM.CONTRACT_MGMT_OBJID, UNIT_CODE
|
|
) AS S1
|
|
<!--
|
|
ON PBR.OBJID::VARCHAR = S1.BOM_REPORT_OBJID
|
|
-->
|
|
ON PBR.CONTRACT_OBJID = S1.CONTRACT_MGMT_OBJID
|
|
AND PBR.UNIT_CODE = S1.UNIT_CODE
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
POM.BOM_REPORT_OBJID
|
|
,SUM(POP.SUPPLY_UNIT_PRICE::NUMERIC) AS TOTAL_SUPPLY_UNIT_PRICE
|
|
<!--
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000063') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_1
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000064') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_2
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000065') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_3
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000063','0000064') THEN NULL ELSE POP.SUPPLY_UNIT_PRICE::NUMERIC END) AS PRICE_PT_ETC
|
|
-->
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
LEFT OUTER JOIN
|
|
PART_MNG PM
|
|
ON POP.PART_OBJID = PM.OBJID::VARCHAR
|
|
WHERE POM.STATUS = 'approvalComplete'
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POM.ORDER_TYPE_CD = '0001408'
|
|
AND TYPE != '0001785'
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if> -->
|
|
<!-- <if test="project_no_array != null and project_no_array.length > 0">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="item" index="index" collection="project_no_array" open="(" separator="," close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if> -->
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>
|
|
GROUP BY POM.BOM_REPORT_OBJID
|
|
) AS S2
|
|
ON PBR.OBJID::VARCHAR = S2.BOM_REPORT_OBJID
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
POM.BOM_REPORT_OBJID
|
|
,SUM(POP.SUPPLY_UNIT_PRICE::NUMERIC) AS TOTAL_SUPPLY_UNIT_PRICE
|
|
<!--
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000063') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_1
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000064') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_2
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000065') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_3
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000063','0000064') THEN NULL ELSE POP.SUPPLY_UNIT_PRICE::NUMERIC END) AS PRICE_PT_ETC
|
|
-->
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
LEFT OUTER JOIN
|
|
PART_MNG PM
|
|
ON POP.PART_OBJID = PM.OBJID::VARCHAR
|
|
WHERE POM.STATUS = 'approvalComplete'
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND TYPE = '0001785'
|
|
<!--
|
|
<if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if>
|
|
AND POM.ORDER_TYPE_CD = '0001407'
|
|
-->
|
|
<!-- <if test="project_no_array != null and project_no_array.length > 0">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="item" index="index" collection="project_no_array" open="(" separator="," close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if> -->
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>
|
|
GROUP BY POM.BOM_REPORT_OBJID
|
|
) AS S4
|
|
ON PBR.OBJID::VARCHAR = S4.BOM_REPORT_OBJID
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
<!--
|
|
POM.BOM_REPORT_OBJID
|
|
-->
|
|
POM.CONTRACT_MGMT_OBJID
|
|
,UNIT_CODE
|
|
,SUM(NVL(POM.TOTAL_PRICE_ALL, '0')::NUMERIC) AS TOTAL_PRICE_ALL
|
|
,SUM(NVL(POM.TOTAL_SUPPLY_PRICE, '0')::NUMERIC) AS TOTAL_SUPPLY_PRICE
|
|
,SUM(NVL(POM.TOTAL_REAL_SUPPLY_PRICE, '0')::NUMERIC) AS TOTAL_REAL_SUPPLY_PRICE
|
|
,SUM(NVL(POM.TOTAL_SUPPLY_UNIT_PRICE, '0')::NUMERIC) AS TOTAL_SUPPLY_UNIT_PRICE
|
|
,SUM(NVL(POM.DISCOUNT_PRICE, '0')::NUMERIC) AS DISCOUNT_PRICE
|
|
,SUM(NVL(POM.TOTAL_PRICE, '0')::NUMERIC) AS TOTAL_PRICE
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
WHERE POM.STATUS = 'approvalComplete'
|
|
<!--
|
|
AND POM.ORDER_TYPE_CD = '0001408'
|
|
-->
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if> -->
|
|
<!-- <if test="project_no_array != null and project_no_array.length > 0">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="item" index="index" collection="project_no_array" open="(" separator="," close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if> -->
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>
|
|
<!--
|
|
GROUP BY POM.BOM_REPORT_OBJID
|
|
-->
|
|
GROUP BY POM.CONTRACT_MGMT_OBJID
|
|
,UNIT_CODE
|
|
) AS S3
|
|
ON CM.OBJID = S3.CONTRACT_MGMT_OBJID
|
|
AND PWT.OBJID = S3.UNIT_CODE
|
|
<!--
|
|
ON PBR.CONTRACT_OBJID = S3.CONTRACT_MGMT_OBJID
|
|
AND PBR.UNIT_CODE = S3.UNIT_CODE
|
|
ON PBR.OBJID::VARCHAR = S3.BOM_REPORT_OBJID
|
|
-->
|
|
WHERE 1=1
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND CM.OBJID = #{project_no}
|
|
</if> -->
|
|
<!-- <if test="project_no_array != null and project_no_array.length > 0">
|
|
AND CM.OBJID IN
|
|
<foreach item="item" index="index" collection="project_no_array" open="(" separator="," close=")">
|
|
#{item}
|
|
</foreach>
|
|
</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="unit_code != null and unit_code != ''">
|
|
AND PBR.UNIT_CODE = #{unit_code}
|
|
</if>
|
|
) AS T
|
|
ORDER BY PROJECT_NO DESC, UNIT_PART_NAME
|
|
</select>
|
|
|
|
<select id="purchaseOrderStatusByProjectSum" parameterType="map" resultType="map">
|
|
SELECT
|
|
COALESCE(SUM(COALESCE(S1.SUPPLY_UNIT_PRICE, 0)), 0) AS TOTAL_SUPPLY_UNIT_PRICE
|
|
FROM PROJECT_MGMT CM
|
|
<!--
|
|
SALES_BOM_REPORT SBR
|
|
,PART_BOM_REPORT PBR
|
|
-->
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
POM.CONTRACT_MGMT_OBJID
|
|
<!--
|
|
POM.BOM_REPORT_OBJID
|
|
-->
|
|
,SUM(POM.TOTAL_SUPPLY_PRICE::NUMERIC) AS TOTAL_SUPPLY_PRICE
|
|
,SUM(POM.TOTAL_SUPPLY_UNIT_PRICE::NUMERIC) AS SUPPLY_UNIT_PRICE
|
|
<!--
|
|
,SUM(POP.SUPPLY_UNIT_PRICE::NUMERIC) AS SUPPLY_UNIT_PRICE
|
|
,SUM(POP.SUPPLY_UNIT_VAT_SUM_PRICE::NUMERIC) AS TOTAL_SUPPLY_UNIT_PRICE
|
|
-->
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
<!--
|
|
,PURCHASE_ORDER_PART POP
|
|
LEFT OUTER JOIN
|
|
PART_MNG PM
|
|
ON POP.PART_OBJID = PM.OBJID::VARCHAR
|
|
-->
|
|
WHERE POM.STATUS = 'approvalComplete'
|
|
<!-- 신규
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POM.ORDER_TYPE_CD = '0001407'
|
|
-->
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if> -->
|
|
<!-- <if test="project_no_array != null and project_no_array.length > 0">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="item" index="index" collection="project_no_array" open="(" separator="," close=")">
|
|
#{item}
|
|
</foreach>
|
|
</if> -->
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND POM.CONTRACT_MGMT_OBJID IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>
|
|
GROUP BY POM.BOM_REPORT_OBJID
|
|
) AS S1
|
|
<!--
|
|
ON PBR.OBJID::VARCHAR = S1.BOM_REPORT_OBJID
|
|
-->
|
|
ON CM.OBJID::VARCHAR = S1.CONTRACT_MGMT_OBJID
|
|
<!--
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
POM.BOM_REPORT_OBJID
|
|
,SUM(POP.SUPPLY_UNIT_VAT_SUM_PRICE::NUMERIC) AS TOTAL_SUPPLY_UNIT_PRICE
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000063') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_1
|
|
,SUM(CASE WHEN PM.PART_TYPE IN ('0000064') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_2
|
|
FROM
|
|
PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
LEFT OUTER JOIN
|
|
PART_MNG PM
|
|
ON POP.PART_OBJID = PM.OBJID::VARCHAR
|
|
WHERE POM.STATUS = 'approvalComplete'
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POM.ORDER_TYPE_CD = '0001408'
|
|
<if test="project_no !=null and project_no != '' ">
|
|
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
|
</if>
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>
|
|
GROUP BY POM.BOM_REPORT_OBJID
|
|
) AS S2
|
|
ON PBR.OBJID::VARCHAR = S2.BOM_REPORT_OBJID
|
|
WHERE SBR.PARENT_OBJID = PBR.OBJID
|
|
AND PBR.CONTRACT_OBJID = CM.OBJID
|
|
-->
|
|
WHERE 1=1
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND CM.OBJID = #{project_no}
|
|
</if> -->
|
|
<!-- <if test="project_no_array != null and project_no_array.length > 0">
|
|
AND CM.OBJID IN
|
|
<foreach item="item" index="index" collection="project_no_array" open="(" separator="," close=")">
|
|
#{item}
|
|
</foreach>
|
|
</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="unit_code != null and unit_code != ''">
|
|
AND PBR.UNIT_CODE = #{unit_code}
|
|
</if>
|
|
</select>
|
|
|
|
<select id="purchaseOrderStatusAmountBySupply" parameterType="map" resultType="map">
|
|
SELECT ASM.OBJID
|
|
,ASM.SUPPLY_NAME
|
|
,S1.*
|
|
FROM ADMIN_SUPPLY_MNG ASM
|
|
,( SELECT POM.PARTNER_OBJID
|
|
,SUM(POP.SUPPLY_UNIT_PRICE::NUMERIC) AS TOTAL_SUPPLY_UNIT_PRICE
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '01' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M01
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '02' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M02
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '03' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M03
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '04' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M04
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '05' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M05
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '06' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M06
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '07' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M07
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '08' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M08
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '09' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M09
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '10' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M10
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '11' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M11
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '12' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M12
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
,PROJECT_MGMT CM
|
|
WHERE POM.STATUS = 'approvalComplete'
|
|
AND POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
|
|
</if>
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND CM.OBJID = #{project_no}
|
|
</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="sales_mng_user_id !=null and sales_mng_user_id != '' ">
|
|
AND POM.SALES_MNG_USER_ID = #{sales_mng_user_id}
|
|
</if>
|
|
|
|
GROUP BY POM.PARTNER_OBJID
|
|
) AS S1
|
|
WHERE 1=1
|
|
AND ASM.OBJID::VARCHAR = S1.PARTNER_OBJID
|
|
<if test="partner_objid !=null and partner_objid != '' ">
|
|
AND ASM.OBJID::VARCHAR = #{partner_objid}
|
|
</if>
|
|
ORDER BY ASM.SUPPLY_NAME
|
|
</select>
|
|
|
|
<!-- purchaseOrderStatusAmountBySupply 쿼리의 총계만 계산하여 가져온다. -->
|
|
<select id="purchaseOrderStatusAmountBySupply_sum" parameterType="map" resultType="map">
|
|
SELECT
|
|
COALESCE(SUM(TOTAL_SUPPLY_UNIT_PRICE),'0') AS TOTAL_SUPPLY_UNIT_PRICE,
|
|
COALESCE(SUM(M01),'0') AS M01,
|
|
COALESCE(SUM(M02),'0') AS M02,
|
|
COALESCE(SUM(M03),'0') AS M03,
|
|
COALESCE(SUM(M04),'0') AS M04,
|
|
COALESCE(SUM(M05),'0') AS M05,
|
|
COALESCE(SUM(M06),'0') AS M06,
|
|
COALESCE(SUM(M07),'0') AS M07,
|
|
COALESCE(SUM(M08),'0') AS M08,
|
|
COALESCE(SUM(M09),'0') AS M09,
|
|
COALESCE(SUM(M10),'0') AS M10,
|
|
COALESCE(SUM(M11),'0') AS M11,
|
|
COALESCE(SUM(M12),'0') AS M12
|
|
FROM(
|
|
SELECT ASM.OBJID
|
|
,ASM.SUPPLY_NAME
|
|
,S1.*
|
|
FROM ADMIN_SUPPLY_MNG ASM
|
|
,( SELECT POM.PARTNER_OBJID
|
|
,SUM(POP.SUPPLY_UNIT_PRICE::NUMERIC) AS TOTAL_SUPPLY_UNIT_PRICE
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '01' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M01
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '02' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M02
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '03' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M03
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '04' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M04
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '05' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M05
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '06' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M06
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '07' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M07
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '08' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M08
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '09' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M09
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '10' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M10
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '11' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M11
|
|
,SUM(CASE WHEN TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'MM') = '12' THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS M12
|
|
FROM PURCHASE_ORDER_MASTER POM
|
|
,PURCHASE_ORDER_PART POP
|
|
,PROJECT_MGMT CM
|
|
WHERE POM.STATUS = 'approvalComplete'
|
|
AND POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(TO_DATE(POM.DELIVERY_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
|
|
</if>
|
|
<!-- <if test="project_no !=null and project_no != '' ">
|
|
AND CM.OBJID = #{project_no}
|
|
</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="sales_mng_user_id !=null and sales_mng_user_id != '' ">
|
|
AND POM.SALES_MNG_USER_ID = #{sales_mng_user_id}
|
|
</if>
|
|
|
|
GROUP BY POM.PARTNER_OBJID
|
|
) AS S1
|
|
WHERE 1=1
|
|
AND ASM.OBJID::VARCHAR = S1.PARTNER_OBJID
|
|
<if test="partner_objid !=null and partner_objid != '' ">
|
|
AND ASM.OBJID::VARCHAR = #{partner_objid}
|
|
</if>
|
|
ORDER BY ASM.SUPPLY_NAME
|
|
|
|
) AS TOTAL_SUM
|
|
|
|
</select>
|
|
|
|
|
|
|
|
<!-- 공급업체에 해당하는 정보 목록 Count를 가져온다. -->
|
|
<select id="getdeliveryMngInvalidListCnt" parameterType="map" resultType="map">
|
|
SELECT
|
|
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
|
|
TOTAL_CNT::numeric
|
|
FROM (
|
|
SELECT
|
|
COUNT(1)::float TOTAL_CNT
|
|
FROM(
|
|
SELECT TBL.*
|
|
FROM(
|
|
SELECT
|
|
CM.PROJECT_NO
|
|
,CM.PROJECT_NAME
|
|
,CM.OBJID AS CONTRACT_OBJID
|
|
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = CM.CUSTOMER_OBJID) AS CUSTOMER_NAME
|
|
<!-- ,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.UNIT_CODE) AS UNIT_NAME -->
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = POM.UNIT_CODE) AS UNIT_NAME
|
|
,POM.UNIT_CODE
|
|
,(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
|
|
,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
|
|
,DH.DEFECT_REASON
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = DH.DEFECT_RESP) AS DEFECT_RESP_NAME
|
|
,DH.DEFECT_RESP
|
|
,(SELECT (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PM.WRITER) FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = DH.PART_OBJID) AS DESIGN_NAME
|
|
,(SELECT PM.WRITER FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = DH.PART_OBJID) AS DESIGN_USER_ID
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_NAME
|
|
,DH.DEFECT_CONTENT
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = DH.DEFECT_ACTION) AS DEFECT_ACTION_NAME
|
|
,DH.DEFECT_ACTION
|
|
,POM.PURCHASE_ORDER_NO
|
|
,POM.TITLE
|
|
,POM.DELIVERY_PLACE
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.DELIVERY_PLACE) AS DELIVERY_PLACE_NAME
|
|
,POM.INSPECT_METHOD
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.INSPECT_METHOD) AS INSPECT_METHOD_NAME
|
|
,POM.PAYMENT_TERMS
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PAYMENT_TERMS) AS PAYMENT_TERMS_NAME
|
|
,POM.DELIVERY_DATE
|
|
,POM.PARTNER_OBJID
|
|
,POM.SALES_MNG_USER_ID
|
|
,TO_CHAR(POM.REGDATE,'YYYY-MM-DD') AS REGDATE
|
|
,POM.TOTAL_PRICE
|
|
,DH.OBJID
|
|
,SUBSTR(PURCHASE_DATE,0,5) AS PURCHASE_DATE
|
|
FROM PURCHASE_ORDER_MASTER AS POM
|
|
,PURCHASE_ORDER_PART AS POP
|
|
,PROJECT_MGMT AS CM
|
|
,DELIVERY_HISTORY DH
|
|
WHERE POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POP.PART_OBJID = DH.PART_OBJID
|
|
AND POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
AND DH.DEFECT_QTY::INTEGER > 0
|
|
) TBL WHERE 1=1
|
|
<if test="Year != null and Year !=''">
|
|
AND PURCHASE_DATE = #{Year}
|
|
</if>
|
|
|
|
<if test="project_no != null and project_no != ''">
|
|
AND CONTRACT_OBJID = #{project_no}
|
|
</if>
|
|
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>
|
|
|
|
<if test="part_no != null and part_no != ''">
|
|
AND UPPER(PART_NO) LIKE UPPER('%${part_no}%')
|
|
</if>
|
|
|
|
<if test="partner_objid != null and partner_objid != ''">
|
|
AND PARTNER_OBJID = #{partner_objid}
|
|
</if>
|
|
|
|
<if test="part_name != null and part_name != ''">
|
|
AND UPPER(PART_NAME) LIKE UPPER('%${part_name}%')
|
|
</if>
|
|
|
|
<if test="defect_reason != null and defect_reason != ''">
|
|
AND DEFECT_REASON = #{defect_reason}
|
|
</if>
|
|
|
|
<if test="defect_resp != null and defect_resp != ''">
|
|
AND DEFECT_RESP = #{defect_resp}
|
|
</if>
|
|
|
|
<if test="defect_action != null and defect_action != ''">
|
|
AND DEFECT_ACTION = #{defect_action}
|
|
</if>
|
|
|
|
<if test="design_user_id != null and design_user_id != ''">
|
|
AND DESIGN_USER_ID = #{design_user_id}
|
|
</if>
|
|
|
|
<if test="sales_mng_user_id != null and sales_mng_user_id != ''">
|
|
AND SALES_MNG_USER_ID = #{sales_mng_user_id}
|
|
</if>
|
|
) TBL WHERE 1=1
|
|
)A WHERE 1=1
|
|
</select>
|
|
|
|
<!-- 공급업체에 해당하는 정보 목록을 가져온다. -->
|
|
<select id="getdeliveryMngInvalidList" parameterType="map" resultType="map">
|
|
SELECT *
|
|
FROM(
|
|
SELECT TBL.*, ROW_NUMBER() OVER(ORDER BY DEFECT_ACTION DESC) RNUM
|
|
FROM(
|
|
SELECT TBL.*
|
|
FROM(
|
|
SELECT
|
|
CM.PROJECT_NO
|
|
,CM.PROJECT_NAME
|
|
,CM.OBJID AS CONTRACT_OBJID
|
|
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = CM.CUSTOMER_OBJID) AS CUSTOMER_NAME
|
|
<!-- ,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.UNIT_CODE) AS UNIT_NAME -->
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = POM.UNIT_CODE) AS UNIT_NAME
|
|
,POM.UNIT_CODE
|
|
,(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
|
|
,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
|
|
,DH.DEFECT_REASON
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = DH.DEFECT_RESP) AS DEFECT_RESP_NAME
|
|
,DH.DEFECT_RESP
|
|
,(SELECT (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PM.WRITER) FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = DH.PART_OBJID) AS DESIGN_NAME
|
|
,(SELECT PM.WRITER FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = DH.PART_OBJID) AS DESIGN_USER_ID
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_NAME
|
|
,DH.DEFECT_CONTENT
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = DH.DEFECT_ACTION) AS DEFECT_ACTION_NAME
|
|
,DH.DEFECT_ACTION
|
|
,DH.DEFECT_ACTION_DATE
|
|
,POM.PURCHASE_ORDER_NO
|
|
,POM.TITLE
|
|
,POM.DELIVERY_PLACE
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.DELIVERY_PLACE) AS DELIVERY_PLACE_NAME
|
|
,POM.INSPECT_METHOD
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.INSPECT_METHOD) AS INSPECT_METHOD_NAME
|
|
,POM.PAYMENT_TERMS
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PAYMENT_TERMS) AS PAYMENT_TERMS_NAME
|
|
,POM.DELIVERY_DATE
|
|
,POM.PARTNER_OBJID
|
|
,POM.SALES_MNG_USER_ID
|
|
,TO_CHAR(POM.REGDATE,'YYYY-MM-DD') AS REGDATE
|
|
,POM.TOTAL_PRICE
|
|
,DH.OBJID
|
|
,SUBSTR(PURCHASE_DATE,0,5) AS PURCHASE_DATE
|
|
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = DH.OBJID AND DOC_TYPE='DEFECT_ACTION_IMG_01' AND UPPER(STATUS) = 'ACTIVE') AS CU01_CNT
|
|
,APPR.APPROVAL_OBJID
|
|
,APPR.ROUTE_OBJID
|
|
,APPR.APPR_STATUS
|
|
,APPR.APPR_STATUS_NAME
|
|
FROM PURCHASE_ORDER_MASTER AS POM
|
|
,PURCHASE_ORDER_PART AS POP
|
|
,PROJECT_MGMT AS CM
|
|
,DELIVERY_HISTORY DH
|
|
LEFT OUTER JOIN (SELECT B.OBJID AS ROUTE_OBJID
|
|
,B.STATUS AS APPR_STATUS
|
|
,CASE UPPER(B.STATUS)
|
|
WHEN 'INPROCESS' THEN '결재중'
|
|
WHEN 'COMPLETE' THEN '결재완료'
|
|
WHEN 'REJECT' THEN '반려'
|
|
ELSE '' END APPR_STATUS_NAME
|
|
,A.OBJID AS APPROVAL_OBJID
|
|
,A.TARGET_OBJID
|
|
,B.ROUTE_SEQ
|
|
FROM APPROVAL A
|
|
,( SELECT T1.*
|
|
FROM ( SELECT TARGET_OBJID
|
|
,MAX(T.ROUTE_SEQ) AS ROUTE_SEQ
|
|
FROM ROUTE T
|
|
GROUP BY T.TARGET_OBJID
|
|
) T
|
|
,ROUTE T1
|
|
WHERE T.TARGET_OBJID = T1.TARGET_OBJID
|
|
AND T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('DEFECT_ACTION')
|
|
) AS APPR
|
|
ON DH.OBJID::NUMERIC = APPR.TARGET_OBJID
|
|
WHERE POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POP.PART_OBJID = DH.PART_OBJID
|
|
AND POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
AND DH.DEFECT_QTY::INTEGER > 0
|
|
) TBL
|
|
WHERE 1=1
|
|
|
|
<if test="Year != null and Year !=''">
|
|
AND PURCHASE_DATE = #{Year}
|
|
</if>
|
|
|
|
<if test="project_no != null and project_no != ''">
|
|
AND CONTRACT_OBJID = #{project_no}
|
|
</if>
|
|
|
|
<if test="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>
|
|
|
|
<if test="part_no != null and part_no != ''">
|
|
AND UPPER(PART_NO) LIKE UPPER('%${part_no}%')
|
|
</if>
|
|
|
|
<if test="partner_objid != null and partner_objid != ''">
|
|
AND PARTNER_OBJID = #{partner_objid}
|
|
</if>
|
|
|
|
<if test="part_name != null and part_name != ''">
|
|
AND UPPER(PART_NAME) LIKE UPPER('%${part_name}%')
|
|
</if>
|
|
|
|
<if test="defect_reason != null and defect_reason != ''">
|
|
AND DEFECT_REASON = #{defect_reason}
|
|
</if>
|
|
|
|
<if test="defect_resp != null and defect_resp != ''">
|
|
AND DEFECT_RESP = #{defect_resp}
|
|
</if>
|
|
|
|
<if test="defect_action != null and defect_action != ''">
|
|
AND DEFECT_ACTION = #{defect_action}
|
|
</if>
|
|
|
|
<if test="design_user_id != null and design_user_id != ''">
|
|
AND DESIGN_USER_ID = #{design_user_id}
|
|
</if>
|
|
|
|
<if test="sales_mng_user_id != null and sales_mng_user_id != ''">
|
|
AND SALES_MNG_USER_ID = #{sales_mng_user_id}
|
|
</if>
|
|
|
|
<if test="appr_status !=null and appr_status != '' ">
|
|
AND APPR.APPR_STATUS = #{appr_status}
|
|
</if>
|
|
|
|
)TBL WHERE 1=1
|
|
) A WHERE 1=1
|
|
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
|
|
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
|
|
</select>
|
|
|
|
<select id="getdeliveryMngInvalidGridList" parameterType="map" resultType="map">
|
|
SELECT
|
|
POM.PURCHASE_ORDER_NO
|
|
,CM.PROJECT_NO
|
|
,CM.PROJECT_NAME
|
|
,POM.OBJID AS ORDER_OBJID
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = POM.UNIT_CODE) AS UNIT_NAME
|
|
,AP.RECEIPT_DATE
|
|
,POP.PART_NO
|
|
,POP.PART_NAME
|
|
,POP.ORDER_QTY
|
|
,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
|
|
<!-- ,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = AP.OBJID AND DOC_TYPE='DEFECT_ACTION_IMG_01' AND UPPER(STATUS) = 'ACTIVE') AS CU01_CNT -->
|
|
,CASE WHEN AP.DEFECT_ACTION_TITLE IS NOT NULL THEN 1
|
|
ELSE 0
|
|
END CU01_CNT
|
|
,AP.ERROR_QTY
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID= AP.ERROR_REASON) AS ERROR_REASON
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID= AP.ATTRIBUTION) AS ATTRIBUTION
|
|
,RE_ARRIVAL_PLAN_DATE
|
|
,RECEIPT_DATE
|
|
,ASSEMBLY_STATUS
|
|
,AP.GROUP_SEQ
|
|
,AP.SEQ
|
|
,AP.OBJID
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = AP.DEFECT_ACTION) AS DEFECT_ACTION_NAME
|
|
,AP.DEFECT_ACTION
|
|
,AP.DEFECT_ACTION_DATE
|
|
<!--
|
|
,CM.OBJID AS CONTRACT_OBJID
|
|
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = CM.CUSTOMER_OBJID) AS CUSTOMER_NAME
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.UNIT_CODE) AS UNIT_NAME
|
|
,(SELECT TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = POM.UNIT_CODE) AS UNIT_NAME
|
|
,POM.UNIT_CODE
|
|
,(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
|
|
,DH.INSPECT_DATE
|
|
,DH.DEFECT_QTY
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = DH.DEFECT_REASON) AS DEFECT_REASON_NAME
|
|
,DH.DEFECT_REASON
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = DH.DEFECT_RESP) AS DEFECT_RESP_NAME
|
|
,DH.DEFECT_RESP
|
|
,(SELECT (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PM.WRITER) FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = DH.PART_OBJID) AS DESIGN_NAME
|
|
,(SELECT PM.WRITER FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = DH.PART_OBJID) AS DESIGN_USER_ID
|
|
,DH.DEFECT_CONTENT
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = DH.DEFECT_ACTION) AS DEFECT_ACTION_NAME
|
|
,DH.DEFECT_ACTION
|
|
,DH.DEFECT_ACTION_DATE
|
|
,POM.TITLE
|
|
,POM.DELIVERY_PLACE
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.DELIVERY_PLACE) AS DELIVERY_PLACE_NAME
|
|
,POM.INSPECT_METHOD
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.INSPECT_METHOD) AS INSPECT_METHOD_NAME
|
|
,POM.PAYMENT_TERMS
|
|
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PAYMENT_TERMS) AS PAYMENT_TERMS_NAME
|
|
,POM.DELIVERY_DATE
|
|
,POM.PARTNER_OBJID
|
|
,POM.SALES_MNG_USER_ID
|
|
,TO_CHAR(POM.REGDATE,'YYYY-MM-DD') AS REGDATE
|
|
,POM.TOTAL_PRICE
|
|
,DH.OBJID
|
|
,SUBSTR(PURCHASE_DATE,0,5) AS PURCHASE_DATE -->
|
|
,APPR.APPROVAL_OBJID
|
|
,APPR.ROUTE_OBJID
|
|
,APPR.APPR_STATUS
|
|
,APPR.APPR_STATUS_NAME
|
|
FROM
|
|
PURCHASE_ORDER_MASTER AS POM
|
|
,PURCHASE_ORDER_PART AS POP
|
|
,PROJECT_MGMT AS CM
|
|
,ARRIVAL_PLAN AP
|
|
<!-- ,DELIVERY_HISTORY DH -->
|
|
LEFT OUTER JOIN (SELECT B.OBJID AS ROUTE_OBJID
|
|
,B.STATUS AS APPR_STATUS
|
|
,CASE UPPER(B.STATUS)
|
|
WHEN 'INPROCESS' THEN '결재중'
|
|
WHEN 'COMPLETE' THEN '결재완료'
|
|
WHEN 'REJECT' THEN '반려'
|
|
ELSE '' END APPR_STATUS_NAME
|
|
,A.OBJID AS APPROVAL_OBJID
|
|
,A.TARGET_OBJID
|
|
,B.ROUTE_SEQ
|
|
FROM APPROVAL A
|
|
,( SELECT T1.*
|
|
FROM ( SELECT TARGET_OBJID
|
|
,MAX(T.ROUTE_SEQ) AS ROUTE_SEQ
|
|
FROM ROUTE T
|
|
GROUP BY T.TARGET_OBJID
|
|
) T
|
|
,ROUTE T1
|
|
WHERE T.TARGET_OBJID = T1.TARGET_OBJID
|
|
AND T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('DEFECT_ACTION')
|
|
) AS APPR
|
|
ON AP.OBJID::NUMERIC = APPR.TARGET_OBJID
|
|
WHERE POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POP.OBJID =AP.ORDER_PART_OBJID
|
|
AND AP.ERROR_QTY !=''
|
|
AND AP.ERROR_QTY !='0'
|
|
<!-- AND POP.PART_OBJID = DH.PART_OBJID
|
|
AND POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
AND DH.DEFECT_QTY::INTEGER > 0 -->
|
|
|
|
<if test="Year != null and Year !=''">
|
|
AND SUBSTR(PURCHASE_DATE,0,5) = #{Year}
|
|
</if>
|
|
|
|
<!-- <if test="project_no != null and project_no != ''">
|
|
AND CM.OBJID = #{project_no}
|
|
</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="unit_code != null and unit_code != ''">
|
|
AND UNIT_CODE = #{unit_code}
|
|
</if>
|
|
|
|
<if test="part_no != null and part_no != ''">
|
|
AND UPPER(PART_NO) LIKE UPPER('%${part_no}%')
|
|
</if>
|
|
|
|
<if test="partner_objid != null and partner_objid != ''">
|
|
AND PARTNER_OBJID = #{partner_objid}
|
|
</if>
|
|
|
|
<if test="part_name != null and part_name != ''">
|
|
AND UPPER(PART_NAME) LIKE UPPER('%${part_name}%')
|
|
</if>
|
|
|
|
<if test="defect_reason != null and defect_reason != ''">
|
|
AND ERROR_REASON = #{defect_reason}
|
|
<!-- AND DEFECT_REASON = #{defect_reason} -->
|
|
</if>
|
|
|
|
<if test="defect_resp != null and defect_resp != ''">
|
|
AND ATTRIBUTION = #{defect_resp}
|
|
<!-- AND DEFECT_RESP = #{defect_resp} -->
|
|
</if>
|
|
|
|
<if test="defect_action != null and defect_action != ''">
|
|
AND DEFECT_ACTION = #{defect_action}
|
|
</if>
|
|
|
|
<if test="design_user_id != null and design_user_id != ''">
|
|
AND (SELECT PM.WRITER FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = AP.PART_OBJID) = #{design_user_id}
|
|
</if>
|
|
|
|
<if test="sales_mng_user_id != null and sales_mng_user_id != ''">
|
|
AND SALES_MNG_USER_ID = #{sales_mng_user_id}
|
|
</if>
|
|
|
|
<if test="appr_status !=null and appr_status != '' ">
|
|
AND APPR.APPR_STATUS = #{appr_status}
|
|
</if>
|
|
</select>
|
|
|
|
<!-- 부적합품 정보 조회 -->
|
|
<select id="getdeliveryMngInvalidInfo" parameterType="map" resultType="map">
|
|
SELECT
|
|
POM.PURCHASE_ORDER_NO
|
|
,CM.PROJECT_NO
|
|
,CM.PROJECT_NAME
|
|
,POM.OBJID AS ORDER_OBJID
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = POM.UNIT_CODE) AS UNIT_NAME
|
|
,AP.RECEIPT_DATE
|
|
,POP.PART_NO
|
|
,POP.PART_NAME
|
|
,POP.SPEC
|
|
,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
|
|
<!-- ,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = DH.OBJID AND DOC_TYPE='DEFECT_ACTION_IMG_01' AND UPPER(STATUS) = 'ACTIVE') AS CU01_CNT -->
|
|
,AP.ERROR_QTY
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID= AP.ERROR_REASON) AS ERROR_REASON
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID= AP.ATTRIBUTION) AS ATTRIBUTION
|
|
,RE_ARRIVAL_PLAN_DATE
|
|
,RECEIPT_DATE
|
|
,ASSEMBLY_STATUS
|
|
,AP.GROUP_SEQ
|
|
,AP.SEQ
|
|
,AP.OBJID
|
|
,AP.DEFECT_CONTENT
|
|
,AP.DEFECT_ACTION
|
|
,AP.DEFECT_NOTE
|
|
,AP.DEFECT_ACTION_DATE
|
|
,AP.DEFECT_ACTION_TITLE
|
|
,AP.RE_ARRIVAL_PLAN_DATE
|
|
,APPR.APPROVAL_OBJID
|
|
,APPR.ROUTE_OBJID
|
|
,APPR.APPR_STATUS
|
|
,APPR.APPR_STATUS_NAME
|
|
FROM
|
|
PURCHASE_ORDER_MASTER AS POM
|
|
,PURCHASE_ORDER_PART AS POP
|
|
,PROJECT_MGMT AS CM
|
|
,ARRIVAL_PLAN AP
|
|
LEFT OUTER JOIN (SELECT B.OBJID AS ROUTE_OBJID
|
|
,B.STATUS AS APPR_STATUS
|
|
,CASE UPPER(B.STATUS)
|
|
WHEN 'INPROCESS' THEN '결재중'
|
|
WHEN 'COMPLETE' THEN '결재완료'
|
|
WHEN 'REJECT' THEN '반려'
|
|
ELSE '' END APPR_STATUS_NAME
|
|
,A.OBJID AS APPROVAL_OBJID
|
|
,A.TARGET_OBJID
|
|
,B.ROUTE_SEQ
|
|
FROM APPROVAL A
|
|
,( SELECT T1.*
|
|
FROM ( SELECT TARGET_OBJID
|
|
,MAX(T.ROUTE_SEQ) AS ROUTE_SEQ
|
|
FROM ROUTE T
|
|
GROUP BY T.TARGET_OBJID
|
|
) T
|
|
,ROUTE T1
|
|
WHERE T.TARGET_OBJID = T1.TARGET_OBJID
|
|
AND T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('DEFECT_ACTION')
|
|
) AS APPR
|
|
ON AP.OBJID::NUMERIC = APPR.TARGET_OBJID
|
|
WHERE POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POP.OBJID =AP.ORDER_PART_OBJID
|
|
AND AP.ERROR_QTY !=''
|
|
AND AP.ERROR_QTY !='0'
|
|
AND AP.OBJID = #{OBJID}
|
|
|
|
</select>
|
|
|
|
|
|
<delete id="updateinvalidAction" parameterType="map">
|
|
UPDATE ARRIVAL_PLAN
|
|
<!-- UPDATE DELIVERY_HISTORY -->
|
|
SET DEFECT_ACTION = #{defect_action}
|
|
, DEFECT_CONTENT = #{defect_content}
|
|
, DEFECT_ACTION_DATE = #{defect_action_date}
|
|
, RE_ARRIVAL_PLAN_DATE = #{delivery_plan_date}
|
|
<!-- , DELIVERY_PLAN_DATE = #{delivery_plan_date} -->
|
|
, DEFECT_ACTION_TITLE = #{defect_action_title}
|
|
, DEFECT_NOTE = #{defect_note}
|
|
WHERE OBJID IN
|
|
<foreach collection="checkArr" item="objkey" index="index" separator="," open="(" close=")">
|
|
#{objkey}
|
|
</foreach>
|
|
</delete>
|
|
|
|
<select id="bacodePrintInfo" parameterType="map" resultType="map">
|
|
SELECT
|
|
* FROM PURCHASE_ORDER_PART
|
|
WHERE OBJID = #{OBJID}
|
|
</select>
|
|
|
|
<select id="SalesRequestPartListBySupply" parameterType="map" resultType="map">
|
|
SELECT
|
|
PART_OBJID
|
|
,SRP.QTY AS ORDER_QTY
|
|
,PM.PART_NAME
|
|
,PM.PART_NO
|
|
,PM.SPEC
|
|
,PM.MAKER
|
|
,(COALESCE((SELECT
|
|
SUM(CASE WHEN (RECEIPT_QTY IS NULL OR RECEIPT_QTY ='')
|
|
THEN 0
|
|
ELSE RECEIPT_QTY::NUMERIC END)
|
|
FROM INVENTORY_MGMT IM, INVENTORY_MGMT_IN AS O WHERE O.PARENT_OBJID = IM.OBJID AND IM.CONTRACT_OBJID = SRM.PROJECT_NO AND IM.UNIT = SRM.UNIT_NAME AND IM.PART_OBJID = SRP.PART_OBJID
|
|
),0) - COALESCE((SELECT
|
|
SUM(CASE WHEN (OUT_QTY IS NULL OR OUT_QTY ='')
|
|
THEN 0
|
|
ELSE OUT_QTY::NUMERIC END)
|
|
FROM INVENTORY_MGMT IM, INVENTORY_MGMT_OUT AS O WHERE O.PARENT_OBJID = IM.OBJID AND IM.CONTRACT_OBJID = SRM.PROJECT_NO AND IM.UNIT = SRM.UNIT_NAME AND IM.PART_OBJID = SRP.PART_OBJID
|
|
),0)) AS STOCK_QTY
|
|
FROM
|
|
SALES_REQUEST_MASTER SRM
|
|
LEFT OUTER JOIN
|
|
SALES_REQUEST_PART SRP
|
|
ON SRM.OBJID::VARCHAR = SRP.SALES_REQUEST_MASTER_OBJID
|
|
LEFT OUTER JOIN
|
|
PART_MNG PM ON SRP.PART_OBJID = PM.OBJID::VARCHAR
|
|
<!--
|
|
LEFT OUTER JOIN
|
|
INVENTORY_MGMT IM
|
|
ON IM.CONTRACT_OBJID = SRM.PROJECT_NO
|
|
AND IM.UNIT = SRM.UNIT_NAME
|
|
AND IM.PART_OBJID = SRP.PART_OBJID
|
|
-->
|
|
WHERE 1=1
|
|
AND SRM.OBJID = #{SALES_REQUEST_MASTER_OBJID}
|
|
AND SRP.VENDOR_PM = #{PARTNER_OBJID}
|
|
<!-- AND PARTNER_OBJID = #{PARTNER_OBJID} -->
|
|
</select>
|
|
|
|
<select id="purchaseOrderStatusGoods" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.*
|
|
,(T.DESIGN_CNT - T.OUT_CNT - T.STOCK_CNT) as SHORTAGE_CNT
|
|
FROM (
|
|
SELECT
|
|
PM.OBJID
|
|
,PM.PART_NO
|
|
,PM.PART_NAME
|
|
,PM.MAKER
|
|
,PM.SPEC
|
|
,PM.REVISION
|
|
,P.TOTAL_PURCHASE_ORDER_CNT /* 발주수량 */
|
|
,P.PURCHASE_ORDER_MASTER_CNT /* 발주수 */
|
|
,(COALESCE((SELECT SUM(CASE WHEN (RECEIPT_QTY IS NULL OR RECEIPT_QTY ='')
|
|
THEN 0
|
|
ELSE (RECEIPT_QTY::numeric - coalesce(MOVE_QTY::numeric, 0)) END)
|
|
FROM INVENTORY_MGMT_IN AS O
|
|
,INVENTORY_MGMT AS S_IM
|
|
WHERE S_IM.PART_OBJID = PM.OBJID
|
|
AND O.PARENT_OBJID = S_IM.OBJID
|
|
),0)
|
|
- COALESCE((SELECT SUM(CASE WHEN (OUT_QTY IS NULL OR OUT_QTY ='')
|
|
THEN 0
|
|
ELSE OUT_QTY::NUMERIC END)
|
|
FROM INVENTORY_MGMT_OUT AS O
|
|
,INVENTORY_MGMT AS S_IM
|
|
WHERE S_IM.PART_OBJID = PM.OBJID
|
|
AND O.PARENT_OBJID = S_IM.OBJID
|
|
),0)) AS STOCK_CNT /* 보유수량 */
|
|
,COALESCE((SELECT SUM(CASE WHEN (QTY IS NULL OR QTY ='') THEN 0
|
|
ELSE QTY::numeric END)
|
|
FROM BOM_PART_QTY AS BPQ
|
|
WHERE BPQ.PART_NO = PM.OBJID
|
|
AND BPQ.STATUS = 'deploy'
|
|
),0) as DESIGN_CNT /* 설게수량 */
|
|
,COALESCE((SELECT SUM(CASE WHEN (OUT_QTY IS NULL OR OUT_QTY ='') THEN 0
|
|
ELSE OUT_QTY::NUMERIC END)
|
|
FROM INVENTORY_MGMT_OUT AS O
|
|
,INVENTORY_MGMT AS S_IM
|
|
WHERE S_IM.PART_OBJID = PM.OBJID
|
|
AND O.PARENT_OBJID = S_IM.OBJID
|
|
and (O.contract_mgmt_objid is not null and O.contract_mgmt_objid != '')
|
|
and (O.UNIT is not null and O.UNIT != '')
|
|
),0) as OUT_CNT /* 설게불출수량 */
|
|
FROM
|
|
PART_MNG PM
|
|
LEFT OUTER JOIN (
|
|
SELECT
|
|
PART_OBJID
|
|
,SUM(NVL(REAL_ORDER_QTY, '0')::numeric) as TOTAL_PURCHASE_ORDER_CNT
|
|
,COUNT(1) as PURCHASE_ORDER_MASTER_CNT
|
|
FROM
|
|
PURCHASE_ORDER_PART P
|
|
LEFT OUTER JOIN PURCHASE_ORDER_MASTER POM
|
|
ON P.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
WHERE POM.MULTI_MASTER_YN != 'N' OR POM.MULTI_MASTER_YN IS NULL
|
|
AND POM.STATUS = 'approvalComplete'
|
|
GROUP BY PART_OBJID
|
|
) p
|
|
ON P.PART_OBJID = PM.OBJID
|
|
WHERE PM.IS_NEW = '1'
|
|
AND PM.IS_LONGD = '1'
|
|
|
|
<if test="SEARCH_PART_NO != null and SEARCH_PART_NO != ''">
|
|
AND UPPER(PART_NO) LIKE UPPER('%${SEARCH_PART_NO}%')
|
|
</if>
|
|
<if test="SEARCH_PART_NAME != null and SEARCH_PART_NAME != ''">
|
|
AND UPPER(PART_NAME) LIKE UPPER('%${SEARCH_PART_NAME}%')
|
|
</if>
|
|
<if test="SEARCH_SPEC != null and SEARCH_SPEC != ''">
|
|
AND UPPER(SPEC) LIKE UPPER('%${SEARCH_SPEC}%')
|
|
</if>
|
|
<if test="SEARCH_MAKER != null and SEARCH_MAKER != ''">
|
|
AND UPPER(MAKER) LIKE UPPER('%${SEARCH_MAKER}%')
|
|
</if>
|
|
|
|
ORDER BY PM.PART_NO, (CASE WHEN PM.REVISION LIKE 'RE%' THEN 0 ELSE 1 END, PM.REVISION) DESC
|
|
) T
|
|
|
|
</select>
|
|
|
|
<select id="designQTYGridList" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.*
|
|
,(DESIGN_CNT::numeric - OUT_CNT) as STOCK_CNT
|
|
FROM (
|
|
SELECT
|
|
BPQ.BOM_REPORT_OBJID
|
|
,BPQ.QTY AS DESIGN_CNT
|
|
,PM.OBJID AS PART_OBJID
|
|
,PM.PART_NO
|
|
,PM.PART_NAME
|
|
,PBR.CONTRACT_OBJID
|
|
,(SELECT PROJECT_NO FROM PROJECT_MGMT P WHERE P.OBJID = PBR.CONTRACT_OBJID ) as PROJECT_NO
|
|
,(SELECT REQ_DEL_DATE FROM PROJECT_MGMT P WHERE P.OBJID = PBR.CONTRACT_OBJID )
|
|
,PBR.UNIT_CODE
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = PBR.UNIT_CODE) AS UNIT_NAME
|
|
,COALESCE((SELECT SUM(CASE WHEN (OUT_QTY IS NULL OR OUT_QTY ='') THEN 0
|
|
ELSE OUT_QTY::NUMERIC END)
|
|
FROM INVENTORY_MGMT_OUT AS O
|
|
,INVENTORY_MGMT AS S_IM
|
|
WHERE S_IM.PART_OBJID = PM.OBJID
|
|
AND O.PARENT_OBJID = S_IM.OBJID
|
|
AND O.CONTRACT_MGMT_OBJID = PBR.CONTRACT_OBJID
|
|
AND O.UNIT = PBR.UNIT_CODE
|
|
),0) as OUT_CNT
|
|
FROM
|
|
BOM_PART_QTY BPQ
|
|
LEFT OUTER JOIN PART_MNG PM
|
|
ON PM.OBJID = BPQ.PART_NO
|
|
LEFT OUTER JOIN PART_BOM_REPORT PBR
|
|
ON PBR.OBJID = BPQ.BOM_REPORT_OBJID
|
|
WHERE BPQ.STATUS = 'deploy'
|
|
AND BPQ.PART_NO = #{objId}
|
|
) T
|
|
</select>
|
|
|
|
<select id="purchaseOrderQTYGridList" parameterType="map" resultType="map">
|
|
SELECT
|
|
POM.PURCHASE_ORDER_NO
|
|
,POM.PURCHASE_DATE
|
|
,PM.PART_NO
|
|
,PM.PART_NAME
|
|
,P.REAL_ORDER_QTY
|
|
,(SELECT PROJECT_NO FROM PROJECT_MGMT PROJ WHERE PROJ.OBJID = POM.CONTRACT_MGMT_OBJID ) as PROJECT_NO
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = POM.UNIT_CODE) AS UNIT_NAME
|
|
FROM
|
|
PURCHASE_ORDER_PART P
|
|
LEFT OUTER JOIN PURCHASE_ORDER_MASTER POM
|
|
ON P.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
LEFT OUTER JOIN PART_MNG PM
|
|
ON PM.OBJID = P.PART_OBJID
|
|
WHERE (POM.MULTI_MASTER_YN != 'N' OR POM.MULTI_MASTER_YN IS NULL)
|
|
AND POM.STATUS = 'approvalComplete'
|
|
AND P.PART_OBJID = #{objId}
|
|
</select>
|
|
|
|
<!-- 발주서 메일 발송 상태 업데이트 -->
|
|
<update id="updateMailSendStatus" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_MASTER
|
|
SET
|
|
MAIL_SEND_YN = #{MAIL_SEND_YN}
|
|
,MAIL_SEND_DATE = #{MAIL_SEND_DATE}
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<!-- 입고관리 데이터 드롭다운용 조회 (반제품검사 팝업에서 사용) -->
|
|
<!-- ARRIVAL_PLAN 테이블에서 입고완료된 품목 조회 (1차+2차 합산) -->
|
|
<select id="getDeliveryListForDropdown" parameterType="map" resultType="map">
|
|
SELECT
|
|
AP.ORDER_PART_OBJID AS OBJID
|
|
,AP.PART_OBJID
|
|
,COALESCE(CASE WHEN POM.TYPE IN ('0001070','0001069') THEN PM.PART_NO ELSE POP.PART_NO END, PM.PART_NO, '') AS PART_NO
|
|
,COALESCE(POP.PART_NAME, PM.PART_NAME, '') AS PART_NAME
|
|
,COALESCE(POP.PART_NAME, PM.PART_NAME, '') AS MODEL_NAME
|
|
,COALESCE(POM.PURCHASE_ORDER_NO, '') AS WORK_ORDER_NO
|
|
,COALESCE(SUM(AP.RECEIPT_QTY::NUMERIC), 0) AS RECEIPT_QTY
|
|
FROM ARRIVAL_PLAN AP
|
|
LEFT JOIN PURCHASE_ORDER_PART POP ON POP.OBJID = AP.ORDER_PART_OBJID
|
|
LEFT JOIN PART_MNG PM ON PM.OBJID::VARCHAR = AP.PART_OBJID OR PM.OBJID = POP.PART_OBJID
|
|
LEFT JOIN PURCHASE_ORDER_MASTER POM ON POM.OBJID = AP.PARENT_OBJID
|
|
WHERE AP.RECEIPT_QTY IS NOT NULL
|
|
AND AP.RECEIPT_QTY::NUMERIC > 0
|
|
AND AP.INVENTORY_STATUS = 'Y'
|
|
GROUP BY AP.ORDER_PART_OBJID, AP.PART_OBJID, POP.PART_NO, POP.PART_NAME, PM.PART_NO, PM.PART_NAME, POM.PURCHASE_ORDER_NO, POM.TYPE
|
|
ORDER BY PART_NO
|
|
</select>
|
|
|
|
</mapper> |