mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-28 12:11:08 -04:00
Compare commits
75 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fa512629d9 | |||
| 0f99be6cf1 | |||
| fae3af2592 | |||
| d1e70c8989 | |||
| 63094e8112 | |||
| 1b46bddf56 | |||
| 422bf74600 | |||
| d003e61d41 | |||
| 09f74eb37c | |||
| 9227973a7a | |||
| 5011543198 | |||
| d07b63c365 | |||
| c12e27dbfe | |||
| 4ea32b94ed | |||
| fe93d5236c | |||
| 5992394bca | |||
| 6c9f5800e5 | |||
| 227cebcb0b | |||
| 6fd4cc6b3f | |||
| 594c8965c1 | |||
| 2241145a17 | |||
| 34f252b1c9 | |||
| 89e1d7bc84 | |||
| f0368deda2 | |||
| 4028551fd8 | |||
| 06f385a28e | |||
| 44aeff425b | |||
| 35a38d719c | |||
| f6ba81e8b7 | |||
| 64cb55fd5d | |||
| 13fe38517c | |||
| 3bdb501d1d | |||
| b8adbf4b07 | |||
| aa85a9950c | |||
| 8e63efee1b | |||
| ea98f03aeb | |||
| 90cd6226be | |||
| 9d2df64b2e | |||
| bade86a24f | |||
| c3b57b4888 | |||
| fcfedc5414 | |||
| 8dee0da434 | |||
| e4ab024422 | |||
| 2bd01c4014 | |||
| 034c7e385c | |||
| c9086747a3 | |||
| ab1ed269fd | |||
| f7a823e9bc | |||
| b6301b08f8 | |||
| 265c219fdc | |||
| 729db694a3 | |||
| e2e6415cb6 | |||
| 419104a4ec | |||
| f18eac2001 | |||
| 7bffbe59ed | |||
| bf53b4f5eb | |||
| 21440230f3 | |||
| 99c27ba8ef | |||
| cb7a925cd0 | |||
| d2e11bd7df | |||
| 1b74a3720e | |||
| e222af335e | |||
| 599e6270e8 | |||
| da7ddcd4f1 | |||
| bd01039fb8 | |||
| 718f01ccd4 | |||
| fd3742b926 | |||
| e8b954d1bd | |||
| 58042decd5 | |||
| fa500b3865 | |||
| e03924fe9d | |||
| 3f308a2d3b | |||
| 6cdd93bab0 | |||
| 69c6c883c2 | |||
| 69dcf1299b |
@ -3,17 +3,20 @@
|
||||
namespace Crater\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Console\ConfirmableTrait;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
|
||||
class ResetApp extends Command
|
||||
{
|
||||
use ConfirmableTrait;
|
||||
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'reset:app';
|
||||
protected $signature = 'reset:app {--force}';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
@ -39,13 +42,28 @@ class ResetApp extends Command
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
if ($this->confirm('Do you wish to continue? This will delete your tables')) {
|
||||
Artisan::call('migrate:reset --force');
|
||||
|
||||
\Storage::disk('local')->delete('database_created');
|
||||
|
||||
// $file = new Filesystem;
|
||||
// $file->cleanDirectory('public/storage');
|
||||
if (!$this->confirmToProceed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->info('Running migrate:fresh');
|
||||
|
||||
Artisan::call('migrate:fresh --seed --force');
|
||||
|
||||
$this->info('Seeding database');
|
||||
|
||||
Artisan::call('db:seed', ['--class' => 'DemoSeeder', '--force' => true]);
|
||||
|
||||
$path = base_path('.env');
|
||||
|
||||
if (file_exists($path)) {
|
||||
file_put_contents($path, str_replace(
|
||||
'APP_DEBUG=true',
|
||||
'APP_DEBUG=false',
|
||||
file_get_contents($path)
|
||||
));
|
||||
}
|
||||
|
||||
$this->info('App has been reset successfully');
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Crater\Http\Controllers\V1\Auth;
|
||||
|
||||
use Crater\Http\Controllers\Controller;
|
||||
use Crater\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class IsRegisteredController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
if (User::whereEmail($request->email)->first()) {
|
||||
return 'true';
|
||||
} else {
|
||||
return 'false';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -55,7 +55,7 @@ class ResetPasswordController extends Controller
|
||||
*/
|
||||
protected function resetPassword($user, $password)
|
||||
{
|
||||
$user->password = \Hash::make($password);
|
||||
$user->password = $password;
|
||||
|
||||
$user->setRememberToken(Str::random(60));
|
||||
|
||||
|
||||
@ -35,6 +35,7 @@ class DatabaseConfigurationController extends Controller
|
||||
$results = $this->environmentManager->saveDatabaseVariables($request);
|
||||
|
||||
if (array_key_exists("success", $results)) {
|
||||
Artisan::call('key:generate --force');
|
||||
Artisan::call('config:clear');
|
||||
Artisan::call('cache:clear');
|
||||
Artisan::call('storage:link');
|
||||
|
||||
@ -16,9 +16,6 @@ class DeleteFilesController extends Controller
|
||||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'deleted_files' => 'required',
|
||||
]);
|
||||
|
||||
if(isset($request->deleted_files) && !empty($request->deleted_files)) {
|
||||
Updater::deleteFiles($request->deleted_files);
|
||||
|
||||
@ -23,6 +23,7 @@ class ConfigMiddleware
|
||||
|
||||
if ($setting && $setting != null && $setting != $timezone) {
|
||||
config(['app.timezone' => $setting]);
|
||||
date_default_timezone_set($setting);
|
||||
}
|
||||
|
||||
if($request->has('file_disk_id')) {
|
||||
|
||||
@ -430,7 +430,12 @@ class Estimate extends Model implements HasMedia
|
||||
$company = Company::find($this->company_id);
|
||||
$logo = $company->getMedia('logo')->first();
|
||||
|
||||
if ($logo) {
|
||||
$isSystem = FileDisk::whereSetAsDefault(true)->first()->isSystem();
|
||||
$isLocalhost = config('session.domain') === 'localhost';
|
||||
|
||||
if ($logo && $isLocalhost && $isSystem) {
|
||||
$logo = $logo->getPath();
|
||||
} else if($logo) {
|
||||
$logo = $logo->getFullUrl();
|
||||
}
|
||||
|
||||
|
||||
@ -8,6 +8,9 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
class FileDisk extends Model
|
||||
{
|
||||
CONST DISK_TYPE_SYSTEM = 'SYSTEM';
|
||||
CONST DISK_TYPE_REMOTE = 'REMOTE';
|
||||
|
||||
use HasFactory;
|
||||
|
||||
protected $guarded = [
|
||||
@ -184,4 +187,14 @@ class FileDisk extends Model
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function isSystem()
|
||||
{
|
||||
return $this->type === self::DISK_TYPE_SYSTEM;
|
||||
}
|
||||
|
||||
public function isRemote()
|
||||
{
|
||||
return $this->type === self::DISK_TYPE_REMOTE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -514,7 +514,12 @@ class Invoice extends Model implements HasMedia
|
||||
|
||||
$logo = $company->getMedia('logo')->first();
|
||||
|
||||
if ($logo) {
|
||||
$isSystem = FileDisk::whereSetAsDefault(true)->first()->isSystem();
|
||||
$isLocalhost = config('session.domain') === 'localhost';
|
||||
|
||||
if ($logo && $isLocalhost && $isSystem) {
|
||||
$logo = $logo->getPath();
|
||||
} else if($logo) {
|
||||
$logo = $logo->getFullUrl();
|
||||
}
|
||||
|
||||
|
||||
@ -375,7 +375,12 @@ class Payment extends Model implements HasMedia
|
||||
|
||||
$logo = $company->getMedia('logo')->first();
|
||||
|
||||
if ($logo) {
|
||||
$isSystem = FileDisk::whereSetAsDefault(true)->first()->isSystem();
|
||||
$isLocalhost = config('session.domain') === 'localhost';
|
||||
|
||||
if ($logo && $isLocalhost && $isSystem) {
|
||||
$logo = $logo->getPath();
|
||||
} else if($logo) {
|
||||
$logo = $logo->getFullUrl();
|
||||
}
|
||||
|
||||
|
||||
@ -14,11 +14,10 @@ trait GeneratesPdfTrait
|
||||
public function getGeneratedPDFOrStream($collection_name)
|
||||
{
|
||||
$pdf = $this->getGeneratedPDF($collection_name);
|
||||
|
||||
if($pdf && file_exists($pdf['path'])) {
|
||||
return response()->make(file_get_contents($pdf['path']), 200, [
|
||||
'Content-Type' => 'application/pdf',
|
||||
'Content-Disposition' => 'inline; filename="'.$pdf['file_name'].'"'
|
||||
'Content-Disposition' => 'inline; filename="'.$pdf['file_name'].'.pdf"'
|
||||
]);
|
||||
}
|
||||
|
||||
@ -30,7 +29,7 @@ trait GeneratesPdfTrait
|
||||
|
||||
return response()->make($pdf->stream(), 200, [
|
||||
'Content-Type' => 'application/pdf',
|
||||
'Content-Disposition' => 'inline; filename="'.$this[$collection_name.'_number'].'"'
|
||||
'Content-Disposition' => 'inline; filename="'.$this[$collection_name.'_number'].'.pdf"'
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
2950
composer.lock
generated
2950
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -17,8 +17,11 @@ return [
|
||||
["code"=>"fr", "name" => "French"],
|
||||
["code"=>"de", "name" => "German"],
|
||||
["code"=>"it", "name" => "Italian"],
|
||||
["code"=>"pt-br", "name" => "Portuguese (Brazilian)"],
|
||||
["code"=>"lv", "name" => "Latvian"],
|
||||
["code"=>"pt_BR", "name" => "Portuguese (Brazilian)"],
|
||||
["code"=>"sr", "name" => "Serbian Latin"],
|
||||
["code"=>"es", "name" => "Spanish"],
|
||||
["code"=>"sv", "name"=> "Svenska"]
|
||||
],
|
||||
|
||||
/*
|
||||
|
||||
@ -41,19 +41,19 @@ return [
|
||||
|
||||
'connections' => [
|
||||
Invoice::class => [
|
||||
'salt' => Invoice::class.'7623e9b0009feff8e024a689d6ef59ce',
|
||||
'salt' => Invoice::class.config('app.key'),
|
||||
'length' => '20',
|
||||
'alphabet' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
|
||||
'alphabet' => 'XKyIAR7mgt8jD2vbqPrOSVenNGpiYLx4M61T'
|
||||
],
|
||||
Estimate::class => [
|
||||
'salt' => Estimate::class.'7623e9b0009feff8e024a689d6ef59ce',
|
||||
'salt' => Estimate::class.config('app.key'),
|
||||
'length' => '20',
|
||||
'alphabet' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
|
||||
'alphabet' => 'yLJWP79M8rYVqbn1NXjulO6IUDdvekRQGo40'
|
||||
],
|
||||
Payment::class => [
|
||||
'salt' => Payment::class.'7623e9b0009feff8e024a689d6ef59ce',
|
||||
'salt' => Payment::class.config('app.key'),
|
||||
'length' => '20',
|
||||
'alphabet' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
|
||||
'alphabet' => 'asqtW3eDRIxB65GYl7UVLS1dybn9XrKTZ4zO'
|
||||
],
|
||||
],
|
||||
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class ChangeDescriptionAndNotesColumnType extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('estimates', function (Blueprint $table) {
|
||||
$table->text('notes')->nullable()->change();
|
||||
});
|
||||
|
||||
Schema::table('expenses', function (Blueprint $table) {
|
||||
$table->text('notes')->nullable()->change();
|
||||
});
|
||||
|
||||
Schema::table('estimate_items', function (Blueprint $table) {
|
||||
$table->text('description')->nullable()->change();
|
||||
});
|
||||
|
||||
Schema::table('invoice_items', function (Blueprint $table) {
|
||||
$table->text('description')->nullable()->change();
|
||||
});
|
||||
|
||||
Schema::table('items', function (Blueprint $table) {
|
||||
$table->text('description')->nullable()->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
use Crater\Models\Setting;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class UpdateCraterVersion401 extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Setting::setSetting('version', '4.0.1');
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
use Crater\Models\Setting;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class UpdateCraterVersion402 extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Setting::setSetting('version', '4.0.2');
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
2
public/assets/css/crater.css
vendored
2
public/assets/css/crater.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
||||
{
|
||||
"/assets/js/app.js": "/assets/js/app.js?id=f8c1167e861af23971a2",
|
||||
"/assets/css/crater.css": "/assets/css/crater.css?id=262352bd0c724bad8f2f"
|
||||
"/assets/js/app.js": "/assets/js/app.js?id=1d9cf52055fe7be22fd1",
|
||||
"/assets/css/crater.css": "/assets/css/crater.css?id=912348e74f68a41a1b35"
|
||||
}
|
||||
|
||||
14
readme.md
14
readme.md
@ -68,14 +68,24 @@ Crater is a product of [Bytefury](https://bytefury.com)
|
||||
**Special thanks to:**
|
||||
|
||||
- [Birkhoff Lee](https://github.com/BirkhoffLee)
|
||||
- [Hassan A. Ba Abdullah](https://github.com/hsnapps)
|
||||
- [Akaunting](https://github.com/akaunting/akaunting)
|
||||
- [MakerLab](https://github.com/MakerLab-Dev)
|
||||
|
||||
## Translate
|
||||
|
||||
Help us translate on https://crowdin.com/project/crater-invoice
|
||||
|
||||
**Thanks to Translation Contributors:**
|
||||
|
||||
- [Hassan A. Ba Abdullah (Arabic)](https://github.com/hsnapps)
|
||||
- [Clément de Louvencourt (French)](https://github.com/PHClement)
|
||||
- [Robin Delattre (French)](https://github.com/RobinDev)
|
||||
- [René Loos (Dutch)](https://github.com/Loosie94)
|
||||
- [Stefan Azarić (Serbian)](https://github.com/azaricstefan)
|
||||
- [Emmanuel Lampe (German)](https://github.com/rexlManu)
|
||||
- [edevrob (Latvian)](https://github.com/edevrob)
|
||||
|
||||
## License
|
||||
|
||||
Crater is released under the Attribution Assurance License.
|
||||
See [LICENSE](LICENSE) for details.
|
||||
See [LICENSE](https://craterapp.com/license) for full details & use-cases.
|
||||
|
||||
4
resources/assets/js/bootstrap.js
vendored
4
resources/assets/js/bootstrap.js
vendored
@ -97,7 +97,7 @@ global.axios.interceptors.response.use(undefined, function (err) {
|
||||
}
|
||||
if (!err.response) {
|
||||
window.toastr['error'](
|
||||
'Network error: Please check your internet connection or wait until servers are back online'
|
||||
'Please check your internet connection or wait until servers are back online', 'Network Error'
|
||||
)
|
||||
} else {
|
||||
if (
|
||||
@ -121,7 +121,7 @@ global.axios.interceptors.response.use(undefined, function (err) {
|
||||
window.toastr['error'](
|
||||
err.response.data.message
|
||||
? err.response.data.message
|
||||
: 'Unknown error occurred'
|
||||
: err.response.data || 'Unknown error occurred', 'Error'
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,8 +18,6 @@
|
||||
import { mapGetters } from 'vuex'
|
||||
import SwDatePicker from '@bytefury/spacewind/src/components/SwDatePicker'
|
||||
import moment from 'moment'
|
||||
const fromMomentDate = (date, format = 'YYYY-MM-DD') =>
|
||||
moment(new Date(date), format)
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@ -76,13 +74,17 @@ export default {
|
||||
}),
|
||||
},
|
||||
watch: {
|
||||
value(val) {
|
||||
if (val && !this.enableTime) {
|
||||
this.date = fromMomentDate(val, 'YYYY-MM-DD').format('YYYY-MM-DD')
|
||||
} else {
|
||||
this.date = fromMomentDate(val, 'YYYY-MM-DD').format('YYYY-MM-DD H:m:s')
|
||||
}
|
||||
},
|
||||
// value(val) {
|
||||
// console.log(val)
|
||||
|
||||
// if (val && !this.enableTime) {
|
||||
// this.date = moment(new Date(val), 'YYYY-MM-DD').format('YYYY-MM-DD')
|
||||
// } else {
|
||||
// this.date = moment(new Date(val), 'YYYY-MM-DD').format(
|
||||
// 'YYYY-MM-DD H:m:s'
|
||||
// )
|
||||
// }
|
||||
// },
|
||||
enableTime(val) {
|
||||
this.$set(this.config, 'enableTime', this.enableTime)
|
||||
},
|
||||
@ -104,6 +106,7 @@ export default {
|
||||
},
|
||||
mounted() {
|
||||
this.$set(this.config, 'enableTime', this.enableTime)
|
||||
|
||||
if (!this.enableTime) {
|
||||
this.$set(
|
||||
this.config,
|
||||
@ -117,12 +120,16 @@ export default {
|
||||
this.carbonFormat ? `${this.carbonFormat} H:i ` : 'd M Y H:i'
|
||||
)
|
||||
}
|
||||
|
||||
if (this.value && !this.enableTime) {
|
||||
this.date = fromMomentDate(this.value, 'YYYY-MM-DD').format('YYYY-MM-DD')
|
||||
this.date = moment(new Date(this.value), 'YYYY-MM-DD').format(
|
||||
'YYYY-MM-DD'
|
||||
)
|
||||
return true
|
||||
}
|
||||
|
||||
if (this.value) {
|
||||
this.date = fromMomentDate(this.value, 'YYYY-MM-DD').format(
|
||||
this.date = moment(new Date(this.value), 'YYYY-MM-DD').format(
|
||||
'YYYY-MM-DD HH:mm:SS'
|
||||
)
|
||||
}
|
||||
@ -130,7 +137,6 @@ export default {
|
||||
methods: {
|
||||
onDateChange(date) {
|
||||
this.$emit('input', date)
|
||||
this.$emit('change', date)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -15,6 +15,7 @@
|
||||
</sw-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { XIcon } from '@vue-hero-icons/solid'
|
||||
import { mapActions, mapGetters } from 'vuex'
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="template-modal">
|
||||
<div class="px-8 py-8 sm:p-6">
|
||||
<div class="flex flex-wrap justify-start p-1 overflow-x-auto sw-scroll">
|
||||
<div class="grid grid-cols-3 gap-2 p-1 overflow-x-auto sw-scroll">
|
||||
<div
|
||||
v-for="(template, index) in modalData"
|
||||
:key="index"
|
||||
@ -9,21 +9,28 @@
|
||||
'border border-solid border-primary-500':
|
||||
selectedTemplate === template.id,
|
||||
}"
|
||||
class="relative m-2 border border-gray-200 border-solid"
|
||||
class="relative flex flex-col m-2 border border-gray-200 border-solid cursor-pointer hover:border-primary-300"
|
||||
@click="selectedTemplate = template.id"
|
||||
>
|
||||
<img
|
||||
:src="template.path"
|
||||
alt="template-image"
|
||||
height="200"
|
||||
width="140"
|
||||
@click="selectedTemplate = template.id"
|
||||
/>
|
||||
<img :src="template.path" alt="template-image" />
|
||||
<img
|
||||
v-if="selectedTemplate === template.id"
|
||||
class="absolute z-10 w-5 h-5 text-primary-500"
|
||||
style="top: -6px; right: -5px"
|
||||
src="/assets/img/tick.png"
|
||||
/>
|
||||
<span
|
||||
:class="[
|
||||
'w-full p-1 bg-gray-200 text-sm text-center absolute bottom-0 left-0',
|
||||
{
|
||||
'text-primary-500 bg-primary-100':
|
||||
selectedTemplate === template.id,
|
||||
'text-gray-600': selectedTemplate != template.id,
|
||||
},
|
||||
]"
|
||||
>
|
||||
{{ template.name }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="template-modal">
|
||||
<div class="px-8 py-8 sm:p-6">
|
||||
<div class="flex flex-wrap justify-start p-1 overflow-x-auto sw-scroll">
|
||||
<div class="grid grid-cols-3 gap-2 p-1 overflow-x-auto sw-scroll">
|
||||
<div
|
||||
v-for="(template, index) in modalData"
|
||||
:key="index"
|
||||
@ -9,21 +9,28 @@
|
||||
'border border-solid border-primary-500':
|
||||
selectedTemplate === template.id,
|
||||
}"
|
||||
class="relative m-2 border border-gray-200 border-solid"
|
||||
class="relative flex flex-col m-2 border border-gray-200 border-solid cursor-pointer hover:border-primary-300"
|
||||
@click="selectedTemplate = template.id"
|
||||
>
|
||||
<img
|
||||
:src="template.path"
|
||||
alt="template-image"
|
||||
height="200"
|
||||
width="140"
|
||||
@click="selectedTemplate = template.id"
|
||||
/>
|
||||
<img :src="template.path" alt="template-image" />
|
||||
<img
|
||||
v-if="selectedTemplate === template.id"
|
||||
class="absolute z-10 w-5 h-5 text-primary-500"
|
||||
style="top: -6px; right: -5px"
|
||||
src="/assets/img/tick.png"
|
||||
/>
|
||||
<span
|
||||
:class="[
|
||||
'w-full p-1 bg-gray-200 text-sm text-center absolute bottom-0 left-0',
|
||||
{
|
||||
'text-primary-500 bg-primary-100':
|
||||
selectedTemplate === template.id,
|
||||
'text-gray-600': selectedTemplate != template.id,
|
||||
},
|
||||
]"
|
||||
>
|
||||
{{ template.name }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -122,12 +122,7 @@ export default {
|
||||
}
|
||||
window.toastr['error'](response.data.error)
|
||||
} catch (err) {
|
||||
if (err.response.data.errors.name) {
|
||||
this.isLoading = false
|
||||
window.toastr['error'](
|
||||
this.$t('validation.payment_mode_already_taken')
|
||||
)
|
||||
}
|
||||
this.isLoading = false
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -36,12 +36,12 @@
|
||||
|
||||
<button
|
||||
type="button"
|
||||
class="flex items-center justify-center w-full px-2 py-3 bg-gray-200 border-none outline-none"
|
||||
class="flex items-center justify-center w-full px-2 py-3 bg-gray-200 border-none outline-none hover:bg-gray-300"
|
||||
@click="openNoteModal"
|
||||
>
|
||||
<check-circle-icon class="h-5" />
|
||||
<label
|
||||
class="m-0 ml-3 text-sm leading-none cursor-pointer font-base text-primary-400"
|
||||
class="m-0 ml-1 text-sm leading-none cursor-pointer font-base text-primary-400"
|
||||
>
|
||||
{{ $t('settings.customization.notes.add_new_note') }}
|
||||
</label>
|
||||
|
||||
@ -75,7 +75,7 @@
|
||||
"you_got_lost": "عفواً! يبدو أنك قد تهت!",
|
||||
"go_home": "عودة إلى الرئيسية",
|
||||
"test_mail_conf": "اختبار تكوين البريد",
|
||||
"send_mail_successfully": "Mail sent successfully",
|
||||
"send_mail_successfully": "تم إرسال البريد بنجاح",
|
||||
"setting_updated": "تم تحديث الإعدادات بنجاح",
|
||||
"select_state": "اختر الولاية/المنطقة",
|
||||
"select_country": "اختر الدولة",
|
||||
@ -84,8 +84,8 @@
|
||||
"street_2": "عنوان الشارع 2",
|
||||
"action_failed": "فشلت العملية",
|
||||
"retry": "أعد المحاولة",
|
||||
"choose_note": "Choose Note",
|
||||
"no_note_found": "No Note Found",
|
||||
"choose_note": "اختر ملاحظة",
|
||||
"no_note_found": "لم يتم العثور على الملاحظة",
|
||||
"insert_note": "أدخل ملاحظة"
|
||||
},
|
||||
"dashboard": {
|
||||
@ -143,8 +143,8 @@
|
||||
"add_customer": "إضافة عميل",
|
||||
"contacts_list": "قائمة العملاء",
|
||||
"name": "الاسم",
|
||||
"mail": "Mail | Mails",
|
||||
"statement": "Statement",
|
||||
"mail": "البريد",
|
||||
"statement": "البيان",
|
||||
"display_name": "اسم العرض",
|
||||
"primary_contact_name": "اسم التواصل الرئيسي",
|
||||
"contact_name": "اسم تواصل آخر",
|
||||
@ -153,7 +153,7 @@
|
||||
"address": "العنوان",
|
||||
"phone": "الهاتف",
|
||||
"website": "موقع الإنترنت",
|
||||
"overview": "Overview",
|
||||
"overview": "استعراض",
|
||||
"enable_portal": "Enable Portal",
|
||||
"country": "الدولة",
|
||||
"state": "الولاية/المنطقة",
|
||||
@ -980,7 +980,6 @@
|
||||
"default_driver": "برنامج التشغيل الافتراضي",
|
||||
"is_default": "أمر افتراضي",
|
||||
"set_default_disk": "تعيين القرص الافتراضي",
|
||||
"set_default_disk_confirm": "This disk will be set as default and all the new PDFs will be saved on this disk",
|
||||
"success_set_default_disk": "Disk set as default successfully",
|
||||
"save_pdf_to_disk": "حفظ ملفات PDF على القرص",
|
||||
"disk_setting_description": "قم بتمكين هذا ، إذا كنت ترغب في حفظ نسخة من كل فاتورة ، تقدير وإيصال دفع PDF على القرص الافتراضي الخاص بك تلقائيًا. سيؤدي تشغيل هذا الخيار إلى تقليل وقت التحميل عند عرض ملفات PDF.",
|
||||
|
||||
@ -10,16 +10,16 @@
|
||||
"reports": "Berichte",
|
||||
"settings": "Einstellungen",
|
||||
"logout": "Abmelden",
|
||||
"users": "Users"
|
||||
"users": "Benutzer"
|
||||
},
|
||||
"general": {
|
||||
"add_company": "Add Company",
|
||||
"add_company": "Unternehmen hinzufügen",
|
||||
"view_pdf": "PDF anzeigen",
|
||||
"copy_pdf_url": "Copy PDF Url",
|
||||
"copy_pdf_url": "PDF Url kopieren",
|
||||
"download_pdf": "PDF herunterladen",
|
||||
"save": "Speichern",
|
||||
"create": "Create",
|
||||
"cancel": "Abrechen",
|
||||
"create": "Erstellen",
|
||||
"cancel": "Abbrechen",
|
||||
"update": "Aktualisieren",
|
||||
"deselect": "Entfernen",
|
||||
"download": "Herunterladen",
|
||||
@ -31,15 +31,15 @@
|
||||
"ascending": "Aufsteigend",
|
||||
"descending": "Absteigend",
|
||||
"subject": "Betreff",
|
||||
"body": "Körper",
|
||||
"body": "Inhalt",
|
||||
"message": "Nachricht",
|
||||
"send": "Send",
|
||||
"send": "Absenden",
|
||||
"go_back": "zurück",
|
||||
"back_to_login": "Zurück zum Login?",
|
||||
"home": "Startseite",
|
||||
"filter": "Filter",
|
||||
"delete": "Löschen",
|
||||
"edit": "Ändern",
|
||||
"edit": "Bearbeiten",
|
||||
"view": "Anzeigen",
|
||||
"add_new_item": "Artikel hinzufügen",
|
||||
"clear_all": "Alle entfernen",
|
||||
@ -48,7 +48,7 @@
|
||||
"actions": "Aktionen",
|
||||
"subtotal": "ZWISCHENSUMME",
|
||||
"discount": "RABATT",
|
||||
"fixed": "Behoben",
|
||||
"fixed": "Festsatz",
|
||||
"percentage": "Prozentsatz",
|
||||
"tax": "Steuer",
|
||||
"total_amount": "GESAMTSUMME",
|
||||
@ -84,9 +84,9 @@
|
||||
"street_2": "Zusatz Strasse",
|
||||
"action_failed": "Aktion fehlgeschlagen",
|
||||
"retry": "Wiederholen",
|
||||
"choose_note": "Choose Note",
|
||||
"no_note_found": "No Note Found",
|
||||
"insert_note": "Insert Note"
|
||||
"choose_note": "Notiz auswählen",
|
||||
"no_note_found": "Keine Notizen gefunden",
|
||||
"insert_note": "Notiz einfügen"
|
||||
},
|
||||
"dashboard": {
|
||||
"select_year": "Jahr wählen",
|
||||
@ -97,9 +97,9 @@
|
||||
"estimates": "Kostenvoranschläge"
|
||||
},
|
||||
"chart_info": {
|
||||
"total_sales": "Verkäufe gesamt",
|
||||
"total_receipts": "Eingänge gesamt",
|
||||
"total_expense": "Gesamtausgaben",
|
||||
"total_sales": "Aufträge gesamt",
|
||||
"total_receipts": "Zahlungen gesamt",
|
||||
"total_expense": "Kosten gesamt",
|
||||
"net_income": "Einnahmen Netto",
|
||||
"year": "Jahr"
|
||||
},
|
||||
@ -133,17 +133,17 @@
|
||||
"compound_tax": "zusammengesetzte Steuer"
|
||||
},
|
||||
"global_search": {
|
||||
"search": "Search...",
|
||||
"search": "Suchen...",
|
||||
"customers": "Kunden",
|
||||
"users": "Users",
|
||||
"no_results_found": "No Results Found"
|
||||
"users": "Benutzer",
|
||||
"no_results_found": "Keine Ergebnisse gefunden"
|
||||
},
|
||||
"customers": {
|
||||
"title": "Kunden",
|
||||
"add_customer": "Kunde hinzufügen",
|
||||
"contacts_list": "Kunden-Liste",
|
||||
"name": "Name",
|
||||
"mail": "Mail | Mails",
|
||||
"mail": "E-Mail| E-Mails",
|
||||
"statement": "Statement",
|
||||
"display_name": "Anzeige Name",
|
||||
"primary_contact_name": "Ansprechpartner",
|
||||
@ -153,8 +153,8 @@
|
||||
"address": "Adresse",
|
||||
"phone": "Telefon",
|
||||
"website": "Webseite",
|
||||
"overview": "Overview",
|
||||
"enable_portal": "Enable Portal",
|
||||
"overview": "Übersicht",
|
||||
"enable_portal": "Kunden-Portal aktivieren",
|
||||
"country": "Land",
|
||||
"state": "Bundesland",
|
||||
"city": "Stadt",
|
||||
@ -187,7 +187,7 @@
|
||||
"phone_number": "Telefonnummer",
|
||||
"create_date": "Erstellungsdatum",
|
||||
"confirm_delete": "Sie können diesen Kunden und alle zugehörigen Rechnungen, Schätzungen und Zahlungen nicht wiederherstellen. | Sie können diesen Kunden und alle zugehörigen Rechnungen, Schätzungen und Zahlungen nicht wiederherstellen.",
|
||||
"created_message": "Customer created successfully",
|
||||
"created_message": "Benutzer erfolgreich erstellt",
|
||||
"updated_message": "Kunde erfolgreich aktualisiert",
|
||||
"deleted_message": "Kunden erfolgreich gelöscht | Kunden erfolgreich gelöscht"
|
||||
},
|
||||
@ -253,7 +253,7 @@
|
||||
"convert_to_invoice": "Konvertieren in Rechnung",
|
||||
"mark_as_sent": "Als gesendet markieren",
|
||||
"send_estimate": "Kostenvoranschlag senden",
|
||||
"resend_estimate": "Resend Estimate",
|
||||
"resend_estimate": "Kostenvoranschlag erneut senden",
|
||||
"record_payment": "Zahlung erfassen",
|
||||
"add_estimate": "Kostenvoranschlag hinzufügen",
|
||||
"save_estimate": "Kostenvoranschlag speichern",
|
||||
@ -339,7 +339,7 @@
|
||||
"notes": "Hinweise",
|
||||
"view": "Anzeigen",
|
||||
"send_invoice": "Rechnung senden",
|
||||
"resend_invoice": "Resend Invoice",
|
||||
"resend_invoice": "Rechnung erneut senden",
|
||||
"invoice_template": "Rechnungs-Vorlage",
|
||||
"template": "Vorlage",
|
||||
"mark_as_sent": "Als gesendet markieren",
|
||||
@ -428,7 +428,7 @@
|
||||
"edit_payment": "Zahlung bearbeiten",
|
||||
"view_payment": "Zahlung anzeigen",
|
||||
"add_new_payment": "Neue Zahlung hinzufügen",
|
||||
"send_payment_receipt": "Send Payment Receipt",
|
||||
"send_payment_receipt": "Zahlungsbeleg senden",
|
||||
"send_payment": "Senden Sie die Zahlung",
|
||||
"save_payment": "Zahlung speichern",
|
||||
"update_payment": "Zahlung ändern",
|
||||
@ -438,8 +438,8 @@
|
||||
"list_of_payments": "Dieser Abschnitt enthält die Liste der Zahlungen.",
|
||||
"select_payment_mode": "Wählen Sie den Zahlungsmodus",
|
||||
"confirm_mark_as_sent": "Dieser Kostenvoranschlag wird als gesendet markiert",
|
||||
"confirm_send_payment": "This payment will be sent via email to the customer",
|
||||
"send_payment_successfully": "Payment sent successfully",
|
||||
"confirm_send_payment": "Diese Zahlung wird per E-Mail an den Kunden gesendet",
|
||||
"send_payment_successfully": "Zahlung erfolgreich gesendet",
|
||||
"user_email_does_not_exist": "Benutzer-E-Mail existiert nicht",
|
||||
"something_went_wrong": "Da ist etwas schief gelaufen",
|
||||
"confirm_delete": "Sie können diese Zahlung nicht wiederherstellen. | Sie können diese Zahlungen nicht wiederherstellen.",
|
||||
@ -508,30 +508,30 @@
|
||||
"login_placeholder": "mail@beispiel.de"
|
||||
},
|
||||
"users": {
|
||||
"title": "Users",
|
||||
"users_list": "Users List",
|
||||
"title": "Benutzer",
|
||||
"users_list": "Benutzerliste",
|
||||
"name": "Name",
|
||||
"description": "Beschreibung",
|
||||
"added_on": "Hinzugefügt am",
|
||||
"date_of_creation": "Erstellt am",
|
||||
"action": "Aktion",
|
||||
"add_user": "Add User",
|
||||
"save_user": "Save User",
|
||||
"update_user": "Update User",
|
||||
"user": "User | Users",
|
||||
"add_new_user": "Add New User",
|
||||
"new_user": "New User",
|
||||
"edit_user": "Edit User",
|
||||
"no_users": "No users yet!",
|
||||
"list_of_users": "This section will contain the list of users.",
|
||||
"add_user": "Benutzer hinzufügen",
|
||||
"save_user": "Benutzer speichern",
|
||||
"update_user": "Benutzer aktualisieren",
|
||||
"user": "Benutzer",
|
||||
"add_new_user": "Neuen Benutzer hinzufügen",
|
||||
"new_user": "Neuer Benutzer",
|
||||
"edit_user": "Benutzer bearbeiten",
|
||||
"no_users": "Noch keine Benutzer!",
|
||||
"list_of_users": "Dieser Abschnitt enthält die Liste der Benutzer.",
|
||||
"email": "E-Mail",
|
||||
"phone": "Telefon",
|
||||
"password": "Passwort",
|
||||
"user_attached_message": "Ein Artikel der bereits verwendet wird kann nicht gelöscht werden",
|
||||
"confirm_delete": "You will not be able to recover this User | You will not be able to recover these Users",
|
||||
"created_message": "User created successfully",
|
||||
"updated_message": "User updated successfully",
|
||||
"deleted_message": "User deleted successfully | User deleted successfully"
|
||||
"confirm_delete": "Sie werden diesen Benutzer nicht wiederherstellen können | Sie werden nicht in der Lage sein, diese Benutzer wiederherzustellen",
|
||||
"created_message": "Benutzer erfolgreich erstellt",
|
||||
"updated_message": "Benutzer wurde erfolgreich aktualisiert",
|
||||
"deleted_message": "Benutzer erfolgreich gelöscht | Benutzer erfolgreich gelöscht"
|
||||
},
|
||||
"reports": {
|
||||
"title": "Bericht",
|
||||
@ -551,7 +551,7 @@
|
||||
"date_range": "Datumsbereich auswählen"
|
||||
},
|
||||
"sales": {
|
||||
"sales": "Vertrieb",
|
||||
"sales": "Umsatz",
|
||||
"date_range": "Datumsbereich auswählen",
|
||||
"to_date": "bis Datum",
|
||||
"from_date": "Ab Datum",
|
||||
@ -604,10 +604,10 @@
|
||||
"tax_types": "Steuersätze",
|
||||
"expense_category": "Ausgabenkategorien",
|
||||
"update_app": "Applikation aktualisieren",
|
||||
"backup": "Backup",
|
||||
"file_disk": "File Disk",
|
||||
"backup": "Sicherung",
|
||||
"file_disk": "Dateispeicher",
|
||||
"custom_fields": "Benutzerdefinierte Felder",
|
||||
"payment_modes": "Payment Modes",
|
||||
"payment_modes": "Zahlungsarten",
|
||||
"notes": "Hinweise"
|
||||
},
|
||||
"title": "Einstellungen",
|
||||
@ -641,7 +641,7 @@
|
||||
"driver": "E-Mail Treiber",
|
||||
"secret": "Verschlüsselung",
|
||||
"mailgun_secret": "Mailgun Verschlüsselung",
|
||||
"mailgun_domain": "Domain",
|
||||
"mailgun_domain": "Mailgun Adresse",
|
||||
"mailgun_endpoint": "Mailgun-Endpunkt",
|
||||
"ses_secret": "SES Verschlüsselung",
|
||||
"ses_key": "SES-Taste",
|
||||
@ -674,7 +674,7 @@
|
||||
},
|
||||
"custom_fields": {
|
||||
"title": "Benutzerdefinierte Felder",
|
||||
"section_description": "Customize your Invoices, Estimates & Payment Receipts with your own fields. Make sure to use the below added fields on the address formats on Customization settings page.",
|
||||
"section_description": "Passen Sie Ihre Rechnungen, Kostenvoranschläge und Zahlungseinnahmen mit Ihren eigenen Feldern an. Benutzen Sie die unten aufgeführten Felder in den Adressformaten auf der Seite Anpassungseinstellungen.",
|
||||
"add_custom_field": "Benutzerdefiniertes Feld hinzufügen",
|
||||
"edit_custom_field": "Benutzerdefiniertes Feld bearbeiten",
|
||||
"field_name": "Feldname",
|
||||
@ -689,7 +689,7 @@
|
||||
"starting_number": "Startnummer",
|
||||
"model": "Modell",
|
||||
"help_text_description": "Geben Sie einen Text ein, damit Benutzer den Zweck dieses benutzerdefinierten Felds verstehen.",
|
||||
"suffix": "Suffix",
|
||||
"suffix": "Vorzeichen",
|
||||
"yes": "Ja",
|
||||
"no": "Nein",
|
||||
"order": "Auftrag",
|
||||
@ -740,41 +740,41 @@
|
||||
"title": "Rechnungen",
|
||||
"notes": "Hinweise",
|
||||
"invoice_prefix": "Rechnung Präfix",
|
||||
"default_invoice_email_body": "Default Invoice Email Body",
|
||||
"default_invoice_email_body": "Standard Rechnung E-Mail Inhalt",
|
||||
"invoice_settings": "Rechnungseinstellungen",
|
||||
"autogenerate_invoice_number": "Rechnungsnummer automatisch generieren",
|
||||
"invoice_setting_description": "Deaktivieren Sie diese Option, wenn Sie Rechnungsnummern nicht jedes Mal automatisch generieren möchten, wenn Sie eine neue Rechnung erstellen.",
|
||||
"enter_invoice_prefix": "Rechnungspräfix eingeben",
|
||||
"terms_and_conditions": "Allgemeine Geschäftsbedingungen",
|
||||
"company_address_format": "Company Address Format",
|
||||
"shipping_address_format": "Shipping Address Format",
|
||||
"billing_address_format": "Billing Address Format",
|
||||
"company_address_format": "Firmenadressformat",
|
||||
"shipping_address_format": "Versandadressen Format",
|
||||
"billing_address_format": "Rechnungsadressen Format",
|
||||
"invoice_setting_updated": "Rechnungseinstellung erfolgreich aktualisiert"
|
||||
},
|
||||
"estimates": {
|
||||
"title": "Kostenvoranschläge",
|
||||
"estimate_prefix": "Kostenvoranschlag Präfix",
|
||||
"default_estimate_email_body": "Default Estimate Email Body",
|
||||
"default_estimate_email_body": "Rechnung - E-Mail Text",
|
||||
"estimate_settings": "Einstellungen Kostenvoranschlag",
|
||||
"autogenerate_estimate_number": "Kostenvoranschlagsnummer automatisch generieren",
|
||||
"estimate_setting_description": "Deaktivieren Sie diese Option, wenn Sie nicht jedes Mal, wenn Sie einen neue Kostenvoranschlag erstellen, automatisch eine Schätzung generieren möchten.",
|
||||
"enter_estimate_prefix": "Geben Sie das Kostenvoranschlag Präfix ein",
|
||||
"estimate_setting_updated": "Einstellungen Kostenvoranschläge erfolgreich aktualisiert",
|
||||
"company_address_format": "Company Address Format",
|
||||
"billing_address_format": "Billing Address Format",
|
||||
"shipping_address_format": "Shipping Address Format"
|
||||
"company_address_format": "Firmenadresse Format",
|
||||
"billing_address_format": "Rechnungsadressen Format",
|
||||
"shipping_address_format": "Versandadressen Format"
|
||||
},
|
||||
"payments": {
|
||||
"title": "Zahlungen",
|
||||
"description": "Modes of transaction for payments",
|
||||
"payment_prefix": "Zahlung Präfix",
|
||||
"default_payment_email_body": "Default Payment Email Body",
|
||||
"default_payment_email_body": "Zahlung - E-Mail Text",
|
||||
"payment_settings": "Zahlung Einstellungen",
|
||||
"autogenerate_payment_number": "Zahlungsnummer automatisch generieren",
|
||||
"payment_setting_description": "Deaktivieren Sie diese Option, wenn Sie nicht jedes Mal, wenn Sie eine neue Zahlung erstellen, automatisch Zahlungsnummern generieren möchten.",
|
||||
"enter_payment_prefix": "Zahlungspräfix eingeben",
|
||||
"payment_setting_updated": "Zahlungseinstellung erfolgreich aktualisiert",
|
||||
"payment_modes": "Payment Modes",
|
||||
"payment_modes": "Zahlungsarten",
|
||||
"add_payment_mode": "Zahlungsmethode hinzufügen",
|
||||
"edit_payment_mode": "Zahlungsmodus bearbeiten",
|
||||
"mode_name": "Methodenname",
|
||||
@ -783,8 +783,8 @@
|
||||
"payment_mode_confirm_delete": "Du kannst diese Zahlungsmethode nicht wiederherstellen",
|
||||
"already_in_use": "Zahlungsmethode bereits in Verwendung",
|
||||
"deleted_message": "Zahlungsmethode erfolgreich",
|
||||
"company_address_format": "Company Address Format",
|
||||
"from_customer_address_format": "From Customer Address Format"
|
||||
"company_address_format": "Firmenadressformat",
|
||||
"from_customer_address_format": "Rechnungsadressen Format"
|
||||
},
|
||||
"items": {
|
||||
"title": "Artikel",
|
||||
@ -800,18 +800,18 @@
|
||||
},
|
||||
"notes": {
|
||||
"title": "Hinweise",
|
||||
"description": "Save time by creating notes and reusing them on your invoices, estimates & payments.",
|
||||
"description": "Sparen Sie Zeit, indem Sie Notizen erstellen und diese auf Ihren Rechnungen, Kostenvoranschlägen und Zahlungen wiederverwenden.",
|
||||
"notes": "Hinweise",
|
||||
"type": "Art",
|
||||
"add_note": "Add Note",
|
||||
"add_new_note": "Add New Note",
|
||||
"add_note": "Notiz hinzufügen",
|
||||
"add_new_note": "Neue Notiz hinzufügen",
|
||||
"name": "Name",
|
||||
"edit_note": "Edit Note",
|
||||
"note_added": "Note added successfully",
|
||||
"note_updated": "Note Updated successfully",
|
||||
"note_confirm_delete": "You will not be able to recover this Note",
|
||||
"already_in_use": "Note is already in use",
|
||||
"deleted_message": "Note deleted successfully"
|
||||
"edit_note": "Notiz bearbeiten",
|
||||
"note_added": "Notiz erfolgreich hinzugefügt",
|
||||
"note_updated": "Notiz erfolgreich aktualisiert",
|
||||
"note_confirm_delete": "Dieser Hinweis wird unwiderruflich gelöscht",
|
||||
"already_in_use": "Hinweis bereits in verwendet",
|
||||
"deleted_message": "Notiz erfolgreich gelöscht"
|
||||
}
|
||||
},
|
||||
"account_settings": {
|
||||
@ -879,7 +879,7 @@
|
||||
},
|
||||
"preferences": {
|
||||
"currency": "Währung",
|
||||
"default_language": "Default Language",
|
||||
"default_language": "Standardsprache",
|
||||
"time_zone": "Zeitzone",
|
||||
"fiscal_year": "Geschäftsjahr",
|
||||
"date_format": "Datum-Format",
|
||||
@ -892,7 +892,7 @@
|
||||
"updated_message": "Einstellungen erfolgreich aktualisiert",
|
||||
"select_language": "Sprache auswählen",
|
||||
"select_time_zone": "Zeitzone auswählen",
|
||||
"select_date_format": "Select Date Format",
|
||||
"select_date_format": "Wähle das Datumsformat",
|
||||
"select_financial_year": "Geschäftsjahr auswählen"
|
||||
},
|
||||
"update_app": {
|
||||
@ -901,7 +901,7 @@
|
||||
"check_update": "Nach Updates suchen",
|
||||
"avail_update": "Neues Update verfügbar",
|
||||
"next_version": "Nächste Version",
|
||||
"requirements": "Requirements",
|
||||
"requirements": "Voraussetzungen",
|
||||
"update": "Jetzt aktualisieren",
|
||||
"update_progress": "Update läuft ...",
|
||||
"progress_text": "Es dauert nur ein paar Minuten. Bitte aktualisieren Sie den Bildschirm nicht und schließen Sie das Fenster nicht, bevor das Update abgeschlossen ist.",
|
||||
@ -917,39 +917,39 @@
|
||||
"update_failed_text": "Es tut uns leid! Ihr Update ist am folgenden Schritt fehlgeschlagen: {step}"
|
||||
},
|
||||
"backup": {
|
||||
"title": "Backup | Backups",
|
||||
"title": "Sicherung | Sicherungen",
|
||||
"description": "The backup is a zipfile that contains all files in the directories you specify along with a dump of your database",
|
||||
"new_backup": "Add New Backup",
|
||||
"create_backup": "Create Backup",
|
||||
"select_backup_type": "Select Backup Type",
|
||||
"backup_confirm_delete": "You will not be able to recover this Backup",
|
||||
"path": "path",
|
||||
"new_disk": "New Disk",
|
||||
"created_at": "created at",
|
||||
"size": "size",
|
||||
"dropbox": "dropbox",
|
||||
"local": "local",
|
||||
"healthy": "healthy",
|
||||
"amount_of_backups": "amount of backups",
|
||||
"newest_backups": "newest backups",
|
||||
"used_storage": "used storage",
|
||||
"select_disk": "Select Disk",
|
||||
"new_backup": "Neues Backup",
|
||||
"create_backup": "Datensicherung erstellen",
|
||||
"select_backup_type": "Wählen Sie den Sicherungs-Typ",
|
||||
"backup_confirm_delete": "Dieses Backup wird unwiderruflich gelöscht",
|
||||
"path": "Pfad",
|
||||
"new_disk": "Speicher hinzufügen",
|
||||
"created_at": "erstellt am",
|
||||
"size": "Größe",
|
||||
"dropbox": "Dropbox",
|
||||
"local": "Lokal",
|
||||
"healthy": "intakt",
|
||||
"amount_of_backups": "Menge an Sicherungen",
|
||||
"newest_backups": "Neuste Sicherung",
|
||||
"used_storage": "Verwendeter Speicher",
|
||||
"select_disk": "Speicher auswählen",
|
||||
"action": "Aktion",
|
||||
"deleted_message": "Backup deleted successfully",
|
||||
"created_message": "Backup created successfully",
|
||||
"invalid_disk_credentials": "Invalid credential of selected disk"
|
||||
"deleted_message": "Sicherung erfolgreich gelöscht",
|
||||
"created_message": "Backup erfolgreich erstellt",
|
||||
"invalid_disk_credentials": "Ungültige Anmeldeinformationen für ausgewählten Speicher"
|
||||
},
|
||||
"disk": {
|
||||
"title": "File Disk | File Disks",
|
||||
"description": "By default, Crater will use your local disk for saving backups, avatar and other image files. You can configure more than one disk drivers like DigitalOcean, S3 and Dropbox according to your preference.",
|
||||
"created_at": "created at",
|
||||
"dropbox": "dropbox",
|
||||
"title": "Dateispeicher | Dateispeicher",
|
||||
"description": "Standardmäßig verwendet Crater Ihre lokale Festplatte zum Speichern von Sicherungen, Avatar und anderen Bilddateien. Sie können mehr als einen Speicherort wie DigitalOcean, S3 und Dropbox nach Ihren Wünschen konfigurieren.",
|
||||
"created_at": "erstellt am",
|
||||
"dropbox": "Dropbox",
|
||||
"name": "Name",
|
||||
"driver": "Driver",
|
||||
"driver": "Treiber",
|
||||
"disk_type": "Art",
|
||||
"disk_name": "Disk Name",
|
||||
"new_disk": "Add New Disk",
|
||||
"filesystem_driver": "Filesystem Driver",
|
||||
"disk_name": "Speicher Bezeichnung",
|
||||
"new_disk": "Speicher hinzufügen",
|
||||
"filesystem_driver": "Dateisystem-Treiber",
|
||||
"local_driver": "local Driver",
|
||||
"local_root": "local Root",
|
||||
"public_driver": "Public Driver",
|
||||
@ -977,25 +977,24 @@
|
||||
"dropbox_secret": "Dropbox Secret",
|
||||
"dropbox_app": "Dropbox App",
|
||||
"dropbox_root": "Dropbox Root",
|
||||
"default_driver": "Default Driver",
|
||||
"is_default": "IS DEFAULT",
|
||||
"set_default_disk": "Set Default Disk",
|
||||
"set_default_disk_confirm": "This disk will be set as default and all the new PDFs will be saved on this disk",
|
||||
"success_set_default_disk": "Disk set as default successfully",
|
||||
"save_pdf_to_disk": "Save PDFs to Disk",
|
||||
"disk_setting_description": " Enable this, if you wish to save a copy of each Invoice, Estimate & Payment Receipt PDF on your default disk automatically. Turning this option will decrease the load-time when viewing the PDFs.",
|
||||
"select_disk": "Select Disk",
|
||||
"default_driver": "Standard-Treiber",
|
||||
"is_default": "Standard",
|
||||
"set_default_disk": "Als Standard festlegen",
|
||||
"success_set_default_disk": "Speicher wurde als Standard festgelegt",
|
||||
"save_pdf_to_disk": "PDFs auf Festplatte speichern",
|
||||
"disk_setting_description": " Aktivieren Sie dies, um eine Kopie von jeder Rechnung, jedem Kostenvoranschlag & jedem Zahlungsbelegung als PDF automatisch auf ihrem Standard-Speicher abzulegen. Wenn Sie diese Option aktivieren, verringert sich die Ladezeit beim Betrachten der PDFs.",
|
||||
"select_disk": "Speicherort auswählen",
|
||||
"disk_settings": "Disk Settings",
|
||||
"confirm_delete": "Your existing files & folders in the specified disk will not be affected but your disk configuration will be deleted from Crater",
|
||||
"confirm_delete": "Ihre existierenden Dateien und Ordner auf der angegebenen Festplatte werden nicht beeinflusst, aber Dieser Speicherort wird aus Crater gelöscht",
|
||||
"action": "Aktion",
|
||||
"edit_file_disk": "Edit File Disk",
|
||||
"success_create": "Disk added successfully",
|
||||
"success_update": "Disk updated successfully",
|
||||
"error": "Disk addition failed",
|
||||
"deleted_message": "File Disk deleted successfully",
|
||||
"disk_variables_save_successfully": "Disk Configured Successfully",
|
||||
"disk_variables_save_error": "Disk configuration failed.",
|
||||
"invalid_disk_credentials": "Invalid credential of selected disk"
|
||||
"success_create": "Speicher erfolgreich hinzugefügt",
|
||||
"success_update": "Speicher erfolgreich bearbeitet",
|
||||
"error": "Hinzufügen des Speichers gescheitert",
|
||||
"deleted_message": "Speicher erfolgreich gelöscht",
|
||||
"disk_variables_save_successfully": "Speicher erfolgreich konfiguriert",
|
||||
"disk_variables_save_error": "Konfiguration des Speicher gescheitert",
|
||||
"invalid_disk_credentials": "Ungültige Anmeldeinformationen für ausgewählten Speicher"
|
||||
}
|
||||
},
|
||||
"wizard": {
|
||||
@ -1026,9 +1025,9 @@
|
||||
"time_zone": "Zeitzone",
|
||||
"fiscal_year": "Geschäftsjahr",
|
||||
"date_format": "Datumsformat",
|
||||
"from_address": "From Address",
|
||||
"from_address": "Absender",
|
||||
"username": "Benutzername",
|
||||
"next": "Next",
|
||||
"next": "Weiter",
|
||||
"continue": "Weiter",
|
||||
"skip": "Überspringen",
|
||||
"database": {
|
||||
@ -1130,42 +1129,42 @@
|
||||
"address_maxlength": "Die Adresse sollte nicht länger als 255 Zeichen sein.",
|
||||
"ref_number_maxlength": "Ref Number sollte nicht länger als 255 Zeichen sein.",
|
||||
"prefix_maxlength": "Das Präfix sollte nicht länger als 5 Zeichen sein.",
|
||||
"something_went_wrong": "Etwas ist falsch gelaufen"
|
||||
"something_went_wrong": "Da ist etwas schief gelaufen"
|
||||
},
|
||||
"pdf_estimate_label": "Kostenvoranschlag",
|
||||
"pdf_estimate_number": "Kostenvoran. Nummer",
|
||||
"pdf_estimate_date": "Datum Kostenvoranschlag",
|
||||
"pdf_estimate_expire_date": "Expiry date",
|
||||
"pdf_estimate_expire_date": "Ablaufdatum",
|
||||
"pdf_invoice_label": "Rechnung",
|
||||
"pdf_invoice_number": "Rechnungsnummer",
|
||||
"pdf_invoice_date": "Rechnungsdatum",
|
||||
"pdf_invoice_due_date": "Due date",
|
||||
"pdf_invoice_due_date": "Fälligkeitsdatum",
|
||||
"pdf_notes": "Hinweise",
|
||||
"pdf_items_label": "Artikel",
|
||||
"pdf_quantity_label": "Menge",
|
||||
"pdf_price_label": "Preis",
|
||||
"pdf_discount_label": "Rabatt",
|
||||
"pdf_amount_label": "Summe",
|
||||
"pdf_subtotal": "Subtotal",
|
||||
"pdf_subtotal": "Zwischensumme",
|
||||
"pdf_total": "Gesamt",
|
||||
"pdf_payment_receipt_label": "PAYMENT RECEIPT",
|
||||
"pdf_payment_date": "Payment Date",
|
||||
"pdf_payment_receipt_label": "Zahlungsbeleg",
|
||||
"pdf_payment_date": "Zahlungsdatum",
|
||||
"pdf_payment_number": "Zahlungsnummer",
|
||||
"pdf_payment_mode": "Zahlungsart",
|
||||
"pdf_payment_amount_received_label": "Amount Received",
|
||||
"pdf_expense_report_label": "EXPENSES REPORT",
|
||||
"pdf_total_expenses_label": "TOTAL EXPENSE",
|
||||
"pdf_profit_loss_label": "PROFIT & LOSS REPORT",
|
||||
"pdf_income_label": "INCOME",
|
||||
"pdf_net_profit_label": "NET PROFIT",
|
||||
"pdf_customer_sales_report": "Sales Report: By Customer",
|
||||
"pdf_total_sales_label": "TOTAL SALES",
|
||||
"pdf_item_sales_label": "Sales Report: By Item",
|
||||
"pdf_tax_report_label": "TAX REPORT",
|
||||
"pdf_total_tax_label": "TOTAL TAX",
|
||||
"pdf_expense_report_label": "Ausgaben Bericht",
|
||||
"pdf_total_expenses_label": "Gesamtausgaben",
|
||||
"pdf_profit_loss_label": "Gewinn & Verlust Bericht",
|
||||
"pdf_income_label": "Einkommen",
|
||||
"pdf_net_profit_label": "Nettogewinn",
|
||||
"pdf_customer_sales_report": "Umsatzbericht: Nach Kunde",
|
||||
"pdf_total_sales_label": "GESAMTUMSATZ",
|
||||
"pdf_item_sales_label": "Umsatzbericht: Nach Artikel",
|
||||
"pdf_tax_report_label": "Umsatzsteuer BERICHT",
|
||||
"pdf_total_tax_label": "Gesamte Umsatzsteuer",
|
||||
"pdf_tax_types_label": "Steuersätze",
|
||||
"pdf_expenses_label": "Gesamtausgaben",
|
||||
"pdf_bill_to": "Rechnungsempfänger,",
|
||||
"pdf_ship_to": "Versand ein,",
|
||||
"pdf_received_from": "Received from:"
|
||||
"pdf_ship_to": "Versand an,",
|
||||
"pdf_received_from": "Erhalten von:"
|
||||
}
|
||||
|
||||
@ -912,6 +912,7 @@
|
||||
"download_zip_file": "Download ZIP file",
|
||||
"unzipping_package": "Unzipping Package",
|
||||
"copying_files": "Copying Files",
|
||||
"deleting_files": "Deleting Unused files",
|
||||
"running_migrations": "Running Migrations",
|
||||
"finishing_update": "Finishing Update",
|
||||
"update_failed": "Update Failed",
|
||||
@ -1123,11 +1124,11 @@
|
||||
"price_minvalue": "Price should be greater than 0.",
|
||||
"amount_maxlength": "Amount should not be greater than 20 digits.",
|
||||
"amount_minvalue": "Amount should be greater than 0.",
|
||||
"description_maxlength": "Description should not be greater than 255 characters.",
|
||||
"description_maxlength": "Description should not be greater than 65,000 characters.",
|
||||
"subject_maxlength": "Subject should not be greater than 100 characters.",
|
||||
"message_maxlength": "Message should not be greater than 255 characters.",
|
||||
"maximum_options_error": "Maximum of {max} options selected. First remove a selected option to select another.",
|
||||
"notes_maxlength": "Notes should not be greater than 255 characters.",
|
||||
"notes_maxlength": "Notes should not be greater than 65,000 characters.",
|
||||
"address_maxlength": "Address should not be greater than 255 characters.",
|
||||
"ref_number_maxlength": "Ref Number should not be greater than 255 characters.",
|
||||
"prefix_maxlength": "Prefix should not be greater than 5 characters.",
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
"general": {
|
||||
"add_company": "Add Company",
|
||||
"view_pdf": "Ver PDF",
|
||||
"copy_pdf_url": "Copiar URL del PDF",
|
||||
"copy_pdf_url": "Copy PDF Url",
|
||||
"download_pdf": "Descargar PDF",
|
||||
"save": "Guardar",
|
||||
"create": "Create",
|
||||
@ -339,7 +339,7 @@
|
||||
"notes": "Notas",
|
||||
"view": "Ver",
|
||||
"send_invoice": "Enviar la factura",
|
||||
"resend_invoice": "Reenviar la factura",
|
||||
"resend_invoice": "Resend Invoice",
|
||||
"invoice_template": "Plantilla de factura",
|
||||
"template": "Modelo",
|
||||
"mark_as_sent": "Marcar como enviada",
|
||||
@ -980,7 +980,6 @@
|
||||
"default_driver": "Default Driver",
|
||||
"is_default": "IS DEFAULT",
|
||||
"set_default_disk": "Set Default Disk",
|
||||
"set_default_disk_confirm": "This disk will be set as default and all the new PDFs will be saved on this disk",
|
||||
"success_set_default_disk": "Disk set as default successfully",
|
||||
"save_pdf_to_disk": "Save PDFs to Disk",
|
||||
"disk_setting_description": " Enable this, if you wish to save a copy of each Invoice, Estimate & Payment Receipt PDF on your default disk automatically. Turning this option will decrease the load-time when viewing the PDFs.",
|
||||
|
||||
@ -153,8 +153,8 @@
|
||||
"address": "Adresse",
|
||||
"phone": "Téléphone",
|
||||
"website": "Site Internet",
|
||||
"overview": "Overview",
|
||||
"enable_portal": "Enable Portal",
|
||||
"overview": "Aperçu",
|
||||
"enable_portal": "Activer le portail",
|
||||
"country": "Pays",
|
||||
"state": "Etat",
|
||||
"city": "Ville",
|
||||
@ -253,7 +253,7 @@
|
||||
"convert_to_invoice": "Convertir en facture",
|
||||
"mark_as_sent": "Marquer comme envoyé",
|
||||
"send_estimate": "Envoyer un devis",
|
||||
"resend_estimate": "Resend Estimate",
|
||||
"resend_estimate": "Renvoyer le devis",
|
||||
"record_payment": "Enregistrer un paiement",
|
||||
"add_estimate": "Ajouter un devis",
|
||||
"save_estimate": "Sauvegarder le devis",
|
||||
@ -339,7 +339,7 @@
|
||||
"notes": "Remarques",
|
||||
"view": "Voir",
|
||||
"send_invoice": "Envoyer une facture",
|
||||
"resend_invoice": "Resend Invoice",
|
||||
"resend_invoice": "Renvoyer la facture",
|
||||
"invoice_template": "Modèle de facture",
|
||||
"template": "Modèle",
|
||||
"mark_as_sent": "Marquer comme envoyé",
|
||||
@ -679,7 +679,7 @@
|
||||
"edit_custom_field": "Modifier un champ personnalisé",
|
||||
"field_name": "Nom de domaine",
|
||||
"label": "Étiquette",
|
||||
"type": "Type",
|
||||
"type": "Type ",
|
||||
"name": "Nom",
|
||||
"required": "Obligatoire",
|
||||
"placeholder": "Espace réservé",
|
||||
@ -713,7 +713,7 @@
|
||||
"save": "Sauvegarder",
|
||||
"addresses": {
|
||||
"title": "Adresses",
|
||||
"section_description": "You can set Customer Billing Address and Customer Shipping Address Format (Displayed in PDF only). ",
|
||||
"section_description": "Vous pouvez définir le format de l'adresse de facturation et de livraison du client (affiché en PDF uniquement). ",
|
||||
"customer_billing_address": "Adresse de paiement",
|
||||
"customer_shipping_address": "Adresse de livraison",
|
||||
"company_address": "Adresse de l'entreprise",
|
||||
@ -722,7 +722,7 @@
|
||||
"address": "Addresse",
|
||||
"display_name": "Nom",
|
||||
"primary_contact_name": "Nom du contact principal",
|
||||
"email": "Email",
|
||||
"email": "Adresse email",
|
||||
"website": "Site Internet",
|
||||
"name": "Nom",
|
||||
"country": "Pays",
|
||||
@ -758,7 +758,7 @@
|
||||
"estimate_settings": "Paramètre",
|
||||
"autogenerate_estimate_number": "Générer automatiquement le numéro de devis",
|
||||
"estimate_setting_description": "Désactivez cette option si vous ne souhaitez pas générer automatiquement les numéros de devis à chaque fois que vous en créez un nouveau.",
|
||||
"enter_estimate_prefix": "Enter estmiate prefix",
|
||||
"enter_estimate_prefix": "Entrez le préfixe d'estimation",
|
||||
"estimate_setting_updated": "Paramètres de devis mis à jour",
|
||||
"company_address_format": "Format d'adresse de l'entreprise",
|
||||
"billing_address_format": "Format d'adresse de facturation",
|
||||
@ -802,7 +802,7 @@
|
||||
"title": "Remarques",
|
||||
"description": "Gagnez du temps en créant des notes et en les réutilisant sur vos factures, devis et paiements.",
|
||||
"notes": "Remarques",
|
||||
"type": "Type",
|
||||
"type": "Type ",
|
||||
"add_note": "Ajouter une note",
|
||||
"add_new_note": "Ajouter une nouvelle note",
|
||||
"name": "Nom",
|
||||
@ -817,7 +817,7 @@
|
||||
"account_settings": {
|
||||
"profile_picture": "Image de profil",
|
||||
"name": "Nom",
|
||||
"email": "Email",
|
||||
"email": "Adresse email",
|
||||
"password": "Mot de passe",
|
||||
"confirm_password": "Confirmez le mot de passe",
|
||||
"account_settings": "Paramètres du compte",
|
||||
@ -827,7 +827,7 @@
|
||||
},
|
||||
"user_profile": {
|
||||
"name": "Nom",
|
||||
"email": "Email",
|
||||
"email": "Adresse email",
|
||||
"password": "Mot de passe",
|
||||
"confirm_password": "Confirmez le mot de passe"
|
||||
},
|
||||
@ -892,7 +892,7 @@
|
||||
"updated_message": "Préférences mises à jour avec succès",
|
||||
"select_language": "Choisir la langue",
|
||||
"select_time_zone": "sélectionnez le fuseau horaire",
|
||||
"select_date_format": "Select Date Format",
|
||||
"select_date_format": "Sélectionnez le format de date",
|
||||
"select_financial_year": "sélectionner lexercice"
|
||||
},
|
||||
"update_app": {
|
||||
@ -901,7 +901,7 @@
|
||||
"check_update": "Vérifier les mises à jour",
|
||||
"avail_update": "Nouvelle mise à jour disponible",
|
||||
"next_version": "Version suivante",
|
||||
"requirements": "Requirements",
|
||||
"requirements": "Exigences",
|
||||
"update": "Mettre à jour maintenant",
|
||||
"update_progress": "Mise à jour en cours...",
|
||||
"progress_text": "Cela ne prendra que quelques minutes. S'il vous plaît ne pas actualiser l'écran ou fermer la fenêtre avant la fin de la mise à jour",
|
||||
@ -980,7 +980,6 @@
|
||||
"default_driver": "Pilote par défaut",
|
||||
"is_default": "EST PAR DÉFAUT",
|
||||
"set_default_disk": "Définir le disque par défaut",
|
||||
"set_default_disk_confirm": "This disk will be set as default and all the new PDFs will be saved on this disk",
|
||||
"success_set_default_disk": "Disk set as default successfully",
|
||||
"save_pdf_to_disk": "Enregistrer les PDF sur le disque",
|
||||
"disk_setting_description": "Activez cette option si vous souhaitez enregistrer automatiquement une copie de chaque facture, devis et reçu de paiement PDF sur votre disque par défaut. L'activation de cette option réduira le temps de chargement lors de l'affichage des PDF.",
|
||||
@ -1079,7 +1078,7 @@
|
||||
"database_variables_save_error": "Impossible de se connecter à la base de données avec les valeurs fournies.",
|
||||
"mail_variables_save_error": "La configuration du courrier électronique a échoué.",
|
||||
"connection_failed": "La connexion à la base de données a échoué",
|
||||
"database_should_be_empty": "Database should be empty"
|
||||
"database_should_be_empty": "La base de données devrait être vide"
|
||||
},
|
||||
"success": {
|
||||
"mail_variables_save_successfully": "Email configuré avec succès",
|
||||
|
||||
@ -7,8 +7,10 @@ import ar from './ar.json'
|
||||
import de from './de.json'
|
||||
import pt_BR from './pt-br.json'
|
||||
import it from './it.json'
|
||||
import sr_LA from './sr-latn.json'
|
||||
import sr from './sr.json'
|
||||
import nl from './nl.json'
|
||||
import lv from './lv.json'
|
||||
import sv from './sv.json'
|
||||
|
||||
Vue.use(VueI18n)
|
||||
|
||||
@ -22,8 +24,10 @@ const i18n = new VueI18n({
|
||||
de,
|
||||
pt_BR,
|
||||
it,
|
||||
sr_LA,
|
||||
sr,
|
||||
nl,
|
||||
lv,
|
||||
sv,
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
@ -980,7 +980,6 @@
|
||||
"default_driver": "Default Driver",
|
||||
"is_default": "IS DEFAULT",
|
||||
"set_default_disk": "Set Default Disk",
|
||||
"set_default_disk_confirm": "This disk will be set as default and all the new PDFs will be saved on this disk",
|
||||
"success_set_default_disk": "Disk set as default successfully",
|
||||
"save_pdf_to_disk": "Save PDFs to Disk",
|
||||
"disk_setting_description": " Enable this, if you wish to save a copy of each Invoice, Estimate & Payment Receipt PDF on your default disk automatically. Turning this option will decrease the load-time when viewing the PDFs.",
|
||||
|
||||
1170
resources/assets/js/plugins/lv.json
Normal file
1170
resources/assets/js/plugins/lv.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
{
|
||||
"navigation": {
|
||||
"dashboard": "Dashboard",
|
||||
"dashboard": "Overzicht",
|
||||
"customers": "Klanten",
|
||||
"items": "Artikelen",
|
||||
"invoices": "Facturen",
|
||||
@ -10,15 +10,15 @@
|
||||
"reports": "Rapporten",
|
||||
"settings": "Instellingen",
|
||||
"logout": "Uitloggen",
|
||||
"users": "Users"
|
||||
"users": "Gebruikers"
|
||||
},
|
||||
"general": {
|
||||
"add_company": "Add Company",
|
||||
"add_company": "Bedrijf toevoegen",
|
||||
"view_pdf": "Bekijk PDF",
|
||||
"copy_pdf_url": "Kopieer PDF-URL",
|
||||
"download_pdf": "Download PDF",
|
||||
"save": "Opslaan",
|
||||
"create": "Create",
|
||||
"create": "Maak",
|
||||
"cancel": "annuleren",
|
||||
"update": "Bijwerken",
|
||||
"deselect": "Maak de selectie ongedaan",
|
||||
@ -31,9 +31,9 @@
|
||||
"ascending": "Oplopend",
|
||||
"descending": "Aflopend",
|
||||
"subject": "Onderwerpen",
|
||||
"body": "Body",
|
||||
"body": "Inhoud",
|
||||
"message": "Bericht",
|
||||
"send": "Send",
|
||||
"send": "Verstuur",
|
||||
"go_back": "Ga terug",
|
||||
"back_to_login": "Terug naar Inloggen?",
|
||||
"home": "Home",
|
||||
@ -84,9 +84,9 @@
|
||||
"street_2": "Straat # 2",
|
||||
"action_failed": "Actie: mislukt",
|
||||
"retry": "Retr",
|
||||
"choose_note": "Choose Note",
|
||||
"no_note_found": "No Note Found",
|
||||
"insert_note": "Insert Note"
|
||||
"choose_note": "Kies notitie",
|
||||
"no_note_found": "Geen notitie gevonden",
|
||||
"insert_note": "Notitie invoegen"
|
||||
},
|
||||
"dashboard": {
|
||||
"select_year": "Selecteer jaar",
|
||||
@ -133,10 +133,10 @@
|
||||
"compound_tax": "Verbinding Ta"
|
||||
},
|
||||
"global_search": {
|
||||
"search": "Search...",
|
||||
"search": "Zoeken...",
|
||||
"customers": "Klanten",
|
||||
"users": "Users",
|
||||
"no_results_found": "No Results Found"
|
||||
"users": "Gebruikers",
|
||||
"no_results_found": "Geen zoekresultaten"
|
||||
},
|
||||
"customers": {
|
||||
"title": "Klanten",
|
||||
@ -144,7 +144,7 @@
|
||||
"contacts_list": "Klantenlijst",
|
||||
"name": "Naam",
|
||||
"mail": "Mail | Mails",
|
||||
"statement": "Statement",
|
||||
"statement": "Verklaring",
|
||||
"display_name": "Weergavenaam",
|
||||
"primary_contact_name": "Naam primaire contactpersoon",
|
||||
"contact_name": "Contactnaam",
|
||||
@ -153,8 +153,8 @@
|
||||
"address": "Adres",
|
||||
"phone": "Telefoon",
|
||||
"website": "Website",
|
||||
"overview": "Overview",
|
||||
"enable_portal": "Enable Portal",
|
||||
"overview": "Overzicht",
|
||||
"enable_portal": "Activeer Portaal",
|
||||
"country": "Land",
|
||||
"state": "Provincie",
|
||||
"city": "Stad",
|
||||
@ -182,10 +182,10 @@
|
||||
"select_currency": "Selecteer valuta",
|
||||
"select_a_customer": "Selecteer een klant",
|
||||
"type_or_click": "Typ of klik om te selecteren",
|
||||
"new_transaction": "New Transaction",
|
||||
"no_matching_customers": "There are no matching customers!",
|
||||
"phone_number": "Phone Number",
|
||||
"create_date": "Create Date",
|
||||
"new_transaction": "Nieuwe transactie",
|
||||
"no_matching_customers": "Er zijn geen overeenkomende klanten!",
|
||||
"phone_number": "Telefoonnummer",
|
||||
"create_date": "Aangemaakt op",
|
||||
"confirm_delete": "U kunt deze klant en alle gerelateerde facturen, offertes en betalingen niet terugkrijgen. | U zult deze klanten en alle gerelateerde facturen, offertes en betalingen niet kunnen terugkrijgen.",
|
||||
"created_message": "Klant succesvol aangemaakt",
|
||||
"updated_message": "Klant succesvol geüpdatet",
|
||||
@ -429,7 +429,7 @@
|
||||
"view_payment": "Bekijk betaling",
|
||||
"add_new_payment": "Nieuwe betaling toevoegen",
|
||||
"send_payment_receipt": "Betaalbewijs verzenden",
|
||||
"send_payment": "Send Payment",
|
||||
"send_payment": "Verstuur betaling",
|
||||
"save_payment": "Betaling opslaan",
|
||||
"update_payment": "Betaling bijwerken",
|
||||
"payment": "Betaling | Betalingen",
|
||||
@ -508,30 +508,30 @@
|
||||
"login_placeholder": "mail@voorbeeld.co"
|
||||
},
|
||||
"users": {
|
||||
"title": "Users",
|
||||
"users_list": "Users List",
|
||||
"title": "Gebruikers",
|
||||
"users_list": "Gebruikerslijst",
|
||||
"name": "Naam",
|
||||
"description": "Omschrijving",
|
||||
"added_on": "Toegevoegd",
|
||||
"date_of_creation": "Datum van creatie",
|
||||
"action": "Actie",
|
||||
"add_user": "Add User",
|
||||
"save_user": "Save User",
|
||||
"update_user": "Update User",
|
||||
"user": "User | Users",
|
||||
"add_new_user": "Add New User",
|
||||
"new_user": "New User",
|
||||
"edit_user": "Edit User",
|
||||
"no_users": "No users yet!",
|
||||
"list_of_users": "This section will contain the list of users.",
|
||||
"add_user": "Gebruiker toevoegen",
|
||||
"save_user": "Gebruiker opslaan",
|
||||
"update_user": "Gebruiker bijwerken",
|
||||
"user": "Gebruiker | Gebruikers",
|
||||
"add_new_user": "Nieuwe gebruiker toevoegen",
|
||||
"new_user": "Nieuwe gebruiker",
|
||||
"edit_user": "Gebruiker bewerken",
|
||||
"no_users": "Nog geen gebruikers!",
|
||||
"list_of_users": "Deze sectie zal de lijst met gebruikers bevatten.",
|
||||
"email": "E-mail",
|
||||
"phone": "Telefoon",
|
||||
"password": "Wachtwoord",
|
||||
"user_attached_message": "Kan een item dat al in gebruik is niet verwijderen",
|
||||
"confirm_delete": "You will not be able to recover this User | You will not be able to recover these Users",
|
||||
"created_message": "User created successfully",
|
||||
"updated_message": "User updated successfully",
|
||||
"deleted_message": "User deleted successfully | User deleted successfully"
|
||||
"confirm_delete": "Je kunt deze gebruiker later niet herstellen | Je kunt deze gebruikers later niet herstellen",
|
||||
"created_message": "Gebruiker succesvol aangemaakt",
|
||||
"updated_message": "Gebruiker met succes bijgewerkt",
|
||||
"deleted_message": "Gebruiker succesvol verwijderd | Gebruikers succesvol verwijderd"
|
||||
},
|
||||
"reports": {
|
||||
"title": "Verslag doen van",
|
||||
@ -604,10 +604,10 @@
|
||||
"tax_types": "Belastingtypen",
|
||||
"expense_category": "Onkostencategorieën",
|
||||
"update_app": "App bijwerken",
|
||||
"backup": "Backup",
|
||||
"file_disk": "File Disk",
|
||||
"backup": "Back-up",
|
||||
"file_disk": "Bestandsopslag",
|
||||
"custom_fields": "Custom Fields",
|
||||
"payment_modes": "Payment Modes",
|
||||
"payment_modes": "Betaalmethodes",
|
||||
"notes": "Opmerkingen"
|
||||
},
|
||||
"title": "Instellingen",
|
||||
@ -636,7 +636,7 @@
|
||||
"add_currency": "Valuta toevoegen"
|
||||
},
|
||||
"mail": {
|
||||
"host": "Mail Host",
|
||||
"host": "Mail host",
|
||||
"port": "Mail Port",
|
||||
"driver": "Mail-stuurprogramma",
|
||||
"secret": "Geheim",
|
||||
@ -668,45 +668,45 @@
|
||||
"state": "Provincie",
|
||||
"city": "Stad",
|
||||
"address": "Adres",
|
||||
"zip": "Zip",
|
||||
"zip": "Postcode",
|
||||
"save": "Opslaan",
|
||||
"updated_message": "Bedrijfsinformatie succesvol bijgewerkt"
|
||||
},
|
||||
"custom_fields": {
|
||||
"title": "Custom Fields",
|
||||
"section_description": "Customize your Invoices, Estimates & Payment Receipts with your own fields. Make sure to use the below added fields on the address formats on Customization settings page.",
|
||||
"add_custom_field": "Add Custom Field",
|
||||
"edit_custom_field": "Edit Custom Field",
|
||||
"field_name": "Field Name",
|
||||
"title": "Aangepaste velden",
|
||||
"section_description": "Uw facturen, offertes & betalingsbewijzen aanpassen met uw eigen velden. Gebruik onderstaande velden op het adres format op de Customization instellings pagina.",
|
||||
"add_custom_field": "Extra veld toevoegen",
|
||||
"edit_custom_field": "Veld wijzigen",
|
||||
"field_name": "Veld naam",
|
||||
"label": "Label",
|
||||
"type": "Type",
|
||||
"name": "Naam",
|
||||
"required": "Required",
|
||||
"placeholder": "Placeholder",
|
||||
"help_text": "Help Text",
|
||||
"default_value": "Default Value",
|
||||
"prefix": "Prefix",
|
||||
"required": "Verplicht",
|
||||
"placeholder": "Tijdelijke plaatshouder",
|
||||
"help_text": "Hulp Text",
|
||||
"default_value": "Standaard waarde",
|
||||
"prefix": "Voorvoegsel",
|
||||
"starting_number": "Starting Number",
|
||||
"model": "Model",
|
||||
"help_text_description": "Enter some text to help users understand the purpose of this custom field.",
|
||||
"suffix": "Suffix",
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"order": "Order",
|
||||
"custom_field_confirm_delete": "You will not be able to recover this Custom Field",
|
||||
"already_in_use": "Custom Field is already in use",
|
||||
"deleted_message": "Custom Field deleted successfully",
|
||||
"options": "options",
|
||||
"add_option": "Add Options",
|
||||
"add_another_option": "Add another option",
|
||||
"sort_in_alphabetical_order": "Sort in Alphabetical Order",
|
||||
"add_options_in_bulk": "Add options in bulk",
|
||||
"use_predefined_options": "Use Predefined Options",
|
||||
"select_custom_date": "Select Custom Date",
|
||||
"select_relative_date": "Select Relative Date",
|
||||
"ticked_by_default": "Ticked by default",
|
||||
"updated_message": "Custom Field updated successfully",
|
||||
"added_message": "Custom Field added successfully"
|
||||
"help_text_description": "Voer tekst in om gebruikers te helpen het doel van dit aangepaste veld te begrijpen.",
|
||||
"suffix": "Achtervoegsel",
|
||||
"yes": "Ja",
|
||||
"no": "Nee",
|
||||
"order": "Volgorde",
|
||||
"custom_field_confirm_delete": "U kunt dit veld niet herstellen",
|
||||
"already_in_use": "Aangepast veld is al in gebruik",
|
||||
"deleted_message": "Aangepast veld is succesvol verwijderd",
|
||||
"options": "opties",
|
||||
"add_option": "Optie toevoegen",
|
||||
"add_another_option": "Nog een optie toevoegen",
|
||||
"sort_in_alphabetical_order": "Sorteer op alfabetische volgorde",
|
||||
"add_options_in_bulk": "Voeg opties toe in bulk",
|
||||
"use_predefined_options": "Gebruik voorgedefinieerde opties",
|
||||
"select_custom_date": "Selecteer een aangepaste datum",
|
||||
"select_relative_date": "Selecteer relatieve datum",
|
||||
"ticked_by_default": "Standaard aangevinkt",
|
||||
"updated_message": "Aangepast veld is succesvol aangepast",
|
||||
"added_message": "Aangepast veld is succesvol toegevoegd"
|
||||
},
|
||||
"customization": {
|
||||
"customization": "aanpassen",
|
||||
@ -740,28 +740,28 @@
|
||||
"title": "Facturen",
|
||||
"notes": "Opmerkingen",
|
||||
"invoice_prefix": "Factuurvoorvoegsel",
|
||||
"default_invoice_email_body": "Default Invoice Email Body",
|
||||
"default_invoice_email_body": "Standaard factuur email text",
|
||||
"invoice_settings": "Factuurinstellingen",
|
||||
"autogenerate_invoice_number": "Factuurnummer automatisch genereren",
|
||||
"invoice_setting_description": "Schakel dit uit als u niet automatisch factuurnummers wilt genereren telkens wanneer u een nieuwe factuur maakt.",
|
||||
"enter_invoice_prefix": "Voer het factuurvoorvoegsel in",
|
||||
"terms_and_conditions": "Voorwaarden",
|
||||
"company_address_format": "Company Address Format",
|
||||
"shipping_address_format": "Shipping Address Format",
|
||||
"billing_address_format": "Billing Address Format",
|
||||
"company_address_format": "Bedrijfsadres format",
|
||||
"shipping_address_format": "Verzendadres format",
|
||||
"billing_address_format": "Factuuradres format",
|
||||
"invoice_setting_updated": "Factuurinstelling succesvol bijgewerkt"
|
||||
},
|
||||
"estimates": {
|
||||
"title": "Offertes",
|
||||
"estimate_prefix": "Voorvoegsel schatten",
|
||||
"default_estimate_email_body": "Default Estimate Email Body",
|
||||
"default_estimate_email_body": "Standaard offerte email text",
|
||||
"estimate_settings": "Instellingen schatten",
|
||||
"autogenerate_estimate_number": "Automatisch geschat nummer genereren",
|
||||
"estimate_setting_description": "Schakel dit uit als u niet automatisch offertesaantallen wilt genereren telkens wanneer u een nieuwe offerte maakt.",
|
||||
"enter_estimate_prefix": "Voer het prefixnummer in",
|
||||
"estimate_setting_updated": "Instelling Offerte succesvol bijgewerkt",
|
||||
"company_address_format": "Company Address Format",
|
||||
"billing_address_format": "Billing Address Format",
|
||||
"company_address_format": "Bedrijfsadres format",
|
||||
"billing_address_format": "Factuuradres Format",
|
||||
"shipping_address_format": "Shipping Address Format"
|
||||
},
|
||||
"payments": {
|
||||
@ -923,29 +923,29 @@
|
||||
"create_backup": "Create Backup",
|
||||
"select_backup_type": "Select Backup Type",
|
||||
"backup_confirm_delete": "You will not be able to recover this Backup",
|
||||
"path": "path",
|
||||
"new_disk": "New Disk",
|
||||
"created_at": "created at",
|
||||
"size": "size",
|
||||
"path": "pad",
|
||||
"new_disk": "Nieuwe schijf",
|
||||
"created_at": "aangemaakt op",
|
||||
"size": "grootte",
|
||||
"dropbox": "dropbox",
|
||||
"local": "local",
|
||||
"healthy": "healthy",
|
||||
"amount_of_backups": "amount of backups",
|
||||
"newest_backups": "newest backups",
|
||||
"used_storage": "used storage",
|
||||
"select_disk": "Select Disk",
|
||||
"local": "lokaal",
|
||||
"healthy": "gezond",
|
||||
"amount_of_backups": "aantal back-ups",
|
||||
"newest_backups": "nieuwste back-ups",
|
||||
"used_storage": "gebruikte opslag",
|
||||
"select_disk": "Selecteer Disk",
|
||||
"action": "Actie",
|
||||
"deleted_message": "Backup deleted successfully",
|
||||
"created_message": "Backup created successfully",
|
||||
"invalid_disk_credentials": "Invalid credential of selected disk"
|
||||
"invalid_disk_credentials": "Ongeldige inloggegevens voor geselecteerde schijf"
|
||||
},
|
||||
"disk": {
|
||||
"title": "File Disk | File Disks",
|
||||
"description": "By default, Crater will use your local disk for saving backups, avatar and other image files. You can configure more than one disk drivers like DigitalOcean, S3 and Dropbox according to your preference.",
|
||||
"created_at": "created at",
|
||||
"created_at": "aangemaakt op",
|
||||
"dropbox": "dropbox",
|
||||
"name": "Naam",
|
||||
"driver": "Driver",
|
||||
"driver": "Stuurprogramma",
|
||||
"disk_type": "Type",
|
||||
"disk_name": "Disk Name",
|
||||
"new_disk": "Add New Disk",
|
||||
@ -980,7 +980,6 @@
|
||||
"default_driver": "Default Driver",
|
||||
"is_default": "IS DEFAULT",
|
||||
"set_default_disk": "Set Default Disk",
|
||||
"set_default_disk_confirm": "This disk will be set as default and all the new PDFs will be saved on this disk",
|
||||
"success_set_default_disk": "Disk set as default successfully",
|
||||
"save_pdf_to_disk": "Save PDFs to Disk",
|
||||
"disk_setting_description": " Enable this, if you wish to save a copy of each Invoice, Estimate & Payment Receipt PDF on your default disk automatically. Turning this option will decrease the load-time when viewing the PDFs.",
|
||||
|
||||
@ -923,15 +923,15 @@
|
||||
"create_backup": "Create Backup",
|
||||
"select_backup_type": "Select Backup Type",
|
||||
"backup_confirm_delete": "You will not be able to recover this Backup",
|
||||
"path": "path",
|
||||
"new_disk": "New Disk",
|
||||
"created_at": "created at",
|
||||
"size": "size",
|
||||
"dropbox": "dropbox",
|
||||
"path": "Caminho",
|
||||
"new_disk": "Novo disco",
|
||||
"created_at": "Criado em",
|
||||
"size": "Tamanho",
|
||||
"dropbox": "DropBox",
|
||||
"local": "local",
|
||||
"healthy": "healthy",
|
||||
"amount_of_backups": "amount of backups",
|
||||
"newest_backups": "newest backups",
|
||||
"amount_of_backups": "Quantidade de backups",
|
||||
"newest_backups": "Backups mais recentes",
|
||||
"used_storage": "used storage",
|
||||
"select_disk": "Select Disk",
|
||||
"action": "Ação",
|
||||
@ -942,13 +942,13 @@
|
||||
"disk": {
|
||||
"title": "File Disk | File Disks",
|
||||
"description": "By default, Crater will use your local disk for saving backups, avatar and other image files. You can configure more than one disk drivers like DigitalOcean, S3 and Dropbox according to your preference.",
|
||||
"created_at": "created at",
|
||||
"dropbox": "dropbox",
|
||||
"created_at": "Criado em",
|
||||
"dropbox": "DropBox",
|
||||
"name": "Nome",
|
||||
"driver": "Driver",
|
||||
"disk_type": "Tipo",
|
||||
"disk_name": "Disk Name",
|
||||
"new_disk": "Add New Disk",
|
||||
"disk_name": "Nome do disco",
|
||||
"new_disk": "Adicionar novo disco",
|
||||
"filesystem_driver": "Filesystem Driver",
|
||||
"local_driver": "local Driver",
|
||||
"local_root": "local Root",
|
||||
@ -958,10 +958,10 @@
|
||||
"public_visibility": "Public Visibility",
|
||||
"media_driver": "Media Driver",
|
||||
"media_root": "Media Root",
|
||||
"aws_driver": "AWS Driver",
|
||||
"aws_key": "AWS Key",
|
||||
"aws_secret": "AWS Secret",
|
||||
"aws_region": "AWS Region",
|
||||
"aws_driver": "Driver AWS",
|
||||
"aws_key": "Chave AWS",
|
||||
"aws_secret": "Segredo AWS",
|
||||
"aws_region": "Região AWS",
|
||||
"aws_bucket": "AWS Bucket",
|
||||
"aws_root": "AWS Root",
|
||||
"do_spaces_type": "Do Spaces type",
|
||||
@ -980,7 +980,6 @@
|
||||
"default_driver": "Default Driver",
|
||||
"is_default": "IS DEFAULT",
|
||||
"set_default_disk": "Set Default Disk",
|
||||
"set_default_disk_confirm": "This disk will be set as default and all the new PDFs will be saved on this disk",
|
||||
"success_set_default_disk": "Disk set as default successfully",
|
||||
"save_pdf_to_disk": "Save PDFs to Disk",
|
||||
"disk_setting_description": " Enable this, if you wish to save a copy of each Invoice, Estimate & Payment Receipt PDF on your default disk automatically. Turning this option will decrease the load-time when viewing the PDFs.",
|
||||
|
||||
@ -6,29 +6,34 @@
|
||||
"invoices": "Fakture",
|
||||
"expenses": "Rashodi",
|
||||
"estimates": "Profakture",
|
||||
"payments": "Plaćanja",
|
||||
"payments": "Uplate",
|
||||
"reports": "Izveštaji",
|
||||
"settings": "Podešavanja",
|
||||
"logout": "Odjavi se"
|
||||
"logout": "Odjavi se",
|
||||
"users": "Korisnici"
|
||||
},
|
||||
"general": {
|
||||
"add_company": "Dodaj kompaniju",
|
||||
"view_pdf": "Pogledaj PDF",
|
||||
"copy_pdf_url": "Kopiraj PDF link",
|
||||
"download_pdf": "Preuzmi PDF",
|
||||
"save": "Sačuvaj",
|
||||
"create": "Napravi",
|
||||
"cancel": "Otkaži",
|
||||
"update": "Ažuriraj",
|
||||
"deselect": "Poništi izbor",
|
||||
"download": "Preuzmi",
|
||||
"from_date": "Od Datuma",
|
||||
"to_date": "Do Datuma",
|
||||
"from": "Od",
|
||||
"to": "Do",
|
||||
"from": "Pošiljalac",
|
||||
"to": "Primalac",
|
||||
"sort_by": "Rasporedi Po",
|
||||
"ascending": "Rastuće",
|
||||
"descending": "Opadajuće",
|
||||
"subject": "Predmet",
|
||||
"body": "Telo",
|
||||
"message": "Poruka",
|
||||
"send": "Pošalji",
|
||||
"go_back": "Idi nazad",
|
||||
"back_to_login": "Nazad na prijavu?",
|
||||
"home": "Početna",
|
||||
@ -78,7 +83,11 @@
|
||||
"street_1": "Adresa 1",
|
||||
"street_2": "Adresa 2",
|
||||
"action_failed": "Akcija nije uspela",
|
||||
"retry": "Pokušaj ponovo"
|
||||
"retry": "Pokušaj ponovo",
|
||||
"choose_note": "Odaberi napomenu",
|
||||
"no_note_found": "Ne postoje sačuvane napomene",
|
||||
"insert_note": "Unesi belešku",
|
||||
"copied_pdf_url_clipboard": "Link do PDF fajla kopiran!"
|
||||
},
|
||||
"dashboard": {
|
||||
"select_year": "Odaberi godinu",
|
||||
@ -124,11 +133,19 @@
|
||||
"percent": "Procenat",
|
||||
"compound_tax": "Složeni porez"
|
||||
},
|
||||
"global_search": {
|
||||
"search": "Pretraga...",
|
||||
"customers": "Klijenti",
|
||||
"users": "Korisnici",
|
||||
"no_results_found": "Nema rezultata"
|
||||
},
|
||||
"customers": {
|
||||
"title": "Klijenti",
|
||||
"add_customer": "Dodaj Klijenta",
|
||||
"contacts_list": "Lista klijenata",
|
||||
"name": "Naziv",
|
||||
"mail": "Mail | Mail-ovi",
|
||||
"statement": "Izjava",
|
||||
"display_name": "Naziv koji se prikazuje",
|
||||
"primary_contact_name": "Primarna kontakt osoba",
|
||||
"contact_name": "Naziv kontakt osobe",
|
||||
@ -137,6 +154,8 @@
|
||||
"address": "Adresa",
|
||||
"phone": "Telefon",
|
||||
"website": "Veb stranica",
|
||||
"overview": "Pregled",
|
||||
"enable_portal": "Uključi portal",
|
||||
"country": "Država",
|
||||
"state": "Savezna država",
|
||||
"city": "Grad",
|
||||
@ -146,6 +165,7 @@
|
||||
"password": "Šifra",
|
||||
"street_number": "Broj ulice",
|
||||
"primary_currency": "Primarna valuta",
|
||||
"description": "Opis",
|
||||
"add_new_customer": "Dodaj novog klijenta",
|
||||
"save_customer": "Sačuvaj klijenta",
|
||||
"update_customer": "Ažuriraj klijenta",
|
||||
@ -163,7 +183,10 @@
|
||||
"select_currency": "Odaberi valutu",
|
||||
"select_a_customer": "Odaberi klijenta",
|
||||
"type_or_click": "Unesi tekst ili klikni da izabereš",
|
||||
|
||||
"new_transaction": "Nova transakcija",
|
||||
"no_matching_customers": "Ne postoje klijenti koji odgovaraju pretrazi!",
|
||||
"phone_number": "Broj telefona",
|
||||
"create_date": "Datum kreiranja",
|
||||
"confirm_delete": "Nećeš moći da povratiš ovog klijenta i sve njegove Fakture, Profakture i Uplate. | Nećeš moći da povratiš ove klijente i njihove Fakture, Profakture i Uplate.",
|
||||
"created_message": "Klijent uspešno kreiran",
|
||||
"updated_message": "Klijent uspešno ažuriran",
|
||||
@ -213,7 +236,7 @@
|
||||
"partially_paid": "Delimično Plaćeno",
|
||||
"total": "Ukupno za plaćanje",
|
||||
"discount": "Popust",
|
||||
"sub_total": "Ukupno",
|
||||
"sub_total": "Osnovica za obračun PDV-a",
|
||||
"estimate_number": "Broj profakture",
|
||||
"ref_number": "Poziv na broj",
|
||||
"contact": "Kontakt",
|
||||
@ -262,7 +285,6 @@
|
||||
"list_of_estimates": "Ova sekcija će da sadrži spisak Profaktura.",
|
||||
"mark_as_rejected": "Označi kao odbijeno",
|
||||
"mark_as_accepted": "Označi kao prihvaćeno",
|
||||
|
||||
"marked_as_accepted_message": "Profaktura označena kao prihvaćena",
|
||||
"marked_as_rejected_message": "Profaktura označena kao odbijena",
|
||||
"confirm_delete": "Nećeš moći da povratiš ovu Profakturu | Nećeš moći da povratiš ove Profakture",
|
||||
@ -303,7 +325,7 @@
|
||||
"partially_paid": "Delimično plaćeno",
|
||||
"total": "Ukupno za plaćanje",
|
||||
"discount": "Popust",
|
||||
"sub_total": "Ukupno",
|
||||
"sub_total": "Osnovica za obračun PDV-a",
|
||||
"invoice": "Faktura | Fakture",
|
||||
"invoice_number": "Broj Fakture",
|
||||
"ref_number": "Poziv na broj",
|
||||
@ -407,7 +429,8 @@
|
||||
"edit_payment": "Izmeni Uplatu",
|
||||
"view_payment": "Vidi Uplatu",
|
||||
"add_new_payment": "Dodaj Novu Uplatu",
|
||||
"send_payment_receipt": "Pošalji potvrdu o plaćanju",
|
||||
"send_payment_receipt": "Pošalji potvrdu o uplati",
|
||||
"send_payment": "Pošalji Uplatu",
|
||||
"save_payment": "Sačuvaj Uplatu",
|
||||
"update_payment": "Ažuriraj Uplatu",
|
||||
"payment": "Uplata | Uplate",
|
||||
@ -415,11 +438,11 @@
|
||||
"no_matching_payments": "Ne postoje uplate koje odgovaraju pretrazi!",
|
||||
"list_of_payments": "Ova sekcija će da sadrži listu uplata.",
|
||||
"select_payment_mode": "Odaberi način plaćanja",
|
||||
"confirm_mark_as_sent": "Ovo plaćanje će biti označena kao Poslata",
|
||||
"confirm_send_payment": "Ovo plaćanje će biti poslato putem Email-a klijentu",
|
||||
"send_payment_successfully": "Plaćanje uspešno poslato",
|
||||
"user_email_does_not_exist": "Email adresa klijenta ne postoji",
|
||||
"something_went_wrong": "nešto je krenulo naopako",
|
||||
|
||||
"confirm_delete": "Nećeš moći da povratiš ovu Uplatu | Nećeš moći da povratiš ove Uplate",
|
||||
"created_message": "Uplata uspešno kreirana",
|
||||
"updated_message": "Uplata uspešno ažurirana",
|
||||
@ -428,7 +451,7 @@
|
||||
},
|
||||
"expenses": {
|
||||
"title": "Rashodi",
|
||||
"expenses_list": "List Rashoda",
|
||||
"expenses_list": "Lista Rashoda",
|
||||
"select_a_customer": "Odaberi klijenta",
|
||||
"expense_title": "Naslov",
|
||||
"customer": "Klijent",
|
||||
@ -443,7 +466,7 @@
|
||||
"action": "Akcija",
|
||||
"note": "Napomena",
|
||||
"category_id": "ID kategorije",
|
||||
"date": "Datum Rashoda",
|
||||
"date": "Datum",
|
||||
"add_expense": "Dodaj Rashod",
|
||||
"add_new_expense": "Dodaj Novi Rashod",
|
||||
"save_expense": "Sačuvaj Rashod",
|
||||
@ -454,7 +477,6 @@
|
||||
"expense": "Rashod | Rashodi",
|
||||
"no_expenses": "Još uvek nema rashoda!",
|
||||
"list_of_expenses": "Ova sekcija će da sadrži listu rashoda.",
|
||||
|
||||
"confirm_delete": "Nećeš moći da povratiš ovaj Rashod | Nećeš moći da povratiš ove Rashode",
|
||||
"created_message": "Rashod uspešno kreiran",
|
||||
"updated_message": "Rashod uspešno ažuriran",
|
||||
@ -486,6 +508,32 @@
|
||||
"retype_password": "Ponovo unesi šifru",
|
||||
"login_placeholder": "mail@example.com"
|
||||
},
|
||||
"users": {
|
||||
"title": "Korisnici",
|
||||
"users_list": "Lista korisnika",
|
||||
"name": "Ime i prezime",
|
||||
"description": "Opis",
|
||||
"added_on": "Datum dodavanja",
|
||||
"date_of_creation": "Datum kreiranja",
|
||||
"action": "Akcija",
|
||||
"add_user": "Dodaj Korisnika",
|
||||
"save_user": "Sačuvaj Korisnika",
|
||||
"update_user": "Ažuriraj Korisnika",
|
||||
"user": "Korisnik | Korisnici",
|
||||
"add_new_user": "Dodaj novog korisnika",
|
||||
"new_user": "Nov Korisnik",
|
||||
"edit_user": "Izmeni Korisnika",
|
||||
"no_users": "Još uvek nema korisnika!",
|
||||
"list_of_users": "Ova sekcija će da sadrži listu korisnika.",
|
||||
"email": "Email",
|
||||
"phone": "Broj telefona",
|
||||
"password": "Šifra",
|
||||
"user_attached_message": "Ne možete obrisati stavku koja je već u upotrebi",
|
||||
"confirm_delete": "Nećeš moći da povratiš ovog Korisnika | Nećeš moći da povratiš ove Korisnike",
|
||||
"created_message": "Korisnik uspešno napravljen",
|
||||
"updated_message": "Korisnik uspešno ažuriran",
|
||||
"deleted_message": "Korisnik uspešno obrisan | Korisnici uspešno obrisani"
|
||||
},
|
||||
"reports": {
|
||||
"title": "Izveštaj",
|
||||
"from_date": "Datum od",
|
||||
@ -556,7 +604,12 @@
|
||||
"notifications": "Obaveštenja",
|
||||
"tax_types": "Tipovi Poreza",
|
||||
"expense_category": "Kategorije Rashoda",
|
||||
"update_app": "Ažuriraj Aplikaciju"
|
||||
"update_app": "Ažuriraj Aplikaciju",
|
||||
"backup": "Bekap",
|
||||
"file_disk": "File Disk",
|
||||
"custom_fields": "Prilagođena polja",
|
||||
"payment_modes": "Način plaćanja",
|
||||
"notes": "Napomene"
|
||||
},
|
||||
"title": "Podešavanja",
|
||||
"setting": "Podešavanje | Podešavanja",
|
||||
@ -620,6 +673,42 @@
|
||||
"save": "Sačuvaj",
|
||||
"updated_message": "Podaci o firmi uspešno sačuvani"
|
||||
},
|
||||
"custom_fields": {
|
||||
"title": "Prilagođena polja",
|
||||
"section_description": "Prilagodite vaše Fakture, Profakture i Uplate (priznanice) sa svojim poljima. Postarajte se da koristite polja navedena ispod na formatu adrese na stranici Podešavanja/Prilagođavanje.",
|
||||
"add_custom_field": "Dodaj prilagođeno polje",
|
||||
"edit_custom_field": "Izmeni prilagođeno polje",
|
||||
"field_name": "Naziv polja",
|
||||
"label": "Oznaka",
|
||||
"type": "Tip",
|
||||
"name": "Naziv",
|
||||
"required": "Obavezno",
|
||||
"placeholder": "Opis polja (Placeholder)",
|
||||
"help_text": "Pomoćni tekst",
|
||||
"default_value": "Podrazumevana vrednost",
|
||||
"prefix": "Prefiks",
|
||||
"starting_number": "Početni broj",
|
||||
"model": "Model",
|
||||
"help_text_description": "Unesite opis koji će pomoći korisnicima da razumeju svrhu ovog prilagođenog polja.",
|
||||
"suffix": "Sufiks",
|
||||
"yes": "Da",
|
||||
"no": "Ne",
|
||||
"order": "Redosled",
|
||||
"custom_field_confirm_delete": "Nećeš moći da povratiš ovo prilagođeno polje",
|
||||
"already_in_use": "Prilagođeno polje je već u upotrebi",
|
||||
"deleted_message": "Prilagođeno polje je uspešno obrisano",
|
||||
"options": "opcije",
|
||||
"add_option": "Dodaj opcije",
|
||||
"add_another_option": "Dodaj još jednu opciju",
|
||||
"sort_in_alphabetical_order": "Poređaj po Abecedi",
|
||||
"add_options_in_bulk": "Grupno dodavanje opcija",
|
||||
"use_predefined_options": "Koristi predefinisane opcije",
|
||||
"select_custom_date": "Odaberi datum",
|
||||
"select_relative_date": "Odaberi relativan datum",
|
||||
"ticked_by_default": "Podrazumevano odabrano",
|
||||
"updated_message": "Prilagođeno polje uspešno ažurirano",
|
||||
"added_message": "Prilagođeno polje uspešno dodato"
|
||||
},
|
||||
"customization": {
|
||||
"customization": "prilagođavanje",
|
||||
"save": "Sačuvaj",
|
||||
@ -648,38 +737,45 @@
|
||||
"address_setting_updated": "Podešavanje adrese uspešno ažurirano"
|
||||
},
|
||||
"updated_message": "Podaci o firmi su uspešno ažurirani",
|
||||
|
||||
"invoices": {
|
||||
"title": "Fakture",
|
||||
"notes": "Napomene",
|
||||
"invoice_prefix": "Prefiks faktura",
|
||||
"default_invoice_email_body": "Podrazumevan sadržaj email-a za Fakture",
|
||||
"invoice_settings": "Podešavanje za fakture",
|
||||
"autogenerate_invoice_number": "Automatski-generiši broj fakture",
|
||||
"invoice_setting_description": "Onemogući ovo, Ako Vi ne želite da automatski-generišete broj fakture kada pravite novu fakturu.",
|
||||
"enter_invoice_prefix": "Unesite prefiks fakture",
|
||||
"terms_and_conditions": "Uslovi Korišćenja",
|
||||
"company_address_format": "Format adrese firme",
|
||||
"shipping_address_format": "Format adrese za dostavu firme",
|
||||
"billing_address_format": "Format adrese za naplatu firme",
|
||||
"invoice_setting_updated": "Podešavanje za fakture je uspešno sačuvano"
|
||||
},
|
||||
|
||||
"estimates": {
|
||||
"title": "Profakture",
|
||||
"estimate_prefix": "Prefiks profaktura",
|
||||
"default_estimate_email_body": "Podrazumevan sadržaj email-a za Profakture",
|
||||
"estimate_settings": "Podešavanje za profakture",
|
||||
"autogenerate_estimate_number": "Automatski-generiši broj profakture",
|
||||
"estimate_setting_description": "Onemogući ovo, Ako Vi ne želite da automatski-generišete broj profakture kada pravite novu profakturu.",
|
||||
"enter_estimate_prefix": "Unesite prefiks profakture",
|
||||
"estimate_setting_updated": "Podešavanje za profakture je uspešno sačuvano"
|
||||
"estimate_setting_updated": "Podešavanje za profakture je uspešno sačuvano",
|
||||
"company_address_format": "Format adrese firme",
|
||||
"billing_address_format": "Format adrese za naplatu firme",
|
||||
"shipping_address_format": "Format adrese za dostavu firme"
|
||||
},
|
||||
|
||||
"payments": {
|
||||
"title": "Plaćanja",
|
||||
"title": "Uplate",
|
||||
"description": "Način plaćanja",
|
||||
"payment_prefix": "Prefiks uplata",
|
||||
"default_payment_email_body": "Podrazumevan sadržaj email-a za potvrdu o plaćanju (račun)",
|
||||
"payment_settings": "Podešavanje za plaćanja",
|
||||
"autogenerate_payment_number": "Automatski-generiši broj uplate",
|
||||
"payment_setting_description": "Onemogući ovo, Ako ne želite da automatski-generišete broj uplate kada pravite novu uplatu.",
|
||||
"enter_payment_prefix": "Unesite prefiks uplate",
|
||||
"payment_setting_updated": "Podešavanje za plaćanja je uspešno sačuvano",
|
||||
"payment_mode": "Način Plaćanja",
|
||||
"payment_modes": "Način Plaćanja",
|
||||
"add_payment_mode": "Dodaj način plaćanja",
|
||||
"edit_payment_mode": "Izmeni način plaćanja",
|
||||
"mode_name": "Način plaćanja",
|
||||
@ -687,12 +783,13 @@
|
||||
"payment_mode_updated": "Način plaćanja ažuriran",
|
||||
"payment_mode_confirm_delete": "Nećeš moći da povratiš ovaj Način Plaćanja",
|
||||
"already_in_use": "Način plaćanja se već koristi",
|
||||
"deleted_message": "Način plaćanja uspešno obrisan"
|
||||
"deleted_message": "Način plaćanja uspešno obrisan",
|
||||
"company_address_format": "Format adrese firme",
|
||||
"from_customer_address_format": "Format adrese klijenta"
|
||||
},
|
||||
|
||||
"items": {
|
||||
"title": "Stavke",
|
||||
"units": "jedinice",
|
||||
"units": "Jedinice",
|
||||
"add_item_unit": "Dodaj jedinicu stavke",
|
||||
"edit_item_unit": "Izmeni jedinicu stavke",
|
||||
"unit_name": "Naziv jedinice",
|
||||
@ -701,6 +798,21 @@
|
||||
"item_unit_confirm_delete": "Nećeš moći da povratiš ovu jedinicu stavke",
|
||||
"already_in_use": "Jedinica stavke se već koristi",
|
||||
"deleted_message": "Jedinica stavke uspešno obrisana"
|
||||
},
|
||||
"notes": {
|
||||
"title": "Napomene",
|
||||
"description": "Uštedite vreme pravljeći napomene i koristeći ih na fakturama, profakturama i uplatama.",
|
||||
"notes": "Napomene",
|
||||
"type": "Tip",
|
||||
"add_note": "Dodaj Napomenu",
|
||||
"add_new_note": "Dodaj novu Napomenu",
|
||||
"name": "Naziv",
|
||||
"edit_note": "Izmeni Napomenu",
|
||||
"note_added": "Napomena uspešno dodata",
|
||||
"note_updated": "Napomena uspešno ažurirana",
|
||||
"note_confirm_delete": "Nećeš moći da povratiš ovu Napomenu",
|
||||
"already_in_use": "Napomena se već koristi",
|
||||
"deleted_message": "Napomena uspešno obrisana"
|
||||
}
|
||||
},
|
||||
"account_settings": {
|
||||
@ -768,7 +880,7 @@
|
||||
},
|
||||
"preferences": {
|
||||
"currency": "Valuta",
|
||||
"language": "Jezik",
|
||||
"default_language": "Jezik",
|
||||
"time_zone": "Vremenska Zona",
|
||||
"fiscal_year": "Finansijska Godina",
|
||||
"date_format": "Format datuma",
|
||||
@ -779,10 +891,10 @@
|
||||
"preference": "Preferencija | Preferencije",
|
||||
"general_settings": "Podrazumevane preferencije za sistem",
|
||||
"updated_message": "Preferencije su uspešno ažurirane",
|
||||
"select_language": "izaberi jezik",
|
||||
"select_time_zone": "izaberi vremensku zonu",
|
||||
"select_date_formate": "izaberi format datuma",
|
||||
"select_financial_year": "izaberi finansijsku godinu"
|
||||
"select_language": "Izaberi Jezik",
|
||||
"select_time_zone": "Izaberi Vremensku Zonu",
|
||||
"select_date_format": "Izaberi Format Datuma",
|
||||
"select_financial_year": "Izaberi Finansijsku Godinu"
|
||||
},
|
||||
"update_app": {
|
||||
"title": "Ažuriraj aplikaciju",
|
||||
@ -790,6 +902,7 @@
|
||||
"check_update": "Proveri ažuriranost",
|
||||
"avail_update": "Dostupna je nova verzija",
|
||||
"next_version": "Sledeća verzija",
|
||||
"requirements": "Zahtevi",
|
||||
"update": "Ažuriraj sad",
|
||||
"update_progress": "Ažuriranje je u toku...",
|
||||
"progress_text": "Trajaće svega par minuta. Nemojte osvežavati ili zatvoriti stranicu dok ažuriranje ne bude gotovo",
|
||||
@ -799,10 +912,92 @@
|
||||
"download_zip_file": "Preuzmi ZIP paket",
|
||||
"unzipping_package": "Raspakivanje paketa",
|
||||
"copying_files": "Kopiranje datoteka",
|
||||
"deleting_files": "Brisanje fajlova koji nisu u upotrebi",
|
||||
"running_migrations": "Migracije u toku",
|
||||
"finishing_update": "Završavanje ažuriranja",
|
||||
"update_failed": "Neuspešno ažuriranje",
|
||||
"update_failed_text": "Žao mi je! Tvoje ažuriranje nije uspelo na koraku broj: {step} "
|
||||
"update_failed_text": "Žao mi je! Tvoje ažuriranje nije uspelo na koraku broj: {step} korak"
|
||||
},
|
||||
"backup": {
|
||||
"title": "Bekap | Bekapi",
|
||||
"description": "Bekap je zip arhiva koja sadrži sve fajlove iz foldera koje ste specificirali, takođe sadrži bekap baze.",
|
||||
"new_backup": "Dodaj novi Bekap",
|
||||
"create_backup": "Napravi Bekap",
|
||||
"select_backup_type": "Izaberi tip Bekapa",
|
||||
"backup_confirm_delete": "Nećeš moći da povratiš ovaj Bekap",
|
||||
"path": "putanja",
|
||||
"new_disk": "Novi Disk",
|
||||
"created_at": "datum kreiranja",
|
||||
"size": "veličina",
|
||||
"dropbox": "dropbox",
|
||||
"local": "lokalni",
|
||||
"healthy": "zdrav",
|
||||
"amount_of_backups": "broj bekapa",
|
||||
"newest_backups": "najnoviji bekapi",
|
||||
"used_storage": "korišćeno skladište",
|
||||
"select_disk": "Izaberi Disk",
|
||||
"action": "Akcija",
|
||||
"deleted_message": "Bekap uspešno obrisan",
|
||||
"created_message": "Bekap uspešno napravljen",
|
||||
"invalid_disk_credentials": "Pogrešni kredencijali za odabrani disk"
|
||||
},
|
||||
"disk": {
|
||||
"title": "File Disk | File Disks",
|
||||
"description": "Podrazumevano ponašanje je da Crater koristi lokalni disk za čuvanje bekapa, avatara i ostalih slika. Možete podesiti više od jednog disk drajvera od provajdera poput DigitalOcean, S3 i Dropbox po vašoj želji.",
|
||||
"created_at": "datum kreiranja",
|
||||
"dropbox": "dropbox",
|
||||
"name": "Naziv",
|
||||
"driver": "Drajver",
|
||||
"disk_type": "Tip",
|
||||
"disk_name": "Naziv Diska",
|
||||
"new_disk": "Dodaj novi Disk",
|
||||
"filesystem_driver": "Filesystem Driver",
|
||||
"local_driver": "lokalni Drajver",
|
||||
"local_root": "local Root",
|
||||
"public_driver": "Public Driver",
|
||||
"public_root": "Public Root",
|
||||
"public_url": "Public URL",
|
||||
"public_visibility": "Public Visibility",
|
||||
"media_driver": "Media Driver",
|
||||
"media_root": "Media Root",
|
||||
"aws_driver": "AWS Driver",
|
||||
"aws_key": "AWS Key",
|
||||
"aws_secret": "AWS Secret",
|
||||
"aws_region": "AWS Region",
|
||||
"aws_bucket": "AWS Bucket",
|
||||
"aws_root": "AWS Root",
|
||||
"do_spaces_type": "Do Spaces type",
|
||||
"do_spaces_key": "Do Spaces key",
|
||||
"do_spaces_secret": "Do Spaces Secret",
|
||||
"do_spaces_region": "Do Spaces Region",
|
||||
"do_spaces_bucket": "Do Spaces Bucket",
|
||||
"do_spaces_endpoint": "Do Spaces Endpoint",
|
||||
"do_spaces_root": "Do Spaces Root",
|
||||
"dropbox_type": "Dropbox Type",
|
||||
"dropbox_token": "Dropbox Token",
|
||||
"dropbox_key": "Dropbox Key",
|
||||
"dropbox_secret": "Dropbox Secret",
|
||||
"dropbox_app": "Dropbox App",
|
||||
"dropbox_root": "Dropbox Root",
|
||||
"default_driver": "Podrazumevani Drajver",
|
||||
"is_default": "DA LI JE PODRAZUMEVAN",
|
||||
"set_default_disk": "Postavi Podrazumevani Disk",
|
||||
"set_default_disk_confirm": "Ovaj disk će biti postavljen kao podrazumevan i svi novi PDF fajlovi će biti sačuvani na ovom disku",
|
||||
"success_set_default_disk": "Disk je uspešno postavljen kao podrazumevan",
|
||||
"save_pdf_to_disk": "Sačuvaj PDF fajlove na Disk",
|
||||
"disk_setting_description": " Uključite ovo ako želite da sačuvate kopiju PDF fajla svake Fakture, Profakture i Uplate na vaš podrazumevani disk automatski. Uključivanjem ove opcije ćete smanjiti vreme učitavanja pri pregledu PDF fajlova.",
|
||||
"select_disk": "Izaberi Disk",
|
||||
"disk_settings": "Disk Podešavanja",
|
||||
"confirm_delete": "Ovo neće uticati na vaše postojeće fajlove i foldere na navedenom disku, ali će se konfiguracija vašeg diska izbrisati iz Cratera.",
|
||||
"action": "Akcija",
|
||||
"edit_file_disk": "Izmeni File Disk",
|
||||
"success_create": "Disk uspešno dodat",
|
||||
"success_update": "Disk uspešno ažuriran",
|
||||
"error": "Dodavanje diska nije uspelo",
|
||||
"deleted_message": "File Disk uspešno obrisan",
|
||||
"disk_variables_save_successfully": "Disk uspešno podešen",
|
||||
"disk_variables_save_error": "Podešavanje diska nije uspelo.",
|
||||
"invalid_disk_credentials": "Pogrešan kredencijal za disk koji je naveden"
|
||||
}
|
||||
},
|
||||
"wizard": {
|
||||
@ -845,8 +1040,10 @@
|
||||
"port": "Port baze podataka",
|
||||
"password": "Šifra baze podataka",
|
||||
"app_url": "URL aplikacije",
|
||||
"app_domain": "Domen aplikacije",
|
||||
"username": "Korisničko ime baze podataka",
|
||||
"db_name": "Naziv baze podataka",
|
||||
"db_path": "Putanja do baze",
|
||||
"desc": "Kreiraj bazu podataka na svom serveru i postavi kredencijale prateći obrazac u nastavku."
|
||||
},
|
||||
"permissions": {
|
||||
@ -872,7 +1069,6 @@
|
||||
"from_mail": "E-mail adresa pošiljaoca",
|
||||
"encryption": "E-mail enkripcija",
|
||||
"mail_config_desc": "Ispod se nalazi forma za podešavanje E-mail drajvera za slanje pošte iz aplikacije. Takođe možete podesiti provajdere treće strane kao Sendgrid, SES itd."
|
||||
|
||||
},
|
||||
"req": {
|
||||
"system_req": "Sistemski zahtevi",
|
||||
@ -901,7 +1097,9 @@
|
||||
"invoices_and_estimates": "fakture i profakture sa mogućnošću odabira više obrazaca"
|
||||
},
|
||||
"validation": {
|
||||
"invalid_url": "Nevažeći URL (ex: http://www.crater.com)",
|
||||
"invalid_phone": "Pogrešan Broj Telefona",
|
||||
"invalid_url": "Nevažeći URL (primer: http://www.crater.com)",
|
||||
"invalid_domain_url": "Pogrešan URL (primer: crater.com)",
|
||||
"required": "Obavezno polje",
|
||||
"email_incorrect": "Pogrešan E-mail",
|
||||
"email_already_taken": "Navedeni E-mail je zauzet",
|
||||
@ -926,14 +1124,50 @@
|
||||
"price_minvalue": "Cena mora biti veća od 0",
|
||||
"amount_maxlength": "Iznos ne može da ima više od 20 cifara",
|
||||
"amount_minvalue": "Iznos mora biti veći od 0",
|
||||
"description_maxlength": "Opis ne može da ima više od 255 karaktera",
|
||||
"description_maxlength": "Opis ne može da ima više od 65,000 karaktera",
|
||||
"subject_maxlength": "Predmet ne može da ima više od 100 karaktera",
|
||||
"message_maxlength": "Poruka ne može da ima više od 255 karaktera",
|
||||
"maximum_options_error": "Maksimalan broj opcija je izabran. Prvo uklonite izabranu opciju da biste izabrali drugu",
|
||||
"notes_maxlength": "Napomena ne može da ima više od 255 karaktera",
|
||||
"notes_maxlength": "Napomena ne može da ima više od 65,000 karaktera",
|
||||
"address_maxlength": "Adresa ne može da ima više od 255 karaktera",
|
||||
"ref_number_maxlength": "Poziv na broj ne može da ima više od 225 karaktera",
|
||||
"prefix_maxlength": "Prefiks ne može da ima više od 5 karaktera",
|
||||
"something_went_wrong": "nešto je krenulo naopako"
|
||||
}
|
||||
},
|
||||
"pdf_estimate_label": "Profaktura",
|
||||
"pdf_estimate_number": "Broj Profakture",
|
||||
"pdf_estimate_date": "Datum Profakture",
|
||||
"pdf_estimate_expire_date": "Datum isteka Profakture",
|
||||
"pdf_invoice_label": "Faktura",
|
||||
"pdf_invoice_number": "Broj Fakture",
|
||||
"pdf_invoice_date": "Datum Fakture",
|
||||
"pdf_invoice_due_date": "Datum dospeća Fakture",
|
||||
"pdf_notes": "Napomena",
|
||||
"pdf_items_label": "Stavke",
|
||||
"pdf_quantity_label": "Količina",
|
||||
"pdf_price_label": "Cena",
|
||||
"pdf_discount_label": "Popust",
|
||||
"pdf_amount_label": "Iznos",
|
||||
"pdf_subtotal": "Osnovica za obračun PDV-a",
|
||||
"pdf_total": "Ukupan iznos",
|
||||
"pdf_payment_receipt_label": "POTVRDA O UPLATI",
|
||||
"pdf_payment_date": "Datum Uplate",
|
||||
"pdf_payment_number": "Broj Uplate",
|
||||
"pdf_payment_mode": "Način Uplate",
|
||||
"pdf_payment_amount_received_label": "Iznos Uplate",
|
||||
"pdf_expense_report_label": "IZVEŠTAJ O RASHODIMA",
|
||||
"pdf_total_expenses_label": "RASHODI UKUPNO",
|
||||
"pdf_profit_loss_label": "IZVEŠTAJ O PRIHODIMA I RASHODIMA",
|
||||
"pdf_income_label": "PRIHOD",
|
||||
"pdf_net_profit_label": "NETO PROFIT",
|
||||
"pdf_customer_sales_report": "Izveštaj o Prodaji: Po Klijentu",
|
||||
"pdf_total_sales_label": "PRODAJA UKUPNO",
|
||||
"pdf_item_sales_label": "Izveštaj o Prodaji: Po Stavci",
|
||||
"pdf_tax_report_label": "IZVEŠTAJ O POREZIMA",
|
||||
"pdf_total_tax_label": "UKUPNO POREZ",
|
||||
"pdf_tax_types_label": "Tipovi Poreza",
|
||||
"pdf_expenses_label": "Rashodi",
|
||||
"pdf_bill_to": "Račun za,",
|
||||
"pdf_ship_to": "Isporučiti za,",
|
||||
"pdf_received_from": "Poslat od strane:"
|
||||
}
|
||||
1172
resources/assets/js/plugins/sv.json
Normal file
1172
resources/assets/js/plugins/sv.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -48,16 +48,3 @@ export const logout = ({ state, commit }) => {
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export const checkMail = ({ commit }, data) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
window.axios
|
||||
.post('/api/v1/is-registered', data)
|
||||
.then((response) => {
|
||||
resolve(response)
|
||||
})
|
||||
.catch((err) => {
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@ -20,19 +20,24 @@
|
||||
</div>
|
||||
</div>
|
||||
<sw-button
|
||||
v-if="!isSent"
|
||||
:loading="isLoading"
|
||||
:disabled="isLoading"
|
||||
type="submit"
|
||||
variant="primary"
|
||||
>
|
||||
{{ $t('validation.send_reset_link') }}
|
||||
</sw-button>
|
||||
<sw-button v-else :disabled="isLoading" variant="primary" type="submit">
|
||||
{{ $t('validation.not_yet') }}
|
||||
<div v-if="!isSent">
|
||||
{{ $t('validation.send_reset_link') }}
|
||||
</div>
|
||||
<div v-else>
|
||||
{{ $t('validation.not_yet') }}
|
||||
</div>
|
||||
</sw-button>
|
||||
|
||||
<div class="mt-4 mb-4 text-sm">
|
||||
<router-link to="/login">
|
||||
<router-link
|
||||
to="/login"
|
||||
class="text-sm text-primary-400 hover:text-gray-700"
|
||||
>
|
||||
{{ $t('general.back_to_login') }}
|
||||
</router-link>
|
||||
</div>
|
||||
@ -41,7 +46,6 @@
|
||||
|
||||
<script type="text/babel">
|
||||
import { async } from 'q'
|
||||
import { mapActions } from 'vuex'
|
||||
const { required, email } = require('vuelidate/lib/validators')
|
||||
|
||||
export default {
|
||||
@ -52,7 +56,6 @@ export default {
|
||||
},
|
||||
isSent: false,
|
||||
isLoading: false,
|
||||
isRegisteredUser: false,
|
||||
}
|
||||
},
|
||||
validations: {
|
||||
@ -64,14 +67,8 @@ export default {
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
...mapActions('auth', ['checkMail']),
|
||||
async validateBeforeSubmit(e) {
|
||||
this.$v.formData.$touch()
|
||||
let { data } = await this.checkMail()
|
||||
if (data === false) {
|
||||
toastr['error'](this.$t('validation.email_does_not_exist'))
|
||||
return
|
||||
}
|
||||
if (!this.$v.formData.$invalid) {
|
||||
try {
|
||||
this.isLoading = true
|
||||
@ -87,19 +84,10 @@ export default {
|
||||
this.isSent = true
|
||||
this.isLoading = false
|
||||
} catch (err) {
|
||||
if (err.response && err.response.status === 403) {
|
||||
toastr['error'](err.response.data, 'Error')
|
||||
}
|
||||
this.isLoading = false
|
||||
}
|
||||
}
|
||||
},
|
||||
// async checkMail() {
|
||||
// let response = await window.axios.post(
|
||||
// '/api/v1/is-registered',
|
||||
// this.formData
|
||||
// )
|
||||
// return response.data
|
||||
// },
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -1,43 +1,53 @@
|
||||
<template>
|
||||
<form id="loginForm" @submit.prevent="validateBeforeSubmit">
|
||||
<div class="form-group">
|
||||
<sw-input
|
||||
v-model.trim="formData.email"
|
||||
:invalid="$v.formData.email.$error"
|
||||
:placeholder="$t('login.enter_email')"
|
||||
type="email"
|
||||
name="email"
|
||||
@input="$v.formData.email.$touch()"
|
||||
/>
|
||||
<div class="mb-4 form-group">
|
||||
<sw-input-group :label="$t('login.email')" required>
|
||||
<sw-input
|
||||
v-model.trim="formData.email"
|
||||
:invalid="$v.formData.email.$error"
|
||||
:placeholder="$t('login.enter_email')"
|
||||
type="email"
|
||||
name="email"
|
||||
@input="$v.formData.email.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
<div v-if="$v.formData.email.$error">
|
||||
<span v-if="!$v.formData.email.required" class="help-block text-danger">
|
||||
<span
|
||||
v-if="!$v.formData.email.required"
|
||||
class="text-sm help-block text-danger"
|
||||
>
|
||||
{{ $t('validation.required') }}
|
||||
</span>
|
||||
<span v-if="!$v.formData.email.email" class="help-block text-danger">
|
||||
<span
|
||||
v-if="!$v.formData.email.email"
|
||||
class="text-sm help-block text-danger"
|
||||
>
|
||||
{{ $t('validation.email_incorrect') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<sw-input
|
||||
id="password"
|
||||
v-model.trim="formData.password"
|
||||
:invalid="$v.formData.password.$error"
|
||||
:placeholder="$t('login.enter_password')"
|
||||
type="password"
|
||||
name="password"
|
||||
@input="$v.formData.password.$touch()"
|
||||
/>
|
||||
<div class="mb-4 form-group">
|
||||
<sw-input-group :label="$t('login.password')" required>
|
||||
<sw-input
|
||||
id="password"
|
||||
v-model.trim="formData.password"
|
||||
:invalid="$v.formData.password.$error"
|
||||
:placeholder="$t('login.enter_password')"
|
||||
type="password"
|
||||
name="password"
|
||||
@input="$v.formData.password.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
<div v-if="$v.formData.password.$error">
|
||||
<span
|
||||
v-if="!$v.formData.password.required"
|
||||
class="help-block text-danger"
|
||||
class="text-sm help-block text-danger"
|
||||
>
|
||||
{{ $t('validation.required') }}
|
||||
</span>
|
||||
<span
|
||||
v-if="!$v.formData.password.minLength"
|
||||
class="help-block text-danger"
|
||||
class="text-sm help-block text-danger"
|
||||
>
|
||||
{{
|
||||
$tc(
|
||||
@ -49,19 +59,21 @@
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<sw-input
|
||||
v-model.trim="formData.password_confirmation"
|
||||
:invalid="$v.formData.password_confirmation.$error"
|
||||
:placeholder="$t('login.retype_password')"
|
||||
type="password"
|
||||
name="password_confirmation"
|
||||
@input="$v.formData.password_confirmation.$touch()"
|
||||
/>
|
||||
<div class="mb-8 form-group">
|
||||
<sw-input-group :label="$t('login.retype_password')" required>
|
||||
<sw-input
|
||||
v-model.trim="formData.password_confirmation"
|
||||
:invalid="$v.formData.password_confirmation.$error"
|
||||
:placeholder="$t('login.retype_password')"
|
||||
type="password"
|
||||
name="password_confirmation"
|
||||
@input="$v.formData.password_confirmation.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
<div v-if="$v.formData.password_confirmation.$error">
|
||||
<span
|
||||
v-if="!$v.formData.password_confirmation.sameAsPassword"
|
||||
class="help-block text-danger"
|
||||
class="text-sm help-block text-danger"
|
||||
>
|
||||
{{ $t('validation.password_incorrect') }}
|
||||
</span>
|
||||
|
||||
@ -77,7 +77,7 @@
|
||||
:calendar-button="true"
|
||||
calendar-button-icon="calendar"
|
||||
class="mt-2"
|
||||
@change="$v.newEstimate.estimate_date.$touch()"
|
||||
@input="$v.newEstimate.estimate_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
|
||||
@ -92,7 +92,7 @@
|
||||
:calendar-button="true"
|
||||
calendar-button-icon="calendar"
|
||||
class="mt-2"
|
||||
@change="$v.newEstimate.expiry_date.$touch()"
|
||||
@input="$v.newEstimate.expiry_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
|
||||
@ -262,7 +262,7 @@
|
||||
>
|
||||
<sw-button
|
||||
type="button"
|
||||
class="flex justify-center w-full text-sm lg:w-auto"
|
||||
class="flex justify-center w-full text-sm lg:w-auto hover:bg-gray-400"
|
||||
variant="gray"
|
||||
@click="openTemplateModal"
|
||||
>
|
||||
|
||||
@ -296,7 +296,7 @@ export default {
|
||||
},
|
||||
set: function (newValue) {
|
||||
if (parseFloat(newValue) > 0) {
|
||||
this.item.price = newValue * 100
|
||||
this.item.price = (newValue * 100).toFixed(2)
|
||||
this.maxDiscount = this.item.price
|
||||
} else {
|
||||
this.item.price = newValue
|
||||
@ -340,7 +340,7 @@ export default {
|
||||
between: between(0, this.maxDiscount),
|
||||
},
|
||||
description: {
|
||||
maxLength: maxLength(255),
|
||||
maxLength: maxLength(65000),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -110,7 +110,7 @@
|
||||
:calendar-button="true"
|
||||
class="mt-2"
|
||||
calendar-button-icon="calendar"
|
||||
@change="$v.formData.expense_date.$touch()"
|
||||
@input="$v.formData.expense_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
|
||||
@ -302,7 +302,7 @@ export default {
|
||||
},
|
||||
|
||||
notes: {
|
||||
maxLength: maxLength(255),
|
||||
maxLength: maxLength(65000),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@ -76,7 +76,7 @@
|
||||
:calendar-button="true"
|
||||
calendar-button-icon="calendar"
|
||||
class="mt-2"
|
||||
@change="$v.newInvoice.invoice_date.$touch()"
|
||||
@input="$v.newInvoice.invoice_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
|
||||
@ -91,7 +91,7 @@
|
||||
:calendar-button="true"
|
||||
calendar-button-icon="calendar"
|
||||
class="mt-2"
|
||||
@change="$v.newInvoice.due_date.$touch()"
|
||||
@input="$v.newInvoice.due_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
|
||||
@ -254,7 +254,7 @@
|
||||
>
|
||||
<sw-button
|
||||
type="button"
|
||||
class="flex justify-center w-full text-sm lg:w-auto"
|
||||
class="flex justify-center w-full text-sm text-black lg:w-auto hover:bg-gray-400"
|
||||
variant="gray"
|
||||
@click="openTemplateModal"
|
||||
>
|
||||
|
||||
@ -296,7 +296,7 @@ export default {
|
||||
},
|
||||
set: function (newValue) {
|
||||
if (parseFloat(newValue) > 0) {
|
||||
this.item.price = newValue * 100
|
||||
this.item.price = (newValue * 100).toFixed(2)
|
||||
this.maxDiscount = this.item.price
|
||||
} else {
|
||||
this.item.price = newValue
|
||||
@ -340,7 +340,7 @@ export default {
|
||||
between: between(0, this.maxDiscount),
|
||||
},
|
||||
description: {
|
||||
maxLength: maxLength(255),
|
||||
maxLength: maxLength(65000),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -118,7 +118,7 @@
|
||||
:loading="isLoading"
|
||||
variant="primary"
|
||||
size="lg"
|
||||
class="flex w-full justify-center md:w-auto"
|
||||
class="flex justify-center w-full md:w-auto"
|
||||
>
|
||||
<save-icon v-if="!isLoading" class="mr-2 -ml-1" />
|
||||
{{ isEdit ? $t('items.update_item') : $t('items.save_item') }}
|
||||
@ -293,7 +293,7 @@ export default {
|
||||
},
|
||||
|
||||
description: {
|
||||
maxLength: maxLength(255),
|
||||
maxLength: maxLength(65000),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@ -59,7 +59,7 @@
|
||||
:calendar-button="true"
|
||||
class="mt-1"
|
||||
calendar-button-icon="calendar"
|
||||
@change="$v.formData.payment_date.$touch()"
|
||||
@input="$v.formData.payment_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
|
||||
@ -288,7 +288,7 @@ export default {
|
||||
return this.formData.amount / 100
|
||||
},
|
||||
set: function (newValue) {
|
||||
this.formData.amount = newValue * 100
|
||||
this.formData.amount = (newValue * 100).toFixed(2)
|
||||
},
|
||||
},
|
||||
pageTitle() {
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
:calendar-button="true"
|
||||
calendar-button-icon="calendar"
|
||||
class="mt-2"
|
||||
@change="$v.formData.from_date.$touch()"
|
||||
@input="$v.formData.from_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
|
||||
@ -44,7 +44,7 @@
|
||||
:calendar-button="true"
|
||||
calendar-button-icon="calendar"
|
||||
class="mt-2"
|
||||
@change="$v.formData.to_date.$touch()"
|
||||
@input="$v.formData.to_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
</div>
|
||||
@ -163,6 +163,14 @@ export default {
|
||||
return this.$t('validation.required')
|
||||
}
|
||||
},
|
||||
|
||||
dateRangeUrl() {
|
||||
return `${this.siteURL}?from_date=${moment(
|
||||
this.formData.from_date
|
||||
).format('YYYY-MM-DD')}&to_date=${moment(this.formData.to_date).format(
|
||||
'YYYY-MM-DD'
|
||||
)}`
|
||||
},
|
||||
},
|
||||
|
||||
watch: {
|
||||
@ -174,11 +182,7 @@ export default {
|
||||
|
||||
mounted() {
|
||||
this.siteURL = `/reports/expenses/${this.getSelectedCompany.unique_hash}`
|
||||
this.url = `${this.siteURL}?from_date=${moment(
|
||||
this.formData.from_date
|
||||
).format('YYYY-MM-DD')}&to_date=${moment(this.formData.to_date).format(
|
||||
'YYYY-MM-DD'
|
||||
)}`
|
||||
this.url = this.dateRangeUrl
|
||||
},
|
||||
|
||||
methods: {
|
||||
@ -243,6 +247,7 @@ export default {
|
||||
setRangeToCustom() {
|
||||
this.selectedRange = 'Custom'
|
||||
},
|
||||
|
||||
async viewReportsPDF() {
|
||||
let data = await this.getReports()
|
||||
window.open(this.getReportUrl, '_blank')
|
||||
@ -257,7 +262,7 @@ export default {
|
||||
return true
|
||||
}
|
||||
|
||||
this.url = `${this.siteURL}?from_date=${this.formData.from_date}&to_date=${this.formData.to_date}`
|
||||
this.url = this.dateRangeUrl
|
||||
return true
|
||||
},
|
||||
|
||||
@ -269,7 +274,7 @@ export default {
|
||||
window.open(this.getReportUrl + '&download=true')
|
||||
|
||||
setTimeout(() => {
|
||||
this.url = `${this.siteURL}?from_date=${this.formData.from_date}&to_date=${this.formData.to_date}`
|
||||
this.url = this.dateRangeUrl
|
||||
}, 200)
|
||||
},
|
||||
},
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
:calendar-button="true"
|
||||
calendar-button-icon="calendar"
|
||||
class="mt-2"
|
||||
@change="$v.formData.from_date.$touch()"
|
||||
@input="$v.formData.from_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
|
||||
@ -44,7 +44,7 @@
|
||||
:calendar-button="true"
|
||||
calendar-button-icon="calendar"
|
||||
class="mt-2"
|
||||
@change="$v.formData.to_date.$touch()"
|
||||
@input="$v.formData.to_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
</div>
|
||||
@ -162,6 +162,14 @@ export default {
|
||||
return this.$t('validation.required')
|
||||
}
|
||||
},
|
||||
|
||||
dateRangeUrl() {
|
||||
return `${this.siteURL}?from_date=${moment(
|
||||
this.formData.from_date
|
||||
).format('YYYY-MM-DD')}&to_date=${moment(this.formData.to_date).format(
|
||||
'YYYY-MM-DD'
|
||||
)}`
|
||||
},
|
||||
},
|
||||
|
||||
watch: {
|
||||
@ -173,17 +181,14 @@ export default {
|
||||
|
||||
mounted() {
|
||||
this.siteURL = `/reports/profit-loss/${this.getSelectedCompany.unique_hash}`
|
||||
this.url = `${this.siteURL}?from_date=${moment(
|
||||
this.formData.from_date
|
||||
).format('YYYY-MM-DD')}&to_date=${moment(this.formData.to_date).format(
|
||||
'YYYY-MM-DD'
|
||||
)}`
|
||||
this.url = this.dateRangeUrl
|
||||
},
|
||||
|
||||
methods: {
|
||||
getThisDate(type, time) {
|
||||
return moment()[type](time).toString()
|
||||
},
|
||||
|
||||
getPreDate(type, time) {
|
||||
return moment().subtract(1, time)[type](time).toString()
|
||||
},
|
||||
@ -257,7 +262,7 @@ export default {
|
||||
return true
|
||||
}
|
||||
|
||||
this.url = `${this.siteURL}?from_date=${this.formData.from_date}&to_date=${this.formData.to_date}`
|
||||
this.url = this.dateRangeUrl
|
||||
return true
|
||||
},
|
||||
|
||||
@ -268,7 +273,7 @@ export default {
|
||||
|
||||
window.open(this.getReportUrl + '&download=true')
|
||||
setTimeout(() => {
|
||||
this.url = `${this.siteURL}?from_date=${this.formData.from_date}&to_date=${this.formData.to_date}`
|
||||
this.url = this.dateRangeUrl
|
||||
}, 200)
|
||||
},
|
||||
},
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
:calendar-button="true"
|
||||
calendar-button-icon="calendar"
|
||||
class="mt-2"
|
||||
@change="$v.formData.from_date.$touch()"
|
||||
@input="$v.formData.from_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
:calendar-button="true"
|
||||
calendar-button-icon="calendar"
|
||||
class="mt-2"
|
||||
@change="$v.formData.to_date.$touch()"
|
||||
@input="$v.formData.to_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
</div>
|
||||
@ -147,6 +147,7 @@ export default {
|
||||
|
||||
computed: {
|
||||
...mapGetters('company', ['getSelectedCompany']),
|
||||
|
||||
getReportUrl() {
|
||||
return this.url
|
||||
},
|
||||
@ -180,6 +181,22 @@ export default {
|
||||
return this.$t('validation.required')
|
||||
}
|
||||
},
|
||||
|
||||
customerDateRangeUrl() {
|
||||
return `${this.customerSiteURL}?from_date=${moment(
|
||||
this.formData.from_date
|
||||
).format('YYYY-MM-DD')}&to_date=${moment(this.formData.to_date).format(
|
||||
'YYYY-MM-DD'
|
||||
)}`
|
||||
},
|
||||
|
||||
itemDateRangeUrl() {
|
||||
return `${this.itemsSiteURL}?from_date=${moment(
|
||||
this.formData.from_date
|
||||
).format('YYYY-MM-DD')}&to_date=${moment(this.formData.to_date).format(
|
||||
'YYYY-MM-DD'
|
||||
)}`
|
||||
},
|
||||
},
|
||||
|
||||
watch: {
|
||||
@ -197,6 +214,7 @@ export default {
|
||||
|
||||
methods: {
|
||||
...mapActions('salesReport', ['loadLinkByCustomer', 'loadLinkByItems']),
|
||||
|
||||
getThisDate(type, time) {
|
||||
return moment()[type](time).toString()
|
||||
},
|
||||
@ -263,18 +281,10 @@ export default {
|
||||
|
||||
async getInitialReport() {
|
||||
if (this.selectedType === 'By Customer') {
|
||||
this.url = `${this.customerSiteURL}?from_date=${moment(
|
||||
this.formData.from_date
|
||||
).format('YYYY-MM-DD')}&to_date=${moment(this.formData.to_date).format(
|
||||
'YYYY-MM-DD'
|
||||
)}`
|
||||
this.url = this.customerDateRangeUrl
|
||||
return true
|
||||
}
|
||||
this.url = `${this.itemsSiteURL}?from_date=${moment(
|
||||
this.formData.from_date
|
||||
).format('YYYY-MM-DD')}&to_date=${moment(this.formData.to_date).format(
|
||||
'YYYY-MM-DD'
|
||||
)}`
|
||||
this.url = this.itemDateRangeUrl
|
||||
return true
|
||||
},
|
||||
|
||||
@ -291,10 +301,10 @@ export default {
|
||||
return true
|
||||
}
|
||||
if (this.selectedType === 'By Customer') {
|
||||
this.url = `${this.customerSiteURL}?from_date=${this.formData.from_date}&to_date=${this.formData.to_date}`
|
||||
this.url = this.customerDateRangeUrl
|
||||
return true
|
||||
}
|
||||
this.url = `${this.itemsSiteURL}?from_date=${this.formData.from_date}&to_date=${this.formData.to_date}`
|
||||
this.url = this.itemDateRangeUrl
|
||||
return true
|
||||
},
|
||||
|
||||
@ -306,10 +316,10 @@ export default {
|
||||
window.open(this.getReportUrl + '&download=true')
|
||||
setTimeout(() => {
|
||||
if (this.selectedType === 'By Customer') {
|
||||
this.url = `${this.customerSiteURL}?from_date=${this.formData.from_date}&to_date=${this.formData.to_date}`
|
||||
this.url = this.customerDateRangeUrl
|
||||
return true
|
||||
}
|
||||
this.url = `${this.itemsSiteURL}?from_date=${this.formData.from_date}&to_date=${this.formData.to_date}`
|
||||
this.url = this.itemDateRangeUrl
|
||||
return true
|
||||
}, 200)
|
||||
},
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
:calendar-button="true"
|
||||
calendar-button-icon="calendar"
|
||||
class="mt-2"
|
||||
@change="$v.formData.from_date.$touch()"
|
||||
@input="$v.formData.from_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
:calendar-button="true"
|
||||
calendar-button-icon="calendar"
|
||||
class="mt-2"
|
||||
@change="$v.formData.to_date.$touch()"
|
||||
@input="$v.formData.to_date.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
</div>
|
||||
@ -151,21 +151,28 @@ export default {
|
||||
return this.$t('validation.required')
|
||||
}
|
||||
},
|
||||
|
||||
dateRangeUrl() {
|
||||
return `${this.siteURL}?from_date=${moment(
|
||||
this.formData.from_date
|
||||
).format('YYYY-MM-DD')}&to_date=${moment(this.formData.to_date).format(
|
||||
'YYYY-MM-DD'
|
||||
)}`
|
||||
},
|
||||
},
|
||||
|
||||
watch: {
|
||||
range(newRange) {
|
||||
this.formData.from_date = moment(newRange).startOf('year').toString()
|
||||
this.formData.to_date = moment(newRange).endOf('year').toString()
|
||||
},
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.siteURL = `/reports/tax-summary/${this.getSelectedCompany.unique_hash}`
|
||||
this.url = `${this.siteURL}?from_date=${moment(
|
||||
this.formData.from_date
|
||||
).format('YYYY-MM-DD')}&to_date=${moment(this.formData.to_date).format(
|
||||
'YYYY-MM-DD'
|
||||
)}`
|
||||
this.url = this.dateRangeUrl
|
||||
},
|
||||
|
||||
methods: {
|
||||
getThisDate(type, time) {
|
||||
return moment()[type](time).toString()
|
||||
@ -240,7 +247,7 @@ export default {
|
||||
return false
|
||||
}
|
||||
|
||||
this.url = `${this.siteURL}?from_date=${this.formData.from_date}&to_date=${this.formData.to_date}`
|
||||
this.url = this.dateRangeUrl
|
||||
return true
|
||||
},
|
||||
downloadReport() {
|
||||
@ -251,7 +258,7 @@ export default {
|
||||
window.open(this.url + '&download=true')
|
||||
|
||||
setTimeout(() => {
|
||||
this.url = `${this.siteURL}?from_date=${this.formData.from_date}&to_date=${this.formData.to_date}`
|
||||
this.url = this.dateRangeUrl
|
||||
}, 200)
|
||||
},
|
||||
},
|
||||
|
||||
@ -47,12 +47,12 @@
|
||||
>
|
||||
{{ updateData.version }}
|
||||
</label>
|
||||
<p
|
||||
class="mb-8 text-sm leading-snug text-gray-500"
|
||||
<div
|
||||
class="pl-5 mt-4 mb-8 text-sm leading-snug text-gray-500 update-description"
|
||||
style="white-space: pre-wrap; max-width: 480px"
|
||||
v-html="description"
|
||||
>
|
||||
</p>
|
||||
></div>
|
||||
|
||||
<label class="text-sm not-italic font-medium input-label">
|
||||
{{ $t('settings.update_app.requirements') }}
|
||||
</label>
|
||||
@ -211,7 +211,7 @@ export default {
|
||||
},
|
||||
hasUiUpdate() {
|
||||
return this.updateData.version != '4.0.0'
|
||||
}
|
||||
},
|
||||
},
|
||||
created() {
|
||||
window.addEventListener('beforeunload', (event) => {
|
||||
@ -358,3 +358,10 @@ export default {
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.update-description ul li {
|
||||
list-style: disc !important;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -313,59 +313,53 @@ export default {
|
||||
name: this.formData.name,
|
||||
email: this.formData.email,
|
||||
}
|
||||
|
||||
if (
|
||||
this.formData.password != null &&
|
||||
this.formData.password !== undefined &&
|
||||
this.formData.password !== ''
|
||||
) {
|
||||
data = { ...data, password: this.formData.password }
|
||||
}
|
||||
|
||||
let response = await this.updateCurrentUser(data)
|
||||
|
||||
let languageData = {
|
||||
settings: {
|
||||
language: this.language.code,
|
||||
},
|
||||
}
|
||||
|
||||
let languageRes = await this.updateUserSettings(languageData)
|
||||
|
||||
// if(languageRes) {
|
||||
// window.i18n.locale = this.language.code
|
||||
// }
|
||||
|
||||
if (response.data.success) {
|
||||
this.isLoading = false
|
||||
|
||||
if (this.fileObject && this.previewAvatar) {
|
||||
let avatarData = new FormData()
|
||||
|
||||
avatarData.append(
|
||||
'admin_avatar',
|
||||
JSON.stringify({
|
||||
name: this.fileObject.name,
|
||||
data: this.previewAvatar,
|
||||
})
|
||||
)
|
||||
this.uploadAvatar(avatarData)
|
||||
try {
|
||||
if (
|
||||
this.formData.password != null &&
|
||||
this.formData.password !== undefined &&
|
||||
this.formData.password !== ''
|
||||
) {
|
||||
data = { ...data, password: this.formData.password }
|
||||
}
|
||||
|
||||
window.toastr['success'](
|
||||
this.$t('settings.account_settings.updated_message')
|
||||
)
|
||||
let response = await this.updateCurrentUser(data)
|
||||
|
||||
this.formData.password = ''
|
||||
this.formData.confirm_password = ''
|
||||
let languageData = {
|
||||
settings: {
|
||||
language: this.language.code,
|
||||
},
|
||||
}
|
||||
|
||||
let languageRes = await this.updateUserSettings(languageData)
|
||||
|
||||
if (response.data.success) {
|
||||
this.isLoading = false
|
||||
|
||||
if (this.fileObject && this.previewAvatar) {
|
||||
let avatarData = new FormData()
|
||||
|
||||
avatarData.append(
|
||||
'admin_avatar',
|
||||
JSON.stringify({
|
||||
name: this.fileObject.name,
|
||||
data: this.previewAvatar,
|
||||
})
|
||||
)
|
||||
|
||||
this.uploadAvatar(avatarData)
|
||||
}
|
||||
|
||||
window.toastr['success'](
|
||||
this.$t('settings.account_settings.updated_message')
|
||||
)
|
||||
|
||||
this.formData.password = ''
|
||||
this.formData.confirm_password = ''
|
||||
}
|
||||
} catch (error) {
|
||||
this.isLoading = false
|
||||
return true
|
||||
}
|
||||
|
||||
window.toastr['error'](response.data.error)
|
||||
|
||||
this.isLoading = false
|
||||
|
||||
return true
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -354,7 +354,7 @@
|
||||
<h1 class="header-logo"> {{$estimate->user->company->name}} </h1>
|
||||
@endif
|
||||
</td>
|
||||
<td width="50%" class="company-address-container company-address">
|
||||
<td width="50%" class="company-address-container company-address text-right">
|
||||
{!! $company_address !!}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -273,7 +273,7 @@
|
||||
}
|
||||
|
||||
.total-table-attribute-value {
|
||||
font-weight: 500;
|
||||
font-weight: bold;
|
||||
text-align: right;
|
||||
font-size: 12px;
|
||||
color: #040405;
|
||||
|
||||
@ -314,7 +314,7 @@
|
||||
<h1 class="header-logo"> {{$invoice->user->company->name}} </h1>
|
||||
@endif
|
||||
</td>
|
||||
<td width="50%" class="company-address-container company-address">
|
||||
<td width="50%" class="company-address-container company-address text-right">
|
||||
{!! $company_address !!}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -65,6 +65,10 @@
|
||||
float: right;
|
||||
} */
|
||||
|
||||
.header-section-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.header {
|
||||
font-size: 20px;
|
||||
color: rgba(0, 0, 0, 0.7);
|
||||
@ -226,7 +230,7 @@
|
||||
}
|
||||
|
||||
.content-heading span {
|
||||
font-weight: 400;
|
||||
font-weight: normal;
|
||||
font-size: 14px;
|
||||
line-height: 25px;
|
||||
padding-bottom: 5px;
|
||||
@ -248,7 +252,7 @@
|
||||
|
||||
.total-display-label {
|
||||
display: inline;
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
line-height: 21px;
|
||||
color: #595959;
|
||||
@ -256,7 +260,7 @@
|
||||
|
||||
.total-display-box span {
|
||||
float: right;
|
||||
font-weight: 500;
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
line-height: 21px;
|
||||
text-align: right;
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
}
|
||||
|
||||
.heading-text {
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 24px;
|
||||
color: #5851D8;
|
||||
width: 100%;
|
||||
@ -30,7 +30,7 @@
|
||||
}
|
||||
|
||||
.heading-date-range {
|
||||
font-weight: 600;
|
||||
font-weight: normal;
|
||||
font-size: 15px;
|
||||
color: #A5ACC1;
|
||||
width: 100%;
|
||||
@ -40,7 +40,7 @@
|
||||
}
|
||||
|
||||
.sub-heading-text {
|
||||
font-weight: 600;
|
||||
font-weight: normal;
|
||||
font-size: 16px;
|
||||
color: #595959;
|
||||
padding: 0px;
|
||||
@ -98,7 +98,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: right;
|
||||
font-weight: 500;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
line-height: 21px;
|
||||
text-align: right;
|
||||
@ -117,7 +117,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: left;
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
line-height: 21px;
|
||||
color: #595959;
|
||||
@ -127,7 +127,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: right;
|
||||
font-weight: 500;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
line-height: 21px;
|
||||
color: #5851D8;
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
}
|
||||
|
||||
.heading-text {
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 24px;
|
||||
color: #5851D8;
|
||||
width: 100%;
|
||||
@ -30,7 +30,7 @@
|
||||
}
|
||||
|
||||
.heading-date-range {
|
||||
font-weight: 600;
|
||||
font-weight: normal;
|
||||
font-size: 15px;
|
||||
color: #A5ACC1;
|
||||
width: 100%;
|
||||
@ -40,7 +40,7 @@
|
||||
}
|
||||
|
||||
.sub-heading-text {
|
||||
font-weight: 600;
|
||||
font-weight: normal;
|
||||
font-size: 16px;
|
||||
color: #595959;
|
||||
padding: 0px;
|
||||
@ -65,7 +65,7 @@
|
||||
.income-amount {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
font-weight: 500;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
line-height: 21px;
|
||||
text-align: right;
|
||||
@ -123,7 +123,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: right;
|
||||
font-weight: 500;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
line-height: 21px;
|
||||
text-align: right;
|
||||
@ -142,7 +142,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: left;
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
line-height: 21px;
|
||||
color: #595959;
|
||||
@ -152,7 +152,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: right;
|
||||
font-weight: 500;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
line-height: 21px;
|
||||
color: #5851D8;
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
}
|
||||
|
||||
.heading-text {
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 24px;
|
||||
color: #5851D8;
|
||||
width: 100%;
|
||||
@ -30,7 +30,7 @@
|
||||
}
|
||||
|
||||
.heading-date-range {
|
||||
font-weight: 600;
|
||||
font-weight: normal;
|
||||
font-size: 15px;
|
||||
color: #A5ACC1;
|
||||
width: 100%;
|
||||
@ -40,7 +40,7 @@
|
||||
}
|
||||
|
||||
.sub-heading-text {
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
line-height: 21px;
|
||||
color: #595959;
|
||||
@ -98,7 +98,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: right;
|
||||
font-weight: 500;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
line-height: 21px;
|
||||
text-align: right;
|
||||
@ -117,7 +117,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: left;
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
line-height: 21px;
|
||||
color: #595959;
|
||||
@ -127,7 +127,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: right;
|
||||
font-weight: 500;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
line-height: 21px;
|
||||
color: #5851D8;
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
}
|
||||
|
||||
.heading-text {
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 24px;
|
||||
color: #5851D8;
|
||||
width: 100%;
|
||||
@ -30,7 +30,7 @@
|
||||
}
|
||||
|
||||
.heading-date-range {
|
||||
font-weight: 600;
|
||||
font-weight: normal;
|
||||
font-size: 15px;
|
||||
color: #A5ACC1;
|
||||
width: 100%;
|
||||
@ -40,7 +40,7 @@
|
||||
}
|
||||
|
||||
.sub-heading-text {
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
line-height: 21px;
|
||||
color: #595959;
|
||||
@ -98,7 +98,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: right;
|
||||
font-weight: 500;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
line-height: 21px;
|
||||
text-align: right;
|
||||
@ -117,7 +117,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: left;
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
line-height: 21px;
|
||||
color: #595959;
|
||||
@ -127,7 +127,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: right;
|
||||
font-weight: 500;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
line-height: 21px;
|
||||
color: #5851D8;
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
}
|
||||
|
||||
.heading-text {
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 24px;
|
||||
color: #5851D8;
|
||||
width: 100%;
|
||||
@ -31,7 +31,7 @@
|
||||
}
|
||||
|
||||
.heading-date-range {
|
||||
font-weight: 600;
|
||||
font-weight: normal;
|
||||
font-size: 15px;
|
||||
color: #A5ACC1;
|
||||
width: 100%;
|
||||
@ -41,7 +41,7 @@
|
||||
}
|
||||
|
||||
.sub-heading-text {
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
color: #595959;
|
||||
padding: 0px;
|
||||
@ -99,7 +99,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: right;
|
||||
font-weight: 500;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
line-height: 21px;
|
||||
text-align: right;
|
||||
@ -118,7 +118,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: left;
|
||||
font-weight: 600;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
line-height: 21px;
|
||||
color: #595959;
|
||||
@ -128,7 +128,7 @@
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
text-align: right;
|
||||
font-weight: 500;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
line-height: 21px;
|
||||
color: #5851D8;
|
||||
|
||||
@ -96,12 +96,6 @@ Route::prefix('/v1')->group(function () {
|
||||
Route::get('/app/version', AppVersionController::class);
|
||||
|
||||
|
||||
// Email is registered
|
||||
// ----------------------------------
|
||||
|
||||
Route::get('/is/registered', IsRegisteredController::class);
|
||||
|
||||
|
||||
// Authentication & Password Reset
|
||||
//----------------------------------
|
||||
|
||||
@ -112,7 +106,7 @@ Route::prefix('/v1')->group(function () {
|
||||
Route::post('logout', [AuthController::class, 'logout'])->middleware('auth:sanctum');
|
||||
|
||||
// Send reset password mail
|
||||
Route::post('password/email', [ForgotPasswordController::class, 'sendResetLinkEmail']);
|
||||
Route::post('password/email', [ForgotPasswordController::class, 'sendResetLinkEmail'])->middleware("throttle:10,2");;
|
||||
|
||||
// handle reset password form process
|
||||
Route::post('reset/password', [ResetPasswordController::class, 'reset']);
|
||||
|
||||
Reference in New Issue
Block a user