diff --git a/app/Livewire/Datatable/Studio/Manage/OrdersTable.php b/app/Livewire/Datatable/Studio/Manage/OrdersTable.php index 9df7960..2e938e5 100644 --- a/app/Livewire/Datatable/Studio/Manage/OrdersTable.php +++ b/app/Livewire/Datatable/Studio/Manage/OrdersTable.php @@ -112,12 +112,12 @@ public function columns(): array ->label(function ($row) { $actions = ''; - // if (auth()->user()->can('update order')) { - // $actions .= view('components.datatables.edit', [ - // 'id' => $row->hash, - // 'editRoute' => route('studio.manage.order.edit', $row->hash), - // ])->render(); - // } + if (auth()->user()->can('show order')) { + $actions .= view('components.datatables.show', [ + 'id' => $row->hash, + 'showRoute' => route('studio.manage.order.show', $row->hash), + ])->render(); + } if (auth()->user()->can('delete order')) { $actions .= view('components.datatables.delete', [ diff --git a/app/Livewire/Studio/Manage/Order/Show.php b/app/Livewire/Studio/Manage/Order/Show.php new file mode 100644 index 0000000..3e5d650 --- /dev/null +++ b/app/Livewire/Studio/Manage/Order/Show.php @@ -0,0 +1,57 @@ +load(['items', 'payments']); + + $this->orderData = [ + 'customer' => $order->customer?->name ?? 'Anonim', + 'invoice_number' => $order->invoice_number, + 'status' => $order->status->label(), + 'date' => formatDateTime($order->created_at), + 'channel' => $order->channel->label(), + 'subtotal' => currency($order->subtotal, 'Rp'), + 'discount' => currency($order->discount, 'Rp'), + 'total' => currency($order->total, 'Rp'), + ]; + + $this->items = $order->items + ->map(fn (OrderItem $item) => [ + 'id' => $item->hash, + 'name' => $item->orderable?->name, + 'quantity' => $item->quantity, + 'unit_price' => currency($item->unit_price, 'Rp'), + 'total' => currency($item->quantity * $item->unit_price, 'Rp'), + ]) + ->toArray(); + + $this->payments = $order->payments->map(fn (Payment $payment) => [ + 'id' => $payment->id, + ]) + ->toArray(); + } + + public function render() + { + return view('livewire.studio.manage.order.show', [ + 'pageTitle' => 'Detail Order', + ]); + } +} diff --git a/database/seeders/RolePermissionSeeder.php b/database/seeders/RolePermissionSeeder.php index fc4e1d8..16b964b 100644 --- a/database/seeders/RolePermissionSeeder.php +++ b/database/seeders/RolePermissionSeeder.php @@ -99,6 +99,7 @@ public function run(): void 'create order', 'update order', 'delete order', + 'show order', 'view article', 'create article', diff --git a/resources/views/components/datatables/show.blade.php b/resources/views/components/datatables/show.blade.php new file mode 100644 index 0000000..dab2f2b --- /dev/null +++ b/resources/views/components/datatables/show.blade.php @@ -0,0 +1,3 @@ + + + diff --git a/resources/views/livewire/studio/manage/order/show.blade.php b/resources/views/livewire/studio/manage/order/show.blade.php new file mode 100644 index 0000000..0cdcefc --- /dev/null +++ b/resources/views/livewire/studio/manage/order/show.blade.php @@ -0,0 +1,160 @@ + +
+
+ {{ $pageTitle }} +
+
+ + Kembali + +
+
+ +
+ +
+
+
+

Invoice

+
+
+ + +
+
+
+

+ Untuk pelanggan kami yang terhormat, +

+

+ {{ $orderData['customer'] }} +

+
+
+ +
+
+
+
+ Nomor Invoice: +
+
+ {{ $orderData['invoice_number'] }} +
+
+ +
+
+ Status: +
+
+ {{ $orderData['status'] }} +
+
+ +
+
+ Tanggal: +
+
+ {{ $orderData['date'] }} +
+
+ +
+
+ Order di: +
+
+ {{ $orderData['channel'] }} +
+
+
+
+ +
+ + + +
+ + + + + @foreach ($items as $item) +
+
+
+ Item +
+

{{ $item['name'] }}

+
+
+
+ Kuantitas +
+

{{ $item['quantity'] }}

+
+
+
+ Harga +
+

{{ $item['unit_price'] }}

+
+
+
+ Total +
+

{{ $item['total'] }}

+
+
+ +
+ @endforeach +
+ + + +
+
+ +
+
+
Subotal:
+
+ {{ $orderData['subtotal'] }}
+
+ +
+
Diskon:
+
+ {{ $orderData['discount'] }}
+
+ +
+
Total:
+
+ {{ $orderData['total'] }}
+
+ +
+ +
+
+ +
+
+
+
diff --git a/routes/pages/studio.php b/routes/pages/studio.php index 1991d27..044f263 100644 --- a/routes/pages/studio.php +++ b/routes/pages/studio.php @@ -28,6 +28,7 @@ use App\Livewire\Studio\Manage\Article\Index as ArticleIndex; use App\Livewire\Studio\Manage\Order\Create as OrderCreate; use App\Livewire\Studio\Manage\Order\Index as OrderIndex; +use App\Livewire\Studio\Manage\Order\Show as OrderShow; use App\Livewire\Studio\Manage\Purchase\Create as PurchaseCreate; use App\Livewire\Studio\Manage\Purchase\Index as PurchaseIndex; use App\Livewire\Studio\Master\Formula as FormulaComponent; @@ -149,6 +150,7 @@ Route::prefix('orders')->name('order.')->group(function () { Route::get('/', OrderIndex::class)->name('index')->middleware('can:view order'); Route::get('/create', OrderCreate::class)->name('create')->middleware('can:create order'); + Route::get('/{order}/show', OrderShow::class)->name('show')->middleware('can:show order'); Route::delete('/{order}/delete', OrderCreate::class)->name('delete')->middleware('can:delete order'); });