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 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248
|
For compteur = 1 To colsalarie.Count
colsalarie(compteur).sem1 = NOSEM(d_deb - Day(d_deb) + 1)
colsalarie(compteur).sem2 = colsalarie(compteur).sem1 + 1
colsalarie(compteur).sem3 = colsalarie(compteur).sem2 + 1
colsalarie(compteur).sem4 = colsalarie(compteur).sem3 + 1
colsalarie(compteur).sem5 = colsalarie(compteur).sem4 + 1
colsalarie(compteur).sem6 = colsalarie(compteur).sem5 + 1
colsalarie(compteur).mois = MonthName(Month(d_deb))
colsalarie(compteur).adherent = "RESO"
x = recupdonnecontrat(colsalarie(compteur), d_deb)
'recuperation des heures d'absences
x = hrs_abs(colsalarie(compteur), d_deb, d_fini)
If x = True Then
CurrentDb().Execute ("insert into ERREUR values('" & Left(colsalarie(compteur).matsalarie, Len(colsalarie(compteur).matsalarie) - 4) & "','" & colsalarie(compteur).nom & "','ABSENCE');")
End If
For cpt = 1 To collec.Count
If collec(cpt).matsalarie = colsalarie(compteur).matsalarie Then
colsalarie(compteur).ht1 = colsalarie(compteur).ht1 + collec(cpt).ht1 ' addition dees heures réalisées
colsalarie(compteur).ht2 = colsalarie(compteur).ht2 + collec(cpt).ht2
colsalarie(compteur).ht3 = colsalarie(compteur).ht3 + collec(cpt).ht3
colsalarie(compteur).ht4 = colsalarie(compteur).ht4 + collec(cpt).ht4
colsalarie(compteur).ht5 = colsalarie(compteur).ht5 + collec(cpt).ht5
colsalarie(compteur).ht6 = colsalarie(compteur).ht6 + collec(cpt).ht6
colsalarie(compteur).sem1av = colsalarie(compteur).sem1av + collec(cpt).sem1av 'addition des avenants
colsalarie(compteur).sem2av = colsalarie(compteur).sem2av + collec(cpt).sem2av
colsalarie(compteur).sem3av = colsalarie(compteur).sem3av + collec(cpt).sem3av
colsalarie(compteur).sem4av = colsalarie(compteur).sem4av + collec(cpt).sem4av
colsalarie(compteur).sem5av = colsalarie(compteur).sem5av + collec(cpt).sem5av
colsalarie(compteur).sem6av = colsalarie(compteur).sem6av + collec(cpt).sem6av
colsalarie(compteur).ecart1 = colsalarie(compteur).ecart1 + collec(cpt).ecart1 'addition des ecarts
colsalarie(compteur).ecart2 = colsalarie(compteur).ecart2 + collec(cpt).ecart2
colsalarie(compteur).ecart3 = colsalarie(compteur).ecart3 + collec(cpt).ecart3
colsalarie(compteur).ecart4 = colsalarie(compteur).ecart4 + collec(cpt).ecart4
colsalarie(compteur).ecart5 = colsalarie(compteur).ecart5 + collec(cpt).ecart5
colsalarie(compteur).ecart6 = colsalarie(compteur).ecart6 + collec(cpt).ecart6
End If
Next cpt
'ajout des heures MAD RESO
Set sql = CurrentDb().OpenRecordset("select * from MAD where matriculeSalarie = " & colsalarie(compteur).matsalarie & " and moisPeriode = " & mois & "")
x = ajoutMAD(colsalarie(compteur), sql, DateSerial(Year(Date), mois, 1))
sql.Close
Set sql = Nothing
'recuperation des données du mois precedent
x = donnemoisprec(colsalarie(compteur), "salarie")
'recuperation des heures previsionnelles
'POUR LA PREMIERE SEMAINE
' si la date de début de modul est >= au premier lundi du mois en cours
If colsalarie(compteur).d_deb >= d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) Then
colsalarie(compteur).h_plan1 = 0
'si la date de début de modul est dans la première semaine du mois en cours
ElseIf colsalarie(compteur).d_deb >= d_deb And colsalarie(compteur).d_deb <= d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) Then
strplan = "select * from journee where matriculesalarie = " & colsalarie(compteur).matsalarie & " and jourPeriode < #" & Format(d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6), "MM/dd/yyyy") & "# and codeRubrique = 'HRS_PREV';"
Set sqlplan = CurrentDb().OpenRecordset(strplan)
Do While Not sqlplan.EOF
colsalarie(compteur).h_plan1 = colsalarie(compteur).h_plan1 + sqlplan!valeur
sqlplan.MoveNext
Loop
sqlplan.Close
Set sqlplan = Nothing
' si la date de début de modul est exactement le premier jour du mois
ElseIf colsalarie(compteur).d_deb = d_deb Then
colsalarie(compteur).h_plan1 = colsalarie(compteur).dureheb
'si la date de fin de modul est dans la première semaine du mois
ElseIf colsalarie(compteur).d_fin < d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) Then
strp = "select * from JOURNEE where codeRubrique='HRS_PREV' and jourPeriode >= #" & Format(debhprev, "MM/dd/yyyy") & "# and jourPeriode <= #" & Format(finhprev, "MM/dd/yyyy") & "# And matriculeSalarie = " & colsalarie(compteur).matsalarie & ""
Set sqlp = CurrentDb().OpenRecordset(strp)
Do While Not sqlp.EOF
cptp = cptp + sqlp!valeur
sqlp.MoveNext
Loop
sqlp.Close
Set sqlp = Nothing
colsalarie(compteur).h_plan1 = colsalarie(compteur).dureheb - cptp
cptp = 0
' sinon si la date de debut est inferieur a la date de debut du mois et la date de fin superieur au premier lundi du mois
Else
If colsalarie(compteur).hplanprec > 0 Then
colsalarie(compteur).h_plan1 = colsalarie(compteur).dureheb - colsalarie(compteur).hplanprec
Else
strp = "select * from JOURNEE where codeRubrique='HRS_PREV' and jourPeriode >= #" & Format(debhprev, "MM/dd/yyyy") & "# and jourPeriode <= #" & Format(finhprev, "MM/dd/yyyy") & "# and matriculeSalarie = " & colsalarie(compteur).matsalarie & ""
Set sqlp = CurrentDb().OpenRecordset(strp)
Do While Not sqlp.EOF
cptp = cptp + sqlp!valeur
sqlp.MoveNext
Loop
sqlp.Close
Set sqlp = Nothing
cptp = 0
End If
'POUR LA DEUXIEME SEMAINE
'si la date de debut de modul est > a la date du deuxieme lundi du mois, ou si la date de fin est < au premier lundi
If colsalarie(compteur).d_deb > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 7 Or colsalarie(compteur).d_fin < Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) Then
colsalarie(compteur).h_plan2 = 0
'si la date de fin est > au deuxieme lundi et la date de debut < au premier lundi du mois
ElseIf colsalarie(compteur).d_fin > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 7 And colsalarie(compteur).d_deb <= d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) Then
colsalarie(compteur).h_plan2 = colsalarie(compteur).dureheb
'si la date de début de modul est dans la deuxième semaine du mois en cours
ElseIf colsalarie(compteur).d_deb > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) And colsalarie(compteur).d_deb < d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 7 Or colsalarie(compteur).d_fin < d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 7 And colsalarie(compteur).d_fin >= d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) Then
strp = "select * from JOURNEE where codeRubrique='HRS_PREV' and jourPeriode >= #" & Format(d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6), "MM/dd/yyyy") & "# And jourPeriode < #" & Format(d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 7, "MM/dd/yyyy") & "# and matriculeSalarie = " & colsalarie(compteur).matsalarie & " "
Set sqlp = CurrentDb().OpenRecordset(strp)
Do While Not sqlp.EOF
cptp = cptp + sqlp!valeur
sqlp.MoveNext
Loop
sqlp.Close
Set sqlp = Nothing
colsalarie(compteur).h_plan2 = cptp
cptp = 0
End If
'POUR LA TROIXIEME SEMAINE
'si la date de debut de modul est > a la date du troisieme lundi du mois, ou si la date de fin est < au deuxieme lundi
If colsalarie(compteur).d_deb > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 14 Or colsalarie(compteur).d_fin < Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 7 Then
colsalarie(compteur).h_plan3 = 0
'si la date de fin est > au troisieme lundi et la date de debut < au deuxieme lundi du mois
ElseIf colsalarie(compteur).d_fin > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 14 And colsalarie(compteur).d_deb <= d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 7 Then
colsalarie(compteur).h_plan3 = colsalarie(compteur).dureheb
'si la date de début de modul est dans la troisieme semaine du mois en cours ou si la date de fin et dans la troisième semaine du mois en cours
ElseIf colsalarie(compteur).d_deb > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 7 And colsalarie(compteur).d_deb < d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 14 Or colsalarie(compteur).d_fin > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 7 And colsalarie(compteur).d_fin < d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 14 Then
strp = "select * from JOURNEE where codeRubrique='HRS_PREV' and jourPeriode >= #" & Format(d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 7, "MM/dd/yyyy") & "# And jourPeriode < #" & Format(d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 14, "MM/dd/yyyy") & "# and matriculeSalarie = " & colsalarie(compteur).matsalarie & " "
Set sqlp = CurrentDb().OpenRecordset(strp)
Do While Not sqlp.EOF
cptp = cptp + sqlp!valeur
sqlp.MoveNext
Loop
sqlp.Close
Set sqlp = Nothing
colsalarie(compteur).h_plan3 = cptp
cptp = 0
End If
'POUR LA QUATRIEME SEMAINE
'si la date de debut de modul est > a la date du quatrieme lundi du mois, ou si la date de fin est < au troisieme lundi
If colsalarie(compteur).d_deb > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 21 Or colsalarie(compteur).d_fin < d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 14 Then
colsalarie(compteur).h_plan4 = 0
'si la date de fin est > au quatrieme lundi et la date de debut < au troisieme lundi du mois ou si la date de fin est égal au quatrième dimanche
ElseIf colsalarie(compteur).d_fin > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 21 And colsalarie(compteur).d_deb <= d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 14 Then
colsalarie(compteur).h_plan4 = colsalarie(compteur).dureheb
'si la date de début de modul est dans la quatrieme semaine du mois en cours
ElseIf colsalarie(compteur).d_deb > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 14 And colsalarie(compteur).d_deb < d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 21 Or colsalarie(compteur).d_fin > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 14 And colsalarie(compteur).d_fin < d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 21 Then
strp = "select * from JOURNEE where codeRubrique='HRS_PREV' and jourPeriode >= #" & Format(d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 14, "MM/dd/yyyy") & "# And jourPeriode < #" & Format(d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 21, "MM/dd/yyyy") & "# and matriculeSalarie = " & colsalarie(compteur).matsalarie & " "
Set sqlp = CurrentDb().OpenRecordset(strp)
Do While Not sqlp.EOF
cptp = cptp + sqlp!valeur
sqlp.MoveNext
Loop
sqlp.Close
Set sqlp = Nothing
colsalarie(compteur).h_plan4 = cptp
cptp = 0
End If
'test si il y a 5 ou 6 semaine dans le mois
If NBSEMS5(d_deb) > 5 Then
'si il y a 6 semaine
'calcul pour la cinquieme semaine
'si la date de debut de modul est > a la date du cinquieme lundi du mois, ou si la date de fin est < au quatrieme lundi
If colsalarie(compteur).d_deb > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 28 Or colsalarie(compteur).d_fin < Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 21 Then
colsalarie(compteur).h_plan5 = 0
'si la date de fin est > au cinqieme lundi et la date de debut < au quatrieme lundi du mois
ElseIf colsalarie(compteur).d_fin > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 28 And colsalarie(compteur).d_deb <= d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 21 Then
colsalarie(compteur).h_plan5 = colsalarie(compteur).dureheb
'si la date de début de contrat et superieur au quatrième lundi et inferieur au cinquieme ou la date de fin inferieur au quatriéme lundi et superieur au cinquieme
ElseIf colsalarie(compteur).d_deb > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 21 And colsalarie(compteur).d_deb < d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 28 Or colsalarie(compteur).d_fin > d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 21 And colsalarie(compteur).d_fin < d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 28 Then
strp = "select * from JOURNEE where codeRubrique='HRS_PREV' and jourPeriode >= #" & Format(d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 21, "MM/dd/yyyy") & "# And jourPeriode < #" & Format(d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 28, "MM/dd/yyyy") & "# and matriculeSalarie = " & colsalarie(compteur).matsalarie & " "
Set sqlp = CurrentDb().OpenRecordset(strp)
Do While Not sqlp.EOF
cptp = cptp + sqlp!valeur
sqlp.MoveNext
Loop
sqlp.Close
Set sqlp = Nothing
colsalarie(compteur).h_plan5 = cptp
cptp = 0
End If
'calcul pour la sixième semaine
strp = "select * from JOURNEE where codeRubrique='HRS_PREV' and jourPeriode >= #" & Format(d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 28, "MM/dd/yyyy") & "# And jourPeriode <= #" & Format(d_fini, "MM/dd/yyyy") & "# and matriculeSalarie = " & colsalarie(compteur).matsalarie & " "
Set sqlp = CurrentDb().OpenRecordset(strp)
Do While Not sqlp.EOF
cptp = cptp + sqlp!valeur
sqlp.MoveNext
Loop
sqlp.Close
Set sqlp = Nothing
colsalarie(compteur).h_plan6 = cptp
cptp = 0
Else
'calcul pour la cinquieme semaine
strp = "select * from JOURNEE where codeRubrique='HRS_PREV' and jourPeriode >= #" & Format(d_deb - Day(d_deb) + 8 - Weekday(d_deb - Day(d_deb) + 6) + 21, "MM/dd/yyyy") & "# And jourPeriode <= #" & Format(d_fini, "MM/dd/yyyy") & "# and matriculeSalarie = " & colsalarie(compteur).matsalarie & " "
Set sqlp = CurrentDb().OpenRecordset(strp)
Do While Not sqlp.EOF
cptp = cptp + sqlp!valeur
sqlp.MoveNext
Loop
sqlp.Close
Set sqlp = Nothing
colsalarie(compteur).h_plan5 = cptp
cptp = 0
End If
'calcul du maximum
x = max(colsalarie(compteur))
'calcul de la mensualisation
colsalarie(compteur).mens = Round(colsalarie(compteur).dureheb * 52 / 12, 2)
'calcul des heures a 50%
x = Hs50(colsalarie(compteur))
'calcul des ecart
colsalarie(compteur).ecart1 = colsalarie(compteur).ht1 + colsalarie(compteur).abs1 + colsalarie(compteur).absr1 - colsalarie(compteur).h_plan1 - colsalarie(compteur).sem1av
colsalarie(compteur).ecart2 = colsalarie(compteur).ht2 + colsalarie(compteur).abs2 + colsalarie(compteur).absr2 - colsalarie(compteur).h_plan2 - colsalarie(compteur).sem2av
colsalarie(compteur).ecart3 = colsalarie(compteur).ht3 + colsalarie(compteur).abs3 + colsalarie(compteur).absr3 - colsalarie(compteur).h_plan3 - colsalarie(compteur).sem3av
colsalarie(compteur).ecart4 = colsalarie(compteur).ht4 + colsalarie(compteur).abs4 + colsalarie(compteur).absr4 - colsalarie(compteur).h_plan4 - colsalarie(compteur).sem4av
colsalarie(compteur).ecart5 = colsalarie(compteur).ht5 + colsalarie(compteur).abs5 + colsalarie(compteur).absr5 - colsalarie(compteur).h_plan5 - colsalarie(compteur).sem5av
colsalarie(compteur).ecart6 = colsalarie(compteur).ht6 + colsalarie(compteur).abs6 + colsalarie(compteur).absr6 - colsalarie(compteur).h_plan6 - colsalarie(compteur).sem6av
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''calcul des heures supplémentaires'''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'recuperation de la date de fin de modulation du reso du salarié
strp = "select date_mod from GE where nom = '" & colsalarie(compteur).reso & "' "
Set sqlp = CurrentDb().OpenRecordset(strp)
If Month(sqlp!date_mod) = 12 Then
datesoldemod = DateSerial(Year(d_deb) + 1, 1, 0)
Else
datesoldemod = DateSerial(Year(d_deb), Month(sqlp!date_mod) + 1, 0)
End If
sqlp.Close
Set sqlp = Nothing
'recuperation du nombre de semaine travaillé
nbsemaine = SCOMPLETE(colsalarie(compteur).d_deb, colsalarie(compteur).d_fin)
If colsalarie(compteur).dureheb = 35 Then
x = heuresupcomplet(colsalarie(compteur), d_deb, d_fini, nbsemaine, datesoldemod)
Else
x = heuresupartiel(colsalarie(compteur), d_deb, d_fini, nbsemaine, datesoldemod)
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'calcul des heures contingents
x = hct(colsalarie(compteur))
'calcul des totaux
colsalarie(compteur).totalh_plan = colsalarie(compteur).h_plan1 + colsalarie(compteur).h_plan2 + colsalarie(compteur).h_plan3 + colsalarie(compteur).h_plan4 + colsalarie(compteur).h_plan5 + colsalarie(compteur).h_plan6
colsalarie(compteur).totalabs = colsalarie(compteur).abs1 + colsalarie(compteur).abs2 + colsalarie(compteur).abs3 + colsalarie(compteur).abs4 + colsalarie(compteur).abs5 + colsalarie(compteur).abs6
colsalarie(compteur).totalabsr = colsalarie(compteur).absr1 + colsalarie(compteur).absr2 + colsalarie(compteur).absr3 + colsalarie(compteur).absr4 + colsalarie(compteur).absr5 + colsalarie(compteur).absr6
colsalarie(compteur).totalav = colsalarie(compteur).sem1av + colsalarie(compteur).sem2av + colsalarie(compteur).sem3av + colsalarie(compteur).sem4av + colsalarie(compteur).sem5av + colsalarie(compteur).sem6av
If NBSEMS5(d_deb) > 5 Then
colsalarie(compteur).totalcumul = colsalarie(compteur).cumul6
Else
colsalarie(compteur).totalcumul = colsalarie(compteur).cumul5
End If
colsalarie(compteur).totalhct = colsalarie(compteur).hct1 + colsalarie(compteur).hct2 + colsalarie(compteur).hct3 + colsalarie(compteur).hct4 + colsalarie(compteur).hct5 + colsalarie(compteur).hct6
colsalarie(compteur).totalht = colsalarie(compteur).ht1 + colsalarie(compteur).ht2 + colsalarie(compteur).ht3 + colsalarie(compteur).ht4 + colsalarie(compteur).ht5 + colsalarie(compteur).ht6
colsalarie(compteur).totalsolde = colsalarie(compteur).solde1 + colsalarie(compteur).solde2 + colsalarie(compteur).solde3 + colsalarie(compteur).solde4 + colsalarie(compteur).solde5 + colsalarie(compteur).solde6
x = insertsalarie(colsalarie(compteur))
Next compteur |