enhanced by codex
This commit is contained in:
@@ -747,6 +747,9 @@ class ReportController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$totalKategori = array_sum($nominals);
|
||||||
|
$pettyCashAmount = $budget && $budget->amount ? $budget->amount : 0;
|
||||||
|
|
||||||
return view('backend.pages.report.generate_jurnal', [
|
return view('backend.pages.report.generate_jurnal', [
|
||||||
'pageInfo' => [
|
'pageInfo' => [
|
||||||
'title' => 'Generate Reports For Jurnal',
|
'title' => 'Generate Reports For Jurnal',
|
||||||
@@ -758,6 +761,8 @@ class ReportController extends Controller
|
|||||||
'kategori_bca' => $kategori_bca,
|
'kategori_bca' => $kategori_bca,
|
||||||
'nominals' => $nominals,
|
'nominals' => $nominals,
|
||||||
'budget' => $budget,
|
'budget' => $budget,
|
||||||
|
'totalKategori' => $totalKategori,
|
||||||
|
'pettyCashAmount' => $pettyCashAmount,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,10 +93,16 @@ class FormEntertainmentPresentationController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$outstandingForms = $forms->filter(function ($form) {
|
||||||
|
return is_null($form->final_approved_at) || is_null($form->final_approved_by);
|
||||||
|
});
|
||||||
|
|
||||||
session()->put('redirect_url', route('forms.entertainment'));
|
session()->put('redirect_url', route('forms.entertainment'));
|
||||||
return view('backend.pages.forms.entertainment.index', [
|
return view('backend.pages.forms.entertainment.index', [
|
||||||
'forms' => $forms,
|
'forms' => $forms,
|
||||||
'availableBudget' => $availableBudget,
|
'availableBudget' => $availableBudget,
|
||||||
|
'outstandingCount' => $outstandingForms->count(),
|
||||||
|
'outstandingTotal' => $outstandingForms->sum('total'),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -697,13 +703,18 @@ class FormEntertainmentPresentationController extends Controller
|
|||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function reject($id)
|
public function reject(Request $request, $id)
|
||||||
{
|
{
|
||||||
$this->checkAuthorization(auth()->user(), ['approval.reject']);
|
$this->checkAuthorization(auth()->user(), ['approval.reject']);
|
||||||
|
|
||||||
|
$request->validate([
|
||||||
|
'remarks' => 'required|string|max:500',
|
||||||
|
]);
|
||||||
|
|
||||||
$form = FormEntertaimentPresentation::findOrfail($id);
|
$form = FormEntertaimentPresentation::findOrfail($id);
|
||||||
$form->update([
|
$form->update([
|
||||||
'status' => 'Rejected'
|
'status' => 'Rejected',
|
||||||
|
'remarks' => $request->remarks,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$heads = $form->user->getCabangAndRegionHead();
|
$heads = $form->user->getCabangAndRegionHead();
|
||||||
|
|||||||
@@ -94,11 +94,17 @@ class FormMeetingSeminarController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$outstandingForms = $forms->filter(function ($form) {
|
||||||
|
return is_null($form->final_approved_at) || is_null($form->final_approved_by);
|
||||||
|
});
|
||||||
|
|
||||||
session()->put('redirect_url', route('forms.meeting'));
|
session()->put('redirect_url', route('forms.meeting'));
|
||||||
|
|
||||||
return view('backend.pages.forms.meeting.index', [
|
return view('backend.pages.forms.meeting.index', [
|
||||||
'forms' => $forms,
|
'forms' => $forms,
|
||||||
'availableBudget' => $availableBudget
|
'availableBudget' => $availableBudget,
|
||||||
|
'outstandingCount' => $outstandingForms->count(),
|
||||||
|
'outstandingTotal' => $outstandingForms->sum('total'),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -751,13 +757,18 @@ class FormMeetingSeminarController extends Controller
|
|||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function reject($id)
|
public function reject(Request $request, $id)
|
||||||
{
|
{
|
||||||
$this->checkAuthorization(auth()->user(), ['approval.reject']);
|
$this->checkAuthorization(auth()->user(), ['approval.reject']);
|
||||||
|
|
||||||
|
$request->validate([
|
||||||
|
'remarks' => 'required|string|max:500',
|
||||||
|
]);
|
||||||
|
|
||||||
$form = FormMeetingSeminar::findOrfail($id);
|
$form = FormMeetingSeminar::findOrfail($id);
|
||||||
$form->update([
|
$form->update([
|
||||||
'status' => 'Rejected'
|
'status' => 'Rejected',
|
||||||
|
'remarks' => $request->remarks,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$heads = $form->user->getCabangAndRegionHead();
|
$heads = $form->user->getCabangAndRegionHead();
|
||||||
|
|||||||
@@ -91,11 +91,17 @@ class FormOtherController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$outstandingForms = $forms->filter(function ($form) {
|
||||||
|
return is_null($form->final_approved_at) || is_null($form->final_approved_by);
|
||||||
|
});
|
||||||
|
|
||||||
session()->put('redirect_url', route('forms.other'));
|
session()->put('redirect_url', route('forms.other'));
|
||||||
|
|
||||||
return view('backend.pages.forms.other.index', [
|
return view('backend.pages.forms.other.index', [
|
||||||
'forms' => $forms,
|
'forms' => $forms,
|
||||||
'availableBudget' => $availableBudget
|
'availableBudget' => $availableBudget,
|
||||||
|
'outstandingCount' => $outstandingForms->count(),
|
||||||
|
'outstandingTotal' => $outstandingForms->sum('total'),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -694,13 +700,18 @@ class FormOtherController extends Controller
|
|||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function reject($id)
|
public function reject(Request $request, $id)
|
||||||
{
|
{
|
||||||
$this->checkAuthorization(auth()->user(), ['approval.reject']);
|
$this->checkAuthorization(auth()->user(), ['approval.reject']);
|
||||||
|
|
||||||
|
$request->validate([
|
||||||
|
'remarks' => 'required|string|max:500',
|
||||||
|
]);
|
||||||
|
|
||||||
$form = FormOthers::findOrfail($id);
|
$form = FormOthers::findOrfail($id);
|
||||||
$form->update([
|
$form->update([
|
||||||
'status' => 'Rejected'
|
'status' => 'Rejected',
|
||||||
|
'remarks' => $request->remarks,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$heads = $form->user->getCabangAndRegionHead();
|
$heads = $form->user->getCabangAndRegionHead();
|
||||||
|
|||||||
@@ -95,10 +95,16 @@ class FormUpCountryController extends Controller
|
|||||||
$forms = $forms;
|
$forms = $forms;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$outstandingForms = $forms->filter(function ($form) {
|
||||||
|
return is_null($form->final_approved_at) || is_null($form->final_approved_by);
|
||||||
|
});
|
||||||
|
|
||||||
session()->put('redirect_url', route('forms.up-country'));
|
session()->put('redirect_url', route('forms.up-country'));
|
||||||
return view('backend.pages.forms.upcountry.index', [
|
return view('backend.pages.forms.upcountry.index', [
|
||||||
'forms' => $forms,
|
'forms' => $forms,
|
||||||
'availableBudget' => $availableBudget
|
'availableBudget' => $availableBudget,
|
||||||
|
'outstandingCount' => $outstandingForms->count(),
|
||||||
|
'outstandingTotal' => $outstandingForms->sum('total'),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -94,11 +94,17 @@ class FormVehicleController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$outstandingForms = $forms->filter(function ($form) {
|
||||||
|
return is_null($form->final_approved_at) || is_null($form->final_approved_by);
|
||||||
|
});
|
||||||
|
|
||||||
session()->put('redirect_url', route('forms.vehicle'));
|
session()->put('redirect_url', route('forms.vehicle'));
|
||||||
|
|
||||||
return view('backend.pages.forms.vehicle.index', [
|
return view('backend.pages.forms.vehicle.index', [
|
||||||
'forms' => $forms,
|
'forms' => $forms,
|
||||||
'availableBudget' => $availableBudget
|
'availableBudget' => $availableBudget,
|
||||||
|
'outstandingCount' => $outstandingForms->count(),
|
||||||
|
'outstandingTotal' => $outstandingForms->sum('total'),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ class FormEntertaimentPresentation extends Model
|
|||||||
'bukti_total',
|
'bukti_total',
|
||||||
'account_number',
|
'account_number',
|
||||||
'status',
|
'status',
|
||||||
|
'remarks',
|
||||||
'approved_at',
|
'approved_at',
|
||||||
'approved2_at',
|
'approved2_at',
|
||||||
'approved_by',
|
'approved_by',
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ class FormMeetingSeminar extends Model
|
|||||||
'bukti_hotel',
|
'bukti_hotel',
|
||||||
'account_number',
|
'account_number',
|
||||||
'status',
|
'status',
|
||||||
|
'remarks',
|
||||||
'approved_at',
|
'approved_at',
|
||||||
'approved2_at',
|
'approved2_at',
|
||||||
'approved_by',
|
'approved_by',
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ class FormOthers extends Model
|
|||||||
'bukti_total',
|
'bukti_total',
|
||||||
'account_number',
|
'account_number',
|
||||||
'status',
|
'status',
|
||||||
|
'remarks',
|
||||||
'approved_at',
|
'approved_at',
|
||||||
'approved2_at',
|
'approved2_at',
|
||||||
'approved_by',
|
'approved_by',
|
||||||
|
|||||||
@@ -432,13 +432,11 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form action="{{ route('forms.entertainment.reject', $form->id) }}" method="POST" class="d-inline"onsubmit="return confirm('Are you sure you want to reject this form?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger btn-sm open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.entertainment.reject', $form->id) }}">
|
||||||
<button type="submit" class="btn btn-danger btn-sm">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@else
|
@else
|
||||||
@if ($form->approved_at)
|
@if ($form->approved_at)
|
||||||
{{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }}
|
{{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }}
|
||||||
@@ -591,13 +589,11 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form action="{{ route('forms.meeting.reject', $form->id) }}" method="POST" class="d-inline"onsubmit="return confirm('Are you sure you want to reject this form?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger btn-sm open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.meeting.reject', $form->id) }}">
|
||||||
<button type="submit" class="btn btn-danger btn-sm">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@else
|
@else
|
||||||
@if ($form->approved_at)
|
@if ($form->approved_at)
|
||||||
{{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }}
|
{{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }}
|
||||||
@@ -748,13 +744,11 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form action="{{ route('forms.other.reject', $form->id) }}" method="POST" class="d-inline"onsubmit="return confirm('Are you sure you want to reject this form?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger btn-sm open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.other.reject', $form->id) }}">
|
||||||
<button type="submit" class="btn btn-danger btn-sm">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@else
|
@else
|
||||||
@if ($form->approved_at)
|
@if ($form->approved_at)
|
||||||
{{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }}
|
{{ \Carbon\Carbon::parse($form->approved_at)->locale('id')->isoFormat('D MMMM Y') }}
|
||||||
|
|||||||
@@ -22,10 +22,10 @@
|
|||||||
</section>
|
</section>
|
||||||
<section class="content">
|
<section class="content">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row row-cols-1 row-cols-md-2 row-cols-xl-5 g-3">
|
||||||
<!-- Total Expense -->
|
<!-- Total Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-info">
|
<div class="small-box bg-info flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3>Rp {{ number_format($forms->sum('total'), 0, ',', '.') }}</h3>
|
<h3>Rp {{ number_format($forms->sum('total'), 0, ',', '.') }}</h3>
|
||||||
<p>Total Expense</p>
|
<p>Total Expense</p>
|
||||||
@@ -36,8 +36,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Approved Expense -->
|
<!-- Approved Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-success">
|
<div class="small-box bg-success flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3>Rp {{ number_format($forms->whereIn('status', ['Approved', 'Closed'])->sum('approved_total'), 0, ',', '.') }}</h3>
|
<h3>Rp {{ number_format($forms->whereIn('status', ['Approved', 'Closed'])->sum('approved_total'), 0, ',', '.') }}</h3>
|
||||||
<p>Approved Expenses</p>
|
<p>Approved Expenses</p>
|
||||||
@@ -48,8 +48,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Pending Expense -->
|
<!-- Pending Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-warning">
|
<div class="small-box bg-warning flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="text-white">Rp {{ number_format($forms->where('status', 'On Progress')->sum('total'), 0, ',', '.') }}</h3>
|
<h3 class="text-white">Rp {{ number_format($forms->where('status', 'On Progress')->sum('total'), 0, ',', '.') }}</h3>
|
||||||
<p class="text-white">Pending Expenses</p>
|
<p class="text-white">Pending Expenses</p>
|
||||||
@@ -59,9 +59,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- Outstanding Expense -->
|
||||||
|
<div class="col d-flex">
|
||||||
|
<div class="small-box bg-danger flex-fill">
|
||||||
|
<div class="inner">
|
||||||
|
<h3>{{ $outstandingCount }}</h3>
|
||||||
|
<p>Outstanding Expenses</p>
|
||||||
|
<p class="mb-0"><small>Total Rp {{ number_format($outstandingTotal, 0, ',', '.') }}</small></p>
|
||||||
|
</div>
|
||||||
|
<div class="icon">
|
||||||
|
<i class="fas fa-exclamation-triangle"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@if($availableBudget > 0)
|
@if($availableBudget > 0)
|
||||||
<div class="col-lg-3 col-6">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-purple">
|
<div class="small-box bg-purple flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="text-white">Rp {{ number_format($availableBudget, 0, ',', '.') }}</h3>
|
<h3 class="text-white">Rp {{ number_format($availableBudget, 0, ',', '.') }}</h3>
|
||||||
<p class="text-white">Available Budget</p>
|
<p class="text-white">Available Budget</p>
|
||||||
@@ -170,13 +183,11 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form action="{{ route('forms.entertainment.reject', $item->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to reject this item?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger btn-sm open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.entertainment.reject', $item->id) }}">
|
||||||
<button type="submit" class="btn btn-danger btn-sm">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@endif
|
@endif
|
||||||
@endif
|
@endif
|
||||||
@if ($item->approved_at)
|
@if ($item->approved_at)
|
||||||
@@ -197,13 +208,11 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form action="{{ route('forms.entertainment.reject', $item->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to reject this item?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger btn-sm open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.entertainment.reject', $item->id) }}">
|
||||||
<button type="submit" class="btn btn-danger btn-sm">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@endif
|
@endif
|
||||||
@endif
|
@endif
|
||||||
@if ($item->approved2_at)
|
@if ($item->approved2_at)
|
||||||
@@ -411,6 +420,35 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
<section>
|
||||||
|
<div class="modal fade" id="rejectModal" tabindex="-1" role="dialog" aria-labelledby="rejectModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<form id="rejectForm" method="POST" action="">
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="rejectModalLabel">Reject Expense</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="rejectRemarks">Remarks <span class="text-danger">*</span></label>
|
||||||
|
<textarea class="form-control" name="remarks" id="rejectRemarks" rows="3" required></textarea>
|
||||||
|
</div>
|
||||||
|
<p class="mb-0 text-muted small">Pengajuan akan ditolak setelah Anda mengirimkan catatan ini.</p>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
|
||||||
|
<button type="submit" class="btn btn-danger">Reject</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('scripts')
|
@section('scripts')
|
||||||
@@ -451,6 +489,23 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle Reject Button Click
|
||||||
|
$(document).on('click', '.open-reject-modal', function () {
|
||||||
|
const rejectUrl = $(this).data('action');
|
||||||
|
$('#rejectForm').attr('action', rejectUrl);
|
||||||
|
$('#rejectRemarks').val('');
|
||||||
|
$('#rejectModal').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rejectModal').on('shown.bs.modal', function () {
|
||||||
|
$('#rejectRemarks').trigger('focus');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rejectModal').on('hidden.bs.modal', function () {
|
||||||
|
$('#rejectForm').attr('action', '');
|
||||||
|
$('#rejectRemarks').val('');
|
||||||
|
});
|
||||||
|
|
||||||
// Handle Approve Button Click
|
// Handle Approve Button Click
|
||||||
$(document).on('click', '.open-approve-modal', function() {
|
$(document).on('click', '.open-approve-modal', function() {
|
||||||
const approveUrl = $(this).data('id');
|
const approveUrl = $(this).data('id');
|
||||||
|
|||||||
@@ -88,23 +88,19 @@
|
|||||||
@if (auth()->user()->can('approval.approve') && $form->status == 'On Progress')
|
@if (auth()->user()->can('approval.approve') && $form->status == 'On Progress')
|
||||||
<button type="button" class="btn btn-success final-approve-modal" data-id="{{ route('forms.entertainment.approve', $form->id) }}">Approve 1</button>
|
<button type="button" class="btn btn-success final-approve-modal" data-id="{{ route('forms.entertainment.approve', $form->id) }}">Approve 1</button>
|
||||||
|
|
||||||
<form action="{{ route('forms.entertainment.reject', $form->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to approve this item?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.entertainment.reject', $form->id) }}">
|
||||||
<button type="submit" class="btn btn-danger">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@elseif(auth()->user()->can('approval2.approve') && $form->status == 'Approved 1')
|
@elseif(auth()->user()->can('approval2.approve') && $form->status == 'Approved 1')
|
||||||
<button type="button" class="btn btn-success open-approve-modal" data-id="{{ route('forms.entertainment.approve2', $form->id) }}">Approve 2</button>
|
<button type="button" class="btn btn-success open-approve-modal" data-id="{{ route('forms.entertainment.approve2', $form->id) }}">Approve 2</button>
|
||||||
|
|
||||||
<form action="{{ route('forms.entertainment.reject', $form->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to approve this item?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.entertainment.reject', $form->id) }}">
|
||||||
<button type="submit" class="btn btn-danger">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@elseif(auth()->user()->can('final_approval.approve') && $form->status == 'Approved 2')
|
@elseif(auth()->user()->can('final_approval.approve') && $form->status == 'Approved 2')
|
||||||
<button type="button" class="btn btn-primary open-approve-modal" data-id="{{ route('forms.entertainment.final-approve', $form->id) }}">Final Approve</button>
|
<button type="button" class="btn btn-primary open-approve-modal" data-id="{{ route('forms.entertainment.final-approve', $form->id) }}">Final Approve</button>
|
||||||
@endif
|
@endif
|
||||||
@@ -253,6 +249,35 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
<section>
|
||||||
|
<div class="modal fade" id="rejectModal" tabindex="-1" role="dialog" aria-labelledby="rejectModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<form id="rejectForm" method="POST" action="">
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="rejectModalLabel">Reject Expense</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="rejectRemarks">Remarks <span class="text-danger">*</span></label>
|
||||||
|
<textarea class="form-control" name="remarks" id="rejectRemarks" rows="3" required></textarea>
|
||||||
|
</div>
|
||||||
|
<p class="mb-0 text-muted small">Pengajuan akan ditolak setelah Anda mengirimkan catatan ini.</p>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
|
||||||
|
<button type="submit" class="btn btn-danger">Reject</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('scripts')
|
@section('scripts')
|
||||||
@@ -267,6 +292,22 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
$(document).on('click', '.open-reject-modal', function () {
|
||||||
|
const rejectUrl = $(this).data('action');
|
||||||
|
$('#rejectForm').attr('action', rejectUrl);
|
||||||
|
$('#rejectRemarks').val('');
|
||||||
|
$('#rejectModal').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rejectModal').on('shown.bs.modal', function () {
|
||||||
|
$('#rejectRemarks').trigger('focus');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rejectModal').on('hidden.bs.modal', function () {
|
||||||
|
$('#rejectForm').attr('action', '');
|
||||||
|
$('#rejectRemarks').val('');
|
||||||
|
});
|
||||||
|
|
||||||
$(document).on('click', '.open-approve-modal', function() {
|
$(document).on('click', '.open-approve-modal', function() {
|
||||||
const approveUrl = $(this).data('id');
|
const approveUrl = $(this).data('id');
|
||||||
|
|
||||||
|
|||||||
@@ -22,10 +22,10 @@
|
|||||||
</section>
|
</section>
|
||||||
<section class="content">
|
<section class="content">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row row-cols-1 row-cols-md-2 row-cols-xl-5 g-3">
|
||||||
<!-- Total Expense -->
|
<!-- Total Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-info">
|
<div class="small-box bg-info flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3>Rp {{ number_format($forms->sum('total'), 0, ',', '.') }}</h3>
|
<h3>Rp {{ number_format($forms->sum('total'), 0, ',', '.') }}</h3>
|
||||||
<p>Total Expense</p>
|
<p>Total Expense</p>
|
||||||
@@ -36,8 +36,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Approved Expense -->
|
<!-- Approved Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-success">
|
<div class="small-box bg-success flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3>Rp {{ number_format($forms->whereIn('status', ['Approved', 'Closed'])->sum('approved_total'), 0, ',', '.') }}</h3>
|
<h3>Rp {{ number_format($forms->whereIn('status', ['Approved', 'Closed'])->sum('approved_total'), 0, ',', '.') }}</h3>
|
||||||
<p>Approved Expenses</p>
|
<p>Approved Expenses</p>
|
||||||
@@ -48,8 +48,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Pending Expense -->
|
<!-- Pending Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-warning">
|
<div class="small-box bg-warning flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="text-white">Rp {{ number_format($forms->where('status', 'On Progress')->sum('total'), 0, ',', '.') }}</h3>
|
<h3 class="text-white">Rp {{ number_format($forms->where('status', 'On Progress')->sum('total'), 0, ',', '.') }}</h3>
|
||||||
<p class="text-white">Pending Expenses</p>
|
<p class="text-white">Pending Expenses</p>
|
||||||
@@ -59,9 +59,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- Outstanding Expense -->
|
||||||
|
<div class="col d-flex">
|
||||||
|
<div class="small-box bg-danger flex-fill">
|
||||||
|
<div class="inner">
|
||||||
|
<h3>{{ $outstandingCount }}</h3>
|
||||||
|
<p>Outstanding Expenses</p>
|
||||||
|
<p class="mb-0"><small>Total Rp {{ number_format($outstandingTotal, 0, ',', '.') }}</small></p>
|
||||||
|
</div>
|
||||||
|
<div class="icon">
|
||||||
|
<i class="fas fa-exclamation-triangle"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@if($availableBudget > 0)
|
@if($availableBudget > 0)
|
||||||
<div class="col-lg-3 col-6">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-purple">
|
<div class="small-box bg-purple flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="text-white">Rp {{ number_format($availableBudget, 0, ',', '.') }}</h3>
|
<h3 class="text-white">Rp {{ number_format($availableBudget, 0, ',', '.') }}</h3>
|
||||||
<p class="text-white">Available Budget</p>
|
<p class="text-white">Available Budget</p>
|
||||||
@@ -160,13 +173,11 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form action="{{ route('forms.meeting.reject', $item->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to reject this item?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger btn-sm open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.meeting.reject', $item->id) }}">
|
||||||
<button type="submit" class="btn btn-danger btn-sm">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@endif
|
@endif
|
||||||
@endif
|
@endif
|
||||||
@if ($item->approved_at)
|
@if ($item->approved_at)
|
||||||
@@ -187,13 +198,11 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form action="{{ route('forms.meeting.reject', $item->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to reject this item?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger btn-sm open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.meeting.reject', $item->id) }}">
|
||||||
<button type="submit" class="btn btn-danger btn-sm">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@endif
|
@endif
|
||||||
@endif
|
@endif
|
||||||
@if ($item->approved2_at)
|
@if ($item->approved2_at)
|
||||||
@@ -423,6 +432,35 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
<section>
|
||||||
|
<div class="modal fade" id="rejectModal" tabindex="-1" role="dialog" aria-labelledby="rejectModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<form id="rejectForm" method="POST" action="">
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="rejectModalLabel">Reject Expense</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="rejectRemarks">Remarks <span class="text-danger">*</span></label>
|
||||||
|
<textarea class="form-control" name="remarks" id="rejectRemarks" rows="3" required></textarea>
|
||||||
|
</div>
|
||||||
|
<p class="mb-0 text-muted small">Pengajuan akan ditolak setelah Anda mengirimkan catatan ini.</p>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
|
||||||
|
<button type="submit" class="btn btn-danger">Reject</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('scripts')
|
@section('scripts')
|
||||||
@@ -463,6 +501,23 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle Reject Button Click
|
||||||
|
$(document).on('click', '.open-reject-modal', function () {
|
||||||
|
const rejectUrl = $(this).data('action');
|
||||||
|
$('#rejectForm').attr('action', rejectUrl);
|
||||||
|
$('#rejectRemarks').val('');
|
||||||
|
$('#rejectModal').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rejectModal').on('shown.bs.modal', function () {
|
||||||
|
$('#rejectRemarks').trigger('focus');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rejectModal').on('hidden.bs.modal', function () {
|
||||||
|
$('#rejectForm').attr('action', '');
|
||||||
|
$('#rejectRemarks').val('');
|
||||||
|
});
|
||||||
|
|
||||||
// Handle Approve Button Click
|
// Handle Approve Button Click
|
||||||
$(document).on('click', '.open-approve-modal', function() {
|
$(document).on('click', '.open-approve-modal', function() {
|
||||||
const approveUrl = $(this).data('id');
|
const approveUrl = $(this).data('id');
|
||||||
|
|||||||
@@ -84,23 +84,19 @@
|
|||||||
@if (auth()->user()->can('approval.approve') && $form->status == 'On Progress')
|
@if (auth()->user()->can('approval.approve') && $form->status == 'On Progress')
|
||||||
<button type="button" class="btn btn-success final-approve-modal" data-id="{{ route('forms.meeting.approve', $form->id) }}">Approve 1</button>
|
<button type="button" class="btn btn-success final-approve-modal" data-id="{{ route('forms.meeting.approve', $form->id) }}">Approve 1</button>
|
||||||
|
|
||||||
<form action="{{ route('forms.meeting.reject', $form->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to approve this item?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.meeting.reject', $form->id) }}">
|
||||||
<button type="submit" class="btn btn-danger">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@elseif(auth()->user()->can('approval2.approve') && $form->status == 'Approved 1')
|
@elseif(auth()->user()->can('approval2.approve') && $form->status == 'Approved 1')
|
||||||
<button type="button" class="btn btn-success open-approve-modal" data-id="{{ route('forms.meeting.approve2', $form->id) }}">Approve 2</button>
|
<button type="button" class="btn btn-success open-approve-modal" data-id="{{ route('forms.meeting.approve2', $form->id) }}">Approve 2</button>
|
||||||
|
|
||||||
<form action="{{ route('forms.meeting.reject', $form->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to approve this item?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.meeting.reject', $form->id) }}">
|
||||||
<button type="submit" class="btn btn-danger">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@elseif(auth()->user()->can('final_approval.approve') && $form->status == 'Approved 2')
|
@elseif(auth()->user()->can('final_approval.approve') && $form->status == 'Approved 2')
|
||||||
<button type="button" class="btn btn-primary open-approve-modal" data-id="{{ route('forms.meeting.final-approve', $form->id) }}">Final Approve</button>
|
<button type="button" class="btn btn-primary open-approve-modal" data-id="{{ route('forms.meeting.final-approve', $form->id) }}">Final Approve</button>
|
||||||
@endif
|
@endif
|
||||||
@@ -271,6 +267,35 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
<section>
|
||||||
|
<div class="modal fade" id="rejectModal" tabindex="-1" role="dialog" aria-labelledby="rejectModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<form id="rejectForm" method="POST" action="">
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="rejectModalLabel">Reject Expense</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="rejectRemarks">Remarks <span class="text-danger">*</span></label>
|
||||||
|
<textarea class="form-control" name="remarks" id="rejectRemarks" rows="3" required></textarea>
|
||||||
|
</div>
|
||||||
|
<p class="mb-0 text-muted small">Pengajuan akan ditolak setelah Anda mengirimkan catatan ini.</p>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
|
||||||
|
<button type="submit" class="btn btn-danger">Reject</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('scripts')
|
@section('scripts')
|
||||||
@@ -309,6 +334,22 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
$(document).on('click', '.open-reject-modal', function () {
|
||||||
|
const rejectUrl = $(this).data('action');
|
||||||
|
$('#rejectForm').attr('action', rejectUrl);
|
||||||
|
$('#rejectRemarks').val('');
|
||||||
|
$('#rejectModal').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rejectModal').on('shown.bs.modal', function () {
|
||||||
|
$('#rejectRemarks').trigger('focus');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rejectModal').on('hidden.bs.modal', function () {
|
||||||
|
$('#rejectForm').attr('action', '');
|
||||||
|
$('#rejectRemarks').val('');
|
||||||
|
});
|
||||||
|
|
||||||
// Handle Approve Button Click
|
// Handle Approve Button Click
|
||||||
$(document).on('click', '.open-approve-modal', function() {
|
$(document).on('click', '.open-approve-modal', function() {
|
||||||
const approveUrl = $(this).data('id');
|
const approveUrl = $(this).data('id');
|
||||||
|
|||||||
@@ -22,10 +22,10 @@
|
|||||||
</section>
|
</section>
|
||||||
<section class="content">
|
<section class="content">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row row-cols-1 row-cols-md-2 row-cols-xl-5 g-3">
|
||||||
<!-- Total Expense -->
|
<!-- Total Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-info">
|
<div class="small-box bg-info flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3>Rp {{ number_format($forms->sum('total'), 0, ',', '.') }}</h3>
|
<h3>Rp {{ number_format($forms->sum('total'), 0, ',', '.') }}</h3>
|
||||||
<p>Total Expense</p>
|
<p>Total Expense</p>
|
||||||
@@ -36,8 +36,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Approved Expense -->
|
<!-- Approved Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-success">
|
<div class="small-box bg-success flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3>Rp {{ number_format($forms->whereIn('status', ['Approved', 'Closed'])->sum('approved_total'), 0, ',', '.') }}</h3>
|
<h3>Rp {{ number_format($forms->whereIn('status', ['Approved', 'Closed'])->sum('approved_total'), 0, ',', '.') }}</h3>
|
||||||
<p>Approved Expenses</p>
|
<p>Approved Expenses</p>
|
||||||
@@ -48,8 +48,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Pending Expense -->
|
<!-- Pending Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-warning">
|
<div class="small-box bg-warning flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="text-white">Rp {{ number_format($forms->where('status', 'On Progress')->sum('total'), 0, ',', '.') }}</h3>
|
<h3 class="text-white">Rp {{ number_format($forms->where('status', 'On Progress')->sum('total'), 0, ',', '.') }}</h3>
|
||||||
<p class="text-white">Pending Expenses</p>
|
<p class="text-white">Pending Expenses</p>
|
||||||
@@ -59,9 +59,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- Outstanding Expense -->
|
||||||
|
<div class="col d-flex">
|
||||||
|
<div class="small-box bg-danger flex-fill">
|
||||||
|
<div class="inner">
|
||||||
|
<h3>{{ $outstandingCount }}</h3>
|
||||||
|
<p>Outstanding Expenses</p>
|
||||||
|
<p class="mb-0"><small>Total Rp {{ number_format($outstandingTotal, 0, ',', '.') }}</small></p>
|
||||||
|
</div>
|
||||||
|
<div class="icon">
|
||||||
|
<i class="fas fa-exclamation-triangle"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@if($availableBudget > 0)
|
@if($availableBudget > 0)
|
||||||
<div class="col-lg-3 col-6">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-purple">
|
<div class="small-box bg-purple flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="text-white">Rp {{ number_format($availableBudget, 0, ',', '.') }}</h3>
|
<h3 class="text-white">Rp {{ number_format($availableBudget, 0, ',', '.') }}</h3>
|
||||||
<p class="text-white">Available Budget</p>
|
<p class="text-white">Available Budget</p>
|
||||||
@@ -168,13 +181,11 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form action="{{ route('forms.other.reject', $item->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to reject this item?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger btn-sm open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.other.reject', $item->id) }}">
|
||||||
<button type="submit" class="btn btn-danger btn-sm">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@endif
|
@endif
|
||||||
@endif
|
@endif
|
||||||
@if ($item->approved_at)
|
@if ($item->approved_at)
|
||||||
@@ -195,13 +206,11 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form action="{{ route('forms.other.reject', $item->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to reject this item?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger btn-sm open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.other.reject', $item->id) }}">
|
||||||
<button type="submit" class="btn btn-danger btn-sm">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@endif
|
@endif
|
||||||
@endif
|
@endif
|
||||||
@if ($item->approved2_at)
|
@if ($item->approved2_at)
|
||||||
@@ -397,6 +406,35 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
<section>
|
||||||
|
<div class="modal fade" id="rejectModal" tabindex="-1" role="dialog" aria-labelledby="rejectModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<form id="rejectForm" method="POST" action="">
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="rejectModalLabel">Reject Expense</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="rejectRemarks">Remarks <span class="text-danger">*</span></label>
|
||||||
|
<textarea class="form-control" name="remarks" id="rejectRemarks" rows="3" required></textarea>
|
||||||
|
</div>
|
||||||
|
<p class="mb-0 text-muted small">Pengajuan akan ditolak setelah Anda mengirimkan catatan ini.</p>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
|
||||||
|
<button type="submit" class="btn btn-danger">Reject</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('scripts')
|
@section('scripts')
|
||||||
@@ -437,6 +475,23 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle Reject Button Click
|
||||||
|
$(document).on('click', '.open-reject-modal', function () {
|
||||||
|
const rejectUrl = $(this).data('action');
|
||||||
|
$('#rejectForm').attr('action', rejectUrl);
|
||||||
|
$('#rejectRemarks').val('');
|
||||||
|
$('#rejectModal').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rejectModal').on('shown.bs.modal', function () {
|
||||||
|
$('#rejectRemarks').trigger('focus');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rejectModal').on('hidden.bs.modal', function () {
|
||||||
|
$('#rejectForm').attr('action', '');
|
||||||
|
$('#rejectRemarks').val('');
|
||||||
|
});
|
||||||
|
|
||||||
// Handle Approve Button Click
|
// Handle Approve Button Click
|
||||||
$(document).on('click', '.open-approve-modal', function() {
|
$(document).on('click', '.open-approve-modal', function() {
|
||||||
const approveUrl = $(this).data('id');
|
const approveUrl = $(this).data('id');
|
||||||
|
|||||||
@@ -78,23 +78,19 @@
|
|||||||
@if (auth()->user()->can('approval.approve') && $form->status == 'On Progress')
|
@if (auth()->user()->can('approval.approve') && $form->status == 'On Progress')
|
||||||
<button type="button" class="btn btn-success final-approve-modal" data-id="{{ route('forms.other.approve', $form->id) }}">Approve 1</button>
|
<button type="button" class="btn btn-success final-approve-modal" data-id="{{ route('forms.other.approve', $form->id) }}">Approve 1</button>
|
||||||
|
|
||||||
<form action="{{ route('forms.other.reject', $form->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to approve this item?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.other.reject', $form->id) }}">
|
||||||
<button type="submit" class="btn btn-danger">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@elseif(auth()->user()->can('approval2.approve') && $form->status == 'Approved 1')
|
@elseif(auth()->user()->can('approval2.approve') && $form->status == 'Approved 1')
|
||||||
<button type="button" class="btn btn-success open-approve-modal" data-id="{{ route('forms.other.approve2', $form->id) }}">Approve 2</button>
|
<button type="button" class="btn btn-success open-approve-modal" data-id="{{ route('forms.other.approve2', $form->id) }}">Approve 2</button>
|
||||||
|
|
||||||
<form action="{{ route('forms.other.reject', $form->id) }}" method="POST" class="d-inline" onsubmit="return confirm('Are you sure you want to approve this item?');">
|
<button type="button"
|
||||||
@csrf
|
class="btn btn-danger open-reject-modal"
|
||||||
@method('PUT')
|
data-action="{{ route('forms.other.reject', $form->id) }}">
|
||||||
<button type="submit" class="btn btn-danger">
|
|
||||||
Reject
|
Reject
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
@elseif(auth()->user()->can('final_approval.approve') && $form->status == 'Approved 2')
|
@elseif(auth()->user()->can('final_approval.approve') && $form->status == 'Approved 2')
|
||||||
<button type="button" class="btn btn-primary open-approve-modal" data-id="{{ route('forms.other.final-approve', $form->id) }}">Final Approve</button>
|
<button type="button" class="btn btn-primary open-approve-modal" data-id="{{ route('forms.other.final-approve', $form->id) }}">Final Approve</button>
|
||||||
@endif
|
@endif
|
||||||
@@ -231,6 +227,35 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
<section>
|
||||||
|
<div class="modal fade" id="rejectModal" tabindex="-1" role="dialog" aria-labelledby="rejectModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<form id="rejectForm" method="POST" action="">
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="rejectModalLabel">Reject Expense</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="rejectRemarks">Remarks <span class="text-danger">*</span></label>
|
||||||
|
<textarea class="form-control" name="remarks" id="rejectRemarks" rows="3" required></textarea>
|
||||||
|
</div>
|
||||||
|
<p class="mb-0 text-muted small">Pengajuan akan ditolak setelah Anda mengirimkan catatan ini.</p>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
|
||||||
|
<button type="submit" class="btn btn-danger">Reject</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
@section('scripts')
|
@section('scripts')
|
||||||
@@ -245,6 +270,22 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
$(document).on('click', '.open-reject-modal', function () {
|
||||||
|
const rejectUrl = $(this).data('action');
|
||||||
|
$('#rejectForm').attr('action', rejectUrl);
|
||||||
|
$('#rejectRemarks').val('');
|
||||||
|
$('#rejectModal').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rejectModal').on('shown.bs.modal', function () {
|
||||||
|
$('#rejectRemarks').trigger('focus');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#rejectModal').on('hidden.bs.modal', function () {
|
||||||
|
$('#rejectForm').attr('action', '');
|
||||||
|
$('#rejectRemarks').val('');
|
||||||
|
});
|
||||||
|
|
||||||
// Handle Approve Button Click
|
// Handle Approve Button Click
|
||||||
$(document).on('click', '.open-approve-modal', function() {
|
$(document).on('click', '.open-approve-modal', function() {
|
||||||
const approveUrl = $(this).data('id');
|
const approveUrl = $(this).data('id');
|
||||||
|
|||||||
@@ -22,10 +22,10 @@
|
|||||||
</section>
|
</section>
|
||||||
<section class="content">
|
<section class="content">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row row-cols-1 row-cols-md-2 row-cols-xl-5 g-3">
|
||||||
<!-- Total Expense -->
|
<!-- Total Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-info">
|
<div class="small-box bg-info flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3>Rp {{ number_format($forms->sum('total'), 0, ',', '.') }}</h3>
|
<h3>Rp {{ number_format($forms->sum('total'), 0, ',', '.') }}</h3>
|
||||||
<p>Total Expense</p>
|
<p>Total Expense</p>
|
||||||
@@ -36,8 +36,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Approved Expense -->
|
<!-- Approved Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-success">
|
<div class="small-box bg-success flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3>Rp {{ number_format($forms->whereIn('status', ['Approved', 'Closed'])->sum('approved_total'), 0, ',', '.') }}</h3>
|
<h3>Rp {{ number_format($forms->whereIn('status', ['Approved', 'Closed'])->sum('approved_total'), 0, ',', '.') }}</h3>
|
||||||
<p>Approved Expenses</p>
|
<p>Approved Expenses</p>
|
||||||
@@ -48,8 +48,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Pending Expense -->
|
<!-- Pending Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-warning">
|
<div class="small-box bg-warning flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="text-white">Rp {{ number_format($forms->where('status', 'On Progress')->sum('total'), 0, ',', '.') }}</h3>
|
<h3 class="text-white">Rp {{ number_format($forms->where('status', 'On Progress')->sum('total'), 0, ',', '.') }}</h3>
|
||||||
<p class="text-white">Pending Expenses</p>
|
<p class="text-white">Pending Expenses</p>
|
||||||
@@ -59,9 +59,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- Outstanding Expense -->
|
||||||
|
<div class="col d-flex">
|
||||||
|
<div class="small-box bg-danger flex-fill">
|
||||||
|
<div class="inner">
|
||||||
|
<h3>{{ $outstandingCount }}</h3>
|
||||||
|
<p>Outstanding Expenses</p>
|
||||||
|
<p class="mb-0"><small>Total Rp {{ number_format($outstandingTotal, 0, ',', '.') }}</small></p>
|
||||||
|
</div>
|
||||||
|
<div class="icon">
|
||||||
|
<i class="fas fa-exclamation-triangle"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@if($availableBudget > 0)
|
@if($availableBudget > 0)
|
||||||
<div class="col-lg-3 col-6">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-purple">
|
<div class="small-box bg-purple flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="text-white">Rp {{ number_format($availableBudget, 0, ',', '.') }}</h3>
|
<h3 class="text-white">Rp {{ number_format($availableBudget, 0, ',', '.') }}</h3>
|
||||||
<p class="text-white">Available Budget</p>
|
<p class="text-white">Available Budget</p>
|
||||||
|
|||||||
@@ -22,10 +22,10 @@
|
|||||||
</section>
|
</section>
|
||||||
<section class="content">
|
<section class="content">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row row-cols-1 row-cols-md-2 row-cols-xl-5 g-3">
|
||||||
<!-- Total Expense -->
|
<!-- Total Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-info">
|
<div class="small-box bg-info flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3>Rp {{ number_format($forms->sum('total'), 0, ',', '.') }}</h3>
|
<h3>Rp {{ number_format($forms->sum('total'), 0, ',', '.') }}</h3>
|
||||||
<p>Total Expense</p>
|
<p>Total Expense</p>
|
||||||
@@ -36,8 +36,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Approved Expense -->
|
<!-- Approved Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-success">
|
<div class="small-box bg-success flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3>Rp {{ number_format($forms->whereIn('status', ['Approved', 'Closed'])->sum('approved_total'), 0, ',', '.') }}</h3>
|
<h3>Rp {{ number_format($forms->whereIn('status', ['Approved', 'Closed'])->sum('approved_total'), 0, ',', '.') }}</h3>
|
||||||
<p>Approved Expenses</p>
|
<p>Approved Expenses</p>
|
||||||
@@ -48,8 +48,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Pending Expense -->
|
<!-- Pending Expense -->
|
||||||
<div class="col-6 {{ $availableBudget > 0 ? 'col-lg-3' : 'col-lg-4' }}">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-warning">
|
<div class="small-box bg-warning flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="text-white">Rp {{ number_format($forms->where('status', 'On Progress')->sum('total'), 0, ',', '.') }}</h3>
|
<h3 class="text-white">Rp {{ number_format($forms->where('status', 'On Progress')->sum('total'), 0, ',', '.') }}</h3>
|
||||||
<p class="text-white">Pending Expenses</p>
|
<p class="text-white">Pending Expenses</p>
|
||||||
@@ -59,9 +59,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- Outstanding Expense -->
|
||||||
|
<div class="col d-flex">
|
||||||
|
<div class="small-box bg-danger flex-fill">
|
||||||
|
<div class="inner">
|
||||||
|
<h3>{{ $outstandingCount }}</h3>
|
||||||
|
<p>Outstanding Expenses</p>
|
||||||
|
<p class="mb-0"><small>Total Rp {{ number_format($outstandingTotal, 0, ',', '.') }}</small></p>
|
||||||
|
</div>
|
||||||
|
<div class="icon">
|
||||||
|
<i class="fas fa-exclamation-triangle"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@if($availableBudget > 0)
|
@if($availableBudget > 0)
|
||||||
<div class="col-lg-3 col-6">
|
<div class="col d-flex">
|
||||||
<div class="small-box bg-purple">
|
<div class="small-box bg-purple flex-fill">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="text-white">Rp {{ number_format($availableBudget, 0, ',', '.') }}</h3>
|
<h3 class="text-white">Rp {{ number_format($availableBudget, 0, ',', '.') }}</h3>
|
||||||
<p class="text-white">Available Budget</p>
|
<p class="text-white">Available Budget</p>
|
||||||
|
|||||||
@@ -84,40 +84,48 @@
|
|||||||
@endforeach
|
@endforeach
|
||||||
|
|
||||||
|
|
||||||
<!-- cash in advance -->
|
<!-- Cash in Bank BCA -->
|
||||||
|
@php
|
||||||
|
$cashInBankValue = $pettyCashAmount - $totalKategori;
|
||||||
|
$rowIndex = $kategori->count() + 1;
|
||||||
|
@endphp
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $kategori->count() + 1 }}</td>
|
<td>{{ $rowIndex }}</td>
|
||||||
<td>Cash in Balance</td>
|
<td>Cash in Bank BCA</td>
|
||||||
<td>170 600 00</td>
|
<td>{{ $kategori_bca->account_number }}</td>
|
||||||
<td>@php
|
@if ($cashInBankValue >= 0)
|
||||||
$crValue = $budget && $budget->amount != 0 ? $budget->amount : 0;
|
@php
|
||||||
$crValue -= $totalDr ;
|
$totalDr += $cashInBankValue;
|
||||||
echo $crValue == 0 ? '' : number_format($crValue, 0, ',', ',');
|
@endphp
|
||||||
@endphp</td>
|
<td>{{ $cashInBankValue == 0 ? '' : number_format($cashInBankValue, 0, ',', ',') }}</td>
|
||||||
<td>
|
<td></td>
|
||||||
|
@else
|
||||||
</td>
|
@php
|
||||||
|
$totalCr += abs($cashInBankValue);
|
||||||
|
@endphp
|
||||||
|
<td></td>
|
||||||
|
<td>{{ number_format(abs($cashInBankValue), 0, ',', ',') }}</td>
|
||||||
|
@endif
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
<!-- petty cash -->
|
<!-- petty cash -->
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $kategori->count() + 1 }}</td>
|
<td>{{ $rowIndex + 1 }}</td>
|
||||||
<td>Petty Cash</td>
|
<td>Petty Cash</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td>
|
<td>
|
||||||
@php
|
@php
|
||||||
$crValue = $budget && $budget->amount != 0 ? $budget->amount : 0;
|
$totalCr += $pettyCashAmount;
|
||||||
$totalCr += $crValue;
|
echo $pettyCashAmount == 0 ? '' : number_format($pettyCashAmount, 0, ',', ',');
|
||||||
echo $crValue == 0 ? '' : number_format($crValue, 0, ',', ',');
|
|
||||||
@endphp
|
@endphp
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
{{-- Static Rows --}}
|
{{-- Static Rows --}}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $kategori->count() + 2 }}</td>
|
<td>{{ $rowIndex + 2 }}</td>
|
||||||
<td>Cash Advance (Opening Balance)</td>
|
<td>Cash Advance (Opening Balance)</td>
|
||||||
<td>{{ $kategori_bca->account_number }}</td>
|
<td>{{ $kategori_bca->account_number }}</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
@@ -130,7 +138,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $kategori->count() + 3 }}</td>
|
<td>{{ $rowIndex + 3 }}</td>
|
||||||
<td>Cash Advance (Ending Balance)</td>
|
<td>Cash Advance (Ending Balance)</td>
|
||||||
<td>{{ $kategori_bca->account_number }}</td>
|
<td>{{ $kategori_bca->account_number }}</td>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
Reference in New Issue
Block a user