Merge branch 'master' of https://github.com/brkcvn/akaunting into form-elements
This commit is contained in:
commit
7fa6edbd9f
@ -14,6 +14,7 @@ use App\Exports\Common\Reports as Export;
|
|||||||
use App\Models\Common\Report as Model;
|
use App\Models\Common\Report as Model;
|
||||||
use App\Models\Document\Document;
|
use App\Models\Document\Document;
|
||||||
use App\Models\Setting\Category;
|
use App\Models\Setting\Category;
|
||||||
|
use App\Traits\Charts;
|
||||||
use App\Traits\DateTime;
|
use App\Traits\DateTime;
|
||||||
use App\Traits\SearchString;
|
use App\Traits\SearchString;
|
||||||
use App\Traits\Translations;
|
use App\Traits\Translations;
|
||||||
@ -23,7 +24,7 @@ use Illuminate\Support\Str;
|
|||||||
|
|
||||||
abstract class Report
|
abstract class Report
|
||||||
{
|
{
|
||||||
use DateTime, SearchString, Translations;
|
use Charts, DateTime, SearchString, Translations;
|
||||||
|
|
||||||
public $model;
|
public $model;
|
||||||
|
|
||||||
@ -60,9 +61,19 @@ abstract class Report
|
|||||||
'colors' => [
|
'colors' => [
|
||||||
'#6da252',
|
'#6da252',
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'yaxis' => [
|
||||||
|
'labels' => [
|
||||||
|
'formatter' => '',
|
||||||
|
],
|
||||||
|
],
|
||||||
],
|
],
|
||||||
'donut' => [
|
'donut' => [
|
||||||
//
|
'yaxis' => [
|
||||||
|
'labels' => [
|
||||||
|
'formatter' => '',
|
||||||
|
],
|
||||||
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -100,6 +111,7 @@ abstract class Report
|
|||||||
$this->setRows();
|
$this->setRows();
|
||||||
$this->loadData();
|
$this->loadData();
|
||||||
$this->setColumnWidth();
|
$this->setColumnWidth();
|
||||||
|
$this->setChartLabelFormatter();
|
||||||
|
|
||||||
$this->loaded = true;
|
$this->loaded = true;
|
||||||
}
|
}
|
||||||
@ -284,6 +296,12 @@ abstract class Report
|
|||||||
$this->column_name_width = $this->column_value_width = $width;
|
$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()
|
public function setYear()
|
||||||
{
|
{
|
||||||
$this->year = $this->getSearchStringValue('year', Date::now()->year);
|
$this->year = $this->getSearchStringValue('year', Date::now()->year);
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
namespace App\Traits;
|
namespace App\Traits;
|
||||||
|
|
||||||
use Akaunting\Apexcharts\Chart;
|
use Akaunting\Apexcharts\Chart;
|
||||||
|
use Balping\JsonRaw\Raw;
|
||||||
|
|
||||||
trait Charts
|
trait Charts
|
||||||
{
|
{
|
||||||
@ -89,4 +90,79 @@ trait Charts
|
|||||||
|
|
||||||
return $chart;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,13 +5,14 @@ namespace App\Widgets;
|
|||||||
use Akaunting\Apexcharts\Chart;
|
use Akaunting\Apexcharts\Chart;
|
||||||
use App\Abstracts\Widget;
|
use App\Abstracts\Widget;
|
||||||
use App\Models\Banking\Transaction;
|
use App\Models\Banking\Transaction;
|
||||||
|
use App\Traits\Charts;
|
||||||
use App\Traits\Currencies;
|
use App\Traits\Currencies;
|
||||||
use App\Traits\DateTime;
|
use App\Traits\DateTime;
|
||||||
use App\Utilities\Date;
|
use App\Utilities\Date;
|
||||||
|
|
||||||
class CashFlow extends Widget
|
class CashFlow extends Widget
|
||||||
{
|
{
|
||||||
use Currencies, DateTime;
|
use Charts, Currencies, DateTime;
|
||||||
|
|
||||||
public $default_name = 'widgets.cash_flow';
|
public $default_name = 'widgets.cash_flow';
|
||||||
|
|
||||||
@ -53,6 +54,11 @@ class CashFlow extends Widget
|
|||||||
'legend' => [
|
'legend' => [
|
||||||
'position' => 'top',
|
'position' => 'top',
|
||||||
],
|
],
|
||||||
|
'yaxis' => [
|
||||||
|
'labels' => [
|
||||||
|
'formatter' => $this->getFormatLabel(),
|
||||||
|
],
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
$chart = new Chart();
|
$chart = new Chart();
|
||||||
|
@ -48,6 +48,12 @@ class ProfitLoss extends Widget
|
|||||||
'radius' => '12',
|
'radius' => '12',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'yaxis' => [
|
||||||
|
'labels' => [
|
||||||
|
'formatter' => $this->getFormatLabel(),
|
||||||
|
],
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
$chart->setType('bar')
|
$chart->setType('bar')
|
||||||
|
97
composer.lock
generated
97
composer.lock
generated
@ -8,16 +8,16 @@
|
|||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "akaunting/laravel-apexcharts",
|
"name": "akaunting/laravel-apexcharts",
|
||||||
"version": "2.0.2",
|
"version": "2.0.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/akaunting/laravel-apexcharts.git",
|
"url": "https://github.com/akaunting/laravel-apexcharts.git",
|
||||||
"reference": "5d584f362afc080c5506abe13ac7d6ac3865d68f"
|
"reference": "e21687886162efb3717efc5cab57943eed20b366"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/akaunting/laravel-apexcharts/zipball/5d584f362afc080c5506abe13ac7d6ac3865d68f",
|
"url": "https://api.github.com/repos/akaunting/laravel-apexcharts/zipball/e21687886162efb3717efc5cab57943eed20b366",
|
||||||
"reference": "5d584f362afc080c5506abe13ac7d6ac3865d68f",
|
"reference": "e21687886162efb3717efc5cab57943eed20b366",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -71,9 +71,9 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/akaunting/laravel-apexcharts/issues",
|
"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",
|
"name": "akaunting/laravel-debugbar-collector",
|
||||||
@ -907,16 +907,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "aws/aws-sdk-php",
|
"name": "aws/aws-sdk-php",
|
||||||
"version": "3.227.0",
|
"version": "3.228.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/aws/aws-sdk-php.git",
|
"url": "https://github.com/aws/aws-sdk-php.git",
|
||||||
"reference": "88d803113ade68604ec03c591d65e1e44406ab8e"
|
"reference": "4dad57c95c7ff1dfcea29a7877ce64720b3318c3"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/88d803113ade68604ec03c591d65e1e44406ab8e",
|
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/4dad57c95c7ff1dfcea29a7877ce64720b3318c3",
|
||||||
"reference": "88d803113ade68604ec03c591d65e1e44406ab8e",
|
"reference": "4dad57c95c7ff1dfcea29a7877ce64720b3318c3",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -924,7 +924,7 @@
|
|||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"ext-pcre": "*",
|
"ext-pcre": "*",
|
||||||
"ext-simplexml": "*",
|
"ext-simplexml": "*",
|
||||||
"guzzlehttp/guzzle": "^6.5.7 || ^7.4.4",
|
"guzzlehttp/guzzle": "^6.5.8 || ^7.4.5",
|
||||||
"guzzlehttp/promises": "^1.4.0",
|
"guzzlehttp/promises": "^1.4.0",
|
||||||
"guzzlehttp/psr7": "^1.8.5 || ^2.3",
|
"guzzlehttp/psr7": "^1.8.5 || ^2.3",
|
||||||
"mtdowling/jmespath.php": "^2.6",
|
"mtdowling/jmespath.php": "^2.6",
|
||||||
@ -992,9 +992,9 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
|
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
|
||||||
"issues": "https://github.com/aws/aws-sdk-php/issues",
|
"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",
|
"name": "balping/json-raw-encoder",
|
||||||
@ -2389,16 +2389,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "egulias/email-validator",
|
"name": "egulias/email-validator",
|
||||||
"version": "3.2",
|
"version": "3.2.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/egulias/EmailValidator.git",
|
"url": "https://github.com/egulias/EmailValidator.git",
|
||||||
"reference": "a5ed8d58ed0c340a7c2109f587951b1c84cf6286"
|
"reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/a5ed8d58ed0c340a7c2109f587951b1c84cf6286",
|
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f88dcf4b14af14a98ad96b14b2b317969eab6715",
|
||||||
"reference": "a5ed8d58ed0c340a7c2109f587951b1c84cf6286",
|
"reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2445,7 +2445,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/egulias/EmailValidator/issues",
|
"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": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -2453,7 +2453,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-05-28T22:19:18+00:00"
|
"time": "2022-06-18T20:57:19+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ezyang/htmlpurifier",
|
"name": "ezyang/htmlpurifier",
|
||||||
@ -2925,22 +2925,22 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "guzzlehttp/guzzle",
|
"name": "guzzlehttp/guzzle",
|
||||||
"version": "7.4.4",
|
"version": "7.4.5",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/guzzle/guzzle.git",
|
"url": "https://github.com/guzzle/guzzle.git",
|
||||||
"reference": "e3ff079b22820c2029d4c2a87796b6a0b8716ad8"
|
"reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/e3ff079b22820c2029d4c2a87796b6a0b8716ad8",
|
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82",
|
||||||
"reference": "e3ff079b22820c2029d4c2a87796b6a0b8716ad8",
|
"reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"guzzlehttp/promises": "^1.5",
|
"guzzlehttp/promises": "^1.5",
|
||||||
"guzzlehttp/psr7": "^1.8.3 || ^2.1",
|
"guzzlehttp/psr7": "^1.9 || ^2.4",
|
||||||
"php": "^7.2.5 || ^8.0",
|
"php": "^7.2.5 || ^8.0",
|
||||||
"psr/http-client": "^1.0",
|
"psr/http-client": "^1.0",
|
||||||
"symfony/deprecation-contracts": "^2.2 || ^3.0"
|
"symfony/deprecation-contracts": "^2.2 || ^3.0"
|
||||||
@ -3029,7 +3029,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/guzzle/guzzle/issues",
|
"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": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -3045,7 +3045,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-06-09T21:39:15+00:00"
|
"time": "2022-06-20T22:16:13+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "guzzlehttp/promises",
|
"name": "guzzlehttp/promises",
|
||||||
@ -3133,16 +3133,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "guzzlehttp/psr7",
|
"name": "guzzlehttp/psr7",
|
||||||
"version": "2.3.0",
|
"version": "2.4.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/guzzle/psr7.git",
|
"url": "https://github.com/guzzle/psr7.git",
|
||||||
"reference": "83260bb50b8fc753c72d14dc1621a2dac31877ee"
|
"reference": "13388f00956b1503577598873fffb5ae994b5737"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/guzzle/psr7/zipball/83260bb50b8fc753c72d14dc1621a2dac31877ee",
|
"url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737",
|
||||||
"reference": "83260bb50b8fc753c72d14dc1621a2dac31877ee",
|
"reference": "13388f00956b1503577598873fffb5ae994b5737",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -3166,7 +3166,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "2.3-dev"
|
"dev-master": "2.4-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@ -3228,7 +3228,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/guzzle/psr7/issues",
|
"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": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -3244,7 +3244,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-06-09T08:26:02+00:00"
|
"time": "2022-06-20T21:43:11+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "hoa/compiler",
|
"name": "hoa/compiler",
|
||||||
@ -4473,16 +4473,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/framework",
|
"name": "laravel/framework",
|
||||||
"version": "v9.17.0",
|
"version": "v9.18.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/laravel/framework.git",
|
"url": "https://github.com/laravel/framework.git",
|
||||||
"reference": "091e287678ac723c591509ca6374e4ded4a99b1c"
|
"reference": "93a1296bca43c1ca8dcb5df8f97107e819a71499"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/laravel/framework/zipball/091e287678ac723c591509ca6374e4ded4a99b1c",
|
"url": "https://api.github.com/repos/laravel/framework/zipball/93a1296bca43c1ca8dcb5df8f97107e819a71499",
|
||||||
"reference": "091e287678ac723c591509ca6374e4ded4a99b1c",
|
"reference": "93a1296bca43c1ca8dcb5df8f97107e819a71499",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -4494,7 +4494,7 @@
|
|||||||
"fruitcake/php-cors": "^1.2",
|
"fruitcake/php-cors": "^1.2",
|
||||||
"laravel/serializable-closure": "^1.0",
|
"laravel/serializable-closure": "^1.0",
|
||||||
"league/commonmark": "^2.2",
|
"league/commonmark": "^2.2",
|
||||||
"league/flysystem": "^3.0",
|
"league/flysystem": "^3.0.16",
|
||||||
"monolog/monolog": "^2.0",
|
"monolog/monolog": "^2.0",
|
||||||
"nesbot/carbon": "^2.53.1",
|
"nesbot/carbon": "^2.53.1",
|
||||||
"php": "^8.0.2",
|
"php": "^8.0.2",
|
||||||
@ -4570,7 +4570,7 @@
|
|||||||
"pda/pheanstalk": "^4.0",
|
"pda/pheanstalk": "^4.0",
|
||||||
"phpstan/phpstan": "^1.4.7",
|
"phpstan/phpstan": "^1.4.7",
|
||||||
"phpunit/phpunit": "^9.5.8",
|
"phpunit/phpunit": "^9.5.8",
|
||||||
"predis/predis": "^1.1.9",
|
"predis/predis": "^1.1.9|^2.0",
|
||||||
"symfony/cache": "^6.0"
|
"symfony/cache": "^6.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
@ -4596,7 +4596,7 @@
|
|||||||
"nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
|
"nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
|
||||||
"pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).",
|
"pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).",
|
||||||
"phpunit/phpunit": "Required to use assertions and run tests (^9.5.8).",
|
"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).",
|
"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).",
|
"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).",
|
"symfony/cache": "Required to PSR-6 cache bridge (^6.0).",
|
||||||
@ -4648,7 +4648,7 @@
|
|||||||
"issues": "https://github.com/laravel/framework/issues",
|
"issues": "https://github.com/laravel/framework/issues",
|
||||||
"source": "https://github.com/laravel/framework"
|
"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",
|
"name": "laravel/sanctum",
|
||||||
@ -12660,16 +12660,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit",
|
"name": "phpunit/phpunit",
|
||||||
"version": "9.5.20",
|
"version": "9.5.21",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||||
"reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba"
|
"reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba",
|
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1",
|
||||||
"reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba",
|
"reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -12703,7 +12703,6 @@
|
|||||||
"sebastian/version": "^3.0.2"
|
"sebastian/version": "^3.0.2"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"ext-pdo": "*",
|
|
||||||
"phpspec/prophecy-phpunit": "^2.0.1"
|
"phpspec/prophecy-phpunit": "^2.0.1"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
@ -12747,7 +12746,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
"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": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -12759,7 +12758,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-04-01T12:37:26+00:00"
|
"time": "2022-06-19T12:14:25+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/cli-parser",
|
"name": "sebastian/cli-parser",
|
||||||
@ -14179,5 +14178,5 @@
|
|||||||
"ext-zip": "*"
|
"ext-zip": "*"
|
||||||
},
|
},
|
||||||
"platform-dev": [],
|
"platform-dev": [],
|
||||||
"plugin-api-version": "2.3.0"
|
"plugin-api-version": "2.2.0"
|
||||||
}
|
}
|
||||||
|
@ -10,15 +10,15 @@ return [
|
|||||||
|
|
||||||
'minor' => '0',
|
'minor' => '0',
|
||||||
|
|
||||||
'patch' => '2',
|
'patch' => '3',
|
||||||
|
|
||||||
'build' => '',
|
'build' => '',
|
||||||
|
|
||||||
'status' => 'Stable',
|
'status' => 'Stable',
|
||||||
|
|
||||||
'date' => '18-June-2022',
|
'date' => '25-June-2022',
|
||||||
|
|
||||||
'time' => '01:00',
|
'time' => '10:00',
|
||||||
|
|
||||||
'zone' => 'GMT +3',
|
'zone' => 'GMT +3',
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
return [
|
return [
|
||||||
|
|
||||||
'account_name' => 'اسم الحساب',
|
'account_name' => 'اسم الحساب',
|
||||||
|
'account_balance' => 'رصيد الحساب',
|
||||||
'number' => 'الرقم',
|
'number' => 'الرقم',
|
||||||
'opening_balance' => 'الرصيد الافتتاحي',
|
'opening_balance' => 'الرصيد الافتتاحي',
|
||||||
'current_balance' => 'الرصيد الحالي',
|
'current_balance' => 'الرصيد الحالي',
|
||||||
@ -14,5 +15,17 @@ return [
|
|||||||
'outgoing' => 'الصادر',
|
'outgoing' => 'الصادر',
|
||||||
'see_performance' => 'تصفح الأداء',
|
'see_performance' => 'تصفح الأداء',
|
||||||
'create_report' => 'إذا كنت ترغب في رؤية أداء الحساب. يمكنك إنشاء نموذج تقرير الدخل مقابل المصروفات.',
|
'create_report' => 'إذا كنت ترغب في رؤية أداء الحساب. يمكنك إنشاء نموذج تقرير الدخل مقابل المصروفات.',
|
||||||
|
'banks' => 'البنك|البنوك',
|
||||||
|
'credit_cards' => 'بطاقة الائتمان|بطاقات الائتمان',
|
||||||
|
|
||||||
|
'form_description' => [
|
||||||
|
'general' => 'استخدم نوع بطاقة الائتمان لرصيد الفتح السالب. الرقم ضروري لمطابقة الحسابات بشكل صحيح. الحساب الافتراضي سوف يسجل جميع المعاملات إذا لم يتم تحديد خلاف ذلك.',
|
||||||
|
'bank' => 'قد يكون لديك حسابات مصرفية متعددة في أكثر من مصرف. تسجيل المعلومات حول المصرف الخاص بك سيسهل عملية مطابقة المعاملات داخل المصرف الخاص بك.',
|
||||||
|
],
|
||||||
|
|
||||||
|
'no_records' => [
|
||||||
|
'transactions' => 'لا توجد معاملات في هذا الحساب حتى الآن. أنشئ معاملة جديدة الآن.',
|
||||||
|
'transfers' => 'لا يوجد أي تحويلات من أو إلى هذا الحساب حتى الآن. أنشئ تحويل جديد الآن.',
|
||||||
|
],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
@ -9,4 +9,12 @@ return [
|
|||||||
'compound' => 'مُركب',
|
'compound' => 'مُركب',
|
||||||
'fixed' => 'ثابت',
|
'fixed' => 'ثابت',
|
||||||
'withholding' => 'حجز',
|
'withholding' => 'حجز',
|
||||||
|
'no_taxes' => 'لا توجد ضرائب',
|
||||||
|
'create_task' => 'إنشاء ضريبة جديدة ويمكن تحريرها في أي وقت من الإعدادات.',
|
||||||
|
'new_tax' => 'ضريبة جديدة',
|
||||||
|
|
||||||
|
'form_description' => [
|
||||||
|
'general' => 'يتم حساب الضريبة الشاملة إلى سعر العنصر. يتم حساب الضريبة المركبة فوق الضرائب الأخرى. يتم تطبيق الضريبة الثابتة كمبلغ وليس كنسبة مئوية.',
|
||||||
|
],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
@ -270,6 +270,8 @@ return [
|
|||||||
'placeholder' => [
|
'placeholder' => [
|
||||||
'search' => 'Unesite pojam za pretragu',
|
'search' => 'Unesite pojam za pretragu',
|
||||||
'search_and_filter' => 'Pretraga ili filtriranje pretrage.',
|
'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',
|
'contact_search' => 'Unesite :type naziv',
|
||||||
'item_search' => 'Unesite naziv predmeta',
|
'item_search' => 'Unesite naziv predmeta',
|
||||||
],
|
],
|
||||||
|
@ -270,6 +270,8 @@ return [
|
|||||||
'placeholder' => [
|
'placeholder' => [
|
||||||
'search' => 'Type to search..',
|
'search' => 'Type to search..',
|
||||||
'search_and_filter' => 'Search or filter results..',
|
'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',
|
'contact_search' => 'Type a :type name',
|
||||||
'item_search' => 'Type an item name',
|
'item_search' => 'Type an item name',
|
||||||
],
|
],
|
||||||
|
@ -43,6 +43,11 @@ return [
|
|||||||
'apps_managing' => 'Check the most trending apps and start managing your finances professionally today.',
|
'apps_managing' => 'Check the most trending apps and start managing your finances professionally today.',
|
||||||
'ready' => 'Ready',
|
'ready' => 'Ready',
|
||||||
'popular_this_week' => 'Popular this week',
|
'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 <strong>Cloud Service</strong>.',
|
||||||
|
'only_premium_plan' => 'This app only works on <strong>Cloud Premium Service</strong>.',
|
||||||
|
|
||||||
'about' => 'About',
|
'about' => 'About',
|
||||||
|
|
||||||
|
@ -270,6 +270,8 @@ return [
|
|||||||
'placeholder' => [
|
'placeholder' => [
|
||||||
'search' => 'Tapez pour rechercher..',
|
'search' => 'Tapez pour rechercher..',
|
||||||
'search_and_filter' => 'Rechercher ou filtrer les résultats...',
|
'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',
|
'contact_search' => 'Tapez un nom de :type',
|
||||||
'item_search' => 'Tapez un nom d\'élément',
|
'item_search' => 'Tapez un nom d\'élément',
|
||||||
],
|
],
|
||||||
|
@ -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.',
|
'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_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.',
|
'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' => [
|
'slider' => [
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
|
||||||
'AF' => 'Afganistāna',
|
'AF' => 'Afganistāna',
|
||||||
'AX' => 'Ālandu salas',
|
'AX' => 'Ālandu salas',
|
||||||
'AL' => 'Albānija',
|
'AL' => 'Albānija',
|
||||||
@ -119,6 +120,7 @@ return [
|
|||||||
'KZ' => 'Kazahstāna',
|
'KZ' => 'Kazahstāna',
|
||||||
'KE' => 'Kenija',
|
'KE' => 'Kenija',
|
||||||
'KI' => 'Kiribati',
|
'KI' => 'Kiribati',
|
||||||
|
'XK' => 'Kosova',
|
||||||
'KW' => 'Kuveita',
|
'KW' => 'Kuveita',
|
||||||
'KG' => 'Kirgizstāna',
|
'KG' => 'Kirgizstāna',
|
||||||
'LA' => 'Laosa',
|
'LA' => 'Laosa',
|
||||||
@ -250,4 +252,5 @@ return [
|
|||||||
'YE' => 'Jemena',
|
'YE' => 'Jemena',
|
||||||
'ZM' => 'Zambija',
|
'ZM' => 'Zambija',
|
||||||
'ZW' => 'Zimbabve',
|
'ZW' => 'Zimbabve',
|
||||||
|
|
||||||
];
|
];
|
||||||
|
@ -270,6 +270,8 @@ return [
|
|||||||
'placeholder' => [
|
'placeholder' => [
|
||||||
'search' => 'Ierakstiet, lai meklētu..',
|
'search' => 'Ierakstiet, lai meklētu..',
|
||||||
'search_and_filter' => 'Meklēšanas vai filtrēšanas rezultāti..',
|
'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',
|
'contact_search' => 'Ierakstiet :type nosaukumu',
|
||||||
'item_search' => 'Ierakstiet vienuma nosaukumu',
|
'item_search' => 'Ierakstiet vienuma nosaukumu',
|
||||||
],
|
],
|
||||||
|
@ -43,6 +43,11 @@ return [
|
|||||||
'apps_managing' => 'Verifique os apps mais populares e comece a gerenciar suas finanças profissionalmente hoje.',
|
'apps_managing' => 'Verifique os apps mais populares e comece a gerenciar suas finanças profissionalmente hoje.',
|
||||||
'ready' => 'Disponível',
|
'ready' => 'Disponível',
|
||||||
'popular_this_week' => 'Popular dessa semana',
|
'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 <strong>Serviço na Nuvem</strong>.',
|
||||||
|
'only_premium_plan' => 'Este aplicativo funciona apenas com o <strong>Serviço Premium na Nuvem</strong>.',
|
||||||
|
|
||||||
'about' => 'Sobre',
|
'about' => 'Sobre',
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ return [
|
|||||||
'mark_read' => 'Marcar como lido',
|
'mark_read' => 'Marcar como lido',
|
||||||
'mark_read_all' => 'Marcar todos como lidos',
|
'mark_read_all' => 'Marcar todos como lidos',
|
||||||
'empty' => 'Woohoo, zero notificações!',
|
'empty' => 'Woohoo, zero notificações!',
|
||||||
|
'new_apps' => ':app está disponível. <a href=":url">Confira agora</a>!',
|
||||||
|
|
||||||
'update' => [
|
'update' => [
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
return [
|
return [
|
||||||
|
|
||||||
'account_name' => 'اکاؤنٹ کا نام',
|
'account_name' => 'اکاؤنٹ کا نام',
|
||||||
|
'account_balance' => 'اکاؤنٹ بیلنس',
|
||||||
'number' => 'بینک میں اکائونٹ نمبر',
|
'number' => 'بینک میں اکائونٹ نمبر',
|
||||||
'opening_balance' => 'افتتاحی رقم',
|
'opening_balance' => 'افتتاحی رقم',
|
||||||
'current_balance' => 'موجودہ رقم',
|
'current_balance' => 'موجودہ رقم',
|
||||||
@ -10,5 +11,21 @@ return [
|
|||||||
'bank_phone' => 'بینک کا فون',
|
'bank_phone' => 'بینک کا فون',
|
||||||
'bank_address' => 'بینک کا پتہ',
|
'bank_address' => 'بینک کا پتہ',
|
||||||
'default_account' => 'طے شدہ اکاؤنٹ',
|
'default_account' => 'طے شدہ اکاؤنٹ',
|
||||||
|
'incoming' => 'آمدہ رقم',
|
||||||
|
'outgoing' => 'خرچ',
|
||||||
|
'see_performance' => 'کارکردگی دیکھیں',
|
||||||
|
'create_report' => 'اگر آپ کھاتے کی کارکردگی دیکھنا چاہتے ہیں تو آپ آمدنی بمقابلہ خرچہ کی فرضی روپورٹ بنائیں۔',
|
||||||
|
'banks' => 'بینک | بینکوں',
|
||||||
|
'credit_cards' => 'کریڈٹ کارڈ | کریڈٹ کارڈز',
|
||||||
|
|
||||||
|
'form_description' => [
|
||||||
|
'general' => 'منفی اوپنیگ بیلینس کے لئے کریڈٹ کارڈ استعمال کریں۔کھاتے کودرست طریقے سے ملانے کیلئےنمبر ضروری ہیں۔اگر کوئی کھاتہ منتخب نہیں کیا گیا تو طے شدہ کھاتے میں لین دین ریکارڈ ہو گا۔',
|
||||||
|
'bank' => 'آپ کے ایک سے زیادہ بینکوں میں متعدد بینک اکاؤنٹس ہوسکتے ہیں۔ آپ کے بینک کے بارے میں معلومات کو ریکارڈ کرنے سے بینک کے اندر ہونے والی لین دین کو ملانا آسان ہو جائے گا۔',
|
||||||
|
],
|
||||||
|
|
||||||
|
'no_records' => [
|
||||||
|
'transactions' => 'اس اکائونٹ میں کوئی لین دین نہیں ہوا۔ ابھی ایک نیا لین دین بنائیں۔',
|
||||||
|
'transfers' => 'اس اکائونٹ میں کوئی لین دین نہیں ہوا۔ ابھی ایک نیا لین دین بنائیں۔',
|
||||||
|
],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
@ -1,45 +1,61 @@
|
|||||||
@props(['module', 'installed', 'enable'])
|
@props(['module', 'installed', 'enable'])
|
||||||
|
|
||||||
@if ($installed)
|
@if (! empty($module->plan))
|
||||||
@can('delete-modules-item')
|
<a href="{{ $module->action_url }}" class="bg-green hover:bg-green-700 rounded-md text-white text-sm text-center w-full py-2 truncate" target="_blank">
|
||||||
<a href="{{ route('apps.app.uninstall', $module->slug) }}" class="bg-red text-white rounded-md text-sm text-center w-1/2 py-2 truncate">
|
{{ trans('modules.get_premium_cloud') }}
|
||||||
{{ trans('modules.button.uninstall') }}
|
</a>
|
||||||
</a>
|
@elseif (in_array('onprime', $module->where_to_use))
|
||||||
@endcan
|
@if ($installed)
|
||||||
|
@can('delete-modules-item')
|
||||||
|
<a href="{{ route('apps.app.uninstall', $module->slug) }}" class="bg-red text-white rounded-md text-sm text-center w-1/2 py-2 truncate">
|
||||||
|
{{ trans('modules.button.uninstall') }}
|
||||||
|
</a>
|
||||||
|
@endcan
|
||||||
|
|
||||||
@can('update-modules-item')
|
@can('update-modules-item')
|
||||||
@if ($enable)
|
@if ($enable)
|
||||||
<a href="{{ route('apps.app.disable', $module->slug) }}" class="bg-orange rounded-md text-white w-1/2 text-center text-sm py-2 truncate">
|
<a href="{{ route('apps.app.disable', $module->slug) }}" class="bg-orange rounded-md text-white w-1/2 text-center text-sm py-2 truncate">
|
||||||
{{ trans('modules.button.disable') }}
|
{{ trans('modules.button.disable') }}
|
||||||
</a>
|
</a>
|
||||||
@else
|
|
||||||
<a href="{{ route('apps.app.enable', $module->slug) }}" class="bg-green rounded-md text-white text-sm text-center w-1/2 py-2 truncate">
|
|
||||||
{{ trans('modules.button.enable') }}
|
|
||||||
</a>
|
|
||||||
@endif
|
|
||||||
@endcan
|
|
||||||
@else
|
|
||||||
@can('create-modules-item')
|
|
||||||
@if ($module->install)
|
|
||||||
@if (! empty($module->isPurchase) && (! empty($module->purchase_type) && $module->purchase_type == 'monthly'))
|
|
||||||
<x-tooltip message="{!! trans('modules.can_not_install', ['app' => $module->name]) !!}" placement="right">
|
|
||||||
<x-button disabled="disabled">
|
|
||||||
{{ trans('modules.install') }}
|
|
||||||
</x-button>
|
|
||||||
</x-tooltip>
|
|
||||||
@else
|
@else
|
||||||
<button type="button"
|
<a href="{{ route('apps.app.enable', $module->slug) }}" class="bg-green rounded-md text-white text-sm text-center w-1/2 py-2 truncate">
|
||||||
@click="onInstall('{{ $module->action_url }}', '{{ $module->slug }}', '{!! str_replace("'", "\'", $module->name) !!}', '{{ $module->version }}')"
|
{{ trans('modules.button.enable') }}
|
||||||
class="bg-green hover:bg-green-700 rounded-md text-white text-sm text-center w-full py-2 truncate"
|
</a>
|
||||||
id="install-module"
|
|
||||||
>
|
|
||||||
{{ trans('modules.install') }}
|
|
||||||
</button>
|
|
||||||
@endif
|
@endif
|
||||||
@else
|
@endcan
|
||||||
<a href="{{ $module->action_url }}" class="bg-green hover:bg-green-700 rounded-md text-white text-sm text-center w-full py-2 truncate" target="_blank">
|
@else
|
||||||
{{ trans('modules.use_app') }}
|
@can('create-modules-item')
|
||||||
</a>
|
@if ($module->install)
|
||||||
@endif
|
@if (! empty($module->isPurchase) && (! empty($module->purchase_type) && $module->purchase_type == 'monthly'))
|
||||||
@endcan
|
<x-tooltip message="{!! trans('modules.can_not_install', ['app' => $module->name]) !!}" placement="right">
|
||||||
|
<x-button disabled="disabled">
|
||||||
|
{{ trans('modules.install') }}
|
||||||
|
</x-button>
|
||||||
|
</x-tooltip>
|
||||||
|
@else
|
||||||
|
<button type="button"
|
||||||
|
@click="onInstall('{{ $module->action_url }}', '{{ $module->slug }}', '{!! str_replace("'", "\'", $module->name) !!}', '{{ $module->version }}')"
|
||||||
|
class="bg-green hover:bg-green-700 rounded-md text-white text-sm text-center w-full py-2 truncate"
|
||||||
|
id="install-module"
|
||||||
|
>
|
||||||
|
{{ trans('modules.install') }}
|
||||||
|
</button>
|
||||||
|
@endif
|
||||||
|
@else
|
||||||
|
<a href="{{ $module->action_url }}" class="bg-green hover:bg-green-700 rounded-md text-white text-sm text-center w-full py-2 truncate" target="_blank">
|
||||||
|
{{ trans('modules.use_app') }}
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
|
@endcan
|
||||||
|
@endif
|
||||||
|
@else
|
||||||
|
@if ($module->install)
|
||||||
|
<a href="{{ $module->action_url }}" class="bg-green hover:bg-green-700 rounded-md text-white text-sm text-center w-full py-2 truncate" target="_blank">
|
||||||
|
{{ trans('modules.install_cloud') }}
|
||||||
|
</a>
|
||||||
|
@else
|
||||||
|
<a href="{{ $module->action_url }}" class="bg-green hover:bg-green-700 rounded-md text-white text-sm text-center w-full py-2 truncate" target="_blank">
|
||||||
|
{{ trans('modules.get_cloud') }}
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
@endif
|
@endif
|
||||||
|
@ -1,11 +1,25 @@
|
|||||||
@props(['module'])
|
@props(['module'])
|
||||||
|
|
||||||
<div x-show="price_type == true" class="text-center text-sm mt-3 mb--2">
|
@if (! empty($module->plan))
|
||||||
<span style="height: 21px;display: block;"></span>
|
<div class="text-center text-sm mt-3 mb--2 bg-red-100 rounded-lg p-2 cursor-default">
|
||||||
</div>
|
<span class="text-sm text-red-700">
|
||||||
|
{!! trans('modules.only_premium_plan') !!}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
@if (in_array('onprime', $module->where_to_use))
|
||||||
|
<div x-show="price_type == true" class="text-center text-sm mt-3 mb--2">
|
||||||
|
<span style="height: 21px;display: block;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div x-show="price_type == false" class="text-center text-sm mt-3 mb--2">
|
<div x-show="price_type == false" class="text-center text-sm mt-3 mb--2">
|
||||||
<span style="font-size: 12px;">
|
<span style="font-size: 12px;">
|
||||||
<span class="text-danger">*</span> <a href="https://akaunting.com/features/why-akaunting-cloud?utm_source=app_show&utm_medium=software&utm_campaign={{ str_replace('-', '', $module->slug) }}" target="_blank">{!! trans('modules.information_monthly') !!}</a>
|
<span class="text-red">*</span> <a href="https://akaunting.com/features/why-akaunting-cloud?utm_source=app_show&utm_medium=software&utm_campaign={{ str_replace('-', '', $module->slug) }}" target="_blank">{!! trans('modules.information_monthly') !!}</a>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@else
|
||||||
|
<div class="text-center text-sm mt-3 mb--2 bg-red-100 rounded-lg p-2 cursor-default">
|
||||||
|
<span class="text-sm text-red-700">
|
||||||
|
{!! trans('modules.only_works_cloud') !!}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
@ -1,23 +1,21 @@
|
|||||||
<x-form>
|
<x-form>
|
||||||
<div class="lg:absolute lg:ltr:right-0 lg:rtl:left-0 top-4">
|
<div class="lg:absolute lg:ltr:right-0 lg:rtl:left-0 top-4" x-on:click="price_type = ! price_type">
|
||||||
<label for="priceToggle" class="flex items-center cursor-pointer" x-on:click="price_type = ! price_type">
|
<div class="relative" x-model="price_type">
|
||||||
<div class="relative">
|
<div class="w-36 flex items-center bg-gray-200 p-1 ltr:mr-2 rtl:ml-2 rounded-lg">
|
||||||
<input type="checkbox" id="priceToggle" class="sr-only" x-model="price_type">
|
<button type="button"
|
||||||
|
class="w-18 flex justify-center px-2"
|
||||||
|
x-bind:class="price_type == true ? 'btn-outline-primary' : 'bg-white rounded-lg'"
|
||||||
|
>
|
||||||
|
{{ trans('general.monthly') }}
|
||||||
|
</button>
|
||||||
|
|
||||||
<div class="bg-purple-300 w-24 h-7 rounded-full">
|
<button type="button"
|
||||||
<span id="apps-toggle-monthly" class="monthly-badge text-xs text-white float-left ml-3 mt-1.5" x-show="price_type == true">
|
class="w-18 flex justify-center px-2"
|
||||||
{{ trans('general.monthly') }}
|
x-bind:class="price_type == false ? 'btn-outline-primary' : 'bg-white rounded-lg'"
|
||||||
</span>
|
>
|
||||||
|
{{ trans('general.yearly') }}
|
||||||
<span id="apps-toggle-yearly" class="yearly-badge text-xs text-white float-right mr-3 mt-1.5" x-show="price_type == false">
|
</button>
|
||||||
{{ trans('general.yearly') }}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="dot absolute left-1 top-1 bg-white w-5 h-5 rounded-full transition"
|
|
||||||
x-bind:style="price_type == true ? 'transform: translateX(333%)' : ' transform: translateX(0) '"
|
|
||||||
></div>
|
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</x-form>
|
</x-form>
|
||||||
|
@ -41,7 +41,9 @@
|
|||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<span>
|
<span>
|
||||||
@foreach ($module->categories as $module_category)
|
@foreach ($module->categories as $module_category)
|
||||||
<a href="{{ route('apps.categories.show', $module_category->slug) }}">{{ $module_category->name }}</a> </br>
|
<a href="{{ route('apps.categories.show', $module_category->slug) }}" class="text-sm">
|
||||||
|
{{ $module_category->name }}
|
||||||
|
</a>
|
||||||
@endforeach
|
@endforeach
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@ -63,6 +65,7 @@
|
|||||||
<i class="material-icons text-sm">star_border</i>
|
<i class="material-icons text-sm">star_border</i>
|
||||||
@endfor
|
@endfor
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="text-xs">
|
<p class="text-xs">
|
||||||
@if ($module->total_review)
|
@if ($module->total_review)
|
||||||
( {{ $module->total_review }} {{ trans('modules.tab.reviews') }} )
|
( {{ $module->total_review }} {{ trans('modules.tab.reviews') }} )
|
||||||
@ -73,10 +76,16 @@
|
|||||||
|
|
||||||
<div class="flex flex-col gap-1">
|
<div class="flex flex-col gap-1">
|
||||||
<div class="flex gap-4 items-baseline">
|
<div class="flex gap-4 items-baseline">
|
||||||
<h3 class="text-4xl font-semibold text-black">{{ $module->name }}</h3>
|
<h3 class="text-4xl font-semibold text-black">
|
||||||
|
{{ $module->name }}
|
||||||
|
</h3>
|
||||||
|
|
||||||
@if ($module->vendor_name)
|
@if ($module->vendor_name)
|
||||||
<span class="text-sm"> by <a class="border-b border-dashed border-black transition-all hover:font-semibold" href="{{ route('apps.vendors.show', $module->vendor->slug) }}">{{ $module->vendor_name }}</a></span>
|
<span class="text-sm">
|
||||||
|
by <a class="border-b border-dashed border-black transition-all hover:font-semibold" href="{{ route('apps.vendors.show', $module->vendor->slug) }}">
|
||||||
|
{{ $module->vendor_name }}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -42,7 +42,9 @@
|
|||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<span>
|
<span>
|
||||||
@foreach ($module->categories as $module_category)
|
@foreach ($module->categories as $module_category)
|
||||||
<a href="{{ route('apps.categories.show', $module_category->slug) }}">{{ $module_category->name }}</a> </br>
|
<a href="{{ route('apps.categories.show', $module_category->slug) }}" class="text-sm">
|
||||||
|
{{ $module_category->name }}
|
||||||
|
</a>
|
||||||
@endforeach
|
@endforeach
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<script type="text/javascript"><!--
|
<script type="text/javascript"><!--
|
||||||
var options = {!! json_encode($chart->getOptions()) !!};
|
var options = {!! $chart->getOptions() !!};
|
||||||
|
|
||||||
var chart_{{ $chart->getId() }} = new ApexCharts(document.querySelector("#{!! $chart->getId() !!}"), options);
|
var chart_{{ $chart->getId() }} = new ApexCharts(document.querySelector("#{!! $chart->getId() !!}"), options);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user