1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
select distinct
-- infos sur la demande
dem_abs.cd_dem_abs,dem_abs.dat_demande, gestion_cge.getrepart(dem_abs.cd_dem_abs,'Y') repart,
--gestion_cge.ctrl_modif(dem_abs.cd_dem_abs,'','',0,0,-1,1) act_status,
gestion_cge.ctrl_modif(dem_abs.cd_dem_abs,dem_abs.dat_deb,dem_abs.dat_fin,substr(ddat_deb,9),substr(ddat_fin,9),c.cd_collab,-1) act_status,
to_char(dem_abs.cd_collab) cd_collab,to_char(dem_abs.cd_etat) cd_etat,lib_etat_demande.lib_etat lib_etat_demande,
dem_abs.dat_deb,
demi_jour_deb.lib_court lib_demi_jour_deb,
substr(ddat_deb,9) cd_demi_jour_deb ,
dem_abs.dat_fin,
demi_jour_fin.lib_court lib_demi_jour_fin,
substr(ddat_fin,9) cd_demi_jour_fin,
nb_jours,
to_char(dem_abs.cd_verif_rh) cd_verif_rh,
lib_verif_rh,
dem_abs.commentaire_rh,
-- imputation : si non null on a une imputation paye dans au moins 1 absence
to_char(dem_abs.mois_imputation,'dd/mm/yyyy') mois_imputation,
to_char(dem_abs.dat_modif,'dd/mm/yyyy HH24:MI:SS') dat_modif,
to_char(dem_abs.cd_util) cd_util,
-- infos collab
c.prenom_collab,c.nom_collab,etat_collab.commentaire comm_collab, c.info_tps_partiel, c.partiel, c.email,
-- infos approb
to_char(etat_approb.cd_etat) cd_etat_approb,lib_etat_approb.lib_etat lib_etat_approb,
to_char(dem_abs.cd_collab_approb) cd_collab_approb, approb.nom_collab||' '||approb.prenom_collab approb, approb.email mail_approb,
etat_approb.commentaire comm_approb,
-- infos client (pour afficher le nom de l'affaire req � part)
dem_abs.resp_client, dem_abs.accord_client, dem_abs.tel_client, to_char(dem_abs.cd_affaire) cd_affaire,
-- infos valid
to_char(etat_valid.cd_etat) cd_etat_valid,lib_etat_valid.lib_etat lib_etat_valid,
to_char(dem_abs.cd_collab_valid) cd_collab_valid,valid.nom_collab||' '||valid.prenom_collab valid, valid.email mail_valid,
etat_valid.commentaire comm_valid,
etat_approb.dat_modif dat_approb, etat_valid.dat_modif dat_valid,
tab_rh.nb modif_rh ,col_modif.modif_collab,
decode(afa.ref_mission,null,to_char(afa.cd_affaire),afa.ref_mission) ref_mission,afa.nom_affaire,cli.lib_client
from (
select da.*, tab_max_ligne.cd_ligne_collab_max, tab_max_ligne.cd_ligne_approb_max, tab_max_ligne.cd_ligne_valid_max,
tab_abs.nb_jours, tab_abs.ddat_deb, tab_abs.ddat_fin, tab_abs.dat_deb, tab_abs.dat_fin,tab_abs.mois_imputation
from
-- S�lectionner les cd_ligne ad�quats : SOUS-REQUETE PRINCIPALE
(
select da.cd_dem_abs,max(heda_c.cd_ligne) cd_ligne_collab_max,
max(heda_a.cd_ligne) cd_ligne_approb_max,
max(heda_v.cd_ligne) cd_ligne_valid_max
from demande_absence da,histo_etat_dem_abs heda_c,histo_etat_dem_abs heda_a,
histo_etat_dem_abs heda_v
where heda_c.cd_type_util=1
and heda_c.cd_collab=da.cd_collab
and heda_c.cd_dem_abs=da.cd_dem_abs
and heda_a.cd_type_util=2
and heda_a.cd_dem_abs=da.cd_dem_abs
and nvl(heda_a.cd_collab,0)=nvl(da.cd_collab_approb,0)
and heda_v.cd_type_util=3
and heda_v.cd_dem_abs=da.cd_dem_abs
and heda_v.cd_collab=da.cd_collab_valid
and (da.cd_collab=188 or da.cd_collab_approb=188 or da.cd_collab_valid=188)
group by da.cd_dem_abs
) tab_max_ligne,
demande_absence da,
(select a.cd_dem_abs,a.cd_collab,sum(nb_jours) nb_jours,
max(dat_mois_paye) mois_imputation,min(to_char(dat_deb,'YYYYMMDD')||cd_demi_jour_deb) ddat_deb, min(dat_deb) dat_deb, max(to_char(dat_fin,'YYYYMMDD')||cd_demi_jour_fin) ddat_fin, max(dat_fin) dat_fin
from absence a, demande_absence da
where a.cd_dem_abs=da.cd_dem_abs and (da.cd_collab=188 or da.cd_collab_approb=188 or da.cd_collab_valid=188)
group by a.cd_dem_abs,a.cd_collab) tab_abs
where
tab_max_ligne.cd_dem_abs=da.cd_dem_abs
and tab_abs.cd_dem_abs=da.cd_dem_abs
and tab_abs.cd_collab=da.cd_collab
/* aj ici les crit�res limitatifs PHP */ and (da.cd_collab<>188 or da.cd_collab=cd_collab_approb or da.cd_collab=cd_collab_valid) and ((da.cd_etat in (1,2,3) and cd_collab_valid=188) or (da.cd_etat=1 and cd_collab_approb=188))
) dem_abs,
(select he.cd_dem_abs,decode(sum(decode(he.cd_etat,1,1,0))-1,0,'N',-1,'N','O') as modif_collab
from histo_etat_dem_abs he,demande_absence da where he.cd_type_util=1 and he.cd_dem_abs=da.cd_dem_abs and (da.cd_collab=188 or da.cd_collab_approb=188 or da.cd_collab_valid=188)
group by he.cd_dem_abs
) col_modif,
-- la demande a-t-elle �t� modifi�e en dernier par les RH ? (4= profil sicom RH)
(select da.cd_dem_abs,count(*) nb from utilisateurs u,demande_absence da
where da.cd_util=u.cd_collaborateur
and da.cd_collab!=da.cd_util
and cd_profil_utilisateur=4
and (da.cd_collab=188 or da.cd_collab_approb=188 or da.cd_collab_valid=188)
group by da.cd_dem_abs) tab_rh,
histo_etat_dem_abs etat_approb,
histo_etat_dem_abs etat_valid,
histo_etat_dem_abs etat_collab,
collaborateur c,
collaborateur approb,
collaborateur valid,
etat_dem_abs lib_etat_approb,
etat_dem_abs lib_etat_valid,
etat_dem_abs lib_etat_demande,
demi_jour_conge demi_jour_deb,
demi_jour_conge demi_jour_fin,
verif_rh,
affaire afa,
client cli
where
tab_rh.cd_dem_abs(+)=dem_abs.cd_dem_abs
and dem_abs.dat_deb > '01/01/2007'
and col_modif.cd_dem_abs(+)=dem_abs.cd_dem_abs
and afa.cd_affaire(+)=nvl(dem_abs.cd_affaire,0)
and afa.cd_client=cli.cd_client(+)
and etat_approb.cd_dem_abs=dem_abs.cd_dem_abs
and etat_approb.cd_type_util=2
and approb.cd_collab(+)=nvl(etat_approb.cd_collab,0)
and etat_approb.cd_ligne=dem_abs.cd_ligne_approb_max
and etat_valid.cd_dem_abs=dem_abs.cd_dem_abs
and etat_valid.cd_type_util=3
and valid.cd_collab=etat_valid.cd_collab
and etat_valid.cd_ligne=dem_abs.cd_ligne_valid_max
and etat_collab.cd_dem_abs=dem_abs.cd_dem_abs
and c.cd_collab=etat_collab.cd_collab
and etat_collab.cd_type_util=1
and etat_collab.cd_ligne=dem_abs.cd_ligne_collab_max
and substr(dem_abs.ddat_deb,9)=demi_jour_deb.cd_demi_jour
and substr(dem_abs.ddat_fin,9)=demi_jour_fin.cd_demi_jour
and dem_abs.cd_verif_rh=verif_rh.cd_verif_rh
and lib_etat_demande.cd_etat=dem_abs.cd_etat
and lib_etat_approb.cd_etat=etat_approb.cd_etat
and lib_etat_valid.cd_etat=etat_valid.cd_etat order by (sysdate-dat_deb) ASC, (sysdate-dat_demande) ASC |
Partager