Plan - Line - DT Query Before Period Status Change
Plan - Line - DT Query Before Period Status Change
WITH PLAN_ELEMENT AS
(
SELECT
ppe.project_id
,ppe.PLAN_VERSION_ID
,PPE.PLANNING_ELEMENT_ID
,ppe.TASK_ID
,ppe.RBS_ELEMENT_ID
,ppe.PLANNING_START_DATE
,ppe.PLANNING_END_DATE
,ppe.PROJ_ELEMENT_VERSION_ID
,ppe.ORGANIZATION_ID
,ppe.person_id
,ppl.TOTAL_QUANTITY
,PPL.TC_BILL_RATE_OVERRIDE
,peb.element_number TASK_NUMBER
,pet.name TASK_NAME
,ppl.PLAN_LINE_ID
,ppe.last_update_date
,ppl.TOTAL_ACT_QUANTITY
,PPL.TOTAL_TC_ACT_REVENUE
,PPL.ATTRIBUTE1 Rate
,ppe.RATE_EXPENDITURE_ORG_ID
FROM
pjo_planning_elements ppe
,PJO_PLAN_LINES ppl
,PJF_PROJ_ELEMENTS_B peb
,pjf_proj_elements_tl pet
WHERE 1=1
and ppe.PLANNING_ELEMENT_ID = ppl.PLANNING_ELEMENT_ID
and ppe.TASK_ID = peb.PROJ_ELEMENT_ID
and peb.PROJ_ELEMENT_ID = pet.PROJ_ELEMENT_ID
and pet.language = userenv('LANG')
)
,BILL_RATE AS
(
select
rate.RATE_USE_CODE
,rate.PROJECT_ID
,rate.TASK_ID
,rate.PERSON_ID
,rate.RATE
from
PJF_RATE_OVERRIDES rate
where 1=1
and rate.RATE_USE_CODE = 'B'
and rate.person_id is not null
)
,EMPLOYEE AS
(
SELECT PAPF.PERSON_ID
,PPNF.FIRST_NAME
,PPNF.LAST_NAME
,PPNF.DISPLAY_NAME
,PPNF.FULL_NAME
,PAAM.ASSIGNMENT_ID
,PAAM.NORMAL_HOURS
,PAAM.BUSINESS_UNIT_ID
,PAAM.ORGANIZATION_ID
,PAAM.EFFECTIVE_START_DATE
,PAAM.EFFECTIVE_END_DATE
,PPOS.DATE_START
,NVL(PPOS.ACTUAL_TERMINATION_DATE,TO_DATE('31-12-4712','DD-MM-YYYY'))
ACTUAL_TERMINATION_DATE
FROM
PER_ALL_PEOPLE_F PAPF
,PER_PERSON_NAMES_F PPNF
,PER_PERIODS_OF_SERVICE PPOS
,PER_ALL_ASSIGNMENTS_M PAAM
WHERE 1=1
AND TRUNC(SYSDATE) BETWEEN PAPF.EFFECTIVE_START_DATE AND PAPF.EFFECTIVE_END_DATE
AND PAPF.PERSON_ID = PPNF.PERSON_ID
AND PPNF.NAME_TYPE = 'GLOBAL'
AND TRUNC(SYSDATE) BETWEEN PPNF.EFFECTIVE_START_DATE AND PPNF.EFFECTIVE_END_DATE
AND PAPF.PERSON_ID = PPOS.PERSON_ID
AND PPOS.PERIOD_TYPE IN ('C','E')
AND PPOS.PERIOD_OF_SERVICE_ID = PAAM.PERIOD_OF_SERVICE_ID
AND TRUNC(SYSDATE) BETWEEN PAAM.EFFECTIVE_START_DATE AND PAAM.EFFECTIVE_END_DATE
AND PAAM.ASSIGNMENT_TYPE IN ('C','E')
AND PAAM.PRIMARY_FLAG = 'Y'
AND PAAM.EFFECTIVE_LATEST_CHANGE = 'Y'
)
,PERIODS_GL AS
(
select
gp.PERIOD_NAME
,gp.START_DATE
,gp.END_DATE
,gp.PERIOD_SET_NAME
,decode(to_char(gp.END_DATE,'MM')
,'01','JAN-'
,'02','FEB-'
,'03','MAR-'
,'04','APR-'
,'05','MAY-'
,'06','JUN-'
,'07','JUL-'
,'08','AUG-'
,'09','SEP-'
,'10','OCT-'
,'11','NOV-'
,'12','DEC-')||to_char(gp.END_DATE,'YYYY') C_PERIOD_NAME
FROM
GL_PERIODS GP
)
,PERIODS_PA AS
(
select
PPA.PERIOD_NAME
,PPA.START_DATE
,PPA.END_DATE
,PPA.ORG_ID
,PPA.GL_PERIOD_NAME
,TO_CHAR(PPA.START_DATE,'fmddth')||'-'||to_char(PPA.END_DATE,'fmddth')
C_PERIOD_NAME
FROM
PJF_PERIODS_ALL PPA
)
,PERIOD as
(
select PLAN_ELEMENT.project_id
,PLAN_ELEMENT.PLAN_VERSION_ID
,PLAN_ELEMENT.PLANNING_ELEMENT_ID
,PLAN_ELEMENT.RBS_ELEMENT_ID
,PLAN_ELEMENT.person_id
,PLAN_ELEMENT.PLAN_LINE_ID
,PLAN_ELEMENT.task_id
--,BILL_RATE.rate
,NVL(BILL_RATE.RATE,PLAN_ELEMENT.RATE) rate
--PLAN_ELEMENT.RATE DFF_RATE
--
--CASE WHEN BILL_RATE.RATE IS NULL
-- AND PLAN_ELEMENT.RATE is not null THEN
-- 'DFF_RATE'
-- WHEN BILL_RATE.RATE IS not NULL
-- AND PLAN_ELEMENT.RATE is null THEN
-- 'BILL_RATE_OVERRIDES'
--
--ELSE '0'
--END BILL_RATE_TYPE
,EMPLOYEE.NORMAL_HOURS
,EMPLOYEE.ASSIGNMENT_ID
,PERIODS_PA.PERIOD_NAME PA_PERIOD_NAME
,PERIODS_PA.START_DATE PA_PERIOD_START_DATE
,PERIODS_PA.END_DATE PA_PERIOD_END_DATE
,PLAN_ELEMENT.TOTAL_TC_ACT_REVENUE
from PLAN_ELEMENT
,BILL_RATE
,EMPLOYEE
,PERIODS_GL
,PERIODS_PA
,pjf_projects_all_b pp
where 1=1
AND PLAN_ELEMENT.PERSON_ID = BILL_RATE.PERSON_ID(+)
and PLAN_ELEMENT.PROJECT_ID = BILL_RATE.PROJECT_ID(+)
and PLAN_ELEMENT.task_id = BILL_RATE.task_id(+)
SELECT
PLAN_VERSION_ID
,PROJECT_ID
,RBS_ELEMENT_ID
,PA_PERIOD_NAME
,PLANNED_REVENUE
,BILL_RATE
--,DFF_RATE
--,BILL_RATE_TYPE
,PLANNED_HOURS
,PERSON_ID
,PA_PERIOD_START_DATE
,PA_PERIOD_END_DATE
,(NVL(NORMAL_HOURS,0) - NVL(OTHER_HOURS,0) - NVL(PTO_HOURS,0)) CAPACITY_HOURS
,ACTUAL_REVENUE
,ACTUAL_HOURS
,PLAN_LINE_DETAIL_ID
,PLANNING_ELEMENT_ID
,PLAN_LINE_ID
,WORKING_DAYS
,BASELINED_HOURS
FROM
(
SELECT PERIOD.project_id
,PERIOD.PLAN_VERSION_ID
,PERIOD.PLANNING_ELEMENT_ID
,PERIOD.RBS_ELEMENT_ID
,PERIOD.person_id
,PERIOD.PLAN_LINE_ID
,PERIOD.PA_PERIOD_NAME
,PERIOD.PA_PERIOD_START_DATE
,PERIOD.PA_PERIOD_END_DATE
,PERIOD.NORMAL_HOURS
,PERIOD.rate BILL_RATE
--,PERIOD.DFF_RATE
--,PERIOD.BILL_RATE_TYPE
,PERIOD.RATE*PPLD.QUANTITY PLANNED_REVENUE
,ppld.PLAN_LINE_DETAIL_ID
,nvl(PPLD.QUANTITY,0) PLANNED_HOURS
--,(select SUM(pbt.REV_CURR_TXN_AMT)
-- from PJB_BILL_TRXS pbt
-- ,pjc_exp_items_all pei
-- where 1=1
-- and pbt.LINKED_PROJECT_ID = PERIOD.PROJECT_ID
-- AND pbt.transaction_id = pei.expenditure_item_id
-- AND pei.INCURRED_BY_PERSON_ID = PERIOD.person_id
-- and pbt.TRANSACTION_DATE between ppld.START_DATE and ppld.END_DATE)
ACTUAL_REVENUE
,(select SUM(pei.QUANTITY)
from pjc_exp_items_all pei
,PJB_BILL_TRXS pbt
where 1=1
and pei.PROJECT_ID = PERIOD.PROJECT_ID
and pei.expenditure_item_id = pbt.transaction_id
AND pei.INCURRED_BY_PERSON_ID = PERIOD.person_id
and pbt.TRANSACTION_DATE between ppld.START_DATE and ppld.END_DATE)
ACTUAL_HOURS
,(select sum(ppld1.QUANTITY)
from
PJO_PLAN_LINE_DETAILS PPLD1
,PJO_PLANNING_ELEMENTS PPE1
,PJO_PLAN_VERSIONS_B pvb1
,PJO_PLAN_TYPES_TL pptt1
where 1=1
and ppe1.PLANNING_ELEMENT_ID = ppld1.PLANNING_ELEMENT_ID
and ppe1.PERSON_ID = PERIOD.PERSON_ID
and pvb1.PLAN_STATUS_CODE = 'W'
and pvb1.CURRENT_PLAN_STATUS_FLAG = 'Y'
AND Pvb1.PLAN_CLASS_CODE = 'BUDGET'
and pvb1.PLAN_TYPE_ID = pptt1.PLAN_TYPE_ID
AND pptt1.LANGUAGE=USERENV('LANG')
and PPTt1.name = 'Labor Project Plan Type'
and pvb1.PLAN_VERSION_ID = ppe1.PLAN_VERSION_ID
and ppld1.period_name = ppld.PERIOD_NAME) other_hours
,CASE WHEN period.person_id is null then '5' else (SELECT to_char(COUNT(*)) FROM
PER_AVAILABILITY_DETAILS.GET_SCHEDULE_DETAILS('ASSIGN',PERIOD.ASSIGNMENT_ID,PERIOD.
PA_PERIOD_START_DATE,PERIOD.PA_PERIOD_END_DATE+1) WHERE OBJECT_CATEGORY <> 'PH')
END WORKING_DAYS
,(SELECT ppld2.QUANTITY
from
PJO_PLAN_VERSIONS_B PPV
,PJO_PLAN_TYPES_TL pptt
,PJO_PLANNING_ELEMENTS PPE1
,PJO_PLAN_LINE_DETAILS PPLD2
where 1=1
and PPV.PROJECT_ID = PERIOD.PROJECT_ID
AND PPV.PLAN_STATUS_CODE = 'B'
AND PPV.CURRENT_PLAN_STATUS_FLAG = 'Y'
AND PPV.PLAN_CLASS_CODE = 'BUDGET'
AND PPV.PLAN_TYPE_ID = pptt.PLAN_TYPE_ID
AND PPTT.LANGUAGE=USERENV('LANG')
AND PPTT.NAME = 'Labor Project Plan Type'
and PPV.PLAN_VERSION_ID = PPE1.PLAN_VERSION_ID
and ppe1.PLANNING_ELEMENT_ID = PPLD2.PLANNING_ELEMENT_ID
and ppe1.TASK_ID = PERIOD.TASK_ID
and ppe1.PERSON_ID = PERIOD.PERSON_ID
and ppld2.period_name = ppld.PERIOD_NAME
and rownum<2) BASELINED_HOURS
,PERIOD.TOTAL_TC_ACT_REVENUE ACTUAL_REVENUE
FROM PERIOD
,PJO_PLAN_LINE_DETAILS ppld
where 1=1
and PERIOD.PLANNING_ELEMENT_ID = PPLD.PLANNING_ELEMENT_ID(+)
AND PERIOD.PA_PERIOD_NAME = PPLD.PERIOD_NAME(+)
and PERIOD.PA_PERIOD_START_DATE >= ADD_MONTHS(TRUNC(SYSDATE,'MONTH'),-1)
--1st sept
UNION
SELECT PLAN_ELEMENT.project_id
,PLAN_ELEMENT.PLAN_VERSION_ID
,PLAN_ELEMENT.PLANNING_ELEMENT_ID
,PLAN_ELEMENT.RBS_ELEMENT_ID
,PLAN_ELEMENT.person_id
,PLAN_ELEMENT.PLAN_LINE_ID
,'Through '|| to_char(PERIODS_PA.END_DATE,'YYYY-MM-DD') PA_PERIOD_NAME
,NULL PA_PERIOD_START_DATE
,NULL PA_PERIOD_END_DATE
,NULL NORMAL_HOURS
,NULL BILL_RATE
--,NULL DFF_RATE
--,NULL BILL_RATE_TYPE
--,SUM(BILL_RATE.RATE*PPLD.QUANTITY) PLANNED_REVENUE
,NULL PLAN_LINE_DETAIL_ID
,(SELECT SUM(PPLD1.QUANTITY) FROM PJO_PLAN_LINE_DETAILS PPLD1
WHERE PLAN_ELEMENT.PLANNING_ELEMENT_ID = PPLD1.PLANNING_ELEMENT_ID
and ppld1.start_DATE <= (ADD_MONTHS(TRUNC(SYSDATE,'MONTH'),-1)-1))
PLANNED_HOURS
--,(select SUM(pbt.REV_CURR_TXN_AMT)
-- from PJB_BILL_TRXS pbt
-- ,pjc_exp_items_all pei
-- where 1=1
-- and pbt.LINKED_PROJECT_ID = PLAN_ELEMENT.PROJECT_ID
-- AND pbt.transaction_id = pei.expenditure_item_id
-- AND pei.INCURRED_BY_PERSON_ID = PLAN_ELEMENT.person_id
-- and pbt.TRANSACTION_DATE <= ADD_MONTHS(TRUNC(SYSDATE,'MONTH'),-1)
--) ACTUAL_REVENUE
,(select SUM(pei.QUANTITY)
from pjc_exp_items_all pei
,PJB_BILL_TRXS pbt
where 1=1
and pei.PROJECT_ID = PLAN_ELEMENT.PROJECT_ID
and pei.expenditure_item_id = pbt.transaction_id
AND pei.INCURRED_BY_PERSON_ID = PLAN_ELEMENT.person_id
and pbt.TRANSACTION_DATE <= ADD_MONTHS(TRUNC(SYSDATE,'MONTH'),-1)) ACTUAL_HOURS
,NULL PTO_HOURS
--,(select sum(pe.ABS_UNITS) from ANC_PER_ABS_PLAN_ENTRIES pe
-- where 1=1
-- and pe.PERSON_ID = PERIOD.PERSON_ID
-- and pe.START_DATE < ADD_MONTHS(TRUNC(SYSDATE,'MONTH'),-1)) PTO_HOURS
,NULL other_hours
--,(select sum(ppld1.QUANTITY)
--from
-- PJO_PLAN_LINE_DETAILS PPLD1
--,PJO_PLANNING_ELEMENTS PPE1
--,PJO_PLAN_VERSIONS_B pvb1
--,PJO_PLAN_TYPES_TL pptt1
--where 1=1
--and ppe1.PLANNING_ELEMENT_ID = ppld1.PLANNING_ELEMENT_ID
--and ppe1.PERSON_ID = PERIOD.PERSON_ID
--and pvb1.PLAN_STATUS_CODE = 'W'
--and pvb1.CURRENT_PLAN_STATUS_FLAG = 'Y'
--AND Pvb1.PLAN_CLASS_CODE = 'BUDGET'
--and pvb1.PLAN_TYPE_ID = pptt1.PLAN_TYPE_ID
--AND pptt1.LANGUAGE=USERENV('LANG')
--and PPTt1.name = 'Labor Project Plan Type'
--and pvb1.PLAN_VERSION_ID = ppe1.PLAN_VERSION_ID
--and ppld1.START_DATE < ADD_MONTHS(TRUNC(SYSDATE,'MONTH'),-1)) other_hours
,NULL WORKING_DAYS
,NULL BASELINED_HOURS
,PLAN_ELEMENT.TOTAL_TC_ACT_REVENUE ACTUAL_REVENUE
FROM PLAN_ELEMENT
,BILL_RATE
,PERIODS_PA
,pjf_projects_all_b pp
--,EMPLOYEE
--,PJO_PLAN_LINE_DETAILS ppld
where 1=1
AND PLAN_ELEMENT.PERSON_ID = BILL_RATE.PERSON_ID(+)
and PLAN_ELEMENT.PROJECT_ID = BILL_RATE.PROJECT_ID(+)
and PLAN_ELEMENT.task_id = BILL_RATE.task_id(+)
------------------------------------------------
-- period query
---PERIODS
WITH PERIODS_GL AS
(
select
gp.PERIOD_NAME
,gp.START_DATE
,gp.END_DATE
,gp.PERIOD_SET_NAME
,decode(to_char(gp.END_DATE,'MM')
,'01','JAN-'
,'02','FEB-'
,'03','MAR-'
,'04','APR-'
,'05','MAY-'
,'06','JUN-'
,'07','JUL-'
,'08','AUG-'
,'09','SEP-'
,'10','OCT-'
,'11','NOV-'
,'12','DEC-')||to_char(gp.END_DATE,'YYYY') C_PERIOD_NAME
--,GPS.CLOSING_STATUS PERIOD_STATUS_FLAG
FROM
GL_PERIODS GP
)
,PERIODS_PA AS
(
select
PPA.PERIOD_NAME
,PPA.START_DATE
,PPA.END_DATE
,PPA.ORG_ID
,PPA.GL_PERIOD_NAME
,TO_CHAR(PPA.START_DATE,'fmddth')||'-'||to_char(PPA.END_DATE,'fmddth')
C_PERIOD_NAME
FROM
PJF_PERIODS_ALL PPA
)
select
PERIODS_PA.ORG_ID
,PERIODS_PA.PERIOD_NAME pa_PERIOD_NAME
--,PERIODS_PA.PERIOD_NAME pa_PERIOD_NAME
,PERIODS_PA.START_DATE pa_START_DATE
,PERIODS_PA.END_DATE pa_END_DATE
,PERIODS_PA.C_PERIOD_NAME C_pa_period_name
,PERIODS_GL.PERIOD_NAME gl_PERIOD_NAME
,PERIODS_GL.START_DATE gl_START_DATE
,PERIODS_GL.END_DATE gl_END_DATE
,PERIODS_GL.C_PERIOD_NAME c_gl_period_name
,PERIODS_GL.PERIOD_SET_NAME
--,HOIF.ORGANIZATION_ID
--,GL.LEDGER_ID LEDGER_ID_1
--,GL.PERIOD_SET_NAME PERIOD_SET_NAME_1
,GLS.CLOSING_STATUS PERIOD_STATUS_FLAG
--,GLS.*
from
PERIODS_PA
,PERIODS_GL
,HR_ORGANIZATION_INFORMATION_F HOIF
,GL_LEDGERS GL
,GL_PERIOD_STATUSES GLS
,FND_APPLICATION_VL fav
where 1=1
AND PERIODS_PA.GL_PERIOD_NAME = PERIODS_GL.PERIOD_NAME
--order by
--PERIODS_PA.PERIOD_NAME
--PERIODS_GL.PERIOD_NAME
UNION
select
PERIODS_PA.ORG_ID
,'Through '||to_char(PERIODS_PA.END_DATE,'YYYY-MM-DD') pa_PERIOD_NAME
,NULL pa_START_DATE
,PERIODS_PA.END_DATE pa_END_DATE
,'Through '|| to_char(PERIODS_PA.END_DATE,'YYYY-MM-DD') C_pa_period_name
,NULL gl_PERIOD_NAME
,NULL gl_START_DATE
,NULL gl_END_DATE
,NULL c_gl_period_name
,PERIODS_GL.PERIOD_SET_NAME
,'C' PERIOD_STATUS_FLAG
from
PERIODS_PA
,PERIODS_GL
,HR_ORGANIZATION_INFORMATION_F HOIF
,GL_LEDGERS GL
,pjf_projects_all_b pp
where 1=1
AND PERIODS_PA.GL_PERIOD_NAME = PERIODS_GL.PERIOD_NAME
order by 3