/**
* Récupère l'AppelLigne et vérifie que la ligne appartient bien à l'appel
- * en cours de modification
+ * en cours de modification ou qu'il s'agit d'une absence hors appel ou d'une
+ * absence prévisionnelle
* @return une AppelLigne
*/
private AppelLigne getAppelLigne(Appel appel, AbsenceJournee absenceJournee, AppelLigneInfo appelLigneInfo) {
throw new IllegalArgumentException(
"La ligne d'appel (${appelLigneInfo.id}) n'existe pas.")
}
- if (appelLigne.appelId != appel.id && appelLigne.absenceJourneeId != absenceJournee.id) {
+ if (appelLigne.appelId != appel.id &&
+ appelLigne.absenceJourneeId != absenceJournee.id &&
+ !appelLigne.absencePrevisionnelle
+ ) {
throw new IllegalArgumentException(
"La ligne d'appel (${appelLigneInfo.id}) " +
"n'est associée ni à l'appel ${appel.id} ni à l'absence journée ${absenceJournee?.id}."
}
this.storeAppel = cfg.storeAppel;
+ this.storePlagesHoraires = cfg.storePlagesHoraires;
this.eleveSelectionneId = cfg.eleveSelectionneId;
var idAppel = this.getAppelIdFromColumnIndex(columnIndex);
if (idAppel !== this.Constantes.id.storeAppelDataIndexVide) {
var dataLigneAppel = selectionModel.grid.getStore().getAt(rowIndex);
- this.fireEvent(
- this.Constantes.eventId.actionEditeAbsence,
- dataLigneAppel,
- idAppel,
- this.getColumnIndexPlageHoraire(idAppel)
- )
+ var columnIndexPlageHoraire = this.getColumnIndexPlageHoraire(idAppel);
+ var idPlage = this.storePlagesHoraires.getAt(columnIndexPlageHoraire - 1).id;
+ // pour pouvoir modifier cette cellule,il faut soit qu'elle ait une
+ // absence liée à l'appel affiché, soit qu'elle ait une absence
+ // prévisionnelle, soit qu'elle soit vide
+ var absenceSurAppelEnCours = dataLigneAppel.get(idAppel);
+ var absenceSurPlageEnCours = dataLigneAppel.get("plage"+idPlage);
+ if (dataLigneAppel &&
+ (absenceSurAppelEnCours != "" ||
+ (absenceSurAppelEnCours == "" && absenceSurPlageEnCours == "") ||
+ (absenceSurPlageEnCours != "" && absenceSurPlageEnCours.previsionnel == true))){
+ this.fireEvent(
+ this.Constantes.eventId.actionEditeAbsence,
+ dataLigneAppel,
+ idAppel,
+ columnIndexPlageHoraire
+ )
+ }
}
// On retourne false pour ne pas sélectionner la cellule en saisie d'absence
return false;