parent
2b377f72aa
commit
aa60cf18ee
@ -19,5 +19,8 @@ enum IconEnum: string
|
||||
case INVOICE_REPORT = 'lucide-files';
|
||||
case TAB_ALL = 'lucide-layout-grid';
|
||||
case TAB_OVERDUE = 'lucide-calendar-clock';
|
||||
case TAB_UNPRINTED = 'lucide-printer';
|
||||
case PRINT = 'lucide-printer';
|
||||
case TRASH = 'lucide-trash-2';
|
||||
case SAVE = 'lucide-save';
|
||||
case COPY = 'lucide-copy';
|
||||
}
|
||||
|
@ -2,9 +2,13 @@
|
||||
|
||||
namespace App\Filament\Admin\Resources\OrderResource\Pages;
|
||||
|
||||
use App\Enums\IconEnum;
|
||||
use App\Enums\InvoiceStatus;
|
||||
use App\Enums\OrderAttributes;
|
||||
use App\Enums\OrderStatus;
|
||||
use App\Filament\Admin\Resources\InvoiceResource;
|
||||
use App\Filament\Admin\Resources\OrderResource;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\Order;
|
||||
use App\Models\OrderProduct;
|
||||
use App\Models\ProductService;
|
||||
@ -13,13 +17,20 @@
|
||||
use App\Models\ServiceType;
|
||||
use Filament\Actions;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Notifications\Notification;
|
||||
use Filament\Resources\Pages\EditRecord;
|
||||
use Illuminate\Contracts\Support\Htmlable;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class EditOrder extends EditRecord
|
||||
{
|
||||
protected static string $resource = OrderResource::class;
|
||||
|
||||
public function getTitle(): string|Htmlable
|
||||
{
|
||||
return parent::getTitle().' '.$this->record->internal_po;
|
||||
}
|
||||
|
||||
protected function mutateFormDataBeforeFill(array $data): array
|
||||
{
|
||||
$order = Order::findOrFail($data['id']);
|
||||
@ -148,12 +159,11 @@ protected function getHeaderActions(): array
|
||||
Action::make('save')
|
||||
->label('Save changes')
|
||||
->action('save')
|
||||
->icon('lucide-save'),
|
||||
->icon(IconEnum::SAVE->value),
|
||||
|
||||
Actions\ReplicateAction::make()
|
||||
->label('Duplicate')
|
||||
->icon('lucide-copy')
|
||||
->color('info')
|
||||
->icon(IconEnum::COPY->value)
|
||||
->mutateRecordDataUsing(function (array $data): array {
|
||||
$po = 'Duplicate of '.$data['customer_po'];
|
||||
$data['customer_po'] = $po;
|
||||
@ -195,23 +205,37 @@ protected function getHeaderActions(): array
|
||||
})
|
||||
->successRedirectUrl(fn (Model $replica): string => OrderResource::getUrl('edit', [$replica])),
|
||||
|
||||
// Action::make('invoice')
|
||||
// ->visible(fn () => auth()->user()->is_admin)
|
||||
// ->label('To Invoice')
|
||||
// ->icon('lucide-receipt-text'),
|
||||
//
|
||||
Action::make('invoice')
|
||||
->visible(fn () => auth()->user()->is_admin)
|
||||
->label(fn (Order $record) => $record->invoice()->exists() ? 'To Invoice' : 'Make Invoice')
|
||||
->icon(IconEnum::INVOICE->value)
|
||||
->action(function (Order $record) {
|
||||
if ($record->invoice()->exists()) {
|
||||
return redirect()->to(InvoiceResource::getUrl('edit', ['record' => $record->invoice->id]));
|
||||
}
|
||||
|
||||
$invoice = Invoice::create([
|
||||
'customer_id' => $record->customer_id,
|
||||
'date' => today(),
|
||||
'status' => InvoiceStatus::UNPAID->value,
|
||||
]);
|
||||
|
||||
$invoice->orders()->save($record);
|
||||
|
||||
return Notification::make()
|
||||
->title('Invoice '.$invoice->internal_id.' created successfully')
|
||||
->body('Click the button again to go to the invoice')
|
||||
->success()
|
||||
->send();
|
||||
}),
|
||||
|
||||
Action::make('print')
|
||||
->icon('lucide-printer')
|
||||
->icon(IconEnum::PRINT->value)
|
||||
->url(fn (Order $record) => route('orders.pdf', $record))
|
||||
->openUrlInNewTab(),
|
||||
|
||||
Actions\DeleteAction::make()
|
||||
->icon('lucide-trash-2'),
|
||||
->icon(IconEnum::TRASH->value),
|
||||
];
|
||||
}
|
||||
|
||||
// protected function getRedirectUrl(): string
|
||||
// {
|
||||
// return $this->previousUrl ?? $this->getResource()::getUrl('index');
|
||||
// }
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ public function getTabs(): array
|
||||
->query(function ($query) {
|
||||
return $query->where('printed', false);
|
||||
})
|
||||
->icon(IconEnum::TAB_UNPRINTED->value)
|
||||
->icon(IconEnum::PRINT->value)
|
||||
->badge(function () {
|
||||
$count = Order::where('printed', false)->count();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user