From 68148211004845f0de0ba7daf6e68c44d844152f Mon Sep 17 00:00:00 2001 From: Nisse Lommerde Date: Tue, 11 Mar 2025 12:17:53 -0400 Subject: [PATCH] #118: Improve customer form Also re-added creating a new customer from the order form --- .../Admin/Resources/CustomerResource.php | 45 +++++++++++++++---- .../CustomerResource/Pages/ListCustomers.php | 1 + .../Admin/Resources/OrderResource.php | 7 +-- 3 files changed, 42 insertions(+), 11 deletions(-) diff --git a/app/Filament/Admin/Resources/CustomerResource.php b/app/Filament/Admin/Resources/CustomerResource.php index f1b62f3..c31b046 100644 --- a/app/Filament/Admin/Resources/CustomerResource.php +++ b/app/Filament/Admin/Resources/CustomerResource.php @@ -8,6 +8,7 @@ use App\Filament\Admin\Resources\CustomerResource\RelationManagers\PaymentsRelationManager; use App\Filament\Admin\Resources\CustomerResource\RelationManagers\ShippingEntriesRelationManager; use App\Models\Customer; +use Filament\Forms\Components\Fieldset; use Filament\Forms\Components\Section; use Filament\Forms\Components\TextInput; use Filament\Forms\Form; @@ -29,16 +30,44 @@ class CustomerResource extends Resource public static function form(Form $form): Form { return $form + ->columns(1) ->schema([ Section::make([ - TextInput::make('company_name') - ->required(), - TextInput::make('phone'), - TextInput::make('shipping_address_line_1'), - TextInput::make('shipping_address_line_2'), - TextInput::make('billing_address_line_1'), - TextInput::make('billing_address_line_2'), - ])->columns(2), + Fieldset::make('Primary Information') + ->columns(1) + ->columnSpan(fn (?Customer $record) => $record ? 1 : 3) + ->schema([ + TextInput::make('company_name') + ->required(), + TextInput::make('phone'), + ]), + + Fieldset::make('Shipping Address') + ->columns(1) + ->columnSpan(fn (?Customer $record) => $record ? 1 : 3) + ->schema([ + TextInput::make('shipping_address_line_1') + ->label('Line 1') + ->placeholder('618 East Kent Ave S #108'), + TextInput::make('shipping_address_line_2') + ->label('Line 2') + ->placeholder('Vancouver, BC V5X 0B2, Canada'), + ]), + + Fieldset::make('Billing Address') + ->columns(1) + ->columnSpan(fn (?Customer $record) => $record ? 1 : 3) + ->schema([ + TextInput::make('billing_address_line_1') + ->label('Line 1') + ->placeholder('618 East Kent Ave S #108'), + TextInput::make('billing_address_line_2') + ->label('Line 2') + ->placeholder('Vancouver, BC V5X 0B2, Canada'), + ]), + ]) + ->columns(3) + ->columnSpan(fn (?Customer $record) => $record ? 1 : 3), ]); } diff --git a/app/Filament/Admin/Resources/CustomerResource/Pages/ListCustomers.php b/app/Filament/Admin/Resources/CustomerResource/Pages/ListCustomers.php index e3ed324..a7bc1a6 100644 --- a/app/Filament/Admin/Resources/CustomerResource/Pages/ListCustomers.php +++ b/app/Filament/Admin/Resources/CustomerResource/Pages/ListCustomers.php @@ -16,6 +16,7 @@ protected function getHeaderActions(): array return [ Actions\CreateAction::make() ->modal() + ->modalWidth('lg') ->icon(IconEnum::NEW->value) ->successRedirectUrl(fn ($record) => CustomerResource::getUrl('edit', ['record' => $record->id])), ]; diff --git a/app/Filament/Admin/Resources/OrderResource.php b/app/Filament/Admin/Resources/OrderResource.php index c93530f..aa42251 100644 --- a/app/Filament/Admin/Resources/OrderResource.php +++ b/app/Filament/Admin/Resources/OrderResource.php @@ -7,7 +7,6 @@ use App\Enums\OrderAttributes; use App\Enums\OrderStatus; use App\Enums\OrderType; -use App\Models\Customer; use App\Models\Invoice; use App\Models\Order; use App\Models\OrderProduct; @@ -61,11 +60,13 @@ public static function form(Form $form): Form ->options(OrderType::class) ->searchable(), - // Split::make([ Select::make('customer_id') ->required() ->label('Customer') - ->options(Customer::all()->pluck('company_name', 'id')) + ->relationship(name: 'customer', titleAttribute: 'company_name') + ->preload() + ->createOptionForm(fn ($form) => CustomerResource::form($form)) + ->createOptionAction(fn ($action) => $action->modalWidth('lg')) ->searchable(), TextInput::make('customer_po')