org -> unit change, some new functionality

This commit is contained in:
Dennis Eichhorn 2023-01-26 21:54:13 +01:00
parent 54413c44f4
commit 87053dc2c3
75 changed files with 9652 additions and 1 deletions

35
.github/dev_bug_report.md vendored Executable file
View File

@ -0,0 +1,35 @@
---
name: Dev Bug Report
about: Create a report to help us improve
title: ''
labels: stat_backlog, type_bug
assignees: ''
---
# Bug Description
A clear and concise description of what the bug is.
# How to Reproduce
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
## Minimal Code Example
```
// your code ...
```
# Expected Behavior
A clear and concise description of what you expected to happen.
# Screenshots
If applicable, add screenshots to help explain your problem.
# Additional Information
Add any other context about the problem here.

18
.github/dev_feature_request.md vendored Executable file
View File

@ -0,0 +1,18 @@
---
name: Dev Feature Request
about: Suggest an idea for this project
title: ''
labels: stat_backlog, type_feature
assignees: ''
---
# What is the feature you request
* A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
* A clear and concise description of what you want to happen.
# Alternatives
A clear and concise description of any alternative solutions or features you've considered.
# Additional Information
Add any other context or screenshots about the feature request here.

34
.github/user_bug_report.md vendored Executable file
View File

@ -0,0 +1,34 @@
---
name: User Bug Report
about: Create a report to help us improve
title: ''
labels: stat_backlog, type_bug
assignees: ''
---
# Bug Description
A clear and concise description of what the bug is.
# How to Reproduce
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
# Expected Behavior
A clear and concise description of what you expected to happen.
# Screenshots
If applicable, add screenshots to help explain your problem.
# System Information
- System: [e.g. PC or iPhone11, ...]
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- KarakaVersion [e.g. 22]
# Additional Information
Add any other context about the problem here.

18
.github/user_feature_request.md vendored Executable file
View File

@ -0,0 +1,18 @@
---
name: User Feature Request
about: Suggest an idea for this project
title: ''
labels: stat_backlog, type_feature
assignees: ''
---
# What is the feature you request
* A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
* A clear and concise description of what you want to happen.
# Alternatives
A clear and concise description of any alternative solutions or features you've considered.
# Additional Information
Add any other context or screenshots about the feature request here.

13
.github/workflows/greetings.yml vendored Executable file
View File

@ -0,0 +1,13 @@
name: Greetings
on: [pull_request, issues]
jobs:
greeting:
runs-on: ubuntu-latest
steps:
- uses: actions/first-interaction@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: 'Thank you for createing this issue. We will check it as soon as possible.'
pr-message: 'Thank you for your pull request. We will check it as soon as possible.'

24
.github/workflows/image.yml vendored Executable file
View File

@ -0,0 +1,24 @@
name: Compress images
on:
push:
paths:
- '**.jpg'
- '**.png'
- '**.webp'
pull_request:
paths:
- '**.jpg'
- '**.png'
- '**.webp'
jobs:
build:
name: calibreapp/image-actions
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@main
- name: Compress Images
uses: calibreapp/image-actions@main
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}

281
.github/workflows/main.yml vendored Executable file
View File

@ -0,0 +1,281 @@
name: CI
on: [push, pull_request]
jobs:
autoformat:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'NO_CI')"
strategy:
fail-fast: false
max-parallel: 3
steps:
- name: Checkout Repository
uses: actions/checkout@main
with:
fetch-depth: 1
- name: Get Composer Cache Directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Setup Composer
run: composer install
- name: Autoformat
run: 'vendor/bin/php-cs-fixer fix ./ --rules=''{"array_syntax": {"syntax": "short"}, "blank_line_after_namespace": true, "global_namespace_import": {"import_classes": false, "import_constants": false, "import_functions": false}, "binary_operator_spaces": {"operators": {"=": "align", ".=": "align", "+=": "align", "-=": "align", "*=": "align", "/=": "align", "|=": "align", "&=": "align", "=>": "align", "??=": "align"}}, "cast_spaces": {"space": "single"}, "class_attributes_separation": { "elements": {"const": "one", "method": "one", "property": "one"} }, "combine_consecutive_issets": true, "compact_nullable_typehint": true, "declare_strict_types": true, "declare_equal_normalize": {"space": "none"}, "elseif": true, "encoding": true, "explicit_indirect_variable": true, "explicit_string_variable": true, "function_to_constant": true, "implode_call": true, "increment_style": {"style": "pre"}, "is_null": true, "yoda_style": {"equal": false, "identical": false, "less_and_greater": false}, "line_ending": true, "logical_operators": true, "lowercase_cast": true, "constant_case": {"case": "lower"}, "lowercase_keywords": true, "modernize_types_casting": true, "native_constant_invocation": true, "native_function_casing": true, "native_function_invocation": {"include": ["@all"]}, "new_with_braces": true, "no_extra_blank_lines": {"tokens": ["break", "case", "continue", "curly_brace_block", "extra", "return", "switch", "throw", "use"]}, "no_spaces_after_function_name": true, "no_alias_functions": true, "no_closing_tag": true, "no_empty_comment": true, "no_empty_phpdoc": true, "no_empty_statement": true, "no_homoglyph_names": true, "no_mixed_echo_print": {"use": "echo"}, "no_php4_constructor": true, "no_singleline_whitespace_before_semicolons": true, "no_spaces_inside_parenthesis": true, "no_trailing_whitespace": true, "no_unneeded_final_method": true, "no_unused_imports": true, "no_useless_return": true, "no_whitespace_before_comma_in_array": true, "no_whitespace_in_blank_line": true, "non_printable_character": true, "normalize_index_brace": true, "ordered_imports": {"sort_algorithm": "alpha"}, "ordered_interfaces": {"order": "alpha"}, "php_unit_construct": true, "php_unit_internal_class": true, "php_unit_set_up_tear_down_visibility": true, "phpdoc_indent": true, "phpdoc_align": {"align": "vertical"}, "phpdoc_annotation_without_dot": true, "phpdoc_scalar": true, "phpdoc_return_self_reference": {"replacements": {"this": "self"}}, "phpdoc_trim": true, "phpdoc_trim_consecutive_blank_line_separation": true, "random_api_migration": true, "self_accessor": true, "return_type_declaration": {"space_before": "one"}, "semicolon_after_instruction": true, "set_type_to_cast": true, "short_scalar_cast": true, "single_blank_line_at_eof": true, "single_line_after_imports": true, "standardize_increment": true, "trailing_comma_in_multiline": true, "trim_array_spaces": true, "visibility_required": true, "void_return": true}'' --allow-risky=yes'
- name: Check for modified files
id: git-check
run: echo ::set-output name=modified::$(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi)
- name: Push changes
if: steps.git-check.outputs.modified == 'true'
run: |
git config --global user.name 'Formatter Bot'
git config --global user.email 'formatter.bot@karaka.app'
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
git commit -am "Automated formatting changes"
git push
code-tests:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'NO_CI')"
services:
mysql:
image: mysql:5.7
env:
MYSQL_ALLOW_EMPTY_PASSWORD: false
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: oms
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
postgres:
image: postgres:10.8
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: root
POSTGRES_DB: oms
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
redis:
image: redis
ports:
- 6379:6379
options: --entrypoint redis-server
memcached:
image: memcached
ports:
- 11211:11211
strategy:
fail-fast: false
max-parallel: 3
matrix:
php-versions: ['8.1']
steps:
- name: Checkout Repository
uses: actions/checkout@main
with:
fetch-depth: 1
- name: Checkout Build Repository
uses: actions/checkout@main
with:
fetch-depth: 1
ref: develop
repository: Karaka-Management/Build
path: Build
- name: Checkout Resource Repository
uses: actions/checkout@main
with:
fetch-depth: 1
ref: develop
repository: Karaka-Management/Resources
path: Resources
- name: Checkout phpOMS Repository
uses: actions/checkout@main
with:
fetch-depth: 1
ref: develop
repository: Karaka-Management/phpOMS
path: phpOMS
token: ${{ secrets.GH_PAT }}
- name: Checkout Karaka Repository
uses: actions/checkout@main
with:
fetch-depth: 1
ref: develop
repository: Karaka-Management/Karaka
path: Karaka
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, gd, zip, dom, mysql, pgsql, sqlite, imap, bcmath, redis, memcached
ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1
coverage: pcov
- name: Get Composer Cache Directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Setup Composer
run: composer install
- name: phpunit
run: vendor/bin/phpunit --coverage-clover tests/coverage.xml --configuration tests/phpunit_default.xml
static-tests:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'NO_CI')"
strategy:
fail-fast: false
max-parallel: 3
matrix:
php-versions: ['8.1']
steps:
- name: Checkout Repository
uses: actions/checkout@main
with:
fetch-depth: 1
submodules: recursive
token: ${{ secrets.GH_PAT }}
- name: Checkout Build Repository
uses: actions/checkout@main
with:
fetch-depth: 1
ref: develop
repository: Karaka-Management/Build
path: Build
- name: Checkout phpOMS Repository
uses: actions/checkout@main
with:
fetch-depth: 1
ref: develop
repository: Karaka-Management/phpOMS
path: phpOMS
token: ${{ secrets.GH_PAT }}
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, gd, zip, dom, mysql, pgsql, sqlite, imap, bcmath, redis, memcached
ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1
- name: Get Composer Cache Directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Setup Composer
run: composer install
- name: phpstan
run: vendor/bin/phpstan analyse -a phpOMS/Autoloader.php --no-progress -l 9 -c Build/Config/phpstan.neon ./
codestyle-tests:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'NO_CI')"
strategy:
fail-fast: false
max-parallel: 3
matrix:
php-versions: ['8.1']
steps:
- name: Checkout Repository
uses: actions/checkout@main
with:
fetch-depth: 1
submodules: recursive
token: ${{ secrets.GH_PAT }}
- name: Checkout Build Repository
uses: actions/checkout@main
with:
fetch-depth: 1
ref: develop
repository: Karaka-Management/Build
path: Build
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, gd, zip, dom, mysql, pgsql, sqlite, imap, bcmath, redis, memcached
ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1
- name: Get Composer Cache Directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Setup Composer
run: composer install
- name: phpcs
run: vendor/bin/phpcs --severity=1 ./ --standard="Build/Config/phpcs.xml" -s --report=full
- name: Install NPM
uses: actions/setup-node@v3
with:
node-version: '14'
cache: 'npm'
- run: npm install
- name: eslint
run: npx eslint ./ -c Build/Config/.eslintrc.json
# linting:
# runs-on: ubuntu-latest
# if: "!contains(github.event.head_commit.message, 'NO_CI')"
# strategy:
# fail-fast: false
# max-parallel: 3
# steps:
# - name: Checkout Repository
# uses: actions/checkout@main
# with:
# fetch-depth: 0
# submodules: recursive
# token: ${{ secrets.GH_TOKEN }}
# - name: Lint Code Base
# uses: github/super-linter/slim@v4
# env:
# VALIDATE_ALL_CODEBASE: false
# VALIDATE_PHP: true
# VALIDATE_PHP_BUILTIN: true
# DEFAULT_BRANCH: develop
# GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
custom:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'NO_CI')"
strategy:
fail-fast: false
max-parallel: 3
matrix:
php-versions: ['8.1']
steps:
- name: Checkout Repository
uses: actions/checkout@main
with:
fetch-depth: 1
- name: Checkout Build Repository
uses: actions/checkout@main
with:
fetch-depth: 1
ref: develop
repository: Karaka-Management/Build
path: Build
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, gd, zip, dom, mysql, pgsql, sqlite, bcmath, redis, memcached
ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1
- name: PHP linting
run: |
find ./ -type f \
-name '*.php' -print0 | xargs -0 -n1 -P4 php -l -n | (! grep -v "No syntax errors detected" )
- name: Php strict
run: if [[ $(grep -r -L "declare(strict_types=1);" --include=*.php --exclude={*.tpl.php,*Hooks.php,*Routes.php,*SearchCommands.php} ./) -ne "" ]]; then exit 1; fi

1
.gitignore vendored Executable file
View File

@ -0,0 +1 @@
vendor

View File

@ -0,0 +1,49 @@
[
{
"id": 1008101001,
"pid": "/",
"type": 2,
"subtype": 0,
"name": "Finance",
"uri": null,
"target": "self",
"icon": "fa fa-book",
"order": 50,
"from": "Finance",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 0,
"children": [
{
"id": 1008102001,
"pid": "/",
"type": 2,
"subtype": 1,
"name": "Analysis",
"uri": "{/lang}/{/app}/sales/analysis?{?}",
"target": "self",
"icon": null,
"order": 15,
"from": "Finance",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1008101001,
"children": [
{
"id": 1008102002,
"pid": "/sales/analysis",
"type": 3,
"subtype": 1,
"name": "Dashboard",
"uri": "{/lang}/{/app}/sales/analysis?{?}",
"target": "self",
"icon": null,
"order": 1,
"from": "Finance",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1008102001,
"children": []
}
]
}
]
}
]

43
Admin/Install/Navigation.php Executable file
View File

@ -0,0 +1,43 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Finance\Admin\Install
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Finance\Admin\Install;
use phpOMS\Application\ApplicationAbstract;
/**
* Navigation class.
*
* @package Modules\Finance\Admin\Install
* @license OMS License 1.0
* @link https://jingga.app
* @since 1.0.0
*/
class Navigation
{
/**
* Install navigation providing
*
* @param ApplicationAbstract $app Application
* @param string $path Module path
*
* @return void
*
* @since 1.0.0
*/
public static function install(ApplicationAbstract $app, string $path) : void
{
\Modules\Navigation\Admin\Installer::installExternal($app, ['path' => __DIR__ . '/Navigation.install.json']);
}
}

36
Admin/Installer.php Executable file
View File

@ -0,0 +1,36 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Finance\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Finance\Admin;
use phpOMS\Module\InstallerAbstract;
/**
* Installer class.
*
* @package Modules\Finance\Admin
* @license OMS License 1.0
* @link https://jingga.app
* @since 1.0.0
*/
final class Installer extends InstallerAbstract
{
/**
* Path of the file
*
* @var string
* @since 1.0.0
*/
public const PATH = __DIR__;
}

32
Admin/Routes/Web/Backend.php Executable file
View File

@ -0,0 +1,32 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
use Modules\Finance\Controller\BackendController;
use Modules\Finance\Models\PermissionCategory;
use phpOMS\Account\PermissionType;
use phpOMS\Router\RouteVerb;
return [
'^.*/finance/analysis(\?.*|$)$' => [
[
'dest' => '\Modules\Finance\Controller\BackendController:viewDashboard',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::CREATE,
'state' => PermissionCategory::ANALYSIS,
],
],
],
];

36
Admin/Status.php Executable file
View File

@ -0,0 +1,36 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Finance\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Finance\Admin;
use phpOMS\Module\StatusAbstract;
/**
* Status class.
*
* @package Modules\Finance\Admin
* @license OMS License 1.0
* @link https://jingga.app
* @since 1.0.0
*/
final class Status extends StatusAbstract
{
/**
* Path of the file
*
* @var string
* @since 1.0.0
*/
public const PATH = __DIR__;
}

36
Admin/Uninstaller.php Executable file
View File

@ -0,0 +1,36 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Finance\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Finance\Admin;
use phpOMS\Module\UninstallerAbstract;
/**
* Uninstaller class.
*
* @package Modules\Finance\Admin
* @license OMS License 1.0
* @link https://jingga.app
* @since 1.0.0
*/
final class Uninstaller extends UninstallerAbstract
{
/**
* Path of the file
*
* @var string
* @since 1.0.0
*/
public const PATH = __DIR__;
}

29
Admin/Updater.php Executable file
View File

@ -0,0 +1,29 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Finance\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Finance\Admin;
use phpOMS\Module\UpdaterAbstract;
/**
* Updater class.
*
* @package Modules\Finance\Admin
* @license OMS License 1.0
* @link https://jingga.app
* @since 1.0.0
*/
final class Updater extends UpdaterAbstract
{
}

View File

@ -0,0 +1,82 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Sales
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Finance\Controller;
use phpOMS\Asset\AssetType;
use phpOMS\Contract\RenderableInterface;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
use phpOMS\Views\View;
/**
* Finance class.
*
* @package Modules\Finance
* @license OMS License 1.0
* @link https://jingga.app
* @since 1.0.0
* @codeCoverageIgnore
*/
final class BackendController extends Controller
{
/**
* Method which shows the sales dashboard
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return RenderableInterface Response can be rendered
*
* @since 1.0.0
*/
public function viewDashboard(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
{
$head = $response->get('Content')->getData('head');
$head->addAsset(AssetType::CSS, 'Resources/chartjs/Chartjs/chart.css');
$head->addAsset(AssetType::JSLATE, 'Resources/chartjs/Chartjs/chart.js');
$head->addAsset(AssetType::JSLATE, 'Modules/ClientManagement/Controller.js', ['type' => 'module']);
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/Sales/Theme/Backend/sales-analysis-dashboard');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001602001, $request, $response));
/////
$monthlySalesCustomer = [];
for ($i = 1; $i < 13; ++$i) {
$monthlySalesCustomer[] = [
'net_sales' => $sales = \mt_rand(1200000000, 2000000000),
'customers' => \mt_rand(200, 400),
'year' => 2020,
'month' => $i,
];
}
$view->addData('monthlySalesCustomer', $monthlySalesCustomer);
$annualSalesCustomer = [];
for ($i = 1; $i < 11; ++$i) {
$annualSalesCustomer[] = [
'net_sales' => $sales = \mt_rand(1200000000, 2000000000) * 12,
'customers' => \mt_rand(200, 400) * 6,
'year' => 2020 - 10 + $i,
];
}
$view->addData('annualSalesCustomer', $annualSalesCustomer);
return $view;
}
}

76
Controller/Controller.php Executable file
View File

@ -0,0 +1,76 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Finance
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Finance\Controller;
use phpOMS\Module\ModuleAbstract;
/**
* Finance class.
*
* @package Modules\Finance
* @license OMS License 1.0
* @link https://jingga.app
* @since 1.0.0
*/
class Controller extends ModuleAbstract
{
/**
* Module path.
*
* @var string
* @since 1.0.0
*/
public const PATH = __DIR__ . '/../';
/**
* Module version.
*
* @var string
* @since 1.0.0
*/
public const VERSION = '1.0.0';
/**
* Module name.
*
* @var string
* @since 1.0.0
*/
public const NAME = 'Finance';
/**
* Module id.
*
* @var int
* @since 1.0.0
*/
public const ID = 1008100000;
/**
* Providing.
*
* @var string[]
* @since 1.0.0
*/
protected static array $providing = [];
/**
* Dependencies.
*
* @var string[]
* @since 1.0.0
*/
protected static array $dependencies = [];
}

3
Docs/Dev/en/SUMMARY.md Executable file
View File

@ -0,0 +1,3 @@
# Developer Content
* [Structure]({%}&page=Dev/structure)

5
Docs/Dev/en/structure.md Executable file
View File

@ -0,0 +1,5 @@
# Structure
## ER
![ER](Modules/Sales/Docs/Dev/img/er.png)

49
ICAL.txt Executable file
View File

@ -0,0 +1,49 @@
# Individual Contributor License Agreement ("CLA") 1.0
Thank you for your interest in Karaka-Management (the "Company"). In order to clarify the intellectual property license granted with Contributions from any person or entity, the Company must provide a Contributor License Agreement ("CLA") on file that has been made available to each Contributor. This license is for your protection as a Contributor as well as the protection of the Company and its users; it does not change your rights to use your own Contributions for any other purpose.
By contributing to the Company You accept and agree to the following terms and conditions for Your present and future Contributions submitted to the Company. In return, the Company shall not use Your Contributions in a way that is contrary to the public benefit or inconsistent with its bylaws in effect at the time of the Contribution. Except for the license granted herein to the Company and recipients of software distributed by the Company, You reserve all right, title, and interest in and to Your Contributions.
## Definitions
**"You" (or "Your")**
"You" (or "Your") shall mean the copyright owner or legal entity authorized by the copyright owner that is making this Agreement with the Company. For legal entities, the entity making a Contribution and all other entities that control, are controlled by, or are under common control with that entity are considered to be a single Contributor. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
**"Contribution"**
"Contribution" shall mean any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to the Company for inclusion in, or documentation of, any of the products owned or managed by the Company (the "Work"). This includes but is not limited to technical material, techniques, articles, sketches, drawings, images, models, inventions, know-how, processes, apparatus, equipment, algorithms, software programs, software source documents, and formula related to the current, future and proposed products and services regarding the Company". For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Company or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Company for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution."
## Grant of Copyright License
Subject to the terms and conditions of this Agreement, You hereby grant to the Company and to recipients of software distributed by the Company a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sub license, and distribute Your Contributions and such derivative works.
## Grant of Patent License
Subject to the terms and conditions of this Agreement, You hereby grant to the Company and to recipients of software distributed by the Company a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work to which such Contribution(s) was submitted. If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that your Contribution, or the Work to which you have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Agreement for that Contribution or Work shall terminate as of the date such litigation is filed.
## Authorization
You represent that you are legally entitled to grant the above license. If your employer(s) has rights to intellectual property that you create that includes your Contributions, you represent that you have received permission to make Contributions on behalf of that employer, that your employer has waived such rights for your Contributions to the Company, or that your employer has executed a separate Corporate CLA with the Company.
You represent that each of Your Contributions is Your original creation (see "Third-party Contribution" for submissions on behalf of others). You represent that Your Contribution submissions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which you are personally aware and which are associated with any part of Your Contributions.
## Support
You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON- INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
## Third-party Contribution
Should You wish to submit work that is not Your original creation, You may submit it to the Company separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as "Submitted on behalf of a third-party: [named here]".
## Survival
This Agreement shall govern all communications between the parties. You understand that this Agreement stays active even if the connection with You gets terminated unless the project the Company gets officially canceled by the project manager "Dennis Eichhorn".
## Governing Law and Jurisdiction
This Agreement shall be governed exclusively by German law. The courts of Hessen, Germany shall have exclusive jurisdiction.
## Entire Agreement
This agreement constitutes the entire agreement and supersedes all prior or contemporaneous oral or written agreements concerning such Contribution. This agreement may only be changed by mutual agreement of authorized representatives of the parties in writing. You agree to notify the Company of any facts or circumstances of which you become aware that would make these representations inaccurate in any respect.

32
Models/PermissionCategory.php Executable file
View File

@ -0,0 +1,32 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Finance\Models
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Finance\Models;
use phpOMS\Stdlib\Base\Enum;
/**
* Permision state enum.
*
* @package Modules\Finance\Models
* @license OMS License 1.0
* @link https://jingga.app
* @since 1.0.0
*/
abstract class PermissionCategory extends Enum
{
public const ARCHIVE = 1;
public const ANALYSIS = 2;
}

View File

@ -1 +1 @@
# oms-Finance
# Finance

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'التحليلات',
'Articles' => 'مقالات',
'Clients' => 'عملاء',
'Create' => 'يخلق',
'Invoice' => 'فاتورة',
'Invoices' => 'الفواتير',
'Profile' => 'الملف الشخصي',
'Sales' => 'مبيعات',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Analýza',
'Articles' => 'Články',
'Clients' => 'Klienti',
'Create' => 'Vytvořit',
'Invoice' => 'Faktura',
'Invoices' => 'Faktury',
'Profile' => 'Profil',
'Sales' => 'Odbyt',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Analyse',
'Articles' => 'Artikler',
'Clients' => 'Klienter.',
'Create' => 'skab',
'Invoice' => 'Faktura',
'Invoices' => 'Fakturaer.',
'Profile' => 'Profil',
'Sales' => 'SALG',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Analyse',
'Articles' => 'Artikel',
'Clients' => 'Kunden',
'Create' => 'Erstellen',
'Invoice' => 'Rechnung',
'Invoices' => 'Rechnungen',
'Profile' => 'Profil',
'Sales' => 'Der Umsatz',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Ανάλυση',
'Articles' => 'Είδη',
'Clients' => 'Πελάτες',
'Create' => 'Δημιουργώ',
'Invoice' => 'Τιμολόγιο',
'Invoices' => 'Τιμολόγια',
'Profile' => 'Προφίλ',
'Sales' => 'Εκπτώσεις',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Analysis',
'Articles' => 'Articles',
'Clients' => 'Clients',
'Create' => 'Create',
'Invoice' => 'Invoice',
'Invoices' => 'Invoices',
'Profile' => 'Profile',
'Sales' => 'Sales',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Análisis',
'Articles' => 'Artículos',
'Clients' => 'Clientela',
'Create' => 'Crear',
'Invoice' => 'Factura',
'Invoices' => 'Facturas',
'Profile' => 'Perfil',
'Sales' => 'Ventas',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Analyysi',
'Articles' => 'Artikkelit',
'Clients' => 'Asiakkaat',
'Create' => 'Luoda',
'Invoice' => 'Lasku',
'Invoices' => 'Laskut',
'Profile' => 'Profiili',
'Sales' => 'Myynti',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Analyse',
'Articles' => 'Des articles',
'Clients' => 'Clients',
'Create' => 'Créer',
'Invoice' => 'Facture d\'achat',
'Invoices' => 'Factures',
'Profile' => 'Profil',
'Sales' => 'Ventes',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Elemzés',
'Articles' => 'Árucikkek',
'Clients' => 'Kliensek',
'Create' => 'Teremt',
'Invoice' => 'Számla',
'Invoices' => 'Számlák',
'Profile' => 'Profil',
'Sales' => 'Értékesítés',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Analisi',
'Articles' => 'Artificio',
'Clients' => 'Clienti',
'Create' => 'Creare',
'Invoice' => 'Fattura',
'Invoices' => 'Fatture',
'Profile' => 'Profilo',
'Sales' => 'Saldi',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => '分析',
'Articles' => 'articles',
'Clients' => 'クライアント',
'Create' => '作成',
'Invoice' => '請求書',
'Invoices' => '請求書',
'Profile' => 'プロフィール',
'Sales' => '売り返り',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => '분석',
'Articles' => '조항',
'Clients' => '클라이언트',
'Create' => '만들다',
'Invoice' => '송장',
'Invoices' => '송장',
'Profile' => '프로필',
'Sales' => '매상',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Analyse',
'Articles' => 'Artikler',
'Clients' => 'Klienter',
'Create' => 'Skape',
'Invoice' => 'Faktura',
'Invoices' => 'Fakturaer',
'Profile' => 'Profil',
'Sales' => 'Salg',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Analiza',
'Articles' => 'Artykuły',
'Clients' => 'Klienci.',
'Create' => 'Tworzyć',
'Invoice' => 'Faktura',
'Invoices' => 'Faktury',
'Profile' => 'Profil',
'Sales' => 'Obroty',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Análise',
'Articles' => 'Artigos',
'Clients' => 'Clientes',
'Create' => 'Crio',
'Invoice' => 'Fatura',
'Invoices' => 'Faturas',
'Profile' => 'Perfil',
'Sales' => 'Vendas',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Анализ',
'Articles' => 'Статьи',
'Clients' => 'Клиенты',
'Create' => 'Создавать',
'Invoice' => 'Счет',
'Invoices' => 'Счета',
'Profile' => 'Профиль',
'Sales' => 'Продажи',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Analys',
'Articles' => 'Artiklar',
'Clients' => 'Klienter',
'Create' => 'Skapa',
'Invoice' => 'Faktura',
'Invoices' => 'Fakturor',
'Profile' => 'Profil',
'Sales' => 'Försäljning',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'การวิเคราะห์',
'Articles' => 'บทความ',
'Clients' => 'ลูกค้า',
'Create' => 'สร้าง',
'Invoice' => 'ใบแจ้งหนี้',
'Invoices' => 'ใบแจ้งหนี้',
'Profile' => 'ประวัติโดยย่อ',
'Sales' => 'ฝ่ายขาย',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Analiz',
'Articles' => 'Nesne',
'Clients' => 'Müşteriler',
'Create' => 'Yaratmak',
'Invoice' => 'Fatura',
'Invoices' => 'Faturalar',
'Profile' => 'Profil',
'Sales' => 'Satış',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => 'Аналіз',
'Articles' => 'Статті',
'Clients' => 'Клієнти',
'Create' => 'Створювати',
'Invoice' => 'Рахунок-фактура',
'Invoices' => 'Рахунки-фактури',
'Profile' => 'Профіль',
'Sales' => 'Продаж',
]];

View File

@ -0,0 +1,24 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Navigation' => [
'Analysis' => '分析',
'Articles' => '文章',
'Clients' => '客户',
'Create' => '创建',
'Invoice' => '发票',
'Invoices' => '发票',
'Profile' => '轮廓',
'Sales' => '销售量',
]];

106
Theme/Backend/Lang/ar.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'الحساب',
'Active' => 'نشيط',
'Activity' => 'نشاط',
'Address' => 'تبوك',
'All' => 'الجميع',
'Amount' => 'مقدار',
'Analysis' => 'التحليلات',
'Analyze' => '#VALUE!',
'Area' => 'مساحة',
'Article' => 'مقالة - سلعة',
'Articles' => 'مقالات',
'Available' => 'متوفرة',
'Calculate' => 'حساب',
'City' => 'مدينة',
'Class' => 'فصل',
'Client' => 'عميل',
'ClientID' => 'معرف العميل',
'ClientName' => 'اسم العميل',
'Clients' => 'عملاء',
'Comparison' => '#VALUE!',
'Confirmation' => 'تأكيد',
'CoreData' => 'البيانات الأساسية',
'Country' => 'دولة',
'Created' => 'خلقت',
'Creator' => 'المنشئ',
'CreditNote' => 'اشعار دائن',
'Current' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => 'تاريخ',
'DefaultInternational' => 'افتراضي الدولية',
'DefaultNational' => 'الوضع الوطني الافتراضي',
'Delivery' => 'توصيل',
'DeliveryNote' => 'مذكرة تسليم',
'Description' => 'وصف',
'Discount' => 'خصم',
'DiscountP' => 'خصم في٪',
'Documentation' => 'توثيق',
'Employee' => 'موظف',
'End' => '#VALUE!',
'FAO' => 'الفاو',
'From' => 'من',
'Group' => 'مجموعة',
'Groups' => 'مجموعات',
'Highest' => 'أعلى',
'Inactive' => 'غير نشط',
'Interval' => 'فترة',
'Invoice' => 'فاتورة',
'Invoices' => 'الفواتير',
'IsDefault' => 'افتراضي؟',
'Language' => 'لغة',
'Last' => 'الاخير',
'Localization' => 'الموقع',
'Loginname' => 'اسم الدخول',
'Matchcode' => 'رمز مطابق',
'Media' => 'وسائط',
'MinPrice' => 'سعر دقيقة',
'Name' => 'اسم',
'Name1' => 'الاسم 1.',
'Name2' => 'الاسم 2.',
'Name3' => 'الاسم 3.',
'Offer' => 'عرض',
'Order' => 'طلب',
'Ordered' => 'أمر',
'OrderedBy' => 'أمر من قبل',
'Orders' => 'الطلب #٪ s',
'Payment' => 'دفع',
'Price' => 'السعر',
'Priority' => 'أفضلية',
'Profit' => '#VALUE!',
'Quantity' => 'كمية',
'Receipt' => 'إيصال',
'Reference' => 'المرجعي',
'Sales' => 'مبيعات',
'Settings' => 'إعدادات',
'Single' => 'غير مرتبطة',
'Start' => '#VALUE!',
'State' => 'ولاية',
'Statistics' => 'إحصائيات',
'Status' => 'حالة',
'Stock' => 'المخزون',
'Street' => 'شارع',
'Subgroup' => 'مجموعة فرعية',
'Tax' => 'ضريبة',
'Terms' => 'شروط',
'To' => 'ل',
'TopArticles' => 'أفضل المقالات',
'Trend' => 'اتجاه',
'Turnover' => 'دوران',
'Type' => 'نوع',
'ZipCode' => 'رمز بريدي',
]];

106
Theme/Backend/Lang/cs.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Účet',
'Active' => 'Aktivní',
'Activity' => 'Aktivita',
'Address' => 'Adresa',
'All' => 'Všechno',
'Amount' => 'Množství',
'Analysis' => 'Analýza',
'Analyze' => '#VALUE!',
'Area' => 'Plocha',
'Article' => 'Článek',
'Articles' => 'Články',
'Available' => 'Dostupný',
'Calculate' => 'Vypočítat',
'City' => 'Město',
'Class' => 'Třída',
'Client' => 'Klienta',
'ClientID' => 'ID klienta',
'ClientName' => 'jméno klienta',
'Clients' => 'Klienti',
'Comparison' => '#VALUE!',
'Confirmation' => 'potvrzení',
'CoreData' => 'Základní data',
'Country' => 'Země',
'Created' => 'Vytvořený',
'Creator' => 'Tvůrce',
'CreditNote' => 'Dobropis',
'Current' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => 'datum',
'DefaultInternational' => 'Výchozí mezinárodní',
'DefaultNational' => 'Výchozí státní příslušník',
'Delivery' => 'dodávka',
'DeliveryNote' => 'Dodací list',
'Description' => 'Popis',
'Discount' => 'Sleva',
'DiscountP' => 'Sleva v%',
'Documentation' => 'Dokumentace',
'Employee' => 'Zaměstnanec',
'End' => '#VALUE!',
'FAO' => 'Fao.',
'From' => 'Z',
'Group' => 'Skupina',
'Groups' => 'Skupiny',
'Highest' => 'Nejvyšší',
'Inactive' => 'Neaktivní',
'Interval' => 'Interval',
'Invoice' => 'Faktura',
'Invoices' => 'Faktury',
'IsDefault' => 'Je výchozí?',
'Language' => 'Jazyk',
'Last' => 'Poslední',
'Localization' => 'Lokalizace',
'Loginname' => 'Přihlašovací jméno',
'Matchcode' => 'MatchCode.',
'Media' => 'Mediální',
'MinPrice' => 'Min',
'Name' => 'název',
'Name1' => 'Jméno 1.',
'Name2' => 'Jméno 2.',
'Name3' => 'Jméno 3.',
'Offer' => 'Nabídka',
'Order' => 'Objednat',
'Ordered' => 'Objednaný',
'OrderedBy' => 'Objednáno někým',
'Orders' => 'Objednávky',
'Payment' => 'Způsob platby',
'Price' => 'Cena',
'Priority' => 'Přednost',
'Profit' => '#VALUE!',
'Quantity' => 'Množství',
'Receipt' => 'Účtenka',
'Reference' => 'Odkaz',
'Sales' => 'Odbyt',
'Settings' => 'Nastavení',
'Single' => 'Singl',
'Start' => '#VALUE!',
'State' => 'Stát',
'Statistics' => 'Statistika',
'Status' => 'Postavení',
'Stock' => 'Skladem',
'Street' => 'ulice',
'Subgroup' => 'Podskupina',
'Tax' => 'Daň',
'Terms' => 'Podmínky',
'To' => 'Na',
'TopArticles' => 'Nejlepší články',
'Trend' => 'Trend',
'Turnover' => 'Obrat',
'Type' => 'Typ',
'ZipCode' => 'PSČ',
]];

106
Theme/Backend/Lang/da.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Konto',
'Active' => 'Aktiv',
'Activity' => 'Aktivitet',
'Address' => 'Adresse',
'All' => 'Alle',
'Amount' => 'Beløb',
'Analysis' => 'Analyse',
'Analyze' => '#VALUE!',
'Area' => 'Areal',
'Article' => 'Artikel',
'Articles' => 'Artikler',
'Available' => 'Ledig',
'Calculate' => 'Beregn',
'City' => 'City.',
'Class' => 'Klasse',
'Client' => 'Klient',
'ClientID' => 'Klient ID.',
'ClientName' => 'Kundenavn',
'Clients' => 'Klienter.',
'Comparison' => '#VALUE!',
'Confirmation' => 'Bekræftelse',
'CoreData' => 'Kernedata.',
'Country' => 'Land',
'Created' => 'Oprettet',
'Creator' => 'Skaber.',
'CreditNote' => 'Kreditnota',
'Current' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => 'Dato',
'DefaultInternational' => 'Standard International',
'DefaultNational' => 'Standard National',
'Delivery' => 'Levering',
'DeliveryNote' => 'Levering note',
'Description' => 'Beskrivelse',
'Discount' => 'Rabat',
'DiscountP' => 'Rabat i%',
'Documentation' => 'Dokumentation',
'Employee' => 'Medarbejder',
'End' => '#VALUE!',
'FAO' => 'FAO.',
'From' => 'Fra',
'Group' => 'Gruppe',
'Groups' => 'Grupper.',
'Highest' => 'Højeste',
'Inactive' => 'Inaktiv.',
'Interval' => 'Interval',
'Invoice' => 'Faktura',
'Invoices' => 'Fakturaer.',
'IsDefault' => 'Er standard?',
'Language' => 'Sprog',
'Last' => 'Sidst',
'Localization' => 'Lokalisering',
'Loginname' => 'Login-navn',
'Matchcode' => 'MatchCode.',
'Media' => 'Medier',
'MinPrice' => 'Min',
'Name' => 'Navn',
'Name1' => 'Navn 1',
'Name2' => 'Navn 2.',
'Name3' => 'Navn 3.',
'Offer' => 'Tilbud',
'Order' => 'Bestille',
'Ordered' => 'Bestilt.',
'OrderedBy' => 'Bestilt af',
'Orders' => 'Ordre:% s',
'Payment' => 'Betaling',
'Price' => 'Pris',
'Priority' => 'Prioritet',
'Profit' => '#VALUE!',
'Quantity' => 'Antal',
'Receipt' => 'Kvittering',
'Reference' => 'Reference',
'Sales' => 'SALG',
'Settings' => 'Indstillinger.',
'Single' => 'Enkelt',
'Start' => '#VALUE!',
'State' => 'Stat',
'Statistics' => 'Statistikker',
'Status' => 'Status.',
'Stock' => 'Lager',
'Street' => 'Gade',
'Subgroup' => 'Undergruppe',
'Tax' => 'Skat',
'Terms' => 'Vilkår',
'To' => 'Til',
'TopArticles' => 'Top artikler',
'Trend' => 'Trend.',
'Turnover' => 'Omsætning',
'Type' => 'Type',
'ZipCode' => 'Postnummer',
]];

106
Theme/Backend/Lang/de.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Konto',
'Active' => 'Aktiv',
'Activity' => 'Aktivität',
'Address' => 'Adresse',
'All' => 'Alle',
'Amount' => 'Höhe',
'Analysis' => 'Analyse',
'Analyze' => '#VALUE!',
'Area' => 'Bereich',
'Article' => 'Artikel',
'Articles' => 'Artikel',
'Available' => 'Erhältlich',
'Calculate' => 'Berechnung',
'City' => 'Stadt',
'Class' => 'Klasse',
'Client' => 'Klient',
'ClientID' => 'Kunden ID',
'ClientName' => 'Kundenname',
'Clients' => 'Kunden',
'Comparison' => '#VALUE!',
'Confirmation' => 'Bestätigung',
'CoreData' => 'Kerndatei',
'Country' => 'Land',
'Created' => 'Erstellt',
'Creator' => 'Schöpfer',
'CreditNote' => 'Gutschrift',
'Current' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => 'Datum',
'DefaultInternational' => 'Standard-Internationale',
'DefaultNational' => 'Standardnationalstaat',
'Delivery' => 'Die Zustellung',
'DeliveryNote' => 'Lieferschein',
'Description' => 'Beschreibung',
'Discount' => 'Rabatt',
'DiscountP' => 'Rabatt in%',
'Documentation' => 'Dokumentation',
'Employee' => 'Mitarbeiter',
'End' => '#VALUE!',
'FAO' => 'Fao',
'From' => 'Von',
'Group' => 'Gruppe',
'Groups' => 'Gruppen',
'Highest' => 'Höchste',
'Inactive' => 'Inaktiv',
'Interval' => 'Intervall',
'Invoice' => 'Rechnung',
'Invoices' => 'Rechnungen',
'IsDefault' => 'Ist standardmäßig?',
'Language' => 'Sprache',
'Last' => 'Zuletzt',
'Localization' => 'Lokalisierung',
'Loginname' => 'Benutzername',
'Matchcode' => 'Matchcode',
'Media' => 'Medien',
'MinPrice' => 'Minster Preis',
'Name' => 'Name',
'Name1' => 'Name 1',
'Name2' => 'Name 2',
'Name3' => 'Name 3',
'Offer' => 'Angebot',
'Order' => 'Befehl',
'Ordered' => 'Bestellt',
'OrderedBy' => 'Bestellt durch',
'Orders' => 'Aufträge',
'Payment' => 'Zahlung',
'Price' => 'Preis',
'Priority' => 'Priorität',
'Profit' => '#VALUE!',
'Quantity' => 'Menge',
'Receipt' => 'Kassenbon',
'Reference' => 'Bezug',
'Sales' => 'Der Umsatz',
'Settings' => 'Einstellungen',
'Single' => 'Single',
'Start' => '#VALUE!',
'State' => 'Zustand',
'Statistics' => 'Statistiken',
'Status' => 'Status',
'Stock' => 'Aktie',
'Street' => 'Straße',
'Subgroup' => 'Untergruppe',
'Tax' => 'Steuer',
'Terms' => 'Bedingungen',
'To' => 'Zu',
'TopArticles' => 'Top-Artikeln',
'Trend' => 'Trend',
'Turnover' => 'Umsatz',
'Type' => 'Typ',
'ZipCode' => 'Postleitzahl',
]];

106
Theme/Backend/Lang/el.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'λογαριασμός',
'Active' => 'Ενεργός',
'Activity' => 'Δραστηριότητα',
'Address' => 'Διεύθυνση',
'All' => 'Ολα',
'Amount' => 'Ποσό',
'Analysis' => 'Ανάλυση',
'Analyze' => '#VALUE!',
'Area' => 'Περιοχή',
'Article' => 'Αρθρο',
'Articles' => 'Είδη',
'Available' => 'Διαθέσιμος',
'Calculate' => 'Υπολογίζω',
'City' => 'Πόλη',
'Class' => 'Τάξη',
'Client' => 'Πελάτης',
'ClientID' => 'ταυτότητα πελάτη',
'ClientName' => 'Όνομα Πελάτη',
'Clients' => 'Πελάτες',
'Comparison' => '#VALUE!',
'Confirmation' => 'Επιβεβαίωση',
'CoreData' => 'Βασικά δεδομένα',
'Country' => 'Χώρα',
'Created' => 'Δημιουργήθηκε',
'Creator' => 'Δημιουργός',
'CreditNote' => 'Πιστωτικό σημείωμα',
'Current' => '#VALUE!',
'DSO' => 'ΔΣΟ',
'Date' => 'Ημερομηνία',
'DefaultInternational' => 'Προεπιλογή Διεθνής',
'DefaultNational' => 'Προεπιλεγμένος Εθνικός',
'Delivery' => 'Διανομή',
'DeliveryNote' => 'Δελτίο παράδοσης',
'Description' => 'Περιγραφή',
'Discount' => 'Εκπτωση',
'DiscountP' => 'Έκπτωση σε%',
'Documentation' => 'Τεκμηρίωση',
'Employee' => 'Υπάλληλος',
'End' => '#VALUE!',
'FAO' => 'Φλυαρία',
'From' => 'Από',
'Group' => 'Ομάδα',
'Groups' => 'Ομάδες',
'Highest' => 'Υψιστος',
'Inactive' => 'Αδρανής',
'Interval' => 'Διάστημα',
'Invoice' => 'Τιμολόγιο',
'Invoices' => 'Τιμολόγια',
'IsDefault' => 'Είναι προεπιλογή;',
'Language' => 'Γλώσσα',
'Last' => 'τελευταίος',
'Localization' => 'Εντοπισμός',
'Loginname' => 'Ονομα σύνδεσης',
'Matchcode' => 'Matchcode',
'Media' => 'Μεσο ΜΑΖΙΚΗΣ ΕΝΗΜΕΡΩΣΗΣ',
'MinPrice' => 'Ελάχιστη τιμή',
'Name' => 'Ονομα',
'Name1' => 'Όνομα 1',
'Name2' => 'Όνομα 2',
'Name3' => 'Όνομα 3',
'Offer' => 'Προσφορά',
'Order' => 'Σειρά',
'Ordered' => 'Διέταξε',
'OrderedBy' => 'Παραγγέλθηκε από',
'Orders' => 'Εντολές',
'Payment' => 'Πληρωμή',
'Price' => 'Τιμή',
'Priority' => 'Προτεραιότητα',
'Profit' => '#VALUE!',
'Quantity' => 'Ποσότητα',
'Receipt' => 'Παραλαβή',
'Reference' => 'Αναφορά',
'Sales' => 'Εκπτώσεις',
'Settings' => 'Ρυθμίσεις',
'Single' => 'Μονόκλινο',
'Start' => '#VALUE!',
'State' => 'κατάσταση',
'Statistics' => 'Στατιστική',
'Status' => 'Κατάσταση',
'Stock' => 'Στοκ',
'Street' => 'Δρόμος',
'Subgroup' => 'Υποομάδα',
'Tax' => 'Φόρος',
'Terms' => 'Οροι',
'To' => 'Προς το',
'TopArticles' => 'Κορυφαία άρθρα',
'Trend' => 'Τάση',
'Turnover' => 'Τζίρος',
'Type' => 'Τύπος',
'ZipCode' => 'Ταχυδρομικός κώδικας',
]];

106
Theme/Backend/Lang/en.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Account',
'Active' => 'Active',
'Activity' => 'Activity',
'Address' => 'Address',
'All' => 'All',
'Amount' => 'Amount',
'Analysis' => 'Analysis',
'Analyze' => 'Analyze',
'Area' => 'Area',
'Article' => 'Article',
'Articles' => 'Articles',
'Available' => 'Available',
'Calculate' => 'Calculate',
'City' => 'City',
'Class' => 'Class',
'Client' => 'Client',
'ClientID' => 'Client ID',
'ClientName' => 'Client Name',
'Clients' => 'Clients',
'Comparison' => 'Comparison',
'Confirmation' => 'Confirmation',
'CoreData' => 'Core data',
'Country' => 'Country',
'Created' => 'Created',
'Creator' => 'Creator',
'CreditNote' => 'Credit Note',
'Current' => 'Current',
'DSO' => 'DSO',
'Date' => 'Date',
'DefaultInternational' => 'Default International',
'DefaultNational' => 'Default National',
'Delivery' => 'Delivery',
'DeliveryNote' => 'Delivery Note',
'Description' => 'Description',
'Discount' => 'Discount',
'DiscountP' => 'Discount in %',
'Documentation' => 'Documentation',
'Employee' => 'Employee',
'End' => 'End',
'FAO' => 'FAO',
'From' => 'From',
'Group' => 'Group',
'Groups' => 'Groups',
'Highest' => 'Highest',
'Inactive' => 'Inactive',
'Interval' => 'Interval',
'Invoice' => 'Invoice',
'Invoices' => 'Invoices',
'IsDefault' => 'Is default?',
'Language' => 'Language',
'Last' => 'Last',
'Localization' => 'Localization',
'Loginname' => 'Loginname',
'Matchcode' => 'Matchcode',
'Media' => 'Media',
'MinPrice' => 'Min Price',
'Name' => 'Name',
'Name1' => 'Name 1',
'Name2' => 'Name 2',
'Name3' => 'Name 3',
'Offer' => 'Offer',
'Order' => 'Order',
'Ordered' => 'Ordered',
'OrderedBy' => 'Ordered By',
'Orders' => 'Orders',
'Payment' => 'Payment',
'Price' => 'Price',
'Priority' => 'Priority',
'Profit' => 'Profit',
'Quantity' => 'Quantity',
'Receipt' => 'Receipt',
'Reference' => 'Reference',
'Sales' => 'Sales',
'Settings' => 'Settings',
'Single' => 'Single',
'Start' => 'Start',
'State' => 'State',
'Statistics' => 'Statistics',
'Status' => 'Status',
'Stock' => 'Stock',
'Street' => 'Street',
'Subgroup' => 'Subgroup',
'Tax' => 'Tax',
'Terms' => 'Terms',
'To' => 'To',
'TopArticles' => 'Top Articles',
'Trend' => 'Trend',
'Turnover' => 'Turnover',
'Type' => 'Type',
'ZipCode' => 'ZipCode',
]];

106
Theme/Backend/Lang/es.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Cuenta',
'Active' => 'Activo',
'Activity' => 'Actividad',
'Address' => 'Habla a',
'All' => 'Todo',
'Amount' => 'Monto',
'Analysis' => 'Análisis',
'Analyze' => '#VALUE!',
'Area' => 'Área',
'Article' => 'Artículo',
'Articles' => 'Artículos',
'Available' => 'Disponible',
'Calculate' => 'Calcular',
'City' => 'Ciudad',
'Class' => 'Clase',
'Client' => 'Cliente',
'ClientID' => 'Identificación del cliente',
'ClientName' => 'nombre del cliente',
'Clients' => 'Clientela',
'Comparison' => '#VALUE!',
'Confirmation' => 'Confirmación',
'CoreData' => 'Datos principales',
'Country' => 'País',
'Created' => 'Creado',
'Creator' => 'Creador',
'CreditNote' => 'Nota de crédito',
'Current' => '#VALUE!',
'DSO' => 'DSO',
'Date' => 'Fecha',
'DefaultInternational' => 'Internacional predeterminado',
'DefaultNational' => 'Nacional predeterminado',
'Delivery' => 'Entrega',
'DeliveryNote' => 'Nota de entrega',
'Description' => 'Descripción',
'Discount' => 'Descuento',
'DiscountP' => 'Descuento en%',
'Documentation' => 'Documentación',
'Employee' => 'Empleado',
'End' => '#VALUE!',
'FAO' => 'Fao',
'From' => 'Desde',
'Group' => 'Grupo',
'Groups' => 'Grupo',
'Highest' => 'Más alto',
'Inactive' => 'Inactivo',
'Interval' => 'Intervalo',
'Invoice' => 'Factura',
'Invoices' => 'Facturas',
'IsDefault' => 'Es por defecto?',
'Language' => 'Idioma',
'Last' => 'Ultimo',
'Localization' => 'Localización',
'Loginname' => 'Nombre de inicio de sesión',
'Matchcode' => 'Código de asociación',
'Media' => 'Medios de comunicación',
'MinPrice' => 'Precio mínimo',
'Name' => 'Nombre',
'Name1' => 'Nombre 1',
'Name2' => 'Nombre 2',
'Name3' => 'Nombre 3',
'Offer' => 'Oferta',
'Order' => 'Pedido',
'Ordered' => 'Ordenado',
'OrderedBy' => 'Ordenado por',
'Orders' => 'Pedidos',
'Payment' => 'Pago',
'Price' => 'Precio',
'Priority' => 'Prioridad',
'Profit' => '#VALUE!',
'Quantity' => 'Cantidad',
'Receipt' => 'Recibo',
'Reference' => 'Referencia',
'Sales' => 'Ventas',
'Settings' => 'Ajustes',
'Single' => 'Único',
'Start' => '#VALUE!',
'State' => 'Expresar',
'Statistics' => 'Estadísticas',
'Status' => 'Estado',
'Stock' => 'Valores',
'Street' => 'calle',
'Subgroup' => 'Subgrupo',
'Tax' => 'Impuesto',
'Terms' => 'Condiciones',
'To' => 'A',
'TopArticles' => 'Artículos principales',
'Trend' => 'Tendencia',
'Turnover' => 'Rotación',
'Type' => 'Escribe',
'ZipCode' => 'Código postal',
]];

106
Theme/Backend/Lang/fi.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Tili',
'Active' => 'Aktiivinen',
'Activity' => 'Toiminta',
'Address' => 'Osoite',
'All' => 'Kaikki',
'Amount' => 'Määrä',
'Analysis' => 'Analyysi',
'Analyze' => '#VALUE!',
'Area' => 'Alue',
'Article' => 'Artikla',
'Articles' => 'Artikkelit',
'Available' => 'Saatavilla',
'Calculate' => 'Laskea',
'City' => 'Kaupunki',
'Class' => 'Luokka',
'Client' => 'Asiakas',
'ClientID' => 'Asiakastunnus',
'ClientName' => 'Asiakkaan Nimi',
'Clients' => 'Asiakkaat',
'Comparison' => '#VALUE!',
'Confirmation' => 'Vahvistus',
'CoreData' => 'Keskeiset tiedot',
'Country' => 'Maa',
'Created' => 'Luotu',
'Creator' => 'Luoja',
'CreditNote' => 'Luottoluotto',
'Current' => '#VALUE!',
'DSO' => 'Dso',
'Date' => 'Päivämäärä',
'DefaultInternational' => 'Oletus kansainvälinen',
'DefaultNational' => 'Oletusarvoinen kansallinen',
'Delivery' => 'Toimitus',
'DeliveryNote' => 'Saapumisilmoitus',
'Description' => 'Kuvaus',
'Discount' => 'Alennus',
'DiscountP' => 'Alennus%',
'Documentation' => 'Dokumentointi',
'Employee' => 'Työntekijä',
'End' => '#VALUE!',
'FAO' => 'Fao',
'From' => 'Peräkkäin',
'Group' => 'Ryhmä',
'Groups' => 'Ryhmät',
'Highest' => 'Korkein',
'Inactive' => 'Epäaktiivinen',
'Interval' => 'Aikaväli',
'Invoice' => 'Lasku',
'Invoices' => 'Laskut',
'IsDefault' => 'On oletusarvo?',
'Language' => 'Kieli',
'Last' => 'Kestää',
'Localization' => 'Lokalisointi',
'Loginname' => 'Kirjautumisnimi',
'Matchcode' => 'Matchcode',
'Media' => 'Media',
'MinPrice' => 'Min hinta',
'Name' => 'Nimi',
'Name1' => 'Nimi 1',
'Name2' => 'Nimi 2',
'Name3' => 'Nimi 3',
'Offer' => 'Tarjous',
'Order' => 'Tilaus',
'Ordered' => 'Tilattu',
'OrderedBy' => 'Tilaama',
'Orders' => 'Tilaus',
'Payment' => 'Maksu',
'Price' => 'Hinta',
'Priority' => 'Etusija',
'Profit' => '#VALUE!',
'Quantity' => 'Määrä',
'Receipt' => 'Kuitti',
'Reference' => 'Viite',
'Sales' => 'Myynti',
'Settings' => 'asetukset',
'Single' => 'Yksittäinen',
'Start' => '#VALUE!',
'State' => 'Osavaltio',
'Statistics' => 'Tilastot',
'Status' => 'Tila',
'Stock' => 'Varasto',
'Street' => 'Katu',
'Subgroup' => 'Alaryhmä',
'Tax' => 'Verottaa',
'Terms' => 'Ehdot',
'To' => 'Jllek',
'TopArticles' => 'Top artikkelit',
'Trend' => 'Trendi',
'Turnover' => 'Liikevaihto',
'Type' => 'Tyyppi',
'ZipCode' => 'Postinumero',
]];

106
Theme/Backend/Lang/fr.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Compte',
'Active' => 'actif',
'Activity' => 'Activité',
'Address' => 'Adresse',
'All' => 'Tout',
'Amount' => 'Quantité',
'Analysis' => 'Analyse',
'Analyze' => '#VALUE!',
'Area' => 'Zone',
'Article' => 'Article',
'Articles' => 'Des articles',
'Available' => 'Disponible',
'Calculate' => 'Calculer',
'City' => 'Ville',
'Class' => 'Classer',
'Client' => 'Client',
'ClientID' => 'identité du client',
'ClientName' => 'Nom du client',
'Clients' => 'Clients',
'Comparison' => '#VALUE!',
'Confirmation' => 'Confirmation',
'CoreData' => 'Données de base',
'Country' => 'Pays',
'Created' => 'Établi',
'Creator' => 'Créateur',
'CreditNote' => 'Note de crédit',
'Current' => '#VALUE!',
'DSO' => 'Dso',
'Date' => 'Date',
'DefaultInternational' => 'International par défaut',
'DefaultNational' => 'National par défaut',
'Delivery' => 'Livraison',
'DeliveryNote' => 'Bon de livraison',
'Description' => 'La description',
'Discount' => 'Remise',
'DiscountP' => 'Rabais en%',
'Documentation' => 'Documentation',
'Employee' => 'Employé',
'End' => '#VALUE!',
'FAO' => 'Fao',
'From' => 'À partir de',
'Group' => 'Grouper',
'Groups' => 'Groupes',
'Highest' => 'Plus haut',
'Inactive' => 'Inactif',
'Interval' => 'Intervalle',
'Invoice' => 'Facture d\'achat',
'Invoices' => 'Factures',
'IsDefault' => 'Est par défaut?',
'Language' => 'Langue',
'Last' => 'Dernier',
'Localization' => 'Localisation',
'Loginname' => 'Identifiant',
'Matchcode' => 'Encadrement',
'Media' => 'Médias',
'MinPrice' => "Prix \u{200b}\u{200b}min",
'Name' => 'Nom',
'Name1' => 'Nom 1',
'Name2' => 'Nom 2',
'Name3' => 'Nom 3',
'Offer' => 'Offrir',
'Order' => 'Commander',
'Ordered' => 'Commandé',
'OrderedBy' => 'Commander par',
'Orders' => 'Ordres',
'Payment' => 'Paiement',
'Price' => 'Prix',
'Priority' => 'Priorité',
'Profit' => '#VALUE!',
'Quantity' => 'Quantité',
'Receipt' => 'Reçu',
'Reference' => 'Référence',
'Sales' => 'Ventes',
'Settings' => 'Réglages',
'Single' => 'Seul',
'Start' => '#VALUE!',
'State' => 'État',
'Statistics' => 'Statistiques',
'Status' => 'Statut',
'Stock' => 'Stocker',
'Street' => 'rue',
'Subgroup' => 'Sous-groupe',
'Tax' => 'Impôt',
'Terms' => 'termes',
'To' => 'À',
'TopArticles' => 'Top articles',
'Trend' => 'Tendance',
'Turnover' => 'Chiffre d\'affaires',
'Type' => 'Taper',
'ZipCode' => 'Code postal',
]];

106
Theme/Backend/Lang/hu.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Számla',
'Active' => 'Aktív',
'Activity' => 'Tevékenység',
'Address' => 'Cím',
'All' => 'Minden',
'Amount' => 'Összeg',
'Analysis' => 'Elemzés',
'Analyze' => '#VALUE!',
'Area' => 'Terület',
'Article' => 'Cikk',
'Articles' => 'Árucikkek',
'Available' => 'Elérhető',
'Calculate' => 'Kiszámítja',
'City' => 'Város',
'Class' => 'Osztály',
'Client' => 'Ügyfél',
'ClientID' => 'Ügyfélazonosító',
'ClientName' => 'Ügyfél Neve',
'Clients' => 'Kliensek',
'Comparison' => '#VALUE!',
'Confirmation' => 'Megerősítés',
'CoreData' => 'Alapvető adatok',
'Country' => 'Ország',
'Created' => 'Létrehozott',
'Creator' => 'Teremtő',
'CreditNote' => 'Jóváírás',
'Current' => '#VALUE!',
'DSO' => 'DSO',
'Date' => 'Dátum',
'DefaultInternational' => 'Alapértelmezett nemzetközi',
'DefaultNational' => 'Alapértelmezett nemzeti',
'Delivery' => 'Szállítás',
'DeliveryNote' => 'Fuvarlevél',
'Description' => 'Leírás',
'Discount' => 'Kedvezmény',
'DiscountP' => 'Kedvezmény%',
'Documentation' => 'Dokumentáció',
'Employee' => 'Munkavállaló',
'End' => '#VALUE!',
'FAO' => 'FAO',
'From' => 'Tól től',
'Group' => 'Csoport',
'Groups' => 'Csoportok',
'Highest' => 'Legmagasabb',
'Inactive' => 'Inaktív',
'Interval' => 'Intervallum',
'Invoice' => 'Számla',
'Invoices' => 'Számlák',
'IsDefault' => 'Alapértelmezett?',
'Language' => 'Nyelv',
'Last' => 'Utolsó',
'Localization' => 'Lokalizáció',
'Loginname' => 'Bejelentkezési név',
'Matchcode' => 'Matchcode',
'Media' => 'Média',
'MinPrice' => 'Min Ár',
'Name' => 'Név',
'Name1' => 'NAME 1',
'Name2' => 'NAME 2',
'Name3' => 'Név 3',
'Offer' => 'Ajánlat',
'Order' => 'Rendelés',
'Ordered' => 'Elrendelt',
'OrderedBy' => 'Megrendelő',
'Orders' => 'Megrendelések',
'Payment' => 'Fizetés',
'Price' => 'Ár',
'Priority' => 'Kiemelten fontos',
'Profit' => '#VALUE!',
'Quantity' => 'Mennyiség',
'Receipt' => 'Nyugta',
'Reference' => 'Referencia',
'Sales' => 'Értékesítés',
'Settings' => 'Beállítások',
'Single' => 'Egyetlen',
'Start' => '#VALUE!',
'State' => 'Állapot',
'Statistics' => 'Statisztika',
'Status' => 'Állapot',
'Stock' => 'Készlet',
'Street' => 'utca',
'Subgroup' => 'Alcsoport',
'Tax' => 'Adó',
'Terms' => 'Feltételek',
'To' => 'Nak nek',
'TopArticles' => 'Top cikkek',
'Trend' => 'Irányzat',
'Turnover' => 'Forgalom',
'Type' => 'típus',
'ZipCode' => 'Irányítószám',
]];

106
Theme/Backend/Lang/it.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Account',
'Active' => 'Attivo',
'Activity' => 'Attività',
'Address' => 'Indirizzo',
'All' => 'Tutto',
'Amount' => 'Quantità',
'Analysis' => 'Analisi',
'Analyze' => '#VALUE!',
'Area' => 'La zona',
'Article' => 'Articolo',
'Articles' => 'Artificio',
'Available' => 'A disposizione',
'Calculate' => 'Calcolare',
'City' => 'Città',
'Class' => 'Classe',
'Client' => 'Cliente',
'ClientID' => 'Identificativo cliente',
'ClientName' => 'nome del cliente',
'Clients' => 'Clienti',
'Comparison' => '#VALUE!',
'Confirmation' => 'Conferma',
'CoreData' => 'Dati principali',
'Country' => 'Nazione',
'Created' => 'Creato',
'Creator' => 'Creatore',
'CreditNote' => 'Nota di credito',
'Current' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => 'Data',
'DefaultInternational' => 'Default International.',
'DefaultNational' => 'National default.',
'Delivery' => 'Consegna',
'DeliveryNote' => 'Bolla d\'accompagnamento',
'Description' => 'Descrizione',
'Discount' => 'Sconto',
'DiscountP' => 'Sconto in%',
'Documentation' => 'Documentazione',
'Employee' => 'Dipendente',
'End' => '#VALUE!',
'FAO' => 'FAO.',
'From' => 'A partire dal',
'Group' => 'Gruppo',
'Groups' => 'Gruppi',
'Highest' => 'Massimo',
'Inactive' => 'Non attivo',
'Interval' => 'Intervallo',
'Invoice' => 'Fattura',
'Invoices' => 'Fatture',
'IsDefault' => 'È predefinito?',
'Language' => 'Lingua',
'Last' => 'Scorso',
'Localization' => 'Localizzazione',
'Loginname' => 'Nome di login',
'Matchcode' => 'Matchcode.',
'Media' => 'Media',
'MinPrice' => 'Prezzo minimo',
'Name' => 'Nome',
'Name1' => 'Nome 1.',
'Name2' => 'Nome 2.',
'Name3' => 'Nome 3.',
'Offer' => 'Offerta',
'Order' => 'Ordine',
'Ordered' => 'Ordinato',
'OrderedBy' => 'Ordinato da',
'Orders' => 'Ordini',
'Payment' => 'Pagamento',
'Price' => 'Prezzo',
'Priority' => 'Priorità',
'Profit' => '#VALUE!',
'Quantity' => 'Quantità',
'Receipt' => 'Ricevuta',
'Reference' => 'Riferimento',
'Sales' => 'Saldi',
'Settings' => 'Impostazioni',
'Single' => 'Separare',
'Start' => '#VALUE!',
'State' => 'Stato',
'Statistics' => 'Statistiche',
'Status' => 'Stato',
'Stock' => 'Azione',
'Street' => 'strada',
'Subgroup' => 'Sottogruppo',
'Tax' => 'Imposta',
'Terms' => 'Termini',
'To' => 'a',
'TopArticles' => 'Articoli migliori',
'Trend' => 'Tendenza',
'Turnover' => 'Turnover',
'Type' => 'Tipo',
'ZipCode' => 'Cap',
]];

106
Theme/Backend/Lang/ja.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'アカウント',
'Active' => 'アクティブ',
'Activity' => 'アクティビティ',
'Address' => '住所',
'All' => '全て',
'Amount' => '額',
'Analysis' => '分析',
'Analyze' => '#VALUE!',
'Area' => '領域',
'Article' => '記事',
'Articles' => 'articles',
'Available' => '利用可能',
'Calculate' => '計算する',
'City' => '市',
'Class' => 'クラス',
'Client' => 'クライアント',
'ClientID' => 'クライアントID',
'ClientName' => 'クライアント名',
'Clients' => 'クライアント',
'Comparison' => '#VALUE!',
'Confirmation' => '確認',
'CoreData' => 'コアデータ',
'Country' => '国',
'Created' => '作成した',
'Creator' => 'クリエーター',
'CreditNote' => 'クレジットノート',
'Current' => '#VALUE!',
'DSO' => 'DSO',
'Date' => '日にち',
'DefaultInternational' => 'デフォルトの国際',
'DefaultNational' => 'デフォルトの国',
'Delivery' => '配達',
'DeliveryNote' => '配達メモ',
'Description' => '説明',
'Discount' => '割引',
'DiscountP' => '割引%',
'Documentation' => 'ドキュメンテーション',
'Employee' => '従業員',
'End' => '#VALUE!',
'FAO' => 'fa fa',
'From' => 'から',
'Group' => 'グループ',
'Groups' => '団体',
'Highest' => '最高',
'Inactive' => '非活性',
'Interval' => '間隔',
'Invoice' => '請求書',
'Invoices' => '請求書',
'IsDefault' => 'デフォルトですか?',
'Language' => '言語',
'Last' => '最後',
'Localization' => 'ローカライズ',
'Loginname' => 'ログイン名',
'Matchcode' => 'マッチコード',
'Media' => 'メディア',
'MinPrice' => '最小価格',
'Name' => '名前',
'Name1' => '名前1',
'Name2' => '名前2',
'Name3' => '名前3',
'Offer' => 'オファー',
'Order' => '注文',
'Ordered' => '順序付けられました',
'OrderedBy' => 'によって順序付け',
'Orders' => '命令',
'Payment' => '支払い',
'Price' => '価格',
'Priority' => '優先度',
'Profit' => '#VALUE!',
'Quantity' => '量',
'Receipt' => 'レシート',
'Reference' => 'リファレンス',
'Sales' => '売り返り',
'Settings' => '設定',
'Single' => '独身',
'Start' => '#VALUE!',
'State' => '州',
'Statistics' => '統計学',
'Status' => '状態',
'Stock' => 'ストック',
'Street' => '街',
'Subgroup' => 'サブグループ',
'Tax' => '税',
'Terms' => '条項',
'To' => 'に',
'TopArticles' => 'トップ記事',
'Trend' => '傾向',
'Turnover' => 'ひっくり返す',
'Type' => 'タイプ',
'ZipCode' => '郵便番号',
]];

106
Theme/Backend/Lang/ko.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => '계정',
'Active' => '활동적인',
'Activity' => '활동',
'Address' => '주소',
'All' => '모두',
'Amount' => '양',
'Analysis' => '분석',
'Analyze' => '#VALUE!',
'Area' => '지역',
'Article' => '기사',
'Articles' => '조항',
'Available' => '사용 가능',
'Calculate' => '계산하다',
'City' => '도시',
'Class' => '등급',
'Client' => '고객',
'ClientID' => '클라이언트 ID.',
'ClientName' => '고객 이름',
'Clients' => '클라이언트',
'Comparison' => '#VALUE!',
'Confirmation' => '확인',
'CoreData' => '핵심 데이터',
'Country' => '국가',
'Created' => '만들어진',
'Creator' => '창조자',
'CreditNote' => '신용 노트',
'Current' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => '날짜',
'DefaultInternational' => '기본 국제',
'DefaultNational' => '기본 내셔널',
'Delivery' => '배달',
'DeliveryNote' => '배달 메모',
'Description' => '설명',
'Discount' => '할인',
'DiscountP' => '할인 %',
'Documentation' => '선적 서류 비치',
'Employee' => '직원',
'End' => '#VALUE!',
'FAO' => '조금',
'From' => '에서',
'Group' => '그룹',
'Groups' => '여러 떼',
'Highest' => '제일 높은',
'Inactive' => '비활성으로',
'Interval' => '간격',
'Invoice' => '송장',
'Invoices' => '송장',
'IsDefault' => '기본값은 무엇입니까?',
'Language' => '언어',
'Last' => '마지막',
'Localization' => '현지화',
'Loginname' => '로그인 이름',
'Matchcode' => '매치 코드',
'Media' => '미디어',
'MinPrice' => '최소 가격',
'Name' => '이름',
'Name1' => '이름 1',
'Name2' => '이름 2',
'Name3' => '이름 3.',
'Offer' => '권하다',
'Order' => '주문하다',
'Ordered' => '주문했다',
'OrderedBy' => '명령을 받았다',
'Orders' => '명령',
'Payment' => '지불',
'Price' => '가격',
'Priority' => '우선 사항',
'Profit' => '#VALUE!',
'Quantity' => '수량',
'Receipt' => '영수증',
'Reference' => '참조',
'Sales' => '매상',
'Settings' => '설정',
'Single' => '하나의',
'Start' => '#VALUE!',
'State' => '상태',
'Statistics' => '통계',
'Status' => '상태',
'Stock' => '재고',
'Street' => '거리',
'Subgroup' => '하급 집단',
'Tax' => '세',
'Terms' => '자귀',
'To' => '에게',
'TopArticles' => '최고 기사',
'Trend' => '경향',
'Turnover' => '회전율',
'Type' => '유형',
'ZipCode' => '우편 번호',
]];

106
Theme/Backend/Lang/no.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Regnskap',
'Active' => 'Aktiv',
'Activity' => 'Aktivitet',
'Address' => 'Adresse',
'All' => 'Alle',
'Amount' => 'Beløp',
'Analysis' => 'Analyse',
'Analyze' => '#VALUE!',
'Area' => 'Område',
'Article' => 'Artikkel',
'Articles' => 'Artikler',
'Available' => 'Tilgjengelig',
'Calculate' => 'Regne ut',
'City' => 'By',
'Class' => 'Klasse',
'Client' => 'Klient',
'ClientID' => 'klient-ID',
'ClientName' => 'Klientens navn',
'Clients' => 'Klienter',
'Comparison' => '#VALUE!',
'Confirmation' => 'Bekreftelse',
'CoreData' => 'Kjernedata',
'Country' => 'Land',
'Created' => 'Opprettet',
'Creator' => 'Skaperen.',
'CreditNote' => 'Kredittnota',
'Current' => '#VALUE!',
'DSO' => 'DSO',
'Date' => 'Dato',
'DefaultInternational' => 'Standard internasjonal',
'DefaultNational' => 'Standard nasjonal',
'Delivery' => 'Leveranse',
'DeliveryNote' => 'Leveringsnotat',
'Description' => 'Beskrivelse',
'Discount' => 'Rabatt',
'DiscountP' => 'Rabatt i%',
'Documentation' => 'Dokumentasjon',
'Employee' => 'Ansatt',
'End' => '#VALUE!',
'FAO' => 'FAO.',
'From' => 'Fra',
'Group' => 'Gruppe',
'Groups' => 'Grupper',
'Highest' => 'Høyeste',
'Inactive' => 'Inaktiv',
'Interval' => 'Intervall',
'Invoice' => 'Faktura',
'Invoices' => 'Fakturaer',
'IsDefault' => 'Er standard?',
'Language' => 'Språk',
'Last' => 'Siste',
'Localization' => 'Lokalisering',
'Loginname' => 'Påloggingsnavn',
'Matchcode' => 'MatchCode.',
'Media' => 'Media',
'MinPrice' => 'Min pris',
'Name' => 'Navn',
'Name1' => 'Navn 1',
'Name2' => 'Navn 2.',
'Name3' => 'Navn 3.',
'Offer' => 'By på',
'Order' => 'Rekkefølge',
'Ordered' => 'Bestilt',
'OrderedBy' => 'Bestilt av.',
'Orders' => 'Bestillinger',
'Payment' => 'innbetaling',
'Price' => 'Pris',
'Priority' => 'Prioritet',
'Profit' => '#VALUE!',
'Quantity' => 'Mengde',
'Receipt' => 'Kvittering',
'Reference' => 'Referanse',
'Sales' => 'Salg',
'Settings' => 'Innstillinger',
'Single' => 'Enkelt',
'Start' => '#VALUE!',
'State' => 'Stat',
'Statistics' => 'Statistikk',
'Status' => 'Status',
'Stock' => 'Lager',
'Street' => 'gate',
'Subgroup' => 'Undergruppe',
'Tax' => 'Avgift',
'Terms' => 'Vilkårene',
'To' => 'Til',
'TopArticles' => 'Toppartikler',
'Trend' => 'Trend',
'Turnover' => 'Omsetning',
'Type' => 'Type',
'ZipCode' => 'Post kode',
]];

106
Theme/Backend/Lang/pl.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Rachunek',
'Active' => 'Aktywny',
'Activity' => 'Czynność',
'Address' => 'Adres',
'All' => 'Wszystkie',
'Amount' => 'Kwota',
'Analysis' => 'Analiza',
'Analyze' => '#VALUE!',
'Area' => 'Powierzchnia',
'Article' => 'Artykuł',
'Articles' => 'Artykuły',
'Available' => 'Dostępny',
'Calculate' => 'Oblicz',
'City' => 'Miasto',
'Class' => 'Klasa',
'Client' => 'Klient',
'ClientID' => 'Identyfikator klienta',
'ClientName' => 'Nazwa klienta',
'Clients' => 'Klienci.',
'Comparison' => '#VALUE!',
'Confirmation' => 'Potwierdzenie',
'CoreData' => 'Podstawowe dane',
'Country' => 'Kraj',
'Created' => 'Utworzony',
'Creator' => 'Twórca',
'CreditNote' => 'Uwaga kredytowa',
'Current' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => 'Data',
'DefaultInternational' => 'Domyślny międzynarodowy',
'DefaultNational' => 'Domyślny National.',
'Delivery' => 'Dostawa',
'DeliveryNote' => 'Dowód dostawy',
'Description' => 'Opis',
'Discount' => 'Zniżka',
'DiscountP' => 'Zniżka w%',
'Documentation' => 'Dokumentacja',
'Employee' => 'Pracownik',
'End' => '#VALUE!',
'FAO' => 'Fao.',
'From' => 'Z',
'Group' => 'Grupa',
'Groups' => 'Grupy',
'Highest' => 'Najwyższy',
'Inactive' => 'Nieaktywny',
'Interval' => 'Interwał',
'Invoice' => 'Faktura',
'Invoices' => 'Faktury',
'IsDefault' => 'Jest domyślnie?',
'Language' => 'Język',
'Last' => 'Ostatni, ubiegły, zeszły',
'Localization' => 'Lokalizacja',
'Loginname' => 'Nazwa użytkownika',
'Matchcode' => 'MatchCode.',
'Media' => 'Głoska bezdźwięczna',
'MinPrice' => 'Cena min',
'Name' => 'Nazwa',
'Name1' => 'Nazwa 1.',
'Name2' => 'Nazwa 2.',
'Name3' => 'Nazwa 3.',
'Offer' => 'Oferta',
'Order' => 'Zamówienie',
'Ordered' => 'Uporządkowany',
'OrderedBy' => 'Zamówiony przez',
'Orders' => 'Zamówienia',
'Payment' => 'Zapłata',
'Price' => 'Cena £',
'Priority' => 'Priorytet',
'Profit' => '#VALUE!',
'Quantity' => 'Ilość',
'Receipt' => 'Paragon fiskalny',
'Reference' => 'Odniesienie',
'Sales' => 'Obroty',
'Settings' => 'Ustawienia',
'Single' => 'Pojedynczy',
'Start' => '#VALUE!',
'State' => 'Państwo',
'Statistics' => 'Statystyka',
'Status' => 'Status',
'Stock' => 'Magazyn',
'Street' => 'Ulica',
'Subgroup' => 'Podgrupa',
'Tax' => 'Podatek',
'Terms' => 'Semestry',
'To' => 'Do',
'TopArticles' => 'Najlepsze artykuły',
'Trend' => 'Tendencja',
'Turnover' => 'Obrót',
'Type' => 'Rodzaj',
'ZipCode' => 'Kod pocztowy',
]];

106
Theme/Backend/Lang/pt.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Conta',
'Active' => 'Ativo',
'Activity' => 'Atividade',
'Address' => 'Endereço',
'All' => 'Tudo',
'Amount' => 'Montante',
'Analysis' => 'Análise',
'Analyze' => '#VALUE!',
'Area' => 'Área',
'Article' => 'Artigo',
'Articles' => 'Artigos',
'Available' => 'Disponível',
'Calculate' => 'Calcular',
'City' => 'Cidade',
'Class' => 'Classe',
'Client' => 'Cliente',
'ClientID' => 'ID do Cliente',
'ClientName' => 'Nome do cliente',
'Clients' => 'Clientes',
'Comparison' => '#VALUE!',
'Confirmation' => 'Confirmação',
'CoreData' => 'Dados principais',
'Country' => 'País',
'Created' => 'Criado',
'Creator' => 'O Criador',
'CreditNote' => 'Nota de crédito',
'Current' => '#VALUE!',
'DSO' => 'Dso.',
'Date' => 'Encontro',
'DefaultInternational' => 'Padrão Internacional',
'DefaultNational' => 'Nacional padrão',
'Delivery' => 'Entrega',
'DeliveryNote' => 'Nota de entrega',
'Description' => 'Descrição',
'Discount' => 'Desconto',
'DiscountP' => 'Desconto em%',
'Documentation' => 'Documentação',
'Employee' => 'Funcionário',
'End' => '#VALUE!',
'FAO' => 'FAO.',
'From' => 'A partir de',
'Group' => 'Grupo',
'Groups' => 'Grupos',
'Highest' => 'Altíssima',
'Inactive' => 'Inativo',
'Interval' => 'Intervalo',
'Invoice' => 'Fatura',
'Invoices' => 'Faturas',
'IsDefault' => 'É padrão?',
'Language' => 'Língua',
'Last' => 'Durar',
'Localization' => 'Localização',
'Loginname' => 'Nome de acesso',
'Matchcode' => 'Código de combinação',
'Media' => 'meios de comunicação',
'MinPrice' => 'Preço mínimo',
'Name' => 'Nome',
'Name1' => 'Nome 1.',
'Name2' => 'Nome 2.',
'Name3' => 'Nome 3.',
'Offer' => 'Oferta',
'Order' => 'Pedido',
'Ordered' => 'Encomendado',
'OrderedBy' => 'Ordenado por',
'Orders' => 'Pedidos',
'Payment' => 'Pagamento',
'Price' => 'Preço',
'Priority' => 'Prioridade',
'Profit' => '#VALUE!',
'Quantity' => 'Quantidade',
'Receipt' => 'Recibo',
'Reference' => 'Referência',
'Sales' => 'Vendas',
'Settings' => 'Configurações',
'Single' => 'Solteiro',
'Start' => '#VALUE!',
'State' => 'Estado',
'Statistics' => 'Estatisticas',
'Status' => 'Status',
'Stock' => 'Estoque',
'Street' => 'rua',
'Subgroup' => 'Subgrupo',
'Tax' => 'Imposto',
'Terms' => 'Termos.',
'To' => 'Para',
'TopArticles' => 'Artigos de topo',
'Trend' => 'Tendência',
'Turnover' => 'Volume de negócios',
'Type' => 'Modelo',
'ZipCode' => 'CEP',
]];

106
Theme/Backend/Lang/ru.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Счет',
'Active' => 'Активный',
'Activity' => 'Мероприятия',
'Address' => 'Адрес',
'All' => 'Все',
'Amount' => 'Количество',
'Analysis' => 'Анализ',
'Analyze' => '#VALUE!',
'Area' => 'Площадь',
'Article' => 'Статья',
'Articles' => 'Статьи',
'Available' => 'Доступный',
'Calculate' => 'Рассчитать',
'City' => 'Город',
'Class' => 'Класс',
'Client' => 'Клиент',
'ClientID' => 'ID клиента',
'ClientName' => 'имя клиента',
'Clients' => 'Клиенты',
'Comparison' => '#VALUE!',
'Confirmation' => 'Подтверждение',
'CoreData' => 'Основные данные',
'Country' => 'Страна',
'Created' => 'Созданный',
'Creator' => 'Создатель',
'CreditNote' => 'Кредитная нота',
'Current' => '#VALUE!',
'DSO' => 'DSO',
'Date' => 'Дата',
'DefaultInternational' => 'Default International',
'DefaultNational' => 'Национальный по умолчанию',
'Delivery' => 'Доставка',
'DeliveryNote' => 'Накладная',
'Description' => 'Описание',
'Discount' => 'Скидка',
'DiscountP' => 'Скидка в%',
'Documentation' => 'Документация',
'Employee' => 'Наемный рабочий',
'End' => '#VALUE!',
'FAO' => 'ФАО',
'From' => 'От',
'Group' => 'Группа',
'Groups' => 'Группы',
'Highest' => 'Наибольший',
'Inactive' => 'Неактивный',
'Interval' => 'Интервал',
'Invoice' => 'Счет',
'Invoices' => 'Счета',
'IsDefault' => 'По умолчанию?',
'Language' => 'Язык',
'Last' => 'Последний',
'Localization' => 'Локализация',
'Loginname' => 'Логин',
'Matchcode' => 'MatchCode.',
'Media' => 'Средства массовой информации',
'MinPrice' => 'Мин цена',
'Name' => 'Имя',
'Name1' => 'Имя 1.',
'Name2' => 'Имя 2.',
'Name3' => 'Имя 3.',
'Offer' => 'Предложение',
'Order' => 'Заказ',
'Ordered' => 'Заказал',
'OrderedBy' => 'Заказан',
'Orders' => 'Заказывает',
'Payment' => 'Оплата',
'Price' => 'Цена',
'Priority' => 'Приоритет',
'Profit' => '#VALUE!',
'Quantity' => 'Количество',
'Receipt' => 'Квитанция',
'Reference' => 'Ссылка',
'Sales' => 'Продажи',
'Settings' => 'Настройки',
'Single' => 'Одинокий',
'Start' => '#VALUE!',
'State' => 'Состояние',
'Statistics' => 'Статистика',
'Status' => 'Статус',
'Stock' => 'Склад',
'Street' => 'улица',
'Subgroup' => 'Подгруппа',
'Tax' => 'Налог',
'Terms' => 'Условия',
'To' => 'К',
'TopArticles' => 'Лучшие статьи',
'Trend' => 'Тренд',
'Turnover' => 'Оборот',
'Type' => 'Тип',
'ZipCode' => 'Почтовый Индекс',
]];

106
Theme/Backend/Lang/sv.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'konto',
'Active' => 'Aktiva',
'Activity' => 'Aktivitet',
'Address' => 'Adress',
'All' => 'Allt',
'Amount' => 'Belopp',
'Analysis' => 'Analys',
'Analyze' => '#VALUE!',
'Area' => 'Område',
'Article' => 'Artikel',
'Articles' => 'Artiklar',
'Available' => 'Tillgängligt',
'Calculate' => 'Beräkna',
'City' => 'Stad',
'Class' => 'Klass',
'Client' => 'Klient',
'ClientID' => 'Klient ID',
'ClientName' => 'Kundnamn',
'Clients' => 'Klienter',
'Comparison' => '#VALUE!',
'Confirmation' => 'Bekräftelse',
'CoreData' => 'Kärndata',
'Country' => 'Land',
'Created' => 'Skapad',
'Creator' => 'Skapare',
'CreditNote' => 'Kreditanteckning',
'Current' => '#VALUE!',
'DSO' => 'Do',
'Date' => 'Datum',
'DefaultInternational' => 'Standard International',
'DefaultNational' => 'Standard nationell',
'Delivery' => 'Leverans',
'DeliveryNote' => 'Leveransanteckning',
'Description' => 'Beskrivning',
'Discount' => 'Rabatt',
'DiscountP' => 'Rabatt i%',
'Documentation' => 'Dokumentation',
'Employee' => 'Anställd',
'End' => '#VALUE!',
'FAO' => 'Fao',
'From' => 'Från',
'Group' => 'Grupp',
'Groups' => 'Grupp',
'Highest' => 'Högsta',
'Inactive' => 'Inaktiv',
'Interval' => 'Intervall',
'Invoice' => 'Faktura',
'Invoices' => 'Fakturor',
'IsDefault' => 'Är standard?',
'Language' => 'Språk',
'Last' => 'Sista',
'Localization' => 'Lokalisering',
'Loginname' => 'Inloggningsnamn',
'Matchcode' => 'Matchcode',
'Media' => 'Media',
'MinPrice' => 'Min pris',
'Name' => 'namn',
'Name1' => 'Namn 1',
'Name2' => 'Namn 2',
'Name3' => 'Namn 3',
'Offer' => 'Erbjudande',
'Order' => 'Beställa',
'Ordered' => 'Beställde',
'OrderedBy' => 'Beställd av',
'Orders' => 'Order',
'Payment' => 'Betalning',
'Price' => 'Pris',
'Priority' => 'Prioritet',
'Profit' => '#VALUE!',
'Quantity' => 'Kvantitet',
'Receipt' => 'Mottagande',
'Reference' => 'Referens',
'Sales' => 'Försäljning',
'Settings' => 'inställningar',
'Single' => 'Enda',
'Start' => '#VALUE!',
'State' => 'stat',
'Statistics' => 'Statistik',
'Status' => 'Status',
'Stock' => 'Stock',
'Street' => 'Gata',
'Subgroup' => 'Undergrupp',
'Tax' => 'Beskatta',
'Terms' => 'Villkor',
'To' => 'Till',
'TopArticles' => 'Toppartiklar',
'Trend' => 'Trend',
'Turnover' => 'Omsättning',
'Type' => 'Typ',
'ZipCode' => 'Postnummer',
]];

106
Theme/Backend/Lang/th.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'บัญชี',
'Active' => 'คล่องแคล่ว',
'Activity' => 'กิจกรรม',
'Address' => 'ที่อยู่',
'All' => 'ทั้งหมด',
'Amount' => 'จำนวน',
'Analysis' => 'การวิเคราะห์',
'Analyze' => '#VALUE!',
'Area' => 'พื้นที่',
'Article' => 'บทความ',
'Articles' => 'บทความ',
'Available' => 'มีอยู่',
'Calculate' => 'คำนวณ',
'City' => 'เมือง',
'Class' => 'ระดับ',
'Client' => 'ลูกค้า',
'ClientID' => 'รหัสลูกค้า',
'ClientName' => 'ชื่อลูกค้า',
'Clients' => 'ลูกค้า',
'Comparison' => '#VALUE!',
'Confirmation' => 'การยืนยัน',
'CoreData' => 'ข้อมูลหลัก',
'Country' => 'ประเทศ',
'Created' => 'สร้าง',
'Creator' => 'ผู้สร้าง',
'CreditNote' => 'ใบลดหนี้',
'Current' => '#VALUE!',
'DSO' => 'DSO',
'Date' => 'วันที่',
'DefaultInternational' => 'เริ่มต้นระหว่างประเทศ',
'DefaultNational' => 'เริ่มต้นชาติ',
'Delivery' => 'จัดส่ง',
'DeliveryNote' => 'บันทึกการส่งมอบ',
'Description' => 'คำอธิบาย',
'Discount' => 'การลดราคา',
'DiscountP' => 'ส่วนลดใน%',
'Documentation' => 'เอกสาร',
'Employee' => 'พนักงาน',
'End' => '#VALUE!',
'FAO' => 'คน',
'From' => 'จาก',
'Group' => 'กลุ่ม',
'Groups' => 'กลุ่ม',
'Highest' => 'สูงที่สุด',
'Inactive' => 'ไม่ใช้งาน',
'Interval' => 'ช่วงเวลา',
'Invoice' => 'ใบแจ้งหนี้',
'Invoices' => 'ใบแจ้งหนี้',
'IsDefault' => 'เป็นค่าเริ่มต้น?',
'Language' => 'ภาษา',
'Last' => 'ล่าสุด',
'Localization' => 'การแปล',
'Loginname' => 'ชื่อเข้าสู่ระบบ',
'Matchcode' => 'การจับคู่',
'Media' => 'สื่อ',
'MinPrice' => 'นาทีราคา',
'Name' => 'ชื่อ',
'Name1' => 'ชื่อ 1',
'Name2' => 'ชื่อ 2',
'Name3' => 'ชื่อ 3',
'Offer' => 'เสนอ',
'Order' => 'คำสั่ง',
'Ordered' => 'ที่ได้รับคำสั่ง',
'OrderedBy' => 'ได้รับคำสั่งจาก',
'Orders' => 'คำสั่งซื้อ',
'Payment' => 'การชำระเงิน',
'Price' => 'ราคา',
'Priority' => 'ลำดับความสำคัญ',
'Profit' => '#VALUE!',
'Quantity' => 'ปริมาณ',
'Receipt' => 'ใบเสร็จ',
'Reference' => 'อ้างอิง',
'Sales' => 'ฝ่ายขาย',
'Settings' => 'การตั้งค่า',
'Single' => 'เดี่ยว',
'Start' => '#VALUE!',
'State' => 'สถานะ',
'Statistics' => 'สถิติ',
'Status' => 'สถานะ',
'Stock' => 'คลังสินค้า',
'Street' => 'ถนน',
'Subgroup' => 'กลุ่มย่อย',
'Tax' => 'ภาษี',
'Terms' => 'เงื่อนไข',
'To' => 'ถึง',
'TopArticles' => 'บทความยอดนิยม',
'Trend' => 'แนวโน้ม',
'Turnover' => 'การหมุนเวียน',
'Type' => 'พิมพ์',
'ZipCode' => 'รหัสไปรษณีย์',
]];

106
Theme/Backend/Lang/tr.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Hesap',
'Active' => 'Aktif',
'Activity' => 'Aktivite',
'Address' => 'Adres',
'All' => 'Herşey',
'Amount' => 'Miktar',
'Analysis' => 'Analiz',
'Analyze' => '#VALUE!',
'Area' => 'Alan',
'Article' => 'Madde',
'Articles' => 'Nesne',
'Available' => 'Mevcut',
'Calculate' => 'Hesaplamak',
'City' => 'Şehir',
'Class' => 'Sınıf',
'Client' => 'Müşteri',
'ClientID' => 'Müşteri Kimliği',
'ClientName' => 'Müşteri Adı',
'Clients' => 'Müşteriler',
'Comparison' => '#VALUE!',
'Confirmation' => 'Onayla',
'CoreData' => 'Temel veri',
'Country' => 'Ülke',
'Created' => 'Yaratılmış',
'Creator' => 'Yaratıcı',
'CreditNote' => 'Kredi notu',
'Current' => '#VALUE!',
'DSO' => 'Dso',
'Date' => 'Tarih',
'DefaultInternational' => 'Varsayılan Uluslararası',
'DefaultNational' => 'Varsayılan ulusal',
'Delivery' => 'Teslimat',
'DeliveryNote' => 'Teslimat notu',
'Description' => 'Açıklama',
'Discount' => 'İndirim',
'DiscountP' => '% İndirim',
'Documentation' => 'Belgeler',
'Employee' => 'Çalışan',
'End' => '#VALUE!',
'FAO' => 'FAO',
'From' => 'İtibaren',
'Group' => 'Grup',
'Groups' => 'Gruplar',
'Highest' => 'En yüksek',
'Inactive' => 'Aktif olmayan',
'Interval' => 'Aralık',
'Invoice' => 'Fatura',
'Invoices' => 'Faturalar',
'IsDefault' => 'Varsayılan mı?',
'Language' => 'Dilim',
'Last' => 'Geçen',
'Localization' => 'Yerelleştirme',
'Loginname' => 'Kullanıcı adı',
'Matchcode' => 'Maç Kodu',
'Media' => 'Medya',
'MinPrice' => 'Minik fiyat',
'Name' => 'İsim',
'Name1' => 'İsim 1',
'Name2' => 'İsim 2',
'Name3' => 'ADI 3',
'Offer' => 'Teklif',
'Order' => 'Emir',
'Ordered' => 'Emir',
'OrderedBy' => 'Tarafından sipariş edildi',
'Orders' => 'Emirler',
'Payment' => 'Ödeme',
'Price' => 'Fiyat',
'Priority' => 'Öncelik',
'Profit' => '#VALUE!',
'Quantity' => 'Miktar',
'Receipt' => 'Fiş',
'Reference' => 'Referans',
'Sales' => 'Satış',
'Settings' => 'Ayarlar',
'Single' => 'Bekar',
'Start' => '#VALUE!',
'State' => 'Belirtmek, bildirmek',
'Statistics' => 'İstatistik',
'Status' => 'Durum',
'Stock' => 'Stoklamak',
'Street' => 'sokak',
'Subgroup' => 'Alt grup',
'Tax' => 'Vergi',
'Terms' => 'Terimler',
'To' => 'İle',
'TopArticles' => 'En iyi makaleler',
'Trend' => 'Akım',
'Turnover' => 'Devir',
'Type' => 'Tip',
'ZipCode' => 'Posta kodu',
]];

106
Theme/Backend/Lang/uk.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => 'Обліковий запис',
'Active' => 'Активний',
'Activity' => 'Діяльність',
'Address' => 'Адреса',
'All' => 'Все',
'Amount' => 'Сума',
'Analysis' => 'Аналіз',
'Analyze' => '#VALUE!',
'Area' => 'Площа',
'Article' => 'Стаття',
'Articles' => 'Статті',
'Available' => 'Доступний',
'Calculate' => 'Розраховувати',
'City' => 'Місто',
'Class' => 'Клас',
'Client' => 'Клієнт',
'ClientID' => 'Ідентифікатор клієнта',
'ClientName' => 'Назва клієнта',
'Clients' => 'Клієнти',
'Comparison' => '#VALUE!',
'Confirmation' => 'Підтвердження',
'CoreData' => 'Основні дані',
'Country' => 'Країна',
'Created' => 'Створений',
'Creator' => 'Творець',
'CreditNote' => 'Кредитове авізо',
'Current' => '#VALUE!',
'DSO' => 'Дз',
'Date' => 'Дата',
'DefaultInternational' => 'Міжнародний за замовчуванням',
'DefaultNational' => 'Національний за замовчуванням',
'Delivery' => 'Доставка',
'DeliveryNote' => 'Накладна',
'Description' => 'Опис',
'Discount' => 'Знижка',
'DiscountP' => 'Знижка у%',
'Documentation' => 'Документація',
'Employee' => 'Співробітник',
'End' => '#VALUE!',
'FAO' => 'Фах',
'From' => 'Від',
'Group' => 'Група',
'Groups' => 'Групи',
'Highest' => 'Найвищий',
'Inactive' => 'Неактивний',
'Interval' => 'Інтервал',
'Invoice' => 'Рахунок-фактура',
'Invoices' => 'Рахунки-фактури',
'IsDefault' => 'Чи є за замовчуванням?',
'Language' => 'Мову',
'Last' => 'Остання',
'Localization' => 'Локалізація',
'Loginname' => 'Логін',
'Matchcode' => 'Матч',
'Media' => 'Медіа',
'MinPrice' => 'Ціна',
'Name' => 'Назва',
'Name1' => 'Ім\'я 1',
'Name2' => 'Ім\'я 2',
'Name3' => 'Назва 3',
'Offer' => 'Пропозиція',
'Order' => 'Порядок',
'Ordered' => 'Упорядкований',
'OrderedBy' => 'Замовлений',
'Orders' => 'Накази',
'Payment' => 'Платіж',
'Price' => 'Ціна',
'Priority' => 'Пріоритет',
'Profit' => '#VALUE!',
'Quantity' => 'Кількість',
'Receipt' => 'Квитанція',
'Reference' => 'Довідник',
'Sales' => 'Продаж',
'Settings' => 'Налаштування',
'Single' => 'Одиночний',
'Start' => '#VALUE!',
'State' => 'Держава',
'Statistics' => 'Статистика',
'Status' => 'Статус',
'Stock' => 'Запас',
'Street' => 'Вулиця',
'Subgroup' => 'Підгруп',
'Tax' => 'Оподаткування',
'Terms' => 'Умови',
'To' => 'До',
'TopArticles' => 'Топці',
'Trend' => 'Тенденція',
'Turnover' => 'Оборот',
'Type' => 'Тип',
'ZipCode' => 'ЗІП код',
]];

106
Theme/Backend/Lang/zh.lang.php Executable file
View File

@ -0,0 +1,106 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Localization
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
return ['Sales' => [
'Account' => '帐户',
'Active' => '积极的',
'Activity' => '活动',
'Address' => '地址',
'All' => '全部',
'Amount' => '数量',
'Analysis' => '分析',
'Analyze' => '#VALUE!',
'Area' => '区域',
'Article' => '文章',
'Articles' => '文章',
'Available' => '可用的',
'Calculate' => '计算',
'City' => '城市',
'Class' => '班级',
'Client' => '客户',
'ClientID' => '客户ID',
'ClientName' => '客户名称',
'Clients' => '客户',
'Comparison' => '#VALUE!',
'Confirmation' => '确认',
'CoreData' => '核心数据',
'Country' => '国家',
'Created' => '创造了',
'Creator' => '创造者',
'CreditNote' => '信用票据',
'Current' => '#VALUE!',
'DSO' => 'DSO',
'Date' => '日期',
'DefaultInternational' => '违约国际',
'DefaultNational' => '违约国家',
'Delivery' => '交货',
'DeliveryNote' => '送货单',
'Description' => '描述',
'Discount' => '折扣',
'DiscountP' => '折扣%%',
'Documentation' => '文件',
'Employee' => '员工',
'End' => '#VALUE!',
'FAO' => '粮农组织',
'From' => '从',
'Group' => '团体',
'Groups' => '团体',
'Highest' => '最高',
'Inactive' => '不活跃',
'Interval' => '间隔',
'Invoice' => '发票',
'Invoices' => '发票',
'IsDefault' => '默认为默认情况下?',
'Language' => '语',
'Last' => '最后的',
'Localization' => '本土化',
'Loginname' => '登录名',
'Matchcode' => '匹配码',
'Media' => '媒体',
'MinPrice' => '最终价格',
'Name' => '名称',
'Name1' => '名称1',
'Name2' => '名称2',
'Name3' => '名称3.',
'Offer' => '提供',
'Order' => '命令',
'Ordered' => '订购',
'OrderedBy' => '订购',
'Orders' => '命令',
'Payment' => '支付',
'Price' => '价格',
'Priority' => '优先事项',
'Profit' => '#VALUE!',
'Quantity' => '数量',
'Receipt' => '收据',
'Reference' => '参考',
'Sales' => '销售量',
'Settings' => '设置',
'Single' => '单身的',
'Start' => '#VALUE!',
'State' => '状态',
'Statistics' => '统计数据',
'Status' => '地位',
'Stock' => '库存',
'Street' => '街道',
'Subgroup' => '亚组',
'Tax' => '税',
'Terms' => '条款',
'To' => '到',
'TopArticles' => '顶级文章',
'Trend' => '趋势',
'Turnover' => '周转',
'Type' => '类型',
'ZipCode' => '邮政编码',
]];

View File

@ -0,0 +1,399 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Billing
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
use phpOMS\Localization\Money;
/**
* @var \phpOMS\Views\View $this
*/
echo $this->getData('nav')->render();
?>
<div class="row">
<div class="col-xs-12 col-lg-4">
<section class="portlet">
<div class="portlet-body">
<h2><?= $this->getHtml('Current'); ?></h2>
<div class="form-group">
<div class="input-control">
<label for="iOname"><?= $this->getHtml('Start'); ?></label>
<input type="date">
</div>
<div class="input-control">
<label for="iOname"><?= $this->getHtml('End'); ?></label>
<input type="date">
</div>
</div>
<h2><?= $this->getHtml('Comparison'); ?></h2>
<div class="form-group">
<div class="input-control">
<label for="iOname"><?= $this->getHtml('Start'); ?></label>
<input type="date">
</div>
<div class="input-control">
<label for="iOname"><?= $this->getHtml('End'); ?></label>
<input type="date">
</div>
</div>
</div>
<div class="portlet-foot">
<input id="iSubmitGeneral" name="submitGeneral" type="submit" value="<?= $this->getHtml('Analyze'); ?>">
</div>
</section>
</div>
<div class="col-xs-12 col-lg-4">
<section class="portlet highlight-2">
<div class="portlet-head">Actual</div>
<div class="portlet-body">
<div class="form-group">
<div>Sales MTD:</div>
<div>+12.0 %</div>
</div>
<div class="form-group">
<div>Sales YTD:</div>
<div>+1.2 %</div>
</div>
<div class="form-group">
<div>Gross Profit Current:</div>
<div>+12.0 %</div>
</div>
<div class="form-group">
<div>Gross Profit Previous:</div>
<div>+1.2 %</div>
</div>
</div>
</section>
</div>
<div class="col-xs-12 col-lg-4">
<section class="portlet highlight-3">
<div class="portlet-head">Budget</div>
<div class="portlet-body">
<div class="form-group">
<div>Sales MTD:</div>
<div>+12.0 %</div>
</div>
<div class="form-group">
<div>Sales YTD:</div>
<div>+1.2 %</div>
</div>
<div class="form-group">
<div>Gross Profit Current:</div>
<div>+12.0 %</div>
</div>
<div class="form-group">
<div>Gross Profit Budget:</div>
<div>+1.2 %</div>
</div>
</div>
</section>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-lg-6">
<section class="portlet">
<div class="portlet-head">
Sales / Profit - Monthly
<?php include __DIR__ . '/../../../../Web/Backend/Themes/popup-export-data.tpl.php'; ?>
</div>
<?php $salesCustomer = $this->getData('monthlySalesCustomer'); ?>
<div class="portlet-body">
<canvas id="sales-region" data-chart='{
"type": "bar",
"data": {
"labels": [
<?php
$temp = [];
foreach ($salesCustomer as $monthly) {
$temp[] = $monthly['month'] . '/' . \substr((string) $monthly['year'], -2);
}
?>
<?= '"' . \implode('", "', $temp) . '"'; ?>
],
"datasets": [
{
"label": "<?= $this->getHtml('Profit'); ?>",
"type": "line",
"data": [
<?php
$temp = [];
foreach ($salesCustomer as $monthly) {
$temp[] = ((int) $monthly['customers']);
}
?>
<?= \implode(',', $temp); ?>
],
"yAxisID": "axis-2",
"fill": false,
"borderColor": "rgb(255, 99, 132)",
"backgroundColor": "rgb(255, 99, 132)",
"tension": 0.0
},
{
"label": "<?= $this->getHtml('Sales'); ?>",
"type": "bar",
"data": [
<?php
$temp = [];
foreach ($salesCustomer as $monthly) {
$temp[] = ((int) $monthly['net_sales']) / 1000;
}
?>
<?= \implode(',', $temp); ?>
],
"yAxisID": "axis-1",
"fill": false,
"borderColor": "rgb(54, 162, 235)",
"backgroundColor": "rgb(54, 162, 235)",
"tension": 0.0
}
]
},
"options": {
"title": {
"display": false,
"text": "Sales / Profit"
},
"scales": {
"yAxes": [
{
"id": "axis-1",
"display": true,
"position": "left"
},
{
"id": "axis-2",
"display": true,
"position": "right",
"scaleLabel": {
"display": true,
"labelString": "<?= $this->getHtml('Profit'); ?>"
},
"gridLines": {
"display": false
}
}
]
}
}
}'></canvas>
<div class="more-container">
<input id="more-customer-sales" type="checkbox" name="more-container">
<label for="more-customer-sales">
<span>Data</span>
<i class="fa fa-chevron-right expand"></i>
</label>
<div>
<table class="default">
<thead>
<tr>
<td>Month
<td>Sales
<td>Customer count
<tbody>
<?php
$sum1 = 0;
$sum2 = 0;
foreach ($salesCustomer as $values) :
$sum1 += ((int) $values['net_sales']) / 1000;
$sum2 += ((int) $values['customers']);
?>
<tr>
<td><?= $values['month'] . '/' . \substr((string) $values['year'], -2); ?>
<td><?= (new Money(((int) $values['net_sales']) / 1000))->getCurrency(); ?>
<td><?= ((int) $values['customers']); ?>
<?php endforeach; ?>
<tr>
<td>Total
<td><?= (new Money($sum1))->getCurrency(); ?>
<td><?= (int) ($sum2 / 12); ?>
</table>
</div>
</div>
</div>
</section>
</div>
<div class="col-xs-12 col-lg-6">
<section class="portlet">
<div class="portlet-head">
Sales / Profit - Annual
<?php include __DIR__ . '/../../../../Web/Backend/Themes/popup-export-data.tpl.php'; ?>
</div>
<?php $salesCustomer = $this->getData('annualSalesCustomer'); ?>
<div class="portlet-body">
<canvas id="sales-customer-annual" data-chart='{
"type": "bar",
"data": {
"labels": [
<?php
$temp = [];
foreach ($salesCustomer as $annual) {
$temp[] = $annual['year'];
}
?>
<?= '"' . \implode('", "', $temp) . '"'; ?>
],
"datasets": [
{
"label": "<?= $this->getHtml('Profit'); ?>",
"type": "line",
"data": [
<?php
$temp = [];
foreach ($salesCustomer as $annual) {
$temp[] = ((int) $annual['customers']);
}
?>
<?= \implode(',', $temp); ?>
],
"yAxisID": "axis-2",
"fill": false,
"borderColor": "rgb(255, 99, 132)",
"backgroundColor": "rgb(255, 99, 132)",
"tension": 0.0
},
{
"label": "<?= $this->getHtml('Sales'); ?>",
"type": "bar",
"data": [
<?php
$temp = [];
foreach ($salesCustomer as $annual) {
$temp[] = ((int) $annual['net_sales']) / 1000;
}
?>
<?= \implode(',', $temp); ?>
],
"yAxisID": "axis-1",
"fill": false,
"borderColor": "rgb(54, 162, 235)",
"backgroundColor": "rgb(54, 162, 235)",
"tension": 0.0
}
]
},
"options": {
"title": {
"display": false,
"text": "Sales / Profit"
},
"scales": {
"yAxes": [
{
"id": "axis-1",
"display": true,
"position": "left"
},
{
"id": "axis-2",
"display": true,
"position": "right",
"scaleLabel": {
"display": true,
"labelString": "<?= $this->getHtml('Profit'); ?>"
},
"gridLines": {
"display": false
}
}
]
}
}
}'></canvas>
<div class="more-container">
<input id="more-customer-sales-annual" type="checkbox" name="more-container">
<label for="more-customer-sales-annual">
<span>Data</span>
<i class="fa fa-chevron-right expand"></i>
</label>
<div>
<table class="default">
<thead>
<tr>
<td>Year
<td>Sales
<td>Customer count
<tbody>
<?php
foreach ($salesCustomer as $values) :
?>
<tr>
<td><?= (string) $values['year']; ?>
<td><?= (new Money(((int) $values['net_sales']) / 1000))->getCurrency(); ?>
<td><?= ((int) $values['customers']); ?>
<?php endforeach; ?>
</table>
</div>
</div>
</div>
</section>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<section class="portlet">
<div class="portlet-head">
Sales / Attribute
<?php include __DIR__ . '/../../../../Web/Backend/Themes/popup-export-data.tpl.php'; ?>
</div>
<table class="default">
<thead>
<tr>
<td>Product
<td>Sales PY
<td>Sales B
<td>Sales A
<td>Diff PY
<td>Diff B
<tbody>
</table>
</section>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<section class="portlet">
<div class="portlet-head">
Sales / Region
<?php include __DIR__ . '/../../../../Web/Backend/Themes/popup-export-data.tpl.php'; ?>
</div>
<table class="default">
<thead>
<tr>
<td>Country
<td>Sales PY
<td>Sales B
<td>Sales A
<td>Diff PY
<td>Diff B
<tbody>
</table>
</section>
</div>
</div>

20
composer.json Executable file
View File

@ -0,0 +1,20 @@
{
"name": "karaka/karaka",
"description": "PHP Framework for Karaka.",
"authors": [
{
"name": "Dennis Eichhorn",
"email": "spl1nes.com@googlemail.com"
}
],
"require-dev": {
"phpunit/phpunit": ">=9.4",
"friendsofphp/php-cs-fixer": ">=3.8",
"squizlabs/php_codesniffer": ">=3.6",
"phpmd/phpmd": ">=2.9",
"phpstan/phpstan": ">=1.8.6",
"phan/phan": ">=3.2.6"
},
"minimum-stability": "dev",
"prefer-stable": true
}

4802
composer.lock generated Executable file

File diff suppressed because it is too large Load Diff

BIN
img/module_teaser_small.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

45
info.json Executable file
View File

@ -0,0 +1,45 @@
{
"name": {
"id": 1008100000,
"internal": "Finance",
"external": "Finance"
},
"category": "Finance",
"version": "1.0.0",
"requirements": {
"phpOMS": "1.0.0",
"phpOMS-db": "1.0.0"
},
"creator": {
"name": "Karaka",
"website": "jingga.app"
},
"description": "Finance module.",
"directory": "Finance",
"dependencies": {
"Admin": "1.0.0"
},
"providing": {
"Navigation": "*"
},
"load": [
{
"pid": [
"/finance"
],
"type": 4,
"for": 0,
"from": "Finance",
"file": "Finance"
},
{
"pid": [
"/"
],
"type": 5,
"from": "Finance",
"for": "Navigation",
"file": "Navigation"
}
]
}

27
tests/Admin/AdminTest.php Executable file
View File

@ -0,0 +1,27 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Finance\tests\Admin;
/**
* @internal
*/
final class AdminTest extends \PHPUnit\Framework\TestCase
{
protected const NAME = 'Finance';
protected const URI_LOAD = '';
use \Modules\tests\ModuleTestTrait;
}

94
tests/Autoloader.php Executable file
View File

@ -0,0 +1,94 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules/tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace tests;
\spl_autoload_register('\tests\Autoloader::defaultAutoloader');
/**
* Autoloader class.
*
* @package tests
* @license OMS License 1.0
* @link https://jingga.app
* @since 1.0.0
*/
final class Autoloader
{
/**
* Base paths for autoloading
*
* @var string[]
* @since 1.0.0
*/
private static $paths = [
__DIR__ . '/../',
__DIR__ . '/../Karaka/',
__DIR__ . '/../../',
];
/**
* Constructor.
*
* @since 1.0.0
* @codeCoverageIgnore
*/
private function __construct()
{
}
/**
* Add base path for autoloading
*
* @param string $path Absolute base path with / at the end
*
* @return void
*
* @since 1.0.0
*/
public static function addPath(string $path) : void
{
self::$paths[] = $path;
}
/**
* Loading classes by namespace + class name.
*
* @param string $class Class path
*
* @example Autoloader::defaultAutoloader('\phpOMS\Autoloader') // void
*
* @return void
*
* @throws AutoloadException Throws this exception if the class to autoload doesn't exist. This could also be related to a wrong namespace/file path correlation.
*
* @since 1.0.0
*/
public static function defaultAutoloader(string $class) : void
{
$class = \ltrim($class, '\\');
$class = \str_replace(['_', '\\'], '/', $class);
foreach (self::$paths as $path) {
$file = $path . $class . '.php';
$file = \str_replace('/Modules/', '/', $file);
if (\is_file($file)) {
include_once $file;
return;
}
}
}
}

415
tests/Bootstrap.php Executable file
View File

@ -0,0 +1,415 @@
<?php
declare(strict_types=1);
// Modules/tests
\ini_set('memory_limit', '2048M');
\ini_set('display_errors', '1');
\ini_set('display_startup_errors', '1');
\error_reporting(\E_ALL);
\setlocale(\LC_ALL, 'en_US.UTF-8');
require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/Autoloader.php';
use phpOMS\DataStorage\Database\DatabasePool;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\DataStorage\Session\HttpSession;
$CONFIG = [
'db' => [
'core' => [
'masters' => [
'admin' => [
'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */
'login' => 'root', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'insert' => [
'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */
'login' => 'root', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'select' => [
'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */
'login' => 'root', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'update' => [
'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */
'login' => 'root', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'delete' => [
'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */
'login' => 'root', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'schema' => [
'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */
'login' => 'root', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
],
'postgresql' => [
'admin' => [
'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */
'login' => 'postgres', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'insert' => [
'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */
'login' => 'postgres', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'select' => [
'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */
'login' => 'postgres', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'update' => [
'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */
'login' => 'postgres', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'delete' => [
'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */
'login' => 'postgres', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'schema' => [
'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */
'login' => 'postgres', /* db login name */
'password' => 'root', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
],
'sqlite' => [
'admin' => [
'db' => 'sqlite', /* db type */
'database' => __DIR__ . '/test.sqlite', /* db name */
'weight' => 1000, /* db table prefix */
],
'insert' => [
'db' => 'sqlite', /* db type */
'database' => __DIR__ . '/test.sqlite', /* db name */
'weight' => 1000, /* db table prefix */
],
'select' => [
'db' => 'sqlite', /* db type */
'database' => __DIR__ . '/test.sqlite', /* db name */
'weight' => 1000, /* db table prefix */
],
'update' => [
'db' => 'sqlite', /* db type */
'database' => __DIR__ . '/test.sqlite', /* db name */
'weight' => 1000, /* db table prefix */
],
'delete' => [
'db' => 'sqlite', /* db type */
'database' => __DIR__ . '/test.sqlite', /* db name */
'weight' => 1000, /* db table prefix */
],
'schema' => [
'db' => 'sqlite', /* db type */
'database' => __DIR__ . '/test.sqlite', /* db name */
'weight' => 1000, /* db table prefix */
],
],
'mssql' => [
'admin' => [
'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */
'login' => 'sa', /* db login name */
'password' => 'R00troot', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'insert' => [
'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */
'login' => 'sa', /* db login name */
'password' => 'R00troot', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'select' => [
'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */
'login' => 'sa', /* db login name */
'password' => 'R00troot', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'update' => [
'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */
'login' => 'sa', /* db login name */
'password' => 'R00troot', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'delete' => [
'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */
'login' => 'sa', /* db login name */
'password' => 'R00troot', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
'schema' => [
'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */
'login' => 'sa', /* db login name */
'password' => 'R00troot', /* db login password */
'database' => 'oms', /* db name */
'weight' => 1000, /* db table prefix */
],
],
],
],
'cache' => [
'redis' => [
'db' => 1,
'host' => '127.0.0.1',
'port' => 6379,
],
'memcached' => [
'host' => '127.0.0.1',
'port' => 11211,
],
],
'mail' => [
'imap' => [
'host' => '127.0.0.1',
'port' => 143,
'ssl' => false,
'user' => 'test',
'password' => '123456',
],
'pop3' => [
'host' => '127.0.0.1',
'port' => 25,
'ssl' => false,
'user' => 'test',
'password' => '123456',
],
],
'log' => [
'file' => [
'path' => __DIR__ . '/Logs',
],
],
'page' => [
'root' => '/',
'https' => false,
],
'app' => [
'path' => __DIR__,
'default' => [
'app' => 'Backend',
'id' => 'backend',
'lang' => 'en',
'theme' => 'Backend',
'org' => 1,
],
'domains' => [
'127.0.0.1' => [
'app' => 'Backend',
'id' => 'backend',
'lang' => 'en',
'theme' => 'Backend',
'org' => 1,
],
],
],
'socket' => [
'master' => [
'host' => '127.0.0.1',
'limit' => 300,
'port' => 4310,
],
],
'language' => [
'en',
],
'apis' => [
],
];
// Reset database
if (\defined('RESET') && RESET === '1') {
if (\extension_loaded('pdo_mysql')) {
try {
$db = new \PDO('mysql:host=' .
$CONFIG['db']['core']['masters']['admin']['host'],
$CONFIG['db']['core']['masters']['admin']['login'],
$CONFIG['db']['core']['masters']['admin']['password']
);
$db->exec('DROP DATABASE IF EXISTS ' . $CONFIG['db']['core']['masters']['admin']['database']);
$db->exec('CREATE DATABASE IF NOT EXISTS ' . $CONFIG['db']['core']['masters']['admin']['database']);
$db = null;
} catch (\Throwable $t) {
echo "\nCouldn't connect to MYSQL DB\n";
}
}
if (\extension_loaded('pdo_pgsql')) {
try {
$db = new \PDO('pgsql:host=' .
$CONFIG['db']['core']['postgresql']['admin']['host'],
$CONFIG['db']['core']['postgresql']['admin']['login'],
$CONFIG['db']['core']['postgresql']['admin']['password']
);
$db->exec('DROP DATABASE IF EXISTS ' . $CONFIG['db']['core']['postgresql']['admin']['database']);
$db->exec('CREATE DATABASE ' . $CONFIG['db']['core']['postgresql']['admin']['database']);
$db = null;
} catch (\Throwable $t) {
echo "\nCouldn't connect to POSTGRESQL DB\n";
}
}
if (\extension_loaded('pdo_sqlsrv')) {
try {
$db = new \PDO('sqlsrv:Server=' .
$CONFIG['db']['core']['mssql']['admin']['host'],
$CONFIG['db']['core']['mssql']['admin']['login'],
$CONFIG['db']['core']['mssql']['admin']['password']
);
$db->exec('DROP DATABASE IF EXISTS ' . $CONFIG['db']['core']['mssql']['admin']['database']);
$db->exec('CREATE DATABASE ' . $CONFIG['db']['core']['mssql']['admin']['database']);
$db = null;
} catch (\Throwable $t) {
echo "\nCouldn't connect to MSSQL DB\n";
}
}
}
$httpSession = new HttpSession();
$GLOBALS['session'] = $httpSession;
$GLOBALS['dbpool'] = new DatabasePool();
$GLOBALS['dbpool']->create('admin', $CONFIG['db']['core']['masters']['admin']);
$GLOBALS['dbpool']->create('select', $CONFIG['db']['core']['masters']['select']);
$GLOBALS['dbpool']->create('update', $CONFIG['db']['core']['masters']['update']);
$GLOBALS['dbpool']->create('delete', $CONFIG['db']['core']['masters']['delete']);
$GLOBALS['dbpool']->create('insert', $CONFIG['db']['core']['masters']['insert']);
$GLOBALS['dbpool']->create('schema', $CONFIG['db']['core']['masters']['schema']);
DataMapperFactory::db($GLOBALS['dbpool']->get());
$GLOBALS['frameworkpath'] = '/phpOMS/';
function phpServe() : void
{
// OS detection
$isWindows = \stristr(\php_uname('s'), 'Windows') !== false;
// Command that starts the built-in web server
if ($isWindows) {
$command = \sprintf(
'wmic process call create "php -S %s:%d -t %s" | find "ProcessId"',
WEB_SERVER_HOST,
WEB_SERVER_PORT,
__DIR__ . '/../' . WEB_SERVER_DOCROOT
);
$killCommand = 'taskkill /f /pid ';
} else {
$command = \sprintf(
'php -S %s:%d -t %s >/dev/null 2>&1 & echo $!',
WEB_SERVER_HOST,
WEB_SERVER_PORT,
WEB_SERVER_DOCROOT
);
$killCommand = 'kill ';
}
// Execute the command and store the process ID
$output = [];
echo \sprintf('Starting server...') . \PHP_EOL;
echo \sprintf(' Current directory: %s', \getcwd()) . \PHP_EOL;
echo \sprintf(' %s', $command);
\exec($command, $output);
// Get PID
if ($isWindows) {
$pid = \explode('=', $output[0]);
$pid = \str_replace(' ', '', $pid[1]);
$pid = \str_replace(';', '', $pid);
} else {
$pid = (int) $output[0];
}
// Log
echo \sprintf(
' %s - Web server started on %s:%d with PID %d',
\date('r'),
WEB_SERVER_HOST,
WEB_SERVER_PORT,
$pid
) . \PHP_EOL;
// Kill the web server when the process ends
\register_shutdown_function(function() use ($killCommand, $pid) : void {
echo \PHP_EOL . \sprintf('Stopping server...') . \PHP_EOL;
echo \sprintf(' %s - Killing process with ID %d', \date('r'), $pid) . \PHP_EOL;
\exec($killCommand . $pid);
});
}
\phpServe();

57
tests/phpunit_default.xml Executable file
View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="Bootstrap.php" colors="true" columns="120" stopOnError="true" stopOnFailure="false" stopOnIncomplete="false" stopOnSkipped="false" beStrictAboutTestsThatDoNotTestAnything="false" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
<coverage includeUncoveredFiles="true" processUncoveredFiles="false">
<exclude>
<directory>*vendor*</directory>
<directory>vendor</directory>
<directory>../vendor</directory>
<directory>../phpOMS</directory>
<directory>../phpOMS*</directory>
<directory>../phpOMS/*</directory>
<directory>../tests*</directory>
<directory>../*/tests*</directory>
<directory>../**/tests*</directory>
<directory>*/tests*</directory>
<directory suffix="tpl.php">../*</directory>
<directory suffix="lang.php">../*</directory>
<directory suffix="Test.php">../*</directory>
<directory suffix="Routes.php">../*</directory>
<directory suffix="Hooks.php">../*</directory>
<directory>../**/test*</directory>
<directory>../**/Theme*</directory>
<directory>../**/Admin/Routes*</directory>
<directory>../**/Admin/Hooks*</directory>
<directory>../**/Admin/Install*</directory>
<directory>../Media/Files*</directory>
</exclude>
<report>
<clover outputFile="coverage.xml"/>
<html outputDirectory="../tests" lowUpperBound="75" highLowerBound="95"/>
</report>
</coverage>
<testsuites>
<testsuite name="Install">
<directory>../Karaka/Install/tests*</directory>
</testsuite>
<testsuite name="Module">
<directory>../tests*</directory>
</testsuite>
</testsuites>
<groups>
<exclude>
<group>volume</group>
<group>maybe</group>
</exclude>
</groups>
<logging>
<junit outputFile="../tests/junit_php.xml"/>
<testdoxHtml outputFile="../tests/index.html"/>
<testdoxText outputFile="../tests/testdox.txt"/>
</logging>
<php>
<const name="WEB_SERVER_HOST" value="localhost"/>
<const name="WEB_SERVER_PORT" value="1234"/>
<const name="WEB_SERVER_DOCROOT" value="./"/>
<const name="RESET" value="1"/>
</php>
</phpunit>