Create invoice form part 1.

This commit is contained in:
Peter Papp
2021-04-30 17:53:19 +02:00
parent 5167ae520e
commit 3c3e82758d
51 changed files with 1890 additions and 763 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+144 -153
View File
@@ -392,38 +392,37 @@ class SetupDevEnvironment extends Command
'mimetype' => 'pdf',
],
[
'name' => 'Project Notes',
'name' => 'Project Notes',
'basename' => 'Project Notes.pdf',
'mimetype' => 'pdf',
],
[
'name' => 'Personal Savings',
'name' => 'Personal Savings',
'basename' => 'School Report.pages',
'mimetype' => 'pages',
],
[
'name' => 'License',
'name' => 'License',
'basename' => 'Stories of the Night Skies.pages',
'mimetype' => 'pages',
],
])
->each(function ($file) use ($user, $documents) {
$basename = Str::random(12) . '-' . $file['basename'];
// Copy file into app storage
Storage::putFileAs("files/$user->id", storage_path("demo/documents/{$file['basename']}"), $basename, "private");
Storage::putFileAs("files/$user->id", storage_path("demo/documents/{$file['basename']}"), $basename, 'private');
// Create file record
File::create([
'folder_id' => $documents->id,
'user_id' => $user->id,
'name' => $file['name'],
'basename' => $basename,
'type' => 'file',
'author' => 'user',
'mimetype' => $file['mimetype'],
'filesize' => rand(1000000, 4000000),
'folder_id' => $documents->id,
'user_id' => $user->id,
'name' => $file['name'],
'basename' => $basename,
'type' => 'file',
'author' => 'user',
'mimetype' => $file['mimetype'],
'filesize' => rand(1000000, 4000000),
'created_at' => now()->subMinutes(rand(1, 5)),
]);
});
@@ -431,33 +430,32 @@ class SetupDevEnvironment extends Command
// Get documents to shared folder
collect([
[
'name' => 'Home plan',
'name' => 'Home plan',
'basename' => 'Licence.pdf',
'mimetype' => 'pdf',
],
[
'name' => 'Software Licence',
'name' => 'Software Licence',
'basename' => 'Project Notes.pdf',
'mimetype' => 'pdf',
]
],
])
->each(function ($file) use ($user, $shared_folder) {
$basename = Str::random(12) . '-' . $file['basename'];
// Copy file into app storage
Storage::putFileAs("files/$user->id", storage_path("demo/documents/{$file['basename']}"), $basename, "private");
Storage::putFileAs("files/$user->id", storage_path("demo/documents/{$file['basename']}"), $basename, 'private');
// Create file record
File::create([
'folder_id' => $shared_folder->id,
'user_id' => $user->id,
'name' => $file['name'],
'basename' => $basename,
'type' => 'file',
'author' => 'user',
'mimetype' => $file['mimetype'],
'filesize' => rand(1000000, 4000000),
'folder_id' => $shared_folder->id,
'user_id' => $user->id,
'name' => $file['name'],
'basename' => $basename,
'type' => 'file',
'author' => 'user',
'mimetype' => $file['mimetype'],
'filesize' => rand(1000000, 4000000),
'created_at' => now()->subMinutes(rand(1, 5)),
]);
});
@@ -465,58 +463,57 @@ class SetupDevEnvironment extends Command
// Get documents to peter's files folder
collect([
[
'name' => 'Project Backup',
'name' => 'Project Backup',
'basename' => 'Licence.pdf',
'mimetype' => 'pdf',
],
[
'name' => 'Yearly report',
'name' => 'Yearly report',
'basename' => 'Project Notes.pdf',
'mimetype' => 'pdf',
],
[
'name' => 'Work Update',
'name' => 'Work Update',
'basename' => 'School Report.pages',
'mimetype' => 'pages',
],
[
'name' => 'Person Writing on Notebook',
'name' => 'Person Writing on Notebook',
'basename' => 'Stories of the Night Skies.pages',
'mimetype' => 'pages',
],
[
'name' => 'Blank Business Composition Computer',
'name' => 'Blank Business Composition Computer',
'basename' => 'Licence.pdf',
'mimetype' => 'pdf',
],
[
'name' => '2020 April - Export',
'name' => '2020 April - Export',
'basename' => 'Project Notes.pdf',
'mimetype' => 'pdf',
],
[
'name' => 'Ballpen Blur Close Up Computer',
'name' => 'Ballpen Blur Close Up Computer',
'basename' => 'School Report.pages',
'mimetype' => 'pages',
],
])
->each(function ($file) use ($user, $peters_files) {
$basename = Str::random(12) . '-' . $file['basename'];
// Copy file into app storage
Storage::putFileAs("files/$user->id", storage_path("demo/documents/{$file['basename']}"), $basename, "private");
Storage::putFileAs("files/$user->id", storage_path("demo/documents/{$file['basename']}"), $basename, 'private');
// Create file record
File::create([
'folder_id' => $peters_files->id,
'user_id' => $user->id,
'name' => $file['name'],
'basename' => $basename,
'type' => 'file',
'author' => 'visitor',
'mimetype' => $file['mimetype'],
'filesize' => rand(1000000, 4000000),
'folder_id' => $peters_files->id,
'user_id' => $user->id,
'name' => $file['name'],
'basename' => $basename,
'type' => 'file',
'author' => 'visitor',
'mimetype' => $file['mimetype'],
'filesize' => rand(1000000, 4000000),
'created_at' => now()->subMinutes(rand(1, 5)),
]);
});
@@ -529,22 +526,21 @@ class SetupDevEnvironment extends Command
'Sphere Bound 3D Titles.mp4',
])
->each(function ($file) use ($user, $videohive) {
$basename = Str::random(12) . '-' . $file;
// Copy file into app storage
Storage::putFileAs("files/$user->id", storage_path("demo/video/$file"), $basename, "private");
Storage::putFileAs("files/$user->id", storage_path("demo/video/$file"), $basename, 'private');
// Create file record
File::create([
'folder_id' => $videohive->id,
'user_id' => $user->id,
'name' => $file,
'basename' => $basename,
'type' => 'video',
'author' => 'user',
'mimetype' => 'mp4',
'filesize' => rand(1000000, 4000000),
'folder_id' => $videohive->id,
'user_id' => $user->id,
'name' => $file,
'basename' => $basename,
'type' => 'video',
'author' => 'user',
'mimetype' => 'mp4',
'filesize' => rand(1000000, 4000000),
'created_at' => now()->subMinutes(rand(1, 5)),
]);
});
@@ -554,22 +550,21 @@ class SetupDevEnvironment extends Command
'Apple Watch App Video Promotion.mp4',
])
->each(function ($file) use ($user, $video) {
$basename = Str::random(12) . '-' . $file;
// Copy file into app storage
Storage::putFileAs("files/$user->id", storage_path("demo/video/$file"), $basename, "private");
Storage::putFileAs("files/$user->id", storage_path("demo/video/$file"), $basename, 'private');
// Create file record
File::create([
'folder_id' => $video->id,
'user_id' => $user->id,
'name' => $file,
'basename' => $basename,
'type' => 'video',
'author' => 'user',
'mimetype' => 'mp4',
'filesize' => rand(1000000, 4000000),
'folder_id' => $video->id,
'user_id' => $user->id,
'name' => $file,
'basename' => $basename,
'type' => 'video',
'author' => 'user',
'mimetype' => 'mp4',
'filesize' => rand(1000000, 4000000),
'created_at' => now()->subMinutes(rand(1, 5)),
]);
});
@@ -579,22 +574,21 @@ class SetupDevEnvironment extends Command
'D-Block & S-te-Fan - Bla Bla.mp3',
])
->each(function ($file) use ($user, $audio) {
$basename = Str::random(12) . '-' . $file;
// Copy file into app storage
Storage::putFileAs("files/$user->id", storage_path("demo/audio/$file"), $basename, "private");
Storage::putFileAs("files/$user->id", storage_path("demo/audio/$file"), $basename, 'private');
// Create file record
File::create([
'folder_id' => $audio->id,
'user_id' => $user->id,
'name' => $file,
'basename' => $basename,
'type' => 'audio',
'author' => 'user',
'mimetype' => 'mp3',
'filesize' => rand(1000000, 4000000),
'folder_id' => $audio->id,
'user_id' => $user->id,
'name' => $file,
'basename' => $basename,
'type' => 'audio',
'author' => 'user',
'mimetype' => 'mp3',
'filesize' => rand(1000000, 4000000),
'created_at' => now()->subMinutes(rand(1, 5)),
]);
});
@@ -615,24 +609,23 @@ class SetupDevEnvironment extends Command
'You Are My Sunshine.jpg',
])
->each(function ($file) use ($user, $apartments) {
$basename = Str::random(12) . '-' . $file;
// Copy file into app storage
Storage::putFileAs("files/$user->id", storage_path("demo/images/memes/$file"), $basename, "private");
Storage::putFileAs("files/$user->id", storage_path("demo/images/memes/thumbnail-$file"), "thumbnail-$basename", "private");
Storage::putFileAs("files/$user->id", storage_path("demo/images/memes/$file"), $basename, 'private');
Storage::putFileAs("files/$user->id", storage_path("demo/images/memes/thumbnail-$file"), "thumbnail-$basename", 'private');
// Create file record
File::create([
'folder_id' => null,
'user_id' => $user->id,
'name' => $file,
'basename' => $basename,
'type' => 'image',
'author' => 'user',
'mimetype' => 'jpg',
'filesize' => rand(1000000, 4000000),
'thumbnail' => "thumbnail-$basename",
'folder_id' => null,
'user_id' => $user->id,
'name' => $file,
'basename' => $basename,
'type' => 'image',
'author' => 'user',
'mimetype' => 'jpg',
'filesize' => rand(1000000, 4000000),
'thumbnail' => "thumbnail-$basename",
'created_at' => now()->subMinutes(rand(1, 5)),
]);
});
@@ -648,24 +641,23 @@ class SetupDevEnvironment extends Command
'Kitchen Island.jpg',
])
->each(function ($file) use ($user, $apartments) {
$basename = Str::random(12) . '-' . $file;
// Copy file into app storage
Storage::putFileAs("files/$user->id", storage_path("demo/images/apartments/$file"), $basename, "private");
Storage::putFileAs("files/$user->id", storage_path("demo/images/apartments/thumbnail-$file"), "thumbnail-$basename", "private");
Storage::putFileAs("files/$user->id", storage_path("demo/images/apartments/$file"), $basename, 'private');
Storage::putFileAs("files/$user->id", storage_path("demo/images/apartments/thumbnail-$file"), "thumbnail-$basename", 'private');
// Create file record
File::create([
'folder_id' => $apartments->id,
'user_id' => $user->id,
'name' => $file,
'basename' => $basename,
'type' => 'image',
'author' => 'user',
'mimetype' => 'jpg',
'filesize' => rand(1000000, 4000000),
'thumbnail' => "thumbnail-$basename",
'folder_id' => $apartments->id,
'user_id' => $user->id,
'name' => $file,
'basename' => $basename,
'type' => 'image',
'author' => 'user',
'mimetype' => 'jpg',
'filesize' => rand(1000000, 4000000),
'thumbnail' => "thumbnail-$basename",
'created_at' => now()->subMinutes(rand(1, 5)),
]);
});
@@ -685,24 +677,23 @@ class SetupDevEnvironment extends Command
'Yellow Animal Eyes Fur.jpg',
])
->each(function ($file) use ($user, $nature) {
$basename = Str::random(12) . '-' . $file;
// Copy file into app storage
Storage::putFileAs("files/$user->id", storage_path("demo/images/nature/$file"), $basename, "private");
Storage::putFileAs("files/$user->id", storage_path("demo/images/nature/thumbnail-$file"), "thumbnail-$basename", "private");
Storage::putFileAs("files/$user->id", storage_path("demo/images/nature/$file"), $basename, 'private');
Storage::putFileAs("files/$user->id", storage_path("demo/images/nature/thumbnail-$file"), "thumbnail-$basename", 'private');
// Create file record
File::create([
'folder_id' => $nature->id,
'user_id' => $user->id,
'name' => $file,
'basename' => $basename,
'type' => 'image',
'author' => 'user',
'mimetype' => 'jpg',
'filesize' => rand(1000000, 4000000),
'thumbnail' => "thumbnail-$basename",
'folder_id' => $nature->id,
'user_id' => $user->id,
'name' => $file,
'basename' => $basename,
'type' => 'image',
'author' => 'user',
'mimetype' => 'jpg',
'filesize' => rand(1000000, 4000000),
'thumbnail' => "thumbnail-$basename",
'created_at' => now()->subMinutes(rand(1, 5)),
]);
});
@@ -720,13 +711,13 @@ class SetupDevEnvironment extends Command
$images->each(function ($id) use ($user) {
Share::create([
'user_id' => $user->id,
'item_id' => $id,
'type' => 'file',
'user_id' => $user->id,
'item_id' => $id,
'type' => 'file',
'is_protected' => false,
'permission' => 'editor',
'password' => null,
'expire_in' => null,
'permission' => 'editor',
'password' => null,
'expire_in' => null,
]);
});
@@ -737,13 +728,13 @@ class SetupDevEnvironment extends Command
$files->each(function ($id) use ($user) {
Share::create([
'user_id' => $user->id,
'item_id' => $id,
'type' => 'file',
'user_id' => $user->id,
'item_id' => $id,
'type' => 'file',
'is_protected' => false,
'permission' => 'editor',
'password' => null,
'expire_in' => null,
'permission' => 'editor',
'password' => null,
'expire_in' => null,
]);
});
}
@@ -756,116 +747,116 @@ class SetupDevEnvironment extends Command
// Get options
collect([
[
'name' => 'setup_wizard_database',
'name' => 'setup_wizard_database',
'value' => 1,
],
[
'name' => 'app_title',
'name' => 'app_title',
'value' => 'VueFileManager',
],
[
'name' => 'app_description',
'name' => 'app_description',
'value' => 'Your self-hosted storage cloud software powered by Laravel and Vue',
],
[
'name' => 'app_logo',
'name' => 'app_logo',
'value' => 'system/logo.svg',
],
[
'name' => 'app_logo_horizontal',
'name' => 'app_logo_horizontal',
'value' => 'system/logo-horizontal.svg',
],
[
'name' => 'app_favicon',
'name' => 'app_favicon',
'value' => 'system/favicon.png',
],
[
'name' => 'app_og_image',
'name' => 'app_og_image',
'value' => 'system/og-image.jpg',
],
[
'name' => 'app_touch_icon',
'name' => 'app_touch_icon',
'value' => 'system/touch-icon.png',
],
[
'name' => 'google_analytics',
'name' => 'google_analytics',
'value' => '',
],
[
'name' => 'contact_email',
'name' => 'contact_email',
'value' => '',
],
[
'name' => 'registration',
'name' => 'registration',
'value' => 1,
],
[
'name' => 'payments_active',
'name' => 'payments_active',
'value' => 1,
],
[
'name' => 'storage_limitation',
'name' => 'storage_limitation',
'value' => 1,
],
[
'name' => 'storage_default',
'name' => 'storage_default',
'value' => 5,
],
[
'name' => 'setup_wizard_success',
'name' => 'setup_wizard_success',
'value' => 1,
],
[
'name' => 'license',
'name' => 'license',
'value' => $this->license,
],
[
'name' => 'purchase_code',
'name' => 'purchase_code',
'value' => '26b889eb-3602-4bf2-beb3-3sc378fcf484',
],
[
'name' => 'billing_address',
'name' => 'billing_address',
'value' => 'Palo Alto 20',
],
[
'name' => 'billing_city',
'name' => 'billing_city',
'value' => 'Palo Alto',
],
[
'name' => 'billing_country',
'name' => 'billing_country',
'value' => 'US',
],
[
'name' => 'billing_name',
'name' => 'billing_name',
'value' => 'VueFileManager Inc.',
],
[
'name' => 'billing_phone_number',
'name' => 'billing_phone_number',
'value' => '312343141243214',
],
[
'name' => 'billing_postal_code',
'name' => 'billing_postal_code',
'value' => '43213',
],
[
'name' => 'billing_state',
'name' => 'billing_state',
'value' => 'California',
],
[
'name' => 'billing_vat_number',
'name' => 'billing_vat_number',
'value' => '41241241234',
]
],
])->each(function ($col) {
Setting::forceCreate([
'name' => $col['name'],
'value' => $col['value']
'name' => $col['name'],
'value' => $col['value'],
]);
});
// Get system images
collect(['logo.svg', 'logo-horizontal.svg', 'favicon.png', 'og-image.jpg', 'touch-icon.png'])
->each(function ($file) {
Storage::putFileAs("system", storage_path("demo/app/$file"), $file, "private");
Storage::putFileAs('system', storage_path("demo/app/$file"), $file, 'private');
});
}
@@ -876,12 +867,12 @@ class SetupDevEnvironment extends Command
{
// Migrate database
$this->call('migrate:fresh', [
'--force' => true
'--force' => true,
]);
// Generate app key
$this->call('key:generate', [
'--force' => true
'--force' => true,
]);
}
@@ -894,4 +885,4 @@ class SetupDevEnvironment extends Command
$this->call('config:clear');
$this->call('view:clear');
}
}
}
+32 -34
View File
@@ -1,15 +1,14 @@
<?php
namespace App\Console\Commands;
use App\Models\User;
use App\Models\Setting;
use Illuminate\Support\Str;
use App\Models\Oasis\Client;
use App\Models\Oasis\Invoice;
use App\Models\Setting;
use App\Models\User;
use Illuminate\Console\Command;
use Illuminate\Database\Eloquent\Factories\Sequence;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Illuminate\Database\Eloquent\Factories\Sequence;
class SetupOasisEnvironment extends Command
{
@@ -65,28 +64,28 @@ class SetupOasisEnvironment extends Command
$hash = Str::random(12);
// Get invoice logo and stamp
Storage::putFileAs("system", storage_path("demo/app/logo-horizontal.svg"), "{$hash}-logo-horizontal.svg", "private");
Storage::putFileAs("system", storage_path("demo/oasis/stamp.png"), "{$hash}-stamp.png", "private");
Storage::putFileAs('system', storage_path('demo/app/logo-horizontal.svg'), "{$hash}-logo-horizontal.svg", 'private');
Storage::putFileAs('system', storage_path('demo/oasis/stamp.png'), "{$hash}-stamp.png", 'private');
$profile = $user->invoiceProfile()->create([
'company' => 'VueFileManager Inc.',
'company' => 'VueFileManager Inc.',
'registration_notes' => 'Registrácia na OR SR Bratislava I. oddiel: Sro vl. č. 91906',
'logo' => "system/{$hash}-logo-horizontal.svg",
'ico' => '46530045',
'dic' => '2023489457',
'ic_dph' => 'SK2023489457',
'address' => 'Does 11',
'state' => 'Slovakia',
'city' => 'Bratislava',
'postal_code' => '04001',
'country' => 'SK',
'bank' => 'Fio Banka',
'iban' => 'SK20000054236423624',
'swift' => 'FIOZXXX',
'phone' => '+421950123456',
'email' => 'howdy@hi5ve.digital',
'author' => 'John Doe',
'stamp' => "system/{$hash}-stamp.png",
'logo' => "system/{$hash}-logo-horizontal.svg",
'ico' => '46530045',
'dic' => '2023489457',
'ic_dph' => 'SK2023489457',
'address' => 'Does 11',
'state' => 'Slovakia',
'city' => 'Bratislava',
'postal_code' => '04001',
'country' => 'SK',
'bank' => 'Fio Banka',
'iban' => 'SK20000054236423624',
'swift' => 'FIOZXXX',
'phone' => '+421950123456',
'email' => 'howdy@hi5ve.digital',
'author' => 'John Doe',
'stamp' => "system/{$hash}-stamp.png",
]);
$clients = Client::factory(Client::class)
@@ -103,10 +102,10 @@ class SetupOasisEnvironment extends Command
['client_id' => $clients[5]->id],
))->count(2)
->create([
'user_id' => $user->id,
'invoice_type' => 'regular-invoice',
'user_id' => $user->id,
'invoice_type' => 'regular-invoice',
'discount_type' => null,
'user' => $profile->toArray(),
'user' => $profile->toArray(),
]);
$advance_invoices = Invoice::factory(Invoice::class)
@@ -119,22 +118,21 @@ class SetupOasisEnvironment extends Command
['client_id' => $clients[4]->id],
['client_id' => $clients[5]->id],
))->create([
'user_id' => $user->id,
'invoice_type' => 'advance-invoice',
'user_id' => $user->id,
'invoice_type' => 'advance-invoice',
'discount_type' => null,
'user' => $profile->toArray(),
'user' => $profile->toArray(),
]);
// Generate PDF
collect([$regular_invoices, $advance_invoices])
->collapse()
->each(function ($invoice) use ($user) {
$this->info("Generating invoice id: $invoice->id");
\PDF::loadView('oasis.invoices.invoice', [
'invoice' => Invoice::find($invoice->id),
'user' => $user,
'user' => $user,
])
->setPaper('a4')
->setOrientation('portrait')
@@ -147,9 +145,9 @@ class SetupOasisEnvironment extends Command
public function set_oasis_data()
{
Setting::updateOrCreate([
'name' => 'app_color'
'name' => 'app_color',
], [
'value' => '#ae5fec'
'value' => '#ae5fec',
]);
}
}
+30 -30
View File
@@ -1,23 +1,22 @@
<?php
namespace App\Http\Controllers\Oasis;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\CreateUserByAdmin;
use App\Http\Requests\Oasis\CreateOrderRequest;
use App\Http\Resources\UserResource;
use App\Models\User;
use App\Models\UserSettings;
use App\Notifications\Oasis\PaymentRequiredNotification;
use App\Services\Oasis\CzechRegisterSearchService;
use App\Services\StripeService;
use Hash;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use Notification;
use App\Models\User;
use Illuminate\Support\Str;
use App\Models\UserSettings;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Str;
use Notification;
use App\Services\StripeService;
use App\Http\Controllers\Controller;
use App\Http\Resources\UserResource;
use App\Http\Requests\Admin\CreateUserByAdmin;
use App\Http\Requests\Oasis\CreateOrderRequest;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use App\Services\Oasis\CzechRegisterSearchService;
use App\Notifications\Oasis\PaymentRequiredNotification;
class AdminController extends Controller
{
@@ -51,7 +50,7 @@ class AdminController extends Controller
{
// Create user
$newbie = User::create([
'email' => $request->email,
'email' => $request->email,
'password' => Hash::make(Str::random()),
]);
@@ -62,15 +61,15 @@ class AdminController extends Controller
->settings()
->create([
'storage_capacity' => 0,
'ico' => $request->ico ?? null,
'name' => $request->name,
'address' => $request->address,
'state' => $request->state,
'city' => $request->city,
'postal_code' => $request->postal_code,
'country' => $request->country,
'phone_number' => $request->phone_number ?? null,
'timezone' => '1.0',
'ico' => $request->ico ?? null,
'name' => $request->name,
'address' => $request->address,
'state' => $request->state,
'city' => $request->city,
'postal_code' => $request->postal_code,
'country' => $request->country,
'phone_number' => $request->phone_number ?? null,
'timezone' => '1.0',
]);
// Store subscription request
@@ -90,7 +89,8 @@ class AdminController extends Controller
));
return response(
new UserResource($newbie), 201
new UserResource($newbie),
201
);
}
@@ -104,8 +104,8 @@ class AdminController extends Controller
{
// Create user
$user = User::forceCreate([
'role' => $request->role,
'email' => $request->email,
'role' => $request->role,
'email' => $request->email,
'password' => \Illuminate\Support\Facades\Hash::make($request->password),
]);
@@ -114,9 +114,9 @@ class AdminController extends Controller
$user
->settings()
->create([
'name' => $request->name,
'avatar' => store_avatar($request, 'avatar'),
'storage_capacity' => $request->storage_capacity,
'name' => $request->name,
'avatar' => store_avatar($request, 'avatar'),
'storage_capacity' => $request->storage_capacity,
'payment_activation' => 1,
]);
+25 -25
View File
@@ -1,19 +1,17 @@
<?php
namespace App\Http\Controllers\Oasis;
use App\Http\Requests\Oasis\StoreClientRequest;
use App\Http\Resources\Oasis\OasisInvoiceCollection;
use App\Http\Resources\Oasis\OasisViewClientCollection;
use App\Http\Controllers\Controller;
use App\Http\Resources\Oasis\OasisViewClientResource;
use App\Http\Resources\Oasis\OasisViewInvoiceCollection;
use App\Models\Oasis\Client;
use Auth;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use App\Models\Oasis\Client;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
use App\Http\Requests\Oasis\StoreClientRequest;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use App\Http\Resources\Oasis\OasisInvoiceCollection;
use App\Http\Resources\Oasis\OasisViewClientResource;
use App\Http\Resources\Oasis\OasisViewClientCollection;
class ClientController extends Controller
{
@@ -23,7 +21,8 @@ class ClientController extends Controller
public function index()
{
return response(
new OasisViewClientCollection(Auth::user()->clients), 200
new OasisViewClientCollection(Auth::user()->clients),
200
);
}
@@ -36,21 +35,22 @@ class ClientController extends Controller
$client = $request->user()
->clients()
->create([
'avatar' => store_avatar($request, 'avatar') ?? null,
'name' => $request->name,
'email' => $request->email ?? null,
'avatar' => store_avatar($request, 'avatar') ?? null,
'name' => $request->name,
'email' => $request->email ?? null,
'phone_number' => $request->phone_number ?? null,
'address' => $request->address,
'city' => $request->city,
'postal_code' => $request->postal_code,
'country' => $request->country,
'ico' => $request->ico ?? null,
'dic' => $request->dic ?? null,
'ic_dph' => $request->ic_dph ?? null,
'address' => $request->address,
'city' => $request->city,
'postal_code' => $request->postal_code,
'country' => $request->country,
'ico' => $request->ico ?? null,
'dic' => $request->dic ?? null,
'ic_dph' => $request->ic_dph ?? null,
]);
return response(
new OasisViewClientResource($client), 201
new OasisViewClientResource($client),
201
);
}
@@ -72,10 +72,9 @@ class ClientController extends Controller
{
// Store image if exist
if ($request->hasFile($request->name)) {
// Find and update image path
$client->update([
$request->name => store_avatar($request, $request->name)
$request->name => store_avatar($request, $request->name),
]);
return response('Done', 204);
@@ -120,7 +119,8 @@ class ClientController extends Controller
->get();
return response(
new OasisViewClientCollection($results), 200
new OasisViewClientCollection($results),
200
);
}
}
@@ -1,22 +1,21 @@
<?php
namespace App\Http\Controllers\Oasis;
use App\Http\Controllers\Controller;
use App\Http\Requests\Oasis\StoreInvoiceRequest;
use App\Http\Resources\Oasis\OasisViewInvoiceCollection;
use App\Http\Resources\Oasis\OasisViewInvoiceResource;
use Auth;
use Storage;
use Carbon\Carbon;
use Illuminate\Support\Str;
use App\Models\Oasis\Client;
use App\Models\Oasis\Invoice;
use App\Notifications\Oasis\InvoiceDeliveryNotification;
use App\Notifications\SharedSendViaEmail;
use Auth;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Notification;
use App\Http\Requests\Oasis\StoreInvoiceRequest;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Notification;
use Illuminate\Support\Str;
use Storage;
use App\Http\Resources\Oasis\OasisViewInvoiceResource;
use App\Http\Resources\Oasis\OasisViewInvoiceCollection;
use App\Notifications\Oasis\InvoiceDeliveryNotification;
class InvoiceController extends Controller
{
@@ -26,7 +25,8 @@ class InvoiceController extends Controller
public function get_all_regular_invoices()
{
return response(
new OasisViewInvoiceCollection(Auth::user()->regularInvoices), 200
new OasisViewInvoiceCollection(Auth::user()->regularInvoices),
200
);
}
@@ -36,7 +36,8 @@ class InvoiceController extends Controller
public function get_all_advance_invoices()
{
return response(
new OasisViewInvoiceCollection(Auth::user()->advanceInvoices), 200
new OasisViewInvoiceCollection(Auth::user()->advanceInvoices),
200
);
}
@@ -46,7 +47,7 @@ class InvoiceController extends Controller
*/
public function get_invoice(Invoice $invoice)
{
if (!Storage::exists(invoice_path($invoice))) {
if (! Storage::exists(invoice_path($invoice))) {
abort(404, 'Not Found');
}
@@ -66,7 +67,8 @@ class InvoiceController extends Controller
->get();
return response(
new OasisViewInvoiceCollection($results), 200
new OasisViewInvoiceCollection($results),
200
);
}
@@ -82,33 +84,33 @@ class InvoiceController extends Controller
$user = $request->user();
$invoice = Invoice::create([
'user_id' => $user->id,
'client_id' => $client->id ?? null,
'invoice_type' => $request->invoice_type,
'invoice_number' => $request->invoice_number,
'user_id' => $user->id,
'client_id' => $client->id ?? null,
'invoice_type' => $request->invoice_type,
'invoice_number' => $request->invoice_number,
'variable_number' => $request->variable_number,
'delivery_at' => $request->delivery_at,
'discount_type' => $request->discount_type ?? null,
'discount_rate' => $request->discount_rate ?? null,
'items' => $request->items,
'user' => $user->invoiceProfile,
'client' => [
'email' => $client->email ?? $request->client_email,
'name' => $client->name ?? $request->client_name,
'address' => $client->address ?? $request->client_address,
'city' => $client->city ?? $request->client_city,
'delivery_at' => $request->delivery_at,
'discount_type' => $request->discount_type ?? null,
'discount_rate' => $request->discount_rate ?? null,
'items' => json_decode($request->items),
'user' => $user->invoiceProfile,
'client' => [
'email' => $client->email ?? $request->client_email,
'name' => $client->name ?? $request->client_name,
'address' => $client->address ?? $request->client_address,
'city' => $client->city ?? $request->client_city,
'postal_code' => $client->postal_code ?? $request->client_postal_code,
'country' => $client->country ?? $request->client_country,
'ico' => $client->ico ?? $request->client_ico,
'dic' => $client->dic ?? $request->client_dic ?? null,
'ic_dph' => $client->ic_dph ?? $request->client_ic_dph ?? null,
'country' => $client->country ?? $request->client_country,
'ico' => $client->ico ?? $request->client_ico,
'dic' => $client->dic ?? $request->client_dic ?? null,
'ic_dph' => $client->ic_dph ?? $request->client_ic_dph ?? null,
],
]);
// Generate PDF
\PDF::loadView('oasis.invoices.invoice', [
'invoice' => Invoice::find($invoice->id),
'user' => $user,
'user' => $user,
])
->setPaper('a4')
->setOrientation('portrait')
@@ -123,7 +125,8 @@ class InvoiceController extends Controller
}
return response(
new OasisViewInvoiceResource($invoice), 201
new OasisViewInvoiceResource($invoice),
201
);
}
@@ -138,28 +141,53 @@ class InvoiceController extends Controller
return response('Done', 204);
}
/**
* @return array
*/
public function editor()
{
$user = Auth::user();
return [
'clients' => $user->clients->map(function ($client) {
return [
'label' => $client->name,
'value' => $client->id,
];
}),
'isVatPayer' => $user->invoiceProfile->ic_dph
? true
: false,
'latestInvoiceNumber' => $user->regularInvoices->last()
? (int) $user->regularInvoices->last()->invoice_number
: null,
'recommendedInvoiceNumber' => $user->regularInvoices->last()
? (int) $user->regularInvoices->last()->invoice_number + 1
: Carbon::now()->format('Y') . '0001',
];
}
/**
* @param StoreInvoiceRequest $request
* @return mixed
*/
private function getOrStoreClient(StoreInvoiceRequest $request)
{
if (!Str::isUuid($request->client) && $request->store_client) {
if (! Str::isUuid($request->client) && $request->store_client) {
return $request->user()
->clients()
->create([
'avatar' => store_avatar($request, 'client_avatar') ?? null,
'name' => $request->client_name,
'email' => $request->client_email ?? null,
'avatar' => store_avatar($request, 'client_avatar') ?? null,
'name' => $request->client_name,
'email' => $request->client_email ?? null,
'phone_number' => $request->client_phone_number ?? null,
'address' => $request->client_address,
'city' => $request->client_city,
'postal_code' => $request->client_postal_code,
'country' => $request->client_country,
'ico' => $request->client_ico ?? null,
'dic' => $request->client_dic ?? null,
'ic_dph' => $request->client_ic_dph ?? null,
'address' => $request->client_address,
'city' => $request->client_city,
'postal_code' => $request->client_postal_code,
'country' => $request->client_country,
'ico' => $request->client_ico ?? null,
'dic' => $request->client_dic ?? null,
'ic_dph' => $request->client_ic_dph ?? null,
]);
}
@@ -1,16 +1,14 @@
<?php
namespace App\Http\Controllers\Oasis;
use App\Http\Controllers\Controller;
use App\Http\Resources\Oasis\InvoiceProfileResource;
use App\Models\Oasis\InvoiceProfile;
use App\Models\Setting;
use Auth;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
use App\Models\Oasis\InvoiceProfile;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use App\Http\Resources\Oasis\InvoiceProfileResource;
class InvoiceProfileController extends Controller
{
@@ -20,9 +18,11 @@ class InvoiceProfileController extends Controller
public function show()
{
return response(
new InvoiceProfileResource(Auth::user()->invoiceProfile), 200
new InvoiceProfileResource(Auth::user()->invoiceProfile),
200
);
}
/**
* @param Request $request
* @return Application|ResponseFactory|Response
@@ -30,29 +30,30 @@ class InvoiceProfileController extends Controller
public function store(Request $request)
{
$profile = InvoiceProfile::create([
'user_id' => $request->user()->id,
'logo' => store_system_image($request, 'logo') ?? null,
'stamp' => store_system_image($request, 'stamp') ?? null,
'company' => $request->company,
'email' => $request->email,
'ico' => $request->ico,
'dic' => $request->dic,
'ic_dph' => $request->ic_dph,
'user_id' => $request->user()->id,
'logo' => store_system_image($request, 'logo') ?? null,
'stamp' => store_system_image($request, 'stamp') ?? null,
'company' => $request->company,
'email' => $request->email,
'ico' => $request->ico,
'dic' => $request->dic,
'ic_dph' => $request->ic_dph,
'registration_notes' => $request->registration_notes,
'author' => $request->author,
'address' => $request->address,
'state' => $request->state,
'city' => $request->city,
'postal_code' => $request->postal_code,
'country' => $request->country,
'phone' => $request->phone,
'bank' => $request->bank,
'iban' => $request->iban,
'swift' => $request->swift,
'author' => $request->author,
'address' => $request->address,
'state' => $request->state,
'city' => $request->city,
'postal_code' => $request->postal_code,
'country' => $request->country,
'phone' => $request->phone,
'bank' => $request->bank,
'iban' => $request->iban,
'swift' => $request->swift,
]);
return response(
new InvoiceProfileResource($profile), 201
new InvoiceProfileResource($profile),
201
);
}
@@ -64,12 +65,11 @@ class InvoiceProfileController extends Controller
{
// Store image if exist
if ($request->hasFile($request->name)) {
// Find and update image path
$request->user()
->invoiceProfile()
->update([
$request->name => store_system_image($request, $request->name)
$request->name => store_system_image($request, $request->name),
]);
return response('Done', 204);
@@ -1,20 +1,17 @@
<?php
namespace App\Http\Controllers\Oasis;
use App\Http\Controllers\Controller;
use App\Http\Requests\User\UpdateUserPasswordRequest;
use App\Http\Resources\Oasis\SubscriptionRequestResource;
use App\Http\Resources\PlanResource;
use App\Models\Oasis\SubscriptionRequest;
use App\Services\StripeService;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Services\StripeService;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Hash;
use App\Models\Oasis\SubscriptionRequest;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use App\Http\Requests\User\UpdateUserPasswordRequest;
use App\Http\Resources\Oasis\SubscriptionRequestResource;
class SubscriptionController extends Controller
{
@@ -32,7 +29,8 @@ class SubscriptionController extends Controller
public function get_subscription_request(SubscriptionRequest $order)
{
return response(
new SubscriptionRequestResource($order), 200
new SubscriptionRequestResource($order),
200
);
}
@@ -62,7 +60,6 @@ class SubscriptionController extends Controller
{
// Make subscription from subscription request
if ($order->exists) {
// Create subscription
$order->user
->newSubscription('main', $order->requested_plan)
@@ -77,7 +74,7 @@ class SubscriptionController extends Controller
}
// Make subscription after user sign up and pay for the plan
if (!$order->exists) {
if (! $order->exists) {
$user = Auth::user();
// Set user billing
@@ -99,7 +96,7 @@ class SubscriptionController extends Controller
$user
->settings()
->update([
'storage_capacity' => $plan['product']['metadata']['capacity'],
'storage_capacity' => $plan['product']['metadata']['capacity'],
'payment_activation' => 1,
]);
@@ -126,7 +123,7 @@ class SubscriptionController extends Controller
// Update status
$order->update([
'status' => 'logged'
'status' => 'logged',
]);
// Log in user
+9 -10
View File
@@ -1,5 +1,4 @@
<?php
namespace App\Http\Requests\Oasis;
use Illuminate\Foundation\Http\FormRequest;
@@ -24,16 +23,16 @@ class CreateOrderRequest extends FormRequest
public function rules()
{
return [
'ico' => 'sometimes|nullable',
'name' => 'required|string',
'email' => 'required|email|unique:users',
'ico' => 'sometimes|nullable',
'name' => 'required|string',
'email' => 'required|email|unique:users',
'phone_number' => 'string|nullable',
'address' => 'required|string',
'state' => 'required|string',
'city' => 'required|string',
'postal_code' => 'required|string',
'country' => 'required|string',
'plan' => 'required|string',
'address' => 'required|string',
'state' => 'required|string',
'city' => 'required|string',
'postal_code' => 'required|string',
'country' => 'required|string',
'plan' => 'required|string',
];
}
}
+10 -11
View File
@@ -1,5 +1,4 @@
<?php
namespace App\Http\Requests\Oasis;
use Illuminate\Foundation\Http\FormRequest;
@@ -24,17 +23,17 @@ class StoreClientRequest extends FormRequest
public function rules()
{
return [
'avatar' => 'sometimes|nullable',
'name' => 'required|string',
'email' => 'sometimes|email|nullable',
'avatar' => 'sometimes|nullable',
'name' => 'required|string',
'email' => 'sometimes|email|nullable',
'phone_number' => 'sometimes|string|nullable',
'address' => 'required|string',
'city' => 'required|string',
'postal_code' => 'required|string',
'country' => 'required|string',
'ico' => 'required|string',
'dic' => 'required|string|nullable',
'ic_dph' => 'sometimes|string|nullable',
'address' => 'required|string',
'city' => 'required|string',
'postal_code' => 'required|string',
'country' => 'required|string',
'ico' => 'required|string',
'dic' => 'required|string|nullable',
'ic_dph' => 'sometimes|string|nullable',
];
}
}
@@ -1,5 +1,4 @@
<?php
namespace App\Http\Requests\Oasis;
use Illuminate\Foundation\Http\FormRequest;
@@ -24,24 +23,24 @@ class StoreInvoiceProfileRequest extends FormRequest
public function rules()
{
return [
'logo' => 'sometimes|file',
'stamp' => 'sometimes|file',
'company' => 'required|string',
'email' => 'required|email',
'ico' => 'sometimes|string|nullable',
'dic' => 'sometimes|string|nullable',
'ic_dph' => 'sometimes|string|nullable',
'logo' => 'sometimes|file',
'stamp' => 'sometimes|file',
'company' => 'required|string',
'email' => 'required|email',
'ico' => 'sometimes|string|nullable',
'dic' => 'sometimes|string|nullable',
'ic_dph' => 'sometimes|string|nullable',
'registration_notes' => 'sometimes|string|nullable',
'author' => 'required|string',
'address' => 'required|string',
'state' => 'required|string',
'city' => 'required|string',
'postal_code' => 'required|string',
'country' => 'required|string',
'phone' => 'required|string',
'bank' => 'required|string',
'iban' => 'required|string',
'swift' => 'required|string',
'author' => 'required|string',
'address' => 'required|string',
'state' => 'required|string',
'city' => 'required|string',
'postal_code' => 'required|string',
'country' => 'required|string',
'phone' => 'required|string',
'bank' => 'required|string',
'iban' => 'required|string',
'swift' => 'required|string',
];
}
}
@@ -1,5 +1,4 @@
<?php
namespace App\Http\Requests\Oasis;
use Illuminate\Foundation\Http\FormRequest;
@@ -24,14 +23,14 @@ class StoreInvoiceRequest extends FormRequest
public function rules()
{
return [
'invoice_type' => 'required|string',
'invoice_number' => 'required|string',
'invoice_type' => 'required|string',
'invoice_number' => 'required|string',
'variable_number' => 'required|string',
'client' => 'required',
'items' => 'required|array',
'discount_type' => 'sometimes|string',
'discount_rate' => 'sometimes|integer',
'delivery_at' => 'required|date',
'client' => 'required',
'items' => 'required|string',
'discount_type' => 'nullable|string',
'discount_rate' => 'nullable|integer',
'delivery_at' => 'required|date',
];
}
}
@@ -1,5 +1,4 @@
<?php
namespace App\Http\Resources\Oasis;
use Illuminate\Http\Resources\Json\ResourceCollection;
@@ -1,5 +1,4 @@
<?php
namespace App\Http\Resources\Oasis;
use Illuminate\Http\Resources\Json\JsonResource;
@@ -16,27 +15,27 @@ class InvoiceProfileResource extends JsonResource
{
return [
'data' => [
'id' => $this->id,
'type' => 'invoice-profile',
'id' => $this->id,
'type' => 'invoice-profile',
'attributes' => [
'logo' => $this->logo,
'stamp' => $this->stamp,
'company' => $this->company,
'email' => $this->email,
'ico' => $this->ico,
'dic' => $this->dic,
'ic_dph' => $this->ic_dph,
'logo' => $this->logo,
'stamp' => $this->stamp,
'company' => $this->company,
'email' => $this->email,
'ico' => $this->ico,
'dic' => $this->dic,
'ic_dph' => $this->ic_dph,
'registration_notes' => $this->registration_notes,
'author' => $this->author,
'address' => $this->address,
'state' => $this->state,
'city' => $this->city,
'postal_code' => $this->postal_code,
'country' => $this->country,
'phone' => $this->phone,
'bank' => $this->bank,
'iban' => $this->iban,
'swift' => $this->swift,
'author' => $this->author,
'address' => $this->address,
'state' => $this->state,
'city' => $this->city,
'postal_code' => $this->postal_code,
'country' => $this->country,
'phone' => $this->phone,
'bank' => $this->bank,
'iban' => $this->iban,
'swift' => $this->swift,
],
],
];
@@ -1,5 +1,4 @@
<?php
namespace App\Http\Resources\Oasis;
use Illuminate\Http\Resources\Json\ResourceCollection;
@@ -1,10 +1,7 @@
<?php
namespace App\Http\Resources\Oasis;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class OasisInvoiceResource extends JsonResource
{
@@ -18,17 +15,17 @@ class OasisInvoiceResource extends JsonResource
{
return [
'data' => [
'id' => $this->id,
'type' => 'invoice',
'id' => $this->id,
'type' => 'invoice',
'attributes' => [
'name' => $this->client['name'] . ' ' . format_to_currency($this->total_net, $this->currency),
'name' => $this->client['name'] . ' ' . format_to_currency($this->total_net, $this->currency),
'invoiceNumber' => $this->invoice_number,
'total' => format_to_currency($this->total_net, $this->currency),
'file_url' => "/oasis/invoice/$this->id",
'mimetype' => 'pdf',
'created_at' => format_date($this->created_at, '%d. %B. %Y'),
'total' => format_to_currency($this->total_net, $this->currency),
'file_url' => "/oasis/invoice/$this->id",
'mimetype' => 'pdf',
'created_at' => format_date($this->created_at, '%d. %B. %Y'),
],
],
];
}
}
}
@@ -1,5 +1,4 @@
<?php
namespace App\Http\Resources\Oasis;
use Illuminate\Http\Resources\Json\ResourceCollection;
@@ -1,5 +1,4 @@
<?php
namespace App\Http\Resources\Oasis;
use Illuminate\Http\Resources\Json\JsonResource;
@@ -23,24 +22,24 @@ class OasisViewClientResource extends JsonResource
->count();
return [
'id' => $this->id,
'type' => 'client',
'id' => $this->id,
'type' => 'client',
'created_at' => format_date($this->created_at, '%d. %B %Y'),
'totalNet' => format_to_currency($total_net, 'CZK'),
'totalNet' => format_to_currency($total_net, 'CZK'),
'totalInvoices' => $total_invoices,
'avatar' => $this->avatar,
'name' => $this->name,
'email' => $this->email,
'avatar' => $this->avatar,
'name' => $this->name,
'email' => $this->email,
'phone_number' => $this->phone_number,
'address' => $this->address,
'city' => $this->city,
'postal_code' => $this->postal_code,
'country' => $this->country,
'ico' => $this->ico,
'dic' => $this->dic,
'ic_dph' => $this->ic_dph,
'address' => $this->address,
'city' => $this->city,
'postal_code' => $this->postal_code,
'country' => $this->country,
'ico' => $this->ico,
'dic' => $this->dic,
'ic_dph' => $this->ic_dph,
];
}
}
@@ -1,5 +1,4 @@
<?php
namespace App\Http\Resources\Oasis;
use Illuminate\Http\Resources\Json\ResourceCollection;
@@ -1,10 +1,7 @@
<?php
namespace App\Http\Resources\Oasis;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class OasisViewInvoiceResource extends JsonResource
{
@@ -17,16 +14,16 @@ class OasisViewInvoiceResource extends JsonResource
public function toArray($request)
{
return [
'id' => $this->id,
'client_id' => $this->client_id,
'name' => $this->client['name'] . ' ' . format_to_currency($this->total_net, $this->currency),
'id' => $this->id,
'client_id' => $this->client_id,
'name' => $this->client['name'] . ' ' . format_to_currency($this->total_net, $this->currency),
'invoiceNumber' => $this->invoice_number,
'total' => format_to_currency($this->total_net, $this->currency),
'file_url' => "/oasis/invoice/$this->id",
'clientName' => $this->client['name'],
'mimetype' => 'pdf',
'type' => 'invoice',
'created_at' => format_date($this->created_at, '%d. %B. %Y'),
'total' => format_to_currency($this->total_net, $this->currency),
'file_url' => "/oasis/invoice/$this->id",
'clientName' => $this->client['name'],
'mimetype' => 'pdf',
'type' => 'invoice',
'created_at' => format_date($this->created_at, '%d. %B. %Y'),
];
}
}
}
@@ -1,12 +1,9 @@
<?php
namespace App\Http\Resources\Oasis;
use App\Http\Resources\PlanResource;
use App\Http\Resources\PricingResource;
use App\Services\StripeService;
use App\Http\Resources\PricingResource;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Cache;
class SubscriptionRequestResource extends JsonResource
{
@@ -20,34 +17,34 @@ class SubscriptionRequestResource extends JsonResource
{
return [
'data' => [
'id' => $this->id,
'type' => 'subscription-requests',
'attributes' => [
'requested_plan' => $this->requested_plan,
'status' => $this->status,
'id' => $this->id,
'type' => 'subscription-requests',
'attributes' => [
'requested_plan' => $this->requested_plan,
'status' => $this->status,
'created_at_formatted' => format_date($this->created_at, '%d. %B. %Y'),
],
'relationships' => [
'user' => [
'data' => [
'id' => $this->user->id,
'type' => 'users',
'id' => $this->user->id,
'type' => 'users',
'attributes' => [
'name' => $this->user->settings->name,
'address' => $this->user->settings->address,
'state' => $this->user->settings->state,
'city' => $this->user->settings->city,
'postal_code' => $this->user->settings->postal_code,
'country' => $this->user->settings->country,
'name' => $this->user->settings->name,
'address' => $this->user->settings->address,
'state' => $this->user->settings->state,
'city' => $this->user->settings->city,
'postal_code' => $this->user->settings->postal_code,
'country' => $this->user->settings->country,
'phone_number' => $this->user->settings->phone_number,
'ico' => $this->user->settings->ico,
]
]
'ico' => $this->user->settings->ico,
],
],
],
'plan' => new PricingResource(
resolve(StripeService::class)->getPlan($this->requested_plan)
),
]
],
],
];
}
+1 -1
View File
@@ -48,7 +48,7 @@ class UserResource extends JsonResource
'timezone' => $this->settings->timezone,
// OasisDrive
'payment_activation' => (integer) $this->settings->payment_activation
'payment_activation' => (integer) $this->settings->payment_activation,
],
],
],
+2 -4
View File
@@ -21,7 +21,7 @@ function base64_from_storage_image($filepath)
return null;
}
if (!Storage::exists($filepath)) {
if (! Storage::exists($filepath)) {
return null;
}
@@ -84,7 +84,6 @@ function invoice_total_discount($invoice, $format = false)
{
// Percent discount
if ($invoice['discount_type'] === 'percent') {
$discount = (int) (invoice_total_net($invoice) + invoice_total_tax($invoice)) * ($invoice['discount_rate'] / 100);
if ($format) {
@@ -96,7 +95,6 @@ function invoice_total_discount($invoice, $format = false)
// Value discount
if ($invoice['discount_type'] === 'value') {
if ($format) {
return Cashier::formatAmount($invoice['discount_rate'] * 100, $invoice['currency'], 'cs');
}
@@ -154,4 +152,4 @@ function invoice_total_tax($invoice, $format = false)
function format_to_currency($value, $currency = 'CZK', $locale = 'cs')
{
return Cashier::formatAmount(((int) $value * 100), $currency, $locale);
}
}
+1 -3
View File
@@ -291,7 +291,6 @@ function store_avatar($request, $name)
$image_path = Str::random(16) . '-' . $image->getClientOriginalName();
if (in_array($image->getClientMimeType(), ['image/gif', 'image/jpeg', 'image/jpg', 'image/png', 'image/webp'])) {
// Create intervention image
$img = Image::make($image->getRealPath());
@@ -303,8 +302,7 @@ function store_avatar($request, $name)
}
if ($image->getClientMimeType() === 'image/svg+xml') {
Storage::putFileAs("avatars", $image, $image_path);
Storage::putFileAs('avatars', $image, $image_path);
}
// Return path to image
+8 -9
View File
@@ -1,14 +1,13 @@
<?php
namespace App\Models\Oasis;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Laravel\Scout\Searchable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Storage;
use TeamTNT\TNTSearch\Indexer\TNTIndexer;
use Illuminate\Database\Eloquent\Factories\HasFactory;
/**
* @method static whereUserId($id)
@@ -66,11 +65,11 @@ class Client extends Model
$client_email = Str::slug($array['email'], ' ');
return [
'id' => $this->id,
'clientName' => $array['name'],
'clientNameNgrams' => utf8_encode((new TNTIndexer)->buildTrigrams(implode(', ', [$client_name]))),
'clientEmail' => $array['email'],
'clientEmailNgrams' => utf8_encode((new TNTIndexer)->buildTrigrams(implode(', ', [$client_email]))),
'id' => $this->id,
'clientName' => $array['name'],
'clientNameNgrams' => utf8_encode((new TNTIndexer)->buildTrigrams(implode(', ', [$client_name]))),
'clientEmail' => $array['email'],
'clientEmailNgrams' => utf8_encode((new TNTIndexer)->buildTrigrams(implode(', ', [$client_email]))),
];
}
+12 -14
View File
@@ -1,29 +1,27 @@
<?php
namespace App\Models\Oasis;
use App\Models\User;
use Auth;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Storage;
use App\Models\User;
use Illuminate\Support\Str;
use Laravel\Scout\Searchable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Storage;
use TeamTNT\TNTSearch\Indexer\TNTIndexer;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Invoice extends Model
{
use HasFactory, Searchable;
protected $casts = [
'items' => 'array',
'user' => 'array',
'items' => 'array',
'user' => 'array',
'client' => 'array',
];
public $guarded = [
'id'
'id',
];
public $incrementing = false;
@@ -47,10 +45,10 @@ class Invoice extends Model
$client_name = Str::slug($array['client']['name'], ' ');
return [
'id' => $this->id,
'clientName' => $array['client']['name'],
'clientNameNgrams' => utf8_encode((new TNTIndexer)->buildTrigrams(implode(', ', [$client_name]))),
'invoiceNumber' => $array['invoice_number'],
'id' => $this->id,
'clientName' => $array['client']['name'],
'clientNameNgrams' => utf8_encode((new TNTIndexer)->buildTrigrams(implode(', ', [$client_name]))),
'invoiceNumber' => $array['invoice_number'],
'invoiceNumberNgrams' => utf8_encode((new TNTIndexer)->buildTrigrams(implode(', ', [$array['invoice_number']]))),
];
}
@@ -60,7 +58,7 @@ class Invoice extends Model
parent::boot();
static::creating(function ($invoice) {
$invoice->id = (string)Str::uuid();
$invoice->id = (string) Str::uuid();
$invoice->delivery_at = $invoice->created_at;
$invoice->due_at = Carbon::parse($invoice->created_at)->addWeeks(2);
+2 -3
View File
@@ -1,11 +1,10 @@
<?php
namespace App\Models\Oasis;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class InvoiceProfile extends Model
{
+5 -6
View File
@@ -1,19 +1,18 @@
<?php
namespace App\Models\Oasis;
use App\Models\User;
use Auth;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\User;
use Illuminate\Support\Str;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class SubscriptionRequest extends Model
{
use HasFactory;
protected $fillable = [
'requested_plan', 'creator', 'status'
'requested_plan', 'creator', 'status',
];
public $incrementing = false;
@@ -30,7 +29,7 @@ class SubscriptionRequest extends Model
parent::boot();
static::creating(function ($order) {
$order->id = (string)Str::uuid();
$order->id = (string) Str::uuid();
$order->creator = Auth::user()->email ?? $order->creator;
});
}
-2
View File
@@ -1,5 +1,4 @@
<?php
namespace App\Models;
use App\Traits\Oasis;
@@ -18,7 +17,6 @@ use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable, Billable, Sortable, HasFactory, HasApiTokens;
use Oasis;
protected $guarded = [
@@ -1,12 +1,9 @@
<?php
namespace App\Notifications\Oasis;
use App\Models\Oasis\Invoice;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;
class InvoiceDeliveryNotification extends Notification
{
@@ -51,7 +48,7 @@ class InvoiceDeliveryNotification extends Notification
->greeting(__t('mail_greeting'))
->line($this->user->settings->name . ' sent you an invoice.')
->salutation(__t('mail_salutation'))
->attach(storage_path("app/" . invoice_path($this->invoice)), [
->attach(storage_path('app/' . invoice_path($this->invoice)), [
'as' => 'name.pdf',
'mime' => 'application/pdf',
]);
@@ -66,7 +63,6 @@ class InvoiceDeliveryNotification extends Notification
public function toArray($notifiable)
{
return [
//
];
}
}
@@ -1,12 +1,10 @@
<?php
namespace App\Notifications\Oasis;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
use Laravel\Cashier\Cashier;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;
class PaymentRequiredNotification extends Notification
{
@@ -50,9 +48,9 @@ class PaymentRequiredNotification extends Notification
->greeting(__t('mail_greeting'))
->line(__t('mail_order_line_1'))
->line(__t('mail_tariff', [
'name' => $this->plan['product']['name'],
'name' => $this->plan['product']['name'],
'storage' => Cashier::formatAmount($this->plan['plan']['amount']),
'price' => format_gigabytes($this->plan['product']['metadata']['capacity']),
'price' => format_gigabytes($this->plan['product']['metadata']['capacity']),
]))
->action(__t('mail_activation_action'), $url)
->line(__t('mail_order_line_2'))
@@ -69,7 +67,6 @@ class PaymentRequiredNotification extends Notification
public function toArray($notifiable)
{
return [
//
];
}
}
@@ -1,12 +1,10 @@
<?php
namespace App\Notifications\Oasis;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
use Laravel\Cashier\Cashier;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;
class ReminderForPaymentRequiredNotification extends Notification
{
@@ -50,9 +48,9 @@ class ReminderForPaymentRequiredNotification extends Notification
->greeting(__t('mail_greeting'))
->line(__t('mail_reminder_line_1'))
->line(__t('mail_tariff', [
'name' => $this->plan['product']['name'],
'name' => $this->plan['product']['name'],
'storage' => Cashier::formatAmount($this->plan['plan']['amount']),
'price' => format_gigabytes($this->plan['product']['metadata']['capacity']),
'price' => format_gigabytes($this->plan['product']['metadata']['capacity']),
]))
->line(__t('mail_reminder_line_2'))
->action(__t('mail_activation_action'), $url)
@@ -69,7 +67,6 @@ class ReminderForPaymentRequiredNotification extends Notification
public function toArray($notifiable)
{
return [
//
];
}
}
@@ -22,7 +22,6 @@
* $out = $connector->findByIco('44315945');
* echo ''.print_r($out, 1).'';
*/
namespace App\Services\Oasis;
class CzechRegisterSearchService
@@ -85,9 +84,11 @@ class CzechRegisterSearchService
if (preg_match('/^\d{8}$/', $ico)) {
$url = self::URL_SERVER . '?ico=' . $ico;
$response = file_get_contents($url);
if ($response) {
$response = self::extractSubjects($response);
if (!empty($response[0])) {
if (! empty($response[0])) {
$response = $response[0];
}
}
@@ -96,7 +97,6 @@ class CzechRegisterSearchService
return $response;
}
/**
* Return matched formatted for autocomplete dropdown list
* @param string $term Searched matching string
@@ -116,8 +116,7 @@ class CzechRegisterSearchService
}
}
if (!empty($subjects) && is_array($subjects)) {
if (! empty($subjects) && is_array($subjects)) {
$subjects = array_slice($subjects, 0, $size); // return first $size matches
foreach ($subjects as &$subject) {
@@ -129,7 +128,7 @@ class CzechRegisterSearchService
}
foreach ($subjects as $subject) {
if (!empty($subject['ico'])) {
if (! empty($subject['ico'])) {
$out[] = [
'value' => $subject['ico'],
'label' => "{$subject['shortname']} (IČO: {$subject['ico']})",
@@ -149,15 +148,15 @@ class CzechRegisterSearchService
protected static function extractSubjects($html)
{
// ensure valid XHTML markup
if (!extension_loaded('tidy')) {
if (! extension_loaded('tidy')) {
throw new \Exception('Missing extension [tidy].');
}
$tidy = new \tidy();
$html = $tidy->repairString($html, array(
'output-xhtml' => true,
$html = $tidy->repairString($html, [
'output-xhtml' => true,
'show-body-only' => true,
), 'utf8');
], 'utf8');
// purify whitespaces - vkladaju \n alebo
$html = strtr($html, [
@@ -174,26 +173,25 @@ class CzechRegisterSearchService
$out = [];
if ($rows->length) {
foreach ($rows as $row) {
// Nazev
$nodeList = $xpath->query("./tr[1]/td[1]", $row);
if (!$nodeList->length) {
$nodeList = $xpath->query('./tr[1]/td[1]', $row);
if (! $nodeList->length) {
continue; // nazev je povinny
}
$name = $nodeList->item(0)->nodeValue;
$name = preg_replace('/\s+/', ' ', $name); // viacnasobne inside spaces
// ICO
$nodeList = $xpath->query("./tr[1]/td[2]", $row);
$nodeList = $xpath->query('./tr[1]/td[2]', $row);
$ico = $nodeList->length ? $nodeList->item(0)->nodeValue : '';
// adresa - neda sa spolahnut na poradie prvkov :-(
$city = '';
$nodeList = $xpath->query("./tr[3]/td[1]", $row);
if ($nodeList->length) {
$nodeList = $xpath->query('./tr[3]/td[1]', $row);
if ($nodeList->length) {
$addr = trim($nodeList->item(0)->nodeValue);
if (preg_match('/,\s*(\d{3} ?\d{2})\s+(.+)$/', $addr, $match)) {
@@ -206,9 +204,10 @@ class CzechRegisterSearchService
list($city, $addr_streetnr) = explode(',', $addr);
$addr_city = $city;
$addr_zip = $match[1];
} elseif (!preg_match('/\d{3} ?\d{2}/', $addr, $match)) {
} elseif (! preg_match('/\d{3} ?\d{2}/', $addr, $match)) {
// Ústí nad Labem, Masarykova 74 - bez PSC - obec, ulice a cislo
$addr_streetnr = $addr_zip = '';
if (false !== strpos($addr, ',')) {
list($city, $addr_streetnr) = explode(',', $addr);
} else {
@@ -227,15 +226,15 @@ class CzechRegisterSearchService
}
$out[] = [
'name' => self::trimQuotes($name),
'ico' => preg_replace('/[^\d]/', '', $ico),
'city' => self::trimQuotes($city),
'name' => self::trimQuotes($name),
'ico' => preg_replace('/[^\d]/', '', $ico),
'city' => self::trimQuotes($city),
// pre polia s adresou konzistentne so smartform naseptavacem
'addr_city' => self::trimQuotes($addr_city),
'addr_zip' => preg_replace('/[^\d]/', '', $addr_zip),
'addr_city' => self::trimQuotes($addr_city),
'addr_zip' => preg_replace('/[^\d]/', '', $addr_zip),
'addr_streetnr' => self::trimQuotes($addr_streetnr),
// len pre kontrolu - plna povodna adresa
'addr_full' => self::trimQuotes($addr),
'addr_full' => self::trimQuotes($addr),
];
}
}
@@ -251,5 +250,4 @@ class CzechRegisterSearchService
{
return trim(strtr($s, ['"' => '', "'" => '']));
}
}
}
+4 -9
View File
@@ -1,16 +1,11 @@
<?php
namespace App\Services\Oasis;
use App\Models\Oasis\Client;
use App\Models\Oasis\Invoice;
use App\Models\User;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use App\Models\Oasis\Invoice;
use Illuminate\Contracts\View\View;
use Illuminate\Database\Eloquent\Factories\Sequence;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\Foundation\Application;
class OasisDevService
{
@@ -23,4 +18,4 @@ class OasisDevService
->with('invoice', Invoice::first())
->with('user', User::whereEmail('howdy@hi5ve.digital')->first());
}
}
}
+5 -9
View File
@@ -1,13 +1,10 @@
<?php
namespace App\Services\Oasis;
use Carbon\Carbon;
use App\Services\StripeService;
use App\Models\Oasis\SubscriptionRequest;
use App\Notifications\Oasis\ReminderForPaymentRequiredNotification;
use App\Services\StripeService;
use Carbon\Carbon;
class OasisService
{
@@ -20,21 +17,20 @@ class OasisService
SubscriptionRequest::whereStatus('requested')
->get()
->each(function ($request) {
// Get diffInHours
$diff = Carbon::parse($request->created_at)
->diffInHours(Carbon::now());
// Send order reminder
if ($diff == 8) {
$plan = resolve(StripeService::class)
->getPlan($request->requested_plan);
$request->user->notify(new ReminderForPaymentRequiredNotification(
$request, $plan
$request,
$plan
));
}
});
}
}
}
-1
View File
@@ -13,7 +13,6 @@ use Symfony\Component\HttpKernel\Exception\HttpException;
class StripeService
{
/**
* Stripe Service constructor.
*/
+2 -3
View File
@@ -1,5 +1,4 @@
<?php
namespace App\Traits;
use App\Models\Oasis\Client;
@@ -27,11 +26,11 @@ trait Oasis
public function regularInvoices()
{
return $this->hasMany(Invoice::class)->whereInvoiceType('regular-invoice');
return $this->hasMany(Invoice::class)->whereInvoiceType('regular-invoice')->orderByDesc('created_at');
}
public function advanceInvoices()
{
return $this->hasMany(Invoice::class)->whereInvoiceType('advance-invoice');
return $this->hasMany(Invoice::class)->whereInvoiceType('advance-invoice')->orderByDesc('created_at');
}
}
+33 -33
View File
@@ -7,39 +7,39 @@
*/
return [
'custom' => 'translation',
'custom' => 'translation',
// On boarding
'successful_payment_with_password_creation' => 'Dakujeme, platba bola uspesne zaznamenana. V poslednom kroku si prosim vytvorte heslo pre Vas ucet.',
'pay_order_description' => 'Zaplacenim objednavky se Vas ucet automaticky zaktivuje a vytvori se Vam digitalni prostor pro Vase dulezite dokumenty.',
'pay_order_description' => 'Zaplacenim objednavky se Vas ucet automaticky zaktivuje a vytvori se Vam digitalni prostor pro Vase dulezite dokumenty.',
'payment_page.payment_gateway' => 'Platebni karta',
'payment_page.company' => 'Spolecnost',
'payment_page.ico' => 'ICO',
'payment_page.address' => 'Adresa',
'payment_page.company' => 'Spolecnost',
'payment_page.ico' => 'ICO',
'payment_page.address' => 'Adresa',
// Mail notifications for ordering
'mail_greeting' => 'Vážený zákazníku,',
'mail_salutation' => 'S pozdravem a přáním hezkého dne, Tým Oasis Drive',
'mail_tariff' => 'Vámi vybraný tarif: :name - :storage za :price',
'mail_activation_action' => 'Pro aktivaci klikněte zde',
'mail_greeting' => 'Vážený zákazníku,',
'mail_salutation' => 'S pozdravem a přáním hezkého dne, Tým Oasis Drive',
'mail_tariff' => 'Vámi vybraný tarif: :name - :storage za :price',
'mail_activation_action' => 'Pro aktivaci klikněte zde',
'mail_order_subject' => '🏝 Potvrzeni Objednavky - OasisDrive',
'mail_order_line_1' => 'Právě jste si úspěšně vytvořil registraci bezpečnostní datové služby OasisDrive.',
'mail_order_line_2' => 'Odkaz je platný 24 hodin.',
'mail_order_line_3' => 'Po dokončení registrace v odkazu Vám bude služba automaticky aktivována a lze ji ihned využívat.',
'mail_order_line_1' => 'Právě jste si úspěšně vytvořil registraci bezpečnostní datové služby OasisDrive.',
'mail_order_line_2' => 'Odkaz je platný 24 hodin.',
'mail_order_line_3' => 'Po dokončení registrace v odkazu Vám bude služba automaticky aktivována a lze ji ihned využívat.',
'mail_reminder_line_1' => 'Děkujeme za Vaši objednávku služby Oasis Drive pro bezpečné uložení Vašich firemních dokumentů.',
'mail_reminder_line_2' => 'Připomínáme dokončení aktivace služby a blížící se konec platnosti registračního odkazu:',
'mail_reminder_line_3' => 'Po dokončení registrace v odkazu Vám bude služba automaticky aktivována a lze ji ihned využívat.',
'mail_reminder_line_1' => 'Děkujeme za Vaši objednávku služby Oasis Drive pro bezpečné uložení Vašich firemních dokumentů.',
'mail_reminder_line_2' => 'Připomínáme dokončení aktivace služby a blížící se konec platnosti registračního odkazu:',
'mail_reminder_line_3' => 'Po dokončení registrace v odkazu Vám bude služba automaticky aktivována a lze ji ihned využívat.',
// Admin
'oasis.create_order' => 'Vytvorit objednavku',
'oasis.create_user' => 'Vytvorit Uzivatela',
'oasis.create_order' => 'Vytvorit objednavku',
'oasis.create_user' => 'Vytvorit Uzivatela',
// Homepage
'navigation.price' => 'Ceník',
'navigation.about-us' => 'O Nás',
'navigation.price' => 'Ceník',
'navigation.about-us' => 'O Nás',
'navigation.contact-and-support' => 'Kontakt a Podpora',
'try_drive' => 'Vyzkouset OasisDrive',
@@ -48,25 +48,25 @@ return [
'contact.ico' => 'ICO',
'contact.hq' => 'Sídlo',
'homepage_header_title' => 'Jednoduchý a Bezpečný Cloud vo Vrecku',
'homepage_header_title' => 'Jednoduchý a Bezpečný Cloud vo Vrecku',
'homepage_header_description' => 'Virtuální šanon, vždy s tebou.',
'homepage_feature_title' => 'Proč je OasisDrive Výnimočný?',
'homepage_feature_title' => 'Proč je OasisDrive Výnimočný?',
'homepage_feature_description' => 'Cloudové uložiště je v podstatě virtuální šanon, kam uživatelé ukládají svá data, ke kterým se mohou přihlásit odkudkoli v nezávislosti na zařízení. OasisDrive umožňuje bezpečně chránit Vaše firemní data.',
'feature_1_title' => 'Bezpecnost na prvnim miste',
'feature_1_title' => 'Bezpecnost na prvnim miste',
'feature_1_description' => 'Naše cloudové uložiště umožňuje bezpečně chránit Vaše firemní data. kdy využíváme několik vysoce zabezpečených serverů po Evropské unii a vícenásobným šifrováním souborů (tzv. kryptováním).',
'feature_2_title' => 'Bezpečnost v rámci GDPR',
'feature_2_title' => 'Bezpečnost v rámci GDPR',
'feature_2_description' => 'bezpečnost uložení dat v rámci evropské směrnice o GDPR a přidružených zákonů o zpracování a ochraně citlivých údajů. Naši klienti jsou tedy chráněni před zneužitím dat a tím pádem i před pokutami vyplývajícími z legislativy, které být astronomické.',
'feature_3_title' => 'Jednoduchost pouzivani',
'feature_3_title' => 'Jednoduchost pouzivani',
'feature_3_description' => 'Naše cloudové uložiště umožňuje bezpečně chránit Vaše firemní data. kdy využíváme několik vysoce zabezpečených serverů po Evropské unii a vícenásobným šifrováním souborů (tzv. kryptováním).',
'homepage_pricing_title' => 'Kolik stoji OasisDrive?',
'homepage_pricing_title' => 'Kolik stoji OasisDrive?',
'homepage_pricing_description' => 'OasisDrive je dostupny v troch variantach. Ak presiahnete limit svojho balicka, mozete si navysit balik dat jednoduchym upgradom uctu.',
'homepage_about_us_title' => 'Kto Jsme?',
'homepage_about_us_title' => 'Kto Jsme?',
'homepage_about_us_description' => 'Jsme česká společnost, která pro fyzické a právnické osoby (živnostníky a firmy) poskytuje cloudové uložiště dle evropské směrnice (GDPR) a následného zákona o zpracování osobních údajů (zákon 110/2019 sb.).',
'homepage_about_us_line_1' => 'Zakládáme si na kvalitě a nejlepší možné bezpečnosti pro uchovávání a zpracování dat a dokumentů.',
@@ -74,14 +74,14 @@ return [
'homepage_about_us_line_3' => 'Důležitá je pro nás uživatelská jednoduchost, stoprocentní funkčnost a přehlednost.',
'homepage_about_us_line_4' => 'Bezpečnost uložení dat tak, jak nařizuje směrnice EU (GDPR) a zákon o zpracování osobních údajů.',
'homepage_contact_title' => 'Kontakt a Podpora',
'homepage_contact_title' => 'Kontakt a Podpora',
'homepage_contact_description' => 'V pripade akychkolvek otazok nas nevahajte kontaktovat emailom, alebo na ktoromkolvek telefonnom cisle.',
'contact_company_title' => 'Společnost',
'contact_support_title' => 'Podpora',
'contact_sales_title' => 'Prodej',
'contact_documents_title' => 'Dokumenty',
'contact_company_title' => 'Společnost',
'contact_support_title' => 'Podpora',
'contact_sales_title' => 'Prodej',
'contact_documents_title' => 'Dokumenty',
'contact_leave_message_title' => 'Zanechte nám vzkaz',
'document_gdpr_policy' => 'Směrnice EU (GDPR)'
];
'document_gdpr_policy' => 'Směrnice EU (GDPR)',
];
+8 -9
View File
@@ -1,7 +1,6 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Snappy PDF / Image Configuration
@@ -10,15 +9,15 @@ return [
| This option contains settings for PDF generation.
|
| Enabled:
|
|
| Whether to load PDF / Image generation.
|
| Binary:
|
|
| The file path of the wkhtmltopdf / wkhtmltoimage executable.
|
| Timout:
|
|
| The amount of time to wait (in seconds) before PDF / Image generation is stopped.
| Setting this to false disables the timeout (unlimited processing time).
|
@@ -35,20 +34,20 @@ return [
'pdf' => [
'enabled' => true,
'binary' => env('WKHTML_PDF_BINARY', '/usr/local/bin/wkhtmltopdf'),
'binary' => env('WKHTML_PDF_BINARY', '/usr/local/bin/wkhtmltopdf'),
'timeout' => false,
'options' => [
'enable-local-file-access' => true,
'encoding' => 'UTF-8'
'encoding' => 'UTF-8',
],
'env' => [],
'env' => [],
],
'image' => [
'enabled' => true,
'binary' => env('WKHTML_IMG_BINARY', '/usr/local/bin/wkhtmltoimage'),
'binary' => env('WKHTML_IMG_BINARY', '/usr/local/bin/wkhtmltoimage'),
'timeout' => false,
'options' => [],
'env' => [],
'env' => [],
],
];
@@ -32,7 +32,9 @@ class CreateInvoicesTable extends Migration
$table->dateTime('delivery_at')->nullable();
$table->dateTime('due_at')->nullable();
$table->enum('discount_type', ['percent', 'value'])->nullable();
$table->enum('discount_type', [
'percent', 'value'
])->nullable();
$table->integer('discount_rate')->nullable();
$table->text('currency');
+569 -54
View File
@@ -1,8 +1,8 @@
{
"/js/main.js": "/js/main.js",
"/css/app.css": "/css/app.css",
"/chunks/admin.js": "/chunks/admin.js?id=ca6495e1c589f24145e2",
"/chunks/admin-account.js": "/chunks/admin-account.js?id=6faf1e749ee8e85a4d10",
"/chunks/admin.js": "/chunks/admin.js?id=65bbf65eb1d145566248",
"/chunks/admin-account.js": "/chunks/admin-account.js?id=146d05d3db3ddc826828",
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~21912951.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~21912951.js?id=c84c0a0b4cdd0f73d621",
"/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~062c965c.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~062c965c.js?id=515118382f7ad5724a54",
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~129c344f.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~129c344f.js?id=4bbef035191de1ef475f",
@@ -11,35 +11,35 @@
"/chunks/admin~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform.js": "/chunks/admin~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform.js?id=8a43df56801fc2065bcb",
"/chunks/admin~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared.js?id=a0543d93d8f11a2a5962",
"/chunks/admin~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/shared.js?id=5f29df56a2d5925c40c9",
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=b4e2d99a172f06a1d312",
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=be74b8c3f77bc301e613",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js?id=2feb3390febba02cc5f0",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js?id=209e2117002b68ca4f3b",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~b9e5655a.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~b9e5655a.js?id=04f0cd9719723459b685",
"/chunks/app-billings.js": "/chunks/app-billings.js?id=82133cc16f55222bbbe6",
"/chunks/app-email.js": "/chunks/app-email.js?id=c578a85112c6a4b1ed0e",
"/chunks/app-index.js": "/chunks/app-index.js?id=5bf1c4a8df85876205a0",
"/chunks/app-language.js": "/chunks/app-language.js?id=215973b4b78ca36053be",
"/chunks/app-billings.js": "/chunks/app-billings.js?id=0dd4c682e851dcfdd201",
"/chunks/app-email.js": "/chunks/app-email.js?id=09496063de3ea7e81741",
"/chunks/app-index.js": "/chunks/app-index.js?id=62704c92b0becf4d6f81",
"/chunks/app-language.js": "/chunks/app-language.js?id=b468709b5047c8460cac",
"/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chun~4af92edf.js": "/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chun~4af92edf.js?id=bd0094801b7c8baf27ca",
"/chunks/app-language~chunks/dashboard~chunks/dashboard-oasis~chunks/files~chunks/invoices~chunks/oasi~c6e9de01.js": "/chunks/app-language~chunks/dashboard~chunks/dashboard-oasis~chunks/files~chunks/invoices~chunks/oasi~c6e9de01.js?id=f9af3b7905bb7c35023d",
"/chunks/app-others.js": "/chunks/app-others.js?id=9156adba3b1697a8bf3e",
"/chunks/app-payments.js": "/chunks/app-payments.js?id=7e1a982c90174f568fb2",
"/chunks/app-others.js": "/chunks/app-others.js?id=d8d824e277991b10eda9",
"/chunks/app-payments.js": "/chunks/app-payments.js?id=2079cda348065d3a7523",
"/chunks/app-settings.js": "/chunks/app-settings.js?id=acc6ba7a93681f0d5d64",
"/chunks/app-setup.js": "/chunks/app-setup.js?id=1299bde88a1c3582c1d8",
"/chunks/billings-detail.js": "/chunks/billings-detail.js?id=f896743bb3f276942d14",
"/chunks/contact-us.js": "/chunks/contact-us.js?id=214c834b6427a82f40e7",
"/chunks/app-setup.js": "/chunks/app-setup.js?id=a41285937f779c669f17",
"/chunks/billings-detail.js": "/chunks/billings-detail.js?id=031ad44930aba4acd346",
"/chunks/contact-us.js": "/chunks/contact-us.js?id=2164a6fd1c3ca10a0cef",
"/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js": "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js?id=22bd5db44c72e8de5f5b",
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=48dc53ccbd502c2739ec",
"/chunks/dashboard.js": "/chunks/dashboard.js?id=55a783975e40f9dcf31b",
"/chunks/dashboard-oasis.js": "/chunks/dashboard-oasis.js?id=8b37095a96ece7d6c1d8",
"/chunks/dashboard~chunks/dashboard-oasis.js": "/chunks/dashboard~chunks/dashboard-oasis.js?id=bdef93a4198d207bf236",
"/chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chunks/oasis/users~chunks/pages~chunks/plan-~3f2e756e.js": "/chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chunks/oasis/users~chunks/pages~chunks/plan-~3f2e756e.js?id=5fd4ce01482798a86b8c",
"/chunks/database.js": "/chunks/database.js?id=8f6f77cf18d03f450fdd",
"/chunks/database.js": "/chunks/database.js?id=e569f945ac352d9e4c61",
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=17cbd34e8c621c7a93e5",
"/chunks/dynamic-page~chunks/oasis/homepage.js": "/chunks/dynamic-page~chunks/oasis/homepage.js?id=9840011d02134efd9210",
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=fafc8cd18dc7300c9f15",
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=23f5ea1b464e5c16f47b",
"/chunks/files.js": "/chunks/files.js?id=ee5b19530d832c6f9f34",
"/chunks/files~chunks/oasis/invoices/list~chunks/oasis/platba~chunks/settings-subscription~chunks/shar~d6675e1e.js": "/chunks/files~chunks/oasis/invoices/list~chunks/oasis/platba~chunks/settings-subscription~chunks/shar~d6675e1e.js?id=effef49b99446fdaee0b",
"/chunks/files~chunks/oasis/invoices/list~chunks/platform~chunks/shared-files~chunks/shared/file-browser.js": "/chunks/files~chunks/oasis/invoices/list~chunks/platform~chunks/shared-files~chunks/shared/file-browser.js?id=c777877000f1e219a748",
"/chunks/files~chunks/oasis/invoices/list~chunks/platform~chunks/shared-files~chunks/shared/file-browser.js": "/chunks/files~chunks/oasis/invoices/list~chunks/platform~chunks/shared-files~chunks/shared/file-browser.js?id=160b4769f8d03b9e3071",
"/chunks/files~chunks/oasis/invoices/list~chunks/shared-files~chunks/shared/file-browser.js": "/chunks/files~chunks/oasis/invoices/list~chunks/shared-files~chunks/shared/file-browser.js?id=a35f0d58f42da919a182",
"/chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared~chunks/s~707bd579.js": "/chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared~chunks/s~707bd579.js?id=3c49df5afaf5bb1f42f3",
"/chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared~chunks/s~87b39a8d.js": "/chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared~chunks/s~87b39a8d.js?id=c226fe89b510c599615f",
@@ -48,41 +48,41 @@
"/chunks/files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared/file-browser.js?id=44899a3c3880630dbcd9",
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=877a9289b77ac3885042",
"/chunks/homepage.js": "/chunks/homepage.js?id=1a86b7f0efa95ad65c4a",
"/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=e8f47d23afd3d797f334",
"/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=1f1eed3dc18f9e79505d",
"/chunks/invoices.js": "/chunks/invoices.js?id=1deb187f6d3eb1e81ad0",
"/chunks/not-found-shared.js": "/chunks/not-found-shared.js?id=7fc7f9b6f10bdfac770e",
"/chunks/oasis/homepage.js": "/chunks/oasis/homepage.js?id=a1885dd8814f9eb63a1c",
"/chunks/oasis/invoices.js": "/chunks/oasis/invoices.js?id=e9fae2fa1a4c4d617abc",
"/chunks/oasis/invoices/list.js": "/chunks/oasis/invoices/list.js?id=3539c5b93ef27718693c",
"/chunks/oasis/invoices/list.js": "/chunks/oasis/invoices/list.js?id=6bcce9694bf5ad9a4071",
"/chunks/oasis/invoices~chunks/oasis/invoices/list.js": "/chunks/oasis/invoices~chunks/oasis/invoices/list.js?id=045d3dd7ce573cb7ed11",
"/chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared.js": "/chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared.js?id=c69c0503d09d1588f14a",
"/chunks/oasis/platba.js": "/chunks/oasis/platba.js?id=53d9f2a31b1dd5dad85e",
"/chunks/oasis/platba.js": "/chunks/oasis/platba.js?id=7342fc0606120d2be5cd",
"/chunks/oasis/platba~chunks/oasis/upgrade-billing~chunks/oasis/upgrade-plan~chunks/upgrade-billing~ch~6880400b.js": "/chunks/oasis/platba~chunks/oasis/upgrade-billing~chunks/oasis/upgrade-plan~chunks/upgrade-billing~ch~6880400b.js?id=0c8d1c3cca084baa177f",
"/chunks/oasis/sign-up.js": "/chunks/oasis/sign-up.js?id=e53eeb48ebabae259f9c",
"/chunks/oasis/upgrade-billing.js": "/chunks/oasis/upgrade-billing.js?id=b9cb16fc974049e52dea",
"/chunks/oasis/upgrade-plan.js": "/chunks/oasis/upgrade-plan.js?id=178d0ff676d80a801283",
"/chunks/oasis/user-create.js": "/chunks/oasis/user-create.js?id=a89b1e1f28c56db83e1c",
"/chunks/oasis/upgrade-billing.js": "/chunks/oasis/upgrade-billing.js?id=9f4c61725a23dafa9578",
"/chunks/oasis/upgrade-plan.js": "/chunks/oasis/upgrade-plan.js?id=d11d2ca82f6febaf6585",
"/chunks/oasis/user-create.js": "/chunks/oasis/user-create.js?id=b92866b26ca26f748eb0",
"/chunks/oasis/users.js": "/chunks/oasis/users.js?id=d15e1dd3ad4aa6cd8a77",
"/chunks/page-edit.js": "/chunks/page-edit.js?id=4c04e9f1bbecd8d1d9ba",
"/chunks/page-edit.js": "/chunks/page-edit.js?id=8c76394d5d9d015d2b9a",
"/chunks/pages.js": "/chunks/pages.js?id=92fb357054e594b5495f",
"/chunks/plan.js": "/chunks/plan.js?id=ac3046761e9083aa3053",
"/chunks/plan-create.js": "/chunks/plan-create.js?id=141de35578976276cecf",
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=83f21481a5fdfc2901eb",
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=e182f4b914566997837b",
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=08e2056bc3744b2ea8f9",
"/chunks/plan-create.js": "/chunks/plan-create.js?id=daf0345aeb34151e4118",
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=036086eaeeb4114ee218",
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=b7518eb50c305f40106c",
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=d98779c6d921b10aa35b",
"/chunks/plans.js": "/chunks/plans.js?id=5e1c668e35d2f04973b7",
"/chunks/platform.js": "/chunks/platform.js?id=f463eed74ce0e6852b6d",
"/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=ec633fb6ff41c34084c8",
"/chunks/profile.js": "/chunks/profile.js?id=246a48f7c4323e31f8ab",
"/chunks/platform.js": "/chunks/platform.js?id=d1277ee7b681fdf85536",
"/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=62fe3050abaf0c3c0bf6",
"/chunks/profile.js": "/chunks/profile.js?id=3f4a04cf45140de2d353",
"/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=d0a44ee2cc3e9882c14a",
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=a1e46acc22ce82b2a61b",
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=4873b06c3bbca3fe2c36",
"/chunks/settings.js": "/chunks/settings.js?id=fcc97a29894164e2977c",
"/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=88849e6ddce9226d49a5",
"/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=444b9bbc310647ddd297",
"/chunks/settings-password.js": "/chunks/settings-password.js?id=0b4940f63a3b1f101f2b",
"/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=3bc709a228c0849a6f62",
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=0c243c68b17ca976d05a",
"/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=22e5c49d5b0a154e1a28",
"/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=fe68550d38a112913ebf",
"/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=26a4586e7a009498089d",
"/chunks/settings-password.js": "/chunks/settings-password.js?id=ee385e7f6e081e743747",
"/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=004f5747d985203feead",
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=3763d6291aa27e295a81",
"/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=d44d995362fe6567fc11",
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=c6b88005b133268ed88f",
"/chunks/shared.js": "/chunks/shared.js?id=df4e059dc1a64631449b",
"/chunks/shared-files.js": "/chunks/shared-files.js?id=8d6ff3bdf8b295fde3d0",
@@ -91,19 +91,19 @@
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=e8aedb75df7fe227d693",
"/chunks/sign-in.js": "/chunks/sign-in.js?id=1d2f0d12e71a2eae51f1",
"/chunks/sign-up.js": "/chunks/sign-up.js?id=ce15b1156cf37c0a9703",
"/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=64b25ff5fc21872e65cd",
"/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=1d77583cf573b739bf3c",
"/chunks/subscription-service.js": "/chunks/subscription-service.js?id=4d93776ddf0f1316227d",
"/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=cc5cee225c9b991e6639",
"/chunks/upgrade-plan.js": "/chunks/upgrade-plan.js?id=35179531a8241da128e9",
"/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=625965dfa8e54f0dce27",
"/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=0a7747254651cd28f5ce",
"/chunks/subscription-service.js": "/chunks/subscription-service.js?id=7011390fa6d368070d72",
"/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=26144c988c5fd039063d",
"/chunks/upgrade-plan.js": "/chunks/upgrade-plan.js?id=3af1d269f965e2e96667",
"/chunks/user.js": "/chunks/user.js?id=3090bfd5b85dd1b200ec",
"/chunks/user-create.js": "/chunks/user-create.js?id=a5e92d00b10189a712ec",
"/chunks/user-delete.js": "/chunks/user-delete.js?id=c3828c45d2367c5c75a4",
"/chunks/user-detail.js": "/chunks/user-detail.js?id=a5ceeb9373890b4d63f9",
"/chunks/user-invoices.js": "/chunks/user-invoices.js?id=6c4d0e9e058be11dc1f7",
"/chunks/user-password.js": "/chunks/user-password.js?id=fe2ea78be05401df11f5",
"/chunks/user-storage.js": "/chunks/user-storage.js?id=645592521781ca72469f",
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=99efdd410910267db66e",
"/chunks/user-create.js": "/chunks/user-create.js?id=e35954f93387d19e2af1",
"/chunks/user-delete.js": "/chunks/user-delete.js?id=e0a21bf581174db8d1fc",
"/chunks/user-detail.js": "/chunks/user-detail.js?id=6ceb11112e0de1604059",
"/chunks/user-invoices.js": "/chunks/user-invoices.js?id=abd36681660855f5380c",
"/chunks/user-password.js": "/chunks/user-password.js?id=ced94ddfbe92410268c8",
"/chunks/user-storage.js": "/chunks/user-storage.js?id=58bd799e585327fe02d3",
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=32b823b73166fcaf70c4",
"/chunks/users.js": "/chunks/users.js?id=178dc8d8c83a43d6e77f",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~d5ccfc07.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~d5ccfc07.js?id=2b62263afbefba53c9c6",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~f0e94b19.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~f0e94b19.js?id=d57479525cd6baaf09f3",
@@ -115,7 +115,7 @@
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~d4164210.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~d4164210.js?id=e3ee9bacf6ea805729dc",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~d0bdaad8.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~d0bdaad8.js?id=20fd8e1ff0fbbb883a9e",
"/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chun~d23b1aac.js": "/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chun~d23b1aac.js?id=01ab356d3c9ba1175149",
"/chunks/oasis/invoices/profile.js": "/chunks/oasis/invoices/profile.js?id=a2790bc4b13957a56133",
"/chunks/oasis/invoices/profile.js": "/chunks/oasis/invoices/profile.js?id=0eddc87a4e13df9a457c",
"/chunks/oasis/invoices/profile~chunks/profile~chunks/settings-password.js": "/chunks/oasis/invoices/profile~chunks/profile~chunks/settings-password.js?id=5f7a7e52edee7c45c2fe",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~12116e2d.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~12116e2d.js?id=1f7ca53e6cba768de852",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~8cdffba1.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~8cdffba1.js?id=f35fc78322dc4eb27c4e",
@@ -140,7 +140,7 @@
"/chunks/admin~chunks/files~chunks/oasis/invoices~chunks/settings~chunks/shared-files~chunks/shared/fi~41abd910.js": "/chunks/admin~chunks/files~chunks/oasis/invoices~chunks/settings~chunks/shared-files~chunks/shared/fi~41abd910.js?id=c804f9bf9138c4da52e9",
"/chunks/admin~chunks/oasis/invoices~chunks/platform.js": "/chunks/admin~chunks/oasis/invoices~chunks/platform.js?id=022bd4e56166d844c3b0",
"/chunks/admin~chunks/oasis/invoices~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/oasis/invoices~chunks/platform~chunks/shared.js?id=073522656c63224e16a6",
"/chunks/files~chunks/oasis/invoices~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/f~9f6a6eef.js": "/chunks/files~chunks/oasis/invoices~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/f~9f6a6eef.js?id=9bc0d89f45dff1feb308",
"/chunks/files~chunks/oasis/invoices~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/f~9f6a6eef.js": "/chunks/files~chunks/oasis/invoices~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/f~9f6a6eef.js?id=057eb6f27336a73fdb05",
"/chunks/files~chunks/shared-files~chunks/shared/file-browser.54fd2076f822088606df.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared/file-browser.54fd2076f822088606df.hot-update.js",
"/chunks/oasis/invoices.54fd2076f822088606df.hot-update.js": "/chunks/oasis/invoices.54fd2076f822088606df.hot-update.js",
"/chunks/oasis/invoices/list.54fd2076f822088606df.hot-update.js": "/chunks/oasis/invoices/list.54fd2076f822088606df.hot-update.js",
@@ -228,7 +228,7 @@
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.56333ed0db26ca1f2dde.hot-update.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.56333ed0db26ca1f2dde.hot-update.js",
"/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chun~fab98574.js": "/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chun~fab98574.js?id=f019c9e6df2021c93987",
"/chunks/app-setup.56333ed0db26ca1f2dde.hot-update.js": "/chunks/app-setup.56333ed0db26ca1f2dde.hot-update.js",
"/chunks/oasis/invoices/create-client.js": "/chunks/oasis/invoices/create-client.js?id=4122a36778e8c8414349",
"/chunks/oasis/invoices/create-client.js": "/chunks/oasis/invoices/create-client.js?id=2fcc780e820fac14faec",
"/chunks/oasis/invoices/profile.56333ed0db26ca1f2dde.hot-update.js": "/chunks/oasis/invoices/profile.56333ed0db26ca1f2dde.hot-update.js",
"/chunks/oasis/user-create.56333ed0db26ca1f2dde.hot-update.js": "/chunks/oasis/user-create.56333ed0db26ca1f2dde.hot-update.js",
"/chunks/plan-create.56333ed0db26ca1f2dde.hot-update.js": "/chunks/plan-create.56333ed0db26ca1f2dde.hot-update.js",
@@ -373,7 +373,7 @@
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~2e0b85bd.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~2e0b85bd.js?id=d4fb46f05374a298ac1b",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~656c73cf.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~656c73cf.js?id=b5367092d1c1415c1722",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~c329baf3.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~c329baf3.js?id=917423b1c6ec5a0c7435",
"/chunks/oasis/invoices/client-detail.js": "/chunks/oasis/invoices/client-detail.js?id=36e25777f8a5acaecb41",
"/chunks/oasis/invoices/client-detail.js": "/chunks/oasis/invoices/client-detail.js?id=c86a098206ec15cbcd01",
"/chunks/oasis/invoices/create-client.325efc07b9e6afd90e4a.hot-update.js": "/chunks/oasis/invoices/create-client.325efc07b9e6afd90e4a.hot-update.js",
"/chunks/oasis/invoices/create-client~chunks/oasis/invoices/profile~chunks/profile~chunks/settings-password.js": "/chunks/oasis/invoices/create-client~chunks/oasis/invoices/profile~chunks/profile~chunks/settings-password.js?id=7fcd6de960c52c5d0c5c",
"/chunks/oasis/invoices/list.325efc07b9e6afd90e4a.hot-update.js": "/chunks/oasis/invoices/list.325efc07b9e6afd90e4a.hot-update.js",
@@ -437,7 +437,7 @@
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~2e1d0044.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~2e1d0044.js?id=7c1507c48bdb1e99af77",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~477d1d8f.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~477d1d8f.js?id=59621032c5dcceae7e47",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~a98b1a0e.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~a98b1a0e.js?id=6bf0e1b64f73e663a621",
"/chunks/oasis/invoices/client-invoices.js": "/chunks/oasis/invoices/client-invoices.js?id=64985b1d62caef8c4848",
"/chunks/oasis/invoices/client-invoices.js": "/chunks/oasis/invoices/client-invoices.js?id=0cd6947a4edf8a3bc644",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~3fc458f1.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~3fc458f1.js?id=fdbb65c6c6f217a4d5b8",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~4ee7ad30.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~4ee7ad30.js?id=2e16bdf5ea299297e2ff",
"/js/main.7106615f8bf3723b0c18.hot-update.js": "/js/main.7106615f8bf3723b0c18.hot-update.js",
@@ -513,5 +513,520 @@
"/chunks/oasis/invoices/list.be32b6b52b65889643f5.hot-update.js": "/chunks/oasis/invoices/list.be32b6b52b65889643f5.hot-update.js",
"/chunks/oasis/invoices/list.d7d6786df8c9c46beb12.hot-update.js": "/chunks/oasis/invoices/list.d7d6786df8c9c46beb12.hot-update.js",
"/chunks/oasis/invoices/list.21d16259a86456f8142e.hot-update.js": "/chunks/oasis/invoices/list.21d16259a86456f8142e.hot-update.js",
"/chunks/oasis/invoices~chunks/platform~chunks/shared.409bd2372db7e64b7bf4.hot-update.js": "/chunks/oasis/invoices~chunks/platform~chunks/shared.409bd2372db7e64b7bf4.hot-update.js"
"/chunks/oasis/invoices~chunks/platform~chunks/shared.409bd2372db7e64b7bf4.hot-update.js": "/chunks/oasis/invoices~chunks/platform~chunks/shared.409bd2372db7e64b7bf4.hot-update.js",
"/js/main.f62cd2b0fb624d17439d.hot-update.js": "/js/main.f62cd2b0fb624d17439d.hot-update.js",
"/chunks/oasis/invoices/create-client.bf6559a05417b2d40137.hot-update.js": "/chunks/oasis/invoices/create-client.bf6559a05417b2d40137.hot-update.js",
"/js/main.86afcb86fb75783c1314.hot-update.js": "/js/main.86afcb86fb75783c1314.hot-update.js",
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.js?id=561bbeab3ee2be3482d1",
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~968e2d44.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~968e2d44.js?id=e84800d9aeaa44d365c5",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~2a5ca68e.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~2a5ca68e.js?id=771de1e2bb3ed5fb60dc",
"/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chun~860c81f3.js": "/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chun~860c81f3.js?id=32f0f57fa68fadd9ab6d",
"/chunks/oasis/invoices/create-invoice.js": "/chunks/oasis/invoices/create-invoice.js?id=cd7a5cafbf89c7f35a0c",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~7e795377.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~7e795377.js?id=fa4b880e7f3c8341dab9",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~a77ef2b6.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~a77ef2b6.js?id=d08013f096cb8da8d64c",
"/chunks/oasis/invoices/create-invoice.af28df2889827b6ef0fa.hot-update.js": "/chunks/oasis/invoices/create-invoice.af28df2889827b6ef0fa.hot-update.js",
"/chunks/oasis/invoices/create-invoice.b8549fcc8319d4cbb88c.hot-update.js": "/chunks/oasis/invoices/create-invoice.b8549fcc8319d4cbb88c.hot-update.js",
"/chunks/oasis/invoices/create-invoice.4229f5729fb269979cc6.hot-update.js": "/chunks/oasis/invoices/create-invoice.4229f5729fb269979cc6.hot-update.js",
"/chunks/oasis/invoices/list.55c697758ff4c3998826.hot-update.js": "/chunks/oasis/invoices/list.55c697758ff4c3998826.hot-update.js",
"/chunks/oasis/invoices/create-invoice.2f00dce780ecb7727705.hot-update.js": "/chunks/oasis/invoices/create-invoice.2f00dce780ecb7727705.hot-update.js",
"/chunks/oasis/invoices/create-invoice.79b8aedcbe32113d4fc8.hot-update.js": "/chunks/oasis/invoices/create-invoice.79b8aedcbe32113d4fc8.hot-update.js",
"/chunks/oasis/invoices/create-invoice.b7e2192ec13802cef631.hot-update.js": "/chunks/oasis/invoices/create-invoice.b7e2192ec13802cef631.hot-update.js",
"/chunks/oasis/invoices/create-client.b9e162012c64825c5b2a.hot-update.js": "/chunks/oasis/invoices/create-client.b9e162012c64825c5b2a.hot-update.js",
"/chunks/oasis/invoices/create-invoice.a72887400f810247dd08.hot-update.js": "/chunks/oasis/invoices/create-invoice.a72887400f810247dd08.hot-update.js",
"/chunks/oasis/invoices/create-invoice.7ec17ff4e59b6060ada0.hot-update.js": "/chunks/oasis/invoices/create-invoice.7ec17ff4e59b6060ada0.hot-update.js",
"/chunks/oasis/invoices/create-invoice.3417f2bb772c8d0813d8.hot-update.js": "/chunks/oasis/invoices/create-invoice.3417f2bb772c8d0813d8.hot-update.js",
"/chunks/oasis/invoices/create-invoice.ee3f301ec000db79bce3.hot-update.js": "/chunks/oasis/invoices/create-invoice.ee3f301ec000db79bce3.hot-update.js",
"/chunks/oasis/invoices/create-invoice.07645819690b152b8c5c.hot-update.js": "/chunks/oasis/invoices/create-invoice.07645819690b152b8c5c.hot-update.js",
"/chunks/oasis/invoices/create-invoice.dcfc9fdc5a0aef85c335.hot-update.js": "/chunks/oasis/invoices/create-invoice.dcfc9fdc5a0aef85c335.hot-update.js",
"/chunks/oasis/invoices/create-invoice.ea5f136920c9fe47077c.hot-update.js": "/chunks/oasis/invoices/create-invoice.ea5f136920c9fe47077c.hot-update.js",
"/chunks/oasis/invoices/create-invoice.debb0967df2f1a5b014c.hot-update.js": "/chunks/oasis/invoices/create-invoice.debb0967df2f1a5b014c.hot-update.js",
"/chunks/oasis/invoices/create-invoice.7c0cf9387db1116a4e2b.hot-update.js": "/chunks/oasis/invoices/create-invoice.7c0cf9387db1116a4e2b.hot-update.js",
"/chunks/oasis/invoices/create-invoice.efc7678551de5a48c7cd.hot-update.js": "/chunks/oasis/invoices/create-invoice.efc7678551de5a48c7cd.hot-update.js",
"/chunks/oasis/invoices/create-invoice.3993654378e46369d1cb.hot-update.js": "/chunks/oasis/invoices/create-invoice.3993654378e46369d1cb.hot-update.js",
"/chunks/oasis/invoices/create-invoice.f3c285e060f57d5732e0.hot-update.js": "/chunks/oasis/invoices/create-invoice.f3c285e060f57d5732e0.hot-update.js",
"/chunks/oasis/invoices/create-invoice.d8dd535f260d44ede228.hot-update.js": "/chunks/oasis/invoices/create-invoice.d8dd535f260d44ede228.hot-update.js",
"/chunks/oasis/invoices/create-invoice.bb4ee333dac41d043dba.hot-update.js": "/chunks/oasis/invoices/create-invoice.bb4ee333dac41d043dba.hot-update.js",
"/chunks/oasis/invoices/create-invoice.60a3b1e6e0a0b2302492.hot-update.js": "/chunks/oasis/invoices/create-invoice.60a3b1e6e0a0b2302492.hot-update.js",
"/chunks/oasis/invoices/create-invoice.cd9489e0e55cb5c49e9c.hot-update.js": "/chunks/oasis/invoices/create-invoice.cd9489e0e55cb5c49e9c.hot-update.js",
"/chunks/oasis/invoices/create-invoice.b82ca8859d851104bbda.hot-update.js": "/chunks/oasis/invoices/create-invoice.b82ca8859d851104bbda.hot-update.js",
"/chunks/oasis/invoices/create-invoice.cea05478e5b344032f7c.hot-update.js": "/chunks/oasis/invoices/create-invoice.cea05478e5b344032f7c.hot-update.js",
"/chunks/oasis/invoices/create-invoice.49d6304be673c5d9d2d5.hot-update.js": "/chunks/oasis/invoices/create-invoice.49d6304be673c5d9d2d5.hot-update.js",
"/chunks/oasis/invoices/create-invoice.974223fe49441c968d33.hot-update.js": "/chunks/oasis/invoices/create-invoice.974223fe49441c968d33.hot-update.js",
"/chunks/oasis/invoices/create-invoice.6620204dcd4c590ea01c.hot-update.js": "/chunks/oasis/invoices/create-invoice.6620204dcd4c590ea01c.hot-update.js",
"/chunks/oasis/invoices/create-invoice.61e4f33249a30ade0767.hot-update.js": "/chunks/oasis/invoices/create-invoice.61e4f33249a30ade0767.hot-update.js",
"/chunks/oasis/invoices/create-invoice.1dafde421a1e3a44c966.hot-update.js": "/chunks/oasis/invoices/create-invoice.1dafde421a1e3a44c966.hot-update.js",
"/chunks/oasis/invoices/create-invoice.897f195fbf60e050a7aa.hot-update.js": "/chunks/oasis/invoices/create-invoice.897f195fbf60e050a7aa.hot-update.js",
"/chunks/oasis/invoices/create-invoice.124f7631698cfbf76a8e.hot-update.js": "/chunks/oasis/invoices/create-invoice.124f7631698cfbf76a8e.hot-update.js",
"/chunks/oasis/invoices/create-invoice.f521494ec6c46def8e69.hot-update.js": "/chunks/oasis/invoices/create-invoice.f521494ec6c46def8e69.hot-update.js",
"/chunks/oasis/invoices/create-invoice.49805278b8d983bd2856.hot-update.js": "/chunks/oasis/invoices/create-invoice.49805278b8d983bd2856.hot-update.js",
"/chunks/oasis/invoices/create-invoice.d2cee83906aa75436fde.hot-update.js": "/chunks/oasis/invoices/create-invoice.d2cee83906aa75436fde.hot-update.js",
"/chunks/oasis/invoices/create-invoice.fa073232ef5cc42acb3b.hot-update.js": "/chunks/oasis/invoices/create-invoice.fa073232ef5cc42acb3b.hot-update.js",
"/chunks/oasis/invoices/create-invoice.c443217b44085dc905ad.hot-update.js": "/chunks/oasis/invoices/create-invoice.c443217b44085dc905ad.hot-update.js",
"/chunks/oasis/invoices/create-invoice.dedad020cb9492c838b0.hot-update.js": "/chunks/oasis/invoices/create-invoice.dedad020cb9492c838b0.hot-update.js",
"/chunks/oasis/invoices/create-invoice.e0289b73cfd2a9011795.hot-update.js": "/chunks/oasis/invoices/create-invoice.e0289b73cfd2a9011795.hot-update.js",
"/chunks/oasis/invoices/create-invoice.3f0414a472d6c9cb1e4e.hot-update.js": "/chunks/oasis/invoices/create-invoice.3f0414a472d6c9cb1e4e.hot-update.js",
"/chunks/oasis/invoices/create-invoice.96376cd503d06e3f93b8.hot-update.js": "/chunks/oasis/invoices/create-invoice.96376cd503d06e3f93b8.hot-update.js",
"/chunks/oasis/invoices/create-invoice.bcf15fae197cce8c0e8e.hot-update.js": "/chunks/oasis/invoices/create-invoice.bcf15fae197cce8c0e8e.hot-update.js",
"/chunks/oasis/invoices/create-invoice.c6e04ddd28bc5709721c.hot-update.js": "/chunks/oasis/invoices/create-invoice.c6e04ddd28bc5709721c.hot-update.js",
"/chunks/oasis/invoices/create-invoice.4e471ff378f92df0435c.hot-update.js": "/chunks/oasis/invoices/create-invoice.4e471ff378f92df0435c.hot-update.js",
"/chunks/oasis/invoices/create-invoice.34690e54ef825bb0183f.hot-update.js": "/chunks/oasis/invoices/create-invoice.34690e54ef825bb0183f.hot-update.js",
"/chunks/oasis/invoices/create-invoice.cc9c611009d5950e46ab.hot-update.js": "/chunks/oasis/invoices/create-invoice.cc9c611009d5950e46ab.hot-update.js",
"/chunks/oasis/invoices/create-invoice.ce0553d1c024c0527847.hot-update.js": "/chunks/oasis/invoices/create-invoice.ce0553d1c024c0527847.hot-update.js",
"/chunks/oasis/invoices/create-invoice.10cfcf77472c7893c81c.hot-update.js": "/chunks/oasis/invoices/create-invoice.10cfcf77472c7893c81c.hot-update.js",
"/chunks/oasis/invoices/create-invoice.08722547b64c139bb862.hot-update.js": "/chunks/oasis/invoices/create-invoice.08722547b64c139bb862.hot-update.js",
"/chunks/oasis/invoices/create-invoice.9f39dd1d88dcb10de98b.hot-update.js": "/chunks/oasis/invoices/create-invoice.9f39dd1d88dcb10de98b.hot-update.js",
"/chunks/oasis/invoices/create-invoice.9ae9bbd0b5088b7da9f1.hot-update.js": "/chunks/oasis/invoices/create-invoice.9ae9bbd0b5088b7da9f1.hot-update.js",
"/chunks/oasis/invoices/create-invoice.b2414d0b823871266f9a.hot-update.js": "/chunks/oasis/invoices/create-invoice.b2414d0b823871266f9a.hot-update.js",
"/js/main.5f42452061d4d2071b2d.hot-update.js": "/js/main.5f42452061d4d2071b2d.hot-update.js",
"/chunks/files~chunks/oasis/invoices/create-invoice~chunks/oasis/invoices/list~chunks/oasis/platba~chu~30ede405.js": "/chunks/files~chunks/oasis/invoices/create-invoice~chunks/oasis/invoices/list~chunks/oasis/platba~chu~30ede405.js?id=6121186108bdbc32c8c6",
"/chunks/oasis/invoices/create-invoice.5f42452061d4d2071b2d.hot-update.js": "/chunks/oasis/invoices/create-invoice.5f42452061d4d2071b2d.hot-update.js",
"/chunks/oasis/invoices/create-invoice.034bdd7c8fef632cf3f5.hot-update.js": "/chunks/oasis/invoices/create-invoice.034bdd7c8fef632cf3f5.hot-update.js",
"/js/main.b6b9b7610de5320585d8.hot-update.js": "/js/main.b6b9b7610de5320585d8.hot-update.js",
"/chunks/oasis/invoices/create-invoice.b6b9b7610de5320585d8.hot-update.js": "/chunks/oasis/invoices/create-invoice.b6b9b7610de5320585d8.hot-update.js",
"/chunks/oasis/invoices/create-invoice.aef22d0d205b11c46a8a.hot-update.js": "/chunks/oasis/invoices/create-invoice.aef22d0d205b11c46a8a.hot-update.js",
"/chunks/oasis/invoices/create-client.255a3df73ae67e212042.hot-update.js": "/chunks/oasis/invoices/create-client.255a3df73ae67e212042.hot-update.js",
"/chunks/oasis/invoices/create-client.fbaf0cf0a72a77f3acc0.hot-update.js": "/chunks/oasis/invoices/create-client.fbaf0cf0a72a77f3acc0.hot-update.js",
"/chunks/oasis/invoices/create-invoice.362bff9f07094a7a89aa.hot-update.js": "/chunks/oasis/invoices/create-invoice.362bff9f07094a7a89aa.hot-update.js",
"/chunks/oasis/invoices/create-invoice.98249585201aaee1676e.hot-update.js": "/chunks/oasis/invoices/create-invoice.98249585201aaee1676e.hot-update.js",
"/chunks/oasis/invoices/create-invoice.b41cd224ed8d2399c8a3.hot-update.js": "/chunks/oasis/invoices/create-invoice.b41cd224ed8d2399c8a3.hot-update.js",
"/chunks/oasis/invoices/create-invoice.79d08f05ea56460c50af.hot-update.js": "/chunks/oasis/invoices/create-invoice.79d08f05ea56460c50af.hot-update.js",
"/chunks/oasis/invoices/create-invoice.c0e1a074a12606c7a7ad.hot-update.js": "/chunks/oasis/invoices/create-invoice.c0e1a074a12606c7a7ad.hot-update.js",
"/chunks/oasis/invoices/create-invoice.381d20c0fefa075782b0.hot-update.js": "/chunks/oasis/invoices/create-invoice.381d20c0fefa075782b0.hot-update.js",
"/chunks/oasis/invoices/create-invoice.c441c599ab64fe905834.hot-update.js": "/chunks/oasis/invoices/create-invoice.c441c599ab64fe905834.hot-update.js",
"/chunks/oasis/invoices/create-invoice.aa99ad9f1acaded40074.hot-update.js": "/chunks/oasis/invoices/create-invoice.aa99ad9f1acaded40074.hot-update.js",
"/chunks/oasis/invoices/create-invoice.e85cd1e3dc04a5a938dd.hot-update.js": "/chunks/oasis/invoices/create-invoice.e85cd1e3dc04a5a938dd.hot-update.js",
"/chunks/oasis/invoices/create-invoice.f800e033fe24353f6b06.hot-update.js": "/chunks/oasis/invoices/create-invoice.f800e033fe24353f6b06.hot-update.js",
"/chunks/oasis/invoices/create-invoice.7d83e11abbc382961be5.hot-update.js": "/chunks/oasis/invoices/create-invoice.7d83e11abbc382961be5.hot-update.js",
"/chunks/oasis/invoices/create-invoice.749e01dacbe7a0c9bc82.hot-update.js": "/chunks/oasis/invoices/create-invoice.749e01dacbe7a0c9bc82.hot-update.js",
"/chunks/oasis/invoices/create-invoice.c81f5e989fb43ff87221.hot-update.js": "/chunks/oasis/invoices/create-invoice.c81f5e989fb43ff87221.hot-update.js",
"/chunks/oasis/invoices/create-invoice.ef7098422257f3d44616.hot-update.js": "/chunks/oasis/invoices/create-invoice.ef7098422257f3d44616.hot-update.js",
"/chunks/oasis/invoices/create-invoice.1ec03b5540742fdff39f.hot-update.js": "/chunks/oasis/invoices/create-invoice.1ec03b5540742fdff39f.hot-update.js",
"/js/main.cebcd6d24e7b472ad46d.hot-update.js": "/js/main.cebcd6d24e7b472ad46d.hot-update.js",
"/chunks/admin-account.88560a4d3a2c87969618.hot-update.js": "/chunks/admin-account.88560a4d3a2c87969618.hot-update.js",
"/chunks/app-setup.88560a4d3a2c87969618.hot-update.js": "/chunks/app-setup.88560a4d3a2c87969618.hot-update.js",
"/chunks/billings-detail.88560a4d3a2c87969618.hot-update.js": "/chunks/billings-detail.88560a4d3a2c87969618.hot-update.js",
"/chunks/database.88560a4d3a2c87969618.hot-update.js": "/chunks/database.88560a4d3a2c87969618.hot-update.js",
"/chunks/environment-setup.88560a4d3a2c87969618.hot-update.js": "/chunks/environment-setup.88560a4d3a2c87969618.hot-update.js",
"/chunks/installation-disclaimer.88560a4d3a2c87969618.hot-update.js": "/chunks/installation-disclaimer.88560a4d3a2c87969618.hot-update.js",
"/chunks/purchase-code.88560a4d3a2c87969618.hot-update.js": "/chunks/purchase-code.88560a4d3a2c87969618.hot-update.js",
"/chunks/stripe-credentials.88560a4d3a2c87969618.hot-update.js": "/chunks/stripe-credentials.88560a4d3a2c87969618.hot-update.js",
"/chunks/subscription-plans.88560a4d3a2c87969618.hot-update.js": "/chunks/subscription-plans.88560a4d3a2c87969618.hot-update.js",
"/chunks/subscription-service.88560a4d3a2c87969618.hot-update.js": "/chunks/subscription-service.88560a4d3a2c87969618.hot-update.js",
"/js/main.72716150fde3a2cded00.hot-update.js": "/js/main.72716150fde3a2cded00.hot-update.js",
"/chunks/oasis/invoices/create-invoice.47af75256f8640044009.hot-update.js": "/chunks/oasis/invoices/create-invoice.47af75256f8640044009.hot-update.js",
"/chunks/oasis/invoices/create-invoice.1a2909fd76241bf588ba.hot-update.js": "/chunks/oasis/invoices/create-invoice.1a2909fd76241bf588ba.hot-update.js",
"/chunks/oasis/invoices/create-invoice.aecaa3b759ba382d80b9.hot-update.js": "/chunks/oasis/invoices/create-invoice.aecaa3b759ba382d80b9.hot-update.js",
"/chunks/oasis/invoices/create-invoice.09312393fe357887f5b5.hot-update.js": "/chunks/oasis/invoices/create-invoice.09312393fe357887f5b5.hot-update.js",
"/chunks/oasis/invoices/create-invoice.b7c7cacd1f8ea6c2ccac.hot-update.js": "/chunks/oasis/invoices/create-invoice.b7c7cacd1f8ea6c2ccac.hot-update.js",
"/chunks/oasis/invoices/create-invoice.908c6d75ba393c646278.hot-update.js": "/chunks/oasis/invoices/create-invoice.908c6d75ba393c646278.hot-update.js",
"/chunks/oasis/invoices/create-invoice.47dcf49c597851e10c78.hot-update.js": "/chunks/oasis/invoices/create-invoice.47dcf49c597851e10c78.hot-update.js",
"/chunks/oasis/invoices/create-invoice.62872efa0a468601e833.hot-update.js": "/chunks/oasis/invoices/create-invoice.62872efa0a468601e833.hot-update.js",
"/js/main.9275b3542d719f86a20b.hot-update.js": "/js/main.9275b3542d719f86a20b.hot-update.js",
"/js/main.a04b60532210a46fb6f8.hot-update.js": "/js/main.a04b60532210a46fb6f8.hot-update.js",
"/js/main.b2fd1d8e033ee429c448.hot-update.js": "/js/main.b2fd1d8e033ee429c448.hot-update.js",
"/js/main.0e70e6e6cd4be9f6b928.hot-update.js": "/js/main.0e70e6e6cd4be9f6b928.hot-update.js",
"/js/main.3f4688aaeef0e94928a0.hot-update.js": "/js/main.3f4688aaeef0e94928a0.hot-update.js",
"/js/main.bd10803e6d0e555473ed.hot-update.js": "/js/main.bd10803e6d0e555473ed.hot-update.js",
"/js/main.dd1c34fb66c34d5f6b15.hot-update.js": "/js/main.dd1c34fb66c34d5f6b15.hot-update.js",
"/js/main.6d6164f36e7bd0730be2.hot-update.js": "/js/main.6d6164f36e7bd0730be2.hot-update.js",
"/js/main.a26c052a9f595cb8cfba.hot-update.js": "/js/main.a26c052a9f595cb8cfba.hot-update.js",
"/js/main.1ff9326d725785d197f3.hot-update.js": "/js/main.1ff9326d725785d197f3.hot-update.js",
"/js/main.c67933aebaf4baee8685.hot-update.js": "/js/main.c67933aebaf4baee8685.hot-update.js",
"/js/main.20ceb81a5bd42434b558.hot-update.js": "/js/main.20ceb81a5bd42434b558.hot-update.js",
"/js/main.e20e9706575902705df2.hot-update.js": "/js/main.e20e9706575902705df2.hot-update.js",
"/js/main.354f2b4c3e134c97c495.hot-update.js": "/js/main.354f2b4c3e134c97c495.hot-update.js",
"/js/main.484889c448458bf796d0.hot-update.js": "/js/main.484889c448458bf796d0.hot-update.js",
"/js/main.310be9d9f4c557fc68d2.hot-update.js": "/js/main.310be9d9f4c557fc68d2.hot-update.js",
"/js/main.ec4b7d34d113c2edb695.hot-update.js": "/js/main.ec4b7d34d113c2edb695.hot-update.js",
"/js/main.28b03d4e4e0ac687d281.hot-update.js": "/js/main.28b03d4e4e0ac687d281.hot-update.js",
"/js/main.c7603d0104981f39529c.hot-update.js": "/js/main.c7603d0104981f39529c.hot-update.js",
"/js/main.89f4ac9d3308b3ec0e0e.hot-update.js": "/js/main.89f4ac9d3308b3ec0e0e.hot-update.js",
"/js/main.32fa13c71e997e39cd94.hot-update.js": "/js/main.32fa13c71e997e39cd94.hot-update.js",
"/js/main.e1983d71410ede5827a6.hot-update.js": "/js/main.e1983d71410ede5827a6.hot-update.js",
"/js/main.d639165262b461e8dd15.hot-update.js": "/js/main.d639165262b461e8dd15.hot-update.js",
"/js/main.fb06c36e8d2b2b242746.hot-update.js": "/js/main.fb06c36e8d2b2b242746.hot-update.js",
"/chunks/oasis/invoices/create-invoice.cdcf9ac0d9f475a92722.hot-update.js": "/chunks/oasis/invoices/create-invoice.cdcf9ac0d9f475a92722.hot-update.js",
"/js/main.30c25418e2998799b7f2.hot-update.js": "/js/main.30c25418e2998799b7f2.hot-update.js",
"/js/main.0041286b349765324870.hot-update.js": "/js/main.0041286b349765324870.hot-update.js",
"/chunks/oasis/invoices/create-invoice.558268cbccd9095b0c5a.hot-update.js": "/chunks/oasis/invoices/create-invoice.558268cbccd9095b0c5a.hot-update.js",
"/js/main.78208d0d7dbf008d0ffa.hot-update.js": "/js/main.78208d0d7dbf008d0ffa.hot-update.js",
"/chunks/oasis/invoices/create-invoice.8ebe1624f02437440a05.hot-update.js": "/chunks/oasis/invoices/create-invoice.8ebe1624f02437440a05.hot-update.js",
"/js/main.48d55706b2d00c9e0bc1.hot-update.js": "/js/main.48d55706b2d00c9e0bc1.hot-update.js",
"/js/main.a5af068e48572b24365f.hot-update.js": "/js/main.a5af068e48572b24365f.hot-update.js",
"/js/main.0d7f2545801b0a8d9cd1.hot-update.js": "/js/main.0d7f2545801b0a8d9cd1.hot-update.js",
"/js/main.d8752727fa796d9451b7.hot-update.js": "/js/main.d8752727fa796d9451b7.hot-update.js",
"/chunks/oasis/invoices/create-invoice.7b3186f2b9c9d20c6f47.hot-update.js": "/chunks/oasis/invoices/create-invoice.7b3186f2b9c9d20c6f47.hot-update.js",
"/chunks/oasis/invoices/create-invoice.6cff858b0bbfca750692.hot-update.js": "/chunks/oasis/invoices/create-invoice.6cff858b0bbfca750692.hot-update.js",
"/js/main.259037b8a3c77a702136.hot-update.js": "/js/main.259037b8a3c77a702136.hot-update.js",
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.edb4a0086f2a269d1209.hot-update.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.edb4a0086f2a269d1209.hot-update.js",
"/chunks/app-language.edb4a0086f2a269d1209.hot-update.js": "/chunks/app-language.edb4a0086f2a269d1209.hot-update.js",
"/chunks/billings-detail.edb4a0086f2a269d1209.hot-update.js": "/chunks/billings-detail.edb4a0086f2a269d1209.hot-update.js",
"/chunks/database.edb4a0086f2a269d1209.hot-update.js": "/chunks/database.edb4a0086f2a269d1209.hot-update.js",
"/chunks/environment-setup.edb4a0086f2a269d1209.hot-update.js": "/chunks/environment-setup.edb4a0086f2a269d1209.hot-update.js",
"/chunks/installation-disclaimer.edb4a0086f2a269d1209.hot-update.js": "/chunks/installation-disclaimer.edb4a0086f2a269d1209.hot-update.js",
"/chunks/oasis/invoices/create-invoice.edb4a0086f2a269d1209.hot-update.js": "/chunks/oasis/invoices/create-invoice.edb4a0086f2a269d1209.hot-update.js",
"/chunks/oasis/platba.edb4a0086f2a269d1209.hot-update.js": "/chunks/oasis/platba.edb4a0086f2a269d1209.hot-update.js",
"/chunks/oasis/upgrade-billing.edb4a0086f2a269d1209.hot-update.js": "/chunks/oasis/upgrade-billing.edb4a0086f2a269d1209.hot-update.js",
"/chunks/page-edit.edb4a0086f2a269d1209.hot-update.js": "/chunks/page-edit.edb4a0086f2a269d1209.hot-update.js",
"/chunks/plan-delete.edb4a0086f2a269d1209.hot-update.js": "/chunks/plan-delete.edb4a0086f2a269d1209.hot-update.js",
"/chunks/plan-settings.edb4a0086f2a269d1209.hot-update.js": "/chunks/plan-settings.edb4a0086f2a269d1209.hot-update.js",
"/chunks/profile.edb4a0086f2a269d1209.hot-update.js": "/chunks/profile.edb4a0086f2a269d1209.hot-update.js",
"/chunks/settings-create-payment-methods.edb4a0086f2a269d1209.hot-update.js": "/chunks/settings-create-payment-methods.edb4a0086f2a269d1209.hot-update.js",
"/chunks/settings-invoices.edb4a0086f2a269d1209.hot-update.js": "/chunks/settings-invoices.edb4a0086f2a269d1209.hot-update.js",
"/chunks/settings-password.edb4a0086f2a269d1209.hot-update.js": "/chunks/settings-password.edb4a0086f2a269d1209.hot-update.js",
"/chunks/settings-payment-methods.edb4a0086f2a269d1209.hot-update.js": "/chunks/settings-payment-methods.edb4a0086f2a269d1209.hot-update.js",
"/chunks/settings-storage.edb4a0086f2a269d1209.hot-update.js": "/chunks/settings-storage.edb4a0086f2a269d1209.hot-update.js",
"/chunks/settings-subscription.edb4a0086f2a269d1209.hot-update.js": "/chunks/settings-subscription.edb4a0086f2a269d1209.hot-update.js",
"/chunks/stripe-credentials.edb4a0086f2a269d1209.hot-update.js": "/chunks/stripe-credentials.edb4a0086f2a269d1209.hot-update.js",
"/chunks/subscription-plans.edb4a0086f2a269d1209.hot-update.js": "/chunks/subscription-plans.edb4a0086f2a269d1209.hot-update.js",
"/chunks/upgrade-billing.edb4a0086f2a269d1209.hot-update.js": "/chunks/upgrade-billing.edb4a0086f2a269d1209.hot-update.js",
"/chunks/user-delete.edb4a0086f2a269d1209.hot-update.js": "/chunks/user-delete.edb4a0086f2a269d1209.hot-update.js",
"/chunks/user-detail.edb4a0086f2a269d1209.hot-update.js": "/chunks/user-detail.edb4a0086f2a269d1209.hot-update.js",
"/chunks/user-password.edb4a0086f2a269d1209.hot-update.js": "/chunks/user-password.edb4a0086f2a269d1209.hot-update.js",
"/chunks/user-storage.edb4a0086f2a269d1209.hot-update.js": "/chunks/user-storage.edb4a0086f2a269d1209.hot-update.js",
"/chunks/user-subscription.edb4a0086f2a269d1209.hot-update.js": "/chunks/user-subscription.edb4a0086f2a269d1209.hot-update.js",
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.d488e4e342671488f888.hot-update.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.d488e4e342671488f888.hot-update.js",
"/chunks/app-language.d488e4e342671488f888.hot-update.js": "/chunks/app-language.d488e4e342671488f888.hot-update.js",
"/chunks/billings-detail.d488e4e342671488f888.hot-update.js": "/chunks/billings-detail.d488e4e342671488f888.hot-update.js",
"/chunks/database.d488e4e342671488f888.hot-update.js": "/chunks/database.d488e4e342671488f888.hot-update.js",
"/chunks/environment-setup.d488e4e342671488f888.hot-update.js": "/chunks/environment-setup.d488e4e342671488f888.hot-update.js",
"/chunks/installation-disclaimer.d488e4e342671488f888.hot-update.js": "/chunks/installation-disclaimer.d488e4e342671488f888.hot-update.js",
"/chunks/oasis/platba.d488e4e342671488f888.hot-update.js": "/chunks/oasis/platba.d488e4e342671488f888.hot-update.js",
"/chunks/oasis/upgrade-billing.d488e4e342671488f888.hot-update.js": "/chunks/oasis/upgrade-billing.d488e4e342671488f888.hot-update.js",
"/chunks/page-edit.d488e4e342671488f888.hot-update.js": "/chunks/page-edit.d488e4e342671488f888.hot-update.js",
"/chunks/plan-delete.d488e4e342671488f888.hot-update.js": "/chunks/plan-delete.d488e4e342671488f888.hot-update.js",
"/chunks/plan-settings.d488e4e342671488f888.hot-update.js": "/chunks/plan-settings.d488e4e342671488f888.hot-update.js",
"/chunks/profile.d488e4e342671488f888.hot-update.js": "/chunks/profile.d488e4e342671488f888.hot-update.js",
"/chunks/settings-create-payment-methods.d488e4e342671488f888.hot-update.js": "/chunks/settings-create-payment-methods.d488e4e342671488f888.hot-update.js",
"/chunks/settings-invoices.d488e4e342671488f888.hot-update.js": "/chunks/settings-invoices.d488e4e342671488f888.hot-update.js",
"/chunks/settings-password.d488e4e342671488f888.hot-update.js": "/chunks/settings-password.d488e4e342671488f888.hot-update.js",
"/chunks/settings-payment-methods.d488e4e342671488f888.hot-update.js": "/chunks/settings-payment-methods.d488e4e342671488f888.hot-update.js",
"/chunks/settings-storage.d488e4e342671488f888.hot-update.js": "/chunks/settings-storage.d488e4e342671488f888.hot-update.js",
"/chunks/settings-subscription.d488e4e342671488f888.hot-update.js": "/chunks/settings-subscription.d488e4e342671488f888.hot-update.js",
"/chunks/stripe-credentials.d488e4e342671488f888.hot-update.js": "/chunks/stripe-credentials.d488e4e342671488f888.hot-update.js",
"/chunks/subscription-plans.d488e4e342671488f888.hot-update.js": "/chunks/subscription-plans.d488e4e342671488f888.hot-update.js",
"/chunks/upgrade-billing.d488e4e342671488f888.hot-update.js": "/chunks/upgrade-billing.d488e4e342671488f888.hot-update.js",
"/chunks/user-delete.d488e4e342671488f888.hot-update.js": "/chunks/user-delete.d488e4e342671488f888.hot-update.js",
"/chunks/user-detail.d488e4e342671488f888.hot-update.js": "/chunks/user-detail.d488e4e342671488f888.hot-update.js",
"/chunks/user-password.d488e4e342671488f888.hot-update.js": "/chunks/user-password.d488e4e342671488f888.hot-update.js",
"/chunks/user-storage.d488e4e342671488f888.hot-update.js": "/chunks/user-storage.d488e4e342671488f888.hot-update.js",
"/chunks/user-subscription.d488e4e342671488f888.hot-update.js": "/chunks/user-subscription.d488e4e342671488f888.hot-update.js",
"/chunks/oasis/invoices/create-invoice.3379d82f1c0deef86a6b.hot-update.js": "/chunks/oasis/invoices/create-invoice.3379d82f1c0deef86a6b.hot-update.js",
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.3febd44789c810aa66d6.hot-update.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.3febd44789c810aa66d6.hot-update.js",
"/chunks/app-language.3febd44789c810aa66d6.hot-update.js": "/chunks/app-language.3febd44789c810aa66d6.hot-update.js",
"/chunks/billings-detail.3febd44789c810aa66d6.hot-update.js": "/chunks/billings-detail.3febd44789c810aa66d6.hot-update.js",
"/chunks/database.3febd44789c810aa66d6.hot-update.js": "/chunks/database.3febd44789c810aa66d6.hot-update.js",
"/chunks/environment-setup.3febd44789c810aa66d6.hot-update.js": "/chunks/environment-setup.3febd44789c810aa66d6.hot-update.js",
"/chunks/installation-disclaimer.3febd44789c810aa66d6.hot-update.js": "/chunks/installation-disclaimer.3febd44789c810aa66d6.hot-update.js",
"/chunks/oasis/invoices/create-invoice.3febd44789c810aa66d6.hot-update.js": "/chunks/oasis/invoices/create-invoice.3febd44789c810aa66d6.hot-update.js",
"/chunks/oasis/platba.3febd44789c810aa66d6.hot-update.js": "/chunks/oasis/platba.3febd44789c810aa66d6.hot-update.js",
"/chunks/oasis/upgrade-billing.3febd44789c810aa66d6.hot-update.js": "/chunks/oasis/upgrade-billing.3febd44789c810aa66d6.hot-update.js",
"/chunks/page-edit.3febd44789c810aa66d6.hot-update.js": "/chunks/page-edit.3febd44789c810aa66d6.hot-update.js",
"/chunks/plan-delete.3febd44789c810aa66d6.hot-update.js": "/chunks/plan-delete.3febd44789c810aa66d6.hot-update.js",
"/chunks/plan-settings.3febd44789c810aa66d6.hot-update.js": "/chunks/plan-settings.3febd44789c810aa66d6.hot-update.js",
"/chunks/profile.3febd44789c810aa66d6.hot-update.js": "/chunks/profile.3febd44789c810aa66d6.hot-update.js",
"/chunks/settings-create-payment-methods.3febd44789c810aa66d6.hot-update.js": "/chunks/settings-create-payment-methods.3febd44789c810aa66d6.hot-update.js",
"/chunks/settings-invoices.3febd44789c810aa66d6.hot-update.js": "/chunks/settings-invoices.3febd44789c810aa66d6.hot-update.js",
"/chunks/settings-password.3febd44789c810aa66d6.hot-update.js": "/chunks/settings-password.3febd44789c810aa66d6.hot-update.js",
"/chunks/settings-payment-methods.3febd44789c810aa66d6.hot-update.js": "/chunks/settings-payment-methods.3febd44789c810aa66d6.hot-update.js",
"/chunks/settings-storage.3febd44789c810aa66d6.hot-update.js": "/chunks/settings-storage.3febd44789c810aa66d6.hot-update.js",
"/chunks/settings-subscription.3febd44789c810aa66d6.hot-update.js": "/chunks/settings-subscription.3febd44789c810aa66d6.hot-update.js",
"/chunks/stripe-credentials.3febd44789c810aa66d6.hot-update.js": "/chunks/stripe-credentials.3febd44789c810aa66d6.hot-update.js",
"/chunks/subscription-plans.3febd44789c810aa66d6.hot-update.js": "/chunks/subscription-plans.3febd44789c810aa66d6.hot-update.js",
"/chunks/upgrade-billing.3febd44789c810aa66d6.hot-update.js": "/chunks/upgrade-billing.3febd44789c810aa66d6.hot-update.js",
"/chunks/user-delete.3febd44789c810aa66d6.hot-update.js": "/chunks/user-delete.3febd44789c810aa66d6.hot-update.js",
"/chunks/user-detail.3febd44789c810aa66d6.hot-update.js": "/chunks/user-detail.3febd44789c810aa66d6.hot-update.js",
"/chunks/user-password.3febd44789c810aa66d6.hot-update.js": "/chunks/user-password.3febd44789c810aa66d6.hot-update.js",
"/chunks/user-storage.3febd44789c810aa66d6.hot-update.js": "/chunks/user-storage.3febd44789c810aa66d6.hot-update.js",
"/chunks/user-subscription.3febd44789c810aa66d6.hot-update.js": "/chunks/user-subscription.3febd44789c810aa66d6.hot-update.js",
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.625b17b00bd3f5c60366.hot-update.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.625b17b00bd3f5c60366.hot-update.js",
"/chunks/app-language.625b17b00bd3f5c60366.hot-update.js": "/chunks/app-language.625b17b00bd3f5c60366.hot-update.js",
"/chunks/billings-detail.625b17b00bd3f5c60366.hot-update.js": "/chunks/billings-detail.625b17b00bd3f5c60366.hot-update.js",
"/chunks/database.625b17b00bd3f5c60366.hot-update.js": "/chunks/database.625b17b00bd3f5c60366.hot-update.js",
"/chunks/environment-setup.625b17b00bd3f5c60366.hot-update.js": "/chunks/environment-setup.625b17b00bd3f5c60366.hot-update.js",
"/chunks/installation-disclaimer.625b17b00bd3f5c60366.hot-update.js": "/chunks/installation-disclaimer.625b17b00bd3f5c60366.hot-update.js",
"/chunks/oasis/platba.625b17b00bd3f5c60366.hot-update.js": "/chunks/oasis/platba.625b17b00bd3f5c60366.hot-update.js",
"/chunks/oasis/upgrade-billing.625b17b00bd3f5c60366.hot-update.js": "/chunks/oasis/upgrade-billing.625b17b00bd3f5c60366.hot-update.js",
"/chunks/page-edit.625b17b00bd3f5c60366.hot-update.js": "/chunks/page-edit.625b17b00bd3f5c60366.hot-update.js",
"/chunks/plan-delete.625b17b00bd3f5c60366.hot-update.js": "/chunks/plan-delete.625b17b00bd3f5c60366.hot-update.js",
"/chunks/plan-settings.625b17b00bd3f5c60366.hot-update.js": "/chunks/plan-settings.625b17b00bd3f5c60366.hot-update.js",
"/chunks/profile.625b17b00bd3f5c60366.hot-update.js": "/chunks/profile.625b17b00bd3f5c60366.hot-update.js",
"/chunks/settings-create-payment-methods.625b17b00bd3f5c60366.hot-update.js": "/chunks/settings-create-payment-methods.625b17b00bd3f5c60366.hot-update.js",
"/chunks/settings-invoices.625b17b00bd3f5c60366.hot-update.js": "/chunks/settings-invoices.625b17b00bd3f5c60366.hot-update.js",
"/chunks/settings-password.625b17b00bd3f5c60366.hot-update.js": "/chunks/settings-password.625b17b00bd3f5c60366.hot-update.js",
"/chunks/settings-payment-methods.625b17b00bd3f5c60366.hot-update.js": "/chunks/settings-payment-methods.625b17b00bd3f5c60366.hot-update.js",
"/chunks/settings-storage.625b17b00bd3f5c60366.hot-update.js": "/chunks/settings-storage.625b17b00bd3f5c60366.hot-update.js",
"/chunks/settings-subscription.625b17b00bd3f5c60366.hot-update.js": "/chunks/settings-subscription.625b17b00bd3f5c60366.hot-update.js",
"/chunks/stripe-credentials.625b17b00bd3f5c60366.hot-update.js": "/chunks/stripe-credentials.625b17b00bd3f5c60366.hot-update.js",
"/chunks/subscription-plans.625b17b00bd3f5c60366.hot-update.js": "/chunks/subscription-plans.625b17b00bd3f5c60366.hot-update.js",
"/chunks/upgrade-billing.625b17b00bd3f5c60366.hot-update.js": "/chunks/upgrade-billing.625b17b00bd3f5c60366.hot-update.js",
"/chunks/user-delete.625b17b00bd3f5c60366.hot-update.js": "/chunks/user-delete.625b17b00bd3f5c60366.hot-update.js",
"/chunks/user-detail.625b17b00bd3f5c60366.hot-update.js": "/chunks/user-detail.625b17b00bd3f5c60366.hot-update.js",
"/chunks/user-password.625b17b00bd3f5c60366.hot-update.js": "/chunks/user-password.625b17b00bd3f5c60366.hot-update.js",
"/chunks/user-storage.625b17b00bd3f5c60366.hot-update.js": "/chunks/user-storage.625b17b00bd3f5c60366.hot-update.js",
"/chunks/user-subscription.625b17b00bd3f5c60366.hot-update.js": "/chunks/user-subscription.625b17b00bd3f5c60366.hot-update.js",
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.55fee48c5926af38aa28.hot-update.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.55fee48c5926af38aa28.hot-update.js",
"/chunks/app-language.55fee48c5926af38aa28.hot-update.js": "/chunks/app-language.55fee48c5926af38aa28.hot-update.js",
"/chunks/billings-detail.55fee48c5926af38aa28.hot-update.js": "/chunks/billings-detail.55fee48c5926af38aa28.hot-update.js",
"/chunks/database.55fee48c5926af38aa28.hot-update.js": "/chunks/database.55fee48c5926af38aa28.hot-update.js",
"/chunks/environment-setup.55fee48c5926af38aa28.hot-update.js": "/chunks/environment-setup.55fee48c5926af38aa28.hot-update.js",
"/chunks/installation-disclaimer.55fee48c5926af38aa28.hot-update.js": "/chunks/installation-disclaimer.55fee48c5926af38aa28.hot-update.js",
"/chunks/oasis/platba.55fee48c5926af38aa28.hot-update.js": "/chunks/oasis/platba.55fee48c5926af38aa28.hot-update.js",
"/chunks/oasis/upgrade-billing.55fee48c5926af38aa28.hot-update.js": "/chunks/oasis/upgrade-billing.55fee48c5926af38aa28.hot-update.js",
"/chunks/page-edit.55fee48c5926af38aa28.hot-update.js": "/chunks/page-edit.55fee48c5926af38aa28.hot-update.js",
"/chunks/plan-delete.55fee48c5926af38aa28.hot-update.js": "/chunks/plan-delete.55fee48c5926af38aa28.hot-update.js",
"/chunks/plan-settings.55fee48c5926af38aa28.hot-update.js": "/chunks/plan-settings.55fee48c5926af38aa28.hot-update.js",
"/chunks/profile.55fee48c5926af38aa28.hot-update.js": "/chunks/profile.55fee48c5926af38aa28.hot-update.js",
"/chunks/settings-create-payment-methods.55fee48c5926af38aa28.hot-update.js": "/chunks/settings-create-payment-methods.55fee48c5926af38aa28.hot-update.js",
"/chunks/settings-invoices.55fee48c5926af38aa28.hot-update.js": "/chunks/settings-invoices.55fee48c5926af38aa28.hot-update.js",
"/chunks/settings-password.55fee48c5926af38aa28.hot-update.js": "/chunks/settings-password.55fee48c5926af38aa28.hot-update.js",
"/chunks/settings-payment-methods.55fee48c5926af38aa28.hot-update.js": "/chunks/settings-payment-methods.55fee48c5926af38aa28.hot-update.js",
"/chunks/settings-storage.55fee48c5926af38aa28.hot-update.js": "/chunks/settings-storage.55fee48c5926af38aa28.hot-update.js",
"/chunks/settings-subscription.55fee48c5926af38aa28.hot-update.js": "/chunks/settings-subscription.55fee48c5926af38aa28.hot-update.js",
"/chunks/stripe-credentials.55fee48c5926af38aa28.hot-update.js": "/chunks/stripe-credentials.55fee48c5926af38aa28.hot-update.js",
"/chunks/subscription-plans.55fee48c5926af38aa28.hot-update.js": "/chunks/subscription-plans.55fee48c5926af38aa28.hot-update.js",
"/chunks/upgrade-billing.55fee48c5926af38aa28.hot-update.js": "/chunks/upgrade-billing.55fee48c5926af38aa28.hot-update.js",
"/chunks/user-delete.55fee48c5926af38aa28.hot-update.js": "/chunks/user-delete.55fee48c5926af38aa28.hot-update.js",
"/chunks/user-detail.55fee48c5926af38aa28.hot-update.js": "/chunks/user-detail.55fee48c5926af38aa28.hot-update.js",
"/chunks/user-password.55fee48c5926af38aa28.hot-update.js": "/chunks/user-password.55fee48c5926af38aa28.hot-update.js",
"/chunks/user-storage.55fee48c5926af38aa28.hot-update.js": "/chunks/user-storage.55fee48c5926af38aa28.hot-update.js",
"/chunks/user-subscription.55fee48c5926af38aa28.hot-update.js": "/chunks/user-subscription.55fee48c5926af38aa28.hot-update.js",
"/chunks/oasis/invoices/create-invoice.50e33fc02a666b3c0800.hot-update.js": "/chunks/oasis/invoices/create-invoice.50e33fc02a666b3c0800.hot-update.js",
"/chunks/oasis/invoices/create-invoice.45345cc0a5cdbc568df3.hot-update.js": "/chunks/oasis/invoices/create-invoice.45345cc0a5cdbc568df3.hot-update.js",
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.d552c494bd4229a1f932.hot-update.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.d552c494bd4229a1f932.hot-update.js",
"/chunks/app-language.d552c494bd4229a1f932.hot-update.js": "/chunks/app-language.d552c494bd4229a1f932.hot-update.js",
"/chunks/billings-detail.d552c494bd4229a1f932.hot-update.js": "/chunks/billings-detail.d552c494bd4229a1f932.hot-update.js",
"/chunks/database.d552c494bd4229a1f932.hot-update.js": "/chunks/database.d552c494bd4229a1f932.hot-update.js",
"/chunks/environment-setup.d552c494bd4229a1f932.hot-update.js": "/chunks/environment-setup.d552c494bd4229a1f932.hot-update.js",
"/chunks/installation-disclaimer.d552c494bd4229a1f932.hot-update.js": "/chunks/installation-disclaimer.d552c494bd4229a1f932.hot-update.js",
"/chunks/oasis/platba.d552c494bd4229a1f932.hot-update.js": "/chunks/oasis/platba.d552c494bd4229a1f932.hot-update.js",
"/chunks/oasis/upgrade-billing.d552c494bd4229a1f932.hot-update.js": "/chunks/oasis/upgrade-billing.d552c494bd4229a1f932.hot-update.js",
"/chunks/page-edit.d552c494bd4229a1f932.hot-update.js": "/chunks/page-edit.d552c494bd4229a1f932.hot-update.js",
"/chunks/plan-delete.d552c494bd4229a1f932.hot-update.js": "/chunks/plan-delete.d552c494bd4229a1f932.hot-update.js",
"/chunks/plan-settings.d552c494bd4229a1f932.hot-update.js": "/chunks/plan-settings.d552c494bd4229a1f932.hot-update.js",
"/chunks/profile.d552c494bd4229a1f932.hot-update.js": "/chunks/profile.d552c494bd4229a1f932.hot-update.js",
"/chunks/settings-create-payment-methods.d552c494bd4229a1f932.hot-update.js": "/chunks/settings-create-payment-methods.d552c494bd4229a1f932.hot-update.js",
"/chunks/settings-invoices.d552c494bd4229a1f932.hot-update.js": "/chunks/settings-invoices.d552c494bd4229a1f932.hot-update.js",
"/chunks/settings-password.d552c494bd4229a1f932.hot-update.js": "/chunks/settings-password.d552c494bd4229a1f932.hot-update.js",
"/chunks/settings-payment-methods.d552c494bd4229a1f932.hot-update.js": "/chunks/settings-payment-methods.d552c494bd4229a1f932.hot-update.js",
"/chunks/settings-storage.d552c494bd4229a1f932.hot-update.js": "/chunks/settings-storage.d552c494bd4229a1f932.hot-update.js",
"/chunks/settings-subscription.d552c494bd4229a1f932.hot-update.js": "/chunks/settings-subscription.d552c494bd4229a1f932.hot-update.js",
"/chunks/stripe-credentials.d552c494bd4229a1f932.hot-update.js": "/chunks/stripe-credentials.d552c494bd4229a1f932.hot-update.js",
"/chunks/subscription-plans.d552c494bd4229a1f932.hot-update.js": "/chunks/subscription-plans.d552c494bd4229a1f932.hot-update.js",
"/chunks/upgrade-billing.d552c494bd4229a1f932.hot-update.js": "/chunks/upgrade-billing.d552c494bd4229a1f932.hot-update.js",
"/chunks/user-delete.d552c494bd4229a1f932.hot-update.js": "/chunks/user-delete.d552c494bd4229a1f932.hot-update.js",
"/chunks/user-detail.d552c494bd4229a1f932.hot-update.js": "/chunks/user-detail.d552c494bd4229a1f932.hot-update.js",
"/chunks/user-password.d552c494bd4229a1f932.hot-update.js": "/chunks/user-password.d552c494bd4229a1f932.hot-update.js",
"/chunks/user-storage.d552c494bd4229a1f932.hot-update.js": "/chunks/user-storage.d552c494bd4229a1f932.hot-update.js",
"/chunks/user-subscription.d552c494bd4229a1f932.hot-update.js": "/chunks/user-subscription.d552c494bd4229a1f932.hot-update.js",
"/chunks/oasis/invoices/create-invoice.1c8d158fffade7166e7c.hot-update.js": "/chunks/oasis/invoices/create-invoice.1c8d158fffade7166e7c.hot-update.js",
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.41dfea86a73881067610.hot-update.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f7b5598c.41dfea86a73881067610.hot-update.js",
"/chunks/app-language.41dfea86a73881067610.hot-update.js": "/chunks/app-language.41dfea86a73881067610.hot-update.js",
"/chunks/billings-detail.41dfea86a73881067610.hot-update.js": "/chunks/billings-detail.41dfea86a73881067610.hot-update.js",
"/chunks/database.41dfea86a73881067610.hot-update.js": "/chunks/database.41dfea86a73881067610.hot-update.js",
"/chunks/environment-setup.41dfea86a73881067610.hot-update.js": "/chunks/environment-setup.41dfea86a73881067610.hot-update.js",
"/chunks/installation-disclaimer.41dfea86a73881067610.hot-update.js": "/chunks/installation-disclaimer.41dfea86a73881067610.hot-update.js",
"/chunks/oasis/platba.41dfea86a73881067610.hot-update.js": "/chunks/oasis/platba.41dfea86a73881067610.hot-update.js",
"/chunks/oasis/upgrade-billing.41dfea86a73881067610.hot-update.js": "/chunks/oasis/upgrade-billing.41dfea86a73881067610.hot-update.js",
"/chunks/page-edit.41dfea86a73881067610.hot-update.js": "/chunks/page-edit.41dfea86a73881067610.hot-update.js",
"/chunks/plan-delete.41dfea86a73881067610.hot-update.js": "/chunks/plan-delete.41dfea86a73881067610.hot-update.js",
"/chunks/plan-settings.41dfea86a73881067610.hot-update.js": "/chunks/plan-settings.41dfea86a73881067610.hot-update.js",
"/chunks/profile.41dfea86a73881067610.hot-update.js": "/chunks/profile.41dfea86a73881067610.hot-update.js",
"/chunks/settings-create-payment-methods.41dfea86a73881067610.hot-update.js": "/chunks/settings-create-payment-methods.41dfea86a73881067610.hot-update.js",
"/chunks/settings-invoices.41dfea86a73881067610.hot-update.js": "/chunks/settings-invoices.41dfea86a73881067610.hot-update.js",
"/chunks/settings-password.41dfea86a73881067610.hot-update.js": "/chunks/settings-password.41dfea86a73881067610.hot-update.js",
"/chunks/settings-payment-methods.41dfea86a73881067610.hot-update.js": "/chunks/settings-payment-methods.41dfea86a73881067610.hot-update.js",
"/chunks/settings-storage.41dfea86a73881067610.hot-update.js": "/chunks/settings-storage.41dfea86a73881067610.hot-update.js",
"/chunks/settings-subscription.41dfea86a73881067610.hot-update.js": "/chunks/settings-subscription.41dfea86a73881067610.hot-update.js",
"/chunks/stripe-credentials.41dfea86a73881067610.hot-update.js": "/chunks/stripe-credentials.41dfea86a73881067610.hot-update.js",
"/chunks/subscription-plans.41dfea86a73881067610.hot-update.js": "/chunks/subscription-plans.41dfea86a73881067610.hot-update.js",
"/chunks/upgrade-billing.41dfea86a73881067610.hot-update.js": "/chunks/upgrade-billing.41dfea86a73881067610.hot-update.js",
"/chunks/user-delete.41dfea86a73881067610.hot-update.js": "/chunks/user-delete.41dfea86a73881067610.hot-update.js",
"/chunks/user-detail.41dfea86a73881067610.hot-update.js": "/chunks/user-detail.41dfea86a73881067610.hot-update.js",
"/chunks/user-password.41dfea86a73881067610.hot-update.js": "/chunks/user-password.41dfea86a73881067610.hot-update.js",
"/chunks/user-storage.41dfea86a73881067610.hot-update.js": "/chunks/user-storage.41dfea86a73881067610.hot-update.js",
"/chunks/user-subscription.41dfea86a73881067610.hot-update.js": "/chunks/user-subscription.41dfea86a73881067610.hot-update.js",
"/chunks/oasis/invoices/create-invoice.688dc80a52f2928916d8.hot-update.js": "/chunks/oasis/invoices/create-invoice.688dc80a52f2928916d8.hot-update.js",
"/chunks/oasis/invoices/create-invoice.f8c528c074a151f1e340.hot-update.js": "/chunks/oasis/invoices/create-invoice.f8c528c074a151f1e340.hot-update.js",
"/js/main.cd76b834f618123d902c.hot-update.js": "/js/main.cd76b834f618123d902c.hot-update.js",
"/chunks/oasis/invoices/create-invoice.6cff25ddbc0f130bade9.hot-update.js": "/chunks/oasis/invoices/create-invoice.6cff25ddbc0f130bade9.hot-update.js",
"/chunks/oasis/invoices/create-invoice.376cb35034cd6eeead62.hot-update.js": "/chunks/oasis/invoices/create-invoice.376cb35034cd6eeead62.hot-update.js",
"/chunks/oasis/invoices/create-invoice.c3a97a5ed2e0b6467320.hot-update.js": "/chunks/oasis/invoices/create-invoice.c3a97a5ed2e0b6467320.hot-update.js",
"/chunks/oasis/invoices/create-invoice.f9879c811d45ef8f4922.hot-update.js": "/chunks/oasis/invoices/create-invoice.f9879c811d45ef8f4922.hot-update.js",
"/chunks/oasis/invoices/create-invoice.f05b523162b708b00746.hot-update.js": "/chunks/oasis/invoices/create-invoice.f05b523162b708b00746.hot-update.js",
"/chunks/oasis/invoices/create-invoice.9f956047880438371feb.hot-update.js": "/chunks/oasis/invoices/create-invoice.9f956047880438371feb.hot-update.js",
"/js/main.b45e8c68c1590982cc0e.hot-update.js": "/js/main.b45e8c68c1590982cc0e.hot-update.js",
"/chunks/oasis/invoices/list.50d0792f9da303d19c2b.hot-update.js": "/chunks/oasis/invoices/list.50d0792f9da303d19c2b.hot-update.js",
"/chunks/oasis/invoices/list.7af2e2ced69e816f5be2.hot-update.js": "/chunks/oasis/invoices/list.7af2e2ced69e816f5be2.hot-update.js",
"/chunks/oasis/invoices/create-invoice.8b7e0ca0548c29387979.hot-update.js": "/chunks/oasis/invoices/create-invoice.8b7e0ca0548c29387979.hot-update.js",
"/chunks/oasis/invoices/list.02028ad3a47b16f15eaf.hot-update.js": "/chunks/oasis/invoices/list.02028ad3a47b16f15eaf.hot-update.js",
"/chunks/oasis/invoices/create-invoice.faa6cc421675cf05af87.hot-update.js": "/chunks/oasis/invoices/create-invoice.faa6cc421675cf05af87.hot-update.js",
"/chunks/oasis/invoices/create-invoice.83c5cb9779e4dad782e6.hot-update.js": "/chunks/oasis/invoices/create-invoice.83c5cb9779e4dad782e6.hot-update.js",
"/js/main.3042df8bc4dd9d94f88f.hot-update.js": "/js/main.3042df8bc4dd9d94f88f.hot-update.js",
"/chunks/oasis/invoices/create-invoice.1b8a4f95bbb713b3ad96.hot-update.js": "/chunks/oasis/invoices/create-invoice.1b8a4f95bbb713b3ad96.hot-update.js",
"/chunks/oasis/invoices/create-invoice.4d1c1da75f26dd845e58.hot-update.js": "/chunks/oasis/invoices/create-invoice.4d1c1da75f26dd845e58.hot-update.js",
"/chunks/oasis/invoices/create-invoice.230b494fc2cc89bd87ed.hot-update.js": "/chunks/oasis/invoices/create-invoice.230b494fc2cc89bd87ed.hot-update.js",
"/chunks/oasis/invoices/create-invoice.9514f8f299a752c3e90e.hot-update.js": "/chunks/oasis/invoices/create-invoice.9514f8f299a752c3e90e.hot-update.js",
"/chunks/admin.80147a6864f011384f32.hot-update.js": "/chunks/admin.80147a6864f011384f32.hot-update.js",
"/chunks/admin-account.80147a6864f011384f32.hot-update.js": "/chunks/admin-account.80147a6864f011384f32.hot-update.js",
"/chunks/app-appearance.80147a6864f011384f32.hot-update.js": "/chunks/app-appearance.80147a6864f011384f32.hot-update.js",
"/chunks/app-billings.80147a6864f011384f32.hot-update.js": "/chunks/app-billings.80147a6864f011384f32.hot-update.js",
"/chunks/app-email.80147a6864f011384f32.hot-update.js": "/chunks/app-email.80147a6864f011384f32.hot-update.js",
"/chunks/app-index.80147a6864f011384f32.hot-update.js": "/chunks/app-index.80147a6864f011384f32.hot-update.js",
"/chunks/app-language.80147a6864f011384f32.hot-update.js": "/chunks/app-language.80147a6864f011384f32.hot-update.js",
"/chunks/app-others.80147a6864f011384f32.hot-update.js": "/chunks/app-others.80147a6864f011384f32.hot-update.js",
"/chunks/app-payments.80147a6864f011384f32.hot-update.js": "/chunks/app-payments.80147a6864f011384f32.hot-update.js",
"/chunks/app-setup.80147a6864f011384f32.hot-update.js": "/chunks/app-setup.80147a6864f011384f32.hot-update.js",
"/chunks/billings-detail.80147a6864f011384f32.hot-update.js": "/chunks/billings-detail.80147a6864f011384f32.hot-update.js",
"/chunks/contact-us.80147a6864f011384f32.hot-update.js": "/chunks/contact-us.80147a6864f011384f32.hot-update.js",
"/chunks/database.80147a6864f011384f32.hot-update.js": "/chunks/database.80147a6864f011384f32.hot-update.js",
"/chunks/environment-setup.80147a6864f011384f32.hot-update.js": "/chunks/environment-setup.80147a6864f011384f32.hot-update.js",
"/chunks/files~chunks/oasis/invoices/list~chunks/platform~chunks/shared-files~chunks/shared/file-browser.80147a6864f011384f32.hot-update.js": "/chunks/files~chunks/oasis/invoices/list~chunks/platform~chunks/shared-files~chunks/shared/file-browser.80147a6864f011384f32.hot-update.js",
"/chunks/files~chunks/oasis/invoices~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/f~9f6a6eef.80147a6864f011384f32.hot-update.js": "/chunks/files~chunks/oasis/invoices~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/f~9f6a6eef.80147a6864f011384f32.hot-update.js",
"/chunks/installation-disclaimer.80147a6864f011384f32.hot-update.js": "/chunks/installation-disclaimer.80147a6864f011384f32.hot-update.js",
"/chunks/oasis/invoices/client-detail.80147a6864f011384f32.hot-update.js": "/chunks/oasis/invoices/client-detail.80147a6864f011384f32.hot-update.js",
"/chunks/oasis/invoices/client-invoices.80147a6864f011384f32.hot-update.js": "/chunks/oasis/invoices/client-invoices.80147a6864f011384f32.hot-update.js",
"/chunks/oasis/invoices/create-client.80147a6864f011384f32.hot-update.js": "/chunks/oasis/invoices/create-client.80147a6864f011384f32.hot-update.js",
"/chunks/oasis/invoices/create-invoice.80147a6864f011384f32.hot-update.js": "/chunks/oasis/invoices/create-invoice.80147a6864f011384f32.hot-update.js",
"/chunks/oasis/invoices/profile.80147a6864f011384f32.hot-update.js": "/chunks/oasis/invoices/profile.80147a6864f011384f32.hot-update.js",
"/chunks/oasis/platba.80147a6864f011384f32.hot-update.js": "/chunks/oasis/platba.80147a6864f011384f32.hot-update.js",
"/chunks/oasis/upgrade-billing.80147a6864f011384f32.hot-update.js": "/chunks/oasis/upgrade-billing.80147a6864f011384f32.hot-update.js",
"/chunks/oasis/upgrade-plan.80147a6864f011384f32.hot-update.js": "/chunks/oasis/upgrade-plan.80147a6864f011384f32.hot-update.js",
"/chunks/oasis/user-create.80147a6864f011384f32.hot-update.js": "/chunks/oasis/user-create.80147a6864f011384f32.hot-update.js",
"/chunks/page-edit.80147a6864f011384f32.hot-update.js": "/chunks/page-edit.80147a6864f011384f32.hot-update.js",
"/chunks/plan-create.80147a6864f011384f32.hot-update.js": "/chunks/plan-create.80147a6864f011384f32.hot-update.js",
"/chunks/plan-delete.80147a6864f011384f32.hot-update.js": "/chunks/plan-delete.80147a6864f011384f32.hot-update.js",
"/chunks/plan-settings.80147a6864f011384f32.hot-update.js": "/chunks/plan-settings.80147a6864f011384f32.hot-update.js",
"/chunks/plan-subscribers.80147a6864f011384f32.hot-update.js": "/chunks/plan-subscribers.80147a6864f011384f32.hot-update.js",
"/chunks/platform.80147a6864f011384f32.hot-update.js": "/chunks/platform.80147a6864f011384f32.hot-update.js",
"/chunks/platform~chunks/shared.80147a6864f011384f32.hot-update.js": "/chunks/platform~chunks/shared.80147a6864f011384f32.hot-update.js",
"/chunks/profile.80147a6864f011384f32.hot-update.js": "/chunks/profile.80147a6864f011384f32.hot-update.js",
"/chunks/settings-create-payment-methods.80147a6864f011384f32.hot-update.js": "/chunks/settings-create-payment-methods.80147a6864f011384f32.hot-update.js",
"/chunks/settings-invoices.80147a6864f011384f32.hot-update.js": "/chunks/settings-invoices.80147a6864f011384f32.hot-update.js",
"/chunks/settings-password.80147a6864f011384f32.hot-update.js": "/chunks/settings-password.80147a6864f011384f32.hot-update.js",
"/chunks/settings-payment-methods.80147a6864f011384f32.hot-update.js": "/chunks/settings-payment-methods.80147a6864f011384f32.hot-update.js",
"/chunks/stripe-credentials.80147a6864f011384f32.hot-update.js": "/chunks/stripe-credentials.80147a6864f011384f32.hot-update.js",
"/chunks/subscription-plans.80147a6864f011384f32.hot-update.js": "/chunks/subscription-plans.80147a6864f011384f32.hot-update.js",
"/chunks/upgrade-billing.80147a6864f011384f32.hot-update.js": "/chunks/upgrade-billing.80147a6864f011384f32.hot-update.js",
"/chunks/upgrade-plan.80147a6864f011384f32.hot-update.js": "/chunks/upgrade-plan.80147a6864f011384f32.hot-update.js",
"/chunks/user-create.80147a6864f011384f32.hot-update.js": "/chunks/user-create.80147a6864f011384f32.hot-update.js",
"/chunks/user-delete.80147a6864f011384f32.hot-update.js": "/chunks/user-delete.80147a6864f011384f32.hot-update.js",
"/chunks/user-detail.80147a6864f011384f32.hot-update.js": "/chunks/user-detail.80147a6864f011384f32.hot-update.js",
"/chunks/user-invoices.80147a6864f011384f32.hot-update.js": "/chunks/user-invoices.80147a6864f011384f32.hot-update.js",
"/chunks/user-password.80147a6864f011384f32.hot-update.js": "/chunks/user-password.80147a6864f011384f32.hot-update.js",
"/chunks/user-storage.80147a6864f011384f32.hot-update.js": "/chunks/user-storage.80147a6864f011384f32.hot-update.js",
"/chunks/admin.638309360cafdf717ea6.hot-update.js": "/chunks/admin.638309360cafdf717ea6.hot-update.js",
"/chunks/admin-account.638309360cafdf717ea6.hot-update.js": "/chunks/admin-account.638309360cafdf717ea6.hot-update.js",
"/chunks/app-appearance.638309360cafdf717ea6.hot-update.js": "/chunks/app-appearance.638309360cafdf717ea6.hot-update.js",
"/chunks/app-billings.638309360cafdf717ea6.hot-update.js": "/chunks/app-billings.638309360cafdf717ea6.hot-update.js",
"/chunks/app-email.638309360cafdf717ea6.hot-update.js": "/chunks/app-email.638309360cafdf717ea6.hot-update.js",
"/chunks/app-index.638309360cafdf717ea6.hot-update.js": "/chunks/app-index.638309360cafdf717ea6.hot-update.js",
"/chunks/app-language.638309360cafdf717ea6.hot-update.js": "/chunks/app-language.638309360cafdf717ea6.hot-update.js",
"/chunks/app-others.638309360cafdf717ea6.hot-update.js": "/chunks/app-others.638309360cafdf717ea6.hot-update.js",
"/chunks/app-payments.638309360cafdf717ea6.hot-update.js": "/chunks/app-payments.638309360cafdf717ea6.hot-update.js",
"/chunks/app-setup.638309360cafdf717ea6.hot-update.js": "/chunks/app-setup.638309360cafdf717ea6.hot-update.js",
"/chunks/billings-detail.638309360cafdf717ea6.hot-update.js": "/chunks/billings-detail.638309360cafdf717ea6.hot-update.js",
"/chunks/contact-us.638309360cafdf717ea6.hot-update.js": "/chunks/contact-us.638309360cafdf717ea6.hot-update.js",
"/chunks/database.638309360cafdf717ea6.hot-update.js": "/chunks/database.638309360cafdf717ea6.hot-update.js",
"/chunks/environment-setup.638309360cafdf717ea6.hot-update.js": "/chunks/environment-setup.638309360cafdf717ea6.hot-update.js",
"/chunks/files~chunks/oasis/invoices/list~chunks/platform~chunks/shared-files~chunks/shared/file-browser.638309360cafdf717ea6.hot-update.js": "/chunks/files~chunks/oasis/invoices/list~chunks/platform~chunks/shared-files~chunks/shared/file-browser.638309360cafdf717ea6.hot-update.js",
"/chunks/files~chunks/oasis/invoices~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/f~9f6a6eef.638309360cafdf717ea6.hot-update.js": "/chunks/files~chunks/oasis/invoices~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/f~9f6a6eef.638309360cafdf717ea6.hot-update.js",
"/chunks/installation-disclaimer.638309360cafdf717ea6.hot-update.js": "/chunks/installation-disclaimer.638309360cafdf717ea6.hot-update.js",
"/chunks/oasis/invoices/client-detail.638309360cafdf717ea6.hot-update.js": "/chunks/oasis/invoices/client-detail.638309360cafdf717ea6.hot-update.js",
"/chunks/oasis/invoices/client-invoices.638309360cafdf717ea6.hot-update.js": "/chunks/oasis/invoices/client-invoices.638309360cafdf717ea6.hot-update.js",
"/chunks/oasis/invoices/create-client.638309360cafdf717ea6.hot-update.js": "/chunks/oasis/invoices/create-client.638309360cafdf717ea6.hot-update.js",
"/chunks/oasis/invoices/create-invoice.638309360cafdf717ea6.hot-update.js": "/chunks/oasis/invoices/create-invoice.638309360cafdf717ea6.hot-update.js",
"/chunks/oasis/invoices/profile.638309360cafdf717ea6.hot-update.js": "/chunks/oasis/invoices/profile.638309360cafdf717ea6.hot-update.js",
"/chunks/oasis/platba.638309360cafdf717ea6.hot-update.js": "/chunks/oasis/platba.638309360cafdf717ea6.hot-update.js",
"/chunks/oasis/upgrade-billing.638309360cafdf717ea6.hot-update.js": "/chunks/oasis/upgrade-billing.638309360cafdf717ea6.hot-update.js",
"/chunks/oasis/upgrade-plan.638309360cafdf717ea6.hot-update.js": "/chunks/oasis/upgrade-plan.638309360cafdf717ea6.hot-update.js",
"/chunks/oasis/user-create.638309360cafdf717ea6.hot-update.js": "/chunks/oasis/user-create.638309360cafdf717ea6.hot-update.js",
"/chunks/page-edit.638309360cafdf717ea6.hot-update.js": "/chunks/page-edit.638309360cafdf717ea6.hot-update.js",
"/chunks/plan-create.638309360cafdf717ea6.hot-update.js": "/chunks/plan-create.638309360cafdf717ea6.hot-update.js",
"/chunks/plan-delete.638309360cafdf717ea6.hot-update.js": "/chunks/plan-delete.638309360cafdf717ea6.hot-update.js",
"/chunks/plan-settings.638309360cafdf717ea6.hot-update.js": "/chunks/plan-settings.638309360cafdf717ea6.hot-update.js",
"/chunks/plan-subscribers.638309360cafdf717ea6.hot-update.js": "/chunks/plan-subscribers.638309360cafdf717ea6.hot-update.js",
"/chunks/platform.638309360cafdf717ea6.hot-update.js": "/chunks/platform.638309360cafdf717ea6.hot-update.js",
"/chunks/platform~chunks/shared.638309360cafdf717ea6.hot-update.js": "/chunks/platform~chunks/shared.638309360cafdf717ea6.hot-update.js",
"/chunks/profile.638309360cafdf717ea6.hot-update.js": "/chunks/profile.638309360cafdf717ea6.hot-update.js",
"/chunks/settings-create-payment-methods.638309360cafdf717ea6.hot-update.js": "/chunks/settings-create-payment-methods.638309360cafdf717ea6.hot-update.js",
"/chunks/settings-invoices.638309360cafdf717ea6.hot-update.js": "/chunks/settings-invoices.638309360cafdf717ea6.hot-update.js",
"/chunks/settings-password.638309360cafdf717ea6.hot-update.js": "/chunks/settings-password.638309360cafdf717ea6.hot-update.js",
"/chunks/settings-payment-methods.638309360cafdf717ea6.hot-update.js": "/chunks/settings-payment-methods.638309360cafdf717ea6.hot-update.js",
"/chunks/stripe-credentials.638309360cafdf717ea6.hot-update.js": "/chunks/stripe-credentials.638309360cafdf717ea6.hot-update.js",
"/chunks/subscription-plans.638309360cafdf717ea6.hot-update.js": "/chunks/subscription-plans.638309360cafdf717ea6.hot-update.js",
"/chunks/upgrade-billing.638309360cafdf717ea6.hot-update.js": "/chunks/upgrade-billing.638309360cafdf717ea6.hot-update.js",
"/chunks/upgrade-plan.638309360cafdf717ea6.hot-update.js": "/chunks/upgrade-plan.638309360cafdf717ea6.hot-update.js",
"/chunks/user-create.638309360cafdf717ea6.hot-update.js": "/chunks/user-create.638309360cafdf717ea6.hot-update.js",
"/chunks/user-delete.638309360cafdf717ea6.hot-update.js": "/chunks/user-delete.638309360cafdf717ea6.hot-update.js",
"/chunks/user-detail.638309360cafdf717ea6.hot-update.js": "/chunks/user-detail.638309360cafdf717ea6.hot-update.js",
"/chunks/user-invoices.638309360cafdf717ea6.hot-update.js": "/chunks/user-invoices.638309360cafdf717ea6.hot-update.js",
"/chunks/user-password.638309360cafdf717ea6.hot-update.js": "/chunks/user-password.638309360cafdf717ea6.hot-update.js",
"/chunks/user-storage.638309360cafdf717ea6.hot-update.js": "/chunks/user-storage.638309360cafdf717ea6.hot-update.js",
"/chunks/admin.94c1d9744ba0b535b540.hot-update.js": "/chunks/admin.94c1d9744ba0b535b540.hot-update.js",
"/chunks/admin-account.94c1d9744ba0b535b540.hot-update.js": "/chunks/admin-account.94c1d9744ba0b535b540.hot-update.js",
"/chunks/app-appearance.94c1d9744ba0b535b540.hot-update.js": "/chunks/app-appearance.94c1d9744ba0b535b540.hot-update.js",
"/chunks/app-billings.94c1d9744ba0b535b540.hot-update.js": "/chunks/app-billings.94c1d9744ba0b535b540.hot-update.js",
"/chunks/app-email.94c1d9744ba0b535b540.hot-update.js": "/chunks/app-email.94c1d9744ba0b535b540.hot-update.js",
"/chunks/app-index.94c1d9744ba0b535b540.hot-update.js": "/chunks/app-index.94c1d9744ba0b535b540.hot-update.js",
"/chunks/app-language.94c1d9744ba0b535b540.hot-update.js": "/chunks/app-language.94c1d9744ba0b535b540.hot-update.js",
"/chunks/app-others.94c1d9744ba0b535b540.hot-update.js": "/chunks/app-others.94c1d9744ba0b535b540.hot-update.js",
"/chunks/app-payments.94c1d9744ba0b535b540.hot-update.js": "/chunks/app-payments.94c1d9744ba0b535b540.hot-update.js",
"/chunks/app-setup.94c1d9744ba0b535b540.hot-update.js": "/chunks/app-setup.94c1d9744ba0b535b540.hot-update.js",
"/chunks/billings-detail.94c1d9744ba0b535b540.hot-update.js": "/chunks/billings-detail.94c1d9744ba0b535b540.hot-update.js",
"/chunks/contact-us.94c1d9744ba0b535b540.hot-update.js": "/chunks/contact-us.94c1d9744ba0b535b540.hot-update.js",
"/chunks/database.94c1d9744ba0b535b540.hot-update.js": "/chunks/database.94c1d9744ba0b535b540.hot-update.js",
"/chunks/environment-setup.94c1d9744ba0b535b540.hot-update.js": "/chunks/environment-setup.94c1d9744ba0b535b540.hot-update.js",
"/chunks/files~chunks/oasis/invoices/list~chunks/platform~chunks/shared-files~chunks/shared/file-browser.94c1d9744ba0b535b540.hot-update.js": "/chunks/files~chunks/oasis/invoices/list~chunks/platform~chunks/shared-files~chunks/shared/file-browser.94c1d9744ba0b535b540.hot-update.js",
"/chunks/files~chunks/oasis/invoices~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/f~9f6a6eef.94c1d9744ba0b535b540.hot-update.js": "/chunks/files~chunks/oasis/invoices~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/f~9f6a6eef.94c1d9744ba0b535b540.hot-update.js",
"/chunks/installation-disclaimer.94c1d9744ba0b535b540.hot-update.js": "/chunks/installation-disclaimer.94c1d9744ba0b535b540.hot-update.js",
"/chunks/oasis/invoices/client-detail.94c1d9744ba0b535b540.hot-update.js": "/chunks/oasis/invoices/client-detail.94c1d9744ba0b535b540.hot-update.js",
"/chunks/oasis/invoices/client-invoices.94c1d9744ba0b535b540.hot-update.js": "/chunks/oasis/invoices/client-invoices.94c1d9744ba0b535b540.hot-update.js",
"/chunks/oasis/invoices/create-client.94c1d9744ba0b535b540.hot-update.js": "/chunks/oasis/invoices/create-client.94c1d9744ba0b535b540.hot-update.js",
"/chunks/oasis/invoices/create-invoice.94c1d9744ba0b535b540.hot-update.js": "/chunks/oasis/invoices/create-invoice.94c1d9744ba0b535b540.hot-update.js",
"/chunks/oasis/invoices/profile.94c1d9744ba0b535b540.hot-update.js": "/chunks/oasis/invoices/profile.94c1d9744ba0b535b540.hot-update.js",
"/chunks/oasis/platba.94c1d9744ba0b535b540.hot-update.js": "/chunks/oasis/platba.94c1d9744ba0b535b540.hot-update.js",
"/chunks/oasis/upgrade-billing.94c1d9744ba0b535b540.hot-update.js": "/chunks/oasis/upgrade-billing.94c1d9744ba0b535b540.hot-update.js",
"/chunks/oasis/upgrade-plan.94c1d9744ba0b535b540.hot-update.js": "/chunks/oasis/upgrade-plan.94c1d9744ba0b535b540.hot-update.js",
"/chunks/oasis/user-create.94c1d9744ba0b535b540.hot-update.js": "/chunks/oasis/user-create.94c1d9744ba0b535b540.hot-update.js",
"/chunks/page-edit.94c1d9744ba0b535b540.hot-update.js": "/chunks/page-edit.94c1d9744ba0b535b540.hot-update.js",
"/chunks/plan-create.94c1d9744ba0b535b540.hot-update.js": "/chunks/plan-create.94c1d9744ba0b535b540.hot-update.js",
"/chunks/plan-delete.94c1d9744ba0b535b540.hot-update.js": "/chunks/plan-delete.94c1d9744ba0b535b540.hot-update.js",
"/chunks/plan-settings.94c1d9744ba0b535b540.hot-update.js": "/chunks/plan-settings.94c1d9744ba0b535b540.hot-update.js",
"/chunks/plan-subscribers.94c1d9744ba0b535b540.hot-update.js": "/chunks/plan-subscribers.94c1d9744ba0b535b540.hot-update.js",
"/chunks/platform.94c1d9744ba0b535b540.hot-update.js": "/chunks/platform.94c1d9744ba0b535b540.hot-update.js",
"/chunks/platform~chunks/shared.94c1d9744ba0b535b540.hot-update.js": "/chunks/platform~chunks/shared.94c1d9744ba0b535b540.hot-update.js",
"/chunks/profile.94c1d9744ba0b535b540.hot-update.js": "/chunks/profile.94c1d9744ba0b535b540.hot-update.js",
"/chunks/settings-create-payment-methods.94c1d9744ba0b535b540.hot-update.js": "/chunks/settings-create-payment-methods.94c1d9744ba0b535b540.hot-update.js",
"/chunks/settings-invoices.94c1d9744ba0b535b540.hot-update.js": "/chunks/settings-invoices.94c1d9744ba0b535b540.hot-update.js",
"/chunks/settings-password.94c1d9744ba0b535b540.hot-update.js": "/chunks/settings-password.94c1d9744ba0b535b540.hot-update.js",
"/chunks/settings-payment-methods.94c1d9744ba0b535b540.hot-update.js": "/chunks/settings-payment-methods.94c1d9744ba0b535b540.hot-update.js",
"/chunks/stripe-credentials.94c1d9744ba0b535b540.hot-update.js": "/chunks/stripe-credentials.94c1d9744ba0b535b540.hot-update.js",
"/chunks/subscription-plans.94c1d9744ba0b535b540.hot-update.js": "/chunks/subscription-plans.94c1d9744ba0b535b540.hot-update.js",
"/chunks/upgrade-billing.94c1d9744ba0b535b540.hot-update.js": "/chunks/upgrade-billing.94c1d9744ba0b535b540.hot-update.js",
"/chunks/upgrade-plan.94c1d9744ba0b535b540.hot-update.js": "/chunks/upgrade-plan.94c1d9744ba0b535b540.hot-update.js",
"/chunks/user-create.94c1d9744ba0b535b540.hot-update.js": "/chunks/user-create.94c1d9744ba0b535b540.hot-update.js",
"/chunks/user-delete.94c1d9744ba0b535b540.hot-update.js": "/chunks/user-delete.94c1d9744ba0b535b540.hot-update.js",
"/chunks/user-detail.94c1d9744ba0b535b540.hot-update.js": "/chunks/user-detail.94c1d9744ba0b535b540.hot-update.js",
"/chunks/user-invoices.94c1d9744ba0b535b540.hot-update.js": "/chunks/user-invoices.94c1d9744ba0b535b540.hot-update.js",
"/chunks/user-password.94c1d9744ba0b535b540.hot-update.js": "/chunks/user-password.94c1d9744ba0b535b540.hot-update.js",
"/chunks/user-storage.94c1d9744ba0b535b540.hot-update.js": "/chunks/user-storage.94c1d9744ba0b535b540.hot-update.js",
"/chunks/oasis/invoices/create-invoice.d8914296fc0d7798a32b.hot-update.js": "/chunks/oasis/invoices/create-invoice.d8914296fc0d7798a32b.hot-update.js",
"/chunks/oasis/invoices/create-invoice.5212761abeaaeeed4e20.hot-update.js": "/chunks/oasis/invoices/create-invoice.5212761abeaaeeed4e20.hot-update.js",
"/chunks/oasis/invoices/create-invoice.73ea4f34cb53b71d1c16.hot-update.js": "/chunks/oasis/invoices/create-invoice.73ea4f34cb53b71d1c16.hot-update.js",
"/chunks/oasis/invoices/create-invoice.a01b499da17157cf846e.hot-update.js": "/chunks/oasis/invoices/create-invoice.a01b499da17157cf846e.hot-update.js",
"/chunks/oasis/invoices/create-invoice.24d89586c7590d0c4a23.hot-update.js": "/chunks/oasis/invoices/create-invoice.24d89586c7590d0c4a23.hot-update.js",
"/chunks/oasis/invoices/create-invoice.5b9b952c0fd330270236.hot-update.js": "/chunks/oasis/invoices/create-invoice.5b9b952c0fd330270236.hot-update.js",
"/chunks/oasis/invoices/create-invoice.0686a2ec6bca83b8ca58.hot-update.js": "/chunks/oasis/invoices/create-invoice.0686a2ec6bca83b8ca58.hot-update.js",
"/chunks/oasis/invoices/create-invoice.7a89a79348bd53c40952.hot-update.js": "/chunks/oasis/invoices/create-invoice.7a89a79348bd53c40952.hot-update.js",
"/chunks/oasis/invoices/create-invoice.8565ce618be4b8a75e30.hot-update.js": "/chunks/oasis/invoices/create-invoice.8565ce618be4b8a75e30.hot-update.js",
"/chunks/oasis/invoices/create-invoice.7cab4ab755e2d2cc0280.hot-update.js": "/chunks/oasis/invoices/create-invoice.7cab4ab755e2d2cc0280.hot-update.js",
"/chunks/oasis/invoices/create-invoice.7c5d5a47226b2d0ff3ad.hot-update.js": "/chunks/oasis/invoices/create-invoice.7c5d5a47226b2d0ff3ad.hot-update.js",
"/chunks/oasis/invoices/create-invoice.3017ecaa7db6e8584efb.hot-update.js": "/chunks/oasis/invoices/create-invoice.3017ecaa7db6e8584efb.hot-update.js",
"/chunks/oasis/invoices/create-invoice.5fd256efae342f7df896.hot-update.js": "/chunks/oasis/invoices/create-invoice.5fd256efae342f7df896.hot-update.js",
"/chunks/oasis/invoices/list.10ebf6349c15bde91aca.hot-update.js": "/chunks/oasis/invoices/list.10ebf6349c15bde91aca.hot-update.js",
"/chunks/oasis/invoices/create-invoice.509b7b43cb07e6bee393.hot-update.js": "/chunks/oasis/invoices/create-invoice.509b7b43cb07e6bee393.hot-update.js",
"/chunks/oasis/invoices/create-invoice.da49ff7590ad48ed5b76.hot-update.js": "/chunks/oasis/invoices/create-invoice.da49ff7590ad48ed5b76.hot-update.js",
"/chunks/oasis/invoices/create-invoice.5c60b8a4120f92e7efc1.hot-update.js": "/chunks/oasis/invoices/create-invoice.5c60b8a4120f92e7efc1.hot-update.js",
"/chunks/oasis/invoices/create-invoice.fc0c7c199c5beffef6e7.hot-update.js": "/chunks/oasis/invoices/create-invoice.fc0c7c199c5beffef6e7.hot-update.js"
}
@@ -28,21 +28,23 @@
<PageTabGroup>
<FormLabel>Company Details</FormLabel>
<div class="block-wrapper">
<label>ICO:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ico" rules="required" v-slot="{ errors }">
<input v-model="client.ico" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div class="wrapper-inline">
<div class="block-wrapper">
<label>ICO:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ico" rules="required" v-slot="{ errors }">
<input v-model="client.ico" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div class="block-wrapper">
<label>DIC (optional):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="dic" v-slot="{ errors }">
<input v-model="client.dic" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div class="block-wrapper">
<label>DIC (optional):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="dic" v-slot="{ errors }">
<input v-model="client.dic" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
</div>
<div class="block-wrapper">
<label>IC DPH (optional):</label>
@@ -63,21 +65,23 @@
</ValidationProvider>
</div>
<div class="block-wrapper">
<label>City:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="city" rules="required" v-slot="{ errors }">
<input v-model="client.city" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div class="wrapper-inline">
<div class="block-wrapper">
<label>City:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="city" rules="required" v-slot="{ errors }">
<input v-model="client.city" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div class="block-wrapper">
<label>Postal Code:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="postal_code" rules="required" v-slot="{ errors }">
<input v-model="client.postal_code" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div class="block-wrapper">
<label>Postal Code:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="postal_code" rules="required" v-slot="{ errors }">
<input v-model="client.postal_code" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
</div>
<div class="block-wrapper">
<label>Country:</label>
@@ -134,7 +138,6 @@
import ButtonBase from '@/components/FilesView/ButtonBase'
import PageTab from '@/components/Others/Layout/PageTab'
import PageHeader from '@/components/Others/PageHeader'
import ThemeLabel from '@/components/Others/ThemeLabel'
import InfoBox from '@/components/Others/Forms/InfoBox'
import {required} from 'vee-validate/dist/rules'
import {mapGetters} from 'vuex'
@@ -152,7 +155,6 @@
ImageInput,
PageHeader,
ButtonBase,
ThemeLabel,
FormLabel,
required,
InfoBox,
@@ -204,7 +206,8 @@
if (!isValid) {
this.isError = true
return
};
}
;
// Start loading
this.isLoading = true
@@ -241,7 +244,8 @@
Object.keys(error.response.data.errors).forEach(key => {
let obj = {}; obj[key] = error.response.data.errors[key]
let obj = {};
obj[key] = error.response.data.errors[key]
this.$refs.createClient.setErrors(obj);
})
@@ -265,9 +269,4 @@
@import '@assets/vuefilemanager/_variables';
@import '@assets/vuefilemanager/_mixins';
@import '@assets/vuefilemanager/_forms';
.block-form {
max-width: 100%;
}
</style>
@@ -0,0 +1,531 @@
<template>
<div id="single-page">
<MobileHeader :title="pageTitle" />
<PageHeader :title="pageTitle" />
<div id="page-content" class="medium-width">
<div class="content-page">
<ValidationObserver @submit.prevent="createInvoice" ref="createInvoice" v-slot="{ invalid }" tag="form" class="form block-form">
<PageTab>
<PageTabGroup>
<FormLabel icon="tool">Invoice Properties</FormLabel>
<!--<div class="block-wrapper">
<label>Invoice Type:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="invoice_type" rules="required" v-slot="{ errors }">
<SelectInput v-model="invoice.invoice_type" :default="invoice.invoice_type" :options="invoiceTypeList" placeholder="" :isError="errors[0]" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>-->
<div class="block-wrapper">
<label>Invoice Number:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="invoice_number" rules="required" v-slot="{ errors }">
<input v-model.number="invoice.invoice_number" placeholder="" type="number" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<small v-if="latestInvoiceNumber" class="input-help">
Recommendation based on your latest invoice number {{ latestInvoiceNumber }}
</small>
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div class="block-wrapper">
<label>Variable Number:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="variable_number" rules="required" v-slot="{ errors }">
<input v-model.number="invoice.variable_number" placeholder="" type="number" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<small v-if="latestInvoiceNumber" class="input-help">
Recommendation based on your latest invoice number {{ latestInvoiceNumber }}
</small>
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div class="block-wrapper">
<label>Delivery At:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="variable_number" rules="required" v-slot="{ errors }">
<input v-model="invoice.delivery_at" placeholder="" type="date" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
</PageTabGroup>
<PageTabGroup>
<FormLabel icon="user">Client</FormLabel>
<div class="block-wrapper">
<label>Client:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="invoice_type" rules="required" v-slot="{ errors }">
<SelectInput v-model="invoice.client" :options="clients" placeholder="Create new or select existing client..." :isError="errors[0]" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div v-if="isNewClient" class="block-wrapper">
<label>ICO:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_ico" rules="required" v-slot="{ errors }">
<input v-model="invoice.client_ico" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div v-if="isNewClient" class="block-wrapper">
<label>DIC:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_dic" rules="required" v-slot="{ errors }">
<input v-model="invoice.client_dic" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div v-if="isNewClient" class="block-wrapper">
<label>IC DPH (optional):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_ic_dph" v-slot="{ errors }">
<input v-model="invoice.client_ic_dph" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div v-if="isNewClient" class="block-wrapper">
<label>Company name:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_name" rules="required" v-slot="{ errors }">
<input v-model="invoice.client_name" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div v-if="isNewClient" class="block-wrapper">
<label>Address:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_address" rules="required" v-slot="{ errors }">
<input v-model="invoice.client_address" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div v-if="isNewClient" class="wrapper-inline">
<div class="block-wrapper">
<label>City:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_city" rules="required" v-slot="{ errors }">
<input v-model="invoice.client_city" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div class="block-wrapper">
<label>Postal Code:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_postal_code" rules="required" v-slot="{ errors }">
<input v-model="invoice.client_postal_code" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
</div>
<div v-if="isNewClient" class="block-wrapper">
<label>Country:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_country" rules="required" v-slot="{ errors }">
<SelectInput v-model="invoice.client_country" :default="invoice.client_country" :options="countries" placeholder="" :isError="errors[0]" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div v-if="isNewClient" class="block-wrapper">
<label>Phone (optional):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_phone_number" v-slot="{ errors }">
<input v-model="invoice.client_phone_number" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div v-if="isNewClient" class="block-wrapper">
<label>Email (optional):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_email" v-slot="{ errors }">
<input v-model="invoice.client_email" placeholder="" type="email" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div v-if="isNewClient" class="block-wrapper">
<label>Logo (optional):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_avatar" v-slot="{ errors }">
<ImageInput v-model="invoice.client_avatar" :error="errors[0]" />
</ValidationProvider>
</div>
</PageTabGroup>
<PageTabGroup>
<FormLabel icon="edit">Items</FormLabel>
<div class="duplicator">
<div class="plan-item duplicator-item" v-for="(item, index) in invoice.items" :key="index++">
<x-icon @click="removeRow(item)" v-if="index !== 0" size="22" class="delete-item hover-text-theme" />
<div class="block-wrapper">
<label>Description:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="description" rules="required" v-slot="{ errors }">
<input v-model="item.description" placeholder="Type item description..." type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div class="wrapper-inline">
<div class="block-wrapper">
<label>Amount:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="amount" rules="required" v-slot="{ errors }">
<input v-model.number="item.amount" placeholder="The amount in Pcs." type="number" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div v-if="isVatPayer" class="block-wrapper">
<label>Tax Rate:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="tax_rate" rules="required" v-slot="{ errors }">
<input v-model.number="item.tax_rate" placeholder="Type item tax rate in %..." type="number" step="1" min="1" max="100" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div class="block-wrapper">
<label>Price:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="price" rules="required" v-slot="{ errors }">
<input v-model.number="item.price" placeholder="Type the item price..." type="number" step="0.01" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
</div>
</div>
<ButtonBase @click.native="addRow" class="duplicator-add-button" button-style="theme">
Add New Item
</ButtonBase>
</div>
</PageTabGroup>
<PageTabGroup>
<FormLabel icon="credit-card">Discount</FormLabel>
<div class="block-wrapper">
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" v-slot="{ errors }">
<div class="inline-wrapper">
<div class="switch-label">
<label class="input-label">Apply discount:</label>
<small class="input-help">You can apply percentage or value discount on your invoice.</small>
</div>
<SwitchInput v-model="isDiscount" class="switch" :state="isDiscount" />
</div>
</ValidationProvider>
</div>
<div v-if="isDiscount" class="block-wrapper">
<label>Discount Type:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="discount_type" rules="required" v-slot="{ errors }">
<SelectInput v-model="invoice.discount_type" :default="invoice.discount_type" :options="discountTypeList" placeholder="" :isError="errors[0]" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
<div v-if="isDiscount" class="block-wrapper">
<label>Discount Rate:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="discount_rate" rules="required" v-slot="{ errors }">
<input v-model.number="invoice.discount_rate" placeholder="" type="number" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider>
</div>
</PageTabGroup>
<PageTabGroup>
<FormLabel icon="settings">Others</FormLabel>
<div v-if="isNewClient && invoice.client_email" class="block-wrapper">
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" v-slot="{ errors }">
<div class="inline-wrapper">
<div class="switch-label">
<label class="input-label">Store client for future use:</label>
<small class="input-help">Client will be stored to your list and will be ready to reuse again when you create new invoice.</small>
</div>
<SwitchInput v-model="invoice.send_invoice" class="switch" :state="invoice.send_invoice" />
</div>
</ValidationProvider>
</div>
<div class="block-wrapper">
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" v-slot="{ errors }">
<div class="inline-wrapper">
<div class="switch-label">
<label class="input-label">Send invoice on client's email:</label>
<small class="input-help">Invoice will be sent to client immediately after invoice generate.</small>
</div>
<SwitchInput v-model="invoice.send_invoice" class="switch" :state="invoice.send_invoice" />
</div>
</ValidationProvider>
</div>
<div class="block-wrapper">
<ButtonBase :disabled="isLoading" :loading="isLoading" button-style="theme" type="submit">
Store & Generate Invoice
</ButtonBase>
</div>
</PageTabGroup>
</PageTab>
</ValidationObserver>
</div>
</div>
</div>
</template>
<script>
import {ValidationProvider, ValidationObserver} from 'vee-validate/dist/vee-validate.full'
import PageTabGroup from '@/components/Others/Layout/PageTabGroup'
import SwitchInput from '@/components/Others/Forms/SwitchInput'
import SelectInput from '@/components/Others/Forms/SelectInput'
import ImageInput from '@/components/Others/Forms/ImageInput'
import FormLabel from '@/components/Others/Forms/FormLabel'
import MobileHeader from '@/components/Mobile/MobileHeader'
import ButtonBase from '@/components/FilesView/ButtonBase'
import PageTab from '@/components/Others/Layout/PageTab'
import PageHeader from '@/components/Others/PageHeader'
import InfoBox from '@/components/Others/Forms/InfoBox'
import {required} from 'vee-validate/dist/rules'
import {XIcon} from 'vue-feather-icons'
import {mapGetters} from 'vuex'
import {events} from "@/bus"
import axios from "axios"
export default {
name: 'CreateInvoice',
components: {
ValidationProvider,
ValidationObserver,
PageTabGroup,
MobileHeader,
SelectInput,
SwitchInput,
ImageInput,
PageHeader,
ButtonBase,
FormLabel,
required,
InfoBox,
PageTab,
XIcon,
},
computed: {
...mapGetters([
'countries',
'config',
]),
pageTitle() {
return {
'regular': 'Create Regular Invoice',
'advance': 'Create Advance Invoice',
}[this.$route.query.type]
},
isNewClient() {
return this.invoice.client === 'new-client'
},
},
watch: {
isDiscount(val) {
if (!val) {
this.invoice.discount_rate = null
this.invoice.discount_type = null
}
}
},
data() {
return {
isLoading: true,
isError: false,
isDiscount: false,
isVatPayer: false,
clients: [],
latestInvoiceNumber: undefined,
_invoice: {
invoice_type: '',
invoice_number: '',
variable_number: '',
delivery_at: '',
items: [
{
id: 1,
description: '',
amount: 1,
tax_rate: undefined,
price: undefined,
}
],
discount_type: null,
discount_rate: null,
client: '',
client_avatar: '',
client_name: '',
client_email: '',
client_phone_number: '',
client_address: '',
client_city: '',
client_postal_code: '',
client_country: '',
client_ico: '',
client_dic: '',
client_ic_dph: '',
send_invoice: true,
store_client: true,
},
invoice: {
invoice_type: 'regular-invoice',
invoice_number: '2120001',
variable_number: '2120001',
delivery_at: '2021-04-09',
items: [
{
id: 1,
description: 'Item 1',
amount: 1,
tax_rate: 20,
price: 200,
}
],
discount_type: 'percent',
discount_rate: '10',
client: '0354bab9-1b23-4d17-aa5f-fd8e9aaaf0a2',
client_avatar: '',
client_name: 'VueFileManager Inc.',
client_email: 'howdy@hi5ve.digital',
client_phone_number: '+421950123456',
client_address: 'Does 20',
client_city: 'Bratislava',
client_postal_code: '04001',
client_country: 'SK',
client_ico: '46530045',
client_dic: '2023489457',
client_ic_dph: 'SK2023489457',
send_invoice: false,
store_client: true,
},
invoiceTypeList: [
{
label: 'Regular Invoice',
value: 'regular-invoice',
},
{
label: 'Advance Invoice',
value: 'advance-invoice',
},
],
discountTypeList: [
{
label: 'Percentage',
value: 'percent',
},
{
label: 'Amount',
value: 'value',
},
],
}
},
methods: {
async createInvoice() {
const isValid = await this.$refs.createInvoice.validate();
if (!isValid) {
this.isError = true
return
}
// Start loading
this.isLoading = true
// Create form
let formData = new FormData()
// Append data to form
Object.keys(this.invoice).forEach(key => {
if (key === 'items') {
formData.append(key, JSON.stringify(this.invoice[key]))
} else {
formData.append(key, this.invoice[key])
}
})
// Send request to get user token
axios
.post('/api/oasis/invoices', formData, {
headers: {
'Content-Type': 'multipart/form-data',
}
})
.then(response => {
events.$emit('toaster', {
type: 'success',
message: 'Invoice was created successfully',
})
// Go to invoice page
this.$router.push({name: 'InvoicesList'})
})
.catch(error => {
this.isError = true
if (error.response.status === 422) {
Object.keys(error.response.data.errors).forEach(key => {
let obj = {}; obj[key] = error.response.data.errors[key]
this.$refs.createInvoice.setErrors(obj);
})
} else {
events.$emit('alert:open', {
title: this.$t('popup_error.title'),
message: this.$t('popup_error.message'),
})
}
})
.finally(() => {
this.isLoading = false
})
},
addRow() {
this.invoice.items.push({
id: Math.floor(Math.random() * 10000000),
description: '',
amount: 1,
tax_rate: 0,
price: undefined,
})
},
removeRow(item) {
this.invoice.items = this.invoice.items.filter(obj => obj.id !== item.id)
},
},
mounted() {
this.invoice.invoice_type = this.$route.query.type
axios.get('/api/oasis/invoices/editor')
.then(response => {
this.isVatPayer = response.data.isVatPayer
this.clients = response.data.clients
this.clients.unshift({
label: 'Register new client...',
value: 'new-client'
})
this.invoice.invoice_number = response.data.recommendedInvoiceNumber
this.invoice.variable_number = response.data.recommendedInvoiceNumber
this.latestInvoiceNumber = response.data.latestInvoiceNumber
})
.finally(() => {
this.isLoading = false
})
}
}
</script>
<style lang="scss" scoped>
@import '@assets/vuefilemanager/_variables';
@import '@assets/vuefilemanager/_mixins';
@import '@assets/vuefilemanager/_forms';
</style>
@@ -23,8 +23,8 @@
<ToolbarButton @click.stop.native="createCreateMenu" source="plus" :action="$t('actions.create_folder')" />
<PopoverItem name="desktop-create-invoices">
<OptionGroup>
<Option title="Create Invoice" icon="file-plus" />
<Option title="Create Advance Invoice" icon="clock" />
<Option @click.stop.native="createInvoice('regular-invoice')" title="Create Regular Invoice" icon="file-plus" />
<Option @click.stop.native="createInvoice('advance-invoice')" title="Create Advance Invoice" icon="clock" />
</OptionGroup>
<OptionGroup>
<Option @click.native="createClient" title="Create Client" icon="user-plus" />
@@ -115,6 +115,9 @@
}
},
methods: {
createInvoice(type) {
this.$router.push({name: 'CreateInvoice', query: {type: type}})
},
createClient() {
this.$router.push({name: 'CreateClient'})
},
@@ -1,6 +1,10 @@
<template>
<div class="form-label">
<edit-2-icon v-if="!icon" size="22" class="icon text-theme" />
<edit2-icon v-if="!icon" size="22" class="icon text-theme" />
<credit-card-icon v-if="icon === 'credit-card'" size="22" class="icon text-theme" />
<tool-icon v-if="icon === 'tool'" size="22" class="icon text-theme" />
<edit-icon v-if="icon === 'edit'" size="22" class="icon text-theme" />
<user-icon v-if="icon === 'user'" size="22" class="icon text-theme" />
<settings-icon v-if="icon === 'settings'" size="22" class="icon text-theme" />
<b class="label">
<slot></slot>
@@ -9,14 +13,18 @@
</template>
<script>
import { Edit2Icon, SettingsIcon } from 'vue-feather-icons'
import { Edit2Icon, SettingsIcon, UserIcon, EditIcon, ToolIcon, CreditCardIcon } from 'vue-feather-icons'
export default {
name: 'FormLabel',
props: ['icon'],
components: {
CreditCardIcon,
SettingsIcon,
Edit2Icon,
SettingsIcon
EditIcon,
UserIcon,
ToolIcon,
}
}
</script>
@@ -33,7 +41,7 @@
.icon {
margin-right: 10px;
path, circle {
path, circle, rect, line {
color: inherit;
}
}
+9
View File
@@ -112,6 +112,15 @@ const routesOasis = [
title: 'Create Client'
},
},
{
name: 'CreateInvoice',
path: '/invoice/create-invoice',
component: () =>
import(/* webpackChunkName: "chunks/oasis/invoices/create-invoice" */ './Oasis/Invoices/Invoices/CreateInvoice'),
meta: {
requiresAuth: true,
},
},
{
name: 'Client',
path: '/invoice/client/:id',
+57
View File
@@ -62,6 +62,63 @@
}
}
.duplicator {
.duplicator-add-button {
//width: 100%;
}
.duplicator-item {
box-shadow: 0 1px 5px rgba(0, 0, 0, 0.12);
border-radius: 8px;
background: white;
padding: 25px 25px 10px;
margin: 0 0 32px;
position: relative;
.duplicator-title {
@include font-size(18);
margin-bottom: 20px;
display: block;
font-weight: 700;
}
.delete-item {
position: absolute;
top: 15px;
right: 15px;
cursor: pointer;
&:hover {
line {
color: inherit;
}
}
}
.block-wrapper {
margin-bottom: 16px !important;
}
input[type="text"],
input[type="number"] {
box-shadow: none;
background: white;
border-bottom: 1px solid darken($light_mode_border, 6%);
border-radius: 0;
padding: 0 0 8px;
&:focus {
border-top-color: transparent !important;
border-left-color: transparent !important;
border-right-color: transparent !important;
}
}
}
}
.form-fixed-width {
width: 700px;
margin: 0 auto;
+4
View File
@@ -115,6 +115,7 @@ textarea,
input[type="password"],
input[type="text"],
input[type="number"],
input[type="date"],
input[type="email"] {
border: 1px solid transparent;
@include transition(150ms);
@@ -236,6 +237,7 @@ input[type="email"] {
textarea,
input[type="password"],
input[type="number"],
input[type="date"],
input[type="text"],
input[type="email"] {
padding: 14px 20px;
@@ -278,6 +280,7 @@ input[type="email"] {
textarea,
input[type="password"],
input[type="text"],
input[type="date"],
input[type="number"],
input[type="email"] {
border-color: $dark_mode_foreground;
@@ -300,6 +303,7 @@ input[type="email"] {
textarea,
input[type="password"],
input[type="date"],
input[type="text"],
input[type="number"],
input[type="email"] {
-43
View File
@@ -11,49 +11,6 @@
}
}
.duplicator {
.duplicator-add-button {
width: 100%;
}
.duplicator-item {
box-shadow: 0 1px 5px rgba(0, 0, 0, 0.12);
border-radius: 8px;
background: white;
padding: 25px;
margin: 0 -25px 32px;
position: relative;
.duplicator-title {
@include font-size(18);
margin-bottom: 20px;
display: block;
font-weight: 700;
}
.delete-item {
position: absolute;
top: 15px;
right: 15px;
cursor: pointer;
&:hover {
line {
stroke: $theme;
}
}
}
input,
textarea {
box-shadow: none;
background: #FAFAFA;
}
}
}
.form {
max-width: 580px;
text-align: left;
+4 -3
View File
@@ -1,14 +1,13 @@
<?php
use App\Services\Oasis\OasisDevService;
use App\Http\Controllers\Oasis\AdminController;
use App\Http\Controllers\Oasis\ClientController;
use App\Http\Controllers\Oasis\InvoiceController;
use App\Http\Controllers\Oasis\InvoiceProfileController;
use App\Http\Controllers\Oasis\SubscriptionController;
use App\Services\Oasis\OasisDevService;
use App\Http\Controllers\Oasis\InvoiceProfileController;
Route::group(['middleware' => 'api', 'prefix' => '/api/oasis'], function () {
// Admin
Route::group(['middleware' => 'auth:sanctum', 'prefix' => 'admin'], function () {
Route::get('/company-details', [AdminController::class, 'get_company_details']);
@@ -35,6 +34,8 @@ Route::group(['middleware' => 'api', 'prefix' => '/api/oasis'], function () {
Route::get('/profile', [InvoiceProfileController::class, 'show']);
Route::post('/profile', [InvoiceProfileController::class, 'store']);
Route::patch('/profile', [InvoiceProfileController::class, 'update']);
Route::get('/editor', [InvoiceController::class, 'editor']);
});
// Clients
+81
View File
@@ -665,4 +665,85 @@ class OasisInvoiceTest extends TestCase
'invoiceNumber' => '2001212',
])->assertStatus(200);
}
/**
* @test
*/
public function it_get_data_for_invoice_editor()
{
$user = User::factory(User::class)
->create(['role' => 'user']);
Sanctum::actingAs($user);
InvoiceProfile::factory(InvoiceProfile::class)
->create(['user_id' => $user->id]);
$client = Client::factory(Client::class)
->count(2)
->create(['user_id' => $user->id]);
$client->pluck('id')
->each(function ($id) {
$this->getJson('/api/oasis/invoices/editor')
->assertStatus(200)
->assertJsonFragment([
'value' => $id,
'recommendedInvoiceNumber' => '20210001',
]);
});
}
/**
* @test
*/
public function it_get_default_recommended_invoice_number()
{
$user = User::factory(User::class)
->create(['role' => 'user']);
Sanctum::actingAs($user);
InvoiceProfile::factory(InvoiceProfile::class)
->create(['user_id' => $user->id]);
$this->getJson('/api/oasis/invoices/editor')
->assertStatus(200)
->assertJsonFragment([
'latestInvoiceNumber' => null,
'recommendedInvoiceNumber' => '20210001',
]);
}
/**
* @test
*/
public function it_get_next_invoice_number_after_latest_invoice_number()
{
$user = User::factory(User::class)
->create(['role' => 'user']);
Sanctum::actingAs($user);
InvoiceProfile::factory(InvoiceProfile::class)
->create(['user_id' => $user->id]);
Invoice::factory(Invoice::class)
->create([
'user_id' => $user->id,
'invoice_type' => 'regular-invoice',
'invoice_number' => 20210001,
'client' => [
'name' => 'VueFileManager Inc.',
],
'user' => 'test',
]);
$this->getJson('/api/oasis/invoices/editor')
->assertStatus(200)
->assertJsonFragment([
'latestInvoiceNumber' => 20210001,
'recommendedInvoiceNumber' => 20210002,
]);
}
}