This commit is contained in:
Dwi Swandhana
2026-02-21 06:14:05 +07:00
parent 074a260c8c
commit 924610e36e
3 changed files with 52 additions and 11 deletions
@@ -246,11 +246,16 @@ class GudangController extends Controller
$jenis = $request->input('set02');
$satuan = $request->input('set03');
$idne = $request->input('set01');
$satuanKecil = $set08;
$satuanKecil = trim((string) $set08);
$konversiKecil = (int) $set09;
if ($konversiKecil <= 0){ $konversiKecil = 1; }
$stokMinimum = (int) $set10;
if ($stokMinimum < 0){ $stokMinimum = 0; }
if ($satuanKecil === '') {
$konversiKecil = 1;
} elseif ($konversiKecil <= 1) {
return response()->json(['icon' => 'error', 'warna' => '#bf441d', 'status' => 'Gagal', 'message' => 'Jika memakai satuan kecil, konversi harus lebih dari 1']);
}
$kodejenis = preg_replace('/\s+/', '', $jenis);
if ($idne == 'new' OR $idne == ''){
$ceksudah = SIMBHPJenis::where('kodejenis', $kodejenis)->where('satuan', $satuan)->count();
@@ -296,7 +301,11 @@ class GudangController extends Controller
$tahun = $ahrf[0];
if(isset($ahrf[1])){ $wulan = (int)$ahrf[1]; } else { $wulan = (int)date("m"); }
if(isset($ahrf[2])){ $dino = (int)$ahrf[2]; } else { $dino = (int)date("d"); }
$unitSetting = $this->getJenisUnitSetting($pos);
if ($jenis == 'pemasukan'){
if (($satuanTransaksi ?: 'besar') === 'kecil' && !$unitSetting['has_breakdown']) {
return response()->json(['icon' => 'error', 'warna' => '#bf441d', 'status' => 'Gagal', 'message' => 'Barang ini belum memiliki setting pecah satuan']);
}
$qtyBase = $this->calculateBaseQty($pos, $total, $satuanTransaksi ?: 'besar');
$bayar = SIMBHPReport::create([
'tanggal' => $dino,
@@ -312,10 +321,13 @@ class GudangController extends Controller
'marking' => '',
]);
} else if ($jenis == 'pengeluaran'){
if (($satuanTransaksi ?: 'besar') === 'kecil' && !$unitSetting['has_breakdown']) {
return response()->json(['icon' => 'error', 'warna' => '#bf441d', 'status' => 'Gagal', 'message' => 'Pengeluaran satuan kecil tidak tersedia untuk barang ini']);
}
$getnama = User::where('id', $deskripsi)->first();
$nama = $getnama->nama ?? 'Unkown';
$deskripsi = 'Diterima oleh '.$nama;
$qtyBase = $this->calculateBaseQty($pos, $total, $satuanTransaksi ?: 'kecil');
$qtyBase = $this->calculateBaseQty($pos, $total, $satuanTransaksi ?: 'besar');
$stokSaatIni = $this->getStockBaseByJenis($pos);
if ($qtyBase > $stokSaatIni){
return response()->json(['icon' => 'error', 'warna' => '#bf441d', 'status' => 'Gagal', 'message' => 'Nominal Melebihi Stok']);
@@ -328,7 +340,7 @@ class GudangController extends Controller
'pemasukan' => null,
'pengeluaran' => $total,
'qty_base' => $qtyBase,
'satuan_transaksi' => $satuanTransaksi ?: 'kecil',
'satuan_transaksi' => $satuanTransaksi ?: 'besar',
'jenis' => $pos,
'keterangan' => '',
'marking' => '',
@@ -484,8 +496,8 @@ class GudangController extends Controller
{
$qtyInput = (int) $qtyInput;
if ($qtyInput < 0) { $qtyInput = 0; }
$jenis = SIMBHPJenis::where('jenis', $jenisNama)->first();
$konversi = (int) ($jenis->konversi_kecil ?? 1);
$setting = $this->getJenisUnitSetting($jenisNama);
$konversi = (int) $setting['konversi'];
if ($konversi <= 0) { $konversi = 1; }
if ($satuanTransaksi === 'kecil') {
@@ -495,6 +507,21 @@ class GudangController extends Controller
return $qtyInput * $konversi;
}
private function getJenisUnitSetting($jenisNama)
{
$jenis = SIMBHPJenis::where('jenis', $jenisNama)->first();
$satuanKecil = trim((string) ($jenis->satuan_kecil ?? ''));
$konversi = (int) ($jenis->konversi_kecil ?? 1);
if ($konversi <= 0) { $konversi = 1; }
$hasBreakdown = ($satuanKecil !== '' && $konversi > 1);
return [
'has_breakdown' => $hasBreakdown,
'konversi' => $konversi,
'satuan_kecil' => $satuanKecil,
];
}
private function getStockBaseByJenis($jenisNama)
{
$rows = SIMBHPReport::where('jenis', $jenisNama)->get();
@@ -480,6 +480,21 @@
$(document).ready(function() {
openedpage();
var token=document.getElementById('token').value;
function syncOutSatuanMode(){
var selected = $('#out_pos option:selected');
var satuanKecil = (selected.data('satuan-kecil') || '').toString().trim();
var konversi = parseInt(selected.data('konversi') || 1, 10);
var hasBreakdown = satuanKecil !== '' && konversi > 1;
$('#out_satuan_transaksi option[value="kecil"]').prop('disabled', !hasBreakdown);
if(!hasBreakdown){
$('#out_satuan_transaksi').val('besar');
}
}
$('#out_pos').on('change', function(){ syncOutSatuanMode(); });
syncOutSatuanMode();
$("#topbtntambahjenis").click(function(){ $("#modaltambahjenisbrg").modal('show'); $("#jenis_idne").val('new'); });
$("#topbtnpemasukan").click(function(){ $("#modalpemasukan").modal('show'); });
$("#topbtnpengeluaran").click(function(){ $("#modalpengeluaran").modal('show'); });
@@ -66,9 +66,9 @@
<div id="navigation">
<ul class="navigation-menu">
@if(Session::get('previlage') == 'developer')
<li><a href="/modemobile"><i class="fa fa-h-square"></i>Tab Mode</a></li>
<li><a href="/modemobile"><i class="fa fa-tablet"></i></a></li>
<li><a href="/reportppds"><i class="fa fa-h-square"></i>SPV Verification</a></li>
<li><a href="/pendaftaran"><i class="fa fa-h-square"></i>Registration</a></li>
<li><a href="/pendaftaran"><i class="fa user-plus"></i>Registration</a></li>
<li class="has-submenu">
<a href="#"><i class="fa fa-user-md"></i>Specimen</a>
<ul class="submenu">
@@ -92,7 +92,6 @@
<li><a href="/pasien"><i class="fa fa-wheelchair"></i>Patient</a></li>
<li><a href="/report"><i class="fa fa-hospital-o"></i>Report</a></li>
<li><a href="/biorepository"><i class="fa fa-archive"></i>Biorepository</a></li>
<li><a href="/gudang"><i class="fa fa-cubes"></i>Gudang</a></li>
<li><a href="/pengambilan"><i class="fa fa-stethoscope"></i>Pengambilan</a></li>
<li class="has-submenu">
<a href="#"><i class="fa fa-user-md"></i>Logbook</a>
@@ -109,6 +108,7 @@
<li><a href="/user">User Management</a></li>
<li><a href="/template">Expertise Template</a></li>
<li><a href="/sirab">Database Antibiotik</a></li>
<li><a href="/gudang">Gudang</a></li>
<li><a href="/backup">Backup</a></li>
</ul>
</li>
@@ -138,7 +138,6 @@
</li>
<li><a href="/pasien"><i class="fa fa-wheelchair"></i>Patient</a></li>
<li><a href="/report"><i class="fa fa-hospital-o"></i>Report</a></li>
<li><a href="/gudang"><i class="fa fa-cubes"></i>Gudang</a></li>
<li><a href="/pengambilan"><i class="fa fa-stethoscope"></i>Pengambilan</a></li>
<li class="has-submenu">
<a href="#"><i class="fa fa-user-md"></i>Logbook</a>
@@ -155,6 +154,7 @@
<li><a href="/user">User Management</a></li>
<li><a href="/template">Expertise Template</a></li>
<li><a href="/sirab">Database Antibiotik</a></li>
<li><a href="/gudang">Gudang</a></li>
</ul>
</li>
@elseif(Session::get('previlage') == 'ppds')
@@ -183,7 +183,6 @@
<li><a href="/poli"><i class="fa fa-hospital-o"></i>Room and Request List</a></li>
<li><a href="/pasien"><i class="fa fa-wheelchair"></i>Patient</a></li>
<li><a href="/report"><i class="fa fa-hospital-o"></i>Report</a></li>
<li><a href="/gudang"><i class="fa fa-cubes"></i>Gudang</a></li>
<li><a href="/pengambilan"><i class="fa fa-stethoscope"></i>Pengambilan</a></li>
<li class="has-submenu">
<a href="#"><i class="fa fa-medkit"></i>Settings</a>
@@ -218,7 +217,6 @@
<li><a href="/poli"><i class="fa fa-hospital-o"></i>Room and Request List</a></li>
<li><a href="/pasien"><i class="fa fa-wheelchair"></i>Patient</a></li>
<li><a href="/report"><i class="icon-book-open"></i>Report</a></li>
<li><a href="/gudang"><i class="fa fa-cubes"></i>Gudang</a></li>
<li><a href="/pengambilan"><i class="fa fa-stethoscope"></i>Pengambilan</a></li>
<li><a href="/template"><i class="fa fa-medkit"></i>Database</a></li>
@elseif(Session::get('previlage') == 'admin')
@@ -228,6 +226,7 @@
<li><a href="/user"><i class="icon-user"></i>User Management</a></li>
<li><a href="/pasien"><i class="fa fa-wheelchair"></i>Pasien</a></li>
<li><a href="/report"><i class="icon-book-open"></i>Laporan</a></li>
<li><a href="/gudang"><i class="fa fa-home"></i>Gudang</a></li>
@else
<li><a href="/login"><i class="icon-user"></i>Login</a></li>
@endif