|
|
@@ -78,11 +78,7 @@ def main(CodeAgent, MoisRH, AnneeRH, auto=False):
|
|
|
logger.info("Opération annulée")
|
|
|
return
|
|
|
|
|
|
- logger.info("Parcours des données")
|
|
|
- data = agrhum_db.read_all(Sql.format("""SELECT * FROM tbl_ImportRh
|
|
|
- WHERE codeagent ={:text} AND Month([daterh]) = {} AND Year([daterh]) = {}
|
|
|
- ORDER BY DateRH""", CodeAgent, MoisRH, AnneeRH))
|
|
|
-
|
|
|
+ # Chargement des baremes en memoire
|
|
|
sql = Sql.format("""SELECT tbl_baremes.NomBareme, tbl_baremes.BorneInf, tbl_baremes.BorneSup, tbl_baremes.Valeur,
|
|
|
tbl_PeriodeBareme.DateInf, tbl_PeriodeBareme.DateSup
|
|
|
FROM tbl_baremes
|
|
|
@@ -91,10 +87,14 @@ def main(CodeAgent, MoisRH, AnneeRH, auto=False):
|
|
|
AND tbl_PeriodeBareme.DateInf <= {:date}
|
|
|
AND (tbl_PeriodeBareme.DateSup is null or tbl_PeriodeBareme.DateSup > {:date}) """,
|
|
|
datetime(AnneeRH, MoisRH, 1), datetime(AnneeRH, MoisRH, 1))
|
|
|
-
|
|
|
baremes = agrhum_db.read_all(sql)
|
|
|
|
|
|
|
|
|
+ logger.info("Parcours des données")
|
|
|
+ data = agrhum_db.read_all(Sql.format("""SELECT * FROM tbl_ImportRh
|
|
|
+ WHERE codeagent ={:text} AND Month([daterh]) = {} AND Year([daterh]) = {}
|
|
|
+ ORDER BY DateRH""", CodeAgent, MoisRH, AnneeRH))
|
|
|
+
|
|
|
logger.info("Mise à jour de frais de déplacement")
|
|
|
# Parcours des données de la requête
|
|
|
index_dep = {}
|
|
|
@@ -179,19 +179,24 @@ def main(CodeAgent, MoisRH, AnneeRH, auto=False):
|
|
|
index_hs[el.DateRH.day].HS_Chantier += float(el.HeureSup1) + float(el.HeureSup2) + float(el.HeureSupDimanche) if el.strCategorieInterventionId != "07" else 0.0
|
|
|
|
|
|
# Calcul des dépassements du seuil des 14h
|
|
|
- totalhs = 0.0
|
|
|
- totalhsmois = 0.0
|
|
|
- for hs in index_hs.values() :
|
|
|
- totalhs = hs.HeureSup1 + hs.HeuresDep + hs.HeureSupNuit + hs.HeureSupDim
|
|
|
- if totalhs + totalhsmois <= 14 :
|
|
|
- hs.HeureSup1Inf14 = totalhs
|
|
|
- elif totalhsmois > 14 :
|
|
|
- hs.HeureSup1Sup14 = totalhs
|
|
|
- elif totalhs + totalhsmois > 14 :
|
|
|
- hs.HeureSup1Inf14 = 14.0 - totalhsmois
|
|
|
- hs.HeureSup1Sup14 = totalhs + totalhsmois - 14.0
|
|
|
+ # NB: On mesure le depassement uniquement pour les heures de jour,
|
|
|
+ # mais on tient compte des autres heures pour le cumul
|
|
|
+
|
|
|
+ cumulmois = 0.0
|
|
|
+ for hs in sorted(index_hs.values(), key=lambda x: x.JourRH) :
|
|
|
+ hsjour = hs.HeureSup1 + hs.HeuresDep
|
|
|
+
|
|
|
+ if cumulmois > 14:
|
|
|
+ hs.HeureSup1_inf_14 = 0.0
|
|
|
+ hs.HeureSup1_sup_14 = hsjour
|
|
|
+ elif cumulmois + hsjour > 14:
|
|
|
+ hs.HeureSup1_inf_14 = 14.0 - cumulmois
|
|
|
+ hs.HeureSup1_sup_14 = (cumulmois + hsjour) - 14.0
|
|
|
+ else:
|
|
|
+ hs.HeureSup1_inf_14 = hsjour
|
|
|
+ hs.HeureSup1_sup_14 = 0.0
|
|
|
|
|
|
- totalhsmois += totalhs
|
|
|
+ cumulmois += (hsjour + hs.HeureSupNuit + hs.HeureSupDim)
|
|
|
|
|
|
# Insertion en base
|
|
|
for hs in index_hs.values() :
|
|
|
@@ -202,8 +207,8 @@ def main(CodeAgent, MoisRH, AnneeRH, auto=False):
|
|
|
HS_VHCanal, HS_Chantier, Valide, CreePar, CreeLe )
|
|
|
VALUES
|
|
|
({hs.IDSuivi}, {hs.CodeAgent:text}, {hs.JourRH}, {hs.MoisRH}, {hs.AnneeRH},
|
|
|
- {hs.HeureSup1}, {hs.HeuresDep}, {hs.HeuresDepNuit}, {hs.HeureSup1Inf14},
|
|
|
- {hs.HeureSup1Sup14}, {hs.HeureSupNuit}, {hs.HeureSupDim},
|
|
|
+ {hs.HeureSup1}, {hs.HeuresDep}, {hs.HeuresDepNuit}, {hs.HeureSup1_inf_14},
|
|
|
+ {hs.HeureSup1_sup_14}, {hs.HeureSupNuit}, {hs.HeureSupDim},
|
|
|
{hs.HS_VHCanal}, {hs.HS_Chantier}, {hs.Valide}, {hs.CreePar:text}, {hs.CreeLe:date})
|
|
|
""", hs=hs)
|
|
|
|