mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-28 04:01:10 -04:00
Compare commits
50 Commits
4.0.4
...
workflow-t
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 | |||
| a6c3c815b5 |
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
|
||||
@ -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;
|
||||
@ -39,9 +40,17 @@ class SendInvoiceMail extends Mailable
|
||||
'mailable_type' => Invoice::class,
|
||||
'mailable_id' => $this->data['invoice']['id']
|
||||
]);
|
||||
|
||||
$mailContent = $this->from($this->data['from'], config('mail.from.name'))
|
||||
->subject($this->data['subject'])
|
||||
->markdown('emails.send.invoice', ['data', $this->data]);
|
||||
|
||||
return $this->from($this->data['from'])
|
||||
->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,9 +18,9 @@ class Company extends Model implements HasMedia
|
||||
|
||||
protected $fillable = ['name', 'logo', 'unique_hash'];
|
||||
|
||||
protected $appends=['logo'];
|
||||
protected $appends = ['logo', 'logo_path'];
|
||||
|
||||
public function getLogoAttribute()
|
||||
public function getLogoPathAttribute()
|
||||
{
|
||||
$logo = $this->getMedia('logo')->first();
|
||||
|
||||
@ -28,10 +29,22 @@ class Company extends Model implements HasMedia
|
||||
if ($logo) {
|
||||
if ($isSystem) {
|
||||
return $logo->getPath();
|
||||
} else {
|
||||
} else {
|
||||
return $logo->getFullUrl();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public function getLogoAttribute()
|
||||
{
|
||||
$logo = $this->getMedia('logo')->first();
|
||||
|
||||
if ($logo) {
|
||||
return $logo->getFullUrl();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -379,6 +379,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));
|
||||
|
||||
@ -426,7 +427,7 @@ class Estimate extends Model implements HasMedia
|
||||
$estimateTemplate = EstimateTemplate::find($this->estimate_template_id);
|
||||
|
||||
$company = Company::find($this->company_id);
|
||||
$logo = $company->logo;
|
||||
$logo = $company->logo_path;
|
||||
|
||||
view()->share([
|
||||
'estimate' => $this,
|
||||
@ -468,6 +469,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 = [
|
||||
|
||||
@ -429,6 +429,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;
|
||||
@ -510,7 +511,7 @@ class Invoice extends Model implements HasMedia
|
||||
|
||||
$company = Company::find($this->company_id);
|
||||
|
||||
$logo = $company->logo;
|
||||
$logo = $company->logo_path;
|
||||
|
||||
view()->share([
|
||||
'invoice' => $this,
|
||||
@ -526,6 +527,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 = [
|
||||
|
||||
@ -124,6 +124,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 +217,10 @@ class Payment extends Model implements HasMedia
|
||||
}
|
||||
|
||||
$payment = Payment::with([
|
||||
'user',
|
||||
'invoice',
|
||||
'paymentMethod',
|
||||
])
|
||||
'user',
|
||||
'invoice',
|
||||
'paymentMethod',
|
||||
])
|
||||
->find($this->id);
|
||||
|
||||
return $payment;
|
||||
@ -268,7 +269,7 @@ 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();
|
||||
if (!$payment) {
|
||||
// We get here if there is no order at all
|
||||
@ -373,7 +374,7 @@ class Payment extends Model implements HasMedia
|
||||
{
|
||||
$company = Company::find($this->company_id);
|
||||
|
||||
$logo = $company->logo;
|
||||
$logo = $company->logo_path;
|
||||
|
||||
view()->share([
|
||||
'payment' => $this,
|
||||
@ -400,6 +401,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",
|
||||
|
||||
1016
composer.lock
generated
1016
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -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');
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -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) {
|
||||
|
||||
@ -60,6 +60,9 @@ class DefaultSettingsSeeder extends Seeder
|
||||
'payment_prefix' => 'PAY',
|
||||
'payment_auto_generate' => 'YES',
|
||||
'save_pdf_to_disk' => 'NO',
|
||||
'invoice_email_attachment' => 'NO',
|
||||
'estimate_email_attachment' => 'NO',
|
||||
'payment_email_attachment' => 'NO',
|
||||
];
|
||||
|
||||
CompanySetting::setSettings($settings, $user->company_id);
|
||||
|
||||
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,24 +1,24 @@
|
||||
/*!
|
||||
* tiptap v1.30.0
|
||||
* (c) 2021 überdosis GbR (limited liability)
|
||||
* tiptap v1.29.6
|
||||
* (c) 2020 überdosis GbR (limited liability)
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
/*!
|
||||
* tiptap-commands v1.15.0
|
||||
* (c) 2021 überdosis GbR (limited liability)
|
||||
* tiptap-commands v1.14.6
|
||||
* (c) 2020 überdosis GbR (limited liability)
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
/*!
|
||||
* tiptap-extensions v1.33.2
|
||||
* (c) 2021 überdosis GbR (limited liability)
|
||||
* tiptap-extensions v1.33.1
|
||||
* (c) 2020 überdosis GbR (limited liability)
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
/*!
|
||||
* tiptap-utils v1.11.0
|
||||
* (c) 2021 überdosis GbR (limited liability)
|
||||
* tiptap-utils v1.10.4
|
||||
* (c) 2020 überdosis GbR (limited liability)
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
||||
{
|
||||
"/assets/js/app.js": "/assets/js/app.js?id=2fe48b55fc5693cab09f",
|
||||
"/assets/css/crater.css": "/assets/css/crater.css?id=7a822f915d7e413148f6"
|
||||
"/assets/js/app.js": "/assets/js/app.js?id=abd09b4669350c773e19",
|
||||
"/assets/css/crater.css": "/assets/css/crater.css?id=56e62ddcc9434f8f3fe5"
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
8
resources/assets/js/components/base/modal/ItemUnitModal.vue
Normal file → Executable file
8
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: {
|
||||
|
||||
8
resources/assets/js/components/base/modal/NoteModal.vue
Normal file → Executable file
8
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) {
|
||||
|
||||
8
resources/assets/js/components/base/modal/PaymentModeModal.vue
Normal file → Executable file
8
resources/assets/js/components/base/modal/PaymentModeModal.vue
Normal file → Executable file
@ -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: {
|
||||
|
||||
@ -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
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
@ -177,6 +177,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 +202,7 @@
|
||||
"added_on": "أضيف في",
|
||||
"price": "السعر",
|
||||
"date_of_creation": "تاريخ الإنشاء",
|
||||
"not_selected": "No item selected",
|
||||
"action": "إجراء",
|
||||
"add_item": "إضافة صنف",
|
||||
"save_item": "حفظ الصنف",
|
||||
@ -270,6 +273,7 @@
|
||||
"required": "حقل مطلوب"
|
||||
},
|
||||
"accepted": "مقبول",
|
||||
"rejected": "Rejected",
|
||||
"sent": "مرسل",
|
||||
"draft": "مسودة",
|
||||
"declined": "مرفوض",
|
||||
@ -316,6 +320,9 @@
|
||||
"all": "الكل",
|
||||
"paid": "مدفوع",
|
||||
"unpaid": "غير مدفوع",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "العميل",
|
||||
"paid_status": "حالة الدفع",
|
||||
"ref_no": "رقم المرجع.",
|
||||
@ -434,6 +441,8 @@
|
||||
"update_payment": "تحديث الدفعة",
|
||||
"payment": "دفعة | مدفوعات",
|
||||
"no_payments": "لا يوجد مدفوعات حتى الآن!",
|
||||
"not_selected": "Not selected",
|
||||
"no_invoice": "No invoice",
|
||||
"no_matching_payments": "لا توجد مدفوعات مطابقة!",
|
||||
"list_of_payments": "سوف تحتوي هذه القائمة على مدفوعات الفواتير.",
|
||||
"select_payment_mode": "اختر طريقة الدفع",
|
||||
@ -463,6 +472,7 @@
|
||||
"receipt": "سند القبض",
|
||||
"amount": "المبلغ المطلوب",
|
||||
"action": "إجراء",
|
||||
"not_selected": "Not selected",
|
||||
"note": "ملاحظة",
|
||||
"category_id": "رمز الفئة",
|
||||
"date": "تاريخ النفقات",
|
||||
@ -1147,6 +1157,7 @@
|
||||
"pdf_amount_label": "المبلغ المطلوب",
|
||||
"pdf_subtotal": "Subtotal",
|
||||
"pdf_total": "الإجمالي",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "PAYMENT RECEIPT",
|
||||
"pdf_payment_date": "Payment Date",
|
||||
"pdf_payment_number": "رقم الدفعة",
|
||||
@ -1155,6 +1166,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",
|
||||
|
||||
@ -177,6 +177,8 @@
|
||||
"copy_billing_address": "Rechnungsadresse kopieren",
|
||||
"no_customers": "Noch keine Kunden!",
|
||||
"no_customers_found": "Keine Kunden gefunden!",
|
||||
"no_contact": "Kein Kontakt",
|
||||
"no_contact_name": "Kein Kontaktname",
|
||||
"list_of_customers": "Dieser Abschnitt enthält die Liste der Kunden.",
|
||||
"primary_display_name": "Primärer Anzeige Name",
|
||||
"select_currency": "Währung wählen",
|
||||
@ -200,6 +202,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",
|
||||
@ -270,6 +273,7 @@
|
||||
"required": "Feld ist erforderlich"
|
||||
},
|
||||
"accepted": "Angenommen",
|
||||
"rejected": "Abgelehnt",
|
||||
"sent": "Gesendet",
|
||||
"draft": "Entwurf",
|
||||
"declined": "Abgelehnt",
|
||||
@ -315,7 +319,10 @@
|
||||
"years": "{years} Jahre",
|
||||
"all": "Alle",
|
||||
"paid": "Bezahlt",
|
||||
"unpaid": "Unbezahlte",
|
||||
"unpaid": "Unbezahlt",
|
||||
"viewed": "Gesehen",
|
||||
"overdue": "Überfällig",
|
||||
"completed": "Abgeschlossen",
|
||||
"customer": "KUNDEN",
|
||||
"paid_status": "BEZAHLT-STATUS",
|
||||
"ref_no": "REF. - NR.",
|
||||
@ -434,6 +441,8 @@
|
||||
"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.",
|
||||
"select_payment_mode": "Wählen Sie den Zahlungsmodus",
|
||||
@ -462,6 +471,7 @@
|
||||
"description": "Beschreibung",
|
||||
"receipt": "Eingang",
|
||||
"amount": "Summe",
|
||||
"not_selected": "Nicht ausgewählt",
|
||||
"action": "Aktion",
|
||||
"note": "Hinweis",
|
||||
"category_id": "Kategorie-Id",
|
||||
@ -1147,6 +1157,7 @@
|
||||
"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",
|
||||
@ -1155,6 +1166,9 @@
|
||||
"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",
|
||||
|
||||
@ -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",
|
||||
@ -745,6 +755,8 @@
|
||||
"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",
|
||||
@ -759,6 +771,8 @@
|
||||
"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",
|
||||
@ -773,6 +787,8 @@
|
||||
"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",
|
||||
@ -1150,6 +1166,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 +1175,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",
|
||||
|
||||
@ -177,6 +177,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 +202,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",
|
||||
@ -270,6 +273,7 @@
|
||||
"required": "Se requiere campo"
|
||||
},
|
||||
"accepted": "Aceptado",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Enviado",
|
||||
"draft": "Borrador",
|
||||
"declined": "Rechazado",
|
||||
@ -316,6 +320,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.",
|
||||
@ -434,6 +441,8 @@
|
||||
"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",
|
||||
@ -463,6 +472,7 @@
|
||||
"receipt": "Recibo",
|
||||
"amount": "Cantidad",
|
||||
"action": "Acción",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Nota",
|
||||
"category_id": "Categoria ID",
|
||||
"date": "Fecha de gastos",
|
||||
@ -1147,6 +1157,7 @@
|
||||
"pdf_amount_label": "Cantidad",
|
||||
"pdf_subtotal": "Subtotal",
|
||||
"pdf_total": "Total",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "RECIBO DE PAGO",
|
||||
"pdf_payment_date": "Fecha de pago",
|
||||
"pdf_payment_number": "Numero de pago",
|
||||
@ -1155,6 +1166,9 @@
|
||||
"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",
|
||||
|
||||
@ -177,6 +177,8 @@
|
||||
"copy_billing_address": "Copier depuis l'adresse de facturation",
|
||||
"no_customers": "Vous n’avez pas encore de clients !",
|
||||
"no_customers_found": "Aucun client !",
|
||||
"no_contact": "No contact",
|
||||
"no_contact_name": "No contact name",
|
||||
"list_of_customers": "Cette section contiendra la liste des clients.",
|
||||
"primary_display_name": "Nom d'affichage principal",
|
||||
"select_currency": "Sélectionnez la devise",
|
||||
@ -200,6 +202,7 @@
|
||||
"added_on": "Ajouté le",
|
||||
"price": "Prix",
|
||||
"date_of_creation": "Date de création",
|
||||
"not_selected": "No item selected",
|
||||
"action": "action",
|
||||
"add_item": "Ajouter un article",
|
||||
"save_item": "Enregistrer l'article",
|
||||
@ -270,6 +273,7 @@
|
||||
"required": "Champ requis"
|
||||
},
|
||||
"accepted": "Accepté",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Envoyé",
|
||||
"draft": "Brouillon",
|
||||
"declined": "Refusé",
|
||||
@ -316,6 +320,9 @@
|
||||
"all": "Toutes",
|
||||
"paid": "Payé",
|
||||
"unpaid": "Non payé",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "CLIENT",
|
||||
"paid_status": "STATUT DU PAIEMENT",
|
||||
"ref_no": "Réf.",
|
||||
@ -434,6 +441,8 @@
|
||||
"update_payment": "Mettre à jour le paiement",
|
||||
"payment": "Paiement | Paiements",
|
||||
"no_payments": "Aucun paiement pour le moment !",
|
||||
"not_selected": "Not selected",
|
||||
"no_invoice": "No invoice",
|
||||
"no_matching_payments": "Il n'y a aucun paiement correspondant !",
|
||||
"list_of_payments": "Cette section contiendra la liste des paiements",
|
||||
"select_payment_mode": "Sélectionnez le moyen de paiement",
|
||||
@ -463,6 +472,7 @@
|
||||
"receipt": "Reçu",
|
||||
"amount": "Montant",
|
||||
"action": "action",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Remarque",
|
||||
"category_id": "Identifiant de catégorie",
|
||||
"date": "Date",
|
||||
@ -1147,6 +1157,7 @@
|
||||
"pdf_amount_label": "Montant",
|
||||
"pdf_subtotal": "Sous-total",
|
||||
"pdf_total": "Total",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "Reçu de paiement",
|
||||
"pdf_payment_date": "Date de paiement",
|
||||
"pdf_payment_number": "N°",
|
||||
@ -1155,6 +1166,9 @@
|
||||
"pdf_expense_report_label": "RAPPORT DE DÉPENSES",
|
||||
"pdf_total_expenses_label": "TOTAL DES DÉPENSES",
|
||||
"pdf_profit_loss_label": "RAPPORT DES BÉNÉFICES ET DES PERTES",
|
||||
"pdf_sales_customers_label": "Sales Customer Report",
|
||||
"pdf_sales_items_label": "Sales Item Report",
|
||||
"pdf_tax_summery_label": "Tax Summary Report",
|
||||
"pdf_income_label": "REVENU",
|
||||
"pdf_net_profit_label": "BÉNÉFICE NET",
|
||||
"pdf_customer_sales_report": "Rapport de ventes : par client",
|
||||
|
||||
@ -177,6 +177,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 +202,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 +273,7 @@
|
||||
"required": "Field is required"
|
||||
},
|
||||
"accepted": "Accepted",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Sent",
|
||||
"draft": "Draft",
|
||||
"declined": "Declined",
|
||||
@ -316,6 +320,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 +441,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 +472,7 @@
|
||||
"receipt": "Receipt",
|
||||
"amount": "Amount",
|
||||
"action": "Action",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Note",
|
||||
"category_id": "Category Id",
|
||||
"date": "Date",
|
||||
@ -1148,6 +1158,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 +1167,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",
|
||||
|
||||
@ -177,6 +177,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 +202,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",
|
||||
@ -270,6 +273,7 @@
|
||||
"required": "Campo obbligatorio"
|
||||
},
|
||||
"accepted": "Accettato",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Inviato",
|
||||
"draft": "Bozza",
|
||||
"declined": "Rifiutato",
|
||||
@ -316,6 +320,9 @@
|
||||
"all": "Tutti",
|
||||
"paid": "Pagato",
|
||||
"unpaid": "Insoluto",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "CLIENTE",
|
||||
"paid_status": "STATO DI PAGAMENTO",
|
||||
"ref_no": "RIF N.",
|
||||
@ -434,6 +441,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 +472,7 @@
|
||||
"receipt": "Ricevuta",
|
||||
"amount": "Ammontare",
|
||||
"action": "Azione",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Nota",
|
||||
"category_id": "Id categoria",
|
||||
"date": "Data Spesa",
|
||||
@ -1147,6 +1157,7 @@
|
||||
"pdf_amount_label": "Ammontare",
|
||||
"pdf_subtotal": "Subtotal",
|
||||
"pdf_total": "Totale",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "PAYMENT RECEIPT",
|
||||
"pdf_payment_date": "Payment Date",
|
||||
"pdf_payment_number": "Numero di pagamento",
|
||||
@ -1155,6 +1166,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",
|
||||
|
||||
@ -177,6 +177,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 +202,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 +273,7 @@
|
||||
"required": "Šis lauks ir obligāts"
|
||||
},
|
||||
"accepted": "Apstiprināts",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Nosūtīts",
|
||||
"draft": "Melnraksts",
|
||||
"declined": "Noraidīts",
|
||||
@ -316,6 +320,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 +441,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 +472,7 @@
|
||||
"receipt": "Čeks",
|
||||
"amount": "Summa",
|
||||
"action": "Darbība",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Piezīme",
|
||||
"category_id": "Kategorijas Id",
|
||||
"date": "Datums",
|
||||
@ -1147,6 +1157,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 +1166,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",
|
||||
|
||||
@ -177,6 +177,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",
|
||||
@ -200,6 +202,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",
|
||||
@ -270,6 +273,7 @@
|
||||
"required": "Veld is vereist"
|
||||
},
|
||||
"accepted": "Geaccepteerd",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Verzonden",
|
||||
"draft": "Concept",
|
||||
"declined": "Geweigerd",
|
||||
@ -316,6 +320,9 @@
|
||||
"all": "Allemaal",
|
||||
"paid": "Betaald",
|
||||
"unpaid": "Onbetaald",
|
||||
"viewed": "Viewed",
|
||||
"overdue": "Overdue",
|
||||
"completed": "Completed",
|
||||
"customer": "Klant",
|
||||
"paid_status": "Betaling",
|
||||
"ref_no": "REF NR.",
|
||||
@ -434,6 +441,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",
|
||||
@ -463,6 +472,7 @@
|
||||
"receipt": "Bon",
|
||||
"amount": "Bedrag",
|
||||
"action": "Actie",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Notitie",
|
||||
"category_id": "Categorie ID",
|
||||
"date": "Uitgavendatum",
|
||||
@ -1147,6 +1157,7 @@
|
||||
"pdf_amount_label": "Bedrag",
|
||||
"pdf_subtotal": "Subtotaal",
|
||||
"pdf_total": "Totaal",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "Betalingsafschrift",
|
||||
"pdf_payment_date": "Betalingsdatum",
|
||||
"pdf_payment_number": "Betalingsnummer",
|
||||
@ -1155,6 +1166,9 @@
|
||||
"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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -177,6 +177,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",
|
||||
@ -200,6 +202,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",
|
||||
@ -270,6 +273,7 @@
|
||||
"required": "Campo obrigatório"
|
||||
},
|
||||
"accepted": "Aceito",
|
||||
"rejected": "Rejected",
|
||||
"sent": "Enviado",
|
||||
"draft": "Rascunho",
|
||||
"declined": "Rejeitado",
|
||||
@ -316,6 +320,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",
|
||||
@ -434,6 +441,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",
|
||||
@ -463,6 +472,7 @@
|
||||
"receipt": "Receita",
|
||||
"amount": "Montante",
|
||||
"action": "Ação",
|
||||
"not_selected": "Not selected",
|
||||
"note": "Observação",
|
||||
"category_id": "Categoria",
|
||||
"date": "Data da Despesa",
|
||||
@ -1147,6 +1157,7 @@
|
||||
"pdf_amount_label": "Montante",
|
||||
"pdf_subtotal": "Subtotal",
|
||||
"pdf_total": "Total",
|
||||
"pdf_payment_label": "Payment",
|
||||
"pdf_payment_receipt_label": "PAYMENT RECEIPT",
|
||||
"pdf_payment_date": "Payment Date",
|
||||
"pdf_payment_number": "Número do Pagamento",
|
||||
@ -1155,6 +1166,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",
|
||||
|
||||
@ -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",
|
||||
@ -1150,6 +1160,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 +1169,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",
|
||||
@ -1149,6 +1159,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 +1168,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",
|
||||
|
||||
@ -195,7 +195,7 @@
|
||||
<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 +208,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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -469,7 +469,6 @@ export default {
|
||||
isLoadingEstimate: false,
|
||||
isLoadingData: false,
|
||||
isLoading: false,
|
||||
maxDiscount: 0,
|
||||
estimateNumAttribute: null,
|
||||
estimatePrefix: null,
|
||||
EstimateFields: [
|
||||
|
||||
@ -254,7 +254,7 @@
|
||||
:color="$utils.getBadgeStatusColor(row.status).color"
|
||||
class="px-3 py-1"
|
||||
>
|
||||
{{ row.status }}
|
||||
{{ $utils.getStatusTranslation(row.status) }}
|
||||
</sw-badge>
|
||||
</template>
|
||||
</sw-table-column>
|
||||
|
||||
@ -302,7 +302,7 @@ export default {
|
||||
set: function (newValue) {
|
||||
if (parseFloat(newValue) > 0) {
|
||||
this.item.price = Math.round(newValue * 100)
|
||||
this.maxDiscount = this.item.price
|
||||
this.maxDiscount = this.item.price * this.item.quantity
|
||||
} else {
|
||||
this.item.price = newValue
|
||||
}
|
||||
|
||||
@ -172,7 +172,7 @@
|
||||
:color="$utils.getBadgeStatusColor(estimate.status).color"
|
||||
class="px-1 text-xs"
|
||||
>
|
||||
{{ estimate.status }}
|
||||
{{ $utils.getStatusTranslation(estimate.status) }}
|
||||
</sw-badge>
|
||||
</div>
|
||||
|
||||
|
||||
@ -208,7 +208,7 @@
|
||||
>
|
||||
<template slot-scope="row">
|
||||
<span>{{ $t('expenses.customer') }}</span>
|
||||
<span> {{ row.user_name ? row.user_name : 'Not selected' }} </span>
|
||||
<span> {{ row.user_name ? row.user_name : $t('expenses.not_selected') }} </span>
|
||||
</template>
|
||||
</sw-table-column>
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
to="/admin/invoices"
|
||||
/>
|
||||
<sw-breadcrumb-item
|
||||
v-if="$route.name === 'invoice.edit'"
|
||||
v-if="$route.name === 'invoices.edit'"
|
||||
:title="$t('invoices.edit_invoice')"
|
||||
to="#"
|
||||
active
|
||||
|
||||
@ -241,7 +241,7 @@
|
||||
:bg-color="$utils.getBadgeStatusColor(row.status).bgColor"
|
||||
:color="$utils.getBadgeStatusColor(row.status).color"
|
||||
>
|
||||
{{ row.status.replace('_', ' ') }}
|
||||
{{ $utils.getStatusTranslation(row.status.replace('_', ' ')) }}
|
||||
</sw-badge>
|
||||
</template>
|
||||
</sw-table-column>
|
||||
@ -258,7 +258,7 @@
|
||||
:bg-color="$utils.getBadgeStatusColor(row.status).bgColor"
|
||||
:color="$utils.getBadgeStatusColor(row.status).color"
|
||||
>
|
||||
{{ row.paid_status.replace('_', ' ') }}
|
||||
{{ $utils.getStatusTranslation(row.paid_status.replace('_', ' ')) }}
|
||||
</sw-badge>
|
||||
</template>
|
||||
</sw-table-column>
|
||||
|
||||
@ -301,7 +301,7 @@ export default {
|
||||
set: function (newValue) {
|
||||
if (parseFloat(newValue) > 0) {
|
||||
this.item.price = Math.round(newValue * 100)
|
||||
this.maxDiscount = this.item.price
|
||||
this.maxDiscount = this.item.price * this.item.quantity
|
||||
} else {
|
||||
this.item.price = newValue
|
||||
}
|
||||
|
||||
@ -189,7 +189,7 @@
|
||||
:font-size="$utils.getBadgeStatusColor(invoice.status).fontSize"
|
||||
class="px-1 text-xs"
|
||||
>
|
||||
{{ invoice.status }}
|
||||
{{ $utils.getStatusTranslation(invoice.status) }}
|
||||
</sw-badge>
|
||||
</div>
|
||||
|
||||
|
||||
@ -189,7 +189,7 @@
|
||||
<span>{{ $t('items.unit') }}</span>
|
||||
|
||||
<span>
|
||||
{{ row.unit_name ? row.unit_name : 'Not selected' }}
|
||||
{{ row.unit_name ? row.unit_name : $t('items.not_selected') }}
|
||||
</span>
|
||||
</template>
|
||||
</sw-table-column>
|
||||
|
||||
@ -202,7 +202,7 @@
|
||||
<template slot-scope="row">
|
||||
<span>{{ $t('payments.payment_mode') }}</span>
|
||||
<span>
|
||||
{{ row.payment_mode ? row.payment_mode : 'Not selected' }}
|
||||
{{ row.payment_mode ? row.payment_mode : $t('payments.not_selected') }}
|
||||
</span>
|
||||
</template>
|
||||
</sw-table-column>
|
||||
@ -216,7 +216,7 @@
|
||||
<template slot-scope="row">
|
||||
<span>{{ $t('invoices.invoice_number') }}</span>
|
||||
<span>
|
||||
{{ row.invoice_number ? row.invoice_number : 'No Invoice' }}
|
||||
{{ row.invoice_number ? row.invoice_number : $t('payments.no_invoice') }}
|
||||
</span>
|
||||
</template>
|
||||
</sw-table-column>
|
||||
|
||||
@ -59,12 +59,15 @@ export default {
|
||||
this.isRequestOnGoing = true
|
||||
let res = await this.fetchCompanySettings([
|
||||
'payment_auto_generate',
|
||||
'payment_email_attachment',
|
||||
'payment_prefix',
|
||||
'payment_mail_body',
|
||||
'invoice_auto_generate',
|
||||
'invoice_email_attachment',
|
||||
'invoice_prefix',
|
||||
'invoice_mail_body',
|
||||
'estimate_auto_generate',
|
||||
'estimate_email_attachment',
|
||||
'estimate_prefix',
|
||||
'estimate_mail_body',
|
||||
'invoice_billing_address_format',
|
||||
|
||||
@ -70,7 +70,7 @@
|
||||
|
||||
<sw-divider class="mt-6 mb-8" />
|
||||
|
||||
<div class="flex">
|
||||
<div class="flex mt-3 mb-4">
|
||||
<div class="relative w-12">
|
||||
<sw-switch
|
||||
v-model="estimateAutogenerate"
|
||||
@ -96,6 +96,32 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex mb-2">
|
||||
<div class="relative w-12">
|
||||
<sw-switch
|
||||
v-model="estimateAsAttachment"
|
||||
class="absolute"
|
||||
style="top: -20px"
|
||||
@change="setEstimateSetting"
|
||||
/>
|
||||
</div>
|
||||
<div class="ml-4">
|
||||
<p class="p-0 mb-1 text-base leading-snug text-black">
|
||||
{{
|
||||
$t('settings.customization.estimates.estimate_email_attachment')
|
||||
}}
|
||||
</p>
|
||||
|
||||
<p
|
||||
class="p-0 m-0 text-xs leading-tight text-gray-500"
|
||||
style="max-width: 480px"
|
||||
>
|
||||
{{
|
||||
$t('settings.customization.estimates.estimate_email_attachment_setting_description')
|
||||
}}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -115,6 +141,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
estimateAutogenerate: false,
|
||||
estimateAsAttachment: false,
|
||||
|
||||
estimates: {
|
||||
estimate_prefix: null,
|
||||
@ -204,6 +231,14 @@ export default {
|
||||
} else {
|
||||
this.estimateAutogenerate = false
|
||||
}
|
||||
|
||||
this.estimate_email_attachment = val ? val.estimate_email_attachment : ''
|
||||
|
||||
if (this.estimate_email_attachment === 'YES') {
|
||||
this.estimateAsAttachment = true
|
||||
} else {
|
||||
this.estimateAsAttachment = false
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
@ -214,6 +249,7 @@ export default {
|
||||
let data = {
|
||||
settings: {
|
||||
estimate_auto_generate: this.estimateAutogenerate ? 'YES' : 'NO',
|
||||
estimate_email_attachment: this.estimateAsAttachment ? 'YES' : 'NO',
|
||||
},
|
||||
}
|
||||
let response = await this.updateCompanySettings(data)
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
|
||||
<sw-divider class="mt-6 mb-8" />
|
||||
|
||||
<div class="flex">
|
||||
<div class="flex mt-3 mb-4">
|
||||
<div class="relative w-12">
|
||||
<sw-switch
|
||||
v-model="invoiceAutogenerate"
|
||||
@ -101,6 +101,33 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex mb-2">
|
||||
<div class="relative w-12">
|
||||
<sw-switch
|
||||
v-model="invoiceAsAttachment"
|
||||
class="absolute"
|
||||
style="top: -20px"
|
||||
@change="setInvoiceSetting"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="ml-4">
|
||||
<p class="p-0 mb-1 text-base leading-snug text-black">
|
||||
{{
|
||||
$t('settings.customization.invoices.invoice_email_attachment')
|
||||
}}
|
||||
</p>
|
||||
|
||||
<p
|
||||
class="p-0 m-0 text-xs leading-tight text-gray-500"
|
||||
style="max-width: 480px"
|
||||
>
|
||||
{{
|
||||
$t('settings.customization.invoices.invoice_email_attachment_setting_description')
|
||||
}}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -120,6 +147,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
invoiceAutogenerate: false,
|
||||
invoiceAsAttachment: false,
|
||||
|
||||
invoices: {
|
||||
invoice_prefix: null,
|
||||
@ -189,6 +217,14 @@ export default {
|
||||
} else {
|
||||
this.invoiceAutogenerate = false
|
||||
}
|
||||
|
||||
this.invoice_email_attachment = val ? val.invoice_email_attachment : ''
|
||||
|
||||
if (this.invoice_email_attachment === 'YES') {
|
||||
this.invoiceAsAttachment = true
|
||||
} else {
|
||||
this.invoiceAsAttachment = false
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
@ -209,6 +245,7 @@ export default {
|
||||
let data = {
|
||||
settings: {
|
||||
invoice_auto_generate: this.invoiceAutogenerate ? 'YES' : 'NO',
|
||||
invoice_email_attachment: this.invoiceAsAttachment ? 'YES' : 'NO',
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@ -63,7 +63,7 @@
|
||||
|
||||
<sw-divider class="mt-6 mb-8" />
|
||||
|
||||
<div class="flex">
|
||||
<div class="flex mt-3 mb-4">
|
||||
<div class="relative w-12">
|
||||
<sw-switch
|
||||
v-model="paymentAutogenerate"
|
||||
@ -90,6 +90,33 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex mb-2">
|
||||
<div class="relative w-12">
|
||||
<sw-switch
|
||||
v-model="paymentAsAttachment"
|
||||
class="absolute"
|
||||
style="top: -20px"
|
||||
@change="setPaymentSetting"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="ml-4">
|
||||
<p class="p-0 mb-1 text-base leading-snug text-black">
|
||||
{{
|
||||
$t('settings.customization.payments.payment_email_attachment')
|
||||
}}
|
||||
</p>
|
||||
|
||||
<p
|
||||
class="p-0 m-0 text-xs leading-tight text-gray-500"
|
||||
style="max-width: 480px"
|
||||
>
|
||||
{{
|
||||
$t('settings.customization.payments.payment_email_attachment_setting_description')
|
||||
}}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@ -108,6 +135,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
paymentAutogenerate: false,
|
||||
paymentAsAttachment: false,
|
||||
|
||||
payments: {
|
||||
payment_prefix: null,
|
||||
@ -184,6 +212,14 @@ export default {
|
||||
} else {
|
||||
this.paymentAutogenerate = false
|
||||
}
|
||||
|
||||
this.payment_email_attachment = val ? val.payment_email_attachment : ''
|
||||
|
||||
if (this.payment_email_attachment === 'YES') {
|
||||
this.paymentAsAttachment = true
|
||||
} else {
|
||||
this.paymentAsAttachment = false
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
@ -203,6 +239,7 @@ export default {
|
||||
let data = {
|
||||
settings: {
|
||||
payment_auto_generate: this.paymentAutogenerate ? 'YES' : 'NO',
|
||||
payment_email_attachment: this.paymentAsAttachment ? 'YES' : 'NO',
|
||||
},
|
||||
}
|
||||
let response = await this.updateCompanySettings(data)
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Estimate</title>
|
||||
<title>@lang('pdf_estimate_label') - {{$estimate->estimate_number}}</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<style type="text/css">
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Estimate</title>
|
||||
<title>@lang('pdf_estimate_label') - {{$estimate->estimate_number}}</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<style type="text/css">
|
||||
/* -- Base -- */
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Estimate</title>
|
||||
<title>@lang('pdf_estimate_label') - {{$estimate->estimate_number}}</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<style type="text/css">
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
class="pr-20 text-right item-cell"
|
||||
style="vertical-align: top;"
|
||||
>
|
||||
{{$item->quantity}}
|
||||
{{$item->quantity}} @if($item->unit_name) {{$item->unit_name}} @endif
|
||||
</td>
|
||||
<td
|
||||
class="pr-20 text-right item-cell"
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Invoice</title>
|
||||
<title>@lang('pdf_invoice_label') - {{$invoice->invoice_number}}</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<style type="text/css">
|
||||
@ -69,7 +69,6 @@
|
||||
padding-left: 30px;
|
||||
float: left;
|
||||
width: 30%;
|
||||
text-transform: capitalize;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
@ -215,7 +214,6 @@
|
||||
|
||||
.total-display-table {
|
||||
border-top: none;
|
||||
box-sizing: border-box;
|
||||
page-break-inside: avoid;
|
||||
page-break-before: auto;
|
||||
page-break-after: auto;
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Invoice</title>
|
||||
<title>@lang('pdf_invoice_label') - {{$invoice->invoice_number}}</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<style type="text/css">
|
||||
/* -- Base -- */
|
||||
@ -256,7 +256,6 @@
|
||||
}
|
||||
|
||||
.total-display-table {
|
||||
box-sizing: border-box;
|
||||
page-break-inside: avoid;
|
||||
page-break-before: auto;
|
||||
page-break-after: auto;
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Invoice</title>
|
||||
<title>@lang('pdf_invoice_label') - {{$invoice->invoice_number}}</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<style type="text/css">
|
||||
@ -42,7 +42,6 @@
|
||||
}
|
||||
.company-address-container {
|
||||
width: 50%;
|
||||
text-transform: capitalize;
|
||||
padding-left: 80px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
@ -185,7 +184,6 @@
|
||||
|
||||
|
||||
.total-display-table {
|
||||
box-sizing: border-box;
|
||||
page-break-inside: avoid;
|
||||
page-break-before: auto;
|
||||
page-break-after: auto;
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
class="pr-20 text-right item-cell"
|
||||
style="vertical-align: top;"
|
||||
>
|
||||
{{$item->quantity}}
|
||||
{{$item->quantity}} @if($item->unit_name) {{$item->unit_name}} @endif
|
||||
</td>
|
||||
<td
|
||||
class="pr-20 text-right item-cell"
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Payment</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<title>@lang('pdf_estimate_label') - {{$payment->payment_number}}</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<style type="text/css">
|
||||
/* -- Base -- */
|
||||
@ -15,13 +16,14 @@
|
||||
padding: 0px;
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
hr {
|
||||
color: rgba(0, 0, 0, 0.2);
|
||||
border: 0.5px solid #EAF1FB;
|
||||
color: rgba(0, 0, 0, 0.2);
|
||||
border: 0.5px solid #EAF1FB;
|
||||
}
|
||||
|
||||
/* -- Heeader -- */
|
||||
@ -51,12 +53,14 @@
|
||||
color: #817AE3;
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
.company-address-container {
|
||||
width: 50%;
|
||||
text-transform: capitalize;
|
||||
padding-left: 80px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
/* .header-section-right {
|
||||
display:inline-block;
|
||||
position: absolute;
|
||||
@ -77,7 +81,7 @@
|
||||
/* -- Company Address -- */
|
||||
|
||||
.company-details h1 {
|
||||
margin:0;
|
||||
margin: 0;
|
||||
|
||||
font-weight: bold;
|
||||
font-size: 15px;
|
||||
@ -87,8 +91,8 @@
|
||||
max-width: 220px;
|
||||
}
|
||||
|
||||
.company-address{
|
||||
/* margin-top: 12px; */
|
||||
.company-address {
|
||||
/* margin-top: 12px; */
|
||||
font-size: 12px;
|
||||
line-height: 15px;
|
||||
color: #595959;
|
||||
@ -96,8 +100,8 @@
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
display: block;
|
||||
height: 200px;
|
||||
display: block;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
@ -108,8 +112,8 @@
|
||||
/* -- Customer Address -- */
|
||||
.customer-address-container {
|
||||
display: block;
|
||||
float:left;
|
||||
width:40%;
|
||||
float: left;
|
||||
width: 40%;
|
||||
padding: 0 0 0 30px;
|
||||
}
|
||||
|
||||
@ -167,7 +171,7 @@
|
||||
font-size: 10px;
|
||||
line-height: 15px;
|
||||
color: #595959;
|
||||
margin:0px;
|
||||
margin: 0px;
|
||||
width: 180px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
@ -226,7 +230,7 @@
|
||||
|
||||
p {
|
||||
padding: 0 0 0 0;
|
||||
margin: 0 0 0 0;
|
||||
margin: 0 0 0 0;
|
||||
}
|
||||
|
||||
.content-heading span {
|
||||
@ -258,7 +262,7 @@
|
||||
color: #595959;
|
||||
}
|
||||
|
||||
.total-display-box span {
|
||||
.total-display-box .amount {
|
||||
float: right;
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
@ -268,21 +272,22 @@
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="header-container">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
@if($logo)
|
||||
<td width="50%" class="header-section-left">
|
||||
<img class="header-logo" src="{{ $logo }}" alt="Company Logo">
|
||||
@else
|
||||
<td width="50%" class="header-section-left">
|
||||
<img class="header-logo" src="{{ $logo }}" alt="Company Logo">
|
||||
@else
|
||||
@if($payment->user->company)
|
||||
<td class="header-section-left" style="padding-top:0px;">
|
||||
<h1 class="header-logo"> {{$payment->user->company->name}} </h1>
|
||||
<td class="header-section-left" style="padding-top:0px;">
|
||||
<h1 class="header-logo"> {{$payment->user->company->name}} </h1>
|
||||
@endif
|
||||
@endif
|
||||
@endif
|
||||
</td>
|
||||
<td width="50%" class="header-section-right company-details company-address">
|
||||
<td width="50%" class="header-section-right company-details company-address">
|
||||
{!! $company_address !!}
|
||||
</td>
|
||||
</tr>
|
||||
@ -300,8 +305,8 @@
|
||||
<div class="customer-address-container">
|
||||
<div class="billing-address-container billing-address">
|
||||
@if($billing_address)
|
||||
@lang('pdf_received_from')
|
||||
{!! $billing_address !!}
|
||||
@lang('pdf_received_from')
|
||||
{!! $billing_address !!}
|
||||
@endif
|
||||
</div>
|
||||
<div class="billing-address-container--right">
|
||||
@ -324,10 +329,10 @@
|
||||
<td class="attribute-value"> {{$payment->paymentMethod ? $payment->paymentMethod->name : '-'}}</td>
|
||||
</tr>
|
||||
@if ($payment->invoice && $payment->invoice->invoice_number)
|
||||
<tr>
|
||||
<td class="attribute-label">@lang('pdf_invoice_label')</td>
|
||||
<td class="attribute-value"> {{$payment->invoice->invoice_number}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="attribute-label">@lang('pdf_invoice_label')</td>
|
||||
<td class="attribute-value"> {{$payment->invoice->invoice_number}}</td>
|
||||
</tr>
|
||||
@endif
|
||||
</table>
|
||||
</div>
|
||||
@ -336,7 +341,8 @@
|
||||
</div>
|
||||
<div class="total-display-box">
|
||||
<p class="total-display-label">@lang('pdf_payment_amount_received_label')</p>
|
||||
<span>{!! format_money_pdf($payment->amount, $payment->user->currency) !!}</span>
|
||||
<span class="amount">{!! format_money_pdf($payment->amount, $payment->user->currency) !!}</span>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Expenses Report</title>
|
||||
<title>@lang('pdf_expense_report_label')</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family: "DejaVu Sans";
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Profit & Loss Report</title>
|
||||
<title>@lang('pdf_profit_loss_label')</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family: "DejaVu Sans";
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Sales Customer Report</title>
|
||||
<title>@lang('pdf_sales_customers_label')</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family: "DejaVu Sans";
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Sales Item Report</title>
|
||||
<title>@lang('pdf_sales_items_label')</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family: "DejaVu Sans";
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Tax Summary Report</title>
|
||||
<title>@lang('pdf_tax_summery_label')</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family: "DejaVu Sans";
|
||||
|
||||
@ -17,9 +17,11 @@
|
||||
@slot('subcopy')
|
||||
@component('mail::subcopy')
|
||||
{!! $data['body'] !!}
|
||||
@component('mail::button', ['url' => url('/customer/estimates/pdf/'.$data['estimate']['unique_hash'])])
|
||||
View Estimate
|
||||
@endcomponent
|
||||
@if(!$data['attach']['data'])
|
||||
@component('mail::button', ['url' => url('/customer/estimates/pdf/'.$data['estimate']['unique_hash'])])
|
||||
View Estimate
|
||||
@endcomponent
|
||||
@endif
|
||||
@endcomponent
|
||||
@endslot
|
||||
|
||||
|
||||
@ -17,9 +17,11 @@
|
||||
@slot('subcopy')
|
||||
@component('mail::subcopy')
|
||||
{!! $data['body'] !!}
|
||||
@component('mail::button', ['url' => url('/customer/invoices/pdf/'.$data['invoice']['unique_hash'])])
|
||||
View Invoice
|
||||
@endcomponent
|
||||
@if(!$data['attach']['data'])
|
||||
@component('mail::button', ['url' => url('/customer/invoices/pdf/'.$data['invoice']['unique_hash'])])
|
||||
View Invoice
|
||||
@endcomponent
|
||||
@endif
|
||||
@endcomponent
|
||||
@endslot
|
||||
|
||||
|
||||
@ -17,9 +17,11 @@
|
||||
@slot('subcopy')
|
||||
@component('mail::subcopy')
|
||||
{!! $data['body'] !!}
|
||||
@component('mail::button', ['url' => url('/payments/pdf/'.$data['payment']['unique_hash'])])
|
||||
View Payment
|
||||
@endcomponent
|
||||
@if(!$data['attach']['data'])
|
||||
@component('mail::button', ['url' => url('/payments/pdf/'.$data['payment']['unique_hash'])])
|
||||
View Payment
|
||||
@endcomponent
|
||||
@endif
|
||||
@endcomponent
|
||||
@endslot
|
||||
|
||||
|
||||
Reference in New Issue
Block a user