diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java index 627121eb..42fd22e7 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java @@ -1539,12 +1539,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera private List> transformPelayananPaket(Integer idPegawai, List> listData) { List 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 paketList = mapProdukPaketDao.findAll(); List allProdukEntriId = paketList.stream().map(MapProdukPaket::getProdukEntriId) .collect(Collectors.toList()); @@ -1736,6 +1730,11 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera : byDetailTarifNonKelas.get().getHargaSatuan())); } }); + listData.forEach(d -> { + RemunHargaJasa hargaJasa = hargaJasaFixedPay(d); + d.put("hargaJasa", hargaJasa.getNilai()); + d.put("keterangan", hargaJasa.getKeterangan()); + }); return listData; } @@ -1866,12 +1865,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera } private List> transformPelayananKepalaPaketFixedPay(List> 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 +1874,11 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera d.put("hargaJasa", hargaJasa); d.put("isBatalPaket", false); }); + listData.forEach(d -> { + RemunHargaJasa hargaJasa = hargaJasaFixedPay(d); + d.put("hargaJasa", hargaJasa.getNilai()); + d.put("keterangan", hargaJasa.getKeterangan()); + }); return listData; } @@ -3300,4 +3298,87 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera return builder.build(); } + private RemunHargaJasa hargaJasaFixedPay(Map 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(); + } + }