added form others
This commit is contained in:
@@ -209,7 +209,6 @@ class FormEntertainmentPresentationController extends Controller
|
|||||||
'bukti2' => $filePaths['bukti2'] ?? null,
|
'bukti2' => $filePaths['bukti2'] ?? null,
|
||||||
'bukti3' => $filePaths['bukti3'] ?? null,
|
'bukti3' => $filePaths['bukti3'] ?? null,
|
||||||
'account_number' => $kategori->account_number,
|
'account_number' => $kategori->account_number,
|
||||||
'status' => 'On Progress',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
session()->flash('success', 'Form has been updated.');
|
session()->flash('success', 'Form has been updated.');
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ class FormMeetingSeminarController extends Controller
|
|||||||
'allowance' => 'required',
|
'allowance' => 'required',
|
||||||
'transport_ankot' => 'required',
|
'transport_ankot' => 'required',
|
||||||
'hotel' => 'required',
|
'hotel' => 'required',
|
||||||
'total' => 'required',
|
|
||||||
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||||
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
|
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
|
||||||
'bukti3' => 'nullable|file|mimes:pdf',
|
'bukti3' => 'nullable|file|mimes:pdf',
|
||||||
@@ -105,7 +104,7 @@ class FormMeetingSeminarController extends Controller
|
|||||||
'allowance' => $request->allowance,
|
'allowance' => $request->allowance,
|
||||||
'transport_ankot' => $request->transport_ankot,
|
'transport_ankot' => $request->transport_ankot,
|
||||||
'hotel' => $request->hotel,
|
'hotel' => $request->hotel,
|
||||||
'total' => $request->total,
|
'total' => $request->allowance + $request->transport_ankot + $request->hotel,
|
||||||
'bukti1' => $filePaths['bukti1'] ?? null,
|
'bukti1' => $filePaths['bukti1'] ?? null,
|
||||||
'bukti2' => $filePaths['bukti2'] ?? null,
|
'bukti2' => $filePaths['bukti2'] ?? null,
|
||||||
'bukti3' => $filePaths['bukti3'] ?? null,
|
'bukti3' => $filePaths['bukti3'] ?? null,
|
||||||
@@ -135,7 +134,6 @@ class FormMeetingSeminarController extends Controller
|
|||||||
'allowance' => 'required',
|
'allowance' => 'required',
|
||||||
'transport_ankot' => 'required',
|
'transport_ankot' => 'required',
|
||||||
'hotel' => 'required',
|
'hotel' => 'required',
|
||||||
'total' => 'required',
|
|
||||||
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||||
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
|
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
|
||||||
'bukti3' => 'nullable|file|mimes:pdf',
|
'bukti3' => 'nullable|file|mimes:pdf',
|
||||||
@@ -192,12 +190,11 @@ class FormMeetingSeminarController extends Controller
|
|||||||
'allowance' => $request->allowance,
|
'allowance' => $request->allowance,
|
||||||
'transport_ankot' => $request->transport_ankot,
|
'transport_ankot' => $request->transport_ankot,
|
||||||
'hotel' => $request->hotel,
|
'hotel' => $request->hotel,
|
||||||
'total' => $request->total,
|
'total' => $request->allowance + $request->transport_ankot + $request->hotel,
|
||||||
'bukti1' => $filePaths['bukti1'] ?? $form->bukti1,
|
'bukti1' => $filePaths['bukti1'] ?? $form->bukti1,
|
||||||
'bukti2' => $filePaths['bukti2'] ?? $form->bukti2,
|
'bukti2' => $filePaths['bukti2'] ?? $form->bukti2,
|
||||||
'bukti3' => $filePaths['bukti3'] ?? $form->bukti3,
|
'bukti3' => $filePaths['bukti3'] ?? $form->bukti3,
|
||||||
'account_number' => $kategori->account_number,
|
'account_number' => $kategori->account_number,
|
||||||
'status' => 'On Progress',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
session()->flash('success', 'Form has been updated.');
|
session()->flash('success', 'Form has been updated.');
|
||||||
|
|||||||
@@ -0,0 +1,219 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Forms;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\FormOthers;
|
||||||
|
use App\Models\Rayon;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
use App\Models\Region;
|
||||||
|
use App\Models\Cabang;
|
||||||
|
use App\Models\UserHasCabang;
|
||||||
|
use App\Models\Kategori;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
use App\Helpers\NextCloudHelper;
|
||||||
|
|
||||||
|
class FormOtherController extends Controller
|
||||||
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['forms.other.view']);
|
||||||
|
|
||||||
|
$forms = FormOthers::where('user_id', auth()->user()->id)->get();
|
||||||
|
return view('backend.pages.forms.other.index', [
|
||||||
|
'forms' => $forms
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['forms.other.create']);
|
||||||
|
|
||||||
|
return view('backend.pages.forms.other.create', [
|
||||||
|
'kategori' => Kategori::whereNotIn('name', ['Up Country', 'Vehicle Running Cost', 'Entertainment & Presentation', 'Meeting & Seminar'])->get()
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['forms.other.create']);
|
||||||
|
|
||||||
|
$request->validate([
|
||||||
|
'kategori_id' => 'required',
|
||||||
|
'tanggal' => 'required|date',
|
||||||
|
'keterangan' => 'required',
|
||||||
|
'total' => 'required',
|
||||||
|
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||||
|
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
|
||||||
|
'bukti3' => 'nullable|file|mimes:pdf',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()->cabang;
|
||||||
|
$region = Region::where('id', $cabang->region_id)->first();
|
||||||
|
$kategori = Kategori::where('id', $request->kategori_id)->first();
|
||||||
|
|
||||||
|
$filePaths = [];
|
||||||
|
$folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/other';
|
||||||
|
|
||||||
|
if ($request->hasFile('bukti1')) {
|
||||||
|
$bukti1 = $request->file('bukti1');
|
||||||
|
$filename = Str::uuid() . '.' . $bukti1->extension();
|
||||||
|
|
||||||
|
$filePaths['bukti1'] = $folderPath . '/' . $filename;
|
||||||
|
|
||||||
|
NextCloudHelper::uploadFile(
|
||||||
|
$folderPath,
|
||||||
|
$bukti1->getContent(),
|
||||||
|
$filename
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
if ($request->hasFile('bukti2')) {
|
||||||
|
$bukti2 = $request->file('bukti2');
|
||||||
|
$filename = Str::uuid() . '.' . $bukti2->extension();
|
||||||
|
|
||||||
|
$filePaths['bukti2'] = $folderPath . '/' . $filename;
|
||||||
|
|
||||||
|
NextCloudHelper::uploadFile(
|
||||||
|
$folderPath,
|
||||||
|
$bukti2->getContent(),
|
||||||
|
$filename
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ($request->hasFile('bukti3')) {
|
||||||
|
$bukti3 = $request->file('bukti3');
|
||||||
|
$filename = Str::uuid() . '.' . $bukti3->extension();
|
||||||
|
|
||||||
|
$filePaths['bukti3'] = $folderPath . '/' . $filename;
|
||||||
|
|
||||||
|
NextCloudHelper::uploadFile(
|
||||||
|
$folderPath,
|
||||||
|
$bukti3->getContent(),
|
||||||
|
$filename
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate sequence number and expense number
|
||||||
|
$sequence_number = FormOthers::withTrashed()->where('expense_number', 'like', $region->code . '-' . $cabang->code . '-OTH-' . date('ym') . '%')->count() + 1;
|
||||||
|
$formatted_sequence_number = str_pad($sequence_number, 4, '0', STR_PAD_LEFT);
|
||||||
|
$expense_number = $region->code . '-' . $cabang->code . '-OTH-' . date('ym') . $formatted_sequence_number;
|
||||||
|
|
||||||
|
// Save the form data
|
||||||
|
FormOthers::create([
|
||||||
|
'expense_number' => $expense_number,
|
||||||
|
'user_id' => auth()->user()->id,
|
||||||
|
'kategori_id' => $request->kategori_id,
|
||||||
|
'tanggal' => $request->tanggal,
|
||||||
|
'keterangan' => $request->keterangan,
|
||||||
|
'total' => $request->total,
|
||||||
|
'bukti1' => $filePaths['bukti1'] ?? null,
|
||||||
|
'bukti2' => $filePaths['bukti2'] ?? null,
|
||||||
|
'bukti3' => $filePaths['bukti3'] ?? null,
|
||||||
|
'account_number' => $kategori->account_number,
|
||||||
|
'status' => 'On Progress',
|
||||||
|
]);
|
||||||
|
|
||||||
|
session()->flash('success', 'Form has been created.');
|
||||||
|
return redirect()->route('forms.other');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['forms.other.edit']);
|
||||||
|
|
||||||
|
$form = FormOthers::findOrfail($id);
|
||||||
|
return view('backend.pages.forms.other.edit', [
|
||||||
|
'form' => $form,
|
||||||
|
'kategori' => Kategori::whereNotIn('name', ['Up Country', 'Vehicle Running Cost', 'Entertainment & Presentation', 'Meeting & Seminar'])->get()
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(Request $request, $id)
|
||||||
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['forms.other.edit']);
|
||||||
|
|
||||||
|
$request->validate([
|
||||||
|
'kategori_id' => 'required',
|
||||||
|
'tanggal' => 'required|date',
|
||||||
|
'keterangan' => 'required',
|
||||||
|
'total' => 'required',
|
||||||
|
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||||
|
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
|
||||||
|
'bukti3' => 'nullable|file|mimes:pdf',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()->cabang;
|
||||||
|
$region = Region::where('id', $cabang->region_id)->first();
|
||||||
|
$kategori = Kategori::where('id', $request->kategori_id)->first();
|
||||||
|
|
||||||
|
$filePaths = [];
|
||||||
|
$folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/other';
|
||||||
|
|
||||||
|
if ($request->hasFile('bukti1')) {
|
||||||
|
$bukti1 = $request->file('bukti1');
|
||||||
|
$filename = Str::uuid() . '.' . $bukti1->extension();
|
||||||
|
|
||||||
|
$filePaths['bukti1'] = $folderPath . '/' . $filename;
|
||||||
|
|
||||||
|
NextCloudHelper::uploadFile(
|
||||||
|
$folderPath,
|
||||||
|
$bukti1->getContent(),
|
||||||
|
$filename
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
if ($request->hasFile('bukti2')) {
|
||||||
|
$bukti2 = $request->file('bukti2');
|
||||||
|
$filename = Str::uuid() . '.' . $bukti2->extension();
|
||||||
|
|
||||||
|
$filePaths['bukti2'] = $folderPath . '/' . $filename;
|
||||||
|
|
||||||
|
NextCloudHelper::uploadFile(
|
||||||
|
$folderPath,
|
||||||
|
$bukti2->getContent(),
|
||||||
|
$filename
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ($request->hasFile('bukti3')) {
|
||||||
|
$bukti3 = $request->file('bukti3');
|
||||||
|
$filename = Str::uuid() . '.' . $bukti3->extension();
|
||||||
|
|
||||||
|
$filePaths['bukti3'] = $folderPath . '/' . $filename;
|
||||||
|
|
||||||
|
NextCloudHelper::uploadFile(
|
||||||
|
$folderPath,
|
||||||
|
$bukti3->getContent(),
|
||||||
|
$filename
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save the form data
|
||||||
|
$form = FormOthers::findOrfail($id);
|
||||||
|
$form->update([
|
||||||
|
'kategori_id' => $request->kategori_id,
|
||||||
|
'tanggal' => $request->tanggal,
|
||||||
|
'keterangan' => $request->keterangan,
|
||||||
|
'total' => $request->total,
|
||||||
|
'bukti1' => $filePaths['bukti1'] ?? $form->bukti1,
|
||||||
|
'bukti2' => $filePaths['bukti2'] ?? $form->bukti2,
|
||||||
|
'bukti3' => $filePaths['bukti3'] ?? $form->bukti3,
|
||||||
|
'account_number' => $kategori->account_number,
|
||||||
|
]);
|
||||||
|
|
||||||
|
session()->flash('success', 'Form has been updated.');
|
||||||
|
return redirect()->route('forms.other');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
$this->checkAuthorization(auth()->user(), ['forms.other.delete']);
|
||||||
|
|
||||||
|
$form = FormOthers::findOrfail($id);
|
||||||
|
$form->delete();
|
||||||
|
|
||||||
|
session()->flash('success', 'Form has been deleted.');
|
||||||
|
return redirect()->route('forms.other');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -48,8 +48,6 @@ class FormUpCountryController extends Controller
|
|||||||
'allowance' => 'required',
|
'allowance' => 'required',
|
||||||
'transport_dalkot' => 'required',
|
'transport_dalkot' => 'required',
|
||||||
'transport_ankot' => 'required',
|
'transport_ankot' => 'required',
|
||||||
'hotel' => 'required',
|
|
||||||
'total' => 'required',
|
|
||||||
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||||
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
|
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
|
||||||
'bukti3' => 'nullable|file|mimes:pdf',
|
'bukti3' => 'nullable|file|mimes:pdf',
|
||||||
@@ -117,7 +115,7 @@ class FormUpCountryController extends Controller
|
|||||||
'transport_dalkot' => $request->transport_dalkot,
|
'transport_dalkot' => $request->transport_dalkot,
|
||||||
'transport_ankot' => $request->transport_ankot,
|
'transport_ankot' => $request->transport_ankot,
|
||||||
'hotel' => $request->hotel,
|
'hotel' => $request->hotel,
|
||||||
'total' => $request->total,
|
'total' => $request->allowance + $request->transport_dalkot + $request->transport_ankot + $request->hotel,
|
||||||
'bukti1' => $filePaths['bukti1'] ?? null,
|
'bukti1' => $filePaths['bukti1'] ?? null,
|
||||||
'bukti2' => $filePaths['bukti2'] ?? null,
|
'bukti2' => $filePaths['bukti2'] ?? null,
|
||||||
'bukti3' => $filePaths['bukti3'] ?? null,
|
'bukti3' => $filePaths['bukti3'] ?? null,
|
||||||
@@ -153,7 +151,6 @@ class FormUpCountryController extends Controller
|
|||||||
'transport_dalkot' => 'required',
|
'transport_dalkot' => 'required',
|
||||||
'transport_ankot' => 'required',
|
'transport_ankot' => 'required',
|
||||||
'hotel' => 'required',
|
'hotel' => 'required',
|
||||||
'total' => 'required',
|
|
||||||
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||||
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
|
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
|
||||||
'bukti3' => 'nullable|file|mimes:pdf',
|
'bukti3' => 'nullable|file|mimes:pdf',
|
||||||
@@ -215,12 +212,11 @@ class FormUpCountryController extends Controller
|
|||||||
'transport_dalkot' => $request->transport_dalkot,
|
'transport_dalkot' => $request->transport_dalkot,
|
||||||
'transport_ankot' => $request->transport_ankot,
|
'transport_ankot' => $request->transport_ankot,
|
||||||
'hotel' => $request->hotel,
|
'hotel' => $request->hotel,
|
||||||
'total' => $request->total,
|
'total' => $request->allowance + $request->transport_dalkot + $request->transport_ankot + $request->hotel,
|
||||||
'bukti1' => $filePaths['bukti1'] ?? $form->bukti1,
|
'bukti1' => $filePaths['bukti1'] ?? $form->bukti1,
|
||||||
'bukti2' => $filePaths['bukti2'] ?? $form->bukti2,
|
'bukti2' => $filePaths['bukti2'] ?? $form->bukti2,
|
||||||
'bukti3' => $filePaths['bukti3'] ?? $form->bukti3,
|
'bukti3' => $filePaths['bukti3'] ?? $form->bukti3,
|
||||||
'account_number' => $kategori->account_number,
|
'account_number' => $kategori->account_number,
|
||||||
'status' => 'On Progress',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
session()->flash('success', 'Form has been updated.');
|
session()->flash('success', 'Form has been updated.');
|
||||||
|
|||||||
@@ -116,7 +116,6 @@ class FormVehicleController extends Controller
|
|||||||
'bukti2' => $filePaths['bukti2'] ?? null,
|
'bukti2' => $filePaths['bukti2'] ?? null,
|
||||||
'bukti3' => $filePaths['bukti3'] ?? null,
|
'bukti3' => $filePaths['bukti3'] ?? null,
|
||||||
'account_number' => $kategori->account_number,
|
'account_number' => $kategori->account_number,
|
||||||
'status' => 'On Progress',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
session()->flash('success', 'Form has been created.');
|
session()->flash('success', 'Form has been created.');
|
||||||
|
|||||||
@@ -20,6 +20,17 @@ class FormOthers extends Model
|
|||||||
'bukti1',
|
'bukti1',
|
||||||
'bukti2',
|
'bukti2',
|
||||||
'bukti3',
|
'bukti3',
|
||||||
|
'account_number',
|
||||||
'status',
|
'status',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public function user()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Admin::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function kategori()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Kategori::class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('form_others', function (Blueprint $table) {
|
||||||
|
$table->string('account_number')->nullable()->after('total');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('form_others', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('account_number');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -5,6 +5,8 @@
|
|||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('admin-content')
|
@section('admin-content')
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/autonumeric@4.6.0/dist/autoNumeric.min.js"></script>
|
||||||
|
|
||||||
<section class="content-header">
|
<section class="content-header">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
@@ -63,7 +65,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Total</label>
|
<label class="form-label">Total</label>
|
||||||
<input type="number" class="form-control" name="total" id="total" required value="{{ old('total') }}">
|
<input type="string" class="form-control" name="total" id="total" required value="{{ old('total') }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Bukti 1</label>
|
<label class="form-label">Bukti 1</label>
|
||||||
@@ -86,4 +88,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</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
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('admin-content')
|
@section('admin-content')
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/autonumeric@4.6.0/dist/autoNumeric.min.js"></script>
|
||||||
|
|
||||||
<section class="content-header">
|
<section class="content-header">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
@@ -64,7 +66,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Total</label>
|
<label class="form-label">Total</label>
|
||||||
<input type="number" class="form-control" name="total" id="total" required value="{{ $form->total }}">
|
<input type="string" class="form-control" name="total" id="total" required value="{{ $form->total }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Bukti 1</label>
|
<label class="form-label">Bukti 1</label>
|
||||||
@@ -87,4 +89,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</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
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -43,10 +43,6 @@
|
|||||||
<label class="form-label">Hotel</label>
|
<label class="form-label">Hotel</label>
|
||||||
<input type="text" class="form-control" name="hotel" id="hotel" required value="{{ old('hotel') }}">
|
<input type="text" class="form-control" name="hotel" id="hotel" required value="{{ old('hotel') }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
|
||||||
<label class="form-label">Total</label>
|
|
||||||
<input type="text" class="form-control" name="total" id="total" required value="{{ old('total') }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
@@ -97,28 +93,4 @@
|
|||||||
unformatOnSubmit: true // Nilai asli tanpa format saat dikirimkan
|
unformatOnSubmit: true // Nilai asli tanpa format saat dikirimkan
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
|
||||||
const allowance = document.getElementById('allowance');
|
|
||||||
const transportAnkot = document.getElementById('transport_ankot');
|
|
||||||
const hotel = document.getElementById('hotel');
|
|
||||||
const total = document.getElementById('total');
|
|
||||||
|
|
||||||
// Function to calculate total
|
|
||||||
function calculateTotal() {
|
|
||||||
const allowanceValue = parseInt(allowance.value) || 0;
|
|
||||||
const transportAnkotValue = parseInt(transportAnkot.value) || 0;
|
|
||||||
const hotelValue = parseInt(hotel.value) || 0;
|
|
||||||
|
|
||||||
total.value = allowanceValue + transportAnkotValue + hotelValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Attach event listeners
|
|
||||||
[allowance, transportAnkot, hotel].forEach(input => {
|
|
||||||
input.addEventListener('input', calculateTotal);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Initial calculation on page load
|
|
||||||
calculateTotal();
|
|
||||||
</script>
|
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -44,10 +44,6 @@
|
|||||||
<label class="form-label">Hotel</label>
|
<label class="form-label">Hotel</label>
|
||||||
<input type="text" class="form-control" name="hotel" id="hotel" required value="{{ $form->hotel }}">
|
<input type="text" class="form-control" name="hotel" id="hotel" required value="{{ $form->hotel }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
|
||||||
<label class="form-label">Total</label>
|
|
||||||
<input type="text" class="form-control" name="total" id="total" required value="{{ $form->total }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
@@ -98,28 +94,4 @@
|
|||||||
unformatOnSubmit: true // Nilai asli tanpa format saat dikirimkan
|
unformatOnSubmit: true // Nilai asli tanpa format saat dikirimkan
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
|
||||||
const allowance = document.getElementById('allowance');
|
|
||||||
const transportAnkot = document.getElementById('transport_ankot');
|
|
||||||
const hotel = document.getElementById('hotel');
|
|
||||||
const total = document.getElementById('total');
|
|
||||||
|
|
||||||
// Function to calculate total
|
|
||||||
function calculateTotal() {
|
|
||||||
const allowanceValue = parseInt(allowance.value) || 0;
|
|
||||||
const transportAnkotValue = parseInt(transportAnkot.value) || 0;
|
|
||||||
const hotelValue = parseInt(hotel.value) || 0;
|
|
||||||
|
|
||||||
total.value = allowanceValue + transportAnkotValue + hotelValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Attach event listeners
|
|
||||||
[allowance, transportAnkot, hotel].forEach(input => {
|
|
||||||
input.addEventListener('input', calculateTotal);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Initial calculation on page load
|
|
||||||
calculateTotal();
|
|
||||||
</script>
|
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -0,0 +1,91 @@
|
|||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('title')
|
||||||
|
Dashboard
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('admin-content')
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/autonumeric@4.6.0/dist/autoNumeric.min.js"></script>
|
||||||
|
|
||||||
|
<section class="content-header">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<h1>Tambahkan Expense Other Baru</h1>
|
||||||
|
</div>
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="content">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="card card-primary card-outline">
|
||||||
|
<div class="card-body">
|
||||||
|
<form method="POST" action="{{ route('forms.other.store') }}" enctype="multipart/form-data">
|
||||||
|
@csrf
|
||||||
|
@include('backend.layouts.partials.messages')
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Kategori</label>
|
||||||
|
<select class="form-control" name="kategori_id" id="kategori_id" required>
|
||||||
|
<option value="">Pilih Kategori</option>
|
||||||
|
@foreach ($kategori as $item)
|
||||||
|
<option value="{{ $item->id }}" {{ old('kategori_id') == $item->id ? 'selected' : '' }}>
|
||||||
|
{{ $item->name }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Tanggal</label>
|
||||||
|
<input type="date" class="form-control" name="tanggal" id="tanggal" required value="{{ old('tanggal') }}">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Total</label>
|
||||||
|
<input type="string" class="form-control" name="total" id="total" required value="{{ old('total') }}">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Keterangan</label>
|
||||||
|
<textarea class="form-control" name="keterangan" id="keterangan" required>{{ old('keterangan') }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Bukti 1</label>
|
||||||
|
<input type="file" class="form-control" name="bukti1" value="{{ old('bukti1') }}">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Bukti 2</label>
|
||||||
|
<input type="file" class="form-control" name="bukti2" value="{{ old('bukti2') }}">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Bukti 3</label>
|
||||||
|
<input type="file" class="form-control" name="bukti3" value="{{ old('bukti3') }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn-primary ml-2">Submit</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</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
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endsection
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('title')
|
||||||
|
Dashboard
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('admin-content')
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/autonumeric@4.6.0/dist/autoNumeric.min.js"></script>
|
||||||
|
|
||||||
|
<section class="content-header">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<h1>Edit Expense Other</h1>
|
||||||
|
</div>
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="content">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="card card-primary card-outline">
|
||||||
|
<div class="card-body">
|
||||||
|
<form method="POST" action="{{ route('forms.other.update', $form->id) }}" enctype="multipart/form-data">
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
@include('backend.layouts.partials.messages')
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Kategori</label>
|
||||||
|
<select class="form-control" name="kategori_id" id="kategori_id" required>
|
||||||
|
<option value="">Pilih Kategori</option>
|
||||||
|
@foreach ($kategori as $item)
|
||||||
|
<option value="{{ $item->id }}" {{ $form->kategori_id == $item->id ? 'selected' : '' }}>
|
||||||
|
{{ $item->name }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Tanggal</label>
|
||||||
|
<input type="date" class="form-control" name="tanggal" id="tanggal" required value="{{ $form->tanggal }}">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Total</label>
|
||||||
|
<input type="string" class="form-control" name="total" id="total" required value="{{ $form->total }}">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Keterangan</label>
|
||||||
|
<textarea class="form-control" name="keterangan" id="keterangan" required>{{ $form->keterangan }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Bukti 1</label>
|
||||||
|
<input type="file" class="form-control" name="bukti1" value="{{ $form->bukti1 }}">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Bukti 2</label>
|
||||||
|
<input type="file" class="form-control" name="bukti2" value="{{ $form->bukti2 }}">
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">Bukti 3</label>
|
||||||
|
<input type="file" class="form-control" name="bukti3" value="{{ $form->bukti3 }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn-primary ml-2">Update</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</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
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endsection
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('title')
|
||||||
|
Dashboard
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('admin-content')
|
||||||
|
<section class="content-header">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<h1>Forms Others</h1>
|
||||||
|
</div>
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="content">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="card card-primary card-outline">
|
||||||
|
<div class="card-body">
|
||||||
|
<h4 class="header-title float-left">List Data Forms Others Anda</h4>
|
||||||
|
<p class="float-right mb-2">
|
||||||
|
@if (auth()->user()->can('forms.other.create'))
|
||||||
|
<a class="btn btn-primary text-white" href="{{ route('forms.other.create') }}">
|
||||||
|
Add New Expense Others
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
|
</p>
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
<div class="dataTables_wrapper dt-bootstrap4 mt-2">
|
||||||
|
@include('backend.layouts.partials.messages')
|
||||||
|
<table id="dataTable"
|
||||||
|
class="table table-bordered table-striped table-head-fixed dataTable dtr-inline"
|
||||||
|
style="width:100%">
|
||||||
|
<thead class="bg-light text-capitalize">
|
||||||
|
<tr>
|
||||||
|
<th>#</th>
|
||||||
|
<th>Nama</th>
|
||||||
|
<th>Tanggal</th>
|
||||||
|
<th>Jenis</th>
|
||||||
|
<th>Keterangan</th>
|
||||||
|
<th>Total</th>
|
||||||
|
<th>Bukti 1</th>
|
||||||
|
<th>Bukti 2</th>
|
||||||
|
<th>Bukti 3</th>
|
||||||
|
<th>Account Number</th>
|
||||||
|
<th>Status</th>
|
||||||
|
<th>Aksi</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@php
|
||||||
|
use App\Helpers\NextCloudHelper;
|
||||||
|
@endphp
|
||||||
|
@foreach ($forms as $item)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $loop->iteration }}</td>
|
||||||
|
<td>{{ $item->user->name }}</td>
|
||||||
|
<td>{{ \Carbon\Carbon::parse($item->tanggal)->locale('id')->isoFormat('D MMMM Y') }}</td>
|
||||||
|
<td>{{ $item->kategori->name }}</td>
|
||||||
|
<td>{{ $item->keterangan }}</td>
|
||||||
|
<td>{{ number_format($item->total, 0, ',', '.') }}</td>
|
||||||
|
<td>
|
||||||
|
@if ($item->bukti1)
|
||||||
|
<a href="{{ NextCloudHelper::getFileUrl($item->bukti1) }}" target="_blank">
|
||||||
|
Download
|
||||||
|
</a>
|
||||||
|
@else
|
||||||
|
-
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if ($item->bukti2)
|
||||||
|
<a href="{{ NextCloudHelper::getFileUrl($item->bukti2) }}" target="_blank">
|
||||||
|
Download
|
||||||
|
</a>
|
||||||
|
@else
|
||||||
|
-
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if ($item->bukti3)
|
||||||
|
<a href="{{ NextCloudHelper::getFileUrl($item->bukti3) }}" target="_blank">
|
||||||
|
Download
|
||||||
|
</a>
|
||||||
|
@else
|
||||||
|
-
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>{{ $item->account_number }}</td>
|
||||||
|
<td>
|
||||||
|
@if ($item->status == 'On Progress')
|
||||||
|
<span class="badge badge-warning text-white">{{ $item->status }}</span>
|
||||||
|
@elseif ($item->status == 'Completed')
|
||||||
|
<span class="badge badge-success text-white">{{ $item->status }}</span>
|
||||||
|
@else
|
||||||
|
<span class="badge badge-danger text-white">{{ $item->status }}</span>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@if (auth()->user()->can('forms.other.edit'))
|
||||||
|
<a href="{{ route('forms.other.edit', $item->id) }}" class="btn btn-warning btn-sm">
|
||||||
|
<i class="fas fa-edit text-white"></i>
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if (auth()->user()->can('forms.other.delete'))
|
||||||
|
<form action="{{ route('forms.other.destroy', $item->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to delete this item?');">
|
||||||
|
@csrf
|
||||||
|
@method('DELETE')
|
||||||
|
<button type="submit" class="btn btn-danger btn-sm">
|
||||||
|
<i class="fas fa-trash"></i>
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
@endsection
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('admin-content')
|
@section('admin-content')
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/autonumeric@4.6.0/dist/autoNumeric.min.js"></script>
|
||||||
<section class="content-header">
|
<section class="content-header">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
@@ -52,26 +53,22 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Allowance</label>
|
<label class="form-label">Allowance</label>
|
||||||
<input type="number" class="form-control" name="allowance" id="allowance" required value="{{ old('allowance') }}">
|
<input type="string" class="form-control" name="allowance" id="allowance" required value="{{ old('allowance') }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Transport Dalam Kota</label>
|
<label class="form-label">Transport Dalam Kota</label>
|
||||||
<input type="number" class="form-control" name="transport_dalkot" id="transport_dalkot" required value="{{ old('transport_dalkot') }}">
|
<input type="string" class="form-control" name="transport_dalkot" id="transport_dalkot" required value="{{ old('transport_dalkot') }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Transport Antar Kota</label>
|
<label class="form-label">Transport Antar Kota</label>
|
||||||
<input type="number" class="form-control" name="transport_ankot" id="transport_ankot" required value="{{ old('transport_ankot') }}">
|
<input type="string" class="form-control" name="transport_ankot" id="transport_ankot" required value="{{ old('transport_ankot') }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Hotel</label>
|
<label class="form-label">Hotel</label>
|
||||||
<input type="number" class="form-control" name="hotel" id="hotel" required value="{{ old('hotel') }}">
|
<input type="string" class="form-control" name="hotel" id="hotel" required value="{{ old('hotel') }}">
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label class="form-label">Total</label>
|
|
||||||
<input type="number" class="form-control" name="total" id="total" required value="{{ old('total') }}" readonly>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Bukti 1</label>
|
<label class="form-label">Bukti 1</label>
|
||||||
@@ -96,28 +93,36 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
const allowance = document.getElementById('allowance');
|
new AutoNumeric('#allowance', {
|
||||||
const transportDalkot = document.getElementById('transport_dalkot');
|
digitGroupSeparator: '.', // Pemisah ribuan
|
||||||
const transportAnkot = document.getElementById('transport_ankot');
|
decimalCharacter: ',', // Karakter desimal (tidak digunakan karena tanpa desimal)
|
||||||
const hotel = document.getElementById('hotel');
|
currencySymbol: 'Rp.', // Simbol mata uang
|
||||||
const total = document.getElementById('total');
|
decimalPlaces: 0, // Tidak ada angka desimal
|
||||||
|
unformatOnSubmit: true // Nilai asli tanpa format saat dikirimkan
|
||||||
// Function to calculate total
|
|
||||||
function calculateTotal() {
|
|
||||||
const allowanceValue = parseInt(allowance.value) || 0;
|
|
||||||
const transportDalkotValue = parseInt(transportDalkot.value) || 0;
|
|
||||||
const transportAnkotValue = parseInt(transportAnkot.value) || 0;
|
|
||||||
const hotelValue = parseInt(hotel.value) || 0;
|
|
||||||
|
|
||||||
total.value = allowanceValue + transportDalkotValue + transportAnkotValue + hotelValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Attach event listeners
|
|
||||||
[allowance, transportDalkot, transportAnkot, hotel].forEach(input => {
|
|
||||||
input.addEventListener('input', calculateTotal);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Initial calculation on page load
|
new AutoNumeric('#transport_dalkot', {
|
||||||
calculateTotal();
|
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
|
||||||
|
});
|
||||||
|
|
||||||
|
new AutoNumeric('#transport_ankot', {
|
||||||
|
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
|
||||||
|
});
|
||||||
|
|
||||||
|
new AutoNumeric('#hotel', {
|
||||||
|
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
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('admin-content')
|
@section('admin-content')
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/autonumeric@4.6.0/dist/autoNumeric.min.js"></script>
|
||||||
|
|
||||||
<section class="content-header">
|
<section class="content-header">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
@@ -39,7 +41,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Harga Bensin</label>
|
<label class="form-label">Harga Bensin</label>
|
||||||
<input type="number" class="form-control" name="harga" required value="{{ old('harga') }}">
|
<input type="string" class="form-control" name="harga" id="harga" required value="{{ old('harga') }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Jarak</label>
|
<label class="form-label">Jarak</label>
|
||||||
@@ -86,4 +88,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
new AutoNumeric('#harga', {
|
||||||
|
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
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('admin-content')
|
@section('admin-content')
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/autonumeric@4.6.0/dist/autoNumeric.min.js"></script>
|
||||||
<section class="content-header">
|
<section class="content-header">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-2">
|
<div class="row mb-2">
|
||||||
@@ -40,7 +41,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Harga Bensin</label>
|
<label class="form-label">Harga Bensin</label>
|
||||||
<input type="number" class="form-control" name="harga" required value="{{ $form->harga }}">
|
<input type="string" class="form-control" name="harga" id="harga" required value="{{ $form->harga }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Jarak</label>
|
<label class="form-label">Jarak</label>
|
||||||
@@ -85,4 +86,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
new AutoNumeric('#harga', {
|
||||||
|
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
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ use App\Http\Controllers\Master\CategoryController;
|
|||||||
use App\Http\Controllers\Forms\FormVehicleController;
|
use App\Http\Controllers\Forms\FormVehicleController;
|
||||||
use App\Http\Controllers\Forms\FormEntertainmentPresentationController;
|
use App\Http\Controllers\Forms\FormEntertainmentPresentationController;
|
||||||
use App\Http\Controllers\Forms\FormMeetingSeminarController;
|
use App\Http\Controllers\Forms\FormMeetingSeminarController;
|
||||||
|
use App\Http\Controllers\Forms\FormOtherController;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
use App\Helpers\NextCloudHelper;
|
use App\Helpers\NextCloudHelper;
|
||||||
|
|
||||||
@@ -99,6 +100,14 @@ Route::middleware(['auth:admin', 'menu'])->group(function () {
|
|||||||
Route::get('/meeting-seminar/edit/{id}', [FormMeetingSeminarController::class, 'edit'])->name('forms.meeting.edit');
|
Route::get('/meeting-seminar/edit/{id}', [FormMeetingSeminarController::class, 'edit'])->name('forms.meeting.edit');
|
||||||
Route::put('/meeting-seminar/update/{id}', [FormMeetingSeminarController::class, 'update'])->name('forms.meeting.update');
|
Route::put('/meeting-seminar/update/{id}', [FormMeetingSeminarController::class, 'update'])->name('forms.meeting.update');
|
||||||
Route::delete('/meeting-seminar/destroy/{id}', [FormMeetingSeminarController::class, 'destroy'])->name('forms.meeting.destroy');
|
Route::delete('/meeting-seminar/destroy/{id}', [FormMeetingSeminarController::class, 'destroy'])->name('forms.meeting.destroy');
|
||||||
|
|
||||||
|
// Other
|
||||||
|
Route::get('/other', [FormOtherController::class, 'index'])->name('forms.other');
|
||||||
|
Route::get('/other/create', [FormOtherController::class, 'create'])->name('forms.other.create');
|
||||||
|
Route::post('/other/store', [FormOtherController::class, 'store'])->name('forms.other.store');
|
||||||
|
Route::get('/other/edit/{id}', [FormOtherController::class, 'edit'])->name('forms.other.edit');
|
||||||
|
Route::put('/other/update/{id}', [FormOtherController::class, 'update'])->name('forms.other.update');
|
||||||
|
Route::delete('/other/destroy/{id}', [FormOtherController::class, 'destroy'])->name('forms.other.destroy');
|
||||||
});
|
});
|
||||||
|
|
||||||
//Menu Role
|
//Menu Role
|
||||||
|
|||||||
Reference in New Issue
Block a user