Update RemunerasiServiceImpl.java

Perbaikan keterangan dan hitung harga jasa fixed pay dan diskon pegawai
This commit is contained in:
Salman Manoe 2024-10-07 09:03:26 +07:00
parent dc2971fd3c
commit 8c558eedbd

View File

@ -1539,12 +1539,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
private List<Map<String, Object>> transformPelayananPaket(Integer idPegawai, List<Map<String, Object>> listData) {
List<Integer> drKsmObgyn = pegawaiDao.getDokterByKsm(KSM_OBGYN);
SimpleDateFormat month = new SimpleDateFormat("MMM-yyyy", new Locale("in", "ID"));
listData.forEach(d -> {
if (CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))
&& Integer.parseInt(d.get("urutanSayatan").toString()) != 1)
d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ Double.parseDouble(d.get("persenSayatan").toString()) + "%)");
});
List<MapProdukPaket> paketList = mapProdukPaketDao.findAll();
List<Integer> allProdukEntriId = paketList.stream().map(MapProdukPaket::getProdukEntriId)
.collect(Collectors.toList());
@ -1736,6 +1730,12 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
: byDetailTarifNonKelas.get().getHargaSatuan()));
}
});
listData.forEach(d -> {
d.put("hargaJual", d.get("hargaJasa"));
RemunHargaJasa hargaJasa = hargaJasaFixedPay(d);
d.put("hargaJasa", hargaJasa.getNilai());
d.put("keterangan", hargaJasa.getKeterangan());
});
return listData;
}
@ -1866,12 +1866,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
}
private List<Map<String, Object>> transformPelayananKepalaPaketFixedPay(List<Map<String, Object>> listData) {
listData.forEach(d -> {
if (CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))
&& Integer.parseInt(d.get("urutanSayatan").toString()) != 1)
d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ Double.parseDouble(d.get("persenSayatan").toString()) + "%)");
});
listData.forEach(d -> {
double hargaJasa = Double.parseDouble(d.get("hargaJasaD").toString())
+ Double.parseDouble(d.get("hargaJasaAs").toString())
@ -1881,6 +1875,12 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
d.put("hargaJasa", hargaJasa);
d.put("isBatalPaket", false);
});
listData.forEach(d -> {
d.put("hargaJual", d.get("hargaJasa"));
RemunHargaJasa hargaJasa = hargaJasaFixedPay(d);
d.put("hargaJasa", hargaJasa.getNilai());
d.put("keterangan", hargaJasa.getKeterangan());
});
return listData;
}
@ -3300,4 +3300,87 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
return builder.build();
}
private RemunHargaJasa hargaJasaFixedPay(Map<String, Object> d) {
String keterangan = "";
RemunHargaJasa.RemunHargaJasaBuilder builder = RemunHargaJasa.builder();
if (KLINIK_KARYAWAN.equals(d.get("idRuangan")) || KLINIK_GIGI_KARYAWAN.equals(d.get("idRuangan"))) {
builder.nilai(0.0);
builder.keterangan("Diskon Klinik Karyawan (100%)");
return builder.build();
}
double hargaJasa = Double.parseDouble(d.get("hargaJasa").toString());
double hargaDiskon = Double.parseDouble(d.get("hargaDiskon").toString());
double persenDiskonPegawai = Double.parseDouble(d.get("persenDiskonPegawai").toString());
double persenDiskonJasa = 0.0;
if (DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("persenDiskonD"))) {
persenDiskonJasa = Double.parseDouble(d.get("persenDiskonD").toString());
} else if (ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("persenDiskonAs"))) {
persenDiskonJasa = Double.parseDouble(d.get("persenDiskonAs").toString());
} else if (DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))
&& CommonUtil.isNotNullOrEmpty(d.get("persenDiskonAn"))) {
persenDiskonJasa = Double.parseDouble(d.get("persenDiskonAn").toString());
}
if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) {
builder.nilai(hargaJasa - hargaDiskon);
} else {
builder.nilai(hargaJasa * (1 - persenDiskonPegawai / 100) * (1 - persenDiskonJasa / 100));
}
if (CommonUtil.isNotNullOrEmpty(d.get("idSayatan")) && CommonUtil.isNotNullOrEmpty("urutanSayatan")
&& Integer.parseInt(d.get("urutanSayatan").toString()) != 1)
keterangan = keterangan + "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " ("
+ Double.parseDouble(d.get("persenSayatan").toString() + "%");
if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) {
if (persenDiskonPegawai > 0.0 && persenDiskonJasa > 0.0) {
if (keterangan.isEmpty()) {
builder.keterangan("Selisih Paket + Diskon Pegawai (" + persenDiskonPegawai
+ "%) + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)");
} else {
builder.keterangan(keterangan + " + Selisih Paket + Diskon Pegawai (" + persenDiskonPegawai
+ "%) + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)");
}
} else if (persenDiskonPegawai > 0.0 && persenDiskonJasa <= 0.0) {
if (keterangan.isEmpty()) {
builder.keterangan("Selisih Paket + Diskon Pegawai (" + persenDiskonPegawai + "%)");
} else {
builder.keterangan(keterangan + " + Selisih Paket + Diskon Pegawai (" + persenDiskonPegawai + "%)");
}
} else if (persenDiskonPegawai <= 0.0 && persenDiskonJasa > 0.0) {
if (keterangan.isEmpty()) {
builder.keterangan("Selisih Paket + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)");
} else {
builder.keterangan(
keterangan + " + Selisih Paket + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)");
}
} else {
builder.keterangan(keterangan);
}
} else {
if (persenDiskonPegawai > 0.0 && persenDiskonJasa > 0.0) {
if (keterangan.isEmpty()) {
builder.keterangan("Diskon Pegawai (" + persenDiskonPegawai + "%) + Diskon Jasa Medis Dokter ("
+ persenDiskonJasa + "%)");
} else {
builder.keterangan(keterangan + " + Diskon Pegawai (" + persenDiskonPegawai
+ "%) + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)");
}
} else if (persenDiskonPegawai > 0.0 && persenDiskonJasa <= 0.0) {
if (keterangan.isEmpty()) {
builder.keterangan("Diskon Pegawai (" + persenDiskonPegawai + "%)");
} else {
builder.keterangan(keterangan + " + Diskon Pegawai (" + persenDiskonPegawai + "%)");
}
} else if (persenDiskonPegawai <= 0.0 && persenDiskonJasa > 0.0) {
if (keterangan.isEmpty()) {
builder.keterangan("Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)");
} else {
builder.keterangan(keterangan + " + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)");
}
} else {
builder.keterangan(keterangan);
}
}
return builder.build();
}
}