diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDaftarDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDaftarDao.java index 4f51bdc3..f8ed5911 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDaftarDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDaftarDao.java @@ -64,8 +64,8 @@ public interface PasienDaftarDao extends PagingAndSortingRepository finByNoIdAndTglRegistrasiList(@Param("kdProfile") short kdProfile, @Param("id") Integer id, @Param("masuk") String masuk, @Param("keluar") String keluar); - @Query("select p from PasienDaftar p where p.noRegistrasi=:noRegistrasi ") - List findByNoRegister(@Param("noRegistrasi") String noRegistrasi); + @Query("select pd from PasienDaftar pd where pd.statusEnabled is true and pd.noRegistrasi = :noRegistrasi") + List findAll(@Param("noRegistrasi") String noRegistrasi); @Query("select p from PasienDaftar p where p.pasien.noCm=:noCm and :kdProfile=:kdProfile ") List findPelayananRawatJalan(@Param("kdProfile") Short kdProfile, @Param("noCm") String noCm); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java index 03c34328..99b47e70 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java @@ -181,4 +181,14 @@ public interface PelayananPasienDao extends PagingAndSortingRepository produkLabRadiologi, @Param("produkFarmasi") List produkFarmasi, @Param("produkMpp") List produkMpp); + @Query("select ppd from PelayananPasienDetail ppd " + "inner join ppd.pelayananPasien pp " + + "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " + "where apd.statusEnabled is true " + + "and pd.statusEnabled is true " + "and pd.noRegistrasi = :noRegistrasi") + List findDetail(@Param("noRegistrasi") String noRegistrasi); + + @Query("select pp from PelayananPasien pp " + "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " + + "where apd.statusEnabled is true " + "and pd.statusEnabled is true " + + "and pd.noRegistrasi = :noRegistrasi") + List findAll(@Param("noRegistrasi") String noRegistrasi); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienService.java index eef1f851..951720e9 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienService.java @@ -15,6 +15,8 @@ public interface PelayananPasienService { List> hitungRemunerasiDokterDenganFfs(String tglAwal, String tglAkhir); - List updateKlaimDiskonKaryawan(String noRegistrasi, Double totalKlaim, Integer jenisDiskon); + List updateKlaimDiskon(String noRegistrasi, Double totalKlaim, Integer jenisDiskon); + + String resetKlaimDiskon(String noRegistrasi); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java index 154b7db5..5e43302e 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java @@ -19,11 +19,14 @@ import com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.dao.AntrianPasienDiPeriksaDao; import com.jasamedika.medifirst2000.dao.LogAccDao; +import com.jasamedika.medifirst2000.dao.PasienDaftarDao; import com.jasamedika.medifirst2000.dao.PelayananPasienDao; import com.jasamedika.medifirst2000.dao.StrukPelayananDao; import com.jasamedika.medifirst2000.entities.JenisObat; import com.jasamedika.medifirst2000.entities.LogAcc; +import com.jasamedika.medifirst2000.entities.PasienDaftar; import com.jasamedika.medifirst2000.entities.PelayananPasien; +import com.jasamedika.medifirst2000.entities.PelayananPasienDetail; import com.jasamedika.medifirst2000.entities.Produk; import com.jasamedika.medifirst2000.service.PelayananPasienService; import com.jasamedika.medifirst2000.util.CommonUtil; @@ -49,14 +52,17 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel @Autowired private BaseConverterImpl produkConverter; + @Autowired + private PasienDaftarDao pasienDaftarDao; + @Autowired private PelayananPasienDao pelayananPasienDao; @Autowired - private LogAccDao logAccDao; + private AntrianPasienDiPeriksaDao antrianPasienDiPeriksaDao; @Autowired - private AntrianPasienDiPeriksaDao antrianPasienDiPeriksaDao; + private LogAccDao logAccDao; @Autowired private StrukPelayananDao strukPelayananDao; @@ -255,7 +261,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel } @Override - public List updateKlaimDiskonKaryawan(String noRegistrasi, Double totalKlaim, Integer jenisDiskon) { + public List updateKlaimDiskon(String noRegistrasi, Double totalKlaim, Integer jenisDiskon) { List result = new ArrayList<>(); List labRadiologi = new ArrayList<>(); @@ -293,4 +299,82 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel return result; } + @Override + public String resetKlaimDiskon(String noRegistrasi) { + String result = ""; + + /* + * Update Pelayanan Pasien + */ + List detailLayanan = pelayananPasienDao.findDetail(noRegistrasi); + List layanan = pelayananPasienDao.findAll(noRegistrasi); + + double jasaObat = 800.00; + for (PelayananPasien pp : layanan) { + /* + * Get diskon jasamedis + */ + double diskonJasamedis = 0.0; + for (PelayananPasienDetail ppd : detailLayanan) { + if (pp.getNoRec().equals(ppd.getPelayananPasienId()) + && CommonUtil.isNotNullOrEmpty(ppd.getHargaDiscount()) && ppd.getHargaDiscount() > 0.0) { + diskonJasamedis += ppd.getHargaDiscount(); + } + } + + /* + * Set diskon layanan + */ + if (CommonUtil.isNotNullOrEmpty(pp.getHargaDiscount()) && pp.getHargaDiscount() > 0.0) { + if (diskonJasamedis > 0.0 && pp.getHargaDiscount() >= diskonJasamedis) { + pp.setHargaDiscount(diskonJasamedis); + if (CommonUtil.isNotNullOrEmpty(pp.getStrukResepId())) { + pp.setJasa(jasaObat); + } + } else { + pp.setHargaDiscount(0.0); + } + } + } + + /* + * Update Flag Jenis Diskon Pasien Daftar + */ + List pendaftaran = pasienDaftarDao.findAll(noRegistrasi); + for (PasienDaftar pd : pendaftaran) { + pd.setDiskonPegawai(0); + } + + boolean exception = false; + for (PasienDaftar pd : pendaftaran) { + if (CommonUtil.isNotNullOrEmpty(pd.getStrukPelayananId()) + && CommonUtil.isNotNullOrEmpty(pd.getStrukBuktiPenerimaanId())) { + exception = true; + + result = "Batal diskon gagal, tagihan layanan sudah lunas!"; + break; + } else if (CommonUtil.isNotNullOrEmpty(pd.getStrukPelayananId()) + && CommonUtil.isNullOrEmpty(pd.getStrukBuktiPenerimaanId())) { + exception = true; + + result = "Batal diskon gagal, pelayanan sudah terverifikasi!"; + break; + } else if (CommonUtil.isNotNullOrEmpty(pd.getDiskonPegawai()) && pd.getDiskonPegawai() == 0) { + exception = true; + + result = "Belum dilakukan diskon!"; + break; + } + } + + if (!exception) { + pelayananPasienDao.save(layanan); + pasienDaftarDao.save(pendaftaran); + + result = "Batal diskon berhasil!"; + } + + return result; + } + } \ No newline at end of file diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PenanggungJawabPasienServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PenanggungJawabPasienServiceImpl.java index c85a1c94..298c1bd6 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PenanggungJawabPasienServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PenanggungJawabPasienServiceImpl.java @@ -106,7 +106,7 @@ public class PenanggungJawabPasienServiceImpl extends BaseVoServiceImpl implemen } if(CommonUtil.isNotNullOrEmpty(pj.getPasienDaftar())) { - List listPasienDaftar = pasienDaftarDao.findByNoRegister(pj.getPasienDaftar().getNoRegistrasi()); + List listPasienDaftar = pasienDaftarDao.findAll(pj.getPasienDaftar().getNoRegistrasi()); if (!listPasienDaftar.isEmpty()) { penanggungJawabPasien.setPasienDaftar(listPasienDaftar.get(0)); } else { diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RegistrasiPelayananPasienServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RegistrasiPelayananPasienServiceImpl.java index 9e1e6bf5..05211838 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RegistrasiPelayananPasienServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RegistrasiPelayananPasienServiceImpl.java @@ -194,7 +194,7 @@ public class RegistrasiPelayananPasienServiceImpl extends BaseVoServiceImpl if (list.size() != 0) { antrianPasienDiPeriksa = list.get(0); } - List pasienDaftarList = pasienDaftarDao.findByNoRegister(noRegistrasi); + List pasienDaftarList = pasienDaftarDao.findAll(noRegistrasi); PasienDaftar pasienDaftar = pasienDaftarList.get(0); // String noMasuk=getFormatNumberByMonthYear(); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/StrukBuktiPengeluaranServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/StrukBuktiPengeluaranServiceImpl.java index 3346ddfb..b329df78 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/StrukBuktiPengeluaranServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/StrukBuktiPengeluaranServiceImpl.java @@ -128,7 +128,7 @@ public class StrukBuktiPengeluaranServiceImpl implements StrukBuktiPengeluaranSe strukPelayanan.setNostruk(getRunningNumber("StrukPelayanan")); if (!vo.getNoregistrasi().getNoRegistrasi().isEmpty() || vo.getNoregistrasi().getNoRegistrasi() != null) { - List listPasienDaftar = pasienDaftarDao.findByNoRegister(vo.getNoregistrasi().getNoRegistrasi()); + List listPasienDaftar = pasienDaftarDao.findAll(vo.getNoregistrasi().getNoRegistrasi()); if (!listPasienDaftar.isEmpty()) { strukPelayanan.setNoregistrasi(listPasienDaftar.get(0)); } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PasienDaftar.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PasienDaftar.java index 76efb69a..3a48bbab 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PasienDaftar.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PasienDaftar.java @@ -242,7 +242,7 @@ public class PasienDaftar extends BaseTransaction { private StrukBuktiPenerimaan strukBuktiPenerimaan; @Column(name = "NoSbmLastFk", insertable = false, updatable = false) - private Integer strukBuktiPenerimaanId; + private String strukBuktiPenerimaanId; @Caption(value = "Kode Status Diskon Pegawai") @Column(name = "diskonpegawai", nullable = true) @@ -672,11 +672,11 @@ public class PasienDaftar extends BaseTransaction { this.strukBuktiPenerimaan = strukBuktiPenerimaan; } - public Integer getStrukBuktiPenerimaanId() { + public String getStrukBuktiPenerimaanId() { return strukBuktiPenerimaanId; } - public void setStrukBuktiPenerimaanId(Integer strukBuktiPenerimaanId) { + public void setStrukBuktiPenerimaanId(String strukBuktiPenerimaanId) { this.strukBuktiPenerimaanId = strukBuktiPenerimaanId; } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/PelayananController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/PelayananController.java index 336e251d..e33950c7 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/PelayananController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/PelayananController.java @@ -141,14 +141,33 @@ public class PelayananController extends LocaleController { } } - @RequestMapping(value = "/klaim-diskon-karyawan", method = RequestMethod.GET) - public ResponseEntity> updateKlaimDiskonKaryawan(HttpServletRequest request, + @RequestMapping(value = "/klaim-diskon", method = RequestMethod.GET) + public ResponseEntity> KlaimDiskon(HttpServletRequest request, @RequestParam(value = "noRegistrasi", required = true) String noRegistrasi, @RequestParam(value = "totalKlaim", required = true) Double totalKlaim, @RequestParam(value = "jenisDiskon", required = true) Integer jenisDiskon) { try { - List result = pelayananPasienService.updateKlaimDiskonKaryawan(noRegistrasi, totalKlaim, - jenisDiskon); + List result = pelayananPasienService.updateKlaimDiskon(noRegistrasi, totalKlaim, jenisDiskon); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException e) { + LOGGER.error("Got exception {} when klaim diskon karyawan", e.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, e.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); + } catch (JpaSystemException jse) { + LOGGER.error("Got exception {} when klaim diskon karyawan", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/reset-klaim-diskon", method = RequestMethod.GET) + public ResponseEntity ResetKlaimDiskon(HttpServletRequest request, + @RequestParam(value = "noRegistrasi") String noRegistrasi) { + try { + String result = pelayananPasienService.resetKlaimDiskon(noRegistrasi); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage);