Update PelayananPasienService

Penerapan aturan diskon atas surat keputusan plt dirut 1 maret 2022
This commit is contained in:
Salman Manoe 2022-04-21 08:02:16 +07:00
parent b9e5094f24
commit 5d050260f2
3 changed files with 25 additions and 10 deletions

View File

@ -321,6 +321,7 @@ public class Master {
public static final Integer[] TANJUNG = { 72, 551 };
public static final int KLINIK_FALSE_EMERGENCY = 309;
public static final int KLINIK_GIGI_KARYAWAN = 702;
public static final int KLINIK_KARYAWAN = 70;
public static final int LABORATORIUM_PATOLOGI_ANATOMI = 39;
public static final int LABORATORIUM_PATOLOGI_KLINIK = 276;

View File

@ -157,12 +157,16 @@ public interface PelayananPasienDao extends PagingAndSortingRepository<Pelayanan
@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir);
@Query("select new Map(pp.noRec as noRec,"
+ "(case when :jenisDiskon = 1 and ru.id = :ruanganId and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
+ "when :jenisDiskon = 1 and ru.id = :ruanganId and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
+ "(case when :jenisDiskon = 1 and ru.id = :poliKaryawanId and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
+ "when :jenisDiskon = 1 and ru.id = :poliKaryawanId and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
+ "when :jenisDiskon = 1 and ru.id = :poliGigiKaryawanId and pr.id in (:listGigiIdPegawai) and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
+ "when :jenisDiskon = 1 and ru.id = :poliGigiKaryawanId and pr.id in (:listGigiIdPegawai) and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
+ "when :jenisDiskon = 1 and pr.id in (:listProdukIdPegawai) and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
+ "when :jenisDiskon = 1 and pr.id in (:listProdukIdPegawai) and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
+ "when :jenisDiskon = 1 and lower(pr.namaProduk) like '%konsul%' and ru.departemenId in (:listDepartemenId) and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
+ "when :jenisDiskon = 1 and lower(pr.namaProduk) like '%konsul%' and ru.departemenId in (:listDepartemenId) and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
+ "when :jenisDiskon = 1 and pr.id in (:listObatIdPegawai) and pp.strukResepId is not null and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
+ "when :jenisDiskon = 1 and pr.id in (:listObatIdPegawai) and pp.strukResepId is not null and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
+ "when :jenisDiskon = 2 and lower(pr.namaProduk) like '%konsul%' and ru.departemenId in (:listDepartemenId) and coalesce(pp.hargaDiscount,0) >= (pp.hargaJual/2) then coalesce(pp.hargaDiscount,0) "
+ "when :jenisDiskon = 2 and lower(pr.namaProduk) like '%konsul%' and ru.departemenId in (:listDepartemenId) and coalesce(pp.hargaDiscount,0) < (pp.hargaJual/2) then (pp.hargaJual/2) "
+ "when :jenisDiskon in (1,2) and pp.strukResepId is not null and coalesce(pp.hargaDiscount,0) >= (pp.hargaJual/10) then coalesce(pp.hargaDiscount,0) "
@ -171,15 +175,19 @@ public interface PelayananPasienDao extends PagingAndSortingRepository<Pelayanan
+ "when :jenisDiskon in (1,2) and coalesce(pp.hargaDiscount,0) < (pp.hargaJual/2) then (pp.hargaJual/2) "
+ "when :jenisDiskon in (3,4) and pr.id in (:listProdukIdPasien) and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
+ "when :jenisDiskon in (3,4) and pr.id in (:listProdukIdPasien) and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
+ "when :jenisDiskon = 5 and ru.id = :ruanganId and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
+ "when :jenisDiskon = 5 and ru.id = :ruanganId and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
+ "else coalesce(pp.hargaDiscount,0) end) as hargaDiskon) " + "from PelayananPasien pp "
+ "left join pp.pasienDaftar apd " + "left join apd.pasienDaftar pd " + "left join pp.produk pr "
+ "left join apd.ruangan ru " + "where pp.strukFk is null " + "and pd.noRegistrasi = :noRegistrasi "
+ "order by pp.produkId")
+ "when :jenisDiskon = 5 and ru.id = :poliKaryawanId and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) "
+ "when :jenisDiskon = 5 and ru.id = :poliKaryawanId and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual "
+ "else coalesce(pp.hargaDiscount,0) end) as hargaDiskon,"
+ "(case when :jenisDiskon = 1 and pr.id in (:listObatIdPegawai) and pp.strukResepId is not null then 0.0 else pp.jasa end) as jasa) "
+ "from PelayananPasien pp " + "left join pp.pasienDaftar apd " + "left join apd.pasienDaftar pd "
+ "left join pp.produk pr " + "left join apd.ruangan ru " + "where pp.strukFk is null "
+ "and pd.noRegistrasi = :noRegistrasi " + "order by pp.produkId")
List<Map<String, Object>> findLayananTagihan(@Param("noRegistrasi") String noRegistrasi,
@Param("jenisDiskon") Integer jenisDiskon, @Param("listDepartemenId") List<Integer> listIdDepartemen,
@Param("ruanganId") Integer idRuangan, @Param("listProdukIdPegawai") List<Integer> listIdProdukPegawai,
@Param("poliKaryawanId") Integer idPoliKaryawan, @Param("poliGigiKaryawanId") Integer idPoliGigiKaryawan,
@Param("listProdukIdPegawai") List<Integer> listIdProdukPegawai,
@Param("listGigiIdPegawai") List<Integer> listIdGigiPegawai,
@Param("listObatIdPegawai") List<Integer> listIdObatPegawai,
@Param("listProdukIdPasien") List<Integer> listIdProdukPasien);
}

View File

@ -259,16 +259,22 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<String> result = new ArrayList<>();
List<Integer> listIdProdukDiskonPegawai = splitDataSettingDatafixed("listProdukDiskonPegawai");
List<Integer> listIdProdukDiskonGigiPegawai = splitDataSettingDatafixed("listProdukDiskonGigiPegawai");
List<Integer> listIdProdukDiskonObatPegawai = splitDataSettingDatafixed("listProdukDiskonObatPegawai");
List<Integer> listIdProdukDiskonPasien = splitDataSettingDatafixed("listProdukDiskonPasien");
List<Map<String, Object>> data = pelayananPasienDao.findLayananTagihan(noRegistrasi, jenisDiskon,
Arrays.asList(Master.Departemen.GRUP_RAWAT_JALAN), Master.Ruangan.KLINIK_KARYAWAN,
listIdProdukDiskonPegawai, listIdProdukDiskonPasien);
Master.Ruangan.KLINIK_GIGI_KARYAWAN, listIdProdukDiskonPegawai, listIdProdukDiskonGigiPegawai,
listIdProdukDiskonObatPegawai, listIdProdukDiskonPasien);
List<PelayananPasien> models = new ArrayList<>();
for (Map<String, Object> map : data) {
PelayananPasien pp = pelayananPasienDao.findOne(map.get("noRec").toString());
pp.setHargaDiscount(Double.valueOf(map.get("hargaDiskon").toString()));
if (CommonUtil.isNotNullOrEmpty(map.get("jasa"))) {
pp.setJasa(Double.valueOf(map.get("jasa").toString()));
}
models.add(pp);
}