diff --git a/app/Abstracts/Report.php b/app/Abstracts/Report.php
index 6821fe204..a934ff32f 100644
--- a/app/Abstracts/Report.php
+++ b/app/Abstracts/Report.php
@@ -14,6 +14,7 @@ use App\Exports\Common\Reports as Export;
use App\Models\Common\Report as Model;
use App\Models\Document\Document;
use App\Models\Setting\Category;
+use App\Traits\Charts;
use App\Traits\DateTime;
use App\Traits\SearchString;
use App\Traits\Translations;
@@ -23,7 +24,7 @@ use Illuminate\Support\Str;
abstract class Report
{
- use DateTime, SearchString, Translations;
+ use Charts, DateTime, SearchString, Translations;
public $model;
@@ -60,9 +61,19 @@ abstract class Report
'colors' => [
'#6da252',
],
+
+ 'yaxis' => [
+ 'labels' => [
+ 'formatter' => '',
+ ],
+ ],
],
'donut' => [
- //
+ 'yaxis' => [
+ 'labels' => [
+ 'formatter' => '',
+ ],
+ ],
],
];
@@ -100,6 +111,7 @@ abstract class Report
$this->setRows();
$this->loadData();
$this->setColumnWidth();
+ $this->setChartLabelFormatter();
$this->loaded = true;
}
@@ -284,6 +296,12 @@ abstract class Report
$this->column_name_width = $this->column_value_width = $width;
}
+ public function setChartLabelFormatter()
+ {
+ $this->chart['bar']['yaxis']['labels']['formatter'] = $this->getFormatLabel();
+ $this->chart['donut']['yaxis']['labels']['formatter'] = $this->getFormatLabel('percent');
+ }
+
public function setYear()
{
$this->year = $this->getSearchStringValue('year', Date::now()->year);
diff --git a/app/Traits/Charts.php b/app/Traits/Charts.php
index 130f6fad7..be223e77f 100644
--- a/app/Traits/Charts.php
+++ b/app/Traits/Charts.php
@@ -3,6 +3,7 @@
namespace App\Traits;
use Akaunting\Apexcharts\Chart;
+use Balping\JsonRaw\Raw;
trait Charts
{
@@ -89,4 +90,79 @@ trait Charts
return $chart;
}
+
+ public function getFormatLabel($type = 'money', $position = null)
+ {
+ $label = '';
+ $decimal_mark = str_replace("'", "\\'", config('money.' . setting('default.currency') . '.decimal_mark'));
+ $thousands_separator = str_replace("'", "\\'", config('money.' . setting('default.currency') . '.thousands_separator'));
+ $symbol = str_replace("'", "\\'", config('money.' . setting('default.currency') . '.symbol'));
+ $symbol_first = str_replace("'", "\\'", config('money.' . setting('default.currency') . '.symbol_first'));
+ $precision = str_replace("'", "\\'", config('money.' . setting('default.currency') . '.precision'));
+ $percent_position = $position ?: setting('localisation.percent_position');
+
+ switch ($type) {
+ case 'percent':
+ $label = new Raw("function(value) {
+ " . ($percent_position == 'right' ? "return value + '%';" : "return '%' + value;") . "
+ }");
+ break;
+ default:
+ $label = new Raw("function(value) {
+ const moneySettings = {
+ decimal: '" . $decimal_mark . "',
+ thousands: '". $thousands_separator . "',
+ symbol: '" . $symbol . "',
+ isPrefix: '" . $symbol_first . "',
+ precision: '" . $precision . "',
+ };
+
+ const formattedCurrency = function (input, opt = moneySettings) {
+ if (typeof input === 'number') {
+ input = input.toFixed(fixed(opt.precision))
+ }
+
+ function fixed (precision) {
+ return Math.max(0, Math.min(precision, 20));
+ };
+
+ function toStr(value) {
+ return value ? value.toString() : '';
+ };
+
+ function numbersToCurrency(numbers, precision) {
+ var exp = Math.pow(10, precision);
+ var float = parseFloat(numbers) / exp;
+
+ return float.toFixed(fixed(precision));
+ };
+
+ function joinIntegerAndDecimal (integer, decimal, separator) {
+ return decimal ? integer + separator + decimal : integer;
+ };
+
+ if (typeof input === 'number') {
+ input = input.toFixed(fixed(opt.precision));
+ };
+
+ var negative = input.indexOf('-') >= 0 ? '-' : '';
+ var numbers = toStr(input).replace(/\D+/g, '') || '0';
+ var currency = numbersToCurrency(numbers, opt.precision);
+ var parts = toStr(currency).split('.');
+ var integer = parts[0].replace(/(\d)(?=(?:\d{3})+\b)/gm, ('$1' + opt.thousands));
+ var decimal = parts[1];
+
+ if (opt.isPrefix == 1) {
+ return opt.symbol + negative + joinIntegerAndDecimal(integer, decimal, opt.decimal);
+ }
+
+ return negative + joinIntegerAndDecimal(integer, decimal, opt.decimal) + opt.symbol;
+ };
+
+ return formattedCurrency(value, moneySettings);
+ }");
+ }
+
+ return $label;
+ }
}
diff --git a/app/Widgets/CashFlow.php b/app/Widgets/CashFlow.php
index 570864757..5825e7ff6 100644
--- a/app/Widgets/CashFlow.php
+++ b/app/Widgets/CashFlow.php
@@ -5,13 +5,14 @@ namespace App\Widgets;
use Akaunting\Apexcharts\Chart;
use App\Abstracts\Widget;
use App\Models\Banking\Transaction;
+use App\Traits\Charts;
use App\Traits\Currencies;
use App\Traits\DateTime;
use App\Utilities\Date;
class CashFlow extends Widget
{
- use Currencies, DateTime;
+ use Charts, Currencies, DateTime;
public $default_name = 'widgets.cash_flow';
@@ -53,6 +54,11 @@ class CashFlow extends Widget
'legend' => [
'position' => 'top',
],
+ 'yaxis' => [
+ 'labels' => [
+ 'formatter' => $this->getFormatLabel(),
+ ],
+ ],
];
$chart = new Chart();
diff --git a/app/Widgets/ProfitLoss.php b/app/Widgets/ProfitLoss.php
index 3477cf301..24edd3a08 100644
--- a/app/Widgets/ProfitLoss.php
+++ b/app/Widgets/ProfitLoss.php
@@ -48,6 +48,12 @@ class ProfitLoss extends Widget
'radius' => '12',
],
],
+
+ 'yaxis' => [
+ 'labels' => [
+ 'formatter' => $this->getFormatLabel(),
+ ],
+ ],
];
$chart->setType('bar')
diff --git a/composer.lock b/composer.lock
index 38954e8aa..f986c27f6 100644
--- a/composer.lock
+++ b/composer.lock
@@ -8,16 +8,16 @@
"packages": [
{
"name": "akaunting/laravel-apexcharts",
- "version": "2.0.2",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/akaunting/laravel-apexcharts.git",
- "reference": "5d584f362afc080c5506abe13ac7d6ac3865d68f"
+ "reference": "e21687886162efb3717efc5cab57943eed20b366"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/akaunting/laravel-apexcharts/zipball/5d584f362afc080c5506abe13ac7d6ac3865d68f",
- "reference": "5d584f362afc080c5506abe13ac7d6ac3865d68f",
+ "url": "https://api.github.com/repos/akaunting/laravel-apexcharts/zipball/e21687886162efb3717efc5cab57943eed20b366",
+ "reference": "e21687886162efb3717efc5cab57943eed20b366",
"shasum": ""
},
"require": {
@@ -71,9 +71,9 @@
],
"support": {
"issues": "https://github.com/akaunting/laravel-apexcharts/issues",
- "source": "https://github.com/akaunting/laravel-apexcharts/tree/2.0.2"
+ "source": "https://github.com/akaunting/laravel-apexcharts/tree/2.0.3"
},
- "time": "2022-06-16T20:42:18+00:00"
+ "time": "2022-06-24T12:24:10+00:00"
},
{
"name": "akaunting/laravel-debugbar-collector",
@@ -907,16 +907,16 @@
},
{
"name": "aws/aws-sdk-php",
- "version": "3.227.0",
+ "version": "3.228.3",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
- "reference": "88d803113ade68604ec03c591d65e1e44406ab8e"
+ "reference": "4dad57c95c7ff1dfcea29a7877ce64720b3318c3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/88d803113ade68604ec03c591d65e1e44406ab8e",
- "reference": "88d803113ade68604ec03c591d65e1e44406ab8e",
+ "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/4dad57c95c7ff1dfcea29a7877ce64720b3318c3",
+ "reference": "4dad57c95c7ff1dfcea29a7877ce64720b3318c3",
"shasum": ""
},
"require": {
@@ -924,7 +924,7 @@
"ext-json": "*",
"ext-pcre": "*",
"ext-simplexml": "*",
- "guzzlehttp/guzzle": "^6.5.7 || ^7.4.4",
+ "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5",
"guzzlehttp/promises": "^1.4.0",
"guzzlehttp/psr7": "^1.8.5 || ^2.3",
"mtdowling/jmespath.php": "^2.6",
@@ -992,9 +992,9 @@
"support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues",
- "source": "https://github.com/aws/aws-sdk-php/tree/3.227.0"
+ "source": "https://github.com/aws/aws-sdk-php/tree/3.228.3"
},
- "time": "2022-06-17T18:15:06+00:00"
+ "time": "2022-06-24T20:24:09+00:00"
},
{
"name": "balping/json-raw-encoder",
@@ -2389,16 +2389,16 @@
},
{
"name": "egulias/email-validator",
- "version": "3.2",
+ "version": "3.2.1",
"source": {
"type": "git",
"url": "https://github.com/egulias/EmailValidator.git",
- "reference": "a5ed8d58ed0c340a7c2109f587951b1c84cf6286"
+ "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/a5ed8d58ed0c340a7c2109f587951b1c84cf6286",
- "reference": "a5ed8d58ed0c340a7c2109f587951b1c84cf6286",
+ "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f88dcf4b14af14a98ad96b14b2b317969eab6715",
+ "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715",
"shasum": ""
},
"require": {
@@ -2445,7 +2445,7 @@
],
"support": {
"issues": "https://github.com/egulias/EmailValidator/issues",
- "source": "https://github.com/egulias/EmailValidator/tree/3.2"
+ "source": "https://github.com/egulias/EmailValidator/tree/3.2.1"
},
"funding": [
{
@@ -2453,7 +2453,7 @@
"type": "github"
}
],
- "time": "2022-05-28T22:19:18+00:00"
+ "time": "2022-06-18T20:57:19+00:00"
},
{
"name": "ezyang/htmlpurifier",
@@ -2925,22 +2925,22 @@
},
{
"name": "guzzlehttp/guzzle",
- "version": "7.4.4",
+ "version": "7.4.5",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "e3ff079b22820c2029d4c2a87796b6a0b8716ad8"
+ "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/e3ff079b22820c2029d4c2a87796b6a0b8716ad8",
- "reference": "e3ff079b22820c2029d4c2a87796b6a0b8716ad8",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82",
+ "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.5",
- "guzzlehttp/psr7": "^1.8.3 || ^2.1",
+ "guzzlehttp/psr7": "^1.9 || ^2.4",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.2 || ^3.0"
@@ -3029,7 +3029,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/7.4.4"
+ "source": "https://github.com/guzzle/guzzle/tree/7.4.5"
},
"funding": [
{
@@ -3045,7 +3045,7 @@
"type": "tidelift"
}
],
- "time": "2022-06-09T21:39:15+00:00"
+ "time": "2022-06-20T22:16:13+00:00"
},
{
"name": "guzzlehttp/promises",
@@ -3133,16 +3133,16 @@
},
{
"name": "guzzlehttp/psr7",
- "version": "2.3.0",
+ "version": "2.4.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "83260bb50b8fc753c72d14dc1621a2dac31877ee"
+ "reference": "13388f00956b1503577598873fffb5ae994b5737"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/83260bb50b8fc753c72d14dc1621a2dac31877ee",
- "reference": "83260bb50b8fc753c72d14dc1621a2dac31877ee",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737",
+ "reference": "13388f00956b1503577598873fffb5ae994b5737",
"shasum": ""
},
"require": {
@@ -3166,7 +3166,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.3-dev"
+ "dev-master": "2.4-dev"
}
},
"autoload": {
@@ -3228,7 +3228,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/2.3.0"
+ "source": "https://github.com/guzzle/psr7/tree/2.4.0"
},
"funding": [
{
@@ -3244,7 +3244,7 @@
"type": "tidelift"
}
],
- "time": "2022-06-09T08:26:02+00:00"
+ "time": "2022-06-20T21:43:11+00:00"
},
{
"name": "hoa/compiler",
@@ -4473,16 +4473,16 @@
},
{
"name": "laravel/framework",
- "version": "v9.17.0",
+ "version": "v9.18.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "091e287678ac723c591509ca6374e4ded4a99b1c"
+ "reference": "93a1296bca43c1ca8dcb5df8f97107e819a71499"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/091e287678ac723c591509ca6374e4ded4a99b1c",
- "reference": "091e287678ac723c591509ca6374e4ded4a99b1c",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/93a1296bca43c1ca8dcb5df8f97107e819a71499",
+ "reference": "93a1296bca43c1ca8dcb5df8f97107e819a71499",
"shasum": ""
},
"require": {
@@ -4494,7 +4494,7 @@
"fruitcake/php-cors": "^1.2",
"laravel/serializable-closure": "^1.0",
"league/commonmark": "^2.2",
- "league/flysystem": "^3.0",
+ "league/flysystem": "^3.0.16",
"monolog/monolog": "^2.0",
"nesbot/carbon": "^2.53.1",
"php": "^8.0.2",
@@ -4570,7 +4570,7 @@
"pda/pheanstalk": "^4.0",
"phpstan/phpstan": "^1.4.7",
"phpunit/phpunit": "^9.5.8",
- "predis/predis": "^1.1.9",
+ "predis/predis": "^1.1.9|^2.0",
"symfony/cache": "^6.0"
},
"suggest": {
@@ -4596,7 +4596,7 @@
"nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
"pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).",
"phpunit/phpunit": "Required to use assertions and run tests (^9.5.8).",
- "predis/predis": "Required to use the predis connector (^1.1.9).",
+ "predis/predis": "Required to use the predis connector (^1.1.9|^2.0).",
"psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
"pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).",
"symfony/cache": "Required to PSR-6 cache bridge (^6.0).",
@@ -4648,7 +4648,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2022-06-07T15:09:32+00:00"
+ "time": "2022-06-21T14:40:11+00:00"
},
{
"name": "laravel/sanctum",
@@ -12660,16 +12660,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.20",
+ "version": "9.5.21",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba"
+ "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba",
- "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1",
+ "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1",
"shasum": ""
},
"require": {
@@ -12703,7 +12703,6 @@
"sebastian/version": "^3.0.2"
},
"require-dev": {
- "ext-pdo": "*",
"phpspec/prophecy-phpunit": "^2.0.1"
},
"suggest": {
@@ -12747,7 +12746,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21"
},
"funding": [
{
@@ -12759,7 +12758,7 @@
"type": "github"
}
],
- "time": "2022-04-01T12:37:26+00:00"
+ "time": "2022-06-19T12:14:25+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -14179,5 +14178,5 @@
"ext-zip": "*"
},
"platform-dev": [],
- "plugin-api-version": "2.3.0"
+ "plugin-api-version": "2.2.0"
}
diff --git a/config/version.php b/config/version.php
index 7a3443073..344d37539 100644
--- a/config/version.php
+++ b/config/version.php
@@ -10,15 +10,15 @@ return [
'minor' => '0',
- 'patch' => '2',
+ 'patch' => '3',
'build' => '',
'status' => 'Stable',
- 'date' => '18-June-2022',
+ 'date' => '25-June-2022',
- 'time' => '01:00',
+ 'time' => '10:00',
'zone' => 'GMT +3',
diff --git a/resources/lang/ar-SA/accounts.php b/resources/lang/ar-SA/accounts.php
index 2ad4e5d66..ffb9012f7 100644
--- a/resources/lang/ar-SA/accounts.php
+++ b/resources/lang/ar-SA/accounts.php
@@ -3,6 +3,7 @@
return [
'account_name' => 'اسم الحساب',
+ 'account_balance' => 'رصيد الحساب',
'number' => 'الرقم',
'opening_balance' => 'الرصيد الافتتاحي',
'current_balance' => 'الرصيد الحالي',
@@ -14,5 +15,17 @@ return [
'outgoing' => 'الصادر',
'see_performance' => 'تصفح الأداء',
'create_report' => 'إذا كنت ترغب في رؤية أداء الحساب. يمكنك إنشاء نموذج تقرير الدخل مقابل المصروفات.',
+ 'banks' => 'البنك|البنوك',
+ 'credit_cards' => 'بطاقة الائتمان|بطاقات الائتمان',
+
+ 'form_description' => [
+ 'general' => 'استخدم نوع بطاقة الائتمان لرصيد الفتح السالب. الرقم ضروري لمطابقة الحسابات بشكل صحيح. الحساب الافتراضي سوف يسجل جميع المعاملات إذا لم يتم تحديد خلاف ذلك.',
+ 'bank' => 'قد يكون لديك حسابات مصرفية متعددة في أكثر من مصرف. تسجيل المعلومات حول المصرف الخاص بك سيسهل عملية مطابقة المعاملات داخل المصرف الخاص بك.',
+ ],
+
+ 'no_records' => [
+ 'transactions' => 'لا توجد معاملات في هذا الحساب حتى الآن. أنشئ معاملة جديدة الآن.',
+ 'transfers' => 'لا يوجد أي تحويلات من أو إلى هذا الحساب حتى الآن. أنشئ تحويل جديد الآن.',
+ ],
];
diff --git a/resources/lang/ar-SA/taxes.php b/resources/lang/ar-SA/taxes.php
index 4d1e8660f..74426d8e2 100644
--- a/resources/lang/ar-SA/taxes.php
+++ b/resources/lang/ar-SA/taxes.php
@@ -9,4 +9,12 @@ return [
'compound' => 'مُركب',
'fixed' => 'ثابت',
'withholding' => 'حجز',
+ 'no_taxes' => 'لا توجد ضرائب',
+ 'create_task' => 'إنشاء ضريبة جديدة ويمكن تحريرها في أي وقت من الإعدادات.',
+ 'new_tax' => 'ضريبة جديدة',
+
+ 'form_description' => [
+ 'general' => 'يتم حساب الضريبة الشاملة إلى سعر العنصر. يتم حساب الضريبة المركبة فوق الضرائب الأخرى. يتم تطبيق الضريبة الثابتة كمبلغ وليس كنسبة مئوية.',
+ ],
+
];
diff --git a/resources/lang/bs-BA/general.php b/resources/lang/bs-BA/general.php
index 4f72316ec..14b8c5b8e 100644
--- a/resources/lang/bs-BA/general.php
+++ b/resources/lang/bs-BA/general.php
@@ -270,6 +270,8 @@ return [
'placeholder' => [
'search' => 'Unesite pojam za pretragu',
'search_and_filter' => 'Pretraga ili filtriranje pretrage.',
+ 'select_and_filter' => 'Odaberite jednu od dostupnih opcija u nastavku',
+ 'enter_and_filter' => 'Pritisnite enter da filtrirate rezultate ili postavite novi filter',
'contact_search' => 'Unesite :type naziv',
'item_search' => 'Unesite naziv predmeta',
],
diff --git a/resources/lang/en-AU/general.php b/resources/lang/en-AU/general.php
index c2eb46b8c..7b0e060a7 100644
--- a/resources/lang/en-AU/general.php
+++ b/resources/lang/en-AU/general.php
@@ -270,6 +270,8 @@ return [
'placeholder' => [
'search' => 'Type to search..',
'search_and_filter' => 'Search or filter results..',
+ 'select_and_filter' => 'Select one of the available options below',
+ 'enter_and_filter' => 'Hit enter to filter the results, or set a new filter',
'contact_search' => 'Type a :type name',
'item_search' => 'Type an item name',
],
diff --git a/resources/lang/en-GB/modules.php b/resources/lang/en-GB/modules.php
index e4f4458ef..b3b2a5ccd 100644
--- a/resources/lang/en-GB/modules.php
+++ b/resources/lang/en-GB/modules.php
@@ -43,6 +43,11 @@ return [
'apps_managing' => 'Check the most trending apps and start managing your finances professionally today.',
'ready' => 'Ready',
'popular_this_week' => 'Popular this week',
+ 'install_cloud' => 'Use on Cloud Service',
+ 'get_cloud' => 'Get Cloud Service',
+ 'get_premium_cloud' => 'Get Premium Cloud',
+ 'only_works_cloud' => 'This app only works on Cloud Service.',
+ 'only_premium_plan' => 'This app only works on Cloud Premium Service.',
'about' => 'About',
diff --git a/resources/lang/fr-FR/general.php b/resources/lang/fr-FR/general.php
index 85a6224e6..a85aba1b3 100644
--- a/resources/lang/fr-FR/general.php
+++ b/resources/lang/fr-FR/general.php
@@ -270,6 +270,8 @@ return [
'placeholder' => [
'search' => 'Tapez pour rechercher..',
'search_and_filter' => 'Rechercher ou filtrer les résultats...',
+ 'select_and_filter' => 'Sélectionnez l\'une des options disponibles ci-dessous',
+ 'enter_and_filter' => 'Appuyer sur entrée pour filtrer les résultats, ou définir un nouveau filtre',
'contact_search' => 'Tapez un nom de :type',
'item_search' => 'Tapez un nom d\'élément',
],
diff --git a/resources/lang/fr-FR/transactions.php b/resources/lang/fr-FR/transactions.php
index 48b3c6f13..60b1c7ff8 100644
--- a/resources/lang/fr-FR/transactions.php
+++ b/resources/lang/fr-FR/transactions.php
@@ -15,7 +15,7 @@ return [
'general' => 'Ici, vous pouvez entrer les informations générales du journal manuel tels que la date, le numéro, la devise, la description, etc.',
'assign_income' => 'Sélectionnez une catégorie et un client pour rendre vos rapports plus détaillés.',
'assign_expense' => 'Sélectionnez une catégorie et un vendeur pour rendre vos rapports plus détaillés.',
- 'other' => 'Entrez une référence pour conserver la transaction liée à vos dossiers.',
+ 'other' => 'Entrez un numéro et une référence pour conserver la transaction liée à vos dossiers.',
],
'slider' => [
diff --git a/resources/lang/lv-LV/countries.php b/resources/lang/lv-LV/countries.php
index 78e5f2a00..c4d00d67d 100644
--- a/resources/lang/lv-LV/countries.php
+++ b/resources/lang/lv-LV/countries.php
@@ -1,6 +1,7 @@
'Afganistāna',
'AX' => 'Ālandu salas',
'AL' => 'Albānija',
@@ -119,6 +120,7 @@ return [
'KZ' => 'Kazahstāna',
'KE' => 'Kenija',
'KI' => 'Kiribati',
+ 'XK' => 'Kosova',
'KW' => 'Kuveita',
'KG' => 'Kirgizstāna',
'LA' => 'Laosa',
@@ -250,4 +252,5 @@ return [
'YE' => 'Jemena',
'ZM' => 'Zambija',
'ZW' => 'Zimbabve',
+
];
diff --git a/resources/lang/lv-LV/general.php b/resources/lang/lv-LV/general.php
index c155c80bc..fd9158e39 100644
--- a/resources/lang/lv-LV/general.php
+++ b/resources/lang/lv-LV/general.php
@@ -270,6 +270,8 @@ return [
'placeholder' => [
'search' => 'Ierakstiet, lai meklētu..',
'search_and_filter' => 'Meklēšanas vai filtrēšanas rezultāti..',
+ 'select_and_filter' => 'Tālāk atlasiet vienu no pieejamajām opcijām',
+ 'enter_and_filter' => 'Nospiediet Enter, lai filtrētu rezultātus, vai iestatiet jaunu filtru',
'contact_search' => 'Ierakstiet :type nosaukumu',
'item_search' => 'Ierakstiet vienuma nosaukumu',
],
diff --git a/resources/lang/pt-BR/modules.php b/resources/lang/pt-BR/modules.php
index 7cc073bbc..6398adc73 100644
--- a/resources/lang/pt-BR/modules.php
+++ b/resources/lang/pt-BR/modules.php
@@ -43,6 +43,11 @@ return [
'apps_managing' => 'Verifique os apps mais populares e comece a gerenciar suas finanças profissionalmente hoje.',
'ready' => 'Disponível',
'popular_this_week' => 'Popular dessa semana',
+ 'install_cloud' => 'Usar Serviço na Nuvem',
+ 'get_cloud' => 'Obter Serviço de Nuvem',
+ 'get_premium_cloud' => 'Obter Nuvem Premium',
+ 'only_works_cloud' => 'Este aplicativo só funciona no Serviço na Nuvem.',
+ 'only_premium_plan' => 'Este aplicativo funciona apenas com o Serviço Premium na Nuvem.',
'about' => 'Sobre',
diff --git a/resources/lang/pt-BR/notifications.php b/resources/lang/pt-BR/notifications.php
index c83b7654f..0314295f8 100644
--- a/resources/lang/pt-BR/notifications.php
+++ b/resources/lang/pt-BR/notifications.php
@@ -9,6 +9,7 @@ return [
'mark_read' => 'Marcar como lido',
'mark_read_all' => 'Marcar todos como lidos',
'empty' => 'Woohoo, zero notificações!',
+ 'new_apps' => ':app está disponível. Confira agora!',
'update' => [
diff --git a/resources/lang/ur-PK/accounts.php b/resources/lang/ur-PK/accounts.php
index 3585b49c0..986540a3c 100644
--- a/resources/lang/ur-PK/accounts.php
+++ b/resources/lang/ur-PK/accounts.php
@@ -3,6 +3,7 @@
return [
'account_name' => 'اکاؤنٹ کا نام',
+ 'account_balance' => 'اکاؤنٹ بیلنس',
'number' => 'بینک میں اکائونٹ نمبر',
'opening_balance' => 'افتتاحی رقم',
'current_balance' => 'موجودہ رقم',
@@ -10,5 +11,21 @@ return [
'bank_phone' => 'بینک کا فون',
'bank_address' => 'بینک کا پتہ',
'default_account' => 'طے شدہ اکاؤنٹ',
+ 'incoming' => 'آمدہ رقم',
+ 'outgoing' => 'خرچ',
+ 'see_performance' => 'کارکردگی دیکھیں',
+ 'create_report' => 'اگر آپ کھاتے کی کارکردگی دیکھنا چاہتے ہیں تو آپ آمدنی بمقابلہ خرچہ کی فرضی روپورٹ بنائیں۔',
+ 'banks' => 'بینک | بینکوں',
+ 'credit_cards' => 'کریڈٹ کارڈ | کریڈٹ کارڈز',
+
+ 'form_description' => [
+ 'general' => 'منفی اوپنیگ بیلینس کے لئے کریڈٹ کارڈ استعمال کریں۔کھاتے کودرست طریقے سے ملانے کیلئےنمبر ضروری ہیں۔اگر کوئی کھاتہ منتخب نہیں کیا گیا تو طے شدہ کھاتے میں لین دین ریکارڈ ہو گا۔',
+ 'bank' => 'آپ کے ایک سے زیادہ بینکوں میں متعدد بینک اکاؤنٹس ہوسکتے ہیں۔ آپ کے بینک کے بارے میں معلومات کو ریکارڈ کرنے سے بینک کے اندر ہونے والی لین دین کو ملانا آسان ہو جائے گا۔',
+ ],
+
+ 'no_records' => [
+ 'transactions' => 'اس اکائونٹ میں کوئی لین دین نہیں ہوا۔ ابھی ایک نیا لین دین بنائیں۔',
+ 'transfers' => 'اس اکائونٹ میں کوئی لین دین نہیں ہوا۔ ابھی ایک نیا لین دین بنائیں۔',
+ ],
];
diff --git a/resources/views/components/layouts/modules/show/buttons.blade.php b/resources/views/components/layouts/modules/show/buttons.blade.php
index d6bf865ed..12c1c69f7 100644
--- a/resources/views/components/layouts/modules/show/buttons.blade.php
+++ b/resources/views/components/layouts/modules/show/buttons.blade.php
@@ -1,45 +1,61 @@
@props(['module', 'installed', 'enable'])
-@if ($installed)
- @can('delete-modules-item')
-
- {{ trans('modules.button.uninstall') }}
-
- @endcan
+@if (! empty($module->plan))
+
+ {{ trans('modules.get_premium_cloud') }}
+
+@elseif (in_array('onprime', $module->where_to_use))
+ @if ($installed)
+ @can('delete-modules-item')
+
+ {{ trans('modules.button.uninstall') }}
+
+ @endcan
- @can('update-modules-item')
- @if ($enable)
-
- {{ trans('modules.button.disable') }}
-
- @else
-
- {{ trans('modules.button.enable') }}
-
- @endif
- @endcan
-@else
- @can('create-modules-item')
- @if ($module->install)
- @if (! empty($module->isPurchase) && (! empty($module->purchase_type) && $module->purchase_type == 'monthly'))
-