- Add Docker Compose configurations for dev, prod, and standalone environments - Add database initialization scripts (init-db.sh, init-db-docker.sh) - Add enhanced start-docker-linux.sh with DB init support - Add comprehensive database initialization guide - Support for automatic dbexport.pgsql import on first run - Include safety checks for production environment
1410 lines
52 KiB
XML
1410 lines
52 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="supplyChainMgmt">
|
|
|
|
<!-- 와주협업관리 -> 발주관리 -->
|
|
<select id="purchaseOrderMgmtGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
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
|
|
,(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 SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) 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.DISCOUNT_PRICE
|
|
,POM.TOTAL_SUPPLY_UNIT_PRICE
|
|
,POM.NEGO_RATE
|
|
|
|
,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
|
|
,(SELECT COUNT(1) FROM PURCHASE_ORDER_PART AS O WHERE O.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID) AS PART_CNT
|
|
,(SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE O.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID) AS ORDER_CNT
|
|
,(SELECT SUM(REAL_ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE O.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID) AS REAL_ORDER_CNT
|
|
,CASE WHEN RECEPTION_STATUS IS NULL
|
|
THEN '미접수'
|
|
ELSE '접수'
|
|
END AS STATUS_NAME
|
|
,RECEPTION_STATUS
|
|
,(SELECT COUNT(1) FROM ARRIVAL_PLAN AS O WHERE O.PARENT_OBJID = POM.OBJID) AS ARRIVAL_CNT
|
|
,(SELECT
|
|
SUM(CASE WHEN RECEIPT_QTY IS NULL
|
|
THEN 0
|
|
ELSE RECEIPT_QTY::NUMERIC
|
|
END) FROM ARRIVAL_PLAN AS O WHERE O.PARENT_OBJID = POM.OBJID) AS RECEIPT_QTY
|
|
,(SELECT
|
|
SUM(CASE WHEN ERROR_QTY IS NULL
|
|
THEN 0
|
|
ELSE ERROR_QTY::NUMERIC
|
|
END) FROM ARRIVAL_PLAN AS O WHERE O.PARENT_OBJID = POM.OBJID) AS ERROR_QTY
|
|
,(SELECT SUM(REAL_ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE O.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID) - (SELECT
|
|
SUM(CASE WHEN RECEIPT_QTY IS NULL
|
|
THEN 0
|
|
ELSE RECEIPT_QTY::NUMERIC
|
|
END) FROM ARRIVAL_PLAN AS O WHERE O.PARENT_OBJID = POM.OBJID) <!-- - (SELECT
|
|
SUM(CASE WHEN ERROR_QTY IS NULL
|
|
THEN 0
|
|
ELSE ERROR_QTY::NUMERIC
|
|
END) FROM ARRIVAL_PLAN AS O WHERE O.PARENT_OBJID = POM.OBJID) --> AS NON_DELIVERY_QTY
|
|
,SALES_STATUS
|
|
,IM.ISSUANCE_DATE
|
|
FROM PURCHASE_ORDER_MASTER AS POM
|
|
LEFT OUTER JOIN PROJECT_MGMT AS CM
|
|
ON POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
LEFT OUTER JOIN (
|
|
SELECT
|
|
PARENT_OBJID
|
|
,TO_CHAR(MAX(REGDATE),'YYYY-MM-DD') AS ISSUANCE_DATE
|
|
FROM
|
|
INVOICE_MGMT
|
|
GROUP BY
|
|
PARENT_OBJID
|
|
)IM ON IM.PARENT_OBJID = POM.OBJID
|
|
WHERE POM.status ='approvalComplete'
|
|
AND (MULTI_MASTER_YN = 'Y' OR NVL(MULTI_MASTER_YN, '') != 'Y' AND NVL(MULTI_YN, '') != 'Y')
|
|
<!-- AND (POM.PARTNER_OBJID = #{PARTNER_OBJID} OR POM.SALES_MNG_USER_ID = #{USER_ID}) -->
|
|
|
|
<if test="PARTNER_OBJID !=null and PARTNER_OBJID != '' ">
|
|
AND POM.PARTNER_OBJID = #{PARTNER_OBJID}
|
|
</if>
|
|
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(CM.REGDATE,'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="unit_code !=null and unit_code != '' ">
|
|
AND POM.UNIT_CODE LIKE '%'||#{unit_code}||'%'
|
|
</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="RECEPTION_STATUS !=null and RECEPTION_STATUS != '' ">
|
|
<if test="'deploy'.equals(RECEPTION_STATUS)">
|
|
AND RECEPTION_STATUS = 'deploy'
|
|
</if>
|
|
<if test="'AA'.equals(RECEPTION_STATUS)">
|
|
AND RECEPTION_STATUS IS NULL
|
|
</if>
|
|
</if>
|
|
|
|
<if test="SALES_STATUS !=null and SALES_STATUS != '' ">
|
|
AND POM.SALES_STATUS = #{SALES_STATUS}
|
|
</if>
|
|
<if test="partner_objid !=null and partner_objid != '' ">
|
|
AND POM.PARTNER_OBJID = #{partner_objid}
|
|
</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 = #{partner_objid}
|
|
</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 != '' ">
|
|
AND A.APPR_STATUS = #{appr_status}
|
|
</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> -->
|
|
<!-- 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="regsupplyChain" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_MASTER
|
|
SET RECEPTION_DATE = now()
|
|
,RECEPTION_STATUS = 'deploy'
|
|
WHERE OBJID IN
|
|
<foreach collection="checkArr" item="objkey" index="index" separator="," open="(" close=")">
|
|
#{objkey}
|
|
</foreach>
|
|
</update>
|
|
|
|
<!-- 선택된 발주를 구매확인한다. -->
|
|
<update id="updateSalesStatus" parameterType="map">
|
|
UPDATE PURCHASE_ORDER_MASTER
|
|
SET SALES_STATUS = #{STATUS}
|
|
WHERE OBJID =#{OBJID}
|
|
</update>
|
|
|
|
<!-- 외주협업관리 -> 자금지급관리 -->
|
|
<select id="fundPaymentMgmtGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
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
|
|
,(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
|
|
,CM.OBJID AS CONTRACT_MGMT_OBJID
|
|
,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 SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) 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.DISCOUNT_PRICE
|
|
,POM.TOTAL_SUPPLY_UNIT_PRICE
|
|
,POM.TOTAL_SUPPLY_PRICE
|
|
,POM.NEGO_RATE
|
|
,NVL(POM.TOTAL_SUPPLY_UNIT_PRICE, '0')::NUMERIC - NVL(POM.TOTAL_SUPPLY_PRICE, '0')::NUMERIC as VAT_PRICE
|
|
|
|
,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
|
|
,(SELECT COUNT(1) FROM PURCHASE_ORDER_PART AS O WHERE O.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID) AS PART_CNT
|
|
,(SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE O.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID) AS ORDER_CNT
|
|
,CASE WHEN RECEPTION_STATUS IS NULL
|
|
THEN '미접수'
|
|
ELSE '접수'
|
|
END AS STATUS_NAME
|
|
,RECEPTION_STATUS
|
|
,(SELECT COUNT(1) FROM ARRIVAL_PLAN AS O WHERE O.PARENT_OBJID = POM.OBJID) AS ARRIVAL_CNT
|
|
,TOTAL_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
|
|
,TOTAL_DEFECT_QTY
|
|
,SALES_STATUS
|
|
,AP.GROUP_SEQ
|
|
,AP.RECEIPT_QTY AS TOTAL_RECEIPT_QTY
|
|
,AP.ERROR_QTY AS TOTAL_ERROR_QTY
|
|
,AP.RECEIPT_DATE
|
|
,IM.OBJID AS INVOICE_OBJID
|
|
,IM.ISSUANCE_ID
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = IM.ISSUANCE_ID) AS ISSUANCE_NAME
|
|
,TO_CHAR(IM.REGDATE,'YYYY-MM-DD') AS ISSUANCE_DATE
|
|
,IM.APPR_STATUS
|
|
,COALESCE(IM.APPR_STATUS_NAME,'작성중') AS APPR_STATUS_NAME
|
|
,IM.ROUTE_OBJID
|
|
,IM.APPROVAL_OBJID
|
|
,IM.APPR_DATE
|
|
,IM.STATUS
|
|
,CASE WHEN IM.STATUS = 'complete' then '마감완료'
|
|
WHEN IM.STATUS = 'paymentComplete' then '지급완료'
|
|
END INVOICE_STATUS_NAME
|
|
,IM.REQUEST_AMOUNT
|
|
,CASE WHEN PAYMENT_TERMS='0001075'
|
|
THEN TO_CHAR((SELECT date_trunc('month', to_date(AP.RECEIPT_DATE,'yyyy-mm-dd')) + INTERVAL '2 month' - INTERVAL '1 day'),'yyyy-mm-dd')
|
|
ELSE IM.DUE_DATE
|
|
END AS PAY_DATE
|
|
FROM PURCHASE_ORDER_MASTER AS POM
|
|
INNER JOIN PROJECT_MGMT AS CM
|
|
ON POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT POP.PURCHASE_ORDER_MASTER_OBJID
|
|
,SUM(POP.ORDER_QTY::NUMERIC) AS TOTAL_PO_QTY
|
|
,MAX(DH.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 DELIVERY_HISTORY DH
|
|
ON POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
GROUP BY POP.PURCHASE_ORDER_MASTER_OBJID
|
|
) AS S1 ON POM.OBJID::VARCHAR = S1.PURCHASE_ORDER_MASTER_OBJID
|
|
LEFT OUTER JOIN (
|
|
SELECT
|
|
PARENT_OBJID,
|
|
GROUP_SEQ,
|
|
SUM(RECEIPT_QTY::NUMERIC) AS RECEIPT_QTY,
|
|
SUM(ERROR_QTY::NUMERIC) AS ERROR_QTY,
|
|
MAX(RECEIPT_DATE) AS RECEIPT_DATE
|
|
FROM
|
|
ARRIVAL_PLAN AP
|
|
GROUP BY PARENT_OBJID, GROUP_SEQ
|
|
) AS AP on POM.OBJID = AP.PARENT_OBJID
|
|
|
|
LEFT OUTER JOIN (
|
|
INVOICE_MGMT IM
|
|
LEFT 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 ('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)
|
|
)
|
|
) IM
|
|
ON IM.PARENT_OBJID = POM.OBJID
|
|
AND AP.GROUP_SEQ = IM.GROUP_SEQ
|
|
|
|
<!-- WHERE A.APPR_STATUS ='complete' -->
|
|
WHERE POM.STATUS ='approvalComplete'
|
|
AND (IM.STATUS = 'complete' OR IM.STATUS = 'paymentComplete')
|
|
<!-- AND (POM.PARTNER_OBJID = #{PARTNER_OBJID} OR POM.SALES_MNG_USER_ID = #{USER_ID}) -->
|
|
<if test="PARTNER_OBJID !=null and PARTNER_OBJID != '' ">
|
|
AND POM.PARTNER_OBJID = #{PARTNER_OBJID}
|
|
</if>
|
|
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(CM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="contract_no !=null and contract_no != '' ">
|
|
AND EXISTS (SELECT 'E' FROM CONTRACT_MGMT C WHERE C.OBJID = #{contract_no} AND CM.CONTRACT_OBJID = C.OBJID)
|
|
</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 LIKE '%'||#{unit_code}||'%'
|
|
</if>
|
|
<if test="partner_objid !=null and partner_objid != '' ">
|
|
AND POM.PARTNER_OBJID = #{partner_objid}
|
|
</if>
|
|
<if test="payment_start_date !=null and payment_start_date != '' ">
|
|
AND (CASE WHEN PAYMENT_TERMS='0001075' <!-- 계산서발행월+1M -->
|
|
THEN TO_DATE(TO_CHAR((SELECT date_trunc('month', to_date(AP.RECEIPT_DATE,'yyyy-mm-dd')) + INTERVAL '2 month' - INTERVAL '1 day'),'yyyy-mm-dd'),'YYYY-MM-DD')
|
|
ELSE TO_DATE(IM.DUE_DATE,'YYYY-MM-DD')
|
|
END) <![CDATA[ >= ]]> TO_DATE(#{payment_start_date}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="payment_end_date !=null and payment_end_date != '' ">
|
|
AND (CASE WHEN PAYMENT_TERMS='0001075'
|
|
THEN TO_DATE(TO_CHAR((SELECT date_trunc('month', to_date(AP.RECEIPT_DATE,'yyyy-mm-dd')) + INTERVAL '2 month' - INTERVAL '1 day'),'yyyy-mm-dd'),'YYYY-MM-DD')
|
|
ELSE TO_DATE(IM.DUE_DATE,'YYYY-MM-DD')
|
|
END) <![CDATA[ <= ]]> TO_DATE(#{payment_end_date}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="RECEIPT_START_DATE !=null and RECEIPT_START_DATE != '' ">
|
|
AND AP.RECEIPT_DATE >= #{RECEIPT_START_DATE}
|
|
</if>
|
|
<if test="RECEIPT_END_DATE !=null and RECEIPT_END_DATE != '' ">
|
|
AND AP.RECEIPT_DATE <![CDATA[ <= ]]> #{RECEIPT_END_DATE}
|
|
</if>
|
|
ORDER BY SUBSTRING(PURCHASE_ORDER_NO, POSITION('-' IN REVERSE(PURCHASE_ORDER_NO))+1) DESC
|
|
</select>
|
|
|
|
<!-- 외주협업관리 -> 자금지급관리 합-->
|
|
<select id="fundPaymentMgmtListSum" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
SELECT
|
|
SUM(CASE WHEN (T.REQUEST_AMOUNT IS NULL OR T.REQUEST_AMOUNT='') THEN 0
|
|
ELSE T.REQUEST_AMOUNT::float
|
|
END) AS REQUEST_AMOUNT_SUM
|
|
FROM (
|
|
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
|
|
,(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
|
|
,CM.OBJID AS CONTRACT_MGMT_OBJID
|
|
,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 SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) 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.DISCOUNT_PRICE
|
|
,POM.TOTAL_SUPPLY_UNIT_PRICE
|
|
,POM.NEGO_RATE
|
|
,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
|
|
,(SELECT COUNT(1) FROM PURCHASE_ORDER_PART AS O WHERE O.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID) AS PART_CNT
|
|
,(SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE O.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID) AS ORDER_CNT
|
|
,CASE WHEN RECEPTION_STATUS IS NULL
|
|
THEN '미접수'
|
|
ELSE '접수'
|
|
END AS STATUS_NAME
|
|
,RECEPTION_STATUS
|
|
,(SELECT COUNT(1) FROM ARRIVAL_PLAN AS O WHERE O.PARENT_OBJID = POM.OBJID) AS ARRIVAL_CNT
|
|
,TOTAL_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
|
|
,TOTAL_DEFECT_QTY
|
|
,SALES_STATUS
|
|
,AP.GROUP_SEQ
|
|
,AP.RECEIPT_QTY AS TOTAL_RECEIPT_QTY
|
|
,AP.ERROR_QTY AS TOTAL_ERROR_QTY
|
|
,AP.RECEIPT_DATE
|
|
,IM.OBJID AS INVOICE_OBJID
|
|
,IM.ISSUANCE_ID
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = IM.ISSUANCE_ID) AS ISSUANCE_NAME
|
|
,TO_CHAR(IM.REGDATE,'YYYY-MM-DD') AS ISSUANCE_DATE
|
|
,IM.APPR_STATUS
|
|
,COALESCE(IM.APPR_STATUS_NAME,'작성중') AS APPR_STATUS_NAME
|
|
,IM.ROUTE_OBJID
|
|
,IM.APPROVAL_OBJID
|
|
,IM.APPR_DATE
|
|
,IM.STATUS
|
|
,IM.REQUEST_AMOUNT
|
|
,CASE WHEN PAYMENT_TERMS='0001075'
|
|
THEN TO_CHAR((SELECT date_trunc('month', to_date(AP.RECEIPT_DATE,'yyyy-mm-dd')) + INTERVAL '2 month' - INTERVAL '1 day'),'yyyy-mm-dd')
|
|
ELSE IM.DUE_DATE
|
|
END AS PAY_DATE
|
|
FROM PURCHASE_ORDER_MASTER AS POM
|
|
INNER JOIN PROJECT_MGMT AS CM
|
|
ON POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT POP.PURCHASE_ORDER_MASTER_OBJID
|
|
,SUM(POP.ORDER_QTY::NUMERIC) AS TOTAL_PO_QTY
|
|
,MAX(DH.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 DELIVERY_HISTORY DH
|
|
ON POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
GROUP BY POP.PURCHASE_ORDER_MASTER_OBJID
|
|
) AS S1 ON POM.OBJID::VARCHAR = S1.PURCHASE_ORDER_MASTER_OBJID
|
|
LEFT OUTER JOIN (
|
|
SELECT
|
|
PARENT_OBJID,
|
|
GROUP_SEQ,
|
|
SUM(RECEIPT_QTY::NUMERIC) AS RECEIPT_QTY,
|
|
SUM(ERROR_QTY::NUMERIC) AS ERROR_QTY,
|
|
MAX(RECEIPT_DATE) AS RECEIPT_DATE
|
|
FROM
|
|
ARRIVAL_PLAN AP
|
|
GROUP BY PARENT_OBJID, GROUP_SEQ
|
|
) AS AP on POM.OBJID = AP.PARENT_OBJID
|
|
|
|
LEFT OUTER JOIN (
|
|
INVOICE_MGMT IM
|
|
LEFT 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 ('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)
|
|
)
|
|
) IM
|
|
ON IM.PARENT_OBJID = POM.OBJID
|
|
AND AP.GROUP_SEQ = IM.GROUP_SEQ
|
|
|
|
<!-- WHERE A.APPR_STATUS ='complete' -->
|
|
WHERE POM.STATUS ='approvalComplete'
|
|
AND IM.STATUS = 'complete'
|
|
<!-- AND (POM.PARTNER_OBJID = #{PARTNER_OBJID} OR POM.SALES_MNG_USER_ID = #{USER_ID}) -->
|
|
<if test="PARTNER_OBJID !=null and PARTNER_OBJID != '' ">
|
|
AND POM.PARTNER_OBJID = #{PARTNER_OBJID}
|
|
</if>
|
|
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(CM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="contract_no !=null and contract_no != '' ">
|
|
AND EXISTS (SELECT 'E' FROM CONTRACT_MGMT C WHERE C.OBJID = #{contract_no} AND CM.CONTRACT_OBJID = C.OBJID)
|
|
</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 LIKE '%'||#{unit_code}||'%'
|
|
</if>
|
|
<if test="payment_start_date !=null and payment_start_date != '' ">
|
|
AND (CASE WHEN PAYMENT_TERMS='0001075'
|
|
THEN TO_DATE(TO_CHAR((SELECT date_trunc('month', to_date(AP.RECEIPT_DATE,'yyyy-mm-dd')) + INTERVAL '2 month' - INTERVAL '1 day'),'yyyy-mm-dd'),'YYYY-MM-DD')
|
|
ELSE TO_DATE(IM.DUE_DATE,'YYYY-MM-DD')
|
|
END) <![CDATA[ >= ]]> TO_DATE(#{payment_start_date}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="payment_end_date !=null and payment_end_date != '' ">
|
|
AND (CASE WHEN PAYMENT_TERMS='0001075'
|
|
THEN TO_DATE(TO_CHAR((SELECT date_trunc('month', to_date(AP.RECEIPT_DATE,'yyyy-mm-dd')) + INTERVAL '2 month' - INTERVAL '1 day'),'yyyy-mm-dd'),'YYYY-MM-DD')
|
|
ELSE TO_DATE(IM.DUE_DATE,'YYYY-MM-DD')
|
|
END) <![CDATA[ <= ]]> TO_DATE(#{payment_end_date}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="RECEIPT_START_DATE !=null and RECEIPT_START_DATE != '' ">
|
|
AND AP.RECEIPT_DATE >= #{RECEIPT_START_DATE}
|
|
</if>
|
|
<if test="RECEIPT_END_DATE !=null and RECEIPT_END_DATE != '' ">
|
|
AND AP.RECEIPT_DATE <![CDATA[ <= ]]> #{RECEIPT_END_DATE}
|
|
</if>
|
|
ORDER BY SUBSTRING(PURCHASE_ORDER_NO, POSITION('-' IN REVERSE(PURCHASE_ORDER_NO))+1) DESC
|
|
) T
|
|
</select>
|
|
|
|
<!--발주품목을 가져온다 -->
|
|
<select id="purchase_order_part" parameterType="map" resultType="map">
|
|
SELECT
|
|
P.PART_NO
|
|
,CASE WHEN P.PART_NAME IS NULL
|
|
THEN T.PART_NAME
|
|
ELSE P.PART_NAME
|
|
END AS PART_NAME
|
|
,P.SPEC
|
|
,T.ORDER_QTY
|
|
,T.TOTAL_ORDER_QTY
|
|
,T.STOCK_QTY
|
|
,T.REAL_ORDER_QTY
|
|
,T.OBJID AS ORDER_PART_OBJID
|
|
,T.PART_OBJID
|
|
FROM purchase_order_part T LEFT 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="arrivalList" parameterType="map" resultType="map">
|
|
SELECT
|
|
OBJID
|
|
,ARRIVAL_QTY
|
|
,ARRIVAL_PLAN_DATE
|
|
,GROUP_SEQ
|
|
,SEQ
|
|
,ERROR_QTY
|
|
,ERROR_REASON
|
|
,CODE_NAME(ERROR_REASON) AS ERROR_NAME
|
|
,CODE_NAME(ATTRIBUTION) AS ATTRIBUTION_NAME
|
|
,ATTRIBUTION
|
|
,RECEIPT_QTY
|
|
FROM ARRIVAL_PLAN
|
|
WHERE PARENT_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
ORDER BY SEQ::NUMERIC
|
|
</select>
|
|
|
|
|
|
<update id="savearrivalplanFormPopup" parameterType="map">
|
|
INSERT INTO ARRIVAL_PLAN (
|
|
OBJID
|
|
,PARENT_OBJID
|
|
,ORDER_PART_OBJID
|
|
,PART_OBJID
|
|
,ARRIVAL_QTY
|
|
,ARRIVAL_PLAN_DATE
|
|
,WRITER
|
|
,GROUP_SEQ
|
|
,SEQ
|
|
) VALUES (
|
|
#{OBJID}
|
|
,#{PARENT_OBJID}
|
|
,#{ORDER_PART_OBJID}
|
|
,#{PART_OBJID}
|
|
,#{ARRIVAL_QTY}
|
|
,#{ARRIVAL_PLAN_DATE}
|
|
,#{WRITER}
|
|
,#{GROUP_SEQ}
|
|
,#{SEQ}
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE SET
|
|
ARRIVAL_QTY = #{ARRIVAL_QTY}
|
|
,ARRIVAL_PLAN_DATE = #{ARRIVAL_PLAN_DATE}
|
|
,ORDER_PART_OBJID = #{ORDER_PART_OBJID}
|
|
,PART_OBJID = #{PART_OBJID}
|
|
|
|
|
|
</update>
|
|
|
|
<delete id="deleteArrivalPlan" parameterType="string">
|
|
DELETE FROM ARRIVAL_PLAN
|
|
WHERE OBJID = #{objId}
|
|
</delete>
|
|
|
|
<update id="saveDeliveryInfo" parameterType="map">
|
|
INSERT INTO ARRIVAL_PLAN (
|
|
OBJID
|
|
,PARENT_OBJID
|
|
,ORDER_PART_OBJID
|
|
,PART_OBJID
|
|
,RECEIPT_QTY
|
|
,RECEIPT_DATE
|
|
,LOCATION
|
|
,SUB_LOCATION
|
|
,WRITER
|
|
,RECEIVER_ID
|
|
,GROUP_SEQ
|
|
,SEQ
|
|
,ARRIVAL_QTY
|
|
,ARRIVAL_PLAN_DATE
|
|
<!-- ,INVENTORY_STATUS -->
|
|
) VALUES (
|
|
#{OBJID}
|
|
,#{PARENT_OBJID}
|
|
,#{ORDER_PART_OBJID}
|
|
,#{PART_OBJID}
|
|
,#{RECEIPT_QTY}
|
|
,#{RECEIPT_DATE}
|
|
,#{LOCATION}
|
|
,#{SUB_LOCATION}
|
|
,#{WRITER}
|
|
,#{WRITER}
|
|
,#{GROUP_SEQ}
|
|
,#{SEQ}
|
|
,#{ARRIVAL_QTY}
|
|
,#{ARRIVAL_PLAN_DATE}
|
|
<!-- ,'Y' -->
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE SET
|
|
RECEIPT_QTY = #{RECEIPT_QTY }
|
|
,RECEIPT_DATE = #{RECEIPT_DATE }
|
|
,LOCATION = #{LOCATION }
|
|
,SUB_LOCATION = #{SUB_LOCATION }
|
|
,ARRIVAL_QTY = #{ARRIVAL_QTY }
|
|
,ARRIVAL_PLAN_DATE = #{ARRIVAL_PLAN_DATE }
|
|
<!-- ,INVENTORY_STATUS = 'Y' -->
|
|
,RECEIVER_ID = #{WRITER}
|
|
<!-- ,RECEIVER_ID = #{WRITER }
|
|
,ERROR_QTY = #{ERROR_QTY }
|
|
,ERROR_REASON = #{ERROR_REASON }
|
|
,ATTRIBUTION = #{ATTRIBUTION } -->
|
|
</update>
|
|
|
|
<update id="saveDeliveryInvalidInfo" parameterType="map">
|
|
UPDATE ARRIVAL_PLAN
|
|
SET
|
|
<!-- RECEIPT_QTY = #{RECEIPT_QTY }
|
|
,RECEIPT_DATE = #{RECEIPT_DATE }
|
|
,LOCATION = #{LOCATION }
|
|
,SUB_LOCATION = #{SUB_LOCATION } -->
|
|
ERROR_QTY = #{ERROR_QTY }
|
|
,ERROR_REASON = #{ERROR_REASON }
|
|
,ATTRIBUTION = #{ATTRIBUTION }
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<update id="saveDeliveryETCInfo" parameterType="map">
|
|
INSERT INTO ARRIVAL_PLAN (
|
|
OBJID
|
|
,PARENT_OBJID
|
|
,ORDER_PART_OBJID
|
|
,RECEIPT_QTY
|
|
,RECEIPT_DATE
|
|
,LOCATION
|
|
,SUB_LOCATION
|
|
,WRITER
|
|
,GROUP_SEQ
|
|
,SEQ
|
|
,ARRIVAL_PLAN_DATE
|
|
,ARRIVAL_QTY
|
|
) VALUES (
|
|
#{OBJID}
|
|
,#{PARENT_OBJID}
|
|
,#{ORDER_PART_OBJID}
|
|
,#{RECEIPT_QTY}
|
|
,#{RECEIPT_DATE}
|
|
,#{LOCATION}
|
|
,#{SUB_LOCATION}
|
|
,#{WRITER}
|
|
,#{GROUP_SEQ}
|
|
,#{SEQ}
|
|
,#{ARRIVAL_PLAN_DATE}
|
|
,#{ARRIVAL_QTY}
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE SET
|
|
RECEIPT_QTY = #{RECEIPT_QTY}
|
|
,RECEIPT_DATE = #{RECEIPT_DATE}
|
|
,ARRIVAL_PLAN_DATE = #{ARRIVAL_PLAN_DATE}
|
|
,ARRIVAL_QTY = #{ARRIVAL_QTY}
|
|
,LOCATION = #{LOCATION}
|
|
,SUB_LOCATION = #{SUB_LOCATION}
|
|
<!-- ,ARRIVAL_QTY = #{RECEIPT_QTY} -->
|
|
</update>
|
|
|
|
<update id="saveInventoryStatusInfo" parameterType="map">
|
|
UPDATE ARRIVAL_PLAN
|
|
SET
|
|
INVENTORY_STATUS = 'Y'
|
|
, RECEIVER_ID = #{WRITER}
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<!--발주품목 입고결과목록을 가져온다 -->
|
|
<select id="arrivalResultList" parameterType="map" resultType="map">
|
|
SELECT
|
|
AP.OBJID
|
|
,AP.PART_OBJID
|
|
,AP.ORDER_PART_OBJID
|
|
,AP.ARRIVAL_QTY
|
|
<!-- ,ARRIVAL_PLAN_DATE -->
|
|
,AP.ARRIVAL_PLAN_DATE
|
|
,AP.GROUP_SEQ
|
|
,AP.SEQ
|
|
,AP.RECEIPT_QTY
|
|
,AP.RECEIPT_DATE
|
|
,AP.LOCATION
|
|
,AP.SUB_LOCATION
|
|
,AP.ERROR_QTY
|
|
,AP.ERROR_REASON
|
|
,AP.ATTRIBUTION
|
|
,AP.INVENTORY_STATUS
|
|
,IM.OBJID AS INVOICE_OBJID
|
|
FROM
|
|
ARRIVAL_PLAN AP
|
|
LEFT OUTER JOIN INVOICE_MGMT IM
|
|
ON IM.PARENT_OBJID = AP.PARENT_OBJID
|
|
AND IM.GROUP_SEQ = AP.GROUP_SEQ
|
|
WHERE AP.PARENT_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
ORDER BY SEQ::NUMERIC
|
|
</select>
|
|
|
|
<!-- 와주협업관리 -> 부적합품관리 -->
|
|
<select id="invalidMgmtGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
SELECT
|
|
POM.PURCHASE_ORDER_NO
|
|
,CM.PROJECT_NO
|
|
,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
|
|
,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 as ARRIVAL_OBJID
|
|
FROM PURCHASE_ORDER_MASTER AS POM
|
|
,PURCHASE_ORDER_PART AS POP
|
|
,PROJECT_MGMT AS CM
|
|
,ARRIVAL_PLAN AP
|
|
WHERE POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
AND POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
AND POP.OBJID =AP.ORDER_PART_OBJID
|
|
AND AP.ERROR_QTY !=''
|
|
AND AP.ERROR_QTY !='0'
|
|
<if test="PARTNER_OBJID !=null and PARTNER_OBJID != '' ">
|
|
AND POM.PARTNER_OBJID = #{PARTNER_OBJID}
|
|
</if>
|
|
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(CM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="project_no !=null and project_no != '' ">
|
|
AND CM.OBJID = #{project_no}
|
|
</if>
|
|
<if test="unit_code !=null and unit_code != '' ">
|
|
AND POM.UNIT_CODE LIKE '%'||#{unit_code}||'%'
|
|
</if>
|
|
<if test="part_no !=null and part_no != '' ">
|
|
AND (SELECT PART_NO FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = DH.PART_OBJID) LIKE '%'||#{part_no}||'%'
|
|
</if>
|
|
<if test="defect_reason !=null and defect_reason != '' ">
|
|
AND DH.DEFECT_REASON = #{defect_reason}
|
|
</if>
|
|
<if test="reassembly_result !=null and reassembly_result != '' ">
|
|
AND AS_WBS.ASSEMBLY_DATE IS NOT NULL AND AS_WBS.ASSEMBLY_DATE != ''
|
|
</if>
|
|
ORDER BY AP.GROUP_SEQ,AP.SEQ
|
|
</select>
|
|
|
|
<update id="updateRedeliverydate" parameterType="map">
|
|
UPDATE ARRIVAL_PLAN
|
|
SET RE_ARRIVAL_PLAN_DATE = #{RE_ARRIVAL_PLAN_DATE}
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<!-- 와주협업관리 -> 공급업체품질관리 -->
|
|
<select id="supplyQCMgmtGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
SELECT
|
|
*
|
|
,CASE WHEN PRODUCE_DELAY_DAY IS NOT NULL AND PRODUCE_DELAY_DAY < 0 THEN NULL
|
|
ELSE PRODUCE_DELAY_DAY
|
|
END PRODUCE_DELAY_DAY
|
|
FROM (
|
|
SELECT
|
|
*
|
|
,CASE WHEN COALESCE(PRODUCE_ACT_END, '') != '' AND COALESCE(PRODUCE_PLAN_END, '') != ''
|
|
THEN DATE_PART('DAY', AGE(TO_DATE(T.PRODUCE_ACT_END, 'YYYY-MM-DD'), TO_DATE(T.PRODUCE_PLAN_END, 'YYYY-MM-DD')))
|
|
ELSE NULL
|
|
END AS PRODUCE_DELAY_DAY
|
|
FROM (
|
|
SELECT
|
|
T.OBJID,
|
|
T.CUSTOMER_OBJID,
|
|
(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID) AS CUSTOMER_NAME,
|
|
T.CONTRACT_OBJID,
|
|
(SELECT CUSTOMER_PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME,
|
|
(SELECT PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NAME,
|
|
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NO,
|
|
(SELECT MECHANICAL_TYPE FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS MECHANICAL_TYPE,
|
|
(SELECT DUE_DATE FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS DUE_DATE,
|
|
(SELECT SETUP FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS SETUP,
|
|
(SELECT USER_NAME(PM_USER_ID) FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PM_USER_NAME,
|
|
(SELECT CODE_NAME(PRODUCT) FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PRODUCT_NAME,
|
|
T.UNIT_CODE,
|
|
(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME,
|
|
T.STATUS,
|
|
CASE UPPER(T.STATUS)
|
|
WHEN 'CREATE' THEN '등록중'
|
|
WHEN 'CHANGEDESIGN' THEN '설계변경미배포'
|
|
WHEN 'DEPLOY' THEN '배포완료'
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
T.WRITER,
|
|
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) AS DEPT_NAME,
|
|
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) AS USER_NAME,
|
|
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) || '/' || (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) as DEPT_USER_NAME,
|
|
T.REGDATE AS REGDATE,
|
|
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS REG_DATE,
|
|
T.DEPLOY_DATE,
|
|
T.REVISION,
|
|
(SELECT MAX(PM.EO_NO) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_NO,
|
|
(SELECT MAX(PM.EO_DATE) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_DATE,
|
|
T.NOTE,
|
|
COALESCE((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 = T.OBJID),'0') AS TOTAL_PO_QTY, /*발주수량*/
|
|
(SELECT COUNT(*) FROM PURCHASE_ORDER_MASTER POM WHERE POM.BOM_REPORT_OBJID = T.OBJID) AS ORDER_CNT,
|
|
(SELECT COUNT(*) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID = T.OBJID AND PM.part_type is not null AND PM.part_type != '') AS BOM_CNT,
|
|
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
|
|
,W.UNIT_NO
|
|
,(SELECT MAX(PRODUCE_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = CM.OBJID AND O.OBJID = T.UNIT_CODE AND O.PRODUCE_PLAN_END !='' AND O.PRODUCE_PLAN_END IS NOT NULL) AS PRODUCE_PLAN_END
|
|
,(SELECT MAX(PRODUCE_ACT_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = CM.OBJID AND O.OBJID = T.UNIT_CODE AND O.PRODUCE_ACT_END !='' AND O.PRODUCE_ACT_END IS NOT NULL) AS PRODUCE_ACT_END
|
|
<!--
|
|
,(SELECT MAX(PRODUCE_ACT_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = CM.OBJID AND O.PRODUCE_ACT_END !='' AND O.PRODUCE_ACT_END IS NOT NULL)
|
|
- (SELECT MAX(PRODUCE_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = CM.OBJID AND O.PRODUCE_PLAN_END !='' AND O.PRODUCE_PLAN_END IS NOT NULL) AS PRODUCE_DELAY_DAY
|
|
-->
|
|
FROM
|
|
PART_BOM_REPORT AS T
|
|
|
|
INNER JOIN PROJECT_MGMT AS CM
|
|
ON T.CONTRACT_OBJID = CM.OBJID
|
|
|
|
INNER JOIN PMS_WBS_TASK AS W
|
|
ON W.OBJID = T.UNIT_CODE
|
|
|
|
LEFT OUTER JOIN(
|
|
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 /*설계오류 -> Dim's 불량*/
|
|
,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
|
|
<!-- ,DELIVERY_HISTORY DH -->
|
|
WHERE POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
|
|
|
|
<if test="PARTNER_OBJID !=null and PARTNER_OBJID != '' ">
|
|
AND POM.PARTNER_OBJID = #{PARTNER_OBJID}
|
|
</if>
|
|
|
|
AND POP.OBJID = DH.ORDER_PART_OBJID
|
|
<!-- AND POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID -->
|
|
GROUP BY POM.BOM_REPORT_OBJID
|
|
) AS S1 ON T.OBJID::VARCHAR = S1.BOM_REPORT_OBJID
|
|
WHERE 1=1
|
|
AND UNIT_CODE IS NOT NULL
|
|
|
|
|
|
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(CM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="project_no !=null and project_no != '' ">
|
|
AND CM.OBJID = #{project_no}
|
|
</if>
|
|
<if test="unit_code !=null and unit_code != '' ">
|
|
AND T.UNIT_CODE = #{unit_code}
|
|
</if>
|
|
|
|
ORDER BY SUBSTRING((SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID),POSITION('-' IN (SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID))+1) DESC
|
|
,UNIT_NO
|
|
<!-- ORDER BY REGDATE DESC -->
|
|
) T
|
|
) T
|
|
</select>
|
|
|
|
<!-- 외주협업관리 -> 거래명세서관리 -->
|
|
<select id="invoiceMgmtGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
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
|
|
,(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
|
|
,CM.OBJID AS CONTRACT_MGMT_OBJID
|
|
,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 SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) 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.DISCOUNT_PRICE
|
|
,POM.TOTAL_SUPPLY_UNIT_PRICE
|
|
,POM.NEGO_RATE
|
|
,POM.TOTAL_REAL_SUPPLY_PRICE
|
|
,POM.TOTAL_PRICE_ALL
|
|
,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
|
|
<!-- ,A.APPR_STATUS
|
|
,COALESCE(A.APPR_STATUS_NAME,'작성중') AS APPR_STATUS_NAME
|
|
,A.ROUTE_OBJID
|
|
,A.APPROVAL_OBJID
|
|
,A.APPR_DATE -->
|
|
,(SELECT COUNT(1) FROM PURCHASE_ORDER_PART AS O WHERE O.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID) AS PART_CNT
|
|
,(SELECT SUM(REAL_ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE O.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID) AS ORDER_CNT
|
|
,CASE WHEN RECEPTION_STATUS IS NULL
|
|
THEN '미접수'
|
|
ELSE '접수'
|
|
END AS STATUS_NAME
|
|
,RECEPTION_STATUS
|
|
,(SELECT COUNT(1) FROM ARRIVAL_PLAN AS O WHERE O.PARENT_OBJID = POM.OBJID) AS ARRIVAL_CNT
|
|
<!-- ,(SELECT ARRIVAL_PLAN_DATE FROM ARRIVAL_PLAN AS O WHERE O.PARENT_OBJID = POM.OBJID ORDER BY ARRIVAL_PLAN_DATE DESC LIMIT 1 ) AS ARRIVAL_PLAN_DATE -->
|
|
,TOTAL_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
|
|
,TOTAL_DEFECT_QTY
|
|
,SALES_STATUS
|
|
,AP.GROUP_SEQ
|
|
,AP.RECEIPT_QTY AS TOTAL_RECEIPT_QTY
|
|
,AP.ERROR_QTY AS TOTAL_ERROR_QTY
|
|
,AP.ARRIVAL_QTY AS TOTAL_ARRIVAL_QTY
|
|
,(AP.ARRIVAL_QTY - AP.RECEIPT_QTY) AS UNRECEIVED_QTY
|
|
,AP.RECEIPT_DATE
|
|
,AP.ARRIVAL_PLAN_DATE
|
|
,(CASE
|
|
WHEN AP.GROUP_SEQ IS NULL THEN ''
|
|
WHEN 0 <![CDATA[ >= ]]> (AP.ARRIVAL_QTY - AP.RECEIPT_QTY - AP.ERROR_QTY) THEN '입고완료'
|
|
WHEN TO_CHAR(NOW(),'YYYY-MM-DD') <![CDATA[ > ]]> AP.ARRIVAL_PLAN_DATE THEN '지연'
|
|
ELSE '입고중'
|
|
END) AS DELIVERY_STATUS
|
|
,IM.OBJID AS INVOICE_OBJID
|
|
,IM.ISSUANCE_ID
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = IM.ISSUANCE_ID) AS ISSUANCE_NAME
|
|
,TO_CHAR(IM.REGDATE,'YYYY-MM-DD') AS ISSUANCE_DATE
|
|
,IM.APPR_STATUS
|
|
,CASE WHEN IM.STATUS = 'complete' THEN '마감완료'
|
|
WHEN IM.OBJID is not null THEN COALESCE(IM.APPR_STATUS_NAME,'작성중')
|
|
ELSE ''
|
|
END APPR_STATUS_NAME
|
|
<!-- ,COALESCE(IM.APPR_STATUS_NAME,'작성중') AS APPR_STATUS_NAME -->
|
|
,IM.ROUTE_OBJID
|
|
,IM.APPROVAL_OBJID
|
|
,IM.APPR_DATE
|
|
,IM.STATUS
|
|
FROM PURCHASE_ORDER_MASTER AS POM
|
|
<!-- LEFT 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 PROJECT_MGMT AS CM
|
|
ON POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT POP.PURCHASE_ORDER_MASTER_OBJID
|
|
,SUM(POP.ORDER_QTY::NUMERIC) AS TOTAL_PO_QTY
|
|
,MAX(DH.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 DELIVERY_HISTORY DH
|
|
ON POP.OBJID = DH.PURCHASE_ORDER_PART_OBJID
|
|
GROUP BY POP.PURCHASE_ORDER_MASTER_OBJID
|
|
) AS S1 ON POM.OBJID::VARCHAR = S1.PURCHASE_ORDER_MASTER_OBJID
|
|
LEFT OUTER JOIN (
|
|
SELECT
|
|
PARENT_OBJID,
|
|
GROUP_SEQ,
|
|
<!-- SUM(RECEIPT_QTY::NUMERIC) AS RECEIPT_QTY,
|
|
SUM(ERROR_QTY::NUMERIC) AS ERROR_QTY,
|
|
SUM(ARRIVAL_QTY::NUMERIC) AS ARRIVAL_QTY, -->
|
|
|
|
SUM(CASE WHEN (RECEIPT_QTY IS NULL OR RECEIPT_QTY ='')
|
|
THEN 0
|
|
ELSE RECEIPT_QTY::NUMERIC
|
|
END) AS RECEIPT_QTY,
|
|
|
|
SUM(CASE WHEN (ERROR_QTY IS NULL OR ERROR_QTY ='')
|
|
THEN 0
|
|
ELSE ERROR_QTY::NUMERIC
|
|
END) AS ERROR_QTY,
|
|
|
|
SUM(CASE WHEN (ARRIVAL_QTY IS NULL OR ARRIVAL_QTY ='')
|
|
THEN 0
|
|
ELSE ARRIVAL_QTY::NUMERIC
|
|
END) AS ARRIVAL_QTY,
|
|
MAX(ARRIVAL_PLAN_DATE) AS ARRIVAL_PLAN_DATE,
|
|
MAX(RECEIPT_DATE) AS RECEIPT_DATE
|
|
FROM
|
|
ARRIVAL_PLAN AP
|
|
GROUP BY PARENT_OBJID, GROUP_SEQ
|
|
) AS AP on POM.OBJID = AP.PARENT_OBJID
|
|
|
|
LEFT OUTER JOIN (
|
|
INVOICE_MGMT IM
|
|
LEFT 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 ('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)
|
|
)
|
|
) IM
|
|
ON IM.PARENT_OBJID = POM.OBJID
|
|
AND AP.GROUP_SEQ = IM.GROUP_SEQ
|
|
|
|
<!-- WHERE A.APPR_STATUS ='complete' -->
|
|
WHERE POM.STATUS ='approvalComplete'
|
|
<!-- AND (POM.PARTNER_OBJID = #{PARTNER_OBJID} OR POM.SALES_MNG_USER_ID = #{USER_ID}) -->
|
|
<if test="PARTNER_OBJID !=null and PARTNER_OBJID != '' ">
|
|
AND POM.PARTNER_OBJID = #{PARTNER_OBJID}
|
|
</if>
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(CM.REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
<if test="project_no !=null and project_no != '' ">
|
|
AND CM.OBJID = #{project_no}
|
|
</if>
|
|
<if test="unit_code !=null and unit_code != '' ">
|
|
AND POM.UNIT_CODE LIKE '%'||#{unit_code}||'%'
|
|
</if>
|
|
<if test="partner_objid !=null and partner_objid != '' ">
|
|
AND POM.PARTNER_OBJID = #{partner_objid}
|
|
</if>
|
|
<if test="status !=null and status != '' ">
|
|
AND COALESCE(IM.APPR_STATUS_NAME,'작성중') = #{status}
|
|
</if>
|
|
<if test="issuance_start_date !=null and issuance_start_date != '' ">
|
|
AND TO_DATE(TO_CHAR(IM.REGDATE,'YYYY-MM-DD') ,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{issuance_start_date}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="issuance_end_date !=null and issuance_end_date != '' ">
|
|
AND TO_DATE(TO_CHAR(IM.REGDATE,'YYYY-MM-DD') ,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{issuance_end_date}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="status !=null and status != '' ">
|
|
AND (CASE WHEN IM.STATUS = 'complete' THEN '마감완료'
|
|
WHEN IM.OBJID is not null THEN COALESCE(IM.APPR_STATUS_NAME,'작성중')
|
|
ELSE ''
|
|
END
|
|
) = #{status}
|
|
</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="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 = #{partner_objid}
|
|
</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 != '' ">
|
|
AND A.APPR_STATUS = #{appr_status}
|
|
</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}))||'%'
|
|
)
|
|
ORDER BY SUBSTRING(PURCHASE_ORDER_NO, POSITION('-' IN REVERSE(PURCHASE_ORDER_NO))+1)::numeric DESC
|
|
</if> -->
|
|
ORDER BY SPLIT_PART( PURCHASE_ORDER_NO, '-', 3)::NUMERIC DESC, AP.GROUP_SEQ DESC
|
|
</select>
|
|
|
|
<update id="invoiceIssuance" parameterType="map">
|
|
INSERT INTO INVOICE_MGMT
|
|
(
|
|
OBJID
|
|
,PARENT_OBJID
|
|
,GROUP_SEQ
|
|
,PRICE_SUM
|
|
,ISSUANCE_DATE
|
|
,ISSUANCE_ID
|
|
,STATUS
|
|
,REGDATE
|
|
,WRITER
|
|
,REMARK
|
|
,OUTSTANDING_BALANCE
|
|
,PERCENTAGE
|
|
,REQUEST_AMOUNT
|
|
,TOTAL_SUM
|
|
,DEPOSIT_AMOUNT
|
|
,TOTAL_OUTSTANDING_BALANCE
|
|
,RECEIVE_USER
|
|
,TOTAL_PARTNER_PRICE_SUM
|
|
,TOTAL_PARTNER_VAT_PRICE_SUM
|
|
,NEGO_PRICE_ALL
|
|
,NEGO_VAT_PRICE_ALL
|
|
,DISCOUNT_PERCENTAGE
|
|
,INV_DISCOUNT_PRICE
|
|
)
|
|
VALUES
|
|
(
|
|
#{OBJID }
|
|
,#{PARENT_OBJID }
|
|
,#{GROUP_SEQ }
|
|
,#{PRICE_SUM }
|
|
,#{ISSUANCE_DATE }
|
|
,#{WRITER }
|
|
,'create'
|
|
,NOW()
|
|
,#{WRITER }
|
|
,#{REMARK }
|
|
,#{OUTSTANDING_BALANCE }
|
|
,#{PERCENTAGE }
|
|
,#{REQUEST_AMOUNT }
|
|
,#{TOTAL_SUM }
|
|
,#{DEPOSIT_AMOUNT }
|
|
,#{TOTAL_OUTSTANDING_BALANCE }
|
|
,#{RECEIVE_USER }
|
|
,#{TOTAL_PARTNER_PRICE_SUM }
|
|
,#{TOTAL_PARTNER_VAT_PRICE_SUM }
|
|
,#{NEGO_PRICE_ALL }
|
|
,#{NEGO_VAT_PRICE_ALL }
|
|
,#{DISCOUNT_PERCENTAGE }
|
|
,#{INV_DISCOUNT_PRICE }
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE
|
|
SET
|
|
PRICE_SUM = #{PRICE_SUM}
|
|
,ISSUANCE_DATE = #{ISSUANCE_DATE}
|
|
,ISSUANCE_ID = #{WRITER}
|
|
,STATUS = #{STATUS}
|
|
,WRITER = #{WRITER}
|
|
,REMARK = #{REMARK}
|
|
,OUTSTANDING_BALANCE = #{OUTSTANDING_BALANCE}
|
|
,PERCENTAGE = #{PERCENTAGE}
|
|
,REQUEST_AMOUNT = #{REQUEST_AMOUNT}
|
|
,TOTAL_SUM = #{TOTAL_SUM}
|
|
,DEPOSIT_AMOUNT = #{DEPOSIT_AMOUNT}
|
|
,TOTAL_OUTSTANDING_BALANCE = #{TOTAL_OUTSTANDING_BALANCE}
|
|
,RECEIVE_USER = #{RECEIVE_USER}
|
|
,TOTAL_PARTNER_PRICE_SUM = #{TOTAL_PARTNER_PRICE_SUM}
|
|
,TOTAL_PARTNER_VAT_PRICE_SUM = #{TOTAL_PARTNER_VAT_PRICE_SUM}
|
|
,NEGO_PRICE_ALL = #{NEGO_PRICE_ALL}
|
|
,NEGO_VAT_PRICE_ALL = #{NEGO_VAT_PRICE_ALL}
|
|
,DISCOUNT_PERCENTAGE = #{DISCOUNT_PERCENTAGE}
|
|
,INV_DISCOUNT_PRICE = #{INV_DISCOUNT_PRICE}
|
|
</update>
|
|
|
|
<update id="invoiceConfirm" parameterType="map">
|
|
UPDATE INVOICE_MGMT SET
|
|
STATUS='complete'
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<!-- 자금관리 예정일 저장 -->
|
|
<update id="saveDueDateInfo" parameterType="map">
|
|
UPDATE INVOICE_MGMT SET DUE_DATE = #{DUE_DATE} WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<update id="invoiceComplete" parameterType="map">
|
|
UPDATE INVOICE_MGMT SET
|
|
STATUS='paymentComplete'
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<!-- 거래명세서 저장 시 저장된 파트 정보를 초기화 -->
|
|
<delete id="initInvoicePart" parameterType="map">
|
|
DELETE FROM INVOICE_MGMT_PART WHERE INVOICE_OBJID = #{INVOICE_OBJID}
|
|
</delete>
|
|
|
|
<update id="mergeInvoicePartInfo" parameterType="map">
|
|
INSERT INTO INVOICE_MGMT_PART
|
|
(
|
|
OBJID
|
|
,INVOICE_OBJID
|
|
,PART_OBJID
|
|
,QTY
|
|
,UNIT_PRICE
|
|
,PARTNER_PRICE
|
|
,VAT_PRICE
|
|
,WRITER
|
|
,REGDATE
|
|
,STATUS
|
|
,REMARK
|
|
,RECEIPT_DATE
|
|
)
|
|
VALUES
|
|
(
|
|
#{OBJID }
|
|
, #{INVOICE_OBJID }
|
|
, #{PART_OBJID }
|
|
, #{QTY }
|
|
, #{UNIT_PRICE }
|
|
, #{PARTNER_PRICE }
|
|
, #{VAT_PRICE }
|
|
, #{WRITER }
|
|
, now()
|
|
, #{STATUS }
|
|
, #{REMARK }
|
|
, #{RECEIPT_DATE }
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE
|
|
SET
|
|
PART_OBJID = #{PART_OBJID }
|
|
,QTY = #{QTY }
|
|
,UNIT_PRICE = #{UNIT_PRICE }
|
|
,PARTNER_PRICE = #{PARTNER_PRICE }
|
|
,VAT_PRICE = #{VAT_PRICE }
|
|
,WRITER = #{WRITER }
|
|
,STATUS = #{STATUS }
|
|
,REMARK = #{REMARK }
|
|
,RECEIPT_DATE = #{RECEIPT_DATE }
|
|
</update>
|
|
|
|
<update id="saveLocationInfo" parameterType="map">
|
|
UPDATE ARRIVAL_PLAN SET
|
|
LOCATION = #{LOCATION }
|
|
,SUB_LOCATION = #{SUB_LOCATION }
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
</mapper>
|