Resolve bug edit and delete
This commit is contained in:
parent
4332219600
commit
dedf8458ac
|
|
@ -6,6 +6,7 @@
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class PakanController extends Controller
|
class PakanController extends Controller
|
||||||
{
|
{
|
||||||
|
|
@ -87,7 +88,9 @@ public function store(Request $request)
|
||||||
/** @var User $user */
|
/** @var User $user */
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
$request->merge([
|
$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
|
// karyawan TIDAK BOLEH input barang masuk
|
||||||
|
|
@ -177,7 +180,9 @@ public function update(Request $request, $id)
|
||||||
/** @var User $user */
|
/** @var User $user */
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
$request->merge([
|
$request->merge([
|
||||||
'harga_satuan' => str_replace('.', '', $request->harga_satuan)
|
'harga_satuan' => $request->harga_satuan
|
||||||
|
? str_replace('.', '', $request->harga_satuan)
|
||||||
|
: null
|
||||||
]);
|
]);
|
||||||
if ($user->isKaryawan()) {
|
if ($user->isKaryawan()) {
|
||||||
abort(403, 'Anda tidak memiliki izin mengedit data.');
|
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.',
|
'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') {
|
$item = InventoriKandang::findOrFail($id);
|
||||||
$total = $request->jumlah * $request->harga_satuan;
|
|
||||||
|
$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');
|
return redirect()->route('pakan')->with('success', 'Transaksi berhasil diupdate');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,8 @@
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
use Illuminate\Pagination\Paginator;
|
use Illuminate\Pagination\Paginator;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Support\Facades\URL;
|
||||||
|
|
||||||
|
|
||||||
class AppServiceProvider extends ServiceProvider
|
class AppServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
|
|
@ -25,5 +27,10 @@ public function boot(): void
|
||||||
|
|
||||||
// SET BAHASA INDONESIA UNTUK TANGGAL
|
// SET BAHASA INDONESIA UNTUK TANGGAL
|
||||||
Carbon::setLocale('id');
|
Carbon::setLocale('id');
|
||||||
|
|
||||||
|
// PAKSA HTTPS HANYA DI PRODUCTION
|
||||||
|
if (app()->environment('production')) {
|
||||||
|
URL::forceScheme('https');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -452,8 +452,7 @@ class="form-control @error('jumlah') is-invalid @enderror"> --}}
|
||||||
|
|
||||||
@section('scripts')
|
@section('scripts')
|
||||||
<script>
|
<script>
|
||||||
const baseUrl = "{{ url('/ayam') }}";
|
const baseUrl = "{{ route('ayam') }}";
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
/* =============================
|
/* =============================
|
||||||
HANDLE MODAL EDIT NORMAL
|
HANDLE MODAL EDIT NORMAL
|
||||||
|
|
|
||||||
|
|
@ -50,12 +50,12 @@ class="form-control form-control-sm">
|
||||||
<label class="small">Tahun</label>
|
<label class="small">Tahun</label>
|
||||||
<select name="tahun" class="form-control form-control-sm">
|
<select name="tahun" class="form-control form-control-sm">
|
||||||
<option value="">Semua</option>
|
<option value="">Semua</option>
|
||||||
@foreach ([2024, 2025, 2026] as $th)
|
@for ($th = now()->year - 2; $th <= now()->year + 1; $th++)
|
||||||
<option value="{{ $th }}"
|
<option value="{{ $th }}"
|
||||||
{{ request('tahun') == $th ? 'selected' : '' }}>
|
{{ request('tahun') == $th ? 'selected' : '' }}>
|
||||||
{{ $th }}
|
{{ $th }}
|
||||||
</option>
|
</option>
|
||||||
@endforeach
|
@endfor
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -103,7 +103,11 @@ class="form-control form-control-sm">
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
|
||||||
|
@if ($errors->has('delete'))
|
||||||
|
<div class="alert alert-danger">
|
||||||
|
{{ $errors->first('delete') }}
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
<!-- TABEL -->
|
<!-- TABEL -->
|
||||||
<div class="p-0 card-body">
|
<div class="p-0 card-body">
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
|
|
@ -165,8 +169,8 @@ class="badge badge-{{ $item->jenis_transaksi == 'masuk' ? 'success' : 'danger' }
|
||||||
data-target="#modalEditTransaksi" data-id="{{ $item->id }}"
|
data-target="#modalEditTransaksi" data-id="{{ $item->id }}"
|
||||||
data-nama="{{ $item->nama_barang }}"
|
data-nama="{{ $item->nama_barang }}"
|
||||||
data-jenis="{{ $item->jenis_transaksi }}"
|
data-jenis="{{ $item->jenis_transaksi }}"
|
||||||
data-jumlah="{{ $item->jumlah }}"
|
data-jumlah="{{ (int) $item->jumlah }}"
|
||||||
data-satuan="{{ $item->satuan }}"
|
data-harga="{{ (int) $item->harga_satuan }}"
|
||||||
data-harga="{{ $item->harga_satuan }}"
|
data-harga="{{ $item->harga_satuan }}"
|
||||||
data-tanggal="{{ $item->tanggal }}">
|
data-tanggal="{{ $item->tanggal }}">
|
||||||
<i class="la la-edit"></i>
|
<i class="la la-edit"></i>
|
||||||
|
|
@ -320,7 +324,7 @@ class="form-control @error('jenis_transaksi') is-invalid @enderror" required>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Jumlah</label>
|
<label>Jumlah</label>
|
||||||
<input type="number" name="jumlah" id="jumlahTambah" max="999999"
|
<input type="number" name="jumlah" id="jumlahTambah" max="999999"
|
||||||
min="1" inputmode="numeric" oninput="this.value=this.value.slice(0,6)"
|
min="1" inputmode="numeric" maxlength="6"
|
||||||
class="form-control @error('jumlah') is-invalid @enderror"
|
class="form-control @error('jumlah') is-invalid @enderror"
|
||||||
value="{{ old('jumlah') }}" required>
|
value="{{ old('jumlah') }}" required>
|
||||||
|
|
||||||
|
|
@ -343,7 +347,7 @@ class="form-control @error('jumlah') is-invalid @enderror"
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Harga (Rp)</label>
|
<label>Harga (Rp)</label>
|
||||||
|
|
||||||
<input type="text" name="harga_satuan" id="hargaTambah"
|
<input type="text" name="harga_satuan" id="hargaTambah"
|
||||||
class="form-control @error('harga_satuan') is-invalid @enderror"
|
class="form-control @error('harga_satuan') is-invalid @enderror"
|
||||||
inputmode="numeric" maxlength="12" value="{{ old('harga_satuan') }}">
|
inputmode="numeric" maxlength="12" value="{{ old('harga_satuan') }}">
|
||||||
@error('harga_satuan')
|
@error('harga_satuan')
|
||||||
|
|
@ -434,7 +438,7 @@ class="form-control @error('jenis_transaksi') is-invalid @enderror" required>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Jumlah</label>
|
<label>Jumlah</label>
|
||||||
<input type="number" name="jumlah" id="jumlahEdit" max="999999" min="1"
|
<input type="number" name="jumlah" id="jumlahEdit" max="999999" min="1"
|
||||||
inputmode="numeric" oninput="this.value=this.value.slice(0,6)"
|
inputmode="numeric" maxlength="6"
|
||||||
class="form-control" required>
|
class="form-control" required>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -513,64 +517,41 @@ class="form-control" required>
|
||||||
@section('scripts')
|
@section('scripts')
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
const baseUrl = "{{ url('/pakan') }}";
|
const baseUrl = "{{ route('pakan') }}";
|
||||||
|
function formatRupiah(angka) {
|
||||||
/* FORMAT RUPIAH */
|
if (!angka) return '';
|
||||||
function formatRupiah(angka) {
|
|
||||||
|
|
||||||
angka = angka.replace(/[^,\d]/g, '').toString();
|
|
||||||
let split = angka.split(',');
|
|
||||||
let sisa = split[0].length % 3;
|
|
||||||
let rupiah = split[0].substr(0, sisa);
|
|
||||||
let ribuan = split[0].substr(sisa).match(/\d{3}/gi);
|
|
||||||
|
|
||||||
if (ribuan) {
|
|
||||||
let separator = sisa ? '.' : '';
|
|
||||||
rupiah += separator + ribuan.join('.');
|
|
||||||
}
|
|
||||||
|
|
||||||
return rupiah;
|
|
||||||
|
|
||||||
}
|
|
||||||
function formatJumlah(angka){
|
|
||||||
|
|
||||||
angka = parseFloat(angka);
|
|
||||||
|
|
||||||
if(isNaN(angka)) return '';
|
|
||||||
|
|
||||||
if(angka === 0) return '0';
|
|
||||||
|
|
||||||
return angka.toString().replace(/\.?0+$/, '');
|
|
||||||
|
|
||||||
|
angka = angka.toString().replace(/\D/g, '');
|
||||||
|
return angka.replace(/\B(?=(\d{3})+(?!\d))/g, ".");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TAMBAH */
|
/* TAMBAH */
|
||||||
function hitungTambah() {
|
function hitungTambah() {
|
||||||
|
|
||||||
let j = $('#jumlahTambah').val() || 0;
|
let j = parseInt($('#jumlahTambah').val()) || 0;
|
||||||
let h = $('#hargaTambah').val().replace(/\./g, '') || 0;
|
|
||||||
|
|
||||||
$('#totalTambah').val(
|
let h = $('#hargaTambah').val().replace(/\D/g, '');
|
||||||
'Rp ' + (j * h).toLocaleString('id-ID')
|
h = parseInt(h) || 0;
|
||||||
);
|
|
||||||
|
|
||||||
}
|
$('#totalTambah').val(
|
||||||
|
'Rp ' + (j * h).toLocaleString('id-ID')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$('#hargaTambah').on('input', function() {
|
||||||
|
|
||||||
|
let angka = this.value.replace(/\D/g, '');
|
||||||
|
|
||||||
|
if (angka.length > 9) {
|
||||||
|
angka = angka.slice(0, 9);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.value = formatRupiah(angka);
|
||||||
|
hitungTambah();
|
||||||
|
});
|
||||||
|
|
||||||
$('#jumlahTambah, #hargaTambah').on('input', hitungTambah);
|
|
||||||
|
|
||||||
/* format harga tambah */
|
/* format harga tambah */
|
||||||
$('#hargaTambah').on('keyup', function() {
|
$('#jumlahTambah').on('input', hitungTambah);
|
||||||
|
|
||||||
let angka = this.value.replace(/\./g, '');
|
|
||||||
|
|
||||||
if (angka.length > 9) {
|
|
||||||
angka = angka.slice(0, 9);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.value = formatRupiah(angka);
|
|
||||||
hitungTambah();
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#jenisTambah').on('change', function() {
|
$('#jenisTambah').on('change', function() {
|
||||||
|
|
||||||
if (this.value === 'keluar') {
|
if (this.value === 'keluar') {
|
||||||
|
|
@ -585,32 +566,32 @@ function hitungTambah() {
|
||||||
/* EDIT */
|
/* EDIT */
|
||||||
function hitungEdit() {
|
function hitungEdit() {
|
||||||
|
|
||||||
let j = $('#jumlahEdit').val() || 0;
|
let j = parseInt($('#jumlahEdit').val()) || 0;
|
||||||
let h = $('#hargaEdit').val().replace(/\./g, '') || 0;
|
|
||||||
|
|
||||||
$('#totalEdit').val(
|
let h = $('#hargaEdit').val().replace(/\./g, '');
|
||||||
'Rp ' + (j * h).toLocaleString('id-ID')
|
h = parseInt(h) || 0;
|
||||||
);
|
|
||||||
|
|
||||||
}
|
$('#totalEdit').val(
|
||||||
|
j && h ? 'Rp ' + (j * h).toLocaleString('id-ID') : ''
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/* realtime hitung */
|
/* realtime hitung */
|
||||||
$('#jumlahEdit, #hargaEdit').on('input', hitungEdit);
|
$('#jumlahEdit, #hargaEdit').on('input', hitungEdit);
|
||||||
|
|
||||||
/* format harga edit */
|
/* format harga edit */
|
||||||
$('#hargaEdit').on('keyup', function() {
|
$('#hargaEdit').on('input', function() {
|
||||||
|
|
||||||
let angka = this.value.replace(/\./g, '');
|
let angka = this.value.replace(/\./g, '');
|
||||||
|
|
||||||
if (angka.length > 9) {
|
if (angka.length > 9) {
|
||||||
angka = angka.slice(0, 9);
|
angka = angka.slice(0, 9);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.value = formatRupiah(angka);
|
this.value = formatRupiah(angka);
|
||||||
hitungEdit();
|
hitungEdit();
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
});
|
||||||
/* perubahan jenis transaksi edit */
|
/* perubahan jenis transaksi edit */
|
||||||
$('#jenisEdit').on('change', function() {
|
$('#jenisEdit').on('change', function() {
|
||||||
|
|
||||||
|
|
@ -627,29 +608,41 @@ function hitungEdit() {
|
||||||
/* modal edit dibuka */
|
/* modal edit dibuka */
|
||||||
$('#modalEditTransaksi').on('show.bs.modal', function(e) {
|
$('#modalEditTransaksi').on('show.bs.modal', function(e) {
|
||||||
|
|
||||||
let btn = $(e.relatedTarget);
|
let btn = $(e.relatedTarget);
|
||||||
|
|
||||||
$('#formEditTransaksi').attr('action', baseUrl + '/' + btn.data('id'));
|
$('#formEditTransaksi').attr('action', baseUrl + '/' + btn.data('id'));
|
||||||
$('#formEditTransaksi [name=nama_barang]').val(btn.data('nama'));
|
|
||||||
$('#formEditTransaksi [name=jenis_transaksi]').val(btn.data('jenis'));
|
|
||||||
$('#formEditTransaksi [name=jumlah]').val(
|
|
||||||
formatJumlah(btn.data('jumlah'))
|
|
||||||
);
|
|
||||||
let harga = btn.data('harga');
|
|
||||||
|
|
||||||
if (harga !== null && harga !== undefined) {
|
// FIX NAMA BARANG
|
||||||
harga = formatRupiah(harga.toString());
|
$('#namaEdit').val(''); // RESET DULU
|
||||||
} else {
|
|
||||||
harga = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$('#formEditTransaksi [name=harga_satuan]').val(harga);
|
let nama = btn.data('nama');
|
||||||
$('#formEditTransaksi [name=tanggal]').val(btn.data('tanggal'));
|
$('#namaEdit option').each(function () {
|
||||||
|
if ($(this).val().toLowerCase() === String(nama).toLowerCase()) {
|
||||||
|
$(this).prop('selected', true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$('#jenisEdit').trigger('change');
|
// jenis
|
||||||
hitungEdit();
|
$('#jenisEdit').val(btn.data('jenis'));
|
||||||
|
|
||||||
});
|
// jumlah (langsung angka asli)
|
||||||
|
$('#jumlahEdit').val(btn.data('jumlah'));
|
||||||
|
|
||||||
|
// harga
|
||||||
|
let harga = parseInt(btn.data('harga')) || 0;
|
||||||
|
|
||||||
|
$('#hargaEdit').val(harga ? formatRupiah(harga.toString()) : '');
|
||||||
|
// if (harga !== null && harga !== undefined && harga !== '') {
|
||||||
|
// $('#hargaEdit').val(formatRupiah(harga));} else {
|
||||||
|
// $('#hargaEdit').val('');
|
||||||
|
// }
|
||||||
|
|
||||||
|
// tanggal
|
||||||
|
$('#tanggalEdit').val(btn.data('tanggal'));
|
||||||
|
|
||||||
|
$('#jenisEdit').trigger('change');
|
||||||
|
hitungEdit();
|
||||||
|
});
|
||||||
|
|
||||||
/* HAPUS */
|
/* HAPUS */
|
||||||
$('#modalHapusTransaksi').on('show.bs.modal', function(e) {
|
$('#modalHapusTransaksi').on('show.bs.modal', function(e) {
|
||||||
|
|
|
||||||
|
|
@ -392,15 +392,15 @@ function autoSubmit() {
|
||||||
});
|
});
|
||||||
|
|
||||||
function formatBerat(angka) {
|
function formatBerat(angka) {
|
||||||
angka = parseFloat(angka);
|
if (!angka && angka !== 0) return '';
|
||||||
|
|
||||||
if (isNaN(angka)) return '';
|
let num = Number(angka);
|
||||||
|
|
||||||
// jika nilainya 0 tetap tampil 0
|
if (Number.isInteger(num)) {
|
||||||
if (angka === 0) return '0';
|
return num.toString(); // contoh: 10 tetap 10
|
||||||
|
}
|
||||||
|
|
||||||
// hilangkan .00 atau nol di belakang
|
return num.toFixed(2).replace(/\.?0+$/, ''); // contoh: 10.50 → 10.5
|
||||||
return angka.toString().replace(/\.?0+$/, '');
|
|
||||||
}
|
}
|
||||||
/* MODAL EDIT */
|
/* MODAL EDIT */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -386,9 +386,13 @@ function formatJumlah(angka) {
|
||||||
|
|
||||||
if (isNaN(angka)) return '';
|
if (isNaN(angka)) return '';
|
||||||
|
|
||||||
if (angka === 0) return '0';
|
// kalau bilangan bulat, tampilkan tanpa desimal
|
||||||
|
if (Number.isInteger(angka)) {
|
||||||
|
return angka.toString();
|
||||||
|
}
|
||||||
|
|
||||||
return angka.toString().replace(/\.?0+$/, '');
|
// kalau desimal, tampilkan normal (tanpa nol berlebih)
|
||||||
|
return angka.toString().replace(/(\.\d*?[1-9])0+$/, '$1');
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatRupiah(angka) {
|
function formatRupiah(angka) {
|
||||||
|
|
@ -521,27 +525,52 @@ function hitungTotalTambah() {
|
||||||
// TOTAL OTOMATIS MODAL EDIT
|
// TOTAL OTOMATIS MODAL EDIT
|
||||||
function hitungTotalEdit() {
|
function hitungTotalEdit() {
|
||||||
|
|
||||||
let jumlah = parseFloat($('#modalEditPenjualan input[name=jumlah]').val()) || 0;
|
let jumlah = parseFloat($('#modalEditPenjualan input[name=jumlah]').val()) || 0;
|
||||||
let harga = parseFloat($('#modalEditPenjualan input[name=harga_satuan]').val()) || 0;
|
|
||||||
|
|
||||||
let total = jumlah * harga;
|
let harga = $('#modalEditPenjualan input[name=harga_satuan]').val()
|
||||||
|
.replace(/\./g, ''); // 🔥 hapus titik dulu
|
||||||
|
|
||||||
|
harga = parseFloat(harga) || 0;
|
||||||
|
|
||||||
|
let total = jumlah * harga;
|
||||||
|
|
||||||
|
$('#totalPreviewEdit').val(
|
||||||
|
"Rp " + total.toLocaleString('id-ID')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$('#modalEditPenjualan input[name=harga_satuan]').on('input', function() {
|
||||||
|
|
||||||
|
let angka = $(this).val().replace(/\D/g, '');
|
||||||
|
|
||||||
|
if (parseInt(angka || 0) > 99999999) {
|
||||||
|
angka = '99999999';
|
||||||
|
}
|
||||||
|
|
||||||
|
let rupiah = angka.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
|
||||||
|
|
||||||
|
$(this).val(rupiah);
|
||||||
|
|
||||||
|
hitungTotalEdit();
|
||||||
|
});
|
||||||
|
$('#formEdit').on('submit', function() {
|
||||||
|
|
||||||
|
let harga = $('#modalEditPenjualan input[name=harga_satuan]')
|
||||||
|
.val()
|
||||||
|
.replace(/\./g, '');
|
||||||
|
|
||||||
|
$('#modalEditPenjualan input[name=harga_satuan]').val(harga);
|
||||||
|
});
|
||||||
|
|
||||||
$('#totalPreviewEdit').val(
|
|
||||||
"Rp " + total.toLocaleString('id-ID')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$('#modalEditPenjualan input[name=jumlah], #modalEditPenjualan input[name=harga_satuan]')
|
|
||||||
.on('input', hitungTotalEdit);
|
|
||||||
// FORMAT RUPIAH + PEMBATASAN HARGA
|
// FORMAT RUPIAH + PEMBATASAN HARGA
|
||||||
$('#hargaTambah').on('input', function() {
|
$('#hargaTambah').on('input', function() {
|
||||||
|
|
||||||
let angka = $(this).val().replace(/\D/g, '');
|
let angka = $(this).val().replace(/\D/g, '');
|
||||||
|
|
||||||
// BATAS MAKSIMAL
|
// BATAS MAKSIMAL
|
||||||
if (angka > 99999999) {
|
if (parseInt(angka || 0) > 99999999) {
|
||||||
angka = 99999999;
|
angka = '99999999';
|
||||||
}
|
}
|
||||||
|
|
||||||
// FORMAT RIBUAN
|
// FORMAT RIBUAN
|
||||||
let rupiah = angka.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
|
let rupiah = angka.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
|
||||||
|
|
@ -551,11 +580,9 @@ function hitungTotalEdit() {
|
||||||
hitungTotalTambah();
|
hitungTotalTambah();
|
||||||
});
|
});
|
||||||
|
|
||||||
$('form').on('submit', function() {
|
$('#modalTambahPenjualan form').on('submit', function() {
|
||||||
|
|
||||||
let harga = $('#hargaTambah').val().replace(/\./g, '');
|
let harga = $('#hargaTambah').val().replace(/\./g, '');
|
||||||
$('#hargaTambah').val(harga);
|
$('#hargaTambah').val(harga);
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue