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 :
125 :
126 :
127 :
128 :
129 :
130 :
131 :
132 :
133 :
134 :
135 :
136 :
137 :
138 :
139 :
140 :
141 :
142 :
143 :
144 :
145 :
146 :
147 :
148 :
149 :
150 :
151 :
152 :
153 :
154 :
155 :
156 :
157 :
158 :
159 :
160 :
161 :
162 :
163 :
164 :
165 :
166 :
167 :
168 :
|
--NOUVEAUX RÉSULTATS DE CURSEUR
déclarer
@w_RetCode international,
@w_RetStatus international,
@w_RetMsg varchar (255),
date-heure @r_PrevWorkDay,
date-heure @r_NextWorkDay,
char de @w_EmployeeID (6),
@w_EmployeeCode international,
date-heure @w_NPDDay,
date-heure de @p_BeginDate,
date-heure de @p_EndDate
choisir le @w_RetCode = 0
choisir le @p_BeginDate = « 08/01/10 »
choisir le @p_EndDate = « 08/10/10 »
DÉCLARER
date-heure de @TMP_BeginDate,
date-heure de @TMP_EndDate
PLACER le @TMP_BeginDate = le DATEADD (sem., -3, le @p_BeginDate)
PLACER le @TMP_EndDate = le DATEADD (sem., +3, le @p_EndDate)
DÉCLARER LA TABLE de @TSD (CNT [l'international] NON NUL,
[EMPLOYEECODE] [international] PAS ANNULER,
[ADMINISTRATIONDATE] [date-heure] NULLE,
[DAILYPATTERNCODE] [international] NULLE,
[STANDARDMINSINDAILYPATTERN] [smallint] NULLE,
[STANDARDMINUTESACHIEVED] [smallint] PAS NULLE)
INSÉRER DANS LE @TSD
CHOISIR CNT
, EMPLOYEECODE
, ADMINISTRATIONDATE
, DAILYPATTERNCODE
, STANDARDMINSINDAILYPATTERN
, STANDARDMINUTESACHIEVED
De dbo.TIMESUMMARYDAY
LÀ OÙ DAILYPATTERNCODE = 68206 ET
ADMINISTRATIONDATE ENTRE LE @TMP_BEGINDATE ET LE @TMP_ENDDATE
SUPPRESSION DE @TSD
LÀ OÙ (STANDARDMINSINDAILYPATTERN = 0 ET STANDARDMINUTESACHIEVED <> 0)
DÉCLARER LA TABLE DE @EMP (
[EmployeeId] [varchar] (15) PAS ANNULER,
[EmployeeCode] [international] NULLE,
[Nom de famille] [varchar] (40) ANNULENT,
[Prénoms] [varchar] (40) ANNULENT,
[Équipe] [varchar] (16) ANNULENT,
[Centre] [varchar] (5) NULLE)
INSERTION DANS LE @EMP
CHOISIR EmployeeId
, EmployeeCode
, Nom de famille
, Prénoms
, Centre
, Équipe
De dbo.xPLT_EmpInfo
LÀ OÙ active > 0
DÉCLARER LE CURSEUR d'emp_cur pour
CHOISIR
eiv.EmployeeID,
tsd.EMPLOYEECODE,
tsd.ADMINISTRATIONDATE
De l'eiv de @EMP
intérieur joindre le @TSD DST
sur eiv.EmployeeCode = tsd.EmployeeCode
LÀ OÙ
tsd.ADMINISTRATIONDATE entre le @p_BeginDate et le @p_EndDate et
tsd.STANDARDMINSINDAILYPATTERN = 0
CRÉER LA TABLE #TMP9001
(
Char d'EmployeeID (6),
Date-heure de NPDDay,
Date-heure de PrevWorkDayAbs,
Date-heure de NextWorkDayAbs
)
ouvrir l'emp_cur
chercher après de l'emp_cur dans le @w_EmployeeID, @w_EmployeeCode, @w_NPDDay
si @@fetch_status <> 0
end_ret goto -- aucunes données de qualification au processus
tandis que @@fetch_status = 0
commencer -- boucle de curseur
-- déterminer les jours précédents et suivants de travail
@w_RetStatus d'exec = @w_EmployeeId de dbo.xPLT_PrevNextWorkDay, @w_NPDDay, 0, rendement @r_PrevWorkDay, rendement @r_NextWorkDay
si @w_RetStatus <> 0
commencer
choisir le @w_RetMsg = « xPLT_WTAAbsenceSpanNPD : appeler à xPLT_PrevNextWorkDay avec le code retour : » + converti (char (1), @w_RetStatus)
raiserror ("%s », 18.1, @w_RetMsg)
choisir le @w_RetCode = 1
end_ret goto
extrémité
-- déterminer l'absence de jours complets des jours précédents et suivants de travail
si
(
choisi
compte (*)
de
@TSD DST
là où
tsd.EMPLOYEECODE = @w_EmployeeCode et
(tsd.ADMINISTRATIONDATE = @r_PrevWorkDay ou tsd.ADMINISTRATIONDATE = @r_NextWorkDay) et
tsd.STANDARDMINSINDAILYPATTERN > 0 et
tsd.STANDARDMINUTESACHIEVED = 0
) = 2
commencer
insérer dans #tmp9001 (EmployeeID, NPDDay, PrevWorkDayAbs, NextWorkDayAbs)
valeurs (@w_EmployeeID, @w_NPDDay, @r_PrevWorkDay, @r_NextWorkDay)
extrémité
chercher après de l'emp_cur dans le @w_EmployeeID, @w_EmployeeCode, @w_NPDDay
extrémité -- boucle de curseur
-- resultset de retour
choisi
t1.*,
eiv. Nom de famille,
eiv. Prénoms,
eiv. Centre,
eiv. Équipe
de
T1 #tmp9001
intérieur joindre l'eiv de dbo.xPLT_EmpInfo_Vw
sur t1.EmployeeID = eiv.EmployeeID ASSEMBLENT Latin1_General_CI_AS
ordre près
t1.EmployeeID,
t1.NPDDay
--choisir * à partir de T1 #tmp9001
end_ret :
emp_cur étroit
désaffecter l'emp_cur
laisser tomber la table #tmp9001
--renvoyer le @w_RetCode
choisir le @w_RetCode
ALLER
|