From 81afa8207f2d66eaa8dfa943ba026b548cc31e09 Mon Sep 17 00:00:00 2001 From: Nisse Lommerde <nisselommerde@gmail.com> Date: Sat, 1 Feb 2025 09:57:57 -0800 Subject: [PATCH] WIP Work on new Quotes --- .../Resources/CustomerReportResource.php | 2 +- .../Admin/Resources/OrderResource.php | 11 -- .../Admin/Resources/PaymentResource.php | 9 -- .../Admin/Resources/QuoteResource.php | 104 ++++++++++++---- app/Models/EmbroideryEntry.php | 26 ++++ app/Models/HeatTransferEntry.php | 23 ++++ app/Models/Quote.php | 21 +++- app/Models/ScreenPrintEntry.php | 32 +++++ app/Services/PaymentService.php | 3 +- .../migrations/015_create_quotes_table.php | 6 +- .../020_create_embroidery_entries_table.php | 40 ++++++ .../021_create_screen_print_entries_table.php | 45 +++++++ ...022_create_heat_transfer_entries_table.php | 36 ++++++ database/seeders/DatabaseSeeder.php | 2 +- public/invoice-inv400038.pdf | Bin 0 -> 50302 bytes resources/css/app.css | 2 +- .../table-repeater.blade.php | 6 +- tests/Unit/CustomerReportTest.php | 9 +- tests/Unit/CustomerTest.php | 7 +- tests/Unit/QuoteTest.php | 116 ++++++++++++++++++ 20 files changed, 440 insertions(+), 60 deletions(-) create mode 100644 app/Models/EmbroideryEntry.php create mode 100644 app/Models/HeatTransferEntry.php create mode 100644 app/Models/ScreenPrintEntry.php create mode 100644 database/migrations/020_create_embroidery_entries_table.php create mode 100644 database/migrations/021_create_screen_print_entries_table.php create mode 100644 database/migrations/022_create_heat_transfer_entries_table.php create mode 100644 public/invoice-inv400038.pdf diff --git a/app/Filament/Admin/Resources/CustomerReportResource.php b/app/Filament/Admin/Resources/CustomerReportResource.php index a86a331..c155484 100644 --- a/app/Filament/Admin/Resources/CustomerReportResource.php +++ b/app/Filament/Admin/Resources/CustomerReportResource.php @@ -124,7 +124,7 @@ public static function table(Table $table): Table public static function canAccess(): bool { - return auth()->user()->is_admin; + return auth()->user()->is_admin ?? false; } public static function getRelations(): array diff --git a/app/Filament/Admin/Resources/OrderResource.php b/app/Filament/Admin/Resources/OrderResource.php index aa9055b..854342c 100644 --- a/app/Filament/Admin/Resources/OrderResource.php +++ b/app/Filament/Admin/Resources/OrderResource.php @@ -6,7 +6,6 @@ use App\Enums\OrderAttributes; use App\Enums\OrderStatus; use App\Enums\OrderType; -use App\Models\Contact; use App\Models\Customer; use App\Models\Order; use App\Models\OrderProduct; @@ -62,18 +61,8 @@ public static function form(Form $form): Form ->required() ->label('Customer') ->options(Customer::all()->pluck('company_name', 'id')) -// ->reactive() ->searchable(), - // Select::make('contact_id') - // ->label('Contact') - // ->options(fn ($get): array => Contact::where('customer_id', $get('customer_id') ?? null) - // ->get() - // ->pluck('full_name', 'id') - // ->toArray()) - // ->searchable(), - // ]), - TextInput::make('customer_po') ->required() ->label('Customer PO'), diff --git a/app/Filament/Admin/Resources/PaymentResource.php b/app/Filament/Admin/Resources/PaymentResource.php index 777cda3..9730538 100644 --- a/app/Filament/Admin/Resources/PaymentResource.php +++ b/app/Filament/Admin/Resources/PaymentResource.php @@ -11,7 +11,6 @@ use Filament\Forms\Components\TextInput; use Filament\Forms\Form; use Filament\Resources\Resource; -use Filament\Tables; use Filament\Tables\Actions\ViewAction; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; @@ -72,16 +71,8 @@ public static function table(Table $table): Table ->label('Balance') ->money(), ]) - ->filters([ - // - ]) ->actions([ ViewAction::make(), - ]) - ->bulkActions([ - // Tables\Actions\BulkActionGroup::make([ - // Tables\Actions\DeleteBulkAction::make(), - // ]), ]); } diff --git a/app/Filament/Admin/Resources/QuoteResource.php b/app/Filament/Admin/Resources/QuoteResource.php index 9764112..2fdc17f 100644 --- a/app/Filament/Admin/Resources/QuoteResource.php +++ b/app/Filament/Admin/Resources/QuoteResource.php @@ -4,16 +4,17 @@ use App\Enums\IconEnum; use App\Models\Customer; -use App\Models\Order; use App\Models\Quote; -use Filament\Forms\Components\RichEditor; +use Filament\Forms\Components\DatePicker; 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\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Icetalker\FilamentTableRepeater\Forms\Components\TableRepeater; class QuoteResource extends Resource { @@ -30,28 +31,87 @@ public static function form(Form $form): Form return $form ->schema([ Section::make([ - Split::make([ - Select::make('customer_id') - ->required() - ->label('Customer') - ->options(Customer::all()->pluck('company_name', 'id')) - ->reactive() - ->searchable(), + Select::make('customer_id') + ->required() + ->label('Customer') + ->options(Customer::all()->pluck('company_name', 'id')) + ->reactive() + ->searchable() + ->columnSpan(1), - Select::make('order_id') - ->label('Order') - ->options(fn ($get): array => Order::where('customer_id', $get('customer_id') ?? null) - ->get() - ->pluck('customer_po', 'id') - ->toArray()) - ->searchable(), + DatePicker::make('date') + ->default(today()) + ->required(), - ])->columnSpan(2), - RichEditor::make('body') + TextArea::make('notes') ->columnSpan(2), - // ->rows(8), - ]), - ])->columns(3); + ]) + ->columns(2), + + TableRepeater::make('embroideryEntries') + ->relationship('embroideryEntries') + ->schema([ + TextInput::make('logo') + ->label('Logo name'), + TextInput::make('placement'), + TextInput::make('quantity') + ->prefix('#'), + TextInput::make('width') + ->suffix('"'), + TextInput::make('height') + ->suffix('"'), + TextInput::make('stitch_count'), + TextInput::make('digitizing_cost') + ->prefix('$'), + TextInput::make('run_charge') + ->prefix('$'), + ]) + ->addActionLabel('Add Embroidery Entry') + ->defaultItems(0), + + TableRepeater::make('screenPrintEntries') + ->relationship('screenPrintEntries') + ->schema([ + TextInput::make('logo') + ->label('Logo name'), + TextInput::make('quantity') + ->prefix('#'), + TextInput::make('width') + ->suffix('"'), + TextInput::make('height') + ->suffix('"'), + TextInput::make('color_amount'), + TextInput::make('color_match') + ->prefix('$'), + TextInput::make('flash') + ->prefix('$'), + TextInput::make('fleece') + ->prefix('$'), + TextInput::make('poly_ink') + ->prefix('$'), + TextInput::make('other_charges') + ->prefix('$'), + ]) + ->addActionLabel('Add Screen Print Entry') + ->defaultItems(0), + + TableRepeater::make('heatTransferEntries') + ->relationship('heatTransferEntries') + ->schema([ + TextInput::make('logo') + ->label('Logo name'), + TextInput::make('quantity') + ->prefix('#'), + TextInput::make('width') + ->suffix('"'), + TextInput::make('height') + ->suffix('"'), + TextInput::make('price') + ->prefix('$'), + ]) + ->addActionLabel('Add Heat Transfer Entry') + ->defaultItems(0), + ])->columns(1); } public static function table(Table $table): Table diff --git a/app/Models/EmbroideryEntry.php b/app/Models/EmbroideryEntry.php new file mode 100644 index 0000000..e2f14ea --- /dev/null +++ b/app/Models/EmbroideryEntry.php @@ -0,0 +1,26 @@ +<?php + +namespace App\Models; + +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; + +class EmbroideryEntry extends Model +{ + protected $fillable = [ + 'quote_id', + 'quantity', + 'logo', + 'width', + 'height', + 'placement', + 'stitch_count', + 'digitizing_cost', + 'run_charge', + ]; + + public function quote(): BelongsTo + { + return $this->belongsTo(Quote::class); + } +} diff --git a/app/Models/HeatTransferEntry.php b/app/Models/HeatTransferEntry.php new file mode 100644 index 0000000..1087cdd --- /dev/null +++ b/app/Models/HeatTransferEntry.php @@ -0,0 +1,23 @@ +<?php + +namespace App\Models; + +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; + +class HeatTransferEntry extends Model +{ + protected $fillable = [ + 'quote_id', + 'quantity', + 'logo', + 'width', + 'height', + 'price', + ]; + + public function quote(): BelongsTo + { + return $this->belongsTo(Quote::class); + } +} diff --git a/app/Models/Quote.php b/app/Models/Quote.php index e86a67f..0c4074a 100644 --- a/app/Models/Quote.php +++ b/app/Models/Quote.php @@ -5,18 +5,35 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\HasMany; class Quote extends Model { use HasFactory; protected $fillable = [ - 'body', - 'order_id', + 'customer_id', + 'date', + 'notes', ]; public function order(): BelongsTo { return $this->belongsTo(Order::class); } + + public function embroideryEntries(): HasMany + { + return $this->hasMany(EmbroideryEntry::class); + } + + public function screenPrintEntries(): HasMany + { + return $this->hasMany(ScreenPrintEntry::class); + } + + public function heatTransferEntries(): HasMany + { + return $this->hasMany(HeatTransferEntry::class); + } } diff --git a/app/Models/ScreenPrintEntry.php b/app/Models/ScreenPrintEntry.php new file mode 100644 index 0000000..c732a56 --- /dev/null +++ b/app/Models/ScreenPrintEntry.php @@ -0,0 +1,32 @@ +<?php + +namespace App\Models; + +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; + +class ScreenPrintEntry extends Model +{ + protected $fillable = [ + 'quote_id', + 'quantity', + 'logo', + 'width', + 'height', + 'color_amount', + 'setup_amount', + 'run_charge', + 'color_change', + 'color_match', + 'flash', + 'fleece', + 'poly_ink', + 'other_charges', + 'notes', + ]; + + public function quote(): BelongsTo + { + return $this->belongsTo(Quote::class); + } +} diff --git a/app/Services/PaymentService.php b/app/Services/PaymentService.php index 195ee36..0392e51 100644 --- a/app/Services/PaymentService.php +++ b/app/Services/PaymentService.php @@ -8,11 +8,10 @@ class PaymentService { public function distributePayments() { - $payments = Payment::where('unapplied_amount', '>', 0)->get(); foreach ($payments as $payment) { - $payment->applyToInvoices(); // Apply remaining amounts to the new invoice + $payment->applyToInvoices(); } } } diff --git a/database/migrations/015_create_quotes_table.php b/database/migrations/015_create_quotes_table.php index ea4193a..d4d59fa 100644 --- a/database/migrations/015_create_quotes_table.php +++ b/database/migrations/015_create_quotes_table.php @@ -14,9 +14,9 @@ public function up(): void Schema::create('quotes', function (Blueprint $table) { $table->id(); - $table->foreignId('order_id')->nullable()->constrained(); - - $table->longText('body')->nullable(); + $table->foreignId('customer_id')->constrained(); + $table->date('date'); + $table->longText('notes')->nullable(); $table->timestamps(); }); diff --git a/database/migrations/020_create_embroidery_entries_table.php b/database/migrations/020_create_embroidery_entries_table.php new file mode 100644 index 0000000..3f39c24 --- /dev/null +++ b/database/migrations/020_create_embroidery_entries_table.php @@ -0,0 +1,40 @@ +<?php + +use Illuminate\Database\Migrations\Migration; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\Schema; + +return new class extends Migration +{ + /** + * Run the migrations. + */ + public function up(): void + { + Schema::create('embroidery_entries', function (Blueprint $table) { + $table->id(); + + $table->foreignId('quote_id')->constrained(); + + $table->integer('quantity')->nullable(); + $table->string('logo')->nullable(); + $table->decimal('width', 6, 2)->nullable(); + $table->decimal('height', 6, 2)->nullable(); + $table->string('placement')->nullable(); + $table->string('stitch_count')->nullable(); + $table->string('digitizing_cost')->nullable(); + $table->string('run_charge')->nullable(); + $table->text('notes')->nullable(); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('embroidery_entries'); + } +}; diff --git a/database/migrations/021_create_screen_print_entries_table.php b/database/migrations/021_create_screen_print_entries_table.php new file mode 100644 index 0000000..4de50a0 --- /dev/null +++ b/database/migrations/021_create_screen_print_entries_table.php @@ -0,0 +1,45 @@ +<?php + +use Illuminate\Database\Migrations\Migration; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\Schema; + +return new class extends Migration +{ + /** + * Run the migrations. + */ + public function up(): void + { + Schema::create('screen_print_entries', function (Blueprint $table) { + $table->id(); + + $table->foreignId('quote_id')->constrained(); + + $table->integer('quantity')->nullable(); + $table->string('logo')->nullable(); + $table->decimal('width', 6, 2)->nullable(); + $table->decimal('height', 6, 2)->nullable(); + $table->integer('color_amount')->nullable(); + $table->integer('setup_amount')->nullable(); + $table->decimal('run_charge', 8, 2)->nullable(); + $table->decimal('color_change', 8, 2)->default(false); + $table->decimal('color_match', 8, 2)->default(false); + $table->decimal('flash', 8, 2)->default(false); + $table->decimal('fleece', 8, 2)->default(false); + $table->decimal('poly_ink', 8, 2)->default(false); + $table->decimal('other_charges', 8, 2)->default(false); + $table->text('notes')->nullable(); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('screen_print_entries'); + } +}; diff --git a/database/migrations/022_create_heat_transfer_entries_table.php b/database/migrations/022_create_heat_transfer_entries_table.php new file mode 100644 index 0000000..d8dd7d6 --- /dev/null +++ b/database/migrations/022_create_heat_transfer_entries_table.php @@ -0,0 +1,36 @@ +<?php + +use Illuminate\Database\Migrations\Migration; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\Schema; + +return new class extends Migration +{ + /** + * Run the migrations. + */ + public function up(): void + { + Schema::create('heat_transfer_entries', function (Blueprint $table) { + $table->id(); + + $table->foreignId('quote_id')->constrained(); + + $table->integer('quantity')->nullable(); + $table->string('logo')->nullable(); + $table->decimal('width', 6, 2)->nullable(); + $table->decimal('height', 6, 2)->nullable(); + $table->decimal('price', 8, 2)->nullable(); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('heat_transfer_entries'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 8bd5966..3c3f748 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -26,7 +26,7 @@ public function run(): void ServiceTypeSeeder::class, ProductServiceSeeder::class, ServiceFileSeeder::class, - QuoteSeeder::class, + // QuoteSeeder::class, InvoiceSeeder::class, InvoiceReportSeeder::class, ]); diff --git a/public/invoice-inv400038.pdf b/public/invoice-inv400038.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e3db11367a46ee4c1094a81e37cae63107d1d296 GIT binary patch literal 50302 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≥u}K`aSq6Y)*s>=BIkD*6!0dx3?hsfFR(w%4+cSCj0**D zqR{(;3JPP&ARr81Lcw56**R1X`kbMdu?tKO!<SG1TnN1_08oTs0~i2}grNrp(2~%` zh5aF(VQ|bf0|QE37;O=lwt^ur_KkB^bIiG%Q;nm|1r9nVbUuInwKoB{RG2a_fFXsh zCxp3H;SkKYhXacSqb*<r3>g%2?}P)jYYaWudFc>s&Hx4#h75t}bA%wq-YEzdMqs=f zaDNcPZwMFw5`{J{0*+}@gfJ96UO+HmLG=Crj(CiH4Frc{*a`%|aH01n1Yk>{zb{zu z58n@9$)K+VFbH~%!1bH`zz_rs-A4c<7{)gW426Kv=K}0P=XCbJ^#|<4=l^NZWSIVi zfP^vL7XpM8`kWy^Ornnq0Z8jH#)ZTG9#?KIcWmq}T<`&?EFBv!i}TO9fVPv98-PT1 n{tp0OK*`b4i3u>|FYqK+w>vIwzdrmB;A;TEXJeDokjMWoHdqoc literal 0 HcmV?d00001 diff --git a/resources/css/app.css b/resources/css/app.css index 4443db6..4318477 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -1,3 +1,3 @@ /*@tailwind base;*/ /*@tailwind components;*/ -/*@tailwind utilities;*/ +/*@tailwind utilities;*/ \ No newline at end of file diff --git a/resources/views/vendor/filament-table-repeater/table-repeater.blade.php b/resources/views/vendor/filament-table-repeater/table-repeater.blade.php index 5e1f198..125147e 100644 --- a/resources/views/vendor/filament-table-repeater/table-repeater.blade.php +++ b/resources/views/vendor/filament-table-repeater/table-repeater.blade.php @@ -37,7 +37,7 @@ {{ $attributes ->merge($getExtraAttributes(), escape: false) - ->class(['bg-white border border-gray-150 rounded-xl relative dark:bg-gray-900 dark:border-gray-700']) + ->class(['bg-white border border-gray-150 rounded-xl relative dark:bg-gray-900 dark:border-gray-800']) }} > @@ -74,14 +74,14 @@ @endif </div> - <div class="px-4{{ $isAddable? '' : ' py-2' }}"> + <div class="px-4{{ $isAddable? '' : ' py-2' }} pb-4"> <table class="it-table-repeater w-full text-left rtl:text-right table-auto mx-4" x-show="! isCollapsed"> <thead> <tr> @foreach($columnLabels as $columnLabel) @if($columnLabel['display']) - <th class="it-table-repeater-cell-label p-2" + <th class="it-table-repeater-cell-label p-2" style="font-weight: 500; font-size: 0.875rem;" @if($colStyles && isset($colStyles[$columnLabel['component']])) style="{{ $colStyles[$columnLabel['component']] }}" @endif diff --git a/tests/Unit/CustomerReportTest.php b/tests/Unit/CustomerReportTest.php index 570766b..2590667 100644 --- a/tests/Unit/CustomerReportTest.php +++ b/tests/Unit/CustomerReportTest.php @@ -1,6 +1,6 @@ <?php -use App\Filament\Admin\Resources\QuoteResource\Pages\ListQuotes; +use App\Filament\Admin\Resources\CustomerReportResource\Pages\ListCustomerReports; use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; @@ -8,12 +8,13 @@ uses(RefreshDatabase::class); -it('can render the list page', function () { +it('can render Customer Report pages', function () { $this->actingAs(User::factory(['is_admin' => true])->create()); - livewire(ListQuotes::class)->assertSuccessful(); + + livewire(ListCustomerReports::class)->assertSuccessful(); }); it('cannot render the list page if user isn\'t an admin', function () { $this->actingAs(User::factory()->create()); - livewire(ListQuotes::class)->assertForbidden(); + livewire(ListCustomerReports::class)->assertForbidden(); }); diff --git a/tests/Unit/CustomerTest.php b/tests/Unit/CustomerTest.php index c5d4375..914987b 100644 --- a/tests/Unit/CustomerTest.php +++ b/tests/Unit/CustomerTest.php @@ -1,5 +1,6 @@ <?php +use App\Filament\Admin\Resources\CustomerResource\Pages\EditCustomer; use App\Filament\Admin\Resources\CustomerResource\Pages\ListCustomers; use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; @@ -8,7 +9,11 @@ uses(RefreshDatabase::class); -it('can render the list page', function () { +it('can render the Customer pages', function () { $this->actingAs(User::factory()->create()); livewire(ListCustomers::class)->assertSuccessful(); + // livewire(ListCustomers::class) + // ->call('create') + // ->assertSuccessful(); + // livewire(EditCustomer::class)->assertSuccessful(); }); diff --git a/tests/Unit/QuoteTest.php b/tests/Unit/QuoteTest.php index 570766b..474d958 100644 --- a/tests/Unit/QuoteTest.php +++ b/tests/Unit/QuoteTest.php @@ -1,6 +1,8 @@ <?php +use App\Filament\Admin\Resources\QuoteResource\Pages\CreateQuote; use App\Filament\Admin\Resources\QuoteResource\Pages\ListQuotes; +use App\Models\Customer; use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; @@ -17,3 +19,117 @@ $this->actingAs(User::factory()->create()); livewire(ListQuotes::class)->assertForbidden(); }); + +it('can create a quote using the form', function () { + $this->actingAs(User::factory(['is_admin' => true])->create()); + + $customer = Customer::factory()->create(); + + $formData = [ + 'customer_id' => $customer->id, + 'date' => today(), + 'notes' => 'Some note', + ]; + + $this->livewire(CreateQuote::class) + ->fillForm($formData) + ->call('create') + ->assertHasNoErrors(); + + $this->assertDatabaseHas('quotes', $formData); +}); + +it('can add an embroidery entry to the quote using the form', function () { + $this->actingAs(User::factory(['is_admin' => true])->create()); + + $customer = Customer::factory()->create(); + + $formData = [ + 'customer_id' => $customer->id, + 'date' => today(), + 'notes' => 'Some note', + + 'embroideryEntries' => [ + [ + 'logo' => 'logo name', + 'placement' => 'Right sleeve', + 'quantity' => 5, + 'width' => 1.5, + 'height' => 2.5, + 'stitch_count' => '3k - 4k', + 'digitizing_cost' => 10.5, + 'run_charge' => 12, + ], + ], + ]; + + $this->livewire(CreateQuote::class) + ->fillForm($formData) + ->call('create') + ->assertHasNoErrors(); + + $this->assertDatabaseHas('embroidery_entries', $formData['embroideryEntries'][0]); +}); + +it('can add a screen printing entry to the quote using the form', function () { + $this->actingAs(User::factory(['is_admin' => true])->create()); + + $customer = Customer::factory()->create(); + + $formData = [ + 'customer_id' => $customer->id, + 'date' => today(), + 'notes' => 'Some note', + + 'screenPrintEntries' => [ + [ + 'logo' => 'logo name', + 'quantity' => 5, + 'width' => 1.5, + 'height' => 2.5, + 'color_amount' => 2, + 'color_match' => 5.10, + 'flash' => 5.20, + 'fleece' => 5.30, + 'poly_ink' => 5.40, + 'other_charges' => 5.50, + ], + ], + ]; + + $this->livewire(CreateQuote::class) + ->fillForm($formData) + ->call('create') + ->assertHasNoErrors(); + + $this->assertDatabaseHas('screen_print_entries', $formData['screenPrintEntries'][0]); +}); + +it('can add a heat transfer entry to the quote using the form', function () { + $this->actingAs(User::factory(['is_admin' => true])->create()); + + $customer = Customer::factory()->create(); + + $formData = [ + 'customer_id' => $customer->id, + 'date' => today(), + 'notes' => 'Some note', + + 'heatTransferEntries' => [ + [ + 'logo' => 'logo name', + 'quantity' => 5, + 'width' => 1.5, + 'height' => 2.5, + 'price' => 2, + ], + ], + ]; + + $this->livewire(CreateQuote::class) + ->fillForm($formData) + ->call('create') + ->assertHasNoErrors(); + + $this->assertDatabaseHas('heat_transfer_entries', $formData['heatTransferEntries'][0]); +});