diff --git a/app/Http/Controllers/PakanController.php b/app/Http/Controllers/PakanController.php index 3446898..ce45581 100644 --- a/app/Http/Controllers/PakanController.php +++ b/app/Http/Controllers/PakanController.php @@ -6,6 +6,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use App\Models\User; +use Illuminate\Support\Facades\DB; class PakanController extends Controller { @@ -87,7 +88,9 @@ public function store(Request $request) /** @var User $user */ $user = Auth::user(); $request->merge([ - 'harga_satuan' => str_replace('.', '', $request->harga_satuan) + 'harga_satuan' => $request->harga_satuan + ? str_replace('.', '', $request->harga_satuan) + : null ]); // karyawan TIDAK BOLEH input barang masuk @@ -177,7 +180,9 @@ public function update(Request $request, $id) /** @var User $user */ $user = Auth::user(); $request->merge([ - 'harga_satuan' => str_replace('.', '', $request->harga_satuan) + 'harga_satuan' => $request->harga_satuan + ? str_replace('.', '', $request->harga_satuan) + : null ]); if ($user->isKaryawan()) { abort(403, 'Anda tidak memiliki izin mengedit data.'); @@ -220,46 +225,57 @@ public function update(Request $request, $id) 'harga_satuan.max' => 'Harga satuan terlalu besar.', ]); - $item = InventoriKandang::findOrFail($id); + try { - $total = null; + DB::transaction(function () use ($request, $id, $namaBarang) { - if ($request->jenis_transaksi === 'masuk') { - $total = $request->jumlah * $request->harga_satuan; + $item = InventoriKandang::findOrFail($id); + + $total = null; + + if ($request->jenis_transaksi === 'masuk') { + $total = $request->jumlah * $request->harga_satuan; + } + + // CEK STOK JIKA KELUAR + if ($request->jenis_transaksi === 'keluar') { + + $stokSekarang = InventoriKandang::where('nama_barang', $namaBarang) + ->where('id', '!=', $id) + ->selectRaw(" + SUM(CASE WHEN jenis_transaksi = 'masuk' THEN jumlah ELSE 0 END) + - + SUM(CASE WHEN jenis_transaksi = 'keluar' THEN jumlah ELSE 0 END) + AS stok + ") + ->value('stok') ?? 0; + + if ($request->jumlah > $stokSekarang) { + throw new \Exception('Stok tidak mencukupi. Sisa stok: ' . $stokSekarang); + } + } + + $item->update([ + 'tanggal' => $request->tanggal, + 'nama_barang' => $namaBarang, + 'jenis_transaksi' => $request->jenis_transaksi, + 'jumlah' => $request->jumlah, + 'satuan' => 'karung', + 'harga_satuan' => $request->jenis_transaksi === 'masuk' + ? $request->harga_satuan + : null, + 'total_harga' => $total, + ]); + }); + } catch (\Exception $e) { + + return back() + ->withErrors([ + 'jumlah' => $e->getMessage() + ]) + ->withInput(); } - // CEK STOK JIKA KELUAR - if ($request->jenis_transaksi === 'keluar') { - - $stokSekarang = InventoriKandang::where('nama_barang', $namaBarang) - ->where('id', '!=', $id) - ->selectRaw(" - SUM(CASE WHEN jenis_transaksi = 'masuk' THEN jumlah ELSE 0 END) - - - SUM(CASE WHEN jenis_transaksi = 'keluar' THEN jumlah ELSE 0 END) - AS stok - ") - ->value('stok') ?? 0; - - if ($request->jumlah > $stokSekarang) { - return back()->withErrors([ - 'jumlah' => 'Stok tidak mencukupi. Sisa stok: ' . $stokSekarang - ])->withInput(); - } - } - - $item->update([ - 'tanggal' => $request->tanggal, - 'nama_barang' => $namaBarang, - 'jenis_transaksi' => $request->jenis_transaksi, - 'jumlah' => $request->jumlah, - 'satuan' => 'karung', - 'harga_satuan' => $request->jenis_transaksi === 'masuk' - ? $request->harga_satuan - : null, - 'total_harga' => $total, - ]); - return redirect()->route('pakan')->with('success', 'Transaksi berhasil diupdate'); } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 54107ba..4a83d76 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -5,6 +5,8 @@ use Illuminate\Support\ServiceProvider; use Illuminate\Pagination\Paginator; use Carbon\Carbon; +use Illuminate\Support\Facades\URL; + class AppServiceProvider extends ServiceProvider { @@ -25,5 +27,10 @@ public function boot(): void // SET BAHASA INDONESIA UNTUK TANGGAL Carbon::setLocale('id'); + + // PAKSA HTTPS HANYA DI PRODUCTION + if (app()->environment('production')) { + URL::forceScheme('https'); + } } } diff --git a/resources/views/inventori-ayam.blade.php b/resources/views/inventori-ayam.blade.php index 8ef2fc2..54c64e9 100644 --- a/resources/views/inventori-ayam.blade.php +++ b/resources/views/inventori-ayam.blade.php @@ -452,8 +452,7 @@ class="form-control @error('jumlah') is-invalid @enderror"> --}} @section('scripts')