Initial commit - expense
Deploy to VPS (PAT over HTTPS) / deploy (push) Has been cancelled

This commit is contained in:
root
2026-06-01 15:01:03 +07:00
parent 9e9fab4a3f
commit 1c1418f3e0
123 changed files with 18622 additions and 10376 deletions
@@ -1,11 +1,12 @@
@extends('layouts.app')
@section('title')
Dashboard
Dashboard
@endsection
@section('admin-content')
<script src="https://cdn.jsdelivr.net/npm/autonumeric@4.6.0/dist/autoNumeric.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<section class="content-header">
<div class="container-fluid">
@@ -16,7 +17,6 @@
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{ route('dashboard.index') }}">Dashboard</a></li>
</li>
</ol>
</div>
</div>
@@ -45,7 +45,7 @@
<div class="container-fluid">
<div class="card card-primary card-outline">
<div class="card-body">
<form id="expense-form" method="POST" action="{{ route('forms.entertainment.store') }}" enctype="multipart/form-data">
<form id="expense-form" method="POST" action="{{ route('forms.entertainment.store') }}" enctype="multipart/form-data">
@csrf
@include('backend.layouts.partials.messages')
<div class="row">
@@ -57,7 +57,7 @@
<div class="mb-3">
<label class="form-label">Jenis <span class="font-italic font-weight-normal">(required)</span></label>
<select class="form-control form-control-md" name="jenis" required >
<option value="">Pilih Jenis</option>
<option value="" disabled {{ old('jenis') == '' ? 'selected' : '' }}>Pilih Jenis</option>
<option value="entertainment" {{ old('jenis') == 'entertainment' ? 'selected' : '' }} >Entertainment</option>
<option value="presentation" {{ old('jenis') == 'presentation' ? 'selected' : '' }}>Presentation</option>
<option value="sponsorship" {{ old('jenis') == 'sponsorship' ? 'selected' : '' }}>Sponsorship</option>
@@ -78,9 +78,25 @@
<label class="form-label">Alamat <span class="font-italic font-weight-normal">(required)</span></label>
<input type="text" class="form-control" name="alamat" id="alamat" required value="{{ old('alamat') }}">
</div>
<div class="mb-3">
<div class="row">
<div class="col-md-4">
<label>Nama Perusahaan <span class="font-italic font-weight-normal">(required)</span></label>
<input type="text" name="nama_perusahaan" class="form-control" placeholder="Contoh: PT. Maju Jaya" required value="{{ old('nama_perusahaan') }}">
</div>
<div class="col-md-4">
<label>Jabatan <span class="font-italic font-weight-normal">(required)</span></label>
<input type="text" name="jabatan" class="form-control" placeholder="Contoh: Manager Operasional" required value="{{ old('jabatan') }}">
</div>
<div class="col-md-4">
<label>Jenis Usaha <span class="font-italic font-weight-normal">(required)</span></label>
<input type="text" name="jenis_usaha" class="form-control" placeholder="Contoh: Farmasi / Manufaktur" required value="{{ old('jenis_usaha') }}">
</div>
</div>
<div class="mb-3 mt-3">
<label class="form-label">Total <span class="font-italic font-weight-normal">(required)</span></label>
<input type="string" class="form-control" name="total" id="total" required value="{{ old('total') }}">
<input type="text" class="form-control" name="total" id="total" required value="{{ old('total') }}">
</div>
<div class="mb-3">
<label class="form-label">Keterangan <span class="font-italic font-weight-normal">(required)</span></label>
@@ -122,13 +138,13 @@
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
</form>
<div id="loading-spinner-overlay" class="d-none">
<div class="spinner-wrapper">
<div class="spinner-border text-primary" role="status">
</div>
<p>Submitting, please wait...</p>
<p class="mt-2">Submitting, please wait...</p>
</div>
</div>
</div>
@@ -137,21 +153,50 @@
</section>
<script>
new AutoNumeric('#total', {
digitGroupSeparator: '.', // Pemisah ribuan
decimalCharacter: ',', // Karakter desimal (tidak digunakan karena tanpa desimal)
currencySymbol: 'Rp.', // Simbol mata uang
decimalPlaces: 0, // Tidak ada angka desimal
unformatOnSubmit: true // Nilai asli tanpa format saat dikirimkan
});
$(document).ready(function () {
// 1. Inisialisasi AutoNumeric
const totalInput = new AutoNumeric('#total', {
digitGroupSeparator: '.', // Pemisah ribuan
decimalCharacter: ',', // Karakter desimal
currencySymbol: 'Rp. ', // Simbol mata uang
decimalPlaces: 0, // Tidak ada angka desimal
minimumValue: '0', // Cegah minus
unformatOnSubmit: true // Nilai asli tanpa format saat dikirimkan
});
document.getElementById('expense-form').addEventListener('submit', function (e) {
const spinnerOverlay = document.getElementById('loading-spinner-overlay');
spinnerOverlay.classList.remove('d-none'); // Show overlay
spinnerOverlay.classList.add('d-flex'); // Use flexbox for centering
// 2. Mencegah Scroll Mouse Wheel pada Input Nominal
$('#total').on('wheel font-wheel', function(e) {
e.preventDefault();
$(this).blur();
});
// 3. Interseptor Form Submit untuk Validasi Maksimal Rp 1 Juta
$('#expense-form').on('submit', function (e) {
e.preventDefault(); // Tahan pengiriman sementara
const form = this;
const spinnerOverlay = $('#loading-spinner-overlay');
// Ambil nilai nominal mentah dari AutoNumeric
const totalExpense = totalInput.getNumber() || 0;
// Cek Aturan Bisnis: Tidak Boleh Lebih dari Rp 1.000.000
if (totalExpense > 1000000) {
Swal.fire({
title: 'Nominal Melebihi Batas!',
text: `Pengajuan Anda sebesar Rp ${new Intl.NumberFormat('id-ID').format(totalExpense)} melebihi batas maksimal yang diizinkan yaitu Rp 1.000.000. Mohon sesuaikan nominal Anda.`,
icon: 'error',
confirmButtonColor: '#d33',
confirmButtonText: 'Revisi Angka'
});
} else {
// Lolos Validasi -> Tampilkan Spinner & Eksekusi Submit
spinnerOverlay.removeClass('d-none').addClass('d-flex');
form.submit();
}
});
});
</script>
@include('backend.pages.forms.entertainment.partials.attachment-modal')
@include('backend.pages.forms.entertainment.partials.attachment-scripts')
@endsection
@endsection