Andrew Wallo 10 mesi fa
parent
commit
692a4891a5

+ 17
- 0
app/Enums/Common/AddressType.php Vedi File

@@ -0,0 +1,17 @@
1
+<?php
2
+
3
+namespace App\Enums\Common;
4
+
5
+use Filament\Support\Contracts\HasLabel;
6
+
7
+enum AddressType: string implements HasLabel
8
+{
9
+    case General = 'general';
10
+    case Billing = 'billing';
11
+    case Shipping = 'shipping';
12
+
13
+    public function getLabel(): string
14
+    {
15
+        return $this->name;
16
+    }
17
+}

+ 150
- 0
app/Filament/Company/Resources/Common/ClientResource.php Vedi File

@@ -0,0 +1,150 @@
1
+<?php
2
+
3
+namespace App\Filament\Company\Resources\Common;
4
+
5
+use App\Filament\Company\Resources\Common\ClientResource\Pages;
6
+use App\Filament\Forms\Components\CreateCurrencySelect;
7
+use App\Models\Common\Client;
8
+use Filament\Forms;
9
+use Filament\Forms\Form;
10
+use Filament\Resources\Resource;
11
+use Filament\Tables;
12
+use Filament\Tables\Table;
13
+
14
+class ClientResource extends Resource
15
+{
16
+    protected static ?string $model = Client::class;
17
+
18
+    public static function form(Form $form): Form
19
+    {
20
+        return $form
21
+            ->schema([
22
+                Forms\Components\Section::make('General Information')
23
+                    ->schema([
24
+                        Forms\Components\TextInput::make('name')
25
+                            ->label('Client')
26
+                            ->required()
27
+                            ->maxLength(255),
28
+                        CreateCurrencySelect::make('currency_code')
29
+                            ->disabledOn('edit')
30
+                            ->relationship('currency', 'name'),
31
+                        Forms\Components\TextInput::make('account_number')
32
+                            ->maxLength(255),
33
+                        Forms\Components\TextInput::make('website')
34
+                            ->maxLength(255),
35
+                        Forms\Components\Textarea::make('notes')
36
+                            ->columnSpanFull(),
37
+                    ])->columns(),
38
+                Forms\Components\Section::make('Billing')
39
+                    ->relationship('billingAddress')
40
+                    ->schema([
41
+                        Forms\Components\TextInput::make('address_line_1')
42
+                            ->label('Address Line 1')
43
+                            ->required()
44
+                            ->maxLength(255),
45
+                        Forms\Components\TextInput::make('address_line_2')
46
+                            ->label('Address Line 2')
47
+                            ->maxLength(255),
48
+                        Forms\Components\TextInput::make('city')
49
+                            ->label('City')
50
+                            ->required()
51
+                            ->maxLength(255),
52
+                        Forms\Components\TextInput::make('state')
53
+                            ->label('State')
54
+                            ->required()
55
+                            ->maxLength(255),
56
+                        Forms\Components\TextInput::make('postal_code')
57
+                            ->label('Postal Code / Zip Code')
58
+                            ->required()
59
+                            ->maxLength(255),
60
+                        Forms\Components\TextInput::make('country')
61
+                            ->label('Country')
62
+                            ->required()
63
+                            ->maxLength(255),
64
+                    ])->columns(),
65
+                Forms\Components\Section::make('Shipping')
66
+                    ->relationship('shippingAddress')
67
+                    ->schema([
68
+                        Forms\Components\TextInput::make('recipient')
69
+                            ->label('Recipient')
70
+                            ->required()
71
+                            ->maxLength(255),
72
+                        Forms\Components\TextInput::make('address_line_1')
73
+                            ->label('Address Line 1')
74
+                            ->required()
75
+                            ->maxLength(255),
76
+                        Forms\Components\TextInput::make('address_line_2')
77
+                            ->label('Address Line 2')
78
+                            ->maxLength(255),
79
+                        Forms\Components\TextInput::make('city')
80
+                            ->label('City')
81
+                            ->required()
82
+                            ->maxLength(255),
83
+                        Forms\Components\TextInput::make('state')
84
+                            ->label('State')
85
+                            ->required()
86
+                            ->maxLength(255),
87
+                        Forms\Components\TextInput::make('postal_code')
88
+                            ->label('Postal Code / Zip Code')
89
+                            ->required()
90
+                            ->maxLength(255),
91
+                        Forms\Components\TextInput::make('country')
92
+                            ->label('Country')
93
+                            ->required()
94
+                            ->maxLength(255),
95
+                        Forms\Components\TextInput::make('phone')
96
+                            ->label('Phone')
97
+                            ->required()
98
+                            ->maxLength(255),
99
+                        Forms\Components\Textarea::make('notes')
100
+                            ->label('Delivery Instructions')
101
+                            ->maxLength(255),
102
+                    ])->columns(),
103
+            ]);
104
+    }
105
+
106
+    public static function table(Table $table): Table
107
+    {
108
+        return $table
109
+            ->columns([
110
+                Tables\Columns\TextColumn::make('company.name')
111
+                    ->numeric()
112
+                    ->sortable(),
113
+                Tables\Columns\TextColumn::make('name')
114
+                    ->searchable(),
115
+                Tables\Columns\TextColumn::make('currency_code')
116
+                    ->searchable(),
117
+                Tables\Columns\TextColumn::make('account_number')
118
+                    ->searchable(),
119
+                Tables\Columns\TextColumn::make('website')
120
+                    ->searchable(),
121
+            ])
122
+            ->filters([
123
+                //
124
+            ])
125
+            ->actions([
126
+                Tables\Actions\EditAction::make(),
127
+            ])
128
+            ->bulkActions([
129
+                Tables\Actions\BulkActionGroup::make([
130
+                    Tables\Actions\DeleteBulkAction::make(),
131
+                ]),
132
+            ]);
133
+    }
134
+
135
+    public static function getRelations(): array
136
+    {
137
+        return [
138
+            //
139
+        ];
140
+    }
141
+
142
+    public static function getPages(): array
143
+    {
144
+        return [
145
+            'index' => Pages\ListClients::route('/'),
146
+            'create' => Pages\CreateClient::route('/create'),
147
+            'edit' => Pages\EditClient::route('/{record}/edit'),
148
+        ];
149
+    }
150
+}

+ 11
- 0
app/Filament/Company/Resources/Common/ClientResource/Pages/CreateClient.php Vedi File

@@ -0,0 +1,11 @@
1
+<?php
2
+
3
+namespace App\Filament\Company\Resources\Common\ClientResource\Pages;
4
+
5
+use App\Filament\Company\Resources\Common\ClientResource;
6
+use Filament\Resources\Pages\CreateRecord;
7
+
8
+class CreateClient extends CreateRecord
9
+{
10
+    protected static string $resource = ClientResource::class;
11
+}

+ 19
- 0
app/Filament/Company/Resources/Common/ClientResource/Pages/EditClient.php Vedi File

@@ -0,0 +1,19 @@
1
+<?php
2
+
3
+namespace App\Filament\Company\Resources\Common\ClientResource\Pages;
4
+
5
+use App\Filament\Company\Resources\Common\ClientResource;
6
+use Filament\Actions;
7
+use Filament\Resources\Pages\EditRecord;
8
+
9
+class EditClient extends EditRecord
10
+{
11
+    protected static string $resource = ClientResource::class;
12
+
13
+    protected function getHeaderActions(): array
14
+    {
15
+        return [
16
+            Actions\DeleteAction::make(),
17
+        ];
18
+    }
19
+}

+ 19
- 0
app/Filament/Company/Resources/Common/ClientResource/Pages/ListClients.php Vedi File

@@ -0,0 +1,19 @@
1
+<?php
2
+
3
+namespace App\Filament\Company\Resources\Common\ClientResource\Pages;
4
+
5
+use App\Filament\Company\Resources\Common\ClientResource;
6
+use Filament\Actions;
7
+use Filament\Resources\Pages\ListRecords;
8
+
9
+class ListClients extends ListRecords
10
+{
11
+    protected static string $resource = ClientResource::class;
12
+
13
+    protected function getHeaderActions(): array
14
+    {
15
+        return [
16
+            Actions\CreateAction::make(),
17
+        ];
18
+    }
19
+}

+ 4
- 5
app/Filament/Company/Resources/Common/OfferingResource.php Vedi File

@@ -46,7 +46,7 @@ class OfferingResource extends Resource
46 46
                             ->maxLength(255),
47 47
                         Forms\Components\TextInput::make('price')
48 48
                             ->required()
49
-                            ->money(CurrencyAccessor::getDefaultCurrency()),
49
+                            ->money(),
50 50
                         Forms\Components\Textarea::make('description')
51 51
                             ->label('Description')
52 52
                             ->columnSpan(2)
@@ -59,7 +59,6 @@ class OfferingResource extends Resource
59 59
                             ->hiddenLabel()
60 60
                             ->required()
61 61
                             ->live()
62
-                            ->columnSpan(2)
63 62
                             ->bulkToggleable()
64 63
                             ->validationMessages([
65 64
                                 'required' => 'The offering must be either sellable or purchasable.',
@@ -77,7 +76,7 @@ class OfferingResource extends Resource
77 76
                                 ->toArray())
78 77
                             ->searchable()
79 78
                             ->preload()
80
-                            ->required(fn (Forms\Get $get) => in_array('Sellable', $get('attributes') ?? []))
79
+                            ->required()
81 80
                             ->validationMessages([
82 81
                                 'required' => 'The income account is required for sellable offerings.',
83 82
                             ]),
@@ -108,7 +107,7 @@ class OfferingResource extends Resource
108 107
                                 ->toArray())
109 108
                             ->searchable()
110 109
                             ->preload()
111
-                            ->required(fn (Forms\Get $get) => in_array('Purchasable', $get('attributes') ?? []))
110
+                            ->required()
112 111
                             ->validationMessages([
113 112
                                 'required' => 'The expense account is required for purchasable offerings.',
114 113
                             ]),
@@ -162,7 +161,7 @@ class OfferingResource extends Resource
162 161
 
163 162
                         $adjustmentsList = Str::of($adjustments)->limit(40);
164 163
 
165
-                        return "+ $adjustmentsList";
164
+                        return "+ {$adjustmentsList}";
166 165
                     }),
167 166
             ])
168 167
             ->filters([

+ 44
- 0
app/Models/Common/Address.php Vedi File

@@ -0,0 +1,44 @@
1
+<?php
2
+
3
+namespace App\Models\Common;
4
+
5
+use App\Concerns\Blamable;
6
+use App\Concerns\CompanyOwned;
7
+use App\Enums\Common\AddressType;
8
+use Illuminate\Database\Eloquent\Factories\HasFactory;
9
+use Illuminate\Database\Eloquent\Model;
10
+use Illuminate\Database\Eloquent\Relations\MorphTo;
11
+
12
+class Address extends Model
13
+{
14
+    use Blamable;
15
+    use CompanyOwned;
16
+    use HasFactory;
17
+
18
+    protected $table = 'addresses';
19
+
20
+    protected $fillable = [
21
+        'company_id',
22
+        'type',
23
+        'recipient',
24
+        'phone',
25
+        'address_line_1',
26
+        'address_line_2',
27
+        'city',
28
+        'state',
29
+        'postal_code',
30
+        'country',
31
+        'notes',
32
+        'created_by',
33
+        'updated_by',
34
+    ];
35
+
36
+    protected $casts = [
37
+        'type' => AddressType::class,
38
+    ];
39
+
40
+    public function addressable(): MorphTo
41
+    {
42
+        return $this->morphTo();
43
+    }
44
+}

+ 49
- 1
app/Models/Common/Client.php Vedi File

@@ -2,11 +2,59 @@
2 2
 
3 3
 namespace App\Models\Common;
4 4
 
5
+use App\Concerns\Blamable;
6
+use App\Concerns\CompanyOwned;
7
+use App\Enums\Common\AddressType;
8
+use App\Models\Setting\Currency;
5 9
 use Illuminate\Database\Eloquent\Factories\HasFactory;
6 10
 use Illuminate\Database\Eloquent\Model;
11
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
12
+use Illuminate\Database\Eloquent\Relations\MorphMany;
13
+use Illuminate\Database\Eloquent\Relations\MorphOne;
7 14
 
8 15
 class Client extends Model
9 16
 {
10
-    /** @use HasFactory<\Database\Factories\Common\ClientFactory> */
17
+    use Blamable;
18
+    use CompanyOwned;
11 19
     use HasFactory;
20
+
21
+    protected $table = 'clients';
22
+
23
+    protected $fillable = [
24
+        'company_id',
25
+        'name',
26
+        'currency_code',
27
+        'account_number',
28
+        'website',
29
+        'notes',
30
+        'created_by',
31
+        'updated_by',
32
+    ];
33
+
34
+    public function contacts(): MorphMany
35
+    {
36
+        return $this->morphMany(Contact::class, 'contactable');
37
+    }
38
+
39
+    public function currency(): BelongsTo
40
+    {
41
+        return $this->belongsTo(Currency::class, 'currency_code', 'code');
42
+    }
43
+
44
+    public function addresses(): MorphMany
45
+    {
46
+        return $this->morphMany(Address::class, 'addressable');
47
+    }
48
+
49
+    public function billingAddress(): MorphOne
50
+    {
51
+        return $this->morphOne(Address::class, 'addressable')
52
+            ->where('type', AddressType::Billing);
53
+    }
54
+
55
+    public function shippingAddress(): MorphOne
56
+    {
57
+        return $this->morphOne(Address::class, 'addressable')
58
+            ->where('type', AddressType::Shipping);
59
+    }
12 60
 }

+ 7
- 25
app/Models/Common/Contact.php Vedi File

@@ -5,14 +5,11 @@ namespace App\Models\Common;
5 5
 use App\Concerns\Blamable;
6 6
 use App\Concerns\CompanyOwned;
7 7
 use App\Enums\Common\ContactType;
8
-use App\Models\Setting\Currency;
9 8
 use Database\Factories\Common\ContactFactory;
10 9
 use Illuminate\Database\Eloquent\Factories\Factory;
11 10
 use Illuminate\Database\Eloquent\Factories\HasFactory;
12 11
 use Illuminate\Database\Eloquent\Model;
13
-use Illuminate\Database\Eloquent\Relations\BelongsTo;
14
-use Illuminate\Database\Eloquent\Relations\HasOne;
15
-use Wallo\FilamentCompanies\FilamentCompanies;
12
+use Illuminate\Database\Eloquent\Relations\MorphTo;
16 13
 
17 14
 class Contact extends Model
18 15
 {
@@ -25,21 +22,11 @@ class Contact extends Model
25 22
     protected $fillable = [
26 23
         'company_id',
27 24
         'type',
28
-        'name',
25
+        'first_name',
26
+        'last_name',
29 27
         'email',
30
-        'address',
31
-        'city_id',
32
-        'zip_code',
33
-        'state_id',
34
-        'country',
35
-        'timezone',
36
-        'language',
37
-        'contact_method',
38
-        'phone_number',
39
-        'tax_id',
40
-        'currency_code',
41
-        'website',
42
-        'reference',
28
+        'phones',
29
+        'is_primary',
43 30
         'created_by',
44 31
         'updated_by',
45 32
     ];
@@ -48,14 +35,9 @@ class Contact extends Model
48 35
         'type' => ContactType::class,
49 36
     ];
50 37
 
51
-    public function currency(): BelongsTo
38
+    public function contactable(): MorphTo
52 39
     {
53
-        return $this->belongsTo(Currency::class, 'currency_code');
54
-    }
55
-
56
-    public function employeeship(): HasOne
57
-    {
58
-        return $this->hasOne(FilamentCompanies::employeeshipModel(), 'contact_id');
40
+        return $this->morphTo();
59 41
     }
60 42
 
61 43
     protected static function newFactory(): Factory

+ 38
- 1
app/Models/Common/Vendor.php Vedi File

@@ -2,11 +2,48 @@
2 2
 
3 3
 namespace App\Models\Common;
4 4
 
5
+use App\Concerns\Blamable;
6
+use App\Concerns\CompanyOwned;
7
+use App\Models\Setting\Currency;
5 8
 use Illuminate\Database\Eloquent\Factories\HasFactory;
6 9
 use Illuminate\Database\Eloquent\Model;
10
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
11
+use Illuminate\Database\Eloquent\Relations\MorphOne;
7 12
 
8 13
 class Vendor extends Model
9 14
 {
10
-    /** @use HasFactory<\Database\Factories\Common\VendorFactory> */
15
+    use Blamable;
16
+    use CompanyOwned;
11 17
     use HasFactory;
18
+
19
+    protected $table = 'vendors';
20
+
21
+    protected $fillable = [
22
+        'company_id',
23
+        'name',
24
+        'type',
25
+        'contractor_type',
26
+        'ssn',
27
+        'currency_code',
28
+        'account_number',
29
+        'website',
30
+        'notes',
31
+        'created_by',
32
+        'updated_by',
33
+    ];
34
+
35
+    public function currency(): BelongsTo
36
+    {
37
+        return $this->belongsTo(Currency::class, 'currency_code', 'code');
38
+    }
39
+
40
+    public function address(): MorphOne
41
+    {
42
+        return $this->morphOne(Address::class, 'addressable');
43
+    }
44
+
45
+    public function contact(): MorphOne
46
+    {
47
+        return $this->morphOne(Contact::class, 'contactable');
48
+    }
12 49
 }

+ 2
- 2
app/Providers/FilamentCompaniesServiceProvider.php Vedi File

@@ -26,9 +26,9 @@ use App\Filament\Company\Pages\Reports;
26 26
 use App\Filament\Company\Pages\Service\ConnectedAccount;
27 27
 use App\Filament\Company\Pages\Service\LiveCurrency;
28 28
 use App\Filament\Company\Resources\Banking\AccountResource;
29
+use App\Filament\Company\Resources\Common\ClientResource;
29 30
 use App\Filament\Company\Resources\Common\OfferingResource;
30 31
 use App\Filament\Company\Resources\Purchases\BuyableOfferingResource;
31
-use App\Filament\Company\Resources\Sales\SellableOfferingResource;
32 32
 use App\Filament\Components\PanelShiftDropdown;
33 33
 use App\Filament\User\Clusters\Account;
34 34
 use App\Http\Middleware\ConfigureCurrentCompany;
@@ -127,7 +127,7 @@ class FilamentCompaniesServiceProvider extends PanelProvider
127 127
                         NavigationGroup::make('Sales & Payments')
128 128
                             ->label('Sales & Payments')
129 129
                             ->icon('heroicon-o-currency-dollar')
130
-                            ->items(SellableOfferingResource::getNavigationItems()),
130
+                            ->items(ClientResource::getNavigationItems()),
131 131
                         NavigationGroup::make('Purchases')
132 132
                             ->label('Purchases')
133 133
                             ->icon('heroicon-o-shopping-cart')

+ 2
- 0
app/Providers/MacroServiceProvider.php Vedi File

@@ -35,6 +35,8 @@ class MacroServiceProvider extends ServiceProvider
35 35
     public function boot(): void
36 36
     {
37 37
         TextInput::macro('money', function (string | Closure | null $currency = null): static {
38
+            $currency ??= CurrencyAccessor::getDefaultCurrency();
39
+
38 40
             $this->extraAttributes(['wire:key' => Str::random()])
39 41
                 ->prefix(static function (TextInput $component) use ($currency) {
40 42
                     $currency = $component->evaluate($currency);

+ 113
- 189
composer.lock Vedi File

@@ -497,16 +497,16 @@
497 497
         },
498 498
         {
499 499
             "name": "aws/aws-sdk-php",
500
-            "version": "3.328.1",
500
+            "version": "3.328.2",
501 501
             "source": {
502 502
                 "type": "git",
503 503
                 "url": "https://github.com/aws/aws-sdk-php.git",
504
-                "reference": "52d8219935146c3261181de2da4d36bf04c76298"
504
+                "reference": "63a6366a8011dffec3d1ef838c97ca6b6ddb17a2"
505 505
             },
506 506
             "dist": {
507 507
                 "type": "zip",
508
-                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/52d8219935146c3261181de2da4d36bf04c76298",
509
-                "reference": "52d8219935146c3261181de2da4d36bf04c76298",
508
+                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/63a6366a8011dffec3d1ef838c97ca6b6ddb17a2",
509
+                "reference": "63a6366a8011dffec3d1ef838c97ca6b6ddb17a2",
510 510
                 "shasum": ""
511 511
             },
512 512
             "require": {
@@ -589,9 +589,9 @@
589 589
             "support": {
590 590
                 "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
591 591
                 "issues": "https://github.com/aws/aws-sdk-php/issues",
592
-                "source": "https://github.com/aws/aws-sdk-php/tree/3.328.1"
592
+                "source": "https://github.com/aws/aws-sdk-php/tree/3.328.2"
593 593
             },
594
-            "time": "2024-11-18T19:13:28+00:00"
594
+            "time": "2024-11-19T20:28:51+00:00"
595 595
         },
596 596
         {
597 597
             "name": "aws/aws-sdk-php-laravel",
@@ -2982,16 +2982,16 @@
2982 2982
         },
2983 2983
         {
2984 2984
             "name": "laravel/framework",
2985
-            "version": "v11.32.0",
2985
+            "version": "v11.33.2",
2986 2986
             "source": {
2987 2987
                 "type": "git",
2988 2988
                 "url": "https://github.com/laravel/framework.git",
2989
-                "reference": "bc2aad63f83ee5089be7b21cf29d645ccf31e927"
2989
+                "reference": "6b9832751cf8eed18b3c73df5071f78f0682aa5d"
2990 2990
             },
2991 2991
             "dist": {
2992 2992
                 "type": "zip",
2993
-                "url": "https://api.github.com/repos/laravel/framework/zipball/bc2aad63f83ee5089be7b21cf29d645ccf31e927",
2994
-                "reference": "bc2aad63f83ee5089be7b21cf29d645ccf31e927",
2993
+                "url": "https://api.github.com/repos/laravel/framework/zipball/6b9832751cf8eed18b3c73df5071f78f0682aa5d",
2994
+                "reference": "6b9832751cf8eed18b3c73df5071f78f0682aa5d",
2995 2995
                 "shasum": ""
2996 2996
             },
2997 2997
             "require": {
@@ -3011,7 +3011,7 @@
3011 3011
                 "guzzlehttp/guzzle": "^7.8",
3012 3012
                 "guzzlehttp/uri-template": "^1.0",
3013 3013
                 "laravel/prompts": "^0.1.18|^0.2.0|^0.3.0",
3014
-                "laravel/serializable-closure": "^1.3",
3014
+                "laravel/serializable-closure": "^1.3|^2.0",
3015 3015
                 "league/commonmark": "^2.2.1",
3016 3016
                 "league/flysystem": "^3.8.0",
3017 3017
                 "monolog/monolog": "^3.0",
@@ -3094,9 +3094,9 @@
3094 3094
                 "league/flysystem-path-prefixing": "^3.3",
3095 3095
                 "league/flysystem-read-only": "^3.3",
3096 3096
                 "league/flysystem-sftp-v3": "^3.0",
3097
-                "mockery/mockery": "^1.6",
3097
+                "mockery/mockery": "^1.6.10",
3098 3098
                 "nyholm/psr7": "^1.2",
3099
-                "orchestra/testbench-core": "^9.5",
3099
+                "orchestra/testbench-core": "^9.6",
3100 3100
                 "pda/pheanstalk": "^5.0",
3101 3101
                 "phpstan/phpstan": "^1.11.5",
3102 3102
                 "phpunit/phpunit": "^10.5|^11.0",
@@ -3187,7 +3187,7 @@
3187 3187
                 "issues": "https://github.com/laravel/framework/issues",
3188 3188
                 "source": "https://github.com/laravel/framework"
3189 3189
             },
3190
-            "time": "2024-11-15T17:04:33+00:00"
3190
+            "time": "2024-11-19T22:47:13+00:00"
3191 3191
         },
3192 3192
         {
3193 3193
             "name": "laravel/prompts",
@@ -3250,16 +3250,16 @@
3250 3250
         },
3251 3251
         {
3252 3252
             "name": "laravel/sanctum",
3253
-            "version": "v4.0.3",
3253
+            "version": "v4.0.4",
3254 3254
             "source": {
3255 3255
                 "type": "git",
3256 3256
                 "url": "https://github.com/laravel/sanctum.git",
3257
-                "reference": "54aea9d13743ae8a6cdd3c28dbef128a17adecab"
3257
+                "reference": "819782c75aaf2b08da1765503893bd2b8023d3b3"
3258 3258
             },
3259 3259
             "dist": {
3260 3260
                 "type": "zip",
3261
-                "url": "https://api.github.com/repos/laravel/sanctum/zipball/54aea9d13743ae8a6cdd3c28dbef128a17adecab",
3262
-                "reference": "54aea9d13743ae8a6cdd3c28dbef128a17adecab",
3261
+                "url": "https://api.github.com/repos/laravel/sanctum/zipball/819782c75aaf2b08da1765503893bd2b8023d3b3",
3262
+                "reference": "819782c75aaf2b08da1765503893bd2b8023d3b3",
3263 3263
                 "shasum": ""
3264 3264
             },
3265 3265
             "require": {
@@ -3310,36 +3310,36 @@
3310 3310
                 "issues": "https://github.com/laravel/sanctum/issues",
3311 3311
                 "source": "https://github.com/laravel/sanctum"
3312 3312
             },
3313
-            "time": "2024-09-27T14:55:41+00:00"
3313
+            "time": "2024-11-15T14:47:23+00:00"
3314 3314
         },
3315 3315
         {
3316 3316
             "name": "laravel/serializable-closure",
3317
-            "version": "v1.3.6",
3317
+            "version": "v2.0.0",
3318 3318
             "source": {
3319 3319
                 "type": "git",
3320 3320
                 "url": "https://github.com/laravel/serializable-closure.git",
3321
-                "reference": "f865a58ea3a0107c336b7045104c75243fa59d96"
3321
+                "reference": "0d8d3d8086984996df86596a86dea60398093a81"
3322 3322
             },
3323 3323
             "dist": {
3324 3324
                 "type": "zip",
3325
-                "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f865a58ea3a0107c336b7045104c75243fa59d96",
3326
-                "reference": "f865a58ea3a0107c336b7045104c75243fa59d96",
3325
+                "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/0d8d3d8086984996df86596a86dea60398093a81",
3326
+                "reference": "0d8d3d8086984996df86596a86dea60398093a81",
3327 3327
                 "shasum": ""
3328 3328
             },
3329 3329
             "require": {
3330
-                "php": "^7.3|^8.0"
3330
+                "php": "^8.1"
3331 3331
             },
3332 3332
             "require-dev": {
3333
-                "illuminate/support": "^8.0|^9.0|^10.0|^11.0",
3334
-                "nesbot/carbon": "^2.61|^3.0",
3335
-                "pestphp/pest": "^1.21.3",
3336
-                "phpstan/phpstan": "^1.8.2",
3337
-                "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0"
3333
+                "illuminate/support": "^10.0|^11.0",
3334
+                "nesbot/carbon": "^2.67|^3.0",
3335
+                "pestphp/pest": "^2.36",
3336
+                "phpstan/phpstan": "^2.0",
3337
+                "symfony/var-dumper": "^6.2.0|^7.0.0"
3338 3338
             },
3339 3339
             "type": "library",
3340 3340
             "extra": {
3341 3341
                 "branch-alias": {
3342
-                    "dev-master": "1.x-dev"
3342
+                    "dev-master": "2.x-dev"
3343 3343
                 }
3344 3344
             },
3345 3345
             "autoload": {
@@ -3371,7 +3371,7 @@
3371 3371
                 "issues": "https://github.com/laravel/serializable-closure/issues",
3372 3372
                 "source": "https://github.com/laravel/serializable-closure"
3373 3373
             },
3374
-            "time": "2024-11-11T17:06:04+00:00"
3374
+            "time": "2024-11-19T01:38:44+00:00"
3375 3375
         },
3376 3376
         {
3377 3377
             "name": "laravel/socialite",
@@ -10507,134 +10507,6 @@
10507 10507
             },
10508 10508
             "time": "2022-02-21T01:04:05+00:00"
10509 10509
         },
10510
-        {
10511
-            "name": "php-di/invoker",
10512
-            "version": "2.3.4",
10513
-            "source": {
10514
-                "type": "git",
10515
-                "url": "https://github.com/PHP-DI/Invoker.git",
10516
-                "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86"
10517
-            },
10518
-            "dist": {
10519
-                "type": "zip",
10520
-                "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/33234b32dafa8eb69202f950a1fc92055ed76a86",
10521
-                "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86",
10522
-                "shasum": ""
10523
-            },
10524
-            "require": {
10525
-                "php": ">=7.3",
10526
-                "psr/container": "^1.0|^2.0"
10527
-            },
10528
-            "require-dev": {
10529
-                "athletic/athletic": "~0.1.8",
10530
-                "mnapoli/hard-mode": "~0.3.0",
10531
-                "phpunit/phpunit": "^9.0"
10532
-            },
10533
-            "type": "library",
10534
-            "autoload": {
10535
-                "psr-4": {
10536
-                    "Invoker\\": "src/"
10537
-                }
10538
-            },
10539
-            "notification-url": "https://packagist.org/downloads/",
10540
-            "license": [
10541
-                "MIT"
10542
-            ],
10543
-            "description": "Generic and extensible callable invoker",
10544
-            "homepage": "https://github.com/PHP-DI/Invoker",
10545
-            "keywords": [
10546
-                "callable",
10547
-                "dependency",
10548
-                "dependency-injection",
10549
-                "injection",
10550
-                "invoke",
10551
-                "invoker"
10552
-            ],
10553
-            "support": {
10554
-                "issues": "https://github.com/PHP-DI/Invoker/issues",
10555
-                "source": "https://github.com/PHP-DI/Invoker/tree/2.3.4"
10556
-            },
10557
-            "funding": [
10558
-                {
10559
-                    "url": "https://github.com/mnapoli",
10560
-                    "type": "github"
10561
-                }
10562
-            ],
10563
-            "time": "2023-09-08T09:24:21+00:00"
10564
-        },
10565
-        {
10566
-            "name": "php-di/php-di",
10567
-            "version": "7.0.7",
10568
-            "source": {
10569
-                "type": "git",
10570
-                "url": "https://github.com/PHP-DI/PHP-DI.git",
10571
-                "reference": "e87435e3c0e8f22977adc5af0d5cdcc467e15cf1"
10572
-            },
10573
-            "dist": {
10574
-                "type": "zip",
10575
-                "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/e87435e3c0e8f22977adc5af0d5cdcc467e15cf1",
10576
-                "reference": "e87435e3c0e8f22977adc5af0d5cdcc467e15cf1",
10577
-                "shasum": ""
10578
-            },
10579
-            "require": {
10580
-                "laravel/serializable-closure": "^1.0",
10581
-                "php": ">=8.0",
10582
-                "php-di/invoker": "^2.0",
10583
-                "psr/container": "^1.1 || ^2.0"
10584
-            },
10585
-            "provide": {
10586
-                "psr/container-implementation": "^1.0"
10587
-            },
10588
-            "require-dev": {
10589
-                "friendsofphp/php-cs-fixer": "^3",
10590
-                "friendsofphp/proxy-manager-lts": "^1",
10591
-                "mnapoli/phpunit-easymock": "^1.3",
10592
-                "phpunit/phpunit": "^9.5",
10593
-                "vimeo/psalm": "^4.6"
10594
-            },
10595
-            "suggest": {
10596
-                "friendsofphp/proxy-manager-lts": "Install it if you want to use lazy injection (version ^1)"
10597
-            },
10598
-            "type": "library",
10599
-            "autoload": {
10600
-                "files": [
10601
-                    "src/functions.php"
10602
-                ],
10603
-                "psr-4": {
10604
-                    "DI\\": "src/"
10605
-                }
10606
-            },
10607
-            "notification-url": "https://packagist.org/downloads/",
10608
-            "license": [
10609
-                "MIT"
10610
-            ],
10611
-            "description": "The dependency injection container for humans",
10612
-            "homepage": "https://php-di.org/",
10613
-            "keywords": [
10614
-                "PSR-11",
10615
-                "container",
10616
-                "container-interop",
10617
-                "dependency injection",
10618
-                "di",
10619
-                "ioc",
10620
-                "psr11"
10621
-            ],
10622
-            "support": {
10623
-                "issues": "https://github.com/PHP-DI/PHP-DI/issues",
10624
-                "source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.7"
10625
-            },
10626
-            "funding": [
10627
-                {
10628
-                    "url": "https://github.com/mnapoli",
10629
-                    "type": "github"
10630
-                },
10631
-                {
10632
-                    "url": "https://tidelift.com/funding/github/packagist/php-di/php-di",
10633
-                    "type": "tidelift"
10634
-                }
10635
-            ],
10636
-            "time": "2024-07-21T15:55:45+00:00"
10637
-        },
10638 10510
         {
10639 10511
             "name": "phpdocumentor/reflection-common",
10640 10512
             "version": "2.2.0",
@@ -11338,6 +11210,59 @@
11338 11210
             ],
11339 11211
             "time": "2024-10-28T13:07:50+00:00"
11340 11212
         },
11213
+        {
11214
+            "name": "pimple/pimple",
11215
+            "version": "v3.5.0",
11216
+            "source": {
11217
+                "type": "git",
11218
+                "url": "https://github.com/silexphp/Pimple.git",
11219
+                "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed"
11220
+            },
11221
+            "dist": {
11222
+                "type": "zip",
11223
+                "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed",
11224
+                "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed",
11225
+                "shasum": ""
11226
+            },
11227
+            "require": {
11228
+                "php": ">=7.2.5",
11229
+                "psr/container": "^1.1 || ^2.0"
11230
+            },
11231
+            "require-dev": {
11232
+                "symfony/phpunit-bridge": "^5.4@dev"
11233
+            },
11234
+            "type": "library",
11235
+            "extra": {
11236
+                "branch-alias": {
11237
+                    "dev-master": "3.4.x-dev"
11238
+                }
11239
+            },
11240
+            "autoload": {
11241
+                "psr-0": {
11242
+                    "Pimple": "src/"
11243
+                }
11244
+            },
11245
+            "notification-url": "https://packagist.org/downloads/",
11246
+            "license": [
11247
+                "MIT"
11248
+            ],
11249
+            "authors": [
11250
+                {
11251
+                    "name": "Fabien Potencier",
11252
+                    "email": "fabien@symfony.com"
11253
+                }
11254
+            ],
11255
+            "description": "Pimple, a simple Dependency Injection Container",
11256
+            "homepage": "https://pimple.symfony.com",
11257
+            "keywords": [
11258
+                "container",
11259
+                "dependency injection"
11260
+            ],
11261
+            "support": {
11262
+                "source": "https://github.com/silexphp/Pimple/tree/v3.5.0"
11263
+            },
11264
+            "time": "2021-10-28T11:13:42+00:00"
11265
+        },
11341 11266
         {
11342 11267
             "name": "rector/rector",
11343 11268
             "version": "1.2.10",
@@ -13246,31 +13171,30 @@
13246 13171
         },
13247 13172
         {
13248 13173
             "name": "zbateson/mail-mime-parser",
13249
-            "version": "3.0.3",
13174
+            "version": "2.4.1",
13250 13175
             "source": {
13251 13176
                 "type": "git",
13252 13177
                 "url": "https://github.com/zbateson/mail-mime-parser.git",
13253
-                "reference": "e0d4423fe27850c9dd301190767dbc421acc2f19"
13178
+                "reference": "ff49e02f6489b38f7cc3d1bd3971adc0f872569c"
13254 13179
             },
13255 13180
             "dist": {
13256 13181
                 "type": "zip",
13257
-                "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/e0d4423fe27850c9dd301190767dbc421acc2f19",
13258
-                "reference": "e0d4423fe27850c9dd301190767dbc421acc2f19",
13182
+                "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/ff49e02f6489b38f7cc3d1bd3971adc0f872569c",
13183
+                "reference": "ff49e02f6489b38f7cc3d1bd3971adc0f872569c",
13259 13184
                 "shasum": ""
13260 13185
             },
13261 13186
             "require": {
13262
-                "guzzlehttp/psr7": "^2.5",
13263
-                "php": ">=8.0",
13264
-                "php-di/php-di": "^6.0|^7.0",
13265
-                "psr/log": "^1|^2|^3",
13266
-                "zbateson/mb-wrapper": "^2.0",
13267
-                "zbateson/stream-decorators": "^2.1"
13187
+                "guzzlehttp/psr7": "^1.7.0|^2.0",
13188
+                "php": ">=7.1",
13189
+                "pimple/pimple": "^3.0",
13190
+                "zbateson/mb-wrapper": "^1.0.1",
13191
+                "zbateson/stream-decorators": "^1.0.6"
13268 13192
             },
13269 13193
             "require-dev": {
13270 13194
                 "friendsofphp/php-cs-fixer": "*",
13271
-                "monolog/monolog": "^2|^3",
13195
+                "mikey179/vfsstream": "^1.6.0",
13272 13196
                 "phpstan/phpstan": "*",
13273
-                "phpunit/phpunit": "^9.6"
13197
+                "phpunit/phpunit": "<10"
13274 13198
             },
13275 13199
             "suggest": {
13276 13200
                 "ext-iconv": "For best support/performance",
@@ -13318,24 +13242,24 @@
13318 13242
                     "type": "github"
13319 13243
                 }
13320 13244
             ],
13321
-            "time": "2024-08-10T18:44:09+00:00"
13245
+            "time": "2024-04-28T00:58:54+00:00"
13322 13246
         },
13323 13247
         {
13324 13248
             "name": "zbateson/mb-wrapper",
13325
-            "version": "2.0.0",
13249
+            "version": "1.2.1",
13326 13250
             "source": {
13327 13251
                 "type": "git",
13328 13252
                 "url": "https://github.com/zbateson/mb-wrapper.git",
13329
-                "reference": "9e4373a153585d12b6c621ac4a6bb143264d4619"
13253
+                "reference": "09a8b77eb94af3823a9a6623dcc94f8d988da67f"
13330 13254
             },
13331 13255
             "dist": {
13332 13256
                 "type": "zip",
13333
-                "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/9e4373a153585d12b6c621ac4a6bb143264d4619",
13334
-                "reference": "9e4373a153585d12b6c621ac4a6bb143264d4619",
13257
+                "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/09a8b77eb94af3823a9a6623dcc94f8d988da67f",
13258
+                "reference": "09a8b77eb94af3823a9a6623dcc94f8d988da67f",
13335 13259
                 "shasum": ""
13336 13260
             },
13337 13261
             "require": {
13338
-                "php": ">=8.0",
13262
+                "php": ">=7.1",
13339 13263
                 "symfony/polyfill-iconv": "^1.9",
13340 13264
                 "symfony/polyfill-mbstring": "^1.9"
13341 13265
             },
@@ -13379,7 +13303,7 @@
13379 13303
             ],
13380 13304
             "support": {
13381 13305
                 "issues": "https://github.com/zbateson/mb-wrapper/issues",
13382
-                "source": "https://github.com/zbateson/mb-wrapper/tree/2.0.0"
13306
+                "source": "https://github.com/zbateson/mb-wrapper/tree/1.2.1"
13383 13307
             },
13384 13308
             "funding": [
13385 13309
                 {
@@ -13387,31 +13311,31 @@
13387 13311
                     "type": "github"
13388 13312
                 }
13389 13313
             ],
13390
-            "time": "2024-03-20T01:38:07+00:00"
13314
+            "time": "2024-03-18T04:31:04+00:00"
13391 13315
         },
13392 13316
         {
13393 13317
             "name": "zbateson/stream-decorators",
13394
-            "version": "2.1.1",
13318
+            "version": "1.2.1",
13395 13319
             "source": {
13396 13320
                 "type": "git",
13397 13321
                 "url": "https://github.com/zbateson/stream-decorators.git",
13398
-                "reference": "32a2a62fb0f26313395c996ebd658d33c3f9c4e5"
13322
+                "reference": "783b034024fda8eafa19675fb2552f8654d3a3e9"
13399 13323
             },
13400 13324
             "dist": {
13401 13325
                 "type": "zip",
13402
-                "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/32a2a62fb0f26313395c996ebd658d33c3f9c4e5",
13403
-                "reference": "32a2a62fb0f26313395c996ebd658d33c3f9c4e5",
13326
+                "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/783b034024fda8eafa19675fb2552f8654d3a3e9",
13327
+                "reference": "783b034024fda8eafa19675fb2552f8654d3a3e9",
13404 13328
                 "shasum": ""
13405 13329
             },
13406 13330
             "require": {
13407
-                "guzzlehttp/psr7": "^2.5",
13408
-                "php": ">=8.0",
13409
-                "zbateson/mb-wrapper": "^2.0"
13331
+                "guzzlehttp/psr7": "^1.9 | ^2.0",
13332
+                "php": ">=7.2",
13333
+                "zbateson/mb-wrapper": "^1.0.0"
13410 13334
             },
13411 13335
             "require-dev": {
13412 13336
                 "friendsofphp/php-cs-fixer": "*",
13413 13337
                 "phpstan/phpstan": "*",
13414
-                "phpunit/phpunit": "^9.6|^10.0"
13338
+                "phpunit/phpunit": "<10.0"
13415 13339
             },
13416 13340
             "type": "library",
13417 13341
             "autoload": {
@@ -13442,7 +13366,7 @@
13442 13366
             ],
13443 13367
             "support": {
13444 13368
                 "issues": "https://github.com/zbateson/stream-decorators/issues",
13445
-                "source": "https://github.com/zbateson/stream-decorators/tree/2.1.1"
13369
+                "source": "https://github.com/zbateson/stream-decorators/tree/1.2.1"
13446 13370
             },
13447 13371
             "funding": [
13448 13372
                 {
@@ -13450,7 +13374,7 @@
13450 13374
                     "type": "github"
13451 13375
                 }
13452 13376
             ],
13453
-            "time": "2024-04-29T21:42:39+00:00"
13377
+            "time": "2023-05-30T22:51:52+00:00"
13454 13378
         }
13455 13379
     ],
13456 13380
     "aliases": [],

+ 23
- 0
database/factories/Common/AddressFactory.php Vedi File

@@ -0,0 +1,23 @@
1
+<?php
2
+
3
+namespace Database\Factories\Common;
4
+
5
+use Illuminate\Database\Eloquent\Factories\Factory;
6
+
7
+/**
8
+ * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Common\Address>
9
+ */
10
+class AddressFactory extends Factory
11
+{
12
+    /**
13
+     * Define the model's default state.
14
+     *
15
+     * @return array<string, mixed>
16
+     */
17
+    public function definition(): array
18
+    {
19
+        return [
20
+            //
21
+        ];
22
+    }
23
+}

+ 6
- 23
database/migrations/2023_09_19_050544_create_contacts_table.php Vedi File

@@ -15,32 +15,15 @@ return new class extends Migration
15 15
             $table->id();
16 16
             $table->foreignId('company_id')->constrained()->cascadeOnDelete();
17 17
             $table->string('type')->nullable();
18
-            $table->string('name');
19
-            $table->string('email');
20
-            $table->string('address', 255)->nullable();
21
-            $table->unsignedMediumInteger('city_id')->nullable()->index();
22
-            $table->string('zip_code', 20)->nullable();
23
-            $table->unsignedSmallInteger('state_id')->nullable()->index();
24
-            $table->string('country')->nullable();
25
-            $table->string('timezone')->nullable();
26
-            $table->string('language')->nullable();
27
-            $table->string('contact_method')->nullable();
28
-            $table->string('phone_number', 30)->nullable();
29
-            $table->string('tax_id', 50)->nullable();
30
-            $table->string('currency_code', 10);
31
-            $table->string('website', 255)->nullable();
32
-            $table->string('reference', 255)->nullable();
18
+            $table->string('first_name');
19
+            $table->string('last_name')->nullable();
20
+            $table->string('email')->nullable();
21
+            $table->json('phones')->nullable();
22
+            $table->boolean('is_primary')->default(false);
23
+            $table->morphs('contactable');
33 24
             $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();
34 25
             $table->foreignId('updated_by')->nullable()->constrained('users')->nullOnDelete();
35 26
             $table->timestamps();
36
-
37
-            $table->index(['company_id', 'type']);
38
-            $table->unique(['company_id', 'type', 'email']);
39
-
40
-            $table->foreign(['company_id', 'currency_code'])
41
-                ->references(['company_id', 'code'])
42
-                ->on('currencies')
43
-                ->restrictOnDelete();
44 27
         });
45 28
     }
46 29
 

+ 8
- 0
database/migrations/2024_11_13_214358_create_clients_table.php Vedi File

@@ -13,6 +13,14 @@ return new class extends Migration
13 13
     {
14 14
         Schema::create('clients', function (Blueprint $table) {
15 15
             $table->id();
16
+            $table->foreignId('company_id')->constrained()->cascadeOnDelete();
17
+            $table->string('name');
18
+            $table->string('currency_code')->nullable();
19
+            $table->string('account_number')->nullable();
20
+            $table->string('website')->nullable();
21
+            $table->text('notes')->nullable();
22
+            $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();
23
+            $table->foreignId('updated_by')->nullable()->constrained('users')->nullOnDelete();
16 24
             $table->timestamps();
17 25
         });
18 26
     }

+ 11
- 0
database/migrations/2024_11_13_214406_create_vendors_table.php Vedi File

@@ -13,6 +13,17 @@ return new class extends Migration
13 13
     {
14 14
         Schema::create('vendors', function (Blueprint $table) {
15 15
             $table->id();
16
+            $table->foreignId('company_id')->constrained()->cascadeOnDelete();
17
+            $table->string('name');
18
+            $table->string('type');
19
+            $table->string('contractor_type')->nullable();
20
+            $table->string('ssn')->nullable();
21
+            $table->string('currency_code')->nullable();
22
+            $table->string('account_number')->nullable();
23
+            $table->string('website')->nullable();
24
+            $table->text('notes')->nullable();
25
+            $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();
26
+            $table->foreignId('updated_by')->nullable()->constrained('users')->nullOnDelete();
16 27
             $table->timestamps();
17 28
         });
18 29
     }

+ 41
- 0
database/migrations/2024_11_19_225812_create_addresses_table.php Vedi File

@@ -0,0 +1,41 @@
1
+<?php
2
+
3
+use Illuminate\Database\Migrations\Migration;
4
+use Illuminate\Database\Schema\Blueprint;
5
+use Illuminate\Support\Facades\Schema;
6
+
7
+return new class extends Migration
8
+{
9
+    /**
10
+     * Run the migrations.
11
+     */
12
+    public function up(): void
13
+    {
14
+        Schema::create('addresses', function (Blueprint $table) {
15
+            $table->id();
16
+            $table->foreignId('company_id')->constrained()->cascadeOnDelete();
17
+            $table->morphs('addressable');
18
+            $table->string('type'); // billing, shipping, etc.
19
+            $table->string('recipient')->nullable();
20
+            $table->string('phone')->nullable();
21
+            $table->string('address_line_1');
22
+            $table->string('address_line_2')->nullable();
23
+            $table->string('city');
24
+            $table->string('state')->nullable();
25
+            $table->string('postal_code')->nullable();
26
+            $table->string('country')->nullable();
27
+            $table->text('notes')->nullable();
28
+            $table->foreignId('created_by')->nullable()->constrained('users')->nullOnDelete();
29
+            $table->foreignId('updated_by')->nullable()->constrained('users')->nullOnDelete();
30
+            $table->timestamps();
31
+        });
32
+    }
33
+
34
+    /**
35
+     * Reverse the migrations.
36
+     */
37
+    public function down(): void
38
+    {
39
+        Schema::dropIfExists('addresses');
40
+    }
41
+};

+ 3
- 3
package-lock.json Vedi File

@@ -2765,9 +2765,9 @@
2765 2765
             }
2766 2766
         },
2767 2767
         "node_modules/yaml": {
2768
-            "version": "2.6.0",
2769
-            "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz",
2770
-            "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==",
2768
+            "version": "2.6.1",
2769
+            "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz",
2770
+            "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==",
2771 2771
             "dev": true,
2772 2772
             "license": "ISC",
2773 2773
             "bin": {

+ 4
- 1
resources/data/lang/en.json Vedi File

@@ -199,5 +199,8 @@
199 199
     "Sellable Configuration": "Sellable Configuration",
200 200
     "Purchasable Configuration": "Purchasable Configuration",
201 201
     "Sale Information": "Sale Information",
202
-    "Purchase Information": "Purchase Information"
202
+    "Purchase Information": "Purchase Information",
203
+    "Billing": "Billing",
204
+    "Shipping": "Shipping",
205
+    "General Information": "General Information"
203 206
 }

Loading…
Annulla
Salva