diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiHistoriRekapIndexDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiHistoriRekapIndexDao.java index ba0142f0..2da48285 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiHistoriRekapIndexDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiHistoriRekapIndexDao.java @@ -103,6 +103,8 @@ public interface PegawaiHistoriRekapIndexDao extends PagingAndSortingRepository< String tahunHistoriCutiTerpakai = " and to_char(listTagCuti.tgl, 'yyyy') < :tahun"; + String tahunHistoriPengajuan = " and to_char(planPegStat.tglPengajuan, 'yyyy') < :tahun"; + @Query(strQryCutiTerpakai + tahunCutiTerpakai) public Integer getCutiTerpakai(@Param("tahun") String tahun, @Param("idPegawai") Integer idPegawai, @Param("listKomponenIndex") List listKomponenIndex); @@ -110,4 +112,9 @@ public interface PegawaiHistoriRekapIndexDao extends PagingAndSortingRepository< @Query(strQryCutiTerpakai + tahunHistoriCutiTerpakai) public Integer getHistoriCutiTerpakai(@Param("tahun") String tahun, @Param("idPegawai") Integer idPegawai, @Param("listKomponenIndex") List listKomponenIndex); + + @Query(strQryCutiTerpakai + tahunHistoriPengajuan) + public Integer getHistoriCutiTerpakaiByTahunPengajuan(@Param("tahun") String tahun, + @Param("idPegawai") Integer idPegawai, @Param("listKomponenIndex") List listKomponenIndex); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PermohonanStatusPegawaiImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PermohonanStatusPegawaiImpl.java index f3a5aa5b..e03e333c 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PermohonanStatusPegawaiImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PermohonanStatusPegawaiImpl.java @@ -316,6 +316,13 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi cutiTerpakaiN = 0; } + // Menghitung cuti terpakai by histori pengajuan + Integer jumlahTglByPengajuan = pegawaiHistoriRekapIndexDao.getHistoriCutiTerpakaiByTahunPengajuan(year, + pegawaiId, listKomponenIndex); + if (CommonUtil.isNullOrEmpty(jumlahTglByPengajuan)) { + jumlahTglByPengajuan = 0; + } + Integer rekapHistoriCutiTerpakai = pegawaiHistoriRekapIndexDao.getHistoriCutiTerpakai(yearN2, pegawaiId, listKomponenIndex); if (CommonUtil.isNullOrEmpty(rekapHistoriCutiTerpakai)) { @@ -724,7 +731,13 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi } } if (dataCutiN1 - jatahCutiTerpakaiN1 >= 6 && !jCutiN1) { - sisaCutiN1 = 6 - jatahCutiTerpakaiN1; + jumlahTglByPengajuan -= (dataHistoriCutiTerpakai + jatahCutiTerpakaiN2 + cutiTerpakaiB + cutiTerpakaiB1 + + cutiTerpakaiB2); + if (jumlahTglByPengajuan > jatahCutiTerpakaiN1) { + sisaCutiN1 = 6; + } else { + sisaCutiN1 = 6 - (jatahCutiTerpakaiN1 - jumlahTglByPengajuan); + } } else { sisaCutiN1 = dataCutiN1 - jatahCutiTerpakaiN1; }