diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java index a73dcad0..5f586754 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java @@ -125,6 +125,11 @@ public class Master { public static final Integer[] DIRUT = { 137, 896, 1172 }; public static final Integer[] LEVEL_KEPALA = { 3, 4 }; } + + public static final class JenisKomponenGaji { + public static final Integer PENERIMAAN = 1; + public static final Integer PEMOTONGAN = 2; + } public static final class JenisPegawai { public static final int DOKTER = 1; @@ -211,6 +216,27 @@ public class Master { public static final class KelompokUser { public static final Integer DEFAULT = 0; } + + public static final class KomponenGaji { + public static final Integer GAJI = 1; + public static final Integer REMUNERASI_KINERJA = 2; + public static final Integer REMUNERASI_TAMBAHAN = 3; + public static final Integer FEE_FOR_SERVICE = 4; + public static final Integer FEE_FOR_ONSITE = 5; + public static final Integer UANG_MAKAN = 6; + public static final Integer UANG_LEMBUR = 7; + public static final Integer PPH_GAJI = 8; + public static final Integer PPH_REMUNERASI = 9; + public static final Integer PPH_FEE_FOR_SERVICE = 10; + public static final Integer PPH_FEE_FOR_ONSITE = 11; + public static final Integer PPH_UANG_MAKAN = 12; + public static final Integer PPH_UANG_LEMBUR = 13; + public static final Integer IURAN_WAJIB_KOPERASI = 14; + public static final Integer PINJAMAN_KOPERASI = 15; + public static final Integer BIAYA_OBAT_ALKES = 16; + public static final Integer BIAYA_RAWAT_INAP = 17; + public static final Integer BIAYA_RAWAT_JALAN = 18; + } public static final class KomponenHarga { public static final Integer JASA_ASISTEN_SPESIALIS = 22; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ReportService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ReportService.java index 0dd6071b..7be2bf23 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ReportService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ReportService.java @@ -131,4 +131,5 @@ public interface ReportService extends BaseVoService public List> getHistoriUsulanRincianKegiatan(Integer idPelaksanaanTugas, Integer idRincianKegiatan); + Map defineSlipGajiDataSource(Integer pegawaiId, Long bulan); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ReportServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ReportServiceImpl.java index 62223906..5bcb9cfb 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ReportServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ReportServiceImpl.java @@ -1,6 +1,8 @@ package com.jasamedika.medifirst2000.service.impl; +import java.math.BigDecimal; import java.text.DateFormat; +import java.text.NumberFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; @@ -60,6 +62,8 @@ import com.jasamedika.medifirst2000.dto.KartuPulangPasienDto; import com.jasamedika.medifirst2000.dto.KwitansiDto; import com.jasamedika.medifirst2000.dto.LampiranSPPHDto; import com.jasamedika.medifirst2000.dto.RekapPendapatanHarianPoliklinikDto; +import com.jasamedika.medifirst2000.dto.SlipGajiDto; +import com.jasamedika.medifirst2000.dto.SlipGajiKomponenDto; import com.jasamedika.medifirst2000.dto.SuratPesananSementaraDto; import com.jasamedika.medifirst2000.entities.Jabatan; import com.jasamedika.medifirst2000.entities.JenisLimbahB3Masuk; @@ -75,6 +79,7 @@ import com.jasamedika.medifirst2000.service.PegawaiService; import com.jasamedika.medifirst2000.service.PengkajianAwalTransaksiService; import com.jasamedika.medifirst2000.service.PermohonanStatusPegawaiService; import com.jasamedika.medifirst2000.service.ReportService; +import com.jasamedika.medifirst2000.service.SlipGajiService; import com.jasamedika.medifirst2000.util.AgeCalculator; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.CurrencyUtil; @@ -126,6 +131,9 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic @Autowired private PermohonanStatusPegawaiService permohonanStatusPegawaiService; + @Autowired + private SlipGajiService slipGajiService; + @Autowired private StatusPegawaiDao statusPegawaiDao; @@ -3429,4 +3437,88 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic return result; } + @Override + public Map defineSlipGajiDataSource(Integer pegawaiId, Long bulan) { + Locale indonesia = new Locale("in", "ID"); + NumberFormat nf = NumberFormat.getCurrencyInstance(indonesia); + Map result = new HashMap<>(); + SlipGajiDto dto = slipGajiService.get(pegawaiId, bulan); + result.put("namaPegawai", dto.getNamaPegawai()); + result.put("nip", dto.getNip()); + result.put("jabatan", dto.getJabatan()); + result.put("unitKerja", dto.getJabatan()); + result.put("subUnitKerja", dto.getSubUnitKerja()); + result.put("gaji", "-"); + result.put("remunerasiKinerja", "-"); + result.put("remunerasiTambahan", "-"); + result.put("feeForService", "-"); + result.put("feeForOnSite", "-"); + result.put("uangMakan", "-"); + result.put("uangLembur", "-"); + result.put("pphGaji", "-"); + result.put("pphRemunerasi", "-"); + result.put("pphFeeForService", "-"); + result.put("pphFeeForOnSite", "-"); + result.put("pphUangMakan", "-"); + result.put("pphUangLembur", "-"); + result.put("iuranWajibKoperasi", "-"); + result.put("pinjamanKoperasi", "-"); + result.put("biayaObatAlkes", "-"); + result.put("biayaRawatInap", "-"); + result.put("biayaRawatJalan", "-"); + BigDecimal jumlahPenerimaan = BigDecimal.ZERO; + BigDecimal jumlahPemotongan = BigDecimal.ZERO; + BigDecimal jumlahPenerimaanBersih = BigDecimal.ZERO; + List komponenDto = dto.getKomponen(); + for (SlipGajiKomponenDto k : komponenDto) { + if (Master.JenisKomponenGaji.PENERIMAAN == k.getIdJenisKomponen()) { + jumlahPenerimaan = jumlahPenerimaan.add(new BigDecimal(k.getNominal().doubleValue())); + } else if (Master.JenisKomponenGaji.PEMOTONGAN == k.getIdJenisKomponen()) { + jumlahPemotongan = jumlahPemotongan.add(new BigDecimal(k.getNominal().doubleValue())); + } + if (Master.KomponenGaji.GAJI == k.getIdKomponen()) { + result.put("gaji", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.REMUNERASI_KINERJA == k.getIdKomponen()) { + result.put("remunerasiKinerja", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.REMUNERASI_TAMBAHAN == k.getIdKomponen()) { + result.put("remunerasiTambahan", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.FEE_FOR_SERVICE == k.getIdKomponen()) { + result.put("feeForService", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.FEE_FOR_ONSITE == k.getIdKomponen()) { + result.put("feeForOnSite", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.UANG_MAKAN == k.getIdKomponen()) { + result.put("uangMakan", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.UANG_LEMBUR == k.getIdKomponen()) { + result.put("uangLembur", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.PPH_GAJI == k.getIdKomponen()) { + result.put("pphGaji", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.PPH_REMUNERASI == k.getIdKomponen()) { + result.put("pphRemunerasi", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.PPH_FEE_FOR_SERVICE == k.getIdKomponen()) { + result.put("pphFeeForService", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.PPH_FEE_FOR_ONSITE == k.getIdKomponen()) { + result.put("pphFeeForOnSite", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.PPH_UANG_MAKAN == k.getIdKomponen()) { + result.put("pphUangMakan", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.PPH_UANG_LEMBUR == k.getIdKomponen()) { + result.put("pphUangLembur", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.IURAN_WAJIB_KOPERASI == k.getIdKomponen()) { + result.put("iuranWajibKoperasi", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.PINJAMAN_KOPERASI == k.getIdKomponen()) { + result.put("pinjamanKoperasi", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.BIAYA_OBAT_ALKES == k.getIdKomponen()) { + result.put("biayaObatAlkes", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.BIAYA_RAWAT_INAP == k.getIdKomponen()) { + result.put("biayaRawatInap", nf.format(k.getNominal())); + } else if (Master.KomponenGaji.BIAYA_RAWAT_JALAN == k.getIdKomponen()) { + result.put("biayaRawatJalan", nf.format(k.getNominal())); + } + } + result.put("jumlahPenerimaan", nf.format(jumlahPenerimaan)); + result.put("jumlahPemotongan", nf.format(jumlahPemotongan)); + jumlahPenerimaanBersih = jumlahPenerimaan.subtract(new BigDecimal(jumlahPemotongan.doubleValue())); + result.put("jumlahPenerimaanBersih", nf.format(jumlahPenerimaanBersih)); + return result; + } + } diff --git a/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java b/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java index d1522c76..21cc64ef 100644 --- a/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java +++ b/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java @@ -9,6 +9,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -7839,4 +7840,18 @@ public class ReportingController extends LocaleController return m; } + @RequestMapping("/slipGaji") + public ModelAndView getSlipGaji(ModelAndView m, @RequestParam(value = "format", required = false) String format, + @RequestParam(value = "idPegawai", required = true) Integer pegawaiId, + @RequestParam(value = "bulan", required = true) Long bulan) { + Map data = reportService.defineSlipGajiDataSource(pegawaiId, bulan); + List> dataSource = new ArrayList<>(); + dataSource.add(data); + m.addObject("dataSource", dataSource); + m.addObject("format", "pdf"); + if (format != null && !format.isEmpty()) + m.addObject("format", format); + return m; + } + } diff --git a/jasamedika-reporting/src/main/resources/views.properties b/jasamedika-reporting/src/main/resources/views.properties index 276ad12b..951a4143 100644 --- a/jasamedika-reporting/src/main/resources/views.properties +++ b/jasamedika-reporting/src/main/resources/views.properties @@ -576,4 +576,8 @@ reporting/tarifLayananRuangan.url=/WEB-INF/templates/jrxml/tarifLayananRuangan.j #tarifLayananLamaRuangan reporting/tarifLayananLamaRuangan.(class)=org.springframework.web.servlet.view.jasperreports.JasperReportsMultiFormatView -reporting/tarifLayananLamaRuangan.url=/WEB-INF/templates/jrxml/tarifLayananRuangan.jrxml \ No newline at end of file +reporting/tarifLayananLamaRuangan.url=/WEB-INF/templates/jrxml/tarifLayananRuangan.jrxml + +#slipGaji +reporting/slipGaji.(class)=org.springframework.web.servlet.view.jasperreports.JasperReportsMultiFormatView +reporting/slipGaji.url=/WEB-INF/templates/jrxml/slipGaji.jrxml \ No newline at end of file diff --git a/jasamedika-reporting/src/main/webapp/WEB-INF/templates/jrxml/slipGaji.jrxml b/jasamedika-reporting/src/main/webapp/WEB-INF/templates/jrxml/slipGaji.jrxml index 27680a4d..cb617212 100644 --- a/jasamedika-reporting/src/main/webapp/WEB-INF/templates/jrxml/slipGaji.jrxml +++ b/jasamedika-reporting/src/main/webapp/WEB-INF/templates/jrxml/slipGaji.jrxml @@ -1,8 +1,6 @@ - - - + @@ -72,7 +70,7 @@ - + @@ -772,11 +770,11 @@ - + - - + +