|
|
|
@ -2,12 +2,22 @@
|
|
|
|
|
|
|
|
|
|
namespace App\Filament\Resources;
|
|
|
|
|
|
|
|
|
|
use App\Enums\ShippingType;
|
|
|
|
|
use App\Filament\Resources\ShippingEntryResource\Pages;
|
|
|
|
|
use App\Models\ShippingEntry;
|
|
|
|
|
use Filament\Forms\Components\Fieldset;
|
|
|
|
|
use Filament\Forms\Components\Section;
|
|
|
|
|
use Filament\Forms\Components\Select;
|
|
|
|
|
use Filament\Forms\Components\Split;
|
|
|
|
|
use Filament\Forms\Components\Textarea;
|
|
|
|
|
use Filament\Forms\Components\TextInput;
|
|
|
|
|
use Filament\Forms\Components\ToggleButtons;
|
|
|
|
|
use Filament\Forms\Form;
|
|
|
|
|
use Filament\Resources\Resource;
|
|
|
|
|
use Filament\Tables;
|
|
|
|
|
use Filament\Tables\Grouping\Group;
|
|
|
|
|
use Filament\Tables\Table;
|
|
|
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
|
|
|
|
|
|
|
|
class ShippingEntryResource extends Resource
|
|
|
|
|
{
|
|
|
|
@ -23,7 +33,65 @@ class ShippingEntryResource extends Resource
|
|
|
|
|
{
|
|
|
|
|
return $form
|
|
|
|
|
->schema([
|
|
|
|
|
//
|
|
|
|
|
Section::make([
|
|
|
|
|
Fieldset::make('Primary information')
|
|
|
|
|
->schema([
|
|
|
|
|
Select::make('customer')
|
|
|
|
|
->relationship('customer', 'company_name')
|
|
|
|
|
->searchable()
|
|
|
|
|
->required(),
|
|
|
|
|
|
|
|
|
|
ToggleButtons::make('shipping_type')
|
|
|
|
|
->options(ShippingType::class)
|
|
|
|
|
->inline()
|
|
|
|
|
->required(),
|
|
|
|
|
|
|
|
|
|
TextInput::make('courier')
|
|
|
|
|
->placeholder('UPS, Purolator...'),
|
|
|
|
|
]),
|
|
|
|
|
|
|
|
|
|
Split::make([
|
|
|
|
|
Fieldset::make('Account Details')
|
|
|
|
|
->schema([
|
|
|
|
|
TextInput::make('account_title')
|
|
|
|
|
->label('Title')
|
|
|
|
|
->prefixIcon('lucide-folder-pen')
|
|
|
|
|
->placeholder('What is this account used for?')
|
|
|
|
|
->columnSpan(2),
|
|
|
|
|
TextInput::make('account_url')
|
|
|
|
|
->label('URL')
|
|
|
|
|
->prefixIcon('lucide-globe')
|
|
|
|
|
->placeholder('Shipping website')
|
|
|
|
|
->url()
|
|
|
|
|
->columnSpan(2),
|
|
|
|
|
TextInput::make('account_username')
|
|
|
|
|
->label('Username')
|
|
|
|
|
->prefixIcon('lucide-circle-user')
|
|
|
|
|
->placeholder('...'),
|
|
|
|
|
TextInput::make('account_password')
|
|
|
|
|
->label('Password')
|
|
|
|
|
->prefixIcon('lucide-key-round')
|
|
|
|
|
->placeholder('...'),
|
|
|
|
|
])->columnSpan(1),
|
|
|
|
|
|
|
|
|
|
Fieldset::make('Shipping Instructions')
|
|
|
|
|
->schema([
|
|
|
|
|
TextInput::make('info_needed')
|
|
|
|
|
->label('Instructions')
|
|
|
|
|
->prefixIcon('lucide-pencil')
|
|
|
|
|
->placeholder('Example: put PO on box')
|
|
|
|
|
->columnSpan(2),
|
|
|
|
|
TextInput::make('notify')
|
|
|
|
|
->placeholder('Who to email and CC?')
|
|
|
|
|
->prefixIcon('lucide-users-round')
|
|
|
|
|
->columnSpan(2),
|
|
|
|
|
TextArea::make('notes')
|
|
|
|
|
->placeholder('Any additional information...')
|
|
|
|
|
->rows(2)
|
|
|
|
|
->columnSpan(2),
|
|
|
|
|
]),
|
|
|
|
|
])->columnSpan(2),
|
|
|
|
|
])->columns(2),
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -31,16 +99,20 @@ class ShippingEntryResource extends Resource
|
|
|
|
|
{
|
|
|
|
|
return $table
|
|
|
|
|
->columns([
|
|
|
|
|
Tables\Columns\TextColumn::make('customer.company_name')
|
|
|
|
|
->searchable(),
|
|
|
|
|
// Tables\Columns\TextColumn::make('customer.company_name')
|
|
|
|
|
// ->searchable(),
|
|
|
|
|
Tables\Columns\TextColumn::make('shipping_type')
|
|
|
|
|
->label('Type')
|
|
|
|
|
->sortable(),
|
|
|
|
|
Tables\Columns\TextColumn::make('courier'),
|
|
|
|
|
// Tables\Columns\TextColumn::make('contact'),
|
|
|
|
|
Tables\Columns\TextColumn::make('courier')
|
|
|
|
|
->searchable(query: function (Builder $query, $search) {
|
|
|
|
|
return $query
|
|
|
|
|
->where('courier', 'like', "%{$search}%")
|
|
|
|
|
->orWhereHas('customer', function (Builder $query) use ($search) {
|
|
|
|
|
return $query->where('company_name', 'like', "%{$search}%");
|
|
|
|
|
});
|
|
|
|
|
}),
|
|
|
|
|
Tables\Columns\TextColumn::make('account_title'),
|
|
|
|
|
// Tables\Columns\TextColumn::make('account_username'),
|
|
|
|
|
// Tables\Columns\TextColumn::make('account_password'),
|
|
|
|
|
Tables\Columns\TextColumn::make('info_needed'),
|
|
|
|
|
Tables\Columns\TextColumn::make('notify'),
|
|
|
|
|
|
|
|
|
@ -55,11 +127,11 @@ class ShippingEntryResource extends Resource
|
|
|
|
|
// Tables\Actions\BulkActionGroup::make([
|
|
|
|
|
// Tables\Actions\DeleteBulkAction::make(),
|
|
|
|
|
// ]),
|
|
|
|
|
]);
|
|
|
|
|
// ->defaultGroup(
|
|
|
|
|
// Group::make('customer.company_name')
|
|
|
|
|
// ->titlePrefixedWithLabel(false)
|
|
|
|
|
// );
|
|
|
|
|
])
|
|
|
|
|
->defaultGroup(
|
|
|
|
|
Group::make('customer.company_name')
|
|
|
|
|
->titlePrefixedWithLabel(false)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static function getRelations(): array
|
|
|
|
|