diff --git a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php
index 5c5e62e..dde35dc 100644
--- a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php
+++ b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php
@@ -209,7 +209,6 @@ class FormEntertainmentPresentationController extends Controller
'bukti2' => $filePaths['bukti2'] ?? null,
'bukti3' => $filePaths['bukti3'] ?? null,
'account_number' => $kategori->account_number,
- 'status' => 'On Progress',
]);
session()->flash('success', 'Form has been updated.');
diff --git a/app/Http/Controllers/Forms/FormMeetingSeminarController.php b/app/Http/Controllers/Forms/FormMeetingSeminarController.php
index 90b1ee1..e1e4618 100644
--- a/app/Http/Controllers/Forms/FormMeetingSeminarController.php
+++ b/app/Http/Controllers/Forms/FormMeetingSeminarController.php
@@ -42,7 +42,6 @@ class FormMeetingSeminarController extends Controller
'allowance' => 'required',
'transport_ankot' => 'required',
'hotel' => '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',
@@ -105,7 +104,7 @@ class FormMeetingSeminarController extends Controller
'allowance' => $request->allowance,
'transport_ankot' => $request->transport_ankot,
'hotel' => $request->hotel,
- 'total' => $request->total,
+ 'total' => $request->allowance + $request->transport_ankot + $request->hotel,
'bukti1' => $filePaths['bukti1'] ?? null,
'bukti2' => $filePaths['bukti2'] ?? null,
'bukti3' => $filePaths['bukti3'] ?? null,
@@ -135,7 +134,6 @@ class FormMeetingSeminarController extends Controller
'allowance' => 'required',
'transport_ankot' => 'required',
'hotel' => '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',
@@ -192,12 +190,11 @@ class FormMeetingSeminarController extends Controller
'allowance' => $request->allowance,
'transport_ankot' => $request->transport_ankot,
'hotel' => $request->hotel,
- 'total' => $request->total,
+ 'total' => $request->allowance + $request->transport_ankot + $request->hotel,
'bukti1' => $filePaths['bukti1'] ?? $form->bukti1,
'bukti2' => $filePaths['bukti2'] ?? $form->bukti2,
'bukti3' => $filePaths['bukti3'] ?? $form->bukti3,
'account_number' => $kategori->account_number,
- 'status' => 'On Progress',
]);
session()->flash('success', 'Form has been updated.');
diff --git a/app/Http/Controllers/Forms/FormOtherController.php b/app/Http/Controllers/Forms/FormOtherController.php
new file mode 100644
index 0000000..35a8620
--- /dev/null
+++ b/app/Http/Controllers/Forms/FormOtherController.php
@@ -0,0 +1,219 @@
+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');
+ }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php
index a352504..3d3a3d4 100644
--- a/app/Http/Controllers/Forms/FormUpCountryController.php
+++ b/app/Http/Controllers/Forms/FormUpCountryController.php
@@ -48,8 +48,6 @@ class FormUpCountryController extends Controller
'allowance' => 'required',
'transport_dalkot' => 'required',
'transport_ankot' => 'required',
- 'hotel' => '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',
@@ -117,7 +115,7 @@ class FormUpCountryController extends Controller
'transport_dalkot' => $request->transport_dalkot,
'transport_ankot' => $request->transport_ankot,
'hotel' => $request->hotel,
- 'total' => $request->total,
+ 'total' => $request->allowance + $request->transport_dalkot + $request->transport_ankot + $request->hotel,
'bukti1' => $filePaths['bukti1'] ?? null,
'bukti2' => $filePaths['bukti2'] ?? null,
'bukti3' => $filePaths['bukti3'] ?? null,
@@ -153,7 +151,6 @@ class FormUpCountryController extends Controller
'transport_dalkot' => 'required',
'transport_ankot' => 'required',
'hotel' => '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',
@@ -215,12 +212,11 @@ class FormUpCountryController extends Controller
'transport_dalkot' => $request->transport_dalkot,
'transport_ankot' => $request->transport_ankot,
'hotel' => $request->hotel,
- 'total' => $request->total,
+ 'total' => $request->allowance + $request->transport_dalkot + $request->transport_ankot + $request->hotel,
'bukti1' => $filePaths['bukti1'] ?? $form->bukti1,
'bukti2' => $filePaths['bukti2'] ?? $form->bukti2,
'bukti3' => $filePaths['bukti3'] ?? $form->bukti3,
'account_number' => $kategori->account_number,
- 'status' => 'On Progress',
]);
session()->flash('success', 'Form has been updated.');
diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php
index b35716e..8835ca7 100644
--- a/app/Http/Controllers/Forms/FormVehicleController.php
+++ b/app/Http/Controllers/Forms/FormVehicleController.php
@@ -116,7 +116,6 @@ class FormVehicleController extends Controller
'bukti2' => $filePaths['bukti2'] ?? null,
'bukti3' => $filePaths['bukti3'] ?? null,
'account_number' => $kategori->account_number,
- 'status' => 'On Progress',
]);
session()->flash('success', 'Form has been created.');
diff --git a/app/Models/FormOthers.php b/app/Models/FormOthers.php
index 72045fb..0ad47e4 100644
--- a/app/Models/FormOthers.php
+++ b/app/Models/FormOthers.php
@@ -20,6 +20,17 @@ class FormOthers extends Model
'bukti1',
'bukti2',
'bukti3',
+ 'account_number',
'status',
];
+
+ public function user()
+ {
+ return $this->belongsTo(Admin::class);
+ }
+
+ public function kategori()
+ {
+ return $this->belongsTo(Kategori::class);
+ }
}
diff --git a/database/migrations/2024_12_20_033828_add_account_number_to_form_others.php b/database/migrations/2024_12_20_033828_add_account_number_to_form_others.php
new file mode 100644
index 0000000..1af386a
--- /dev/null
+++ b/database/migrations/2024_12_20_033828_add_account_number_to_form_others.php
@@ -0,0 +1,28 @@
+string('account_number')->nullable()->after('total');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::table('form_others', function (Blueprint $table) {
+ $table->dropColumn('account_number');
+ });
+ }
+};
diff --git a/resources/views/backend/pages/forms/entertainment/create.blade.php b/resources/views/backend/pages/forms/entertainment/create.blade.php
index 72d11a1..d94d66b 100644
--- a/resources/views/backend/pages/forms/entertainment/create.blade.php
+++ b/resources/views/backend/pages/forms/entertainment/create.blade.php
@@ -5,6 +5,8 @@
@endsection
@section('admin-content')
+
+
+ @if (auth()->user()->can('forms.other.create')) + + Add New Expense Others + + @endif +
+ +| # | +Nama | +Tanggal | +Jenis | +Keterangan | +Total | +Bukti 1 | +Bukti 2 | +Bukti 3 | +Account Number | +Status | +Aksi | +
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ $loop->iteration }} | +{{ $item->user->name }} | +{{ \Carbon\Carbon::parse($item->tanggal)->locale('id')->isoFormat('D MMMM Y') }} | +{{ $item->kategori->name }} | +{{ $item->keterangan }} | +{{ number_format($item->total, 0, ',', '.') }} | ++ @if ($item->bukti1) + + Download + + @else + - + @endif + | ++ @if ($item->bukti2) + + Download + + @else + - + @endif + | ++ @if ($item->bukti3) + + Download + + @else + - + @endif + | +{{ $item->account_number }} | ++ @if ($item->status == 'On Progress') + {{ $item->status }} + @elseif ($item->status == 'Completed') + {{ $item->status }} + @else + {{ $item->status }} + @endif + | ++ @if (auth()->user()->can('forms.other.edit')) + + + + @endif + + @if (auth()->user()->can('forms.other.delete')) + + @endif + | +