0% found this document useful (0 votes)
49 views10 pages

Plan - Line - DT Query Before Period Status Change

The document contains a SQL query that retrieves detailed planning and billing information related to project management. It includes multiple Common Table Expressions (CTEs) to gather data about planning elements, billing rates, employee details, and periods, ultimately producing a comprehensive report on planned and actual revenue, hours, and other metrics. The query is structured to filter and join various tables to ensure accurate data representation for project analysis.

Uploaded by

Vivek Singh Rai
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views10 pages

Plan - Line - DT Query Before Period Status Change

The document contains a SQL query that retrieves detailed planning and billing information related to project management. It includes multiple Common Table Expressions (CTEs) to gather data about planning elements, billing rates, employee details, and periods, ultimately producing a comprehensive report on planned and actual revenue, hours, and other metrics. The query is structured to filter and join various tables to ensure accurate data representation for project analysis.

Uploaded by

Vivek Singh Rai
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 10

----PLAN_LINE_DT

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

,(select ledger.period_set_name from


HR_ORGANIZATION_INFORMATION_F hoif
,GL_LEDGERS ledger
where hoif.ORGANIZATION_ID = ppe.RATE_EXPENDITURE_ORG_ID
and hoif.ORG_INFORMATION_CONTEXT = 'FUN_BUSINESS_UNIT'
and hoif.ORG_INFORMATION3 = ledger.ledger_id) GL_PERIOD_SET_NAME

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(+)

AND PLAN_ELEMENT.PERSON_ID = EMPLOYEE.PERSON_ID(+)


AND PLAN_ELEMENT.PLANNING_END_DATE BETWEEN EMPLOYEE.DATE_START(+) AND
EMPLOYEE.ACTUAL_TERMINATION_DATE(+)
AND PLAN_ELEMENT.PLANNING_END_DATE BETWEEN EMPLOYEE.EFFECTIVE_START_DATE(+) AND
EMPLOYEE.EFFECTIVE_END_DATE(+)

and PLAN_ELEMENT.PROJECT_ID = pp.PROJECT_ID


AND PERIODS_PA.ORG_ID = pp.ORG_ID
AND PERIODS_PA.GL_PERIOD_NAME = PERIODS_GL.PERIOD_NAME
AND PERIODS_GL.PERIOD_SET_NAME = PLAN_ELEMENT.GL_PERIOD_SET_NAME

and PERIODS_GL.start_date between NVL(:P_START_DATE,PERIODS_GL.start_date) AND


NVL(:P_END_DATE,PERIODS_GL.start_date)
and PERIODS_PA.end_date >= TRUNC(PLAN_ELEMENT.PLANNING_START_DATE,'MONTH')
AND PERIODS_PA.start_date <=
NVL(LAST_DAY(PLAN_ELEMENT.PLANNING_END_DATE),ADD_MONTHS(SYSDATE,12))

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(pe.ABS_UNITS) from ANC_PER_ABS_PLAN_ENTRIES pe


where 1=1
and pe.PERSON_ID = PERIOD.PERSON_ID
and pe.START_DATE between ppld.START_DATE and ppld.END_DATE)
PTO_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

--,(SELECT COUNT(*) FROM


PER_AVAILABILITY_DETAILS.GET_SCHEDULE_DETAILS('ASSIGN',PERIOD.ASSIGNMENT_ID,ppld.ST
ART_DATE,ppld.END_DATE+1) WHERE OBJECT_CATEGORY <> 'PH' ) WORKING_DAYS

,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

,(SELECT SUM(NVL(NVL(BILL_RATE.RATE,PLAN_ELEMENT.RATE),0)*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_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(+)

and PLAN_ELEMENT.PROJECT_ID = pp.PROJECT_ID


AND PERIODS_PA.ORG_ID = pp.ORG_ID

--AND (ADD_MONTHS(TRUNC(sysdate,'MONTH'),-1)-1) BETWEEN PERIODS_PA.START_DATE AND


PERIODS_PA.END_DATE

AND least((ADD_MONTHS(TRUNC(sysdate,'MONTH'),-1)-1),pp.completion_date) BETWEEN


PERIODS_PA.START_DATE AND PERIODS_PA.END_DATE
AND PERIODS_PA.end_date >= PLAN_ELEMENT.PLANNING_START_DATE

------------------------------------------------

-- 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

AND PERIODS_PA.ORG_ID = HOIF.ORGANIZATION_ID


and trunc(sysdate) between HOIF.effective_start_date and HOIF.effective_end_date
AND HOIF.ORG_INFORMATION3 = GL.LEDGER_ID
and PERIODS_GL.PERIOD_SET_NAME = GL.PERIOD_SET_NAME
and GL.LEDGER_ID = GLS.SET_OF_BOOKS_ID
and PERIODS_GL.PERIOD_NAME = GLS.PERIOD_NAME
and GLS.application_id = fav.application_id
and fav.APPLICATION_SHORT_NAME = 'PJF'

AND PERIODS_PA.START_DATE BETWEEN NVL(:P_START_DATE,PERIODS_PA.START_DATE) AND


NVL(:P_END_DATE,PERIODS_PA.START_DATE)
--and GLS.application_id = '101'

and PERIODS_PA.START_DATE > ADD_MONTHS(TRUNC(sysdate,'MONTH'),-1)-1

--and PERIODS_PA.ORG_ID = 300000003468533


--and PERIODS_GL.PERIOD_SET_NAME='PRFT CY'

--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

AND PERIODS_PA.ORG_ID = HOIF.ORGANIZATION_ID


and trunc(sysdate) between HOIF.effective_start_date and HOIF.effective_end_date
AND HOIF.ORG_INFORMATION3 = GL.LEDGER_ID
and PERIODS_GL.PERIOD_SET_NAME = GL.PERIOD_SET_NAME
--AND (add_months(trunc(sysdate,'MONTH'),-1)-1) between PERIODS_PA.START_DATE and
PERIODS_PA.END_DATE

and pp.project_id = NVL(:P_PROJECT_ID,pp.PROJECT_ID)

AND least((ADD_MONTHS(TRUNC(sysdate,'MONTH'),-1)-1),pp.completion_date) BETWEEN


PERIODS_PA.START_DATE AND PERIODS_PA.END_DATE

order by 3

You might also like