Create report service untuk slip gaji

This commit is contained in:
Salman Manoe 2023-05-02 21:28:02 +07:00
parent 709b4e9c75
commit 12a046ea25
6 changed files with 144 additions and 8 deletions

View File

@ -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;

View File

@ -131,4 +131,5 @@ public interface ReportService extends BaseVoService<Pasien, PasienVO, Integer>
public List<Map<String, Object>> getHistoriUsulanRincianKegiatan(Integer idPelaksanaanTugas,
Integer idRincianKegiatan);
Map<String, Object> defineSlipGajiDataSource(Integer pegawaiId, Long bulan);
}

View File

@ -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<String, Object> defineSlipGajiDataSource(Integer pegawaiId, Long bulan) {
Locale indonesia = new Locale("in", "ID");
NumberFormat nf = NumberFormat.getCurrencyInstance(indonesia);
Map<String, Object> 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<SlipGajiKomponenDto> 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;
}
}

View File

@ -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<RegistrasiPelayananVO>
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<String, Object> data = reportService.defineSlipGajiDataSource(pegawaiId, bulan);
List<Map<String, Object>> 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;
}
}

View File

@ -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
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

View File

@ -1,8 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.20.1.final using JasperReports Library version 6.20.1-7584acb244139816654f64e2fd57a00d3e31921e -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="slipGaji" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="672" leftMargin="85" rightMargin="85" topMargin="85" bottomMargin="85" uuid="b004215b-da52-4c09-b65d-f2feeeb72d32">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<property name="com.jaspersoft.studio.unit.rightMargin" value="cm"/>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="slipGaji" pageWidth="842" pageHeight="595" orientation="Landscape" whenNoDataType="BlankPage" columnWidth="672" leftMargin="85" rightMargin="85" topMargin="85" bottomMargin="85" isIgnorePagination="true" uuid="b004215b-da52-4c09-b65d-f2feeeb72d32">
<queryString>
<![CDATA[]]>
</queryString>
@ -72,7 +70,7 @@
</band>
</title>
<summary>
<band height="356" splitType="Stretch">
<band height="373" splitType="Stretch">
<elementGroup>
<staticText>
<reportElement stretchType="ElementGroupHeight" x="0" y="0" width="100" height="20" uuid="057ed757-3d6b-4918-adbc-376c8110efde">
@ -772,11 +770,11 @@
</elementGroup>
<elementGroup>
<textField>
<reportElement stretchType="ElementGroupHeight" x="0" y="339" width="672" height="17" uuid="55f384c5-07ec-45cc-9ff0-77df6c0b0368">
<reportElement stretchType="ElementGroupHeight" x="0" y="339" width="672" height="20" uuid="55f384c5-07ec-45cc-9ff0-77df6c0b0368">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Right">
<font isItalic="true"/>
<textElement textAlignment="Right" verticalAlignment="Bottom">
<font size="8" isItalic="true"/>
</textElement>
<textFieldExpression><![CDATA["dicetak melalui aplikasi SMART pada " + new SimpleDateFormat("dd MMMM yyyy", new java.util.Locale("id")).format(new Date())]]></textFieldExpression>
</textField>