mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-05-26 22:44:42 +00:00
Billing profile implementation
This commit is contained in:
@@ -4,9 +4,12 @@ namespace App\Console\Commands;
|
|||||||
|
|
||||||
use App\Models\Oasis\Client;
|
use App\Models\Oasis\Client;
|
||||||
use App\Models\Oasis\Invoice;
|
use App\Models\Oasis\Invoice;
|
||||||
|
use App\Models\Setting;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
use Illuminate\Database\Eloquent\Factories\Sequence;
|
use Illuminate\Database\Eloquent\Factories\Sequence;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
class SetupOasisEnvironment extends Command
|
class SetupOasisEnvironment extends Command
|
||||||
{
|
{
|
||||||
@@ -44,6 +47,7 @@ class SetupOasisEnvironment extends Command
|
|||||||
$this->info('Setting up Oasis environment');
|
$this->info('Setting up Oasis environment');
|
||||||
|
|
||||||
$this->create_demo_content();
|
$this->create_demo_content();
|
||||||
|
$this->set_oasis_data();
|
||||||
|
|
||||||
$this->info('Dispatching jobs...');
|
$this->info('Dispatching jobs...');
|
||||||
$this->call('queue:work', [
|
$this->call('queue:work', [
|
||||||
@@ -58,6 +62,33 @@ class SetupOasisEnvironment extends Command
|
|||||||
$user = User::whereEmail('howdy@hi5ve.digital')
|
$user = User::whereEmail('howdy@hi5ve.digital')
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
|
$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");
|
||||||
|
|
||||||
|
$profile = $user->invoiceProfile()->create([
|
||||||
|
'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",
|
||||||
|
]);
|
||||||
|
|
||||||
$clients = Client::factory(Client::class)
|
$clients = Client::factory(Client::class)
|
||||||
->count(6)
|
->count(6)
|
||||||
->create(['user_id' => $user->id]);
|
->create(['user_id' => $user->id]);
|
||||||
@@ -72,8 +103,10 @@ class SetupOasisEnvironment extends Command
|
|||||||
['client_id' => $clients[5]->id],
|
['client_id' => $clients[5]->id],
|
||||||
))->count(2)
|
))->count(2)
|
||||||
->create([
|
->create([
|
||||||
'user_id' => $user->id,
|
'user_id' => $user->id,
|
||||||
'invoice_type' => 'regular-invoice'
|
'invoice_type' => 'regular-invoice',
|
||||||
|
'discount_type' => null,
|
||||||
|
'user' => $profile->toArray(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$advance_invoices = Invoice::factory(Invoice::class)
|
$advance_invoices = Invoice::factory(Invoice::class)
|
||||||
@@ -89,6 +122,7 @@ class SetupOasisEnvironment extends Command
|
|||||||
'user_id' => $user->id,
|
'user_id' => $user->id,
|
||||||
'invoice_type' => 'advance-invoice',
|
'invoice_type' => 'advance-invoice',
|
||||||
'discount_type' => null,
|
'discount_type' => null,
|
||||||
|
'user' => $profile->toArray(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Generate PDF
|
// Generate PDF
|
||||||
@@ -109,4 +143,13 @@ class SetupOasisEnvironment extends Command
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function set_oasis_data()
|
||||||
|
{
|
||||||
|
Setting::updateOrCreate([
|
||||||
|
'name' => 'app_color'
|
||||||
|
], [
|
||||||
|
'value' => '#ae5fec'
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
|
|||||||
use App\Http\Resources\Oasis\InvoiceProfileResource;
|
use App\Http\Resources\Oasis\InvoiceProfileResource;
|
||||||
use App\Models\Oasis\InvoiceProfile;
|
use App\Models\Oasis\InvoiceProfile;
|
||||||
use App\Models\Setting;
|
use App\Models\Setting;
|
||||||
|
use Auth;
|
||||||
use Illuminate\Contracts\Foundation\Application;
|
use Illuminate\Contracts\Foundation\Application;
|
||||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@@ -13,6 +14,15 @@ use Illuminate\Http\Response;
|
|||||||
|
|
||||||
class InvoiceProfileController extends Controller
|
class InvoiceProfileController extends Controller
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @return Application|ResponseFactory|Response
|
||||||
|
*/
|
||||||
|
public function show()
|
||||||
|
{
|
||||||
|
return response(
|
||||||
|
new InvoiceProfileResource(Auth::user()->invoiceProfile), 200
|
||||||
|
);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @return Application|ResponseFactory|Response
|
* @return Application|ResponseFactory|Response
|
||||||
@@ -21,8 +31,8 @@ class InvoiceProfileController extends Controller
|
|||||||
{
|
{
|
||||||
$profile = InvoiceProfile::create([
|
$profile = InvoiceProfile::create([
|
||||||
'user_id' => $request->user()->id,
|
'user_id' => $request->user()->id,
|
||||||
'logo' => store_avatar($request, 'logo') ?? null,
|
'logo' => store_system_image($request, 'logo') ?? null,
|
||||||
'stamp' => store_avatar($request, 'stamp') ?? null,
|
'stamp' => store_system_image($request, 'stamp') ?? null,
|
||||||
'company' => $request->company,
|
'company' => $request->company,
|
||||||
'email' => $request->email,
|
'email' => $request->email,
|
||||||
'ico' => $request->ico,
|
'ico' => $request->ico,
|
||||||
@@ -59,7 +69,7 @@ class InvoiceProfileController extends Controller
|
|||||||
$request->user()
|
$request->user()
|
||||||
->invoiceProfile()
|
->invoiceProfile()
|
||||||
->update([
|
->update([
|
||||||
$request->name => store_avatar($request, $request->name)
|
$request->name => store_system_image($request, $request->name)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return response('Done', 204);
|
return response('Done', 204);
|
||||||
|
|||||||
+14
-6
@@ -290,14 +290,22 @@ function store_avatar($request, $name)
|
|||||||
// Store avatar
|
// Store avatar
|
||||||
$image_path = Str::random(16) . '-' . $image->getClientOriginalName();
|
$image_path = Str::random(16) . '-' . $image->getClientOriginalName();
|
||||||
|
|
||||||
// Create intervention image
|
if (in_array($image->getClientMimeType(), ['image/gif', 'image/jpeg', 'image/jpg', 'image/png', 'image/webp'])) {
|
||||||
$img = Image::make($image->getRealPath());
|
|
||||||
|
|
||||||
// Generate thumbnail
|
// Create intervention image
|
||||||
$img->fit('150', '150')->stream();
|
$img = Image::make($image->getRealPath());
|
||||||
|
|
||||||
// Store thumbnail to disk
|
// Generate thumbnail
|
||||||
Storage::put("avatars/$image_path", $img);
|
$img->fit('150', '150')->stream();
|
||||||
|
|
||||||
|
// Store thumbnail to disk
|
||||||
|
Storage::put("avatars/$image_path", $img);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($image->getClientMimeType() === 'image/svg+xml') {
|
||||||
|
|
||||||
|
Storage::putFileAs("avatars", $image, $image_path);
|
||||||
|
}
|
||||||
|
|
||||||
// Return path to image
|
// Return path to image
|
||||||
return "avatars/$image_path";
|
return "avatars/$image_path";
|
||||||
|
|||||||
@@ -21,7 +21,9 @@ class Invoice extends Model
|
|||||||
'client' => 'array',
|
'client' => 'array',
|
||||||
];
|
];
|
||||||
|
|
||||||
public $guarded = ['id'];
|
public $guarded = [
|
||||||
|
'id'
|
||||||
|
];
|
||||||
|
|
||||||
public $incrementing = false;
|
public $incrementing = false;
|
||||||
|
|
||||||
|
|||||||
@@ -25,11 +25,15 @@ class InvoiceFactory extends Factory
|
|||||||
'id' => $this->faker->uuid,
|
'id' => $this->faker->uuid,
|
||||||
'user_id' => $this->faker->uuid,
|
'user_id' => $this->faker->uuid,
|
||||||
'client_id' => $this->faker->uuid,
|
'client_id' => $this->faker->uuid,
|
||||||
'invoice_type' => $this->faker->randomElement(['regular-invoice', 'advance-invoice']),
|
'invoice_type' => $this->faker->randomElement([
|
||||||
|
'regular-invoice', 'advance-invoice'
|
||||||
|
]),
|
||||||
'invoice_number' => $this->faker->numberBetween(2120001, 2120999),
|
'invoice_number' => $this->faker->numberBetween(2120001, 2120999),
|
||||||
'variable_number' => $this->faker->numberBetween(2120001, 2120999),
|
'variable_number' => $this->faker->numberBetween(2120001, 2120999),
|
||||||
'currency' => $this->faker->randomElement(['CZK', 'EUR']),
|
'currency' => $this->faker->randomElement([
|
||||||
'user' => null,
|
'CZK', 'EUR'
|
||||||
|
]),
|
||||||
|
'user' => [],
|
||||||
'client' => [
|
'client' => [
|
||||||
'name' => $this->faker->company,
|
'name' => $this->faker->company,
|
||||||
'email' => $this->faker->email,
|
'email' => $this->faker->email,
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"/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/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/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=b4e2d99a172f06a1d312",
|
||||||
"/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=1ae1e65bb6a5ed7c3e10",
|
"/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=f9f637ff26a13d7beb5d",
|
"/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=f9f637ff26a13d7beb5d",
|
||||||
"/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-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-billings.js": "/chunks/app-billings.js?id=82133cc16f55222bbbe6",
|
||||||
@@ -52,10 +52,10 @@
|
|||||||
"/chunks/invoices.js": "/chunks/invoices.js?id=1deb187f6d3eb1e81ad0",
|
"/chunks/invoices.js": "/chunks/invoices.js?id=1deb187f6d3eb1e81ad0",
|
||||||
"/chunks/not-found-shared.js": "/chunks/not-found-shared.js?id=7fc7f9b6f10bdfac770e",
|
"/chunks/not-found-shared.js": "/chunks/not-found-shared.js?id=7fc7f9b6f10bdfac770e",
|
||||||
"/chunks/oasis/homepage.js": "/chunks/oasis/homepage.js?id=a1885dd8814f9eb63a1c",
|
"/chunks/oasis/homepage.js": "/chunks/oasis/homepage.js?id=a1885dd8814f9eb63a1c",
|
||||||
"/chunks/oasis/invoices.js": "/chunks/oasis/invoices.js?id=fd5e7aca8897f59cd625",
|
"/chunks/oasis/invoices.js": "/chunks/oasis/invoices.js?id=d43eb767e75676b3709f",
|
||||||
"/chunks/oasis/invoices/list.js": "/chunks/oasis/invoices/list.js?id=7e67f5fdd3306971f5e4",
|
"/chunks/oasis/invoices/list.js": "/chunks/oasis/invoices/list.js?id=a5ade7590b36f3793415",
|
||||||
"/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.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=750a1e714440c4f03c2f",
|
"/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=53d9f2a31b1dd5dad85e",
|
||||||
"/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/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/sign-up.js": "/chunks/oasis/sign-up.js?id=e53eeb48ebabae259f9c",
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=08e2056bc3744b2ea8f9",
|
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=08e2056bc3744b2ea8f9",
|
||||||
"/chunks/plans.js": "/chunks/plans.js?id=5e1c668e35d2f04973b7",
|
"/chunks/plans.js": "/chunks/plans.js?id=5e1c668e35d2f04973b7",
|
||||||
"/chunks/platform.js": "/chunks/platform.js?id=f463eed74ce0e6852b6d",
|
"/chunks/platform.js": "/chunks/platform.js?id=f463eed74ce0e6852b6d",
|
||||||
"/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=7e96470b4052320d20b0",
|
"/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=ec633fb6ff41c34084c8",
|
||||||
"/chunks/profile.js": "/chunks/profile.js?id=1c1c666004fb44b1c404",
|
"/chunks/profile.js": "/chunks/profile.js?id=1c1c666004fb44b1c404",
|
||||||
"/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=d0a44ee2cc3e9882c14a",
|
"/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=a1e46acc22ce82b2a61b",
|
||||||
@@ -108,5 +108,96 @@
|
|||||||
"/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~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",
|
"/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",
|
||||||
"/vendors~chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared~~c9df84c5.js": "/vendors~chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared~~c9df84c5.js?id=4d042d0c0d8477a4f7ac",
|
"/vendors~chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared~~c9df84c5.js": "/vendors~chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared~~c9df84c5.js?id=4d042d0c0d8477a4f7ac",
|
||||||
"/vendors~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared.js": "/vendors~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared.js?id=11378342c3b6251c133e"
|
"/vendors~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared.js": "/vendors~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared.js?id=11378342c3b6251c133e",
|
||||||
|
"/chunks/oasis/invoices/list.522cccf189442f3c8df9.hot-update.js": "/chunks/oasis/invoices/list.522cccf189442f3c8df9.hot-update.js",
|
||||||
|
"/js/main.79ac1678fa87cb40e4cd.hot-update.js": "/js/main.79ac1678fa87cb40e4cd.hot-update.js",
|
||||||
|
"/js/main.6ff7dfdc1dd89702fe6a.hot-update.js": "/js/main.6ff7dfdc1dd89702fe6a.hot-update.js",
|
||||||
|
"/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=ebd70d658c5b32c14826",
|
||||||
|
"/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",
|
||||||
|
"/chunks/oasis/invoices/profile.86cce368832399c14f2c.hot-update.js": "/chunks/oasis/invoices/profile.86cce368832399c14f2c.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.90535b42202f6ccfb4d4.hot-update.js": "/chunks/oasis/invoices/profile.90535b42202f6ccfb4d4.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.46b1c604b9cf2d07c83b.hot-update.js": "/chunks/oasis/invoices/profile.46b1c604b9cf2d07c83b.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.d4dc7257e82ccc72c998.hot-update.js": "/chunks/oasis/invoices/profile.d4dc7257e82ccc72c998.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.99eed22926ecbbbef068.hot-update.js": "/chunks/oasis/invoices/profile.99eed22926ecbbbef068.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.c0ae9ad0cf7b1958a080.hot-update.js": "/chunks/oasis/invoices/profile.c0ae9ad0cf7b1958a080.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.4e52b194c26ba587fe50.hot-update.js": "/chunks/oasis/invoices/profile.4e52b194c26ba587fe50.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices.8695612ce80a082bf0f3.hot-update.js": "/chunks/oasis/invoices.8695612ce80a082bf0f3.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices.a54b0b63a9fe6e30370b.hot-update.js": "/chunks/oasis/invoices.a54b0b63a9fe6e30370b.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/list.8f7344b731f052fffd1e.hot-update.js": "/chunks/oasis/invoices/list.8f7344b731f052fffd1e.hot-update.js",
|
||||||
|
"/js/main.a8f461a7be41a863060e.hot-update.js": "/js/main.a8f461a7be41a863060e.hot-update.js",
|
||||||
|
"/chunks/app-language~chunks/dashboard~chunks/dashboard-oasis~chunks/files~chunks/invoices~chunks/oasi~be89c0bb.js": "/chunks/app-language~chunks/dashboard~chunks/dashboard-oasis~chunks/files~chunks/invoices~chunks/oasi~be89c0bb.js?id=b3e30c8dd757237db0e2",
|
||||||
|
"/chunks/files~chunks/oasis/platba~chunks/settings-subscription~chunks/shared-files~chunks/shared/file~9d1352fd.js": "/chunks/files~chunks/oasis/platba~chunks/settings-subscription~chunks/shared-files~chunks/shared/file~9d1352fd.js?id=4030b241faac6b31341f",
|
||||||
|
"/chunks/files~chunks/platform~chunks/shared-files~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared-files~chunks/shared/file-browser.js?id=6808db2deb2d07287ce9",
|
||||||
|
"/chunks/oasis/invoices.a8f461a7be41a863060e.hot-update.js": "/chunks/oasis/invoices.a8f461a7be41a863060e.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/list.a8f461a7be41a863060e.hot-update.js": "/chunks/oasis/invoices/list.a8f461a7be41a863060e.hot-update.js",
|
||||||
|
"/chunks/platform~chunks/shared.a8f461a7be41a863060e.hot-update.js": "/chunks/platform~chunks/shared.a8f461a7be41a863060e.hot-update.js",
|
||||||
|
"/js/main.54fd2076f822088606df.hot-update.js": "/js/main.54fd2076f822088606df.hot-update.js",
|
||||||
|
"/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/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",
|
||||||
|
"/chunks/oasis/invoices~chunks/platform~chunks/shared.js": "/chunks/oasis/invoices~chunks/platform~chunks/shared.js?id=9ad184d8e96c7d04941c",
|
||||||
|
"/vendors~chunks/files~chunks/oasis/invoices~chunks/platform~chunks/shared~chunks/shared-files~chunks/~9b82b04f.js": "/vendors~chunks/files~chunks/oasis/invoices~chunks/platform~chunks/shared~chunks/shared-files~chunks/~9b82b04f.js?id=548bff41ffa0385b8f01",
|
||||||
|
"/vendors~chunks/oasis/invoices~chunks/platform~chunks/shared.js": "/vendors~chunks/oasis/invoices~chunks/platform~chunks/shared.js?id=03d3cf785cbafa4d31f0",
|
||||||
|
"/chunks/oasis/invoices.a23d9da8da43103742b3.hot-update.js": "/chunks/oasis/invoices.a23d9da8da43103742b3.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices.fc81410f7429e93506c0.hot-update.js": "/chunks/oasis/invoices.fc81410f7429e93506c0.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices.e6a621e89dc3de2ba13c.hot-update.js": "/chunks/oasis/invoices.e6a621e89dc3de2ba13c.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices.5c5267f5589e3ec325ad.hot-update.js": "/chunks/oasis/invoices.5c5267f5589e3ec325ad.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices.c0d206d920b5666aa893.hot-update.js": "/chunks/oasis/invoices.c0d206d920b5666aa893.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices.6f84b681c95b116f15e8.hot-update.js": "/chunks/oasis/invoices.6f84b681c95b116f15e8.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.54653bbde50307d4acdd.hot-update.js": "/chunks/oasis/invoices/profile.54653bbde50307d4acdd.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.e6e1c5c2c9c578939b3a.hot-update.js": "/chunks/oasis/invoices/profile.e6e1c5c2c9c578939b3a.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.7d5c568e572fdd809de7.hot-update.js": "/chunks/oasis/invoices/profile.7d5c568e572fdd809de7.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.5385474bafa8440580b1.hot-update.js": "/chunks/oasis/invoices/profile.5385474bafa8440580b1.hot-update.js",
|
||||||
|
"/js/main.2cd9e691a1a4a8a3d1e1.hot-update.js": "/js/main.2cd9e691a1a4a8a3d1e1.hot-update.js",
|
||||||
|
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f15e904d.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~f15e904d.js?id=8671a04a21b80c7402e7",
|
||||||
|
"/chunks/oasis/invoices/profile.2cd9e691a1a4a8a3d1e1.hot-update.js": "/chunks/oasis/invoices/profile.2cd9e691a1a4a8a3d1e1.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.620a14906d7efd74eaff.hot-update.js": "/chunks/oasis/invoices/profile.620a14906d7efd74eaff.hot-update.js",
|
||||||
|
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~d0bdaad8.0c58113c8bbca8307549.hot-update.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~d0bdaad8.0c58113c8bbca8307549.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.9cf6026da2e8b2c3b666.hot-update.js": "/chunks/oasis/invoices/profile.9cf6026da2e8b2c3b666.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.0bfeeb37c7b3b92be57d.hot-update.js": "/chunks/oasis/invoices/profile.0bfeeb37c7b3b92be57d.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.d45f2c43faa9e43965d7.hot-update.js": "/chunks/oasis/invoices/profile.d45f2c43faa9e43965d7.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.8f15a13976da18e6418f.hot-update.js": "/chunks/oasis/invoices/profile.8f15a13976da18e6418f.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.f9299e662088ba4afc0b.hot-update.js": "/chunks/oasis/invoices/profile.f9299e662088ba4afc0b.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.5987dbe6cb626274da0b.hot-update.js": "/chunks/oasis/invoices/profile.5987dbe6cb626274da0b.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.2b32fc92da7ccad31cab.hot-update.js": "/chunks/oasis/invoices/profile.2b32fc92da7ccad31cab.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.f0869e8dad717c3f5842.hot-update.js": "/chunks/oasis/invoices/profile.f0869e8dad717c3f5842.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.67560b729a910765a019.hot-update.js": "/chunks/oasis/invoices/profile.67560b729a910765a019.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.c8fe1ce298f0408305d6.hot-update.js": "/chunks/oasis/invoices/profile.c8fe1ce298f0408305d6.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.3f3f8be5f2dbf23d91ec.hot-update.js": "/chunks/oasis/invoices/profile.3f3f8be5f2dbf23d91ec.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.8ef6f820eb0a067689e3.hot-update.js": "/chunks/oasis/invoices/profile.8ef6f820eb0a067689e3.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.f7fc6f6fb390e73cff06.hot-update.js": "/chunks/oasis/invoices/profile.f7fc6f6fb390e73cff06.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.0ea4b3a214661f4bfa4f.hot-update.js": "/chunks/oasis/invoices/profile.0ea4b3a214661f4bfa4f.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.0047dd8c27475df0e683.hot-update.js": "/chunks/oasis/invoices/profile.0047dd8c27475df0e683.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.51e7c6d11c7be967eb6b.hot-update.js": "/chunks/oasis/invoices/profile.51e7c6d11c7be967eb6b.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.1c6b58e987107cd5de6d.hot-update.js": "/chunks/oasis/invoices/profile.1c6b58e987107cd5de6d.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.cdc9250d77e3b26e3f60.hot-update.js": "/chunks/oasis/invoices/profile.cdc9250d77e3b26e3f60.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.d9bb7ff6f390d2f9b3e0.hot-update.js": "/chunks/oasis/invoices/profile.d9bb7ff6f390d2f9b3e0.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.a03e6c76ad49af4faec7.hot-update.js": "/chunks/oasis/invoices/profile.a03e6c76ad49af4faec7.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.095bcb3870fe3096695a.hot-update.js": "/chunks/oasis/invoices/profile.095bcb3870fe3096695a.hot-update.js",
|
||||||
|
"/js/main.35316e692f00610c86cf.hot-update.js": "/js/main.35316e692f00610c86cf.hot-update.js",
|
||||||
|
"/js/main.a9a52e8275a61b77c250.hot-update.js": "/js/main.a9a52e8275a61b77c250.hot-update.js",
|
||||||
|
"/js/main.d50196048f568d3defd5.hot-update.js": "/js/main.d50196048f568d3defd5.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.d50196048f568d3defd5.hot-update.js": "/chunks/oasis/invoices/profile.d50196048f568d3defd5.hot-update.js",
|
||||||
|
"/js/main.5522a02081083adb5775.hot-update.js": "/js/main.5522a02081083adb5775.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.5522a02081083adb5775.hot-update.js": "/chunks/oasis/invoices/profile.5522a02081083adb5775.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices.051e05374113f97f6aa5.hot-update.js": "/chunks/oasis/invoices.051e05374113f97f6aa5.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.16dddd982ffc415c461e.hot-update.js": "/chunks/oasis/invoices/profile.16dddd982ffc415c461e.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.3cca96e2c03d207f9511.hot-update.js": "/chunks/oasis/invoices/profile.3cca96e2c03d207f9511.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.f53a5794b742383f9272.hot-update.js": "/chunks/oasis/invoices/profile.f53a5794b742383f9272.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.6b30ee6b601643e547c8.hot-update.js": "/chunks/oasis/invoices/profile.6b30ee6b601643e547c8.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.310066790e74c0b9cee6.hot-update.js": "/chunks/oasis/invoices/profile.310066790e74c0b9cee6.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.8f961ce3a0a773d1a530.hot-update.js": "/chunks/oasis/invoices/profile.8f961ce3a0a773d1a530.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.19871652d7a72470542f.hot-update.js": "/chunks/oasis/invoices/profile.19871652d7a72470542f.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.cb81c09128a52a34d332.hot-update.js": "/chunks/oasis/invoices/profile.cb81c09128a52a34d332.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.5b768298ff09de647a58.hot-update.js": "/chunks/oasis/invoices/profile.5b768298ff09de647a58.hot-update.js",
|
||||||
|
"/chunks/oasis/invoices/profile.e846a41b96190f8daccf.hot-update.js": "/chunks/oasis/invoices/profile.e846a41b96190f8daccf.hot-update.js"
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 375 KiB |
@@ -0,0 +1,267 @@
|
|||||||
|
<template>
|
||||||
|
<div id="single-page">
|
||||||
|
<MobileHeader :title="$router.currentRoute.meta.title" />
|
||||||
|
<PageHeader :title="$router.currentRoute.meta.title" />
|
||||||
|
|
||||||
|
<div id="page-content" class="medium-width">
|
||||||
|
<div class="content-page">
|
||||||
|
<PageTab :is-loading="! profile">
|
||||||
|
<PageTabGroup>
|
||||||
|
<div class="form block-form">
|
||||||
|
<FormLabel>Company & Logo</FormLabel>
|
||||||
|
<InfoBox>
|
||||||
|
Here you can set your <b class="text-theme">billing profile</b> which will be paste to your every newly generated invoice.
|
||||||
|
</InfoBox>
|
||||||
|
|
||||||
|
<div class="block-wrapper">
|
||||||
|
<label>Logo (optional):</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="logo" v-slot="{ errors }">
|
||||||
|
<ImageInput @input="$updateImage('/oasis/invoices/profile', 'logo', profile.logo)" :image="$getImage(profile.logo)" v-model="profile.logo" :error="errors[0]" />
|
||||||
|
</ValidationProvider>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="block-wrapper">
|
||||||
|
<label>Company name:</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="company" rules="required" v-slot="{ errors }">
|
||||||
|
<input @input="$updateText('/oasis/invoices/profile', 'company', profile.company)" v-model="profile.company" 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>Registration Notes (optional):</label>
|
||||||
|
<div class="input-wrapper">
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="registration_notes" rules="required" v-slot="{ errors }">
|
||||||
|
<textarea
|
||||||
|
rows="2"
|
||||||
|
@input="$updateText('/oasis/invoices/profile', 'registration_notes', profile.registration_notes)"
|
||||||
|
v-model="profile.registration_notes"
|
||||||
|
placeholder=""
|
||||||
|
:class="{'is-error': errors[0]}"
|
||||||
|
class="focus-border-theme"
|
||||||
|
/>
|
||||||
|
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||||
|
</ValidationProvider>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</PageTabGroup>
|
||||||
|
<PageTabGroup>
|
||||||
|
<div class="form block-form">
|
||||||
|
<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 @input="$updateText('/oasis/invoices/profile', 'ico', profile.ico)" v-model="profile.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:</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="dic" rules="required" v-slot="{ errors }">
|
||||||
|
<input @input="$updateText('/oasis/invoices/profile', 'dic', profile.dic)" v-model="profile.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>IC DPH (optional):</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ic_dph" rules="required" v-slot="{ errors }">
|
||||||
|
<input @input="$updateText('/oasis/invoices/profile', 'ic_dph', profile.ic_dph)" v-model="profile.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>
|
||||||
|
</PageTabGroup>
|
||||||
|
<PageTabGroup>
|
||||||
|
<div class="form block-form">
|
||||||
|
<FormLabel>Company Address</FormLabel>
|
||||||
|
|
||||||
|
<div class="block-wrapper">
|
||||||
|
<label>Address:</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="address" rules="required" v-slot="{ errors }">
|
||||||
|
<input @input="$updateText('/oasis/invoices/profile', 'address', profile.address)" v-model="profile.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 class="block-wrapper">
|
||||||
|
<label>City:</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="city" rules="required" v-slot="{ errors }">
|
||||||
|
<input @input="$updateText('/oasis/invoices/profile', 'city', profile.city)" v-model="profile.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 @input="$updateText('/oasis/invoices/profile', 'postal_code', profile.postal_code)" v-model="profile.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>Country:</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="country" rules="required" v-slot="{ errors }">
|
||||||
|
<SelectInput @input="$updateText('/oasis/invoices/profile', 'country', profile.country)" v-model="profile.country" :default="profile.country" :options="countries" placeholder="" :isError="errors[0]"/>
|
||||||
|
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||||
|
</ValidationProvider>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</PageTabGroup>
|
||||||
|
<PageTabGroup>
|
||||||
|
<div class="form block-form">
|
||||||
|
<FormLabel>Bank Info</FormLabel>
|
||||||
|
|
||||||
|
<div class="block-wrapper">
|
||||||
|
<label>Bank Name:</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="bank" rules="required" v-slot="{ errors }">
|
||||||
|
<input @input="$updateText('/oasis/invoices/profile', 'bank', profile.bank)" v-model="profile.bank" 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>Iban:</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="iban" rules="required" v-slot="{ errors }">
|
||||||
|
<input @input="$updateText('/oasis/invoices/profile', 'iban', profile.iban)" v-model="profile.iban" 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>Swift code:</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="swift" rules="required" v-slot="{ errors }">
|
||||||
|
<input @input="$updateText('/oasis/invoices/profile', 'swift', profile.swift)" v-model="profile.swift" 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>
|
||||||
|
</PageTabGroup>
|
||||||
|
<PageTabGroup>
|
||||||
|
<div class="form block-form">
|
||||||
|
<FormLabel>Author</FormLabel>
|
||||||
|
|
||||||
|
<div class="block-wrapper">
|
||||||
|
<label>Phone (optional):</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="phone" rules="required" v-slot="{ errors }">
|
||||||
|
<input @input="$updateText('/oasis/invoices/profile', 'phone', profile.phone)" v-model="profile.phone" 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>Email (optional):</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" rules="required" v-slot="{ errors }">
|
||||||
|
<input @input="$updateText('/oasis/invoices/profile', 'email', profile.email)" v-model="profile.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 class="block-wrapper">
|
||||||
|
<label>Author name:</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="author" rules="required" v-slot="{ errors }">
|
||||||
|
<input @input="$updateText('/oasis/invoices/profile', 'author', profile.author)" v-model="profile.author" 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>Stamp:</label>
|
||||||
|
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="stamp" v-slot="{ errors }">
|
||||||
|
<ImageInput @input="$updateImage('/oasis/invoices/profile', 'stamp', profile.stamp)" :image="$getImage(profile.stamp)" v-model="profile.stamp" :error="errors[0]" />
|
||||||
|
</ValidationProvider>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</PageTabGroup>
|
||||||
|
</PageTab>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {ValidationProvider, ValidationObserver} from 'vee-validate/dist/vee-validate.full'
|
||||||
|
import PageTabGroup from '@/components/Others/Layout/PageTabGroup'
|
||||||
|
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 ThemeLabel from '@/components/Others/ThemeLabel'
|
||||||
|
import InfoBox from '@/components/Others/Forms/InfoBox'
|
||||||
|
import {required} from 'vee-validate/dist/rules'
|
||||||
|
import {mapGetters} from 'vuex'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'BillingProfile',
|
||||||
|
props: [
|
||||||
|
'user'
|
||||||
|
],
|
||||||
|
components: {
|
||||||
|
ValidationProvider,
|
||||||
|
ValidationObserver,
|
||||||
|
PageTabGroup,
|
||||||
|
MobileHeader,
|
||||||
|
SelectInput,
|
||||||
|
ImageInput,
|
||||||
|
PageHeader,
|
||||||
|
ButtonBase,
|
||||||
|
ThemeLabel,
|
||||||
|
FormLabel,
|
||||||
|
required,
|
||||||
|
InfoBox,
|
||||||
|
PageTab,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters([
|
||||||
|
'countries',
|
||||||
|
'config',
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isLoading: false,
|
||||||
|
profile: undefined,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {},
|
||||||
|
created() {
|
||||||
|
axios.get('/api/oasis/invoices/profile')
|
||||||
|
.then(response => {
|
||||||
|
this.profile = response.data.data.attributes
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import '@assets/vuefilemanager/_variables';
|
||||||
|
@import '@assets/vuefilemanager/_mixins';
|
||||||
|
@import '@assets/vuefilemanager/_forms';
|
||||||
|
|
||||||
|
.block-form {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -14,7 +14,50 @@
|
|||||||
<MobileNavigation />
|
<MobileNavigation />
|
||||||
<SidebarNavigation />
|
<SidebarNavigation />
|
||||||
|
|
||||||
<router-view :class="{'is-scaled-down': isScaledDown}" />
|
<div id="viewport">
|
||||||
|
|
||||||
|
<!--Sidebar navigation-->
|
||||||
|
<ContentSidebar>
|
||||||
|
<ContentGroup title="Invoices" class="navigator menu-list-wrapper vertical">
|
||||||
|
<a @click="goTo('regular-invoice')" :class="{'is-active': $isThisLocation(['regular-invoice']) && $route.name === 'InvoicesList'}" class="menu-list-item link">
|
||||||
|
<div class="icon text-theme">
|
||||||
|
<file-text-icon size="17" />
|
||||||
|
</div>
|
||||||
|
<div class="label text-theme">
|
||||||
|
Invoices
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<a @click="goTo('advance-invoice')" :class="{'is-active': $isThisLocation(['advance-invoice']) && $route.name === 'InvoicesList'}" class="menu-list-item link">
|
||||||
|
<div class="icon text-theme">
|
||||||
|
<clock-icon size="17" />
|
||||||
|
</div>
|
||||||
|
<div class="label text-theme">
|
||||||
|
Advance Invoices
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</ContentGroup>
|
||||||
|
<ContentGroup title="Others" class="navigator menu-list-wrapper vertical">
|
||||||
|
<a @click="goTo('clients')" :class="{'is-active': $isThisLocation(['clients']) && $route.name === 'InvoicesList'}" class="menu-list-item link">
|
||||||
|
<div class="icon text-theme">
|
||||||
|
<users-icon size="17" />
|
||||||
|
</div>
|
||||||
|
<div class="label text-theme">
|
||||||
|
Clients
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<router-link :to="{name: 'InvoicesProfile'}" class="menu-list-item link">
|
||||||
|
<div class="icon text-theme">
|
||||||
|
<edit2-icon size="17" />
|
||||||
|
</div>
|
||||||
|
<div class="label text-theme">
|
||||||
|
Billing Profile
|
||||||
|
</div>
|
||||||
|
</router-link>
|
||||||
|
</ContentGroup>
|
||||||
|
</ContentSidebar>
|
||||||
|
|
||||||
|
<router-view :class="{'is-scaled-down': isScaledDown}" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -25,7 +68,7 @@
|
|||||||
import ClientMobileMenu from '@/Oasis/Modules/Invoices/components/ClientMobileMenu'
|
import ClientMobileMenu from '@/Oasis/Modules/Invoices/components/ClientMobileMenu'
|
||||||
import InvoiceCreateMenu from '@/Oasis/Modules/Invoices/components/InvoiceCreateMenu'
|
import InvoiceCreateMenu from '@/Oasis/Modules/Invoices/components/InvoiceCreateMenu'
|
||||||
|
|
||||||
import {UsersIcon, FileTextIcon, ClockIcon} from 'vue-feather-icons'
|
import {UsersIcon, FileTextIcon, ClockIcon, Edit2Icon} from 'vue-feather-icons'
|
||||||
import SidebarNavigation from '@/components/Sidebar/SidebarNavigation'
|
import SidebarNavigation from '@/components/Sidebar/SidebarNavigation'
|
||||||
import MobileNavigation from '@/components/Others/MobileNavigation'
|
import MobileNavigation from '@/components/Others/MobileNavigation'
|
||||||
import ContentSidebar from '@/components/Sidebar/ContentSidebar'
|
import ContentSidebar from '@/components/Sidebar/ContentSidebar'
|
||||||
@@ -53,6 +96,7 @@
|
|||||||
FileTextIcon,
|
FileTextIcon,
|
||||||
ContentGroup,
|
ContentGroup,
|
||||||
FilePreview,
|
FilePreview,
|
||||||
|
Edit2Icon,
|
||||||
UsersIcon,
|
UsersIcon,
|
||||||
ClockIcon,
|
ClockIcon,
|
||||||
},
|
},
|
||||||
@@ -68,14 +112,21 @@
|
|||||||
'advance-invoice': 'getAdvanceInvoices',
|
'advance-invoice': 'getAdvanceInvoices',
|
||||||
'clients': 'getClients',
|
'clients': 'getClients',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.$route.name !== 'InvoicesList') {
|
||||||
|
this.$router.push({name: 'InvoicesList'})
|
||||||
|
}
|
||||||
|
|
||||||
this.$store.dispatch(routes[location])
|
this.$store.dispatch(routes[location])
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
events.$on('mobile-menu:show', () => this.isScaledDown = true)
|
events.$on('mobile-menu:show', () => this.isScaledDown = true)
|
||||||
|
|
||||||
events.$on('fileItem:deselect', () => this.isScaledDown = false)
|
events.$on('fileItem:deselect', () => this.isScaledDown = false)
|
||||||
events.$on('mobile-menu:hide', () => this.isScaledDown = false)
|
events.$on('mobile-menu:hide', () => this.isScaledDown = false)
|
||||||
|
|
||||||
|
this.$store.dispatch('getRegularInvoices')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,115 +0,0 @@
|
|||||||
<template>
|
|
||||||
<section id="viewport">
|
|
||||||
|
|
||||||
<!--Sidebar navigation-->
|
|
||||||
<ContentSidebar>
|
|
||||||
<ContentGroup title="Invoices" class="navigator menu-list-wrapper vertical">
|
|
||||||
<a @click="goTo('regular-invoice')" :class="{'is-active': $isThisLocation(['regular-invoice'])}" class="menu-list-item link">
|
|
||||||
<div class="icon text-theme">
|
|
||||||
<file-text-icon size="17" />
|
|
||||||
</div>
|
|
||||||
<div class="label text-theme">
|
|
||||||
Invoices
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
<a @click="goTo('advance-invoice')" :class="{'is-active': $isThisLocation(['advance-invoice'])}" class="menu-list-item link">
|
|
||||||
<div class="icon text-theme">
|
|
||||||
<clock-icon size="17" />
|
|
||||||
</div>
|
|
||||||
<div class="label text-theme">
|
|
||||||
Advance Invoices
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</ContentGroup>
|
|
||||||
<ContentGroup title="Others" class="navigator menu-list-wrapper vertical">
|
|
||||||
<a @click="goTo('clients')" :class="{'is-active': $isThisLocation(['clients'])}" class="menu-list-item link">
|
|
||||||
<div class="icon text-theme">
|
|
||||||
<users-icon size="17" />
|
|
||||||
</div>
|
|
||||||
<div class="label text-theme">
|
|
||||||
Clients
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</ContentGroup>
|
|
||||||
</ContentSidebar>
|
|
||||||
|
|
||||||
<ContentInvoiceView />
|
|
||||||
</section>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import ContentInvoiceView from '@/Oasis/Modules/Invoices/ContentInvoiceView'
|
|
||||||
import InvoiceSortingMobile from '@/Oasis/Modules/Invoices/components/InvoiceSortingMobile'
|
|
||||||
import InvoiceFilterMobile from '@/Oasis/Modules/Invoices/components/InvoiceFilterMobile'
|
|
||||||
import InvoiceMobileMenu from '@/Oasis/Modules/Invoices/components/InvoiceMobileMenu'
|
|
||||||
import ClientMobileMenu from '@/Oasis/Modules/Invoices/components/ClientMobileMenu'
|
|
||||||
import InvoiceCreateMenu from '@/Oasis/Modules/Invoices/components/InvoiceCreateMenu'
|
|
||||||
|
|
||||||
import {UsersIcon, FileTextIcon, ClockIcon} from 'vue-feather-icons'
|
|
||||||
import SidebarNavigation from '@/components/Sidebar/SidebarNavigation'
|
|
||||||
import MobileNavigation from '@/components/Others/MobileNavigation'
|
|
||||||
import ContentSidebar from '@/components/Sidebar/ContentSidebar'
|
|
||||||
import FilePreview from '@/components/FilesView/FilePreview'
|
|
||||||
import ContentGroup from '@/components/Sidebar/ContentGroup'
|
|
||||||
import {mapGetters} from 'vuex'
|
|
||||||
import {events} from '@/bus'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'Settings',
|
|
||||||
computed: {
|
|
||||||
...mapGetters([
|
|
||||||
'config'
|
|
||||||
]),
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
ContentInvoiceView,
|
|
||||||
InvoiceSortingMobile,
|
|
||||||
InvoiceFilterMobile,
|
|
||||||
InvoiceCreateMenu,
|
|
||||||
InvoiceMobileMenu,
|
|
||||||
SidebarNavigation,
|
|
||||||
ClientMobileMenu,
|
|
||||||
MobileNavigation,
|
|
||||||
ContentSidebar,
|
|
||||||
FileTextIcon,
|
|
||||||
ContentGroup,
|
|
||||||
FilePreview,
|
|
||||||
UsersIcon,
|
|
||||||
ClockIcon,
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
isScaledDown: false,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
goTo(location) {
|
|
||||||
let routes = {
|
|
||||||
'regular-invoice': 'getRegularInvoices',
|
|
||||||
'advance-invoice': 'getAdvanceInvoices',
|
|
||||||
'clients': 'getClients',
|
|
||||||
}
|
|
||||||
this.$store.dispatch(routes[location])
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
events.$on('mobile-menu:show', () => this.isScaledDown = true)
|
|
||||||
|
|
||||||
events.$on('fileItem:deselect', () => this.isScaledDown = false)
|
|
||||||
events.$on('mobile-menu:hide', () => this.isScaledDown = false)
|
|
||||||
|
|
||||||
this.$store.dispatch('getRegularInvoices')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
@import '@assets/vuefilemanager/_mixins';
|
|
||||||
|
|
||||||
@media only screen and (max-width: 690px) {
|
|
||||||
|
|
||||||
.is-scaled-down {
|
|
||||||
@include transform(scale(0.95));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="page-tab">
|
<div class="page-tab">
|
||||||
<div id="loader" v-show="isLoading">
|
<div id="loader" v-if="isLoading">
|
||||||
<Spinner></Spinner>
|
<Spinner></Spinner>
|
||||||
</div>
|
</div>
|
||||||
<slot v-show="! isLoading"></slot>
|
<slot v-if="! isLoading"></slot>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
Vendored
+11
-1
@@ -86,11 +86,21 @@ const routesOasis = [
|
|||||||
name: 'InvoicesList',
|
name: 'InvoicesList',
|
||||||
path: '/invoice/invoices',
|
path: '/invoice/invoices',
|
||||||
component: () =>
|
component: () =>
|
||||||
import(/* webpackChunkName: "chunks/oasis/invoices/list" */ './Oasis/Modules/Invoices/Invoices'),
|
import(/* webpackChunkName: "chunks/oasis/invoices/list" */ './Oasis/Modules/Invoices/InvoicesView'),
|
||||||
meta: {
|
meta: {
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
title: 'Invoices'
|
title: 'Invoices'
|
||||||
},
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'InvoicesProfile',
|
||||||
|
path: '/invoice/profile',
|
||||||
|
component: () =>
|
||||||
|
import(/* webpackChunkName: "chunks/oasis/invoices/profile" */ './Oasis/Modules/Invoices/BillingProfile'),
|
||||||
|
meta: {
|
||||||
|
requiresAuth: true,
|
||||||
|
title: 'Billing Profile'
|
||||||
|
},
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -27,8 +27,10 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-left">
|
<div class="col-left">
|
||||||
|
|
||||||
{{--TODO: klientske logo--}}
|
{{--TODO: pridat textove logo--}}
|
||||||
<img class="logo" src="{{ base64_from_storage_image('system/5YDehSGh-vuefilemanager-horizontal-logo.svg') }}">
|
@if($user->invoiceProfile->logo)
|
||||||
|
<img class="logo" src="{{ base64_from_storage_image($user->invoiceProfile->logo) }}">
|
||||||
|
@endif
|
||||||
|
|
||||||
<b class="email">{{ $user->invoiceProfile->email }}</b>
|
<b class="email">{{ $user->invoiceProfile->email }}</b>
|
||||||
<b class="phone">{{ $user->invoiceProfile->phone }}</b>
|
<b class="phone">{{ $user->invoiceProfile->phone }}</b>
|
||||||
@@ -275,10 +277,14 @@
|
|||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
<div class="sign">
|
<div class="sign">
|
||||||
@if(is_route('invoice-debug'))
|
@if(is_route('invoice-debug') && $user->invoiceProfile->stamp)
|
||||||
<img src="{{ asset('/stamp.png') }}">
|
<img src="{{ $user->invoiceProfile->stamp }}">
|
||||||
@endif
|
@endif
|
||||||
{{--<img src="{{ public_path('/stamp.png') }}">--}}
|
|
||||||
|
@if(! is_route('invoice-debug') && $user->invoiceProfile->stamp)
|
||||||
|
<img src="{{ base64_from_storage_image($user->invoiceProfile->stamp) }}">
|
||||||
|
@endif
|
||||||
|
|
||||||
<span class="highlight">Faktúru vystavil:</span> {{ $invoice->user['author'] }}
|
<span class="highlight">Faktúru vystavil:</span> {{ $invoice->user['author'] }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ Route::group(['middleware' => 'api', 'prefix' => '/api/oasis'], function () {
|
|||||||
|
|
||||||
Route::post('/', [InvoiceController::class, 'store']);
|
Route::post('/', [InvoiceController::class, 'store']);
|
||||||
|
|
||||||
|
Route::get('/profile', [InvoiceProfileController::class, 'show']);
|
||||||
Route::post('/profile', [InvoiceProfileController::class, 'store']);
|
Route::post('/profile', [InvoiceProfileController::class, 'store']);
|
||||||
Route::patch('/profile', [InvoiceProfileController::class, 'update']);
|
Route::patch('/profile', [InvoiceProfileController::class, 'update']);
|
||||||
});
|
});
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 326 KiB |
@@ -14,6 +14,26 @@ class OasisInvoiceProfileTest extends TestCase
|
|||||||
{
|
{
|
||||||
use DatabaseMigrations;
|
use DatabaseMigrations;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_get_user_invoice_profile()
|
||||||
|
{
|
||||||
|
$user = User::factory(User::class)
|
||||||
|
->create(['role' => 'user']);
|
||||||
|
|
||||||
|
$profile = InvoiceProfile::factory(InvoiceProfile::class)
|
||||||
|
->create(['user_id' => $user->id]);
|
||||||
|
|
||||||
|
Sanctum::actingAs($user);
|
||||||
|
|
||||||
|
$this->getJson('/api/oasis/invoices/profile')
|
||||||
|
->assertStatus(200)
|
||||||
|
->assertJsonFragment([
|
||||||
|
'company' => $profile->company,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @test
|
* @test
|
||||||
*/
|
*/
|
||||||
@@ -30,24 +50,28 @@ class OasisInvoiceProfileTest extends TestCase
|
|||||||
Sanctum::actingAs($user);
|
Sanctum::actingAs($user);
|
||||||
|
|
||||||
$this->postJson('/api/oasis/invoices/profile', [
|
$this->postJson('/api/oasis/invoices/profile', [
|
||||||
'logo' => $image,
|
|
||||||
'stamp' => $image,
|
|
||||||
'company' => 'VueFileManager Inc.',
|
'company' => 'VueFileManager Inc.',
|
||||||
'email' => 'howdy@hi5ve.digital',
|
'registration_notes' => 'Some registration notes',
|
||||||
|
'logo' => $image,
|
||||||
|
|
||||||
'ico' => '11111111',
|
'ico' => '11111111',
|
||||||
'dic' => '11111111',
|
'dic' => '11111111',
|
||||||
'ic_dph' => 'SK20002313123',
|
'ic_dph' => 'SK20002313123',
|
||||||
'registration_notes' => 'Some registration notes',
|
|
||||||
'author' => 'John Doe',
|
|
||||||
'address' => 'Does 11',
|
'address' => 'Does 11',
|
||||||
'state' => 'Slovakia',
|
'state' => 'Slovakia',
|
||||||
'city' => 'Bratislava',
|
'city' => 'Bratislava',
|
||||||
'postal_code' => '04001',
|
'postal_code' => '04001',
|
||||||
'country' => 'SK',
|
'country' => 'SK',
|
||||||
'phone' => '+421950123456',
|
|
||||||
'bank' => 'Fio Banka',
|
'bank' => 'Fio Banka',
|
||||||
'iban' => 'SK20000054236423624',
|
'iban' => 'SK20000054236423624',
|
||||||
'swift' => 'FIOZXXX',
|
'swift' => 'FIOZXXX',
|
||||||
|
|
||||||
|
'phone' => '+421950123456',
|
||||||
|
'email' => 'howdy@hi5ve.digital',
|
||||||
|
'author' => 'John Doe',
|
||||||
|
'stamp' => $image,
|
||||||
])->assertStatus(201)
|
])->assertStatus(201)
|
||||||
->assertJsonFragment([
|
->assertJsonFragment([
|
||||||
'company' => 'VueFileManager Inc.',
|
'company' => 'VueFileManager Inc.',
|
||||||
|
|||||||
@@ -292,16 +292,15 @@ class OasisInvoiceTest extends TestCase
|
|||||||
Sanctum::actingAs($user);
|
Sanctum::actingAs($user);
|
||||||
|
|
||||||
$this->postJson('/api/oasis/invoices', [
|
$this->postJson('/api/oasis/invoices', [
|
||||||
'invoice_type' => 'regular-invoice',
|
'invoice_type' => 'regular-invoice',
|
||||||
'invoice_number' => '2120001',
|
'invoice_number' => '2120001',
|
||||||
'variable_number' => '2120001',
|
'variable_number' => '2120001',
|
||||||
'items' => $this->items,
|
'items' => $this->items,
|
||||||
'discount_type' => 'percent',
|
'discount_type' => 'percent',
|
||||||
'discount_rate' => 10,
|
'discount_rate' => 10,
|
||||||
'delivery_at' => Carbon::now()->addWeek(),
|
'delivery_at' => Carbon::now()->addWeek(),
|
||||||
'store_client' => true,
|
'store_client' => true,
|
||||||
'send_invoice' => true,
|
'send_invoice' => true,
|
||||||
|
|
||||||
'client' => 'others',
|
'client' => 'others',
|
||||||
'client_avatar' => null,
|
'client_avatar' => null,
|
||||||
'client_name' => 'VueFileManager Inc.',
|
'client_name' => 'VueFileManager Inc.',
|
||||||
@@ -350,16 +349,15 @@ class OasisInvoiceTest extends TestCase
|
|||||||
Sanctum::actingAs($user);
|
Sanctum::actingAs($user);
|
||||||
|
|
||||||
$this->postJson('/api/oasis/invoices', [
|
$this->postJson('/api/oasis/invoices', [
|
||||||
'invoice_type' => 'regular-invoice',
|
'invoice_type' => 'regular-invoice',
|
||||||
'invoice_number' => '2120001',
|
'invoice_number' => '2120001',
|
||||||
'variable_number' => '2120001',
|
'variable_number' => '2120001',
|
||||||
'items' => $this->items,
|
'items' => $this->items,
|
||||||
'discount_type' => 'percent',
|
'discount_type' => 'percent',
|
||||||
'discount_rate' => 10,
|
'discount_rate' => 10,
|
||||||
'delivery_at' => Carbon::now()->addWeek(),
|
'delivery_at' => Carbon::now()->addWeek(),
|
||||||
'store_client' => false,
|
'store_client' => false,
|
||||||
'send_invoice' => false,
|
'send_invoice' => false,
|
||||||
|
|
||||||
'client' => 'others',
|
'client' => 'others',
|
||||||
'client_avatar' => null,
|
'client_avatar' => null,
|
||||||
'client_name' => 'VueFileManager Inc.',
|
'client_name' => 'VueFileManager Inc.',
|
||||||
@@ -409,16 +407,15 @@ class OasisInvoiceTest extends TestCase
|
|||||||
Sanctum::actingAs($user);
|
Sanctum::actingAs($user);
|
||||||
|
|
||||||
$this->postJson('/api/oasis/invoices', [
|
$this->postJson('/api/oasis/invoices', [
|
||||||
'invoice_type' => 'regular-invoice',
|
'invoice_type' => 'regular-invoice',
|
||||||
'invoice_number' => '2120001',
|
'invoice_number' => '2120001',
|
||||||
'variable_number' => '2120001',
|
'variable_number' => '2120001',
|
||||||
'items' => $this->items,
|
'items' => $this->items,
|
||||||
'discount_type' => 'percent',
|
'discount_type' => 'percent',
|
||||||
'discount_rate' => 10,
|
'discount_rate' => 10,
|
||||||
'delivery_at' => Carbon::now()->addWeek(),
|
'delivery_at' => Carbon::now()->addWeek(),
|
||||||
'store_client' => false,
|
'store_client' => false,
|
||||||
'send_invoice' => true,
|
'send_invoice' => true,
|
||||||
|
|
||||||
'client' => 'others',
|
'client' => 'others',
|
||||||
'client_name' => 'VueFileManager Inc.',
|
'client_name' => 'VueFileManager Inc.',
|
||||||
'client_email' => 'howdy@hi5ve.digital',
|
'client_email' => 'howdy@hi5ve.digital',
|
||||||
|
|||||||
Reference in New Issue
Block a user