4396 lines
170 KiB
XML
4396 lines
170 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||
<mapper namespace="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 M。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>
|