i18n implementation into invoice module

This commit is contained in:
Peter Papp
2021-05-07 11:32:48 +02:00
parent 070f8b4d40
commit 73672bc023
31 changed files with 431 additions and 299 deletions
@@ -195,7 +195,7 @@ class InvoiceController extends Controller
*/ */
public function destroy(Invoice $invoice) public function destroy(Invoice $invoice)
{ {
//$invoice->delete(); $invoice->delete();
return response('Done', 204); return response('Done', 204);
} }
@@ -44,9 +44,9 @@ class InvoiceDeliveryNotification extends Notification
public function toMail($notifiable) public function toMail($notifiable)
{ {
return (new MailMessage) return (new MailMessage)
->subject('New invoice') ->subject(__t('in.notify.subject', ['company' => $this->user->invoiceProfile->company]))
->greeting(__t('mail_greeting')) ->greeting(__t('mail_greeting'))
->line($this->user->settings->name . ' sent you an invoice.') ->line(__t('in.notify.message', ['company' => $this->user->invoiceProfile->company]))
->salutation(__t('mail_salutation')) ->salutation(__t('mail_salutation'))
->attach(storage_path('app/' . invoice_path($this->invoice)), [ ->attach(storage_path('app/' . invoice_path($this->invoice)), [
'as' => 'name.pdf', 'as' => 'name.pdf',
+115 -3
View File
@@ -86,7 +86,10 @@ return [
'document_gdpr_policy' => 'Směrnice EU (GDPR)', 'document_gdpr_policy' => 'Směrnice EU (GDPR)',
// Invoice module // Invoice module
'in.invoice' => 'Invoice',
'in_toaster.success_creation' => 'Invoice was created successfully', 'in_toaster.success_creation' => 'Invoice was created successfully',
'in_toaster.success_invoice_edition' => 'The invoice was successfully edited.',
'in_toaster.success_client_creation' => 'Client was created successfully',
'in_editor.page.create_regular_invoice' => 'Create Regular Invoice', 'in_editor.page.create_regular_invoice' => 'Create Regular Invoice',
'in_editor.page.create_advance_invoice' => 'Create Advance Invoice', 'in_editor.page.create_advance_invoice' => 'Create Advance Invoice',
@@ -108,7 +111,7 @@ return [
'in_editor.others' => 'Others', 'in_editor.others' => 'Others',
'in_editor.summary' => 'Invoice Summary', 'in_editor.summary' => 'Invoice Summary',
'in_editor.lab_ico' => 'ICO', 'in_editor.ico' => 'ICO',
'in_editor.dic' => 'DIC', 'in_editor.dic' => 'DIC',
'in_editor.ic_dph' => 'IC DPH', 'in_editor.ic_dph' => 'IC DPH',
'in_editor.company_name' => 'Company name', 'in_editor.company_name' => 'Company name',
@@ -163,6 +166,115 @@ return [
'in_editor.submit' => 'Store & Generate Invoice', 'in_editor.submit' => 'Store & Generate Invoice',
'in_editor.error' => 'There is probably an error, please check it and fix it.', 'in_editor.error' => 'There is probably an error, please check it and fix it.',
'inputs.placeholder_search_invoices' => 'Search invoices...', 'inputs.placeholder_search_invoices' => 'Search in invoices...',
'inputs.placeholder_search_clients' => 'Search clients...', 'inputs.placeholder_search_clients' => 'Search in clients...',
'in.nav.group.invoicing' => 'Invoicing',
'in.nav.group.settings' => 'Settings',
'in.nav.invoices' => 'Invoices',
'in.nav.advance_invoices' => 'Advance Invoices',
'in.nav.clients' => 'Clients',
'in.nav.my_bill_profile' => 'My Billing Profile',
'in.create.regular_invoice' => 'Create Invoice',
'in.create.advance_invoice' => 'Create Advance Invoice',
'in.create.client' => 'Create Client',
'in.button.setup_bill_profile' => 'Set up Billing Profile',
'in.button.store_bill_profile' => 'Store My Billing Profile',
'in.toaster.success_bill_profile' => 'Your billing profile was successfully stored',
'in.bill_profile_note' => 'Here you can set your <b class="text-theme">billing profile</b> which will be paste to your every newly generated invoice.',
'in.empty.bill_profile_title' => "You don't have billing profile",
'in.empty.bill_profile_description' => 'Before your first invoice, please set up your billing profile.',
'in.empty.clients_invoices' => "Client doesn't have any invoices yet.",
'in.empty.invoice_page_title' => "Create Your First Invoice",
'in.empty.invoice_page_description' => "It's very easy, just click on the button below.",
'in.empty.client_page_title' => "Create Your First Client",
'in.form.some_issues' => 'We found some issues in your form. Please check it out and submit again',
'in.form.create_client' => 'Create Client',
'in.form.delete_invoice' => 'Delete Invoice',
'in.form.stamp' => 'Stamp',
'in.form.author_name' => 'Author Name',
'in.form.swift_code' => 'BIC code/SWIFT',
'in.form.iban' => 'IBAN',
'in.form.bank_name' => 'Bank Name',
'in.form.reg_notes' => 'Registration Notes',
'in.form.company_name' => 'Company name',
'in.form.company_and_logo' => 'Company & Logo',
'in.form.company_details' => 'Company Details',
'in.form.company_address' => 'Company Address',
'in.form.contact_info' => 'Contact Information',
'in.form.bank_info' => 'Bank Info',
'in.form.author' => 'Author',
'in.menu.edit_invoice' => 'Edit Invoice',
'in.menu.send_invoice' => 'Send Invoice',
'in.menu.show_company' => 'Show Company',
'in.menu.edit' => 'Edit',
'in.menu.delete' => 'Delete',
'in.popup.delete_single_invoice.title' => 'Are you sure you want to delete this invoice?',
'in.popup.delete_single_invoice.message' => 'Your invoice will be permanently deleted.',
'in.popup.delete_invoice.title' => 'Are you sure you want to delete invoice number {number}?',
'in.popup.delete_invoice.message' => 'Your invoice will be permanently deleted.',
'in.popup.delete_client.title' => 'Are you sure you want to delete client {name}?',
'in.popup.delete_client.message' => 'Your client will be permanently deleted.',
'in.total_net' => 'Total Net',
'in.total_invoices' => 'Total Invoices',
'in.n-abbreviation' => 'n.',
'in.doc.taxable_doc' => 'taxable document',
'in.doc.advance_doc' => 'zálohový doklad',
'in.doc.number' => 'Číslo',
'in.doc.variable_symbol' => 'Variabilný symbol',
'in.doc.customer' => 'Customer',
'in.doc.supplier' => 'Supplier',
'in.doc.date_of_issue' => 'Dátum vystavenia',
'in.doc.date_of_delivery' => 'Dátum dodania',
'in.doc.due_date' => 'Dátum splatnosti',
'in.doc.headquarters' => 'Headquarters',
'in.doc.sum_to_pay' => 'Suma na úhradu',
'in.doc.bank_account_number' => 'Číslo účtu',
'in.doc.item.name' => 'Názov produktu',
'in.doc.item.amount' => 'Množstvo',
'in.doc.item.price_per_unit' => 'J. Cena',
'in.doc.item.total' => 'Celkom',
'in.doc.item.vat_rate' => 'Sadzba DPH',
'in.doc.item.vat' => 'DPH',
'in.doc.item.total_with_vat' => 'Celkom s DPH',
'in.doc.discount' => 'Zlava za doklad',
'in.doc.vat_base' => 'Základ DPH',
'in.doc.thanks' => 'Ďakujeme, že ste sa rozhodli pre naše služby.',
'in.doc.not_vat_payer' => 'Nie sme platci DPH',
'in.doc.creator' => 'Faktúru vystavil',
'in.doc.created_by_app' => 'Vygenerované aplikáciou <a href=":url">:app_name</a>',
'in.notify.subject' => 'You have new invoice from company :company',
'in.notify.message' => ':company send you invoice. You can find it in attachment of this email.',
'in.route_title.invoices' => 'Invoices',
'in.route_title.client' => 'Client',
'in.route_title.client_detail' => 'Client',
'in.route_title.client_invoices' => 'Client Invoices',
]; ];
+3
View File
@@ -88,6 +88,7 @@ return [
'admin_settings.payments.webhook_url' => 'Stripe webhook URL', 'admin_settings.payments.webhook_url' => 'Stripe webhook URL',
'admin_settings.tabs.billings' => 'Billings', 'admin_settings.tabs.billings' => 'Billings',
'admin_settings.tabs.payments' => 'Payments', 'admin_settings.tabs.payments' => 'Payments',
'global.pcs' => 'Pcs.',
'global.monthly_ac' => 'Mo.', 'global.monthly_ac' => 'Mo.',
'global.premium' => 'Premium', 'global.premium' => 'Premium',
'global.upgrade_plan' => 'Upgrade Plan', 'global.upgrade_plan' => 'Upgrade Plan',
@@ -675,5 +676,7 @@ return [
'app_touch_icon' => 'App Touch Icon', 'app_touch_icon' => 'App Touch Icon',
'app_touch_icon_description' => 'If user store bookmark on his phone screen, this icon appear in app thumbnail. Preferred size is 156x156', 'app_touch_icon_description' => 'If user store bookmark on his phone screen, this icon appear in app thumbnail. Preferred size is 156x156',
'select_search_placeholder' => 'Search in list...', 'select_search_placeholder' => 'Search in list...',
'go_back_from' => 'Go back from',
'create' => 'Create',
], ],
]; ];
+69 -11
View File
@@ -8,7 +8,7 @@
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~56ae6336.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~56ae6336.js?id=3500df10c19053acd77b", "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~56ae6336.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~56ae6336.js?id=3500df10c19053acd77b",
"/chunks/admin~chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/sh~f205bd67.js": "/chunks/admin~chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/sh~f205bd67.js?id=94e67ef1eef94f3de4a7", "/chunks/admin~chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/sh~f205bd67.js": "/chunks/admin~chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/sh~f205bd67.js?id=94e67ef1eef94f3de4a7",
"/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/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=9a37f956a7da0d6622b8", "/chunks/admin~chunks/oasis/invoices~chunks/platform.js": "/chunks/admin~chunks/oasis/invoices~chunks/platform.js?id=5bbc9cca3bfcc01fdc87",
"/chunks/admin~chunks/oasis/invoices~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/oasis/invoices~chunks/platform~chunks/shared.js?id=a7e1f2b5096c12b0d23a", "/chunks/admin~chunks/oasis/invoices~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/oasis/invoices~chunks/platform~chunks/shared.js?id=a7e1f2b5096c12b0d23a",
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=1c320a815afcc355bae7", "/chunks/app-appearance.js": "/chunks/app-appearance.js?id=1c320a815afcc355bae7",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~262a2a36.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~262a2a36.js?id=e6505b93727b56256f92", "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~262a2a36.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~262a2a36.js?id=e6505b93727b56256f92",
@@ -51,15 +51,15 @@
"/chunks/invoices.js": "/chunks/invoices.js?id=733a4a9b02203923e96b", "/chunks/invoices.js": "/chunks/invoices.js?id=733a4a9b02203923e96b",
"/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=06d1453fd55efa63bf5e", "/chunks/oasis/invoices.js": "/chunks/oasis/invoices.js?id=08fff2ca0af3ec3804ab",
"/chunks/oasis/invoices/client.js": "/chunks/oasis/invoices/client.js?id=63a83703890e6cf422f4", "/chunks/oasis/invoices/client.js": "/chunks/oasis/invoices/client.js?id=5278e4b3fec7c313b500",
"/chunks/oasis/invoices/client-detail.js": "/chunks/oasis/invoices/client-detail.js?id=3e0d61357a7462acefea", "/chunks/oasis/invoices/client-detail.js": "/chunks/oasis/invoices/client-detail.js?id=f04d993baccf515554db",
"/chunks/oasis/invoices/client-invoices.js": "/chunks/oasis/invoices/client-invoices.js?id=042d5de572775669aca9", "/chunks/oasis/invoices/client-invoices.js": "/chunks/oasis/invoices/client-invoices.js?id=6558d35b1bfe20e8ede6",
"/chunks/oasis/invoices/create-client.js": "/chunks/oasis/invoices/create-client.js?id=27de77b1f68c7d9792e4", "/chunks/oasis/invoices/create-client.js": "/chunks/oasis/invoices/create-client.js?id=a27824905ee00e5b9d5e",
"/chunks/oasis/invoices/create-invoice.js": "/chunks/oasis/invoices/create-invoice.js?id=4905e6c122b979407d11", "/chunks/oasis/invoices/create-invoice.js": "/chunks/oasis/invoices/create-invoice.js?id=da39947baccf666a1efc",
"/chunks/oasis/invoices/edit-invoice.js": "/chunks/oasis/invoices/edit-invoice.js?id=2bde69d33af5c2cd68d1", "/chunks/oasis/invoices/edit-invoice.js": "/chunks/oasis/invoices/edit-invoice.js?id=b8776f1c1d5b8b0626da",
"/chunks/oasis/invoices/list.js": "/chunks/oasis/invoices/list.js?id=00d6327ea0c94d5f1b82", "/chunks/oasis/invoices/list.js": "/chunks/oasis/invoices/list.js?id=9e2db158ac672e3ac001",
"/chunks/oasis/invoices/profile.js": "/chunks/oasis/invoices/profile.js?id=cddd3e4908fbb107c4c4", "/chunks/oasis/invoices/profile.js": "/chunks/oasis/invoices/profile.js?id=cb529bbeb676d24b011e",
"/chunks/oasis/invoices~chunks/platform~chunks/shared.js": "/chunks/oasis/invoices~chunks/platform~chunks/shared.js?id=97e5f5edd037d0953341", "/chunks/oasis/invoices~chunks/platform~chunks/shared.js": "/chunks/oasis/invoices~chunks/platform~chunks/shared.js?id=97e5f5edd037d0953341",
"/chunks/oasis/platba.js": "/chunks/oasis/platba.js?id=791bf891bb4a384c0890", "/chunks/oasis/platba.js": "/chunks/oasis/platba.js?id=791bf891bb4a384c0890",
"/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",
@@ -749,5 +749,63 @@
"/chunks/oasis/invoices/list.84cf00e7e02db7f3de82.hot-update.js": "/chunks/oasis/invoices/list.84cf00e7e02db7f3de82.hot-update.js", "/chunks/oasis/invoices/list.84cf00e7e02db7f3de82.hot-update.js": "/chunks/oasis/invoices/list.84cf00e7e02db7f3de82.hot-update.js",
"/chunks/oasis/invoices/list.bebd59b9b840791bd746.hot-update.js": "/chunks/oasis/invoices/list.bebd59b9b840791bd746.hot-update.js", "/chunks/oasis/invoices/list.bebd59b9b840791bd746.hot-update.js": "/chunks/oasis/invoices/list.bebd59b9b840791bd746.hot-update.js",
"/chunks/admin~chunks/oasis/invoices~chunks/platform.eee64186bac8fb02574f.hot-update.js": "/chunks/admin~chunks/oasis/invoices~chunks/platform.eee64186bac8fb02574f.hot-update.js", "/chunks/admin~chunks/oasis/invoices~chunks/platform.eee64186bac8fb02574f.hot-update.js": "/chunks/admin~chunks/oasis/invoices~chunks/platform.eee64186bac8fb02574f.hot-update.js",
"/chunks/admin~chunks/oasis/invoices~chunks/platform.0a64eca08691ac4eb973.hot-update.js": "/chunks/admin~chunks/oasis/invoices~chunks/platform.0a64eca08691ac4eb973.hot-update.js" "/chunks/admin~chunks/oasis/invoices~chunks/platform.0a64eca08691ac4eb973.hot-update.js": "/chunks/admin~chunks/oasis/invoices~chunks/platform.0a64eca08691ac4eb973.hot-update.js",
"/chunks/oasis/invoices/profile.96ffb0a7a11e26366730.hot-update.js": "/chunks/oasis/invoices/profile.96ffb0a7a11e26366730.hot-update.js",
"/chunks/oasis/invoices/profile.904110dcdd49e9a3817d.hot-update.js": "/chunks/oasis/invoices/profile.904110dcdd49e9a3817d.hot-update.js",
"/chunks/oasis/invoices/profile.9a6ab2398a0d7918d9d5.hot-update.js": "/chunks/oasis/invoices/profile.9a6ab2398a0d7918d9d5.hot-update.js",
"/chunks/oasis/invoices/profile.cc5ef691318552bf0851.hot-update.js": "/chunks/oasis/invoices/profile.cc5ef691318552bf0851.hot-update.js",
"/chunks/oasis/invoices/client-detail.c5232ba8025e17646987.hot-update.js": "/chunks/oasis/invoices/client-detail.c5232ba8025e17646987.hot-update.js",
"/chunks/oasis/invoices/create-client.c5232ba8025e17646987.hot-update.js": "/chunks/oasis/invoices/create-client.c5232ba8025e17646987.hot-update.js",
"/chunks/oasis/invoices/profile.51e1aede5d42ff00b14c.hot-update.js": "/chunks/oasis/invoices/profile.51e1aede5d42ff00b14c.hot-update.js",
"/chunks/oasis/invoices/profile.67aac1f80309c5f25b76.hot-update.js": "/chunks/oasis/invoices/profile.67aac1f80309c5f25b76.hot-update.js",
"/chunks/oasis/invoices/profile.7dc468949d62eb113610.hot-update.js": "/chunks/oasis/invoices/profile.7dc468949d62eb113610.hot-update.js",
"/chunks/oasis/invoices/profile.148344dd12d569575b87.hot-update.js": "/chunks/oasis/invoices/profile.148344dd12d569575b87.hot-update.js",
"/chunks/oasis/invoices.cef2442d71ca8bc8cd08.hot-update.js": "/chunks/oasis/invoices.cef2442d71ca8bc8cd08.hot-update.js",
"/chunks/oasis/invoices/profile.b9a81bc909e2b81a0d83.hot-update.js": "/chunks/oasis/invoices/profile.b9a81bc909e2b81a0d83.hot-update.js",
"/chunks/oasis/invoices.930d69e9d60e328dbaba.hot-update.js": "/chunks/oasis/invoices.930d69e9d60e328dbaba.hot-update.js",
"/chunks/oasis/invoices.62d783c40cf2abced9a6.hot-update.js": "/chunks/oasis/invoices.62d783c40cf2abced9a6.hot-update.js",
"/chunks/oasis/invoices.a5ee15dc3b77b00d6175.hot-update.js": "/chunks/oasis/invoices.a5ee15dc3b77b00d6175.hot-update.js",
"/chunks/oasis/invoices.d1dae29e37737aed48d3.hot-update.js": "/chunks/oasis/invoices.d1dae29e37737aed48d3.hot-update.js",
"/chunks/oasis/invoices/list.15dc72e67b2afaca7149.hot-update.js": "/chunks/oasis/invoices/list.15dc72e67b2afaca7149.hot-update.js",
"/chunks/oasis/invoices/list.75e2d1bf57a69145cae7.hot-update.js": "/chunks/oasis/invoices/list.75e2d1bf57a69145cae7.hot-update.js",
"/chunks/oasis/invoices.8030356ba9573a8d7f19.hot-update.js": "/chunks/oasis/invoices.8030356ba9573a8d7f19.hot-update.js",
"/chunks/oasis/invoices/list.b2c206514ffb30eb72ed.hot-update.js": "/chunks/oasis/invoices/list.b2c206514ffb30eb72ed.hot-update.js",
"/chunks/oasis/invoices.3c7bbf39732d5649a6c0.hot-update.js": "/chunks/oasis/invoices.3c7bbf39732d5649a6c0.hot-update.js",
"/chunks/admin~chunks/oasis/invoices~chunks/platform.bd8d9fe18b56fa068467.hot-update.js": "/chunks/admin~chunks/oasis/invoices~chunks/platform.bd8d9fe18b56fa068467.hot-update.js",
"/chunks/admin~chunks/oasis/invoices~chunks/platform.ba7cc80680ca89050004.hot-update.js": "/chunks/admin~chunks/oasis/invoices~chunks/platform.ba7cc80680ca89050004.hot-update.js",
"/chunks/oasis/invoices.619abe341a1c6e7eab2f.hot-update.js": "/chunks/oasis/invoices.619abe341a1c6e7eab2f.hot-update.js",
"/chunks/oasis/invoices/create-client.4feafe88dc3a8870d612.hot-update.js": "/chunks/oasis/invoices/create-client.4feafe88dc3a8870d612.hot-update.js",
"/chunks/oasis/invoices/create-client.24ce0e223fe7cdc560dd.hot-update.js": "/chunks/oasis/invoices/create-client.24ce0e223fe7cdc560dd.hot-update.js",
"/chunks/oasis/invoices/client-invoices.b77a5f90dd56ce251c86.hot-update.js": "/chunks/oasis/invoices/client-invoices.b77a5f90dd56ce251c86.hot-update.js",
"/chunks/oasis/invoices/client-invoices.bfbe24cebcf79fbea3ac.hot-update.js": "/chunks/oasis/invoices/client-invoices.bfbe24cebcf79fbea3ac.hot-update.js",
"/chunks/oasis/invoices/edit-invoice.0c3ce55e34933f047e6b.hot-update.js": "/chunks/oasis/invoices/edit-invoice.0c3ce55e34933f047e6b.hot-update.js",
"/chunks/oasis/invoices/list.372d90370e5e08bea403.hot-update.js": "/chunks/oasis/invoices/list.372d90370e5e08bea403.hot-update.js",
"/chunks/oasis/invoices/edit-invoice.f26a26e894a70f5d0147.hot-update.js": "/chunks/oasis/invoices/edit-invoice.f26a26e894a70f5d0147.hot-update.js",
"/chunks/oasis/invoices/create-client.31c2154555298f592f5a.hot-update.js": "/chunks/oasis/invoices/create-client.31c2154555298f592f5a.hot-update.js",
"/chunks/oasis/invoices/list.31c2154555298f592f5a.hot-update.js": "/chunks/oasis/invoices/list.31c2154555298f592f5a.hot-update.js",
"/chunks/oasis/invoices/list.6d839181e39adb28a2f7.hot-update.js": "/chunks/oasis/invoices/list.6d839181e39adb28a2f7.hot-update.js",
"/chunks/oasis/invoices/list.9a33ea47cd211f2b8bc0.hot-update.js": "/chunks/oasis/invoices/list.9a33ea47cd211f2b8bc0.hot-update.js",
"/chunks/oasis/invoices/list.f707dd1d3a597fd9e35c.hot-update.js": "/chunks/oasis/invoices/list.f707dd1d3a597fd9e35c.hot-update.js",
"/chunks/oasis/invoices/list.a36f0b6064ee3db0cf2b.hot-update.js": "/chunks/oasis/invoices/list.a36f0b6064ee3db0cf2b.hot-update.js",
"/chunks/oasis/invoices/list.c3079f379f3fdbf2cfc9.hot-update.js": "/chunks/oasis/invoices/list.c3079f379f3fdbf2cfc9.hot-update.js",
"/chunks/oasis/invoices/list.1f976fd73c2fca0e70cd.hot-update.js": "/chunks/oasis/invoices/list.1f976fd73c2fca0e70cd.hot-update.js",
"/js/main.badf51bbb1545c8b824a.hot-update.js": "/js/main.badf51bbb1545c8b824a.hot-update.js",
"/chunks/oasis/invoices/client.badf51bbb1545c8b824a.hot-update.js": "/chunks/oasis/invoices/client.badf51bbb1545c8b824a.hot-update.js",
"/chunks/oasis/invoices/create-client.badf51bbb1545c8b824a.hot-update.js": "/chunks/oasis/invoices/create-client.badf51bbb1545c8b824a.hot-update.js",
"/chunks/oasis/invoices/profile.badf51bbb1545c8b824a.hot-update.js": "/chunks/oasis/invoices/profile.badf51bbb1545c8b824a.hot-update.js",
"/chunks/oasis/invoices/client-detail.4ec291207c667509254b.hot-update.js": "/chunks/oasis/invoices/client-detail.4ec291207c667509254b.hot-update.js",
"/chunks/oasis/invoices/client-detail.e90c627e88bd34c1e8f4.hot-update.js": "/chunks/oasis/invoices/client-detail.e90c627e88bd34c1e8f4.hot-update.js",
"/chunks/oasis/invoices/list.c3895a63f7047eb23b0b.hot-update.js": "/chunks/oasis/invoices/list.c3895a63f7047eb23b0b.hot-update.js",
"/chunks/oasis/invoices.5d68643d35e622f33ac2.hot-update.js": "/chunks/oasis/invoices.5d68643d35e622f33ac2.hot-update.js",
"/chunks/oasis/invoices/list.5d68643d35e622f33ac2.hot-update.js": "/chunks/oasis/invoices/list.5d68643d35e622f33ac2.hot-update.js",
"/chunks/oasis/invoices/client-detail.e097bb88eebbe760feae.hot-update.js": "/chunks/oasis/invoices/client-detail.e097bb88eebbe760feae.hot-update.js",
"/chunks/oasis/invoices/profile.e097bb88eebbe760feae.hot-update.js": "/chunks/oasis/invoices/profile.e097bb88eebbe760feae.hot-update.js",
"/chunks/oasis/invoices/client-detail.30a95ddcf608945d80da.hot-update.js": "/chunks/oasis/invoices/client-detail.30a95ddcf608945d80da.hot-update.js",
"/chunks/oasis/invoices/create-client.30a95ddcf608945d80da.hot-update.js": "/chunks/oasis/invoices/create-client.30a95ddcf608945d80da.hot-update.js",
"/chunks/oasis/invoices/create-invoice.30a95ddcf608945d80da.hot-update.js": "/chunks/oasis/invoices/create-invoice.30a95ddcf608945d80da.hot-update.js",
"/chunks/oasis/invoices/profile.30a95ddcf608945d80da.hot-update.js": "/chunks/oasis/invoices/profile.30a95ddcf608945d80da.hot-update.js",
"/chunks/oasis/invoices/profile.6b7ff6b18fa602fe9e6a.hot-update.js": "/chunks/oasis/invoices/profile.6b7ff6b18fa602fe9e6a.hot-update.js",
"/chunks/oasis/invoices/profile.dac8786e1668e1a6d6a4.hot-update.js": "/chunks/oasis/invoices/profile.dac8786e1668e1a6d6a4.hot-update.js",
"/chunks/oasis/invoices/edit-invoice.2356d2f37bbf0d1195bc.hot-update.js": "/chunks/oasis/invoices/edit-invoice.2356d2f37bbf0d1195bc.hot-update.js",
"/chunks/oasis/invoices/create-client.38fb2cc49f41ce580fae.hot-update.js": "/chunks/oasis/invoices/create-client.38fb2cc49f41ce580fae.hot-update.js"
} }
+28 -28
View File
@@ -1,27 +1,27 @@
<template> <template>
<div id="single-page"> <div id="single-page">
<MobileHeader :title="$router.currentRoute.meta.title" /> <MobileHeader :title="$t($router.currentRoute.meta.title)" />
<PageHeader :title="$router.currentRoute.meta.title" /> <PageHeader :title="$t($router.currentRoute.meta.title)" />
<div v-if="!isLoading && !profileNotExist" id="page-content" class="medium-width"> <div v-if="!isLoading && !profileNotExist" id="page-content" class="medium-width">
<div class="content-page"> <div class="content-page">
<PageTab> <PageTab>
<PageTabGroup> <PageTabGroup>
<div class="form block-form"> <div class="form block-form">
<FormLabel>Company & Logo</FormLabel> <FormLabel>{{ $t('in.form.company_and_logo') }}</FormLabel>
<InfoBox> <InfoBox>
<p>Here you can set your <b class="text-theme">billing profile</b> which will be paste to your every newly generated invoice.</p> <p v-html="$t('in.bill_profile_note')"></p>
</InfoBox> </InfoBox>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Logo (optional):</label> <label>{{ $t('in_editor.client_logo') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="logo" v-slot="{ errors }"> <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]" /> <ImageInput @input="$updateImage('/oasis/invoices/profile', 'logo', profile.logo)" :image="$getImage(profile.logo)" v-model="profile.logo" :error="errors[0]" />
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Company name:</label> <label>{{ $t('in.form.company_name') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="company" rules="required" v-slot="{ errors }"> <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" <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" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -30,7 +30,7 @@
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Registration Notes (optional):</label> <label>{{ $t('in.form.reg_notes') }} ({{ $t('global.optional') }}):</label>
<div class="input-wrapper"> <div class="input-wrapper">
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="registration_notes" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="registration_notes" rules="required" v-slot="{ errors }">
<textarea <textarea
@@ -50,10 +50,10 @@
</PageTabGroup> </PageTabGroup>
<PageTabGroup> <PageTabGroup>
<div class="form block-form"> <div class="form block-form">
<FormLabel>Company Details</FormLabel> <FormLabel>{{ $t('in.form.company_details') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>ICO:</label> <label>{{ $t('in_editor.ico') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ico" rules="required" v-slot="{ errors }"> <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" <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" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -62,7 +62,7 @@
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>DIC:</label> <label>{{ $t('in_editor.dic') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="dic" rules="required" v-slot="{ errors }"> <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" <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" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -71,7 +71,7 @@
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>IC DPH (optional):</label> <label>{{ $t('in_editor.ic_dph') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ic_dph" rules="required" v-slot="{ errors }"> <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" <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" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -82,10 +82,10 @@
</PageTabGroup> </PageTabGroup>
<PageTabGroup> <PageTabGroup>
<div class="form block-form"> <div class="form block-form">
<FormLabel>Company Address</FormLabel> <FormLabel>{{ $t('in.form.company_address') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Address:</label> <label>{{ $t('in_editor.client_address') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="address" rules="required" v-slot="{ errors }"> <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" <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" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -95,7 +95,7 @@
<div class="wrapper-inline"> <div class="wrapper-inline">
<div class="block-wrapper"> <div class="block-wrapper">
<label>City:</label> <label>{{ $t('in_editor.client_city') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="city" rules="required" v-slot="{ errors }"> <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" <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" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -104,7 +104,7 @@
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Postal Code:</label> <label>{{ $t('in_editor.client_postal_code') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="postal_code" rules="required" v-slot="{ errors }"> <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" <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" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -114,7 +114,7 @@
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Country:</label> <label>{{ $t('in_editor.client_country') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="country" rules="required" v-slot="{ errors }"> <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]"/> <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> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
@@ -124,10 +124,10 @@
</PageTabGroup> </PageTabGroup>
<PageTabGroup> <PageTabGroup>
<div class="form block-form"> <div class="form block-form">
<FormLabel>Bank Info</FormLabel> <FormLabel>{{ $t('in.form.bank_info') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Bank Name:</label> <label>{{ $t('in.form.bank_name') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="bank" rules="required" v-slot="{ errors }"> <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" <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" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -136,7 +136,7 @@
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Iban:</label> <label>{{ $t('in.form.iban') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="iban" rules="required" v-slot="{ errors }"> <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" <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" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -145,7 +145,7 @@
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Swift code:</label> <label>{{ $t('in.form.swift_code') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="swift" rules="required" v-slot="{ errors }"> <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" <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" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -156,10 +156,10 @@
</PageTabGroup> </PageTabGroup>
<PageTabGroup> <PageTabGroup>
<div class="form block-form"> <div class="form block-form">
<FormLabel>Author</FormLabel> <FormLabel>{{ $t('in.form.author') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Phone (optional):</label> <label>{{ $t('in_editor.client_phone') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="phone" rules="required" v-slot="{ errors }"> <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" <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" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -168,7 +168,7 @@
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Email (optional):</label> <label>{{ $t('in_editor.client_email') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" rules="required" v-slot="{ errors }"> <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" <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" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -177,7 +177,7 @@
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Author name:</label> <label>{{ $t('in.form.author_name') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="author" rules="required" v-slot="{ errors }"> <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" <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" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -186,7 +186,7 @@
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Stamp:</label> <label>{{ $t('in.form.stamp') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="stamp" v-slot="{ errors }"> <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]" /> <ImageInput @input="$updateImage('/oasis/invoices/profile', 'stamp', profile.stamp)" :image="$getImage(profile.stamp)" v-model="profile.stamp" :error="errors[0]" />
</ValidationProvider> </ValidationProvider>
@@ -200,12 +200,12 @@
<EmptyPageContent <EmptyPageContent
v-if="!isLoading && profileNotExist" v-if="!isLoading && profileNotExist"
icon="edit" icon="edit"
title="You don't have billing profile" :title="$t('in.empty.bill_profile_title')"
description="Before your first invoice, please set up your billing profile." :description="$t('in.empty.bill_profile_description')"
> >
<router-link :to="{name: 'BillingProfileSetUp'}" tag="p"> <router-link :to="{name: 'BillingProfileSetUp'}" tag="p">
<ButtonBase button-style="theme"> <ButtonBase button-style="theme">
Set up Billing Profile {{ $t('in.button.setup_bill_profile') }}
</ButtonBase> </ButtonBase>
</router-link> </router-link>
</EmptyPageContent> </EmptyPageContent>
@@ -1,21 +1,21 @@
<template> <template>
<div id="single-page"> <div id="single-page">
<MobileHeader :title="$router.currentRoute.meta.title" /> <MobileHeader :title="$t($router.currentRoute.meta.title)" />
<PageHeader :can-back="true" :title="$router.currentRoute.meta.title" /> <PageHeader :can-back="true" :title="$t($router.currentRoute.meta.title)" />
<div id="page-content" class="medium-width"> <div id="page-content" class="medium-width">
<ValidationObserver @submit.prevent="createBillingProfile" ref="createBillingProfile" v-slot="{ invalid }" tag="div" class="content-page form block-form"> <ValidationObserver @submit.prevent="createBillingProfile" ref="createBillingProfile" v-slot="{ invalid }" tag="div" class="content-page form block-form">
<FormLabel>Company & Logo</FormLabel> <FormLabel>{{ $t('in.form.company_and_logo') }}</FormLabel>
<InfoBox> <InfoBox>
<p>Here you can set your <b class="text-theme">billing profile</b> which will be paste to your every newly generated invoice.</p> <p v-html="$t('in.bill_profile_note')"></p>
</InfoBox> </InfoBox>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Logo (optional):</label> <label>{{ $t('in_editor.client_logo') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="logo" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="logo" v-slot="{ errors }">
<ImageInput :image="$getImage(profile.logo)" v-model="profile.logo" :error="errors[0]" /> <ImageInput :image="$getImage(profile.logo)" v-model="profile.logo" :error="errors[0]" />
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Company name:</label> <label>{{ $t('in.form.company_name') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="company" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="company" rules="required" v-slot="{ errors }">
<input v-model="profile.company" placeholder="Type your company name..." type="text" <input v-model="profile.company" placeholder="Type your company name..." type="text"
:class="{'is-error': errors[0]}" class="focus-border-theme" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -23,7 +23,7 @@
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Registration Notes (optional):</label> <label>{{ $t('in.form.reg_notes') }} ({{ $t('global.optional') }}):</label>
<div class="input-wrapper"> <div class="input-wrapper">
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="registration_notes" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="registration_notes" v-slot="{ errors }">
<textarea <textarea
@@ -37,9 +37,9 @@
</ValidationProvider> </ValidationProvider>
</div> </div>
</div> </div>
<FormLabel class="mt-70">Company Details</FormLabel> <FormLabel class="mt-70">{{ $t('in.form.company_details') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>ICO:</label> <label>{{ $t('in_editor.ico') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ico" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ico" rules="required" v-slot="{ errors }">
<input v-model="profile.ico" placeholder="Type your company ICO..." type="text" <input v-model="profile.ico" placeholder="Type your company ICO..." type="text"
:class="{'is-error': errors[0]}" class="focus-border-theme" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -47,7 +47,7 @@
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>DIC:</label> <label>{{ $t('in_editor.dic') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="dic" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="dic" rules="required" v-slot="{ errors }">
<input v-model="profile.dic" placeholder="Type your company DIC..." type="text" <input v-model="profile.dic" placeholder="Type your company DIC..." type="text"
:class="{'is-error': errors[0]}" class="focus-border-theme" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -55,16 +55,16 @@
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>IC DPH (optional):</label> <label>{{ $t('in_editor.ic_dph') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ic_dph" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ic_dph" v-slot="{ errors }">
<input v-model="profile.ic_dph" placeholder="Type your company IC DPH..." type="text" <input v-model="profile.ic_dph" placeholder="Type your company IC DPH..." type="text"
:class="{'is-error': errors[0]}" class="focus-border-theme" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<FormLabel class="mt-70">Company Address</FormLabel> <FormLabel class="mt-70">{{ $t('in.form.company_address') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Address:</label> <label>{{ $t('in_editor.client_address') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="address" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="address" rules="required" v-slot="{ errors }">
<input v-model="profile.address" placeholder="Type your company address..." type="text" <input v-model="profile.address" placeholder="Type your company address..." type="text"
:class="{'is-error': errors[0]}" class="focus-border-theme" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -73,7 +73,7 @@
</div> </div>
<div class="wrapper-inline"> <div class="wrapper-inline">
<div class="block-wrapper"> <div class="block-wrapper">
<label>City:</label> <label>{{ $t('in_editor.client_city') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="city" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="city" rules="required" v-slot="{ errors }">
<input v-model="profile.city" placeholder="Type your company city..." type="text" <input v-model="profile.city" placeholder="Type your company city..." type="text"
:class="{'is-error': errors[0]}" class="focus-border-theme" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -81,7 +81,7 @@
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Postal Code:</label> <label>{{ $t('in_editor.client_postal_code') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="postal_code" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="postal_code" rules="required" v-slot="{ errors }">
<input v-model="profile.postal_code" placeholder="Type your company postal code..." type="text" <input v-model="profile.postal_code" placeholder="Type your company postal code..." type="text"
:class="{'is-error': errors[0]}" class="focus-border-theme" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -90,15 +90,15 @@
</div> </div>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Country:</label> <label>{{ $t('in_editor.client_country') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="country" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="country" rules="required" v-slot="{ errors }">
<SelectInput v-model="profile.country" :default="profile.country" :options="countries" placeholder="Select your company country" :isError="errors[0]" /> <SelectInput v-model="profile.country" :default="profile.country" :options="countries" placeholder="Select your company country" :isError="errors[0]" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<FormLabel class="mt-70">Bank Info</FormLabel> <FormLabel class="mt-70">{{ $t('in.form.bank_info') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Bank Name:</label> <label>{{ $t('in.form.bank_name') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="bank" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="bank" rules="required" v-slot="{ errors }">
<input v-model="profile.bank" placeholder="Type your bank name..." type="text" <input v-model="profile.bank" placeholder="Type your bank name..." type="text"
:class="{'is-error': errors[0]}" class="focus-border-theme" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -106,7 +106,7 @@
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>IBAN:</label> <label>{{ $t('in.form.iban') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="iban" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="iban" rules="required" v-slot="{ errors }">
<input v-model="profile.iban" placeholder="Type your IBAN..." type="text" <input v-model="profile.iban" placeholder="Type your IBAN..." type="text"
:class="{'is-error': errors[0]}" class="focus-border-theme" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -114,16 +114,16 @@
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Swift code:</label> <label>{{ $t('in.form.swift_code') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="swift" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="swift" rules="required" v-slot="{ errors }">
<input v-model="profile.swift" placeholder="Type your swift code..." type="text" <input v-model="profile.swift" placeholder="Type your swift code..." type="text"
:class="{'is-error': errors[0]}" class="focus-border-theme" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<FormLabel class="mt-70">Author</FormLabel> <FormLabel class="mt-70">{{ $t('in.form.author') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Phone (optional):</label> <label>{{ $t('in_editor.client_phone') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="phone" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="phone" v-slot="{ errors }">
<input v-model="profile.phone" placeholder="Type your phone number..." type="text" <input v-model="profile.phone" placeholder="Type your phone number..." type="text"
:class="{'is-error': errors[0]}" class="focus-border-theme" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -131,7 +131,7 @@
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Email (optional):</label> <label>{{ $t('in_editor.client_email') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" v-slot="{ errors }">
<input v-model="profile.email" placeholder="Type your email..." type="email" <input v-model="profile.email" placeholder="Type your email..." type="email"
:class="{'is-error': errors[0]}" class="focus-border-theme" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -139,7 +139,7 @@
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Author name:</label> <label>{{ $t('in.form.author_name') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="author" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="author" rules="required" v-slot="{ errors }">
<input v-model="profile.author" placeholder="Type the author invoice name..." type="text" <input v-model="profile.author" placeholder="Type the author invoice name..." type="text"
:class="{'is-error': errors[0]}" class="focus-border-theme" /> :class="{'is-error': errors[0]}" class="focus-border-theme" />
@@ -147,17 +147,17 @@
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Stamp (optional):</label> <label>{{ $t('in.form.stamp') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="stamp" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="stamp" v-slot="{ errors }">
<ImageInput v-model="profile.stamp" :error="errors[0]" /> <ImageInput v-model="profile.stamp" :error="errors[0]" />
</ValidationProvider> </ValidationProvider>
</div> </div>
<InfoBox v-if="isError" type="error"> <InfoBox v-if="isError" type="error">
<p>We found some issues in your form. Please check it out and submit again</p> <p>{{ $t('in.form.some_issues') }}</p>
</InfoBox> </InfoBox>
<div class="block-wrapper"> <div class="block-wrapper">
<ButtonBase @click.native="createBillingProfile" :disabled="isLoading" :loading="isLoading" button-style="theme" type="submit" style="margin-bottom: 35px"> <ButtonBase @click.native="createBillingProfile" :disabled="isLoading" :loading="isLoading" button-style="theme" type="submit" style="margin-bottom: 35px">
Store My Billing Profile {{ $t('in.button.store_bill_profile') }}
</ButtonBase> </ButtonBase>
</div> </div>
</ValidationObserver> </ValidationObserver>
@@ -269,7 +269,7 @@
events.$emit('toaster', { events.$emit('toaster', {
type: 'success', type: 'success',
message: 'Your billing profile was successfully stored', message: this.$t('in.toaster.success_bill_profile'),
}) })
this.$store.dispatch('getAppData') this.$store.dispatch('getAppData')
@@ -1,8 +1,8 @@
<template> <template>
<div id="single-page"> <div id="single-page">
<div id="page-content" v-if="! isLoading"> <div id="page-content" v-if="! isLoading">
<MobileHeader :title="$router.currentRoute.meta.title" /> <MobileHeader :title="$t($router.currentRoute.meta.title)" />
<PageHeader :can-back="true" :title="$router.currentRoute.meta.title" /> <PageHeader :can-back="true" :title="$t($router.currentRoute.meta.title)" />
<div class="content-page"> <div class="content-page">
<!--Client thumbnail--> <!--Client thumbnail-->
@@ -1,122 +1,122 @@
<template> <template>
<div id="single-page"> <div id="single-page">
<MobileHeader :title="$router.currentRoute.meta.title" /> <MobileHeader :title="$t($router.currentRoute.meta.title)" />
<PageHeader :title="$router.currentRoute.meta.title" :can-back="true" /> <PageHeader :title="$t($router.currentRoute.meta.title)" :can-back="true" />
<div id="page-content" class="medium-width"> <div id="page-content" class="medium-width">
<div class="content-page"> <div class="content-page">
<ValidationObserver @submit.prevent="createClient" ref="createClient" v-slot="{ invalid }" tag="form" class="form block-form"> <ValidationObserver @submit.prevent="createClient" ref="createClient" v-slot="{ invalid }" tag="form" class="form block-form">
<PageTab> <PageTab>
<PageTabGroup> <PageTabGroup>
<FormLabel>Company & Logo</FormLabel> <FormLabel>{{ $t('in.form.company_and_logo') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Logo (optional):</label> <label>{{ $t('in_editor.client_logo') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="avatar" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="avatar" v-slot="{ errors }">
<ImageInput v-model="client.avatar" :error="errors[0]" /> <ImageInput v-model="client.avatar" :error="errors[0]" />
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Company name:</label> <label>{{ $t('in_editor.company_name') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="name" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="name" rules="required" v-slot="{ errors }">
<input v-model="client.name" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input v-model="client.name" :placeholder="$t('in_editor.plac.client_company')" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
</PageTabGroup> </PageTabGroup>
<PageTabGroup> <PageTabGroup>
<FormLabel>Company Details</FormLabel> <FormLabel>{{ $t('in.form.company_details') }}</FormLabel>
<div class="wrapper-inline"> <div class="wrapper-inline">
<div class="block-wrapper"> <div class="block-wrapper">
<label>ICO:</label> <label>{{ $t('in_editor.ico') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ico" rules="required" v-slot="{ errors }"> <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" /> <input v-model="client.ico" :placeholder="$t('in_editor.plac.client_ico')" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>DIC (optional):</label> <label>{{ $t('in_editor.dic') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="dic" v-slot="{ errors }"> <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" /> <input v-model="client.dic" :placeholder="$t('in_editor.plac.client_dic')" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>IC DPH (optional):</label> <label>{{ $t('in_editor.ic_dph') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ic_dph" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ic_dph" v-slot="{ errors }">
<input v-model="client.ic_dph" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input v-model="client.ic_dph" :placeholder="$t('in_editor.plac.client_ic_dph')" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
</PageTabGroup> </PageTabGroup>
<PageTabGroup> <PageTabGroup>
<FormLabel>Company Address</FormLabel> <FormLabel>{{ $t('in.form.company_address') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Address:</label> <label>{{ $t('in_editor.client_address') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="address" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="address" rules="required" v-slot="{ errors }">
<input v-model="client.address" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input v-model="client.address" :placeholder="$t('in_editor.plac.client_address')" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="wrapper-inline"> <div class="wrapper-inline">
<div class="block-wrapper"> <div class="block-wrapper">
<label>City:</label> <label>{{ $t('in_editor.client_city') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="city" rules="required" v-slot="{ errors }"> <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" /> <input v-model="client.city" :placeholder="$t('in_editor.plac.client_city')" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Postal Code:</label> <label>{{ $t('in_editor.client_postal_code') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="postal_code" rules="required" v-slot="{ errors }"> <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" /> <input v-model="client.postal_code" :placeholder="$t('in_editor.plac.client_postal_code')" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Country:</label> <label>{{ $t('in_editor.client_country') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="country" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="country" rules="required" v-slot="{ errors }">
<SelectInput v-model="client.country" :default="client.country" :options="countries" placeholder="" :isError="errors[0]" /> <SelectInput v-model="client.country" :default="client.country" :options="countries" :placeholder="$t('in_editor.plac.client_country')" :isError="errors[0]" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
</PageTabGroup> </PageTabGroup>
<PageTabGroup> <PageTabGroup>
<FormLabel>Contact Informations</FormLabel> <FormLabel>{{ $t('in.form.contact_info') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Phone (optional):</label> <label>{{ $t('in_editor.client_phone') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="phone_number" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="phone_number" v-slot="{ errors }">
<input v-model="client.phone_number" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input v-model="client.phone_number" :placeholder="$t('in_editor.plac.client_phone')" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Email (optional):</label> <label>{{ $t('in_editor.client_email') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" v-slot="{ errors }">
<input v-model="client.email" placeholder="" type="email" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input v-model="client.email" :placeholder="$t('in_editor.plac.client_email')" type="email" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<InfoBox v-if="isError" type="error"> <InfoBox v-if="isError" type="error">
<p>We found some issues in your form. Please check it out and submit again</p> <p>{{ $t('in.form.some_issues') }}</p>
</InfoBox> </InfoBox>
<div class="block-wrapper"> <div class="block-wrapper">
<ButtonBase :disabled="isLoading" :loading="isLoading" button-style="theme" type="submit" class="submit-button"> <ButtonBase :disabled="isLoading" :loading="isLoading" button-style="theme" type="submit" class="submit-button">
Create Client {{ $t('in.form.create_client') }}
</ButtonBase> </ButtonBase>
</div> </div>
</PageTabGroup> </PageTabGroup>
@@ -170,7 +170,7 @@
return { return {
isLoading: false, isLoading: false,
isError: false, isError: false,
_client: { client: {
avatar: undefined, avatar: undefined,
name: undefined, name: undefined,
email: undefined, email: undefined,
@@ -183,19 +183,6 @@
dic: undefined, dic: undefined,
ic_dph: undefined, ic_dph: undefined,
}, },
client: {
avatar: undefined,
name: 'MakingCG s.r.o.',
email: 'info@makingcg.com',
phone_number: '+421950123456',
address: 'Karpatske namestie',
city: 'Bratislava',
postal_code: '04001',
country: 'SK',
ico: '4153514345',
dic: '5346542865',
ic_dph: 'SK200543253553',
},
} }
}, },
methods: { methods: {
@@ -231,7 +218,7 @@
events.$emit('toaster', { events.$emit('toaster', {
type: 'success', type: 'success',
message: 'Client was created successfully', message: this.$t('in_toaster.success_client_creation'),
}) })
// Go to User page // Go to User page
@@ -1,15 +1,15 @@
<template> <template>
<PageTab class="form-fixed-width"> <PageTab class="form-fixed-width">
<PageTabGroup class="form block-form"> <PageTabGroup class="form block-form">
<FormLabel>Company & Logo</FormLabel> <FormLabel>{{ $t('in.form.company_and_logo') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Logo (optional):</label> <label>{{ $t('in_editor.client_logo') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="avatar" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="avatar" v-slot="{ errors }">
<ImageInput @input="$updateImage(`/oasis/clients/${client.id}`, 'avatar', client.avatar)" v-model="client.avatar" :image="client.avatar" :error="errors[0]" /> <ImageInput @input="$updateImage(`/oasis/clients/${client.id}`, 'avatar', client.avatar)" v-model="client.avatar" :image="client.avatar" :error="errors[0]" />
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Company name:</label> <label>{{ $t('in_editor.company_name') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="name" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="name" rules="required" v-slot="{ errors }">
<input @input="$updateText(`/oasis/clients/${client.id}`, 'name', client.name)" v-model="client.name" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input @input="$updateText(`/oasis/clients/${client.id}`, 'name', client.name)" v-model="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> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
@@ -17,23 +17,23 @@
</div> </div>
</PageTabGroup> </PageTabGroup>
<PageTabGroup class="form block-form"> <PageTabGroup class="form block-form">
<FormLabel>Company Details</FormLabel> <FormLabel>{{ $t('in.form.company_details') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>ICO:</label> <label>{{ $t('in_editor.ico') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ico" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ico" rules="required" v-slot="{ errors }">
<input @input="$updateText(`/oasis/clients/${client.id}`, 'ico', client.ico)" v-model="client.ico" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input @input="$updateText(`/oasis/clients/${client.id}`, 'ico', client.ico)" 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> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>DIC (optional):</label> <label>{{ $t('in_editor.dic') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="dic" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="dic" v-slot="{ errors }">
<input @input="$updateText(`/oasis/clients/${client.id}`, 'dic', client.dic)" v-model="client.dic" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input @input="$updateText(`/oasis/clients/${client.id}`, 'dic', client.dic)" 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> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>IC DPH (optional):</label> <label>{{ $t('in_editor.ic_dph') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ic_dph" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ic_dph" v-slot="{ errors }">
<input @input="$updateText(`/oasis/clients/${client.id}`, 'ic_dph', client.ic_dph)" v-model="client.ic_dph" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input @input="$updateText(`/oasis/clients/${client.id}`, 'ic_dph', client.ic_dph)" v-model="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> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
@@ -41,30 +41,30 @@
</div> </div>
</PageTabGroup> </PageTabGroup>
<PageTabGroup class="form block-form"> <PageTabGroup class="form block-form">
<FormLabel>Company Address</FormLabel> <FormLabel>{{ $t('in.form.company_address') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Address:</label> <label>{{ $t('in_editor.client_address') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="address" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="address" rules="required" v-slot="{ errors }">
<input @input="$updateText(`/oasis/clients/${client.id}`, 'address', client.address)" v-model="client.address" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input @input="$updateText(`/oasis/clients/${client.id}`, 'address', client.address)" v-model="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> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>City:</label> <label>{{ $t('in_editor.client_city') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="city" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="city" rules="required" v-slot="{ errors }">
<input @input="$updateText(`/oasis/clients/${client.id}`, 'city', client.city)" v-model="client.city" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input @input="$updateText(`/oasis/clients/${client.id}`, 'city', client.city)" 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> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Postal Code:</label> <label>{{ $t('in_editor.client_postal_code') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="postal_code" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="postal_code" rules="required" v-slot="{ errors }">
<input @input="$updateText(`/oasis/clients/${client.id}`, 'postal_code', client.postal_code)" v-model="client.postal_code" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input @input="$updateText(`/oasis/clients/${client.id}`, 'postal_code', client.postal_code)" 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> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Country:</label> <label>{{ $t('in_editor.client_country') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="country" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="country" rules="required" v-slot="{ errors }">
<SelectInput @input="$updateText(`/oasis/clients/${client.id}`, 'country', client.country)" v-model="client.country" :default="client.country" :options="countries" placeholder="" :isError="errors[0]" /> <SelectInput @input="$updateText(`/oasis/clients/${client.id}`, 'country', client.country)" v-model="client.country" :default="client.country" :options="countries" placeholder="" :isError="errors[0]" />
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
@@ -72,16 +72,16 @@
</div> </div>
</PageTabGroup> </PageTabGroup>
<PageTabGroup class="form block-form"> <PageTabGroup class="form block-form">
<FormLabel>Contact Informations</FormLabel> <FormLabel>{{ $t('in.form.contact_info') }}</FormLabel>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Phone (optional):</label> <label>{{ $t('in_editor.client_phone') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="phone_number" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="phone_number" v-slot="{ errors }">
<input @input="$updateText(`/oasis/clients/${client.id}`, 'phone_number', client.phone_number)" v-model="client.phone_number" placeholder="" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input @input="$updateText(`/oasis/clients/${client.id}`, 'phone_number', client.phone_number)" v-model="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> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Email (optional):</label> <label>{{ $t('in_editor.client_email') }} ({{ $t('global.optional') }}):</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" v-slot="{ errors }">
<input @input="$updateText(`/oasis/clients/${client.id}`, 'email', client.email)" v-model="client.email" placeholder="" type="email" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input @input="$updateText(`/oasis/clients/${client.id}`, 'email', client.email)" v-model="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> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
@@ -106,7 +106,7 @@
import {mapGetters} from "vuex"; import {mapGetters} from "vuex";
export default { export default {
name: 'UserDetail', name: 'ClientDetail',
props: [ props: [
'client' 'client'
], ],
@@ -134,9 +134,6 @@
isLoading: false, isLoading: false,
} }
}, },
methods: {
},
} }
</script> </script>
@@ -43,7 +43,7 @@
<!--Empty page--> <!--Empty page-->
<template v-slot:empty-page> <template v-slot:empty-page>
<InfoBox class="form-fixed-width"> <InfoBox class="form-fixed-width">
<p>Client doesn't have any invoices yet.</p> <p>{{ $t('in.empty.clients_invoices') }}</p>
</InfoBox> </InfoBox>
</template> </template>
</DatatableWrapper> </DatatableWrapper>
@@ -60,7 +60,7 @@
import {Edit2Icon, DownloadCloudIcon} from "vue-feather-icons"; import {Edit2Icon, DownloadCloudIcon} from "vue-feather-icons";
export default { export default {
name: 'UserInvoices', name: 'ClientInvoices',
components: { components: {
EmptyPageContent, EmptyPageContent,
DatatableWrapper, DatatableWrapper,
@@ -85,7 +85,7 @@
sortable: false sortable: false
}, },
{ {
label: 'Created At', label: this.$t('file_detail.created_at'),
field: 'data.attributes.created_at', field: 'data.attributes.created_at',
sortable: false sortable: false
}, },
+7 -7
View File
@@ -21,13 +21,13 @@
<!--Sidebar navigation--> <!--Sidebar navigation-->
<ContentSidebar> <ContentSidebar>
<ContentGroup title="Invoicing" class="navigator menu-list-wrapper vertical"> <ContentGroup :title="$t('in.nav.group.invoicing')" 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"> <a @click="goTo('regular-invoice')" :class="{'is-active': $isThisLocation(['regular-invoice']) && $route.name === 'InvoicesList'}" class="menu-list-item link">
<div class="icon text-theme"> <div class="icon text-theme">
<file-text-icon size="17" /> <file-text-icon size="17" />
</div> </div>
<div class="label text-theme"> <div class="label text-theme">
Invoices {{ $t('in.nav.invoices') }}
</div> </div>
</a> </a>
<a @click="goTo('advance-invoice')" :class="{'is-active': $isThisLocation(['advance-invoice']) && $route.name === 'InvoicesList'}" class="menu-list-item link"> <a @click="goTo('advance-invoice')" :class="{'is-active': $isThisLocation(['advance-invoice']) && $route.name === 'InvoicesList'}" class="menu-list-item link">
@@ -35,7 +35,7 @@
<clock-icon size="17" /> <clock-icon size="17" />
</div> </div>
<div class="label text-theme"> <div class="label text-theme">
Advance Invoices {{ $t('in.nav.advance_invoices') }}
</div> </div>
</a> </a>
<a @click="goTo('clients')" :class="{'is-active': $isThisLocation(['clients']) && $route.name === 'InvoicesList'}" class="menu-list-item link"> <a @click="goTo('clients')" :class="{'is-active': $isThisLocation(['clients']) && $route.name === 'InvoicesList'}" class="menu-list-item link">
@@ -43,17 +43,17 @@
<users-icon size="17" /> <users-icon size="17" />
</div> </div>
<div class="label text-theme"> <div class="label text-theme">
Clients {{ $t('in.nav.clients') }}
</div> </div>
</a> </a>
</ContentGroup> </ContentGroup>
<ContentGroup title="Settings" class="navigator menu-list-wrapper vertical"> <ContentGroup :title="$t('in.nav.group.settings')" class="navigator menu-list-wrapper vertical">
<router-link :to="{name: 'BillingProfile'}" class="menu-list-item link"> <router-link :to="{name: 'BillingProfile'}" class="menu-list-item link">
<div class="icon text-theme"> <div class="icon text-theme">
<edit2-icon size="17" /> <edit2-icon size="17" />
</div> </div>
<div class="label text-theme"> <div class="label text-theme">
My Billing Profile {{ $t('in.nav.my_bill_profile') }}
</div> </div>
</router-link> </router-link>
</ContentGroup> </ContentGroup>
@@ -131,7 +131,7 @@
if (! this.currentFolder) { if (! this.currentFolder) {
this.$store.commit('STORE_CURRENT_FOLDER', { this.$store.commit('STORE_CURRENT_FOLDER', {
name: 'Invoices', name: this.$t('in.nav.invoices'),
id: undefined, id: undefined,
location: 'regular-invoice', location: 'regular-invoice',
}) })
@@ -56,7 +56,7 @@
</div> </div>
<div v-if="isNewClient" class="block-wrapper"> <div v-if="isNewClient" class="block-wrapper">
<label>{{ $t('in_editor.lab_ico') }}:</label> <label>{{ $t('in_editor.ico') }}:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_ico" rules="required" v-slot="{ errors }"> <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="client_ico" rules="required" v-slot="{ errors }">
<input v-model="invoice.client_ico" :placeholder="$t('in_editor.plac.client_ico')" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" /> <input v-model="invoice.client_ico" :placeholder="$t('in_editor.plac.client_ico')" type="text" :class="{'is-error': errors[0]}" class="focus-border-theme" />
<small v-if="fullDetails" class="input-help"> <small v-if="fullDetails" class="input-help">
@@ -1,7 +1,7 @@
<template> <template>
<div id="single-page"> <div id="single-page">
<MobileHeader :title="pageTitle" /> <MobileHeader :title="pageTitle" />
<PageHeader :title="pageTitle" /> <PageHeader :can-back="true" :title="pageTitle" />
<div id="page-content"> <div id="page-content">
<div class="content-page" v-if="! isLoadingPage"> <div class="content-page" v-if="! isLoadingPage">
@@ -216,11 +216,11 @@
</div> </div>
<ButtonBase :disabled="isLoading" @click.native="deleteInvoice" button-style="secondary" class="next-submit"> <ButtonBase :disabled="isLoading" @click.native="deleteInvoice" button-style="secondary" class="next-submit">
Delete Invoice {{ $t('in.form.delete_invoice') }}
</ButtonBase> </ButtonBase>
<ButtonBase :disabled="isLoading" :loading="isLoading" @click.native="updateInvoice" button-style="theme-solid" class="next-submit" style="margin-top: 15px"> <ButtonBase :disabled="isLoading" :loading="isLoading" @click.native="updateInvoice" button-style="theme-solid" class="next-submit" style="margin-top: 15px">
Save Changes {{ $t('popup_share_edit.save') }}
</ButtonBase> </ButtonBase>
<p class="error-message" v-if="isError"> <p class="error-message" v-if="isError">
{{ errorMessage }} {{ errorMessage }}
@@ -472,8 +472,8 @@
}, },
deleteInvoice() { deleteInvoice() {
events.$emit('confirm:open', { events.$emit('confirm:open', {
title: `Are you sure you want to delete this invoice?`, title: this.$t('in.popup.delete_single_invoice.title'),
message: 'Your invoice will be permanently deleted.', message: this.$t('in.popup.delete_single_invoice.message'),
buttonColor: 'danger-solid', buttonColor: 'danger-solid',
action: { action: {
id: this.$route.params.id, id: this.$route.params.id,
@@ -514,7 +514,7 @@
events.$emit('toaster', { events.$emit('toaster', {
type: 'success', type: 'success',
message: 'The invoice was successfully edited.', message: this.$t('in_toaster.success_invoice_edition'),
}) })
}) })
.catch(error => { .catch(error => {
@@ -23,9 +23,6 @@
contextMenu(event, item) { contextMenu(event, item) {
events.$emit('contextMenu:show', event, item) events.$emit('contextMenu:show', event, item)
}, },
},
mounted() {
} }
} }
</script> </script>
@@ -27,7 +27,7 @@
<div class="item-info"> <div class="item-info">
<span class="item-size"> <span class="item-size">
Created at: {{ item.created_at }}, Total: {{ item.totalNet }} {{ $t('file_detail.created_at') }}: {{ item.created_at }}, {{ $t('global.total') }}: {{ item.totalNet }}
</span> </span>
</div> </div>
</div> </div>
@@ -50,7 +50,7 @@ import {mapGetters} from 'vuex'
import {events} from '@/bus' import {events} from '@/bus'
export default { export default {
name: 'InvoiceItem', name: 'ClientItem',
props: [ props: [
'item' 'item'
], ],
@@ -7,11 +7,10 @@
:title="clipboard[0].name" :title="clipboard[0].name"
:subtitle="clipboard[0].email" :subtitle="clipboard[0].email"
/> />
<MenuMobileGroup> <MenuMobileGroup>
<OptionGroup class="menu-option-group"> <OptionGroup class="menu-option-group">
<Option @click.native="goToProfile" title="Edit" icon="rename" /> <Option @click.native="goToProfile" :title="$t('in.menu.edit')" icon="rename" />
<Option @click.native="deleteItem" title="Delete" icon="trash" /> <Option @click.native="deleteItem" :title="$t('in.menu.delete')" icon="trash" />
</OptionGroup> </OptionGroup>
<OptionGroup> <OptionGroup>
<Option @click.native="goToProfile" :title="$t('context_menu.detail')" icon="detail" /> <Option @click.native="goToProfile" :title="$t('context_menu.detail')" icon="detail" />
@@ -57,8 +56,8 @@ export default {
}, },
deleteItem() { deleteItem() {
events.$emit('confirm:open', { events.$emit('confirm:open', {
title: `Are you sure you want to delete client ${this.clipboard[0].name}?`, title: this.$t('in.popup.delete_client.title', {name: this.clipboard[0].name}),
message: 'Your client will be permanently deleted.', message: this.$t('in.popup.delete_client.message'),
buttonColor: 'danger-solid', buttonColor: 'danger-solid',
action: { action: {
id: this.clipboard[0].id, id: this.clipboard[0].id,
@@ -5,11 +5,11 @@
<!--Invoice message--> <!--Invoice message-->
<div class="text-content" v-if="hasBillingProfile && $isThisLocation(['regular-invoice', 'advance-invoice']) && !isLoading"> <div class="text-content" v-if="hasBillingProfile && $isThisLocation(['regular-invoice', 'advance-invoice']) && !isLoading">
<h1 class="title"> <h1 class="title">
Create Your First Invoice {{ $t('in.empty.invoice_page_title') }}
</h1> </h1>
<p class="description"> <p class="description">
It's very easy, just click on the button below. {{ $t('in.empty.invoice_page_description') }}
</p> </p>
<ButtonBase @click.native="createInvoice" button-style="theme" class="button"> <ButtonBase @click.native="createInvoice" button-style="theme" class="button">
@@ -20,30 +20,30 @@
<!--Client Message--> <!--Client Message-->
<div class="text-content" v-if="hasBillingProfile && $isThisLocation('clients') && !isLoading"> <div class="text-content" v-if="hasBillingProfile && $isThisLocation('clients') && !isLoading">
<h1 class="title"> <h1 class="title">
Create Your First Client {{ $t('in.empty.client_page_title') }}
</h1> </h1>
<p class="description"> <p class="description">
It's very easy, just click on the button below. {{ $t('in.empty.invoice_page_description') }}
</p> </p>
<ButtonBase @click.native="createClient" button-style="theme" class="button"> <ButtonBase @click.native="createClient" button-style="theme" class="button">
Create Client {{ $t('in.form.create_client') }}
</ButtonBase> </ButtonBase>
</div> </div>
<!--Billing Profile Message--> <!--Billing Profile Message-->
<div class="text-content" v-if="! hasBillingProfile"> <div class="text-content" v-if="! hasBillingProfile">
<h1 class="title"> <h1 class="title">
You don't have billing profile {{ $t('in.empty.bill_profile_title') }}
</h1> </h1>
<p class="description"> <p class="description">
Before your first invoice, please set up your billing profile. {{ $t('in.empty.bill_profile_description') }}
</p> </p>
<ButtonBase @click.native="createBillingProfile" button-style="theme" class="button"> <ButtonBase @click.native="createBillingProfile" button-style="theme" class="button">
Set up Billing Profile {{ $t('in.button.setup_bill_profile') }}
</ButtonBase> </ButtonBase>
</div> </div>
@@ -81,7 +81,7 @@
return this.entries && this.entries.length == 0 return this.entries && this.entries.length == 0
}, },
buttonTitle() { buttonTitle() {
return this.$isThisLocation('regular-invoice') ? 'Create Regular Invoice' : 'Create Advance Invoice' return this.$isThisLocation('regular-invoice') ? this.$t('in_editor.page.create_regular_invoice') : this.$t('in_editor.page.create_advance_invoice')
}, },
hasBillingProfile() { hasBillingProfile() {
return this.user && this.user.data.attributes.has_billing_profile return this.user && this.user.data.attributes.has_billing_profile
@@ -7,7 +7,7 @@
{{ directoryName }} {{ directoryName }}
</MobileActionButton> </MobileActionButton>
<MobileActionButton @click.native="createButton" icon="file-plus"> <MobileActionButton @click.native="createButton" icon="file-plus">
Create {{ $t('create') }}
</MobileActionButton> </MobileActionButton>
<MobileActionButton @click.native="showViewOptions" icon="th-list"> <MobileActionButton @click.native="showViewOptions" icon="th-list">
{{ $t('preview_sorting.preview_sorting_button') }} {{ $t('preview_sorting.preview_sorting_button') }}
@@ -24,7 +24,7 @@
import {events} from '@/bus' import {events} from '@/bus'
export default { export default {
name: 'FileActionsMobile', name: 'InvoiceActionsMobile',
components: { components: {
MobileActionButtonUpload, MobileActionButtonUpload,
MobileActionButton, MobileActionButton,
@@ -37,7 +37,7 @@
directoryName() { directoryName() {
return this.currentFolder return this.currentFolder
? this.currentFolder.name ? this.currentFolder.name
: 'Invoices' : this.$t('in.nav.invoices')
}, },
}, },
data() { data() {
@@ -4,9 +4,9 @@
<!--Invoice--> <!--Invoice-->
<div v-show="isInvoice" class="menu-options" id="menu-list"> <div v-show="isInvoice" class="menu-options" id="menu-list">
<OptionGroup class="menu-option-group"> <OptionGroup class="menu-option-group">
<Option @click.native="editItem" title="Edit Invoice" icon="rename" /> <Option @click.native="editItem" :title="$t('in.menu.edit_invoice')" icon="rename" />
<Option @click.native="" title="Send Invoice" icon="send" /> <Option @click.native="" :title="$t('in.menu.send_invoice')" icon="send" />
<Option @click.native="goToCompany" title="Go to Company" icon="user" /> <Option @click.native="goToCompany" :title="$t('in.menu.show_company')" icon="user" />
<Option @click.native="deleteInvoice" :title="$t('context_menu.delete')" icon="trash" /> <Option @click.native="deleteInvoice" :title="$t('context_menu.delete')" icon="trash" />
</OptionGroup> </OptionGroup>
@@ -19,11 +19,11 @@
<!--Client--> <!--Client-->
<div v-show="isClient" class="menu-options" id="menu-list"> <div v-show="isClient" class="menu-options" id="menu-list">
<OptionGroup class="menu-option-group"> <OptionGroup class="menu-option-group">
<Option @click.native="goToCompany" title="Edit" icon="rename" /> <Option @click.native="goToCompany" :title="$t('in.menu.edit')" icon="rename" />
<Option @click.native="deleteClient" title="Delete" icon="trash" /> <Option @click.native="deleteClient" :title="$t('context_menu.delete')" icon="trash" />
</OptionGroup> </OptionGroup>
<OptionGroup> <OptionGroup>
<Option @click.native="goToCompany" title="Go to Profile" icon="user" /> <Option @click.native="goToCompany" :title="$t('in.menu.show_company')" icon="user" />
<Option @click.native="showDetail" :title="$t('context_menu.detail')" icon="detail" /> <Option @click.native="showDetail" :title="$t('context_menu.detail')" icon="detail" />
</OptionGroup> </OptionGroup>
</div> </div>
@@ -100,8 +100,8 @@ export default {
}, },
deleteInvoice() { deleteInvoice() {
events.$emit('confirm:open', { events.$emit('confirm:open', {
title: `Are you sure you want to delete invoice number ${this.item.invoice_number}?`, title: this.$t('in.popup.delete_invoice.title', {number: this.item.invoice_number}),
message: 'Your invoice will be permanently deleted.', message: this.$t('in.popup.delete_invoice.message'),
buttonColor: 'danger-solid', buttonColor: 'danger-solid',
action: { action: {
id: this.item.id, id: this.item.id,
@@ -111,8 +111,8 @@ export default {
}, },
deleteClient() { deleteClient() {
events.$emit('confirm:open', { events.$emit('confirm:open', {
title: `Are you sure you want to delete client ${this.item.name}?`, title: this.$t('in.popup.delete_client.title', {name: this.item.name}),
message: 'Your client will be permanently deleted.', message: this.$t('in.popup.delete_client.message'),
buttonColor: 'danger-solid', buttonColor: 'danger-solid',
action: { action: {
id: this.item.id, id: this.item.id,
@@ -2,11 +2,11 @@
<MenuMobile name="invoice-create"> <MenuMobile name="invoice-create">
<MenuMobileGroup> <MenuMobileGroup>
<OptionGroup> <OptionGroup>
<Option @click.native="createInvoice('regular-invoice')" title="Create Invoice" icon="file-plus" is-hover-disabled="true" /> <Option @click.native="createInvoice('regular-invoice')" :title="$t('in.create.regular_invoice')" icon="file-plus" is-hover-disabled="true" />
<Option @click.native="createInvoice('advance-invoice')" title="Create Advance Invoice" icon="clock" is-hover-disabled="true" /> <Option @click.native="createInvoice('advance-invoice')" :title="$t('in.create.advance_invoice')" icon="clock" is-hover-disabled="true" />
</OptionGroup> </OptionGroup>
<OptionGroup> <OptionGroup>
<Option @click.native="createClient" title="Create Client" icon="user-plus" is-hover-disabled="true" /> <Option @click.native="createClient" :title="$t('in.create.client')" icon="user-plus" is-hover-disabled="true" />
</OptionGroup> </OptionGroup>
</MenuMobileGroup> </MenuMobileGroup>
</MenuMobile> </MenuMobile>
@@ -14,7 +14,7 @@
<!--Search bar--> <!--Search bar-->
<ToolbarGroup style="margin-left: 0"> <ToolbarGroup style="margin-left: 0">
<SearchBar v-model="query" @reset-query="query = ''" placeholder="Search your invoices..." /> <SearchBar v-model="query" @reset-query="query = ''" :placeholder="searchPlaceholder" />
</ToolbarGroup> </ToolbarGroup>
<!--Creating controls--> <!--Creating controls-->
@@ -23,11 +23,11 @@
<ToolbarButton @click.stop.native="createCreateMenu" source="plus" :action="$t('actions.create_folder')" /> <ToolbarButton @click.stop.native="createCreateMenu" source="plus" :action="$t('actions.create_folder')" />
<PopoverItem name="desktop-create-invoices"> <PopoverItem name="desktop-create-invoices">
<OptionGroup> <OptionGroup>
<Option @click.stop.native="createInvoice('regular-invoice')" title="Create Regular Invoice" icon="file-plus" /> <Option @click.stop.native="createInvoice('regular-invoice')" :title="$t('in_editor.page.create_regular_invoice')" icon="file-plus" />
<Option @click.stop.native="createInvoice('advance-invoice')" title="Create Advance Invoice" icon="clock" /> <Option @click.stop.native="createInvoice('advance-invoice')" :title="$t('in_editor.page.create_advance_invoice')" icon="clock" />
</OptionGroup> </OptionGroup>
<OptionGroup> <OptionGroup>
<Option @click.native="createClient" title="Create Client" icon="user-plus" /> <Option @click.native="createClient" :title="$t('in.create.client')" icon="user-plus" />
</OptionGroup> </OptionGroup>
</PopoverItem> </PopoverItem>
</PopoverWrapper> </PopoverWrapper>
@@ -94,7 +94,7 @@
'clipboard', 'clipboard',
]), ]),
directoryName() { directoryName() {
return this.currentFolder ? this.currentFolder.name : 'Invoices' return this.currentFolder ? this.currentFolder.name : this.$t('in.nav.invoices')
}, },
canActiveInView() { canActiveInView() {
let locations = [ let locations = [
@@ -104,6 +104,11 @@
] ]
return !this.$isThisLocation(locations) || this.clipboard.length === 0 return !this.$isThisLocation(locations) || this.clipboard.length === 0
}, },
searchPlaceholder() {
return this.currentFolder && ['regular-invoice', 'advance-invoice'].includes(this.currentFolder.location)
? this.$t('inputs.placeholder_search_invoices')
: this.$t('inputs.placeholder_search_clients')
},
}, },
data() { data() {
return { return {
@@ -133,8 +138,8 @@
if (this.$isThisLocation(['regular-invoice', 'advance-invoice']) && this.clipboard.length > 0) { if (this.$isThisLocation(['regular-invoice', 'advance-invoice']) && this.clipboard.length > 0) {
events.$emit('confirm:open', { events.$emit('confirm:open', {
title: `Are you sure you want to delete invoice number ${this.clipboard[0].invoice_number}?`, title: this.$t('in.popup.delete_invoice.title', {number: this.clipboard[0].invoice_number}),
message: 'Your invoice will be permanently deleted.', message: this.$t('in.popup.delete_invoice.message'),
buttonColor: 'danger-solid', buttonColor: 'danger-solid',
action: { action: {
id: this.clipboard[0].id, id: this.clipboard[0].id,
@@ -145,8 +150,8 @@
if (this.$isThisLocation('clients') && this.clipboard.length > 0) { if (this.$isThisLocation('clients') && this.clipboard.length > 0) {
events.$emit('confirm:open', { events.$emit('confirm:open', {
title: `Are you sure you want to delete client ${this.clipboard[0].name}?`, title: this.$t('in.popup.delete_client.title', {name: this.clipboard[0].name}),
message: 'Your client will be permanently deleted.', message: this.$t('in.popup.delete_client.message'),
buttonColor: 'danger-solid', buttonColor: 'danger-solid',
action: { action: {
id: this.clipboard[0].id, id: this.clipboard[0].id,
@@ -2,11 +2,11 @@
<MenuMobile name="invoice-filter"> <MenuMobile name="invoice-filter">
<MenuMobileGroup> <MenuMobileGroup>
<OptionGroup> <OptionGroup>
<Option @click.native="showLocation('regular-invoice')" :is-active="$isThisLocation('regular-invoice')" title="Invoices" icon="file-text" is-hover-disabled="true" /> <Option @click.native="showLocation('regular-invoice')" :is-active="$isThisLocation('regular-invoice')" :title="$t('in.nav.invoices')" icon="file-text" is-hover-disabled="true" />
<Option @click.native="showLocation('advance-invoice')" :is-active="$isThisLocation('advance-invoice')" title="Advance Invoices" icon="clock" is-hover-disabled="true" /> <Option @click.native="showLocation('advance-invoice')" :is-active="$isThisLocation('advance-invoice')" :title="$t('in.nav.advance_invoices')" icon="clock" is-hover-disabled="true" />
</OptionGroup> </OptionGroup>
<OptionGroup> <OptionGroup>
<Option @click.native="showLocation('clients')" :is-active="$isThisLocation('clients')" title="Clients" icon="users" is-hover-disabled="true" /> <Option @click.native="showLocation('clients')" :is-active="$isThisLocation('clients')" :title="$t('in.nav.clients')" icon="users" is-hover-disabled="true" />
</OptionGroup> </OptionGroup>
</MenuMobileGroup> </MenuMobileGroup>
</MenuMobile> </MenuMobile>
@@ -23,18 +23,18 @@
<ListInfo v-if="isSingleFile && !isEmpty"> <ListInfo v-if="isSingleFile && !isEmpty">
<ListInfoItem <ListInfoItem
title="Email" :title="$t('in_editor.client_email')"
:content="singleFile.email" :content="singleFile.email"
/> />
<ListInfoItem <ListInfoItem
title="Total Net" :title="$t('in.total_net')"
:content="singleFile.totalNet" :content="singleFile.totalNet"
/> />
<ListInfoItem <ListInfoItem
title="Total Invoices" :title="$t('in.total_invoices')"
:content="singleFile.totalInvoices + ' Pcs.'" :content="singleFile.totalInvoices + ' ' + $t('global.pcs')"
/> />
<!--Created At--> <!--Created At-->
@@ -61,7 +61,7 @@
<TitlePreview <TitlePreview
icon="file-text" icon="file-text"
:title="singleFile.client_name" :title="singleFile.client_name"
:subtitle="'Invoice - ' + singleFile.invoice_number" :subtitle="$t('invoice_title') + ' - ' + singleFile.invoice_number"
/> />
</div> </div>
@@ -69,17 +69,17 @@
<ListInfo v-if="isSingleFile && !isEmpty"> <ListInfo v-if="isSingleFile && !isEmpty">
<ListInfoItem <ListInfoItem
title="Invoice Number" :title="$t('invoice_number')"
:content="singleFile.invoice_number" :content="singleFile.invoice_number"
/> />
<ListInfoItem <ListInfoItem
title="Total" :title="$t('total')"
:content="singleFile.total" :content="singleFile.total"
/> />
<ListInfoItem <ListInfoItem
title="Client" :title="$t('client')"
:content="singleFile.client_name" :content="singleFile.client_name"
/> />
@@ -106,7 +106,7 @@
import {events} from "@/bus" import {events} from "@/bus"
export default { export default {
name: 'InfoSidebar', name: 'InvoiceInfoSidebar',
components: { components: {
FilePreviewDetail, FilePreviewDetail,
ImageMetaData, ImageMetaData,
@@ -20,7 +20,7 @@
<div class="item-info"> <div class="item-info">
<span class="item-size"> <span class="item-size">
{{ item.created_at }}, n. {{ item.invoice_number }} {{ item.created_at }}, {{ $t('in.n-abbreviation') }} {{ item.invoice_number }}
</span> </span>
</div> </div>
</div> </div>
@@ -5,18 +5,17 @@
class="headline" class="headline"
icon="file-text" icon="file-text"
:title="clipboard[0].name" :title="clipboard[0].name"
:subtitle="'Invoice - ' + clipboard[0].invoice_number" :subtitle="$t('in.invoice') + ' - ' + clipboard[0].invoice_number"
/> />
<!--Trash location--> <!--Trash location-->
<MenuMobileGroup> <MenuMobileGroup>
<OptionGroup class="menu-option-group"> <OptionGroup class="menu-option-group">
<Option @click.native="editInvoice" title="Edit Invoice" icon="rename" /> <Option @click.native="editInvoice" :title="$t('in.menu.edit_invoice')" icon="rename" />
<Option @click.native="" title="Send Invoice" icon="send" /> <Option @click.native="" :title="$t('in.menu.send_invoice')" icon="send" />
<Option @click.native="goToCompany" title="Go to Company" icon="user" /> <Option @click.native="goToCompany" :title="$t('in.menu.show_company')" icon="user" />
<Option @click.native="deleteInvoice" :title="$t('context_menu.delete')" icon="trash" /> <Option @click.native="deleteInvoice" :title="$t('context_menu.delete')" icon="trash" />
</OptionGroup> </OptionGroup>
<OptionGroup> <OptionGroup>
<Option @click.native="downloadInvoice" :title="$t('context_menu.download')" icon="download" /> <Option @click.native="downloadInvoice" :title="$t('context_menu.download')" icon="download" />
</OptionGroup> </OptionGroup>
@@ -35,7 +34,7 @@ import {mapGetters} from 'vuex'
import {events} from '@/bus' import {events} from '@/bus'
export default { export default {
name: 'FileMenuMobile', name: 'InvoiceMobileMenu',
components: { components: {
MenuMobileGroup, MenuMobileGroup,
ThumbnailItem, ThumbnailItem,
@@ -67,8 +66,8 @@ export default {
}, },
deleteInvoice() { deleteInvoice() {
events.$emit('confirm:open', { events.$emit('confirm:open', {
title: `Are you sure you want to delete invoice number ${this.clipboard[0].invoice_number}?`, title: this.$t('in.popup.delete_invoice.title', {number: this.clipboard[0].invoice_number}),
message: 'Your invoice will be permanently deleted.', message: this.$t('in.popup.delete_invoice.message'),
buttonColor: 'danger-solid', buttonColor: 'danger-solid',
action: { action: {
id: this.clipboard[0].id, id: this.clipboard[0].id,
@@ -17,7 +17,7 @@ import Option from '@/components/FilesView/Option'
import {mapGetters} from 'vuex' import {mapGetters} from 'vuex'
export default { export default {
name: 'InvoiceFilterMobile', name: 'InvoiceSortingMobile',
components: { components: {
MenuMobileGroup, MenuMobileGroup,
OptionGroup, OptionGroup,
@@ -30,32 +30,7 @@ export default {
]), ]),
}, },
methods: { methods: {
showLocation(location) {
},
flushBrowseHistory() {
this.$store.commit('FLUSH_FOLDER_HISTORY')
},
goToFiles() {
this.$store.dispatch('getFolder', [{folder: this.homeDirectory, back: false, init: true}])
this.flushBrowseHistory()
},
goToLatest() {
this.$store.dispatch('getLatest')
this.flushBrowseHistory()
},
goToTrash() {
this.$store.dispatch('getTrash')
this.flushBrowseHistory()
},
goToShared() {
this.$store.dispatch('getShared', [{back: false, init: false}])
this.flushBrowseHistory()
},
goToParticipantUploads() {
this.$store.dispatch('getParticipantUploads')
this.flushBrowseHistory()
}
} }
} }
</script> </script>
@@ -16,7 +16,7 @@
<!--Main navigation--> <!--Main navigation-->
<OptionGroup v-if="!clickedSubmenu"> <OptionGroup v-if="!clickedSubmenu">
<Option @click.native="goToFiles" :title="$t('menu.files')" icon="hard-drive" is-hover-disabled="true" /> <Option @click.native="goToFiles" :title="$t('menu.files')" icon="hard-drive" is-hover-disabled="true" />
<Option @click.native="goToInvoices" title="Invoices" icon="file-text" is-hover-disabled="true" /> <Option @click.native="goToInvoices" :title="$t('in.nav.invoices')" icon="file-text" is-hover-disabled="true" />
<Option @click.native.stop="showSubmenu('settings')" :title="$t('menu.settings')" icon="user" :is-arrow-right="true" is-hover-disabled="true" /> <Option @click.native.stop="showSubmenu('settings')" :title="$t('menu.settings')" icon="user" :is-arrow-right="true" is-hover-disabled="true" />
<Option v-if="isAdmin" @click.native.stop="showSubmenu('admin')" :title="$t('menu.admin')" icon="settings" :is-arrow-right="true" is-hover-disabled="true" /> <Option v-if="isAdmin" @click.native.stop="showSubmenu('admin')" :title="$t('menu.admin')" icon="settings" :is-arrow-right="true" is-hover-disabled="true" />
</OptionGroup> </OptionGroup>
@@ -86,7 +86,7 @@
'admin': this.$t('menu.admin') 'admin': this.$t('menu.admin')
} }
return 'Go back from ' + location[this.clickedSubmenu] return this.$t('go_back_from') + ' ' + location[this.clickedSubmenu]
} }
}, },
data() { data() {
@@ -10,11 +10,11 @@
<router-link :to="{name: 'Files'}" :title="$t('locations.home')" class="icon-navigation-item home"> <router-link :to="{name: 'Files'}" :title="$t('locations.home')" class="icon-navigation-item home">
<div class="button-icon text-theme"> <div class="button-icon text-theme">
<hard-drive-icon size="19" class="text-theme"></hard-drive-icon> <hard-drive-icon size="19" class="text-theme" />
</div> </div>
</router-link> </router-link>
<a @click="goToInvoice" title="Invoices" :class="{'is-active': $isThisRoute($route, invoiceRoutes)}" class="icon-navigation-item invoice"> <a @click="goToInvoice" :title="$t('in.nav.invoices')" :class="{'is-active': $isThisRoute($route, invoiceRoutes)}" class="icon-navigation-item invoice">
<div class="button-icon"> <div class="button-icon">
<file-text-icon size="19" /> <file-text-icon size="19" />
</div> </div>
@@ -22,13 +22,13 @@
<router-link :to="{name: 'Profile'}" :class="{'is-active': isUserProfileRoute}" :title="$t('locations.profile')" class="icon-navigation-item settings"> <router-link :to="{name: 'Profile'}" :class="{'is-active': isUserProfileRoute}" :title="$t('locations.profile')" class="icon-navigation-item settings">
<div class="button-icon"> <div class="button-icon">
<user-icon size="19"></user-icon> <user-icon size="19" />
</div> </div>
</router-link> </router-link>
<router-link v-if="user.data.attributes.role === 'admin'" :to="{name: 'Dashboard'}" :class="{'is-active': $isThisRoute($route, adminRoutes)}" :title="$t('locations.settings')" class="icon-navigation-item users"> <router-link v-if="user.data.attributes.role === 'admin'" :to="{name: 'Dashboard'}" :class="{'is-active': $isThisRoute($route, adminRoutes)}" :title="$t('locations.settings')" class="icon-navigation-item users">
<div class="button-icon"> <div class="button-icon">
<settings-icon size="19"></settings-icon> <settings-icon size="19" />
</div> </div>
</router-link> </router-link>
</div> </div>
@@ -37,7 +37,7 @@
<ul class="icon-navigation logout"> <ul class="icon-navigation logout">
<li @click="$store.dispatch('logOut')" :title="$t('locations.logout')" class="icon-navigation-item"> <li @click="$store.dispatch('logOut')" :title="$t('locations.logout')" class="icon-navigation-item">
<div class="button-icon"> <div class="button-icon">
<power-icon size="19"></power-icon> <power-icon size="19" />
</div> </div>
</li> </li>
</ul> </ul>
+8 -8
View File
@@ -79,7 +79,7 @@ const routesOasis = [
import(/* webpackChunkName: "chunks/oasis/invoices" */ './Oasis/Invoices/Invoice'), import(/* webpackChunkName: "chunks/oasis/invoices" */ './Oasis/Invoices/Invoice'),
meta: { meta: {
requiresAuth: true, requiresAuth: true,
title: 'Faktúry' title: 'in.route_title.invoices'
}, },
children: [ children: [
{ {
@@ -89,7 +89,7 @@ const routesOasis = [
import(/* webpackChunkName: "chunks/oasis/invoices/list" */ './Oasis/Invoices/InvoicesView'), import(/* webpackChunkName: "chunks/oasis/invoices/list" */ './Oasis/Invoices/InvoicesView'),
meta: { meta: {
requiresAuth: true, requiresAuth: true,
title: 'Invoices' title: 'in.route_title.invoices'
}, },
}, },
{ {
@@ -99,7 +99,7 @@ const routesOasis = [
import(/* webpackChunkName: "chunks/oasis/invoices/profile" */ './Oasis/Invoices/BillingProfile'), import(/* webpackChunkName: "chunks/oasis/invoices/profile" */ './Oasis/Invoices/BillingProfile'),
meta: { meta: {
requiresAuth: true, requiresAuth: true,
title: 'My Billing Profile' title: 'in.nav.my_bill_profile'
}, },
}, },
{ {
@@ -109,7 +109,7 @@ const routesOasis = [
import(/* webpackChunkName: "chunks/oasis/invoices/profile" */ './Oasis/Invoices/BillingProfileSetUp'), import(/* webpackChunkName: "chunks/oasis/invoices/profile" */ './Oasis/Invoices/BillingProfileSetUp'),
meta: { meta: {
requiresAuth: true, requiresAuth: true,
title: 'Set My Billing Profile' title: 'in.button.setup_bill_profile'
}, },
}, },
{ {
@@ -119,7 +119,7 @@ const routesOasis = [
import(/* webpackChunkName: "chunks/oasis/invoices/create-client" */ './Oasis/Invoices/Clients/CreateClient'), import(/* webpackChunkName: "chunks/oasis/invoices/create-client" */ './Oasis/Invoices/Clients/CreateClient'),
meta: { meta: {
requiresAuth: true, requiresAuth: true,
title: 'Create Client' title: 'in.create.client'
}, },
}, },
{ {
@@ -147,7 +147,7 @@ const routesOasis = [
import(/* webpackChunkName: "chunks/oasis/invoices/client" */ './Oasis/Invoices/Clients/Client'), import(/* webpackChunkName: "chunks/oasis/invoices/client" */ './Oasis/Invoices/Clients/Client'),
meta: { meta: {
requiresAuth: true, requiresAuth: true,
title: 'Client' title: 'in.route_title.client'
}, },
children: [ children: [
{ {
@@ -157,7 +157,7 @@ const routesOasis = [
import(/* webpackChunkName: "chunks/oasis/invoices/client-detail" */ './Oasis/Invoices/Clients/Tabs/ClientDetail'), import(/* webpackChunkName: "chunks/oasis/invoices/client-detail" */ './Oasis/Invoices/Clients/Tabs/ClientDetail'),
meta: { meta: {
requiresAuth: true, requiresAuth: true,
title: 'Client Detail' title: 'in.route_title.client_detail'
}, },
}, },
{ {
@@ -167,7 +167,7 @@ const routesOasis = [
import(/* webpackChunkName: "chunks/oasis/invoices/client-invoices" */ './Oasis/Invoices/Clients/Tabs/ClientInvoices'), import(/* webpackChunkName: "chunks/oasis/invoices/client-invoices" */ './Oasis/Invoices/Clients/Tabs/ClientInvoices'),
meta: { meta: {
requiresAuth: true, requiresAuth: true,
title: 'Client Invoices' title: 'in.route_title.client_invoices'
}, },
}, },
] ]
@@ -26,7 +26,7 @@
</style> </style>
@endif @endif
<title>Invoice</title> <title>{{ __t('in.invoice') }}</title>
</head> </head>
<body> <body>
@@ -47,13 +47,13 @@
</div> </div>
<div class="col-right align-right"> <div class="col-right align-right">
@if($invoice->invoice_type === 'regular-invoice') @if($invoice->invoice_type === 'regular-invoice')
<h1>Faktúra - daňový doklad</h1> <h1>{{ __t('in.invoice') }} - {{ __t('in.doc.taxable_doc') }}</h1>
@endif @endif
@if($invoice->invoice_type === 'advance-invoice') @if($invoice->invoice_type === 'advance-invoice')
<h1>Faktúra - zálohový doklad</h1> <h1>{{ __t('in.invoice') }} - {{ __t('in.doc.advance_doc') }}</h1>
@endif @endif
<h2>Číslo: {{ $invoice->invoice_number }}</h2> <h2>{{ __t('in.doc.number') }}: {{ $invoice->invoice_number }}</h2>
<h4>Variabilný symbol: {{ $invoice->variable_number }}</h4> <h4>{{ __t('in.doc.variable_symbol') }}: {{ $invoice->variable_number }}</h4>
</div> </div>
</div> </div>
</header> </header>
@@ -62,7 +62,7 @@
<section> <section>
<div class="supplier"> <div class="supplier">
<div class="box" style="width: 500px;"> <div class="box" style="width: 500px;">
<h3>Odberateľ:</h3> <h3>{{ __t('in.doc.customer') }}:</h3>
<p>{{ $invoice->client['name'] }}</p> <p>{{ $invoice->client['name'] }}</p>
<p>{{ $invoice->client['address'] }}, {{ $invoice->client['city'] }}</p> <p>{{ $invoice->client['address'] }}, {{ $invoice->client['city'] }}</p>
<p>{{ $invoice->client['postal_code'] }} {{ $invoice->client['country'] }}</p> <p>{{ $invoice->client['postal_code'] }} {{ $invoice->client['country'] }}</p>
@@ -70,51 +70,51 @@
<div class="single-row"> <div class="single-row">
<span> <span>
@isset($invoice->client['ico']) @isset($invoice->client['ico'])
<span class="highlight">IČO</span>: {{ $invoice->client['ico'] }} <span class="highlight">{{ __t('in_editor.ico') }}</span>: {{ $invoice->client['ico'] }}
@endisset @endisset
@isset($invoice->client['dic']) @isset($invoice->client['dic'])
<span class="highlight">DIČ</span>: {{ $invoice->client['dic'] }} <span class="highlight">{{ __t('in_editor.dic') }}</span>: {{ $invoice->client['dic'] }}
@endisset @endisset
@isset($invoice->client['ic_dph']) @isset($invoice->client['ic_dph'])
<span class="highlight">IC DPH</span>: {{ $invoice->client['ic_dph'] }} <span class="highlight">{{ __t('in_editor.ic_dph') }}</span>: {{ $invoice->client['ic_dph'] }}
@endisset @endisset
</span> </span>
</div> </div>
</div> </div>
<div class="dates"> <div class="dates">
<p>Dátum vystavenia: {{ format_date($invoice->created_at, '%d. %B %Y') }}</p> <p>{{ __t('in.doc.date_of_issue') }}: {{ format_date($invoice->created_at, '%d. %B %Y') }}</p>
<p>Dátum dodania: {{ format_date($invoice->delivery_at, '%d. %B %Y') }}</p> <p>{{ __t('in.doc.date_of_delivery') }}: {{ format_date($invoice->delivery_at, '%d. %B %Y') }}</p>
<p>Dátum splatnosti: {{ format_date($invoice->due_at, '%d. %B %Y') }}</p> <p>{{ __t('in.doc.due_date') }}: {{ format_date($invoice->due_at, '%d. %B %Y') }}</p>
</div> </div>
</div> </div>
<div class="content-box"> <div class="content-box">
<h3>Dodávateľ:</h3> <h3>{{ __t('in.doc.supplier') }}:</h3>
<p style="padding-bottom: 0">{{ $invoice->user['company'] }}</p> <p style="padding-bottom: 0">{{ $invoice->user['company'] }}</p>
<small>{{ $invoice->user['registration_notes'] }}</small> <small>{{ $invoice->user['registration_notes'] }}</small>
</div> </div>
<div class="content-box"> <div class="content-box">
<h3>Sídlo:</h3> <h3>{{ __t('in.doc.headquarters') }}:</h3>
<p>{{ $invoice->user['address'] }} {{ $invoice->user['city'] }}</p> <p>{{ $invoice->user['address'] }} {{ $invoice->user['city'] }}</p>
<p>{{ $invoice->user['postal_code'] }}, {{ $invoice->user['country'] }}</p> <p>{{ $invoice->user['postal_code'] }}, {{ $invoice->user['country'] }}</p>
</div> </div>
<div class="content-box" style="padding-bottom: 0px"> <div class="content-box" style="padding-bottom: 0px">
<h3>Faktúračné údaje:</h3> <h3>{{ __t('user_settings.title_billing') }}:</h3>
@isset($invoice->user['ico']) @isset($invoice->user['ico'])
<p>IČO: {{ $invoice->user['ico'] }}</p> <p>{{ __t('in_editor.ico') }}: {{ $invoice->user['ico'] }}</p>
@endisset @endisset
@isset($invoice->user['dic']) @isset($invoice->user['dic'])
<p>DIČ: {{ $invoice->user['dic'] }}</p> <p>{{ __t('in_editor.dic') }}: {{ $invoice->user['dic'] }}</p>
@endisset @endisset
@isset($invoice->user['ic_dph']) @isset($invoice->user['ic_dph'])
<p>IČ DPH: {{ $invoice->user['ic_dph'] }}</p> <p>{{ __t('in_editor.ic_dph') }}: {{ $invoice->user['ic_dph'] }}</p>
@endisset @endisset
<p>{{ $invoice->user['bank'] }}</p> <p>{{ $invoice->user['bank'] }}</p>
<p>IBAN: {{ $invoice->user['iban'] }}, BIC kód/SWIFT: {{ $invoice->user['swift'] }}</p> <p>{{ __t('in.form.iban') }}: {{ $invoice->user['iban'] }}, {{ __t('in.form.swift_code') }}: {{ $invoice->user['swift'] }}</p>
</div> </div>
</section> </section>
@@ -122,25 +122,25 @@
<div class="special-wrapper"> <div class="special-wrapper">
<div class="special-item"> <div class="special-item">
<div class="padding"> <div class="padding">
<b>Číslo účtu:</b> <b>{{ __t('in.doc.bank_account_number') }}:</b>
<span>{{ $invoice->user['iban'] }}</span> <span>{{ $invoice->user['iban'] }}</span>
</div> </div>
</div> </div>
<div class="special-item"> <div class="special-item">
<div class="padding"> <div class="padding">
<b>Variabilný symbol:</b> <b>{{ __t('in.doc.variable_symbol') }}:</b>
<span>{{ $invoice->variable_number }}</span> <span>{{ $invoice->variable_number }}</span>
</div> </div>
</div> </div>
<div class="special-item"> <div class="special-item">
<div class="padding"> <div class="padding">
<b>Dátum splatnosti:</b> <b>{{ __t('in.doc.due_date') }}:</b>
<span>{{ format_date($invoice->due_at, '%d. %h. %Y') }}</span> <span>{{ format_date($invoice->due_at, '%d. %h. %Y') }}</span>
</div> </div>
</div> </div>
<div class="special-item"> <div class="special-item">
<div class="padding"> <div class="padding">
<b>Suma na úhradu:</b> <b>{{ __t('in.doc.sum_to_pay') }}:</b>
<span>{{ format_to_currency($invoice->total_net) }}</span> <span>{{ format_to_currency($invoice->total_net) }}</span>
</div> </div>
</div> </div>
@@ -151,26 +151,26 @@
<thead> <thead>
<tr class="table-row"> <tr class="table-row">
<td class="table-cell"> <td class="table-cell">
<span>Názov produktu</span> <span>{{ __t('in.doc.item.name') }}</span>
</td> </td>
<td class="table-cell"> <td class="table-cell">
<span>Množstvo</span> <span>{{ __t('in.doc.item.amount') }}</span>
</td> </td>
<td class="table-cell"> <td class="table-cell">
<span>J. Cena</span> <span>{{ __t('in.doc.item.price_per_unit') }}</span>
</td> </td>
<td class="table-cell"> <td class="table-cell">
<span>Celkom</span> <span>{{ __t('in.doc.item.total') }}</span>
</td> </td>
@if($invoice->user['ic_dph']) @if($invoice->user['ic_dph'])
<td class="table-cell"> <td class="table-cell">
<span>Sadzba DPH</span> <span>{{ __t('in.doc.item.vat_rate') }}</span>
</td> </td>
<td class="table-cell"> <td class="table-cell">
<span>DPH</span> <span>{{ __t('in.doc.item.vat') }}</span>
</td> </td>
<td class="table-cell"> <td class="table-cell">
<span>Celkom s DPH</span> <span>{{ __t('in.doc.item.total_with_vat') }}</span>
</td> </td>
@endif @endif
</tr> </tr>
@@ -219,7 +219,7 @@
@if($invoice->discount_type) @if($invoice->discount_type)
<li class="row" style="padding-bottom: 8px"> <li class="row" style="padding-bottom: 8px">
<span>Zlava za doklad:</span> <span>{{ __t('in.doc.discount') }}:</span>
<span>-{{ $invoice->discount_type === 'percent' ? $invoice->discount_rate . '%' : format_to_currency($invoice->discount_rate) }}</span> <span>-{{ $invoice->discount_type === 'percent' ? $invoice->discount_rate . '%' : format_to_currency($invoice->discount_rate) }}</span>
</li> </li>
@endif @endif
@@ -229,7 +229,7 @@
<div style="padding-bottom: 8px"> <div style="padding-bottom: 8px">
@foreach(invoice_tax_base($invoice) as $item) @foreach(invoice_tax_base($invoice) as $item)
<li class="row"> <li class="row">
<span>Základ DPH {{ $item['rate'] }}%: </span> <span>{{ __t('in.doc.vat_base') }} {{ $item['rate'] }}%: </span>
<span>{{ format_to_currency($item['total']) }}</span> <span>{{ format_to_currency($item['total']) }}</span>
</li> </li>
@endforeach @endforeach
@@ -241,7 +241,7 @@
<div style="padding-bottom: 8px"> <div style="padding-bottom: 8px">
@foreach(invoice_tax_summary($invoice) as $item) @foreach(invoice_tax_summary($invoice) as $item)
<li class="row"> <li class="row">
<span>DPH {{ $item['rate'] }}%: </span> <span>{{ __t('in.doc.item.vat') }} {{ $item['rate'] }}%: </span>
<span>{{ format_to_currency($item['total']) }}</span> <span>{{ format_to_currency($item['total']) }}</span>
</li> </li>
@endforeach @endforeach
@@ -249,21 +249,21 @@
@endif @endif
<li class="row"> <li class="row">
<b>Spolu k úhrade:</b> <b>{{ __t('in.doc.sum_to_pay') }}:</b>
<b>{{ format_to_currency(invoice_total($invoice)) }}</b> <b>{{ format_to_currency(invoice_total($invoice)) }}</b>
</li> </li>
</ul> </ul>
<!--Notes--> <!--Notes-->
<div class="notes"> <div class="notes">
<p>Ďakujeme, že ste sa rozhodli pre naše služby.</p> <p>{{ __t('in.doc.thanks') }}</p>
</div> </div>
{{--Invoice author--}} {{--Invoice author--}}
<div class="invoice-author"> <div class="invoice-author">
<div class="tax-note"> <div class="tax-note">
@if(! $invoice->user['ic_dph']) @if(! $invoice->user['ic_dph'])
<p>Nie sme platci DPH</p> <p>{{ __t('in.doc.not_vat_payer') }}</p>
@endif @endif
</div> </div>
<div class="sign"> <div class="sign">
@@ -275,13 +275,13 @@
<img src="{{ base64_from_storage_image($user->invoiceProfile->stamp) }}"> <img src="{{ base64_from_storage_image($user->invoiceProfile->stamp) }}">
@endif @endif
<span class="highlight">Faktúru vystavil:</span> {{ $invoice->user['author'] }} <span class="highlight">{{ __t('in.doc.creator') }}:</span> {{ $invoice->user['author'] }}
</div> </div>
</div> </div>
{{--Invoice Footer--}} {{--Invoice Footer--}}
<footer class="invoice-footer"> <footer class="invoice-footer">
<p>Vygenerované aplikáciou <a href="https://oasisdrive.cz">OasisDrive.cz</a></p> <p>{!! __t('in.doc.created_by_app', ['app_name' => 'OasisDrive.cz', 'url' => 'https://oasisdrive.cz']) !!}</p>
</footer> </footer>
</div> </div>
</body> </body>