/** * A partir d'un certain nombre de conges legaux, le total travaille par l'agent sur l'annee est * reduit. * * <p>- si total jours légaux > 90j : reduction de 10 jours a 7h00 (pour un 100%) - si total jours * légaux > 180j : reduction de 20 jours a 7h00 (pour un 100%) * * @param planning : l'objet <code>Planning</code> concerne * @return le decompte en minutes. */ public static int getMinutesDecompteLegal(Planning planning) { int totalJourCongesLegaux = getNbJourWithDureeForStatut( planning, "isCongeLegalJourneeComplete", planning.affectationAnnuelle().dateDebutAnnee(), planning.affectationAnnuelle().dateFinAnnee()); int minutesDecompteLegal = 0; if (totalJourCongesLegaux > N_JOUR_PALIER_1) { minutesDecompteLegal = 10 * N_MINUTES_JOUR; if (totalJourCongesLegaux > N_JOUR_PALIER_2) { minutesDecompteLegal += 10 * N_MINUTES_JOUR; } } if (minutesDecompteLegal > 0) { // on applique le prorata de(s) quotite(s) de travail // sur l'annee universitaire double ratio = 0.0; NSArray periodes = planning.affectationAnnuelle().periodes(); for (int i = 0; i < periodes.count(); i++) { EOPeriodeAffectationAnnuelle periode = (EOPeriodeAffectationAnnuelle) planning.affectationAnnuelle().periodes().objectAtIndex(i); int nJours = getTotalJours360(periode.dateDebut(), periode.dateFin()); ratio += (((double) nJours) / 360.0) * (periode.quotite().doubleValue() / 100.0); } minutesDecompteLegal = (int) ((double) minutesDecompteLegal * ratio); } return minutesDecompteLegal; }
/** * Connaitre le total de jour ayant le statut <code>strStatut</code>. * * <p>Cette methode se base sur la nom d'une methode de la classe <code>Jour</code>. * * @see Jour */ public static int getNbJourWithDureeForStatut( Planning planning, String strStatut, NSTimestamp dateDebut, NSTimestamp dateFin) { EOQualifier qual = CRIDataBus.newCondition( strStatut + " = %@ AND date >= %@ AND date <= %@", new NSArray(new Object[] {Boolean.TRUE, dateDebut, dateFin})); return EOQualifier.filteredArrayWithQualifier(planning.jours(), qual).count(); }