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();