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 d9cb51e8..91d0fd96 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 @@ -3,6 +3,7 @@ package com.jasamedika.medifirst2000.service.impl; import com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.dao.*; +import com.jasamedika.medifirst2000.dto.RemunHargaJasa; import com.jasamedika.medifirst2000.entities.*; import com.jasamedika.medifirst2000.exception.ServiceVOException; import com.jasamedika.medifirst2000.service.RemunerasiService; @@ -278,10 +279,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera */ Date tglAwal = DateUtil.startMonth(date); Date tglAkhir = DateUtil.endMonth(date); - { - tglAwal = new Date(1727370000000L); - tglAkhir = new Date(1727456399000L); - } List> listJadwalKerja = pegawaiJadwalKerjaDao.findJamMasukJamPulang(idPegawai, tglAwal, tglAkhir); /* @@ -398,12 +395,12 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera d.put("hargaJual", d.get("komponenTotalTarif")); d.put("isTermasukProporsi", true); double hargaJual = Double.parseDouble(d.get("hargaJual").toString()); - if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) - hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString()); if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { - d.put("hargaJasa", persenRemunDokterUmumHD / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenRemunDokterUmumHD / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (terapisRehabMedik.contains(idPegawai)) { - d.put("hargaJasa", persenRemunTerapis / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenRemunTerapis / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) @@ -412,98 +409,122 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString())) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { double persenJasa = persenOperator / 100; - d.put("hargaJasa", persenJasa * persenTarifIBS * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString())) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { double persenJasa = persenAsistenIBS / 100; - d.put("hargaJasa", persenJasa * persenTarifIBS * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString())) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { double persenJasa = persenAnestesi / 100; - d.put("hargaJasa", persenJasa * persenTarifIBS * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { - d.put("hargaJasa", persenOperator / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { - d.put("hargaJasa", persenAsistenIBS / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { - d.put("hargaJasa", persenAnestesi / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { - d.put("hargaJasa", persenOperator / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { - d.put("hargaJasa", persenAsistenIBS / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (RADIOLOGI.equals(d.get("idDepartemen"))) { - d.put("hargaJasa", persenRadiologi / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { - d.put("hargaJasa", persenRehabMedik / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (KONSULTASI.equals(d.get("idGolonganProduk"))) { - d.put("hargaJasa", persenKonsultasi / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (VISIT.equals(d.get("idGolonganProduk"))) { - d.put("hargaJasa", persenVisite / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkGenetika.contains(idPegawai) && idProdukLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString())) && (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) { /* * A rule for claimed <= Jul 31th 2023 */ - d.put("hargaJasa", persenRemunLabGenetika / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenRemunLabGenetika / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) { - d.put("hargaJasa", persenRemunLabGenetika / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenRemunLabGenetika / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (drKkPatologiAnatomiList.contains(idPegawai)) { - d.put("hargaJasa", persenRemunDokterPA / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenRemunDokterPA / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (LABORATORIUM.equals(d.get("idDepartemen"))) { - d.put("hargaJasa", persenLaboratorium / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) d.put("isTermasukProporsi", false); } else if (CommonUtil.isNotNullOrEmpty(d.get("idRuangan")) && Arrays.asList(ICU_NICU).contains(Integer.parseInt(d.get("idRuangan").toString()))) { double persenJasa = persenTindakan / 100; - d.put("hargaJasa", persenJasa * persenTarifICU * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifICU, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } else { - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, false); + d.put("hargaJasa", hargaJasa.getNilai()); } } /* @@ -1520,8 +1541,8 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera SimpleDateFormat month = new SimpleDateFormat("MMM-yyyy", new Locale("in", "ID")); listData.forEach(d -> { if (CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% komponen tarif, sayatan ke-" + d.get("urutanSayatan").toString()); + 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) @@ -1846,8 +1867,8 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera private List> transformPelayananKepalaPaketFixedPay(List> listData) { listData.forEach(d -> { if (CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% komponen tarif, sayatan ke-" + d.get("urutanSayatan").toString()); + 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()) @@ -1878,8 +1899,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera System.out.println(e.getMessage()); return null; } - Locale indonesia = new Locale("in", "ID"); - NumberFormat nf = NumberFormat.getCurrencyInstance(indonesia); Map remunFfs; if (CommonUtil.isNotNullOrEmpty(data)) { remunFfs = data; @@ -1927,128 +1946,164 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera */ for (Map d : listData) { double hargaJual = Double.parseDouble(d.get("hargaJual").toString()); - String keteranganTambahan = ""; - if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) { - hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString()); - keteranganTambahan = " dan selisih paket karena diskon " - + nf.format(Double.parseDouble(d.get("hargaDiskon").toString())); - } if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRemunDokterUmumHD / 100, hargaJual, d, true); d.put("persenJasa", persenRemunDokterUmumHD + "%"); - d.put("hargaJasa", persenRemunDokterUmumHD / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (terapisRehabMedik.contains(idPegawai)) { + RemunHargaJasa hargaJasa = hargaJasa(persenRemunTerapis / 100, hargaJual, d, true); d.put("persenJasa", persenRemunTerapis + "%"); - d.put("hargaJasa", persenRemunTerapis / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString())) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { double persenJasa = persenOperator / 100; + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false); d.put("persenJasa", persenOperator + "%"); - d.put("keterangan", "Dari " + persenTarifJasaBedah + "% tarif" + keteranganTambahan); - d.put("hargaJasa", persenJasa * persenTarifIBS * hargaJual); + d.put("keterangan", "Tarif Jasa Bedah (" + persenTarifJasaBedah + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString())) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { double persenJasa = persenAsistenIBS / 100; + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false); d.put("persenJasa", persenAsistenIBS + "%"); - d.put("keterangan", "Dari " + persenTarifJasaBedah + "% tarif" + keteranganTambahan); - d.put("hargaJasa", persenJasa * persenTarifIBS * hargaJual); + d.put("keterangan", "Tarif Jasa Bedah (" + persenTarifJasaBedah + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString())) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { double persenJasa = persenAnestesi / 100; + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d, false); d.put("persenJasa", persenAnestesi + "%"); - d.put("keterangan", "Dari " + persenTarifJasaBedah + "% tarif" + keteranganTambahan); - d.put("hargaJasa", persenJasa * persenTarifIBS * hargaJual); + d.put("keterangan", "Tarif Jasa Bedah (" + persenTarifJasaBedah + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenOperator + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - d.put("hargaJasa", persenOperator / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " (" + + Double.parseDouble(d.get("persenSayatan").toString()) + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAsistenIBS + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - d.put("hargaJasa", persenAsistenIBS / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " (" + + Double.parseDouble(d.get("persenSayatan").toString()) + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAnestesi + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - d.put("hargaJasa", persenAnestesi / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " (" + + Double.parseDouble(d.get("persenSayatan").toString()) + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d, true); d.put("persenJasa", persenOperator + "%"); - d.put("hargaJasa", persenOperator / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, true); d.put("persenJasa", persenAsistenIBS + "%"); - d.put("hargaJasa", persenAsistenIBS / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (RADIOLOGI.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, true); d.put("persenJasa", persenRadiologi + "%"); - d.put("hargaJasa", persenRadiologi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true); d.put("persenJasa", persenRehabMedik + "%"); - d.put("hargaJasa", persenRehabMedik / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (KONSULTASI.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, true); d.put("persenJasa", persenKonsultasi + "%"); - d.put("hargaJasa", persenKonsultasi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (VISIT.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, true); d.put("persenJasa", persenVisite + "%"); - d.put("hargaJasa", persenVisite / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkGenetika.contains(idPegawai) && idProdukLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString())) && (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRemunLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenRemunLabGenetika + "%"); - d.put("hargaJasa", persenRemunLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRemunLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenRemunLabGenetika + "%"); - d.put("hargaJasa", persenRemunLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkPatologiAnatomiList.contains(idPegawai)) { + RemunHargaJasa hargaJasa = hargaJasa(persenRemunDokterPA / 100, hargaJual, d, true); d.put("persenJasa", persenRemunDokterPA + "%"); - d.put("hargaJasa", persenRemunDokterPA / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (LABORATORIUM.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, true); d.put("persenJasa", persenLaboratorium + "%"); - d.put("hargaJasa", persenLaboratorium / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (CommonUtil.isNotNullOrEmpty(d.get("idRuangan")) && Arrays.asList(ICU_NICU).contains(Integer.parseInt(d.get("idRuangan").toString()))) { double persenJasa = persenTindakan / 100; + RemunHargaJasa hargaJasa = hargaJasa(persenJasa * persenTarifICU, hargaJual, d, false); d.put("persenJasa", persenTindakan + "%"); - d.put("keterangan", "Dari " + persenTarifJasaICU + "% tarif" + keteranganTambahan); - d.put("hargaJasa", persenJasa * persenTarifICU * hargaJual); + d.put("keterangan", "Tarif Jasa ICU (" + persenTarifJasaICU + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } } /* @@ -2222,8 +2277,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera System.out.println(e.getMessage()); return null; } - Locale indonesia = new Locale("in", "ID"); - NumberFormat nf = NumberFormat.getCurrencyInstance(indonesia); Map remunFfs; if (CommonUtil.isNotNullOrEmpty(data)) { remunFfs = data; @@ -2263,110 +2316,141 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera */ for (Map d : listData) { double hargaJual = Double.parseDouble(d.get("hargaJual").toString()); - String keteranganTambahan = ""; - if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) { - hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString()); - keteranganTambahan = " dan selisih paket karena diskon " - + nf.format(Double.parseDouble(d.get("hargaDiskon").toString())); - } if (CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenBPJS / 100, hargaJual, d, true); /* * Set persen jasa dokter luar yang klaim ffs dengan persen jasa * dari tarif total */ d.put("persenJasa", persenBPJS + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); /* * Set harga jasa klaim jasa ffs pasien bpjs oleh dokter-dokter * tertentu */ - d.put("hargaJasa", persenBPJS / 100 * hargaJual); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaDokterUmumHD / 100, hargaJual, d, true); d.put("persenJasa", persenJasaDokterUmumHD + "%"); - d.put("hargaJasa", persenJasaDokterUmumHD / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (terapisRehabMedik.contains(idPegawai)) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaTerapis / 100, hargaJual, d, true); d.put("persenJasa", persenJasaTerapis + "%"); - d.put("hargaJasa", persenJasaTerapis / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenOperator + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - d.put("hargaJasa", persenOperator / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " (" + + Double.parseDouble(d.get("persenSayatan").toString()) + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAsistenIBS + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - d.put("hargaJasa", persenAsistenIBS / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " (" + + Double.parseDouble(d.get("persenSayatan").toString()) + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAnestesi + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - d.put("hargaJasa", persenAnestesi / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " (" + + Double.parseDouble(d.get("persenSayatan").toString()) + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d, true); d.put("persenJasa", persenOperator + "%"); - d.put("hargaJasa", persenOperator / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, true); d.put("persenJasa", persenAsistenIBS + "%"); - d.put("hargaJasa", persenAsistenIBS / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (RADIOLOGI.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, true); d.put("persenJasa", persenRadiologi + "%"); - d.put("hargaJasa", persenRadiologi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true); d.put("persenJasa", persenRehabMedik + "%"); - d.put("hargaJasa", persenRehabMedik / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (KONSULTASI.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, true); d.put("persenJasa", persenKonsultasi + "%"); - d.put("hargaJasa", - persenKonsultasi / 100 * hargaJual - * (1 - Double.parseDouble(d.get("persenDiskonPegawai").toString()) / 100) - * (1 - (Double.parseDouble(d.get("persenDiskonD").toString()) / 100))); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (VISIT.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, true); d.put("persenJasa", persenVisite + "%"); - d.put("hargaJasa", persenVisite / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkGenetika.contains(idPegawai) && idProdukLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString())) && (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenJasaLabGenetika + "%"); - d.put("hargaJasa", persenJasaLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenJasaLabGenetika + "%"); - d.put("hargaJasa", persenJasaLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkPatologiAnatomiList.contains(idPegawai)) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaDokterPA / 100, hargaJual, d, true); d.put("persenJasa", persenJasaDokterPA + "%"); - d.put("hargaJasa", persenJasaDokterPA / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (LABORATORIUM.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, true); d.put("persenJasa", persenLaboratorium + "%"); - d.put("hargaJasa", persenLaboratorium / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } } /* @@ -2546,8 +2630,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera System.out.println(e.getMessage()); return null; } - Locale indonesia = new Locale("in", "ID"); - NumberFormat nf = NumberFormat.getCurrencyInstance(indonesia); Map remunFfs; if (CommonUtil.isNotNullOrEmpty(data)) { remunFfs = data; @@ -2588,111 +2670,147 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera */ for (Map d : listData) { double hargaJual = Double.parseDouble(d.get("hargaJual").toString()); - String keteranganTambahan = ""; - if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) { - hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString()); - keteranganTambahan = " dan selisih paket karena diskon " - + nf.format(Double.parseDouble(d.get("hargaDiskon").toString())); - } if (CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenBPJS / 100, hargaJual, d, true); /* * Set persen jasa dokter luar yang klaim ffs dengan persen jasa * dari tarif total */ d.put("persenJasa", persenBPJS + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); /* * Set harga jasa klaim jasa ffs pasien bpjs oleh dokter-dokter * tertentu */ - d.put("hargaJasa", persenBPJS / 100 * hargaJual); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaDokterUmumHD / 100, hargaJual, d, true); d.put("persenJasa", persenJasaDokterUmumHD + "%"); - d.put("hargaJasa", persenJasaDokterUmumHD / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (terapisRehabMedik.contains(idPegawai) && REHAB_MEDIK.equals(d.get("idDepartemen")) && "Eksekutif".equals(d.get("jenisRuangan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaLuarTerapis / 100, hargaJual, d, true); d.put("persenJasa", persenJasaLuarTerapis + "%"); - d.put("hargaJasa", persenJasaLuarTerapis / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (terapisRehabMedik.contains(idPegawai)) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaTerapis / 100, hargaJual, d, true); d.put("persenJasa", persenJasaTerapis + "%"); - d.put("hargaJasa", persenJasaTerapis / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenOperator + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - d.put("hargaJasa", persenOperator / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " (" + + Double.parseDouble(d.get("persenSayatan").toString()) + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAsistenIBS + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - d.put("hargaJasa", persenAsistenIBS / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " (" + + Double.parseDouble(d.get("persenSayatan").toString()) + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAnestesi + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - d.put("hargaJasa", persenAnestesi / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " (" + + Double.parseDouble(d.get("persenSayatan").toString()) + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperator / 100, hargaJual, d, true); d.put("persenJasa", persenOperator + "%"); - d.put("hargaJasa", persenOperator / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, true); d.put("persenJasa", persenAsistenIBS + "%"); - d.put("hargaJasa", persenAsistenIBS / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (RADIOLOGI.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, true); d.put("persenJasa", persenRadiologi + "%"); - d.put("hargaJasa", persenRadiologi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true); d.put("persenJasa", persenRehabMedik + "%"); - d.put("hargaJasa", persenRehabMedik / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (KONSULTASI.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, true); d.put("persenJasa", persenKonsultasi + "%"); - d.put("hargaJasa", persenKonsultasi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (VISIT.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, true); d.put("persenJasa", persenVisite + "%"); - d.put("hargaJasa", persenVisite / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkGenetika.contains(idPegawai) && idProdukLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString())) && (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenJasaLabGenetika + "%"); - d.put("hargaJasa", persenJasaLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenJasaLabGenetika + "%"); - d.put("hargaJasa", persenJasaLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkPatologiAnatomiList.contains(idPegawai)) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaDokterPA / 100, hargaJual, d, true); d.put("persenJasa", persenJasaDokterPA + "%"); - d.put("hargaJasa", persenJasaDokterPA / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (LABORATORIUM.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, true); d.put("persenJasa", persenLaboratorium + "%"); - d.put("hargaJasa", persenLaboratorium / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } } /* @@ -2772,8 +2890,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera System.out.println(e.getMessage()); return null; } - Locale indonesia = new Locale("in", "ID"); - NumberFormat nf = NumberFormat.getCurrencyInstance(indonesia); Map remunFfs = this.splitRemunFfs(idPegawai, bulan); @SuppressWarnings("unchecked") List> listData = (List>) remunFfs.get("klaim-mpp"); @@ -2810,108 +2926,142 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera */ for (Map d : listData) { double hargaJual = Double.parseDouble(d.get("hargaJual").toString()); - String keteranganTambahan = ""; - if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) { - hargaJual -= Double.parseDouble(d.get("hargaDiskon").toString()); - keteranganTambahan = " dan selisih paket karena diskon " - + nf.format(Double.parseDouble(d.get("hargaDiskon").toString())); - } if (CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenBPJS / 100, hargaJual, d, true); /* * Set persen jasa dokter luar yang klaim ffs dengan persen jasa * dari tarif total */ d.put("persenJasa", persenBPJS + "%"); + d.put("keterangan", hargaJasa.getKeterangan()); /* * Set harga jasa klaim jasa ffs pasien bpjs oleh dokter-dokter * tertentu */ - d.put("hargaJasa", persenBPJS / 100 * hargaJual); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKsmUmumList.contains(idPegawai) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaDokterUmumHD / 100, hargaJual, d, true); d.put("persenJasa", persenJasaDokterUmumHD + "%"); - d.put("hargaJasa", persenJasaDokterUmumHD / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperatorIBS / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenOperatorIBS + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - d.put("hargaJasa", persenOperatorIBS / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " (" + + Double.parseDouble(d.get("persenSayatan").toString()) + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAsistenIBS + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - d.put("hargaJasa", persenAsistenIBS / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " (" + + Double.parseDouble(d.get("persenSayatan").toString()) + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, + (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual)), d, + false); d.put("persenJasa", persenAnestesi + "%"); - d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) - + "% tarif" + keteranganTambahan + ", sayatan ke-" + d.get("urutanSayatan").toString()); - d.put("hargaJasa", persenAnestesi / 100 - * (hargaJual - (Double.parseDouble(d.get("persenSayatan").toString()) / 100 * hargaJual))); + d.put("keterangan", "Diskon Sayatan ke-" + d.get("urutanSayatan").toString() + " (" + + Double.parseDouble(d.get("persenSayatan").toString()) + "%)" + hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenOperatorIBS / 100, hargaJual, d, true); d.put("persenJasa", persenOperatorIBS + "%"); - d.put("hargaJasa", persenOperatorIBS / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAsistenIBS / 100, hargaJual, d, true); d.put("persenJasa", persenAsistenIBS + "%"); - d.put("hargaJasa", persenAsistenIBS / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen")) || (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan")))) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (RADIOLOGI.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRadiologi / 100, hargaJual, d, true); d.put("persenJasa", persenRadiologi + "%"); - d.put("hargaJasa", persenRadiologi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (terapisRehabMedik.contains(idPegawai) && REHAB_MEDIK.equals(d.get("idDepartemen")) && "Eksekutif".equals(d.get("jenisRuangan"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaTerapis / 100, hargaJual, d, true); d.put("persenJasa", persenJasaTerapis + "%"); - d.put("hargaJasa", persenJasaTerapis / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (REHAB_MEDIK.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenRehabMedik / 100, hargaJual, d, true); d.put("persenJasa", persenRehabMedik + "%"); - d.put("hargaJasa", persenRehabMedik / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (KONSULTASI.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenKonsultasi / 100, hargaJual, d, true); d.put("persenJasa", persenKonsultasi + "%"); - d.put("hargaJasa", persenKonsultasi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (VISIT.equals(d.get("idGolonganProduk"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenVisite / 100, hargaJual, d, true); d.put("persenJasa", persenVisite + "%"); - d.put("hargaJasa", persenVisite / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drAnastesiList.contains(idPegawai) && DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenAnestesi / 100, hargaJual, d, true); d.put("persenJasa", persenAnestesi + "%"); - d.put("hargaJasa", persenAnestesi / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkGenetika.contains(idPegawai) && idProdukLabGenetikaLuarRuangan.contains(Integer.parseInt(d.get("idProduk").toString())) && (date.before(new Date(1690822799000L)) || date.equals(new Date(1690822799000L)))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenJasaLabGenetika + "%"); - d.put("hargaJasa", persenJasaLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (Arrays.asList(GENETIKA).contains(Integer.parseInt(d.get("idRuangan").toString()))) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaLabGenetika / 100, hargaJual, d, true); d.put("persenJasa", persenJasaLabGenetika + "%"); - d.put("hargaJasa", persenJasaLabGenetika / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (drKkPatologiAnatomiList.contains(idPegawai)) { + RemunHargaJasa hargaJasa = hargaJasa(persenJasaDokterPA / 100, hargaJual, d, true); d.put("persenJasa", persenJasaDokterPA + "%"); - d.put("hargaJasa", persenJasaDokterPA / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else if (LABORATORIUM.equals(d.get("idDepartemen"))) { + RemunHargaJasa hargaJasa = hargaJasa(persenLaboratorium / 100, hargaJual, d, true); d.put("persenJasa", persenLaboratorium + "%"); - d.put("hargaJasa", persenLaboratorium / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } else { + RemunHargaJasa hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d, true); d.put("persenJasa", persenTindakan + "%"); - d.put("hargaJasa", persenTindakan / 100 * hargaJual); + d.put("keterangan", hargaJasa.getKeterangan()); + d.put("hargaJasa", hargaJasa.getNilai()); } } /* @@ -3008,4 +3158,74 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera return result; } + private RemunHargaJasa hargaJasa(double persenRemunerasi, double hargaJual, Map d, + boolean isFrontNote) { + RemunHargaJasa.RemunHargaJasaBuilder builder = RemunHargaJasa.builder(); + if (KLINIK_KARYAWAN.equals(d.get("idRuangan")) || KLINIK_GIGI_KARYAWAN.equals(d.get("idRuangan"))) { + builder.nilai(0.0); + if (isFrontNote) { + builder.keterangan("Diskon Klinik Karyawan (100%)"); + } else { + builder.keterangan(" + Diskon Klinik Karyawan (100%)"); + } + return builder.build(); + } + double persenDiskonPegawai = Double.parseDouble(d.get("persenDiskonPegawai").toString()); + double persenDiskonJasa = 0.0; + if (DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { + persenDiskonJasa = Double.parseDouble(d.get("persenDiskonD").toString()); + } else if (ASISTEN_SPESIALIS.equals(d.get("idJenisPelaksana"))) { + persenDiskonJasa = Double.parseDouble(d.get("persenDiskonAs").toString()); + } else if (DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { + persenDiskonJasa = Double.parseDouble(d.get("persenDiskonAn").toString()); + } + builder.nilai(persenRemunerasi * hargaJual * (1 - persenDiskonPegawai / 100) * (1 - persenDiskonJasa / 100)); + if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) { + if (persenDiskonPegawai > 0.0 && persenDiskonJasa > 0.0) { + if (isFrontNote) { + builder.keterangan("Selisih Paket + Diskon Pegawai (" + persenDiskonPegawai + + "%) + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)"); + } else { + builder.keterangan(" + Selisih Paket + Diskon Pegawai (" + persenDiskonPegawai + + "%) + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)"); + } + } else if (persenDiskonPegawai > 0.0 && persenDiskonJasa <= 0.0) { + if (isFrontNote) { + builder.keterangan("Selisih Paket + Diskon Pegawai (" + persenDiskonPegawai + "%)"); + } else { + builder.keterangan(" + Selisih Paket + Diskon Pegawai (" + persenDiskonPegawai + "%)"); + } + } else if (persenDiskonPegawai <= 0.0 && persenDiskonJasa > 0.0) { + if (isFrontNote) { + builder.keterangan("Selisih Paket + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)"); + } else { + builder.keterangan(" + Selisih Paket + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)"); + } + } + } else { + if (persenDiskonPegawai > 0.0 && persenDiskonJasa > 0.0) { + if (isFrontNote) { + builder.keterangan("Diskon Pegawai (" + persenDiskonPegawai + "%) + Diskon Jasa Medis Dokter (" + + persenDiskonJasa + "%)"); + } else { + builder.keterangan(" + Diskon Pegawai (" + persenDiskonPegawai + "%) + Diskon Jasa Medis Dokter (" + + persenDiskonJasa + "%)"); + } + } else if (persenDiskonPegawai > 0.0 && persenDiskonJasa <= 0.0) { + if (isFrontNote) { + builder.keterangan("Diskon Pegawai (" + persenDiskonPegawai + "%)"); + } else { + builder.keterangan(" + Diskon Pegawai (" + persenDiskonPegawai + "%)"); + } + } else if (persenDiskonPegawai <= 0.0 && persenDiskonJasa > 0.0) { + if (isFrontNote) { + builder.keterangan("Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)"); + } else { + builder.keterangan(" + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)"); + } + } + } + return builder.build(); + } + } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java index b4d48439..c60ffd69 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java @@ -24,6 +24,8 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.text.ParseException; +import java.time.YearMonth; +import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; import java.util.Map; @@ -118,6 +120,9 @@ public class IkiDanRemunerasiController extends LocaleController> getLoadData(HttpServletRequest request) { try { @@ -197,11 +202,11 @@ public class IkiDanRemunerasiController extends LocaleController> getLogbookRemunTarifDokter(HttpServletRequest request, @PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) { try { - Map result = pelayananPasienService.logbookRemunTarifDokter(idPegawai, bulan, null); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); + YearMonth oct24 = YearMonth.parse("2024-09", formatter); + YearMonth month = YearMonth.parse(bulan, formatter); + Map result; + if (month.isBefore(oct24)) { + result = pelayananPasienService.logbookRemunTarifDokter(idPegawai, bulan, null); + } else { + result = remunerasiService.logbookRemunTarifDokter(idPegawai, bulan, null); + } mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); @@ -2685,7 +2698,15 @@ public class IkiDanRemunerasiController extends LocaleController>> getLogbookFfsTarifDokter(HttpServletRequest request, @PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) { try { - List> result = pelayananPasienService.logbookFfsTarifDokter(idPegawai, bulan, null); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); + YearMonth oct24 = YearMonth.parse("2024-09", formatter); + YearMonth month = YearMonth.parse(bulan, formatter); + List> result; + if (month.isBefore(oct24)) { + result = pelayananPasienService.logbookFfsTarifDokter(idPegawai, bulan, null); + } else { + result = remunerasiService.logbookFfsTarifDokter(idPegawai, bulan, null); + } mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); @@ -2704,7 +2725,15 @@ public class IkiDanRemunerasiController extends LocaleController>> getLogbookFfsLuarTarifDokter(HttpServletRequest request, @PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) { try { - List> result = pelayananPasienService.logbookFfsLuarTarifDokter(idPegawai, bulan, null); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); + YearMonth oct24 = YearMonth.parse("2024-09", formatter); + YearMonth month = YearMonth.parse(bulan, formatter); + List> result; + if (month.isBefore(oct24)) { + result = pelayananPasienService.logbookFfsLuarTarifDokter(idPegawai, bulan, null); + } else { + result = remunerasiService.logbookFfsLuarTarifDokter(idPegawai, bulan, null); + } mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); @@ -2725,7 +2754,15 @@ public class IkiDanRemunerasiController extends LocaleController>> getLogbookKlaimMpp(HttpServletRequest request, @PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) { try { - List> result = pelayananPasienService.logbookKlaimMppDokter(idPegawai, bulan); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); + YearMonth oct24 = YearMonth.parse("2024-09", formatter); + YearMonth month = YearMonth.parse(bulan, formatter); + List> result; + if (month.isBefore(oct24)) { + result = pelayananPasienService.logbookKlaimMppDokter(idPegawai, bulan); + } else { + result = remunerasiService.logbookKlaimMppDokter(idPegawai, bulan); + } mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); @@ -2744,7 +2781,15 @@ public class IkiDanRemunerasiController extends LocaleController>> getLogbookFixedPay(HttpServletRequest request, @PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) { try { - List> result = pelayananPasienService.logbookFixedPayDokter(idPegawai, bulan, null); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); + YearMonth oct24 = YearMonth.parse("2024-09", formatter); + YearMonth month = YearMonth.parse(bulan, formatter); + List> result; + if (month.isBefore(oct24)) { + result = pelayananPasienService.logbookFixedPayDokter(idPegawai, bulan, null); + } else { + result = remunerasiService.logbookFixedPayDokter(idPegawai, bulan, null); + } mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/RemunerasiController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/RemunerasiController.java index 7aa6fcb1..39fb47f2 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/RemunerasiController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/RemunerasiController.java @@ -1,26 +1,22 @@ package com.jasamedika.medifirst2000.controller; -import com.jasamedika.medifirst2000.constants.Constants; -import com.jasamedika.medifirst2000.constants.MessageResource; import com.jasamedika.medifirst2000.controller.base.LocaleController; -import com.jasamedika.medifirst2000.core.web.WebConstants; import com.jasamedika.medifirst2000.dto.superapp.request.EmailDto; import com.jasamedika.medifirst2000.dto.superapp.response.AuthorizationDto; import com.jasamedika.medifirst2000.exception.ServiceVOException; import com.jasamedika.medifirst2000.service.MapPegawaiJabatanToUnitKerjaService; import com.jasamedika.medifirst2000.service.PelayananPasienService; -import com.jasamedika.medifirst2000.service.RemunerasiService; -import com.jasamedika.medifirst2000.util.CommonUtil; -import com.jasamedika.medifirst2000.util.rest.RestUtil; import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.orm.jpa.JpaSystemException; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import java.util.List; @@ -49,9 +45,6 @@ public class RemunerasiController extends LocaleController { @Autowired private MapPegawaiJabatanToUnitKerjaService mapPegawaiJabatanToUnitKerjaService; - @Autowired - private RemunerasiService remunerasiService; - @RequestMapping(value = "/logbook-tarif/{idPegawai}/{bulan}", method = GET) public ResponseEntity recap(HttpServletRequest request, @PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) { @@ -73,125 +66,4 @@ public class RemunerasiController extends LocaleController { } } - @RequestMapping(value = "/dokter/logbook-tarif/remun/{idPegawai}/{bulan}", method = RequestMethod.GET) - public ResponseEntity> getLogbookRemunTarifDokter(HttpServletRequest request, - @PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) { - try { - Map result = remunerasiService.logbookRemunTarifDokter(idPegawai, bulan, null); - mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, - getMessage(MessageResource.LABEL_SUCCESS, request)); - return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); - } catch (ServiceVOException sve) { - LOGGER.error("Got ServiceVOException {} when get logbook remun tarif dokter", sve.getMessage()); - addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); - return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); - } catch (JpaSystemException jse) { - LOGGER.error("Got JpaSystemException {} when get logbook remun tarif dokter", jse.getMessage()); - addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); - return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); - } - } - - @RequestMapping(value = "/dokter/logbook-tarif/ffs/{idPegawai}/{bulan}", method = RequestMethod.GET) - public ResponseEntity>> getLogbookFfsTarifDokter(HttpServletRequest request, - @PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) { - try { - List> result = remunerasiService.logbookFfsTarifDokter(idPegawai, bulan, null); - mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, - getMessage(MessageResource.LABEL_SUCCESS, request)); - return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); - } catch (ServiceVOException sve) { - LOGGER.error("Got ServiceVOException {} when get logbook ffs tarif dokter", sve.getMessage()); - addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); - return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); - } catch (JpaSystemException jse) { - LOGGER.error("Got JpaSystemException {} when get logbook ffs tarif dokter", jse.getMessage()); - addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); - return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); - } - } - - @RequestMapping(value = "/dokter/logbook-tarif/ffs-luar/{idPegawai}/{bulan}", method = RequestMethod.GET) - public ResponseEntity>> getLogbookFfsLuarTarifDokter(HttpServletRequest request, - @PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) { - try { - List> result = remunerasiService.logbookFfsLuarTarifDokter(idPegawai, bulan, null); - mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, - getMessage(MessageResource.LABEL_SUCCESS, request)); - return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); - } catch (ServiceVOException sve) { - LOGGER.error("Got ServiceVOException {} when get logbook ffs luar jam kerja tarif dokter", - sve.getMessage()); - addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); - return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); - } catch (JpaSystemException jse) { - LOGGER.error("Got JpaSystemException {} when get logbook ffs luar jam kerja tarif dokter", - jse.getMessage()); - addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); - return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); - } - } - - @RequestMapping(value = "/dokter/logbook-tarif/fixed-pay/{idPegawai}/{bulan}", method = RequestMethod.GET) - public ResponseEntity>> getLogbookFixedPay(HttpServletRequest request, - @PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) { - try { - List> result = remunerasiService.logbookFixedPayDokter(idPegawai, bulan, null); - mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, - getMessage(MessageResource.LABEL_SUCCESS, request)); - return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); - } catch (ServiceVOException sve) { - LOGGER.error("Got ServiceVOException {} when get logbook fixed pay tarif dokter", sve.getMessage()); - addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); - return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); - } catch (JpaSystemException jse) { - LOGGER.error("Got JpaSystemException {} when get logbook fixed pay tarif dokter", jse.getMessage()); - addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); - return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); - } - } - - @RequestMapping(value = "/dokter/logbook-tarif/klaim-mpp/{idPegawai}/{bulan}", method = RequestMethod.GET) - public ResponseEntity>> getLogbookKlaimMpp(HttpServletRequest request, - @PathVariable("idPegawai") Integer idPegawai, @PathVariable("bulan") String bulan) { - try { - List> result = remunerasiService.logbookKlaimMppDokter(idPegawai, bulan); - mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, - getMessage(MessageResource.LABEL_SUCCESS, request)); - return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); - } catch (ServiceVOException sve) { - LOGGER.error("Got ServiceVOException {} when get logbook klaim MPP tarif dokter", sve.getMessage()); - addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); - return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); - } catch (JpaSystemException jse) { - LOGGER.error("Got JpaSystemException {} when get logbook klaim MPP tarif dokter", jse.getMessage()); - addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); - return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); - } - } - - @RequestMapping(value = "/dokter/logbook-tarif/detail/{idPegawai}", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity>> getDetailLogbookTarifDokter(HttpServletRequest request, - @PathVariable("idPegawai") Integer idPegawai, @RequestBody List norecs) { - try { - List> result = remunerasiService.detailLogbookTarifDokter(idPegawai, norecs); - if (CommonUtil.isNotNullOrEmpty(result)) { - mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS_OK, - getMessage(MessageResource.LABEL_SUCCESS_OK, request)); - return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); - } else { - mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_ERROR, - getMessage(MessageResource.LABEL_ERROR, request)); - return RestUtil.getJsonHttptatus(HttpStatus.BAD_REQUEST, mapHeaderMessage); - } - } catch (ServiceVOException sve) { - LOGGER.error("Got ServiceVOException {} when get detail logbook tarif dokter", sve.getMessage()); - addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); - return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); - } catch (JpaSystemException jse) { - LOGGER.error("Got JpaSystemException {} when get detail logbook tarif dokter", jse.getMessage()); - addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); - return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); - } - } }