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