mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-27 11:41:09 -04:00
Compare commits
109 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 633cad9b89 | |||
| f5bbe68a4b | |||
| 1fac9c9dde | |||
| 1208d3a924 | |||
| 3257b18d58 | |||
| 16a941f787 | |||
| 4f5cd9fba1 | |||
| 80e6a3c757 | |||
| d4e7420640 | |||
| ac30ba599b | |||
| 6dd0ccce8b | |||
| 2f32ff4d5b | |||
| 54a5ca83f8 | |||
| eede2fc17f | |||
| e586adde26 | |||
| 1ffb1b2eec | |||
| 55d838371a | |||
| cdaa1ff103 | |||
| 63f7cdec82 | |||
| fadba7fa3a | |||
| d0f6e207ee | |||
| 845f01f170 | |||
| 7f9938c80d | |||
| 16e4212300 | |||
| 109de237b1 | |||
| 82cf63f200 | |||
| 03fc0fd659 | |||
| c3d3e5e35f | |||
| 909e4f93e4 | |||
| bfd9850bf6 | |||
| 3f7db2793f | |||
| 8693672b09 | |||
| a9b0d62cd6 | |||
| 9f57a4200f | |||
| 9e130b3db8 | |||
| 7c9a846090 | |||
| b2e08dda7f | |||
| a2026fbc8b | |||
| db1b0db461 | |||
| 17c00c322d | |||
| 331b8ea44e | |||
| 428be640c3 | |||
| 51f79433b9 | |||
| 8008ed0527 | |||
| 57b302666a | |||
| ee1d1ccff4 | |||
| 81e7109ad1 | |||
| 784bf39df5 | |||
| f66755c4aa | |||
| b4e1e99d37 | |||
| d8aa3dc8a6 | |||
| 9af51660cb | |||
| 38d0da9618 | |||
| 761c0143ec | |||
| fdc4de5093 | |||
| f8591f96a9 | |||
| e47cb01ce2 | |||
| 454ad3091a | |||
| cc73a8a842 | |||
| cea8405ace | |||
| 49a6e03e9d | |||
| f9d6e8b0cc | |||
| 2b78aacc83 | |||
| 1932c5a75e | |||
| 449968ae88 | |||
| 02a2db4417 | |||
| a53582f916 | |||
| 340bf3be06 | |||
| 7f0da9dc36 | |||
| c4ace76275 | |||
| 553bcc053b | |||
| 375a59a504 | |||
| cfc0a1ef75 | |||
| 392f6f469b | |||
| 6cb8d30915 | |||
| 9b55e84724 | |||
| cf5da7684b | |||
| f47029ca78 | |||
| 761df2ffac | |||
| 8fbc257b23 | |||
| baebfedf37 | |||
| 9321eb9d86 | |||
| 70bed01e7b | |||
| 739efcce79 | |||
| 3695e7d075 | |||
| 8f2033f621 | |||
| 7b95ccb5fc | |||
| b7370ed85c | |||
| 818f2fbaf7 | |||
| 91a1dbf91c | |||
| a4d556f41e | |||
| 83de1c47ee | |||
| 678ace744a | |||
| 9e26fee1b0 | |||
| e455c3de50 | |||
| c4db50d3f0 | |||
| 411ee57946 | |||
| 9c5e9e56f5 | |||
| 8eeafd3fed | |||
| ed978d0174 | |||
| 607b1795bb | |||
| a6c3c815b5 | |||
| ead0ebb012 | |||
| d4550e62f8 | |||
| ff3846137e | |||
| b55f8e5391 | |||
| 0f1d7627ea | |||
| 1be462ef82 | |||
| 8b04e94446 |
21
.eslintrc
21
.eslintrc
@ -1,21 +0,0 @@
|
||||
{
|
||||
"root": true,
|
||||
"extends": [
|
||||
"plugin:vue/recommended",
|
||||
"eslint:recommended",
|
||||
"prettier/vue",
|
||||
"plugin:prettier/recommended"
|
||||
],
|
||||
"rules": {
|
||||
"vue/max-attributes-per-line": [
|
||||
"error",
|
||||
{
|
||||
"singleline": 20,
|
||||
"multiline": {
|
||||
"max": 1,
|
||||
"allowFirstLine": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
20
.eslintrc.js
Normal file
20
.eslintrc.js
Normal file
@ -0,0 +1,20 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
node: true,
|
||||
},
|
||||
extends: [
|
||||
'plugin:vue/recommended',
|
||||
'eslint:recommended',
|
||||
'prettier/vue',
|
||||
'plugin:prettier/recommended',
|
||||
],
|
||||
parserOptions: {
|
||||
parser: 'babel-eslint',
|
||||
},
|
||||
plugins: ['prettier'],
|
||||
rules: {
|
||||
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||
},
|
||||
}
|
||||
34
.github/workflows/ci.yaml
vendored
Normal file
34
.github/workflows/ci.yaml
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
name: CI
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build-test:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php: ['7.4', '8.0']
|
||||
|
||||
name: PHP ${{ matrix.php }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Install dependencies
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php }}
|
||||
extensions: exif
|
||||
|
||||
- name: Install PHP 7 dependencies
|
||||
run: composer update --no-interaction --no-progress
|
||||
if: "matrix.php < 8"
|
||||
|
||||
- name: Install PHP 8 dependencies
|
||||
run: composer update --ignore-platform-req=php --no-interaction --no-progress
|
||||
if: "matrix.php >= 8"
|
||||
|
||||
- name: Unit Tests
|
||||
run: php ./vendor/bin/pest
|
||||
@ -37,14 +37,6 @@ class MailEnvironmentRequest extends FormRequest
|
||||
'mail_port' => [
|
||||
'required'
|
||||
],
|
||||
'mail_username' => [
|
||||
'required',
|
||||
'string'
|
||||
],
|
||||
'mail_password' => [
|
||||
'required',
|
||||
'string'
|
||||
],
|
||||
'mail_encryption' => [
|
||||
'required',
|
||||
'string'
|
||||
|
||||
@ -40,9 +40,16 @@ class SendEstimateMail extends Mailable
|
||||
'mailable_id' => $this->data['estimate']['id']
|
||||
]);
|
||||
|
||||
return $this->from($this->data['from'])
|
||||
$mailContent = $this->from($this->data['from'], config('mail.from.name'))
|
||||
->subject($this->data['subject'])
|
||||
->markdown('emails.send.estimate', ['data', $this->data]);
|
||||
|
||||
if ($this->data['attach']['data'])
|
||||
$mailContent->attachData(
|
||||
$this->data['attach']['data']->output(),
|
||||
$this->data['estimate']['estimate_number'] . '.pdf'
|
||||
);
|
||||
|
||||
return $mailContent;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace Crater\Mail;
|
||||
|
||||
use Config;
|
||||
use Crater\Models\EmailLog;
|
||||
use Crater\Models\Invoice;
|
||||
use Illuminate\Bus\Queueable;
|
||||
@ -40,8 +41,16 @@ class SendInvoiceMail extends Mailable
|
||||
'mailable_id' => $this->data['invoice']['id']
|
||||
]);
|
||||
|
||||
return $this->from($this->data['from'])
|
||||
->subject($this->data['subject'])
|
||||
->markdown('emails.send.invoice', ['data', $this->data]);
|
||||
$mailContent = $this->from($this->data['from'], config('mail.from.name'))
|
||||
->subject($this->data['subject'])
|
||||
->markdown('emails.send.invoice', ['data', $this->data]);
|
||||
|
||||
if ($this->data['attach']['data'])
|
||||
$mailContent->attachData(
|
||||
$this->data['attach']['data']->output(),
|
||||
$this->data['invoice']['invoice_number'] . '.pdf'
|
||||
);
|
||||
|
||||
return $mailContent;
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,9 +41,16 @@ class SendPaymentMail extends Mailable
|
||||
'mailable_id' => $this->data['payment']['id']
|
||||
]);
|
||||
|
||||
return $this->from($this->data['from'])
|
||||
$mailContent = $this->from($this->data['from'], config('mail.from.name'))
|
||||
->subject($this->data['subject'])
|
||||
->markdown('emails.send.payment', ['data', $this->data]);
|
||||
|
||||
if ($this->data['attach']['data'])
|
||||
$mailContent->attachData(
|
||||
$this->data['attach']['data']->output(),
|
||||
$this->data['payment']['payment_number'] . '.pdf'
|
||||
);
|
||||
|
||||
return $mailContent;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Crater\Models;
|
||||
|
||||
use Crater\Models\Address;
|
||||
@ -17,15 +18,34 @@ class Company extends Model implements HasMedia
|
||||
|
||||
protected $fillable = ['name', 'logo', 'unique_hash'];
|
||||
|
||||
protected $appends=['logo'];
|
||||
protected $appends = ['logo', 'logo_path'];
|
||||
|
||||
public function getLogoPathAttribute()
|
||||
{
|
||||
$logo = $this->getMedia('logo')->first();
|
||||
|
||||
$isSystem = FileDisk::whereSetAsDefault(true)->first()->isSystem();
|
||||
|
||||
if ($logo) {
|
||||
if ($isSystem) {
|
||||
return $logo->getPath();
|
||||
} else {
|
||||
return $logo->getFullUrl();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public function getLogoAttribute()
|
||||
{
|
||||
$logo = $this->getMedia('logo')->first();
|
||||
|
||||
if ($logo) {
|
||||
return asset($logo->getUrl());
|
||||
return $logo->getFullUrl();
|
||||
}
|
||||
return ;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public function user()
|
||||
|
||||
@ -22,17 +22,26 @@ class CustomFieldValue extends Model
|
||||
|
||||
public function setDateAnswerAttribute($value)
|
||||
{
|
||||
$this->attributes['date_answer'] = Carbon::createFromFormat('Y-m-d', $value);
|
||||
if ($value && $value != null) {
|
||||
$this->attributes['date_answer'] = Carbon::createFromFormat('Y-m-d', $value);
|
||||
}
|
||||
$this->attributes['date_answer'] = null;
|
||||
}
|
||||
|
||||
public function setTimeAnswerAttribute($value)
|
||||
{
|
||||
$this->attributes['time_answer'] = date("H:i:s", strtotime($value));
|
||||
if ($value && $value != null) {
|
||||
$this->attributes['time_answer'] = date("H:i:s", strtotime($value));
|
||||
}
|
||||
$this->attributes['time_answer'] = null;
|
||||
}
|
||||
|
||||
public function setDateTimeAnswerAttribute($value)
|
||||
{
|
||||
$this->attributes['date_time_answer'] = Carbon::createFromFormat('Y-m-d H:i', $value);
|
||||
if ($value && $value != null) {
|
||||
$this->attributes['date_time_answer'] = Carbon::createFromFormat('Y-m-d H:i', $value);
|
||||
}
|
||||
$this->attributes['time_answer'] = null;
|
||||
}
|
||||
|
||||
public function getDefaultAnswerAttribute()
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
namespace Crater\Models;
|
||||
|
||||
use App;
|
||||
use Crater\Models\EstimateTemplate;
|
||||
use Crater\Models\Company;
|
||||
use Crater\Models\Tax;
|
||||
@ -33,9 +34,7 @@ class Estimate extends Model implements HasMedia
|
||||
protected $dates = [
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'deleted_at',
|
||||
'estimate_date',
|
||||
'expiry_date'
|
||||
'deleted_at'
|
||||
];
|
||||
|
||||
protected $appends = [
|
||||
@ -77,9 +76,13 @@ class Estimate extends Model implements HasMedia
|
||||
{
|
||||
// Get the last created order
|
||||
$lastOrder = Estimate::where('estimate_number', 'LIKE', $value . '-%')
|
||||
->orderBy('created_at', 'desc')
|
||||
->orderBy('estimate_number', 'desc')
|
||||
->first();
|
||||
|
||||
// Get number length config
|
||||
$numberLength = CompanySetting::getSetting('estimate_number_length', request()->header('company'));
|
||||
$numberLengthText = "%0{$numberLength}d";
|
||||
|
||||
if (!$lastOrder) {
|
||||
// We get here if there is no order at all
|
||||
// If there is no number set it to 0, which will be 1 at the end.
|
||||
@ -96,7 +99,7 @@ class Estimate extends Model implements HasMedia
|
||||
// the %05d part makes sure that there are always 6 numbers in the string.
|
||||
// so it adds the missing zero's when needed.
|
||||
|
||||
return sprintf('%06d', intval($number) + 1);
|
||||
return sprintf($numberLengthText, intval($number) + 1);
|
||||
}
|
||||
|
||||
public function emailLogs()
|
||||
@ -381,6 +384,7 @@ class Estimate extends Model implements HasMedia
|
||||
$data['user'] = $this->user->toArray();
|
||||
$data['company'] = $this->company->toArray();
|
||||
$data['body'] = $this->getEmailBody($data['body']);
|
||||
$data['attach']['data'] = ($this->getEmailAttachmentSetting()) ? $this->getPDFData() : null;
|
||||
|
||||
\Mail::to($data['to'])->send(new SendEstimateMail($data));
|
||||
|
||||
@ -428,16 +432,11 @@ class Estimate extends Model implements HasMedia
|
||||
$estimateTemplate = EstimateTemplate::find($this->estimate_template_id);
|
||||
|
||||
$company = Company::find($this->company_id);
|
||||
$logo = $company->getMedia('logo')->first();
|
||||
$locale = CompanySetting::getSetting('language', $company->id);
|
||||
|
||||
$isSystem = FileDisk::whereSetAsDefault(true)->first()->isSystem();
|
||||
$isLocalhost = config('session.domain') === 'localhost';
|
||||
App::setLocale($locale);
|
||||
|
||||
if ($logo && $isLocalhost && $isSystem) {
|
||||
$logo = $logo->getPath();
|
||||
} else if($logo) {
|
||||
$logo = $logo->getFullUrl();
|
||||
}
|
||||
$logo = $company->logo_path;
|
||||
|
||||
view()->share([
|
||||
'estimate' => $this,
|
||||
@ -479,6 +478,17 @@ class Estimate extends Model implements HasMedia
|
||||
return $this->getFormattedString($this->notes);
|
||||
}
|
||||
|
||||
public function getEmailAttachmentSetting()
|
||||
{
|
||||
$estimateAsAttachment = CompanySetting::getSetting('estimate_email_attachment', $this->company_id);
|
||||
|
||||
if ($estimateAsAttachment == 'NO') {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getEmailBody($body)
|
||||
{
|
||||
$values = array_merge($this->getFieldsArray(), $this->getExtraFields());
|
||||
|
||||
@ -22,7 +22,8 @@ class EstimateItem extends Model
|
||||
'discount_val',
|
||||
'tax',
|
||||
'total',
|
||||
'discount'
|
||||
'discount',
|
||||
'unit_name',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
namespace Crater\Models;
|
||||
|
||||
use App;
|
||||
use Crater\Models\Company;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Crater\Models\Currency;
|
||||
@ -39,9 +40,7 @@ class Invoice extends Model implements HasMedia
|
||||
protected $dates = [
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'deleted_at',
|
||||
'invoice_date',
|
||||
'due_date'
|
||||
'deleted_at'
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
@ -81,9 +80,12 @@ class Invoice extends Model implements HasMedia
|
||||
{
|
||||
// Get the last created order
|
||||
$lastOrder = Invoice::where('invoice_number', 'LIKE', $value . '-%')
|
||||
->orderBy('created_at', 'desc')
|
||||
->orderBy('invoice_number', 'desc')
|
||||
->first();
|
||||
|
||||
// Get number length config
|
||||
$numberLength = CompanySetting::getSetting('invoice_number_length', request()->header('company'));
|
||||
$numberLengthText = "%0{$numberLength}d";
|
||||
|
||||
if (!$lastOrder) {
|
||||
// We get here if there is no order at all
|
||||
@ -100,7 +102,7 @@ class Invoice extends Model implements HasMedia
|
||||
// the %06d part makes sure that there are always 6 numbers in the string.
|
||||
// so it adds the missing zero's when needed.
|
||||
|
||||
return sprintf('%06d', intval($number) + 1);
|
||||
return sprintf($numberLengthText, intval($number) + 1);
|
||||
}
|
||||
|
||||
public function emailLogs()
|
||||
@ -363,11 +365,11 @@ class Invoice extends Model implements HasMedia
|
||||
}
|
||||
|
||||
$invoice = Invoice::with([
|
||||
'items',
|
||||
'user',
|
||||
'invoiceTemplate',
|
||||
'taxes'
|
||||
])
|
||||
'items',
|
||||
'user',
|
||||
'invoiceTemplate',
|
||||
'taxes'
|
||||
])
|
||||
->find($invoice->id);
|
||||
|
||||
return $invoice;
|
||||
@ -431,6 +433,7 @@ class Invoice extends Model implements HasMedia
|
||||
$data['user'] = $this->user->toArray();
|
||||
$data['company'] = Company::find($this->company_id);
|
||||
$data['body'] = $this->getEmailBody($data['body']);
|
||||
$data['attach']['data'] = ($this->getEmailAttachmentSetting()) ? $this->getPDFData() : null;
|
||||
|
||||
if ($this->status == Invoice::STATUS_DRAFT) {
|
||||
$this->status = Invoice::STATUS_SENT;
|
||||
@ -511,17 +514,11 @@ class Invoice extends Model implements HasMedia
|
||||
$invoiceTemplate = InvoiceTemplate::find($this->invoice_template_id);
|
||||
|
||||
$company = Company::find($this->company_id);
|
||||
$locale = CompanySetting::getSetting('language', $company->id);
|
||||
|
||||
$logo = $company->getMedia('logo')->first();
|
||||
App::setLocale($locale);
|
||||
|
||||
$isSystem = FileDisk::whereSetAsDefault(true)->first()->isSystem();
|
||||
$isLocalhost = config('session.domain') === 'localhost';
|
||||
|
||||
if ($logo && $isLocalhost && $isSystem) {
|
||||
$logo = $logo->getPath();
|
||||
} else if($logo) {
|
||||
$logo = $logo->getFullUrl();
|
||||
}
|
||||
$logo = $company->logo_path;
|
||||
|
||||
view()->share([
|
||||
'invoice' => $this,
|
||||
@ -537,6 +534,17 @@ class Invoice extends Model implements HasMedia
|
||||
return PDF::loadView('app.pdf.invoice.' . $invoiceTemplate->view);
|
||||
}
|
||||
|
||||
public function getEmailAttachmentSetting()
|
||||
{
|
||||
$invoiceAsAttachment = CompanySetting::getSetting('invoice_email_attachment', $this->company_id);
|
||||
|
||||
if ($invoiceAsAttachment == 'NO') {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getCompanyAddress()
|
||||
{
|
||||
$format = CompanySetting::getSetting('invoice_company_address_format', $this->company_id);
|
||||
|
||||
@ -25,7 +25,8 @@ class InvoiceItem extends Model
|
||||
'discount_val',
|
||||
'total',
|
||||
'tax',
|
||||
'discount'
|
||||
'discount',
|
||||
'unit_name',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
namespace Crater\Models;
|
||||
|
||||
use App;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Crater\Models\User;
|
||||
use Crater\Models\Invoice;
|
||||
@ -31,7 +32,7 @@ class Payment extends Model implements HasMedia
|
||||
const PAYMENT_MODE_CREDIT_CARD = 'CREDIT_CARD';
|
||||
const PAYMENT_MODE_BANK_TRANSFER = 'BANK_TRANSFER';
|
||||
|
||||
protected $dates = ['created_at', 'updated_at', 'payment_date'];
|
||||
protected $dates = ['created_at', 'updated_at'];
|
||||
|
||||
protected $guarded = ['id'];
|
||||
|
||||
@ -124,6 +125,7 @@ class Payment extends Model implements HasMedia
|
||||
$data['user'] = $this->user->toArray();
|
||||
$data['company'] = Company::find($this->company_id);
|
||||
$data['body'] = $this->getEmailBody($data['body']);
|
||||
$data['attach']['data'] = ($this->getEmailAttachmentSetting()) ? $this->getPDFData() : null;
|
||||
|
||||
\Mail::to($data['to'])->send(new SendPaymentMail($data));
|
||||
|
||||
@ -216,10 +218,10 @@ class Payment extends Model implements HasMedia
|
||||
}
|
||||
|
||||
$payment = Payment::with([
|
||||
'user',
|
||||
'invoice',
|
||||
'paymentMethod',
|
||||
])
|
||||
'user',
|
||||
'invoice',
|
||||
'paymentMethod',
|
||||
])
|
||||
->find($this->id);
|
||||
|
||||
return $payment;
|
||||
@ -268,8 +270,13 @@ class Payment extends Model implements HasMedia
|
||||
{
|
||||
// Get the last created order
|
||||
$payment = Payment::where('payment_number', 'LIKE', $value . '-%')
|
||||
->orderBy('created_at', 'desc')
|
||||
->orderBy('payment_number', 'desc')
|
||||
->first();
|
||||
|
||||
// Get number length config
|
||||
$numberLength = CompanySetting::getSetting('payment_number_length', request()->header('company'));
|
||||
$numberLengthText = "%0{$numberLength}d";
|
||||
|
||||
if (!$payment) {
|
||||
// We get here if there is no order at all
|
||||
// If there is no number set it to 0, which will be 1 at the end.
|
||||
@ -285,7 +292,7 @@ class Payment extends Model implements HasMedia
|
||||
// the %05d part makes sure that there are always 6 numbers in the string.
|
||||
// so it adds the missing zero's when needed.
|
||||
|
||||
return sprintf('%06d', intval($number) + 1);
|
||||
return sprintf($numberLengthText, intval($number) + 1);
|
||||
}
|
||||
|
||||
public function scopeWhereSearch($query, $search)
|
||||
@ -372,17 +379,11 @@ class Payment extends Model implements HasMedia
|
||||
public function getPDFData()
|
||||
{
|
||||
$company = Company::find($this->company_id);
|
||||
$locale = CompanySetting::getSetting('language', $company->id);
|
||||
|
||||
$logo = $company->getMedia('logo')->first();
|
||||
\App::setLocale($locale);
|
||||
|
||||
$isSystem = FileDisk::whereSetAsDefault(true)->first()->isSystem();
|
||||
$isLocalhost = config('session.domain') === 'localhost';
|
||||
|
||||
if ($logo && $isLocalhost && $isSystem) {
|
||||
$logo = $logo->getPath();
|
||||
} else if($logo) {
|
||||
$logo = $logo->getFullUrl();
|
||||
}
|
||||
$logo = $company->logo_path;
|
||||
|
||||
view()->share([
|
||||
'payment' => $this,
|
||||
@ -409,6 +410,17 @@ class Payment extends Model implements HasMedia
|
||||
return $this->getFormattedString($format);
|
||||
}
|
||||
|
||||
public function getEmailAttachmentSetting()
|
||||
{
|
||||
$paymentAsAttachment = CompanySetting::getSetting('payment_email_attachment', $this->company_id);
|
||||
|
||||
if ($paymentAsAttachment == 'NO') {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getNotes()
|
||||
{
|
||||
return $this->getFormattedString($this->notes);
|
||||
|
||||
@ -8,9 +8,9 @@
|
||||
"license": "MIT",
|
||||
"type": "project",
|
||||
"require": {
|
||||
"php": "^7.3",
|
||||
"php": "^7.4 || ^8.0",
|
||||
"aws/aws-sdk-php": "^3.142",
|
||||
"barryvdh/laravel-dompdf": "^0.8.1",
|
||||
"barryvdh/laravel-dompdf": "^0.9.0",
|
||||
"doctrine/dbal": "^2.10",
|
||||
"fideloper/proxy": "^4.0",
|
||||
"fruitcake/laravel-cors": "^1.0",
|
||||
|
||||
1178
composer.lock
generated
1178
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -16,12 +16,16 @@ return [
|
||||
["code"=>"en", "name" => "English"],
|
||||
["code"=>"fr", "name" => "French"],
|
||||
["code"=>"de", "name" => "German"],
|
||||
["code"=>"ja", "name" => "Japanese"],
|
||||
["code"=>"it", "name" => "Italian"],
|
||||
["code"=>"lv", "name" => "Latvian"],
|
||||
["code"=>"pt_BR", "name" => "Portuguese (Brazilian)"],
|
||||
["code"=>"sr", "name" => "Serbian Latin"],
|
||||
["code"=>"ko", "name" => "Korean"],
|
||||
["code"=>"es", "name" => "Spanish"],
|
||||
["code"=>"sv", "name"=> "Svenska"]
|
||||
["code"=>"sv", "name"=> "Svenska"],
|
||||
["code"=>"sk", "name"=> "Slovak"],
|
||||
["code"=>"vi", "name"=> "Tiếng Việt"]
|
||||
],
|
||||
|
||||
/*
|
||||
|
||||
@ -80,16 +80,16 @@ class UpdateCraterVersion400 extends Migration
|
||||
|
||||
FileDisk::create([
|
||||
'credentials' => json_encode($publicDisk),
|
||||
'name'=> 'local_public',
|
||||
'type'=> 'SYSTEM',
|
||||
'name' => 'local_public',
|
||||
'type' => 'SYSTEM',
|
||||
'driver' => 'local',
|
||||
'set_as_default' => false,
|
||||
]);
|
||||
|
||||
FileDisk::create([
|
||||
'credentials' => json_encode($privateDisk),
|
||||
'name'=> 'local_private',
|
||||
'type'=> 'SYSTEM',
|
||||
'name' => 'local_private',
|
||||
'type' => 'SYSTEM',
|
||||
'driver' => 'local',
|
||||
'set_as_default' => true,
|
||||
]);
|
||||
@ -107,9 +107,9 @@ class UpdateCraterVersion400 extends Migration
|
||||
|
||||
private function updateCompanySettings($user)
|
||||
{
|
||||
$defaultInvoiceEmailBody = 'You have received a new invoice from <b>{COMPANY_NAME}</b>.</br>Please download using the button below:';
|
||||
$defaultEstimateEmailBody = 'You have received a new estimate from <b>{COMPANY_NAME}</b>.</br>Please download using the button below:';
|
||||
$defaultPaymentEmailBody = 'Thank you for the payment.</b></br>Please download your payment receipt using the button below:';
|
||||
$defaultInvoiceEmailBody = 'You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:';
|
||||
$defaultEstimateEmailBody = 'You have received a new estimate from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:';
|
||||
$defaultPaymentEmailBody = 'Thank you for the payment.</b></br> Please download your payment receipt using the button below:';
|
||||
$billingAddressFormat = '<h3>{BILLING_ADDRESS_NAME}</h3><p>{BILLING_ADDRESS_STREET_1}</p><p>{BILLING_ADDRESS_STREET_2}</p><p>{BILLING_CITY} {BILLING_STATE}</p><p>{BILLING_COUNTRY} {BILLING_ZIP_CODE}</p><p>{BILLING_PHONE}</p>';
|
||||
$shippingAddressFormat = '<h3>{SHIPPING_ADDRESS_NAME}</h3><p>{SHIPPING_ADDRESS_STREET_1}</p><p>{SHIPPING_ADDRESS_STREET_2}</p><p>{SHIPPING_CITY} {SHIPPING_STATE}</p><p>{SHIPPING_COUNTRY} {SHIPPING_ZIP_CODE}</p><p>{SHIPPING_PHONE}</p>';
|
||||
$companyAddressFormat = '<h3><strong>{COMPANY_NAME}</strong></h3><p>{COMPANY_ADDRESS_STREET_1}</p><p>{COMPANY_ADDRESS_STREET_2}</p><p>{COMPANY_CITY} {COMPANY_STATE}</p><p>{COMPANY_COUNTRY} {COMPANY_ZIP_CODE}</p><p>{COMPANY_PHONE}</p>';
|
||||
|
||||
@ -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 UpdateCraterVersion403 extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Setting::setSetting('version', '4.0.3');
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 UpdateCraterVersion404 extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Setting::setSetting('version', '4.0.4');
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class AddUnitNameToPdf extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('invoice_items', function (Blueprint $table) {
|
||||
$table->string('unit_name')->nullable()->after('quantity');
|
||||
});
|
||||
Schema::table('estimate_items', function (Blueprint $table) {
|
||||
$table->string('unit_name')->nullable()->after('quantity');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('invoice_items', function (Blueprint $table) {
|
||||
$table->dropColumn('unit_name');
|
||||
});
|
||||
Schema::table('estimate_items', function (Blueprint $table) {
|
||||
$table->dropColumn('unit_name');
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Crater\Models\User;
|
||||
|
||||
class AddNumberLengthSetting extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
$user = User::where('role', 'super admin')->first();
|
||||
|
||||
if ($user) {
|
||||
$invoice_number_length = CompanySetting::getSetting('invoice_number_length', $user->company_id);
|
||||
if (empty($invoice_number_length)) {
|
||||
CompanySetting::setSettings(['invoice_number_length' => '6'], $user->company_id);
|
||||
}
|
||||
|
||||
$estimate_number_length = CompanySetting::getSetting('estimate_number_length', $user->company_id);
|
||||
if (empty($estimate_number_length)) {
|
||||
CompanySetting::setSettings(['estimate_number_length' => '6'], $user->company_id);
|
||||
}
|
||||
|
||||
$payment_number_length = CompanySetting::getSetting('payment_number_length', $user->company_id);
|
||||
if (empty($payment_number_length)) {
|
||||
CompanySetting::setSettings(['payment_number_length' => '6'], $user->company_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 UpdateCraterVersion410 extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Setting::setSetting('version', '4.1.0');
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@ -37,7 +37,8 @@ class CurrenciesTableSeeder extends Seeder
|
||||
'symbol' => '€',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => '.',
|
||||
'decimal_separator' => ','
|
||||
'decimal_separator' => ',',
|
||||
'swap_currency_symbol' => true
|
||||
],
|
||||
[
|
||||
'name' => 'South African Rand',
|
||||
@ -550,6 +551,22 @@ class CurrenciesTableSeeder extends Seeder
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
],
|
||||
[
|
||||
'name' => 'Peruvian Soles',
|
||||
'code' => 'PEN',
|
||||
'symbol' => 'S/',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
],
|
||||
[
|
||||
'name' => 'Moroccan Dirham',
|
||||
'code' => 'MAD',
|
||||
'symbol' => 'DH',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
],
|
||||
];
|
||||
|
||||
foreach ($currencies as $currency) {
|
||||
|
||||
@ -18,9 +18,9 @@ class DefaultSettingsSeeder extends Seeder
|
||||
{
|
||||
$user = User::where('role', 'super admin')->first();
|
||||
|
||||
$defaultInvoiceEmailBody = 'You have received a new invoice from <b>{COMPANY_NAME}</b>.</br>Please download using the button below:';
|
||||
$defaultEstimateEmailBody = 'You have received a new estimate from <b>{COMPANY_NAME}</b>.</br>Please download using the button below:';
|
||||
$defaultPaymentEmailBody = 'Thank you for the payment.</b></br>Please download your payment receipt using the button below:';
|
||||
$defaultInvoiceEmailBody = 'You have received a new invoice from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:';
|
||||
$defaultEstimateEmailBody = 'You have received a new estimate from <b>{COMPANY_NAME}</b>.</br> Please download using the button below:';
|
||||
$defaultPaymentEmailBody = 'Thank you for the payment.</b></br> Please download your payment receipt using the button below:';
|
||||
$billingAddressFormat = '<h3>{BILLING_ADDRESS_NAME}</h3><p>{BILLING_ADDRESS_STREET_1}</p><p>{BILLING_ADDRESS_STREET_2}</p><p>{BILLING_CITY} {BILLING_STATE}</p><p>{BILLING_COUNTRY} {BILLING_ZIP_CODE}</p><p>{BILLING_PHONE}</p>';
|
||||
$shippingAddressFormat = '<h3>{SHIPPING_ADDRESS_NAME}</h3><p>{SHIPPING_ADDRESS_STREET_1}</p><p>{SHIPPING_ADDRESS_STREET_2}</p><p>{SHIPPING_CITY} {SHIPPING_STATE}</p><p>{SHIPPING_COUNTRY} {SHIPPING_ZIP_CODE}</p><p>{SHIPPING_PHONE}</p>';
|
||||
$companyAddressFormat = '<h3><strong>{COMPANY_NAME}</strong></h3><p>{COMPANY_ADDRESS_STREET_1}</p><p>{COMPANY_ADDRESS_STREET_2}</p><p>{COMPANY_CITY} {COMPANY_STATE}</p><p>{COMPANY_COUNTRY} {COMPANY_ZIP_CODE}</p><p>{COMPANY_PHONE}</p>';
|
||||
@ -53,12 +53,18 @@ class DefaultSettingsSeeder extends Seeder
|
||||
'notify_estimate_viewed' => 'NO',
|
||||
'tax_per_item' => 'NO',
|
||||
'discount_per_item' => 'NO',
|
||||
'invoice_auto_generate' => 'YES',
|
||||
'invoice_prefix' => 'INV',
|
||||
'invoice_auto_generate' => 'YES',
|
||||
'invoice_number_length' => 6,
|
||||
'invoice_email_attachment' => 'NO',
|
||||
'estimate_prefix' => 'EST',
|
||||
'estimate_auto_generate' => 'YES',
|
||||
'estimate_number_length' => 6,
|
||||
'estimate_email_attachment' => 'NO',
|
||||
'payment_prefix' => 'PAY',
|
||||
'payment_auto_generate' => 'YES',
|
||||
'payment_number_length' => 6,
|
||||
'payment_email_attachment' => 'NO',
|
||||
'save_pdf_to_disk' => 'NO',
|
||||
];
|
||||
|
||||
|
||||
13060
package-lock.json
generated
13060
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
94
package.json
94
package.json
@ -1,49 +1,49 @@
|
||||
{
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
|
||||
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
|
||||
"watch-poll": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --watch-poll --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
|
||||
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
|
||||
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-eslint": "^8.2.6",
|
||||
"cross-env": "^5.1",
|
||||
"eslint": "^4.19.1",
|
||||
"eslint-config-prettier": "^6.10.1",
|
||||
"eslint-loader": "^3.0.3",
|
||||
"eslint-plugin-prettier": "^3.1.2",
|
||||
"eslint-plugin-vue": "^4.7.1",
|
||||
"laravel-mix": "^5.0.7",
|
||||
"prettier": "^2.0.2",
|
||||
"resolve-url-loader": "3.1.0",
|
||||
"sass": "^1.29.0",
|
||||
"sass-loader": "^8.0.2",
|
||||
"tailwindcss-plugins": "^0.3.0",
|
||||
"vue-template-compiler": "^2.6.10"
|
||||
},
|
||||
"dependencies": {
|
||||
"@bytefury/spacewind": "^0.3.3",
|
||||
"@vue-hero-icons/outline": "^1.6.3",
|
||||
"@vue-hero-icons/solid": "^1.6.3",
|
||||
"axios": "^0.19",
|
||||
"chart.js": "^2.7.3",
|
||||
"guid": "0.0.12",
|
||||
"lodash": "^4.17.13",
|
||||
"moment": "^2.29.1",
|
||||
"sweet-modal-vue": "^2.0.0",
|
||||
"sweetalert": "^2.1.2",
|
||||
"tailwindcss": "^1.9.1",
|
||||
"toastr": "^2.1.4",
|
||||
"v-tooltip": "^2.0.2",
|
||||
"vue": "^2.6.10",
|
||||
"vue-i18n": "^8.22.0",
|
||||
"vue-loader": "^15.9.3",
|
||||
"vue-router": "2.7.0",
|
||||
"vue2-transitions": "^0.3.0",
|
||||
"vuedraggable": "^2.24.2",
|
||||
"vuelidate": "^0.6.2",
|
||||
"vuex": "^3.0.1"
|
||||
}
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "mix",
|
||||
"watch": "mix watch",
|
||||
"watch-poll": "mix watch -- --watch-options-poll=1000",
|
||||
"hot": "mix watch --hot",
|
||||
"production": "mix --production"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-eslint": "^8.2.6",
|
||||
"cross-env": "^5.1",
|
||||
"eslint": "^4.19.1",
|
||||
"eslint-config-prettier": "^6.15.0",
|
||||
"eslint-loader": "^3.0.4",
|
||||
"eslint-plugin-prettier": "^3.3.0",
|
||||
"eslint-plugin-vue": "^4.7.1",
|
||||
"laravel-mix": "^6.0.6",
|
||||
"postcss": "^8.1",
|
||||
"prettier": "^2.2.1",
|
||||
"resolve-url-loader": "3.1.0",
|
||||
"sass": "^1.29.0",
|
||||
"sass-loader": "^8.0.2",
|
||||
"tailwindcss-plugins": "^0.3.0",
|
||||
"vue-template-compiler": "^2.6.10"
|
||||
},
|
||||
"dependencies": {
|
||||
"@bytefury/spacewind": "^0.5.3",
|
||||
"@vue-hero-icons/outline": "^1.6.3",
|
||||
"@vue-hero-icons/solid": "^1.6.3",
|
||||
"axios": "^0.21",
|
||||
"chart.js": "^2.7.3",
|
||||
"guid": "0.0.12",
|
||||
"lodash": "^4.17.13",
|
||||
"moment": "^2.29.1",
|
||||
"sweet-modal-vue": "^2.0.0",
|
||||
"tailwindcss": "^2.0.1",
|
||||
"v-tooltip": "^2.0.2",
|
||||
"vue": "^2.6.10",
|
||||
"vue-i18n": "^8.22.0",
|
||||
"vue-loader": "^15.9.3",
|
||||
"vue-router": "2.7.0",
|
||||
"vue-sweetalert2": "^4.2.1",
|
||||
"vue2-transitions": "^0.3.0",
|
||||
"vuedraggable": "^2.24.2",
|
||||
"vuelidate": "^0.6.2",
|
||||
"vuex": "^3.0.1"
|
||||
}
|
||||
}
|
||||
|
||||
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
@ -1,5 +1,3 @@
|
||||
/* flatpickr v4.6.6, @license MIT */
|
||||
|
||||
/*!
|
||||
* tiptap v1.29.6
|
||||
* (c) 2020 überdosis GbR (limited liability)
|
||||
@ -24,33 +22,6 @@
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
/*!
|
||||
*
|
||||
* Copyright 2009-2017 Kris Kowal under the terms of the MIT
|
||||
* license found at https://github.com/kriskowal/q/blob/v1/LICENSE
|
||||
*
|
||||
* With parts by Tyler Close
|
||||
* Copyright 2007-2009 Tyler Close under the terms of the MIT X license found
|
||||
* at http://www.opensource.org/licenses/mit-license.html
|
||||
* Forked at ref_send.js version: 2009-05-11
|
||||
*
|
||||
* With parts by Mark Miller
|
||||
* Copyright (C) 2011 Google Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Chart.js v2.9.4
|
||||
* https://www.chartjs.org
|
||||
@ -58,44 +29,12 @@
|
||||
* Released under the MIT License
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Sizzle CSS Selector Engine v2.3.5
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://js.foundation/
|
||||
*
|
||||
* Date: 2020-03-14
|
||||
*/
|
||||
|
||||
/*!
|
||||
* The buffer module from node.js, for the browser.
|
||||
*
|
||||
* @author Feross Aboukhadijeh <http://feross.org>
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Vue.js v2.6.12
|
||||
* (c) 2014-2020 Evan You
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
|
||||
/*!
|
||||
* jQuery JavaScript Library v3.5.1
|
||||
* https://jquery.com/
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://jquery.org/license
|
||||
*
|
||||
* Date: 2020-05-04T22:49Z
|
||||
*/
|
||||
|
||||
/*!
|
||||
* vue2-transitions v0.3.0
|
||||
* (c) 2019-present cristij <joracristi@gmail.com>
|
||||
@ -103,40 +42,13 @@
|
||||
*/
|
||||
|
||||
/*!
|
||||
* vuex v3.5.1
|
||||
* vuex v3.6.0
|
||||
* (c) 2020 Evan You
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
***************************************************************************** */
|
||||
|
||||
/*! For license information please see index.js.LICENSE.txt */
|
||||
|
||||
/*! https://mths.be/punycode v1.4.1 by @mathias */
|
||||
|
||||
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
|
||||
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
|
||||
/**
|
||||
* vue-router v2.7.0
|
||||
* (c) 2017 Evan You
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license
|
||||
* Lodash <https://lodash.com/>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
||||
{
|
||||
"/assets/js/app.js": "/assets/js/app.js?id=1d9cf52055fe7be22fd1",
|
||||
"/assets/css/crater.css": "/assets/css/crater.css?id=912348e74f68a41a1b35"
|
||||
"/assets/js/app.js": "/assets/js/app.js?id=ccf2d83d1f924a997810",
|
||||
"/assets/css/crater.css": "/assets/css/crater.css?id=6ba60df7635dc2f5fbc5"
|
||||
}
|
||||
|
||||
@ -70,6 +70,8 @@ Crater is a product of [Bytefury](https://bytefury.com)
|
||||
- [Birkhoff Lee](https://github.com/BirkhoffLee)
|
||||
- [Akaunting](https://github.com/akaunting/akaunting)
|
||||
- [MakerLab](https://github.com/MakerLab-Dev)
|
||||
- [Sebastian Cretu](https://github.com/sebastiancretu)
|
||||
- [Florian Gareis](https://github.com/TheZoker)
|
||||
|
||||
## Translate
|
||||
|
||||
|
||||
@ -3,15 +3,15 @@
|
||||
* include Vue and Vue Resource. This gives a great starting point for
|
||||
* building robust, powerful web applications using Vue and Laravel.
|
||||
*/
|
||||
import Vue from 'vue'
|
||||
import router from './router.js'
|
||||
import store from './store/index'
|
||||
import utils from './helpers/utilities'
|
||||
import i18n from './plugins/i18n'
|
||||
import swal from 'sweetalert'
|
||||
|
||||
require('./bootstrap')
|
||||
|
||||
window.Vue.prototype.$utils = utils
|
||||
Vue.prototype.$utils = utils
|
||||
|
||||
/**
|
||||
* Next, we will create a fresh Vue application instance and attach it to
|
||||
@ -26,5 +26,4 @@ new Vue({
|
||||
router,
|
||||
store,
|
||||
i18n,
|
||||
swal,
|
||||
}).$mount('#app')
|
||||
|
||||
69
resources/assets/js/bootstrap.js
vendored
69
resources/assets/js/bootstrap.js
vendored
@ -8,6 +8,8 @@ import money from 'v-money'
|
||||
import VTooltip from 'v-tooltip'
|
||||
import Transitions from 'vue2-transitions'
|
||||
import SpaceWind from '@bytefury/spacewind'
|
||||
import swal from 'vue-sweetalert2'
|
||||
import 'sweetalert2/dist/sweetalert2.min.css'
|
||||
|
||||
/**
|
||||
* Theme
|
||||
@ -22,16 +24,36 @@ Vue.use(SpaceWind, { theme })
|
||||
|
||||
Vue.use(Vuelidate)
|
||||
|
||||
Vue.use(swal, {
|
||||
customClass: {
|
||||
container:
|
||||
'fixed z-50 inset-0 overflow-y-auto bg-black bg-opacity-25 flex justify-center min-h-screen items-center sm:p-0 swal2-container',
|
||||
popup:
|
||||
'flex items-center flex-col justify-center align-bottom bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full sm:p-6',
|
||||
header: 'swal2-header',
|
||||
title: 'swal2-title',
|
||||
closeButton: '',
|
||||
icon: 'swal2-icon',
|
||||
image: '',
|
||||
content: 'swal2-content',
|
||||
input: '',
|
||||
inputLabel: '',
|
||||
validationMessage: '',
|
||||
actions: 'swal2-actions',
|
||||
confirmButton:
|
||||
'w-full inline-flex py-2 px-4 text-sm leading-5 rounded items-center justify-center text-white font-normal transition duration-150 ease-in-out border border-transparent focus:outline-none bg-primary-500 hover:bg-opacity-75 whitespace-nowrap',
|
||||
denyButton: '',
|
||||
cancelButton:
|
||||
'w-full inline-flex py-2 px-4 text-sm leading-5 rounded justify-center items-center focus:outline-none font-normal transition ease-in-out duration-150 border border-transparent border border-solid border-primary-500 text-primary-500 hover:bg-primary-200 shadow-inner whitespace-nowrap',
|
||||
loader: '',
|
||||
footer: '',
|
||||
},
|
||||
buttonsStyling: false,
|
||||
})
|
||||
|
||||
Vue.use(Transitions)
|
||||
|
||||
window._ = require('lodash')
|
||||
/**
|
||||
* Vue is a modern JavaScript library for building interactive web interfaces
|
||||
* using reactive data binding and reusable components. Vue's API is clean
|
||||
* and simple, leaving you to focus on building your next great project.
|
||||
*/
|
||||
|
||||
window.Vue = require('vue')
|
||||
|
||||
/**
|
||||
* Custom Directives
|
||||
@ -96,9 +118,11 @@ global.axios.interceptors.response.use(undefined, function (err) {
|
||||
return true
|
||||
}
|
||||
if (!err.response) {
|
||||
window.toastr['error'](
|
||||
'Please check your internet connection or wait until servers are back online', 'Network Error'
|
||||
)
|
||||
store.dispatch('notification/showNotification', {
|
||||
type: 'error',
|
||||
message:
|
||||
'Please check your internet connection or wait until servers are back online.',
|
||||
})
|
||||
} else {
|
||||
if (
|
||||
err.response.data &&
|
||||
@ -106,23 +130,30 @@ global.axios.interceptors.response.use(undefined, function (err) {
|
||||
err.response.data === ' Unauthorized.')
|
||||
) {
|
||||
// Unauthorized and log out
|
||||
window.toastr['error'](
|
||||
err.response.data.message ? err.response.data.message : 'Unauthorized'
|
||||
)
|
||||
store.dispatch('notification/showNotification', {
|
||||
type: 'error',
|
||||
message: err.response.data.message
|
||||
? err.response.data.message
|
||||
: 'Unauthorized',
|
||||
})
|
||||
store.dispatch('auth/logout', true)
|
||||
} else if (err.response.data.errors) {
|
||||
// Show a notification per error
|
||||
const errors = JSON.parse(JSON.stringify(err.response.data.errors))
|
||||
for (const i in errors) {
|
||||
window.toastr['error'](errors[i])
|
||||
store.dispatch('notification/showNotification', {
|
||||
type: 'error',
|
||||
message: errors[i],
|
||||
})
|
||||
}
|
||||
} else {
|
||||
// Unknown error
|
||||
window.toastr['error'](
|
||||
err.response.data.message
|
||||
store.dispatch('notification/showNotification', {
|
||||
type: 'error',
|
||||
message: err.response.data.message
|
||||
? err.response.data.message
|
||||
: err.response.data || 'Unknown error occurred', 'Error'
|
||||
)
|
||||
: err.response.data || 'Unknown error occurred',
|
||||
})
|
||||
}
|
||||
}
|
||||
return Promise.reject(err)
|
||||
@ -131,8 +162,6 @@ global.axios.interceptors.response.use(undefined, function (err) {
|
||||
/**
|
||||
* Global plugins
|
||||
*/
|
||||
window.toastr = require('toastr')
|
||||
|
||||
Vue.use(VueRouter)
|
||||
Vue.use(Vuex)
|
||||
Vue.use(VTooltip)
|
||||
|
||||
147
resources/assets/js/components/base/BaseNotification.vue
Normal file
147
resources/assets/js/components/base/BaseNotification.vue
Normal file
@ -0,0 +1,147 @@
|
||||
<template>
|
||||
<transition
|
||||
enter-class="translate-y-2 opacity-0 sm:translate-y-0 sm:translate-x-2 "
|
||||
enter-active-class="transition duration-300 ease-out transform"
|
||||
enter-to-class="duration-300 translate-y-0 opacity-100 sm:translate-x-0"
|
||||
leave-active-class="transition duration-100 ease-in"
|
||||
leave-class="duration-200 opacity-100"
|
||||
leave-to-class="duration-200 opacity-0"
|
||||
>
|
||||
<div
|
||||
v-if="notificationActive"
|
||||
class="fixed inset-0 z-50 flex items-end justify-center px-4 py-6 pointer-events-none sm:p-6 sm:items-start sm:justify-end"
|
||||
>
|
||||
<div
|
||||
:class="success || info ? 'bg-white' : 'bg-red-50'"
|
||||
class="w-full max-w-sm rounded-lg shadow-lg cursor-pointer pointer-events-auto"
|
||||
@click="hideNotification"
|
||||
>
|
||||
<div class="overflow-hidden rounded-lg shadow-xs">
|
||||
<div class="p-4">
|
||||
<div class="flex items-start">
|
||||
<div class="flex-shrink-0">
|
||||
<svg
|
||||
v-if="success"
|
||||
class="w-6 h-6 text-green-400"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"
|
||||
/>
|
||||
</svg>
|
||||
<exclamation-circle-icon
|
||||
v-if="info"
|
||||
class="w-6 h-6 text-blue-400"
|
||||
/>
|
||||
<svg
|
||||
v-if="error"
|
||||
class="w-6 h-6 text-red-400"
|
||||
fill="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="flex-1 w-0 ml-3">
|
||||
<p
|
||||
:class="`text-sm leading-5 font-medium ${
|
||||
success || info ? 'text-gray-900' : 'text-red-800'
|
||||
}`"
|
||||
>
|
||||
{{
|
||||
notificationTitle ? notificationTitle : success ? 'Success!' : 'Error'
|
||||
}}
|
||||
</p>
|
||||
<p
|
||||
:class="`mt-1 text-sm leading-5 ${
|
||||
success || info ? 'text-gray-500' : 'text-red-700'
|
||||
}`"
|
||||
>
|
||||
{{
|
||||
notificationMessage
|
||||
? notificationMessage
|
||||
: success
|
||||
? 'Successful'
|
||||
: 'Somthing went wrong'
|
||||
}}
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-shrink-0">
|
||||
<button
|
||||
:class="
|
||||
success || info
|
||||
? ' text-gray-400 focus:text-gray-500'
|
||||
: 'text-red-400 focus:text-red-500'
|
||||
"
|
||||
class="inline-flex w-5 h-5 transition duration-150 ease-in-out focus:outline-none"
|
||||
@click="hideNotification"
|
||||
>
|
||||
<x-icon />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</transition>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapActions, mapGetters } from 'vuex'
|
||||
import { XIcon } from '@vue-hero-icons/outline'
|
||||
import { ExclamationCircleIcon } from '@vue-hero-icons/solid'
|
||||
export default {
|
||||
components: {
|
||||
XIcon,
|
||||
ExclamationCircleIcon,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
hasFocus: false,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('notification', [
|
||||
'notificationActive',
|
||||
'notificationTitle',
|
||||
'notificationType',
|
||||
'notificationAutoHide',
|
||||
'notificationMessage',
|
||||
]),
|
||||
success() {
|
||||
return this.notificationType.toLowerCase() === 'success'
|
||||
},
|
||||
error() {
|
||||
return this.notificationType.toLowerCase() === 'error'
|
||||
},
|
||||
info() {
|
||||
return this.notificationType.toLowerCase() === 'info'
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
notificationActive(val) {
|
||||
if (val && this.notificationAutoHide) {
|
||||
window.setTimeout(this.hideNotification, 5000)
|
||||
}
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
if (this.notificationActive && this.notificationAutoHide) {
|
||||
window.setTimeout(this.hideNotification, 5000)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapActions('notification', ['showNotification', 'hideNotification']),
|
||||
},
|
||||
}
|
||||
</script>
|
||||
@ -1,3 +1,5 @@
|
||||
import Vue from 'vue'
|
||||
|
||||
import BaseModal from './modal/BaseModal.vue'
|
||||
import BaseLoader from './BaseLoader.vue'
|
||||
import BaseCustomerSelect from './BaseCustomerSelect.vue'
|
||||
@ -11,6 +13,7 @@ import NoteSelectPopup from './popup/NoteSelectPopup.vue'
|
||||
import BaseDatePicker from '../base/BaseDatePicker.vue'
|
||||
import BaseTimePicker from './BaseTimePicker.vue'
|
||||
import BasePage from './BasePage.vue'
|
||||
import BaseNotification from './BaseNotification.vue'
|
||||
|
||||
import GlobalSearch from '../GlobalSearch.vue'
|
||||
|
||||
@ -37,6 +40,7 @@ Vue.component('tax-select-popup', TaxSelectPopup)
|
||||
Vue.component('note-select-popup', NoteSelectPopup)
|
||||
|
||||
Vue.component('base-time-picker', BaseTimePicker)
|
||||
Vue.component('base-notification', BaseNotification)
|
||||
|
||||
Vue.component('dot-icon', DotIcon)
|
||||
Vue.component('save-icon', SaveIcon)
|
||||
|
||||
@ -2,8 +2,8 @@
|
||||
<div class="relative customer-modal">
|
||||
<base-loader
|
||||
v-if="isRequestOngoing"
|
||||
class="h-130"
|
||||
:show-bg-overlay="true"
|
||||
class="h-130"
|
||||
/>
|
||||
<form @submit.prevent="createNewBackup">
|
||||
<div class="p-6">
|
||||
@ -21,7 +21,7 @@
|
||||
:show-labels="false"
|
||||
:placeholder="$t('settings.backup.select_backup_type')"
|
||||
:allow-empty="false"
|
||||
:maxHeight="100"
|
||||
:max-height="100"
|
||||
/>
|
||||
</sw-input-group>
|
||||
<sw-input-group
|
||||
@ -38,11 +38,11 @@
|
||||
:show-labels="false"
|
||||
:placeholder="$t('settings.disk.select_disk')"
|
||||
:allow-empty="false"
|
||||
track-by="id"
|
||||
:preselect-first="true"
|
||||
:custom-label="getCustomLabel"
|
||||
:maxHeight="100"
|
||||
:max-height="100"
|
||||
:loading="isLoading"
|
||||
track-by="id"
|
||||
/>
|
||||
</sw-input-group>
|
||||
</div>
|
||||
@ -59,9 +59,9 @@
|
||||
</sw-button>
|
||||
<sw-button
|
||||
:loading="isCreateLoading"
|
||||
:disabled="isCreateLoading"
|
||||
variant="primary"
|
||||
type="submit"
|
||||
:disabled="isCreateLoading"
|
||||
>
|
||||
<save-icon v-if="!isCreateLoading" class="mr-2" />
|
||||
{{ $t('general.create') }}
|
||||
@ -140,6 +140,8 @@ export default {
|
||||
|
||||
...mapActions('modal', ['closeModal']),
|
||||
|
||||
...mapActions('notification', ['showNotification']),
|
||||
|
||||
getCustomLabel({ driver, name }) {
|
||||
return `${name} — [${driver}]`
|
||||
},
|
||||
@ -154,12 +156,18 @@ export default {
|
||||
this.isCreateLoading = true
|
||||
await this.createBackup(data)
|
||||
this.isCreateLoading = false
|
||||
window.toastr['success'](this.$t('settings.backup.created_message'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('settings.backup.created_message'),
|
||||
})
|
||||
this.refreshData ? this.refreshData() : ''
|
||||
this.cancelBackup()
|
||||
} catch (e) {
|
||||
this.isCreateLoading = false
|
||||
window.toastr['error'](e.response.data.message)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: e.response.data.message,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@ -41,7 +41,7 @@
|
||||
>
|
||||
{{ $t('general.cancel') }}
|
||||
</sw-button>
|
||||
<sw-button variant="primary" type="submit" :loading="isLoading">
|
||||
<sw-button :loading="isLoading" variant="primary" type="submit">
|
||||
<save-icon v-if="!isLoading" class="mr-2" />
|
||||
{{ !isEdit ? $t('general.save') : $t('general.update') }}
|
||||
</sw-button>
|
||||
@ -135,6 +135,8 @@ export default {
|
||||
methods: {
|
||||
...mapActions('modal', ['closeModal']),
|
||||
...mapActions('category', ['addCategory', 'updateCategory']),
|
||||
...mapActions('notification', ['showNotification']),
|
||||
|
||||
resetFormData() {
|
||||
this.formData = {
|
||||
id: null,
|
||||
@ -159,13 +161,15 @@ export default {
|
||||
|
||||
if (response.data) {
|
||||
if (!this.isEdit) {
|
||||
window.toastr['success'](
|
||||
this.$t('settings.expense_category.created_message')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('settings.expense_category.created_message'),
|
||||
})
|
||||
} else {
|
||||
window.toastr['success'](
|
||||
this.$t('settings.expense_category.updated_message')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('settings.expense_category.updated_message'),
|
||||
})
|
||||
}
|
||||
window.hub.$emit('newCategory', response.data.category)
|
||||
this.refreshData ? this.refreshData() : ''
|
||||
@ -173,7 +177,10 @@ export default {
|
||||
this.isLoading = false
|
||||
return true
|
||||
}
|
||||
window.toastr['error'](response.data.error)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: response.data.error,
|
||||
})
|
||||
},
|
||||
async setData() {
|
||||
this.formData = {
|
||||
|
||||
@ -78,9 +78,9 @@
|
||||
/>
|
||||
</sw-input-group>
|
||||
<sw-input-group
|
||||
v-if="isDropdownSelected"
|
||||
:label="$t('settings.custom_fields.options')"
|
||||
class="mt-5"
|
||||
v-if="isDropdownSelected"
|
||||
horizontal
|
||||
>
|
||||
<option-create @onAdd="addNewOptions" />
|
||||
@ -92,28 +92,28 @@
|
||||
>
|
||||
<sw-input v-model="option.name" type="text" style="width: 90%" />
|
||||
<minus-circle-icon
|
||||
@click="removeOption(index)"
|
||||
class="ml-1 cursor-pointer icon text-danger"
|
||||
@click="removeOption(index)"
|
||||
/>
|
||||
</div>
|
||||
</sw-input-group>
|
||||
<sw-input-group
|
||||
v-if="formData.type"
|
||||
:label="$t('settings.custom_fields.default_value')"
|
||||
horizontal
|
||||
class="relative mt-5"
|
||||
v-if="formData.type"
|
||||
>
|
||||
<component
|
||||
:value="formData.default_answer"
|
||||
:is="formData.type + 'Type'"
|
||||
:options="formData.options"
|
||||
:defaultDateTime="formData.dateTimeValue"
|
||||
:default-date-time="formData.dateTimeValue"
|
||||
v-model="formData.default_answer"
|
||||
/>
|
||||
</sw-input-group>
|
||||
<sw-input-group
|
||||
:label="$t('settings.custom_fields.placeholder')"
|
||||
v-if="!isSwitchTypeSelected"
|
||||
:label="$t('settings.custom_fields.placeholder')"
|
||||
class="mt-5"
|
||||
horizontal
|
||||
>
|
||||
@ -376,6 +376,7 @@ export default {
|
||||
'fetchCustomField',
|
||||
]),
|
||||
...mapActions('modal', ['closeModal']),
|
||||
...mapActions('notification', ['showNotification']),
|
||||
resetFormData() {
|
||||
this.formData = {
|
||||
label: null,
|
||||
@ -433,9 +434,10 @@ export default {
|
||||
if (this.isEdit) {
|
||||
this.isLoading = true
|
||||
response = await this.updateCustomField(data)
|
||||
window.toastr['success'](
|
||||
this.$tc('settings.custom_fields.updated_message')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('settings.custom_fields.updated_message'),
|
||||
})
|
||||
this.refreshData()
|
||||
this.closeCategoryModal()
|
||||
return true
|
||||
@ -444,7 +446,10 @@ export default {
|
||||
this.isLoading = true
|
||||
response = await this.addCustomField(data)
|
||||
|
||||
window.toastr['success'](this.$tc('settings.custom_fields.added_message'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('settings.custom_fields.added_message'),
|
||||
})
|
||||
this.refreshData()
|
||||
this.closeCategoryModal()
|
||||
return true
|
||||
|
||||
@ -62,7 +62,7 @@
|
||||
:allow-empty="false"
|
||||
:show-labels="false"
|
||||
:placeholder="$t('customers.select_currency')"
|
||||
:maxHeight="200"
|
||||
:max-height="200"
|
||||
label="name"
|
||||
class="mt-1 md:mt-0"
|
||||
track-by="id"
|
||||
@ -343,7 +343,7 @@
|
||||
>
|
||||
{{ $t('general.cancel') }}
|
||||
</sw-button>
|
||||
<sw-button variant="primary" type="submit" :loading="isLoading">
|
||||
<sw-button :loading="isLoading" variant="primary" type="submit">
|
||||
<save-icon v-if="!isLoading" class="mr-2" />
|
||||
{{ $t('general.save') }}
|
||||
</sw-button>
|
||||
@ -444,6 +444,7 @@ export default {
|
||||
...mapGetters(['currencies', 'countries']),
|
||||
...mapGetters('company', ['defaultCurrency']),
|
||||
...mapGetters('modal', ['modalDataID', 'modalData', 'modalActive']),
|
||||
|
||||
nameError() {
|
||||
if (!this.$v.formData.name.$error) {
|
||||
return ''
|
||||
@ -586,6 +587,7 @@ export default {
|
||||
'updateCustomer',
|
||||
]),
|
||||
...mapActions('modal', ['closeModal']),
|
||||
...mapActions('notification', ['showNotification']),
|
||||
resetData() {
|
||||
this.formData = {
|
||||
name: null,
|
||||
@ -700,9 +702,15 @@ export default {
|
||||
}
|
||||
if (response.data) {
|
||||
if (this.modalDataID) {
|
||||
window.toastr['success'](this.$tc('customers.updated_message'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('customers.updated_message'),
|
||||
})
|
||||
} else {
|
||||
window.toastr['success'](this.$tc('customers.created_message'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('customers.created_message'),
|
||||
})
|
||||
}
|
||||
|
||||
this.isLoading = false
|
||||
|
||||
@ -5,9 +5,9 @@
|
||||
:is="selected_disk"
|
||||
:loading="isLoading"
|
||||
:disks="getDiskDrivers"
|
||||
:is-edit="isEdit"
|
||||
@on-change-disk="(disk) => (selected_disk = disk.value)"
|
||||
@submit="createNewDisk"
|
||||
:is-edit="isEdit"
|
||||
>
|
||||
<template v-slot="slotProps">
|
||||
<div
|
||||
@ -16,15 +16,15 @@
|
||||
<sw-button
|
||||
class="mr-3 text-sm"
|
||||
variant="primary-outline"
|
||||
@click="closeDisk"
|
||||
type="button"
|
||||
@click="closeDisk"
|
||||
>
|
||||
{{ $t('general.cancel') }}
|
||||
</sw-button>
|
||||
<sw-button
|
||||
:loading="isRequestFire(slotProps)"
|
||||
variant="primary"
|
||||
:disabled="isRequestFire(slotProps)"
|
||||
variant="primary"
|
||||
type="submit"
|
||||
>
|
||||
<save-icon v-if="!isRequestFire(slotProps)" class="mr-2" />
|
||||
@ -96,6 +96,8 @@ export default {
|
||||
|
||||
...mapActions('modal', ['closeModal']),
|
||||
|
||||
...mapActions('notification', ['showNotification']),
|
||||
|
||||
isRequestFire(slotProps) {
|
||||
return slotProps && (slotProps.diskData.isLoading || this.isLoading)
|
||||
},
|
||||
@ -131,14 +133,21 @@ export default {
|
||||
this.refreshData()
|
||||
this.closeDisk()
|
||||
if (this.isEdit) {
|
||||
window.toastr['success'](this.$t('settings.disk.success_update'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('settings.disk.success_update'),
|
||||
})
|
||||
} else {
|
||||
window.toastr['success'](this.$t('settings.disk.success_create'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('settings.disk.success_create'),
|
||||
})
|
||||
}
|
||||
} else {
|
||||
window.toastr['error'](
|
||||
this.$t('settings.disk.invalid_disk_credentials')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$t('settings.disk.invalid_disk_credentials'),
|
||||
})
|
||||
}
|
||||
this.isLoading = false
|
||||
},
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
:options="itemUnits"
|
||||
:searchable="true"
|
||||
:show-labels="false"
|
||||
:maxHeight="200"
|
||||
:max-height="200"
|
||||
label="name"
|
||||
>
|
||||
</sw-select>
|
||||
@ -160,7 +160,7 @@ export default {
|
||||
return this.formData.price / 100
|
||||
},
|
||||
set: function (newValue) {
|
||||
this.formData.price = newValue * 100
|
||||
this.formData.price = Math.round(newValue * 100)
|
||||
},
|
||||
},
|
||||
|
||||
@ -251,6 +251,7 @@ export default {
|
||||
...mapActions('modal', ['closeModal', 'resetModalData']),
|
||||
...mapActions('item', ['addItem', 'updateItem', 'fetchItemUnits']),
|
||||
...mapActions('invoice', ['setItem']),
|
||||
...mapActions('notification', ['showNotification']),
|
||||
|
||||
resetFormData() {
|
||||
this.formData = {
|
||||
@ -304,7 +305,10 @@ export default {
|
||||
response = await this.addItem(data)
|
||||
}
|
||||
if (response.data) {
|
||||
window.toastr['success'](this.$tc('items.created_message'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('items.created_message'),
|
||||
})
|
||||
this.setItem(response.data.item)
|
||||
|
||||
window.hub.$emit('newItem', response.data.item)
|
||||
@ -314,7 +318,10 @@ export default {
|
||||
this.closeModal()
|
||||
return true
|
||||
}
|
||||
window.toastr['error'](response.data.error)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: response.data.error,
|
||||
})
|
||||
},
|
||||
|
||||
closeItemModal() {
|
||||
|
||||
30
resources/assets/js/components/base/modal/ItemUnitModal.vue
Normal file → Executable file
30
resources/assets/js/components/base/modal/ItemUnitModal.vue
Normal file → Executable file
@ -68,6 +68,14 @@ export default {
|
||||
if (!this.$v.formData.name.required) {
|
||||
return this.$tc('validation.required')
|
||||
}
|
||||
|
||||
if (!this.$v.formData.name.minLength) {
|
||||
return this.$tc(
|
||||
'validation.name_min_length',
|
||||
this.$v.formData.name.$params.minLength.min,
|
||||
{ count: this.$v.formData.name.$params.minLength.min }
|
||||
)
|
||||
}
|
||||
},
|
||||
},
|
||||
validations: {
|
||||
@ -89,6 +97,7 @@ export default {
|
||||
methods: {
|
||||
...mapActions('modal', ['closeModal', 'resetModalData']),
|
||||
...mapActions('item', ['addItemUnit', 'updateItemUnit', 'fatchItemUnit']),
|
||||
...mapActions('notification', ['showNotification']),
|
||||
resetFormData() {
|
||||
this.formData = {
|
||||
id: null,
|
||||
@ -115,13 +124,17 @@ export default {
|
||||
if (response.data) {
|
||||
this.isLoading = false
|
||||
if (!this.isEdit) {
|
||||
window.toastr['success'](
|
||||
this.$t('settings.customization.items.item_unit_added')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('settings.customization.items.item_unit_added'),
|
||||
})
|
||||
} else {
|
||||
window.toastr['success'](
|
||||
this.$t('settings.customization.items.item_unit_updated')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t(
|
||||
'settings.customization.items.item_unit_updated'
|
||||
),
|
||||
})
|
||||
}
|
||||
this.refreshData ? this.refreshData() : ''
|
||||
this.closeItemUnitModal()
|
||||
@ -129,7 +142,10 @@ export default {
|
||||
}
|
||||
} catch (error) {
|
||||
this.isLoading = false
|
||||
window.toastr['error'](response.data.error)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: response.data.error,
|
||||
})
|
||||
}
|
||||
},
|
||||
async setData() {
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
<div class="p-4 md:p-8">
|
||||
<sw-input-group
|
||||
:label="$t('general.to')"
|
||||
class="mt-3"
|
||||
:error="emailError"
|
||||
class="mt-3"
|
||||
variant="horizontal"
|
||||
required
|
||||
>
|
||||
@ -19,8 +19,8 @@
|
||||
</sw-input-group>
|
||||
<sw-input-group
|
||||
:label="$t('general.subject')"
|
||||
class="mt-3"
|
||||
:error="subjectError"
|
||||
class="mt-3"
|
||||
variant="horizontal"
|
||||
required
|
||||
>
|
||||
@ -33,8 +33,8 @@
|
||||
</sw-input-group>
|
||||
<sw-input-group
|
||||
:label="$t('general.message')"
|
||||
class="mt-3"
|
||||
:error="messageError"
|
||||
class="mt-3"
|
||||
variant="horizontal"
|
||||
required
|
||||
>
|
||||
@ -57,7 +57,7 @@
|
||||
>
|
||||
{{ $t('general.cancel') }}
|
||||
</sw-button>
|
||||
<sw-button variant="primary" type="submit" :loading="isLoading">
|
||||
<sw-button :loading="isLoading" variant="primary" type="submit">
|
||||
<paper-airplane-icon v-if="!isLoading" class="mr-2" />
|
||||
{{ !isEdit ? $t('general.send') : $t('general.update') }}
|
||||
</sw-button>
|
||||
@ -149,6 +149,7 @@ export default {
|
||||
methods: {
|
||||
...mapActions('modal', ['closeModal', 'resetModalData']),
|
||||
...mapActions('company', ['sendTestMail']),
|
||||
...mapActions('notification', ['showNotification']),
|
||||
resetFormData() {
|
||||
this.formData = {
|
||||
to: null,
|
||||
@ -169,18 +170,26 @@ export default {
|
||||
|
||||
if (response.data) {
|
||||
if (response.data.success) {
|
||||
window.toastr['success'](this.$tc('general.send_mail_successfully'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('general.send_mail_successfully'),
|
||||
})
|
||||
this.closeTaxModal()
|
||||
this.isLoading = false
|
||||
return true
|
||||
}
|
||||
|
||||
window.toastr['error'](this.$tc('validation.something_went_wrong'))
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$tc('validation.something_went_wrong'),
|
||||
})
|
||||
this.closeTaxModal()
|
||||
this.isLoading = false
|
||||
return true
|
||||
}
|
||||
window.toastr['error'](response.data.error)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: response.data.error,
|
||||
})
|
||||
},
|
||||
closeTaxModal() {
|
||||
this.resetModalData()
|
||||
|
||||
43
resources/assets/js/components/base/modal/NoteModal.vue
Normal file → Executable file
43
resources/assets/js/components/base/modal/NoteModal.vue
Normal file → Executable file
@ -105,6 +105,14 @@ export default {
|
||||
if (!this.$v.formData.name.required) {
|
||||
return this.$tc('validation.required')
|
||||
}
|
||||
|
||||
if (!this.$v.formData.name.minLength) {
|
||||
return this.$tc(
|
||||
'validation.name_min_length',
|
||||
this.$v.formData.name.$params.minLength.min,
|
||||
{ count: this.$v.formData.name.$params.minLength.min }
|
||||
)
|
||||
}
|
||||
},
|
||||
noteError() {
|
||||
if (!this.$v.formData.notes.$error) {
|
||||
@ -139,6 +147,11 @@ export default {
|
||||
required,
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
noteType() {
|
||||
this.setFields()
|
||||
},
|
||||
},
|
||||
async mounted() {
|
||||
this.setFields()
|
||||
if (this.modalDataID) {
|
||||
@ -150,14 +163,10 @@ export default {
|
||||
: (this.noteType = 'Invoice')
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
noteType() {
|
||||
this.setFields()
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
...mapActions('modal', ['closeModal', 'resetModalData']),
|
||||
...mapActions('notes', ['addNote', 'updateNote']),
|
||||
...mapActions('notification', ['showNotification']),
|
||||
...mapActions('invoice', {
|
||||
setInvoiceNote: 'selectNote',
|
||||
}),
|
||||
@ -214,15 +223,19 @@ export default {
|
||||
|
||||
let res = await this.updateNote(data)
|
||||
if (res.data) {
|
||||
window.toastr['success'](
|
||||
this.$t('settings.customization.notes.note_updated')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('settings.customization.notes.note_updated'),
|
||||
})
|
||||
|
||||
this.refreshData ? this.refreshData() : ''
|
||||
this.closeNoteModal()
|
||||
return true
|
||||
}
|
||||
window.toastr['error'](res.data.error)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: res.data.error,
|
||||
})
|
||||
} else {
|
||||
try {
|
||||
let data = {
|
||||
@ -235,9 +248,10 @@ export default {
|
||||
|
||||
if (response.data && response.data.note) {
|
||||
this.isLoading = false
|
||||
window.toastr['success'](
|
||||
this.$t('settings.customization.notes.note_added')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('settings.customization.notes.note_added'),
|
||||
})
|
||||
if (
|
||||
(this.$route.name === 'invoices.create' &&
|
||||
response.data.note.type === 'Invoice') ||
|
||||
@ -269,7 +283,10 @@ export default {
|
||||
this.closeNoteModal()
|
||||
return true
|
||||
}
|
||||
window.toastr['error'](response.data.error)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: response.data.error,
|
||||
})
|
||||
} catch (err) {
|
||||
if (err.response.data.errors.name) {
|
||||
this.isLoading = true
|
||||
|
||||
39
resources/assets/js/components/base/modal/PaymentModeModal.vue
Normal file → Executable file
39
resources/assets/js/components/base/modal/PaymentModeModal.vue
Normal file → Executable file
@ -26,7 +26,7 @@
|
||||
{{ $t('general.cancel') }}
|
||||
</sw-button>
|
||||
<sw-button :loading="isLoading" variant="primary" type="submit">
|
||||
<save-icon class="mr-2" v-if="!isLoading" />
|
||||
<save-icon v-if="!isLoading" class="mr-2" />
|
||||
{{ !isEdit ? $t('general.save') : $t('general.update') }}
|
||||
</sw-button>
|
||||
</div>
|
||||
@ -62,6 +62,14 @@ export default {
|
||||
if (!this.$v.formData.name.required) {
|
||||
return this.$tc('validation.required')
|
||||
}
|
||||
|
||||
if (!this.$v.formData.name.minLength) {
|
||||
return this.$tc(
|
||||
'validation.name_min_length',
|
||||
this.$v.formData.name.$params.minLength.min,
|
||||
{ count: this.$v.formData.name.$params.minLength.min }
|
||||
)
|
||||
}
|
||||
},
|
||||
},
|
||||
validations: {
|
||||
@ -82,6 +90,7 @@ export default {
|
||||
methods: {
|
||||
...mapActions('modal', ['closeModal', 'resetModalData']),
|
||||
...mapActions('payment', ['addPaymentMode', 'updatePaymentMode']),
|
||||
...mapActions('notification', ['showNotification']),
|
||||
resetFormData() {
|
||||
this.formData = {
|
||||
id: null,
|
||||
@ -100,27 +109,39 @@ export default {
|
||||
if (this.isEdit) {
|
||||
response = await this.updatePaymentMode(this.formData)
|
||||
if (response.data) {
|
||||
window.toastr['success'](
|
||||
this.$t('settings.customization.payments.payment_mode_updated')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t(
|
||||
'settings.customization.payments.payment_mode_updated'
|
||||
),
|
||||
})
|
||||
this.refreshData ? this.refreshData() : ''
|
||||
this.closePaymentModeModal()
|
||||
return true
|
||||
}
|
||||
window.toastr['error'](response.data.error)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: response.data.error,
|
||||
})
|
||||
} else {
|
||||
try {
|
||||
response = await this.addPaymentMode(this.formData)
|
||||
if (response.data) {
|
||||
this.isLoading = false
|
||||
window.toastr['success'](
|
||||
this.$t('settings.customization.payments.payment_mode_added')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t(
|
||||
'settings.customization.payments.payment_mode_added'
|
||||
),
|
||||
})
|
||||
this.refreshData ? this.refreshData() : ''
|
||||
this.closePaymentModeModal()
|
||||
return true
|
||||
}
|
||||
window.toastr['error'](response.data.error)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: response.data.error,
|
||||
})
|
||||
} catch (err) {
|
||||
this.isLoading = false
|
||||
}
|
||||
|
||||
@ -61,8 +61,8 @@
|
||||
v-model="formData.body"
|
||||
:fields="estimateMailFields"
|
||||
:invalid="$v.formData.body.$error"
|
||||
@input="$v.formData.body.$touch()"
|
||||
class="mt-2"
|
||||
@input="$v.formData.body.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
</div>
|
||||
@ -140,6 +140,7 @@ export default {
|
||||
computed: {
|
||||
...mapGetters('modal', ['modalDataID', 'modalData', 'modalActive']),
|
||||
...mapGetters('user', ['currentUser']),
|
||||
...mapActions('notification', ['showNotification']),
|
||||
getEmailUrl() {
|
||||
return this.url
|
||||
},
|
||||
@ -224,15 +225,31 @@ export default {
|
||||
if (this.$v.$invalid) {
|
||||
return true
|
||||
}
|
||||
swal({
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('estimates.confirm_send_estimate'),
|
||||
icon: '/assets/icon/check-circle-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
}).then(async (value) => {
|
||||
icon: 'question',
|
||||
iconHtml: `<svg
|
||||
aria-hidden="true"
|
||||
class="w-6 h-6"
|
||||
focusable="false"
|
||||
data-prefix="fas"
|
||||
data-icon="check-circle"
|
||||
class="svg-inline--fa fa-check-circle fa-w-16"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
<path
|
||||
fill="#55547A"
|
||||
d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"
|
||||
></path>
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
try {
|
||||
if (value) {
|
||||
if (result.value) {
|
||||
let data = {
|
||||
...this.formData,
|
||||
id: this.modalDataID,
|
||||
@ -244,21 +261,26 @@ export default {
|
||||
this.closeModal()
|
||||
if (res.data.success) {
|
||||
this.isLoading = false
|
||||
window.toastr['success'](
|
||||
this.$tc('estimates.send_estimate_successfully')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('estimates.send_estimate_successfully'),
|
||||
})
|
||||
return true
|
||||
}
|
||||
if (res.data.error === 'estimates.user_email_does_not_exist') {
|
||||
window.toastr['error'](
|
||||
this.$tc('estimates.user_email_does_not_exist')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$tc('estimates.user_email_does_not_exist'),
|
||||
})
|
||||
return false
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
this.isLoading = false
|
||||
window.toastr['error'](this.$tc('estimates.something_went_wrong'))
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$tc('estimates.something_went_wrong'),
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
@ -55,8 +55,8 @@
|
||||
v-model="formData.body"
|
||||
:fields="InvoiceMailFields"
|
||||
:invalid="$v.formData.body.$error"
|
||||
@input="$v.formData.body.$touch()"
|
||||
class="mt-2"
|
||||
@input="$v.formData.body.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
</div>
|
||||
@ -194,6 +194,8 @@ export default {
|
||||
|
||||
...mapActions('company', ['fetchCompanySettings', 'fetchMailConfig']),
|
||||
|
||||
...mapActions('notification', ['showNotification']),
|
||||
|
||||
async setInitialData() {
|
||||
let admin = await this.fetchMailConfig()
|
||||
|
||||
@ -220,15 +222,31 @@ export default {
|
||||
if (this.$v.$invalid) {
|
||||
return true
|
||||
}
|
||||
swal({
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('invoices.confirm_send_invoice'),
|
||||
icon: '/assets/icon/check-circle-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
}).then(async (value) => {
|
||||
icon: 'question',
|
||||
iconHtml: `<svg
|
||||
aria-hidden="true"
|
||||
class="w-6 h-6"
|
||||
focusable="false"
|
||||
data-prefix="fas"
|
||||
data-icon="check-circle"
|
||||
class="svg-inline--fa fa-check-circle fa-w-16"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
<path
|
||||
fill="#55547A"
|
||||
d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"
|
||||
></path>
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
try {
|
||||
if (value) {
|
||||
if (result.value) {
|
||||
let data = {
|
||||
...this.formData,
|
||||
id: this.modalDataID,
|
||||
@ -239,21 +257,26 @@ export default {
|
||||
this.closeModal()
|
||||
if (res.data.success) {
|
||||
this.isLoading = false
|
||||
window.toastr['success'](
|
||||
this.$tc('invoices.send_invoice_successfully')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('invoices.send_invoice_successfully'),
|
||||
})
|
||||
return true
|
||||
}
|
||||
if (res.data.error === 'invoices.user_email_does_not_exist') {
|
||||
window.toastr['error'](
|
||||
this.$tc('invoices.user_email_does_not_exist')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$tc('invoices.user_email_does_not_exist'),
|
||||
})
|
||||
return false
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
this.isLoading = false
|
||||
window.toastr['error'](this.$tc('invoices.something_went_wrong'))
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$tc('invoices.something_went_wrong'),
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
@ -4,9 +4,9 @@
|
||||
<div class="px-8 py-8 sm:p-6">
|
||||
<sw-input-group
|
||||
:label="$t('general.from')"
|
||||
:error="fromError"
|
||||
class="mb-4"
|
||||
variant="vertical"
|
||||
:error="fromError"
|
||||
required
|
||||
>
|
||||
<sw-input
|
||||
@ -25,8 +25,8 @@
|
||||
>
|
||||
<sw-input
|
||||
v-model="formData.to"
|
||||
type="text"
|
||||
:invalid="$v.formData.to.$error"
|
||||
type="text"
|
||||
@input="$v.formData.to.$touch()"
|
||||
/>
|
||||
</sw-input-group>
|
||||
@ -188,6 +188,8 @@ export default {
|
||||
|
||||
...mapActions('company', ['fetchCompanySettings', 'fetchMailConfig']),
|
||||
|
||||
...mapActions('notification', ['showNotification']),
|
||||
|
||||
async setInitialData() {
|
||||
let admin = await this.fetchMailConfig()
|
||||
|
||||
@ -216,15 +218,31 @@ export default {
|
||||
if (this.$v.$invalid) {
|
||||
return true
|
||||
}
|
||||
swal({
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('payments.confirm_send_payment'),
|
||||
icon: '/assets/icon/check-circle-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
}).then(async (value) => {
|
||||
icon: 'question',
|
||||
iconHtml: `<svg
|
||||
aria-hidden="true"
|
||||
class="w-6 h-6"
|
||||
focusable="false"
|
||||
data-prefix="fas"
|
||||
data-icon="check-circle"
|
||||
class="svg-inline--fa fa-check-circle fa-w-16"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
<path
|
||||
fill="#55547A"
|
||||
d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"
|
||||
></path>
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
try {
|
||||
if (value) {
|
||||
if (result.value) {
|
||||
let data = {
|
||||
...this.formData,
|
||||
id: this.modalDataID,
|
||||
@ -236,21 +254,26 @@ export default {
|
||||
this.closeModal()
|
||||
if (res.data.success) {
|
||||
this.isLoading = false
|
||||
window.toastr['success'](
|
||||
this.$tc('payments.send_payment_successfully')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('payments.send_payment_successfully'),
|
||||
})
|
||||
return true
|
||||
}
|
||||
if (res.data.error === 'payments.user_email_does_not_exist') {
|
||||
window.toastr['error'](
|
||||
this.$tc('payments.user_email_does_not_exist')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$tc('payments.user_email_does_not_exist'),
|
||||
})
|
||||
return false
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
this.isLoading = false
|
||||
window.toastr['error'](this.$tc('payments.something_went_wrong'))
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$tc('payments.something_went_wrong'),
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
@ -9,9 +9,9 @@
|
||||
:searchable="true"
|
||||
:allow-empty="false"
|
||||
:show-labels="false"
|
||||
:custom-label="getCustomLabel"
|
||||
class="mt-2"
|
||||
track-by="id"
|
||||
:custom-label="getCustomLabel"
|
||||
/>
|
||||
</sw-input-group>
|
||||
</div>
|
||||
@ -90,6 +90,8 @@ export default {
|
||||
|
||||
...mapActions('modal', ['closeModal']),
|
||||
|
||||
...mapActions('notification', ['showNotification']),
|
||||
|
||||
async loadData() {
|
||||
this.loading = true
|
||||
|
||||
@ -107,7 +109,10 @@ export default {
|
||||
if (response.data.success) {
|
||||
this.refreshData()
|
||||
this.closeDisk()
|
||||
window.toastr['success'](this.$t('settings.disk.success'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('settings.disk.success'),
|
||||
})
|
||||
}
|
||||
this.isLoading = true
|
||||
},
|
||||
|
||||
@ -69,7 +69,7 @@
|
||||
{{ $t('general.cancel') }}
|
||||
</sw-button>
|
||||
<sw-button :loading="isLoading" variant="primary" type="submit">
|
||||
<save-icon class="mr-2" v-if="!isLoading" />
|
||||
<save-icon v-if="!isLoading" class="mr-2" />
|
||||
{{ !isEdit ? $t('general.save') : $t('general.update') }}
|
||||
</sw-button>
|
||||
</div>
|
||||
@ -174,6 +174,7 @@ export default {
|
||||
methods: {
|
||||
...mapActions('modal', ['closeModal', 'resetModalData']),
|
||||
...mapActions('taxType', ['addTaxType', 'updateTaxType', 'fetchTaxType']),
|
||||
...mapActions('notification', ['showNotification']),
|
||||
resetFormData() {
|
||||
this.formData = {
|
||||
id: null,
|
||||
@ -198,13 +199,15 @@ export default {
|
||||
}
|
||||
if (response.data) {
|
||||
if (!this.isEdit) {
|
||||
window.toastr['success'](
|
||||
this.$t('settings.tax_types.created_message')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('settings.tax_types.created_message'),
|
||||
})
|
||||
} else {
|
||||
window.toastr['success'](
|
||||
this.$t('settings.tax_types.updated_message')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('settings.tax_types.updated_message'),
|
||||
})
|
||||
}
|
||||
window.hub.$emit('newTax', response.data.taxType)
|
||||
this.refreshData ? this.refreshData() : ''
|
||||
@ -212,7 +215,10 @@ export default {
|
||||
this.isLoading = false
|
||||
return true
|
||||
}
|
||||
window.toastr['error'](response.data.error)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: response.data.error,
|
||||
})
|
||||
},
|
||||
async setData() {
|
||||
this.formData = {
|
||||
|
||||
@ -12,7 +12,7 @@ export default {
|
||||
disabledMultiSelectTags: 'bg-gray-200 text-gray-400',
|
||||
multiselectTagsWrap: 'multiselect__tags-wrap inline',
|
||||
multiselectTag:
|
||||
'multiselect__tag relative inline-block pt-1 pr-6 pb-1 pl-2 rounded mr-2 text-white leading-none mb-1 whitespace-no-wrap overflow-hidden max-w-full',
|
||||
'multiselect__tag relative inline-block pt-1 pr-6 pb-1 pl-2 rounded mr-2 text-white leading-none mb-1 whitespace-nowrap overflow-hidden max-w-full',
|
||||
multiselectTagIcon:
|
||||
'multiselect__tag-icon cursor-pointer ml-2 absolute right-0 top-0 bottom-0 font-bold w-5 text-center leading-5 delay-200 transition-all ease-linear rounded',
|
||||
multiselectStrong: 'mb-2 leading-5 inline-block align-top',
|
||||
@ -26,6 +26,6 @@ export default {
|
||||
multiselectContent:
|
||||
'multiselect__content list-none inline-block p-0 m-0 min-w-full align-top',
|
||||
multiselectOption:
|
||||
'multiselect__option block p-3 no-underline leading-4 normal-case align-middle relative cursor-pointer whitespace-no-wrap text-sm',
|
||||
'multiselect__option block p-3 no-underline leading-4 normal-case align-middle relative cursor-pointer whitespace-nowrap text-sm',
|
||||
multiselectElement: 'multiselect__element block',
|
||||
}
|
||||
|
||||
@ -73,7 +73,7 @@ export default {
|
||||
callbacks: {
|
||||
label: function (tooltipItem, data) {
|
||||
return self.FormatGraphMoney(
|
||||
tooltipItem.value * 100,
|
||||
Math.round(tooltipItem.value * 100),
|
||||
self.defaultCurrency
|
||||
)
|
||||
},
|
||||
|
||||
@ -72,11 +72,9 @@ export default {
|
||||
deep: true,
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
created() {
|
||||
this.date =
|
||||
this.field && this.field.defaultAnswer
|
||||
? this.field.defaultAnswer
|
||||
: new Date()
|
||||
this.field && this.field.defaultAnswer && this.field.defaultAnswer
|
||||
this.placeholder =
|
||||
this.field && this.field.placeholder ? this.field.placeholder : ''
|
||||
},
|
||||
|
||||
@ -13,4 +13,10 @@ export default {
|
||||
'inline-flex items-center justify-center text-black transition px-2 duration-150 ease-in-out border border-gray-300 border-solid focus:outline-none bg-white',
|
||||
},
|
||||
},
|
||||
sizes: {
|
||||
discount: {
|
||||
button: 'py-2 px-2 text-sm leading-5 rounded',
|
||||
loadingIcon: 'w-4 h-4 -ml-2',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@ export default {
|
||||
itemContainer:
|
||||
'z-10 p-2 max-h-60 text-base text-left list-none rounded border-0 shadow bg-white text-black overflow-auto sw-scroll',
|
||||
item:
|
||||
'flex p-2 text-sm font-light text-left text-black bg-transparent rounded cursor-pointer none hover:bg-gray-200 whitespace-no-wrap',
|
||||
'flex p-2 text-sm font-light text-left text-black bg-transparent rounded cursor-pointer none hover:bg-gray-200 whitespace-nowrap',
|
||||
itemIcon: 'w-5 h-5 mr-3 text-secondary',
|
||||
},
|
||||
variants: {
|
||||
@ -16,7 +16,7 @@ export default {
|
||||
divider:
|
||||
'border-t border-solid border-gray-200 my-2 mx-0 overflow-hidden',
|
||||
item:
|
||||
'flex p-0 text-sm font-light text-left text-black bg-transparent rounded cursor-pointer none hover:bg-gray-200 whitespace-no-wrap',
|
||||
'flex p-0 text-sm font-light text-left text-black bg-transparent rounded cursor-pointer none hover:bg-gray-200 whitespace-nowrap',
|
||||
itemContainer:
|
||||
'z-10 p-2 text-base text-left list-none rounded border-0 shadow bg-white text-black',
|
||||
itemIcon: 'w-5 h-5 mr-3 text-secondary',
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
import Vue from 'vue'
|
||||
|
||||
Vue.directive('click-outside', {
|
||||
bind: function (el, binding, vnode) {
|
||||
el.event = function (event) {
|
||||
@ -17,7 +19,9 @@ Vue.directive('click-outside', {
|
||||
Vue.directive('autoresize', {
|
||||
inserted: function (el) {
|
||||
el.style.height = el.scrollHeight + 'px'
|
||||
el.style.overflow.y = 'hidden'
|
||||
if (el.style.overflow && el.style.overflow.y) {
|
||||
el.style.overflow.y = 'hidden'
|
||||
}
|
||||
el.style.resize = 'none'
|
||||
function OnInput() {
|
||||
this.style.height = 'auto'
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
import i18n from '../plugins/i18n';
|
||||
|
||||
export default {
|
||||
addClass(el, className) {
|
||||
if (el.classList) el.classList.add(className)
|
||||
@ -23,7 +25,13 @@ export default {
|
||||
|
||||
amount = amount / 100
|
||||
|
||||
let { precision, decimal_separator, thousand_separator, symbol } = currency
|
||||
let {
|
||||
precision,
|
||||
decimal_separator,
|
||||
thousand_separator,
|
||||
symbol,
|
||||
swap_currency_symbol,
|
||||
} = currency
|
||||
|
||||
try {
|
||||
precision = Math.abs(precision)
|
||||
@ -37,20 +45,22 @@ export default {
|
||||
let j = i.length > 3 ? i.length % 3 : 0
|
||||
|
||||
let moneySymbol = `<span style="font-family: sans-serif">${symbol}</span>`
|
||||
let thousandText = j ? i.substr(0, j) + thousand_separator : ''
|
||||
let amountText = i
|
||||
.substr(j)
|
||||
.replace(/(\d{3})(?=\d)/g, '$1' + thousand_separator)
|
||||
let precisionText = precision
|
||||
? decimal_separator +
|
||||
Math.abs(amount - i)
|
||||
.toFixed(precision)
|
||||
.slice(2)
|
||||
: ''
|
||||
let combinedAmountText =
|
||||
negativeSign + thousandText + amountText + precisionText
|
||||
|
||||
return (
|
||||
moneySymbol +
|
||||
' ' +
|
||||
negativeSign +
|
||||
(j ? i.substr(0, j) + thousand_separator : '') +
|
||||
i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + thousand_separator) +
|
||||
(precision
|
||||
? decimal_separator +
|
||||
Math.abs(amount - i)
|
||||
.toFixed(precision)
|
||||
.slice(2)
|
||||
: '')
|
||||
)
|
||||
return swap_currency_symbol
|
||||
? combinedAmountText + ' ' + moneySymbol
|
||||
: moneySymbol + ' ' + combinedAmountText
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
@ -68,7 +78,13 @@ export default {
|
||||
|
||||
amount = amount / 100
|
||||
|
||||
let { precision, decimal_separator, thousand_separator, symbol } = currency
|
||||
let {
|
||||
precision,
|
||||
decimal_separator,
|
||||
thousand_separator,
|
||||
symbol,
|
||||
swap_currency_symbol,
|
||||
} = currency
|
||||
|
||||
try {
|
||||
precision = Math.abs(precision)
|
||||
@ -82,20 +98,22 @@ export default {
|
||||
let j = i.length > 3 ? i.length % 3 : 0
|
||||
|
||||
let moneySymbol = `${symbol}`
|
||||
let thousandText = j ? i.substr(0, j) + thousand_separator : ''
|
||||
let amountText = i
|
||||
.substr(j)
|
||||
.replace(/(\d{3})(?=\d)/g, '$1' + thousand_separator)
|
||||
let precisionText = precision
|
||||
? decimal_separator +
|
||||
Math.abs(amount - i)
|
||||
.toFixed(precision)
|
||||
.slice(2)
|
||||
: ''
|
||||
let combinedAmountText =
|
||||
negativeSign + thousandText + amountText + precisionText
|
||||
|
||||
return (
|
||||
moneySymbol +
|
||||
' ' +
|
||||
negativeSign +
|
||||
(j ? i.substr(0, j) + thousand_separator : '') +
|
||||
i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + thousand_separator) +
|
||||
(precision
|
||||
? decimal_separator +
|
||||
Math.abs(amount - i)
|
||||
.toFixed(precision)
|
||||
.slice(2)
|
||||
: '')
|
||||
)
|
||||
return swap_currency_symbol
|
||||
? combinedAmountText + ' ' + moneySymbol
|
||||
: moneySymbol + ' ' + combinedAmountText
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
@ -245,6 +263,36 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
getStatusTranslation(status) {
|
||||
switch (status) {
|
||||
case 'DRAFT':
|
||||
return i18n.t('general.draft')
|
||||
case 'PAID':
|
||||
return i18n.t('invoices.paid')
|
||||
case 'UNPAID':
|
||||
return i18n.t('invoices.unpaid')
|
||||
case 'SENT':
|
||||
return i18n.t('general.sent')
|
||||
case 'REJECTED':
|
||||
return i18n.t('estimates.rejected')
|
||||
case 'ACCEPTED':
|
||||
return i18n.t('estimates.accepted')
|
||||
case 'VIEWED':
|
||||
return i18n.t('invoices.viewed')
|
||||
case 'EXPIRED':
|
||||
return i18n.t('estimates.expired')
|
||||
case 'PARTIALLY PAID':
|
||||
return i18n.t('estimates.partially_paid')
|
||||
case 'OVERDUE':
|
||||
return i18n.t('invoices.overdue')
|
||||
case 'COMPLETED':
|
||||
return i18n.t('invoices.completed')
|
||||
case 'DUE':
|
||||
return i18n.t('general.due')
|
||||
default:
|
||||
return status
|
||||
}
|
||||
},
|
||||
compareVersion(v1, v2, options) {
|
||||
const lexicographical = options && options.lexicographical
|
||||
const zeroExtend = options && options.zeroExtend
|
||||
@ -280,5 +328,5 @@ export default {
|
||||
return -1
|
||||
}
|
||||
return 0
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
@ -1,28 +1,28 @@
|
||||
{
|
||||
"navigation": {
|
||||
"dashboard": "الرئيسية",
|
||||
"dashboard": "لوحة القيادة",
|
||||
"customers": "العملاء",
|
||||
"items": "الأصناف",
|
||||
"items": "بضائع/خدمات",
|
||||
"invoices": "الفواتير",
|
||||
"expenses": "النفقات",
|
||||
"estimates": "التقديرات",
|
||||
"payments": "المدفوعات",
|
||||
"payments": "الدفوعات",
|
||||
"reports": "التقارير",
|
||||
"settings": "الإعدادات",
|
||||
"logout": "خروج",
|
||||
"logout": "تسجيل الخروج",
|
||||
"users": "المستخدمون"
|
||||
},
|
||||
"general": {
|
||||
"add_company": "أضف شركة",
|
||||
"view_pdf": "عرض PDF",
|
||||
"copy_pdf_url": "Copy PDF Url",
|
||||
"copy_pdf_url": "نسخ رابط PDF",
|
||||
"download_pdf": "تنزيل PDF",
|
||||
"save": "حفظ",
|
||||
"create": "خلق",
|
||||
"cancel": "إلغاء الأمر",
|
||||
"create": "إنشاء",
|
||||
"cancel": "تراجع",
|
||||
"update": "تحديث",
|
||||
"deselect": "Deselect",
|
||||
"download": "تنزيل",
|
||||
"deselect": "إلغاء الإختيار",
|
||||
"download": "تحميل",
|
||||
"from_date": "من تاريخ",
|
||||
"to_date": "إلى تاريخ",
|
||||
"from": "من",
|
||||
@ -50,43 +50,44 @@
|
||||
"discount": "خصم",
|
||||
"fixed": "ثابت",
|
||||
"percentage": "نسبة",
|
||||
"tax": "ضريبة",
|
||||
"tax": "اداء",
|
||||
"total_amount": "المبلغ الإجمالي",
|
||||
"bill_to": "مطلوب من",
|
||||
"bill_to": "الفاتورة لـ",
|
||||
"ship_to": "يشحن إلى",
|
||||
"due": "واجبة السداد",
|
||||
"due": "المتبقي",
|
||||
"draft": "مسودة",
|
||||
"sent": "مرسلة",
|
||||
"sent": "ارسلت",
|
||||
"all": "الكل",
|
||||
"select_all": "تحديد الل",
|
||||
"select_all": "تحديد الكل",
|
||||
"choose_file": "اضغط هنا لاختيار ملف",
|
||||
"choose_template": "اختيار القالب",
|
||||
"choose": "اختر",
|
||||
"remove": "إزالة",
|
||||
"powered_by": "تصميم",
|
||||
"bytefury": "باترفوري",
|
||||
"remove": "حذف",
|
||||
"powered_by": "بدعم من",
|
||||
"bytefury": "Bytefury",
|
||||
"select_a_status": "اختر الحالة",
|
||||
"select_a_tax": "اختر الضريبة",
|
||||
"select_a_tax": "اختر الاداء",
|
||||
"search": "بحث",
|
||||
"are_you_sure": "هل أنت متأكد?",
|
||||
"are_you_sure": "هل أنت متأكد؟",
|
||||
"list_is_empty": "القائمة فارغة.",
|
||||
"no_tax_found": "لا يوجد ضريبة!",
|
||||
"four_zero_four": "404",
|
||||
"you_got_lost": "عفواً! يبدو أنك قد تهت!",
|
||||
"go_home": "عودة إلى الرئيسية",
|
||||
"test_mail_conf": "اختبار تكوين البريد",
|
||||
"go_home": "الذهاب الى الصفحة الرئيسية",
|
||||
"test_mail_conf": "اختبار اعدادات البريد",
|
||||
"send_mail_successfully": "تم إرسال البريد بنجاح",
|
||||
"setting_updated": "تم تحديث الإعدادات بنجاح",
|
||||
"select_state": "اختر الولاية/المنطقة",
|
||||
"select_country": "اختر الدولة",
|
||||
"select_city": "اختر المدينة",
|
||||
"street_1": "عنوان الشارع 1",
|
||||
"street_2": "عنوان الشارع 2",
|
||||
"street_2": "الشارع 2",
|
||||
"action_failed": "فشلت العملية",
|
||||
"retry": "أعد المحاولة",
|
||||
"choose_note": "اختر ملاحظة",
|
||||
"no_note_found": "لم يتم العثور على الملاحظة",
|
||||
"insert_note": "أدخل ملاحظة"
|
||||
"insert_note": "أدخل ملاحظة",
|
||||
"copied_pdf_url_clipboard": "Copied PDF url to clipboard!"
|
||||
},
|
||||
"dashboard": {
|
||||
"select_year": "اختر السنة",
|
||||
@ -154,7 +155,7 @@
|
||||
"phone": "الهاتف",
|
||||
"website": "موقع الإنترنت",
|
||||
"overview": "استعراض",
|
||||
"enable_portal": "Enable Portal",
|
||||
"enable_portal": "تفعيل البوابة",
|
||||
"country": "الدولة",
|
||||
"state": "الولاية/المنطقة",
|
||||
"city": "المدينة",
|
||||
@ -177,6 +178,8 @@
|
||||
"copy_billing_address": "نسخ من عنوان الفوترة",
|
||||
"no_customers": "لا يوجد عملاء حتى الآن!",
|
||||
"no_customers_found": "لم يتم الحصول على عملاء!",
|
||||
"no_contact": "No contact",
|
||||
"no_contact_name": "No contact name",
|
||||
"list_of_customers": "سوف يحتوي هذا القسم على قائمة العملاء.",
|
||||
"primary_display_name": "اسم العرض الرئيسي",
|
||||
"select_currency": "اختر العملة",
|
||||
@ -200,6 +203,7 @@
|
||||
"added_on": "أضيف في",
|
||||
"price": "السعر",
|
||||
"date_of_creation": "تاريخ الإنشاء",
|
||||
"not_selected": "No item selected",
|
||||
"action": "إجراء",
|
||||
"add_item": "إضافة صنف",
|
||||
"save_item": "حفظ الصنف",
|
||||
@ -270,6 +274,7 @@
|
||||
"required": "حقل مطلوب"
|
||||
},
|
||||
"accepted": "مقبول",
|
||||
"rejected": "Rejected",
|
||||
"sent": "مرسل",
|
||||
"draft": "مسودة",
|
||||
"declined": "مرفوض",
|
||||
@ -316,6 +321,9 @@
|
||||
"all": "الكل",
|
||||
"paid": "مدفوع",
|
||||
"unpaid": "غير مدفوع",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "العميل",
|
||||
"paid_status": "حالة الدفع",
|
||||
"ref_no": "رقم المرجع.",
|
||||
@ -428,18 +436,20 @@
|
||||
"edit_payment": "تعديل الدفعة",
|
||||
"view_payment": "عرض الدفعة",
|
||||
"add_new_payment": "إضافة دفعة جديدة",
|
||||
"send_payment_receipt": "Send Payment Receipt",
|
||||
"send_payment_receipt": "إرسال إيصال الدفع",
|
||||
"send_payment": "إرسال الدفعة",
|
||||
"save_payment": "حفظ الدفعة",
|
||||
"update_payment": "تحديث الدفعة",
|
||||
"payment": "دفعة | مدفوعات",
|
||||
"no_payments": "لا يوجد مدفوعات حتى الآن!",
|
||||
"not_selected": "Not selected",
|
||||
"no_invoice": "No invoice",
|
||||
"no_matching_payments": "لا توجد مدفوعات مطابقة!",
|
||||
"list_of_payments": "سوف تحتوي هذه القائمة على مدفوعات الفواتير.",
|
||||
"select_payment_mode": "اختر طريقة الدفع",
|
||||
"confirm_mark_as_sent": "سيتم التحديد كمرسل على هذا التقدير",
|
||||
"confirm_send_payment": "This payment will be sent via email to the customer",
|
||||
"send_payment_successfully": "Payment sent successfully",
|
||||
"confirm_send_payment": "سيتم إرسال هذه الدفعة عبر البريد الإلكتروني إلى العميل",
|
||||
"send_payment_successfully": "تم إرسال الدفعة بنجاح",
|
||||
"user_email_does_not_exist": "البريد الإلكتروني للمستخدم غير موجود!",
|
||||
"something_went_wrong": "خطأ غير معروف!",
|
||||
"confirm_delete": "لن تكون قادر على استرجاع هذه الدفعة | لن تكون قادراً على استرجاع هذه المدفوعات",
|
||||
@ -463,6 +473,7 @@
|
||||
"receipt": "سند القبض",
|
||||
"amount": "المبلغ المطلوب",
|
||||
"action": "إجراء",
|
||||
"not_selected": "Not selected",
|
||||
"note": "ملاحظة",
|
||||
"category_id": "رمز الفئة",
|
||||
"date": "تاريخ النفقات",
|
||||
@ -505,7 +516,7 @@
|
||||
"enter_email": "أدخل البريد الالكتروني",
|
||||
"enter_password": "أكتب كلمة المرور",
|
||||
"retype_password": "أعد كتابة كلمة المرور",
|
||||
"login_placeholder": "mail@example.com"
|
||||
"login_placeholder": "name@example.com"
|
||||
},
|
||||
"users": {
|
||||
"title": "المستخدمون",
|
||||
@ -740,10 +751,13 @@
|
||||
"title": "الفواتير",
|
||||
"notes": "ملاحظات",
|
||||
"invoice_prefix": "بادئة رقم الفاتورة",
|
||||
"invoice_number_length": "Invoice number length",
|
||||
"default_invoice_email_body": "نص الفاتورة الافتراضي للبريد الإلكتروني",
|
||||
"invoice_settings": "إعدادات الفاتورة",
|
||||
"autogenerate_invoice_number": "ترقيم آلي للفاتورة",
|
||||
"invoice_setting_description": "تعطيل الترقيم الآلي ، إذا كنت لا ترغب في إنشاء أرقام الفاتورة تلقائيًا في كل مرة تقوم فيها بإنشاء فاتورة جديدة.",
|
||||
"invoice_email_attachment": "Send invoices as attachments",
|
||||
"invoice_email_attachment_setting_description": "Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_invoice_prefix": "أدخل بادئة رقم الفاتورة",
|
||||
"terms_and_conditions": "الأحكام والشروط",
|
||||
"company_address_format": "تنسيق عنوان الشركة",
|
||||
@ -754,10 +768,13 @@
|
||||
"estimates": {
|
||||
"title": "التقديرات",
|
||||
"estimate_prefix": "بادئة رقم التقدير",
|
||||
"estimate_number_length": "Estimate number length",
|
||||
"default_estimate_email_body": "تقدير نص البريد الإلكتروني الافتراضي",
|
||||
"estimate_settings": "إعدادت التقدير",
|
||||
"autogenerate_estimate_number": "ترقيم آلي للتقدير",
|
||||
"estimate_setting_description": "تعطيل الترقيم الآلي ، إذا كنت لا ترغب في إنشاء أرقام التقديرات تلقائيًا في كل مرة تقوم فيها بإنشاء تقدير جديد.",
|
||||
"estimate_email_attachment": "Send estimates as attachments",
|
||||
"estimate_email_attachment_setting_description": "Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_estimate_prefix": "أدخل بادئة رقم التقدير",
|
||||
"estimate_setting_updated": "تم تحديث إعدادات التقدير بنجاح",
|
||||
"company_address_format": "تنسيق عنوان الشركة",
|
||||
@ -766,12 +783,15 @@
|
||||
},
|
||||
"payments": {
|
||||
"title": "المدفوعات",
|
||||
"description": "Modes of transaction for payments",
|
||||
"description": "أساليب المعاملات المتعلقة بالمدفوعات",
|
||||
"payment_prefix": "بادئة رقم الدفعة",
|
||||
"payment_number_length": "Payment number lenght",
|
||||
"default_payment_email_body": "نص البريد الإلكتروني للدفع الافتراضي",
|
||||
"payment_settings": "إعدادات الدفعة",
|
||||
"autogenerate_payment_number": "ترقيم آلي للمدفوعات",
|
||||
"payment_setting_description": "تعطيل الترقيم الآلي ، إذا كنت لا ترغب في إنشاء أرقام الدفعة تلقائيًا في كل مرة تقوم فيها بإنشاء دفعة جديدة.",
|
||||
"payment_email_attachment": "Send payments as attachments",
|
||||
"payment_email_attachment_setting_description": "Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_payment_prefix": "أدخل بادئة رقم الدفعة",
|
||||
"payment_setting_updated": "تم تحديث إعدادات الدفعة بنجاح",
|
||||
"payment_modes": "طرق الدفع",
|
||||
@ -800,7 +820,7 @@
|
||||
},
|
||||
"notes": {
|
||||
"title": "ملاحظات",
|
||||
"description": "Save time by creating notes and reusing them on your invoices, estimates & payments.",
|
||||
"description": "توفير الوقت عن طريق إنشاء الملاحظات وإعادة استخدامها على الفواتير والتقديرات والمدفوعات.",
|
||||
"notes": "ملاحظات",
|
||||
"type": "نوع",
|
||||
"add_note": "اضف ملاحظة",
|
||||
@ -892,7 +912,7 @@
|
||||
"updated_message": "تم تحديث التفضيلات بنجاح",
|
||||
"select_language": "اختر اللغة",
|
||||
"select_time_zone": "اختر المنطة الزمنية",
|
||||
"select_date_format": "Select Date Format",
|
||||
"select_date_format": "اختر صيغة التاريخ",
|
||||
"select_financial_year": "اختر السنة المالية"
|
||||
},
|
||||
"update_app": {
|
||||
@ -901,7 +921,7 @@
|
||||
"check_update": "تحقق من التحديثات",
|
||||
"avail_update": "تحديث جديد متوفر",
|
||||
"next_version": "النسخة الجديدة",
|
||||
"requirements": "Requirements",
|
||||
"requirements": "المتطلبات",
|
||||
"update": "حدث الآن",
|
||||
"update_progress": "قيد التحديث...",
|
||||
"progress_text": "سوف يستغرق التحديث بضع دقائق. يرجى عدم تحديث الشاشة أو إغلاق النافذة قبل انتهاء التحديث",
|
||||
@ -911,6 +931,7 @@
|
||||
"download_zip_file": "تنزيل ملف ZIP",
|
||||
"unzipping_package": "حزمة فك الضغط",
|
||||
"copying_files": "نسخ الملفات",
|
||||
"deleting_files": "Deleting Unused files",
|
||||
"running_migrations": "إدارة عمليات الترحيل",
|
||||
"finishing_update": "تحديث التشطيب",
|
||||
"update_failed": "فشل التحديث",
|
||||
@ -926,7 +947,7 @@
|
||||
"path": "مسار",
|
||||
"new_disk": "قرص جديد",
|
||||
"created_at": "أنشئت في",
|
||||
"size": "size",
|
||||
"size": "حجم الملف",
|
||||
"dropbox": "بصندوق الإسقاط",
|
||||
"local": "محلي",
|
||||
"healthy": "صحي",
|
||||
@ -936,7 +957,7 @@
|
||||
"select_disk": "حدد القرص",
|
||||
"action": "عمل",
|
||||
"deleted_message": "تم حذف النسخة الاحتياطية بنجاح",
|
||||
"created_message": "Backup created successfully",
|
||||
"created_message": "تم إنشاء النسخة الاحتياطية بنجاح",
|
||||
"invalid_disk_credentials": "بيانات اعتماد غير صالحة للقرص المحدد"
|
||||
},
|
||||
"disk": {
|
||||
@ -980,6 +1001,7 @@
|
||||
"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.",
|
||||
@ -1037,10 +1059,10 @@
|
||||
"port": "منفذ قاعدة البيانات",
|
||||
"password": "كلمة مرور قاعدة البيانات",
|
||||
"app_url": "عنوان الإنترنت للنظام",
|
||||
"app_domain": "App Domain",
|
||||
"app_domain": "رابط التطبيق",
|
||||
"username": "اسم المستخدم لقاعدة البيانات",
|
||||
"db_name": "سم قاعدة البيانات",
|
||||
"db_path": "Database Path",
|
||||
"db_path": "مسار قاعدة البيانات",
|
||||
"desc": "قم بإنشاء قاعدة بيانات على الخادم الخاص بك وتعيين بيانات الاعتماد باستخدام النموذج أدناه."
|
||||
},
|
||||
"permissions": {
|
||||
@ -1122,49 +1144,54 @@
|
||||
"amount_maxlength": "يجب ألا يزيد المبلغ عن 20 رقماً.",
|
||||
"amount_minvalue": "يجب أن يكون المبلغ أكبر من صفر.",
|
||||
"description_maxlength": "يجب ألا يزيد الوصف عن 255 حرفاً.",
|
||||
"subject_maxlength": "Subject should not be greater than 100 characters.",
|
||||
"message_maxlength": "Message should not be greater than 255 characters.",
|
||||
"subject_maxlength": "يجب الا يزيد العنوان عن 100 حرف.",
|
||||
"message_maxlength": "يجب ألا يزيد حجم النص عن 255 حرف.",
|
||||
"maximum_options_error": "الحد الأعلى هو {max} خيارات. قم بإزالة أحد الخيارات لتحديد خيار آخر.",
|
||||
"notes_maxlength": "يجب ألا يزيد حجم الملاحظات عن 255 حرفاً.",
|
||||
"address_maxlength": "يجب ألا يزيد العنوان عن 255 حرفاً.",
|
||||
"ref_number_maxlength": "يجب ألا يزيد الرقم المرجعي عن 255 حرفاً.",
|
||||
"prefix_maxlength": "يجب ألا تزيد البادئة عن 5 أحرف.",
|
||||
"something_went_wrong": "خطأ غير معروف!"
|
||||
"something_went_wrong": "خطأ غير معروف!",
|
||||
"number_length_minvalue": "Number lenght should be greater than 0"
|
||||
},
|
||||
"pdf_estimate_label": "تقدير",
|
||||
"pdf_estimate_number": "رقم تقدير",
|
||||
"pdf_estimate_date": "تاريخ التقدير",
|
||||
"pdf_estimate_expire_date": "Expiry date",
|
||||
"pdf_estimate_expire_date": "تاريخ انتهاء الصلاحية",
|
||||
"pdf_invoice_label": "الفاتورة",
|
||||
"pdf_invoice_number": "رقم الفاتورة",
|
||||
"pdf_invoice_date": "تاريخ الفاتورة",
|
||||
"pdf_invoice_due_date": "Due date",
|
||||
"pdf_invoice_due_date": "تاريخ الاستحقاق",
|
||||
"pdf_notes": "ملاحظات",
|
||||
"pdf_items_label": "الأصناف",
|
||||
"pdf_quantity_label": "الكمية",
|
||||
"pdf_price_label": "السعر",
|
||||
"pdf_discount_label": "الخصم",
|
||||
"pdf_amount_label": "المبلغ المطلوب",
|
||||
"pdf_subtotal": "Subtotal",
|
||||
"pdf_subtotal": "المجموع الفرعي",
|
||||
"pdf_total": "الإجمالي",
|
||||
"pdf_payment_receipt_label": "PAYMENT RECEIPT",
|
||||
"pdf_payment_date": "Payment Date",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "ايصال الدفع",
|
||||
"pdf_payment_date": "تاريخ الدفع",
|
||||
"pdf_payment_number": "رقم الدفعة",
|
||||
"pdf_payment_mode": "نوع الدفعة",
|
||||
"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_payment_amount_received_label": "المبلغ المستلم",
|
||||
"pdf_expense_report_label": "تقرير المصاريف",
|
||||
"pdf_total_expenses_label": "مجموع المصاريف",
|
||||
"pdf_profit_loss_label": "تقرير الارباح و الخسائر",
|
||||
"pdf_sales_customers_label": "Sales Customer Report",
|
||||
"pdf_sales_items_label": "Sales Item Report",
|
||||
"pdf_tax_summery_label": "Tax Summary Report",
|
||||
"pdf_income_label": "الايرادات",
|
||||
"pdf_net_profit_label": "صافي الأرباح",
|
||||
"pdf_customer_sales_report": "تقرير المبيعات: حسب العميل",
|
||||
"pdf_total_sales_label": "مجموع المبيعات",
|
||||
"pdf_item_sales_label": "تقرير المبيعات: حسب البضاعة او الخدمة",
|
||||
"pdf_tax_report_label": "تقرير الاداءات",
|
||||
"pdf_total_tax_label": "اجمالي الاداءات",
|
||||
"pdf_tax_types_label": "أنواع الضرائب",
|
||||
"pdf_expenses_label": "النفقات",
|
||||
"pdf_bill_to": "مطلوب من,",
|
||||
"pdf_ship_to": "يشحن إلى,",
|
||||
"pdf_received_from": "Received from:"
|
||||
"pdf_received_from": "تم الاستلام من:"
|
||||
}
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
"customers": "Kunden",
|
||||
"items": "Artikel",
|
||||
"invoices": "Rechnungen",
|
||||
"expenses": "Kosten",
|
||||
"expenses": "Ausgaben",
|
||||
"estimates": "Kostenvoranschläge",
|
||||
"payments": "Zahlungen",
|
||||
"reports": "Berichte",
|
||||
@ -15,18 +15,18 @@
|
||||
"general": {
|
||||
"add_company": "Unternehmen hinzufügen",
|
||||
"view_pdf": "PDF anzeigen",
|
||||
"copy_pdf_url": "PDF Url kopieren",
|
||||
"copy_pdf_url": "PDF-Link kopieren",
|
||||
"download_pdf": "PDF herunterladen",
|
||||
"save": "Speichern",
|
||||
"create": "Erstellen",
|
||||
"cancel": "Abbrechen",
|
||||
"update": "Aktualisieren",
|
||||
"deselect": "Entfernen",
|
||||
"deselect": "Abwählen",
|
||||
"download": "Herunterladen",
|
||||
"from_date": "Von Datum",
|
||||
"to_date": "bis Datum",
|
||||
"from": "Von",
|
||||
"to": "bis",
|
||||
"to": "An",
|
||||
"sort_by": "Sortieren nach",
|
||||
"ascending": "Aufsteigend",
|
||||
"descending": "Absteigend",
|
||||
@ -53,7 +53,7 @@
|
||||
"tax": "Steuer",
|
||||
"total_amount": "GESAMTSUMME",
|
||||
"bill_to": "Rechnungsempfänger",
|
||||
"ship_to": "Versand ein",
|
||||
"ship_to": "Versand an",
|
||||
"due": "Fällig",
|
||||
"draft": "Entwurf",
|
||||
"sent": "Gesendet",
|
||||
@ -63,7 +63,7 @@
|
||||
"choose_template": "Wählen Sie eine Vorlage",
|
||||
"choose": "Wählen",
|
||||
"remove": "Entfernen",
|
||||
"powered_by": "Powered by",
|
||||
"powered_by": "Betrieben durch",
|
||||
"bytefury": "Bytefury",
|
||||
"select_a_status": "Status wählen",
|
||||
"select_a_tax": "Steuersatz wählen",
|
||||
@ -75,18 +75,19 @@
|
||||
"you_got_lost": "Hoppla! Du hast dich verirrt!",
|
||||
"go_home": "Geh zurück",
|
||||
"test_mail_conf": "E-Mail Konfiguration testen",
|
||||
"send_mail_successfully": "E-Mail versendet erfolgreich",
|
||||
"send_mail_successfully": "E-Mail erfolgreich versendet",
|
||||
"setting_updated": "Einstellungen erfolgreich aktualisiert",
|
||||
"select_state": "Bundesland wählen",
|
||||
"select_country": "Land wählen",
|
||||
"select_city": "Stadt wählen",
|
||||
"street_1": "Straße",
|
||||
"street_2": "Zusatz Strasse",
|
||||
"street_1": "Straße und Hausnummer",
|
||||
"street_2": "Adresszusatz",
|
||||
"action_failed": "Aktion fehlgeschlagen",
|
||||
"retry": "Wiederholen",
|
||||
"choose_note": "Notiz auswählen",
|
||||
"no_note_found": "Keine Notizen gefunden",
|
||||
"insert_note": "Notiz einfügen"
|
||||
"insert_note": "Notiz einfügen",
|
||||
"copied_pdf_url_clipboard": "Copied PDF url to clipboard!"
|
||||
},
|
||||
"dashboard": {
|
||||
"select_year": "Jahr wählen",
|
||||
@ -94,12 +95,12 @@
|
||||
"due_amount": "Offene Beträge",
|
||||
"customers": "Kunden",
|
||||
"invoices": "Rechnungen",
|
||||
"estimates": "Kostenvoranschläge"
|
||||
"estimates": "Angebote"
|
||||
},
|
||||
"chart_info": {
|
||||
"total_sales": "Aufträge gesamt",
|
||||
"total_receipts": "Zahlungen gesamt",
|
||||
"total_expense": "Kosten gesamt",
|
||||
"total_expense": "Ausgaben",
|
||||
"net_income": "Einnahmen Netto",
|
||||
"year": "Jahr"
|
||||
},
|
||||
@ -107,7 +108,7 @@
|
||||
"title": "Wöchentliche Rechnungen"
|
||||
},
|
||||
"monthly_chart": {
|
||||
"title": "Umsatz & Kosten"
|
||||
"title": "Umsatz & Ausgaben"
|
||||
},
|
||||
"recent_invoices_card": {
|
||||
"title": "Fällige Rechnungen",
|
||||
@ -118,7 +119,7 @@
|
||||
"view_all": "Alle Anzeigen"
|
||||
},
|
||||
"recent_estimate_card": {
|
||||
"title": "Aktuelle Kostenvoranschläge",
|
||||
"title": "Aktuelle Angebote",
|
||||
"date": "Datum",
|
||||
"customer": "Kunden",
|
||||
"amount_due": "Betrag",
|
||||
@ -144,7 +145,7 @@
|
||||
"contacts_list": "Kunden-Liste",
|
||||
"name": "Name",
|
||||
"mail": "E-Mail| E-Mails",
|
||||
"statement": "Statement",
|
||||
"statement": "Stellungnahme",
|
||||
"display_name": "Anzeige Name",
|
||||
"primary_contact_name": "Ansprechpartner",
|
||||
"contact_name": "Kontakt Name",
|
||||
@ -177,7 +178,9 @@
|
||||
"copy_billing_address": "Rechnungsadresse kopieren",
|
||||
"no_customers": "Noch keine Kunden!",
|
||||
"no_customers_found": "Keine Kunden gefunden!",
|
||||
"list_of_customers": "Dieser Abschnitt enthält die Liste der Kunden.",
|
||||
"no_contact": "Kein Kontakt",
|
||||
"no_contact_name": "Kein Kontaktname",
|
||||
"list_of_customers": "Dieser Bereich zeigt alle Kunden.",
|
||||
"primary_display_name": "Primärer Anzeige Name",
|
||||
"select_currency": "Währung wählen",
|
||||
"select_a_customer": "Wählen Sie einen Kunden",
|
||||
@ -200,6 +203,7 @@
|
||||
"added_on": "Hinzugefügt am",
|
||||
"price": "Preis",
|
||||
"date_of_creation": "Erstellt am",
|
||||
"not_selected": "Keine ausgewählt",
|
||||
"action": "Aktion",
|
||||
"add_item": "Artikel hinzufügen",
|
||||
"save_item": "Artikel speichern",
|
||||
@ -209,8 +213,8 @@
|
||||
"new_item": "Neuer Artikel",
|
||||
"edit_item": "Artikel bearbeiten",
|
||||
"no_items": "Keine Artikel vorhanden!",
|
||||
"list_of_items": "Dieser Abschnitt enthält die Liste der Artikel.",
|
||||
"select_a_unit": "wählen Sie die Einheit",
|
||||
"list_of_items": "Dieser Bereich zeigt alle Artikel.",
|
||||
"select_a_unit": "Einheit auswählen",
|
||||
"taxes": "Steuern",
|
||||
"item_attached_message": "Ein Artikel der bereits verwendet wird kann nicht gelöscht werden",
|
||||
"confirm_delete": "Sie können diesen Artikel nicht wiederherstellen | Sie können diese Artikel nicht wiederherstellen",
|
||||
@ -219,24 +223,24 @@
|
||||
"deleted_message": "Artikel erfolgreich gelöscht | Artikel erfolgreich gelöscht"
|
||||
},
|
||||
"estimates": {
|
||||
"title": "Kostenvoranschläge",
|
||||
"estimate": "Kostenvoranschlag | Kostenvoranschläge",
|
||||
"estimates_list": "Liste Kostenvoranschläge",
|
||||
"title": "Angebote",
|
||||
"estimate": "Angebot | Angebote",
|
||||
"estimates_list": "Angebotsübersicht",
|
||||
"days": "{days} Tage",
|
||||
"months": "{months} Monat",
|
||||
"years": "{years} Jahre",
|
||||
"all": "Alle",
|
||||
"paid": "Bezahlt",
|
||||
"unpaid": "Unbezahlte",
|
||||
"unpaid": "Unbezahlt",
|
||||
"customer": "KUNDEN",
|
||||
"ref_no": "REF. - NR.",
|
||||
"number": "ANZAHL",
|
||||
"number": "NUMMER",
|
||||
"amount_due": "OFFENER BETRAG",
|
||||
"partially_paid": "Teilweise bezahlt",
|
||||
"total": "Gesamt",
|
||||
"discount": "Rabatt",
|
||||
"sub_total": "Zwischensumme",
|
||||
"estimate_number": "Kostenvoran. Nummer",
|
||||
"estimate_number": "Angebotsnummer",
|
||||
"ref_number": "Ref-Nummer",
|
||||
"contact": "Kontakt",
|
||||
"add_item": "Fügen Sie ein Artikel hinzu",
|
||||
@ -247,49 +251,50 @@
|
||||
"add_tax": "Steuer hinzufügen",
|
||||
"amount": "Summe",
|
||||
"action": "Aktion",
|
||||
"notes": "Hinweise",
|
||||
"notes": "Notizen",
|
||||
"tax": "Steuer",
|
||||
"estimate_template": "Vorlage",
|
||||
"convert_to_invoice": "Konvertieren in Rechnung",
|
||||
"mark_as_sent": "Als gesendet markieren",
|
||||
"send_estimate": "Kostenvoranschlag senden",
|
||||
"resend_estimate": "Kostenvoranschlag erneut senden",
|
||||
"send_estimate": "Angebot senden",
|
||||
"resend_estimate": "Angebot erneut senden",
|
||||
"record_payment": "Zahlung erfassen",
|
||||
"add_estimate": "Kostenvoranschlag hinzufügen",
|
||||
"save_estimate": "Kostenvoranschlag speichern",
|
||||
"add_estimate": "Angebote hinzufügen",
|
||||
"save_estimate": "Angebot speichern",
|
||||
"confirm_conversion": "Sie möchten, konvertieren Sie diese Schätzung in die Rechnung?",
|
||||
"conversion_message": "Rechnung erfolgreich erstellt",
|
||||
"confirm_send_estimate": "Der Kostenvoranschlag wird per E-Mail an den Kunden gesendet",
|
||||
"confirm_mark_as_sent": "Dieser Kostenvoranschlag wird als gesendet markiert",
|
||||
"confirm_mark_as_accepted": "Dieser Kostenvoranschlag wird als angenommen markiert",
|
||||
"confirm_mark_as_rejected": "Dieser Kostenvoranschlag wird als abgelehnt markiert",
|
||||
"no_matching_estimates": "Es gibt keine übereinstimmenden Kostenvoranschläge!",
|
||||
"mark_as_sent_successfully": "Kostenvoranschlag als gesendet markiert.",
|
||||
"send_estimate_successfully": "Kostenvoranschlag erfolgreich gesendet",
|
||||
"confirm_send_estimate": "Das Angebot wird per E-Mail an den Kunden gesendet",
|
||||
"confirm_mark_as_sent": "Dieses Angebot wird als gesendet markiert",
|
||||
"confirm_mark_as_accepted": "Dieses Angebot wird als angenommen markiert",
|
||||
"confirm_mark_as_rejected": "Dieses Angebot wird als abgelehnt markiert",
|
||||
"no_matching_estimates": "Es gibt keine übereinstimmenden Angebote!",
|
||||
"mark_as_sent_successfully": "Angebot als gesendet markiert",
|
||||
"send_estimate_successfully": "Angebot erfolgreich gesendet",
|
||||
"errors": {
|
||||
"required": "Feld ist erforderlich"
|
||||
},
|
||||
"accepted": "Angenommen",
|
||||
"rejected": "Abgelehnt",
|
||||
"sent": "Gesendet",
|
||||
"draft": "Entwurf",
|
||||
"declined": "Abgelehnt",
|
||||
"new_estimate": "Neuer Kostenvoranschlag",
|
||||
"add_new_estimate": "Neuen Kostenvoranschlag hinzufügen",
|
||||
"update_Estimate": "Kostenvoranschlag aktualisieren",
|
||||
"edit_estimate": "Kostenvoranschlag ändern",
|
||||
"new_estimate": "Neues Angebot",
|
||||
"add_new_estimate": "Neues Angebot hinzufügen",
|
||||
"update_Estimate": "Angebot aktualisieren",
|
||||
"edit_estimate": "Angebot ändern",
|
||||
"items": "Artikel",
|
||||
"Estimate": "Kostenvoranschlag | Kostenvoranschläge",
|
||||
"Estimate": "Angebot | Angebote",
|
||||
"add_new_tax": "neuen Steuersatz hinzufügen",
|
||||
"no_estimates": "Keine Kostenvoranschläge vorhanden!",
|
||||
"list_of_estimates": "Dieser Abschnitt enthält die Liste der Kostenvoranschläge.",
|
||||
"no_estimates": "Keine Angebote vorhanden!",
|
||||
"list_of_estimates": "Dieser Bereich zeigt alle Angebote.",
|
||||
"mark_as_rejected": "Markiert als abgelehnt",
|
||||
"mark_as_accepted": "Markiert als angenommen",
|
||||
"marked_as_accepted_message": "Kostenvoranschlag als angenommen markiert",
|
||||
"marked_as_rejected_message": "Kostenvoranschlag als abgelehnt markiert",
|
||||
"confirm_delete": "Der Kostenvoranschlag kann nicht wiederhergestellt werden | Die Kostenvoranschläge können nicht wiederhergestellt werden",
|
||||
"created_message": "Kostenvoranschlag erfolgreich erstellt",
|
||||
"updated_message": "Kostenvoranschlag erfolgreich aktualisiert",
|
||||
"deleted_message": "Kostenvoranschlag erfolgreich gelöscht | Kostenvoranschläge erfolgreich gelöscht",
|
||||
"marked_as_accepted_message": "Angebot als angenommen markiert",
|
||||
"marked_as_rejected_message": "Angebot als abgelehnt markiert",
|
||||
"confirm_delete": "Das Angebot kann nicht wiederhergestellt werden | Die Angebote können nicht wiederhergestellt werden",
|
||||
"created_message": "Angebot erfolgreich erstellt",
|
||||
"updated_message": "Angebot erfolgreich aktualisiert",
|
||||
"deleted_message": "Angebot(e) erfolgreich gelöscht",
|
||||
"user_email_does_not_exist": "Benutzer-E-Mail nicht vorhanden",
|
||||
"something_went_wrong": "Da ging etwas schief",
|
||||
"item": {
|
||||
@ -315,11 +320,14 @@
|
||||
"years": "{years} Jahre",
|
||||
"all": "Alle",
|
||||
"paid": "Bezahlt",
|
||||
"unpaid": "Unbezahlte",
|
||||
"unpaid": "Unbezahlt",
|
||||
"viewed": "Gesehen",
|
||||
"overdue": "Überfällig",
|
||||
"completed": "Abgeschlossen",
|
||||
"customer": "KUNDEN",
|
||||
"paid_status": "BEZAHLT-STATUS",
|
||||
"paid_status": "ZAHLUNGSSTATUS",
|
||||
"ref_no": "REF. - NR.",
|
||||
"number": "ANZAHL",
|
||||
"number": "NUMMER",
|
||||
"amount_due": "OFFENER BETRAG",
|
||||
"partially_paid": "Teilzahlung",
|
||||
"total": "Gesamt",
|
||||
@ -336,7 +344,7 @@
|
||||
"add_tax": "Steuersatz hinzufügen",
|
||||
"amount": "Summe",
|
||||
"action": "Aktion",
|
||||
"notes": "Hinweise",
|
||||
"notes": "Notizen",
|
||||
"view": "Anzeigen",
|
||||
"send_invoice": "Rechnung senden",
|
||||
"resend_invoice": "Rechnung erneut senden",
|
||||
@ -356,7 +364,7 @@
|
||||
"update_invoice": "Rechnung ändern",
|
||||
"add_new_tax": "Neuen Steuersatz hinzufügen",
|
||||
"no_invoices": "Keine Rechnungen vorhanden!",
|
||||
"list_of_invoices": "Dieser Abschnitt enthält die Liste der Rechnungen.",
|
||||
"list_of_invoices": "Dieser Bereich zeigt alle Rechnungen.",
|
||||
"select_invoice": "Wählen Sie eine Rechnung",
|
||||
"no_matching_invoices": "Es gibt keine entsprechenden Rechnungen!",
|
||||
"mark_as_sent_successfully": "Rechnung gekennzeichnet als erfolgreich gesendet",
|
||||
@ -397,7 +405,7 @@
|
||||
"amount": "Summe",
|
||||
"action": "Aktion",
|
||||
"credit_number": "Kreditkarten-Nummer",
|
||||
"notes": "Hinweise",
|
||||
"notes": "Notizen",
|
||||
"confirm_delete": "Wollen Sie diese Gutschrift löschen?",
|
||||
"item": {
|
||||
"title": "Titel",
|
||||
@ -434,10 +442,12 @@
|
||||
"update_payment": "Zahlung ändern",
|
||||
"payment": "Zahlung | Zahlungen",
|
||||
"no_payments": "Keine Zahlungen vorhanden!",
|
||||
"not_selected": "Nicht ausgewählt",
|
||||
"no_invoice": "Keine Rechnung",
|
||||
"no_matching_payments": "Es gibt keine passenden Zahlungen!",
|
||||
"list_of_payments": "Dieser Abschnitt enthält die Liste der Zahlungen.",
|
||||
"list_of_payments": "Dieser Bereich zeigt alle Zahlungen.",
|
||||
"select_payment_mode": "Wählen Sie den Zahlungsmodus",
|
||||
"confirm_mark_as_sent": "Dieser Kostenvoranschlag wird als gesendet markiert",
|
||||
"confirm_mark_as_sent": "Dieses Angebot wird als gesendet markiert",
|
||||
"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",
|
||||
@ -449,37 +459,38 @@
|
||||
"invalid_amount_message": "Zahlungsbetrag ist ungültig"
|
||||
},
|
||||
"expenses": {
|
||||
"title": "Aufwendungen/Ausgaben",
|
||||
"expenses_list": "Liste der Ausgaben",
|
||||
"title": "Ausgaben",
|
||||
"expenses_list": "Ausgabenübersicht",
|
||||
"select_a_customer": "Wählen Sie einen Kunden",
|
||||
"expense_title": "Titel",
|
||||
"customer": "Kundin",
|
||||
"customer": "Kunde",
|
||||
"contact": "Kontakt",
|
||||
"category": "Kategorie",
|
||||
"from_date": "Von Datum",
|
||||
"to_date": "bis Datum",
|
||||
"expense_date": "Datum",
|
||||
"description": "Beschreibung",
|
||||
"receipt": "Eingang",
|
||||
"receipt": "Rechnung",
|
||||
"amount": "Summe",
|
||||
"action": "Aktion",
|
||||
"not_selected": "Nicht ausgewählt",
|
||||
"note": "Hinweis",
|
||||
"category_id": "Kategorie-Id",
|
||||
"date": "Aufwandsdatum",
|
||||
"add_expense": "Aufwendung hinzufügen",
|
||||
"add_new_expense": "Neue Aufwendung hinzufügen",
|
||||
"save_expense": "Aufwendung speichern",
|
||||
"update_expense": "Aufwendung aktualisieren",
|
||||
"date": "Ausgabedatum",
|
||||
"add_expense": "Ausgabe hinzufügen",
|
||||
"add_new_expense": "Neue Ausgabe hinzufügen",
|
||||
"save_expense": "Ausgabe speichern",
|
||||
"update_expense": "Ausgabe aktualisieren",
|
||||
"download_receipt": "Quittung herunterladen",
|
||||
"edit_expense": "Aufwendung ändern",
|
||||
"new_expense": "Neue Aufwendung",
|
||||
"expense": "Aufwendung | Aufwendungen",
|
||||
"edit_expense": "Ausgabe bearbeiten",
|
||||
"new_expense": "Neue Ausgabe",
|
||||
"expense": "Ausgabe | Ausgaben",
|
||||
"no_expenses": "Noch keine Ausgaben!",
|
||||
"list_of_expenses": "Dieser Abschnitt enthält die Liste der Ausgaben.",
|
||||
"list_of_expenses": "Dieser Bereich enthält alle Ausgaben.",
|
||||
"confirm_delete": "Sie können diese Ausgabe nicht wiederherstellen. | Sie können diese Ausgaben nicht wiederherstellen.",
|
||||
"created_message": "Aufwand erfolgreich erstellt",
|
||||
"updated_message": "Aufwand erfolgreich aktualisiert",
|
||||
"deleted_message": "Aufwand erfolgreich gelöscht | Aufwand erfolgreich gelöscht",
|
||||
"created_message": "Ausgabe erfolgreich erstellt",
|
||||
"updated_message": "Ausgabe erfolgreich aktualisiert",
|
||||
"deleted_message": "Ausgabe erfolgreich gelöscht | Ausgaben erfolgreich gelöscht",
|
||||
"categories": {
|
||||
"categories_list": "Liste der Kategorien",
|
||||
"title": "Titel",
|
||||
@ -523,7 +534,7 @@
|
||||
"new_user": "Neuer Benutzer",
|
||||
"edit_user": "Benutzer bearbeiten",
|
||||
"no_users": "Noch keine Benutzer!",
|
||||
"list_of_users": "Dieser Abschnitt enthält die Liste der Benutzer.",
|
||||
"list_of_users": "Dieser Bereich zeigt alle Benutzer.",
|
||||
"email": "E-Mail",
|
||||
"phone": "Telefon",
|
||||
"password": "Passwort",
|
||||
@ -575,17 +586,17 @@
|
||||
"status": "Status"
|
||||
},
|
||||
"estimates": {
|
||||
"estimate": "Kostenvoranschlag",
|
||||
"estimate_date": "Datum Kostenvoranschlag",
|
||||
"estimate": "Angebot",
|
||||
"estimate_date": "Angebotsdatum",
|
||||
"due_date": "Fälligkeit",
|
||||
"estimate_number": "Kostenvoranschlag-Nr.",
|
||||
"estimate_number": "Angebotsnummer",
|
||||
"ref_number": "Ref-Nummer",
|
||||
"amount": "Summe",
|
||||
"contact_name": "Ansprechpartner",
|
||||
"status": "Status"
|
||||
},
|
||||
"expenses": {
|
||||
"expenses": "Aufwendungen",
|
||||
"expenses": "Ausgaben",
|
||||
"category": "Kategorie",
|
||||
"date": "Datum",
|
||||
"amount": "Summe",
|
||||
@ -598,7 +609,7 @@
|
||||
"menu_title": {
|
||||
"account_settings": "Konto-Einstellungen",
|
||||
"company_information": "Informationen zum Unternehmen",
|
||||
"customization": "Anpassung",
|
||||
"customization": "Personalisierung",
|
||||
"preferences": "Einstellungen",
|
||||
"notifications": "Benachrichtigungen",
|
||||
"tax_types": "Steuersätze",
|
||||
@ -608,7 +619,7 @@
|
||||
"file_disk": "Dateispeicher",
|
||||
"custom_fields": "Benutzerdefinierte Felder",
|
||||
"payment_modes": "Zahlungsarten",
|
||||
"notes": "Hinweise"
|
||||
"notes": "Notizen"
|
||||
},
|
||||
"title": "Einstellungen",
|
||||
"setting": "Einstellung | Einstellungen",
|
||||
@ -662,7 +673,7 @@
|
||||
"company_info": "Firmeninfo",
|
||||
"company_name": "Name des Unternehmens",
|
||||
"company_logo": "Firmenlogo",
|
||||
"section_description": "Informationen zu Ihrem Unternehmen, die auf Rechnungen, Kostenvoranschlägen und anderen von Crater erstellten Dokumenten angezeigt werden.",
|
||||
"section_description": "Informationen zu Ihrem Unternehmen, die auf Rechnungen, Angeboten und anderen von Crater erstellten Dokumenten angezeigt werden.",
|
||||
"phone": "Telefon",
|
||||
"country": "Land",
|
||||
"state": "Bundesland",
|
||||
@ -678,7 +689,7 @@
|
||||
"add_custom_field": "Benutzerdefiniertes Feld hinzufügen",
|
||||
"edit_custom_field": "Benutzerdefiniertes Feld bearbeiten",
|
||||
"field_name": "Feldname",
|
||||
"label": "Etikette",
|
||||
"label": "Bezeichnung",
|
||||
"type": "Art",
|
||||
"name": "Name",
|
||||
"required": "Erforderlich",
|
||||
@ -692,7 +703,7 @@
|
||||
"suffix": "Vorzeichen",
|
||||
"yes": "Ja",
|
||||
"no": "Nein",
|
||||
"order": "Auftrag",
|
||||
"order": "Reihenfolge",
|
||||
"custom_field_confirm_delete": "Sie können dieses benutzerdefinierte Feld nicht wiederherstellen",
|
||||
"already_in_use": "Benutzerdefiniertes Feld wird bereits verwendet",
|
||||
"deleted_message": "Benutzerdefiniertes Feld erfolgreich gelöscht",
|
||||
@ -709,7 +720,7 @@
|
||||
"added_message": "Benutzerdefiniertes Feld erfolgreich hinzugefügt"
|
||||
},
|
||||
"customization": {
|
||||
"customization": "Anpassung",
|
||||
"customization": "Personalisierung",
|
||||
"save": "Speichern",
|
||||
"addresses": {
|
||||
"title": "Adressen",
|
||||
@ -729,8 +740,8 @@
|
||||
"state": "Bundesland",
|
||||
"city": "Stadt",
|
||||
"company_name": "Name des Unternehmens",
|
||||
"address_street_1": "Strasse",
|
||||
"address_street_2": "Zusatz Strasse",
|
||||
"address_street_1": "Straße und Hausnummer",
|
||||
"address_street_2": "Adresszusatz",
|
||||
"phone": "Telefon",
|
||||
"zip_code": "PLZ",
|
||||
"address_setting_updated": "Adresse-Einstellung erfolgreich aktualisiert"
|
||||
@ -738,12 +749,15 @@
|
||||
"updated_message": "Unternehmensinformationen wurden erfolgreich aktualisiert",
|
||||
"invoices": {
|
||||
"title": "Rechnungen",
|
||||
"notes": "Hinweise",
|
||||
"notes": "Notizen",
|
||||
"invoice_prefix": "Rechnung Präfix",
|
||||
"invoice_number_length": "Rechnungsnummerlänge",
|
||||
"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.",
|
||||
"invoice_email_attachment": "Send invoices as attachments",
|
||||
"invoice_email_attachment_setting_description": "Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_invoice_prefix": "Rechnungspräfix eingeben",
|
||||
"terms_and_conditions": "Allgemeine Geschäftsbedingungen",
|
||||
"company_address_format": "Firmenadressformat",
|
||||
@ -752,26 +766,32 @@
|
||||
"invoice_setting_updated": "Rechnungseinstellung erfolgreich aktualisiert"
|
||||
},
|
||||
"estimates": {
|
||||
"title": "Kostenvoranschläge",
|
||||
"estimate_prefix": "Kostenvoranschlag Präfix",
|
||||
"title": "Angebote",
|
||||
"estimate_prefix": "Angebotspräfix",
|
||||
"estimate_number_length": "Angebotsnummerlänge",
|
||||
"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",
|
||||
"estimate_settings": "Einstellungen Angebot",
|
||||
"autogenerate_estimate_number": "Angebotsnummer automatisch generieren",
|
||||
"estimate_setting_description": "Deaktivieren Sie diese Option, wenn Sie nicht jedes Mal, wenn Sie ein neues Angebot erstellen, automatisch eine Angebotsnummer generieren möchten.",
|
||||
"estimate_email_attachment": "Send estimates as attachments",
|
||||
"estimate_email_attachment_setting_description": "Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_estimate_prefix": "Geben Sie das Angebotspräfix ein",
|
||||
"estimate_setting_updated": "Angebotseinstellungen erfolgreich aktualisiert",
|
||||
"company_address_format": "Firmenadresse Format",
|
||||
"billing_address_format": "Rechnungsadressen Format",
|
||||
"shipping_address_format": "Versandadressen Format"
|
||||
},
|
||||
"payments": {
|
||||
"title": "Zahlungen",
|
||||
"description": "Modes of transaction for payments",
|
||||
"description": "Transaktionsmodi für Zahlungen",
|
||||
"payment_prefix": "Zahlung Präfix",
|
||||
"payment_number_length": "Zahlungsnummerlänge",
|
||||
"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.",
|
||||
"payment_email_attachment": "Send payments as attachments",
|
||||
"payment_email_attachment_setting_description": "Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_payment_prefix": "Zahlungspräfix eingeben",
|
||||
"payment_setting_updated": "Zahlungseinstellung erfolgreich aktualisiert",
|
||||
"payment_modes": "Zahlungsarten",
|
||||
@ -799,8 +819,8 @@
|
||||
"deleted_message": "Artikeleinheit erfolgreich gelöscht"
|
||||
},
|
||||
"notes": {
|
||||
"title": "Hinweise",
|
||||
"description": "Sparen Sie Zeit, indem Sie Notizen erstellen und diese auf Ihren Rechnungen, Kostenvoranschlägen und Zahlungen wiederverwenden.",
|
||||
"title": "Notizen",
|
||||
"description": "Sparen Sie Zeit, indem Sie Notizen erstellen und diese auf Ihren Rechnungen, Angeboten und Zahlungen wiederverwenden.",
|
||||
"notes": "Hinweise",
|
||||
"type": "Art",
|
||||
"add_note": "Notiz hinzufügen",
|
||||
@ -837,8 +857,8 @@
|
||||
"description": "Welche E-Mail-Benachrichtigungen möchten Sie erhalten wenn sich etwas ändert?",
|
||||
"invoice_viewed": "Rechnung angezeigt",
|
||||
"invoice_viewed_desc": "Wenn Ihr Kunde die gesendete Rechnung anzeigt bekommt.",
|
||||
"estimate_viewed": "Kostenvoranschlag angesehen",
|
||||
"estimate_viewed_desc": "Wenn Ihr Kunde den gesendeten Kostenvoranschlag anzeigt bekommt.",
|
||||
"estimate_viewed": "Angebot angesehen",
|
||||
"estimate_viewed_desc": "Wenn Ihr Kunde das gesendete Angebot anzeigt bekommt.",
|
||||
"save": "Speichern",
|
||||
"email_save_message": "Email erfolgreich gespeichert",
|
||||
"please_enter_email": "Bitte E-Mail eingeben"
|
||||
@ -863,7 +883,7 @@
|
||||
"already_in_use": "Steuersatz wird bereits verwendet"
|
||||
},
|
||||
"expense_category": {
|
||||
"title": "Kategorien Kosten",
|
||||
"title": "Ausgabenkategorien",
|
||||
"action": "Aktion",
|
||||
"description": "Für das Hinzufügen von Ausgabeneinträgen sind Kategorien erforderlich. Sie können diese Kategorien nach Ihren Wünschen hinzufügen oder entfernen.",
|
||||
"add_new_category": "Neue Kategorie hinzufügen",
|
||||
@ -911,6 +931,7 @@
|
||||
"download_zip_file": "Laden Sie die ZIP-Datei herunter",
|
||||
"unzipping_package": "Paket entpacken",
|
||||
"copying_files": "Dateien kopieren",
|
||||
"deleting_files": "Deleting Unused files",
|
||||
"running_migrations": "Ausführen von Migrationen",
|
||||
"finishing_update": "Update beenden",
|
||||
"update_failed": "Update fehlgeschlagen",
|
||||
@ -918,7 +939,7 @@
|
||||
},
|
||||
"backup": {
|
||||
"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",
|
||||
"description": "Die Sicherung ist eine ZIP-Datei, die alle Dateien der ausgewählten Pfade und eine Kopie der Datenbank enthält",
|
||||
"new_backup": "Neues Backup",
|
||||
"create_backup": "Datensicherung erstellen",
|
||||
"select_backup_type": "Wählen Sie den Sicherungs-Typ",
|
||||
@ -950,44 +971,45 @@
|
||||
"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",
|
||||
"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",
|
||||
"local_driver": "Lokaler Treiber",
|
||||
"local_root": "lokaler Pfad",
|
||||
"public_driver": "Öffentlicher Treiber",
|
||||
"public_root": "Öffentlicher Pfad",
|
||||
"public_url": "Öffentliche URL",
|
||||
"public_visibility": "Öffentliche Sichtbarkeit",
|
||||
"media_driver": "Medientreiber",
|
||||
"media_root": "Medienpfad",
|
||||
"aws_driver": "AWS-Treiber",
|
||||
"aws_key": "AWS-Schlüssel",
|
||||
"aws_secret": "AWS-Geheimnis",
|
||||
"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",
|
||||
"aws_root": "AWS-Pfad",
|
||||
"do_spaces_type": "Do Spaces-Typ",
|
||||
"do_spaces_key": "Do Spaces-Schlüssel",
|
||||
"do_spaces_secret": "Do Spaces-Geheimnis",
|
||||
"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_type": "Dropbox Typ",
|
||||
"dropbox_token": "Dropbox Token",
|
||||
"dropbox_key": "Dropbox Key",
|
||||
"dropbox_key": "Dropbox Schlüssel",
|
||||
"dropbox_secret": "Dropbox Secret",
|
||||
"dropbox_app": "Dropbox App",
|
||||
"dropbox_root": "Dropbox Root",
|
||||
"default_driver": "Standard-Treiber",
|
||||
"is_default": "Standard",
|
||||
"set_default_disk": "Als Standard festlegen",
|
||||
"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": "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.",
|
||||
"disk_setting_description": " Aktivieren Sie dies, um eine Kopie von jeder Rechnung, jedem Angebot & jeder Zahlung 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",
|
||||
"disk_settings": "Speichermedienkonfiguration",
|
||||
"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",
|
||||
"edit_file_disk": "Speicherort editieren",
|
||||
"success_create": "Speicher erfolgreich hinzugefügt",
|
||||
"success_update": "Speicher erfolgreich bearbeitet",
|
||||
"error": "Hinzufügen des Speichers gescheitert",
|
||||
@ -1037,10 +1059,10 @@
|
||||
"port": "Datenbank Port",
|
||||
"password": "Datenbank Passwort",
|
||||
"app_url": "App-URL",
|
||||
"app_domain": "App Domain",
|
||||
"app_domain": "Domain der App",
|
||||
"username": "Datenbank Benutzername",
|
||||
"db_name": "Datenbank Name",
|
||||
"db_path": "Database Path",
|
||||
"db_path": "Datenbankpfad",
|
||||
"desc": "Erstellen Sie eine Datenbank auf Ihrem Server und legen Sie die Anmeldeinformationen mithilfe des folgenden Formulars fest."
|
||||
},
|
||||
"permissions": {
|
||||
@ -1129,11 +1151,12 @@
|
||||
"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": "Da ist etwas schief gelaufen"
|
||||
"something_went_wrong": "Da ist etwas schief gelaufen",
|
||||
"number_length_minvalue": "Nummernlänge sollte größer als 0 sein"
|
||||
},
|
||||
"pdf_estimate_label": "Kostenvoranschlag",
|
||||
"pdf_estimate_number": "Kostenvoran. Nummer",
|
||||
"pdf_estimate_date": "Datum Kostenvoranschlag",
|
||||
"pdf_estimate_label": "Angebot",
|
||||
"pdf_estimate_number": "Angebotsnummer",
|
||||
"pdf_estimate_date": "Angebotsdatum",
|
||||
"pdf_estimate_expire_date": "Ablaufdatum",
|
||||
"pdf_invoice_label": "Rechnung",
|
||||
"pdf_invoice_number": "Rechnungsnummer",
|
||||
@ -1147,14 +1170,18 @@
|
||||
"pdf_amount_label": "Summe",
|
||||
"pdf_subtotal": "Zwischensumme",
|
||||
"pdf_total": "Gesamt",
|
||||
"pdf_payment_label": "Zahlung",
|
||||
"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_payment_amount_received_label": "Betrag erhalten",
|
||||
"pdf_expense_report_label": "Ausgaben Bericht",
|
||||
"pdf_total_expenses_label": "Gesamtausgaben",
|
||||
"pdf_profit_loss_label": "Gewinn & Verlust Bericht",
|
||||
"pdf_sales_customers_label": "Kundenverkaufs Bericht",
|
||||
"pdf_sales_items_label": "Artikelverkaufs Bericht",
|
||||
"pdf_tax_summery_label": "Steuer Bericht",
|
||||
"pdf_income_label": "Einkommen",
|
||||
"pdf_net_profit_label": "Nettogewinn",
|
||||
"pdf_customer_sales_report": "Umsatzbericht: Nach Kunde",
|
||||
@ -1163,8 +1190,8 @@
|
||||
"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 an,",
|
||||
"pdf_expenses_label": "Ausgaben",
|
||||
"pdf_bill_to": "Rechnungsempfänger:",
|
||||
"pdf_ship_to": "Versand an:",
|
||||
"pdf_received_from": "Erhalten von:"
|
||||
}
|
||||
|
||||
@ -178,6 +178,8 @@
|
||||
"copy_billing_address": "Copy from Billing",
|
||||
"no_customers": "No customers yet!",
|
||||
"no_customers_found": "No customers found!",
|
||||
"no_contact": "No contact",
|
||||
"no_contact_name": "No contact name",
|
||||
"list_of_customers": "This section will contain the list of customers.",
|
||||
"primary_display_name": "Primary Display Name",
|
||||
"select_currency": "Select currency",
|
||||
@ -201,6 +203,7 @@
|
||||
"added_on": "Added On",
|
||||
"price": "Price",
|
||||
"date_of_creation": "Date Of Creation",
|
||||
"not_selected": "No item selected",
|
||||
"action": "Action",
|
||||
"add_item": "Add Item",
|
||||
"save_item": "Save Item",
|
||||
@ -271,6 +274,7 @@
|
||||
"required": "Field is required"
|
||||
},
|
||||
"accepted": "Accepted",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Sent",
|
||||
"draft": "Draft",
|
||||
"declined": "Declined",
|
||||
@ -317,6 +321,9 @@
|
||||
"all": "All",
|
||||
"paid": "Paid",
|
||||
"unpaid": "Unpaid",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "CUSTOMER",
|
||||
"paid_status": "PAID STATUS",
|
||||
"ref_no": "REF NO.",
|
||||
@ -435,6 +442,8 @@
|
||||
"update_payment": "Update Payment",
|
||||
"payment": "Payment | Payments",
|
||||
"no_payments": "No payments yet!",
|
||||
"not_selected": "Not selected",
|
||||
"no_invoice": "No invoice",
|
||||
"no_matching_payments": "There are no matching payments!",
|
||||
"list_of_payments": "This section will contain the list of payments.",
|
||||
"select_payment_mode": "Select payment mode",
|
||||
@ -464,6 +473,7 @@
|
||||
"receipt": "Receipt",
|
||||
"amount": "Amount",
|
||||
"action": "Action",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Note",
|
||||
"category_id": "Category Id",
|
||||
"date": "Date",
|
||||
@ -741,10 +751,13 @@
|
||||
"title": "Invoices",
|
||||
"notes": "Notes",
|
||||
"invoice_prefix": "Invoice Prefix",
|
||||
"invoice_number_length": "Invoice number length",
|
||||
"default_invoice_email_body": "Default Invoice Email Body",
|
||||
"invoice_settings": "Invoice Settings",
|
||||
"autogenerate_invoice_number": "Auto-generate Invoice Number",
|
||||
"invoice_setting_description": "Disable this, If you don't wish to auto-generate invoice numbers each time you create a new invoice.",
|
||||
"invoice_email_attachment": "Send invoices as attachments",
|
||||
"invoice_email_attachment_setting_description": "Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_invoice_prefix": "Enter invoice prefix",
|
||||
"terms_and_conditions": "Terms and Conditions",
|
||||
"company_address_format": "Company Address Format",
|
||||
@ -755,10 +768,13 @@
|
||||
"estimates": {
|
||||
"title": "Estimates",
|
||||
"estimate_prefix": "Estimate Prefix",
|
||||
"estimate_number_length": "Estimate number length",
|
||||
"default_estimate_email_body": "Default Estimate Email Body",
|
||||
"estimate_settings": "Estimate Settings",
|
||||
"autogenerate_estimate_number": "Auto-generate Estimate Number",
|
||||
"estimate_setting_description": "Disable this, If you don't wish to auto-generate estimate numbers each time you create a new estimate.",
|
||||
"estimate_email_attachment": "Send estimates as attachments",
|
||||
"estimate_email_attachment_setting_description": "Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_estimate_prefix": "Enter estmiate prefix",
|
||||
"estimate_setting_updated": "Estimate Setting updated successfully",
|
||||
"company_address_format": "Company Address Format",
|
||||
@ -769,10 +785,13 @@
|
||||
"title": "Payments",
|
||||
"description": "Modes of transaction for payments",
|
||||
"payment_prefix": "Payment Prefix",
|
||||
"payment_number_length": "Payment number lenght",
|
||||
"default_payment_email_body": "Default Payment Email Body",
|
||||
"payment_settings": "Payment Settings",
|
||||
"autogenerate_payment_number": "Auto-generate Payment Number",
|
||||
"payment_setting_description": "Disable this, If you don't wish to auto-generate payment numbers each time you create a new payment.",
|
||||
"payment_email_attachment": "Send payments as attachments",
|
||||
"payment_email_attachment_setting_description": "Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_payment_prefix": "Enter Payment Prefix",
|
||||
"payment_setting_updated": "Payment Setting updated successfully",
|
||||
"payment_modes": "Payment Modes",
|
||||
@ -1132,7 +1151,8 @@
|
||||
"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.",
|
||||
"something_went_wrong": "something went wrong"
|
||||
"something_went_wrong": "something went wrong",
|
||||
"number_length_minvalue": "Number lenght should be greater than 0"
|
||||
},
|
||||
"pdf_estimate_label": "Estimate",
|
||||
"pdf_estimate_number": "Estimate Number",
|
||||
@ -1150,6 +1170,7 @@
|
||||
"pdf_amount_label": "Amount",
|
||||
"pdf_subtotal": "Subtotal",
|
||||
"pdf_total": "Total",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "PAYMENT RECEIPT",
|
||||
"pdf_payment_date": "Payment Date",
|
||||
"pdf_payment_number": "Payment Number",
|
||||
@ -1158,6 +1179,9 @@
|
||||
"pdf_expense_report_label": "EXPENSES REPORT",
|
||||
"pdf_total_expenses_label": "TOTAL EXPENSE",
|
||||
"pdf_profit_loss_label": "PROFIT & LOSS REPORT",
|
||||
"pdf_sales_customers_label": "Sales Customer Report",
|
||||
"pdf_sales_items_label": "Sales Item Report",
|
||||
"pdf_tax_summery_label": "Tax Summary Report",
|
||||
"pdf_income_label": "INCOME",
|
||||
"pdf_net_profit_label": "NET PROFIT",
|
||||
"pdf_customer_sales_report": "Sales Report: By Customer",
|
||||
|
||||
@ -5,23 +5,23 @@
|
||||
"items": "Artículos",
|
||||
"invoices": "Facturas",
|
||||
"expenses": "Gastos",
|
||||
"estimates": "Presupuestos",
|
||||
"estimates": "Presupuesto",
|
||||
"payments": "Pagos",
|
||||
"reports": "Informes",
|
||||
"settings": "Configuraciones",
|
||||
"logout": "Cerrar sesión",
|
||||
"users": "Users"
|
||||
"users": "Usuarios"
|
||||
},
|
||||
"general": {
|
||||
"add_company": "Add Company",
|
||||
"add_company": "Añadir empresa",
|
||||
"view_pdf": "Ver PDF",
|
||||
"copy_pdf_url": "Copy PDF Url",
|
||||
"copy_pdf_url": "Copiar dirección URL del archivo PDF",
|
||||
"download_pdf": "Descargar PDF",
|
||||
"save": "Guardar",
|
||||
"create": "Create",
|
||||
"create": "Crear",
|
||||
"cancel": "Cancelar",
|
||||
"update": "Actualizar",
|
||||
"deselect": "Deselect",
|
||||
"deselect": "Deseleccionar",
|
||||
"download": "Descargar",
|
||||
"from_date": "Desde la fecha",
|
||||
"to_date": "Hasta la fecha",
|
||||
@ -30,10 +30,10 @@
|
||||
"sort_by": "Ordenar por",
|
||||
"ascending": "Ascendente",
|
||||
"descending": "Descendente",
|
||||
"subject": "Sujeta",
|
||||
"subject": "Asunto",
|
||||
"body": "Cuerpo",
|
||||
"message": "Mensaje",
|
||||
"send": "Send",
|
||||
"send": "Enviar",
|
||||
"go_back": "Volver",
|
||||
"back_to_login": "¿Volver al inicio de sesión?",
|
||||
"home": "Inicio",
|
||||
@ -84,9 +84,10 @@
|
||||
"street_2": "Calle 2",
|
||||
"action_failed": "Accion Fallida",
|
||||
"retry": "Procesar de nuevo",
|
||||
"choose_note": "Choose Note",
|
||||
"no_note_found": "No Note Found",
|
||||
"insert_note": "Insert Note"
|
||||
"choose_note": "Elegir nota",
|
||||
"no_note_found": "No se encontró ninguna nota",
|
||||
"insert_note": "Insertar una nota",
|
||||
"copied_pdf_url_clipboard": "Copied PDF url to clipboard!"
|
||||
},
|
||||
"dashboard": {
|
||||
"select_year": "Seleccionar año",
|
||||
@ -133,28 +134,28 @@
|
||||
"compound_tax": "Impuesto compuesto"
|
||||
},
|
||||
"global_search": {
|
||||
"search": "Search...",
|
||||
"search": "Buscar...",
|
||||
"customers": "Clientes",
|
||||
"users": "Users",
|
||||
"no_results_found": "No Results Found"
|
||||
"users": "Usuarios",
|
||||
"no_results_found": "No se encontraron resultados"
|
||||
},
|
||||
"customers": {
|
||||
"title": "Clientes",
|
||||
"add_customer": "Agregar cliente",
|
||||
"contacts_list": "Lista de clientes",
|
||||
"name": "Nombre",
|
||||
"mail": "Mail | Mails",
|
||||
"statement": "Statement",
|
||||
"mail": "Correo | Correos",
|
||||
"statement": "Declaración",
|
||||
"display_name": "Nombre para mostrar",
|
||||
"primary_contact_name": "Nombre de contacto primario",
|
||||
"contact_name": "Nombre de contacto",
|
||||
"amount_due": "Cantidad Debida",
|
||||
"email": "Email",
|
||||
"email": "Correo electrónico",
|
||||
"address": "Dirección",
|
||||
"phone": "Teléfono",
|
||||
"website": "Sitio web",
|
||||
"overview": "Overview",
|
||||
"enable_portal": "Enable Portal",
|
||||
"overview": "Descripción general",
|
||||
"enable_portal": "Habilitar Portal",
|
||||
"country": "País",
|
||||
"state": "Estado",
|
||||
"city": "Ciudad",
|
||||
@ -177,6 +178,8 @@
|
||||
"copy_billing_address": "Copia de facturación",
|
||||
"no_customers": "¡Aún no hay clientes!",
|
||||
"no_customers_found": "¡No se encontraron clientes!",
|
||||
"no_contact": "No contact",
|
||||
"no_contact_name": "No contact name",
|
||||
"list_of_customers": "Esta sección contendrá la lista de clientes.",
|
||||
"primary_display_name": "Nombre de visualización principal",
|
||||
"select_currency": "Seleccione el tipo de moneda",
|
||||
@ -200,6 +203,7 @@
|
||||
"added_on": "Añadido",
|
||||
"price": "Precio",
|
||||
"date_of_creation": "Fecha de creación",
|
||||
"not_selected": "No item selected",
|
||||
"action": "Acción",
|
||||
"add_item": "Añadir artículo",
|
||||
"save_item": "Guardar artículo",
|
||||
@ -253,7 +257,7 @@
|
||||
"convert_to_invoice": "Convertir a factura",
|
||||
"mark_as_sent": "Marcar como enviado",
|
||||
"send_estimate": "Enviar presupuesto",
|
||||
"resend_estimate": "Resend Estimate",
|
||||
"resend_estimate": "Reenviar estimado",
|
||||
"record_payment": "Registro de pago",
|
||||
"add_estimate": "Agregar presupuesto",
|
||||
"save_estimate": "Guardar presupuesto",
|
||||
@ -270,6 +274,7 @@
|
||||
"required": "Se requiere campo"
|
||||
},
|
||||
"accepted": "Aceptado",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Enviado",
|
||||
"draft": "Borrador",
|
||||
"declined": "Rechazado",
|
||||
@ -316,6 +321,9 @@
|
||||
"all": "Todas",
|
||||
"paid": "Pagada",
|
||||
"unpaid": "No pagado",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "CLIENTE",
|
||||
"paid_status": "ESTADO PAGADO",
|
||||
"ref_no": "NÚMERO DE REFERENCIA.",
|
||||
@ -339,7 +347,7 @@
|
||||
"notes": "Notas",
|
||||
"view": "Ver",
|
||||
"send_invoice": "Enviar la factura",
|
||||
"resend_invoice": "Resend Invoice",
|
||||
"resend_invoice": "Reenviar factura",
|
||||
"invoice_template": "Plantilla de factura",
|
||||
"template": "Modelo",
|
||||
"mark_as_sent": "Marcar como enviada",
|
||||
@ -434,12 +442,14 @@
|
||||
"update_payment": "Actualizar pago",
|
||||
"payment": "Pago | Pagos",
|
||||
"no_payments": "¡Aún no hay pagos!",
|
||||
"not_selected": "Not selected",
|
||||
"no_invoice": "No invoice",
|
||||
"no_matching_payments": "¡No hay pagos equivalentes!",
|
||||
"list_of_payments": "Esta sección contendrá la lista de pagos.",
|
||||
"select_payment_mode": "Seleccionar modo de pago",
|
||||
"confirm_mark_as_sent": "Este presupuesto se marcará como enviado",
|
||||
"confirm_send_payment": "This payment will be sent via email to the customer",
|
||||
"send_payment_successfully": "Payment sent successfully",
|
||||
"confirm_send_payment": "Este pago se enviará por correo electrónico al cliente",
|
||||
"send_payment_successfully": "Pago enviado correctamente",
|
||||
"user_email_does_not_exist": "El email del usuario no existe",
|
||||
"something_went_wrong": "Algo fue mal",
|
||||
"confirm_delete": "No podrá recuperar este pago | No podrá recuperar estos pagos",
|
||||
@ -463,6 +473,7 @@
|
||||
"receipt": "Recibo",
|
||||
"amount": "Cantidad",
|
||||
"action": "Acción",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Nota",
|
||||
"category_id": "Categoria ID",
|
||||
"date": "Fecha de gastos",
|
||||
@ -494,7 +505,7 @@
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
"email": "Email",
|
||||
"email": "Correo electrónico",
|
||||
"password": "Contraseña",
|
||||
"forgot_password": "¿Olvidaste tu contraseña?",
|
||||
"or_signIn_with": "o Inicia sesión con",
|
||||
@ -505,33 +516,33 @@
|
||||
"enter_email": "Escriba el correo electrónico",
|
||||
"enter_password": "Escriba la contraseña",
|
||||
"retype_password": "Reescriba la contraseña",
|
||||
"login_placeholder": "mail@example.com"
|
||||
"login_placeholder": "correo@ejemplo.com"
|
||||
},
|
||||
"users": {
|
||||
"title": "Users",
|
||||
"users_list": "Users List",
|
||||
"title": "Usuarios",
|
||||
"users_list": "Lista de usuarios",
|
||||
"name": "Nombre",
|
||||
"description": "Descripción",
|
||||
"added_on": "Añadido",
|
||||
"date_of_creation": "Fecha de creación",
|
||||
"action": "Acción",
|
||||
"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.",
|
||||
"email": "Email",
|
||||
"add_user": "Agregar usuario",
|
||||
"save_user": "Guardar usuario",
|
||||
"update_user": "Actualizar usuario",
|
||||
"user": "Usuario | Usuarios",
|
||||
"add_new_user": "Agregar Nuevo Usuario",
|
||||
"new_user": "Nuevo usuario",
|
||||
"edit_user": "Editar usuario",
|
||||
"no_users": "¡Aún no hay usuarios!",
|
||||
"list_of_users": "Esta sección contendrá la lista de usuarios.",
|
||||
"email": "Correo",
|
||||
"phone": "Teléfono",
|
||||
"password": "Contraseña",
|
||||
"user_attached_message": "No se puede eliminar un elemento que ya está en uso.",
|
||||
"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": "No podrá recuperar este Usuario | No podrá recuperar estos Usuarios",
|
||||
"created_message": "Usuario creado satisfactoriamente",
|
||||
"updated_message": "Usuario actualizado satisfactoriamente",
|
||||
"deleted_message": "Usuario eliminado exitosamente | Usuario eliminado correctamente"
|
||||
},
|
||||
"reports": {
|
||||
"title": "Informe",
|
||||
@ -604,10 +615,10 @@
|
||||
"tax_types": "Tipos de impuestos",
|
||||
"expense_category": "Categorías de gastos",
|
||||
"update_app": "Actualizar aplicación",
|
||||
"backup": "Backup",
|
||||
"file_disk": "File Disk",
|
||||
"backup": "Copias de seguridad",
|
||||
"file_disk": "Disco de archivo",
|
||||
"custom_fields": "Campos Personalizados",
|
||||
"payment_modes": "Payment Modes",
|
||||
"payment_modes": "Modos de pago",
|
||||
"notes": "Notas"
|
||||
},
|
||||
"title": "Configuraciones",
|
||||
@ -674,7 +685,7 @@
|
||||
},
|
||||
"custom_fields": {
|
||||
"title": "Campos Personalizados",
|
||||
"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": "Personalice sus facturas, estimaciones y recibos de pago en sus propios campos. Asegúrese de usar los siguientes campos añadidos en los formatos de dirección de la página de configuración de personalización.",
|
||||
"add_custom_field": "Agregar campo personalizado",
|
||||
"edit_custom_field": "Editar campo personalizado",
|
||||
"field_name": "Nombre del campo",
|
||||
@ -722,7 +733,7 @@
|
||||
"address": "Dirección",
|
||||
"display_name": "Nombre para mostrar",
|
||||
"primary_contact_name": "Nombre de contacto principal",
|
||||
"email": "Email",
|
||||
"email": "Correo electrónico",
|
||||
"website": "Sitio web",
|
||||
"name": "Nombre",
|
||||
"country": "País",
|
||||
@ -740,41 +751,50 @@
|
||||
"title": "Facturas",
|
||||
"notes": "Notas",
|
||||
"invoice_prefix": "Prefijo de las facturas",
|
||||
"default_invoice_email_body": "Default Invoice Email Body",
|
||||
"invoice_number_length": "Invoice number length",
|
||||
"default_invoice_email_body": "Cuerpo predeterminado del correo electrónico de la factura",
|
||||
"invoice_settings": "Ajustes de facturas",
|
||||
"autogenerate_invoice_number": "Autogenerar número de factura",
|
||||
"invoice_setting_description": "Desactive esto, si no desea generar automáticamente números de factura cada vez que cree una nueva factura.",
|
||||
"invoice_email_attachment": "Send invoices as attachments",
|
||||
"invoice_email_attachment_setting_description": "Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_invoice_prefix": "Introduzca el prefijo de factura",
|
||||
"terms_and_conditions": "Términos y Condiciones",
|
||||
"company_address_format": "Company Address Format",
|
||||
"shipping_address_format": "Shipping Address Format",
|
||||
"billing_address_format": "Billing Address Format",
|
||||
"company_address_format": "Formato de dirección de la empresa",
|
||||
"shipping_address_format": "Formato de la dirección de envío",
|
||||
"billing_address_format": "Formato de dirección de facturación",
|
||||
"invoice_setting_updated": "Configuración de factura actualizada correctamente"
|
||||
},
|
||||
"estimates": {
|
||||
"title": "Estimaciones",
|
||||
"estimate_prefix": "Prefijo de los presupuestos",
|
||||
"default_estimate_email_body": "Default Estimate Email Body",
|
||||
"estimate_number_length": "Estimate number length",
|
||||
"default_estimate_email_body": "Cuerpo predeterminado estimado del correo electrónico",
|
||||
"estimate_settings": "Ajustes de presupuestos",
|
||||
"autogenerate_estimate_number": "Autogenerar número de presupuesto",
|
||||
"estimate_setting_description": "Desactive esto, si no desea generar automáticamente números de presupuesto cada vez que cree un nuevo presupuesto.",
|
||||
"estimate_email_attachment": "Send estimates as attachments",
|
||||
"estimate_email_attachment_setting_description": "Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_estimate_prefix": "Introduzca el prefijo de presupuesto",
|
||||
"estimate_setting_updated": "Configuración de presupuestos actualizada correctamente",
|
||||
"company_address_format": "Company Address Format",
|
||||
"billing_address_format": "Billing Address Format",
|
||||
"shipping_address_format": "Shipping Address Format"
|
||||
"company_address_format": "Formato de dirección de la empresa",
|
||||
"billing_address_format": "Formato de la dirección de facturación",
|
||||
"shipping_address_format": "Formato de dirección de envío"
|
||||
},
|
||||
"payments": {
|
||||
"title": "Pagos",
|
||||
"description": "Modes of transaction for payments",
|
||||
"description": "Modos de transacción de pagos",
|
||||
"payment_prefix": "Prefijo de los pagos",
|
||||
"default_payment_email_body": "Default Payment Email Body",
|
||||
"payment_number_length": "Payment number lenght",
|
||||
"default_payment_email_body": "Cuerpo predeterminado del correo electrónico del pago",
|
||||
"payment_settings": "Ajustes de pagos",
|
||||
"autogenerate_payment_number": "Autogenerar número de pago",
|
||||
"payment_setting_description": "Desactive esto, si no desea generar automáticamente números de pago cada vez que cree un nuevo pago.",
|
||||
"payment_email_attachment": "Send payments as attachments",
|
||||
"payment_email_attachment_setting_description": "Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_payment_prefix": "Introduzca el prefijo de pago",
|
||||
"payment_setting_updated": "Configuración de pagos actualizada correctamente",
|
||||
"payment_modes": "Payment Modes",
|
||||
"payment_modes": "Modos de pago",
|
||||
"add_payment_mode": "Agregar modo de pago",
|
||||
"edit_payment_mode": "Editar modo de pago",
|
||||
"mode_name": "Nombre del modo",
|
||||
@ -783,8 +803,8 @@
|
||||
"payment_mode_confirm_delete": "No podrá recuperar este modo de pago",
|
||||
"already_in_use": "El modo de pago ya está en uso",
|
||||
"deleted_message": "Modo de pago eliminado correctamente",
|
||||
"company_address_format": "Company Address Format",
|
||||
"from_customer_address_format": "From Customer Address Format"
|
||||
"company_address_format": "Formato de dirección de la empresa",
|
||||
"from_customer_address_format": "Desde el formato de dirección del cliente"
|
||||
},
|
||||
"items": {
|
||||
"title": "Artículos",
|
||||
@ -800,24 +820,24 @@
|
||||
},
|
||||
"notes": {
|
||||
"title": "Notas",
|
||||
"description": "Save time by creating notes and reusing them on your invoices, estimates & payments.",
|
||||
"description": "Ahorre tiempo creando notas y reutilizándolas en sus facturas, cálculos y pagos.",
|
||||
"notes": "Notas",
|
||||
"type": "Tipo",
|
||||
"add_note": "Add Note",
|
||||
"add_new_note": "Add New Note",
|
||||
"add_note": "Agregar nota",
|
||||
"add_new_note": "Agregar nueva nota",
|
||||
"name": "Nombre",
|
||||
"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": "Editar nota",
|
||||
"note_added": "Nota agregada correctamente",
|
||||
"note_updated": "Nota actualizada correctamente",
|
||||
"note_confirm_delete": "No podrá recuperar esta nota",
|
||||
"already_in_use": "Nota ya está en uso",
|
||||
"deleted_message": "Nota eliminada correctamente"
|
||||
}
|
||||
},
|
||||
"account_settings": {
|
||||
"profile_picture": "Foto de perfil",
|
||||
"name": "Nombre",
|
||||
"email": "Email",
|
||||
"email": "Correo electrónico",
|
||||
"password": "Contraseña",
|
||||
"confirm_password": "Confirmar contraseña",
|
||||
"account_settings": "Configuraciones de la cuenta",
|
||||
@ -827,7 +847,7 @@
|
||||
},
|
||||
"user_profile": {
|
||||
"name": "Nombre",
|
||||
"email": "Email",
|
||||
"email": "Correo electrónico",
|
||||
"password": "Contraseña",
|
||||
"confirm_password": "Confirmar contraseña"
|
||||
},
|
||||
@ -879,7 +899,7 @@
|
||||
},
|
||||
"preferences": {
|
||||
"currency": "Moneda",
|
||||
"default_language": "Default Language",
|
||||
"default_language": "Idioma predeterminado",
|
||||
"time_zone": "Zona horaria",
|
||||
"fiscal_year": "Año financiero",
|
||||
"date_format": "Formato de fecha",
|
||||
@ -892,7 +912,7 @@
|
||||
"updated_message": "Preferencias actualizadas exitosamente",
|
||||
"select_language": "seleccione el idioma",
|
||||
"select_time_zone": "selecciona la zona horaria",
|
||||
"select_date_format": "Select Date Format",
|
||||
"select_date_format": "Seleccionar formato de fecha",
|
||||
"select_financial_year": "seleccione año financiero"
|
||||
},
|
||||
"update_app": {
|
||||
@ -901,7 +921,7 @@
|
||||
"check_update": "Buscar actualizaciones",
|
||||
"avail_update": "Nueva actualización disponible",
|
||||
"next_version": "Próxima versión",
|
||||
"requirements": "Requirements",
|
||||
"requirements": "Requisitos",
|
||||
"update": "Actualizar",
|
||||
"update_progress": "Actualización en progreso...",
|
||||
"progress_text": "Solo tomará unos minutos. No actualice la pantalla ni cierre la ventana antes de que finalice la actualización.",
|
||||
@ -911,97 +931,99 @@
|
||||
"download_zip_file": "Descargar archivo ZIP",
|
||||
"unzipping_package": "Descomprimir paquete",
|
||||
"copying_files": "Copiando documentos",
|
||||
"deleting_files": "Deleting Unused files",
|
||||
"running_migrations": "Ejecutar migraciones",
|
||||
"finishing_update": "Actualización final",
|
||||
"update_failed": "Actualización fallida",
|
||||
"update_failed_text": "¡Lo siento! Su actualización falló el: {step} paso"
|
||||
},
|
||||
"backup": {
|
||||
"title": "Backup | Backups",
|
||||
"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",
|
||||
"title": "Copia de seguridad | Copias de seguridad",
|
||||
"description": "La copia de seguridad es un archivo comprimido zip que contiene todos los archivos en los directorios que especifiques junto con tu base de datos",
|
||||
"new_backup": "Agregar nueva copia de seguridad",
|
||||
"create_backup": "Crear copia de seguridad",
|
||||
"select_backup_type": "Seleccione Tipo de Copia de Seguridad",
|
||||
"backup_confirm_delete": "No podrá recuperar esta copia de seguridad",
|
||||
"path": "ruta",
|
||||
"new_disk": "Nuevo Disco",
|
||||
"created_at": "creado el",
|
||||
"size": "tamaño",
|
||||
"dropbox": "dropbox",
|
||||
"local": "local",
|
||||
"healthy": "healthy",
|
||||
"amount_of_backups": "amount of backups",
|
||||
"newest_backups": "newest backups",
|
||||
"used_storage": "used storage",
|
||||
"select_disk": "Select Disk",
|
||||
"healthy": "saludable",
|
||||
"amount_of_backups": "cantidad de copias de seguridad",
|
||||
"newest_backups": "copias de seguridad más recientes",
|
||||
"used_storage": "almacenamiento utilizado",
|
||||
"select_disk": "Seleccionar Disco",
|
||||
"action": "Acción",
|
||||
"deleted_message": "Backup deleted successfully",
|
||||
"created_message": "Backup created successfully",
|
||||
"invalid_disk_credentials": "Invalid credential of selected disk"
|
||||
"deleted_message": "Copia de seguridad eliminada exitosamente",
|
||||
"created_message": "Copia de seguridad creada satisfactoriamente",
|
||||
"invalid_disk_credentials": "Credencial no válida del disco seleccionado"
|
||||
},
|
||||
"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",
|
||||
"title": "Disco de archivos | Discos de archivos",
|
||||
"description": "Por defecto, Crater utilizará su disco local para guardar copias de seguridad, avatar y otros archivos de imagen. Puede configurar varios controladores de disco como DigitalOcean, S3 y Dropbox según sus preferencias.",
|
||||
"created_at": "creado el",
|
||||
"dropbox": "dropbox",
|
||||
"name": "Nombre",
|
||||
"driver": "Driver",
|
||||
"driver": "Controlador",
|
||||
"disk_type": "Tipo",
|
||||
"disk_name": "Disk Name",
|
||||
"new_disk": "Add New Disk",
|
||||
"filesystem_driver": "Filesystem Driver",
|
||||
"local_driver": "local Driver",
|
||||
"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",
|
||||
"disk_name": "Nombre del disco",
|
||||
"new_disk": "Agregar nuevo disco",
|
||||
"filesystem_driver": "Controlador del sistema de archivos",
|
||||
"local_driver": "controlador local",
|
||||
"local_root": "raíz local",
|
||||
"public_driver": "Controlador público",
|
||||
"public_root": "Raíz pública",
|
||||
"public_url": "URL pública",
|
||||
"public_visibility": "Visibilidad pública",
|
||||
"media_driver": "Controlador multimedia",
|
||||
"media_root": "Raíz multimedia",
|
||||
"aws_driver": "Controlador AWS",
|
||||
"aws_key": "Clave AWS",
|
||||
"aws_secret": "Secreto AWS",
|
||||
"aws_region": "Región de AWS",
|
||||
"aws_bucket": "Cubo AWS",
|
||||
"aws_root": "Raíz AWS",
|
||||
"do_spaces_type": "Hacer Espacios tipo",
|
||||
"do_spaces_key": "Disponer espacios",
|
||||
"do_spaces_secret": "Disponer espacios secretos",
|
||||
"do_spaces_region": "Disponer región de espacios",
|
||||
"do_spaces_bucket": "Disponer espacios",
|
||||
"do_spaces_endpoint": "Disponer espacios extremos",
|
||||
"do_spaces_root": "Disponer espacios en la raíz",
|
||||
"dropbox_type": "Tipo de Dropbox",
|
||||
"dropbox_token": "Token de DropBox",
|
||||
"dropbox_key": "Clave Dropbox",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"dropbox_app": "Aplicación Dropbox",
|
||||
"dropbox_root": "Raíz Dropbox",
|
||||
"default_driver": "Controlador por defecto",
|
||||
"is_default": "ES PREDETERMINADO",
|
||||
"set_default_disk": "Establecer disco predeterminado",
|
||||
"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": "Disco establecido correctamente como predeterminado",
|
||||
"save_pdf_to_disk": "Guardar PDFs a disco",
|
||||
"disk_setting_description": " Habilite esto, si desea guardar automáticamente una copia en formato pdf de cada factura, cálculo y recibo de pago en su disco predeterminado. Al activar esta opción, se reducirá el tiempo de carga al visualizar los archivos PDFs.",
|
||||
"select_disk": "Seleccionar Disco",
|
||||
"disk_settings": "Configuración del disco",
|
||||
"confirm_delete": "Los archivos y carpetas existentes en el disco especificado no se verán afectados, pero su configuración de disco será eliminada de Crater",
|
||||
"action": "Acción",
|
||||
"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"
|
||||
"edit_file_disk": "Editar disco de ficheros",
|
||||
"success_create": "Disco añadido satisfactoriamente",
|
||||
"success_update": "Disco actualizado satisfactoriamente",
|
||||
"error": "Error al añadir disco",
|
||||
"deleted_message": "Disco de archivo borrado correctamente",
|
||||
"disk_variables_save_successfully": "Disco configurado correctamente",
|
||||
"disk_variables_save_error": "La configuración del disco ha fallado.",
|
||||
"invalid_disk_credentials": "Credencial no válida del disco seleccionado"
|
||||
}
|
||||
},
|
||||
"wizard": {
|
||||
"account_info": "Información de la cuenta",
|
||||
"account_info_desc": "Los detalles a continuación se utilizarán para crear la cuenta principal de administrador. También puede cambiar los detalles en cualquier momento después de iniciar sesión.",
|
||||
"name": "Nombre",
|
||||
"email": "Email",
|
||||
"email": "Correo",
|
||||
"password": "Contraseña",
|
||||
"confirm_password": "Confirmar contraseña",
|
||||
"save_cont": "Guardar y continuar",
|
||||
@ -1037,10 +1059,10 @@
|
||||
"port": "Puerto de la base de datos",
|
||||
"password": "Contraseña de la base de datos",
|
||||
"app_url": "URL de la aplicación",
|
||||
"app_domain": "App Domain",
|
||||
"app_domain": "Dominio",
|
||||
"username": "Nombre de usuario de la base de datos",
|
||||
"db_name": "Nombre de la base de datos",
|
||||
"db_path": "Database Path",
|
||||
"db_path": "Ruta de la base de datos",
|
||||
"desc": "Cree una base de datos en su servidor y establezca las credenciales utilizando el siguiente formulario."
|
||||
},
|
||||
"permissions": {
|
||||
@ -1101,7 +1123,7 @@
|
||||
"email_incorrect": "Email incorrecto.",
|
||||
"email_already_taken": "Este email ya está en uso",
|
||||
"email_does_not_exist": "El usuario con el correo electrónico dado no existe",
|
||||
"item_unit_already_taken": "This item unit name has already been taken",
|
||||
"item_unit_already_taken": "El nombre de la unidad ya está en uso",
|
||||
"payment_mode_already_taken": "El modo de pago ya ha sido tomado",
|
||||
"send_reset_link": "Enviar enlace de restablecimiento",
|
||||
"not_yet": "¿Aún no? Envíalo de nuevo",
|
||||
@ -1122,23 +1144,24 @@
|
||||
"amount_maxlength": "La cantidad no debe ser mayor de 20 dígitos.",
|
||||
"amount_minvalue": "La cantidad debe ser mayor que 0 dígitos",
|
||||
"description_maxlength": "La descripción no debe tener más de 255 caracteres.",
|
||||
"subject_maxlength": "Subject should not be greater than 100 characters.",
|
||||
"message_maxlength": "Message should not be greater than 255 characters.",
|
||||
"subject_maxlength": "El asunto no debe tener más de 100 caracteres.",
|
||||
"message_maxlength": "El mensaje no debe tener más de 255 caracteres.",
|
||||
"maximum_options_error": "Máximo de {max} opciones seleccionadas. Primero elimine una opción seleccionada para seleccionar otra.",
|
||||
"notes_maxlength": "Las notas no deben tener más de 255 caracteres.",
|
||||
"address_maxlength": "La dirección no debe tener más de 255 caracteres.",
|
||||
"ref_number_maxlength": "El número de referencia no debe tener más de 255 caracteres.",
|
||||
"prefix_maxlength": "El prefijo no debe tener más de 5 caracteres.",
|
||||
"something_went_wrong": "Algo fue mal"
|
||||
"something_went_wrong": "Algo fue mal",
|
||||
"number_length_minvalue": "Number lenght should be greater than 0"
|
||||
},
|
||||
"pdf_estimate_label": "Presupuestar",
|
||||
"pdf_estimate_number": "Número de Presupuesto",
|
||||
"pdf_estimate_date": "Fecha presupuesto",
|
||||
"pdf_estimate_expire_date": "Expiry date",
|
||||
"pdf_estimate_expire_date": "Fecha de caducidad",
|
||||
"pdf_invoice_label": "Factura",
|
||||
"pdf_invoice_number": "Numero de factura",
|
||||
"pdf_invoice_date": "Fecha de la factura",
|
||||
"pdf_invoice_due_date": "Due date",
|
||||
"pdf_invoice_due_date": "Fecha final",
|
||||
"pdf_notes": "Notas",
|
||||
"pdf_items_label": "Artículos",
|
||||
"pdf_quantity_label": "Cantidad",
|
||||
@ -1147,24 +1170,28 @@
|
||||
"pdf_amount_label": "Cantidad",
|
||||
"pdf_subtotal": "Subtotal",
|
||||
"pdf_total": "Total",
|
||||
"pdf_payment_receipt_label": "PAYMENT RECEIPT",
|
||||
"pdf_payment_date": "Payment Date",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "RECIBO DE PAGO",
|
||||
"pdf_payment_date": "Fecha de pago",
|
||||
"pdf_payment_number": "Numero de pago",
|
||||
"pdf_payment_mode": "Modo de pago",
|
||||
"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_payment_amount_received_label": "Monto Recibido",
|
||||
"pdf_expense_report_label": "INFORME DE GASTOS",
|
||||
"pdf_total_expenses_label": "GASTO TOTAL",
|
||||
"pdf_profit_loss_label": "INFORME PERDIDAS & GANANCIAS",
|
||||
"pdf_sales_customers_label": "Sales Customer Report",
|
||||
"pdf_sales_items_label": "Sales Item Report",
|
||||
"pdf_tax_summery_label": "Tax Summary Report",
|
||||
"pdf_income_label": "INGRESO",
|
||||
"pdf_net_profit_label": "GANANCIA NETA",
|
||||
"pdf_customer_sales_report": "Informe de ventas: Por cliente",
|
||||
"pdf_total_sales_label": "VENTAS TOTALES",
|
||||
"pdf_item_sales_label": "Informe de ventas: por artículo",
|
||||
"pdf_tax_report_label": "INFORME DE IMPUESTOS",
|
||||
"pdf_total_tax_label": "TOTAL IMPUESTOS",
|
||||
"pdf_tax_types_label": "Tipos de impuestos",
|
||||
"pdf_expenses_label": "Gastos",
|
||||
"pdf_bill_to": "Cobrar a,",
|
||||
"pdf_ship_to": "Enviar a,",
|
||||
"pdf_received_from": "Received from:"
|
||||
"pdf_received_from": "Recibido desde:"
|
||||
}
|
||||
|
||||
1197
resources/assets/js/plugins/fi.json
Normal file
1197
resources/assets/js/plugins/fi.json
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -86,7 +86,8 @@
|
||||
"retry": "Retry",
|
||||
"choose_note": "Choose Note",
|
||||
"no_note_found": "No Note Found",
|
||||
"insert_note": "Insert Note"
|
||||
"insert_note": "Insert Note",
|
||||
"copied_pdf_url_clipboard": "Copied PDF url to clipboard!"
|
||||
},
|
||||
"dashboard": {
|
||||
"select_year": "Select year",
|
||||
@ -177,6 +178,8 @@
|
||||
"copy_billing_address": "Copy from Billing",
|
||||
"no_customers": "No customers yet!",
|
||||
"no_customers_found": "No customers found!",
|
||||
"no_contact": "No contact",
|
||||
"no_contact_name": "No contact name",
|
||||
"list_of_customers": "This section will contain the list of customers.",
|
||||
"primary_display_name": "Primary Display Name",
|
||||
"select_currency": "Select currency",
|
||||
@ -200,6 +203,7 @@
|
||||
"added_on": "Added On",
|
||||
"price": "Price",
|
||||
"date_of_creation": "Date Of Creation",
|
||||
"not_selected": "No item selected",
|
||||
"action": "Action",
|
||||
"add_item": "Add Item",
|
||||
"save_item": "Save Item",
|
||||
@ -270,6 +274,7 @@
|
||||
"required": "Field is required"
|
||||
},
|
||||
"accepted": "Accepted",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Sent",
|
||||
"draft": "Draft",
|
||||
"declined": "Declined",
|
||||
@ -316,6 +321,9 @@
|
||||
"all": "All",
|
||||
"paid": "Paid",
|
||||
"unpaid": "Unpaid",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "CUSTOMER",
|
||||
"paid_status": "PAID STATUS",
|
||||
"ref_no": "REF NO.",
|
||||
@ -434,6 +442,8 @@
|
||||
"update_payment": "Update Payment",
|
||||
"payment": "Payment | Payments",
|
||||
"no_payments": "No payments yet!",
|
||||
"not_selected": "Not selected",
|
||||
"no_invoice": "No invoice",
|
||||
"no_matching_payments": "There are no matching payments!",
|
||||
"list_of_payments": "This section will contain the list of payments.",
|
||||
"select_payment_mode": "Select payment mode",
|
||||
@ -463,6 +473,7 @@
|
||||
"receipt": "Receipt",
|
||||
"amount": "Amount",
|
||||
"action": "Action",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Note",
|
||||
"category_id": "Category Id",
|
||||
"date": "Date",
|
||||
@ -740,10 +751,13 @@
|
||||
"title": "Invoices",
|
||||
"notes": "Notes",
|
||||
"invoice_prefix": "Invoice Prefix",
|
||||
"invoice_number_length": "Invoice number length",
|
||||
"default_invoice_email_body": "Default Invoice Email Body",
|
||||
"invoice_settings": "Invoice Settings",
|
||||
"autogenerate_invoice_number": "Auto-generate Invoice Number",
|
||||
"invoice_setting_description": "Disable this, If you don't wish to auto-generate invoice numbers each time you create a new invoice.",
|
||||
"invoice_email_attachment": "Send invoices as attachments",
|
||||
"invoice_email_attachment_setting_description": "Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_invoice_prefix": "Enter invoice prefix",
|
||||
"terms_and_conditions": "Terms and Conditions",
|
||||
"company_address_format": "Company Address Format",
|
||||
@ -754,10 +768,13 @@
|
||||
"estimates": {
|
||||
"title": "Estimates",
|
||||
"estimate_prefix": "Estimate Prefix",
|
||||
"estimate_number_length": "Estimate number length",
|
||||
"default_estimate_email_body": "Default Estimate Email Body",
|
||||
"estimate_settings": "Estimate Settings",
|
||||
"autogenerate_estimate_number": "Auto-generate Estimate Number",
|
||||
"estimate_setting_description": "Disable this, If you don't wish to auto-generate estimate numbers each time you create a new estimate.",
|
||||
"estimate_email_attachment": "Send estimates as attachments",
|
||||
"estimate_email_attachment_setting_description": "Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_estimate_prefix": "Enter estmiate prefix",
|
||||
"estimate_setting_updated": "Estimate Setting updated successfully",
|
||||
"company_address_format": "Company Address Format",
|
||||
@ -768,10 +785,13 @@
|
||||
"title": "Payments",
|
||||
"description": "Modes of transaction for payments",
|
||||
"payment_prefix": "Payment Prefix",
|
||||
"payment_number_length": "Payment number lenght",
|
||||
"default_payment_email_body": "Default Payment Email Body",
|
||||
"payment_settings": "Payment Settings",
|
||||
"autogenerate_payment_number": "Auto-generate Payment Number",
|
||||
"payment_setting_description": "Disable this, If you don't wish to auto-generate payment numbers each time you create a new payment.",
|
||||
"payment_email_attachment": "Send payments as attachments",
|
||||
"payment_email_attachment_setting_description": "Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_payment_prefix": "Enter Payment Prefix",
|
||||
"payment_setting_updated": "Payment Setting updated successfully",
|
||||
"payment_modes": "Payment Modes",
|
||||
@ -911,6 +931,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",
|
||||
@ -1130,7 +1151,8 @@
|
||||
"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.",
|
||||
"something_went_wrong": "something went wrong"
|
||||
"something_went_wrong": "something went wrong",
|
||||
"number_length_minvalue": "Number lenght should be greater than 0"
|
||||
},
|
||||
"pdf_estimate_label": "Estimate",
|
||||
"pdf_estimate_number": "Estimate Number",
|
||||
@ -1148,6 +1170,7 @@
|
||||
"pdf_amount_label": "Amount",
|
||||
"pdf_subtotal": "Subtotal",
|
||||
"pdf_total": "Total",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "PAYMENT RECEIPT",
|
||||
"pdf_payment_date": "Payment Date",
|
||||
"pdf_payment_number": "Payment Number",
|
||||
@ -1156,6 +1179,9 @@
|
||||
"pdf_expense_report_label": "EXPENSES REPORT",
|
||||
"pdf_total_expenses_label": "TOTAL EXPENSE",
|
||||
"pdf_profit_loss_label": "PROFIT & LOSS REPORT",
|
||||
"pdf_sales_customers_label": "Sales Customer Report",
|
||||
"pdf_sales_items_label": "Sales Item Report",
|
||||
"pdf_tax_summery_label": "Tax Summary Report",
|
||||
"pdf_income_label": "INCOME",
|
||||
"pdf_net_profit_label": "NET PROFIT",
|
||||
"pdf_customer_sales_report": "Sales Report: By Customer",
|
||||
|
||||
@ -5,29 +5,38 @@ import fr from './fr.json'
|
||||
import es from './es.json'
|
||||
import ar from './ar.json'
|
||||
import de from './de.json'
|
||||
import ja from './ja.json'
|
||||
import pt_BR from './pt-br.json'
|
||||
import it from './it.json'
|
||||
import sr from './sr.json'
|
||||
import nl from './nl.json'
|
||||
import ko from './ko.json'
|
||||
import lv from './lv.json'
|
||||
import sv from './sv.json'
|
||||
import sk from './sk.json'
|
||||
import vi from './vi.json'
|
||||
|
||||
Vue.use(VueI18n)
|
||||
|
||||
const i18n = new VueI18n({
|
||||
locale: 'en',
|
||||
fallbackLocale: 'en',
|
||||
messages: {
|
||||
en,
|
||||
fr,
|
||||
es,
|
||||
ar,
|
||||
de,
|
||||
ja,
|
||||
pt_BR,
|
||||
it,
|
||||
sr,
|
||||
nl,
|
||||
ko,
|
||||
lv,
|
||||
sv,
|
||||
sk,
|
||||
vi,
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
@ -1,28 +1,28 @@
|
||||
{
|
||||
"navigation": {
|
||||
"dashboard": "Dashboard",
|
||||
"dashboard": "Pannello di controllo",
|
||||
"customers": "Clienti",
|
||||
"items": "Commesse",
|
||||
"invoices": "Fatture",
|
||||
"expenses": "Spese",
|
||||
"estimates": "Preventivi",
|
||||
"payments": "Pagamenti",
|
||||
"reports": "Reports",
|
||||
"reports": "Rapporti",
|
||||
"settings": "Configurazione",
|
||||
"logout": "Logout",
|
||||
"users": "Users"
|
||||
"logout": "Disconnessione",
|
||||
"users": "Utenti"
|
||||
},
|
||||
"general": {
|
||||
"add_company": "Add Company",
|
||||
"add_company": "Aggiungi azienda",
|
||||
"view_pdf": "Vedi PDF",
|
||||
"copy_pdf_url": "Copy PDF Url",
|
||||
"copy_pdf_url": "Copia URL PDF",
|
||||
"download_pdf": "Scarica PDF",
|
||||
"save": "Salva",
|
||||
"create": "Create",
|
||||
"create": "Crea",
|
||||
"cancel": "Elimina",
|
||||
"update": "Aggiorna",
|
||||
"deselect": "Deseleziona",
|
||||
"download": "Download",
|
||||
"download": "Scarica",
|
||||
"from_date": "Dalla Data",
|
||||
"to_date": "Alla Data",
|
||||
"from": "Da",
|
||||
@ -33,7 +33,7 @@
|
||||
"subject": "Oggetto",
|
||||
"body": "Corpo",
|
||||
"message": "Messaggio",
|
||||
"send": "Send",
|
||||
"send": "Invia",
|
||||
"go_back": "Torna indietro",
|
||||
"back_to_login": "Torna al Login?",
|
||||
"home": "Home",
|
||||
@ -43,7 +43,7 @@
|
||||
"view": "Visualizza",
|
||||
"add_new_item": "Aggiungi nuova Commessa",
|
||||
"clear_all": "Pulisci tutto",
|
||||
"showing": "Showing",
|
||||
"showing": "Visualizzo",
|
||||
"of": "di",
|
||||
"actions": "Azioni",
|
||||
"subtotal": "SUBTOTALE",
|
||||
@ -66,11 +66,11 @@
|
||||
"powered_by": "Prodotto da",
|
||||
"bytefury": "Bytefury",
|
||||
"select_a_status": "Seleziona uno Stato",
|
||||
"select_a_tax": "Seleziona una Tassa",
|
||||
"select_a_tax": "Seleziona imposta",
|
||||
"search": "Cerca",
|
||||
"are_you_sure": "Sei sicuro/a?",
|
||||
"list_is_empty": "La lista è vuota.",
|
||||
"no_tax_found": "Nessuna Tassa trovata!",
|
||||
"no_tax_found": "Nessuna imposta trovata!",
|
||||
"four_zero_four": "404",
|
||||
"you_got_lost": "Hoops! Ti sei perso",
|
||||
"go_home": "Vai alla Home",
|
||||
@ -83,10 +83,11 @@
|
||||
"street_1": "Indirizzo 1",
|
||||
"street_2": "Indirizzo 2",
|
||||
"action_failed": "Errore",
|
||||
"retry": "Retry",
|
||||
"choose_note": "Choose Note",
|
||||
"no_note_found": "No Note Found",
|
||||
"insert_note": "Insert Note"
|
||||
"retry": "Riprova",
|
||||
"choose_note": "Scegli Nota",
|
||||
"no_note_found": "Nessuna Nota Trovata",
|
||||
"insert_note": "Inserisci Nota",
|
||||
"copied_pdf_url_clipboard": "Copied PDF url to clipboard!"
|
||||
},
|
||||
"dashboard": {
|
||||
"select_year": "Seleziona anno",
|
||||
@ -130,13 +131,13 @@
|
||||
"name": "Nome",
|
||||
"description": "Descrizione",
|
||||
"percent": "Percento",
|
||||
"compound_tax": "Tassa composta"
|
||||
"compound_tax": "Imposta composta"
|
||||
},
|
||||
"global_search": {
|
||||
"search": "Search...",
|
||||
"search": "Cerca...",
|
||||
"customers": "Clienti",
|
||||
"users": "Users",
|
||||
"no_results_found": "No Results Found"
|
||||
"users": "Utenti",
|
||||
"no_results_found": "Nessun Risultato Trovato"
|
||||
},
|
||||
"customers": {
|
||||
"title": "Clienti",
|
||||
@ -144,8 +145,8 @@
|
||||
"contacts_list": "Lista clienti",
|
||||
"name": "Nome",
|
||||
"mail": "Mail | Mails",
|
||||
"statement": "Statement",
|
||||
"display_name": "Mostra nome",
|
||||
"statement": "Dichiarazione",
|
||||
"display_name": "Nome Visibile",
|
||||
"primary_contact_name": "Riferimento",
|
||||
"contact_name": "Nome Contatto",
|
||||
"amount_due": "Ammontare dovuto",
|
||||
@ -153,10 +154,10 @@
|
||||
"address": "Indirizzo",
|
||||
"phone": "Telefono",
|
||||
"website": "Sito web",
|
||||
"overview": "Overview",
|
||||
"enable_portal": "Enable Portal",
|
||||
"overview": "Panoramica",
|
||||
"enable_portal": "Abilita Portale",
|
||||
"country": "Paese",
|
||||
"state": "Stato",
|
||||
"state": "Provincia",
|
||||
"city": "Città",
|
||||
"zip_code": "Codice Postale",
|
||||
"added_on": "Aggiunto il",
|
||||
@ -177,6 +178,8 @@
|
||||
"copy_billing_address": "Copia da Fatturazione",
|
||||
"no_customers": "Ancora nessun Cliente!",
|
||||
"no_customers_found": "Nessun cliente trovato!",
|
||||
"no_contact": "No contact",
|
||||
"no_contact_name": "No contact name",
|
||||
"list_of_customers": "Qui ci sarà la lista dei tuoi clienti",
|
||||
"primary_display_name": "Mostra il Nome Principale",
|
||||
"select_currency": "Selezione Valùta",
|
||||
@ -200,6 +203,7 @@
|
||||
"added_on": "Aggiunto il",
|
||||
"price": "Prezzo",
|
||||
"date_of_creation": "Data di creazione",
|
||||
"not_selected": "No item selected",
|
||||
"action": "Azione",
|
||||
"add_item": "Aggiungi Commessa",
|
||||
"save_item": "Salva",
|
||||
@ -253,7 +257,7 @@
|
||||
"convert_to_invoice": "Converti in Fattura",
|
||||
"mark_as_sent": "Segna come Inviata",
|
||||
"send_estimate": "Invia preventivo",
|
||||
"resend_estimate": "Resend Estimate",
|
||||
"resend_estimate": "Reinvia Preventivo",
|
||||
"record_payment": "Registra Pagamento",
|
||||
"add_estimate": "Aggiungi Preventivo",
|
||||
"save_estimate": "Salva Preventivo",
|
||||
@ -270,6 +274,7 @@
|
||||
"required": "Campo obbligatorio"
|
||||
},
|
||||
"accepted": "Accettato",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Inviato",
|
||||
"draft": "Bozza",
|
||||
"declined": "Rifiutato",
|
||||
@ -315,7 +320,10 @@
|
||||
"years": "{years} Anno",
|
||||
"all": "Tutti",
|
||||
"paid": "Pagato",
|
||||
"unpaid": "Insoluto",
|
||||
"unpaid": "Insoluta",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "CLIENTE",
|
||||
"paid_status": "STATO DI PAGAMENTO",
|
||||
"ref_no": "RIF N.",
|
||||
@ -339,7 +347,7 @@
|
||||
"notes": "Note",
|
||||
"view": "Vedi",
|
||||
"send_invoice": "Invia Fattura",
|
||||
"resend_invoice": "Resend Invoice",
|
||||
"resend_invoice": "Reinvia Fattura",
|
||||
"invoice_template": "Modello Fattura",
|
||||
"template": "Modello",
|
||||
"mark_as_sent": "Segna come inviata",
|
||||
@ -434,6 +442,8 @@
|
||||
"update_payment": "Aggiorna pagamento",
|
||||
"payment": "Pagamento | Pagamenti",
|
||||
"no_payments": "Ancora nessun pagamento!",
|
||||
"not_selected": "Not selected",
|
||||
"no_invoice": "No invoice",
|
||||
"no_matching_payments": "Non ci sono pagamenti!",
|
||||
"list_of_payments": "Questa sezione conterrà la lista dei pagamenti.",
|
||||
"select_payment_mode": "Seleziona modalità di pagamento",
|
||||
@ -463,6 +473,7 @@
|
||||
"receipt": "Ricevuta",
|
||||
"amount": "Ammontare",
|
||||
"action": "Azione",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Nota",
|
||||
"category_id": "Id categoria",
|
||||
"date": "Data Spesa",
|
||||
@ -498,43 +509,43 @@
|
||||
"password": "Password",
|
||||
"forgot_password": "Password dimenticata?",
|
||||
"or_signIn_with": "o fai login con",
|
||||
"login": "Login",
|
||||
"login": "Accedi",
|
||||
"register": "Registrati",
|
||||
"reset_password": "Resetta Password",
|
||||
"password_reset_successfully": "Password Resettata con successo",
|
||||
"enter_email": "Inserisci email",
|
||||
"enter_password": "Inserisci Password",
|
||||
"retype_password": "Ridigita Password",
|
||||
"login_placeholder": "mail@example.com"
|
||||
"login_placeholder": "mail@esempio.com"
|
||||
},
|
||||
"users": {
|
||||
"title": "Users",
|
||||
"users_list": "Users List",
|
||||
"title": "Utenti",
|
||||
"users_list": "Lista Utenti",
|
||||
"name": "Nome",
|
||||
"description": "Descrizione",
|
||||
"added_on": "Aggiunto il",
|
||||
"date_of_creation": "Data di creazione",
|
||||
"action": "Azione",
|
||||
"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": "Aggiungi Utente",
|
||||
"save_user": "Salva Utente",
|
||||
"update_user": "Aggiorna Utente",
|
||||
"user": "Utente | Utenti",
|
||||
"add_new_user": "Aggiungi Nuovo Utente",
|
||||
"new_user": "Nuovo Utente",
|
||||
"edit_user": "Modifica Utente",
|
||||
"no_users": "Ancora nessun utente!",
|
||||
"list_of_users": "Questa sezione conterrà l'elenco degli utenti.",
|
||||
"email": "Email",
|
||||
"phone": "Telefono",
|
||||
"password": "Password",
|
||||
"user_attached_message": "Non puoi eliminare una Commessa che è già attiva",
|
||||
"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": "Non sarai in grado di recuperare questo utente | Non sarai in grado di recuperare questi utenti",
|
||||
"created_message": "Utente creato correttamente",
|
||||
"updated_message": "Utente aggiornato correttamente",
|
||||
"deleted_message": "Utente eliminato con successo | Utenti eliminati con successo"
|
||||
},
|
||||
"reports": {
|
||||
"title": "Report",
|
||||
"title": "Segnala",
|
||||
"from_date": "Da",
|
||||
"to_date": "A",
|
||||
"status": "Stato",
|
||||
@ -543,7 +554,7 @@
|
||||
"download_pdf": "Scarica PDF",
|
||||
"view_pdf": "Vedi PDF",
|
||||
"update_report": "Aggiorna Report",
|
||||
"report": "Report | Reports",
|
||||
"report": "Segnalazione | Segnalazioni",
|
||||
"profit_loss": {
|
||||
"profit_loss": "Guadagni & Perdite",
|
||||
"to_date": "A",
|
||||
@ -601,13 +612,13 @@
|
||||
"customization": "Personalizzazione",
|
||||
"preferences": "Opzioni",
|
||||
"notifications": "Notifiche",
|
||||
"tax_types": "Tupi di Tasse",
|
||||
"tax_types": "Tipi di Imposte",
|
||||
"expense_category": "Categorie di spesa",
|
||||
"update_app": "Aggiorna App",
|
||||
"backup": "Backup",
|
||||
"file_disk": "File Disk",
|
||||
"file_disk": "Disco File",
|
||||
"custom_fields": "Campi personalizzati",
|
||||
"payment_modes": "Payment Modes",
|
||||
"payment_modes": "Modalità di Pagamento",
|
||||
"notes": "Note"
|
||||
},
|
||||
"title": "Impostazioni",
|
||||
@ -615,7 +626,7 @@
|
||||
"general": "Generale",
|
||||
"language": "Lingua",
|
||||
"primary_currency": "Valuta Principale",
|
||||
"timezone": "Time Zone",
|
||||
"timezone": "Fuso Orario",
|
||||
"date_format": "Formato data",
|
||||
"currencies": {
|
||||
"title": "Valute",
|
||||
@ -636,17 +647,17 @@
|
||||
"add_currency": "Aggiungi Valùta"
|
||||
},
|
||||
"mail": {
|
||||
"host": "Mail Host",
|
||||
"host": "Host Mail",
|
||||
"port": "Mail - Porta",
|
||||
"driver": "Mail Driver",
|
||||
"secret": "Secret",
|
||||
"mailgun_secret": "Mailgun Secret",
|
||||
"mailgun_domain": "Domain",
|
||||
"mailgun_endpoint": "Mailgun Endpoint",
|
||||
"ses_secret": "SES Secret",
|
||||
"ses_key": "SES Key",
|
||||
"password": "Mail Password",
|
||||
"username": "Mail Username",
|
||||
"driver": "Driver Mail",
|
||||
"secret": "Segreto",
|
||||
"mailgun_secret": "Segreto Mailgun",
|
||||
"mailgun_domain": "Dominio",
|
||||
"mailgun_endpoint": "Endpoint Mailgun",
|
||||
"ses_secret": "Segreto SES",
|
||||
"ses_key": "Chiave SES",
|
||||
"password": "Password Email",
|
||||
"username": "Nome Utente Email",
|
||||
"mail_config": "Configurazione Mail",
|
||||
"from_name": "Nome Mittente Mail",
|
||||
"from_mail": "Indirizzo Mittente Mail",
|
||||
@ -665,7 +676,7 @@
|
||||
"section_description": "Informazioni sulla tua azienda che saranno mostrate in fattura, preventivi ed altri documenti creati dell'applicazione.",
|
||||
"phone": "Telefono",
|
||||
"country": "Paese",
|
||||
"state": "Stato",
|
||||
"state": "Provincia",
|
||||
"city": "Città",
|
||||
"address": "Indirizzo",
|
||||
"zip": "CAP",
|
||||
@ -674,7 +685,7 @@
|
||||
},
|
||||
"custom_fields": {
|
||||
"title": "Campi personalizzati",
|
||||
"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": "Personalizza le tue fatture, preventivi e ricevute di pagamento con i tuoi campi. Assicurati di utilizzare i campi aggiunti qui sotto nei campi della pagina Personalizzazione delle impostazioni.",
|
||||
"add_custom_field": "Aggiungi campo personalizzato",
|
||||
"edit_custom_field": "Modifica campo personalizzato",
|
||||
"field_name": "Nome campo",
|
||||
@ -726,7 +737,7 @@
|
||||
"website": "Sito web",
|
||||
"name": "Nome",
|
||||
"country": "Paese",
|
||||
"state": "Stato",
|
||||
"state": "Provincia",
|
||||
"city": "Città",
|
||||
"company_name": "Nome Azienda",
|
||||
"address_street_1": "Indirizzo 1",
|
||||
@ -740,41 +751,50 @@
|
||||
"title": "Fatture",
|
||||
"notes": "Note",
|
||||
"invoice_prefix": "Prefisso Fattura",
|
||||
"default_invoice_email_body": "Default Invoice Email Body",
|
||||
"invoice_number_length": "Invoice number length",
|
||||
"default_invoice_email_body": "Corpo Email Fattura Predefinito",
|
||||
"invoice_settings": "Impostazioni fattura",
|
||||
"autogenerate_invoice_number": "Auto genera numero di fattura",
|
||||
"invoice_setting_description": "Disabilita, se non vuoi auto-generare i numeri delle fatture ogni volta che crei una nuova fattura.",
|
||||
"invoice_email_attachment": "Send invoices as attachments",
|
||||
"invoice_email_attachment_setting_description": "Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_invoice_prefix": "Inserisci prefisso fattura",
|
||||
"terms_and_conditions": "Termini e Condizioni",
|
||||
"company_address_format": "Company Address Format",
|
||||
"shipping_address_format": "Shipping Address Format",
|
||||
"billing_address_format": "Billing Address Format",
|
||||
"company_address_format": "Formato Indirizzo Azienda",
|
||||
"shipping_address_format": "Formato Indirizzo Di Spedizione",
|
||||
"billing_address_format": "Formato Indirizzo Fatturazione",
|
||||
"invoice_setting_updated": "Impostazioni fatture aggiornate con successo"
|
||||
},
|
||||
"estimates": {
|
||||
"title": "Preventivi",
|
||||
"estimate_prefix": "Prefisso Preventivi",
|
||||
"default_estimate_email_body": "Default Estimate Email Body",
|
||||
"estimate_number_length": "Estimate number length",
|
||||
"default_estimate_email_body": "Corpo Email Preventivo Predefinito",
|
||||
"estimate_settings": "Impostazioni Preventivi",
|
||||
"autogenerate_estimate_number": "Auto-genera Numero di preventivo",
|
||||
"estimate_setting_description": "Disabilita, se non vuoi autogenerare il numero di preventivo ogni volta che ne viene creato uno nuovo.",
|
||||
"estimate_email_attachment": "Send estimates as attachments",
|
||||
"estimate_email_attachment_setting_description": "Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_estimate_prefix": "Inserisci prefisso preventivo",
|
||||
"estimate_setting_updated": "Impostazioni preventivi aggiornate con successo",
|
||||
"company_address_format": "Company Address Format",
|
||||
"billing_address_format": "Billing Address Format",
|
||||
"shipping_address_format": "Shipping Address Format"
|
||||
"company_address_format": "Formato Indirizzo Azienda",
|
||||
"billing_address_format": "Formato Indirizzo Fatturazione",
|
||||
"shipping_address_format": "Formato Indirizzo Spedizione"
|
||||
},
|
||||
"payments": {
|
||||
"title": "Pagamenti",
|
||||
"description": "Modes of transaction for payments",
|
||||
"description": "Modalità di pagamento",
|
||||
"payment_prefix": "Prefisso Pagamento",
|
||||
"default_payment_email_body": "Default Payment Email Body",
|
||||
"payment_number_length": "Payment number lenght",
|
||||
"default_payment_email_body": "Corpo Email Pagamento Predefinito",
|
||||
"payment_settings": "Impostazioni Pagamento",
|
||||
"autogenerate_payment_number": "Auto genera il numero di Pagamento",
|
||||
"payment_setting_description": "Disabilita, se non vuoi autogenerare il numero di pagamento ogni volta che ne viene creato uno nuovo.",
|
||||
"payment_email_attachment": "Send payments as attachments",
|
||||
"payment_email_attachment_setting_description": "Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_payment_prefix": "Inserisci prefisso di pagamento",
|
||||
"payment_setting_updated": "Impostazioni di pagamento aggiornate con successo",
|
||||
"payment_modes": "Payment Modes",
|
||||
"payment_modes": "Modalità di pagamento",
|
||||
"add_payment_mode": "Aggiungi modalità di pagamento",
|
||||
"edit_payment_mode": "Modifica modalità di pagamento",
|
||||
"mode_name": "Nome modalità",
|
||||
@ -782,9 +802,9 @@
|
||||
"payment_mode_updated": "Modalità di pagamento aggiornata",
|
||||
"payment_mode_confirm_delete": "Non potrai ripristinare la modalità di pagamento",
|
||||
"already_in_use": "Modalità di pagamento già in uso",
|
||||
"deleted_message": "Payment Mode deleted successfully",
|
||||
"company_address_format": "Company Address Format",
|
||||
"from_customer_address_format": "From Customer Address Format"
|
||||
"deleted_message": "Modalità di pagamento eliminata con successo",
|
||||
"company_address_format": "Formato Indirizzo Azienda",
|
||||
"from_customer_address_format": "Dal Formato Indirizzo Cliente"
|
||||
},
|
||||
"items": {
|
||||
"title": "Commesse",
|
||||
@ -800,18 +820,18 @@
|
||||
},
|
||||
"notes": {
|
||||
"title": "Note",
|
||||
"description": "Save time by creating notes and reusing them on your invoices, estimates & payments.",
|
||||
"description": "Risparmia tempo creando note e riutilizzandole sulle tue fatture, preventivi e pagamenti.",
|
||||
"notes": "Note",
|
||||
"type": "genere",
|
||||
"add_note": "Add Note",
|
||||
"add_new_note": "Add New Note",
|
||||
"add_note": "Aggiungi Nota",
|
||||
"add_new_note": "Aggiungi nuova nota",
|
||||
"name": "Nome",
|
||||
"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": "Modifica nota",
|
||||
"note_added": "Nota aggiunta correttamente",
|
||||
"note_updated": "Nota aggiornata correttamente",
|
||||
"note_confirm_delete": "Non sarà possibile recuperare questa nota",
|
||||
"already_in_use": "Nota già in uso",
|
||||
"deleted_message": "Nota eliminata con successo"
|
||||
}
|
||||
},
|
||||
"account_settings": {
|
||||
@ -844,7 +864,7 @@
|
||||
"please_enter_email": "Inserisci Email"
|
||||
},
|
||||
"tax_types": {
|
||||
"title": "Tipi di Imposta",
|
||||
"title": "Tipi di Imposte",
|
||||
"add_tax": "Aggiungi Imposta",
|
||||
"edit_tax": "Modifica imposta",
|
||||
"description": "Puoi aggiongere e rimuovere imposte a piacimento. Vengono supportate Tasse differenti per prodotti/servizi specifici esattamento come per le fatture.",
|
||||
@ -879,8 +899,8 @@
|
||||
},
|
||||
"preferences": {
|
||||
"currency": "Valùta",
|
||||
"default_language": "Default Language",
|
||||
"time_zone": "Time Zone",
|
||||
"default_language": "Lingua predefinita",
|
||||
"time_zone": "Fuso Orario",
|
||||
"fiscal_year": "Anno finanziario",
|
||||
"date_format": "Formato Data",
|
||||
"discount_setting": "Impostazione Sconto",
|
||||
@ -892,7 +912,7 @@
|
||||
"updated_message": "Preferenze aggiornate con successo",
|
||||
"select_language": "seleziona lingua",
|
||||
"select_time_zone": "Seleziona Time Zone",
|
||||
"select_date_format": "Select Date Format",
|
||||
"select_date_format": "Seleziona Formato Data",
|
||||
"select_financial_year": "Seleziona anno finanziario"
|
||||
},
|
||||
"update_app": {
|
||||
@ -901,7 +921,7 @@
|
||||
"check_update": "Controllo aggiornamenti",
|
||||
"avail_update": "Aggiornamento disponibile",
|
||||
"next_version": "Versione successiva",
|
||||
"requirements": "Requirements",
|
||||
"requirements": "Requisiti",
|
||||
"update": "Aggiorna ora",
|
||||
"update_progress": "Aggiornamento in corso...",
|
||||
"progress_text": "Sarà necessario qualche minuto. Per favore non aggiornare la pagina e non chiudere la finestra prima che l'aggiornamento sia completato",
|
||||
@ -911,6 +931,7 @@
|
||||
"download_zip_file": "Scarica il file ZIP",
|
||||
"unzipping_package": "Pacchetto di decompressione",
|
||||
"copying_files": "Copia dei file",
|
||||
"deleting_files": "Deleting Unused files",
|
||||
"running_migrations": "Esecuzione delle migrazioni",
|
||||
"finishing_update": "Aggiornamento di finitura",
|
||||
"update_failed": "Aggiornamento non riuscito",
|
||||
@ -918,83 +939,84 @@
|
||||
},
|
||||
"backup": {
|
||||
"title": "Backup | Backups",
|
||||
"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",
|
||||
"description": "Il backup è un file zip che contiene tutti i file nelle cartelle specificate con un dump del vostro database",
|
||||
"new_backup": "Nuovo Backup",
|
||||
"create_backup": "Crea Backup",
|
||||
"select_backup_type": "Scegli tipo di backup",
|
||||
"backup_confirm_delete": "Non sarà possibile recuperare questo backup",
|
||||
"path": "percorso",
|
||||
"new_disk": "Nuovo Disco",
|
||||
"created_at": "creato il",
|
||||
"size": "dimensioni",
|
||||
"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": "locale",
|
||||
"healthy": "sano",
|
||||
"amount_of_backups": "quantità di backup",
|
||||
"newest_backups": "backup più recenti",
|
||||
"used_storage": "spazio utilizzato",
|
||||
"select_disk": "Seleziona Disco",
|
||||
"action": "Azione",
|
||||
"deleted_message": "Backup deleted successfully",
|
||||
"created_message": "Backup created successfully",
|
||||
"invalid_disk_credentials": "Invalid credential of selected disk"
|
||||
"deleted_message": "Backup eliminato con successo",
|
||||
"created_message": "Backup creato con successo",
|
||||
"invalid_disk_credentials": "Credenziali del disco selezionato non valide"
|
||||
},
|
||||
"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",
|
||||
"title": "Disco File | Dischi File",
|
||||
"description": "Per impostazione predefinita, Crater utilizzerà il disco locale per salvare backup, avatar e altri file di immagine. Puoi configurare più di un driver disco come DigitalOcean, S3 e Dropbox in base alle tue preferenze.",
|
||||
"created_at": "creato il",
|
||||
"dropbox": "dropbox",
|
||||
"name": "Nome",
|
||||
"driver": "Driver",
|
||||
"disk_type": "genere",
|
||||
"disk_name": "Disk Name",
|
||||
"new_disk": "Add New Disk",
|
||||
"filesystem_driver": "Filesystem Driver",
|
||||
"local_driver": "local Driver",
|
||||
"local_root": "local Root",
|
||||
"public_driver": "Public Driver",
|
||||
"public_root": "Public Root",
|
||||
"public_url": "Public URL",
|
||||
"public_visibility": "Public Visibility",
|
||||
"media_driver": "Media Driver",
|
||||
"disk_name": "Nome Disco",
|
||||
"new_disk": "Aggiungi Nuovo Disco",
|
||||
"filesystem_driver": "Driver Filesystem",
|
||||
"local_driver": "driver locale",
|
||||
"local_root": "radice locale",
|
||||
"public_driver": "Driver Pubblico",
|
||||
"public_root": "Root Pubblica",
|
||||
"public_url": "Url Pubblico",
|
||||
"public_visibility": "Visibilità Pubblica",
|
||||
"media_driver": "Driver Media",
|
||||
"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": "Default Driver",
|
||||
"is_default": "IS DEFAULT",
|
||||
"set_default_disk": "Set Default 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",
|
||||
"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",
|
||||
"aws_driver": "Driver AWS",
|
||||
"aws_key": "Chiave AWS",
|
||||
"aws_secret": "Segreto AWS",
|
||||
"aws_region": "Regione AWS",
|
||||
"aws_bucket": "Bucket AWS",
|
||||
"aws_root": "Root AWS",
|
||||
"do_spaces_type": "tipo Do Spaces",
|
||||
"do_spaces_key": "chiave Do Spaces",
|
||||
"do_spaces_secret": "segreto Do Spaces",
|
||||
"do_spaces_region": "regione Do Spaces",
|
||||
"do_spaces_bucket": "bucket Do Spaces",
|
||||
"do_spaces_endpoint": "endpoint Do Spaces",
|
||||
"do_spaces_root": "root Do Spaces",
|
||||
"dropbox_type": "Tipo Dropbox",
|
||||
"dropbox_token": "Token Dropbox",
|
||||
"dropbox_key": "Chiave Dropbox",
|
||||
"dropbox_secret": "Segreto Dropbox",
|
||||
"dropbox_app": "App Dropbox",
|
||||
"dropbox_root": "Root Dropbox",
|
||||
"default_driver": "Driver Predefinito",
|
||||
"is_default": "È DEFAULT",
|
||||
"set_default_disk": "Imposta Disco Predefinito",
|
||||
"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": "Disco impostato come predefinito correttamente",
|
||||
"save_pdf_to_disk": "Salva i PDF su disco",
|
||||
"disk_setting_description": " Abilita questa opzione, se vuoi salvare automaticamente una copia di ogni PDF Fattura, Preventivo e Ricevuta di Pagamento sul tuo disco predefinito. Attivare questa opzione diminuirà il tempo di caricamento durante la visualizzazione dei PDF.",
|
||||
"select_disk": "Seleziona Disco",
|
||||
"disk_settings": "Impostazioni Disco",
|
||||
"confirm_delete": "I file e le cartelle esistenti nel disco specificato non saranno toccati, ma la configurazione del disco sarà eliminata dal Crater",
|
||||
"action": "Azione",
|
||||
"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"
|
||||
"edit_file_disk": "Modifica Disco File",
|
||||
"success_create": "Disco aggiunto correttamente",
|
||||
"success_update": "Disco aggiornato correttamente",
|
||||
"error": "Aggiunta del disco fallita",
|
||||
"deleted_message": "Disco file eliminato con successo",
|
||||
"disk_variables_save_successfully": "Disco Configurato Con successo",
|
||||
"disk_variables_save_error": "Configurazione disco fallita.",
|
||||
"invalid_disk_credentials": "Credenziali del disco selezionato non valide"
|
||||
}
|
||||
},
|
||||
"wizard": {
|
||||
@ -1013,7 +1035,7 @@
|
||||
"preferences": "Impostazioni",
|
||||
"preferences_desc": "Impostazioni di default del sistema.",
|
||||
"country": "Paese",
|
||||
"state": "Stato",
|
||||
"state": "Provincia",
|
||||
"city": "Città",
|
||||
"address": "Indirizzo",
|
||||
"street": "Indirizzo1 | Indirizzo2",
|
||||
@ -1022,25 +1044,25 @@
|
||||
"go_back": "Torna indietro",
|
||||
"currency": "Valùta",
|
||||
"language": "Lingua",
|
||||
"time_zone": "Time Zone",
|
||||
"time_zone": "Fuso Orario",
|
||||
"fiscal_year": "Anno Finanziario",
|
||||
"date_format": "Formato Date",
|
||||
"from_address": "Indirizzo - Da",
|
||||
"username": "Username",
|
||||
"username": "Nome utente",
|
||||
"next": "Successivo",
|
||||
"continue": "Continua",
|
||||
"skip": "Salta",
|
||||
"database": {
|
||||
"database": "URL del sito & database",
|
||||
"connection": "Connessione Database",
|
||||
"host": "Database Host",
|
||||
"host": "Host Database",
|
||||
"port": "Database - Porta",
|
||||
"password": "Database Password",
|
||||
"app_url": "App URL",
|
||||
"app_domain": "App Domain",
|
||||
"username": "Database Username",
|
||||
"password": "Password Database",
|
||||
"app_url": "URL dell'App",
|
||||
"app_domain": "Dominio App",
|
||||
"username": "Nome Utente del Database",
|
||||
"db_name": "Database Nome",
|
||||
"db_path": "Database Path",
|
||||
"db_path": "Percorso del database",
|
||||
"desc": "Crea un database sul tuo server e setta le credenziali usando il form qui sotto."
|
||||
},
|
||||
"permissions": {
|
||||
@ -1050,17 +1072,17 @@
|
||||
"permission_desc": "Qui sotto la lista dei permessi richiesti per far funzionare correttamente l'App. Se il controllo dei permessi fallisce, assicurati di aggiornare/modificare i permessi sulle cartelle."
|
||||
},
|
||||
"mail": {
|
||||
"host": "Mail Host",
|
||||
"host": "Host Mail",
|
||||
"port": "Mail - Porta",
|
||||
"driver": "Mail Driver",
|
||||
"secret": "Secret",
|
||||
"mailgun_secret": "Mailgun Secret",
|
||||
"mailgun_domain": "Domain",
|
||||
"mailgun_endpoint": "Mailgun Endpoint",
|
||||
"ses_secret": "SES Secret",
|
||||
"ses_key": "SES Key",
|
||||
"password": "Mail Password",
|
||||
"username": "Mail Username",
|
||||
"driver": "Driver Mail",
|
||||
"secret": "Segreto",
|
||||
"mailgun_secret": "Segreto Mailgun",
|
||||
"mailgun_domain": "Dominio",
|
||||
"mailgun_endpoint": "Endpoint Mailgun",
|
||||
"ses_secret": "Segreto SES",
|
||||
"ses_key": "Chiave SES",
|
||||
"password": "Password Email",
|
||||
"username": "Nome Utente Email",
|
||||
"mail_config": "Configurazione Mail",
|
||||
"from_name": "Nome mittente mail",
|
||||
"from_mail": "Indirizzo mittente mail",
|
||||
@ -1074,11 +1096,11 @@
|
||||
"system_req_desc": "Crater ha alcuni requisiti di sistema. Assicurati che il server ha la versione di php richiesta e tutte le estensioni necessarie."
|
||||
},
|
||||
"errors": {
|
||||
"migrate_failed": "Migrate Failed",
|
||||
"database_variables_save_error": "Cannot write configuration to .env file. Please check its file permissions",
|
||||
"mail_variables_save_error": "Email configuration failed.",
|
||||
"connection_failed": "Database connection failed",
|
||||
"database_should_be_empty": "Database should be empty"
|
||||
"migrate_failed": "Migrazione Fallita",
|
||||
"database_variables_save_error": "Impossibile scrivere la configurazione nel file .env. Si prega di controllare i permessi dei file",
|
||||
"mail_variables_save_error": "Configurazione email fallita.",
|
||||
"connection_failed": "Connessione al Database fallita",
|
||||
"database_should_be_empty": "Il database dovrebbe essere vuoto"
|
||||
},
|
||||
"success": {
|
||||
"mail_variables_save_successfully": "Email configurata con successo",
|
||||
@ -1129,42 +1151,47 @@
|
||||
"address_maxlength": "L'Indirizzo non può eccedere i 255 caratteri.",
|
||||
"ref_number_maxlength": "Il Numero di Riferimento non può superare i 255 caratteri.",
|
||||
"prefix_maxlength": "Il Prefisso non può superare i 5 caratteri.",
|
||||
"something_went_wrong": "Si è verificato un errore"
|
||||
"something_went_wrong": "Si è verificato un errore",
|
||||
"number_length_minvalue": "Number lenght should be greater than 0"
|
||||
},
|
||||
"pdf_estimate_label": "Preventivo",
|
||||
"pdf_estimate_number": "Preventivo Numero",
|
||||
"pdf_estimate_date": "Data preventivo",
|
||||
"pdf_estimate_expire_date": "Expiry date",
|
||||
"pdf_estimate_expire_date": "Data di scadenza",
|
||||
"pdf_invoice_label": "Fattura",
|
||||
"pdf_invoice_number": "Numero Fattura",
|
||||
"pdf_invoice_date": "Data fattura",
|
||||
"pdf_invoice_due_date": "Due date",
|
||||
"pdf_invoice_due_date": "Data di pagamento",
|
||||
"pdf_notes": "Note",
|
||||
"pdf_items_label": "Commesse",
|
||||
"pdf_quantity_label": "Quantità",
|
||||
"pdf_price_label": "Prezzo",
|
||||
"pdf_discount_label": "Sconto",
|
||||
"pdf_amount_label": "Ammontare",
|
||||
"pdf_subtotal": "Subtotal",
|
||||
"pdf_subtotal": "Parziale",
|
||||
"pdf_total": "Totale",
|
||||
"pdf_payment_receipt_label": "PAYMENT RECEIPT",
|
||||
"pdf_payment_date": "Payment Date",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "RICEVUTA DI PAGAMENTO",
|
||||
"pdf_payment_date": "Data di pagamento",
|
||||
"pdf_payment_number": "Numero di pagamento",
|
||||
"pdf_payment_mode": "Modalità di Pagamento",
|
||||
"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_payment_amount_received_label": "Importo Ricevuto",
|
||||
"pdf_expense_report_label": "RELAZIONE SPESE",
|
||||
"pdf_total_expenses_label": "TOTALE SPESE",
|
||||
"pdf_profit_loss_label": "RELAZIONE PROFITTO E PERDITE",
|
||||
"pdf_sales_customers_label": "Sales Customer Report",
|
||||
"pdf_sales_items_label": "Sales Item Report",
|
||||
"pdf_tax_summery_label": "Tax Summary Report",
|
||||
"pdf_income_label": "REDDITO",
|
||||
"pdf_net_profit_label": "PROFITTO NETTO",
|
||||
"pdf_customer_sales_report": "Relazione Vendite: Per Cliente",
|
||||
"pdf_total_sales_label": "TOTALE VENDITE",
|
||||
"pdf_item_sales_label": "Relazione Vendite: Per Articolo",
|
||||
"pdf_tax_report_label": "RELAZIONE FISCALE",
|
||||
"pdf_total_tax_label": "TOTALE IMPOSTA",
|
||||
"pdf_tax_types_label": "Tipi di Imposta",
|
||||
"pdf_expenses_label": "Uscite",
|
||||
"pdf_bill_to": "Fattura a,",
|
||||
"pdf_ship_to": "Invia a,",
|
||||
"pdf_received_from": "Received from:"
|
||||
"pdf_received_from": "Ricevuto da:"
|
||||
}
|
||||
|
||||
1193
resources/assets/js/plugins/ja.json
Normal file
1193
resources/assets/js/plugins/ja.json
Normal file
File diff suppressed because it is too large
Load Diff
1193
resources/assets/js/plugins/ko.json
Normal file
1193
resources/assets/js/plugins/ko.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -86,7 +86,8 @@
|
||||
"retry": "Atkārtot",
|
||||
"choose_note": "Izvēlieties piezīmi",
|
||||
"no_note_found": "Piezīmes nav atrastas",
|
||||
"insert_note": "Ievietot piezīmi"
|
||||
"insert_note": "Ievietot piezīmi",
|
||||
"copied_pdf_url_clipboard": "Copied PDF url to clipboard!"
|
||||
},
|
||||
"dashboard": {
|
||||
"select_year": "Izvēlieties gadu",
|
||||
@ -177,6 +178,8 @@
|
||||
"copy_billing_address": "Kopēt no juridiskās adreses",
|
||||
"no_customers": "Pagaidām nav klientu!",
|
||||
"no_customers_found": "Klienti netika atrasti!",
|
||||
"no_contact": "No contact",
|
||||
"no_contact_name": "No contact name",
|
||||
"list_of_customers": "Šajā sadaļā būs klientu saraksts.",
|
||||
"primary_display_name": "Klienta nosaukums",
|
||||
"select_currency": "Izvēlieties valūtu",
|
||||
@ -200,6 +203,7 @@
|
||||
"added_on": "Pievienots",
|
||||
"price": "Cena",
|
||||
"date_of_creation": "Izveidošanas datums",
|
||||
"not_selected": "No item selected",
|
||||
"action": "Darbība",
|
||||
"add_item": "Pievienot",
|
||||
"save_item": "Saglabāt",
|
||||
@ -270,6 +274,7 @@
|
||||
"required": "Šis lauks ir obligāts"
|
||||
},
|
||||
"accepted": "Apstiprināts",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Nosūtīts",
|
||||
"draft": "Melnraksts",
|
||||
"declined": "Noraidīts",
|
||||
@ -316,6 +321,9 @@
|
||||
"all": "Visi",
|
||||
"paid": "Apmaksāts",
|
||||
"unpaid": "Neapmaksāts",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "KLIENTS",
|
||||
"paid_status": "APMAKSAS STATUS",
|
||||
"ref_no": "REF NR.",
|
||||
@ -434,6 +442,8 @@
|
||||
"update_payment": "Labot maksājumu",
|
||||
"payment": "Maksājums | Maksājumi",
|
||||
"no_payments": "Nav pievienotu maksājumu!",
|
||||
"not_selected": "Not selected",
|
||||
"no_invoice": "No invoice",
|
||||
"no_matching_payments": "Netika atrasts neviens maksājums!",
|
||||
"list_of_payments": "Šajā sadaļā būs maksājumu saraksts.",
|
||||
"select_payment_mode": "Izvēlēties maksājuma veidu",
|
||||
@ -463,6 +473,7 @@
|
||||
"receipt": "Čeks",
|
||||
"amount": "Summa",
|
||||
"action": "Darbība",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Piezīme",
|
||||
"category_id": "Kategorijas Id",
|
||||
"date": "Datums",
|
||||
@ -740,10 +751,13 @@
|
||||
"title": "Rēķini",
|
||||
"notes": "Piezīmes",
|
||||
"invoice_prefix": "Rēķina prefikss",
|
||||
"invoice_number_length": "Invoice number length",
|
||||
"default_invoice_email_body": "Default Invoice Email Body",
|
||||
"invoice_settings": "Invoice Settings",
|
||||
"autogenerate_invoice_number": "Automātiski ģenerēt rēķina numuru",
|
||||
"invoice_setting_description": "Atspējojiet, ja nevēlaties automātiski ģenerēt rēķinu numurus katru reizi, kad izveidojat jaunu rēķinu.",
|
||||
"invoice_email_attachment": "Send invoices as attachments",
|
||||
"invoice_email_attachment_setting_description": "Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_invoice_prefix": "Ievadiet rēķina prefiksu",
|
||||
"terms_and_conditions": "Lietošanas noteikumi",
|
||||
"company_address_format": "Uzņēmuma adreses formāts",
|
||||
@ -754,10 +768,13 @@
|
||||
"estimates": {
|
||||
"title": "Aprēķini",
|
||||
"estimate_prefix": "Aprēķinu prefikss",
|
||||
"estimate_number_length": "Estimate number length",
|
||||
"default_estimate_email_body": "Noklusējamais Aprēķina e-pasta saturs",
|
||||
"estimate_settings": "Aprēķinu iestatījumi",
|
||||
"autogenerate_estimate_number": "Automātiski ģenerēt Aprēķina numuru",
|
||||
"estimate_setting_description": "Atspējojiet, ja nevēlaties automātiski ģenerēt Aprēķinu numurus katru reizi, kad izveidojat jaunu Aprēķinu.",
|
||||
"estimate_email_attachment": "Send estimates as attachments",
|
||||
"estimate_email_attachment_setting_description": "Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_estimate_prefix": "Ievadiet Aprēķina prefiksu",
|
||||
"estimate_setting_updated": "Aprēķina iestatījumi ir veiksmīgi atjaunināti",
|
||||
"company_address_format": "Uzņēmuma adreses formāts",
|
||||
@ -768,10 +785,13 @@
|
||||
"title": "Maksājumi",
|
||||
"description": "Pārskaitījumu veidi, maksājumiem",
|
||||
"payment_prefix": "Maksājuma prefikss",
|
||||
"payment_number_length": "Payment number lenght",
|
||||
"default_payment_email_body": "Noklusējamais Maksājuma e-pasta saturs",
|
||||
"payment_settings": "Maksājumu iestatījumi",
|
||||
"autogenerate_payment_number": "Automātiski ģenerēt Maksājuma numuru",
|
||||
"payment_setting_description": "Atspējojiet, ja nevēlaties automātiski ģenerēt Maksājuma numurus katru reizi, kad izveidojat jaunu Maksājumu.",
|
||||
"payment_email_attachment": "Send payments as attachments",
|
||||
"payment_email_attachment_setting_description": "Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_payment_prefix": "Ievadiet Maksājuma prefiksu",
|
||||
"payment_setting_updated": "Maksājumu iestatījumi ir veiksmīgi atjaunināti",
|
||||
"payment_modes": "Apmaksas veidi",
|
||||
@ -911,6 +931,7 @@
|
||||
"download_zip_file": "Lejupielādēt ZIP failu",
|
||||
"unzipping_package": "Atarhivē Zip failu",
|
||||
"copying_files": "Notiek failu kopēšana",
|
||||
"deleting_files": "Deleting Unused files",
|
||||
"running_migrations": "Notiek migrācijas",
|
||||
"finishing_update": "Pabeidz atjauninājumu",
|
||||
"update_failed": "Atjaunināšana neizdevās",
|
||||
@ -980,6 +1001,7 @@
|
||||
"default_driver": "Default Driver",
|
||||
"is_default": "IR NOKLUSĒJAMS",
|
||||
"set_default_disk": "Iestatiet noklusējuma disku",
|
||||
"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": "Disks ir veiksmīgi iestatīts kā noklusējums",
|
||||
"save_pdf_to_disk": "Saglabāt PDF uz diska",
|
||||
"disk_setting_description": " Iespējot šo, ja vēlaties lai katru rēķina, aprēķina un maksājuma izdrukas PDF kopiju saglabātu diskā. Šī opcija samazinās ielādēšanas laiku, kad apskatīsiet PDF.",
|
||||
@ -1129,7 +1151,8 @@
|
||||
"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.",
|
||||
"something_went_wrong": "something went wrong"
|
||||
"something_went_wrong": "something went wrong",
|
||||
"number_length_minvalue": "Number lenght should be greater than 0"
|
||||
},
|
||||
"pdf_estimate_label": "Aprēķins",
|
||||
"pdf_estimate_number": "Aprēķina numurs",
|
||||
@ -1147,6 +1170,7 @@
|
||||
"pdf_amount_label": "Summa",
|
||||
"pdf_subtotal": "Starpsumma",
|
||||
"pdf_total": "Kopā",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "MAKSĀJUMA IZDRUKA",
|
||||
"pdf_payment_date": "Maksājuma datums",
|
||||
"pdf_payment_number": "Maksājuma numurs",
|
||||
@ -1155,6 +1179,9 @@
|
||||
"pdf_expense_report_label": "IZDEVUMU ATSKAITE",
|
||||
"pdf_total_expenses_label": "KOPĀ IZDEVUMI",
|
||||
"pdf_profit_loss_label": "PEĻŅAS & IZDEVUMU ATSKAITE",
|
||||
"pdf_sales_customers_label": "Sales Customer Report",
|
||||
"pdf_sales_items_label": "Sales Item Report",
|
||||
"pdf_tax_summery_label": "Tax Summary Report",
|
||||
"pdf_income_label": "IENĀKUMI",
|
||||
"pdf_net_profit_label": "PEĻŅA",
|
||||
"pdf_customer_sales_report": "Atskaite par pārdoto: Pēc lietotāja",
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
"sort_by": "Sorteer op",
|
||||
"ascending": "Oplopend",
|
||||
"descending": "Aflopend",
|
||||
"subject": "Onderwerpen",
|
||||
"subject": "Onderwerp",
|
||||
"body": "Inhoud",
|
||||
"message": "Bericht",
|
||||
"send": "Verstuur",
|
||||
@ -86,7 +86,8 @@
|
||||
"retry": "Retr",
|
||||
"choose_note": "Kies notitie",
|
||||
"no_note_found": "Geen notitie gevonden",
|
||||
"insert_note": "Notitie invoegen"
|
||||
"insert_note": "Notitie invoegen",
|
||||
"copied_pdf_url_clipboard": "Copied PDF url to clipboard!"
|
||||
},
|
||||
"dashboard": {
|
||||
"select_year": "Selecteer jaar",
|
||||
@ -94,7 +95,7 @@
|
||||
"due_amount": "Openstaand bedrag",
|
||||
"customers": "Klanten",
|
||||
"invoices": "Facturen",
|
||||
"estimates": "Offerte"
|
||||
"estimates": "Offertes"
|
||||
},
|
||||
"chart_info": {
|
||||
"total_sales": "Verkoop",
|
||||
@ -166,7 +167,7 @@
|
||||
"primary_currency": "Primaire valuta",
|
||||
"description": "Omschrijving",
|
||||
"add_new_customer": "Nieuwe klant toevoegen",
|
||||
"save_customer": "Klant redden",
|
||||
"save_customer": "Klant opslaan",
|
||||
"update_customer": "Klant bijwerken",
|
||||
"customer": "Klant | Klanten",
|
||||
"new_customer": "Nieuwe klant",
|
||||
@ -177,6 +178,8 @@
|
||||
"copy_billing_address": "Kopiëren van facturering",
|
||||
"no_customers": "Nog geen klanten!",
|
||||
"no_customers_found": "Geen klanten gevonden!",
|
||||
"no_contact": "No contact",
|
||||
"no_contact_name": "No contact name",
|
||||
"list_of_customers": "Hier vind je jouw klanten terug.",
|
||||
"primary_display_name": "Primaire weergavenaam",
|
||||
"select_currency": "Selecteer valuta",
|
||||
@ -186,7 +189,7 @@
|
||||
"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.",
|
||||
"confirm_delete": "Deze klant en alle gerelateerde facturen, offertes en betalingen worden permanent verwijderd. | Deze klanten en alle gerelateerde facturen, offertes en betalingen worden permanent verwijderd.",
|
||||
"created_message": "Klant succesvol aangemaakt",
|
||||
"updated_message": "Klant succesvol geüpdatet",
|
||||
"deleted_message": "Klant succesvol verwijderd | Klanten zijn succesvol verwijderd"
|
||||
@ -200,6 +203,7 @@
|
||||
"added_on": "Toegevoegd",
|
||||
"price": "Prijs",
|
||||
"date_of_creation": "Datum van creatie",
|
||||
"not_selected": "No item selected",
|
||||
"action": "Actie",
|
||||
"add_item": "Voeg item toe",
|
||||
"save_item": "Item opslaan",
|
||||
@ -236,14 +240,14 @@
|
||||
"total": "Totaal",
|
||||
"discount": "Korting",
|
||||
"sub_total": "Subtotaal",
|
||||
"estimate_number": "Geschat aantal",
|
||||
"estimate_number": "Offerte nummer",
|
||||
"ref_number": "Referentie nummer",
|
||||
"contact": "Contact",
|
||||
"add_item": "Voeg een item toe",
|
||||
"date": "Datum",
|
||||
"due_date": "Opleveringsdatum",
|
||||
"expiry_date": "Vervaldatum",
|
||||
"status": "Statu",
|
||||
"status": "Status",
|
||||
"add_tax": "Belasting toevoegen",
|
||||
"amount": "Bedrag",
|
||||
"action": "Actie",
|
||||
@ -254,7 +258,7 @@
|
||||
"mark_as_sent": "Markeren als verzonden",
|
||||
"send_estimate": "Verzend offerte",
|
||||
"resend_estimate": "Offerte opnieuw verzenden",
|
||||
"record_payment": "Bestaling registreren",
|
||||
"record_payment": "Betaling registreren",
|
||||
"add_estimate": "Offerte toevoegen",
|
||||
"save_estimate": "Bewaar offerte",
|
||||
"confirm_conversion": "Deze offerte wordt gebruikt om een nieuwe factuur te maken.",
|
||||
@ -270,6 +274,7 @@
|
||||
"required": "Veld is vereist"
|
||||
},
|
||||
"accepted": "Geaccepteerd",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Verzonden",
|
||||
"draft": "Concept",
|
||||
"declined": "Geweigerd",
|
||||
@ -316,6 +321,9 @@
|
||||
"all": "Allemaal",
|
||||
"paid": "Betaald",
|
||||
"unpaid": "Onbetaald",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "Klant",
|
||||
"paid_status": "Betaling",
|
||||
"ref_no": "REF NR.",
|
||||
@ -332,7 +340,7 @@
|
||||
"add_item": "Voeg een item toe",
|
||||
"date": "Datum",
|
||||
"due_date": "Opleveringsdatum",
|
||||
"status": "Statu",
|
||||
"status": "Status",
|
||||
"add_tax": "Belasting toevoegen",
|
||||
"amount": "Bedrag",
|
||||
"action": "Actie",
|
||||
@ -347,7 +355,7 @@
|
||||
"invoice_mark_as_sent": "Deze factuur wordt gemarkeerd als verzonden",
|
||||
"confirm_send": "Deze factuur wordt via e-mail naar de klant gestuurd",
|
||||
"invoice_date": "Factuur datum",
|
||||
"record_payment": "Bestaling registreren",
|
||||
"record_payment": "Betaling registreren",
|
||||
"add_new_invoice": "Nieuwe factuur toevoegen",
|
||||
"update_expense": "Onkosten bijwerken",
|
||||
"edit_invoice": "Factuur bewerken",
|
||||
@ -379,7 +387,7 @@
|
||||
"type_item_description": "Type Item Beschrijving (optioneel)"
|
||||
},
|
||||
"payment_attached_message": "Aan een van de geselecteerde facturen is al een betaling gekoppeld. Zorg ervoor dat u eerst de bijgevoegde betalingen verwijdert om door te gaan met de verwijdering",
|
||||
"confirm_delete": "U kunt deze factuur | niet terugvorderen U kunt deze facturen niet terugkrijgen",
|
||||
"confirm_delete": "Deze factuur wordt permanent verwijderd | Deze facturen worden permanent verwijderd",
|
||||
"created_message": "Factuur succesvol aangemaakt",
|
||||
"updated_message": "Factuur succesvol bijgewerkt",
|
||||
"deleted_message": "Factuur succesvol verwijderd | Facturen succesvol verwijderd",
|
||||
@ -434,6 +442,8 @@
|
||||
"update_payment": "Betaling bijwerken",
|
||||
"payment": "Betaling | Betalingen",
|
||||
"no_payments": "Nog geen betalingen!",
|
||||
"not_selected": "Not selected",
|
||||
"no_invoice": "No invoice",
|
||||
"no_matching_payments": "Er zijn geen overeenkomende betalingen!",
|
||||
"list_of_payments": "Hier vind je jouw betalingen terug.",
|
||||
"select_payment_mode": "Selecteer betalingswijze",
|
||||
@ -442,7 +452,7 @@
|
||||
"send_payment_successfully": "Betaling succesvol verzonden",
|
||||
"user_email_does_not_exist": "E-mailadres van gebruiker bestaat niet",
|
||||
"something_went_wrong": "Er is iets fout gegaan",
|
||||
"confirm_delete": "U kunt deze betaling niet herstellen U kunt deze betalingen niet terugkrijgen",
|
||||
"confirm_delete": "Deze betaling wordt permanent verwijderd | Deze betalingen worden permanent verwijderd",
|
||||
"created_message": "De betaling is succesvol aangemaakt",
|
||||
"updated_message": "Betaling succesvol bijgewerkt",
|
||||
"deleted_message": "Betaling succesvol verwijderd | Betalingen zijn verwijderd",
|
||||
@ -463,6 +473,7 @@
|
||||
"receipt": "Bon",
|
||||
"amount": "Bedrag",
|
||||
"action": "Actie",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Notitie",
|
||||
"category_id": "Categorie ID",
|
||||
"date": "Uitgavendatum",
|
||||
@ -476,7 +487,7 @@
|
||||
"expense": "Uitgaven | Uitgaven",
|
||||
"no_expenses": "Nog geen kosten!",
|
||||
"list_of_expenses": "Hier vind je jouw uitgaven terug.",
|
||||
"confirm_delete": "U kunt deze kosten | niet terugkrijgen U kunt deze kosten niet terugvorderen",
|
||||
"confirm_delete": "Deze uitgave wordt permanent verwijderd | Deze kosten worden permanent verwijderd",
|
||||
"created_message": "Kosten succesvol gemaakt",
|
||||
"updated_message": "Kosten succesvol bijgewerkt",
|
||||
"deleted_message": "Kosten succesvol verwijderd | Uitgaven zijn verwijderd",
|
||||
@ -537,7 +548,7 @@
|
||||
"title": "Verslag doen van",
|
||||
"from_date": "Van datum",
|
||||
"to_date": "Tot datum",
|
||||
"status": "Statu",
|
||||
"status": "Status",
|
||||
"paid": "Betaald",
|
||||
"unpaid": "Onbetaald",
|
||||
"download_pdf": "Download PDF",
|
||||
@ -572,17 +583,17 @@
|
||||
"due_date": "Opleveringsdatum",
|
||||
"amount": "Bedrag",
|
||||
"contact_name": "Contactnaam",
|
||||
"status": "Statu"
|
||||
"status": "Status"
|
||||
},
|
||||
"estimates": {
|
||||
"estimate": "Offerte",
|
||||
"estimate_date": "Geschatte datum",
|
||||
"estimate_date": "Offerte Datum",
|
||||
"due_date": "Opleveringsdatum",
|
||||
"estimate_number": "Geschat aantal",
|
||||
"estimate_number": "Offerte nummer",
|
||||
"ref_number": "Referentie nummer",
|
||||
"amount": "Bedrag",
|
||||
"contact_name": "Contactnaam",
|
||||
"status": "Statu"
|
||||
"status": "Status"
|
||||
},
|
||||
"expenses": {
|
||||
"expenses": "Uitgaven",
|
||||
@ -606,7 +617,7 @@
|
||||
"update_app": "App bijwerken",
|
||||
"backup": "Back-up",
|
||||
"file_disk": "Bestandsopslag",
|
||||
"custom_fields": "Custom Fields",
|
||||
"custom_fields": "Aangepaste velden",
|
||||
"payment_modes": "Betaalmethodes",
|
||||
"notes": "Opmerkingen"
|
||||
},
|
||||
@ -740,10 +751,13 @@
|
||||
"title": "Facturen",
|
||||
"notes": "Opmerkingen",
|
||||
"invoice_prefix": "Factuurvoorvoegsel",
|
||||
"invoice_number_length": "Invoice number length",
|
||||
"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.",
|
||||
"invoice_email_attachment": "Send invoices as attachments",
|
||||
"invoice_email_attachment_setting_description": "Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_invoice_prefix": "Voer het factuurvoorvoegsel in",
|
||||
"terms_and_conditions": "Voorwaarden",
|
||||
"company_address_format": "Bedrijfsadres format",
|
||||
@ -754,27 +768,33 @@
|
||||
"estimates": {
|
||||
"title": "Offertes",
|
||||
"estimate_prefix": "Voorvoegsel schatten",
|
||||
"estimate_number_length": "Estimate number length",
|
||||
"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.",
|
||||
"estimate_email_attachment": "Send estimates as attachments",
|
||||
"estimate_email_attachment_setting_description": "Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_estimate_prefix": "Voer het prefixnummer in",
|
||||
"estimate_setting_updated": "Instelling Offerte succesvol bijgewerkt",
|
||||
"company_address_format": "Bedrijfsadres format",
|
||||
"billing_address_format": "Factuuradres Format",
|
||||
"shipping_address_format": "Shipping Address Format"
|
||||
"shipping_address_format": "Verzendadres format"
|
||||
},
|
||||
"payments": {
|
||||
"title": "Betalingen",
|
||||
"description": "Modes of transaction for payments",
|
||||
"description": "Manieren om te betalen",
|
||||
"payment_prefix": "Betalingsvoorvoegsel",
|
||||
"default_payment_email_body": "Default Payment Email Body",
|
||||
"payment_number_length": "Payment number lenght",
|
||||
"default_payment_email_body": "Standaard format betalingsmail",
|
||||
"payment_settings": "Betalingsinstellingen",
|
||||
"autogenerate_payment_number": "Betalingsnummer automatisch genereren",
|
||||
"payment_setting_description": "Schakel dit uit als u niet elke keer dat u een nieuwe betaling aanmaakt, automatisch betalingsnummers wilt genereren.",
|
||||
"payment_email_attachment": "Send payments as attachments",
|
||||
"payment_email_attachment_setting_description": "Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_payment_prefix": "Voer het betalingsvoorvoegsel in",
|
||||
"payment_setting_updated": "Betalingsinstelling geüpdatet",
|
||||
"payment_modes": "Payment Modes",
|
||||
"payment_modes": "Betaalmethodes",
|
||||
"add_payment_mode": "Betaalmodus toevoegen",
|
||||
"edit_payment_mode": "Betaalmodus bewerken",
|
||||
"mode_name": "Mode naam",
|
||||
@ -783,8 +803,8 @@
|
||||
"payment_mode_confirm_delete": "U kunt deze betalingsmodus niet herstellen",
|
||||
"already_in_use": "De betalingsmodus is al in gebruik",
|
||||
"deleted_message": "Betaalwijze succesvol verwijderd",
|
||||
"company_address_format": "Company Address Format",
|
||||
"from_customer_address_format": "From Customer Address Format"
|
||||
"company_address_format": "Bedrijfsadres format",
|
||||
"from_customer_address_format": "Van klant adres formaat"
|
||||
},
|
||||
"items": {
|
||||
"title": "Artikelen",
|
||||
@ -800,18 +820,18 @@
|
||||
},
|
||||
"notes": {
|
||||
"title": "Opmerkingen",
|
||||
"description": "Save time by creating notes and reusing them on your invoices, estimates & payments.",
|
||||
"description": "Bespaar tijd door notities te maken en ze opnieuw te gebruiken op uw facturen, ramingen en betalingen.",
|
||||
"notes": "Opmerkingen",
|
||||
"type": "Type",
|
||||
"add_note": "Add Note",
|
||||
"add_new_note": "Add New Note",
|
||||
"add_note": "Notitie toevoegen",
|
||||
"add_new_note": "Voeg een nieuwe notitie toe",
|
||||
"name": "Naam",
|
||||
"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": "Notitie bewerken",
|
||||
"note_added": "Notitie toegevoegd",
|
||||
"note_updated": "Notitie bijgewerkt",
|
||||
"note_confirm_delete": "U kunt deze notitie niet terughalen",
|
||||
"already_in_use": "Notitie is reeds in gebruik",
|
||||
"deleted_message": "Notitie verwijderd"
|
||||
}
|
||||
},
|
||||
"account_settings": {
|
||||
@ -859,7 +879,7 @@
|
||||
"created_message": "Belastingtype is gemaakt",
|
||||
"updated_message": "Belastingtype succesvol bijgewerkt",
|
||||
"deleted_message": "Belastingtype succesvol verwijderd",
|
||||
"confirm_delete": "U kunt dit belastingtype niet terugkrijgen",
|
||||
"confirm_delete": "Dit belastingtype wordt permanent verwijderd",
|
||||
"already_in_use": "Belasting al in gebruik"
|
||||
},
|
||||
"expense_category": {
|
||||
@ -879,7 +899,7 @@
|
||||
},
|
||||
"preferences": {
|
||||
"currency": "Valuta",
|
||||
"default_language": "Default Language",
|
||||
"default_language": "Standaard taal",
|
||||
"time_zone": "Tijdzone",
|
||||
"fiscal_year": "Financieel jaar",
|
||||
"date_format": "Datumnotatie",
|
||||
@ -892,7 +912,7 @@
|
||||
"updated_message": "Voorkeuren succesvol bijgewerkt",
|
||||
"select_language": "Selecteer taal",
|
||||
"select_time_zone": "Selecteer Tijdzone",
|
||||
"select_date_format": "Select Date Format",
|
||||
"select_date_format": "Selecteer datum/tijdindeling",
|
||||
"select_financial_year": "Selecteer financieel ja"
|
||||
},
|
||||
"update_app": {
|
||||
@ -901,7 +921,7 @@
|
||||
"check_update": "Controleer op updates",
|
||||
"avail_update": "Nieuwe update beschikbaar",
|
||||
"next_version": "Volgende versie",
|
||||
"requirements": "Requirements",
|
||||
"requirements": "Vereisten",
|
||||
"update": "Nu updaten",
|
||||
"update_progress": "Update wordt uitgevoerd...",
|
||||
"progress_text": "Het duurt maar een paar minuten. Vernieuw het scherm niet en sluit het venster niet voordat de update is voltooid",
|
||||
@ -911,6 +931,7 @@
|
||||
"download_zip_file": "Download ZIP-bestand",
|
||||
"unzipping_package": "Pakket uitpakken",
|
||||
"copying_files": "Bestanden kopiëren",
|
||||
"deleting_files": "Deleting Unused files",
|
||||
"running_migrations": "Migraties uitvoeren",
|
||||
"finishing_update": "Afwerking Update",
|
||||
"update_failed": "Update mislukt",
|
||||
@ -918,11 +939,11 @@
|
||||
},
|
||||
"backup": {
|
||||
"title": "Backup | Backups",
|
||||
"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",
|
||||
"description": "De back-up is een zipfile met alle bestanden in de mappen die je opgeeft samen met een dump van je database",
|
||||
"new_backup": "Nieuwe back-up",
|
||||
"create_backup": "Backup maken",
|
||||
"select_backup_type": "Backup-type selecteren",
|
||||
"backup_confirm_delete": "U kunt deze back-up niet terughalen",
|
||||
"path": "pad",
|
||||
"new_disk": "Nieuwe schijf",
|
||||
"created_at": "aangemaakt op",
|
||||
@ -935,39 +956,39 @@
|
||||
"used_storage": "gebruikte opslag",
|
||||
"select_disk": "Selecteer Disk",
|
||||
"action": "Actie",
|
||||
"deleted_message": "Backup deleted successfully",
|
||||
"created_message": "Backup created successfully",
|
||||
"deleted_message": "Back-up is succesvol verwijderd",
|
||||
"created_message": "Back-up successvol gemaakt",
|
||||
"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.",
|
||||
"title": "Bestandsschijf | Bestandsschijven",
|
||||
"description": "Standaard gebruikt Crater uw lokale schijf om back-ups, avatars en andere afbeeldingen op te slaan. U kunt indien gewenst meer dan één opslaglocatie configureren zoals DigitalOcean, S3 en Dropbox.",
|
||||
"created_at": "aangemaakt op",
|
||||
"dropbox": "dropbox",
|
||||
"name": "Naam",
|
||||
"driver": "Stuurprogramma",
|
||||
"disk_type": "Type",
|
||||
"disk_name": "Disk Name",
|
||||
"new_disk": "Add New Disk",
|
||||
"filesystem_driver": "Filesystem Driver",
|
||||
"local_driver": "local Driver",
|
||||
"disk_name": "Naam van de schijf",
|
||||
"new_disk": "Nieuwe schijf toevoegen",
|
||||
"filesystem_driver": "Bestandssysteem locatie",
|
||||
"local_driver": "lokaal besturingsprogramma",
|
||||
"local_root": "local Root",
|
||||
"public_driver": "Public Driver",
|
||||
"public_driver": "Publiek besturingsprogramma",
|
||||
"public_root": "Public Root",
|
||||
"public_url": "Public URL",
|
||||
"public_visibility": "Public Visibility",
|
||||
"media_driver": "Media Driver",
|
||||
"public_url": "Publieke URL",
|
||||
"public_visibility": "Publieke zichtbaarheid",
|
||||
"media_driver": "Media stuurprogramma",
|
||||
"media_root": "Media Root",
|
||||
"aws_driver": "AWS Driver",
|
||||
"aws_key": "AWS Key",
|
||||
"aws_driver": "AWS Stuurprogramma",
|
||||
"aws_key": "AWS Sleutel",
|
||||
"aws_secret": "AWS Secret",
|
||||
"aws_region": "AWS Region",
|
||||
"aws_region": "AWS Regio",
|
||||
"aws_bucket": "AWS Bucket",
|
||||
"aws_root": "AWS Root",
|
||||
"do_spaces_type": "Do Spaces type",
|
||||
"do_spaces_key": "Do Spaces key",
|
||||
"do_spaces_key": "Do Spaces Key",
|
||||
"do_spaces_secret": "Do Spaces Secret",
|
||||
"do_spaces_region": "Do Spaces Region",
|
||||
"do_spaces_region": "Do Spaces Regio",
|
||||
"do_spaces_bucket": "Do Spaces Bucket",
|
||||
"do_spaces_endpoint": "Do Spaces Endpoint",
|
||||
"do_spaces_root": "Do Spaces Root",
|
||||
@ -977,24 +998,25 @@
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"default_driver": "Standaard stuurprogramma",
|
||||
"is_default": "IS STANDAARD",
|
||||
"set_default_disk": "Standaardschijf instellen",
|
||||
"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": "Standaardschijf ingesteld",
|
||||
"save_pdf_to_disk": "PDF's opslaan op schijf",
|
||||
"disk_setting_description": " Schakel dit in als je een kopie van elke factuur, raming en betalingsbewijs automatisch op je standaard schijf wilt opslaan. Het inschakelen van deze optie zal de laadtijd verminderen wanneer de PDF's worden bekeken.",
|
||||
"select_disk": "Selecteer Schijf",
|
||||
"disk_settings": "Schijfinstellingen",
|
||||
"confirm_delete": "Uw bestaande bestanden en mappen in de opgegeven schijf worden niet beïnvloed, maar uw schijfconfiguratie wordt uit Crater verwijderd",
|
||||
"action": "Actie",
|
||||
"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"
|
||||
"edit_file_disk": "Bestandsschijf bewerken",
|
||||
"success_create": "Schijf toegevoegd",
|
||||
"success_update": "Schijf bijgewerkt",
|
||||
"error": "Schijf niet toegevoegd",
|
||||
"deleted_message": "Bestandsschijf verwijderd",
|
||||
"disk_variables_save_successfully": "Schijf geconfigureerd",
|
||||
"disk_variables_save_error": "Schijfconfiguratie mislukt.",
|
||||
"invalid_disk_credentials": "Ongeldige inloggegevens voor geselecteerde schijf"
|
||||
}
|
||||
},
|
||||
"wizard": {
|
||||
@ -1033,14 +1055,14 @@
|
||||
"database": {
|
||||
"database": "Site-URL en database",
|
||||
"connection": "Database verbinding",
|
||||
"host": "Database Host",
|
||||
"host": "Database host",
|
||||
"port": "Databasepoort",
|
||||
"password": "Database wachtwoord",
|
||||
"app_url": "App-URL",
|
||||
"app_domain": "App Domain",
|
||||
"app_domain": "App Domein",
|
||||
"username": "Database gebruikersnaam",
|
||||
"db_name": "Database naam",
|
||||
"db_path": "Database Path",
|
||||
"db_path": "Databankpad",
|
||||
"desc": "Maak een database op uw server en stel de referenties in via het onderstaande formulier."
|
||||
},
|
||||
"permissions": {
|
||||
@ -1050,8 +1072,8 @@
|
||||
"permission_desc": "Hieronder vindt u de lijst met mapmachtigingen die vereist zijn om de app te laten werken. Als de machtigingscontrole mislukt, moet u de mapmachtigingen bijwerken."
|
||||
},
|
||||
"mail": {
|
||||
"host": "Mail Host",
|
||||
"port": "Mail Port",
|
||||
"host": "E-mail server",
|
||||
"port": "E-mail Poort",
|
||||
"driver": "Mail-stuurprogramma",
|
||||
"secret": "Geheim",
|
||||
"mailgun_secret": "Mailgun Secret",
|
||||
@ -1094,7 +1116,7 @@
|
||||
"invoices_and_estimates": "facturen en offertes met de mogelijkheid om meerdere sjablonen te kiezen."
|
||||
},
|
||||
"validation": {
|
||||
"invalid_phone": "Invalid Phone Number",
|
||||
"invalid_phone": "Ongeldig Telefoonnummer",
|
||||
"invalid_url": "Ongeldige URL (bijvoorbeeld: http://www.crater.com))",
|
||||
"invalid_domain_url": "Ongeldige URL (bijvoorbeeld: crater.com))",
|
||||
"required": "Veld is verplicht",
|
||||
@ -1129,42 +1151,47 @@
|
||||
"address_maxlength": "Adres mag niet groter zijn dan 255 tekens.",
|
||||
"ref_number_maxlength": "Ref-nummer mag niet groter zijn dan 255 tekens.",
|
||||
"prefix_maxlength": "Het voorvoegsel mag niet meer dan 5 tekens bevatten.",
|
||||
"something_went_wrong": "Er is iets fout gegaan"
|
||||
"something_went_wrong": "Er is iets fout gegaan",
|
||||
"number_length_minvalue": "Number lenght should be greater than 0"
|
||||
},
|
||||
"pdf_estimate_label": "Offerte",
|
||||
"pdf_estimate_number": "Geschat aantal",
|
||||
"pdf_estimate_date": "Geschatte datum",
|
||||
"pdf_estimate_expire_date": "Expiry date",
|
||||
"pdf_estimate_number": "Offerte nummer",
|
||||
"pdf_estimate_date": "Offerte Datum",
|
||||
"pdf_estimate_expire_date": "Vervaldatum",
|
||||
"pdf_invoice_label": "Factuur",
|
||||
"pdf_invoice_number": "Factuurnummer",
|
||||
"pdf_invoice_date": "Factuur datum",
|
||||
"pdf_invoice_due_date": "Due date",
|
||||
"pdf_invoice_due_date": "Opleveringsdatum",
|
||||
"pdf_notes": "Opmerkingen",
|
||||
"pdf_items_label": "Artikelen",
|
||||
"pdf_quantity_label": "Aantal stuks",
|
||||
"pdf_price_label": "Prijs",
|
||||
"pdf_discount_label": "Korting",
|
||||
"pdf_amount_label": "Bedrag",
|
||||
"pdf_subtotal": "Subtotal",
|
||||
"pdf_subtotal": "Subtotaal",
|
||||
"pdf_total": "Totaal",
|
||||
"pdf_payment_receipt_label": "PAYMENT RECEIPT",
|
||||
"pdf_payment_date": "Payment Date",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "Betalingsafschrift",
|
||||
"pdf_payment_date": "Betalingsdatum",
|
||||
"pdf_payment_number": "Betalingsnummer",
|
||||
"pdf_payment_mode": "Betaalmethode",
|
||||
"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_payment_amount_received_label": "Ontvangen bedrag",
|
||||
"pdf_expense_report_label": "UITGAVEN RAPPORT",
|
||||
"pdf_total_expenses_label": "TOTALE UITGAVEN",
|
||||
"pdf_profit_loss_label": "WINST & VERLIES RAPPORT",
|
||||
"pdf_sales_customers_label": "Sales Customer Report",
|
||||
"pdf_sales_items_label": "Sales Item Report",
|
||||
"pdf_tax_summery_label": "Tax Summary Report",
|
||||
"pdf_income_label": "INKOMEN",
|
||||
"pdf_net_profit_label": "NETTO WINST",
|
||||
"pdf_customer_sales_report": "Verkooprapport: per klant",
|
||||
"pdf_total_sales_label": "TOTALE VERKOPEN",
|
||||
"pdf_item_sales_label": "Verkooprapport: Per Item",
|
||||
"pdf_tax_report_label": "BELASTINGEN RAPPORT",
|
||||
"pdf_total_tax_label": "TOTALE BELASTINGEN",
|
||||
"pdf_tax_types_label": "Belastingtypen",
|
||||
"pdf_expenses_label": "Uitgaven",
|
||||
"pdf_bill_to": "Rekening naar,",
|
||||
"pdf_ship_to": "Verzend naar,",
|
||||
"pdf_received_from": "Received from:"
|
||||
"pdf_received_from": "Ontvangen van:"
|
||||
}
|
||||
|
||||
@ -158,6 +158,8 @@
|
||||
"copy_billing_address": "Cópia de faturamento",
|
||||
"no_customers": "Ainda não há clientes!",
|
||||
"no_customers_found": "Clientes não encontrados!",
|
||||
"no_contact": "No contact",
|
||||
"no_contact_name": "No contact name",
|
||||
"list_of_customers": "Esta seção conterá a lista de clientes.",
|
||||
"primary_display_name": "Nome de exibição principal",
|
||||
"select_currency": "Selecione o tipo de moeda",
|
||||
@ -181,6 +183,7 @@
|
||||
"added_on": "Adicionado",
|
||||
"price": "Preço",
|
||||
"date_of_creation": "Data de criação",
|
||||
"not_selected": "No item selected",
|
||||
"action": "Ação",
|
||||
"add_item": "Adicionar item",
|
||||
"save_item": "Salvar item",
|
||||
@ -250,6 +253,7 @@
|
||||
"required": "Campo obrigatório"
|
||||
},
|
||||
"accepted": "Aceito",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Enviado",
|
||||
"draft": "Rascunho",
|
||||
"declined": "Rejeitado",
|
||||
@ -296,6 +300,9 @@
|
||||
"all": "Todas",
|
||||
"paid": "Paga",
|
||||
"unpaid": "Não Paga",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "CLIENTE",
|
||||
"paid_status": "STATUS PAGAMENTO",
|
||||
"ref_no": "REFERÊNCIA",
|
||||
@ -413,6 +420,8 @@
|
||||
"update_payment": "Atualizar Pagamento",
|
||||
"payment": "Pagamento | Pagamentos",
|
||||
"no_payments": "Ainda sem pagamentos!",
|
||||
"not_selected": "Not selected",
|
||||
"no_invoice": "No invoice",
|
||||
"no_matching_payments": "Não há pagamentos correspondentes!",
|
||||
"list_of_payments": "Esta seção conterá a lista de pagamentos.",
|
||||
"select_payment_mode": "Selecione a forma de pagamento",
|
||||
@ -436,6 +445,7 @@
|
||||
"receipt": "Receita",
|
||||
"amount": "Montante",
|
||||
"action": "Ação",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Observação",
|
||||
"category_id": "Categoria",
|
||||
"date": "Data da Despesa",
|
||||
|
||||
@ -10,15 +10,15 @@
|
||||
"reports": "Relatórios",
|
||||
"settings": "Configurações",
|
||||
"logout": "Encerrar sessão",
|
||||
"users": "Users"
|
||||
"users": "Usuários"
|
||||
},
|
||||
"general": {
|
||||
"add_company": "Add Company",
|
||||
"add_company": "Adicionar Empresa",
|
||||
"view_pdf": "Ver PDF",
|
||||
"copy_pdf_url": "Copy PDF Url",
|
||||
"copy_pdf_url": "Copiar URL do PDF",
|
||||
"download_pdf": "Baixar PDF",
|
||||
"save": "Salvar",
|
||||
"create": "Create",
|
||||
"create": "Criar",
|
||||
"cancel": "Cancelar",
|
||||
"update": "Atualizar",
|
||||
"deselect": "Desmarcar",
|
||||
@ -33,10 +33,10 @@
|
||||
"subject": "Sujeita",
|
||||
"body": "Corpo",
|
||||
"message": "Mensagem",
|
||||
"send": "Send",
|
||||
"send": "Enviar",
|
||||
"go_back": "Voltar",
|
||||
"back_to_login": "Voltar ao Login",
|
||||
"home": "Home",
|
||||
"back_to_login": "Voltar ao Login?",
|
||||
"home": "Painel",
|
||||
"filter": "Filtrar",
|
||||
"delete": "Excluir",
|
||||
"edit": "Editar",
|
||||
@ -59,7 +59,7 @@
|
||||
"sent": "Enviado",
|
||||
"all": "Todos",
|
||||
"select_all": "Selecionar tudo",
|
||||
"choose_file": "Escolha um arquivo.",
|
||||
"choose_file": "Clique aqui para escolher um arquivo",
|
||||
"choose_template": "Escolha um modelo",
|
||||
"choose": "Escolher",
|
||||
"remove": "Excluir",
|
||||
@ -84,14 +84,15 @@
|
||||
"street_2": "Rua # 2",
|
||||
"action_failed": "Ação: Falhou",
|
||||
"retry": "Atualização falhou",
|
||||
"choose_note": "Choose Note",
|
||||
"no_note_found": "No Note Found",
|
||||
"insert_note": "Insert Note"
|
||||
"choose_note": "Escolher Nota",
|
||||
"no_note_found": "Nenhuma Nota Encontrada",
|
||||
"insert_note": "Inserir Nota",
|
||||
"copied_pdf_url_clipboard": "Copied PDF url to clipboard!"
|
||||
},
|
||||
"dashboard": {
|
||||
"select_year": "Selecione Ano",
|
||||
"cards": {
|
||||
"due_amount": "Montante devido",
|
||||
"due_amount": "Valor devido",
|
||||
"customers": "Clientes",
|
||||
"invoices": "Faturas",
|
||||
"estimates": "Orçamentos"
|
||||
@ -111,7 +112,7 @@
|
||||
},
|
||||
"recent_invoices_card": {
|
||||
"title": "Faturas vencidas",
|
||||
"due_on": "vencido em",
|
||||
"due_on": "Vencido em",
|
||||
"customer": "Cliente",
|
||||
"amount_due": "Valor Devido",
|
||||
"actions": "Ações",
|
||||
@ -130,21 +131,21 @@
|
||||
"name": "Nome",
|
||||
"description": "Descrição",
|
||||
"percent": "Porcentagem",
|
||||
"compound_tax": "Imposto compuesto"
|
||||
"compound_tax": "Imposto Composto"
|
||||
},
|
||||
"global_search": {
|
||||
"search": "Search...",
|
||||
"search": "Buscar...",
|
||||
"customers": "Clientes",
|
||||
"users": "Users",
|
||||
"no_results_found": "No Results Found"
|
||||
"users": "Usuários",
|
||||
"no_results_found": "Nenhum Resultado Encontrado"
|
||||
},
|
||||
"customers": {
|
||||
"title": "Clientes",
|
||||
"add_customer": "Adicionar cliente",
|
||||
"contacts_list": "Lista de clientes",
|
||||
"name": "Nome",
|
||||
"mail": "Mail | Mails",
|
||||
"statement": "Statement",
|
||||
"mail": "Email | Emails",
|
||||
"statement": "Declaração",
|
||||
"display_name": "Nome de exibição",
|
||||
"primary_contact_name": "Nome do contato principal",
|
||||
"contact_name": "Nome de Contato",
|
||||
@ -153,13 +154,13 @@
|
||||
"address": "Endereço",
|
||||
"phone": "Telefone",
|
||||
"website": "Site",
|
||||
"overview": "Overview",
|
||||
"enable_portal": "Enable Portal",
|
||||
"overview": "Visão Geral",
|
||||
"enable_portal": "Habilitar Portal",
|
||||
"country": "Pais",
|
||||
"state": "Estado",
|
||||
"city": "Cidade",
|
||||
"zip_code": "Código postal",
|
||||
"added_on": "Adicionado",
|
||||
"zip_code": "CEP",
|
||||
"added_on": "Adicionado em",
|
||||
"action": "Ação",
|
||||
"password": "Senha",
|
||||
"street_number": "Número",
|
||||
@ -169,14 +170,16 @@
|
||||
"save_customer": "Salvar cliente",
|
||||
"update_customer": "Atualizar cliente",
|
||||
"customer": "Cliente | Clientes",
|
||||
"new_customer": "Novo cliente",
|
||||
"edit_customer": "Editar cliente",
|
||||
"basic_info": "Informação basica",
|
||||
"new_customer": "Novo Cliente",
|
||||
"edit_customer": "Editar Cliente",
|
||||
"basic_info": "Informação Básica",
|
||||
"billing_address": "Endereço de cobrança",
|
||||
"shipping_address": "Endereço de entrega",
|
||||
"copy_billing_address": "Cópia de faturamento",
|
||||
"copy_billing_address": "Copiar Endereço de Faturamento",
|
||||
"no_customers": "Ainda não há clientes!",
|
||||
"no_customers_found": "Clientes não encontrados!",
|
||||
"no_contact": "No contact",
|
||||
"no_contact_name": "No contact name",
|
||||
"list_of_customers": "Esta seção conterá a lista de clientes.",
|
||||
"primary_display_name": "Nome de exibição principal",
|
||||
"select_currency": "Selecione o tipo de moeda",
|
||||
@ -186,7 +189,7 @@
|
||||
"no_matching_customers": "Não há clientes correspondentes!",
|
||||
"phone_number": "Número de telefone",
|
||||
"create_date": "Criar Data",
|
||||
"confirm_delete": "Você não poderá recuperar este cliente e todas as faturas, estimativas e pagamentos relacionados. | Você não poderá recuperar esses clientes e todas as faturas, estimativas e pagamentos relacionados.",
|
||||
"confirm_delete": "Você não poderá recuperar este cliente e todas as faturas, orçamentos e pagamentos relacionados. | Você não poderá recuperar esses clientes e todas as faturas, estimativas e pagamentos relacionados.",
|
||||
"created_message": "Cliente criado com sucesso",
|
||||
"updated_message": "Cliente atualizado com sucesso",
|
||||
"deleted_message": "Cliente excluído com sucesso | Clientes excluídos com sucesso"
|
||||
@ -200,6 +203,7 @@
|
||||
"added_on": "Adicionado",
|
||||
"price": "Preço",
|
||||
"date_of_creation": "Data de criação",
|
||||
"not_selected": "No item selected",
|
||||
"action": "Ação",
|
||||
"add_item": "Adicionar item",
|
||||
"save_item": "Salvar item",
|
||||
@ -208,11 +212,11 @@
|
||||
"add_new_item": "Adicionar novo item",
|
||||
"new_item": "Novo item",
|
||||
"edit_item": "Editar item",
|
||||
"no_items": "Ainda não existe itens",
|
||||
"no_items": "Ainda não existe itens!",
|
||||
"list_of_items": "Esta seção conterá a lista de itens.",
|
||||
"select_a_unit": "Seleciona unidade",
|
||||
"select_a_unit": "selecionar unidade",
|
||||
"taxes": "Impostos",
|
||||
"item_attached_message": "Não é possível excluir um item que já está em uso.",
|
||||
"item_attached_message": "Não é possível excluir um item que já está em uso",
|
||||
"confirm_delete": "Você não poderá recuperar este item | Você não poderá recuperar esses itens",
|
||||
"created_message": "Item criado com sucesso",
|
||||
"updated_message": "Item atualizado com sucesso",
|
||||
@ -222,9 +226,9 @@
|
||||
"title": "Orçamentos",
|
||||
"estimate": "Orçamento | Orçamentos",
|
||||
"estimates_list": "Lista de orçamentos",
|
||||
"days": "{dias} dias",
|
||||
"months": "{meses} Mês",
|
||||
"years": "{Anos} Ano",
|
||||
"days": "{days} Dias",
|
||||
"months": "{months} Mês",
|
||||
"years": "{years} Ano",
|
||||
"all": "Todos",
|
||||
"paid": "Pago",
|
||||
"unpaid": "Não pago",
|
||||
@ -245,7 +249,7 @@
|
||||
"expiry_date": "Data de expiração",
|
||||
"status": "Status",
|
||||
"add_tax": "Adicionar Imposto",
|
||||
"amount": "Montante",
|
||||
"amount": "Valor",
|
||||
"action": "Ação",
|
||||
"notes": "Observações",
|
||||
"tax": "Imposto",
|
||||
@ -253,12 +257,12 @@
|
||||
"convert_to_invoice": "Converter em fatura",
|
||||
"mark_as_sent": "Marcar como enviado",
|
||||
"send_estimate": "Enviar orçamento",
|
||||
"resend_estimate": "Resend Estimate",
|
||||
"resend_estimate": "Reenviar Orçamento",
|
||||
"record_payment": "Registro de pago",
|
||||
"add_estimate": "Adicionar orçamento",
|
||||
"save_estimate": "Salvar Orçamento",
|
||||
"confirm_conversion": "Deseja converter este orçamento em uma fatura?",
|
||||
"conversion_message": "Converção realizada com sucesso",
|
||||
"confirm_conversion": "Esse orçamento será usado para criar uma nova Fatura.",
|
||||
"conversion_message": "Fatura criada com sucesso",
|
||||
"confirm_send_estimate": "Este orçamento será enviado por email ao cliente",
|
||||
"confirm_mark_as_sent": "Este orçamento será marcado como enviado",
|
||||
"confirm_mark_as_accepted": "Este orçamento será marcado como Aceito",
|
||||
@ -270,6 +274,7 @@
|
||||
"required": "Campo obrigatório"
|
||||
},
|
||||
"accepted": "Aceito",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Enviado",
|
||||
"draft": "Rascunho",
|
||||
"declined": "Rejeitado",
|
||||
@ -277,10 +282,10 @@
|
||||
"add_new_estimate": "Adicionar novo orçamento",
|
||||
"update_Estimate": "Atualizar orçamento",
|
||||
"edit_estimate": "Editar orçamento",
|
||||
"items": "artículos",
|
||||
"items": "itens",
|
||||
"Estimate": "Orçamento | Orçamentos",
|
||||
"add_new_tax": "Adicionar novo imposto",
|
||||
"no_estimates": "Ainda não há orcamentos",
|
||||
"no_estimates": "Ainda não há orçamentos ainda!",
|
||||
"list_of_estimates": "Esta seção contém a lista de orçamentos.",
|
||||
"mark_as_rejected": "Marcar como rejeitado",
|
||||
"mark_as_accepted": "Marcar como aceito",
|
||||
@ -291,7 +296,7 @@
|
||||
"updated_message": "Orçamento atualizado com sucesso",
|
||||
"deleted_message": "Orçamento excluído com sucesso | Orçamentos excluídos com sucesso",
|
||||
"user_email_does_not_exist": "Email de usuário não existe",
|
||||
"something_went_wrong": "Algo deu errado",
|
||||
"something_went_wrong": "algo deu errado",
|
||||
"item": {
|
||||
"title": "Titulo do item",
|
||||
"description": "Descrição",
|
||||
@ -302,26 +307,29 @@
|
||||
"total_discount": "Desconto total",
|
||||
"sub_total": "Subtotal",
|
||||
"tax": "Imposto",
|
||||
"amount": "Montante",
|
||||
"amount": "Valor",
|
||||
"select_an_item": "Escreva ou clique para selecionar um item",
|
||||
"type_item_description": "Tipo Item Descrição (opcional)"
|
||||
"type_item_description": "Descrição do Item (opcional)"
|
||||
}
|
||||
},
|
||||
"invoices": {
|
||||
"title": "Faturas",
|
||||
"invoices_list": "Lista de faturas",
|
||||
"days": "{dias} dias",
|
||||
"months": "{meses} Mês",
|
||||
"years": "{anos} Ano",
|
||||
"days": "{days} dias",
|
||||
"months": "{months} Mês",
|
||||
"years": "{years} Ano",
|
||||
"all": "Todas",
|
||||
"paid": "Paga",
|
||||
"unpaid": "Não Paga",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "CLIENTE",
|
||||
"paid_status": "STATUS PAGAMENTO",
|
||||
"ref_no": "REFERÊNCIA",
|
||||
"ref_no": "REF NO.",
|
||||
"number": "NÚMERO",
|
||||
"amount_due": "VALOR DEVIDO",
|
||||
"partially_paid": "Parcialmente pago",
|
||||
"partially_paid": "Parcialmente Pago",
|
||||
"total": "Total",
|
||||
"discount": "Desconto",
|
||||
"sub_total": "Subtotal",
|
||||
@ -329,17 +337,17 @@
|
||||
"invoice_number": "Número da fatura",
|
||||
"ref_number": "Referência",
|
||||
"contact": "Contato",
|
||||
"add_item": "Adicionar um item",
|
||||
"add_item": "Adicionar um Item",
|
||||
"date": "Data",
|
||||
"due_date": "Data de Vencimento",
|
||||
"status": "Status",
|
||||
"add_tax": "Adicionar imposto",
|
||||
"amount": "Montante",
|
||||
"amount": "Valor",
|
||||
"action": "Ação",
|
||||
"notes": "Observações",
|
||||
"view": "Ver",
|
||||
"send_invoice": "Enviar Fatura",
|
||||
"resend_invoice": "Resend Invoice",
|
||||
"resend_invoice": "Reenviar Fatura",
|
||||
"invoice_template": "Modelo da Fatura",
|
||||
"template": "Modelo",
|
||||
"mark_as_sent": "Marcar como enviada",
|
||||
@ -372,20 +380,20 @@
|
||||
"discount": "Desconto",
|
||||
"total": "Total",
|
||||
"total_discount": "Desconto Total",
|
||||
"sub_total": "SubTotal",
|
||||
"sub_total": "Subtotal",
|
||||
"tax": "Imposto",
|
||||
"amount": "Montante",
|
||||
"amount": "Valor",
|
||||
"select_an_item": "Digite ou clique para selecionar um item",
|
||||
"type_item_description": "Tipo Descrição do item (opcional)"
|
||||
"type_item_description": "Descrição do item (opcional)"
|
||||
},
|
||||
"payment_attached_message": "Uma das faturas selecionadas já possui um pagamento anexado. Certifique-se de excluir os pagamentos anexados primeiro, a fim de prosseguir com a remoção",
|
||||
"payment_attached_message": "Uma das faturas selecionadas já possui um pagamento anexado. Certifique-se de excluir os pagamentos anexados primeiro, para continuar com a exclusão",
|
||||
"confirm_delete": "Você não poderá recuperar esta fatura | Você não poderá recuperar essas faturas",
|
||||
"created_message": "Fatura criada com sucesso",
|
||||
"updated_message": "Fatura atualizada com sucesso",
|
||||
"deleted_message": "Fatura excluída com sucesso | Faturas excluídas com sucesso",
|
||||
"marked_as_sent_message": "Fatura marcada como enviada com sucesso",
|
||||
"user_email_does_not_exist": "O email do usuário não existe",
|
||||
"something_went_wrong": "Algo deu errado",
|
||||
"something_went_wrong": "algo deu errado",
|
||||
"invalid_due_amount_message": "O valor total da fatura não pode ser menor que o valor total pago para esta fatura. Atualize a fatura ou exclua os pagamentos associados para continuar."
|
||||
},
|
||||
"credit_notes": {
|
||||
@ -394,7 +402,7 @@
|
||||
"credit_notes": "Notas de credito",
|
||||
"contact": "Contato",
|
||||
"date": "Data",
|
||||
"amount": "Montante",
|
||||
"amount": "Valor",
|
||||
"action": "Ação",
|
||||
"credit_number": "Número de crédito",
|
||||
"notes": "Observações",
|
||||
@ -407,7 +415,7 @@
|
||||
"discount": "Desconto",
|
||||
"total": "Total",
|
||||
"total_discount": "Desconto Total",
|
||||
"sub_total": "SubTotal",
|
||||
"sub_total": "Subtotal",
|
||||
"tax": "Imposto"
|
||||
}
|
||||
},
|
||||
@ -417,9 +425,9 @@
|
||||
"record_payment": "Gravar Pagamento",
|
||||
"customer": "Cliente",
|
||||
"date": "Data",
|
||||
"amount": "Montante",
|
||||
"amount": "Valor",
|
||||
"action": "Ação",
|
||||
"payment_number": "Número do Pagamento",
|
||||
"payment_number": "Número de Pagamento",
|
||||
"payment_mode": "Forma de Pagamento",
|
||||
"invoice": "Fatura",
|
||||
"note": "Observação",
|
||||
@ -429,19 +437,21 @@
|
||||
"view_payment": "Ver Pagamento",
|
||||
"add_new_payment": "Adicionar novo Pagamento",
|
||||
"send_payment_receipt": "Enviar recibo de pagamento",
|
||||
"send_payment": "Mande o pagamento",
|
||||
"send_payment": "Enviar Pagamento",
|
||||
"save_payment": "Salvar Pagamento",
|
||||
"update_payment": "Atualizar Pagamento",
|
||||
"payment": "Pagamento | Pagamentos",
|
||||
"no_payments": "Ainda sem pagamentos!",
|
||||
"no_payments": "Não há pagamentos ainda!",
|
||||
"not_selected": "Not selected",
|
||||
"no_invoice": "No invoice",
|
||||
"no_matching_payments": "Não há pagamentos correspondentes!",
|
||||
"list_of_payments": "Esta seção conterá a lista de pagamentos.",
|
||||
"select_payment_mode": "Selecione a forma de pagamento",
|
||||
"confirm_mark_as_sent": "Este orçamento será marcado como enviado",
|
||||
"confirm_send_payment": "This payment will be sent via email to the customer",
|
||||
"send_payment_successfully": "Payment sent successfully",
|
||||
"confirm_send_payment": "Este pagamento será enviado por e-mail para o cliente",
|
||||
"send_payment_successfully": "Pagamento enviado com sucesso",
|
||||
"user_email_does_not_exist": "O email do usuário não existe",
|
||||
"something_went_wrong": "Algo deu errado",
|
||||
"something_went_wrong": "algo deu errado",
|
||||
"confirm_delete": "Você não poderá recuperar este Pagamento | Você não poderá recuperar esses Pagamentos",
|
||||
"created_message": "Pagamento criado com sucesso",
|
||||
"updated_message": "Pagamento atualizado com sucesso",
|
||||
@ -460,9 +470,10 @@
|
||||
"to_date": "Até a Data",
|
||||
"expense_date": "Data",
|
||||
"description": "Descrição",
|
||||
"receipt": "Receita",
|
||||
"amount": "Montante",
|
||||
"receipt": "Recibo",
|
||||
"amount": "Valor",
|
||||
"action": "Ação",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Observação",
|
||||
"category_id": "Categoria",
|
||||
"date": "Data da Despesa",
|
||||
@ -485,7 +496,7 @@
|
||||
"title": "Título",
|
||||
"name": "Nome",
|
||||
"description": "Descrição",
|
||||
"amount": "Montante",
|
||||
"amount": "Valor",
|
||||
"actions": "Ações",
|
||||
"add_category": "Adicionar Categoria",
|
||||
"new_category": "Nova Categoria",
|
||||
@ -499,8 +510,8 @@
|
||||
"forgot_password": "Esqueceu a senha?",
|
||||
"or_signIn_with": "ou Entre com",
|
||||
"login": "Entrar",
|
||||
"register": "Registre-se",
|
||||
"reset_password": "Resetar Senha",
|
||||
"register": "Cadastre-se",
|
||||
"reset_password": "Redefinir Senha",
|
||||
"password_reset_successfully": "Senha redefinida com sucesso",
|
||||
"enter_email": "Digite email",
|
||||
"enter_password": "Digite a senha",
|
||||
@ -508,30 +519,30 @@
|
||||
"login_placeholder": "mail@exemplo.com"
|
||||
},
|
||||
"users": {
|
||||
"title": "Users",
|
||||
"users_list": "Users List",
|
||||
"title": "Usuários",
|
||||
"users_list": "Lista de Usuários",
|
||||
"name": "Nome",
|
||||
"description": "Descrição",
|
||||
"added_on": "Adicionado",
|
||||
"date_of_creation": "Data de criação",
|
||||
"action": "Ação",
|
||||
"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": "Adicionar Usuário",
|
||||
"save_user": "Salvar Usuário",
|
||||
"update_user": "Atualizar Usuário",
|
||||
"user": "Usuário | Usuários",
|
||||
"add_new_user": "Adicionar Novo Usuário",
|
||||
"new_user": "Novo Usuário",
|
||||
"edit_user": "Editar Usuário",
|
||||
"no_users": "Nenhum usuário ainda!",
|
||||
"list_of_users": "Esta seção conterá a lista de usuários.",
|
||||
"email": "Email",
|
||||
"phone": "Telefone",
|
||||
"password": "Senha",
|
||||
"user_attached_message": "Não é possível excluir um item que já está em uso.",
|
||||
"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"
|
||||
"user_attached_message": "Não é possível excluir um item que já está em uso",
|
||||
"confirm_delete": "Você não poderá recuperar este Usuário | Você não poderá recuperar esses Usuários",
|
||||
"created_message": "Usuário criado com sucesso",
|
||||
"updated_message": "Usuário atualizado com sucesso",
|
||||
"deleted_message": "Usuário excluído com sucesso | Usuários excluídos com sucesso"
|
||||
},
|
||||
"reports": {
|
||||
"title": "Relatório",
|
||||
@ -545,7 +556,7 @@
|
||||
"update_report": "Atualizar Relatório",
|
||||
"report": "Relatório | Relatórios",
|
||||
"profit_loss": {
|
||||
"profit_loss": "Perda de lucro",
|
||||
"profit_loss": "Lucro & Perda",
|
||||
"to_date": "Até a Data",
|
||||
"from_date": "A partir da Data",
|
||||
"date_range": "Selecionar período"
|
||||
@ -570,7 +581,7 @@
|
||||
"invoice": "Fatura",
|
||||
"invoice_date": "Data da Fatura",
|
||||
"due_date": "Data de Vencimento",
|
||||
"amount": "Montante",
|
||||
"amount": "Valor",
|
||||
"contact_name": "Nome de Contato",
|
||||
"status": "Status"
|
||||
},
|
||||
@ -580,7 +591,7 @@
|
||||
"due_date": "Data de Vencimento",
|
||||
"estimate_number": "Número do Orçamento",
|
||||
"ref_number": "Referência",
|
||||
"amount": "Montante",
|
||||
"amount": "Valor",
|
||||
"contact_name": "Nome de Contato",
|
||||
"status": "Status"
|
||||
},
|
||||
@ -588,7 +599,7 @@
|
||||
"expenses": "Despesas",
|
||||
"category": "Categoria",
|
||||
"date": "Data",
|
||||
"amount": "Montante",
|
||||
"amount": "Valor",
|
||||
"to_date": "Até a Data",
|
||||
"from_date": "A partir da Data",
|
||||
"date_range": "Selecionar período"
|
||||
@ -605,16 +616,16 @@
|
||||
"expense_category": "Categorias de Despesas",
|
||||
"update_app": "Atualizar Aplicativo",
|
||||
"backup": "Backup",
|
||||
"file_disk": "File Disk",
|
||||
"file_disk": "Disco de Arquivos",
|
||||
"custom_fields": "Os campos personalizados",
|
||||
"payment_modes": "Payment Modes",
|
||||
"payment_modes": "Meios de Pagamento",
|
||||
"notes": "Observações"
|
||||
},
|
||||
"title": "Configurações",
|
||||
"setting": "Configuração | Configurações",
|
||||
"general": "Geral",
|
||||
"language": "Idioma",
|
||||
"primary_currency": "Moéda Principal",
|
||||
"primary_currency": "Moeda Principal",
|
||||
"timezone": "Fuso horário",
|
||||
"date_format": "Formato de data",
|
||||
"currencies": {
|
||||
@ -640,16 +651,16 @@
|
||||
"port": "Porta de Email",
|
||||
"driver": "Driver do email",
|
||||
"secret": "Segredo",
|
||||
"mailgun_secret": "Mailgun Segredo",
|
||||
"mailgun_secret": "Segredo Mailgun",
|
||||
"mailgun_domain": "Domínio",
|
||||
"mailgun_endpoint": "Endpoint do Mailgun",
|
||||
"ses_secret": "SES Segredo",
|
||||
"ses_key": "SES Chave",
|
||||
"ses_secret": "Segredo SES",
|
||||
"ses_key": "Chave SES",
|
||||
"password": "Senha do Email",
|
||||
"username": "Nome de Usuário do Email",
|
||||
"mail_config": "Configuração de Email",
|
||||
"from_name": "Do Nome de Email",
|
||||
"from_mail": "Do Endereço de Email",
|
||||
"from_name": "Nome do Remetente",
|
||||
"from_mail": "Endereço Email do Remetente",
|
||||
"encryption": "Criptografia de Email",
|
||||
"mail_config_desc": "Abaixo está o formulário para configurar o driver de email para enviar emails do aplicativo. Você também pode configurar provedores de terceiros como Sendgrid, SES etc."
|
||||
},
|
||||
@ -674,7 +685,7 @@
|
||||
},
|
||||
"custom_fields": {
|
||||
"title": "Os campos personalizados",
|
||||
"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": "Personalize as suas faturas, Orçamentos & Recibos de Pagamento com seus próprios campos. Certifique-se de usar os campos abaixo adicionados nos formatos de endereço na página de Configurações de Personalização.",
|
||||
"add_custom_field": "Adicionar campo personalizado",
|
||||
"edit_custom_field": "Editar campo personalizado",
|
||||
"field_name": "Nome do campo",
|
||||
@ -682,7 +693,7 @@
|
||||
"type": "Tipo",
|
||||
"name": "Nome",
|
||||
"required": "Requeridas",
|
||||
"placeholder": "Placeholder",
|
||||
"placeholder": "Dica de Preenchimento",
|
||||
"help_text": "Texto de ajuda",
|
||||
"default_value": "Valor padrão",
|
||||
"prefix": "Prefixo",
|
||||
@ -690,7 +701,7 @@
|
||||
"model": "Modelo",
|
||||
"help_text_description": "Digite algum texto para ajudar os usuários a entender a finalidade desse campo personalizado.",
|
||||
"suffix": "Sufixo",
|
||||
"yes": "sim",
|
||||
"yes": "Sim",
|
||||
"no": "Não",
|
||||
"order": "Ordem",
|
||||
"custom_field_confirm_delete": "Você não poderá recuperar este campo personalizado",
|
||||
@ -701,7 +712,7 @@
|
||||
"add_another_option": "Adicione outra opção",
|
||||
"sort_in_alphabetical_order": "Classificar em ordem alfabética",
|
||||
"add_options_in_bulk": "Adicionar opções em massa",
|
||||
"use_predefined_options": "Use Predefined Options",
|
||||
"use_predefined_options": "Usar Opções Predefinidas",
|
||||
"select_custom_date": "Selecionar data personalizada",
|
||||
"select_relative_date": "Selecionar data relativa",
|
||||
"ticked_by_default": "Marcado por padrão",
|
||||
@ -709,11 +720,11 @@
|
||||
"added_message": "Campo personalizado adicionado com sucesso"
|
||||
},
|
||||
"customization": {
|
||||
"customization": "Personalizar",
|
||||
"customization": "personalização",
|
||||
"save": "Salvar",
|
||||
"addresses": {
|
||||
"title": "Endereço",
|
||||
"section_description": "Você pode definir o endereço de cobrança do cliente e o formato do endereço de entrega do cliente (exibido apenas em PDF).",
|
||||
"section_description": "Você pode definir o endereço de cobrança do cliente e o formato do endereço de entrega do cliente (exibido apenas em PDF). ",
|
||||
"customer_billing_address": "Endereço de Cobrança do Cliente",
|
||||
"customer_shipping_address": "Endereço de Entrega do Cliente",
|
||||
"company_address": "Endereço da Empresa",
|
||||
@ -740,41 +751,50 @@
|
||||
"title": "Faturas",
|
||||
"notes": "Notas",
|
||||
"invoice_prefix": "Fatura Prefixo",
|
||||
"default_invoice_email_body": "Default Invoice Email Body",
|
||||
"invoice_settings": "Configrações da Fatura",
|
||||
"invoice_number_length": "Invoice number length",
|
||||
"default_invoice_email_body": "Corpo Padrão de Email de Fatura",
|
||||
"invoice_settings": "Configurações de Fatura",
|
||||
"autogenerate_invoice_number": "Gerar automaticamente o número da Fatura",
|
||||
"invoice_setting_description": "Desative isso, se você não deseja gerar automaticamente números da Fatura sempre que criar uma nova.",
|
||||
"invoice_email_attachment": "Send invoices as attachments",
|
||||
"invoice_email_attachment_setting_description": "Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_invoice_prefix": "Digite o prefixo da Fatura",
|
||||
"terms_and_conditions": "Termos e Condições",
|
||||
"company_address_format": "Company Address Format",
|
||||
"shipping_address_format": "Shipping Address Format",
|
||||
"billing_address_format": "Billing Address Format",
|
||||
"company_address_format": "Formato de Endereço de Empresa",
|
||||
"shipping_address_format": "Formato de Endereço de Envio",
|
||||
"billing_address_format": "Formato de Endereço de Faturamento",
|
||||
"invoice_setting_updated": "Configuração da Fatura atualizada com sucesso"
|
||||
},
|
||||
"estimates": {
|
||||
"title": "Orçamentos",
|
||||
"estimate_prefix": "Orçamento Prefixo",
|
||||
"default_estimate_email_body": "Default Estimate Email Body",
|
||||
"estimate_number_length": "Estimate number length",
|
||||
"default_estimate_email_body": "Corpo Padrão de Email de Orçamento",
|
||||
"estimate_settings": "Configurações do Orçamento",
|
||||
"autogenerate_estimate_number": "Gerar automaticamente o número do Orçamento",
|
||||
"estimate_setting_description": "Desative isso, se você não deseja gerar automaticamente números do Orçamento sempre que criar um novo.",
|
||||
"estimate_email_attachment": "Send estimates as attachments",
|
||||
"estimate_email_attachment_setting_description": "Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_estimate_prefix": "Digite o prefixo do Orçamento",
|
||||
"estimate_setting_updated": "Configuração do Orçamento atualizada com sucesso",
|
||||
"company_address_format": "Company Address Format",
|
||||
"billing_address_format": "Billing Address Format",
|
||||
"shipping_address_format": "Shipping Address Format"
|
||||
"estimate_setting_updated": "Configuração de Orçamento atualizada com sucesso",
|
||||
"company_address_format": "Formato de Endereço de Empresa",
|
||||
"billing_address_format": "Formato de Endereço de Faturamento",
|
||||
"shipping_address_format": "Formato de Endereço de Envio"
|
||||
},
|
||||
"payments": {
|
||||
"title": "Pagamentos",
|
||||
"description": "Modes of transaction for payments",
|
||||
"description": "Modos de transação para pagamentos",
|
||||
"payment_prefix": "Pagamento Prefixo",
|
||||
"default_payment_email_body": "Default Payment Email Body",
|
||||
"payment_number_length": "Payment number lenght",
|
||||
"default_payment_email_body": "Corpo Padrão de Email de Pagamento",
|
||||
"payment_settings": "Configurações de Pagamento",
|
||||
"autogenerate_payment_number": "Gerar automaticamente número do Pagamento",
|
||||
"payment_setting_description": "Desative isso, se você não deseja gerar automaticamente números do Pagamento sempre que criar um novo.",
|
||||
"payment_email_attachment": "Send payments as attachments",
|
||||
"payment_email_attachment_setting_description": "Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_payment_prefix": "Digite o Prefixo do Pagamento",
|
||||
"payment_setting_updated": "Configurações de Pagamento atualizada com sucesso",
|
||||
"payment_modes": "Payment Modes",
|
||||
"payment_modes": "Meios de Pagamento",
|
||||
"add_payment_mode": "Adicionar modo de pagamento",
|
||||
"edit_payment_mode": "Editar modo de pagamento",
|
||||
"mode_name": "Nome do modo",
|
||||
@ -783,35 +803,35 @@
|
||||
"payment_mode_confirm_delete": "Você não poderá recuperar este modo de pagamento",
|
||||
"already_in_use": "O modo de pagamento já está em uso",
|
||||
"deleted_message": "Modo de pagamento excluído com sucesso",
|
||||
"company_address_format": "Company Address Format",
|
||||
"from_customer_address_format": "From Customer Address Format"
|
||||
"company_address_format": "Formato de Endereço de Empresa",
|
||||
"from_customer_address_format": "Formato de Endereço de Cliente Remetente"
|
||||
},
|
||||
"items": {
|
||||
"title": "Itens",
|
||||
"units": "unidades",
|
||||
"units": "Unidades",
|
||||
"add_item_unit": "Adicionar unidade de item",
|
||||
"edit_item_unit": "Editar unidade de item",
|
||||
"unit_name": "Nome da unidade",
|
||||
"item_unit_added": "Item Unit Added",
|
||||
"item_unit_updated": "Item Unit Updated",
|
||||
"item_unit_added": "Unidade de Item Adicionada",
|
||||
"item_unit_updated": "Unidade de Item Atualizada",
|
||||
"item_unit_confirm_delete": "Você não poderá recuperar esta unidade de item",
|
||||
"already_in_use": "A unidade do item já está em uso",
|
||||
"deleted_message": "Unidade de item excluída com sucesso"
|
||||
},
|
||||
"notes": {
|
||||
"title": "Observações",
|
||||
"description": "Save time by creating notes and reusing them on your invoices, estimates & payments.",
|
||||
"notes": "Observações",
|
||||
"description": "Economize tempo criando notas e reutilizando-as nas suas faturas, orçamentos e pagamentos.",
|
||||
"notes": "Notas",
|
||||
"type": "Tipo",
|
||||
"add_note": "Add Note",
|
||||
"add_new_note": "Add New Note",
|
||||
"add_note": "Adicionar Nota",
|
||||
"add_new_note": "Adicionar Nova Nota",
|
||||
"name": "Nome",
|
||||
"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": "Editar Nota",
|
||||
"note_added": "Nota adicionada com sucesso",
|
||||
"note_updated": "Nota atualizada com sucesso",
|
||||
"note_confirm_delete": "Você não poderá recuperar essa nota",
|
||||
"already_in_use": "A nota já está em uso",
|
||||
"deleted_message": "Nota excluída com sucesso"
|
||||
}
|
||||
},
|
||||
"account_settings": {
|
||||
@ -855,7 +875,7 @@
|
||||
"compound_tax": "Imposto Composto",
|
||||
"percent": "Porcentagem",
|
||||
"action": "Ação",
|
||||
"tax_setting_description": "Habilite isso se desejar adicionar Impostos a itens da Fatura Idividualmente. Por padrão, os impostos são adicionados diretamente à Fatura.",
|
||||
"tax_setting_description": "Habilite isso se desejar adicionar Impostos a itens da Fatura Individualmente. Por padrão, os impostos são adicionados diretamente à Fatura.",
|
||||
"created_message": "Tipo de Imposto criado com sucesso",
|
||||
"updated_message": "Tipo de Imposto Atualizado com sucesso",
|
||||
"deleted_message": "Tipo de Imposto Deletado com sucesso",
|
||||
@ -879,7 +899,7 @@
|
||||
},
|
||||
"preferences": {
|
||||
"currency": "Moeda",
|
||||
"default_language": "Default Language",
|
||||
"default_language": "Idioma padrão",
|
||||
"time_zone": "Fuso Horário",
|
||||
"fiscal_year": "Ano Financeiro",
|
||||
"date_format": "Formato da Data",
|
||||
@ -892,16 +912,16 @@
|
||||
"updated_message": "Preferências atualizadas com sucesso",
|
||||
"select_language": "Selecione um Idioma",
|
||||
"select_time_zone": "Selecione um fuso horário",
|
||||
"select_date_format": "Select Date Format",
|
||||
"select_date_format": "Selecionar um Formato de Data",
|
||||
"select_financial_year": "Selecione o ano financeiro"
|
||||
},
|
||||
"update_app": {
|
||||
"title": "Atualizar Aplicativo",
|
||||
"description": "Você pode atualizar facilmente o Crater, verifique se hà novas atualizações, clicando no botão abaixo",
|
||||
"description": "Você pode atualizar facilmente o Crater, verifique se há novas atualizações, clicando no botão abaixo",
|
||||
"check_update": "Verifique se há atualizações",
|
||||
"avail_update": "Nova atualização disponível",
|
||||
"next_version": "Próxima versão",
|
||||
"requirements": "Requirements",
|
||||
"requirements": "Requisitos",
|
||||
"update": "Atualizar agora",
|
||||
"update_progress": "Atualização em progresso...",
|
||||
"progress_text": "Levará apenas alguns minutos. Não atualize a tela ou feche a janela antes que a atualização seja concluída",
|
||||
@ -911,90 +931,92 @@
|
||||
"download_zip_file": "Baixar arquivo ZIP",
|
||||
"unzipping_package": "Descompactando o pacote",
|
||||
"copying_files": "Copiando arquivos",
|
||||
"deleting_files": "Deleting Unused files",
|
||||
"running_migrations": "Executando migrações",
|
||||
"finishing_update": "Atualização de acabamento",
|
||||
"finishing_update": "Acabando a Atualização",
|
||||
"update_failed": "Atualização falhou",
|
||||
"update_failed_text": "Desculpa! Sua atualização falhou em: {step} step"
|
||||
"update_failed_text": "Desculpa! Sua atualização falhou no passo: {step}"
|
||||
},
|
||||
"backup": {
|
||||
"title": "Backup | Backups",
|
||||
"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": "Caminho",
|
||||
"description": "O backup é um arquivo zip que contém todos os arquivos nas pastas que você especificou juntamente com um arquivo de backup de sua base de dados",
|
||||
"new_backup": "Adicionar Novo Backup",
|
||||
"create_backup": "Criar Backup",
|
||||
"select_backup_type": "Selecionar Tipo de Backup",
|
||||
"backup_confirm_delete": "Você não poderá recuperar este backup",
|
||||
"path": "caminho",
|
||||
"new_disk": "Novo disco",
|
||||
"created_at": "Criado em",
|
||||
"size": "Tamanho",
|
||||
"dropbox": "DropBox",
|
||||
"created_at": "criado em",
|
||||
"size": "tamanho",
|
||||
"dropbox": "dropbox",
|
||||
"local": "local",
|
||||
"healthy": "healthy",
|
||||
"amount_of_backups": "Quantidade de backups",
|
||||
"newest_backups": "Backups mais recentes",
|
||||
"used_storage": "used storage",
|
||||
"select_disk": "Select Disk",
|
||||
"healthy": "sem erros",
|
||||
"amount_of_backups": "quantidade de backups",
|
||||
"newest_backups": "backups mais recentes",
|
||||
"used_storage": "armazenamento utilizado",
|
||||
"select_disk": "Selecionar Disco",
|
||||
"action": "Ação",
|
||||
"deleted_message": "Backup deleted successfully",
|
||||
"created_message": "Backup created successfully",
|
||||
"invalid_disk_credentials": "Invalid credential of selected disk"
|
||||
"deleted_message": "Backup excluído com sucesso",
|
||||
"created_message": "Backup criado com sucesso",
|
||||
"invalid_disk_credentials": "Credencial inválida para o disco selecionado"
|
||||
},
|
||||
"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": "Criado em",
|
||||
"dropbox": "DropBox",
|
||||
"title": "Disco de Arquivo | Discos de Arquivo",
|
||||
"description": "Por padrão, o Crater usará o seu disco local para salvar os backups, avatar e outros arquivos de imagem. Você pode configurar mais de um drivers de disco como DigitalOcean, S3 e Dropbox de acordo com sua preferência.",
|
||||
"created_at": "criado em",
|
||||
"dropbox": "dropbox",
|
||||
"name": "Nome",
|
||||
"driver": "Driver",
|
||||
"disk_type": "Tipo",
|
||||
"disk_name": "Nome do disco",
|
||||
"new_disk": "Adicionar novo disco",
|
||||
"filesystem_driver": "Filesystem Driver",
|
||||
"local_driver": "local Driver",
|
||||
"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",
|
||||
"filesystem_driver": "Driver de Sistema de Arquivo",
|
||||
"local_driver": "Driver local",
|
||||
"local_root": "Root local",
|
||||
"public_driver": "Driver Público",
|
||||
"public_root": "Root Público",
|
||||
"public_url": "URL Pública",
|
||||
"public_visibility": "Visibilidade Pública",
|
||||
"media_driver": "Driver de Mídia",
|
||||
"media_root": "Root de Mídia",
|
||||
"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",
|
||||
"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": "Default Driver",
|
||||
"is_default": "IS DEFAULT",
|
||||
"set_default_disk": "Set Default 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",
|
||||
"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",
|
||||
"aws_bucket": "Bucket AWS",
|
||||
"aws_root": "Root AWS",
|
||||
"do_spaces_type": "Tipo de Spaces Do",
|
||||
"do_spaces_key": "Chave de Spaces Do",
|
||||
"do_spaces_secret": "Segredo de Spaces Do",
|
||||
"do_spaces_region": "Região de Spaces Do",
|
||||
"do_spaces_bucket": "Bucket de Spaces Do",
|
||||
"do_spaces_endpoint": "Endpoint de Spaces Do",
|
||||
"do_spaces_root": "Root de Spaces Do",
|
||||
"dropbox_type": "Tipo de Dropbox",
|
||||
"dropbox_token": "Token Dropbox",
|
||||
"dropbox_key": "Chave Dropbox",
|
||||
"dropbox_secret": "Segredo Dropbox",
|
||||
"dropbox_app": "Aplicativo Dropbox",
|
||||
"dropbox_root": "Root Dropbox",
|
||||
"default_driver": "Driver Padrão",
|
||||
"is_default": "ESTÁ PADRÃO",
|
||||
"set_default_disk": "Definir Disco Padrão",
|
||||
"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": "Disco definido como padrão com sucesso",
|
||||
"save_pdf_to_disk": "Salvar PDFs no Disco",
|
||||
"disk_setting_description": " Ative isso, se você deseja salvar uma cópia de cada fatura, Orçamento e Pagamento PDF em seu disco padrão automaticamente. Virar esta opção irá diminuir o tempo de carregamento ao visualizar os PDFs.",
|
||||
"select_disk": "Selecionar Disco",
|
||||
"disk_settings": "Configurações de Disco",
|
||||
"confirm_delete": "Seus arquivos e pastas existentes no disco especificado não serão afetados, mas sua configuração de disco será excluída do Crater",
|
||||
"action": "Ação",
|
||||
"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"
|
||||
"edit_file_disk": "Editar Disco de Arquivos",
|
||||
"success_create": "Disco adicionado com sucesso",
|
||||
"success_update": "Disco atualizado com sucesso",
|
||||
"error": "Falha na adição de disco",
|
||||
"deleted_message": "Disco de arquivo excluído com sucesso",
|
||||
"disk_variables_save_successfully": "Disco configurado com sucesso",
|
||||
"disk_variables_save_error": "Configuração do disco falhou.",
|
||||
"invalid_disk_credentials": "Credencial inválida para o disco selecionado"
|
||||
}
|
||||
},
|
||||
"wizard": {
|
||||
@ -1009,10 +1031,10 @@
|
||||
"company_info_desc": "Esta informação será exibida nas Faturas. Observe que você pode editar isso mais tarde na página de configurações.",
|
||||
"company_name": "Nome da Empresa",
|
||||
"company_logo": "Logotipo da Empresa",
|
||||
"logo_preview": "Previsualizar Logotipo",
|
||||
"logo_preview": "Pré-visualizar Logotipo",
|
||||
"preferences": "Preferências",
|
||||
"preferences_desc": "Preferências padrão para o sistema.",
|
||||
"country": "Pais",
|
||||
"country": "País",
|
||||
"state": "Estado",
|
||||
"city": "Cidade",
|
||||
"address": "Endereço",
|
||||
@ -1037,10 +1059,10 @@
|
||||
"port": "Porta da Base de Dados",
|
||||
"password": "Senha da Base de Dados",
|
||||
"app_url": "URL do Aplicativo",
|
||||
"app_domain": "App Domain",
|
||||
"app_domain": "Domínio do Aplicativo",
|
||||
"username": "Usuário da Base de Dados",
|
||||
"db_name": "Nome da Base de Dados",
|
||||
"db_path": "Database Path",
|
||||
"db_path": "Pasta do Banco de Dados",
|
||||
"desc": "Crie um Banco de Dados no seu servidor e defina as credenciais usando o formulário abaixo."
|
||||
},
|
||||
"permissions": {
|
||||
@ -1088,24 +1110,24 @@
|
||||
"layout_login": {
|
||||
"copyright_crater": "Copyright @ Crater - 2020",
|
||||
"super_simple_invoicing": "Faturamento super simples",
|
||||
"for_freelancer": "Para Freelancers &",
|
||||
"for_freelancer": "para Freelancers &",
|
||||
"small_businesses": "Pequenos Negócios ",
|
||||
"crater_help": "Crater ajuda a rastrear despesas, registrar pagamentos e gerar belas",
|
||||
"invoices_and_estimates": "Faturas e Orçamentos com capacidade de escolher vários modelos."
|
||||
"invoices_and_estimates": "faturas e orçamentos com possibilidade de escolher vários modelos."
|
||||
},
|
||||
"validation": {
|
||||
"invalid_phone": "Número de telefone inválido",
|
||||
"invalid_url": "url inválidas (ex: http://www.crater.com)",
|
||||
"invalid_domain_url": "url inválidas (ex: crater.com)",
|
||||
"invalid_url": "URL inválida (ex: http://www.crater.com)",
|
||||
"invalid_domain_url": "URL inválida (ex: crater.com)",
|
||||
"required": "Campo obrigatório",
|
||||
"email_incorrect": "E-mail incorreto",
|
||||
"email_already_taken": "O email já foi recebido.",
|
||||
"email_incorrect": "E-mail incorreto.",
|
||||
"email_already_taken": "O email já está em uso.",
|
||||
"email_does_not_exist": "O usuário com determinado email não existe",
|
||||
"item_unit_already_taken": "This item unit name has already been taken",
|
||||
"payment_mode_already_taken": "This payment mode name has already been taken",
|
||||
"item_unit_already_taken": "Este nome de unidade de item já está em uso",
|
||||
"payment_mode_already_taken": "Este meio de pagamento já foi utilizado",
|
||||
"send_reset_link": "Enviar link de redefinição",
|
||||
"not_yet": "Ainda não? Envie novamente",
|
||||
"password_min_length": "A senha deve conter {count} caracteres",
|
||||
"password_min_length": "A senha deve ter {count} caracteres",
|
||||
"name_min_length": "O nome deve ter pelo menos {count} letras.",
|
||||
"enter_valid_tax_rate": "Insira uma taxa de imposto válida",
|
||||
"numbers_only": "Apenas Números.",
|
||||
@ -1119,52 +1141,57 @@
|
||||
"quantity_maxlength": "A quantidade não deve exceder 20 dígitos.",
|
||||
"price_maxlength": "O preço não deve ser superior a 20 dígitos.",
|
||||
"price_minvalue": "O preço deve ser maior que 0.",
|
||||
"amount_maxlength": "Montante não deve ser superior a 20 dígitos.",
|
||||
"amount_minvalue": "Montante deve ser maior que zero",
|
||||
"amount_maxlength": "Valor não deve ter mais de 20 dígitos.",
|
||||
"amount_minvalue": "O valor deve ser maior que 0.",
|
||||
"description_maxlength": "A descrição não deve ter mais que 255 caracteres.",
|
||||
"subject_maxlength": "Subject should not be greater than 100 characters.",
|
||||
"message_maxlength": "Message should not be greater than 255 characters.",
|
||||
"subject_maxlength": "O assunto não deve ter mais que 100 caracteres.",
|
||||
"message_maxlength": "A mensagem não deve ter mais que 255 caracteres.",
|
||||
"maximum_options_error": "Máximo de {max} opções selecionadas. Primeiro remova uma opção selecionada para selecionar outra.",
|
||||
"notes_maxlength": "As anotações não devem ter mais que 255 caracteres.",
|
||||
"address_maxlength": "O endereço não deve ter mais que 255 caracteres.",
|
||||
"ref_number_maxlength": "O número de referência não deve ter mais que 255 caracteres.",
|
||||
"prefix_maxlength": "O prefixo não deve ter mais que 5 caracteres.",
|
||||
"something_went_wrong": "Algo deu errado"
|
||||
"something_went_wrong": "algo deu errado",
|
||||
"number_length_minvalue": "Number lenght should be greater than 0"
|
||||
},
|
||||
"pdf_estimate_label": "Orçamento",
|
||||
"pdf_estimate_number": "Numero do Orçamento",
|
||||
"pdf_estimate_date": "Data do Orçamento",
|
||||
"pdf_estimate_expire_date": "Expiry date",
|
||||
"pdf_estimate_expire_date": "Data de expiração",
|
||||
"pdf_invoice_label": "Fatura",
|
||||
"pdf_invoice_number": "Número da fatura",
|
||||
"pdf_invoice_date": "Data da Fatura",
|
||||
"pdf_invoice_due_date": "Due date",
|
||||
"pdf_invoice_due_date": "Data de Vencimento",
|
||||
"pdf_notes": "Observações",
|
||||
"pdf_items_label": "Itens",
|
||||
"pdf_quantity_label": "Quantidade",
|
||||
"pdf_price_label": "Preço",
|
||||
"pdf_discount_label": "Desconto",
|
||||
"pdf_amount_label": "Montante",
|
||||
"pdf_amount_label": "Valor",
|
||||
"pdf_subtotal": "Subtotal",
|
||||
"pdf_total": "Total",
|
||||
"pdf_payment_receipt_label": "PAYMENT RECEIPT",
|
||||
"pdf_payment_date": "Payment Date",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "RECIBO DE PAGAMENTO",
|
||||
"pdf_payment_date": "Data de Pagamento",
|
||||
"pdf_payment_number": "Número do Pagamento",
|
||||
"pdf_payment_mode": "Forma de Pagamento",
|
||||
"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_payment_amount_received_label": "Valor Recebido",
|
||||
"pdf_expense_report_label": "RELATÓRIO DE DESPESAS",
|
||||
"pdf_total_expenses_label": "TOTAL DESPESAS",
|
||||
"pdf_profit_loss_label": "RELATÓRIO LUCRO & PERDA",
|
||||
"pdf_sales_customers_label": "Sales Customer Report",
|
||||
"pdf_sales_items_label": "Sales Item Report",
|
||||
"pdf_tax_summery_label": "Tax Summary Report",
|
||||
"pdf_income_label": "RENDA",
|
||||
"pdf_net_profit_label": "LUCRO LÍQUIDO",
|
||||
"pdf_customer_sales_report": "Relatório de Vendas: Por Cliente",
|
||||
"pdf_total_sales_label": "VENDAS TOTAIS",
|
||||
"pdf_item_sales_label": "Relatório de Vendas: Por Item",
|
||||
"pdf_tax_report_label": "RELATÓRIO DE IMPOSTOS",
|
||||
"pdf_total_tax_label": "IMPOSTOS TOTAIS",
|
||||
"pdf_tax_types_label": "Tipos de Impostos",
|
||||
"pdf_expenses_label": "Despesas",
|
||||
"pdf_bill_to": "Cobrar a,",
|
||||
"pdf_ship_to": "Envie a,",
|
||||
"pdf_received_from": "Received from:"
|
||||
"pdf_received_from": "Remetente:"
|
||||
}
|
||||
|
||||
1197
resources/assets/js/plugins/sk.json
Normal file
1197
resources/assets/js/plugins/sk.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -178,6 +178,8 @@
|
||||
"copy_billing_address": "Kopiraj iz adrese za naplatu",
|
||||
"no_customers": "Još uvek nema klijenata!",
|
||||
"no_customers_found": "Klijenti nisu pronađeni!",
|
||||
"no_contact": "No contact",
|
||||
"no_contact_name": "No contact name",
|
||||
"list_of_customers": "Ova sekcija će da sadrži spisak klijenata.",
|
||||
"primary_display_name": "Primarni naziv koji se prikazuje",
|
||||
"select_currency": "Odaberi valutu",
|
||||
@ -201,6 +203,7 @@
|
||||
"added_on": "Datum dodavanja",
|
||||
"price": "Cena",
|
||||
"date_of_creation": "Datum kreiranja",
|
||||
"not_selected": "No item selected",
|
||||
"action": "Akcije",
|
||||
"add_item": "Dodaj Stavku",
|
||||
"save_item": "Sačuvaj Stavku",
|
||||
@ -271,6 +274,7 @@
|
||||
"required": "Polje je obavezno"
|
||||
},
|
||||
"accepted": "Prihvaćeno",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Poslato",
|
||||
"draft": "U izradi",
|
||||
"declined": "Odbijeno",
|
||||
@ -317,6 +321,9 @@
|
||||
"all": "Sve",
|
||||
"paid": "Plaćeno",
|
||||
"unpaid": "Neplaćeno",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "KLIJENT",
|
||||
"paid_status": "STATUS UPLATE",
|
||||
"ref_no": "POZIV NA BROJ",
|
||||
@ -435,6 +442,8 @@
|
||||
"update_payment": "Ažuriraj Uplatu",
|
||||
"payment": "Uplata | Uplate",
|
||||
"no_payments": "Još uvek nema uplata!",
|
||||
"not_selected": "Not selected",
|
||||
"no_invoice": "No invoice",
|
||||
"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",
|
||||
@ -464,6 +473,7 @@
|
||||
"receipt": "Račun",
|
||||
"amount": "Iznos",
|
||||
"action": "Akcija",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Napomena",
|
||||
"category_id": "ID kategorije",
|
||||
"date": "Datum",
|
||||
@ -741,10 +751,13 @@
|
||||
"title": "Fakture",
|
||||
"notes": "Napomene",
|
||||
"invoice_prefix": "Prefiks faktura",
|
||||
"invoice_number_length": "Invoice number length",
|
||||
"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.",
|
||||
"invoice_email_attachment": "Send invoices as attachments",
|
||||
"invoice_email_attachment_setting_description": "Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_invoice_prefix": "Unesite prefiks fakture",
|
||||
"terms_and_conditions": "Uslovi Korišćenja",
|
||||
"company_address_format": "Format adrese firme",
|
||||
@ -755,10 +768,13 @@
|
||||
"estimates": {
|
||||
"title": "Profakture",
|
||||
"estimate_prefix": "Prefiks profaktura",
|
||||
"estimate_number_length": "Estimate number length",
|
||||
"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.",
|
||||
"estimate_email_attachment": "Send estimates as attachments",
|
||||
"estimate_email_attachment_setting_description": "Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_estimate_prefix": "Unesite prefiks profakture",
|
||||
"estimate_setting_updated": "Podešavanje za profakture je uspešno sačuvano",
|
||||
"company_address_format": "Format adrese firme",
|
||||
@ -769,10 +785,13 @@
|
||||
"title": "Uplate",
|
||||
"description": "Način plaćanja",
|
||||
"payment_prefix": "Prefiks uplata",
|
||||
"payment_number_length": "Payment number lenght",
|
||||
"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.",
|
||||
"payment_email_attachment": "Send payments as attachments",
|
||||
"payment_email_attachment_setting_description": "Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_payment_prefix": "Unesite prefiks uplate",
|
||||
"payment_setting_updated": "Podešavanje za plaćanja je uspešno sačuvano",
|
||||
"payment_modes": "Način Plaćanja",
|
||||
@ -1132,7 +1151,8 @@
|
||||
"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"
|
||||
"something_went_wrong": "nešto je krenulo naopako",
|
||||
"number_length_minvalue": "Number lenght should be greater than 0"
|
||||
},
|
||||
"pdf_estimate_label": "Profaktura",
|
||||
"pdf_estimate_number": "Broj Profakture",
|
||||
@ -1150,6 +1170,7 @@
|
||||
"pdf_amount_label": "Iznos",
|
||||
"pdf_subtotal": "Osnovica za obračun PDV-a",
|
||||
"pdf_total": "Ukupan iznos",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "POTVRDA O UPLATI",
|
||||
"pdf_payment_date": "Datum Uplate",
|
||||
"pdf_payment_number": "Broj Uplate",
|
||||
@ -1158,6 +1179,9 @@
|
||||
"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_sales_customers_label": "Sales Customer Report",
|
||||
"pdf_sales_items_label": "Sales Item Report",
|
||||
"pdf_tax_summery_label": "Tax Summary Report",
|
||||
"pdf_income_label": "PRIHOD",
|
||||
"pdf_net_profit_label": "NETO PROFIT",
|
||||
"pdf_customer_sales_report": "Izveštaj o Prodaji: Po Klijentu",
|
||||
|
||||
@ -178,6 +178,8 @@
|
||||
"copy_billing_address": "Kopiera från faktura",
|
||||
"no_customers": "Inga kunder än!",
|
||||
"no_customers_found": "Hittade inga kunder!",
|
||||
"no_contact": "No contact",
|
||||
"no_contact_name": "No contact name",
|
||||
"list_of_customers": "Här kommer det finnas en lista med kunder.",
|
||||
"primary_display_name": "Visningsnamn",
|
||||
"select_currency": "Välj valuta",
|
||||
@ -201,6 +203,7 @@
|
||||
"added_on": "Tillagd den",
|
||||
"price": "Pris",
|
||||
"date_of_creation": "Skapandedatum",
|
||||
"not_selected": "No item selected",
|
||||
"action": "Handling",
|
||||
"add_item": "Skapa artikel",
|
||||
"save_item": "Spara artikel",
|
||||
@ -271,6 +274,7 @@
|
||||
"required": "Fältet är tvingande"
|
||||
},
|
||||
"accepted": "Accepterad",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Skickat",
|
||||
"draft": "Utkast",
|
||||
"declined": "Avvisad",
|
||||
@ -317,6 +321,9 @@
|
||||
"all": "Alla",
|
||||
"paid": "Betalda",
|
||||
"unpaid": "Obetalda",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "KUNDER",
|
||||
"paid_status": "BETALSTATUS",
|
||||
"ref_no": "REF NR.",
|
||||
@ -435,6 +442,8 @@
|
||||
"update_payment": "Uppdatera betalning",
|
||||
"payment": "Betalning | Betalningar",
|
||||
"no_payments": "Inga betalningar än!",
|
||||
"not_selected": "Not selected",
|
||||
"no_invoice": "No invoice",
|
||||
"no_matching_payments": "Inga matchande betalningar!",
|
||||
"list_of_payments": "Här kommer listan med betalningar finnas.",
|
||||
"select_payment_mode": "Välj betalningssätt",
|
||||
@ -464,6 +473,7 @@
|
||||
"receipt": "Kvitto",
|
||||
"amount": "Summa",
|
||||
"action": "Handling",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Notering",
|
||||
"category_id": "Kategorins ID",
|
||||
"date": "Datum",
|
||||
@ -741,10 +751,13 @@
|
||||
"title": "Fakturor",
|
||||
"notes": "Noteringar",
|
||||
"invoice_prefix": "Prefix för fakturor",
|
||||
"invoice_number_length": "Invoice number length",
|
||||
"default_invoice_email_body": "Standardtext för faktura",
|
||||
"invoice_settings": "Fakturainställningar",
|
||||
"autogenerate_invoice_number": "Generera fakturanummer automatiskt",
|
||||
"invoice_setting_description": "Inaktivera detta dom du inte vill att det automatiskt ska genereras ett nytt fakturanummer vid skapande av faktura.",
|
||||
"invoice_email_attachment": "Send invoices as attachments",
|
||||
"invoice_email_attachment_setting_description": "Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_invoice_prefix": "Skriv prefix för faktura",
|
||||
"terms_and_conditions": "Villkor",
|
||||
"company_address_format": "Formatering av företagsadress",
|
||||
@ -755,10 +768,13 @@
|
||||
"estimates": {
|
||||
"title": "Kostnadsförslag",
|
||||
"estimate_prefix": "Prefix för kostnadsförslag",
|
||||
"estimate_number_length": "Estimate number length",
|
||||
"default_estimate_email_body": "Standardtext för kostnadsförslag",
|
||||
"estimate_settings": "Kostnadsförslagsinställningar",
|
||||
"autogenerate_estimate_number": "Generera kostnadsförslagsnummer automatiskt",
|
||||
"estimate_setting_description": "Inaktivera detta dom du inte vill att det automatiskt ska genereras ett nytt kostnadsförslagsnummer vid skapande av kostnadsförslag.",
|
||||
"estimate_email_attachment": "Send estimates as attachments",
|
||||
"estimate_email_attachment_setting_description": "Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_estimate_prefix": "Skriv prefix för kostnadsförslag",
|
||||
"estimate_setting_updated": "Kostnadsförslagsinställningar uppdaterades",
|
||||
"company_address_format": "Formatering av företagsadress",
|
||||
@ -769,10 +785,13 @@
|
||||
"title": "Betalningar",
|
||||
"description": "Överföringstyper för betalningar",
|
||||
"payment_prefix": "Prefix för betalningar",
|
||||
"payment_number_length": "Payment number lenght",
|
||||
"default_payment_email_body": "Standardtext för betalningar",
|
||||
"payment_settings": "Betalningsinställningar",
|
||||
"autogenerate_payment_number": "Generera betalningsnummer automatiskt",
|
||||
"payment_setting_description": "Inaktivera detta dom du inte vill att det automatiskt ska genereras ett nytt betalningssnummer vid skapande av betalning.",
|
||||
"payment_email_attachment": "Send payments as attachments",
|
||||
"payment_email_attachment_setting_description": "Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",
|
||||
"enter_payment_prefix": "Skriv prefix för kostnadsförslag",
|
||||
"payment_setting_updated": "Betalningsinställningar uppdaterades",
|
||||
"payment_modes": "Betalningssätt",
|
||||
@ -912,6 +931,7 @@
|
||||
"download_zip_file": "Ladda ner ZIP-fil",
|
||||
"unzipping_package": "Zippar upp paket",
|
||||
"copying_files": "Kopierar filer",
|
||||
"deleting_files": "Deleting Unused files",
|
||||
"running_migrations": "Kör migreringar",
|
||||
"finishing_update": "Avslutar uppdateringen",
|
||||
"update_failed": "Uppdatering misslyckades",
|
||||
@ -1131,7 +1151,8 @@
|
||||
"address_maxlength": "Adress kan inte vara större än 255 tecken.",
|
||||
"ref_number_maxlength": "Referensnummer kan inte vara större än 255 tecken.",
|
||||
"prefix_maxlength": "Prefix kan inte vara större än 5 tecken.",
|
||||
"something_went_wrong": "något blev fel"
|
||||
"something_went_wrong": "något blev fel",
|
||||
"number_length_minvalue": "Number lenght should be greater than 0"
|
||||
},
|
||||
"pdf_estimate_label": "Kostnadsförslag",
|
||||
"pdf_estimate_number": "Kostnadsförslagsnummer",
|
||||
@ -1149,6 +1170,7 @@
|
||||
"pdf_amount_label": "Belopp",
|
||||
"pdf_subtotal": "Delsumma",
|
||||
"pdf_total": "Summa",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "Betalningskvitto",
|
||||
"pdf_payment_date": "Betalningsdatum",
|
||||
"pdf_payment_number": "Betalningsnummer",
|
||||
@ -1157,6 +1179,9 @@
|
||||
"pdf_expense_report_label": "Kostnadsrapport",
|
||||
"pdf_total_expenses_label": "Totalkostnad",
|
||||
"pdf_profit_loss_label": "Resultat- och förlustrapport",
|
||||
"pdf_sales_customers_label": "Sales Customer Report",
|
||||
"pdf_sales_items_label": "Sales Item Report",
|
||||
"pdf_tax_summery_label": "Tax Summary Report",
|
||||
"pdf_income_label": "Inkomst",
|
||||
"pdf_net_profit_label": "Nettoförtjänst",
|
||||
"pdf_customer_sales_report": "Försäljningsrapport: Per kund",
|
||||
|
||||
1197
resources/assets/js/plugins/tr.json
Normal file
1197
resources/assets/js/plugins/tr.json
Normal file
File diff suppressed because it is too large
Load Diff
1193
resources/assets/js/plugins/vi.json
Normal file
1193
resources/assets/js/plugins/vi.json
Normal file
File diff suppressed because it is too large
Load Diff
1197
resources/assets/js/plugins/zh.json
Normal file
1197
resources/assets/js/plugins/zh.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -26,6 +26,7 @@ import estimateTemplate from './modules/estimate-template'
|
||||
import invoiceTemplate from './modules/invoice-template'
|
||||
import search from './modules/search'
|
||||
import notes from './modules/notes'
|
||||
import notification from './modules/notification'
|
||||
|
||||
Vue.use(Vuex)
|
||||
|
||||
@ -76,5 +77,6 @@ export default new Vuex.Store({
|
||||
invoiceTemplate,
|
||||
search,
|
||||
notes,
|
||||
notification,
|
||||
},
|
||||
})
|
||||
|
||||
@ -13,7 +13,6 @@ export const login = ({ commit }, data) => {
|
||||
commit('user/' + userTypes.RESET_CURRENT_USER, null, { root: true })
|
||||
commit(rootTypes.UPDATE_APP_LOADING_STATUS, false, { root: true })
|
||||
|
||||
window.toastr['success']('Login Successful')
|
||||
resolve(response)
|
||||
})
|
||||
.catch((err) => {
|
||||
@ -28,7 +27,7 @@ export const setLogoutFalse = ({ state, commit }) => {
|
||||
commit(types.SET_LOGOUT, false)
|
||||
}
|
||||
|
||||
export const logout = ({ state, commit }) => {
|
||||
export const logout = ({ state, commit, dispatch }) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (state.isLoggedOut) {
|
||||
resolve()
|
||||
@ -40,7 +39,14 @@ export const logout = ({ state, commit }) => {
|
||||
.get('/auth/logout')
|
||||
.then(() => {
|
||||
router.push('/login')
|
||||
window.toastr['success']('Logged out!', 'Success')
|
||||
dispatch(
|
||||
'notification/showNotification',
|
||||
{
|
||||
type: 'success',
|
||||
message: 'Logged out successfully.',
|
||||
},
|
||||
{ root: true }
|
||||
)
|
||||
})
|
||||
.catch((err) => {
|
||||
router.push('/login')
|
||||
|
||||
27
resources/assets/js/store/modules/notification/actions.js
Normal file
27
resources/assets/js/store/modules/notification/actions.js
Normal file
@ -0,0 +1,27 @@
|
||||
import * as types from './mutation-types'
|
||||
|
||||
export const showNotification = ({ commit, dispatch, state }, payload) => {
|
||||
commit(types.SHOW_NOTIFICATION, true)
|
||||
|
||||
if (payload.type) {
|
||||
commit(types.SET_NOTIFICATION_TYPE, payload.type)
|
||||
}
|
||||
if (payload.title) {
|
||||
commit(types.SET_TITLE, payload.title)
|
||||
}
|
||||
if (payload.autoHide) {
|
||||
commit(types.SET_AUTO_HIDE, payload.autoHide)
|
||||
}
|
||||
if (payload.message) {
|
||||
commit(types.SET_MESSAGE, payload.message)
|
||||
}
|
||||
}
|
||||
|
||||
export const hideNotification = ({ commit, dispatch, state }) => {
|
||||
commit(types.RESET_DATA)
|
||||
commit(types.HIDE_NOTIFICATION, false)
|
||||
}
|
||||
|
||||
export const resetNotificationData = ({ commit, dispatch, state }) => {
|
||||
commit(types.RESET_DATA)
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
export const notificationActive = (state) => state.active
|
||||
export const notificationTitle = (state) => state.title
|
||||
export const notificationMessage = (state) => state.message
|
||||
export const notificationAutoHide = (state) => state.autoHide
|
||||
export const notificationType = (state) => state.type
|
||||
23
resources/assets/js/store/modules/notification/index.js
Normal file
23
resources/assets/js/store/modules/notification/index.js
Normal file
@ -0,0 +1,23 @@
|
||||
import mutations from './mutations'
|
||||
import * as actions from './actions'
|
||||
import * as getters from './getters'
|
||||
|
||||
const initialState = {
|
||||
active: false,
|
||||
autoHide: true,
|
||||
title: '',
|
||||
message: '',
|
||||
type: '',
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
|
||||
state: initialState,
|
||||
|
||||
getters: getters,
|
||||
|
||||
actions: actions,
|
||||
|
||||
mutations: mutations,
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
export const SHOW_NOTIFICATION = 'SHOW_NOTIFICATION'
|
||||
export const HIDE_NOTIFICATION = 'HIDE_NOTIFICATION'
|
||||
export const SET_TITLE = 'SET_TITLE'
|
||||
export const SET_AUTO_HIDE = 'SET_AUTO_HIDE'
|
||||
export const SET_MESSAGE = 'SET_MESSAGE'
|
||||
export const SET_NOTIFICATION_TYPE = 'SET_NOTIFICATION_TYPE'
|
||||
export const RESET_DATA = 'RESET_DATA'
|
||||
33
resources/assets/js/store/modules/notification/mutations.js
Normal file
33
resources/assets/js/store/modules/notification/mutations.js
Normal file
@ -0,0 +1,33 @@
|
||||
import * as types from './mutation-types'
|
||||
|
||||
export default {
|
||||
[types.SHOW_NOTIFICATION](state, data) {
|
||||
state.active = data
|
||||
},
|
||||
|
||||
[types.HIDE_NOTIFICATION](state, data) {
|
||||
state.active = data
|
||||
},
|
||||
|
||||
[types.SET_TITLE](state, data) {
|
||||
state.title = data
|
||||
},
|
||||
|
||||
[types.SET_AUTO_HIDE](state, data) {
|
||||
state.autoHide = data
|
||||
},
|
||||
|
||||
[types.SET_MESSAGE](state, data) {
|
||||
state.message = data
|
||||
},
|
||||
|
||||
[types.SET_NOTIFICATION_TYPE](state, data) {
|
||||
state.type = data
|
||||
},
|
||||
|
||||
[types.RESET_DATA](state) {
|
||||
state.active = false
|
||||
state.description = ''
|
||||
state.title = ''
|
||||
},
|
||||
}
|
||||
@ -45,9 +45,8 @@
|
||||
</template>
|
||||
|
||||
<script type="text/babel">
|
||||
import { async } from 'q'
|
||||
const { required, email } = require('vuelidate/lib/validators')
|
||||
|
||||
import { mapActions } from 'vuex'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@ -67,6 +66,7 @@ export default {
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
...mapActions('notification', ['showNotification']),
|
||||
async validateBeforeSubmit(e) {
|
||||
this.$v.formData.$touch()
|
||||
if (!this.$v.formData.$invalid) {
|
||||
@ -78,7 +78,10 @@ export default {
|
||||
)
|
||||
|
||||
if (res.data) {
|
||||
toastr['success']('Mail sent successfuly!', 'Success')
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: 'Mail sent successfuly!',
|
||||
})
|
||||
}
|
||||
|
||||
this.isSent = true
|
||||
|
||||
@ -145,6 +145,7 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
...mapActions('auth', ['login']),
|
||||
...mapActions('notification', ['showNotification']),
|
||||
async validateBeforeSubmit() {
|
||||
axios.defaults.withCredentials = true
|
||||
|
||||
@ -158,6 +159,10 @@ export default {
|
||||
try {
|
||||
await this.login(this.loginData)
|
||||
this.$router.push('/admin/dashboard')
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: 'Logged in successfully.',
|
||||
})
|
||||
this.isLoading = false
|
||||
} catch (error) {
|
||||
this.isLoading = false
|
||||
|
||||
@ -92,6 +92,7 @@ const {
|
||||
sameAs,
|
||||
minLength,
|
||||
} = require('vuelidate/lib/validators')
|
||||
import { mapActions } from 'vuex'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
@ -120,6 +121,7 @@ export default {
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
...mapActions('notification', ['showNotification']),
|
||||
async validateBeforeSubmit(e) {
|
||||
this.$v.formData.$touch()
|
||||
|
||||
@ -135,18 +137,18 @@ export default {
|
||||
let res = await axios.post('/api/v1/auth/reset/password', data)
|
||||
this.isLoading = false
|
||||
if (res.data) {
|
||||
toastr['success'](
|
||||
this.$t('login.password_reset_successfully'),
|
||||
'Success'
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('login.password_reset_successfully'),
|
||||
})
|
||||
this.$router.push('/login')
|
||||
}
|
||||
} catch (err) {
|
||||
if (err.response && err.response.status === 403) {
|
||||
toastr['error'](
|
||||
err.response.data,
|
||||
this.$t('validation.email_incorrect')
|
||||
)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$t('validation.email_incorrect'),
|
||||
})
|
||||
this.isLoading = false
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,26 +1,26 @@
|
||||
<template>
|
||||
<base-page class="customer-create">
|
||||
<form v-if="!initLoad" @submit.prevent="submitCustomerData">
|
||||
<sw-page-header class="mb-5" :title="pageTitle">
|
||||
<sw-page-header :title="pageTitle" class="mb-5">
|
||||
<sw-breadcrumb slot="breadcrumbs">
|
||||
<sw-breadcrumb-item
|
||||
to="/admin/dashboard"
|
||||
:title="$t('general.home')"
|
||||
to="/admin/dashboard"
|
||||
/>
|
||||
<sw-breadcrumb-item
|
||||
to="/admin/customers"
|
||||
:title="$tc('customers.customer', 2)"
|
||||
to="/admin/customers"
|
||||
/>
|
||||
<sw-breadcrumb-item
|
||||
v-if="$route.name === 'customers.edit'"
|
||||
to="#"
|
||||
:title="$t('customers.edit_customer')"
|
||||
to="#"
|
||||
active
|
||||
/>
|
||||
<sw-breadcrumb-item
|
||||
v-else
|
||||
to="#"
|
||||
:title="$t('customers.new_customer')"
|
||||
to="#"
|
||||
active
|
||||
/>
|
||||
</sw-breadcrumb>
|
||||
@ -56,8 +56,8 @@
|
||||
>
|
||||
<sw-input-group
|
||||
:label="$t('customers.display_name')"
|
||||
class="md:col-span-3"
|
||||
:error="displayNameError"
|
||||
class="md:col-span-3"
|
||||
required
|
||||
>
|
||||
<sw-input
|
||||
@ -85,8 +85,8 @@
|
||||
|
||||
<sw-input-group
|
||||
:label="$t('customers.email')"
|
||||
class="md:col-span-3"
|
||||
:error="emailError"
|
||||
class="md:col-span-3"
|
||||
>
|
||||
<sw-input
|
||||
:invalid="$v.formData.email.$error"
|
||||
@ -243,8 +243,8 @@
|
||||
|
||||
<sw-input-group :label="$t('customers.zip_code')">
|
||||
<sw-input
|
||||
tabindex="14"
|
||||
v-model.trim="billing.zip"
|
||||
tabindex="14"
|
||||
type="text"
|
||||
name="zip"
|
||||
/>
|
||||
@ -406,16 +406,16 @@
|
||||
class="grid col-span-5 lg:col-span-4 gap-y-6 gap-x-4 md:grid-cols-6"
|
||||
>
|
||||
<sw-input-group
|
||||
class="md:col-span-3"
|
||||
v-for="(field, index) in customFields"
|
||||
:label="field.label"
|
||||
:required="field.is_required ? true : false"
|
||||
:key="index"
|
||||
class="md:col-span-3"
|
||||
>
|
||||
<component
|
||||
:type="field.type.label"
|
||||
:field="field"
|
||||
:isEdit="isEdit"
|
||||
:is-edit="isEdit"
|
||||
:is="field.type + 'Field'"
|
||||
:invalid-fields="invalidFields"
|
||||
:tabindex="23 + index"
|
||||
@ -694,7 +694,7 @@ export default {
|
||||
'updateCustomer',
|
||||
'fetchViewCustomer',
|
||||
]),
|
||||
|
||||
...mapActions('notification', ['showNotification']),
|
||||
...mapActions('customFields', ['fetchCustomFields']),
|
||||
|
||||
currencyNameWithCode({ name, code }) {
|
||||
@ -786,10 +786,16 @@ export default {
|
||||
this.$router.push(
|
||||
`/admin/customers/${response.data.customer.id}/view`
|
||||
)
|
||||
window.toastr['success'](this.$t('customers.updated_message'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('customers.updated_message'),
|
||||
})
|
||||
}
|
||||
if (response.data.error) {
|
||||
window.toastr['error'](this.$t('validation.email_already_taken'))
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$t('validation.email_already_taken'),
|
||||
})
|
||||
}
|
||||
} else {
|
||||
response = await this.addCustomer(this.formData)
|
||||
@ -797,7 +803,10 @@ export default {
|
||||
this.$router.push(
|
||||
`/admin/customers/${response.data.customer.id}/view`
|
||||
)
|
||||
window.toastr['success'](this.$t('customers.created_message'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('customers.created_message'),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@ -806,7 +815,10 @@ export default {
|
||||
} catch (error) {
|
||||
this.isLoading = false
|
||||
if (err.response.data.errors.email) {
|
||||
window.toastr['error'](this.$t('validation.email_already_taken'))
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$t('validation.email_already_taken'),
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -2,10 +2,10 @@
|
||||
<base-page class="customer-create">
|
||||
<sw-page-header :title="$t('customers.title')">
|
||||
<sw-breadcrumb slot="breadcrumbs">
|
||||
<sw-breadcrumb-item to="dashboard" :title="$t('general.home')" />
|
||||
<sw-breadcrumb-item :title="$t('general.home')" to="dashboard" />
|
||||
<sw-breadcrumb-item
|
||||
to="#"
|
||||
:title="$tc('customers.customer', 2)"
|
||||
to="#"
|
||||
active
|
||||
/>
|
||||
</sw-breadcrumb>
|
||||
@ -159,7 +159,7 @@
|
||||
:filterable="false"
|
||||
cell-class="no-click"
|
||||
>
|
||||
<div class="relative block" slot-scope="row">
|
||||
<div slot-scope="row" class="relative block">
|
||||
<sw-checkbox
|
||||
:id="row.id"
|
||||
v-model="selectField"
|
||||
@ -195,7 +195,11 @@
|
||||
<template slot-scope="row">
|
||||
<span>{{ $t('customers.contact_name') }}</span>
|
||||
<span>
|
||||
{{ row.contact_name ? row.contact_name : 'No Contact Name' }}
|
||||
{{
|
||||
row.contact_name
|
||||
? row.contact_name
|
||||
: $t('customers.no_contact_name')
|
||||
}}
|
||||
</span>
|
||||
</template>
|
||||
</sw-table-column>
|
||||
@ -208,7 +212,7 @@
|
||||
<template slot-scope="row">
|
||||
<span>{{ $t('customers.phone') }}</span>
|
||||
<span>
|
||||
{{ row.phone ? row.phone : 'No Contact' }}
|
||||
{{ row.phone ? row.phone : $t('customers.no_contact') }}
|
||||
</span>
|
||||
</template>
|
||||
</sw-table-column>
|
||||
@ -243,16 +247,16 @@
|
||||
<dot-icon slot="activator" />
|
||||
|
||||
<sw-dropdown-item
|
||||
tag-name="router-link"
|
||||
:to="`customers/${row.id}/edit`"
|
||||
tag-name="router-link"
|
||||
>
|
||||
<pencil-icon class="h-5 mr-3 text-gray-600" />
|
||||
{{ $t('general.edit') }}
|
||||
</sw-dropdown-item>
|
||||
|
||||
<sw-dropdown-item
|
||||
tag-name="router-link"
|
||||
:to="`customers/${row.id}/view`"
|
||||
tag-name="router-link"
|
||||
>
|
||||
<eye-icon class="h-5 mr-3 text-gray-600" />
|
||||
{{ $t('general.view') }}
|
||||
@ -281,7 +285,6 @@ import {
|
||||
EyeIcon,
|
||||
} from '@vue-hero-icons/solid'
|
||||
import AstronautIcon from '../../components/icon/AstronautIcon'
|
||||
import { request } from 'http'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@ -355,6 +358,7 @@ export default {
|
||||
'deleteMultipleCustomers',
|
||||
'setSelectAllState',
|
||||
]),
|
||||
...mapActions('notification', ['showNotification']),
|
||||
refreshTable() {
|
||||
this.$refs.table.refresh()
|
||||
},
|
||||
@ -399,43 +403,60 @@ export default {
|
||||
},
|
||||
|
||||
async removeCustomer(id) {
|
||||
swal({
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$tc('customers.confirm_delete'),
|
||||
icon: '/assets/icon/trash-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
}).then(async (willDelete) => {
|
||||
if (willDelete) {
|
||||
icon: 'error',
|
||||
iconHtml: `<svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 text-red-600"fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" />
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
if (result.value) {
|
||||
let res = await this.deleteCustomer({ ids: [id] })
|
||||
|
||||
if (res.data.success) {
|
||||
window.toastr['success'](this.$tc('customers.deleted_message', 1))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('customers.deleted_message', 1),
|
||||
})
|
||||
this.$refs.table.refresh()
|
||||
return true
|
||||
}
|
||||
|
||||
window.toastr['error'](res.data.message)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$tc(res.data.message),
|
||||
})
|
||||
return true
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
async removeMultipleCustomers() {
|
||||
swal({
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$tc('customers.confirm_delete', 2),
|
||||
icon: '/assets/icon/trash-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
}).then(async (willDelete) => {
|
||||
if (willDelete) {
|
||||
icon: 'error',
|
||||
iconHtml: `<svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 text-red-600"fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" />
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
if (result.value) {
|
||||
let request = await this.deleteMultipleCustomers()
|
||||
if (request.data.success) {
|
||||
window.toastr['success'](this.$tc('customers.deleted_message', 2))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('customers.deleted_message', 2),
|
||||
})
|
||||
this.refreshTable()
|
||||
} else if (request.data.error) {
|
||||
window.toastr['error'](request.data.message)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: request.data.message,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@ -3,8 +3,8 @@
|
||||
<sw-page-header :title="pageTitle">
|
||||
<template slot="actions">
|
||||
<sw-button
|
||||
tag-name="router-link"
|
||||
:to="`/admin/customers/${$route.params.id}/edit`"
|
||||
tag-name="router-link"
|
||||
class="mr-3"
|
||||
variant="primary-outline"
|
||||
>
|
||||
@ -15,29 +15,29 @@
|
||||
{{ $t('customers.new_transaction') }}
|
||||
</sw-button>
|
||||
<sw-dropdown-item
|
||||
tag-name="router-link"
|
||||
:to="`/admin/estimates/create?customer=${$route.params.id}`"
|
||||
tag-name="router-link"
|
||||
>
|
||||
<document-icon class="h-5 mr-3 text-gray-600" />
|
||||
{{ $t('estimates.new_estimate') }}
|
||||
</sw-dropdown-item>
|
||||
<sw-dropdown-item
|
||||
tag-name="router-link"
|
||||
:to="`/admin/invoices/create?customer=${$route.params.id}`"
|
||||
tag-name="router-link"
|
||||
>
|
||||
<document-text-icon class="h-5 mr-3 text-gray-600" />
|
||||
{{ $t('invoices.new_invoice') }}
|
||||
</sw-dropdown-item>
|
||||
<sw-dropdown-item
|
||||
tag-name="router-link"
|
||||
:to="`/admin/payments/create?customer=${$route.params.id}`"
|
||||
tag-name="router-link"
|
||||
>
|
||||
<credit-card-icon class="h-5 mr-3 text-gray-600" />
|
||||
{{ $t('payments.new_payment') }}
|
||||
</sw-dropdown-item>
|
||||
<sw-dropdown-item
|
||||
tag-name="router-link"
|
||||
:to="`/admin/expenses/create?customer=${$route.params.id}`"
|
||||
tag-name="router-link"
|
||||
>
|
||||
<calculator-icon class="h-5 mr-3 text-gray-600" />
|
||||
{{ $t('expenses.new_expense') }}
|
||||
@ -112,25 +112,48 @@ export default {
|
||||
'selectCustomer',
|
||||
'deleteMultipleCustomers',
|
||||
]),
|
||||
...mapActions('notification', ['showNotification']),
|
||||
|
||||
async removeCustomer(id) {
|
||||
swal({
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$tc('customers.confirm_delete'),
|
||||
icon: '/assets/icon/trash-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
}).then(async (willDelete) => {
|
||||
if (willDelete) {
|
||||
icon: 'question',
|
||||
iconHtml: `<svg
|
||||
aria-hidden="true"
|
||||
class="w-6 h-6"
|
||||
focusable="false"
|
||||
data-prefix="fas"
|
||||
data-icon="trash"
|
||||
class="svg-inline--fa fa-trash fa-w-14"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 448 512"
|
||||
>
|
||||
<path
|
||||
fill="#55547A"
|
||||
d="M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"
|
||||
></path>
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
if (result.value) {
|
||||
let data = [id]
|
||||
this.selectCustomer(data)
|
||||
let res = await this.deleteMultipleCustomers()
|
||||
if (res.data.success) {
|
||||
window.toastr['success'](this.$tc('customers.deleted_message'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('customers.deleted_message'),
|
||||
})
|
||||
this.$router.push('/admin/customers')
|
||||
return true
|
||||
} else if (request.data.error) {
|
||||
window.toastr['error'](res.data.message)
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: res.data.message,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@ -35,10 +35,10 @@
|
||||
<sw-dropdown-item class="flex cursor-pointer">
|
||||
<sw-input-group class="-mt-3 font-normal">
|
||||
<sw-radio
|
||||
:label="$t('customers.create_date')"
|
||||
size="sm"
|
||||
id="filter_create_date"
|
||||
:label="$t('customers.create_date')"
|
||||
v-model="searchData.orderByField"
|
||||
size="sm"
|
||||
name="filter"
|
||||
value="invoices.created_at"
|
||||
@change="onSearch"
|
||||
@ -49,10 +49,10 @@
|
||||
<sw-dropdown-item class="flex cursor-pointer">
|
||||
<sw-input-group class="-mt-3 font-normal">
|
||||
<sw-radio
|
||||
:label="$t('customers.display_name')"
|
||||
size="sm"
|
||||
id="filter_display_name"
|
||||
:label="$t('customers.display_name')"
|
||||
v-model="searchData.orderByField"
|
||||
size="sm"
|
||||
name="filter"
|
||||
value="users.name"
|
||||
@change="onSearch"
|
||||
@ -62,8 +62,8 @@
|
||||
</sw-dropdown>
|
||||
|
||||
<sw-button
|
||||
class="ml-1"
|
||||
v-tooltip.top-center="{ content: getOrderName }"
|
||||
class="ml-1"
|
||||
size="md"
|
||||
variant="gray-light"
|
||||
@click="sortData"
|
||||
@ -102,13 +102,13 @@
|
||||
{{ customer.name }}
|
||||
</div>
|
||||
<div
|
||||
class="mt-1 text-xs not-italic font-medium leading-5 text-gray-600"
|
||||
v-if="customer.contact_name"
|
||||
class="mt-1 text-xs not-italic font-medium leading-5 text-gray-600"
|
||||
>
|
||||
{{ customer.contact_name }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-1 whitespace-no-wrap right">
|
||||
<div class="flex-1 whitespace-nowrap right">
|
||||
<div
|
||||
class="text-xl not-italic font-semibold leading-8 text-right text-gray-900"
|
||||
v-html="$utils.formatMoney(customer.due_amount, customer.currency)"
|
||||
|
||||
@ -65,9 +65,11 @@
|
||||
:color="$utils.getBadgeStatusColor(row.status).color"
|
||||
>
|
||||
{{
|
||||
row.status != 'PARTIALLY_PAID'
|
||||
? row.status
|
||||
: row.status.replace('_', ' ')
|
||||
$utils.getStatusTranslation(
|
||||
row.status != 'PARTIALLY_PAID'
|
||||
? row.status
|
||||
: row.status.replace('_', ' ')
|
||||
)
|
||||
}}
|
||||
</sw-badge>
|
||||
</template>
|
||||
@ -96,16 +98,16 @@
|
||||
<sw-dropdown slot-scope="row">
|
||||
<dot-icon slot="activator" />
|
||||
<sw-dropdown-item
|
||||
tag-name="router-link"
|
||||
:to="`invoices/${row.id}/edit`"
|
||||
tag-name="router-link"
|
||||
>
|
||||
<pencil-icon class="h-5 mr-3 text-gray-600" />
|
||||
{{ $t('general.edit') }}
|
||||
</sw-dropdown-item>
|
||||
|
||||
<sw-dropdown-item
|
||||
tag-name="router-link"
|
||||
:to="`invoices/${row.id}/view`"
|
||||
tag-name="router-link"
|
||||
>
|
||||
<eye-icon class="h-5 mr-3 text-gray-600" />
|
||||
{{ $t('invoices.view') }}
|
||||
@ -225,16 +227,16 @@
|
||||
<dot-icon slot="activator" />
|
||||
|
||||
<sw-dropdown-item
|
||||
tag-name="router-link"
|
||||
:to="`estimates/${row.id}/edit`"
|
||||
tag-name="router-link"
|
||||
>
|
||||
<pencil-icon class="h-5 mr-3 text-gray-600" />
|
||||
{{ $t('general.edit') }}
|
||||
</sw-dropdown-item>
|
||||
|
||||
<sw-dropdown-item
|
||||
tag-name="router-link"
|
||||
:to="`estimates/${row.id}/view`"
|
||||
tag-name="router-link"
|
||||
>
|
||||
<eye-icon class="h-5 mr-3 text-gray-600" />
|
||||
{{ $t('general.view') }}
|
||||
@ -348,6 +350,8 @@ export default {
|
||||
'convertToInvoice',
|
||||
]),
|
||||
|
||||
...mapActions('notification', ['showNotification']),
|
||||
|
||||
...mapActions('estimate', {
|
||||
sendEstimateEmail: 'sendEmail',
|
||||
markEstimateAsSent: 'markAsSent',
|
||||
@ -360,25 +364,32 @@ export default {
|
||||
|
||||
async removeEstimate(id) {
|
||||
this.id = id
|
||||
window
|
||||
.swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$tc('estimates.confirm_delete', 1),
|
||||
icon: '/assets/icon/trash-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
})
|
||||
.then(async (willDelete) => {
|
||||
if (willDelete) {
|
||||
let res = await this.deleteEstimate({ ids: [this.id] })
|
||||
if (res.data.success) {
|
||||
window.toastr['success'](this.$tc('estimates.deleted_message', 1))
|
||||
this.refreshEstTable()
|
||||
} else if (res.data.error) {
|
||||
window.toastr['error'](res.data.message)
|
||||
}
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$tc('estimates.confirm_delete', 1),
|
||||
icon: 'error',
|
||||
iconHtml: `<svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 text-red-600"fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" />
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
if (result.value) {
|
||||
let res = await this.deleteEstimate({ ids: [this.id] })
|
||||
if (res.data.success) {
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('estimates.deleted_message', 1),
|
||||
})
|
||||
this.refreshEstTable()
|
||||
} else if (res.data.error) {
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: res.data.message,
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
refreshInvTable() {
|
||||
@ -390,229 +401,355 @@ export default {
|
||||
},
|
||||
|
||||
async convertInToinvoice(id) {
|
||||
window
|
||||
.swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('estimates.confirm_conversion'),
|
||||
icon: '/assets/icon/file-alt-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
})
|
||||
.then(async (willDelete) => {
|
||||
if (willDelete) {
|
||||
let res = await this.convertToInvoice(id)
|
||||
this.selectAllField = false
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('estimates.confirm_conversion'),
|
||||
icon: 'question',
|
||||
iconHtml: `<svg
|
||||
aria-hidden="true"
|
||||
viewBox="0 0 384 512"
|
||||
class="w-6 h-6"
|
||||
data-prefix="fas"
|
||||
data-icon="file-alt"
|
||||
class="svg-inline--fa fa-file-alt fa-w-12"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
fill="#55547A"
|
||||
d="M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"
|
||||
></path>
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
if (result.value) {
|
||||
let res = await this.convertToInvoice(id)
|
||||
this.selectAllField = false
|
||||
|
||||
if (res.data) {
|
||||
window.toastr['success'](this.$t('estimates.conversion_message'))
|
||||
this.$router.push(`invoices/${res.data.invoice.id}/edit`)
|
||||
} else if (res.data.error) {
|
||||
window.toastr['error'](res.data.message)
|
||||
}
|
||||
if (res.data) {
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('estimates.conversion_message'),
|
||||
})
|
||||
this.$router.push(`invoices/${res.data.invoice.id}/edit`)
|
||||
} else if (res.data.error) {
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: res.data.message,
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
async onMarkAsSent(id) {
|
||||
window
|
||||
.swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('estimates.confirm_mark_as_sent'),
|
||||
icon: '/assets/icon/check-circle-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
})
|
||||
.then(async (willMarkAsSent) => {
|
||||
if (willMarkAsSent) {
|
||||
const data = {
|
||||
id: id,
|
||||
status: 'SENT',
|
||||
}
|
||||
|
||||
let response = await this.markEstimateAsSent(data)
|
||||
this.refreshEstTable()
|
||||
|
||||
if (response.data) {
|
||||
window.toastr['success'](
|
||||
this.$tc('estimates.mark_as_sent_successfully')
|
||||
)
|
||||
}
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('estimates.confirm_mark_as_sent'),
|
||||
icon: 'question',
|
||||
iconHtml: `<svg
|
||||
aria-hidden="true"
|
||||
class="w-6 h-6"
|
||||
focusable="false"
|
||||
data-prefix="fas"
|
||||
data-icon="check-circle"
|
||||
class="svg-inline--fa fa-check-circle fa-w-16"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
<path
|
||||
fill="#55547A"
|
||||
d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"
|
||||
></path>
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
if (result.value) {
|
||||
const data = {
|
||||
id: id,
|
||||
status: 'SENT',
|
||||
}
|
||||
})
|
||||
|
||||
let response = await this.markEstimateAsSent(data)
|
||||
this.refreshEstTable()
|
||||
|
||||
if (response.data) {
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('estimates.mark_as_sent_successfully'),
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
async removeInvoice(id) {
|
||||
this.id = id
|
||||
window
|
||||
.swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$tc('invoices.confirm_delete'),
|
||||
icon: '/assets/icon/trash-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
})
|
||||
.then(async (willDelete) => {
|
||||
if (willDelete) {
|
||||
let res = await this.deleteInvoice({ ids: [this.id] })
|
||||
if (res.data.success) {
|
||||
window.toastr['success'](this.$tc('invoices.deleted_message'))
|
||||
this.refreshInvTable()
|
||||
} else if (res.data.error) {
|
||||
window.toastr['error'](res.data.message)
|
||||
}
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$tc('invoices.confirm_delete'),
|
||||
icon: 'error',
|
||||
iconHtml: `<svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 text-red-600"fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" />
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
if (result.value) {
|
||||
let res = await this.deleteInvoice({ ids: [this.id] })
|
||||
if (res.data.success) {
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('invoices.deleted_message'),
|
||||
})
|
||||
this.refreshInvTable()
|
||||
} else if (res.data.error) {
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: res.data.message,
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
async sendInvoice(id) {
|
||||
window
|
||||
.swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('invoices.confirm_send'),
|
||||
icon: '/assets/icon/paper-plane-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
})
|
||||
.then(async (willSendInvoice) => {
|
||||
if (willSendInvoice) {
|
||||
const data = {
|
||||
id: id,
|
||||
}
|
||||
let response = await this.sendEmail(data)
|
||||
this.refreshInvTable()
|
||||
|
||||
if (response.data.success) {
|
||||
window.toastr['success'](
|
||||
this.$tc('invoices.send_invoice_successfully')
|
||||
)
|
||||
return true
|
||||
}
|
||||
|
||||
if (response.data.error === 'user_email_does_not_exist') {
|
||||
window.toastr['error'](
|
||||
this.$tc('invoices.user_email_does_not_exist')
|
||||
)
|
||||
return false
|
||||
}
|
||||
window.toastr['error'](this.$tc('invoices.something_went_wrong'))
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('invoices.confirm_send'),
|
||||
icon: 'question',
|
||||
iconHtml: `<svg
|
||||
aria-hidden="true"
|
||||
focusable="false"
|
||||
class="w-6 h-6"
|
||||
data-prefix="fas"
|
||||
data-icon="paper-plane"
|
||||
class="svg-inline--fa fa-paper-plane fa-w-16"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
<path
|
||||
fill="#55547A"
|
||||
d="M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z"
|
||||
></path>
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
if (result.value) {
|
||||
const data = {
|
||||
id: id,
|
||||
}
|
||||
})
|
||||
let response = await this.sendEmail(data)
|
||||
this.refreshInvTable()
|
||||
|
||||
if (response.data.success) {
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('invoices.send_invoice_successfully'),
|
||||
})
|
||||
return true
|
||||
}
|
||||
|
||||
if (response.data.error === 'user_email_does_not_exist') {
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$tc('invoices.user_email_does_not_exist'),
|
||||
})
|
||||
return false
|
||||
}
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$tc('invoices.something_went_wrong'),
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
async sentInvoice(id) {
|
||||
window
|
||||
.swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('invoices.invoice_mark_as_sent'),
|
||||
icon: '/assets/icon/check-circle-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
})
|
||||
.then(async (willMarkAsSend) => {
|
||||
if (willMarkAsSend) {
|
||||
const data = {
|
||||
id: id,
|
||||
status: 'SENT',
|
||||
}
|
||||
let response = await this.markAsSent(data)
|
||||
|
||||
this.refreshInvTable()
|
||||
if (response.data) {
|
||||
window.toastr['success'](
|
||||
this.$tc('invoices.mark_as_sent_successfully')
|
||||
)
|
||||
}
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('invoices.invoice_mark_as_sent'),
|
||||
icon: 'question',
|
||||
iconHtml: `<svg
|
||||
aria-hidden="true"
|
||||
class="w-6 h-6"
|
||||
focusable="false"
|
||||
data-prefix="fas"
|
||||
data-icon="check-circle"
|
||||
class="svg-inline--fa fa-check-circle fa-w-16"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
<path
|
||||
fill="#55547A"
|
||||
d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"
|
||||
></path>
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
if (result.value) {
|
||||
const data = {
|
||||
id: id,
|
||||
status: 'SENT',
|
||||
}
|
||||
})
|
||||
let response = await this.markAsSent(data)
|
||||
|
||||
this.refreshInvTable()
|
||||
if (response.data) {
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('invoices.mark_as_sent_successfully'),
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
async onMarkAsAccepted(id) {
|
||||
window
|
||||
.swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('estimates.confirm_mark_as_accepted'),
|
||||
icon: '/assets/icon/check-circle-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
})
|
||||
.then(async (markedAsRejected) => {
|
||||
if (markedAsRejected) {
|
||||
const data = {
|
||||
id: id,
|
||||
}
|
||||
let response = await this.markAsAccepted(data)
|
||||
this.refreshEstTable()
|
||||
|
||||
if (response.data) {
|
||||
this.refreshEstTable()
|
||||
window.toastr['success'](
|
||||
this.$tc('estimates.marked_as_accepted_message')
|
||||
)
|
||||
}
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('estimates.confirm_mark_as_accepted'),
|
||||
icon: 'question',
|
||||
iconHtml: `<svg
|
||||
aria-hidden="true"
|
||||
class="w-6 h-6"
|
||||
focusable="false"
|
||||
data-prefix="fas"
|
||||
data-icon="check-circle"
|
||||
class="svg-inline--fa fa-check-circle fa-w-16"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
<path
|
||||
fill="#55547A"
|
||||
d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"
|
||||
></path>
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
if (result.value) {
|
||||
const data = {
|
||||
id: id,
|
||||
}
|
||||
})
|
||||
let response = await this.markAsAccepted(data)
|
||||
this.refreshEstTable()
|
||||
|
||||
if (response.data) {
|
||||
this.refreshEstTable()
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('estimates.marked_as_accepted_message'),
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
async onMarkAsRejected(id) {
|
||||
window
|
||||
.swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('estimates.confirm_mark_as_rejected'),
|
||||
icon: '/assets/icon/times-circle-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
})
|
||||
.then(async (markedAsRejected) => {
|
||||
if (markedAsRejected) {
|
||||
const data = {
|
||||
id: id,
|
||||
}
|
||||
let response = await this.markAsRejected(data)
|
||||
this.refreshEstTable()
|
||||
|
||||
if (response.data) {
|
||||
this.refreshEstTable()
|
||||
window.toastr['success'](
|
||||
this.$tc('estimates.marked_as_rejected_message')
|
||||
)
|
||||
}
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('estimates.confirm_mark_as_rejected'),
|
||||
icon: 'error',
|
||||
iconHtml: `<svg
|
||||
aria-hidden="true"
|
||||
class="w-6 h-6"
|
||||
focusable="false"
|
||||
data-prefix="fas"
|
||||
data-icon="check-circle"
|
||||
class="svg-inline--fa fa-check-circle fa-w-16"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
<path
|
||||
fill="#DC2626"
|
||||
d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"
|
||||
></path>
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
if (result.value) {
|
||||
const data = {
|
||||
id: id,
|
||||
}
|
||||
})
|
||||
let response = await this.markAsRejected(data)
|
||||
this.refreshEstTable()
|
||||
|
||||
if (response.data) {
|
||||
this.refreshEstTable()
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('estimates.marked_as_rejected_message'),
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
async sendEstimate(id) {
|
||||
window
|
||||
.swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('estimates.confirm_send_estimate'),
|
||||
icon: '/assets/icon/paper-plane-solid.svg',
|
||||
buttons: true,
|
||||
dangerMode: true,
|
||||
})
|
||||
.then(async (willSendEstimate) => {
|
||||
if (willSendEstimate) {
|
||||
const data = {
|
||||
id: id,
|
||||
}
|
||||
let response = await this.sendEstimateEmail(data)
|
||||
this.refreshEstTable()
|
||||
|
||||
if (response.data.success) {
|
||||
window.toastr['success'](
|
||||
this.$tc('estimates.send_estimate_successfully')
|
||||
)
|
||||
return true
|
||||
}
|
||||
|
||||
if (response.data.error === 'user_email_does_not_exist') {
|
||||
window.toastr['error'](
|
||||
this.$tc('estimates.user_email_does_not_exist')
|
||||
)
|
||||
return true
|
||||
}
|
||||
window.toastr['error'](this.$tc('estimates.something_went_wrong'))
|
||||
this.$swal({
|
||||
title: this.$t('general.are_you_sure'),
|
||||
text: this.$t('estimates.confirm_send_estimate'),
|
||||
icon: 'question',
|
||||
iconHtml: `<svg
|
||||
aria-hidden="true"
|
||||
focusable="false"
|
||||
class="w-6 h-6"
|
||||
data-prefix="fas"
|
||||
data-icon="paper-plane"
|
||||
class="svg-inline--fa fa-paper-plane fa-w-16"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
>
|
||||
<path
|
||||
fill="#55547A"
|
||||
d="M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z"
|
||||
></path>
|
||||
</svg>`,
|
||||
showCancelButton: true,
|
||||
showConfirmButton: true,
|
||||
}).then(async (result) => {
|
||||
if (result.value) {
|
||||
const data = {
|
||||
id: id,
|
||||
}
|
||||
})
|
||||
let response = await this.sendEstimateEmail(data)
|
||||
this.refreshEstTable()
|
||||
|
||||
if (response.data.success) {
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$tc('estimates.send_estimate_successfully'),
|
||||
})
|
||||
return true
|
||||
}
|
||||
|
||||
if (response.data.error === 'user_email_does_not_exist') {
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$tc('estimates.user_email_does_not_exist'),
|
||||
})
|
||||
return true
|
||||
}
|
||||
this.showNotification({
|
||||
type: 'error',
|
||||
message: this.$tc('estimates.something_went_wrong'),
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
{{ $t('general.you_got_lost') }}
|
||||
</h5>
|
||||
<router-link
|
||||
class="flex items-center w-32 h-12 px-2 py-1 text-base font-medium leading-none text-center text-white whitespace-no-wrap rounded bg-primary-500 btn-lg hover:text-white"
|
||||
class="flex items-center w-32 h-12 px-2 py-1 text-base font-medium leading-none text-center text-white whitespace-nowrap rounded bg-primary-500 btn-lg hover:text-white"
|
||||
to="/admin/dashboard"
|
||||
>
|
||||
<arrow-left-icon class="mr-2 text-white icon" />
|
||||
|
||||
@ -7,23 +7,23 @@
|
||||
<sw-page-header :title="pageTitle">
|
||||
<sw-breadcrumb slot="breadcrumbs">
|
||||
<sw-breadcrumb-item
|
||||
to="/admin/dashboard"
|
||||
:title="$t('general.home')"
|
||||
to="/admin/dashboard"
|
||||
/>
|
||||
<sw-breadcrumb-item
|
||||
to="/admin/estimates"
|
||||
:title="$tc('estimates.estimate', 2)"
|
||||
to="/admin/estimates"
|
||||
/>
|
||||
<sw-breadcrumb-item
|
||||
v-if="$route.name === 'estimates.edit'"
|
||||
to="#"
|
||||
:title="$t('estimates.edit_estimate')"
|
||||
to="#"
|
||||
active
|
||||
/>
|
||||
<sw-breadcrumb-item
|
||||
v-else
|
||||
to="#"
|
||||
:title="$t('estimates.new_estimate')"
|
||||
to="#"
|
||||
active
|
||||
/>
|
||||
</sw-breadcrumb>
|
||||
@ -31,8 +31,8 @@
|
||||
<template slot="actions">
|
||||
<sw-button
|
||||
v-if="$route.name === 'estimates.edit'"
|
||||
tag-name="a"
|
||||
:href="`/estimates/pdf/${newEstimate.unique_hash}`"
|
||||
tag-name="a"
|
||||
target="_blank"
|
||||
class="mr-3"
|
||||
variant="primary-outline"
|
||||
@ -59,9 +59,9 @@
|
||||
<!-- Select Customer & Basic Fields -->
|
||||
<div class="grid-cols-12 gap-8 mt-6 mb-8 lg:grid">
|
||||
<customer-select
|
||||
class="col-span-5 pr-0"
|
||||
:valid="$v.selectedCustomer"
|
||||
:customer-id="customerId"
|
||||
class="col-span-5 pr-0"
|
||||
/>
|
||||
|
||||
<div
|
||||
@ -218,7 +218,7 @@
|
||||
<div class="mb-6">
|
||||
<sw-popup
|
||||
ref="notePopup"
|
||||
class="text-sm font-semibold leading-5 text-primary-400"
|
||||
class="z-10 text-sm font-semibold leading-5 text-primary-400"
|
||||
>
|
||||
<div slot="activator" class="float-right mt-1">
|
||||
+ {{ $t('general.insert_note') }}
|
||||
@ -235,8 +235,8 @@
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="grid gap-x-4 gap-y-2 md:gap-x-8 md:gap-y-4 grid-col-1 md:grid-cols-2"
|
||||
v-if="customFields.length > 0"
|
||||
class="grid gap-x-4 gap-y-2 md:gap-x-8 md:gap-y-4 grid-col-1 md:grid-cols-2"
|
||||
>
|
||||
<sw-input-group
|
||||
v-for="(field, index) in customFields"
|
||||
@ -247,7 +247,7 @@
|
||||
<component
|
||||
:type="field.type.label"
|
||||
:field="field"
|
||||
:isEdit="isEdit"
|
||||
:is-edit="isEdit"
|
||||
:is="field.type + 'Field'"
|
||||
:invalid-fields="invalidFields"
|
||||
@update="setCustomFieldValue"
|
||||
@ -322,8 +322,8 @@
|
||||
<sw-button
|
||||
slot="activator"
|
||||
type="button"
|
||||
class="flex items-center justify-center w-12 border border-gray-300 border-solid rounded-tl-none rounded-bl-none font-base"
|
||||
data-toggle="dropdown"
|
||||
size="discount"
|
||||
aria-haspopup="true"
|
||||
aria-expanded="false"
|
||||
style="height: 43px"
|
||||
@ -366,8 +366,8 @@
|
||||
</div>
|
||||
|
||||
<sw-popup
|
||||
ref="taxModal"
|
||||
v-if="taxPerItem === 'NO' || taxPerItem === null"
|
||||
ref="taxModal"
|
||||
class="my-3 text-sm font-semibold leading-5 text-primary-400"
|
||||
>
|
||||
<div slot="activator" class="float-right pt-2 pb-4">
|
||||
@ -425,8 +425,6 @@ const {
|
||||
} = require('vuelidate/lib/validators')
|
||||
|
||||
export default {
|
||||
mixins: [CustomFieldsMixin],
|
||||
|
||||
components: {
|
||||
EstimateItem,
|
||||
CustomerSelect,
|
||||
@ -438,6 +436,7 @@ export default {
|
||||
PlusSmIcon,
|
||||
HashtagIcon,
|
||||
},
|
||||
mixins: [CustomFieldsMixin],
|
||||
|
||||
data() {
|
||||
return {
|
||||
@ -470,7 +469,6 @@ export default {
|
||||
isLoadingEstimate: false,
|
||||
isLoadingData: false,
|
||||
isLoading: false,
|
||||
maxDiscount: 0,
|
||||
estimateNumAttribute: null,
|
||||
estimatePrefix: null,
|
||||
EstimateFields: [
|
||||
@ -563,7 +561,7 @@ export default {
|
||||
if (this.newEstimate.discount_type === 'percentage') {
|
||||
this.newEstimate.discount_val = (this.subtotal * newValue) / 100
|
||||
} else {
|
||||
this.newEstimate.discount_val = newValue * 100
|
||||
this.newEstimate.discount_val = Math.round(newValue * 100)
|
||||
}
|
||||
|
||||
this.newEstimate.discount = newValue
|
||||
@ -722,12 +720,16 @@ export default {
|
||||
|
||||
...mapActions('customFields', ['fetchCustomFields']),
|
||||
|
||||
...mapActions('notification', ['showNotification']),
|
||||
|
||||
selectFixed() {
|
||||
if (this.newEstimate.discount_type === 'fixed') {
|
||||
return
|
||||
}
|
||||
|
||||
this.newEstimate.discount_val = this.newEstimate.discount * 100
|
||||
this.newEstimate.discount_val = Math.round(
|
||||
this.newEstimate.discount * 100
|
||||
)
|
||||
this.newEstimate.discount_type = 'fixed'
|
||||
},
|
||||
|
||||
@ -921,7 +923,10 @@ export default {
|
||||
.then((res) => {
|
||||
if (res.data) {
|
||||
this.$router.push(`/admin/estimates/${res.data.estimate.id}/view`)
|
||||
window.toastr['success'](this.$t('estimates.created_message'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('estimates.created_message'),
|
||||
})
|
||||
}
|
||||
|
||||
this.isLoading = false
|
||||
@ -937,7 +942,10 @@ export default {
|
||||
this.isLoading = false
|
||||
if (res.data) {
|
||||
this.$router.push(`/admin/estimates/${res.data.estimate.id}/view`)
|
||||
window.toastr['success'](this.$t('estimates.updated_message'))
|
||||
this.showNotification({
|
||||
type: 'success',
|
||||
message: this.$t('estimates.updated_message'),
|
||||
})
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
@ -953,12 +961,15 @@ export default {
|
||||
let amount = 0
|
||||
|
||||
if (selectedTax.compound_tax && this.subtotalWithDiscount) {
|
||||
amount =
|
||||
amount = Math.round(
|
||||
((this.subtotalWithDiscount + this.totalSimpleTax) *
|
||||
selectedTax.percent) /
|
||||
100
|
||||
100
|
||||
)
|
||||
} else if (this.subtotalWithDiscount && selectedTax.percent) {
|
||||
amount = (this.subtotalWithDiscount * selectedTax.percent) / 100
|
||||
amount = Math.round(
|
||||
(this.subtotalWithDiscount * selectedTax.percent) / 100
|
||||
)
|
||||
}
|
||||
|
||||
this.newEstimate.taxes.push({
|
||||
@ -971,7 +982,7 @@ export default {
|
||||
amount,
|
||||
})
|
||||
|
||||
if (this.$$refs) {
|
||||
if (this.$refs) {
|
||||
this.$refs.taxModal.close()
|
||||
}
|
||||
},
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
<div v-if="selectedCustomer.billing_address">
|
||||
<div class="flex flex-col">
|
||||
<label
|
||||
class="mb-1 text-sm font-medium text-gray-500 uppercase whitespace-no-wrap"
|
||||
class="mb-1 text-sm font-medium text-gray-500 uppercase whitespace-nowrap"
|
||||
>
|
||||
{{ $t('general.bill_to') }}
|
||||
</label>
|
||||
@ -77,7 +77,7 @@
|
||||
<div v-if="selectedCustomer.shipping_address">
|
||||
<div class="flex flex-col">
|
||||
<label
|
||||
class="mb-1 text-sm font-medium text-gray-500 uppercase whitespace-no-wrap"
|
||||
class="mb-1 text-sm font-medium text-gray-500 uppercase whitespace-nowrap"
|
||||
>
|
||||
{{ $t('general.ship_to') }}
|
||||
</label>
|
||||
|
||||
@ -45,11 +45,13 @@ export default {
|
||||
computed: {
|
||||
taxAmount() {
|
||||
if (this.tax.compound_tax && this.total) {
|
||||
return ((this.total + this.totalTax) * this.tax.percent) / 100
|
||||
return Math.round(
|
||||
((this.total + this.totalTax) * this.tax.percent) / 100
|
||||
)
|
||||
}
|
||||
|
||||
if (this.total && this.tax.percent) {
|
||||
return (this.total * this.tax.percent) / 100
|
||||
return Math.round((this.total * this.tax.percent) / 100)
|
||||
}
|
||||
|
||||
return 0
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user