|
-- Determine le scope de project_id
|
|
-- sur lesquels on lance la requete
|
|
WITH SCOPE_PROJECT AS
|
|
(
|
|
Select
|
|
INV.ID
|
|
,INV.CODE
|
|
,INV.NAME as INV_NAME
|
|
,PPF.IS_ACTIVE
|
|
,PPF.NAME as PPF_NAME
|
|
,PPF.CODE as PPF_CODE
|
|
FROM nikuprd.INV_INVESTMENTS INV
|
|
JOIN nikuprd.PFM_INVESTMENTS PPC
|
|
ON PPC.INVESTMENT_ID = INV.ID
|
|
JOIN nikuprd.PFM_PORTFOLIOS PPF
|
|
on PPF.ID = PPC.PORTFOLIO_ID
|
|
WHERE
|
|
PPF.CODE = 'PLAN VTRAVAIL'
|
|
AND PPF.IS_ACTIVE = '1'
|
|
)
|
|
,CL_CCN AS
|
|
(
|
|
SELECT
|
|
CL.lookup_code
|
|
,CL.lookup_type
|
|
,CL.is_active
|
|
,CCN.table_name
|
|
,CCN.name
|
|
FROM nikuprd.CMN_LOOKUPS CL
|
|
INNER JOIN nikuprd.CMN_CAPTIONS_NLS CCN
|
|
ON CCN.pk_id = CL.id
|
|
AND CCN.language_code = 'fr'
|
|
AND CCN.table_name = 'CMN_LOOKUPS'
|
|
WHERE CL.lookup_type in ('MA_LKP_LIGNE_DDSIG')
|
|
)
|
|
Select
|
|
INV.PPF_CODE
|
|
,INV.ID
|
|
,INV.CODE
|
|
,proj.prname as proj_name
|
|
,proj.Is_Active as proj_actif
|
|
,TASK.prname as task_name
|
|
,TASK.prstart as task_start_date
|
|
,TASK.PRFINISH as task_end_date
|
|
,task.PRCATEGORY as code_tache
|
|
,substr(upper(task.PRCATEGORY),1,3) as code_majeur
|
|
,codcat_lvl1.DESCRIPTION as code_majeur_label
|
|
,substr(upper(task.PRCATEGORY),5,3) as code_mineur
|
|
,codcat_lvl2.DESCRIPTION as code_mineur_label
|
|
,substr(upper(task.PRCATEGORY),9,3) as code_tierce
|
|
,codcat_lvl3.DESCRIPTION as code_tierce_label
|
|
,AF_ASSI.SLICE_DATE
|
|
,AF_ASSI.AFACTUAL
|
|
,AF_ASSI.AFESTIMATE
|
|
,CASE WHEN upper(INV.PPF_CODE) = 'PLAN VTRAVAIL' then
|
|
CASE WHEN SYSDATE - 1 >= AF_ASSI.SLICE_DATE THEN AF_ASSI.AFESTIMATE ELSE 0 END
|
|
ELSE
|
|
CASE WHEN to_date(20231231,'yyyymmdd') <= AF_ASSI.SLICE_DATE THEN AF_ASSI.AFESTIMATE ELSE 0 END
|
|
END
|
|
as AFESTIMATE_PAST
|
|
,TO_NUMBER(TO_CHAR(NVL(AF_ASSI.SLICE_DATE, TASK.prstart),'YYYY')) as TASK_START_YEAR
|
|
,TO_NUMBER(TO_CHAR(NVL(AF_ASSI.SLICE_DATE, TASK.prstart),'MM')) as TASK_START_MONTH
|
|
,RESS.PRCATEGORY
|
|
,RESS.PRISROLE
|
|
,RESS.PRNAME
|
|
,RESS.IS_ACTIVE AS RESSOURCE_IS_ACTIVE
|
|
,UPPER(RESS.PREXTERNALID) AS PREXTERNALID
|
|
,UPPER(SUBSTR(RESS.PrUserText2, 1,7)) as SA
|
|
,UPPER(RESS.PRUSERTEXT1) AS SOCIETE
|
|
,CA_RESS.MA_PRJ_TYP_RES
|
|
,CA_RESS.TYPE_PRESTATION_AFF
|
|
,RESS_lvl2.FULL_NAME AS RESSOURCE_PILOTE_NAME
|
|
,ROLE.prname as ROLE_NAME
|
|
,CL_CCN_RESS.NAME as DDSI_NAME
|
|
,CL_CCN_RESS.LOOKUP_CODE AS DDSI_CODE
|
|
from SCOPE_PROJECT INV
|
|
JOIN nikuprd.PRPROJECT PROJ
|
|
ON PROJ.prExternalID = INV.CODE
|
|
-- On ajoute les taches a la vue projet
|
|
JOIN nikuprd.PRTASK TASK
|
|
ON TASK.prProjectId = PROJ.prID
|
|
-- On ajoute les assignements pour les taches
|
|
LEFT JOIN NIKUPRD.PRASSIGNMENT PR_ASSI
|
|
ON PR_ASSI.PRTASKID = TASK.PRID
|
|
LEFT JOIN adm_bo.AFASSIGNMENT_C AF_ASSI
|
|
ON AF_ASSI.PRJ_OBJECT_ID = PR_ASSI.PRID
|
|
-- On ajoute les ressources associees à chacune des taches
|
|
JOIN NIKUPRD.PRRESOURCE RESS
|
|
ON RESS.PRID = PR_ASSI.PRRESOURCEID
|
|
JOIN nikuprd.ODF_CA_RESOURCE CA_RESS
|
|
ON RESS.PRID = CA_RESS.ID
|
|
LEFT JOIN NIKUPRD.SRM_RESOURCES RESS_lvl1
|
|
ON RESS.PREXTERNALID= RESS_lvl1.UNIQUE_NAME
|
|
LEFT JOIN NIKUPRD.SRM_RESOURCES RESS_lvl2
|
|
ON RESS_lvl1.MANAGER_ID = RESS_lvl2.USER_ID
|
|
LEFT JOIN NIKUPRD.PRRESOURCE ROLE
|
|
ON ROLE.PRID = RESS.PRPRIMARYROLEID
|
|
LEFT JOIN CL_CCN CL_CCN_RESS
|
|
ON UPPER(SUBSTR(CL_CCN_RESS.Name,1,4)) = UPPER(RESS.PrUserText2)
|
|
AND CL_CCN_RESS.lookup_type = 'MA_LKP_LIGNE_DDSIG'
|
|
AND CL_CCN_RESS.IS_ACTIVE = 1
|
|
-- Ajout des codes de categorie des tâches
|
|
left join ADM_BO_PILOTAGE.PIL_CODES_CATEGORIE codcat_lvl1
|
|
on substr(upper(task.PRCATEGORY),1,3)= codcat_lvl1.CODE_CATEGORIE
|
|
and codcat_lvl1.niveau = 1
|
|
left join ADM_BO_PILOTAGE.PIL_CODES_CATEGORIE codcat_lvl2
|
|
on substr(upper(task.PRCATEGORY),5,3)= codcat_lvl2.CODE_CATEGORIE
|
|
and codcat_lvl2.niveau = 2
|
|
left join ADM_BO_PILOTAGE.PIL_CODES_CATEGORIE codcat_lvl3
|
|
on substr(upper(task.PRCATEGORY),9,3)= codcat_lvl3.CODE_CATEGORIE
|
|
and codcat_lvl3.niveau = 3
|
|
WHERE
|
|
1=1
|
|
AND UPPER(RESS.PrExternalID) not like 'MA_ACC%'
|
|
-- On ne prend que les Assignement >= Current-year-1
|
|
AND (
|
|
TO_NUMBER(TO_CHAR(NVL(AF_ASSI.SLICE_DATE, TASK.prstart),'SYYYY'))>=
|
|
DECODE(0, 0, 2026-1,2026-2)
|
|
)
|
|
ORDER BY INV.CODE DESC,TASK_NAME,ress.prname
|