Skip to content

Commit

Permalink
Merge pull request #329 from consiglionazionaledellericerche/328-abil…
Browse files Browse the repository at this point in the history
…itare-la-possibilità-di-superare-le-200-ore-di-straordinario

Aggiunto parametro personale per la gestione del limite delle ore di straordinario annuale.
  • Loading branch information
criluc authored Jan 28, 2025
2 parents 0bcfe7c + d507073 commit 8aa43d6
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 8 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [2.22.2] - Unreleased
### Added
- Aggiunto parametro di configurazione personale che consente di bypassare il limite delle 200 ore annue di straordinario.

### Changed
- Modificato l'algoritmo che assegna le ore di straordinario in funzione del parametro di cui alla sezione Added.

## [2.22.1] - 2025-01-23
### Added
- Aggiunto parametro di configurazione generale per determinare se sia possibile modificare la quantità oraria per la
Expand Down
6 changes: 4 additions & 2 deletions app/controllers/Competences.java
Original file line number Diff line number Diff line change
Expand Up @@ -577,10 +577,12 @@ public static void editCompetence(long personId, long competenceCodeId, int year
notFoundIfNull(code);
notFoundIfNull(person);
Office office = person.getOffice();
if (code.getCode().equals("S1")) {
if (code.getCode().equals("S1") || code.getCode().equals("S2") || code.getCode().equals("S3")) {
boolean check = (Boolean) configurationManager
.configValue(person, EpasParam.DISABLE_OVERTIME_LIMIT);
PersonStampingRecap psDto = stampingsRecapFactory.create(person,
year, month, true);
render(person, code, year, month, psDto, office, competence);
render(person, code, year, month, psDto, office, competence, check);
}

render(person, code, year, month, office, competence);
Expand Down
17 changes: 12 additions & 5 deletions app/manager/CompetenceManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.google.common.collect.Table;
import dao.CompetenceCodeDao;
import dao.CompetenceDao;
import dao.ConfigurationDao;
import dao.OfficeDao;
import dao.PersonDao;
import dao.PersonDayDao;
Expand All @@ -49,6 +50,8 @@
import java.util.stream.Collectors;
import javax.inject.Inject;
import manager.competences.ShiftTimeTableDto;
import manager.configurations.ConfigurationManager;
import manager.configurations.EpasParam;
import manager.recaps.personstamping.PersonStampingRecap;
import manager.recaps.personstamping.PersonStampingRecapFactory;
import models.Competence;
Expand Down Expand Up @@ -99,7 +102,7 @@ public class CompetenceManager {
private final PersonReperibilityDayDao reperibilityDao;
private final PersonStampingRecapFactory stampingsRecapFactory;
private final PersonShiftDayDao personShiftDayDao;

private final ConfigurationManager configurationManager;
private final PersonDao personDao;


Expand All @@ -119,7 +122,7 @@ public CompetenceManager(CompetenceCodeDao competenceCodeDao,
PersonDayDao personDayDao, IWrapperFactory wrapperFactory,
PersonDayManager personDayManager, PersonReperibilityDayDao reperibilityDao,
PersonStampingRecapFactory stampingsRecapFactory, PersonShiftDayDao personshiftDayDao,
SecureManager secureManager, PersonDao personDao) {
SecureManager secureManager, ConfigurationManager configurationManager,PersonDao personDao) {

this.competenceCodeDao = competenceCodeDao;
this.officeDao = officeDao;
Expand All @@ -130,6 +133,7 @@ public CompetenceManager(CompetenceCodeDao competenceCodeDao,
this.reperibilityDao = reperibilityDao;
this.stampingsRecapFactory = stampingsRecapFactory;
this.personShiftDayDao = personshiftDayDao;
this.configurationManager = configurationManager;
this.personDao = personDao;
}

Expand Down Expand Up @@ -403,13 +407,16 @@ public String canAddCompetence(Competence comp, Integer value) {
case yearly:
group = competenceCodeDao
.getCodeWithGroup(comp.getCompetenceCode().getCompetenceCodeGroup(),
Optional.fromNullable(comp.getCompetenceCode()));
Optional.absent());
compList = competenceDao
.getCompetences(Optional.fromNullable(comp.getPerson()), comp.getYear(),
Optional.<Integer>absent(), group);
sum = compList.stream().mapToInt(i -> i.getValueApproved()).sum();
if (sum + value > comp.getCompetenceCode().getCompetenceCodeGroup().getLimitValue()) {
result = Messages.get("CompManager.overYearLimit");
if (!(Boolean) configurationManager
.configValue(comp.getPerson(), EpasParam.DISABLE_OVERTIME_LIMIT)) {
if (sum + value > comp.getCompetenceCode().getCompetenceCodeGroup().getLimitValue()) {
result = Messages.get("CompManager.overYearLimit");
}
}
break;
case onMonthlyPresence:
Expand Down
8 changes: 8 additions & 0 deletions app/manager/configurations/EpasParam.java
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,14 @@ public enum EpasParam {
EpasParamValueType.formatValue(false),
Lists.<RecomputationType>newArrayList(),
Person.class),

DISABLE_OVERTIME_LIMIT("disable_overtime_limit",
EpasParamCategory.GENERAL,
EpasParamTimeType.GENERAL,
EpasParamValueType.BOOLEAN,
EpasParamValueType.formatValue(false),
Lists.<RecomputationType>newArrayList(),
Person.class),


//#######################################################################################
Expand Down
10 changes: 9 additions & 1 deletion app/views/Competences/editCompetence.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

#{alert color:'warning'}
<!-- Suggerimenti -->
#{if code.code.equals('S1')}
#{if code.code.equals('S1') || code.code.equals('S2')}
#{if psDto != null}
<p><strong>Suggerimenti</strong></p>
<p>
Expand Down Expand Up @@ -65,9 +65,17 @@
<!-- Limiti -->
<p><strong>Limiti</strong></p>
#{if code.code.equals('S1') || code.code.equals('S2')}
#{if !check}
<p>
Massimo annuale per persona <strong class="text-danger">${code.competenceCodeGroup.limitValue} ore</strong>
</p>
#{/if}
#{else}
<p>Per ${person.fullname} è stato disabilitato il limite delle 200 ore annue di straordinario.
Se non è questo che si desidera, verificare la sua configurazione personale e modificare il valore del parametro
<em>Disabilitare limite 200 ore di straordinario annuale</em>
</p>
#{/else}
#{/if}
#{elseif code.code.equals('207')}
<p>Valore massimo assegnabile <strong class="text-danger">12 giorni</strong></p>
Expand Down
6 changes: 6 additions & 0 deletions app/views/Configurations/_tutorial.html
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,12 @@
amministrazione che intende usufruire del permesso in questione.
</p>
#{/if}

#{if configuration.epasParam.equals(manager.configurations.EpasParam.DISABLE_OVERTIME_LIMIT) }
<p>Abilitando questa funzionalità sarà possibile per il dipendente <strong>${configuration.person.fullname}</strong> disabilitare il limite
delle 200 ore di straordinario annuale previste dalla normativa, consentendo quindi lo sforamento.
</p>
#{/if}

#{if configuration.epasParam.equals(manager.configurations.EpasParam.MATERNITY_PERIOD) }
<p>Inserire lo stato di maternità per il dipendente <strong>${configuration.person.fullname}</strong> e la date di inizio e fine periodo.</p>
Expand Down
1 change: 1 addition & 0 deletions conf/messages.it
Original file line number Diff line number Diff line change
Expand Up @@ -1383,6 +1383,7 @@ AGILE_WORK_OR_DISABLED_PEOPLE_ASSISTANCE=Auto inserimento lavoro agile per dipen
SMARTWORKING =Auto inserimento codice di assenza per smartworking
AGILE_WORK =Inserimento codice di assenza per Lavoro Agile di cui alla nota del DG 22278 del 22 marzo 2022
PARENTAL_LEAVE_FOR_FATHERS =Inserimento codici di congedo parentale per il padre
DISABLE_OVERTIME_LIMIT =Disabilitare limite 200 ore di straordinario annuale

DAYS=Ricalcoli giornalieri.
RESIDUAL_HOURS=Ricalcoli mensili sul residuo ore.
Expand Down

0 comments on commit 8aa43d6

Please sign in to comment.