Files
wace_plm/WebContent/WEB-INF/classes/com/pms/mapper/costMgmt.xml
2025-12-04 18:31:32 +09:00

4396 lines
170 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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="costMgmt">
<!-- <select id="inputCostStatusList" parameterType="map" resultType="map">
SELECT T.*
FROM (
SELECT A.*,ROW_NUMBER() OVER (ORDER BY PROJECT_NO DESC) AS RNUM
FROM(
SELECT A.*
,ROUND(((LABORCOSTS + LABORCOSTS_OUT) / ORDER_PRICE)*100,1) AS LABORCOSTS_GOEL_RATE
,ROUND((LABORCOSTS + LABORCOSTS_OUT),1) AS TOTAL_LABORCOSTS
,ROUND((SETTLE_AMOUNT / ORDER_PRICE) * 100,1) AS SETTLE_GOEL_RATE
,A.SUM1 + TOTAL_LABOR_COST + SETTLE_AMOUNT AS TOTAL_SUM
,ROUND(((A.SUM1 + ROUND((LABORCOSTS + LABORCOSTS_OUT),1) + SETTLE_AMOUNT) / ORDER_PRICE) * 100,1) AS TOTAL_SUM_AVR
,A.EX_MATERIAL_COST_W + A.EX_LABOR_COST_W + A.EX_EXPENSE_COST_W AS PLAN_TOTAL_COST
,CASE WHEN EX_MATERIAL_COST_W=0
THEN 0
ELSE ROUND((SUM1 / EX_MATERIAL_COST_W) * 100,1)
END EX_MATERIAL_RATE
,CASE WHEN EX_LABOR_COST_W=0
THEN 0
ELSE ROUND((ROUND((LABORCOSTS + LABORCOSTS_OUT),1) / EX_LABOR_COST_W) * 100,1)
END EX_LABOR_RATE
,CASE WHEN EX_EXPENSE_COST_W=0
THEN 0
ELSE ROUND((SETTLE_AMOUNT / EX_EXPENSE_COST_W) * 100,1)
END EX_EXPENSE_RATE
,CASE WHEN A.EX_MATERIAL_COST_W + A.EX_LABOR_COST_W + A.EX_EXPENSE_COST_W = 0
THEN 0
ELSE ROUND((A.SUM1 + TOTAL_LABOR_COST + SETTLE_AMOUNT) / (A.EX_MATERIAL_COST_W + A.EX_LABOR_COST_W + A.EX_EXPENSE_COST_W) * 100,1)
END TOTAL_RATE
,CASE WHEN EX_LABOR_COST_W = 0
THEN 0
ELSE ROUND(((TOTAL_LABOR_COST / EX_LABOR_COST_W) * 100),1)
END EX_LABOR_COST_RATE
FROM(
SELECT
NVL((T4.PER_IN_COUNT*160000)+(T4.PER_IN_OVER_COUNT*200000),0) +NVL((T4.PER_OUT_COUNT*160000)+(T4.PER_OVER_COUNT*200000),0)+ NVL((SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') ) *25000,0) AS TOTAL_LABOR_COST
,
B.PROJECT_NO,
B.REGION_CD,
CODE_NAME(B.REGION_CD) AS REGION_NAME,
B.CUSTOMER_CD,
CODE_NAME(B.CUSTOMER_CD) AS CUSTOMER_NAME,
A.ORDER_CD,
CODE_NAME(A.ORDER_CD) AS ORDER_NAME,
A.PROJECT_TITLE,
B.ORDER_TITLE,
TO_CHAR(TO_DATE(B.DEL_DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS DEL_DATE /*납기일*/
,B.REG_DATE
,B.ORDER_PRICE
,B.ORDER_MGMT_OBJID
,CODE_NAME(B.PROJECT_DIVISION) AS PROJECT_DIVISION_NAME
,B.PROJECT_DERIVATION_NO
,(SELECT PROJECT_NO FROM ORDER_MGMT A WHERE A.ORDER_MGMT_OBJID = B.PROJECT_DERIVATION_NO) AS PROJECT_DERIVATION_NO_NAME
,CODE_NAME(B.PROJECT_MEAN) AS PROJECT_MEAN_NAME
,NVL(SUM(C.WORK_TIME),0) AS WORK_TIME_TOTAL
,ROUND(NVL(SUM(C.WORK_TIME),0)*25000,1) AS COM_LABOR_COST
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') ) AS WORK_TIME_OWN
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID IN ('OUT1','OUT2') ) AS WORK_TIME_OUTSOURCING
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') AND T.DEPT_ID = 'DD' ) AS DD_WORK_TIME
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') AND T.DEPT_ID = 'PT' ) AS PT_WORK_TIME
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') AND T.DEPT_ID = 'PM' ) AS PM_WORK_TIME
,(
SELECT NVL(SUM(LABORCOSTS),0) FROM(
SELECT
R.ORDINARY_HOURLY_WAGE
,T.WORK_TIME
,(
TO_NUMBER(REPLACE(R.ORDINARY_HOURLY_WAGE,',','')) * TO_NUMBER(T.WORK_TIME)
) AS LABORCOSTS
,T.PROJECT_MGMT_OBJID
FROM
TIME_SHEET T, RATECAL_MGMT R
WHERE T.REG_USER_ID = R.USER_ID
AND R.YYYY = TO_CHAR(SYSDATE,'YYYY')
) WHERE PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
) AS LABORCOSTS
,(
SELECT NVL(SUM(LABORCOSTS),0) FROM(
SELECT
R.ORDINARY_HOURLY_WAGE
,T.WORK_TIME
,(
TO_NUMBER(REPLACE(R.ORDINARY_HOURLY_WAGE,',','')) * TO_NUMBER(T.WORK_TIME)
) AS LABORCOSTS
,T.PROJECT_MGMT_OBJID
FROM
TIME_SHEET T, RATECAL_MGMT R
WHERE T.REG_USER_ID = R.USER_ID
AND USER_ID IN ('OUT1','OUT2')
AND R.YYYY = TO_CHAR(SYSDATE,'YYYY')
) WHERE PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
) AS LABORCOSTS_OUT
, NVL((D.CARD_SUM + D.CASH_SUM - D.PAY_SUM),0) AS SETTLE_AMOUNT
,(NVL(E.SUM1,0)+NVL(Z.OUTSUM1,0)) AS SUM1
,NVL(E.AVR,0) AS AVR
,NVL(B.EX_MATERIAL_COST_W,0) AS EX_MATERIAL_COST_W
,NVL(B.EX_LABOR_COST_W,0) AS EX_LABOR_COST_W
,NVL(B.EX_EXPENSE_COST_W,0) AS EX_EXPENSE_COST_W
FROM
PROJECT_MGMT A,
ORDER_MGMT B,
TIME_SHEET C,
(SELECT T1.PROJECT_MGMT_OBJID
,SUM(T.CARD_SUM) AS CARD_SUM
,SUM(T.CASH_SUM) AS CASH_SUM
,SUM(T.PAY_SUM) AS PAY_SUM
FROM
(select T.EXPENSE_MASTER_OBJID,SUM(T.CARD_USED) as CARD_SUM ,
SUM(T.CASH_USED) as CASH_SUM ,
SUM(T.PAYMENT) as PAY_SUM
from EXPENSE_DETAIL T
GROUP BY T.EXPENSE_MASTER_OBJID) T ,EXPENSE_MASTER T1,(SELECT A.TARGET_OBJID FROM APPROVAL A, ROUTE B
WHERE A.OBJID = B.APPROVAL_OBJID
AND B.STATUS='complete') T3
WHERE T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
AND T3.TARGET_OBJID = T1.EXPENSE_MASTER_OBJID
GROUP BY PROJECT_MGMT_OBJID) D,
(SELECT
PROJECT_MGMT_OBJID
,SUM(NVL(T.FINAL_ORDER_AMOUNT,0)) AS SUM1
,T1.ORDER_PRICE
,ROUND(SUM(NVL(T.FINAL_ORDER_AMOUNT,0)) / T1.ORDER_PRICE * 100,1) AS AVR
FROM MATERIAL_MASTER_MGMT T,ORDER_MGMT T1
WHERE T.STATUS_CD IN ('PURSTCD00700','PURSTCD00800')
AND T.PROJECT_MGMT_OBJID = T1.ORDER_MGMT_OBJID
GROUP BY T.PROJECT_MGMT_OBJID,T1.ORDER_PRICE
) E
,(SELECT
PROJECT_MGMT_OBJID
,SUM(NVL(P.SUP_PRICE,0)) AS OUTSUM1
FROM PART_MGMT P
WHERE P.REL_STATUS='PRTS00300'
GROUP BY P.PROJECT_MGMT_OBJID) Z
,(SELECT
TO_CHAR(NVL(SUM(H.PER_IN_COUNT),0)) AS PER_IN_COUNT
,TO_CHAR(NVL(SUM(H.PER_IN_OVER_COUNT),0)) AS PER_IN_OVER_COUNT
,TO_CHAR(NVL(SUM(H.PER_OUT_COUNT),0))+TO_CHAR(NVL(SUM(H.PER_OUT_COUNT1),0))+TO_CHAR(NVL(SUM(H.PER_OUT_COUNT2),0))+TO_CHAR(NVL(SUM(H.PER_OUT_COUNT3),0))+TO_CHAR(NVL(SUM(H.PER_OUT_COUNT4),0))+TO_CHAR(NVL(SUM(H.PER_OUT_COUNT5),0)) AS PER_OUT_COUNT
,TO_CHAR(NVL(SUM(H.PER_OVER_COUNT),0)) + TO_CHAR(NVL(SUM(H.PER_OVER_COUNT1),0)) + TO_CHAR(NVL(SUM(H.PER_OVER_COUNT2),0))+TO_CHAR(NVL(SUM(H.PER_OVER_COUNT3),0)) + TO_CHAR(NVL(SUM(H.PER_OVER_COUNT4),0)) + TO_CHAR(NVL(SUM(H.PER_OVER_COUNT5),0)) AS PER_OVER_COUNT
,F.PROJECT_MGMT_OBJID
FROM HUMAN_INPUT_PLAN H, FACILITY_ASSEMBLY_PLAN F
WHERE H.ASSEMBLY_PLAN_OBJID = F.ASSEMBLY_PLAN_OBJID
GROUP BY F.PROJECT_MGMT_OBJID) T4
WHERE A.ORDER_MGMT_OBJID = B.ORDER_MGMT_OBJID
AND A.ORDER_MGMT_OBJID = C.PROJECT_MGMT_OBJID(+)
AND A.PROJECT_MGMT_OBJID = D.PROJECT_MGMT_OBJID(+)
AND A.ORDER_MGMT_OBJID = E.PROJECT_MGMT_OBJID(+)
AND A.ORDER_MGMT_OBJID = Z.PROJECT_MGMT_OBJID(+)
AND A.PROJECT_MGMT_OBJID = T4.PROJECT_MGMT_OBJID(+)
<if test="division_cd != null and division_cd != ''">
AND B.PROJECT_DIVISION = #{division_cd}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(B.DEL_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
AND TO_CHAR(TO_DATE(SUBSTR(PROJECT_NO,0,2),'YY'),'YYYY') = #{Year}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND B.PROJECT_NO LIKE '%${projectNo}%'
</if>
GROUP BY
B.PROJECT_NO,
B.REGION_CD,
B.CUSTOMER_CD,
A.ORDER_CD,
A.PROJECT_TITLE,
B.ORDER_TITLE,
B.DEL_DATE
,B.REG_DATE
,B.ORDER_PRICE
,B.ORDER_MGMT_OBJID
,B.PROJECT_DIVISION
,B.PROJECT_DERIVATION_NO
,PROJECT_MEAN
,NVL((D.CARD_SUM + D.CASH_SUM - D.PAY_SUM),0)
,E.SUM1
,Z.OUTSUM1
,E.AVR
,B.EX_MATERIAL_COST_W
,B.EX_LABOR_COST_W
,B.EX_EXPENSE_COST_W
,PER_IN_COUNT
,PER_IN_OVER_COUNT
,PER_OUT_COUNT
,PER_OVER_COUNT
) A
)A
WHERE 1=1
) T WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</select> -->
<!-- <select id="inputCostStatusListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT FROM(
SELECT A.*
,ROUND(((LABORCOSTS + LABORCOSTS_OUT) / ORDER_PRICE)*100,1) AS LABORCOSTS_GOEL_RATE
,ROUND((LABORCOSTS + LABORCOSTS_OUT),2) AS TOTAL_LABORCOSTS
,ROUND((SETTLE_AMOUNT / ORDER_PRICE) * 100,1) AS SETTLE_GOEL_RATE
FROM(
SELECT
B.PROJECT_NO,
B.REGION_CD,
CODE_NAME(B.REGION_CD) AS REGION_NAME,
B.CUSTOMER_CD,
CODE_NAME(B.CUSTOMER_CD) AS CUSTOMER_NAME,
A.ORDER_CD,
CODE_NAME(A.ORDER_CD) AS ORDER_NAME,
A.PROJECT_TITLE,
B.ORDER_TITLE,
TO_CHAR(TO_DATE(B.DEL_DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS DEL_DATE /*납기일*/
,B.REG_DATE
,B.ORDER_PRICE
,B.ORDER_MGMT_OBJID
,CODE_NAME(B.PROJECT_DIVISION) AS PROJECT_DIVISION_NAME
,B.PROJECT_DERIVATION_NO
,(SELECT PROJECT_NO FROM ORDER_MGMT A WHERE A.ORDER_MGMT_OBJID = B.PROJECT_DERIVATION_NO) AS PROJECT_DERIVATION_NO_NAME
,CODE_NAME(B.PROJECT_MEAN) AS PROJECT_MEAN_NAME
,NVL(SUM(C.WORK_TIME),0) AS WORK_TIME_TOTAL
,ROUND(NVL(SUM(C.WORK_TIME),0)*25000,1) AS COM_LABOR_COST
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') ) AS WORK_TIME_OWN
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID IN ('OUT1','OUT2') ) AS WORK_TIME_OUTSOURCING
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') AND T.DEPT_ID = 'DD' ) AS DD_WORK_TIME
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') AND T.DEPT_ID = 'PT' ) AS PT_WORK_TIME
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') AND T.DEPT_ID = 'PM' ) AS PM_WORK_TIME
,(
SELECT NVL(SUM(LABORCOSTS),0) FROM(
SELECT
R.ORDINARY_HOURLY_WAGE
,T.WORK_TIME
,(
TO_NUMBER(REPLACE(R.ORDINARY_HOURLY_WAGE,',','')) * TO_NUMBER(T.WORK_TIME)
) AS LABORCOSTS
,T.PROJECT_MGMT_OBJID
FROM
TIME_SHEET T, RATECAL_MGMT R
WHERE T.REG_USER_ID = R.USER_ID
AND R.YYYY = TO_CHAR(SYSDATE,'YYYY')
) WHERE PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
) AS LABORCOSTS
,(
SELECT NVL(SUM(LABORCOSTS),0) FROM(
SELECT
R.ORDINARY_HOURLY_WAGE
,T.WORK_TIME
,(
TO_NUMBER(REPLACE(R.ORDINARY_HOURLY_WAGE,',','')) * TO_NUMBER(T.WORK_TIME)
) AS LABORCOSTS
,T.PROJECT_MGMT_OBJID
FROM
TIME_SHEET T, RATECAL_MGMT R
WHERE T.REG_USER_ID = R.USER_ID
AND R.YYYY = TO_CHAR(SYSDATE,'YYYY')
AND USER_ID IN ('OUT1','OUT2')
) WHERE PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
) AS LABORCOSTS_OUT
, NVL(SUM(D.CARD_USED) + SUM(D.CASH_USED) - SUM(D.PAYMENT),0) AS SETTLE_AMOUNT/*정산금액*/
FROM
PROJECT_MGMT A,
ORDER_MGMT B,
TIME_SHEET C,
EXPENSE_MASTER M,
EXPENSE_DETAIL D
WHERE A.ORDER_MGMT_OBJID = B.ORDER_MGMT_OBJID
AND A.ORDER_MGMT_OBJID = C.PROJECT_MGMT_OBJID(+)
AND A.PROJECT_MGMT_OBJID = M.PROJECT_MGMT_OBJID(+)
AND M.EXPENSE_MASTER_OBJID = D.EXPENSE_MASTER_OBJID(+)
<if test="division_cd != null and division_cd != ''">
AND B.PROJECT_DIVISION = #{division_cd}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(B.DEL_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
AND TO_CHAR(TO_DATE(SUBSTR(PROJECT_NO,0,2),'YY'),'YYYY') = #{Year}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND B.PROJECT_NO LIKE '%${projectNo}%'
</if>
GROUP BY
B.PROJECT_NO,
B.REGION_CD,
B.CUSTOMER_CD,
A.ORDER_CD,
A.PROJECT_TITLE,
B.ORDER_TITLE,
B.DEL_DATE
,B.REG_DATE
,B.ORDER_PRICE
,B.ORDER_MGMT_OBJID
,B.PROJECT_DIVISION
,B.PROJECT_DERIVATION_NO
,PROJECT_MEAN
) A
) T
) T WHERE 1=1
</select> -->
<select id="expenseInfo" parameterType="map" resultType="map">
select
*
from
(
select
A.*,
ROW_NUMBER() OVER(order by PROJECT_NO desc) as RNUM
from
(
SELECT
T4.ORDER_MGMT_OBJID,
T4.PROJECT_NO,
CODE_NAME(T4.REGION_CD) AS REGION_NAME,
CODE_NAME(T4.CUSTOMER_CD) AS CUSTOMER_NAME,
CODE_NAME(T4.ORDER_CD) AS ORDER_NAME,
T4.ORDER_TITLE,
TO_CHAR(CAST(T4.DEL_DATE AS DATE), 'YYYY-MM-DD') AS DEL_DATE /*납기일*/,
CODE_NAME(T4.PROJECT_DIVISION) AS PROJECT_DIVISION_NAME,
T4.PROJECT_DIVISION,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = T1.ORDER_CD) AS ORDER_NAME,
T4.OUTC_CD5,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = T1.PLANT_CD) AS PLANT_NAME,
COALESCE((SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = T4.OUTC_CD6),T4.OUTC_CD6) AS OUTC_CD6,
TO_CHAR(TO_DATE(T4.START_DATE,'YYYYMMDD'),'YYYY-MM-DD') AS START_DATE,
(SELECT USER_NAME FROM USER_INFO O1 WHERE O1.USER_ID = T1.MANAGER_PM) AS MANAGER_NAME ,
COALESCE(T.SUM_EXPENSES, 0) AS SUM_EXPENSES,
COALESCE(T.SUM_CARD, 0) AS SUM_CARD,
COALESCE(T.SUM_CASH, 0) AS SUM_CASH,
COALESCE(T.SUM_PAYMENT, 0) AS SUM_PAYMENT
FROM
ORDER_MGMT T4
INNER JOIN
PROJECT_MGMT AS T1
ON T4.ORDER_MGMT_OBJID = T1.ORDER_MGMT_OBJID
LEFT JOIN (
SELECT
ORDER_MGMT_OBJID,
SUM(SUM_EXPENSES::numeric) AS SUM_EXPENSES,
SUM(SUM_CARD::numeric) AS SUM_CARD,
SUM(SUM_CASH::numeric) AS SUM_CASH,
SUM(SUM_PAYMENT::numeric) AS SUM_PAYMENT
FROM
(
SELECT
SUM(T1.CARD_USED::numeric)+SUM(T1.CASH_USED::numeric)-SUM(T1.PAYMENT::numeric) AS SUM_EXPENSES,
SUM(T1.CARD_USED::numeric) AS SUM_CARD,
SUM(T1.CASH_USED::numeric) AS SUM_CASH,
SUM(T1.PAYMENT::numeric) AS SUM_PAYMENT,
(
SELECT
O.DEPT_CODE
FROM
USER_INFO O
WHERE
O.USER_ID = T.REG_USER_ID
) AS DEPT_CODE,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
FROM
EXPENSE_MASTER T,
EXPENSE_DETAIL T1,
(
SELECT
A.TARGET_OBJID
FROM
APPROVAL A,
ROUTE B
WHERE
A.OBJID = B.APPROVAL_OBJID
AND B.STATUS = 'complete'
) T3
WHERE
T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
AND T3.TARGET_OBJID = T1.EXPENSE_MASTER_OBJID
GROUP BY
REG_USER_ID,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
) T,
PROJECT_MGMT T1
WHERE
T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
GROUP BY
ORDER_MGMT_OBJID
) T ON
T4.ORDER_MGMT_OBJID = T.ORDER_MGMT_OBJID
WHERE 1=1
<if test="division_cd != null and division_cd != ''">
AND T4.project_division = #{division_cd}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(SUBSTRING(T4.PROJECT_NO,0,5),'YY'),'YYYY') = #{Year}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND T4.PROJECT_NO LIKE '%${projectNo}%'
</if>
) A
) A
where 1 = 1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND RNUM::numeric <= #{PAGE_END}::numeric ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND RNUM::numeric >= #{PAGE_START}::numeric ]]>
</if>
</select>
<!-- <select id="expenseInfo" parameterType="map" resultType="map">
select
*
from
(
select
A.*,
ROW_NUMBER() OVER(order by PROJECT_NO desc) as RNUM
from
(
select
T4.ORDER_MGMT_OBJID,
T4.PROJECT_NO,
CODE_NAME(T4.REGION_CD) as REGION_NAME,
CODE_NAME(T4.CUSTOMER_CD) as CUSTOMER_NAME,
CODE_NAME(T4.ORDER_CD) as ORDER_NAME,
T4.ORDER_TITLE,
to_char(CAST(T4.DEL_DATE AS DATE), 'YYYY-MM-DD') as DEL_DATE /*납기일*/,
CODE_NAME(T4.PROJECT_DIVISION) as PROJECT_DIVISION_NAME,
T4.PROJECT_DIVISION,
COALESCE(T.MM_SUM, 0) as MM_SUM,
COALESCE(T1.MD_SUM, 0) as MD_SUM,
COALESCE(T2.MF_SUM, 0) as MF_SUM,
COALESCE(T3.EC_SUM, 0) as EC_SUM,
COALESCE(T.MM_SUM, 0) + COALESCE(T1.MD_SUM, 0) + COALESCE(T2.MF_SUM, 0) + COALESCE(T3.EC_SUM, 0) as TOTAL_SUM,
T4.EX_EXPENSE_COST_W,
case
when COALESCE(T.MM_SUM, 0) + COALESCE(T1.MD_SUM, 0) + COALESCE(T2.MF_SUM, 0) + COALESCE(T3.EC_SUM, 0) = 0 then 0
else ROUND((COALESCE(T.MM_SUM, 0) + COALESCE(T1.MD_SUM, 0) + COALESCE(T2.MF_SUM, 0) + COALESCE(T3.EC_SUM, 0)) / T4.EX_EXPENSE_COST_W::numeric * 100, 1)
end as RATE
from
ORDER_MGMT T4
LEFT JOIN (
select
sum(SETTLE_AMOUNT::numeric) as MM_SUM,
DEPT_CODE,
ORDER_MGMT_OBJID
from
(
select
sum(T1.CARD_USED::numeric) + sum(T1.CASH_USED::numeric) - sum(T1.PAYMENT::numeric) as SETTLE_AMOUNT,
(
select
O.DEPT_CODE
from
USER_INFO O
where
O.USER_ID = T.REG_USER_ID
) as DEPT_CODE,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
from
EXPENSE_MASTER T,
EXPENSE_DETAIL T1,
(
select
A.TARGET_OBJID
from
APPROVAL A,
ROUTE B
where
A.OBJID = B.APPROVAL_OBJID
and B.STATUS = 'complete'
) T3
where
T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
and T3.TARGET_OBJID = T1.EXPENSE_MASTER_OBJID
group by
REG_USER_ID,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
) T,
PROJECT_MGMT T1
where
T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
and DEPT_CODE in (
'MM',
'NT'
)
group by
DEPT_CODE,
ORDER_MGMT_OBJID
) T ON
T4.ORDER_MGMT_OBJID = T.ORDER_MGMT_OBJID
LEFT JOIN (
select
sum(SETTLE_AMOUNT::numeric) as MD_SUM,
DEPT_CODE,
ORDER_MGMT_OBJID
from
(
select
sum(T1.CARD_USED::numeric) + sum(T1.CASH_USED::numeric) - sum(T1.PAYMENT::numeric) as SETTLE_AMOUNT,
(
select
O.DEPT_CODE
from
USER_INFO O
where
O.USER_ID = T.REG_USER_ID
) as DEPT_CODE,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
from
EXPENSE_MASTER T,
EXPENSE_DETAIL T1,
(
select
A.TARGET_OBJID
from
APPROVAL A,
ROUTE B
where
A.OBJID = B.APPROVAL_OBJID
and B.STATUS = 'complete'
) T3
where
T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
and T3.TARGET_OBJID = T1.EXPENSE_MASTER_OBJID
group by
REG_USER_ID,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
) T,
PROJECT_MGMT T1
where
T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
and DEPT_CODE in ('MD')
group by
DEPT_CODE,
ORDER_MGMT_OBJID
) T1 ON
T4.ORDER_MGMT_OBJID = T1.ORDER_MGMT_OBJID
LEFT JOIN (
select
sum(SETTLE_AMOUNT::numeric) as MF_SUM,
DEPT_CODE,
ORDER_MGMT_OBJID
from
(
select
sum(T1.CARD_USED::numeric) + sum(T1.CASH_USED::numeric) - sum(T1.PAYMENT::numeric) as SETTLE_AMOUNT,
(
select
O.DEPT_CODE
from
USER_INFO O
where
O.USER_ID = T.REG_USER_ID
) as DEPT_CODE,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
from
EXPENSE_MASTER T,
EXPENSE_DETAIL T1,
(
select
A.TARGET_OBJID
from
APPROVAL A,
ROUTE B
where
A.OBJID = B.APPROVAL_OBJID
and B.STATUS = 'complete'
) T3
where
T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
and T3.TARGET_OBJID = T1.EXPENSE_MASTER_OBJID
group by
REG_USER_ID,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
) T,
PROJECT_MGMT T1
where
T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
and DEPT_CODE in (
'MF',
'FT'
)
group by
DEPT_CODE,
ORDER_MGMT_OBJID
) T2 ON
T4.ORDER_MGMT_OBJID = T2.ORDER_MGMT_OBJID
LEFT JOIN (
select
sum(SETTLE_AMOUNT::numeric) as EC_SUM,
DEPT_CODE,
ORDER_MGMT_OBJID
from
(
select
sum(T1.CARD_USED::numeric) + sum(T1.CASH_USED::numeric) - sum(T1.PAYMENT::numeric) as SETTLE_AMOUNT,
(
select
O.DEPT_CODE
from
USER_INFO O
where
O.USER_ID = T.REG_USER_ID
) as DEPT_CODE,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
from
EXPENSE_MASTER T,
EXPENSE_DETAIL T1,
(
select
A.TARGET_OBJID
from
APPROVAL A,
ROUTE B
where
A.OBJID = B.APPROVAL_OBJID
and B.STATUS = 'complete'
) T3
where
T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
and T3.TARGET_OBJID = T1.EXPENSE_MASTER_OBJID
group by
REG_USER_ID,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
) T,
PROJECT_MGMT T1
where
T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
and DEPT_CODE in ('EC')
group by
DEPT_CODE,
ORDER_MGMT_OBJID
) T3 ON
T4.ORDER_MGMT_OBJID = T3.ORDER_MGMT_OBJID
WHERE 1=1
<if test="division_cd != null and division_cd != ''">
AND T4.project_division = #{division_cd}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(SUBSTRING(T4.PROJECT_NO,0,5),'YY'),'YYYY') = #{Year}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND T4.PROJECT_NO LIKE '%${projectNo}%'
</if>
) A
) A
where 1 = 1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND RNUM::numeric <= #{PAGE_END}::numeric ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND RNUM::numeric >= #{PAGE_START}::numeric ]]>
</if>
</select> -->
<!-- <select id="expenseInfo" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT A.*,ROW_NUMBER() OVER (ORDER BY PROJECT_NO DESC) AS RNUM FROM (SELECT T4.ORDER_MGMT_OBJID,
T4.PROJECT_NO,
CODE_NAME(T4.REGION_CD) AS REGION_NAME,
CODE_NAME(T4.CUSTOMER_CD) AS CUSTOMER_NAME,
CODE_NAME(T4.ORDER_CD) AS ORDER_NAME,
T4.ORDER_TITLE,
TO_CHAR(TO_DATE(T4.DEL_DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS DEL_DATE /*납기일*/
,
CODE_NAME(T4.PROJECT_DIVISION) AS PROJECT_DIVISION_NAME ,
T4.PROJECT_DIVISION ,
NVL(T.MM_SUM,0) AS MM_SUM ,
NVL(T1.MD_SUM,0) AS MD_SUM ,
NVL(T2.MF_SUM,0) AS MF_SUM ,
NVL(T3.EC_SUM,0) AS EC_SUM ,
NVL(T.MM_SUM,0) + NVL(T1.MD_SUM,0) + NVL(T2.MF_SUM,0) + NVL(T3.EC_SUM,0) AS TOTAL_SUM ,
T4.EX_EXPENSE_COST_W ,
CASE
WHEN NVL(T.MM_SUM,0) + NVL(T1.MD_SUM,0) + NVL(T2.MF_SUM,0) + NVL(T3.EC_SUM,0) = 0
THEN 0
ELSE ROUND((NVL(T.MM_SUM,0) + NVL(T1.MD_SUM,0) + NVL(T2.MF_SUM,0) + NVL(T3.EC_SUM,0)) / T4.EX_EXPENSE_COST_W * 100,1)
END AS RATE
FROM
(SELECT SUM(SETTLE_AMOUNT) AS MM_SUM,
DEPT_CODE,
ORDER_MGMT_OBJID
FROM
(SELECT SUM(T1.CARD_USED) + SUM(T1.CASH_USED) - SUM(T1.PAYMENT) AS SETTLE_AMOUNT ,
(SELECT O.DEPT_CODE
FROM USER_INFO O
WHERE O.USER_ID = T.REG_USER_ID
) AS DEPT_CODE ,
T.EXPENSE_MASTER_OBJID ,
T.PROJECT_MGMT_OBJID
FROM EXPENSE_MASTER T ,
EXPENSE_DETAIL T1 ,
(SELECT A.TARGET_OBJID
FROM APPROVAL A,
ROUTE B
WHERE A.OBJID = B.APPROVAL_OBJID
AND B.STATUS='complete'
) T3
WHERE T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
AND T3.TARGET_OBJID = T1.EXPENSE_MASTER_OBJID
GROUP BY REG_USER_ID,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
) T ,
PROJECT_MGMT T1
WHERE T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
AND DEPT_CODE IN('MM','NT')
GROUP BY DEPT_CODE,
ORDER_MGMT_OBJID
) T,
(SELECT SUM(SETTLE_AMOUNT) AS MD_SUM,
DEPT_CODE,
ORDER_MGMT_OBJID
FROM
(SELECT SUM(T1.CARD_USED) + SUM(T1.CASH_USED) - SUM(T1.PAYMENT) AS SETTLE_AMOUNT ,
(SELECT O.DEPT_CODE
FROM USER_INFO O
WHERE O.USER_ID = T.REG_USER_ID
) AS DEPT_CODE ,
T.EXPENSE_MASTER_OBJID ,
T.PROJECT_MGMT_OBJID
FROM EXPENSE_MASTER T ,
EXPENSE_DETAIL T1 ,
(SELECT A.TARGET_OBJID
FROM APPROVAL A,
ROUTE B
WHERE A.OBJID = B.APPROVAL_OBJID
AND B.STATUS='complete'
) T3
WHERE T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
AND T3.TARGET_OBJID = T1.EXPENSE_MASTER_OBJID
GROUP BY REG_USER_ID,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
) T ,
PROJECT_MGMT T1
WHERE T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
AND DEPT_CODE IN('MD')
GROUP BY DEPT_CODE,
ORDER_MGMT_OBJID
) T1,
(SELECT SUM(SETTLE_AMOUNT) AS MF_SUM,
DEPT_CODE,
ORDER_MGMT_OBJID
FROM
(SELECT SUM(T1.CARD_USED) + SUM(T1.CASH_USED) - SUM(T1.PAYMENT) AS SETTLE_AMOUNT ,
(SELECT O.DEPT_CODE
FROM USER_INFO O
WHERE O.USER_ID = T.REG_USER_ID
) AS DEPT_CODE ,
T.EXPENSE_MASTER_OBJID ,
T.PROJECT_MGMT_OBJID
FROM EXPENSE_MASTER T ,
EXPENSE_DETAIL T1 ,
(SELECT A.TARGET_OBJID
FROM APPROVAL A,
ROUTE B
WHERE A.OBJID = B.APPROVAL_OBJID
AND B.STATUS='complete'
) T3
WHERE T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
AND T3.TARGET_OBJID = T1.EXPENSE_MASTER_OBJID
GROUP BY REG_USER_ID,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
) T ,
PROJECT_MGMT T1
WHERE T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
AND DEPT_CODE IN('MF','FT')
GROUP BY DEPT_CODE,
ORDER_MGMT_OBJID
) T2,
(SELECT SUM(SETTLE_AMOUNT) AS EC_SUM,
DEPT_CODE,
ORDER_MGMT_OBJID
FROM
(SELECT SUM(T1.CARD_USED) + SUM(T1.CASH_USED) - SUM(T1.PAYMENT) AS SETTLE_AMOUNT ,
(SELECT O.DEPT_CODE
FROM USER_INFO O
WHERE O.USER_ID = T.REG_USER_ID
) AS DEPT_CODE ,
T.EXPENSE_MASTER_OBJID ,
T.PROJECT_MGMT_OBJID
FROM EXPENSE_MASTER T ,
EXPENSE_DETAIL T1 ,
(SELECT A.TARGET_OBJID
FROM APPROVAL A,
ROUTE B
WHERE A.OBJID = B.APPROVAL_OBJID
AND B.STATUS='complete'
) T3
WHERE T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
AND T3.TARGET_OBJID = T1.EXPENSE_MASTER_OBJID
GROUP BY REG_USER_ID,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
) T ,
PROJECT_MGMT T1
WHERE T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
AND DEPT_CODE IN('EC')
GROUP BY DEPT_CODE,
ORDER_MGMT_OBJID
) T3,
ORDER_MGMT T4
WHERE T4.ORDER_MGMT_OBJID = T.ORDER_MGMT_OBJID(+)
AND T4.ORDER_MGMT_OBJID = T1.ORDER_MGMT_OBJID(+)
AND T4.ORDER_MGMT_OBJID = T2.ORDER_MGMT_OBJID(+)
AND T4.ORDER_MGMT_OBJID = T3.ORDER_MGMT_OBJID(+)
<if test="division_cd != null and division_cd != ''">
AND T3.PROJECT_DIVISION = #{division_cd}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(B.DEL_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
AND TO_CHAR(TO_DATE(SUBSTR(T3.PROJECT_NO,0,2),'YY'),'YYYY') = #{Year}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND T3.PROJECT_NO LIKE '%${projectNo}%'
</if>
)A
)
WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</select> -->
<select id="expenseInfoCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::numeric as MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT FROM(
select
T3.PROJECT_NO,
CODE_NAME(T3.REGION_CD) as REGION_NAME,
CODE_NAME(T3.CUSTOMER_CD) as CUSTOMER_NAME,
CODE_NAME(T3.ORDER_CD) as ORDER_NAME,
T3.ORDER_TITLE,
to_char(to_date(T3.DEL_DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') as DEL_DATE /*납기일*/,
CODE_NAME(T3.PROJECT_DIVISION) as PROJECT_DIVISION_NAME,
T3.PROJECT_DIVISION,
COALESCE(T.PM_SUM, 0) as PM_SUM,
COALESCE(T1.DD_SUM, 0) as DD_SUM,
COALESCE(T2.PT_SUM, 0) as PT_SUM,
COALESCE(T.PM_SUM, 0) + COALESCE(T1.DD_SUM, 0) + COALESCE(T2.PT_SUM, 0) as TOTAL_SUM,
T3.EX_EXPENSE_COST_W,
case
when COALESCE(T.PM_SUM, 0) + COALESCE(T1.DD_SUM, 0) + COALESCE(T2.PT_SUM, 0) = 0 then 0
else
ROUND(
(
COALESCE(T.PM_SUM, 0) +
COALESCE(T1.DD_SUM, 0) +
COALESCE(T2.PT_SUM, 0)
) / T3.EX_EXPENSE_COST_W::numeric * 100, 1
)
end as RATE
from
ORDER_MGMT T3
LEFT JOIN (
select
sum(SETTLE_AMOUNT::numeric) as PM_SUM,
DEPT_CODE,
ORDER_MGMT_OBJID
from
(
select
sum(T1.CARD_USED::numeric) + sum(T1.CASH_USED::numeric) - sum(T1.PAYMENT::numeric) as SETTLE_AMOUNT,
(
select
O.DEPT_CODE
from
USER_INFO O
where
O.USER_ID = T.REG_USER_ID
) as DEPT_CODE,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
from
EXPENSE_MASTER T,
EXPENSE_DETAIL T1
where
T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
group by
REG_USER_ID,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
) T,
PROJECT_MGMT T1
where
T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
and DEPT_CODE = 'PM'
group by
DEPT_CODE,
ORDER_MGMT_OBJID
) T ON
T3.ORDER_MGMT_OBJID = T.ORDER_MGMT_OBJID
LEFT JOIN (
select
sum(SETTLE_AMOUNT::numeric) as DD_SUM,
DEPT_CODE,
ORDER_MGMT_OBJID
from
(
select
sum(T1.CARD_USED::numeric) + sum(T1.CASH_USED::numeric) - sum(T1.PAYMENT::numeric) as SETTLE_AMOUNT,
(
select
O.DEPT_CODE
from
USER_INFO O
where
O.USER_ID = T.REG_USER_ID
) as DEPT_CODE,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
from
EXPENSE_MASTER T,
EXPENSE_DETAIL T1
where
T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
group by
REG_USER_ID,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
) T,
PROJECT_MGMT T1
where
T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
and DEPT_CODE = 'DD'
group by
DEPT_CODE,
ORDER_MGMT_OBJID
) T1 ON
T3.ORDER_MGMT_OBJID = T1.ORDER_MGMT_OBJID
LEFT JOIN (
select
sum(SETTLE_AMOUNT::numeric) as PT_SUM,
DEPT_CODE,
ORDER_MGMT_OBJID
from
(
select
sum(T1.CARD_USED::numeric) + sum(T1.CASH_USED::numeric) - sum(T1.PAYMENT::numeric) as SETTLE_AMOUNT,
(
select
O.DEPT_CODE
from
USER_INFO O
where
O.USER_ID = T.REG_USER_ID
) as DEPT_CODE,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
from
EXPENSE_MASTER T,
EXPENSE_DETAIL T1
where
T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
group by
REG_USER_ID,
T.EXPENSE_MASTER_OBJID,
T.PROJECT_MGMT_OBJID
) T,
PROJECT_MGMT T1
where
T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
and DEPT_CODE = 'PT'
group by
DEPT_CODE,
ORDER_MGMT_OBJID
) T2 ON
T3.ORDER_MGMT_OBJID = T2.ORDER_MGMT_OBJID
WHERE 1=1
<if test="division_cd != null and division_cd != ''">
AND T3.project_division = #{division_cd}
</if>
<if test="Year !=null and Year != '' ">
<!-- AND TO_CHAR(TO_DATE(B.DEL_DATE,'YYYY-MM-DD'),'YYYY') = #{Year} -->
AND TO_CHAR(TO_DATE(SUBSTR(T3.PROJECT_NO,0,5),'YY'),'YYYY') = #{Year}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND T3.PROJECT_NO LIKE '%${projectNo}%'
</if>
) A
) T
WHERE 1=1
</select>
<!-- <select id="expenseInfoCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT FROM(
SELECT
T3.PROJECT_NO,
CODE_NAME(T3.REGION_CD) AS REGION_NAME,
CODE_NAME(T3.CUSTOMER_CD) AS CUSTOMER_NAME,
CODE_NAME(T3.ORDER_CD) AS ORDER_NAME,
T3.ORDER_TITLE,
TO_CHAR(TO_DATE(T3.DEL_DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS DEL_DATE /*납기일*/
,CODE_NAME(T3.PROJECT_DIVISION) AS PROJECT_DIVISION_NAME
,T3.PROJECT_DIVISION
,NVL(T.PM_SUM,0) AS PM_SUM
,NVL(T1.DD_SUM,0) AS DD_SUM
, NVL(T2.PT_SUM,0) AS PT_SUM
,NVL(T.PM_SUM,0) + NVL(T1.DD_SUM,0) + NVL(T2.PT_SUM,0) AS TOTAL_SUM
,T3.EX_EXPENSE_COST_W
,CASE WHEN NVL(T.PM_SUM,0) + NVL(T1.DD_SUM,0) + NVL(T2.PT_SUM,0) = 0
THEN 0
ELSE ROUND((NVL(T.PM_SUM,0) + NVL(T1.DD_SUM,0) + NVL(T2.PT_SUM,0)) / T3.EX_EXPENSE_COST_W * 100,1)
END AS RATE
FROM
(SELECT SUM(SETTLE_AMOUNT) AS PM_SUM,DEPT_CODE,ORDER_MGMT_OBJID FROM (SELECT
SUM(T1.CARD_USED) + SUM(T1.CASH_USED) - SUM(T1.PAYMENT) AS SETTLE_AMOUNT
,(SELECT O.DEPT_CODE FROM USER_INFO O WHERE O.USER_ID = T.REG_USER_ID) AS DEPT_CODE
,T.EXPENSE_MASTER_OBJID
,T.PROJECT_MGMT_OBJID
FROM EXPENSE_MASTER T ,EXPENSE_DETAIL T1
WHERE T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
GROUP BY REG_USER_ID,T.EXPENSE_MASTER_OBJID,T.PROJECT_MGMT_OBJID) T ,PROJECT_MGMT T1
WHERE T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
AND DEPT_CODE ='PM'
GROUP BY DEPT_CODE,ORDER_MGMT_OBJID) T,
(SELECT SUM(SETTLE_AMOUNT) AS DD_SUM,DEPT_CODE,ORDER_MGMT_OBJID FROM (SELECT
SUM(T1.CARD_USED) + SUM(T1.CASH_USED) - SUM(T1.PAYMENT) AS SETTLE_AMOUNT
,(SELECT O.DEPT_CODE FROM USER_INFO O WHERE O.USER_ID = T.REG_USER_ID) AS DEPT_CODE
,T.EXPENSE_MASTER_OBJID
,T.PROJECT_MGMT_OBJID
FROM EXPENSE_MASTER T ,EXPENSE_DETAIL T1
WHERE T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
GROUP BY REG_USER_ID,T.EXPENSE_MASTER_OBJID,T.PROJECT_MGMT_OBJID) T ,PROJECT_MGMT T1
WHERE T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
AND DEPT_CODE ='DD'
GROUP BY DEPT_CODE,ORDER_MGMT_OBJID) T1,
(SELECT SUM(SETTLE_AMOUNT) AS PT_SUM,DEPT_CODE,ORDER_MGMT_OBJID FROM (SELECT
SUM(T1.CARD_USED) + SUM(T1.CASH_USED) - SUM(T1.PAYMENT) AS SETTLE_AMOUNT
,(SELECT O.DEPT_CODE FROM USER_INFO O WHERE O.USER_ID = T.REG_USER_ID) AS DEPT_CODE
,T.EXPENSE_MASTER_OBJID
,T.PROJECT_MGMT_OBJID
FROM EXPENSE_MASTER T ,EXPENSE_DETAIL T1
WHERE T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
GROUP BY REG_USER_ID,T.EXPENSE_MASTER_OBJID,T.PROJECT_MGMT_OBJID) T ,PROJECT_MGMT T1
WHERE T.PROJECT_MGMT_OBJID = T1.PROJECT_MGMT_OBJID
AND DEPT_CODE ='PT'
GROUP BY DEPT_CODE,ORDER_MGMT_OBJID) T2,ORDER_MGMT T3
WHERE T3.ORDER_MGMT_OBJID = T.ORDER_MGMT_OBJID(+)
AND T3.ORDER_MGMT_OBJID = T1.ORDER_MGMT_OBJID(+)
AND T3.ORDER_MGMT_OBJID = T2.ORDER_MGMT_OBJID(+)
<if test="division_cd != null and division_cd != ''">
AND T3.PROJECT_DIVISION = #{division_cd}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(B.DEL_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
AND TO_CHAR(TO_DATE(SUBSTR(T3.PROJECT_NO,0,2),'YY'),'YYYY') = #{Year}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND T3.PROJECT_NO LIKE '%${projectNo}%'
</if>
) A
) T
WHERE 1=1
</select> -->
<select id="materialCostMgmtList" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT A.*,ROW_NUMBER() OVER (ORDER BY PROJECT_NO DESC) AS RNUM
FROM(
SELECT A.*
FROM(
WITH SUM1 AS (SELECT
PROJECT_MGMT_OBJID
,SUM(NVL(T.FINAL_ORDER_AMOUNT,0)) AS SUM1
FROM MATERIAL_MASTER_MGMT T
WHERE T.PUR_CD='IVPUR00100'
AND T.STATUS_CD IN ('PURSTCD00700','PURSTCD00800')
GROUP BY T.PROJECT_MGMT_OBJID)
,SUM2 AS (SELECT
PROJECT_MGMT_OBJID
,SUM(NVL(T.FINAL_ORDER_AMOUNT,0)) AS SUM2
FROM MATERIAL_MASTER_MGMT T
WHERE T.PUR_CD='IVPUR00200'
AND T.STATUS_CD IN ('PURSTCD00700','PURSTCD00800')
GROUP BY T.PROJECT_MGMT_OBJID)
,SUM3 AS (SELECT
PROJECT_MGMT_OBJID
,SUM(NVL(T.FINAL_ORDER_AMOUNT,0)) AS SUM3
FROM MATERIAL_MASTER_MGMT T
WHERE T.PUR_CD='IVPUR00300'
AND T.STATUS_CD IN ('PURSTCD00700','PURSTCD00800')
GROUP BY T.PROJECT_MGMT_OBJID)
,SUM4 AS (SELECT
PROJECT_MGMT_OBJID
,SUM(NVL(T.FINAL_ORDER_AMOUNT,0)) AS SUM4
FROM MATERIAL_MASTER_MGMT T
WHERE T.PUR_CD='IVPUR00400'
AND T.STATUS_CD IN ('PURSTCD00700','PURSTCD00800')
GROUP BY T.PROJECT_MGMT_OBJID)
,SUM5 AS (SELECT
PROJECT_MGMT_OBJID
,SUM(NVL(T.FINAL_ORDER_AMOUNT,0)) AS SUM5
FROM MATERIAL_MASTER_MGMT T
WHERE T.PUR_CD='IVPUR00500'
AND T.STATUS_CD IN ('PURSTCD00700','PURSTCD00800')
GROUP BY T.PROJECT_MGMT_OBJID)
,OUTSUM1 AS (SELECT
PROJECT_MGMT_OBJID
,SUM(NVL(P.SUP_PRICE,0)) AS OUTTSUM1
FROM PART_MGMT P
WHERE P.REL_STATUS='PRTS00300'
AND P.SORT_CD = 'SRT00010'
GROUP BY P.PROJECT_MGMT_OBJID)
,OUTSUM2 AS (SELECT
PROJECT_MGMT_OBJID
,SUM(NVL(P.SUP_PRICE,0)) AS OUTTSUM2
FROM PART_MGMT P
WHERE P.REL_STATUS='PRTS00300'
AND P.SORT_CD = 'SRT00020'
GROUP BY P.PROJECT_MGMT_OBJID)
,OUTSUM3 AS (SELECT
PROJECT_MGMT_OBJID
,SUM(NVL(P.SUP_PRICE,0)) AS OUTTSUM3
FROM PART_MGMT P
WHERE P.REL_STATUS='PRTS00300'
AND P.SORT_CD = 'SRT00030'
GROUP BY P.PROJECT_MGMT_OBJID)
SELECT
DISTINCT
NVL(SUM1.SUM1,0) AS SUM1
,NVL(SUM2.SUM2,0) AS SUM2
,NVL(SUM3.SUM3,0) AS SUM3
,NVL(SUM4.SUM4,0) AS SUM4
,NVL(SUM5.SUM5,0) AS SUM5
,NVL(OUTSUM1.OUTTSUM1,0) AS OUTTTSUM1
,NVL(OUTSUM2.OUTTSUM2,0) AS OUTTTSUM2
,NVL(OUTSUM3.OUTTSUM3,0) AS OUTTTSUM3
,(NVL(SUM1.SUM1,0) + NVL(SUM2.SUM2,0) + NVL(SUM3.SUM3,0) + NVL(SUM4.SUM4,0) + NVL(SUM5.SUM5,0)) AS TOTAL_SUM
,(NVL(OUTSUM1.OUTTSUM1,0) + NVL(OUTSUM2.OUTTSUM2,0) + NVL(OUTSUM3.OUTTSUM3,0)) AS TOTAL_OUTTTSUM
,(NVL(SUM1.SUM1,0) + NVL(SUM2.SUM2,0) + NVL(SUM3.SUM3,0) + NVL(SUM4.SUM4,0) + NVL(SUM5.SUM5,0)+NVL(OUTSUM1.OUTTSUM1,0) + NVL(OUTSUM2.OUTTSUM2,0) + NVL(OUTSUM3.OUTTSUM3,0)) AS ALL_TOTAL_SUM
,ROUND((NVL(SUM1.SUM1,0) + NVL(SUM2.SUM2,0) + NVL(SUM3.SUM3,0) + NVL(SUM4.SUM4,0) + NVL(SUM5.SUM5,0)) / T1.ORDER_PRICE * 100,1) AS AVR
,CASE WHEN T1.EX_MATERIAL_COST_W = 0
THEN 0
ELSE ROUND((NVL(SUM1.SUM1,0) + NVL(SUM2.SUM2,0) + NVL(SUM3.SUM3,0) + NVL(SUM4.SUM4,0) + NVL(SUM5.SUM5,0) + NVL(OUTSUM1.OUTTSUM1,0) + NVL(OUTSUM2.OUTTSUM2,0) + NVL(OUTSUM3.OUTTSUM3,0)) / T1.EX_MATERIAL_COST_W * 100,1)
END EX_MATERIAL_COS_RATE
,T1.*
FROM SUM1,SUM2,SUM3,SUM4,SUM5,OUTSUM1,OUTSUM2,OUTSUM3,
(SELECT
B.PROJECT_NO,
B.REGION_CD,
CODE_NAME(B.REGION_CD) AS REGION_NAME,
B.CUSTOMER_CD,
CODE_NAME(B.CUSTOMER_CD) AS CUSTOMER_NAME,
A.ORDER_CD,
CODE_NAME(A.ORDER_CD) AS ORDER_NAME,
A.PROJECT_TITLE,
B.ORDER_TITLE,
TO_CHAR(TO_DATE(B.DEL_DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS DEL_DATE
,B.REG_DATE
,B.ORDER_PRICE
,B.ORDER_MGMT_OBJID
,CODE_NAME(B.PROJECT_DIVISION) AS PROJECT_DIVISION_NAME
,B.PROJECT_DIVISION
,B.PROJECT_DERIVATION_NO
,(SELECT PROJECT_NO FROM ORDER_MGMT A WHERE A.ORDER_MGMT_OBJID = B.PROJECT_DERIVATION_NO) AS PROJECT_DERIVATION_NO_NAME
,CODE_NAME(B.PROJECT_MEAN) AS PROJECT_MEAN_NAME
,NVL(B.EX_MATERIAL_COST_W,0) AS EX_MATERIAL_COST_W
,NVL(B.EX_LABOR_COST_W,0) AS EX_LABOR_COST_W
,NVL(B.EX_EXPENSE_COST_W,0) AS EX_EXPENSE_COST_W
FROM
PROJECT_MGMT A,
ORDER_MGMT B
WHERE A.ORDER_MGMT_OBJID = B.ORDER_MGMT_OBJID) T1
WHERE SUM1.PROJECT_MGMT_OBJID(+) =T1.ORDER_MGMT_OBJID
AND SUM2.PROJECT_MGMT_OBJID(+) =T1.ORDER_MGMT_OBJID
AND SUM3.PROJECT_MGMT_OBJID(+) = T1.ORDER_MGMT_OBJID
AND SUM4.PROJECT_MGMT_OBJID(+) =T1.ORDER_MGMT_OBJID
AND SUM5.PROJECT_MGMT_OBJID(+) = T1.ORDER_MGMT_OBJID
AND OUTSUM1.PROJECT_MGMT_OBJID(+) = T1.ORDER_MGMT_OBJID
AND OUTSUM2.PROJECT_MGMT_OBJID(+) = T1.ORDER_MGMT_OBJID
AND OUTSUM3.PROJECT_MGMT_OBJID(+) = T1.ORDER_MGMT_OBJID
<if test="division_cd != null and division_cd != ''">
AND T1.PROJECT_DIVISION = #{division_cd}
</if>
<if test="Year !=null and Year != '' ">
<!-- AND TO_CHAR(TO_DATE(T1.DEL_DATE,'YYYY-MM-DD'),'YYYY') = #{Year} -->
AND TO_CHAR(TO_DATE(SUBSTR(PROJECT_NO,0,2),'YY'),'YYYY') = #{Year}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND T1.PROJECT_NO LIKE '%${projectNo}%'
</if>
) A
)A
WHERE 1=1
)WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</select>
<select id="materialCostMgmtListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT FROM(
SELECT
B.PROJECT_NO,
B.REGION_CD,
CODE_NAME(B.REGION_CD) AS REGION_NAME,
B.CUSTOMER_CD,
CODE_NAME(B.CUSTOMER_CD) AS CUSTOMER_NAME,
A.ORDER_CD,
CODE_NAME(A.ORDER_CD) AS ORDER_NAME,
A.PROJECT_TITLE,
B.ORDER_TITLE,
TO_CHAR(TO_DATE(B.DEL_DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS DEL_DATE /*납기일*/
,B.REG_DATE
,B.ORDER_MGMT_OBJID
,CODE_NAME(B.PROJECT_DIVISION) AS PROJECT_DIVISION_NAME
,B.PROJECT_DERIVATION_NO
,(SELECT PROJECT_NO FROM ORDER_MGMT A WHERE A.ORDER_MGMT_OBJID = B.PROJECT_DERIVATION_NO) AS PROJECT_DERIVATION_NO_NAME
,CODE_NAME(B.PROJECT_MEAN) AS PROJECT_MEAN_NAME
FROM
PROJECT_MGMT A,
ORDER_MGMT B
WHERE A.ORDER_MGMT_OBJID = B.ORDER_MGMT_OBJID
<if test="division_cd != null and division_cd != ''">
AND B.PROJECT_DIVISION = #{division_cd}
</if>
<if test="Year !=null and Year != '' ">
<!-- AND TO_CHAR(TO_DATE(B.DEL_DATE,'YYYY-MM-DD'),'YYYY') = #{Year} -->
AND TO_CHAR(TO_DATE(SUBSTR(PROJECT_NO,0,2),'YY'),'YYYY') = #{Year}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND B.PROJECT_NO LIKE '%${projectNo}%'
</if>
GROUP BY
B.PROJECT_NO,
B.REGION_CD,
B.CUSTOMER_CD,
A.ORDER_CD,
A.PROJECT_TITLE,
B.ORDER_TITLE,
B.DEL_DATE
,B.REG_DATE
,B.ORDER_MGMT_OBJID
,B.PROJECT_DIVISION
,B.PROJECT_DERIVATION_NO
,PROJECT_MEAN
) T
)WHERE 1=1
</select>
<select id="laborCostMgmtList" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT A.*,ROW_NUMBER() OVER (ORDER BY PROJECT_NO DESC) AS RNUM
FROM(
SELECT A.*
,ROUND(((LABORCOSTS + LABORCOSTS_OUT) / ORDER_PRICE)*100,1) AS GOEL_RATE
,(LABORCOSTS + LABORCOSTS_OUT) AS TOTAL_LABORCOSTS
,CASE WHEN EX_LABOR_COST_W = 0
THEN 0
ELSE ROUND(((TOTAL_LABOR_COST / EX_LABOR_COST_W) * 100),1)
END EX_LABOR_COST_RATE
FROM(
SELECT
B.PROJECT_NO,
B.REGION_CD,
NVL(B.EX_LABOR_COST_W,0) AS EX_LABOR_COST_W,
CODE_NAME(B.REGION_CD) AS REGION_NAME,
B.CUSTOMER_CD,
CODE_NAME(B.CUSTOMER_CD) AS CUSTOMER_NAME,
A.ORDER_CD,
CODE_NAME(A.ORDER_CD) AS ORDER_NAME,
A.PROJECT_TITLE,
B.ORDER_TITLE,
TO_CHAR(TO_DATE(B.DEL_DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS DEL_DATE /*납기일*/
,B.REG_DATE
,B.ORDER_PRICE
,B.ORDER_MGMT_OBJID
,CODE_NAME(B.PROJECT_DIVISION) AS PROJECT_DIVISION_NAME
,B.PROJECT_DERIVATION_NO
,(SELECT PROJECT_NO FROM ORDER_MGMT A WHERE A.ORDER_MGMT_OBJID = B.PROJECT_DERIVATION_NO) AS PROJECT_DERIVATION_NO_NAME
,CODE_NAME(B.PROJECT_MEAN) AS PROJECT_MEAN_NAME
,NVL(SUM(C.WORK_TIME),0) AS WORK_TIME_TOTAL
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') ) *25000 AS COM_LABOR_COST
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2')
<if test="sheet_writer !=null and sheet_writer != '' ">
AND T.REG_USER_ID LIKE '%${sheet_writer}%'
</if>
) AS WORK_TIME_OWN
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID IN ('OUT1','OUT2') ) AS WORK_TIME_OUTSOURCING
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') AND T.DEPT_ID IN('MD','EC')
<if test="sheet_writer !=null and sheet_writer != '' ">
AND T.REG_USER_ID LIKE '%${sheet_writer}%'
</if>
) AS DD_WORK_TIME
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') AND T.DEPT_ID IN('FT')
<if test="sheet_writer !=null and sheet_writer != '' ">
AND T.REG_USER_ID LIKE '%${sheet_writer}%'
</if>
) AS PT_WORK_TIME
,(SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') AND T.DEPT_ID IN('MF','MM')
<if test="sheet_writer !=null and sheet_writer != '' ">
AND T.REG_USER_ID LIKE '%${sheet_writer}%'
</if>
) AS PM_WORK_TIME
,(
SELECT NVL(SUM(LABORCOSTS),0) FROM(
SELECT
R.ORDINARY_HOURLY_WAGE
,T.WORK_TIME
,(
TO_NUMBER(REPLACE(R.ORDINARY_HOURLY_WAGE,',','')) * TO_NUMBER(T.WORK_TIME)
) AS LABORCOSTS
,T.PROJECT_MGMT_OBJID
FROM
TIME_SHEET T, RATECAL_MGMT R
WHERE T.REG_USER_ID = R.USER_ID
AND R.YYYY = TO_CHAR(SYSDATE,'YYYY')
) WHERE PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
) AS LABORCOSTS
,(
SELECT NVL(SUM(LABORCOSTS),0) FROM(
SELECT
R.ORDINARY_HOURLY_WAGE
,T.WORK_TIME
,(
TO_NUMBER(REPLACE(R.ORDINARY_HOURLY_WAGE,',','')) * TO_NUMBER(T.WORK_TIME)
) AS LABORCOSTS
,T.PROJECT_MGMT_OBJID
FROM
TIME_SHEET T, RATECAL_MGMT R
WHERE T.REG_USER_ID = R.USER_ID
AND R.YYYY = TO_CHAR(SYSDATE,'YYYY')
AND USER_ID IN ('OUT1','OUT2')
) WHERE PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
) AS LABORCOSTS_OUT
,NVL(T4.PER_IN_COUNT,0) AS PER_IN_COUNT
,NVL(T4.PER_IN_OVER_COUNT,0) AS PER_IN_OVER_COUNT
,NVL((T4.PER_IN_COUNT*160000)+(T4.PER_IN_OVER_COUNT*200000),0) AS IN_LABOR_COST
,NVL(T4.PER_OUT_COUNT,0) AS PER_OUT_COUNT
,NVL(T4.PER_OVER_COUNT,0) AS PER_OVER_COUNT
,NVL((T4.PER_OUT_COUNT*160000)+(T4.PER_OVER_COUNT*200000),0) AS OUT_LABOR_COST
,NVL((T4.PER_IN_COUNT*160000)+(T4.PER_IN_OVER_COUNT*200000),0) + NVL((T4.PER_OUT_COUNT*160000)+(T4.PER_OVER_COUNT*200000),0)+ NVL((SELECT NVL(SUM(T.WORK_TIME),0) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID NOT IN ('OUT1','OUT2') ) *25000,0) AS TOTAL_LABOR_COST
FROM
PROJECT_MGMT A,
ORDER_MGMT B,
(SELECT * FROM TIME_SHEET
<if test="sheet_writer !=null and sheet_writer != '' ">
WHERE REG_USER_ID LIKE '%${sheet_writer}%'
</if>
) C,
PROJECT_MGMT T1,
(SELECT
TO_CHAR(NVL(SUM(H.PER_IN_COUNT),0)) AS PER_IN_COUNT
,TO_CHAR(NVL(SUM(H.PER_IN_OVER_COUNT),0)) AS PER_IN_OVER_COUNT
,TO_CHAR(NVL(SUM(H.PER_OUT_COUNT),0))+TO_CHAR(NVL(SUM(H.PER_OUT_COUNT1),0))+TO_CHAR(NVL(SUM(H.PER_OUT_COUNT2),0))+TO_CHAR(NVL(SUM(H.PER_OUT_COUNT3),0))+TO_CHAR(NVL(SUM(H.PER_OUT_COUNT4),0))+TO_CHAR(NVL(SUM(H.PER_OUT_COUNT5),0)) AS PER_OUT_COUNT
,TO_CHAR(NVL(SUM(H.PER_OVER_COUNT),0)) + TO_CHAR(NVL(SUM(H.PER_OVER_COUNT1),0)) + TO_CHAR(NVL(SUM(H.PER_OVER_COUNT2),0))+TO_CHAR(NVL(SUM(H.PER_OVER_COUNT3),0)) + TO_CHAR(NVL(SUM(H.PER_OVER_COUNT4),0)) + TO_CHAR(NVL(SUM(H.PER_OVER_COUNT5),0)) AS PER_OVER_COUNT
,F.PROJECT_MGMT_OBJID
FROM HUMAN_INPUT_PLAN H, FACILITY_ASSEMBLY_PLAN F
WHERE H.ASSEMBLY_PLAN_OBJID = F.ASSEMBLY_PLAN_OBJID
GROUP BY F.PROJECT_MGMT_OBJID) T4
WHERE A.ORDER_MGMT_OBJID = B.ORDER_MGMT_OBJID
AND A.ORDER_MGMT_OBJID = C.PROJECT_MGMT_OBJID(+)
AND A.PROJECT_MGMT_OBJID = T4.PROJECT_MGMT_OBJID(+)
<if test="division_cd != null and division_cd != ''">
AND B.PROJECT_DIVISION = #{division_cd}
</if>
<if test="Year !=null and Year != '' ">
<!-- AND TO_CHAR(TO_DATE(B.DEL_DATE,'YYYY-MM-DD'),'YYYY') = #{Year} -->
AND TO_CHAR(TO_DATE(SUBSTR(PROJECT_NO,0,2),'YY'),'YYYY') = #{Year}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND B.PROJECT_NO=#{projectNo}
</if>
<if test="sheet_writer !=null and sheet_writer != '' ">
AND C.REG_USER_ID LIKE '%${sheet_writer}%'
</if>
GROUP BY
B.PROJECT_NO,
B.REGION_CD,
NVL(B.EX_LABOR_COST_W,0),
B.CUSTOMER_CD,
A.ORDER_CD,
A.PROJECT_TITLE,
B.ORDER_TITLE,
B.DEL_DATE
,B.REG_DATE
,B.ORDER_PRICE
,B.ORDER_MGMT_OBJID
,B.PROJECT_DIVISION
,B.PROJECT_DERIVATION_NO
,PROJECT_MEAN
,PER_IN_COUNT
,PER_IN_OVER_COUNT
,PER_OUT_COUNT
,PER_OVER_COUNT
) A
)A
WHERE 1=1
)WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</select>
<select id="laborCostMgmtListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT FROM(
SELECT
B.PROJECT_NO,
B.REGION_CD,
CODE_NAME(B.REGION_CD) AS REGION_NAME,
B.CUSTOMER_CD,
CODE_NAME(B.CUSTOMER_CD) AS CUSTOMER_NAME,
A.ORDER_CD,
CODE_NAME(A.ORDER_CD) AS ORDER_NAME,
A.PROJECT_TITLE,
B.ORDER_TITLE,
TO_CHAR(TO_DATE(B.DEL_DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS DEL_DATE /*납기일*/
,B.REG_DATE
,B.ORDER_MGMT_OBJID
,CODE_NAME(B.PROJECT_DIVISION) AS PROJECT_DIVISION_NAME
,B.PROJECT_DERIVATION_NO
,(SELECT PROJECT_NO FROM ORDER_MGMT A WHERE A.ORDER_MGMT_OBJID = B.PROJECT_DERIVATION_NO) AS PROJECT_DERIVATION_NO_NAME
,CODE_NAME(B.PROJECT_MEAN) AS PROJECT_MEAN_NAME
,SUM(C.WORK_TIME) AS WORK_TIME_TOTAL
,ROUND(NVL(SUM(C.WORK_TIME),0)*25000,1) AS COM_LABOR_COST
,(SELECT SUM(T.WORK_TIME) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID IS NOT NULL ) AS WORK_TIME_OWN
,(SELECT SUM(T.WORK_TIME) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID IS NULL ) AS WORK_TIME_OUTSOURCING
,(SELECT SUM(T.WORK_TIME) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID IS NOT NULL AND T.DEPT_ID = 'DD' ) AS DD_WORK_TIME
,(SELECT SUM(T.WORK_TIME) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID IS NOT NULL AND T.DEPT_ID = 'PT' ) AS PT_WORK_TIME
,(SELECT SUM(T.WORK_TIME) FROM TIME_SHEET T WHERE T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID AND T.REG_USER_ID IS NOT NULL AND T.DEPT_ID = 'PM' ) AS PM_WORK_TIME
<if test="sheet_writer !=null and sheet_writer != '' ">
,(SELECT USER_NAME FROM USER_INFO U WHERE U.USER_ID = C.REG_USER_ID) AS USER_NAME
,(SELECT DEPT_NAME FROM USER_INFO U WHERE U.USER_ID = C.REG_USER_ID) AS DEPT_NAME
,C.REG_USER_ID
,C.DEPT_ID
</if>
FROM
PROJECT_MGMT A,
ORDER_MGMT B,
TIME_SHEET C
WHERE A.ORDER_MGMT_OBJID = B.ORDER_MGMT_OBJID
AND A.ORDER_MGMT_OBJID = C.PROJECT_MGMT_OBJID(+)
<if test="division_cd != null and division_cd != ''">
AND B.PROJECT_DIVISION = #{division_cd}
</if>
<if test="Year !=null and Year != '' ">
<!-- AND TO_CHAR(TO_DATE(B.DEL_DATE,'YYYY-MM-DD'),'YYYY') = #{Year} -->
AND TO_CHAR(TO_DATE(SUBSTR(PROJECT_NO,0,2),'YY'),'YYYY') = #{Year}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND B.PROJECT_NO LIKE '%${projectNo}%'
</if>
<if test="sheet_writer !=null and sheet_writer != '' ">
AND C.REG_USER_ID LIKE '%${sheet_writer}%'
</if>
GROUP BY
B.PROJECT_NO,
B.REGION_CD,
B.CUSTOMER_CD,
A.ORDER_CD,
A.PROJECT_TITLE,
B.ORDER_TITLE,
B.DEL_DATE
,B.REG_DATE
,B.ORDER_MGMT_OBJID
,B.PROJECT_DIVISION
,B.PROJECT_DERIVATION_NO
,PROJECT_MEAN
<if test="sheet_writer !=null and sheet_writer != '' ">
,C.REG_USER_ID
,C.DEPT_ID
,C.REG_USER_ID
</if>
) T
)WHERE 1=1
</select>
<select id="overheadCostMgmtList" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT A.*,ROW_NUMBER() OVER (ORDER BY PROJECT_NO DESC NULLS LAST) AS RNUM
FROM(
SELECT A.*
FROM(
SELECT
A.PROJECT_MGMT_OBJID,
B.PROJECT_NO,
B.REGION_CD,
CODE_NAME(B.REGION_CD) AS REGION_NAME,
B.CUSTOMER_CD,
CODE_NAME(B.CUSTOMER_CD) AS CUSTOMER_NAME,
A.ORDER_CD,
CODE_NAME(A.ORDER_CD) AS ORDER_NAME,
A.PROJECT_TITLE,
B.ORDER_TITLE,
TO_CHAR(TO_DATE(B.DEL_DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS DEL_DATE /*납기일*/,
O.ORDER_PRICE AS GOAL,
SUM(DECODE(C.DEPT_CODE, 'DD', C.OV_COST, 0)) AS COST1, /*설계팀*/
SUM(DECODE(C.DEPT_CODE, 'EP', C.OV_COST, 0)) AS COST2, /*전장팀*/
SUM(DECODE(C.DEPT_CODE, 'SE', C.OV_COST, 0)) AS COST3, /*SE팀*/
SUM(DECODE(C.DEPT_CODE, 'PD', C.OV_COST, 0)) AS COST4, /*구매팀*/
SUM(DECODE(C.DEPT_CODE, 'ED', C.OV_COST, 0)) AS COST5, /*생산팀*/
SUM(CASE WHEN C.DEPT_CODE IN ('DD','EP','SE','PD','ED') THEN C.OV_COST ELSE 0 END) AS COST_A,
SUM(CASE WHEN C.DEPT_CODE IN ('DD','EP','SE','PD','ED') THEN C.OV_COST ELSE 0 END) / O.ORDER_PRICE as GOAL_P,
O.PROJECT_DIVISION,
O.PROJECT_DERIVATION_NO,
O.PROJECT_MEAN,
CODE_NAME(O.PROJECT_DIVISION) AS PROJECT_DIVISION_NAME,
(SELECT PROJECT_NO FROM ORDER_MGMT A WHERE A.ORDER_MGMT_OBJID = O.PROJECT_DERIVATION_NO) AS PROJECT_DERIVATION_NO_NAME,
CODE_NAME(O.PROJECT_MEAN) AS PROJECT_MEAN_NAME,
O.ORDER_MGMT_OBJID
FROM
ORDER_MGMT O,
PROJECT_MGMT A,
FACILITY_ASSEMBLY_PLAN B,
(
SELECT
PROJECT_MGMT_OBJID,
U.DEPT_CODE,
U.DEPT_NAME,
SUM(ED.CARD_USED) + SUM(ED.CASH_USED) - SUM(ED.PAYMENT) AS OV_COST
FROM
EXPENSE_MASTER EM,
EXPENSE_DETAIL ED,
USER_INFO U
WHERE
1 = 1
AND EM.EXPENSE_MASTER_OBJID = ED.EXPENSE_MASTER_OBJID
AND EM.BUS_USERS_ID = U.USER_ID /*출장자*/
GROUP BY
EM.PROJECT_MGMT_OBJID,
U.DEPT_CODE,
U.DEPT_NAME
) C
WHERE 1=1
AND O.ORDER_MGMT_OBJID = A.ORDER_MGMT_OBJID(+)
AND A.PROJECT_MGMT_OBJID = B.PROJECT_MGMT_OBJID(+)
AND A.PROJECT_MGMT_OBJID = C.PROJECT_MGMT_OBJID(+)
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(B.DEL_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
GROUP BY
A.PROJECT_MGMT_OBJID,
O.ORDER_PRICE,
B.PROJECT_NO,
B.REGION_CD,
B.CUSTOMER_CD,
A.ORDER_CD,
A.PROJECT_TITLE,
B.ORDER_TITLE,
B.DEL_DATE,
O.PROJECT_DIVISION,
O.PROJECT_DERIVATION_NO,
O.PROJECT_MEAN,
O.ORDER_MGMT_OBJID
) A
)A
WHERE 1=1
)WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
ORDER BY PROJECT_NO DESC
</select>
<select id="overheadCostMgmtListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT FROM(
SELECT
A.PROJECT_MGMT_OBJID,
B.PROJECT_NO,
B.REGION_CD,
CODE_NAME(B.REGION_CD) AS REGION_NAME,
B.CUSTOMER_CD,
CODE_NAME(B.CUSTOMER_CD) AS CUSTOMER_NAME,
A.ORDER_CD,
CODE_NAME(A.ORDER_CD) AS ORDER_NAME,
A.PROJECT_TITLE,
B.ORDER_TITLE,
TO_CHAR(TO_DATE(B.DEL_DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS DEL_DATE /*납기일*/,
O.ORDER_PRICE AS GOAL,
SUM(DECODE(C.DEPT_CODE, 'DD', C.OV_COST, 0)) AS COST1, /*설계팀*/
SUM(DECODE(C.DEPT_CODE, 'EP', C.OV_COST, 0)) AS COST2, /*전장팀*/
SUM(DECODE(C.DEPT_CODE, 'SE', C.OV_COST, 0)) AS COST3, /*SE팀*/
SUM(DECODE(C.DEPT_CODE, 'PD', C.OV_COST, 0)) AS COST4, /*구매팀*/
SUM(DECODE(C.DEPT_CODE, 'ED', C.OV_COST, 0)) AS COST5, /*생산팀*/
SUM(CASE WHEN C.DEPT_CODE IN ('DD','EP','SE','PD','ED') THEN C.OV_COST ELSE 0 END) AS COST_A,
SUM(CASE WHEN C.DEPT_CODE IN ('DD','EP','SE','PD','ED') THEN C.OV_COST ELSE 0 END) / O.ORDER_PRICE as GOAL_P
FROM
ORDER_MGMT O,
PROJECT_MGMT A,
FACILITY_ASSEMBLY_PLAN B,
(
SELECT
PROJECT_MGMT_OBJID,
U.DEPT_CODE,
U.DEPT_NAME,
SUM(ED.CARD_USED) + SUM(ED.CASH_USED) - SUM(ED.PAYMENT) AS OV_COST
FROM
EXPENSE_MASTER EM,
EXPENSE_DETAIL ED,
USER_INFO U
WHERE
1 = 1
AND EM.EXPENSE_MASTER_OBJID = ED.EXPENSE_MASTER_OBJID
AND EM.BUS_USERS_ID = U.USER_ID /*출장자*/
GROUP BY
EM.PROJECT_MGMT_OBJID,
U.DEPT_CODE,
U.DEPT_NAME
) C
WHERE 1=1
AND O.ORDER_MGMT_OBJID = A.ORDER_MGMT_OBJID(+)
AND A.PROJECT_MGMT_OBJID = B.PROJECT_MGMT_OBJID(+)
AND A.PROJECT_MGMT_OBJID = C.PROJECT_MGMT_OBJID(+)
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(B.DEL_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
GROUP BY
A.PROJECT_MGMT_OBJID,
O.ORDER_PRICE,
B.PROJECT_NO,
B.REGION_CD,
B.CUSTOMER_CD,
A.ORDER_CD,
A.PROJECT_TITLE,
B.ORDER_TITLE,
B.DEL_DATE
) T
)WHERE 1=1
</select>
<select id="expenseList" parameterType="map" resultType="map">
select
*
from
(
select
A.*<!-- ,
ROW_NUMBER() OVER(order by EXPENSE_ID desc nulls last) as RNUM -->
from
(
select
A.*
from
(
select
M.EXPENSE_MASTER_OBJID,
M.EXPENSE_ID /*신청번호*/,
M.SEQ /*순번*/,
D.EXP_SORT_CD /*구분*/,
CODE_NAME(D.EXP_SORT_CD) as EXP_SORT_NAME,
COALESCE((SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE M.PROJECT_MGMT_OBJID::numeric = PM.OBJID::numeric), '공통') as PROJECT_NO,
<!-- COALESCE(P.PROJECT_NO, '공통') as PROJECT_NO, -->
M.EXP_STATUS_CD /*단계*/,
CODE_NAME(M.EXP_STATUS_CD) as EXP_STATUS_NAME,
M.BUS_CONTENT /*출장목적*/,
CODE_NAME(M.BUS_CONTENT) as BUS_CONTENT_NAME /*출장목적*/,
M.EXP_COMPANY_CD /*업체*/,
(SELECT SUPPLY_NAME FROM SUPPLY_MNG SM WHERE SM.OBJID = M.EXP_COMPANY_CD::numeric) as EXP_COMPANY_NAME,
<!-- CODE_NAME(M.EXP_COMPANY_CD) as EXP_COMPANY_NAME, -->
M.EXP_AREA_CD /*지역*/,
CODE_NAME(M.EXP_AREA_CD) as EXP_AREA_NAME,
M.BNS_START_DATE /*출장시작일*/,
M.BNS_END_DATE /*출장종료일*/,
sum(D.CARD_USED::numeric) + sum(D.CASH_USED::numeric) - sum(D.PAYMENT::numeric) as SETTLE_AMOUNT /*정산금액*/,
M.BUS_USERS_ID /*출장자*/,
(
select
DEPT_NAME
from
USER_INFO
where
USER_ID = M.REG_USER_ID
) as BUS_USERS_DEPT_NAME /*팀명*/,
M.REG_USER_ID /*작성자*/,
(
select
USER_NAME
from
USER_INFO
where
USER_ID = M.REG_USER_ID
) as REG_USER_NAME,
M.REG_DATE /*작성*/,
A.APPR_STATUS,
A.ROUTE_OBJID,
A.APPROVAL_OBJID
from
EXPENSE_MASTER M
LEFT JOIN EXPENSE_DETAIL D
ON M.EXPENSE_MASTER_OBJID = D.EXPENSE_MASTER_OBJID
LEFT JOIN FACILITY_ASSEMBLY_PLAN P
ON M.PROJECT_MGMT_OBJID::numeric = P.PROJECT_MGMT_OBJID
LEFT JOIN USER_INFO U
ON M.REG_USER_ID = U.USER_ID
LEFT JOIN (
select
A.*
from
(
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 = 'EXPENSE_APPLY'
) A
) A
ON M.EXPENSE_MASTER_OBJID::numeric = A.TARGET_OBJID
WHERE 1=1
<if test="Year_ex !=null and Year_ex != '' ">
AND TO_CHAR(TO_DATE(M.REG_DATE,'YYYY-MM-DD'),'YYYY') = #{Year_ex}
</if>
<if test="expStatusCd !=null and expStatusCd != '' ">
AND M.EXP_STATUS_CD = #{expStatusCd}
</if>
<if test="expCompanyCd !=null and expCompanyCd != '' ">
AND M.EXP_COMPANY_CD = #{expCompanyCd}
</if>
<if test="expAreaCd !=null and expAreaCd != '' ">
AND M.EXP_AREA_CD = #{expAreaCd}
</if>
<if test="vehicelUsed !=null and vehicelUsed != '' ">
AND M.VEHICEL_USED = #{vehicelUsed}
</if>
<if test="busContent !=null and busContent != '' ">
AND M.BUS_CONTENT = #{busContent}
</if>
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND U.DEPT_CODE = #{busUsersDeptId}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND (SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE M.PROJECT_MGMT_OBJID::numeric = PM.OBJID::numeric) = #{projectNo}
</if>
<if test="regUserId !=null and regUserId != '' ">
AND M.REG_USER_ID = #{regUserId}
</if>
<if test="expSortCd !=null and expSortCd != '' ">
AND M.EXP_SORT_CD = #{expSortCd}
</if>
<choose>
<when test="DeptId != null and 'A'.equals(DeptId)">
AND DEPT_ID IN ('MM','NT')
</when>
<when test="DeptId != null and 'B'.equals(DeptId)">
AND DEPT_ID IN ('MD')
</when>
<when test="DeptId != null and 'C'.equals(DeptId)">
AND DEPT_ID IN ('MF','FT')
</when>
<when test="DeptId != null and 'D'.equals(DeptId)">
AND DEPT_ID IN ('EC')
</when>
<otherwise>
</otherwise>
</choose>
group by
M.EXPENSE_MASTER_OBJID,
M.EXPENSE_ID /*신청번호*/,
M.SEQ /*순번*/,
D.EXP_SORT_CD /*구분*/,
COALESCE(P.PROJECT_NO, '공통'),
M.EXP_STATUS_CD /*단계*/,
M.BUS_CONTENT /*출장목적*/,
M.EXP_COMPANY_CD /*업체*/,
M.EXP_AREA_CD /*지역*/,
M.BNS_START_DATE /*출장시작일*/,
M.BNS_END_DATE /*출장종료일*/,
M.BUS_USERS_ID /*출장자*/,
M.REG_USER_ID /*작성자*/,
M.REG_DATE /*작성*/,
A.APPR_STATUS,
A.ROUTE_OBJID,
A.APPROVAL_OBJID
) A
) A
where
1 = 1
) A
where
1 = 1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND RNUM <= #{PAGE_END}::numeric ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND RNUM >= #{PAGE_START}::numeric ]]>
</if>
</select>
<select id="expenseGridList" parameterType="map" resultType="map">
SELECT
A.*
FROM
(
SELECT
M.EXPENSE_MASTER_OBJID,
M.EXPENSE_ID /*신청번호*/,
M.SEQ /*순번*/,
D.EXP_SORT_CD /*구분*/,
CODE_NAME(D.EXP_SORT_CD) as EXP_SORT_NAME,
M.PROJECT_MGMT_OBJID,
COALESCE((SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE M.PROJECT_MGMT_OBJID::numeric = PM.OBJID::numeric), '공통') as PROJECT_NO,
<!--COALESCE(P.PROJECT_NO, '공통') as PROJECT_NO, -->
M.EXP_STATUS_CD /*단계*/,
CODE_NAME(M.EXP_STATUS_CD) as EXP_STATUS_NAME,
M.BUS_CONTENT /*출장목적*/,
CODE_NAME(M.BUS_CONTENT) as BUS_CONTENT_NAME /*출장목적*/,
M.EXP_COMPANY_CD /*업체*/,
(SELECT SUPPLY_NAME FROM SUPPLY_MNG SM WHERE SM.OBJID = M.EXP_COMPANY_CD::numeric) as EXP_COMPANY_NAME,
<!-- CODE_NAME(M.EXP_COMPANY_CD) as EXP_COMPANY_NAME, -->
M.EXP_AREA_CD /*지역*/,
CODE_NAME(M.EXP_AREA_CD) as EXP_AREA_NAME,
M.BNS_START_DATE /*출장시작일*/,
M.BNS_END_DATE /*출장종료일*/,
sum(D.CARD_USED::numeric) + sum(D.CASH_USED::numeric) - sum(D.PAYMENT::numeric) as SETTLE_AMOUNT /*정산금액*/,
M.BUS_USERS_ID /*출장자*/,
(select DEPT_NAME from USER_INFO where USER_ID = M.REG_USER_ID) as BUS_USERS_DEPT_NAME /*팀명*/,
M.REG_USER_ID /*작성자*/,
(select USER_NAME from USER_INFO where USER_ID = M.REG_USER_ID) as REG_USER_NAME,
M.REG_DATE /*작성*/,
M.STATUS AS MASTER_STATUS,
CASE WHEN M.STATUS is null THEN A.APPR_STATUS
WHEN M.STATUS = 'complete' THEN '지급완료'
ELSE '작성중'
END STATUS,
A.APPR_STATUS,
A.ROUTE_OBJID,
A.APPROVAL_OBJID,
M.PAYMENT_DATE,
M.AMOUNT_PAYMENT,
M.REMARK
from
EXPENSE_MASTER M
LEFT JOIN EXPENSE_DETAIL D
ON M.EXPENSE_MASTER_OBJID = D.EXPENSE_MASTER_OBJID
LEFT JOIN FACILITY_ASSEMBLY_PLAN P
ON M.PROJECT_MGMT_OBJID::numeric = P.PROJECT_MGMT_OBJID
LEFT JOIN USER_INFO U
ON M.REG_USER_ID = U.USER_ID
LEFT JOIN (
select
A.*
from
(
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 = 'EXPENSE_APPLY'
) A
) A
ON M.EXPENSE_MASTER_OBJID::numeric = A.TARGET_OBJID
WHERE 1=1
<if test="Year_ex !=null and Year_ex != '' ">
AND TO_CHAR(TO_DATE(M.REG_DATE,'YYYY-MM-DD'),'YYYY') = #{Year_ex}
</if>
<if test="expStatusCd !=null and expStatusCd != '' ">
AND M.EXP_STATUS_CD = #{expStatusCd}
</if>
<if test="expCompanyCd !=null and expCompanyCd != '' ">
AND M.EXP_COMPANY_CD = #{expCompanyCd}
</if>
<if test="expAreaCd !=null and expAreaCd != '' ">
AND M.EXP_AREA_CD = #{expAreaCd}
</if>
<if test="vehicelUsed !=null and vehicelUsed != '' ">
AND M.VEHICEL_USED = #{vehicelUsed}
</if>
<if test="busContent !=null and busContent != '' ">
AND M.BUS_CONTENT = #{busContent}
</if>
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND U.DEPT_CODE = #{busUsersDeptId}
</if>
<!-- <if test="projectNo !=null and projectNo != '' ">
AND (SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE M.PROJECT_MGMT_OBJID::numeric = PM.OBJID::numeric) = #{projectNo}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND (SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE M.PROJECT_MGMT_OBJID::numeric = PM.OBJID::numeric) IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="regUserId !=null and regUserId != '' ">
AND M.REG_USER_ID = #{regUserId}
</if>
<if test="expSortCd !=null and expSortCd != '' ">
AND M.EXP_SORT_CD = #{expSortCd}
</if>
<if test="contractObjid !=null and contractObjid != '' ">
AND M.PROJECT_MGMT_OBJID = #{contractObjid}
</if>
<choose>
<when test="DeptId != null and 'A'.equals(DeptId)">
AND DEPT_ID IN ('MM','NT')
</when>
<when test="DeptId != null and 'B'.equals(DeptId)">
AND DEPT_ID IN ('MD')
</when>
<when test="DeptId != null and 'C'.equals(DeptId)">
AND DEPT_ID IN ('MF','FT')
</when>
<when test="DeptId != null and 'D'.equals(DeptId)">
AND DEPT_ID IN ('EC')
</when>
<otherwise>
</otherwise>
</choose>
group by
M.EXPENSE_MASTER_OBJID,
M.EXPENSE_ID /*신청번호*/,
M.SEQ /*순번*/,
D.EXP_SORT_CD /*구분*/,
COALESCE(P.PROJECT_NO, '공통'),
M.EXP_STATUS_CD /*단계*/,
M.BUS_CONTENT /*출장목적*/,
M.EXP_COMPANY_CD /*업체*/,
M.EXP_AREA_CD /*지역*/,
M.BNS_START_DATE /*출장시작일*/,
M.BNS_END_DATE /*출장종료일*/,
M.BUS_USERS_ID /*출장자*/,
M.REG_USER_ID /*작성자*/,
M.REG_DATE /*작성*/,
A.APPR_STATUS,
A.ROUTE_OBJID,
A.APPROVAL_OBJID
) A
</select>
<!-- <select id="expenseList" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT A.*,ROW_NUMBER() OVER (ORDER BY EXPENSE_ID DESC NULLS LAST) AS RNUM
FROM(
SELECT A.*
FROM(
SELECT
M.EXPENSE_MASTER_OBJID,
M.EXPENSE_ID /*신청번호*/,
M.SEQ /*순번*/,
D.EXP_SORT_CD /*구분*/,
CODE_NAME(D.EXP_SORT_CD) AS EXP_SORT_NAME,
NVL(P.PROJECT_NO,'공통') AS PROJECT_NO,
M.EXP_STATUS_CD /*단계*/,
CODE_NAME(M.EXP_STATUS_CD) AS EXP_STATUS_NAME,
M.BUS_CONTENT /*출장목적*/,
CODE_NAME(M.BUS_CONTENT) AS BUS_CONTENT_NAME /*출장목적*/,
M.EXP_COMPANY_CD /*업체*/,
CODE_NAME(M.EXP_COMPANY_CD) AS EXP_COMPANY_NAME,
M.EXP_AREA_CD /*지역*/,
CODE_NAME(M.EXP_AREA_CD) AS EXP_AREA_NAME,
M.BNS_START_DATE /*출장시작일*/,
M.BNS_END_DATE /*출장종료일*/,
SUM(D.CARD_USED) + SUM(D.CASH_USED) - SUM(D.PAYMENT) AS SETTLE_AMOUNT/*정산금액*/,
M.BUS_USERS_ID /*출장자*/,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = M.REG_USER_ID) AS BUS_USERS_DEPT_NAME /*팀명*/,
M.REG_USER_ID /*작성자*/,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = M.REG_USER_ID) AS REG_USER_NAME,
M.REG_DATE /*작성*/,
A.APPR_STATUS
,A.ROUTE_OBJID
,A.APPROVAL_OBJID
FROM
EXPENSE_MASTER M,
EXPENSE_DETAIL D,
FACILITY_ASSEMBLY_PLAN P,
USER_INFO U,(
SELECT * FROM(
SELECT B.OBJID AS ROUTE_OBJID
,DECODE(B.STATUS , 'inProcess', '결재중', 'complete', '결재완료', 'reject', '반려') AS 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 = 'EXPENSE_APPLY')
) A
WHERE 1 = 1
AND M.EXPENSE_MASTER_OBJID = D.EXPENSE_MASTER_OBJID(+)
AND M.PROJECT_MGMT_OBJID = P.PROJECT_MGMT_OBJID(+)
AND M.REG_USER_ID = U.USER_ID(+) /*출장자*/
AND A.TARGET_OBJID(+) = M.EXPENSE_MASTER_OBJID
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(M.REG_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
<if test="expStatusCd !=null and expStatusCd != '' ">
AND M.EXP_STATUS_CD = #{expStatusCd}
</if>
<if test="expCompanyCd !=null and expCompanyCd != '' ">
AND M.EXP_COMPANY_CD = #{expCompanyCd}
</if>
<if test="expAreaCd !=null and expAreaCd != '' ">
AND M.EXP_AREA_CD = #{expAreaCd}
</if>
<if test="vehicelUsed !=null and vehicelUsed != '' ">
AND M.VEHICEL_USED = #{vehicelUsed}
</if>
<if test="busContent !=null and busContent != '' ">
AND M.BUS_CONTENT = #{busContent}
</if>
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND U.DEPT_CODE = #{busUsersDeptId}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND P.PROJECT_NO = #{projectNo}
</if>
<if test="regUserId !=null and regUserId != '' ">
AND M.REG_USER_ID = #{regUserId}
</if>
<if test="expSortCd !=null and expSortCd != '' ">
AND M.EXP_SORT_CD = #{expSortCd}
</if>
<choose>
<when test="DeptId != null and 'A'.equals(DeptId)">
AND DEPT_ID IN ('MM','NT')
</when>
<when test="DeptId != null and 'B'.equals(DeptId)">
AND DEPT_ID IN ('MD')
</when>
<when test="DeptId != null and 'C'.equals(DeptId)">
AND DEPT_ID IN ('MF','FT')
</when>
<when test="DeptId != null and 'D'.equals(DeptId)">
AND DEPT_ID IN ('EC')
</when>
<otherwise>
</otherwise>
</choose>
GROUP BY
M.EXPENSE_MASTER_OBJID,
M.EXPENSE_ID /*신청번호*/,
M.SEQ /*순번*/,
D.EXP_SORT_CD /*구분*/,
NVL(P.PROJECT_NO,'공통'),
M.EXP_STATUS_CD /*단계*/,
M.BUS_CONTENT /*출장목적*/,
M.EXP_COMPANY_CD /*업체*/,
M.EXP_AREA_CD /*지역*/,
M.BNS_START_DATE /*출장시작일*/,
M.BNS_END_DATE /*출장종료일*/,
M.BUS_USERS_ID /*출장자*/,
M.REG_USER_ID /*작성자*/,
M.REG_DATE /*작성*/
,A.APPR_STATUS
,A.ROUTE_OBJID
,A.APPROVAL_OBJID
) A
)A
WHERE 1=1
)WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</select> -->
<select id="expenseListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT::numeric/#{COUNT_PER_PAGE})::numeric as MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT FROM(
SELECT
M.EXPENSE_MASTER_OBJID,
M.EXPENSE_ID /*신청번호*/,
M.SEQ /*순번*/,
D.EXP_SORT_CD /*구분*/,
CODE_NAME(D.EXP_SORT_CD) AS EXP_SORT_NAME,
P.PROJECT_NO,
M.EXP_STATUS_CD /*단계*/,
CODE_NAME(M.EXP_STATUS_CD) AS EXP_STATUS_NAME,
M.BUS_CONTENT /*출장목적*/,
M.EXP_COMPANY_CD /*업체*/,
CODE_NAME(M.EXP_COMPANY_CD) AS EXP_COMPANY_NAME,
M.EXP_AREA_CD /*지역*/,
CODE_NAME(M.EXP_AREA_CD) AS EXP_AREA_NAME,
M.BNS_START_DATE /*출장시작일*/,
M.BNS_END_DATE /*출장종료일*/,
SUM(D.CARD_USED::numeric) + SUM(D.CASH_USED::numeric) - SUM(D.PAYMENT::numeric) AS SETTLE_AMOUNT/*정산금액*/,
M.BUS_USERS_ID /*출장자*/,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = M.BUS_USERS_ID) AS BUS_USERS_DEPT_NAME /*팀명*/,
M.REG_USER_ID /*작성자*/,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = M.REG_USER_ID) AS REG_USER_NAME,
M.REG_DATE /*작성*/,
'결재상태' AS APPR_STATUS
FROM
EXPENSE_MASTER M
left join EXPENSE_DETAIL D
on M.EXPENSE_MASTER_OBJID = D.EXPENSE_MASTER_OBJID
left join FACILITY_ASSEMBLY_PLAN P
on M.PROJECT_MGMT_OBJID::numeric = P.PROJECT_MGMT_OBJID
left join USER_INFO U
on M.REG_USER_ID = U.USER_ID
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(M.REG_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
<if test="expStatusCd !=null and expStatusCd != '' ">
AND M.EXP_STATUS_CD = #{expStatusCd}
</if>
<if test="expCompanyCd !=null and expCompanyCd != '' ">
AND M.EXP_COMPANY_CD = #{expCompanyCd}
</if>
<if test="expAreaCd !=null and expAreaCd != '' ">
AND M.EXP_AREA_CD = #{expAreaCd}
</if>
<if test="vehicelUsed !=null and vehicelUsed != '' ">
AND M.VEHICEL_USED = #{vehicelUsed}
</if>
<if test="busContent !=null and busContent != '' ">
AND M.BUS_CONTENT = #{busContent}
</if>
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND U.DEPT_CODE = #{busUsersDeptId}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND P.PROJECT_NO = #{projectNo}
</if>
<if test="regUserId !=null and regUserId != '' ">
AND M.REG_USER_ID = #{regUserId}
</if>
<if test="expSortCd !=null and expSortCd != '' ">
AND M.EXP_SORT_CD = #{expSortCd}
</if>
<choose>
<when test="DeptId != null and 'A'.equals(DeptId)">
AND DEPT_ID IN ('MM','NT')
</when>
<when test="DeptId != null and 'B'.equals(DeptId)">
AND DEPT_ID IN ('MD')
</when>
<when test="DeptId != null and 'C'.equals(DeptId)">
AND DEPT_ID IN ('MF','FT')
</when>
<when test="DeptId != null and 'D'.equals(DeptId)">
AND DEPT_ID IN ('EC')
</when>
<otherwise>
</otherwise>
</choose>
GROUP BY
M.EXPENSE_MASTER_OBJID,
M.EXPENSE_ID /*신청번호*/,
M.SEQ /*순번*/,
D.EXP_SORT_CD /*구분*/,
P.PROJECT_NO,
M.EXP_STATUS_CD /*단계*/,
M.BUS_CONTENT /*출장목적*/,
M.EXP_COMPANY_CD /*업체*/,
M.EXP_AREA_CD /*지역*/,
M.BNS_START_DATE /*출장시작일*/,
M.BNS_END_DATE /*출장종료일*/,
M.BUS_USERS_ID /*출장자*/,
M.REG_USER_ID /*작성자*/,
M.REG_DATE /*작성*/
) T
) A WHERE 1=1
</select>
<!-- <select id="expenseListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT FROM(
SELECT
M.EXPENSE_MASTER_OBJID,
M.EXPENSE_ID /*신청번호*/,
M.SEQ /*순번*/,
D.EXP_SORT_CD /*구분*/,
CODE_NAME(D.EXP_SORT_CD) AS EXP_SORT_NAME,
P.PROJECT_NO,
M.EXP_STATUS_CD /*단계*/,
CODE_NAME(M.EXP_STATUS_CD) AS EXP_STATUS_NAME,
M.BUS_CONTENT /*출장목적*/,
M.EXP_COMPANY_CD /*업체*/,
CODE_NAME(M.EXP_COMPANY_CD) AS EXP_COMPANY_NAME,
M.EXP_AREA_CD /*지역*/,
CODE_NAME(M.EXP_AREA_CD) AS EXP_AREA_NAME,
M.BNS_START_DATE /*출장시작일*/,
M.BNS_END_DATE /*출장종료일*/,
SUM(D.CARD_USED) + SUM(D.CASH_USED) - SUM(D.PAYMENT) AS SETTLE_AMOUNT/*정산금액*/,
M.BUS_USERS_ID /*출장자*/,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = M.BUS_USERS_ID) AS BUS_USERS_DEPT_NAME /*팀명*/,
M.REG_USER_ID /*작성자*/,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = M.REG_USER_ID) AS REG_USER_NAME,
M.REG_DATE /*작성*/,
'결재상태' AS APPR_STATUS
FROM
EXPENSE_MASTER M,
EXPENSE_DETAIL D,
FACILITY_ASSEMBLY_PLAN P,
USER_INFO U
WHERE 1 = 1
AND M.EXPENSE_MASTER_OBJID = D.EXPENSE_MASTER_OBJID(+)
AND M.PROJECT_MGMT_OBJID = P.PROJECT_MGMT_OBJID(+)
AND M.REG_USER_ID = U.USER_ID(+) /*출장자*/
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(M.REG_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
<if test="expStatusCd !=null and expStatusCd != '' ">
AND M.EXP_STATUS_CD = #{expStatusCd}
</if>
<if test="expCompanyCd !=null and expCompanyCd != '' ">
AND M.EXP_COMPANY_CD = #{expCompanyCd}
</if>
<if test="expAreaCd !=null and expAreaCd != '' ">
AND M.EXP_AREA_CD = #{expAreaCd}
</if>
<if test="vehicelUsed !=null and vehicelUsed != '' ">
AND M.VEHICEL_USED = #{vehicelUsed}
</if>
<if test="busContent !=null and busContent != '' ">
AND M.BUS_CONTENT = #{busContent}
</if>
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND U.DEPT_CODE = #{busUsersDeptId}
</if>
<if test="projectNo !=null and projectNo != '' ">
AND P.PROJECT_NO = #{projectNo}
</if>
<if test="regUserId !=null and regUserId != '' ">
AND M.REG_USER_ID = #{regUserId}
</if>
<if test="expSortCd !=null and expSortCd != '' ">
AND M.EXP_SORT_CD = #{expSortCd}
</if>
<choose>
<when test="DeptId != null and 'A'.equals(DeptId)">
AND DEPT_ID IN ('MM','NT')
</when>
<when test="DeptId != null and 'B'.equals(DeptId)">
AND DEPT_ID IN ('MD')
</when>
<when test="DeptId != null and 'C'.equals(DeptId)">
AND DEPT_ID IN ('MF','FT')
</when>
<when test="DeptId != null and 'D'.equals(DeptId)">
AND DEPT_ID IN ('EC')
</when>
<otherwise>
</otherwise>
</choose>
GROUP BY
M.EXPENSE_MASTER_OBJID,
M.EXPENSE_ID /*신청번호*/,
M.SEQ /*순번*/,
D.EXP_SORT_CD /*구분*/,
P.PROJECT_NO,
M.EXP_STATUS_CD /*단계*/,
M.BUS_CONTENT /*출장목적*/,
M.EXP_COMPANY_CD /*업체*/,
M.EXP_AREA_CD /*지역*/,
M.BNS_START_DATE /*출장시작일*/,
M.BNS_END_DATE /*출장종료일*/,
M.BUS_USERS_ID /*출장자*/,
M.REG_USER_ID /*작성자*/,
M.REG_DATE /*작성*/
) T
)WHERE 1=1
</select> -->
<select id="getCodeselectProjectNo" parameterType="map" resultType="map">
SELECT
A.PROJECT_NO /*프로젝트NO*/ AS CODE,
A.PROJECT_NO /*프로젝트TITLE*/ AS NAME
FROM
PROJECT_MGMT A
WHERE A.PROJECT_NO IS NOT NULL
ORDER BY A.PROJECT_NO DESC
<!-- SELECT
B.PROJECT_NO /*프로젝트NO*/ AS CODE,
B.PROJECT_NO /*프로젝트TITLE*/ AS NAME
FROM
PROJECT_MGMT A,
ORDER_MGMT B
WHERE A.ORDER_MGMT_OBJID = B.ORDER_MGMT_OBJID
AND B.PROJECT_NO IS NOT NULL
ORDER BY B.PROJECT_NO DESC -->
</select>
<select id="getCodeselectUser" parameterType="map" resultType="map">
SELECT
USER_ID AS CODE,
USER_NAME || '(' || DEPT_NAME || ')' AS NAME
FROM
USER_INFO
</select>
<select id="expenseDetailList" parameterType="map" resultType="map">
SELECT
EXPENSE_DETAIL_OBJID /*OBJID*/,
EXPENSE_MASTER_OBJID /*경비마스터OBJID*/,
EXP_SORT_CD /*구분*/,
EXP_SUBM_CD /*계정과목*/,
EXP_SUBD_CD /*적요*/,
CARD_USED /*카드사용액*/,
CASH_USED /*현금사용액*/,
PAYMENT /*가지급금액*/
FROM
EXPENSE_DETAIL
WHERE EXPENSE_MASTER_OBJID::numeric = #{objId}::numeric
</select>
<delete id="deleteExpenseDetailAll" parameterType="map">
DELETE FROM EXPENSE_DETAIL
WHERE EXPENSE_MASTER_OBJID::numeric = #{objId}::numeric
</delete>
<insert id="insertExpenseDetail" parameterType="map">
INSERT INTO EXPENSE_DETAIL (
EXPENSE_DETAIL_OBJID,
EXPENSE_MASTER_OBJID,
EXP_SORT_CD,
EXP_SUBM_CD,
EXP_SUBD_CD,
CARD_USED,
CASH_USED,
PAYMENT
)
VALUES
(
#{EXPENSE_DETAIL_OBJID}::numeric,
#{EXPENSE_MASTER_OBJID}::numeric,
#{EXP_SORT_CD},
#{EXP_SUBM_CD},
#{EXP_SUBD_CD},
#{CARD_USED},
#{CASH_USED},
#{PAYMENT}
)
</insert>
<update id="mergeExpenseMaster" parameterType="map">
INSERT INTO EXPENSE_MASTER
(
EXPENSE_MASTER_OBJID
<if test="projectNo != null and projectNo != ''">
, PROJECT_MGMT_OBJID
</if>
, EXPENSE_ID
, BNS_START_DATE
, BNS_END_DATE
, EXP_STATUS_CD
, EXP_SORT_CD
, EXP_COMPANY_CD
, EXP_AREA_CD
, VEHICEL_USED
, BUS_USERS_ID
, BUS_CONTENT
, BUS_TITLE
, REASON
, INSTRUCTIONS
, REG_USER_ID
, REG_DATE
, SEQ
)
VALUES
(
#{objId}::numeric
<if test="projectNo != null and projectNo != ''">
<!-- ,(SELECT PROJECT_MGMT_OBJID FROM FACILITY_ASSEMBLY_PLAN WHERE PROJECT_NO = #{projectNo})::numeric -->
,(SELECT OBJID FROM PROJECT_MGMT WHERE PROJECT_NO = #{projectNo})::numeric
</if>
,('EC-' || TO_CHAR(NOW(), 'YYYY') || '-' || LPAD(( SELECT COUNT(*)::numeric+1 FROM EXPENSE_MASTER WHERE EXPENSE_ID LIKE '%EC-%')::text, 4, '0'))
,#{bnsStartDate }
,#{bnsEndDate }
,#{expStatusCd }
,#{expSortCd }
,#{expCompanyCd }
,#{expAreaCd }
,#{vehicelUsed }
,#{busUsersId }
,#{busContent }
,#{busTitle }
,#{reason }
,#{instructions }
,#{connectUserId}
,#{regDate }
,(SELECT COALESCE(MAX(SEQ),0)+1 FROM EXPENSE_MASTER)
) ON CONFLICT (EXPENSE_MASTER_OBJID) DO
UPDATE
SET
BNS_START_DATE = #{bnsStartDate }
,BNS_END_DATE = #{bnsEndDate }
<if test="projectNo != null and projectNo != ''">
,PROJECT_MGMT_OBJID = (SELECT OBJID FROM PROJECT_MGMT WHERE PROJECT_NO = #{projectNo})::numeric
<!-- ,PROJECT_MGMT_OBJID = (SELECT PROJECT_MGMT_OBJID FROM FACILITY_ASSEMBLY_PLAN WHERE PROJECT_NO = #{projectNo } )::numeric -->
</if>
,EXP_STATUS_CD = #{expStatusCd }
,EXP_SORT_CD = #{expSortCd }
,EXP_COMPANY_CD = #{expCompanyCd }
,EXP_AREA_CD = #{expAreaCd }
,VEHICEL_USED = #{vehicelUsed }
,BUS_USERS_ID = #{busUsersId }
,BUS_CONTENT = #{busContent }
,BUS_TITLE = #{busTitle }
,REASON = #{reason }
,INSTRUCTIONS = #{instructions }
,REG_USER_ID = #{connectUserId}
,REG_DATE = #{regDate }
</update>
<!-- <update id="mergeExpenseMaster" parameterType="map">
MERGE INTO EXPENSE_MASTER USING DUAL ON (EXPENSE_MASTER_OBJID = #{objId})
WHEN MATCHED THEN
UPDATE SET
PROJECT_MGMT_OBJID = (SELECT PROJECT_MGMT_OBJID FROM FACILITY_ASSEMBLY_PLAN WHERE PROJECT_NO = #{projectNo } )
,BNS_START_DATE = #{bnsStartDate }
,BNS_END_DATE = #{bnsEndDate }
,EXP_STATUS_CD = #{expStatusCd }
,EXP_SORT_CD = #{expSortCd }
,EXP_COMPANY_CD = #{expCompanyCd }
,EXP_AREA_CD = #{expAreaCd }
,VEHICEL_USED = #{vehicelUsed }
,BUS_USERS_ID = #{busUsersId }
,BUS_CONTENT = #{busContent }
,BUS_TITLE = #{busTitle }
,REASON = #{reason }
,INSTRUCTIONS = #{instructions }
,REG_USER_ID = #{connectUserId}
,REG_DATE = #{regDate }
WHEN NOT MATCHED THEN
INSERT (
EXPENSE_MASTER_OBJID
, PROJECT_MGMT_OBJID
, EXPENSE_ID
, BNS_START_DATE
, BNS_END_DATE
, EXP_STATUS_CD
, EXP_SORT_CD
, EXP_COMPANY_CD
, EXP_AREA_CD
, VEHICEL_USED
, BUS_USERS_ID
, BUS_CONTENT
, BUS_TITLE
, REASON
, INSTRUCTIONS
, REG_USER_ID
, REG_DATE
, SEQ
)
VALUES (
#{objId}
,(SELECT PROJECT_MGMT_OBJID FROM FACILITY_ASSEMBLY_PLAN WHERE PROJECT_NO = #{projectNo } )
,('EC-' || TO_CHAR(SYSDATE, 'YYYY') || '-' || LPAD(( SELECT COUNT(*) FROM EXPENSE_MASTER WHERE EXPENSE_ID LIKE 'EC-' || TO_CHAR(SYSDATE, 'YYYY') || '-%' ) + 1, 4, '0'))
,#{bnsStartDate }
,#{bnsEndDate }
,#{expStatusCd }
,#{expSortCd }
,#{expCompanyCd }
,#{expAreaCd }
,#{vehicelUsed }
,#{busUsersId }
,#{busContent }
,#{busTitle }
,#{reason }
,#{instructions }
,#{connectUserId}
,#{regDate }
,(SELECT NVL(MAX(SEQ),0)+1 FROM EXPENSE_MASTER)
)
</update> -->
<select id="selectExpenseMaster" parameterType="map" resultType="map">
SELECT
A.*
,(
SELECT
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = TARGET_USER_ID) AS USER_NAME
FROM INBOXTASK
WHERE 1=1 AND ROUTE_OBJID = A.APPROVAL_OBJID
AND APPROVAL_TYPE = 'normal'
AND SEQ = 1
) AS APPROVAL_USER1
,(
SELECT
(SELECT TO_CHAR(PROC_DATE,'YYYY-MM-DD') FROM USER_INFO WHERE USER_ID = TARGET_USER_ID) AS USER_NAME
FROM INBOXTASK
WHERE 1=1 AND ROUTE_OBJID = A.APPROVAL_OBJID
AND APPROVAL_TYPE = 'normal'
AND SEQ = 1
) AS APPROVAL_PROC_DATE1
,(
SELECT
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = TARGET_USER_ID) AS USER_NAME
FROM INBOXTASK
WHERE 1=1 AND ROUTE_OBJID = A.APPROVAL_OBJID
AND APPROVAL_TYPE = 'normal'
AND SEQ = 2
) AS APPROVAL_USER2
,(
SELECT
(SELECT TO_CHAR(PROC_DATE,'YYYY-MM-DD') FROM USER_INFO WHERE USER_ID = TARGET_USER_ID) AS USER_NAME
FROM INBOXTASK
WHERE 1=1 AND ROUTE_OBJID = A.APPROVAL_OBJID
AND APPROVAL_TYPE = 'normal'
AND SEQ = 2
) AS APPROVAL_PROC_DATE2
,(
SELECT
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = TARGET_USER_ID) AS USER_NAME
FROM INBOXTASK
WHERE 1=1 AND ROUTE_OBJID = A.APPROVAL_OBJID
AND APPROVAL_TYPE = 'normal'
AND SEQ = 3
) AS APPROVAL_USER3
,(
SELECT
(SELECT TO_CHAR(PROC_DATE,'YYYY-MM-DD') FROM USER_INFO WHERE USER_ID = TARGET_USER_ID) AS USER_NAME
FROM INBOXTASK
WHERE 1=1 AND ROUTE_OBJID = A.APPROVAL_OBJID
AND APPROVAL_TYPE = 'normal'
AND SEQ = 3
) AS APPROVAL_PROC_DATE3
,(
SELECT
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = TARGET_USER_ID) AS USER_NAME
FROM INBOXTASK
WHERE 1=1 AND ROUTE_OBJID = A.APPROVAL_OBJID
AND APPROVAL_TYPE = 'normal'
AND SEQ = 4
) AS APPROVAL_USER4
,(
SELECT
(SELECT TO_CHAR(PROC_DATE,'YYYY-MM-DD') FROM USER_INFO WHERE USER_ID = TARGET_USER_ID) AS USER_NAME
FROM INBOXTASK
WHERE 1=1 AND ROUTE_OBJID = A.APPROVAL_OBJID
AND APPROVAL_TYPE = 'normal'
AND SEQ = 4
) AS APPROVAL_PROC_DATE4 ,
(SELECT sum(CARD_USED::numeric) FROM EXPENSE_DETAIL WHERE EXPENSE_MASTER_OBJID::numeric = ${objId}) AS TOTAL_CARD_USED,
(SELECT sum(CASH_USED::numeric) FROM EXPENSE_DETAIL WHERE EXPENSE_MASTER_OBJID::numeric = ${objId}) AS TOTAL_CASH_USED,
(SELECT sum(PAYMENT::numeric) FROM EXPENSE_DETAIL WHERE EXPENSE_MASTER_OBJID::numeric = ${objId}) AS TOTAL_PAYMENT
FROM
(
SELECT
EXPENSE_MASTER_OBJID,
PROJECT_MGMT_OBJID,
<!-- (SELECT PROJECT_NO FROM FACILITY_ASSEMBLY_PLAN WHERE PROJECT_MGMT_OBJID = T.PROJECT_MGMT_OBJID::numeric) AS PROJECT_NO, -->
(SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE PROJECT_MGMT_OBJID::numeric = PM.OBJID::numeric) AS EXP_PROJECT_NO,
EXPENSE_ID,
EXP_SORT_CD,
BNS_START_DATE,
BNS_END_DATE,
EXP_STATUS_CD,
EXP_COMPANY_CD,
EXP_AREA_CD,
VEHICEL_USED,
BUS_USERS_ID,
BUS_CONTENT,
BUS_TITLE,
REASON,
INSTRUCTIONS,
REG_USER_ID,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.REG_USER_ID) AS REG_USER_NAME,
REG_DATE,
A.APPROVAL_STATUS,
A.APPROVAL_OBJID
FROM
EXPENSE_MASTER T
LEFT JOIN (
SELECT
A.*
FROM(
SELECT
B.OBJID AS APPROVAL_OBJID,
CASE B.STATUS
WHEN 'inProcess' THEN '결재중'
WHEN 'complete' THEN '결재완료'
WHEN 'reject' THEN '반려'
ELSE ''
END APPR_STATUS,
B.STATUS AS APPROVAL_STATUS,
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 = 'EXPENSE_APPLY'
) A
) A
ON T.EXPENSE_MASTER_OBJID::numeric = A.TARGET_OBJID
WHERE 1=1
AND EXPENSE_MASTER_OBJID::numeric = ${objId}
) A
</select>
<select id="getTimeSheetRegList" parameterType="map" resultType="map">
SELECT REG_USER_ID AS CODE
,(SELECT USER_NAME FROM USER_INFO U WHERE U.USER_ID = A.REG_USER_ID ) AS NAME
FROM TIME_SHEET A
WHERE REG_USER_ID IS NOT NULL
GROUP BY REG_USER_ID
</select>
<select id="getTimeSheetAddworkTime" parameterType="map" resultType="map">
SELECT NVL(SUM(WORK_TIME),'0') AS ADD_WORK_TIME
FROM TIME_SHEET A
where 1=1
<!-- and REG_USER_ID = #{REG_USER_ID} -->
and DEPT_ID = #{DEPT_ID}
and PROJECT_MGMT_OBJID = #{PROJECTNO}
</select>
<delete id="deleteTimeSheetAll" parameterType="map">
DELETE FROM TIME_SHEET
WHERE PROJECT_MGMT_OBJID = #{PROJECTNO}
AND SYSTEM_REG_USER_ID = #{connectUserId}
</delete>
<delete id="deleteTimeSheet" parameterType="map">
DELETE FROM TIME_SHEET
WHERE OBJID =#{TIME_SHEET_OBJID}
</delete>
<insert id="insertTimeSheet" parameterType="map">
MERGE INTO TIME_SHEET USING DUAL ON (OBJID = to_number(#{TIME_SHEET_OBJID}))
WHEN MATCHED THEN
UPDATE SET
PROJECT_MGMT_OBJID = to_number(#{PROJECTNO})
,WORK_DATE = #{WORK_DATE }
,DEPT_ID = #{DEPT_ID }
,REG_USER_ID = #{REG_USER_ID }
,BUS_CD = #{BUS_CD }
,TITLE = #{TITLE }
,TRIP_CD = #{TRIP_CD }
,COMPANY_CD = #{COMPANY_CD }
,WORK_TIME = #{WORK_TIME }
WHEN NOT MATCHED THEN
INSERT (
OBJID
,PROJECT_MGMT_OBJID
,WORK_DATE
,DEPT_ID
,REG_USER_ID
,BUS_CD
,TITLE
,TRIP_CD
,COMPANY_CD
,WORK_TIME
,REG_DATE
,SYSTEM_REG_USER_ID
)
VALUES (
to_number(#{TIME_SHEET_OBJID})
,to_number(#{PROJECTNO})
,#{WORK_DATE}
,#{DEPT_ID}
,#{REG_USER_ID}
,#{BUS_CD}
,#{TITLE}
,#{TRIP_CD}
,#{COMPANY_CD}
,#{WORK_TIME}
,SYSDATE
,#{SYSTEM_REG_USER_ID}
)
</insert>
<select id="laborCostTimeSheetDetailList" parameterType="map" resultType="map">
SELECT
OBJID
,OBJID AS TIME_SHEET_OBJID
,PROJECT_MGMT_OBJID
,PROJECT_MGMT_OBJID AS PROJECTNO
,WORK_DATE
,DEPT_ID
,REG_USER_ID
,BUS_CD
,TITLE
,TRIP_CD
,COMPANY_CD
,WORK_TIME
,REG_DATE
,SYSTEM_REG_USER_ID
,SYSTEM_REG_USER_ID AS WRITER
FROM TIME_SHEET T
WHERE 1=1
<choose>
<when test="dpet_val != null and 'MD'.equals(dpet_val)">
AND DEPT_ID IN ('MD','EC')
</when>
<when test="dpet_val != null and 'FT'.equals(dpet_val)">
AND DEPT_ID IN ('FT')
</when>
<when test="dpet_val != null and 'MM'.equals(dpet_val)">
AND DEPT_ID IN ('MF','MM')
</when>
<otherwise>
</otherwise>
</choose>
<if test="objId !=null and objId != '' ">
AND PROJECT_MGMT_OBJID = #{objId}
</if>
<if test="regUserId !=null and regUserId != '' ">
AND REG_USER_ID = #{regUserId}
</if>
<if test="'inList'.equals(outVal) ">
AND REG_USER_ID NOT IN ('OUT1','OUT2')
</if>
<if test="'outList'.equals(outVal) ">
AND REG_USER_ID IN ('OUT1','OUT2')
</if>
ORDER BY WORK_DATE DESC
</select>
<!-- 투입원가현황 -->
<select id="inputCostStatusList" parameterType="map" resultType="map">
SELECT *
FROM
(
SELECT
T.*,
CASE
WHEN <![CDATA[ 0 < SUM_TOTAL_COST ]]>
THEN ROUND(((SUM_LABOR_COST+SUM_MATERIAL_COST+SUM_EXPENSES)/SUM_TOTAL_COST)*100)
ELSE 0
END EXECUTION_RATE,
CASE
WHEN <![CDATA[ 0 < SUM_TOTAL_COST ]]>
THEN ROUND(((SUM_LABOR_COST)/SUM_TOTAL_COST)*100)
ELSE 0
END EXECUTION_LABOR_RATE,
CASE
WHEN <![CDATA[ 0 < SUM_TOTAL_COST ]]>
THEN ROUND(((SUM_MATERIAL_COST)/SUM_TOTAL_COST)*100)
ELSE 0
END EXECUTION_MATERIAL_RATE,
ROW_NUMBER() OVER (ORDER BY PROJECT_NO DESC) AS RNUM,
(SUM_LABOR_COST+SUM_MATERIAL_COST+SUM_EXPENSES) AS SUM_ACCRUED_AMOUNT
FROM(
SELECT
T1.PROJECT_MGMT_OBJID::varchar AS PROJECT_MGMT_OBJID ,
T.ORDER_MGMT_OBJID::varchar AS ORDER_MGMT_OBJID ,
T1.REGION_CD ,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = T1.CUSTOMER_CD) AS CUSTOMER_NAME,
T1.CUSTOMER_CD ,
T.ORDER_TITLE ,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = T1.ORDER_CD) AS ORDER_NAME ,
T1.ORDER_CD ,
TO_CHAR(TO_DATE(T1.DEL_DATE,'yyyymmdd'),'yyyy-mm-dd') AS DEL_DATE ,
TO_CHAR(TO_DATE(T.START_DATE,'yyyymmdd'),'yyyy-mm-dd') AS START_DATE ,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = T1.PLANT_CD) AS PLANT_NAME ,
T1.PLANT_CD ,
(SELECT USER_NAME FROM USER_INFO O1 WHERE O1.USER_ID = T1.MANAGER_PM) AS MANAGER_NAME ,
COALESCE(T.REASON,'0') AS REASON,
T.PROJECT_NO ,
T.PONUM ,
T.ORDER_PRICE ,
T.DESIGN_PM ,
T.PRODUCTION_PM ,
T.ELECTRO_PM ,
T.SE_PM ,
T1.MANAGER_PM ,
(SELECT USER_NAME FROM USER_INFO O1 WHERE O1.USER_ID = T1.REG_ID) AS REG_NAME ,
TO_CHAR(T1.REG_DATE,'yyyy-mm-dd') AS REG_DATE ,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = T.project_division) AS project_division ,
T.reason,
T.outc_value1,
T.outc_value2,
T.outc_cd5,
COALESCE((SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = T.outc_cd6),T.outc_cd6) AS outc_cd6,
T.outc_cd2,
T.outc_cd3,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = T1.PROJECT_MGMT_OBJID AND DOC_TYPE='CUSTOMER_01' AND UPPER(STATUS) = 'ACTIVE') AS CU01_CNT,
(SELECT COUNT(1) FROM ORDER_MGMT_EXAMPLE WHERE ORDER_MGMT_OBJID = T.ORDER_MGMT_OBJID) AS CU02_CNT,
TO_CHAR(T2.TASK_END_DATE,'YYYY-MM-DD') AS TASK_END_DATE,
TO_CHAR(T2.UPDATE_DATE,'YYYY-MM-DD') AS UPDATE_DATE,
T2.STATUS_NAME,
(
SELECT
--COALESCE(SUM(O.PRICE::numeric),0)
sum(CASE WHEN O.PRICE = '' THEN '0'
ELSE O.PRICE
END::numeric)
FROM ORDER_MGMT_EXAMPLE O
WHERE O.ORDER_MGMT_OBJID = T.ORDER_MGMT_OBJID
AND REPLACE(O.PRODUCT_NAME,' ','') NOT IN('소계','합계')
AND
<foreach collection="laborCostArr" item="item" open="(" close=")" separator=" or ">
REPLACE(O.PRODUCT_NAME,' ','') = REPLACE(#{item},' ','')
</foreach>
) AS SUM_LABOR_COST,
(
SELECT
--COALESCE(SUM(O.PRICE::numeric),0)
sum(CASE WHEN O.PRICE = '' THEN '0'
ELSE O.PRICE
END::numeric)
FROM ORDER_MGMT_EXAMPLE O
WHERE O.ORDER_MGMT_OBJID = T.ORDER_MGMT_OBJID
AND REPLACE(O.PRODUCT_NAME,' ','') NOT IN('소계','합계')
<foreach collection="laborCostArr" item="item">
AND REPLACE(O.PRODUCT_NAME,' ','') != REPLACE(#{item},' ','')
</foreach>
<foreach collection="exceptCostArr" item="item">
AND REPLACE(O.PRODUCT_NAME,' ','') != REPLACE(#{item},' ','')
</foreach>
) AS SUM_MATERIAL_COST,
(SELECT
--COALESCE(SUM(O.PRICE::numeric),0)
sum(CASE WHEN O.PRICE = '' THEN '0'
ELSE O.PRICE
END::numeric)
FROM ORDER_MGMT_EXAMPLE O WHERE O.ORDER_MGMT_OBJID = T.ORDER_MGMT_OBJID
AND REPLACE(O.PRODUCT_NAME,' ','') NOT IN('소계','합계')
) AS SUM_TOTAL_COST,
COALESCE(T3.SUM_EXPENSES::numeric,0) AS SUM_EXPENSES
FROM
ORDER_MGMT AS T
INNER JOIN
PROJECT_MGMT AS T1
ON T.ORDER_MGMT_OBJID = T1.ORDER_MGMT_OBJID
LEFT OUTER JOIN
(
SELECT
TARGET_OBJID,
TASK_END_DATE,
UPDATE_DATE,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = TASK.STATUS) AS STATUS_NAME
FROM PMS_WBS_TASK AS TASK
WHERE TASK.IS_TEMPLATE_TASK = 1
AND TASK.SEQ=1
) AS T2
ON T1.PROJECT_MGMT_OBJID = T2.TARGET_OBJID
LEFT OUTER JOIN
(
SELECT
SUM(T1.CARD_USED::numeric)+SUM(T1.CASH_USED::numeric)-SUM(T1.PAYMENT::numeric) AS SUM_EXPENSES,
SUM(T1.CARD_USED::numeric) AS SUM_CARD,
SUM(T1.CASH_USED::numeric) AS SUM_CASH,
SUM(T1.PAYMENT::numeric) AS SUM_PAYMENT,
T.PROJECT_MGMT_OBJID
FROM
EXPENSE_MASTER T,
EXPENSE_DETAIL T1,
(
SELECT
A.TARGET_OBJID
FROM
APPROVAL A,
ROUTE B
WHERE
A.OBJID = B.APPROVAL_OBJID
AND B.STATUS = 'complete'
) T3
WHERE
T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
AND T3.TARGET_OBJID = T1.EXPENSE_MASTER_OBJID
GROUP BY
T.PROJECT_MGMT_OBJID
) AS T3
ON T1.PROJECT_MGMT_OBJID = T3.PROJECT_MGMT_OBJID
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(T.REQ_DATE,'YYYYMMDD'),'YYYY') = #{Year}
</if>
<if test="project_no != null and project_no !='' ">
AND T.ORDER_MGMT_OBJID = #{project_no}::numeric
</if>
<if test="project_division != null and project_division !='' ">
AND T.PROJECT_DIVISION = #{project_division}
</if>
ORDER BY PROJECT_NO DESC
) AS T
) AS TT
WHERE 1=1
<if test="PAGE_END != null and PAGE_END != '' and actionType != 'excel'">
<![CDATA[ AND RNUM <= #{PAGE_END}::numeric ]]>
</if>
<if test="PAGE_START != null and PAGE_START != '' and actionType != 'excel'">
<![CDATA[ AND RNUM >= #{PAGE_START}::numeric ]]>
</if>
</select>
<select id="inputCostStatusListCnt" parameterType="map" resultType="map">
SELECT
CEIL(CAST(TOTAL_CNT AS FLOAT)/#{COUNT_PER_PAGE})::numeric::numeric as MAX_PAGE_SIZE
,TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM(
SELECT
T1.PROJECT_MGMT_OBJID::varchar AS PROJECT_MGMT_OBJID ,
T.ORDER_MGMT_OBJID::varchar AS ORDER_MGMT_OBJID ,
T1.REGION_CD ,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = T1.CUSTOMER_CD) AS CUSTOMER_NAME,
T1.CUSTOMER_CD ,
T.ORDER_TITLE ,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = T1.ORDER_CD) AS ORDER_NAME ,
T1.ORDER_CD ,
TO_CHAR(TO_DATE(T1.DEL_DATE,'yyyymmdd'),'yyyy-mm-dd') AS DEL_DATE ,
TO_CHAR(TO_DATE(T.START_DATE,'yyyymmdd'),'yyyy-mm-dd') AS START_DATE ,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = T1.PLANT_CD) AS PLANT_NAME ,
T1.PLANT_CD ,
(SELECT USER_NAME FROM USER_INFO O1 WHERE O1.USER_ID = T1.MANAGER_PM) AS MANAGER_NAME ,
COALESCE(T.REASON,'0') AS REASON,
T.PROJECT_NO ,
T.PONUM ,
T.ORDER_PRICE ,
T.DESIGN_PM ,
T.PRODUCTION_PM ,
T.ELECTRO_PM ,
T.SE_PM ,
T1.MANAGER_PM ,
(SELECT USER_NAME FROM USER_INFO O1 WHERE O1.USER_ID = T1.REG_ID) AS REG_NAME ,
TO_CHAR(T1.REG_DATE,'yyyy-mm-dd') AS REG_DATE ,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = T.project_division) AS project_division ,
T.reason,
T.outc_value1,
T.outc_value2,
T.outc_cd5,
COALESCE((SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = T.outc_cd6),T.outc_cd6) AS outc_cd6,
T.outc_cd2,
T.outc_cd3,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = T1.PROJECT_MGMT_OBJID AND DOC_TYPE='CUSTOMER_01' AND UPPER(STATUS) = 'ACTIVE') AS CU01_CNT,
(SELECT COUNT(1) FROM ORDER_MGMT_EXAMPLE WHERE ORDER_MGMT_OBJID = T.ORDER_MGMT_OBJID) AS CU02_CNT,
TO_CHAR(T2.TASK_END_DATE,'YYYY-MM-DD') AS TASK_END_DATE,
TO_CHAR(T2.UPDATE_DATE,'YYYY-MM-DD') AS UPDATE_DATE,
T2.STATUS_NAME,
(
SELECT
SUM(O.PRICE::numeric)
FROM ORDER_MGMT_EXAMPLE O
WHERE O.ORDER_MGMT_OBJID = T.ORDER_MGMT_OBJID
AND
<foreach collection="laborCostArr" item="item" open="(" close=")" separator=" or ">
REPLACE(O.SORT,' ','') = REPLACE(#{item},' ','')
</foreach>
) AS SUM_LABOR_COST,
(
SELECT
SUM(O.PRICE::numeric)
FROM ORDER_MGMT_EXAMPLE O
WHERE O.ORDER_MGMT_OBJID = T.ORDER_MGMT_OBJID
<foreach collection="laborCostArr" item="item">
AND REPLACE(O.SORT,' ','') != REPLACE(#{item},' ','')
</foreach>
<foreach collection="exceptCostArr" item="item">
AND REPLACE(O.SORT,' ','') != REPLACE(#{item},' ','')
</foreach>
) AS SUM_MATERIAL_COST,
T3.SUM_EXPENSES
FROM
ORDER_MGMT AS T
INNER JOIN
PROJECT_MGMT AS T1
ON T.ORDER_MGMT_OBJID = T1.ORDER_MGMT_OBJID
LEFT OUTER JOIN
(
SELECT
TARGET_OBJID,
TASK_END_DATE,
UPDATE_DATE,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = TASK.STATUS) AS STATUS_NAME
FROM PMS_WBS_TASK AS TASK
WHERE TASK.IS_TEMPLATE_TASK = 1
AND TASK.SEQ=1
) AS T2
ON T1.PROJECT_MGMT_OBJID = T2.TARGET_OBJID
LEFT OUTER JOIN
(
SELECT
SUM(T1.CARD_USED::numeric)+SUM(T1.CASH_USED::numeric)-SUM(T1.PAYMENT::numeric) AS SUM_EXPENSES,
SUM(T1.CARD_USED::numeric) AS SUM_CARD,
SUM(T1.CASH_USED::numeric) AS SUM_CASH,
SUM(T1.PAYMENT::numeric) AS SUM_PAYMENT,
T.PROJECT_MGMT_OBJID
FROM
EXPENSE_MASTER T,
EXPENSE_DETAIL T1,
(
SELECT
A.TARGET_OBJID
FROM
APPROVAL A,
ROUTE B
WHERE
A.OBJID = B.APPROVAL_OBJID
AND B.STATUS = 'complete'
) T3
WHERE
T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
AND T3.TARGET_OBJID = T1.EXPENSE_MASTER_OBJID
GROUP BY
T.PROJECT_MGMT_OBJID
) AS T3
ON T1.PROJECT_MGMT_OBJID = T3.PROJECT_MGMT_OBJID
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(T.REQ_DATE,'YYYYMMDD'),'YYYY') = #{Year}
</if>
<if test="project_no != null and project_no !='' ">
AND T.ORDER_MGMT_OBJID = #{project_no}::numeric
</if>
<if test="project_division != null and project_division !='' ">
AND T.PROJECT_DIVISION = #{project_division}
</if>
ORDER BY PROJECT_NO DESC
) AS T
) T
WHERE 1=1
</select>
<select id="expenseDashBoardGrid" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
T.OBJID
,CATEGORY_CD
,CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME
,CUSTOMER_OBJID
,CASE WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) ELSE (SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID::VARCHAR) END AS CUSTOMER_NAME
,PRODUCT
,CODE_NAME(PRODUCT) AS PRODUCT_NAME
,(SELECT O.CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
,STATUS_CD
,CODE_NAME(STATUS_CD) AS STATUS_NAME
,DUE_DATE
,LOCATION
,SETUP
,FACILITY
,CODE_NAME(FACILITY) AS FACILITY_NAME
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CODE_NAME(BUS_CAL_CD) AS BUS_CAL_NAME
,CATEGORY1_CD
,CODE_NAME(CATEGORY1_CD) AS CATEGORY1_NAME
,CHG_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CHG_USER_ID ) AS CHG_USER_NAME
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,CODE_NAME(RESULT_CD) AS RESULT_NAME
,PROJECT_NO
,PM_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = (SELECT O.PM_USER_ID FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID)) AS PM_USER_NAME
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,CODE_NAME(CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
,T.REGDATE
,TO_CHAR(T.REGDATE,'YYYY-MM-DD') AS REG_DATE
,T.WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CODE_NAME(CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
,CONTRACT_DATE
,PO_NO
,MANUFACTURE_PLANT
,CODE_NAME(MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
,CONTRACT_RESULT
,CODE_NAME(CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
,CODE_NAME(AREA_CD) AS AREA_NAME
,PROJECT_NAME
,MECHANICAL_TYPE
,coalesce(ASS.SETTLE_AMOUNT, 0) AS SETTLE_AMOUNT_ASSEMBLE
,coalesce(SETUP.SETTLE_AMOUNT, 0) AS SETTLE_AMOUNT_SETUP
,coalesce(CS.SETTLE_AMOUNT, 0) AS SETTLE_AMOUNT_CS
,(coalesce(ASS.SETTLE_AMOUNT, 0) + coalesce(SETUP.SETTLE_AMOUNT, 0) + coalesce(CS.SETTLE_AMOUNT,0)) AS TOTAL_SETTLE_AMOUNT
,coalesce(I.EXPENSE_COST_GOAL::numeric, 0) AS EXPENSE_COST_GOAL
,CASE WHEN coalesce(I.EXPENSE_COST_GOAL::numeric, 0) = 0 THEN 0
ELSE ROUND((((coalesce(ASS.SETTLE_AMOUNT, 0) + coalesce(SETUP.SETTLE_AMOUNT, 0) + coalesce(CS.SETTLE_AMOUNT,0)) / I.EXPENSE_COST_GOAL::numeric)*100),1)
END INPUT_RATE
FROM
PROJECT_MGMT AS T
LEFT OUTER JOIN
(select
project_mgmt_objid,
sum(A.SETTLE_AMOUNT) as SETTLE_AMOUNT
from
(SELECT
M.*,
SUM(D.CARD_USED::numeric) + SUM(D.CASH_USED::numeric) - SUM(D.PAYMENT::numeric) AS SETTLE_AMOUNT
FROM
EXPENSE_MASTER M
LEFT OUTER JOIN EXPENSE_DETAIL D
ON M.EXPENSE_MASTER_OBJID = D.EXPENSE_MASTER_OBJID
GROUP BY M.EXPENSE_MASTER_OBJID) A
where exp_status_cd = '0001548'
group by project_mgmt_objid) as ASS
ON T.OBJID = ASS.PROJECT_MGMT_OBJID
LEFT OUTER JOIN
(select
project_mgmt_objid,
sum(A.SETTLE_AMOUNT) as SETTLE_AMOUNT
from
(SELECT
M.*,
SUM(D.CARD_USED::numeric) + SUM(D.CASH_USED::numeric) - SUM(D.PAYMENT::numeric) AS SETTLE_AMOUNT
FROM
EXPENSE_MASTER M
LEFT OUTER JOIN EXPENSE_DETAIL D
ON M.EXPENSE_MASTER_OBJID = D.EXPENSE_MASTER_OBJID
GROUP BY M.EXPENSE_MASTER_OBJID) A
where exp_status_cd = '0001549'
group by project_mgmt_objid
) as SETUP
ON T.OBJID = SETUP.PROJECT_MGMT_OBJID
LEFT OUTER JOIN
(select
project_mgmt_objid,
sum(A.SETTLE_AMOUNT) as SETTLE_AMOUNT
from
(SELECT
M.*,
SUM(D.CARD_USED::numeric) + SUM(D.CASH_USED::numeric) - SUM(D.PAYMENT::numeric) AS SETTLE_AMOUNT
FROM
EXPENSE_MASTER M
LEFT OUTER JOIN EXPENSE_DETAIL D
ON M.EXPENSE_MASTER_OBJID = D.EXPENSE_MASTER_OBJID
GROUP BY M.EXPENSE_MASTER_OBJID) A
where exp_status_cd = '0001629'
group by project_mgmt_objid
) as CS
ON T.OBJID = SETUP.PROJECT_MGMT_OBJID
LEFT OUTER JOIN INPUT_COST_GOAL I
ON T.OBJID = I.CONTRACT_OBJID
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(T.REGDATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND T.OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND T.OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="category_cd !=null and category_cd != '' ">
AND category_cd = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND CUSTOMER_OBJID = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND product = #{product}
</if>
<if test="status_cd !=null and status_cd !=''">
AND status_cd = #{status_cd}
</if>
<if test="result_cd !=null and result_cd !=''">
AND result_cd = #{result_cd}
</if>
<if test="pm_user_id !=null and pm_user_id !=''">
AND PM_USER_ID = #{pm_user_id}
</if>
<if test="location != null and !''.equals(location)">
AND UPPER(LOCATION) LIKE UPPER('%${location}%')
</if>
<if test="setup != null and !''.equals(setup)">
AND UPPER(SETUP) LIKE UPPER('%${setup}%')
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
</select>
<select id="selectlaborCostMgmtGridList" parameterType="map" resultType="map">
SELECT TRUERELTMP.*
/*
ID : selectlaborCostMgmtGridList
*/
<!-- , CASE WHEN ICG.LABOR_COST_GOAL = 0 THEN 0
ELSE ROUND((NULLIF(LABOR_COST_ACTUAL, 0)/ COALESCE(ICG.LABOR_COST_GOAL, '0')::NUMERIC) * 100, 1)
END AS LABOR_INPUT_RATE -->
, CASE WHEN coalesce(TRUERELTMP.LABOR_COST_TARGET::numeric,0) = 0 THEN 0
ELSE ROUND((NULLIF(LABOR_COST_ACTUAL, 0)/ COALESCE(TRUERELTMP.LABOR_COST_TARGET, '0')::NUMERIC) * 100, 1)
END AS LABOR_INPUT_RATE
FROM (
SELECT
RELTMP.*
, LABOR_ASSEMBLY_COST
, (COALESCE(LABOR_DESIGN_COST, 0) + COALESCE(LABOR_ASSEMBLY_COST, 0) + COALESCE(LABOR_SETUP_COST, 0)) AS LABOR_COST_ACTUAL
FROM(
SELECT
TMP.*,
<![CDATA[
CASE WHEN TMP.DESIGN_ACT_START IS NOT NULL AND TMP.DESIGN_ACT_END IS NOT NULL
AND TRIM(TMP.DESIGN_ACT_START) <> '' AND TRIM(TMP.DESIGN_ACT_END) <> ''
THEN TO_DATE(TMP.DESIGN_ACT_END, 'YYYY-MM-DD') - TO_DATE(TMP.DESIGN_ACT_START, 'YYYY-MM-DD')
ELSE NULL
END AS LABOR_DESIGN_INPUT_NUMBER,
CASE WHEN TMP.DESIGN_ACT_START IS NOT NULL AND TMP.DESIGN_ACT_END IS NOT NULL
AND TRIM(TMP.DESIGN_ACT_START) <> '' AND TRIM(TMP.DESIGN_ACT_END) <> ''
THEN ((TO_DATE(TMP.DESIGN_ACT_END,'YYYY-MM-DD') - TO_DATE(TMP.DESIGN_ACT_START,'YYYY-MM-DD')) * 300000)
ELSE NULL
END AS LABOR_DESIGN_COST
]]>
<!-- ,LABOR_DESIGN_INPUT_NUMBER * 300000 AS LABOR_DESIGN_COST -->
,(INSOURCING + OUTSOURCING)/8::numeric AS LABOR_ASSEMBLY_INPUT_NUMBER
,(INSOURCING * 250000 + OUTSOURCING * 350000)/8 AS LABOR_ASSEMBLY_COST
,(EMPLOYEES_IN + EMPLOYEES_OUT)/8::numeric AS LABOR_SETUP_INPUT_NUMBER
,(EMPLOYEES_IN * 250000 + EMPLOYEES_OUT * 350000)/8 AS LABOR_SETUP_COST
FROM (
SELECT
PM.OBJID,
PM.CATEGORY_CD,
CODE_NAME(PM.CATEGORY_CD) AS CATEGORY_NAME,
PM.CUSTOMER_OBJID,
CASE WHEN PM.CUSTOMER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = PM.CUSTOMER_OBJID) ELSE (SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = PM.CUSTOMER_OBJID::VARCHAR) END AS CUSTOMER_NAME,
PM.PRODUCT,
CODE_NAME(PM.PRODUCT) AS PRODUCT_NAME,
(SELECT O.CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = PM.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME,
PM.SETUP,
PM.PROJECT_NO,
PM.PM_USER_ID,
(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = (SELECT O.PM_USER_ID FROM CONTRACT_MGMT AS O WHERE O.OBJID = PM.CONTRACT_OBJID)) AS PM_USER_NAME,
PM.CONTRACT_PRICE,
PM.CONTRACT_PRICE_CURRENCY,
<!-- PM.CONTRACT_PRICE_CURRENCY AS LABOR_COST_TARGET, -->
PM.CONTRACT_CURRENCY,
CODE_NAME(PM.CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME,
PM.REGDATE,
TO_CHAR(PM.REGDATE,'YYYY-MM-DD') AS REG_DATE,
PM.WRITER,
(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = PM.WRITER ) AS WRITER_NAME,
PM.CONTRACT_NO,
PM.CUSTOMER_EQUIP_NAME,
PM.REQ_DEL_DATE,
PM.PROJECT_NAME,
PM.MECHANICAL_TYPE,
TMP.DESIGN_ACT_START,
TMP.DESIGN_ACT_END,
<!-- TMP2.INSOURCING,
TMP2.OUTSOURCING, -->
<!-- coalesce(D.WORK_HOUR , '0') as LABOR_DESIGN_INPUT_NUMBER, --> /*설계*/
coalesce(P.WORK_HOUR , '0') as INSOURCING, /*생산(조립)*/
coalesce(O.WORK_HOUR , '0') as OUTSOURCING, /*생산(조립외주)*/
coalesce(TMP3.WORK_HOUR , '0') as EMPLOYEES_IN, /*생산(셋업)*/
coalesce(TMP4.WORK_HOUR , '0') as EMPLOYEES_OUT,/*생산(셋업외주)*/
ICG.LABOR_COST_GOAL AS LABOR_COST_TARGET
FROM
PROJECT_MGMT AS PM
LEFT OUTER JOIN INPUT_COST_GOAL ICG /* 목표가 */
ON PM.OBJID = ICG.CONTRACT_OBJID
<!-- LEFT OUTER JOIN /* 설계노무비 */
(SELECT
CONTRACT_OBJID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT014','DPT006')
GROUP BY CONTRACT_OBJID, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS D
ON D.CONTRACT_OBJID = PM.OBJID -->
LEFT JOIN (
SELECT
PWT.CONTRACT_OBJID,
MIN(CASE WHEN PWT.DESIGN_ACT_START = '' THEN NULL ELSE PWT.DESIGN_ACT_START END) AS DESIGN_ACT_START,
MAX(PWT.DESIGN_ACT_END) AS DESIGN_ACT_END
FROM
PMS_WBS_TASK AS PWT
INNER JOIN PROJECT_MGMT PM ON PM.OBJID = PWT.CONTRACT_OBJID
GROUP BY
PWT.CONTRACT_OBJID
) TMP ON PM.OBJID = TMP.CONTRACT_OBJID
<!-- LEFT JOIN (
SELECT
PBR.CONTRACT_OBJID
,SUM(CASE WHEN INSOURCING = '' AND INSOURCING IS NOT NULL THEN '0' ELSE INSOURCING END ::numeric) AS INSOURCING
,SUM(CASE WHEN OUTSOURCING = '' AND OUTSOURCING IS NOT NULL THEN '0' ELSE OUTSOURCING END ::numeric) AS OUTSOURCING
FROM
ASSEMBLY_WBS_TASK AS A
INNER JOIN PART_BOM_REPORT AS PBR ON A.PARENT_OBJID = PBR.OBJID
GROUP BY PBR.CONTRACT_OBJID
) TMP2 ON PM.OBJID = TMP2.CONTRACT_OBJID -->
LEFT OUTER JOIN /* 조립노무비 */
(SELECT
CONTRACT_OBJID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT005','DPT023','DPT013')
AND PRODUCTION_TYPE = 'assemble'
GROUP BY CONTRACT_OBJID, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS P
ON P.CONTRACT_OBJID = PM.OBJID
LEFT OUTER JOIN /* 조립노무비외주 */
(SELECT
CONTRACT_OBJID
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND SOURCING_TYPE = 'outsourcing'
AND PRODUCTION_TYPE = 'assemble'
GROUP BY CONTRACT_OBJID ) AS O
ON O.CONTRACT_OBJID = PM.OBJID
LEFT OUTER JOIN /* 셋업노무비 */
(SELECT
CONTRACT_OBJID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT005','DPT023','DPT013')
AND PRODUCTION_TYPE = 'setup'
GROUP BY CONTRACT_OBJID, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS TMP3
ON TMP3.CONTRACT_OBJID = PM.OBJID
LEFT OUTER JOIN /* 셋업노무비외주 */
(SELECT
CONTRACT_OBJID
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND SOURCING_TYPE = 'outsourcing'
AND PRODUCTION_TYPE = 'setup'
GROUP BY CONTRACT_OBJID ) AS TMP4
ON TMP4.CONTRACT_OBJID = PM.OBJID
<!-- LEFT JOIN (
SELECT
SWT.CONTRACT_OBJID
, SUM(COALESCE(EMPLOYEES_IN,'0')::numeric) AS EMPLOYEES_IN
, SUM(COALESCE(EMPLOYEES_OUT,'0')::numeric) AS EMPLOYEES_OUT
FROM SETUP_WBS_TASK AS SWT
GROUP BY SWT.CONTRACT_OBJID
) TMP3 ON PM.OBJID = TMP3.CONTRACT_OBJID -->
WHERE 1=1
) TMP
) RELTMP
WHERE 1 = 1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND CUSTOMER_OBJID = #{customer_objid}
</if>
<if test="product !=null and product != '' ">
AND PRODUCT = #{product}
</if>
<if test="pm_user_id !=null and pm_user_id != '' ">
AND PM_USER_ID = #{pm_user_id}
</if>
<if test="unit_code !=null and unit_code != '' ">
AND UNIT_CODE = #{unit_code}
</if>
<if test="writer !=null and writer != '' ">
AND WRITER = #{writer}
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC ) AS TRUERELTMP
</select>
<select id="getCostGoalInfo" parameterType="map" resultType="map">
SELECT
OBJID
,CONTRACT_OBJID
,MATERIAL_COST_GOAL
,LABOR_COST_GOAL
,EXPENSE_COST_GOAL
,WRITER
,REGDATE
FROM
INPUT_COST_GOAL FMB
WHERE 1=1
<if test="CONTRACT_OBJID != null and !''.equals(CONTRACT_OBJID)">
AND CONTRACT_OBJID = #{CONTRACT_OBJID}
</if>
</select>
<update id="saveCostGoalInfo" parameterType="map">
INSERT INTO
INPUT_COST_GOAL
(
OBJID
,CONTRACT_OBJID
<if test="MATERIAL_COST_GOAL != null and !''.equals(MATERIAL_COST_GOAL)">
,MATERIAL_COST_GOAL
</if>
<if test="LABOR_COST_GOAL != null and !''.equals(LABOR_COST_GOAL)">
,LABOR_COST_GOAL
</if>
<if test="EXPENSE_COST_GOAL != null and !''.equals(EXPENSE_COST_GOAL)">
,EXPENSE_COST_GOAL
</if>
,WRITER
,REGDATE
)VALUES(
#{OBJID}
,#{CONTRACT_OBJID}
<if test="MATERIAL_COST_GOAL != null and !''.equals(MATERIAL_COST_GOAL)">
,#{MATERIAL_COST_GOAL}
</if>
<if test="LABOR_COST_GOAL != null and !''.equals(LABOR_COST_GOAL)">
,#{LABOR_COST_GOAL}
</if>
<if test="EXPENSE_COST_GOAL != null and !''.equals(EXPENSE_COST_GOAL)">
,#{EXPENSE_COST_GOAL}
</if>
,#{WRITER}
,NOW()
)ON CONFLICT (OBJID) DO
UPDATE
SET
<!--
YEAR = #{year}
,OPERATION_DIVISION_CODE = #{operation_division_code}
-->
CONTRACT_OBJID = #{CONTRACT_OBJID}
<if test="MATERIAL_COST_GOAL != null and !''.equals(MATERIAL_COST_GOAL)">
,MATERIAL_COST_GOAL = #{MATERIAL_COST_GOAL}
</if>
<if test="LABOR_COST_GOAL != null and !''.equals(LABOR_COST_GOAL)">
,LABOR_COST_GOAL = #{LABOR_COST_GOAL}
</if>
<if test="EXPENSE_COST_GOAL != null and !''.equals(EXPENSE_COST_GOAL)">
,EXPENSE_COST_GOAL = #{EXPENSE_COST_GOAL}
</if>
</update>
<!-- 투입원가 관리 -> 재료비 관리 -->
<select id="materialCostTotaltGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
T.OBJID
,T.CATEGORY_CD
,CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME
,T.CUSTOMER_OBJID
,CASE WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) ELSE (SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID::VARCHAR) END AS CUSTOMER_NAME
,T.PRODUCT
,CODE_NAME(PRODUCT) AS PRODUCT_NAME
,(SELECT O.CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
,T.STATUS_CD
,CODE_NAME(STATUS_CD) AS STATUS_NAME
,T.DUE_DATE
,T.LOCATION
,T.SETUP
,T.FACILITY
,CODE_NAME(FACILITY) AS FACILITY_NAME
,T.FACILITY_QTY
,T.FACILITY_TYPE
,T.FACILITY_DEPTH
,T.PRODUCTION_NO
,T.BUS_CAL_CD
,CODE_NAME(BUS_CAL_CD) AS BUS_CAL_NAME
,T.CATEGORY1_CD
,CODE_NAME(CATEGORY1_CD) AS CATEGORY1_NAME
,T.CHG_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CHG_USER_ID ) AS CHG_USER_NAME
,T.PLAN_DATE
,T.COMPLETE_DATE
,T.RESULT_CD
,CODE_NAME(RESULT_CD) AS RESULT_NAME
,T.PROJECT_NO
,T.PM_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = (SELECT O.PM_USER_ID FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID)) AS PM_USER_NAME
,T.CONTRACT_PRICE
,T.CONTRACT_PRICE_CURRENCY
,T.CONTRACT_CURRENCY
,CODE_NAME(CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
,T.REGDATE
,TO_CHAR(T.REGDATE,'YYYY-MM-DD') AS REG_DATE
,T.WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
,T.CONTRACT_NO
,T.CUSTOMER_EQUIP_NAME
,T.REQ_DEL_DATE
,T.CONTRACT_DEL_DATE
,T.CONTRACT_COMPANY
,CODE_NAME(CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
,T.CONTRACT_DATE
,T.PO_NO
,T.MANUFACTURE_PLANT
,CODE_NAME(MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
,T.CONTRACT_RESULT
,CODE_NAME(CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
,CODE_NAME(AREA_CD) AS AREA_NAME
,T.PROJECT_NAME
,T.MECHANICAL_TYPE
,CASE WHEN (SELECT MATERIAL_COST_GOAL FROM INPUT_COST_GOAL AS IC WHERE IC.CONTRACT_OBJID = T.OBJID) IS NULL
THEN 0
ELSE (SELECT MATERIAL_COST_GOAL FROM INPUT_COST_GOAL AS IC WHERE IC.CONTRACT_OBJID = T.OBJID)::numeric
END AS MATERIAL_COST_GOAL
,coalesce(O.ALL_TOTAL_PRICE, 0) + coalesce(O2.ALL_TOTAL_PRICE_RE, 0) + coalesce((LI.INPUT_QTY::NUMERIC * L.PRICE::NUMERIC), 0) ALL_TOTAL_PRICE
<!-- ,CASE WHEN (SELECT MATERIAL_COST_GOAL FROM INPUT_COST_GOAL AS IC WHERE IC.CONTRACT_OBJID = T.OBJID) IS NULL OR O.ALL_TOTAL_PRICE IS NULL
THEN 0
ELSE
ROUND(((SELECT MATERIAL_COST_GOAL::numeric * 100 FROM INPUT_COST_GOAL AS IC WHERE IC.CONTRACT_OBJID = T.OBJID)/ O.ALL_TOTAL_PRICE),1)
END AS MATERIAL_COST_GOAL_RATE -->
,CASE WHEN (SELECT MATERIAL_COST_GOAL::numeric FROM INPUT_COST_GOAL AS IC WHERE IC.CONTRACT_OBJID = T.OBJID) IS NULL OR O.ALL_TOTAL_PRICE IS NULL
THEN 0
ELSE
ROUND(((coalesce(O.ALL_TOTAL_PRICE,0) + coalesce(O2.ALL_TOTAL_PRICE_RE,0) + coalesce((LI.INPUT_QTY::NUMERIC * L.PRICE::NUMERIC), 0))* 100/ (SELECT MATERIAL_COST_GOAL::numeric FROM INPUT_COST_GOAL AS IC WHERE IC.CONTRACT_OBJID = T.OBJID)),1)
END AS MATERIAL_COST_GOAL_RATE
,O1.NEW_TOTAL_PRICE
,O2.ALL_TOTAL_PRICE_RE
,LI.INPUT_QTY::NUMERIC * L.PRICE::NUMERIC as LONG_TOTAL_PRICE
,PS.PS_TOTAL_PRICE
FROM PROJECT_MGMT AS T
<!-- /* 재료비(발주) */
LEFT OUTER JOIN (SELECT CONTRACT_MGMT_OBJID
,SUM(CASE WHEN TOTAL_SUPPLY_UNIT_PRICE ='' AND TOTAL_SUPPLY_UNIT_PRICE IS NULL
THEN 0 ELSE TOTAL_SUPPLY_UNIT_PRICE::FLOAT END )::numeric AS ALL_TOTAL_PRICE
FROM
(
SELECT
T1.OBJID,
T1.MULTI_MASTER_OBJID,
T1.CONTRACT_MGMT_OBJID,
T1.STATUS,
CASE
WHEN T3.TOTAL_SUPPLY_UNIT_PRICE IS NOT NULL THEN T3.PARENT_CCC
ELSE T1.TOTAL_SUPPLY_UNIT_PRICE
END AS TOTAL_SUPPLY_UNIT_PRICE
FROM
PURCHASE_ORDER_MASTER T1
LEFT JOIN
(SELECT
T2.*,
T1.TOTAL_SUPPLY_UNIT_PRICE AS PARENT_CCC
FROM
PURCHASE_ORDER_MASTER T1
LEFT JOIN PURCHASE_ORDER_MASTER T2 ON T1.OBJID = T2.MULTI_MASTER_OBJID) T3
ON T1.OBJID = T3.OBJID
) t
PURCHASE_ORDER_MASTER
WHERE CONTRACT_MGMT_OBJID IS NOT NULL
AND status='approvalComplete'
GROUP BY CONTRACT_MGMT_OBJID) AS O
ON T.OBJID= O.CONTRACT_MGMT_OBJID
-->
LEFT OUTER JOIN /* 재료비(구매봄) */
(
WITH RECURSIVE VIEW_BOM(
CONTRACT_OBJID,
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
PBR.CONTRACT_OBJID,
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
<if test="SEARCH_PROJECT_OBJID !=null and SEARCH_PROJECT_OBJID != '' ">
AND PBR.CONTRACT_OBJID = #{SEARCH_PROJECT_OBJID}
</if>
AND PBR.OBJID = A.BOM_REPORT_OBJID
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
UNION ALL
SELECT
CONTRACT_OBJID,
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
)
SELECT
B.CONTRACT_OBJID,
SUM( (NVL(SP.PRICE, '0')::NUMERIC+NVL(SP.PRICE1, '0')::NUMERIC+NVL(SP.PRICE2, '0')::NUMERIC+NVL(SP.PRICE3, '0')::NUMERIC+NVL(SP.PRICE4, '0')::NUMERIC) * V.AGGREGATE_QTY ) AS ALL_TOTAL_PRICE
<!--
SUM( NVL(SP.PRICE_SUM, '0')::NUMERIC ) AS ALL_TOTAL_PRICE
-->
FROM PART_BOM_REPORT B
,SALES_BOM_REPORT SB
,SALES_BOM_REPORT_PART SP
,VIEW_BOM V
WHERE 1=1
<!--
AND B.CONTRACT_OBJID = T.OBJID
-->
AND B.OBJID = SB.PARENT_OBJID
AND B.OBJID = SP.PARENT_OBJID
AND BOM_PART_QTY_OBJID = V.CHILD_OBJID
GROUP BY B.CONTRACT_OBJID
) AS O
ON T.OBJID = O.CONTRACT_OBJID
LEFT OUTER JOIN (
SELECT CONTRACT_MGMT_OBJID
,SUM(CASE WHEN TOTAL_SUPPLY_UNIT_PRICE ='' AND TOTAL_SUPPLY_UNIT_PRICE IS NULL
THEN 0 ELSE TOTAL_SUPPLY_UNIT_PRICE::FLOAT END )::numeric AS NEW_TOTAL_PRICE
FROM PURCHASE_ORDER_MASTER
WHERE CONTRACT_MGMT_OBJID IS NOT NULL
AND ORDER_TYPE_CD='0001407'
AND status='approvalComplete'
GROUP BY CONTRACT_MGMT_OBJID
) AS O1
ON T.OBJID= O1.CONTRACT_MGMT_OBJID
LEFT OUTER JOIN (
SELECT CONTRACT_MGMT_OBJID
,SUM(CASE WHEN TOTAL_SUPPLY_UNIT_PRICE ='' AND TOTAL_SUPPLY_UNIT_PRICE IS NULL
THEN 0 ELSE TOTAL_SUPPLY_UNIT_PRICE::FLOAT END )::numeric AS ALL_TOTAL_PRICE_RE
FROM PURCHASE_ORDER_MASTER
WHERE CONTRACT_MGMT_OBJID IS NOT NULL
AND ORDER_TYPE_CD='0001408'
AND status='approvalComplete'
GROUP BY CONTRACT_MGMT_OBJID
) AS O2
ON T.OBJID= O2.CONTRACT_MGMT_OBJID
LEFT OUTER JOIN (
SELECT
CONTRACT_MGMT_OBJID
,SUM(LONG_TOTAL_PRICE) AS PS_TOTAL_PRICE
FROM
(SELECT
*
,OUT_QTY * ALL_TOTAL_PRICE as LONG_TOTAL_PRICE
FROM
(SELECT
IM.*
,PBR.OBJID
,NVL(SP.PRICE, '0')::NUMERIC+NVL(SP.PRICE1, '0')::NUMERIC+NVL(SP.PRICE2, '0')::NUMERIC+NVL(SP.PRICE3, '0')::NUMERIC+NVL(SP.PRICE4, '0')::NUMERIC AS ALL_TOTAL_PRICE
FROM (
SELECT
CONTRACT_MGMT_OBJID
,IMO.UNIT
,IM.PART_OBJID
,SUM(NVL(OUT_QTY, '0')::NUMERIC) as OUT_QTY
FROM INVENTORY_MGMT_OUT IMO
LEFT OUTER JOIN INVENTORY_MGMT IM
ON IM.OBJID = IMO.PARENT_OBJID
LEFT OUTER JOIN PART_MNG PM
ON PM.OBJID = IM.PART_OBJID
WHERE PM.PART_TYPE = '0001788'
GROUP BY CONTRACT_MGMT_OBJID, IMO.UNIT, IM.PART_OBJID
) IM
LEFT OUTER JOIN PART_BOM_REPORT PBR
ON PBR.CONTRACT_OBJID = IM.CONTRACT_MGMT_OBJID
AND PBR.UNIT_CODE = IM.UNIT
LEFT OUTER JOIN SALES_BOM_REPORT SBR
ON SBR.PARENT_OBJID = PBR.OBJID
LEFT OUTER JOIN SALES_BOM_REPORT_PART SP
ON SP.PART_OBJID = IM.PART_OBJID ) T ) T
GROUP BY CONTRACT_MGMT_OBJID
) PS
ON PS.CONTRACT_MGMT_OBJID = T.OBJID
LEFT OUTER JOIN SALES_LONG_DELIVERY_INPUT LI
ON T.OBJID= LI.CONTRACT_OBJID
AND NVL(INPUT_QTY, '') != ''
LEFT OUTER JOIN SALES_LONG_DELIVERY L
ON L.OBJID= LI.PARENT_OBJID
AND NVL(PRICE, '') != ''
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND T.OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND T.OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="category_cd !=null and category_cd != '' ">
AND category_cd = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND CUSTOMER_OBJID = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND product = #{product}
</if>
<if test="status_cd !=null and status_cd !=''">
AND status_cd = #{status_cd}
</if>
<if test="result_cd !=null and result_cd !=''">
AND result_cd = #{result_cd}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(DUE_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(DUE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
<if test="pm_user_id !=null and pm_user_id !=''">
AND pm_user_id = #{pm_user_id}
</if>
<if test="location != null and !''.equals(location)">
AND UPPER(LOCATION) LIKE UPPER('%${location}%')
</if>
<if test="setup != null and !''.equals(setup)">
AND UPPER(SETUP) LIKE UPPER('%${setup}%')
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
</select>
<!-- 투입원가 관리_현황 -->
<select id="costTotaltGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
T.OBJID
,CATEGORY_CD
,CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME
,CUSTOMER_OBJID
,CASE WHEN T.CUSTOMER_OBJID LIKE 'C_%' THEN (SELECT CLIENT_NM FROM CLIENT_MNG AS C WHERE 'C_' || C.OBJID::VARCHAR = T.CUSTOMER_OBJID) ELSE (SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID::VARCHAR) END AS CUSTOMER_NAME
,PRODUCT
,CODE_NAME(PRODUCT) AS PRODUCT_NAME
,(SELECT O.CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
,STATUS_CD
,CODE_NAME(STATUS_CD) AS STATUS_NAME
,DUE_DATE
,T.LOCATION
,SETUP
,FACILITY
,CODE_NAME(FACILITY) AS FACILITY_NAME
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CODE_NAME(BUS_CAL_CD) AS BUS_CAL_NAME
,CATEGORY1_CD
,CODE_NAME(CATEGORY1_CD) AS CATEGORY1_NAME
,CHG_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CHG_USER_ID ) AS CHG_USER_NAME
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,CODE_NAME(RESULT_CD) AS RESULT_NAME
,PROJECT_NO
,PM_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = (SELECT O.PM_USER_ID FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID)) AS PM_USER_NAME
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,CODE_NAME(CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
,T.REGDATE
,TO_CHAR(T.REGDATE,'YYYY-MM-DD') AS REG_DATE
,T.WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CODE_NAME(CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
,CONTRACT_DATE
,PO_NO
,MANUFACTURE_PLANT
,CODE_NAME(MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
,CONTRACT_RESULT
,CODE_NAME(CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
,CODE_NAME(AREA_CD) AS AREA_NAME
,PROJECT_NAME
,MECHANICAL_TYPE
,coalesce(ICG.MATERIAL_COST_GOAL::numeric, 0) AS MATERIAL_COST_GOAL
,coalesce(ICG.LABOR_COST_GOAL::numeric, 0) AS LABOR_COST_GOAL
,coalesce(ICG.EXPENSE_COST_GOAL::numeric, 0) AS EXPENSE_COST_GOAL
,coalesce((ICG.MATERIAL_COST_GOAL::numeric + ICG.LABOR_COST_GOAL::numeric + ICG.EXPENSE_COST_GOAL::numeric), 0) AS TOTAL_COST_GOAL
,coalesce(EP.SETTLE_AMOUNT, 0) AS ACCRUAL_EXPENSE
,CASE WHEN coalesce(ICG.EXPENSE_COST_GOAL::numeric, 0) = 0 then 0
ELSE round(((EP.SETTLE_AMOUNT::float / EXPENSE_COST_GOAL::numeric) * 100)::numeric ,1)
END EXPENSE_RATE
,LC.LABOR_COST_ACTUAL
,CASE WHEN coalesce(ICG.LABOR_COST_GOAL::numeric, 0) = 0 then 0
ELSE round(((LC.LABOR_COST_ACTUAL::float / ICG.LABOR_COST_GOAL::numeric)*100)::numeric,1)
END LABOR_INPUT_RATE
,(coalesce(O.ALL_TOTAL_PRICE::numeric, 0) + coalesce(O2.ALL_TOTAL_PRICE_RE::numeric, 0) +coalesce((LI.INPUT_QTY::NUMERIC * L.PRICE::NUMERIC), 0) ) AS ACCRUAL_MATERIAL_COST
<!--
,CASE WHEN coalesce(ICG.MATERIAL_COST_GOAL::numeric, 0) = 0 then 0
ELSE round((( (coalesce(O.ALL_TOTAL_PRICE::numeric, 0) + coalesce(O2.ALL_TOTAL_PRICE_RE::numeric, 0) + coalesce((LI.INPUT_QTY::NUMERIC * L.PRICE::NUMERIC), 0) ) / MATERIAL_COST_GOAL::numeric)*100)::numeric,1)
END MATERIAL_COST_GOAL_RATE
-->
,CASE WHEN coalesce(CONTRACT_PRICE::numeric, 0) = 0 then 0
ELSE round((( (coalesce(O.ALL_TOTAL_PRICE::numeric, 0) + coalesce(O2.ALL_TOTAL_PRICE_RE::numeric, 0) + coalesce((LI.INPUT_QTY::NUMERIC * L.PRICE::NUMERIC), 0) ) / CONTRACT_PRICE::numeric)*100)::numeric,1)
END MATERIAL_COST_GOAL_RATE
,(coalesce(EP.SETTLE_AMOUNT, 0) + LC.LABOR_COST_ACTUAL + (coalesce(O.ALL_TOTAL_PRICE::numeric, 0) + coalesce(O2.ALL_TOTAL_PRICE_RE::numeric, 0) +coalesce((LI.INPUT_QTY::NUMERIC * L.PRICE::NUMERIC), 0) )) as TOTAL_COST_ACTUAL
,CASE WHEN coalesce((ICG.MATERIAL_COST_GOAL::numeric + ICG.LABOR_COST_GOAL::numeric + ICG.EXPENSE_COST_GOAL::numeric), 0) = 0 then 0
ELSE round((((coalesce(EP.SETTLE_AMOUNT, 0) + LC.LABOR_COST_ACTUAL + (coalesce(O.ALL_TOTAL_PRICE::numeric, 0) + coalesce(O2.ALL_TOTAL_PRICE_RE::numeric, 0) +coalesce((LI.INPUT_QTY::NUMERIC * L.PRICE::NUMERIC), 0)))::float / (ICG.MATERIAL_COST_GOAL::numeric + ICG.LABOR_COST_GOAL::numeric + ICG.EXPENSE_COST_GOAL::numeric))*100)::numeric,1)
END TOTAL_INPUT_RATE
,CASE WHEN coalesce((ICG.MATERIAL_COST_GOAL::numeric + ICG.LABOR_COST_GOAL::numeric + ICG.EXPENSE_COST_GOAL::numeric), 0) = '0' then 0
ELSE round((( (coalesce(O.ALL_TOTAL_PRICE::numeric, 0) + coalesce(O2.ALL_TOTAL_PRICE_RE::numeric, 0) +coalesce((LI.INPUT_QTY::NUMERIC * L.PRICE::NUMERIC), 0)) / coalesce((ICG.MATERIAL_COST_GOAL::numeric + ICG.LABOR_COST_GOAL::numeric + ICG.EXPENSE_COST_GOAL::numeric), 0)::float) * 100)::numeric ,1)
END MC_RATE
<!-- ,CASE WHEN coalesce(CONTRACT_PRICE, '0') = '0' then 0
ELSE round((( (coalesce(O.ALL_TOTAL_PRICE::numeric, 0) + coalesce(O2.ALL_TOTAL_PRICE_RE::numeric, 0) +coalesce((LI.INPUT_QTY::NUMERIC * L.PRICE::NUMERIC), 0)) / CONTRACT_PRICE::float) * 100)::numeric ,1)
END MC_RATE -->
FROM
PROJECT_MGMT AS T
LEFT OUTER JOIN INPUT_COST_GOAL ICG /* 목표가 */
ON T.OBJID = ICG.CONTRACT_OBJID
LEFT OUTER JOIN SALES_LONG_DELIVERY_INPUT LI
ON T.OBJID= LI.CONTRACT_OBJID
AND NVL(INPUT_QTY, '') != ''
LEFT OUTER JOIN SALES_LONG_DELIVERY L
ON L.OBJID= LI.PARENT_OBJID
AND NVL(PRICE, '') != ''
LEFT OUTER JOIN /* 재료비(구매봄) */
(
WITH RECURSIVE VIEW_BOM(
CONTRACT_OBJID,
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
PBR.CONTRACT_OBJID,
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
<if test="SEARCH_PROJECT_OBJID !=null and SEARCH_PROJECT_OBJID != '' ">
AND PBR.CONTRACT_OBJID = #{SEARCH_PROJECT_OBJID}
</if>
AND PBR.OBJID = A.BOM_REPORT_OBJID
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
UNION ALL
SELECT
CONTRACT_OBJID,
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
)
SELECT
B.CONTRACT_OBJID,
SUM( (NVL(SP.PRICE, '0')::NUMERIC+NVL(SP.PRICE1, '0')::NUMERIC+NVL(SP.PRICE2, '0')::NUMERIC+NVL(SP.PRICE3, '0')::NUMERIC+NVL(SP.PRICE4, '0')::NUMERIC) * V.AGGREGATE_QTY ) AS ALL_TOTAL_PRICE
<!--
SUM( NVL(SP.PRICE_SUM, '0')::NUMERIC ) AS ALL_TOTAL_PRICE
-->
FROM PART_BOM_REPORT B
,SALES_BOM_REPORT SB
,SALES_BOM_REPORT_PART SP
,VIEW_BOM V
WHERE 1=1
<!--
AND B.CONTRACT_OBJID = T.OBJID
-->
AND B.OBJID = SB.PARENT_OBJID
AND B.OBJID = SP.PARENT_OBJID
AND BOM_PART_QTY_OBJID = V.CHILD_OBJID
GROUP BY B.CONTRACT_OBJID) AS O
ON T.OBJID = O.CONTRACT_OBJID
LEFT OUTER JOIN /* 재료비(재발주) */
(SELECT
CONTRACT_MGMT_OBJID,
SUM(CASE WHEN NVL(TOTAL_SUPPLY_UNIT_PRICE, '') = '' THEN 0 ELSE TOTAL_SUPPLY_UNIT_PRICE::FLOAT END )::numeric AS ALL_TOTAL_PRICE_RE
FROM PURCHASE_ORDER_MASTER
WHERE CONTRACT_MGMT_OBJID IS NOT NULL
AND status='approvalComplete'
AND ORDER_TYPE_CD = '0001408'
GROUP BY CONTRACT_MGMT_OBJID) AS O2
ON T.OBJID= O2.CONTRACT_MGMT_OBJID
<!--
LEFT OUTER JOIN /* 재료비(발주) */
(SELECT
CONTRACT_MGMT_OBJID,
SUM(CASE WHEN TOTAL_SUPPLY_UNIT_PRICE ='' AND TOTAL_SUPPLY_UNIT_PRICE IS null THEN 0 ELSE TOTAL_SUPPLY_UNIT_PRICE::FLOAT END )::numeric AS ALL_TOTAL_PRICE
FROM PURCHASE_ORDER_MASTER
WHERE CONTRACT_MGMT_OBJID IS NOT NULL
AND status='approvalComplete'
GROUP BY CONTRACT_MGMT_OBJID) AS O
ON T.OBJID= O.CONTRACT_MGMT_OBJID
LEFT OUTER JOIN /* 재료비(재고) */
(SELECT
CONTRACT_MGMT_OBJID,
SUM( NVL(BOM_QTY, '0')::NUMERIC - NVL(ORDER_QTY, '0')::NUMERIC )::numeric AS STOCK_PRICE
FROM PURCHASE_ORDER_MASTER M
,PURCHASE_ORDER_PART P
WHERE CONTRACT_MGMT_OBJID IS NOT NULL
AND 。STATUS='approvalComplete'
AND M.OBJID = P.PURCHASE_ORDER_MASTER_OBJID
AND NVL(STOCK_QTY, '0')::NUMERIC > 0
AND NVL(BOM_QTY, '0')::NUMERIC - NVL(ORDER_QTY, '0')::NUMERIC > 0
GROUP BY CONTRACT_MGMT_OBJID) AS O
ON T.OBJID= O.CONTRACT_MGMT_OBJID
-->
LEFT OUTER JOIN /* 경비 */
(SELECT
PROJECT_MGMT_OBJID,
SUM(A.SETTLE_AMOUNT) AS SETTLE_AMOUNT
FROM
(SELECT
M.*,
SUM(D.CARD_USED::numeric) + SUM(D.CASH_USED::numeric) - SUM(D.PAYMENT::numeric) AS SETTLE_AMOUNT
FROM
EXPENSE_MASTER M
LEFT OUTER JOIN EXPENSE_DETAIL D
ON M.EXPENSE_MASTER_OBJID = D.EXPENSE_MASTER_OBJID
GROUP BY M.EXPENSE_MASTER_OBJID) A
GROUP BY PROJECT_MGMT_OBJID) AS EP
ON EP.PROJECT_MGMT_OBJID = T.OBJID
/* 노무비 */
LEFT OUTER JOIN
(SELECT
RELTMP.OBJID
, (COALESCE(LABOR_DESIGN_COST, 0) + COALESCE(LABOR_ASSEMBLY_COST, 0) <!-- + COALESCE(LABOR_SETUP_COST, 0) -->) AS LABOR_COST_ACTUAL
FROM(
SELECT
TMP.*
<![CDATA[
,CASE WHEN TMP.DESIGN_ACT_START IS NOT NULL AND TMP.DESIGN_ACT_END IS NOT NULL
AND TRIM(TMP.DESIGN_ACT_START) <> '' AND TRIM(TMP.DESIGN_ACT_END) <> ''
THEN TO_DATE(TMP.DESIGN_ACT_END, 'YYYY-MM-DD') - TO_DATE(TMP.DESIGN_ACT_START, 'YYYY-MM-DD')
ELSE NULL
END AS LABOR_DESIGN_INPUT_NUMBER,
CASE WHEN TMP.DESIGN_ACT_START IS NOT NULL AND TMP.DESIGN_ACT_END IS NOT NULL
AND TRIM(TMP.DESIGN_ACT_START) <> '' AND TRIM(TMP.DESIGN_ACT_END) <> ''
THEN ((TO_DATE(TMP.DESIGN_ACT_END,'YYYY-MM-DD') - TO_DATE(TMP.DESIGN_ACT_START,'YYYY-MM-DD')) * 300000)
ELSE NULL
END AS LABOR_DESIGN_COST
]]>
<!-- ,LABOR_DESIGN_INPUT_NUMBER * 300000 AS LABOR_DESIGN_COST -->
,(INSOURCING + OUTSOURCING)/8::numeric AS LABOR_ASSEMBLY_INPUT_NUMBER
,(INSOURCING / 8 * 250000 + OUTSOURCING / 8 * 350000) AS LABOR_ASSEMBLY_COST
<!-- ,(INSOURCING * 250000 + OUTSOURCING * 350000) AS LABOR_ASSEMBLY_COST -->
FROM (
SELECT
PM.OBJID,
PM.PROJECT_NO,
TMP.DESIGN_ACT_START,
TMP.DESIGN_ACT_END,
coalesce(D.WORK_HOUR , '0') as LABOR_DESIGN_INPUT_NUMBER, /*설계*/
coalesce(P.WORK_HOUR , '0') as INSOURCING, /*생산*/
coalesce(O.WORK_HOUR , '0') as OUTSOURCING /*외주*/
<!-- TMP2.INSOURCING,
TMP2.OUTSOURCING, -->
<!-- TMP3.EMPLOYEES_IN,
TMP3.EMPLOYEES_OUT -->
FROM
PROJECT_MGMT AS PM
LEFT OUTER JOIN /* 설계노무비 */
(SELECT
CONTRACT_OBJID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT014','DPT006')
GROUP BY CONTRACT_OBJID, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS D
ON D.CONTRACT_OBJID = PM.OBJID
LEFT JOIN (
SELECT
PWT.CONTRACT_OBJID,
MIN(PWT.DESIGN_ACT_START) AS DESIGN_ACT_START,
MAX(PWT.DESIGN_ACT_END) AS DESIGN_ACT_END
FROM
PMS_WBS_TASK AS PWT
INNER JOIN PROJECT_MGMT PM ON PM.OBJID = PWT.CONTRACT_OBJID
GROUP BY
PWT.CONTRACT_OBJID
) TMP ON PM.OBJID = TMP.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT005','DPT023','DPT013')
GROUP BY CONTRACT_OBJID, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS P
ON P.CONTRACT_OBJID = PM.OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND SOURCING_TYPE = 'outsourcing'
GROUP BY CONTRACT_OBJID ) AS O
ON O.CONTRACT_OBJID = PM.OBJID
<!-- LEFT JOIN (
SELECT
PBR.CONTRACT_OBJID
,SUM(CASE WHEN INSOURCING = '' AND INSOURCING IS NOT NULL THEN '0' ELSE INSOURCING END ::numeric) AS INSOURCING
,SUM(CASE WHEN OUTSOURCING = '' AND OUTSOURCING IS NOT NULL THEN '0' ELSE OUTSOURCING END ::numeric) AS OUTSOURCING
FROM
ASSEMBLY_WBS_TASK AS A
INNER JOIN PART_BOM_REPORT AS PBR ON A.PARENT_OBJID = PBR.OBJID
GROUP BY PBR.CONTRACT_OBJID
) TMP2 ON PM.OBJID = TMP2.CONTRACT_OBJID -->
<!-- LEFT JOIN (
SELECT
SWT.CONTRACT_OBJID
, SUM(COALESCE(EMPLOYEES_IN,'0')::numeric) AS EMPLOYEES_IN
, SUM(COALESCE(EMPLOYEES_OUT,'0')::numeric) AS EMPLOYEES_OUT
FROM SETUP_WBS_TASK AS SWT
GROUP BY SWT.CONTRACT_OBJID
) TMP3 ON PM.OBJID = TMP3.CONTRACT_OBJID -->
WHERE 1=1
) TMP
) RELTMP
WHERE 1 = 1 ) AS LC
ON LC.OBJID = T.OBJID
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(T.REGDATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND T.OBJID = #{project_no}
</if> -->
<if test="PROJECT_NO !=null and PROJECT_NO != '' ">
AND T.OBJID = #{PROJECT_NO}
</if>
<if test="project_nos != null and project_nos != ''">
AND T.OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="category_cd !=null and category_cd != '' ">
AND category_cd = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND CUSTOMER_OBJID = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND product = #{product}
</if>
<if test="status_cd !=null and status_cd !=''">
AND status_cd = #{status_cd}
</if>
<if test="result_cd !=null and result_cd !=''">
AND result_cd = #{result_cd}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(DUE_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(DUE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
<if test="pm_user_id !=null and pm_user_id !=''">
AND T.PM_USER_ID = #{pm_user_id}
</if>
<if test="location != null and !''.equals(location)">
AND UPPER(LOCATION) LIKE UPPER('%${location}%')
</if>
<if test="setup != null and !''.equals(setup)">
AND UPPER(SETUP) LIKE UPPER('%${setup}%')
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
</select>
<!-- 유닛별 상세 -->
<select id="getpurchaseUnitList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
T.CONTRACT_MGMT_OBJID
,UNIT_CODE
,(SELECT TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME
,(SELECT SUM(CASE WHEN O.TOTAL_SUPPLY_UNIT_PRICE ='' AND O.TOTAL_SUPPLY_UNIT_PRICE IS NULL THEN 0 ELSE O.TOTAL_SUPPLY_UNIT_PRICE::FLOAT END) AS ALL_SUM
FROM PURCHASE_ORDER_MASTER AS O WHERE O.UNIT_CODE = T.UNIT_CODE AND O.CONTRACT_MGMT_OBJID = T.CONTRACT_MGMT_OBJID AND O.status='approvalComplete') AS ALL_SUM
,(SELECT SUM(CASE WHEN O.TOTAL_SUPPLY_UNIT_PRICE ='' AND O.TOTAL_SUPPLY_UNIT_PRICE IS NULL THEN 0 ELSE O.TOTAL_SUPPLY_UNIT_PRICE::FLOAT END) AS ALL_SUM
FROM PURCHASE_ORDER_MASTER AS O WHERE O.UNIT_CODE = T.UNIT_CODE AND O.CONTRACT_MGMT_OBJID = T.CONTRACT_MGMT_OBJID AND O.ORDER_TYPE_CD='0001407' AND O.status='approvalComplete') AS NEW_TOTAL_PRICE
,(SELECT SUM(CASE WHEN O.TOTAL_SUPPLY_UNIT_PRICE ='' AND O.TOTAL_SUPPLY_UNIT_PRICE IS NULL THEN 0 ELSE O.TOTAL_SUPPLY_UNIT_PRICE::FLOAT END) AS ALL_SUM
FROM PURCHASE_ORDER_MASTER AS O WHERE O.UNIT_CODE = T.UNIT_CODE AND O.CONTRACT_MGMT_OBJID = T.CONTRACT_MGMT_OBJID AND O.ORDER_TYPE_CD='0001408' AND O.status='approvalComplete') AS RE_TOTAL_PRICE
FROM PURCHASE_ORDER_MASTER AS T
WHERE CONTRACT_MGMT_OBJID = #{CONTRACT_MGMT_OBJID}
GROUP BY CONTRACT_MGMT_OBJID,UNIT_CODE
</select>
<update id="expenseConfirm" parameterType="map">
UPDATE EXPENSE_MASTER SET
STATUS = 'complete'
,PAYMENT_DATE = #{PAYMENT_DATE}
,AMOUNT_PAYMENT = #{AMOUNT_PAYMENT}
,REMARK = #{REMARK}
WHERE EXPENSE_MASTER_OBJID = #{OBJID}
</update>
</mapper>