Projet

Général

Profil

Evolution #202 » MACIF - RQ DES CHARGES consommé J+1.txt

Sébastien BON, 05/10/2026 08:41

 
-- 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
(4-4/13)