org -> unit change, some new functionality

This commit is contained in:
Dennis Eichhorn 2023-01-26 21:54:13 +01:00
parent b2f0df175a
commit 48394ac603
82 changed files with 11230 additions and 0 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,9 @@
[
{
"type": "collection",
"create_directory": true,
"name": "FleetManagement",
"virtualPath": "/Modules",
"user": 1
}
]

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

@ -0,0 +1,43 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Admin\Install
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Admin\Install;
use phpOMS\Application\ApplicationAbstract;
/**
* Media class.
*
* @package Modules\FleetManagement\Admin\Install
* @license OMS License 1.0
* @link https://jingga.app
* @since 1.0.0
*/
class Media
{
/**
* Install media 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\Media\Admin\Installer::installExternal($app, ['path' => __DIR__ . '/Media.install.json']);
}
}

View File

@ -0,0 +1,110 @@
[
{
"id": 1003501001,
"pid": "/",
"type": 2,
"subtype": 0,
"name": "FleetManagement",
"uri": null,
"target": "self",
"icon": "fa fa-car",
"order": 80,
"from": "FleetManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 0,
"children": [
{
"id": 1003502001,
"pid": "/",
"type": 2,
"subtype": 1,
"name": "Vehicles",
"uri": "{/lang}/{/app}/fleet/client/list",
"target": "self",
"icon": null,
"order": 1,
"from": "FleetManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003501001,
"children": [
{
"id": 1003502101,
"pid": "/fleet/vehicle",
"type": 3,
"subtype": 1,
"name": "List",
"uri": "{/lang}/{/app}/fleet/vehicle/list",
"target": "self",
"icon": null,
"order": 1,
"from": "FleetManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003502001,
"children": []
},
{
"id": 1003502201,
"pid": "/fleet/vehicle",
"type": 3,
"subtype": 1,
"name": "Create",
"uri": "{/lang}/{/app}/fleet/vehicle/create?{?}",
"target": "self",
"icon": null,
"order": 1,
"from": "FleetManagement",
"permission": { "permission": 4, "category": null, "element": null },
"parent": 1003502001,
"children": []
}
]
},
{
"id": 1003503001,
"pid": "/",
"type": 2,
"subtype": 1,
"name": "Attributes",
"uri": "{/lang}/{/app}/fleet/vehicle/attribute/type/list?{?}",
"target": "self",
"icon": null,
"order": 5,
"from": "FleetManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003501001,
"children": [
{
"id": 1003503101,
"pid": "/sales",
"type": 3,
"subtype": 1,
"name": "Types",
"uri": "{/lang}/{/app}/fleet/vehicle/attribute/type/list?{?}",
"target": "self",
"icon": null,
"order": 15,
"from": "FleetManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003503001,
"children": []
},
{
"id": 1003503201,
"pid": "/sales",
"type": 3,
"subtype": 1,
"name": "Values",
"uri": "{/lang}/{/app}/fleet/vehicle/attribute/value/list?{?}",
"target": "self",
"icon": null,
"order": 15,
"from": "FleetManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003503001,
"children": []
}
]
}
]
}
]

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

@ -0,0 +1,43 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Admin\Install
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Admin\Install;
use phpOMS\Application\ApplicationAbstract;
/**
* Navigation class.
*
* @package Modules\FleetManagement\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']);
}
}

405
Admin/Install/db.json Executable file
View File

@ -0,0 +1,405 @@
{
"fleetmgmt_vehicle": {
"name": "fleetmgmt_vehicle",
"fields": {
"fleetmgmt_vehicle_id": {
"name": "fleetmgmt_vehicle_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"fleetmgmt_vehicle_status": {
"name": "fleetmgmt_vehicle_status",
"type": "TINYINT",
"null": false
},
"fleetmgmt_vehicle_type": {
"name": "fleetmgmt_vehicle_type",
"type": "TINYINT",
"null": false
},
"fleetmgmt_vehicle_info": {
"name": "fleetmgmt_vehicle_info",
"type": "TEXT",
"null": false
},
"fleetmgmt_vehicle_created_at": {
"name": "fleetmgmt_vehicle_created_at",
"type": "DATETIME",
"null": false
},
"fleetmgmt_vehicle_responsible": {
"name": "fleetmgmt_vehicle_responsible",
"type": "INT",
"null": false,
"foreignTable": "account",
"foreignKey": "account_id"
},
"fleetmgmt_vehicle_unit": {
"name": "fleetmgmt_vehicle_unit",
"type": "INT",
"default": null,
"null": true,
"foreignTable": "unit",
"foreignKey": "unit_id"
}
}
},
"fleetmgmt_vehicle_responsible": {
"name": "fleetmgmt_vehicle_responsible",
"fields": {
"fleetmgmt_vehicle_responsible_id": {
"name": "fleetmgmt_vehicle_responsible_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"fleetmgmt_vehicle_responsible_description": {
"name": "fleetmgmt_vehicle_responsible_description",
"type": "TEXT",
"null": false
},
"fleetmgmt_vehicle_responsible_account": {
"name": "fleetmgmt_vehicle_responsible_account",
"type": "INT",
"null": false,
"foreignTable": "account",
"foreignKey": "account_id"
},
"fleetmgmt_vehicle_responsible_start": {
"name": "fleetmgmt_vehicle_responsible_start",
"type": "DATETIME",
"null": false
},
"fleetmgmt_vehicle_responsible_end": {
"name": "fleetmgmt_vehicle_responsible_end",
"type": "DATETIME",
"null": true,
"default": null
}
}
},
"fleetmgmt_vehicle_usage": {
"name": "fleetmgmt_vehicle_usage",
"fields": {
"fleetmgmt_vehicle_usage_id": {
"name": "fleetmgmt_vehicle_usage_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"fleetmgmt_vehicle_usage_type": {
"name": "fleetmgmt_vehicle_usage_type",
"type": "INT",
"null": false
},
"fleetmgmt_vehicle_usage_account": {
"name": "fleetmgmt_vehicle_usage_account",
"type": "INT",
"null": false,
"foreignTable": "account",
"foreignKey": "account_id"
},
"fleetmgmt_vehicle_usage_start": {
"name": "fleetmgmt_vehicle_usage_start",
"type": "DATETIME",
"null": false
},
"fleetmgmt_vehicle_usage_end": {
"name": "fleetmgmt_vehicle_usage_end",
"type": "DATETIME",
"null": true,
"default": null
},
"fleetmgmt_vehicle_usage_distance": {
"name": "fleetmgmt_vehicle_usage_distance",
"type": "INT",
"null": false
}
}
},
"fleetmgmt_attr_type": {
"name": "fleetmgmt_attr_type",
"fields": {
"fleetmgmt_attr_type_id": {
"name": "fleetmgmt_attr_type_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"fleetmgmt_attr_type_name": {
"name": "fleetmgmt_attr_type_name",
"type": "VARCHAR(255)",
"null": false,
"unique": true
},
"fleetmgmt_attr_type_datatype": {
"name": "fleetmgmt_attr_type_datatype",
"type": "INT(11)",
"null": false
},
"fleetmgmt_attr_type_fields": {
"name": "fleetmgmt_attr_type_fields",
"type": "INT(11)",
"null": false
},
"fleetmgmt_attr_type_custom": {
"name": "fleetmgmt_attr_type_custom",
"type": "TINYINT(1)",
"null": false
},
"fleetmgmt_attr_type_required": {
"description": "Every item must have this attribute type if set to true.",
"name": "fleetmgmt_attr_type_required",
"type": "TINYINT(1)",
"null": false
},
"fleetmgmt_attr_type_pattern": {
"description": "This is a regex validation pattern.",
"name": "fleetmgmt_attr_type_pattern",
"type": "VARCHAR(255)",
"null": false
}
}
},
"fleetmgmt_attr_type_l11n": {
"name": "fleetmgmt_attr_type_l11n",
"fields": {
"fleetmgmt_attr_type_l11n_id": {
"name": "fleetmgmt_attr_type_l11n_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"fleetmgmt_attr_type_l11n_title": {
"name": "fleetmgmt_attr_type_l11n_title",
"type": "VARCHAR(255)",
"null": false
},
"fleetmgmt_attr_type_l11n_type": {
"name": "fleetmgmt_attr_type_l11n_type",
"type": "INT(11)",
"null": false,
"foreignTable": "fleetmgmt_attr_type",
"foreignKey": "fleetmgmt_attr_type_id"
},
"fleetmgmt_attr_type_l11n_lang": {
"name": "fleetmgmt_attr_type_l11n_lang",
"type": "VARCHAR(2)",
"null": false,
"foreignTable": "language",
"foreignKey": "language_639_1"
}
}
},
"fleetmgmt_attr_value": {
"name": "fleetmgmt_attr_value",
"fields": {
"fleetmgmt_attr_value_id": {
"name": "fleetmgmt_attr_value_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"fleetmgmt_attr_value_default": {
"name": "fleetmgmt_attr_value_default",
"type": "TINYINT(1)",
"null": false
},
"fleetmgmt_attr_value_valueStr": {
"name": "fleetmgmt_attr_value_valueStr",
"type": "VARCHAR(255)",
"null": true,
"default": null
},
"fleetmgmt_attr_value_valueInt": {
"name": "fleetmgmt_attr_value_valueInt",
"type": "INT(11)",
"null": true,
"default": null
},
"fleetmgmt_attr_value_valueDec": {
"name": "fleetmgmt_attr_value_valueDec",
"type": "DECIMAL(19,5)",
"null": true,
"default": null
},
"fleetmgmt_attr_value_valueDat": {
"name": "fleetmgmt_attr_value_valueDat",
"type": "DATETIME",
"null": true,
"default": null
},
"fleetmgmt_attr_value_unit": {
"name": "fleetmgmt_attr_value_unit",
"type": "VARCHAR(255)",
"null": false
},
"fleetmgmt_attr_value_deptype": {
"name": "fleetmgmt_attr_value_deptype",
"type": "INT(11)",
"null": true,
"default": null,
"foreignTable": "fleetmgmt_attr_type",
"foreignKey": "fleetmgmt_attr_type_id"
},
"fleetmgmt_attr_value_depvalue": {
"name": "fleetmgmt_attr_value_depvalue",
"type": "INT(11)",
"null": true,
"default": null,
"foreignTable": "fleetmgmt_attr_value",
"foreignKey": "fleetmgmt_attr_value_id"
}
}
},
"fleetmgmt_attr_value_l11n": {
"name": "fleetmgmt_attr_value_l11n",
"fields": {
"fleetmgmt_attr_value_l11n_id": {
"name": "fleetmgmt_attr_value_l11n_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"fleetmgmt_attr_value_l11n_title": {
"name": "fleetmgmt_attr_value_l11n_title",
"type": "VARCHAR(255)",
"null": false
},
"fleetmgmt_attr_value_l11n_value": {
"name": "fleetmgmt_attr_value_l11n_value",
"type": "INT(11)",
"null": false,
"foreignTable": "fleetmgmt_attr_value",
"foreignKey": "fleetmgmt_attr_value_id"
},
"fleetmgmt_attr_value_l11n_lang": {
"name": "fleetmgmt_attr_value_l11n_lang",
"type": "VARCHAR(2)",
"null": false,
"foreignTable": "language",
"foreignKey": "language_639_1"
}
}
},
"fleetmgmt_vehicle_attr_default": {
"name": "fleetmgmt_vehicle_attr_default",
"fields": {
"fleetmgmt_vehicle_attr_default_id": {
"name": "fleetmgmt_vehicle_attr_default_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"fleetmgmt_vehicle_attr_default_type": {
"name": "fleetmgmt_vehicle_attr_default_type",
"type": "INT(11)",
"null": false,
"foreignTable": "fleetmgmt_attr_type",
"foreignKey": "fleetmgmt_attr_type_id"
},
"fleetmgmt_vehicle_attr_default_value": {
"name": "fleetmgmt_vehicle_attr_default_value",
"type": "INT(11)",
"null": false,
"foreignTable": "fleetmgmt_attr_value",
"foreignKey": "fleetmgmt_attr_value_id"
}
}
},
"fleetmgmt_vehicle_attr": {
"name": "fleetmgmt_vehicle_attr",
"fields": {
"fleetmgmt_vehicle_attr_id": {
"name": "fleetmgmt_vehicle_attr_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"fleetmgmt_vehicle_attr_vehicle": {
"name": "fleetmgmt_vehicle_attr_vehicle",
"type": "INT(11)",
"null": false,
"foreignTable": "fleetmgmt_vehicle",
"foreignKey": "fleetmgmt_vehicle_id"
},
"fleetmgmt_vehicle_attr_type": {
"name": "fleetmgmt_vehicle_attr_type",
"type": "INT(11)",
"null": false,
"foreignTable": "fleetmgmt_attr_type",
"foreignKey": "fleetmgmt_attr_type_id"
},
"fleetmgmt_vehicle_attr_value": {
"name": "fleetmgmt_vehicle_attr_value",
"type": "INT(11)",
"null": true,
"default": null,
"foreignTable": "fleetmgmt_attr_value",
"foreignKey": "fleetmgmt_attr_value_id"
}
}
},
"fleetmgmt_vehicle_media": {
"name": "fleetmgmt_vehicle_media",
"fields": {
"fleetmgmt_vehicle_media_id": {
"name": "fleetmgmt_vehicle_media_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"fleetmgmt_vehicle_media_dst": {
"name": "fleetmgmt_vehicle_media_dst",
"type": "INT",
"null": false,
"foreignTable": "media",
"foreignKey": "media_id"
},
"fleetmgmt_vehicle_media_src": {
"name": "fleetmgmt_vehicle_media_src",
"type": "INT",
"null": false,
"foreignTable": "fleetmgmt_vehicle",
"foreignKey": "fleetmgmt_vehicle_id"
}
}
},
"fleetmgmt_vehicle_note": {
"name": "fleetmgmt_vehicle_note",
"fields": {
"fleetmgmt_vehicle_note_id": {
"name": "fleetmgmt_vehicle_note_id",
"type": "INT",
"null": false,
"primary": true,
"autoincrement": true
},
"fleetmgmt_vehicle_note_dst": {
"name": "fleetmgmt_vehicle_note_dst",
"type": "INT",
"null": false,
"foreignTable": "editor_doc",
"foreignKey": "editor_doc_id"
},
"fleetmgmt_vehicle_note_src": {
"name": "fleetmgmt_vehicle_note_src",
"type": "INT",
"null": false,
"foreignTable": "fleetmgmt_vehicle",
"foreignKey": "fleetmgmt_vehicle_id"
}
}
}
}

50
Admin/Installer.php Executable file
View File

@ -0,0 +1,50 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Admin;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Config\SettingsInterface;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse;
use phpOMS\Module\InstallerAbstract;
use phpOMS\Module\ModuleInfo;
use phpOMS\Uri\HttpUri;
/**
* Installer class.
*
* @package Modules\FleetManagement\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__;
/**
* {@inheritdoc}
*/
public static function install(ApplicationAbstract $app, ModuleInfo $info, SettingsInterface $cfgHandler) : void
{
parent::install($app, $info, $cfgHandler);
}
}

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

@ -0,0 +1,76 @@
<?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\FleetManagement\Controller\BackendController;
use Modules\FleetManagement\Models\PermissionCategory;
use phpOMS\Account\PermissionType;
use phpOMS\Router\RouteVerb;
return [
'^.*/fleet/vehicle/attribute/type/list.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementAttributeTypeList',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
],
],
],
'^.*/fleet/vehicle/attribute/type\?.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementAttributeType',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
],
],
],
'^.*/fleet/vehicle/list.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementVehicleList',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
],
],
],
'^.*/fleet/vehicle/create.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementVehicleCreate',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::CREATE,
'state' => PermissionCategory::VEHICLE,
],
],
],
'^.*/fleet/vehicle/profile.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementVehicleProfile',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
],
],
],
];

36
Admin/Status.php Executable file
View File

@ -0,0 +1,36 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Admin;
use phpOMS\Module\StatusAbstract;
/**
* Status class.
*
* @package Modules\FleetManagement\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\FleetManagement\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Admin;
use phpOMS\Module\UninstallerAbstract;
/**
* Uninstaller class.
*
* @package Modules\FleetManagement\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\FleetManagement\Admin
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Admin;
use phpOMS\Module\UpdaterAbstract;
/**
* Updater class.
*
* @package Modules\FleetManagement\Admin
* @license OMS License 1.0
* @link https://jingga.app
* @since 1.0.0
*/
final class Updater extends UpdaterAbstract
{
}

0
Controller.js Executable file
View File

28
Controller/ApiController.php Executable file
View File

@ -0,0 +1,28 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\FleetManagement
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Controller;
/**
* FleetManagement class.
*
* @package Modules\FleetManagement
* @license OMS License 1.0
* @link https://jingga.app
* @since 1.0.0
*/
final class ApiController extends Controller
{
}

View File

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

76
Controller/Controller.php Executable file
View File

@ -0,0 +1,76 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\FleetManagement
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Controller;
use phpOMS\Module\ModuleAbstract;
/**
* FleetManagement class.
*
* @package Modules\FleetManagement
* @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 = 'FleetManagement';
/**
* Module id.
*
* @var int
* @since 1.0.0
*/
public const ID = 1003500000;
/**
* 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/ClientManagement/Docs/Dev/img/er.png)

BIN
Docs/Dev/img/er.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 KiB

30
Models/PermissionCategory.php Executable file
View File

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

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'عميل',
'Region' => 'منطقة',
'SalesRep' => 'مندول المبيعات',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Klienta',
'Region' => 'Kraj',
'SalesRep' => 'Obchodní zástupce',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Klient',
'Region' => 'Område',
'SalesRep' => 'Salgsrepræsentant',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Klient',
'Region' => 'Region',
'SalesRep' => 'VerkäufeRep',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Πελάτης',
'Region' => 'Περιοχή',
'SalesRep' => 'Αντιπρόσωπος Πωλήσεων',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Client',
'Region' => 'Region',
'SalesRep' => 'SalesRep',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Cliente',
'Region' => 'Región',
'SalesRep' => 'Vendedores',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Asiakas',
'Region' => 'Alue',
'SalesRep' => 'Myyntiedustaja',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Client',
'Region' => 'Région',
'SalesRep' => 'Représentant commercial',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Ügyfél',
'Region' => 'Vidék',
'SalesRep' => 'Értékesítés',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Cliente',
'Region' => 'Regione',
'SalesRep' => 'Rappresentante delle vendite',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'クライアント',
'Region' => '領域',
'SalesRep' => 'セールスレート',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => '고객',
'Region' => '지역',
'SalesRep' => '매출액',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Klient',
'Region' => 'Region',
'SalesRep' => 'SalesRep.',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Klient',
'Region' => 'Region',
'SalesRep' => 'Przedstawiciel handlowy',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Cliente',
'Region' => 'Região',
'SalesRep' => 'Representante de vendas',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Клиент',
'Region' => 'Область',
'SalesRep' => 'Торговый представитель',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Klient',
'Region' => 'Område',
'SalesRep' => 'Säljare',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'ลูกค้า',
'Region' => 'ภูมิภาค',
'SalesRep' => 'ตัวแทนฝ่ายขาย',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Müşteri',
'Region' => 'Bölge',
'SalesRep' => 'Satıcı',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => 'Клієнт',
'Region' => 'Регіон',
'SalesRep' => 'Торговий представник',
]];

View File

@ -0,0 +1,19 @@
<?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' => [
'Client' => '客户',
'Region' => '地区',
'SalesRep' => '销售代表',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'محاسبة',
'Addition' => 'إضافة',
'Address' => 'تبوك',
'Addresses' => 'عناوين',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'مدير المنطقة',
'Articlegroup' => 'articlegroup.',
'Articles' => 'مقالات',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'الرصيد',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'علاوة',
'Business' => 'اعمال',
'CIS' => '#VALUE!',
'CLV' => 'قذيفة',
'Calendar' => 'تقويم',
'City' => 'مدينة',
'Client' => 'عميل',
'ClientID' => '#VALUE!',
'Clients' => 'عملاء',
'ComparisonTime' => '#VALUE!',
'Contact' => 'اتصل',
'Country' => 'دولة',
'Created' => 'خلقت',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'التصنيف الائتماني',
'Creditcard' => 'بطاقة إئتمان',
'Customers' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => 'تاريخ',
'Default' => 'تقصير',
'Delivery' => 'توصيل',
'Discount' => 'خصم',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'خصم ٪',
'Documents' => 'وثائق',
'Due' => 'بسبب',
'Email' => 'بريد الالكتروني',
'Europe' => '#VALUE!',
'Fax' => 'فاكس',
'Files' => 'الملفات',
'Filter' => 'منقي',
'Freightage' => 'شحن',
'Group' => 'مجموعة',
'ID' => 'بطاقة تعريف',
'Info' => 'معلومات',
'Invoice' => 'فاتورة',
'Invoices' => 'الفواتير',
'IsDefault' => 'افتراضي؟',
'Items' => '#VALUE!',
'LastContact' => 'آخر اتصال',
'LastOrder' => 'آخر طلب',
'Log' => 'سجل',
'Logs' => 'السجلات',
'LostCustomers' => '#VALUE!',
'MRR' => 'مرر',
'MTDSales' => 'مبيعات MTD',
'Margin' => 'هامش',
'Messages' => 'رسائل',
'Modified' => 'تم التعديل',
'Modules' => 'وحدات',
'Name' => 'اسم',
'Name1' => 'اسم 1.',
'Name2' => 'اسم 2.',
'Name3' => 'اسم 3.',
'Net' => 'شبكة',
'NewCustomers' => '#VALUE!',
'Notes' => 'ملحوظات',
'Number' => 'عدد',
'Office' => 'مكتب. مقر. مركز',
'Other' => '#VALUE!',
'Payment' => 'دفع',
'PaymentTerm' => 'مصطلح الدفع',
'Permission' => 'إذن',
'Phone' => 'هاتف',
'Postal' => 'بريدي',
'Price' => 'السعر',
'Prices' => 'الأسعار.',
'Private' => 'نشر',
'Productgroup' => 'productgroup.',
'Profile' => 'الملف الشخصي',
'Profit' => '#VALUE!',
'Purchase' => 'شراء',
'Quantity' => 'كمية',
'RecentInvoices' => 'الفواتير الأخيرة',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'مبيعات',
'Segment' => 'قطعة',
'Segments' => 'شرائح',
'Subtype' => 'النوع الفرعي',
'Support' => 'يدعم',
'Tags' => 'كذا',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'نوع',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'موقع إلكتروني',
'Wire' => 'الأسلاك',
'YTDSales' => 'مبيعات YTD',
'Zip' => 'أزيز',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Účetnictví',
'Addition' => 'Přidání',
'Address' => 'Adresa',
'Addresses' => 'Adresy',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Oblastní manažer',
'Articlegroup' => 'Článek',
'Articles' => 'Články',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Zůstatek',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Bonus',
'Business' => 'Business.',
'CIS' => '#VALUE!',
'CLV' => 'Clv.',
'Calendar' => 'Kalendář',
'City' => 'Město',
'Client' => 'Klienta',
'ClientID' => '#VALUE!',
'Clients' => 'Klienti',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Kontakt',
'Country' => 'Země',
'Created' => 'Vytvořený',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Úvěrový rating',
'Creditcard' => 'Kreditní karta',
'Customers' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => 'datum',
'Default' => 'Výchozí hodnota',
'Delivery' => 'dodávka',
'Discount' => 'Sleva',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Sleva%',
'Documents' => 'Dokumenty',
'Due' => 'Způsoben',
'Email' => 'E-mailem',
'Europe' => '#VALUE!',
'Fax' => 'Fax',
'Files' => 'Soubory',
'Filter' => 'Filtr',
'Freightage' => 'Dopravné',
'Group' => 'Skupina',
'ID' => 'ID.',
'Info' => 'Info.',
'Invoice' => 'Faktura',
'Invoices' => 'Faktury',
'IsDefault' => 'Je výchozí?',
'Items' => '#VALUE!',
'LastContact' => 'Poslední kontakt',
'LastOrder' => 'Poslední objednávka',
'Log' => 'Log',
'Logs' => 'Protokoly',
'LostCustomers' => '#VALUE!',
'MRR' => 'Mrr.',
'MTDSales' => 'Prodej MTD.',
'Margin' => 'Okraj',
'Messages' => 'Zprávy',
'Modified' => 'Upravený',
'Modules' => 'Moduly',
'Name' => 'název',
'Name1' => 'Jméno1.',
'Name2' => 'Jméno2.',
'Name3' => 'Jméno3.',
'Net' => 'Síť',
'NewCustomers' => '#VALUE!',
'Notes' => 'Poznámky',
'Number' => 'Číslo',
'Office' => 'Kancelář',
'Other' => '#VALUE!',
'Payment' => 'Způsob platby',
'PaymentTerm' => 'Platební termín',
'Permission' => 'Povolení',
'Phone' => 'Telefon',
'Postal' => 'Poštovní',
'Price' => 'Cena',
'Prices' => 'Ceny',
'Private' => 'Soukromý',
'Productgroup' => 'ProductSgroup.',
'Profile' => 'Profil',
'Profit' => '#VALUE!',
'Purchase' => 'Nákup',
'Quantity' => 'Množství',
'RecentInvoices' => 'Nedávné faktury',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Odbyt',
'Segment' => 'Segment',
'Segments' => 'Segmenty',
'Subtype' => 'Podtyp',
'Support' => 'Podpěra, podpora',
'Tags' => 'Tagy',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Typ',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'webová stránka',
'Wire' => 'Drát',
'YTDSales' => 'Prodej YTD.',
'Zip' => 'Zip',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Regnskab',
'Addition' => 'Tilsætning',
'Address' => 'Adresse',
'Addresses' => 'Adresser',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Områdechef',
'Articlegroup' => 'ArticleGroup.',
'Articles' => 'Artikler',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Balance',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Bonus',
'Business' => 'Forretning',
'CIS' => '#VALUE!',
'CLV' => 'CLV.',
'Calendar' => 'Kalender',
'City' => 'City.',
'Client' => 'Klient',
'ClientID' => '#VALUE!',
'Clients' => 'Klienter.',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Kontakt',
'Country' => 'Land',
'Created' => 'Oprettet',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Kreditvurdering',
'Creditcard' => 'Kreditkort',
'Customers' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => 'Dato',
'Default' => 'Standard',
'Delivery' => 'Levering',
'Discount' => 'Rabat',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Rabat%',
'Documents' => 'Dokumenter',
'Due' => 'På grund',
'Email' => 'Email.',
'Europe' => '#VALUE!',
'Fax' => 'Fax',
'Files' => 'Filer.',
'Filter' => 'Filter',
'Freightage' => 'Gods',
'Group' => 'Gruppe',
'ID' => 'ID.',
'Info' => 'Info.',
'Invoice' => 'Faktura',
'Invoices' => 'Fakturaer.',
'IsDefault' => 'Er standard?',
'Items' => '#VALUE!',
'LastContact' => 'Sidste kontakt',
'LastOrder' => 'Sidste ordre',
'Log' => 'Log',
'Logs' => 'Logs.',
'LostCustomers' => '#VALUE!',
'MRR' => 'MRR.',
'MTDSales' => 'MTD Sales.',
'Margin' => 'Margin.',
'Messages' => 'Beskeder',
'Modified' => 'Modificeret',
'Modules' => 'Moduler.',
'Name' => 'Navn',
'Name1' => 'NAME1.',
'Name2' => 'NAME2.',
'Name3' => 'NAME3.',
'Net' => 'Net',
'NewCustomers' => '#VALUE!',
'Notes' => 'Noter.',
'Number' => 'Nummer',
'Office' => 'Kontor',
'Other' => '#VALUE!',
'Payment' => 'Betaling',
'PaymentTerm' => 'Betalingsbetingelser',
'Permission' => 'Tilladelse',
'Phone' => 'telefon',
'Postal' => 'Postal.',
'Price' => 'Pris',
'Prices' => 'Priser.',
'Private' => 'Privat',
'Productgroup' => 'Produktgruppe',
'Profile' => 'Profil',
'Profit' => '#VALUE!',
'Purchase' => 'Køb',
'Quantity' => 'Antal',
'RecentInvoices' => 'Nylige fakturaer.',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'SALG',
'Segment' => 'Segment',
'Segments' => 'Segmenter.',
'Subtype' => 'Subtype.',
'Support' => 'Support',
'Tags' => 'Tags.',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Type',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Internet side',
'Wire' => 'Tråd',
'YTDSales' => 'YTD SALG',
'Zip' => 'Zip.',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Buchhaltung',
'Addition' => 'Zusatz',
'Address' => 'Adresse',
'Addresses' => 'Adressen',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Bereichsleiter',
'Articlegroup' => 'ArtikelGroup.',
'Articles' => 'Artikel',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Gleichgewicht',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Bonus',
'Business' => 'Geschäft',
'CIS' => '#VALUE!',
'CLV' => 'CLV',
'Calendar' => 'Kalender',
'City' => 'Stadt',
'Client' => 'Klient',
'ClientID' => '#VALUE!',
'Clients' => 'Kunden',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Kontakt',
'Country' => 'Land',
'Created' => 'Erstellt',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Kreditbeurteilung',
'Creditcard' => 'Kreditkarte',
'Customers' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => 'Datum',
'Default' => 'Standard',
'Delivery' => 'Die Zustellung',
'Discount' => 'Rabatt',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Rabatt %',
'Documents' => 'Unterlagen',
'Due' => 'Fällig',
'Email' => 'Email',
'Europe' => '#VALUE!',
'Fax' => 'Fax',
'Files' => 'Dateien',
'Filter' => 'Filter',
'Freightage' => 'Fracht',
'Group' => 'Gruppe',
'ID' => 'ICH WÜRDE',
'Info' => 'Die Info',
'Invoice' => 'Rechnung',
'Invoices' => 'Rechnungen',
'IsDefault' => 'Ist standardmäßig?',
'Items' => '#VALUE!',
'LastContact' => 'Letzter Kontakt',
'LastOrder' => 'Letzte Bestellung',
'Log' => 'Protokoll',
'Logs' => 'Protokoll',
'LostCustomers' => '#VALUE!',
'MRR' => 'Mrr.',
'MTDSales' => 'MTD-Verkäufe.',
'Margin' => 'Rand',
'Messages' => 'Mitteilungen',
'Modified' => 'Geändert',
'Modules' => 'Module',
'Name' => 'Name',
'Name1' => 'Name1.',
'Name2' => 'Name2.',
'Name3' => 'Name3.',
'Net' => 'Netz',
'NewCustomers' => '#VALUE!',
'Notes' => 'Anmerkungen',
'Number' => 'Nummer',
'Office' => 'Sekretariat',
'Other' => '#VALUE!',
'Payment' => 'Zahlung',
'PaymentTerm' => 'Zahlungsbezeichnung',
'Permission' => 'Erlaubnis',
'Phone' => 'Telefon',
'Postal' => 'Post',
'Price' => 'Preis',
'Prices' => 'Preise',
'Private' => 'Privatgelände',
'Productgroup' => 'Produktgruppe',
'Profile' => 'Profil',
'Profit' => '#VALUE!',
'Purchase' => 'Kaufen',
'Quantity' => 'Menge',
'RecentInvoices' => 'Jüngste Rechnungen',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Der Umsatz',
'Segment' => 'Segment',
'Segments' => 'Segmente',
'Subtype' => 'Untertyp',
'Support' => 'Unterstützung',
'Tags' => 'Stichworte',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Typ',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Webseite',
'Wire' => 'Kabel',
'YTDSales' => 'Ytd Sales.',
'Zip' => 'Reißverschluss',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Λογιστική',
'Addition' => 'Πρόσθεση',
'Address' => 'Διεύθυνση',
'Addresses' => 'Διευθύνσεις',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Διευθυντής περιοχής',
'Articlegroup' => 'Ομιλία',
'Articles' => 'Είδη',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Ισορροπία',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Δώρο',
'Business' => 'Επιχείρηση',
'CIS' => '#VALUE!',
'CLV' => 'Σολλίζω',
'Calendar' => 'Ημερολόγιο',
'City' => 'Πόλη',
'Client' => 'Πελάτης',
'ClientID' => '#VALUE!',
'Clients' => 'Πελάτες',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Επικοινωνία',
'Country' => 'Χώρα',
'Created' => 'Δημιουργήθηκε',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Αξιολόγησης της πιστοληπτικής ικανότητας',
'Creditcard' => 'Πιστωτική κάρτα',
'Customers' => '#VALUE!',
'DSO' => 'ΔΣΟ',
'Date' => 'Ημερομηνία',
'Default' => 'Προκαθορισμένο',
'Delivery' => 'Διανομή',
'Discount' => 'Εκπτωση',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Έκπτωση%',
'Documents' => 'Εγγραφα',
'Due' => 'Λόγω',
'Email' => 'ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ',
'Europe' => '#VALUE!',
'Fax' => 'Φαξ',
'Files' => 'Αρχεία',
'Filter' => 'Φίλτρο',
'Freightage' => 'Ναύλος',
'Group' => 'Ομάδα',
'ID' => 'ταυτότητα',
'Info' => 'Πληροφορία',
'Invoice' => 'Τιμολόγιο',
'Invoices' => 'Τιμολόγια',
'IsDefault' => 'Είναι προεπιλογή;',
'Items' => '#VALUE!',
'LastContact' => 'Τελευταία επαφή',
'LastOrder' => 'Τελευταία παραγγελία',
'Log' => 'Κούτσουρο',
'Logs' => 'Κούτσουρα',
'LostCustomers' => '#VALUE!',
'MRR' => 'MRR',
'MTDSales' => 'Πωλήσεις MTD',
'Margin' => 'Περιθώριο',
'Messages' => 'Μηνύματα',
'Modified' => 'Τροποποιημένος',
'Modules' => 'Ενότητες',
'Name' => 'Ονομα',
'Name1' => νομα1',
'Name2' => νομα2',
'Name3' => 'Όνομα',
'Net' => 'Καθαρά',
'NewCustomers' => '#VALUE!',
'Notes' => 'Σημειώνει',
'Number' => 'Αριθμός',
'Office' => 'Γραφείο',
'Other' => '#VALUE!',
'Payment' => 'Πληρωμή',
'PaymentTerm' => 'Ορος πληρωμής',
'Permission' => 'Αδεια',
'Phone' => 'Τηλέφωνο',
'Postal' => 'Ταχυδρομικός',
'Price' => 'Τιμή',
'Prices' => 'Τιμές',
'Private' => 'Ιδιωτικός',
'Productgroup' => 'Ομοιόμορφη ομάδα',
'Profile' => 'Προφίλ',
'Profit' => '#VALUE!',
'Purchase' => 'Αγορά',
'Quantity' => 'Ποσότητα',
'RecentInvoices' => 'Πρόσφατα τιμολόγια',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Εκπτώσεις',
'Segment' => 'Τμήμα',
'Segments' => 'Τμήματα',
'Subtype' => 'Υποτύπωμα',
'Support' => 'Υποστήριξη',
'Tags' => 'Ετικέτες',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Τύπος',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Δικτυακός τόπος',
'Wire' => 'Σύρμα',
'YTDSales' => 'Ytd πωλήσεις',
'Zip' => 'Φερμουάρ',
]];

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

@ -0,0 +1,127 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Accounting',
'Addition' => 'Addition',
'Address' => 'Address',
'Addresses' => 'Addresses',
'Africa' => 'Africa',
'AllCustomers' => 'All Customers',
'America' => 'America',
'Analyse' => 'Analyse',
'AreaManager' => 'Area Manager',
'Articlegroup' => 'Articlegroup',
'Articles' => 'Articles',
'Asia' => 'Asia',
'Attribute' => 'Attribute',
'Attributes' => 'Attributes',
'Balance' => 'Balance',
'BaseTime' => 'Base time',
'Bills' => 'Bills',
'Bonus' => 'Bonus',
'Business' => 'Business',
'CIS' => 'CIS',
'CLV' => 'CLV',
'Calendar' => 'Calendar',
'City' => 'City',
'Client' => 'Client',
'ClientID' => 'Client Id',
'Clients' => 'Clients',
'ComparisonTime' => 'Comparison time',
'Contact' => 'Contact',
'Country' => 'Country',
'Created' => 'Created',
'CreatedAt' => 'Created at',
'CreditRating' => 'Credit Rating',
'Creditcard' => 'Creditcard',
'Customers' => 'Customers',
'DSO' => 'DSO',
'Date' => 'Date',
'Default' => 'Default',
'Delivery' => 'Delivery',
'Discount' => 'Discount',
'DiscountBonus' => 'Discount bonus',
'DiscountP' => 'Discount %',
'Documents' => 'Documents',
'Due' => 'Due',
'Email' => 'Email',
'Europe' => 'Europe',
'Fax' => 'Fax',
'Files' => 'Files',
'Filter' => 'Filter',
'Freightage' => 'Freightage',
'Group' => 'Group',
'ID' => 'ID',
'Info' => 'Info',
'Invoice' => 'Invoice',
'Invoices' => 'Invoices',
'IsDefault' => 'Is default?',
'Items' => 'Items',
'LastContact' => 'Last Contact',
'LastOrder' => 'Last Order',
'Log' => 'Log',
'Logs' => 'Logs',
'LostCustomers' => 'Lost customers',
'MRR' => 'MRR',
'MTDSales' => 'MTD Sales',
'Margin' => 'Margin',
'Messages' => 'Messages',
'Modified' => 'Modified',
'Modules' => 'Modules',
'Name' => 'Name',
'Name1' => 'Name1',
'Name2' => 'Name2',
'Name3' => 'Name3',
'Net' => 'Net',
'NewCustomers' => 'New customers',
'Notes' => 'Notes',
'Number' => 'Number',
'Office' => 'Office',
'Other' => 'Other',
'Payment' => 'Payment',
'PaymentTerm' => 'Payment Term',
'Permission' => 'Permission',
'Phone' => 'Phone',
'Postal' => 'Postal',
'Price' => 'Price',
'Prices' => 'Prices',
'Private' => 'Private',
'Productgroup' => 'Productgroup',
'Profile' => 'Profile',
'Profit' => 'Profit',
'Purchase' => 'Purchase',
'Quantity' => 'Quantity',
'RecentInvoices' => 'Recent Invoices',
'Region' => 'Region',
'Rep' => 'Rep',
'Retention' => 'Retention',
'Sales' => 'Sales',
'Segment' => 'Segment',
'Segments' => 'Segments',
'Subtype' => 'Subtype',
'Support' => 'Support',
'Tags' => 'Tags',
'Title' => 'Title',
'Total' => 'Total',
'TotalPrice' => 'Total price',
'Type' => 'Type',
'UnitPrice' => 'Unit price',
'Value' => 'Value',
'Website' => 'Website',
'Wire' => 'Wire',
'YTDSales' => 'YTD Sales',
'Zip' => 'Zip',
'IMG_alt_map' => 'Map',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Contabilidad',
'Addition' => 'Adición',
'Address' => 'Habla a',
'Addresses' => 'Direcciones',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Gerente de área',
'Articlegroup' => 'Grupo articulo',
'Articles' => 'Artículos',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Equilibrio',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Prima',
'Business' => 'Negocio',
'CIS' => '#VALUE!',
'CLV' => 'Clv',
'Calendar' => 'Calendario',
'City' => 'Ciudad',
'Client' => 'Cliente',
'ClientID' => '#VALUE!',
'Clients' => 'Clientela',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Contacto',
'Country' => 'País',
'Created' => 'Creado',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Calificación crediticia',
'Creditcard' => 'Tarjeta de crédito',
'Customers' => '#VALUE!',
'DSO' => 'DSO',
'Date' => 'Fecha',
'Default' => 'Defecto',
'Delivery' => 'Entrega',
'Discount' => 'Descuento',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Descuento%',
'Documents' => 'Documentos',
'Due' => 'Vencer',
'Email' => 'Correo electrónico',
'Europe' => '#VALUE!',
'Fax' => 'Fax',
'Files' => 'Archivos',
'Filter' => 'Filtrar',
'Freightage' => 'Flete',
'Group' => 'Grupo',
'ID' => 'IDENTIFICACIÓN',
'Info' => 'Información',
'Invoice' => 'Factura',
'Invoices' => 'Facturas',
'IsDefault' => 'Es por defecto?',
'Items' => '#VALUE!',
'LastContact' => 'Último contacto',
'LastOrder' => 'Último pedido',
'Log' => 'Tronco',
'Logs' => 'Registros',
'LostCustomers' => '#VALUE!',
'MRR' => 'Mrr',
'MTDSales' => 'Ventas MTD',
'Margin' => 'Margen',
'Messages' => 'Mensajes',
'Modified' => 'Modificado',
'Modules' => 'Módulos',
'Name' => 'Nombre',
'Name1' => 'Nombre1',
'Name2' => 'Nombre2',
'Name3' => 'Nombre3',
'Net' => 'Red',
'NewCustomers' => '#VALUE!',
'Notes' => 'Notas',
'Number' => 'Número',
'Office' => 'Oficina',
'Other' => '#VALUE!',
'Payment' => 'Pago',
'PaymentTerm' => 'Plazo de pago',
'Permission' => 'Permiso',
'Phone' => 'Teléfono',
'Postal' => 'Postal',
'Price' => 'Precio',
'Prices' => 'Precios',
'Private' => 'Privado',
'Productgroup' => 'Grupo de productos',
'Profile' => 'Perfil',
'Profit' => '#VALUE!',
'Purchase' => 'Compra',
'Quantity' => 'Cantidad',
'RecentInvoices' => 'Facturas recientes',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Ventas',
'Segment' => 'Segmento',
'Segments' => 'Segmentos',
'Subtype' => 'Subtipo',
'Support' => 'Apoyo',
'Tags' => 'Etiquetas',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Escribe',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Sitio web',
'Wire' => 'Cable',
'YTDSales' => 'Ytd ventas',
'Zip' => 'Cremallera',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Kirjanpito',
'Addition' => 'Lisäys',
'Address' => 'Osoite',
'Addresses' => 'Osoitteet',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Aluejohtaja',
'Articlegroup' => 'ArticleGroup',
'Articles' => 'Artikkelit',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Saldo',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Bonus',
'Business' => 'Liiketoiminta',
'CIS' => '#VALUE!',
'CLV' => 'Clv',
'Calendar' => 'Kalenteri',
'City' => 'Kaupunki',
'Client' => 'Asiakas',
'ClientID' => '#VALUE!',
'Clients' => 'Asiakkaat',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Ottaa yhteyttä',
'Country' => 'Maa',
'Created' => 'Luotu',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Luottoluokitus',
'Creditcard' => 'Luottokortti',
'Customers' => '#VALUE!',
'DSO' => 'Dso',
'Date' => 'Päivämäärä',
'Default' => 'Oletusarvo',
'Delivery' => 'Toimitus',
'Discount' => 'Alennus',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Alennus %',
'Documents' => 'Asiakirjat',
'Due' => 'Takia',
'Email' => 'Sähköposti',
'Europe' => '#VALUE!',
'Fax' => 'Faksi',
'Files' => 'Tiedostot',
'Filter' => 'Suodattaa',
'Freightage' => 'Rahti',
'Group' => 'Ryhmä',
'ID' => 'Id',
'Info' => 'Tiedot',
'Invoice' => 'Lasku',
'Invoices' => 'Laskut',
'IsDefault' => 'On oletusarvo?',
'Items' => '#VALUE!',
'LastContact' => 'Viimeinen yhteystieto',
'LastOrder' => 'Viimeinen tilaus',
'Log' => 'Hirsi',
'Logs' => 'Lokit',
'LostCustomers' => '#VALUE!',
'MRR' => 'Mrr',
'MTDSales' => 'MTD-myynti',
'Margin' => 'Marginaali',
'Messages' => 'Viestit',
'Modified' => 'Muokattu',
'Modules' => 'Moduulit',
'Name' => 'Nimi',
'Name1' => 'Nimi1',
'Name2' => 'Nimi2',
'Name3' => 'Nimi33',
'Net' => 'Netto',
'NewCustomers' => '#VALUE!',
'Notes' => 'Toteaa',
'Number' => 'Määrä',
'Office' => 'Toimisto',
'Other' => '#VALUE!',
'Payment' => 'Maksu',
'PaymentTerm' => 'Maksuehto',
'Permission' => 'Lupa',
'Phone' => 'Puhelin',
'Postal' => 'Posti-',
'Price' => 'Hinta',
'Prices' => 'Hinnat',
'Private' => 'Yksityinen',
'Productgroup' => 'Tuoteryhmä',
'Profile' => 'Profiili',
'Profit' => '#VALUE!',
'Purchase' => 'Ostaa',
'Quantity' => 'Määrä',
'RecentInvoices' => 'Viimeaikaiset laskut',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Myynti',
'Segment' => 'Segmentti',
'Segments' => 'Segmentit',
'Subtype' => 'Alatyyppi',
'Support' => 'Tuki',
'Tags' => 'Tunnisteet',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Tyyppi',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Verkkosivusto',
'Wire' => 'Lanka',
'YTDSales' => 'YTD-myynti',
'Zip' => 'Postinumero',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Comptabilité',
'Addition' => 'Une addition',
'Address' => 'Adresse',
'Addresses' => 'Adresses',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Chef de secteur',
'Articlegroup' => 'Articlegroup',
'Articles' => 'Des articles',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Équilibre',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Prime',
'Business' => 'Entreprise',
'CIS' => '#VALUE!',
'CLV' => 'Clv',
'Calendar' => 'Calendrier',
'City' => 'Ville',
'Client' => 'Client',
'ClientID' => '#VALUE!',
'Clients' => 'Clients',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Contact',
'Country' => 'Pays',
'Created' => 'Établi',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Cote de crédit',
'Creditcard' => 'Carte de crédit',
'Customers' => '#VALUE!',
'DSO' => 'Dso',
'Date' => 'Date',
'Default' => 'Défaut',
'Delivery' => 'Livraison',
'Discount' => 'Remise',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Remise %',
'Documents' => 'Documents',
'Due' => 'Dû',
'Email' => 'E-mail',
'Europe' => '#VALUE!',
'Fax' => 'Fax',
'Files' => 'Des dossiers',
'Filter' => 'Filtre',
'Freightage' => 'Fret',
'Group' => 'Grouper',
'ID' => 'identifiant',
'Info' => 'Info',
'Invoice' => 'Facture d\'achat',
'Invoices' => 'Factures',
'IsDefault' => 'Est par défaut?',
'Items' => '#VALUE!',
'LastContact' => 'Dernier contact',
'LastOrder' => 'Dernière commande',
'Log' => 'Enregistrer',
'Logs' => 'Journaux',
'LostCustomers' => '#VALUE!',
'MRR' => 'Mrr',
'MTDSales' => 'Ventes MTD',
'Margin' => 'Marge',
'Messages' => 'messages',
'Modified' => 'Modifié',
'Modules' => 'Modules',
'Name' => 'Nom',
'Name1' => 'Nom1',
'Name2' => 'Nom2',
'Name3' => 'Nom3',
'Net' => 'Rapporter',
'NewCustomers' => '#VALUE!',
'Notes' => 'Remarques',
'Number' => 'Nombre',
'Office' => 'Bureau',
'Other' => '#VALUE!',
'Payment' => 'Paiement',
'PaymentTerm' => 'Terme de paiement',
'Permission' => 'Autorisation',
'Phone' => 'Téléphoner',
'Postal' => 'Postal',
'Price' => 'Prix',
'Prices' => 'Des prix',
'Private' => 'Privé',
'Productgroup' => 'Groupe de produits',
'Profile' => 'Profil',
'Profit' => '#VALUE!',
'Purchase' => 'Acheter',
'Quantity' => 'Quantité',
'RecentInvoices' => 'Factures récentes',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Ventes',
'Segment' => 'Segment',
'Segments' => 'Segments',
'Subtype' => 'Sous-type',
'Support' => 'Soutien',
'Tags' => 'Mots clés',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Taper',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Site Internet',
'Wire' => 'Fil',
'YTDSales' => 'Ventes YTD',
'Zip' => 'Zipper',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Könyvelés',
'Addition' => 'Kiegészítés',
'Address' => 'Cím',
'Addresses' => 'Címek',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Területi menedzser',
'Articlegroup' => 'Gyerekcsoport',
'Articles' => 'Árucikkek',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Egyensúly',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Bónusz',
'Business' => 'Üzleti',
'CIS' => '#VALUE!',
'CLV' => 'Clv',
'Calendar' => 'Naptár',
'City' => 'Város',
'Client' => 'Ügyfél',
'ClientID' => '#VALUE!',
'Clients' => 'Kliensek',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Kapcsolatba lépni',
'Country' => 'Ország',
'Created' => 'Létrehozott',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Hitelminősítő',
'Creditcard' => 'Hitelkártya',
'Customers' => '#VALUE!',
'DSO' => 'DSO',
'Date' => 'Dátum',
'Default' => 'Alapértelmezett',
'Delivery' => 'Szállítás',
'Discount' => 'Kedvezmény',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Árengedmény%',
'Documents' => 'Dokumentumok',
'Due' => 'Esedékes',
'Email' => 'Email',
'Europe' => '#VALUE!',
'Fax' => 'Fax',
'Files' => 'Fájlok',
'Filter' => 'Szűrő',
'Freightage' => 'Fuvardíj',
'Group' => 'Csoport',
'ID' => 'Idézés',
'Info' => 'Információ',
'Invoice' => 'Számla',
'Invoices' => 'Számlák',
'IsDefault' => 'Alapértelmezett?',
'Items' => '#VALUE!',
'LastContact' => 'Utolsó kapcsolat',
'LastOrder' => 'Utolsó rendelés',
'Log' => 'Napló',
'Logs' => 'Naplók',
'LostCustomers' => '#VALUE!',
'MRR' => 'Mrr',
'MTDSales' => 'MTD értékesítés',
'Margin' => 'Árrés',
'Messages' => 'üzenetek',
'Modified' => 'Módosított',
'Modules' => 'Modulok',
'Name' => 'Név',
'Name1' => 'Név1',
'Name2' => 'NAME2',
'Name3' => 'Név3',
'Net' => 'Háló',
'NewCustomers' => '#VALUE!',
'Notes' => 'Jegyzetek',
'Number' => 'Szám',
'Office' => 'Hivatal',
'Other' => '#VALUE!',
'Payment' => 'Fizetés',
'PaymentTerm' => 'Fizetési határidő',
'Permission' => 'Engedély',
'Phone' => 'Telefon',
'Postal' => 'Postai',
'Price' => 'Ár',
'Prices' => 'Árak',
'Private' => 'Magán',
'Productgroup' => 'Termékcsoport',
'Profile' => 'Profil',
'Profit' => '#VALUE!',
'Purchase' => 'Vásárlás',
'Quantity' => 'Mennyiség',
'RecentInvoices' => 'Legutóbbi számlák',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Értékesítés',
'Segment' => 'Szegmens',
'Segments' => 'Szegmensek',
'Subtype' => 'Altípus',
'Support' => 'Támogatás',
'Tags' => 'Címkék',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'típus',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Weboldal',
'Wire' => 'Huzal',
'YTDSales' => 'YTD értékesítés',
'Zip' => 'Postai irányítószám',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Contabilità',
'Addition' => 'Aggiunta',
'Address' => 'Indirizzo',
'Addresses' => 'Indirizzi',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Area Manager',
'Articlegroup' => 'Art.group.',
'Articles' => 'Artificio',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Bilancia',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Bonus.',
'Business' => 'Affare',
'CIS' => '#VALUE!',
'CLV' => 'Clv.',
'Calendar' => 'Calendario',
'City' => 'Città',
'Client' => 'Cliente',
'ClientID' => '#VALUE!',
'Clients' => 'Clienti',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Contatto',
'Country' => 'Nazione',
'Created' => 'Creato',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Rating del credito',
'Creditcard' => 'Carta di credito',
'Customers' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => 'Data',
'Default' => 'Predefinito',
'Delivery' => 'Consegna',
'Discount' => 'Sconto',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Sconto%',
'Documents' => 'Documenti',
'Due' => 'Dovuto',
'Email' => 'E-mail',
'Europe' => '#VALUE!',
'Fax' => 'Fax',
'Files' => 'File',
'Filter' => 'Filtro',
'Freightage' => 'Liberare',
'Group' => 'Gruppo',
'ID' => 'ID',
'Info' => 'Informazioni',
'Invoice' => 'Fattura',
'Invoices' => 'Fatture',
'IsDefault' => 'È predefinito?',
'Items' => '#VALUE!',
'LastContact' => 'Ultimo contatto',
'LastOrder' => 'Ultimo ordine',
'Log' => 'Tronco d\'albero',
'Logs' => 'Logs.',
'LostCustomers' => '#VALUE!',
'MRR' => 'Mrr.',
'MTDSales' => 'Vendite di mtd.',
'Margin' => 'Margine',
'Messages' => 'Messaggi',
'Modified' => 'Modificati',
'Modules' => 'Moduli',
'Name' => 'Nome',
'Name1' => 'Nome1.',
'Name2' => 'Nome2.',
'Name3' => 'Nome3.',
'Net' => 'Rete',
'NewCustomers' => '#VALUE!',
'Notes' => 'Appunti',
'Number' => 'Numero',
'Office' => 'Ufficio',
'Other' => '#VALUE!',
'Payment' => 'Pagamento',
'PaymentTerm' => 'Termine di pagamento',
'Permission' => 'Autorizzazione',
'Phone' => 'Telefono',
'Postal' => 'postale',
'Price' => 'Prezzo',
'Prices' => 'Prezzi',
'Private' => 'Privato',
'Productgroup' => 'Gruppo di prodotti',
'Profile' => 'Profilo',
'Profit' => '#VALUE!',
'Purchase' => 'Acquistare',
'Quantity' => 'Quantità',
'RecentInvoices' => 'Recenti fatture',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Saldi',
'Segment' => 'Segmento',
'Segments' => 'Segmenti',
'Subtype' => 'Sottotipo',
'Support' => 'Supporto',
'Tags' => 'Tags.',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Tipo',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Sito web',
'Wire' => 'Filo',
'YTDSales' => 'Vendite di ytd.',
'Zip' => 'Cerniera lampo',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => '会計',
'Addition' => '添加',
'Address' => '住所',
'Addresses' => 'アドレス',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'エリアマネージャー',
'Articlegroup' => '記事グループ',
'Articles' => 'articles',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'バランス',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'ボーナス',
'Business' => '仕事',
'CIS' => '#VALUE!',
'CLV' => 'cl cl',
'Calendar' => 'カレンダー',
'City' => '市',
'Client' => 'クライアント',
'ClientID' => '#VALUE!',
'Clients' => 'クライアント',
'ComparisonTime' => '#VALUE!',
'Contact' => 'コンタクト',
'Country' => '国',
'Created' => '作成した',
'CreatedAt' => '#VALUE!',
'CreditRating' => '信用格付け',
'Creditcard' => 'クレジットカード',
'Customers' => '#VALUE!',
'DSO' => 'DSO',
'Date' => '日にち',
'Default' => 'ディフォルト',
'Delivery' => '配達',
'Discount' => '割引',
'DiscountBonus' => '#VALUE!',
'DiscountP' => '割引 ',
'Documents' => '文書',
'Due' => '期限',
'Email' => 'Eメール',
'Europe' => '#VALUE!',
'Fax' => 'ファックス',
'Files' => 'ファイル',
'Filter' => 'フィルター',
'Freightage' => 'fre fre',
'Group' => 'グループ',
'ID' => 'id',
'Info' => '情報',
'Invoice' => '請求書',
'Invoices' => '請求書',
'IsDefault' => 'デフォルトですか?',
'Items' => '#VALUE!',
'LastContact' => '最後の連絡先',
'LastOrder' => '最後の順序',
'Log' => 'ログ',
'Logs' => 'ログ',
'LostCustomers' => '#VALUE!',
'MRR' => 'MRR.',
'MTDSales' => 'MTDセールス',
'Margin' => 'マージン',
'Messages' => 'メッセージ',
'Modified' => '修正された',
'Modules' => 'モジュール',
'Name' => '名前',
'Name1' => '名前1',
'Name2' => '名前2',
'Name3' => '名前3',
'Net' => 'ネット',
'NewCustomers' => '#VALUE!',
'Notes' => 'ノート',
'Number' => '番号',
'Office' => 'オフィス',
'Other' => '#VALUE!',
'Payment' => '支払い',
'PaymentTerm' => '支払条件',
'Permission' => '許可',
'Phone' => '電話',
'Postal' => '郵便',
'Price' => '価格',
'Prices' => '価格',
'Private' => '民間',
'Productgroup' => '製品グループ',
'Profile' => 'プロフィール',
'Profit' => '#VALUE!',
'Purchase' => '購入',
'Quantity' => '量',
'RecentInvoices' => '最近の請求書',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => '売り返り',
'Segment' => 'セグメント',
'Segments' => 'セグメント',
'Subtype' => 'サブタイプ',
'Support' => 'サポート',
'Tags' => 'タグ',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'タイプ',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Webサイト',
'Wire' => 'ワイヤー',
'YTDSales' => 'ytd売上高',
'Zip' => 'ジップ',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => '회계',
'Addition' => '덧셈',
'Address' => '주소',
'Addresses' => '구애',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => '구역 책임자',
'Articlegroup' => '기사 그룹',
'Articles' => '조항',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => '균형',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => '보너스',
'Business' => '사업',
'CIS' => '#VALUE!',
'CLV' => 'CLV.',
'Calendar' => '달력',
'City' => '도시',
'Client' => '고객',
'ClientID' => '#VALUE!',
'Clients' => '클라이언트',
'ComparisonTime' => '#VALUE!',
'Contact' => '연락하다',
'Country' => '국가',
'Created' => '만들어진',
'CreatedAt' => '#VALUE!',
'CreditRating' => '신용 등급',
'Creditcard' => '신용 카드',
'Customers' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => '날짜',
'Default' => '기본',
'Delivery' => '배달',
'Discount' => '할인',
'DiscountBonus' => '#VALUE!',
'DiscountP' => '할인 %',
'Documents' => '서류',
'Due' => '로 인한',
'Email' => '이메일',
'Europe' => '#VALUE!',
'Fax' => '팩스',
'Files' => '파일',
'Filter' => '필터',
'Freightage' => '화물',
'Group' => '그룹',
'ID' => 'ID',
'Info' => '정보',
'Invoice' => '송장',
'Invoices' => '송장',
'IsDefault' => '기본값은 무엇입니까?',
'Items' => '#VALUE!',
'LastContact' => '마지막 연락처',
'LastOrder' => '마지막 주문',
'Log' => '통나무',
'Logs' => '로그인',
'LostCustomers' => '#VALUE!',
'MRR' => '부서',
'MTDSales' => 'MTD 판매',
'Margin' => '여유',
'Messages' => '메시지',
'Modified' => '수정',
'Modules' => '모듈',
'Name' => '이름',
'Name1' => 'name1.',
'Name2' => 'name2.',
'Name3' => 'Name3.',
'Net' => '그물',
'NewCustomers' => '#VALUE!',
'Notes' => '노트',
'Number' => '숫자',
'Office' => '사무실',
'Other' => '#VALUE!',
'Payment' => '지불',
'PaymentTerm' => '지불 기간',
'Permission' => '허가',
'Phone' => '핸드폰',
'Postal' => '우편 엽서',
'Price' => '가격',
'Prices' => '물가',
'Private' => '사적인',
'Productgroup' => '제품 그룹',
'Profile' => '프로필',
'Profit' => '#VALUE!',
'Purchase' => '구입',
'Quantity' => '수량',
'RecentInvoices' => '최근 송장',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => '매상',
'Segment' => '분절',
'Segments' => '세그먼트',
'Subtype' => '하위 유형',
'Support' => '지원하다',
'Tags' => '태그',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => '유형',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => '웹 사이트',
'Wire' => '철사',
'YTDSales' => 'YTD 판매',
'Zip' => '지퍼',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Regnskap',
'Addition' => 'Addisjon',
'Address' => 'Adresse',
'Addresses' => 'Adresser',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Områdeansvarlig',
'Articlegroup' => 'Articregroup.',
'Articles' => 'Artikler',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Balansere',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Bonus',
'Business' => 'Virksomhet',
'CIS' => '#VALUE!',
'CLV' => 'CLV.',
'Calendar' => 'Kalender',
'City' => 'By',
'Client' => 'Klient',
'ClientID' => '#VALUE!',
'Clients' => 'Klienter',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Kontakt',
'Country' => 'Land',
'Created' => 'Opprettet',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Kredittvurdering',
'Creditcard' => 'Kredittkort',
'Customers' => '#VALUE!',
'DSO' => 'DSO',
'Date' => 'Dato',
'Default' => 'Misligholde',
'Delivery' => 'Leveranse',
'Discount' => 'Rabatt',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Rabatt%',
'Documents' => 'Dokumenter',
'Due' => 'På grunn av det',
'Email' => 'E-post',
'Europe' => '#VALUE!',
'Fax' => 'Faks',
'Files' => 'Filer',
'Filter' => 'Filter',
'Freightage' => 'Frakt',
'Group' => 'Gruppe',
'ID' => 'Id.',
'Info' => 'Info.',
'Invoice' => 'Faktura',
'Invoices' => 'Fakturaer',
'IsDefault' => 'Er standard?',
'Items' => '#VALUE!',
'LastContact' => 'Siste kontakt',
'LastOrder' => 'Siste bestilling',
'Log' => 'Logg',
'Logs' => 'Tømmerstokker',
'LostCustomers' => '#VALUE!',
'MRR' => 'MRR.',
'MTDSales' => 'MTD-salg',
'Margin' => 'Margin',
'Messages' => 'Meldinger',
'Modified' => 'Endret',
'Modules' => 'Moduler',
'Name' => 'Navn',
'Name1' => 'Navn1.',
'Name2' => 'NAME2.',
'Name3' => 'Navn3.',
'Net' => 'Nett',
'NewCustomers' => '#VALUE!',
'Notes' => 'Notater',
'Number' => 'Nummer',
'Office' => 'Kontor',
'Other' => '#VALUE!',
'Payment' => 'innbetaling',
'PaymentTerm' => 'Betalingsperiode',
'Permission' => 'Tillatelse',
'Phone' => 'Telefonen',
'Postal' => 'Postal.',
'Price' => 'Pris',
'Prices' => 'Prisene',
'Private' => 'Privat',
'Productgroup' => 'Produktgruppe',
'Profile' => 'Profil',
'Profit' => '#VALUE!',
'Purchase' => 'Kjøp',
'Quantity' => 'Mengde',
'RecentInvoices' => 'Nylige fakturaer',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Salg',
'Segment' => 'Segmentet',
'Segments' => 'Segmenter',
'Subtype' => 'Subtype.',
'Support' => 'Brukerstøtte',
'Tags' => 'Tags.',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Type',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Nettside',
'Wire' => 'Metalltråd',
'YTDSales' => 'YTD-salg',
'Zip' => 'Glidelås',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Rachunkowość',
'Addition' => 'Dodatek',
'Address' => 'Adres',
'Addresses' => 'Adresy',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Dyrektor Regionalny',
'Articlegroup' => 'Artykuł',
'Articles' => 'Artykuły',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Balansować',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Premia',
'Business' => 'Biznes',
'CIS' => '#VALUE!',
'CLV' => 'CLV.',
'Calendar' => 'Kalendarz',
'City' => 'Miasto',
'Client' => 'Klient',
'ClientID' => '#VALUE!',
'Clients' => 'Klienci.',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Kontakt',
'Country' => 'Kraj',
'Created' => 'Utworzony',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Rating kredytowy',
'Creditcard' => 'Karta kredytowa',
'Customers' => '#VALUE!',
'DSO' => 'DSO.',
'Date' => 'Data',
'Default' => 'Domyślna',
'Delivery' => 'Dostawa',
'Discount' => 'Zniżka',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Zniżka %',
'Documents' => 'Dokumenty',
'Due' => 'Z powodu',
'Email' => 'E-mail',
'Europe' => '#VALUE!',
'Fax' => 'Faks',
'Files' => 'Pliki',
'Filter' => 'Filtr',
'Freightage' => 'Frachtowanie',
'Group' => 'Grupa',
'ID' => 'ID',
'Info' => 'Info',
'Invoice' => 'Faktura',
'Invoices' => 'Faktury',
'IsDefault' => 'Jest domyślnie?',
'Items' => '#VALUE!',
'LastContact' => 'Ostatni kontakt',
'LastOrder' => 'Ostatnie zamówienie',
'Log' => 'Dziennik',
'Logs' => 'Kłody',
'LostCustomers' => '#VALUE!',
'MRR' => 'MRR.',
'MTDSales' => 'Sprzedaż MTD.',
'Margin' => 'Margines',
'Messages' => 'Wiadomości',
'Modified' => 'Modyfikowany',
'Modules' => 'Moduły',
'Name' => 'Nazwa',
'Name1' => 'Nazwa1.',
'Name2' => 'Nazwa2.',
'Name3' => 'Nazwa3.',
'Net' => 'Internet',
'NewCustomers' => '#VALUE!',
'Notes' => 'Notatki',
'Number' => 'Numer',
'Office' => 'Gabinet',
'Other' => '#VALUE!',
'Payment' => 'Zapłata',
'PaymentTerm' => 'Termin płatności',
'Permission' => 'Pozwolenie',
'Phone' => 'Telefon',
'Postal' => 'Pocztowy',
'Price' => 'Cena £',
'Prices' => 'Ceny',
'Private' => 'Prywatny',
'Productgroup' => 'Grupa produktów',
'Profile' => 'Profil',
'Profit' => '#VALUE!',
'Purchase' => 'Zakup',
'Quantity' => 'Ilość',
'RecentInvoices' => 'Ostatnie faktury.',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Obroty',
'Segment' => 'Człon',
'Segments' => 'Segmenty',
'Subtype' => 'Podtyp',
'Support' => 'Wsparcie',
'Tags' => 'Tagi.',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Rodzaj',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Stronie internetowej',
'Wire' => 'Drut',
'YTDSales' => 'Sprzedaż Ytd.',
'Zip' => 'Zamek błyskawiczny',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Contabilidade',
'Addition' => 'Adição',
'Address' => 'Endereço',
'Addresses' => 'Endereços',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Gerente da área',
'Articlegroup' => 'ArticleGroup',
'Articles' => 'Artigos',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Equilíbrio',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Bônus',
'Business' => 'O negócio',
'CIS' => '#VALUE!',
'CLV' => 'Clv.',
'Calendar' => 'Calendário',
'City' => 'Cidade',
'Client' => 'Cliente',
'ClientID' => '#VALUE!',
'Clients' => 'Clientes',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Contato',
'Country' => 'País',
'Created' => 'Criado',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Rating de crédito',
'Creditcard' => 'Cartão de crédito',
'Customers' => '#VALUE!',
'DSO' => 'Dso.',
'Date' => 'Encontro',
'Default' => 'Padrão',
'Delivery' => 'Entrega',
'Discount' => 'Desconto',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Desconto%',
'Documents' => 'Documentos',
'Due' => 'Vencimento',
'Email' => 'E-mail',
'Europe' => '#VALUE!',
'Fax' => 'Fax',
'Files' => 'arquivos',
'Filter' => 'Filtro',
'Freightage' => 'Freightage',
'Group' => 'Grupo',
'ID' => 'identificação',
'Info' => 'Info',
'Invoice' => 'Fatura',
'Invoices' => 'Faturas',
'IsDefault' => 'É padrão?',
'Items' => '#VALUE!',
'LastContact' => 'Último contato.',
'LastOrder' => 'Último pedido',
'Log' => 'Registro',
'Logs' => 'Histórico',
'LostCustomers' => '#VALUE!',
'MRR' => 'MRR.',
'MTDSales' => 'Sales Mtd.',
'Margin' => 'Margem',
'Messages' => 'Mensagens',
'Modified' => 'Modificado',
'Modules' => 'Módulos.',
'Name' => 'Nome',
'Name1' => 'Nome1.',
'Name2' => 'Nome2.',
'Name3' => 'Nome3.',
'Net' => 'Internet',
'NewCustomers' => '#VALUE!',
'Notes' => 'Notas',
'Number' => 'Número',
'Office' => 'Escritório',
'Other' => '#VALUE!',
'Payment' => 'Pagamento',
'PaymentTerm' => 'Termo de pagamento',
'Permission' => 'Permissão',
'Phone' => 'Telefone',
'Postal' => 'Postal',
'Price' => 'Preço',
'Prices' => 'Preços',
'Private' => 'Privado',
'Productgroup' => 'Grupo de produtos',
'Profile' => 'Perfil',
'Profit' => '#VALUE!',
'Purchase' => 'Comprar',
'Quantity' => 'Quantidade',
'RecentInvoices' => 'Faturas recentes',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Vendas',
'Segment' => 'Segmento',
'Segments' => 'Segmentos',
'Subtype' => 'Subtipo',
'Support' => 'Apoio, suporte',
'Tags' => 'Tag',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Modelo',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Local na rede Internet',
'Wire' => 'Fio',
'YTDSales' => 'Vendas do ano',
'Zip' => 'Fecho eclair',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Учет',
'Addition' => 'Добавление',
'Address' => 'Адрес',
'Addresses' => 'Адреса',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Региональный менеджер',
'Articlegroup' => 'Staregroup.',
'Articles' => 'Статьи',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Остаток средств',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Бонус',
'Business' => 'Бизнес',
'CIS' => '#VALUE!',
'CLV' => 'Каблук',
'Calendar' => 'Календарь',
'City' => 'Город',
'Client' => 'Клиент',
'ClientID' => '#VALUE!',
'Clients' => 'Клиенты',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Контакт',
'Country' => 'Страна',
'Created' => 'Созданный',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Кредитный рейтинг',
'Creditcard' => 'Кредитная карта',
'Customers' => '#VALUE!',
'DSO' => 'DSO',
'Date' => 'Дата',
'Default' => 'Дефолт',
'Delivery' => 'Доставка',
'Discount' => 'Скидка',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Скидка %',
'Documents' => 'Документы',
'Due' => 'Должное',
'Email' => 'Электронное письмо',
'Europe' => '#VALUE!',
'Fax' => 'Факс',
'Files' => 'Файлы',
'Filter' => 'Фильтр',
'Freightage' => 'Фрахты',
'Group' => 'Группа',
'ID' => 'Я БЫ',
'Info' => 'Информация',
'Invoice' => 'Счет',
'Invoices' => 'Счета',
'IsDefault' => 'По умолчанию?',
'Items' => '#VALUE!',
'LastContact' => 'Последний контакт',
'LastOrder' => 'Последний заказ',
'Log' => 'Бревно',
'Logs' => 'Журналы',
'LostCustomers' => '#VALUE!',
'MRR' => 'MRR',
'MTDSales' => 'MTD Sales.',
'Margin' => 'Допуск',
'Messages' => 'Сообщения',
'Modified' => 'Модифицированный',
'Modules' => 'Модули',
'Name' => 'Имя',
'Name1' => 'Имя1.',
'Name2' => 'Имя2.',
'Name3' => 'Имя3.',
'Net' => 'Сеть',
'NewCustomers' => '#VALUE!',
'Notes' => 'Примечания',
'Number' => 'Число',
'Office' => 'Офис',
'Other' => '#VALUE!',
'Payment' => 'Оплата',
'PaymentTerm' => 'Условия оплаты',
'Permission' => 'Разрешение',
'Phone' => 'Телефон',
'Postal' => 'Почтовый',
'Price' => 'Цена',
'Prices' => 'Цены',
'Private' => 'Частный',
'Productgroup' => 'Группа товаров',
'Profile' => 'Профиль',
'Profit' => '#VALUE!',
'Purchase' => 'Покупка',
'Quantity' => 'Количество',
'RecentInvoices' => 'Недавние счета',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Продажи',
'Segment' => 'Сегмент',
'Segments' => 'Сегменты',
'Subtype' => 'Подтип',
'Support' => 'Служба поддержки',
'Tags' => 'Теги',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Тип',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Веб-сайт',
'Wire' => 'Проволока',
'YTDSales' => 'YTD Sales.',
'Zip' => 'Zip.',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Bokföring',
'Addition' => 'Tillägg',
'Address' => 'Adress',
'Addresses' => 'Adresser',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Områdeschef',
'Articlegroup' => 'Artikelgrupp',
'Articles' => 'Artiklar',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Balans',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Bonus',
'Business' => 'Företag',
'CIS' => '#VALUE!',
'CLV' => 'Clv',
'Calendar' => 'Kalender',
'City' => 'Stad',
'Client' => 'Klient',
'ClientID' => '#VALUE!',
'Clients' => 'Klienter',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Kontakt',
'Country' => 'Land',
'Created' => 'Skapad',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Kreditvärdighet',
'Creditcard' => 'Kreditkort',
'Customers' => '#VALUE!',
'DSO' => 'Do',
'Date' => 'Datum',
'Default' => 'Standard',
'Delivery' => 'Leverans',
'Discount' => 'Rabatt',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Rabatt%',
'Documents' => 'Dokument',
'Due' => 'På grund av',
'Email' => 'E-post',
'Europe' => '#VALUE!',
'Fax' => 'Fax',
'Files' => 'Filer',
'Filter' => 'Filtrera',
'Freightage' => 'Frakt',
'Group' => 'Grupp',
'ID' => 'Id',
'Info' => 'Info',
'Invoice' => 'Faktura',
'Invoices' => 'Fakturor',
'IsDefault' => 'Är standard?',
'Items' => '#VALUE!',
'LastContact' => 'Senaste kontakten',
'LastOrder' => 'Sista beställningen',
'Log' => 'Logga',
'Logs' => 'Loggar',
'LostCustomers' => '#VALUE!',
'MRR' => 'Mrr',
'MTDSales' => 'MTD-försäljning',
'Margin' => 'Marginal',
'Messages' => 'Budskap',
'Modified' => 'Ändrad',
'Modules' => 'Moduler',
'Name' => 'namn',
'Name1' => 'Namn1',
'Name2' => 'Namn2',
'Name3' => 'Namn3',
'Net' => 'Netto',
'NewCustomers' => '#VALUE!',
'Notes' => 'Anteckningar',
'Number' => 'siffra',
'Office' => 'Kontor',
'Other' => '#VALUE!',
'Payment' => 'Betalning',
'PaymentTerm' => 'Betalningsvillkor',
'Permission' => 'Tillstånd',
'Phone' => 'Telefon',
'Postal' => 'Post',
'Price' => 'Pris',
'Prices' => 'Priser',
'Private' => 'Privat',
'Productgroup' => 'Produktgrupp',
'Profile' => 'Profil',
'Profit' => '#VALUE!',
'Purchase' => 'Inköp',
'Quantity' => 'Kvantitet',
'RecentInvoices' => 'Nya fakturor',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Försäljning',
'Segment' => 'Segmentet',
'Segments' => 'Segment',
'Subtype' => 'Subtyp',
'Support' => 'Stöd',
'Tags' => 'Tagg',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Typ',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Hemsida',
'Wire' => 'Tråd',
'YTDSales' => 'YTD-försäljning',
'Zip' => 'Blixtlås',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'การบัญชี',
'Addition' => 'ส่วนที่เพิ่มเข้าไป',
'Address' => 'ที่อยู่',
'Addresses' => 'ที่อยู่',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'ผู้จัดการพื้นที่',
'Articlegroup' => 'ArticleGroup',
'Articles' => 'บทความ',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'สมดุล',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'โบนัส',
'Business' => 'ธุรกิจ',
'CIS' => '#VALUE!',
'CLV' => 'clv',
'Calendar' => 'ปฏิทิน',
'City' => 'เมือง',
'Client' => 'ลูกค้า',
'ClientID' => '#VALUE!',
'Clients' => 'ลูกค้า',
'ComparisonTime' => '#VALUE!',
'Contact' => 'ติดต่อ',
'Country' => 'ประเทศ',
'Created' => 'สร้าง',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'การจัดอันดับเครดิต',
'Creditcard' => 'บัตรเครดิต',
'Customers' => '#VALUE!',
'DSO' => 'DSO',
'Date' => 'วันที่',
'Default' => 'ค่าเริ่มต้น',
'Delivery' => 'จัดส่ง',
'Discount' => 'การลดราคา',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'การลดราคา %',
'Documents' => 'เอกสาร',
'Due' => 'เนื่องจาก',
'Email' => 'อีเมล',
'Europe' => '#VALUE!',
'Fax' => 'แฟกซ์',
'Files' => 'ไฟล์',
'Filter' => 'กรอง',
'Freightage' => 'การขนส่งสินค้า',
'Group' => 'กลุ่ม',
'ID' => 'id',
'Info' => 'ข้อมูล',
'Invoice' => 'ใบแจ้งหนี้',
'Invoices' => 'ใบแจ้งหนี้',
'IsDefault' => 'เป็นค่าเริ่มต้น?',
'Items' => '#VALUE!',
'LastContact' => 'ติดต่อล่าสุด',
'LastOrder' => 'คำสั่งสุดท้าย',
'Log' => 'บันทึก',
'Logs' => 'การบันทึก',
'LostCustomers' => '#VALUE!',
'MRR' => 'MRR',
'MTDSales' => 'ขาย MTD',
'Margin' => 'ระยะขอบ',
'Messages' => 'ข้อความ',
'Modified' => 'ที่ได้รับการแก้ไข',
'Modules' => 'โมดูล',
'Name' => 'ชื่อ',
'Name1' => 'ชื่อ 1',
'Name2' => 'ชื่อ 2',
'Name3' => 'ชื่อ 3',
'Net' => 'สุทธิ',
'NewCustomers' => '#VALUE!',
'Notes' => 'หมายเหตุ',
'Number' => 'ตัวเลข',
'Office' => 'สำนักงาน',
'Other' => '#VALUE!',
'Payment' => 'การชำระเงิน',
'PaymentTerm' => 'เงื่อนไขการชำระเงิน',
'Permission' => 'การอนุญาต',
'Phone' => 'โทรศัพท์',
'Postal' => 'เกี่ยวกับการไปรษณีย์',
'Price' => 'ราคา',
'Prices' => 'ราคา',
'Private' => 'ส่วนตัว',
'Productgroup' => 'กลุ่มผลิตภัณฑ์',
'Profile' => 'ประวัติโดยย่อ',
'Profit' => '#VALUE!',
'Purchase' => 'ซื้อ',
'Quantity' => 'ปริมาณ',
'RecentInvoices' => 'ใบแจ้งหนี้ล่าสุด',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'ฝ่ายขาย',
'Segment' => 'ส่วน',
'Segments' => 'กลุ่ม',
'Subtype' => 'ประเภทย่อย',
'Support' => 'สนับสนุน',
'Tags' => 'แท็ก',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'พิมพ์',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'เว็บไซต์',
'Wire' => 'ลวด',
'YTDSales' => 'ขาย YTD',
'Zip' => 'ซิป',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Muhasebe',
'Addition' => 'İlave',
'Address' => 'Adres',
'Addresses' => 'Adresler',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Alan müdürü',
'Articlegroup' => 'Makale grubu',
'Articles' => 'Nesne',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Denge',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Bonus',
'Business' => 'İşletme',
'CIS' => '#VALUE!',
'CLV' => 'Clv',
'Calendar' => 'Takvim',
'City' => 'Şehir',
'Client' => 'Müşteri',
'ClientID' => '#VALUE!',
'Clients' => 'Müşteriler',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Temas',
'Country' => 'Ülke',
'Created' => 'Yaratılmış',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Kredi notu',
'Creditcard' => 'Kredi kartı',
'Customers' => '#VALUE!',
'DSO' => 'Dso',
'Date' => 'Tarih',
'Default' => 'Varsayılan',
'Delivery' => 'Teslimat',
'Discount' => 'İndirim',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'İndirim %',
'Documents' => 'Belgeler',
'Due' => 'Vadesi dolmuş',
'Email' => 'E-posta',
'Europe' => '#VALUE!',
'Fax' => 'Faks',
'Files' => 'Dosyalar',
'Filter' => 'Filtrelemek',
'Freightage' => 'Yük',
'Group' => 'Grup',
'ID' => 'İD',
'Info' => 'Bilgi',
'Invoice' => 'Fatura',
'Invoices' => 'Faturalar',
'IsDefault' => 'Varsayılan mı?',
'Items' => '#VALUE!',
'LastContact' => 'Son iletişim',
'LastOrder' => 'Son sipariş',
'Log' => 'Kayıt',
'Logs' => 'Kütükler',
'LostCustomers' => '#VALUE!',
'MRR' => 'Mrr',
'MTDSales' => 'Mtd satışları',
'Margin' => 'Marj',
'Messages' => 'Mesaj',
'Modified' => 'Değiştirilmiş',
'Modules' => 'Modüller',
'Name' => 'İsim',
'Name1' => 'İsim1',
'Name2' => 'İsim2',
'Name3' => 'İsim3',
'Net' => 'Ağ',
'NewCustomers' => '#VALUE!',
'Notes' => 'Notalar',
'Number' => 'Numara',
'Office' => 'Ofis',
'Other' => '#VALUE!',
'Payment' => 'Ödeme',
'PaymentTerm' => 'Ödeme koşulu',
'Permission' => 'İzin',
'Phone' => 'Telefon',
'Postal' => 'Posta',
'Price' => 'Fiyat',
'Prices' => 'Fiyat:% s',
'Private' => 'Özel',
'Productgroup' => 'Ürün grubu',
'Profile' => 'Profil',
'Profit' => '#VALUE!',
'Purchase' => 'Satın alma',
'Quantity' => 'Miktar',
'RecentInvoices' => 'Son Faturalar',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Satış',
'Segment' => 'Segment',
'Segments' => 'Segmentler',
'Subtype' => 'Alt tip',
'Support' => 'Destek',
'Tags' => 'Etiketler',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Tip',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'İnternet sitesi',
'Wire' => 'Tel',
'YTDSales' => 'YTD satışları',
'Zip' => 'Zip',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => 'Бухгалтерський облік',
'Addition' => 'Додавання',
'Address' => 'Адреса',
'Addresses' => 'Адреси',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => 'Менеджер області',
'Articlegroup' => 'Статтюгрупи',
'Articles' => 'Статті',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => 'Баланс',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => 'Бонус',
'Business' => 'Бізнес',
'CIS' => '#VALUE!',
'CLV' => 'Клоп',
'Calendar' => 'Календар',
'City' => 'Місто',
'Client' => 'Клієнт',
'ClientID' => '#VALUE!',
'Clients' => 'Клієнти',
'ComparisonTime' => '#VALUE!',
'Contact' => 'Контакт',
'Country' => 'Країна',
'Created' => 'Створений',
'CreatedAt' => '#VALUE!',
'CreditRating' => 'Кредитний рейтинг',
'Creditcard' => 'Кредитна карта',
'Customers' => '#VALUE!',
'DSO' => 'Дз',
'Date' => 'Дата',
'Default' => 'За замовчуванням',
'Delivery' => 'Доставка',
'Discount' => 'Знижка',
'DiscountBonus' => '#VALUE!',
'DiscountP' => 'Знижка%',
'Documents' => 'Документи',
'Due' => 'Заборгованість',
'Email' => 'Електронна пошта',
'Europe' => '#VALUE!',
'Fax' => 'Факс',
'Files' => 'Файли',
'Filter' => 'Фільтрувати',
'Freightage' => 'Фрахт',
'Group' => 'Група',
'ID' => 'Ідентифікатор',
'Info' => 'Інформація',
'Invoice' => 'Рахунок-фактура',
'Invoices' => 'Рахунки-фактури',
'IsDefault' => 'Чи є за замовчуванням?',
'Items' => '#VALUE!',
'LastContact' => 'Останній контакт',
'LastOrder' => 'Остання замовлення',
'Log' => 'Журнал',
'Logs' => 'Журнали',
'LostCustomers' => '#VALUE!',
'MRR' => 'Пан',
'MTDSales' => 'Продажі MTD',
'Margin' => 'Маржа',
'Messages' => 'Повідомлень',
'Modified' => 'Модифікований',
'Modules' => 'Модулі',
'Name' => 'Назва',
'Name1' => 'Name1',
'Name2' => 'Name2',
'Name3' => 'Name3',
'Net' => 'Сітка',
'NewCustomers' => '#VALUE!',
'Notes' => 'Ноти',
'Number' => 'Число',
'Office' => 'Офіс',
'Other' => '#VALUE!',
'Payment' => 'Платіж',
'PaymentTerm' => 'Термін оплати',
'Permission' => 'Дозвіл',
'Phone' => 'Телефон',
'Postal' => 'Поштовий',
'Price' => 'Ціна',
'Prices' => 'Ціни',
'Private' => 'Приватний',
'Productgroup' => 'Група продуктів',
'Profile' => 'Профіль',
'Profit' => '#VALUE!',
'Purchase' => 'Придбання',
'Quantity' => 'Кількість',
'RecentInvoices' => 'Останні рахунки-фактури',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => 'Продаж',
'Segment' => 'Сегмент',
'Segments' => 'Сегменти',
'Subtype' => 'Підтип',
'Support' => 'Підтримка',
'Tags' => 'Теги',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => 'Тип',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => 'Веб-сайт',
'Wire' => 'Дріт',
'YTDSales' => 'Ytd продажі',
'Zip' => 'Блиск',
]];

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

@ -0,0 +1,126 @@
<?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 ['ClientManagement' => [
'Accounting' => '会计',
'Addition' => '添加',
'Address' => '地址',
'Addresses' => '地址',
'Africa' => '#VALUE!',
'AllCustomers' => '#VALUE!',
'America' => '#VALUE!',
'Analyse' => '#VALUE!',
'AreaManager' => '区域经理',
'Articlegroup' => '商品组',
'Articles' => '文章',
'Asia' => '#VALUE!',
'Attribute' => '#VALUE!',
'Attributes' => '#VALUE!',
'Balance' => '平衡',
'BaseTime' => '#VALUE!',
'Bills' => '#VALUE!',
'Bonus' => '奖金',
'Business' => '商业',
'CIS' => '#VALUE!',
'CLV' => 'CLV.',
'Calendar' => '日历',
'City' => '城市',
'Client' => '客户',
'ClientID' => '#VALUE!',
'Clients' => '客户',
'ComparisonTime' => '#VALUE!',
'Contact' => '接触',
'Country' => '国家',
'Created' => '创造了',
'CreatedAt' => '#VALUE!',
'CreditRating' => '信用评级',
'Creditcard' => '信用卡',
'Customers' => '#VALUE!',
'DSO' => 'DSO',
'Date' => '日期',
'Default' => '默认',
'Delivery' => '交货',
'Discount' => '折扣',
'DiscountBonus' => '#VALUE!',
'DiscountP' => '折扣 ',
'Documents' => '文件',
'Due' => '到期的',
'Email' => '电子邮件',
'Europe' => '#VALUE!',
'Fax' => '传真',
'Files' => '文件',
'Filter' => '筛选',
'Freightage' => 'FRIGUTAGE.',
'Group' => '团体',
'ID' => 'ID',
'Info' => '信息',
'Invoice' => '发票',
'Invoices' => '发票',
'IsDefault' => '默认为默认情况下?',
'Items' => '#VALUE!',
'LastContact' => '最后联系人',
'LastOrder' => '最后的订单',
'Log' => '日志',
'Logs' => '日志',
'LostCustomers' => '#VALUE!',
'MRR' => 'MRR.',
'MTDSales' => 'MTD销售',
'Margin' => '利润',
'Messages' => '消息',
'Modified' => '修改的',
'Modules' => '模块',
'Name' => '名称',
'Name1' => '名称1',
'Name2' => '名称2.',
'Name3' => '名称3.',
'Net' => '网',
'NewCustomers' => '#VALUE!',
'Notes' => '笔记',
'Number' => '数字',
'Office' => '办公室',
'Other' => '#VALUE!',
'Payment' => '支付',
'PaymentTerm' => '付款期限',
'Permission' => '允许',
'Phone' => '电话',
'Postal' => '邮政',
'Price' => '价格',
'Prices' => '价格',
'Private' => '私人的',
'Productgroup' => '产品组',
'Profile' => '轮廓',
'Profit' => '#VALUE!',
'Purchase' => '购买',
'Quantity' => '数量',
'RecentInvoices' => '最近的发票',
'Region' => '#VALUE!',
'Rep' => '#VALUE!',
'Retention' => '#VALUE!',
'Sales' => '销售量',
'Segment' => '分割',
'Segments' => '段',
'Subtype' => '亚型',
'Support' => '支持',
'Tags' => '标签',
'Title' => '#VALUE!',
'Total' => '#VALUE!',
'TotalPrice' => '#VALUE!',
'Type' => '类型',
'UnitPrice' => '#VALUE!',
'Value' => '#VALUE!',
'Website' => '网站',
'Wire' => '金属丝',
'YTDSales' => 'ytd销售',
'Zip' => '压缩',
]];

View File

@ -0,0 +1,289 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\ClientManagement
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
/**
* @var \phpOMS\Views\View $this
*/
echo $this->getData('nav')->render(); ?>
<div class="tabview tab-2">
<div class="box">
<ul class="tab-links">
<li><label for="c-tab-1"><?= $this->getHtml('Profile'); ?></label></li>
<li><label for="c-tab-2"><?= $this->getHtml('Contact'); ?></label></li>
<li><label for="c-tab-3"><?= $this->getHtml('Addresses'); ?></label></li>
<li><label for="c-tab-4"><?= $this->getHtml('PaymentTerm'); ?></label></li>
<li><label for="c-tab-5"><?= $this->getHtml('Payment'); ?></label></li>
<li><label for="c-tab-6"><?= $this->getHtml('Prices'); ?></label></li>
<li><label for="c-tab-7"><?= $this->getHtml('AreaManager'); ?></label></li>
<li><label for="c-tab-8"><?= $this->getHtml('Files'); ?></label></li>
<li><label for="c-tab-9"><?= $this->getHtml('Logs'); ?></label>
</ul>
</div>
<div class="tab-content">
<input type="radio" id="c-tab-1" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-1' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6 col-lg-4">
<section class="box wf-100">
<header><h1><?= $this->getHtml('Client'); ?></h1></header>
<div class="inner">
<form>
<table class="layout wf-100">
<tr><td><label for="iId"><?= $this->getHtml('ID', '0', '0'); ?></label>
<tr><td><span class="input"><button type="button" formaction=""><i class="fa fa-book"></i></button><input type="number" id="iId" min="1" name="id" required></span>
<tr><td><label for="iName1"><?= $this->getHtml('Name1'); ?></label>
<tr><td><input type="text" id="iName1" name="name1" placeholder="&#xf040;" required>
<tr><td><label for="iName2"><?= $this->getHtml('Name2'); ?></label>
<tr><td><input type="text" id="iName2" name="name2" placeholder="&#xf040;">
<tr><td><label for="iName3"><?= $this->getHtml('Name3'); ?></label>
<tr><td><input type="text" id="iName3" name="name3" placeholder="&#xf040;">
<tr><td colspan="2"><input type="submit" value="<?= $this->getHtml('Create', '0', '0'); ?>" name="create-client">
</table>
</form>
</div>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-2" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-2' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6 col-lg-4">
<section class="box wf-100">
<header><h1><?= $this->getHtml('Contact'); ?></h1></header>
<div class="inner">
<form>
<table class="layout wf-100">
<tr><td><label for="iCType"><?= $this->getHtml('Type'); ?></label>
<tr><td><select id="iCType" name="actype">
<option><?= $this->getHtml('Email'); ?>
<option><?= $this->getHtml('Fax'); ?>
<option><?= $this->getHtml('Phone'); ?>
</select>
<tr><td><label for="iCStype"><?= $this->getHtml('Subtype'); ?></label>
<tr><td><select id="iCStype" name="acstype">
<option><?= $this->getHtml('Office'); ?>
<option><?= $this->getHtml('Sales'); ?>
<option><?= $this->getHtml('Purchase'); ?>
<option><?= $this->getHtml('Accounting'); ?>
<option><?= $this->getHtml('Support'); ?>
</select>
<tr><td><label for="iCInfo"><?= $this->getHtml('Info'); ?></label>
<tr><td><input type="text" id="iCInfo" name="cinfo">
<tr><td><label for="iCData"><?= $this->getHtml('Contact'); ?></label>
<tr><td><input type="text" id="iCData" name="cdata">
<tr><td colspan="2"><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>">
</table>
</form>
</div>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-3" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-3' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6 col-lg-4">
<section class="box wf-100">
<header><h1><?= $this->getHtml('Address'); ?></h1></header>
<div class="inner">
<form>
<table class="layout wf-100">
<tr><td><label for="iAType"><?= $this->getHtml('Type'); ?></label>
<tr><td><select id="iAType" name="atype">
<option><?= $this->getHtml('Default'); ?>
<option><?= $this->getHtml('Delivery'); ?>
<option><?= $this->getHtml('Invoice'); ?>
</select>
<tr><td><label for="iAddress"><?= $this->getHtml('Address'); ?></label>
<tr><td><input type="text" id="iAddress" name="address">
<tr><td><label for="iZip"><?= $this->getHtml('Zip'); ?></label>
<tr><td><input type="text" id="iZip" name="zip">
<tr><td><label for="iCountry"><?= $this->getHtml('Country'); ?></label>
<tr><td><input type="text" id="iCountry" name="country">
<tr><td><label for="iAInfo"><?= $this->getHtml('Info'); ?></label>
<tr><td><input type="text" id="iAInfo" name="ainfo">
<tr><td><span class="check"><input type="checkbox" id="iDefault" name="default" checked><label for="iDefault"><?= $this->getHtml('IsDefault'); ?></label></span>
<tr><td colspan="2"><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>">
</table>
</form>
</div>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-4" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-4' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6 col-lg-4">
<section class="box wf-100">
<header><h1><?= $this->getHtml('PaymentTerm'); ?></h1></header>
<div class="inner">
<form>
<table class="layout wf-100">
<tr><td><label for="iSource"><?= $this->getHtml('ID'); ?></label>
<tr><td><span class="input"><button type="button" formaction=""><i class="fa fa-book"></i></button><input id="iSource" name="source" type="text" placeholder=""></span>
<tr><td><label for="iSegment"><?= $this->getHtml('Segment'); ?></label>
<tr><td><input id="iSegment" name="segment" type="text" placeholder="">
<tr><td><label for="iProductgroup"><?= $this->getHtml('Productgroup'); ?></label>
<tr><td><input id="iProductgroup" name="productgroup" type="text" placeholder="">
<tr><td><label for="iGroup"><?= $this->getHtml('Group'); ?></label>
<tr><td><input id="iGroup" name="group" type="text" placeholder="">
<tr><td><label for="iArticlegroup"><?= $this->getHtml('Articlegroup'); ?></label>
<tr><td><input id="iArticlegroup" name="articlegroup" type="text" placeholder="">
<tr><td><label for="iTerm"><?= $this->getHtml('Type'); ?></label>
<tr><td><select id="iTerm" name="term" required>
<option>
</select>
<tr><td><span class="check"><input type="checkbox" id="iFreightage" name="freightage"><label for="iFreightage"><?= $this->getHtml('Freightage'); ?></label></span>
<tr><td colspan="2"><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>">
</table>
</form>
</div>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-5" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-5' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6 col-lg-4">
<section class="box wf-100">
<header><h1><?= $this->getHtml('Payment'); ?></h1></header>
<div class="inner">
<form>
<table class="layout wf-100">
<tr><td><label for="iACType"><?= $this->getHtml('Type'); ?></label>
<tr><td><select id="iACType" name="actype">
<option><?= $this->getHtml('Wire'); ?>
<option><?= $this->getHtml('Creditcard'); ?>
</select>
<tr><td colspan="2"><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>">
</table>
</form>
</div>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-6" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-6' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6 col-lg-4">
<section class="box wf-100">
<header><h1><?= $this->getHtml('Price'); ?></h1></header>
<div class="inner">
<form action="<?= \phpOMS\Uri\UriFactory::build('{/api}...'); ?>" method="post">
<table class="layout wf-100">
<tbody>
<tr><td colspan="2"><label for="iPType"><?= $this->getHtml('Type'); ?></label>
<tr><td><select id="iPType" name="ptye">
<option>
</select><td>
<tr><td><label for="iSource"><?= $this->getHtml('ID'); ?></label>
<tr><td><span class="input"><button type="button" formaction=""><i class="fa fa-book"></i></button><input id="iSource" name="source" type="text" placeholder=""></span>
<tr><td><label for="iSegment"><?= $this->getHtml('Segment'); ?></label>
<tr><td><input id="iSegment" name="segment" type="text" placeholder="">
<tr><td><label for="iProductgroup"><?= $this->getHtml('Productgroup'); ?></label>
<tr><td><input id="iProductgroup" name="productgroup" type="text" placeholder="">
<tr><td><label for="iGroup"><?= $this->getHtml('Group'); ?></label>
<tr><td><input id="iGroup" name="group" type="text" placeholder="">
<tr><td><label for="iArticlegroup"><?= $this->getHtml('Articlegroup'); ?></label>
<tr><td><input id="iArticlegroup" name="articlegroup" type="text" placeholder="">
<tr><td><label for="iPQuantity"><?= $this->getHtml('Quantity'); ?></label>
<tr><td><input id="iPQuantity" name="quantity" type="text" placeholder=""><td>
<tr><td><label for="iPrice"><?= $this->getHtml('Price'); ?></label>
<tr><td><input id="iPrice" name="price" type="number" step="any" min="0" placeholder=""><td>
<tr><td><label for="iDiscount"><?= $this->getHtml('Discount'); ?></label>
<tr><td><input id="iDiscount" name="discount" type="number" step="any" min="0" placeholder=""><td>
<tr><td><label for="iDiscount"><?= $this->getHtml('DiscountP'); ?></label>
<tr><td><input id="iDiscountP" name="discountp" type="number" step="any" min="0" placeholder=""><td>
<tr><td><label for="iBonus"><?= $this->getHtml('Bonus'); ?></label>
<tr><td><input id="iBonus" name="bonus" type="number" step="any" min="0" placeholder=""><td>
<tr><td><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>">
</table>
</form>
</div>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-7" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-7' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6 col-lg-4">
<section class="box wf-100">
<header><h1><?= $this->getHtml('AreaManager'); ?></h1></header>
<div class="inner">
<form action="<?= \phpOMS\Uri\UriFactory::build('{/api}...'); ?>" method="post">
<table class="layout wf-100">
<tbody>
<tr><td><label for="iManager"><?= $this->getHtml('AreaManager'); ?></label>
<tr><td><span class="input"><button type="button" formaction=""><i class="fa fa-book"></i></button><input id="iManager" name="source" type="text" placeholder=""></span>
<tr><td><label for="iSource"><?= $this->getHtml('ID'); ?></label>
<tr><td><span class="input"><button type="button" formaction=""><i class="fa fa-book"></i></button><input id="iSource" name="source" type="text" placeholder=""></span>
<tr><td><label for="iSegment"><?= $this->getHtml('Segment'); ?></label>
<tr><td><input id="iSegment" name="segment" type="text" placeholder="">
<tr><td><label for="iProductgroup"><?= $this->getHtml('Productgroup'); ?></label>
<tr><td><input id="iProductgroup" name="productgroup" type="text" placeholder="">
<tr><td><label for="iGroup"><?= $this->getHtml('Group'); ?></label>
<tr><td><input id="iGroup" name="group" type="text" placeholder="">
<tr><td><label for="iArticlegroup"><?= $this->getHtml('Articlegroup'); ?></label>
<tr><td><input id="iArticlegroup" name="articlegroup" type="text" placeholder="">
<tr><td><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>">
</table>
</form>
</div>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-8" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-8' ? ' checked' : ''; ?>>
<div class="tab">
</div>
<input type="radio" id="c-tab-9" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-9' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12">
<?php
$footerView = new \phpOMS\Views\PaginationView($this->l11nManager, $this->request, $this->response);
$footerView->setTemplate('/Web/Templates/Lists/Footer/PaginationBig');
$footerView->setPages(20);
$footerView->setPage(1);
?>
<div class="box wf-100">
<table class="default">
<caption><?= $this->getHtml('Logs'); ?><i class="fa fa-download floatRight download btn"></i></caption>
<thead>
<tr>
<td>IP
<td><?= $this->getHtml('ID', '0', '0'); ?>
<td><?= $this->getHtml('Name'); ?>
<td class="wf-100"><?= $this->getHtml('Log'); ?>
<td><?= $this->getHtml('Date'); ?>
<tbody>
<tr>
<td><?= $this->printHtml($this->request->getOrigin()); ?>
<td><?= $this->printHtml((string) $this->request->header->account); ?>
<td><?= $this->printHtml((string) $this->request->header->account); ?>
<td>Creating customer
<td><?= $this->printHtml((new \DateTime('now'))->format('Y-m-d H:i:s')); ?>
</table>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,128 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\ClientManagement
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
use Modules\Media\Models\NullMedia;
use phpOMS\Uri\UriFactory;
/** @var \phpOMS\Views\View $this */
$clients = $this->getData('client');
echo $this->getData('nav')->render(); ?>
<div class="row">
<div class="col-xs-12">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Clients'); ?><i class="fa fa-download floatRight download btn"></i></div>
<div class="slider">
<table id="iSalesClientList" class="default sticky">
<thead>
<tr>
<td>
<td><?= $this->getHtml('ID', '0', '0'); ?>
<label for="iSalesClientList-sort-1">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-1">
<i class="sort-asc fa fa-chevron-up"></i>
</label>
<label for="iSalesClientList-sort-2">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-2">
<i class="sort-desc fa fa-chevron-down"></i>
</label>
<label>
<i class="filter fa fa-filter"></i>
</label>
<td class="wf-100"><?= $this->getHtml('Name'); ?>
<label for="iSalesClientList-sort-3">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-3">
<i class="sort-asc fa fa-chevron-up"></i>
</label>
<label for="iSalesClientList-sort-4">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-4">
<i class="sort-desc fa fa-chevron-down"></i>
</label>
<label>
<i class="filter fa fa-filter"></i>
</label>
<td><?= $this->getHtml('City'); ?>
<label for="iSalesClientList-sort-5">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-5">
<i class="sort-asc fa fa-chevron-up"></i>
</label>
<label for="iSalesClientList-sort-6">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-6">
<i class="sort-desc fa fa-chevron-down"></i>
</label>
<label>
<i class="filter fa fa-filter"></i>
</label>
<td><?= $this->getHtml('Zip'); ?>
<label for="iSalesClientList-sort-7">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-7">
<i class="sort-asc fa fa-chevron-up"></i>
</label>
<label for="iSalesClientList-sort-8">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-8">
<i class="sort-desc fa fa-chevron-down"></i>
</label>
<label>
<i class="filter fa fa-filter"></i>
</label>
<td><?= $this->getHtml('Address'); ?>
<label for="iSalesClientList-sort-9">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-9">
<i class="sort-asc fa fa-chevron-up"></i>
</label>
<label for="iSalesClientList-sort-10">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-10">
<i class="sort-desc fa fa-chevron-down"></i>
</label>
<label>
<i class="filter fa fa-filter"></i>
</label>
<td><?= $this->getHtml('Country'); ?>
<label for="iSalesClientList-sort-11">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-11">
<i class="sort-asc fa fa-chevron-up"></i>
</label>
<label for="iSalesClientList-sort-12">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-12">
<i class="sort-desc fa fa-chevron-down"></i>
</label>
<label>
<i class="filter fa fa-filter"></i>
</label>
<tbody>
<?php $count = 0; foreach ($clients as $key => $value) : ++$count;
$url = UriFactory::build('{/lang}/{/app}/sales/client/profile?{?}&id=' . $value->getId());
$image = $value->getFileByTypeName('client_profile_image');
?>
<tr data-href="<?= $url; ?>">
<td><a href="<?= $url; ?>"><img alt="<?= $this->getHtml('IMG_alt_client'); ?>" width="30" loading="lazy" class="item-image"
src="<?= $image instanceof NullMedia ?
UriFactory::build('Web/Backend/img/user_default_' . \mt_rand(1, 6) .'.png') :
UriFactory::build('{/lang}/{/app}/' . $image->getPath()); ?>"></a>
<td data-label="<?= $this->getHtml('ID', '0', '0'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->number); ?></a>
<td data-label="<?= $this->getHtml('Name'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->profile->account->name1); ?> <?= $this->printHtml($value->profile->account->name2); ?></a>
<td data-label="<?= $this->getHtml('City'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->mainAddress->city); ?></a>
<td data-label="<?= $this->getHtml('Zip'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->mainAddress->postal); ?></a>
<td data-label="<?= $this->getHtml('Address'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->mainAddress->address); ?></a>
<td data-label="<?= $this->getHtml('Country'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->mainAddress->getCountry()); ?></a>
<?php endforeach; ?>
<?php if ($count === 0) : ?>
<tr><td colspan="8" class="empty"><?= $this->getHtml('Empty', '0', '0'); ?>
<?php endif; ?>
</table>
</div>
</section>
</div>
</div>

View File

@ -0,0 +1,618 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\ClientManagement
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
use Modules\Profile\Models\ContactType;
use phpOMS\Uri\UriFactory;
$countryCodes = \phpOMS\Localization\ISO3166TwoEnum::getConstants();
$countries = \phpOMS\Localization\ISO3166NameEnum::getConstants();
/**
* @var \Modules\ClientManagement\Models\Client $client
*/
$client = $this->getData('client');
$notes = $client->getNotes();
$files = $client->getFiles();
$newestInvoices = $this->getData('newestInvoices') ?? [];
$monthlySalesCosts = $this->getData('monthlySalesCosts') ?? [];
/**
* @var \phpOMS\Views\View $this
*/
echo $this->getData('nav')->render();
?>
<div class="tabview tab-2">
<div class="box">
<ul class="tab-links">
<li><label for="c-tab-1"><?= $this->getHtml('Profile'); ?></label></li>
<li><label for="c-tab-3"><?= $this->getHtml('Addresses'); ?></label></li>
<li><label for="c-tab-5"><?= $this->getHtml('Payment'); ?></label></li>
<li><label for="c-tab-6"><?= $this->getHtml('Prices'); ?></label></li>
<li><label for="c-tab-7"><?= $this->getHtml('Attributes'); ?></label></li>
<li><label for="c-tab-8"><?= $this->getHtml('Files'); ?></label></li>
<li><label for="c-tab-9"><?= $this->getHtml('Invoices'); ?></label>
<li><label for="c-tab-10"><?= $this->getHtml('Articles'); ?></label>
<li><label for="c-tab-11"><?= $this->getHtml('Messages'); ?></label><!-- incl. support -->
<li><label for="c-tab-11"><?= $this->getHtml('Accounting'); ?></label>
<li><label for="c-tab-11"><?= $this->getHtml('Notes'); ?></label>
<li><label for="c-tab-11"><?= $this->getHtml('Tags'); ?></label>
<li><label for="c-tab-11"><?= $this->getHtml('Calendar'); ?></label>
<li><label for="c-tab-11"><?= $this->getHtml('Permission'); ?></label>
<li><label for="c-tab-12"><?= $this->getHtml('Logs'); ?></label>
</ul>
</div>
<div class="tab-content">
<input type="radio" id="c-tab-1" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-1' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-lg-3 last-lg">
<section class="portlet">
<form>
<div class="portlet-body">
<table class="layout wf-100">
<tr><td><label for="iId"><?= $this->getHtml('ID', '0', '0'); ?></label>
<tr><td><span class="input"><button type="button" formaction=""><i class="fa fa-book"></i></button><input type="number" id="iId" min="1" name="id" value="<?= $this->printHtml($client->number); ?>" disabled></span>
<tr><td><label for="iName1"><?= $this->getHtml('Name1'); ?></label>
<tr><td><input type="text" id="iName1" name="name1" value="<?= $this->printHtml($client->profile->account->name1); ?>" required>
<tr><td><label for="iName2"><?= $this->getHtml('Name2'); ?></label>
<tr><td><input type="text" id="iName2" name="name2" value="<?= $this->printHtml($client->profile->account->name2); ?>">
<tr><td><label for="iName3"><?= $this->getHtml('Name3'); ?></label>
<tr><td><input type="text" id="iName3" name="name3" value="<?= $this->printHtml($client->profile->account->name3); ?>">
</table>
</div>
<div class="portlet-foot">
<input type="submit" value="<?= $this->getHtml('Save', '0', '0'); ?>" name="save-client-profile"> <input type="submit" value="<?= $this->getHtml('Delete', '0', '0'); ?>" name="delete-client-profile">
</div>
</form>
</section>
<section class="portlet">
<div class="portlet-head">
<?= $this->getHtml('Contact'); ?>
<a class="floatRight" href=""><i class="fa fa-envelope-o btn"></i></a>
</div>
<div class="portlet-body">
<table class="layout wf-100">
<tr><td><label for="iName1"><?= $this->getHtml('Phone'); ?></label>
<tr><td><input type="text" id="iName1" name="name1" value="<?= $this->printHtml($client->getMainContactElement(ContactType::PHONE)->content); ?>">
<tr><td><label for="iName1"><?= $this->getHtml('Email'); ?></label>
<tr><td><input type="text" id="iName1" name="name1" value="<?= $this->printHtml($client->getMainContactElement(ContactType::EMAIL)->content); ?>">
<tr><td><label for="iName1"><?= $this->getHtml('Website'); ?></label>
<tr><td><input type="text" id="iName1" name="name1" value="<?= $this->printHtml($client->getMainContactElement(ContactType::WEBSITE)->content); ?>">
</table>
</div>
</section>
<section class="portlet">
<div class="portlet-head">
<?= $this->getHtml('Address'); ?>
<span class="clickPopup floatRight">
<label for="addressDropdown"><i class="fa fa-print btn"></i></label>
<input id="addressDropdown" name="addressDropdown" type="checkbox">
<div class="popup">
<ul>
<li>
<input id="id1" type="checkbox">
<ul>
<li>
<label for="id1">
<a href="" class="button">Word</a>
<span></span>
<i class="fa fa-chevron-right expand"></i>
</label>
<li>Letter
</ul>
<li><label class="button cancel" for="addressDropdown">Cancel</label>
</ul>
</div>
</span>
</div>
<div class="portlet-body">
<table class="layout wf-100">
<?php if (!empty($client->mainAddress->addition)) : ?>
<tr><td><label for="iName1"><?= $this->getHtml('Addition'); ?></label>
<tr><td><input type="text" id="iName1" name="name1" value="<?= $this->printHtml($client->mainAddress->addition); ?>">
<?php endif; ?>
<tr><td><label for="iName1"><?= $this->getHtml('Address'); ?></label>
<tr><td><input type="text" id="iName1" name="name1" value="<?= $this->printHtml($client->mainAddress->address); ?>" required>
<tr><td><label for="iName1"><?= $this->getHtml('Postal'); ?></label>
<tr><td><input type="text" id="iName1" name="name1" value="<?= $this->printHtml($client->mainAddress->postal); ?>" required>
<tr><td><label for="iName1"><?= $this->getHtml('City'); ?></label>
<tr><td><input type="text" id="iName1" name="name1" value="<?= $this->printHtml($client->mainAddress->city); ?>" required>
<tr><td><label for="iName1"><?= $this->getHtml('Country'); ?></label>
<tr><td><select name="country">
<?php foreach ($countryCodes as $code3 => $code2) : ?>
<option value="<?= $this->printHtml($code2); ?>"<?= $this->printHtml($code2 === $client->mainAddress->getCountry() ? ' selected' : ''); ?>><?= $this->printHtml($countries[$code3]); ?>
<?php endforeach; ?>
</select>
<tr><td>
<?php if (\is_file(__DIR__ . '/../../../../phpOMS/Localization/Maps/svg/' . \strtolower($client->mainAddress->getCountry()) . '.svg')) : ?>
<img alt="<?= $this->getHtml('IMG_alt_map'); ?>" id="iMap" style="width: 100%;" src="<?= UriFactory::build('phpOMS/Localization/Maps/svg/' . \strtolower($client->mainAddress->getCountry()) . '.svg'); ?>">
<?php endif; ?>
</table>
</div>
</section>
<section class="portlet highlight-4">
<div class="portlet-body">
<textarea class="undecorated"><?= $this->printHtml($client->info); ?></textarea>
</div>
</section>
</div>
<div class="col-xs-12 col-lg-9 plain-grid">
<div class="row">
<div class="col-xs-12 col-lg-4">
<section class="portlet highlight-1">
<div class="portlet-body">
<table class="wf-100">
<tr><td><?= $this->getHtml('YTDSales'); ?>:
<td>
<tr><td><?= $this->getHtml('MTDSales'); ?>:
<td>
<tr><td><?= $this->getHtml('CLV'); ?>:
<td>
<tr><td><?= $this->getHtml('MRR'); ?>:
<td>
</table>
</div>
</section>
</div>
<div class="col-xs-12 col-lg-4">
<section class="portlet highlight-2">
<div class="portlet-body">
<table class="wf-100">
<tr><td><?= $this->getHtml('LastContact'); ?>:
<td>
<tr><td><?= $this->getHtml('LastOrder'); ?>:
<td>
<tr><td><?= $this->getHtml('Created'); ?>:
<td>
<tr><td><?= $this->getHtml('Modified'); ?>:
<td>
</table>
</div>
</section>
</div>
<div class="col-xs-12 col-lg-4">
<section class="portlet highlight-3">
<div class="portlet-body">
<table class="wf-100">
<tr><td><?= $this->getHtml('DSO'); ?>:
<td>
<tr><td><?= $this->getHtml('Due'); ?>:
<td>
<tr><td><?= $this->getHtml('Balance'); ?>:
<td>
<tr><td><?= $this->getHtml('CreditRating'); ?>:
<td>
</table>
</div>
</section>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-md-6">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Notes'); ?></div>
<div class="slider">
<table id="iNotesItemList" class="default">
<thead>
<tr>
<td class="wf-100"><?= $this->getHtml('Title'); ?>
<td><?= $this->getHtml('CreatedAt'); ?>
<tbody>
<?php foreach ($notes as $note) :
$url = UriFactory::build('{/lang}/{/app}/editor/single?{?}&id=' . $note->getId());
?>
<tr data-href="<?= $url; ?>">
<td><a href="<?= $url; ?>"><?= $note->title; ?></a>
<td><a href="<?= $url; ?>"><?= $note->createdAt->format('Y-m-d'); ?></a>
<?php endforeach; ?>
</table>
</div>
</section>
</div>
<div class="col-xs-12 col-md-6">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Documents'); ?></div>
<div class="slider">
<table id="iFilesClientList" class="default">
<thead>
<tr>
<td class="wf-100"><?= $this->getHtml('Title'); ?>
<td>
<td><?= $this->getHtml('CreatedAt'); ?>
<tbody>
<?php foreach ($files as $file) :
$url = UriFactory::build('{/lang}/{/app}/media/single?{?}&id=' . $file->getId());
?>
<tr data-href="<?= $url; ?>">
<td><a href="<?= $url; ?>"><?= $file->name; ?></a>
<td><a href="<?= $url; ?>"><?= $file->extension; ?></a>
<td><a href="<?= $url; ?>"><?= $file->createdAt->format('Y-m-d'); ?></a>
<?php endforeach; ?>
</table>
</div>
</section>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('RecentInvoices'); ?></div>
<table id="iSalesItemList" class="default">
<thead>
<tr>
<td><?= $this->getHtml('Number'); ?>
<td><?= $this->getHtml('Type'); ?>
<td class="wf-100"><?= $this->getHtml('Name'); ?>
<td><?= $this->getHtml('Net'); ?>
<td><?= $this->getHtml('Date'); ?>
<tbody>
<?php
/** @var \Modules\Billing\Models\Bill $invoice */
foreach ($newestInvoices as $invoice) :
$url = UriFactory::build('{/lang}/{/app}/sales/bill?{?}&id=' . $invoice->getId());
?>
<tr data-href="<?= $url; ?>">
<td><a href="<?= $url; ?>"><?= $invoice->getNumber(); ?></a>
<td><a href="<?= $url; ?>"><?= $invoice->type->getL11n(); ?></a>
<td><a href="<?= $url; ?>"><?= $invoice->billTo; ?></a>
<td><a href="<?= $url; ?>"><?= $invoice->netSales->getCurrency(); ?></a>
<td><a href="<?= $url; ?>"><?= $invoice->createdAt->format('Y-m-d'); ?></a>
<?php endforeach; ?>
</table>
</section>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-md-6">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Segments'); ?></div>
<div class="portlet-body"></div>
</section>
</div>
<div class="col-xs-12 col-lg-6">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Sales'); ?></div>
<div class="portlet-body">
<canvas id="sales-region" data-chart='{
"type": "bar",
"data": {
"labels": [
<?php
$temp = [];
foreach ($monthlySalesCosts as $monthly) {
$temp[] = $monthly['month'] . '/' . \substr((string) $monthly['year'], -2);
}
?>
<?= '"' . \implode('", "', $temp) . '"'; ?>
],
"datasets": [
{
"label": "<?= $this->getHtml('Margin'); ?>",
"type": "line",
"data": [
<?php
$temp = [];
foreach ($monthlySalesCosts as $monthly) {
$temp[] = \round(((((int) $monthly['net_sales']) - ((int) $monthly['net_costs'])) / ((int) $monthly['net_sales'])) * 100, 2);
}
?>
<?= \implode(',', $temp); ?>
],
"yAxisID": "axis-2",
"fill": false,
"borderColor": "rgb(255, 99, 132)",
"backgroundColor": "rgb(255, 99, 132)"
},
{
"label": "<?= $this->getHtml('Sales'); ?>",
"type": "bar",
"data": [
<?php
$temp = [];
foreach ($monthlySalesCosts as $monthly) {
$temp[] = ((int) $monthly['net_sales']) / 1000;
}
?>
<?= \implode(',', $temp); ?>
],
"yAxisID": "axis-1",
"backgroundColor": "rgb(54, 162, 235)"
}
]
},
"options": {
"scales": {
"yAxes": [
{
"id": "axis-1",
"display": true,
"position": "left"
},
{
"id": "axis-2",
"display": true,
"position": "right",
"scaleLabel": {
"display": true,
"labelString": "<?= $this->getHtml('Margin'); ?> %"
},
"gridLines": {
"display": false
},
"beginAtZero": true,
"ticks": {
"min": 0,
"max": 100,
"stepSize": 10
}
}
]
}
}
}'></canvas>
</div>
</section>
</div>
</div>
</div>
</div>
</div>
<input type="radio" id="c-tab-3" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-3' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6 col-lg-4">
<section class="box wf-100">
<header><h1><?= $this->getHtml('Address'); ?></h1></header>
<div class="inner">
<form>
<table class="layout wf-100">
<tr><td><label for="iAType"><?= $this->getHtml('Type'); ?></label>
<tr><td><select id="iAType" name="atype">
<option><?= $this->getHtml('Default'); ?>
<option><?= $this->getHtml('Delivery'); ?>
<option><?= $this->getHtml('Invoice'); ?>
</select>
<tr><td><label for="iAddress"><?= $this->getHtml('Address'); ?></label>
<tr><td><input type="text" id="iAddress" name="address">
<tr><td><label for="iZip"><?= $this->getHtml('Zip'); ?></label>
<tr><td><input type="text" id="iZip" name="zip">
<tr><td><label for="iCountry"><?= $this->getHtml('Country'); ?></label>
<tr><td><input type="text" id="iCountry" name="country">
<tr><td><label for="iAInfo"><?= $this->getHtml('Info'); ?></label>
<tr><td><input type="text" id="iAInfo" name="ainfo">
<tr><td><span class="check"><input type="checkbox" id="iDefault" name="default" checked><label for="iDefault"><?= $this->getHtml('IsDefault'); ?></label></span>
<tr><td colspan="2"><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>">
</table>
</form>
</div>
</section>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-md-6 col-lg-4">
<section class="box wf-100">
<header><h1><?= $this->getHtml('Contact'); ?></h1></header>
<div class="inner">
<form>
<table class="layout wf-100">
<tr><td><label for="iCType"><?= $this->getHtml('Type'); ?></label>
<tr><td><select id="iCType" name="actype">
<option><?= $this->getHtml('Email'); ?>
<option><?= $this->getHtml('Fax'); ?>
<option><?= $this->getHtml('Phone'); ?>
</select>
<tr><td><label for="iCStype"><?= $this->getHtml('Subtype'); ?></label>
<tr><td><select id="iCStype" name="acstype">
<option><?= $this->getHtml('Office'); ?>
<option><?= $this->getHtml('Sales'); ?>
<option><?= $this->getHtml('Purchase'); ?>
<option><?= $this->getHtml('Accounting'); ?>
<option><?= $this->getHtml('Support'); ?>
</select>
<tr><td><label for="iCInfo"><?= $this->getHtml('Info'); ?></label>
<tr><td><input type="text" id="iCInfo" name="cinfo">
<tr><td><label for="iCData"><?= $this->getHtml('Contact'); ?></label>
<tr><td><input type="text" id="iCData" name="cdata">
<tr><td colspan="2"><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>">
</table>
</form>
</div>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-5" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-5' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6 col-lg-4">
<section class="box wf-100">
<header><h1><?= $this->getHtml('Payment'); ?></h1></header>
<div class="inner">
<form>
<table class="layout wf-100">
<tr><td><label for="iACType"><?= $this->getHtml('Type'); ?></label>
<tr><td><select id="iACType" name="actype">
<option><?= $this->getHtml('Wire'); ?>
<option><?= $this->getHtml('Creditcard'); ?>
</select>
<tr><td colspan="2"><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>">
</table>
</form>
</div>
</section>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-md-6 col-lg-4">
<section class="box wf-100">
<header><h1><?= $this->getHtml('PaymentTerm'); ?></h1></header>
<div class="inner">
<form>
<table class="layout wf-100">
<tr><td><label for="iSource"><?= $this->getHtml('ID'); ?></label>
<tr><td><span class="input"><button type="button" formaction=""><i class="fa fa-book"></i></button><input id="iSource" name="source" type="text" placeholder=""></span>
<tr><td><label for="iSegment"><?= $this->getHtml('Segment'); ?></label>
<tr><td><input id="iSegment" name="segment" type="text" placeholder="">
<tr><td><label for="iProductgroup"><?= $this->getHtml('Productgroup'); ?></label>
<tr><td><input id="iProductgroup" name="productgroup" type="text" placeholder="">
<tr><td><label for="iGroup"><?= $this->getHtml('Group'); ?></label>
<tr><td><input id="iGroup" name="group" type="text" placeholder="">
<tr><td><label for="iArticlegroup"><?= $this->getHtml('Articlegroup'); ?></label>
<tr><td><input id="iArticlegroup" name="articlegroup" type="text" placeholder="">
<tr><td><label for="iTerm"><?= $this->getHtml('Type'); ?></label>
<tr><td><select id="iTerm" name="term" required>
<option>
</select>
<tr><td><span class="check"><input type="checkbox" id="iFreightage" name="freightage"><label for="iFreightage"><?= $this->getHtml('Freightage'); ?></label></span>
<tr><td colspan="2"><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>">
</table>
</form>
</div>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-6" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-6' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6 col-lg-4">
<section class="box wf-100">
<header><h1><?= $this->getHtml('Price'); ?></h1></header>
<div class="inner">
<form action="<?= UriFactory::build('{/api}...'); ?>" method="post">
<table class="layout wf-100">
<tbody>
<tr><td colspan="2"><label for="iPType"><?= $this->getHtml('Type'); ?></label>
<tr><td><select id="iPType" name="ptye">
<option>
</select><td>
<tr><td><label for="iSource"><?= $this->getHtml('ID'); ?></label>
<tr><td><span class="input"><button type="button" formaction=""><i class="fa fa-book"></i></button><input id="iSource" name="source" type="text" placeholder=""></span>
<tr><td><label for="iSegment"><?= $this->getHtml('Segment'); ?></label>
<tr><td><input id="iSegment" name="segment" type="text" placeholder="">
<tr><td><label for="iProductgroup"><?= $this->getHtml('Productgroup'); ?></label>
<tr><td><input id="iProductgroup" name="productgroup" type="text" placeholder="">
<tr><td><label for="iGroup"><?= $this->getHtml('Group'); ?></label>
<tr><td><input id="iGroup" name="group" type="text" placeholder="">
<tr><td><label for="iArticlegroup"><?= $this->getHtml('Articlegroup'); ?></label>
<tr><td><input id="iArticlegroup" name="articlegroup" type="text" placeholder="">
<tr><td><label for="iPQuantity"><?= $this->getHtml('Quantity'); ?></label>
<tr><td><input id="iPQuantity" name="quantity" type="text" placeholder=""><td>
<tr><td><label for="iPrice"><?= $this->getHtml('Price'); ?></label>
<tr><td><input id="iPrice" name="price" type="number" step="any" min="0" placeholder=""><td>
<tr><td><label for="iDiscount"><?= $this->getHtml('Discount'); ?></label>
<tr><td><input id="iDiscount" name="discount" type="number" step="any" min="0" placeholder=""><td>
<tr><td><label for="iDiscount"><?= $this->getHtml('DiscountP'); ?></label>
<tr><td><input id="iDiscountP" name="discountp" type="number" step="any" min="0" placeholder=""><td>
<tr><td><label for="iBonus"><?= $this->getHtml('Bonus'); ?></label>
<tr><td><input id="iBonus" name="bonus" type="number" step="any" min="0" placeholder=""><td>
<tr><td><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>">
</table>
</form>
</div>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-7" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-7' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6 col-lg-4">
<section class="box wf-100">
<header><h1><?= $this->getHtml('AreaManager'); ?></h1></header>
<div class="inner">
<form action="<?= UriFactory::build('{/api}...'); ?>" method="post">
<table class="layout wf-100">
<tbody>
<tr><td><label for="iManager"><?= $this->getHtml('AreaManager'); ?></label>
<tr><td><span class="input"><button type="button" formaction=""><i class="fa fa-book"></i></button><input id="iManager" name="source" type="text" placeholder=""></span>
<tr><td><label for="iSource"><?= $this->getHtml('ID'); ?></label>
<tr><td><span class="input"><button type="button" formaction=""><i class="fa fa-book"></i></button><input id="iSource" name="source" type="text" placeholder=""></span>
<tr><td><label for="iSegment"><?= $this->getHtml('Segment'); ?></label>
<tr><td><input id="iSegment" name="segment" type="text" placeholder="">
<tr><td><label for="iProductgroup"><?= $this->getHtml('Productgroup'); ?></label>
<tr><td><input id="iProductgroup" name="productgroup" type="text" placeholder="">
<tr><td><label for="iGroup"><?= $this->getHtml('Group'); ?></label>
<tr><td><input id="iGroup" name="group" type="text" placeholder="">
<tr><td><label for="iArticlegroup"><?= $this->getHtml('Articlegroup'); ?></label>
<tr><td><input id="iArticlegroup" name="articlegroup" type="text" placeholder="">
<tr><td><input type="submit" value="<?= $this->getHtml('Add', '0', '0'); ?>">
</table>
</form>
</div>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-8" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-8' ? ' checked' : ''; ?>>
<div class="tab">
</div>
<input type="radio" id="c-tab-9" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-9' ? ' checked' : ''; ?>>
<div class="tab">
<?php include __DIR__ . '/client-profile-bills.tpl.php'; ?>
</div>
<input type="radio" id="c-tab-10" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-9' ? ' checked' : ''; ?>>
<div class="tab">
<?php include __DIR__ . '/client-profile-items.tpl.php'; ?>
</div>
<input type="radio" id="c-tab-11" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-10' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12">
<?php
$footerView = new \phpOMS\Views\PaginationView($this->l11nManager, $this->request, $this->response);
$footerView->setTemplate('/Web/Templates/Lists/Footer/PaginationBig');
$footerView->setPages(20);
$footerView->setPage(1);
?>
<div class="box wf-100">
<table class="default">
<caption><?= $this->getHtml('Logs'); ?><i class="fa fa-download floatRight download btn"></i></caption>
<thead>
<tr>
<td>IP
<td><?= $this->getHtml('ID', '0', '0'); ?>
<td><?= $this->getHtml('Name'); ?>
<td class="wf-100"><?= $this->getHtml('Log'); ?>
<td><?= $this->getHtml('Date'); ?>
<tfoot>
<tr>
<td colspan="6">
<tbody>
<tr>
<td><?= $this->printHtml($this->request->getOrigin()); ?>
<td><?= $this->printHtml((string) $this->request->header->account); ?>
<td><?= $this->printHtml((string) $this->request->header->account); ?>
<td>Creating customer
<td><?= $this->printHtml((new \DateTime('now'))->format('Y-m-d H:i:s')); ?>
</table>
</div>
</div>
</div>
</div>
</div>
</div>

20
composer.json Executable file
View File

@ -0,0 +1,20 @@
{
"name": "karaka/module",
"description": "Module 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

49
info.json Executable file
View File

@ -0,0 +1,49 @@
{
"name": {
"id": 1003500000,
"internal": "FleetManagement",
"external": "Fleet Management"
},
"category": "Fleet",
"version": "1.0.0",
"requirements": {
"phpOMS": "1.0.0",
"phpOMS-db": "1.0.0"
},
"creator": {
"name": "Karaka",
"website": "jingga.app"
},
"description": "The buisness module.",
"directory": "FleetManagement",
"dependencies": {
"Admin": "1.0.0",
"Profile": "1.0.0",
"Media": "1.0.0",
"Editor": "1.0.0"
},
"providing": {
"Navigation": "*",
"Media": "*"
},
"load": [
{
"pid": [
"/fleet"
],
"type": 4,
"for": 0,
"from": "FleetManagement",
"file": "FleetManagement"
},
{
"pid": [
"/"
],
"type": 5,
"from": "FleetManagement",
"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\FleetManagement\tests\Admin;
/**
* @internal
*/
final class AdminTest extends \PHPUnit\Framework\TestCase
{
protected const NAME = 'FleetManagement';
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();

View File

@ -0,0 +1,88 @@
<?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\FleetManagement\tests\Controller;
use Model\CoreSettings;
use Modules\Admin\Models\AccountPermission;
use phpOMS\Account\Account;
use phpOMS\Account\AccountManager;
use phpOMS\Account\PermissionType;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\DataStorage\Session\HttpSession;
use phpOMS\Dispatcher\Dispatcher;
use phpOMS\Event\EventManager;
use phpOMS\Module\ModuleAbstract;
use phpOMS\Module\ModuleManager;
use phpOMS\Router\WebRouter;
use phpOMS\Utils\TestUtils;
/**
* @testdox Modules\FleetManagement\tests\Controller\ApiControllerTest: FleetManagement api controller
*
* @internal
*/
final class ApiControllerTest extends \PHPUnit\Framework\TestCase
{
protected ApplicationAbstract $app;
/**
* @var \Modules\FleetManagement\Controller\ApiController
*/
protected ModuleAbstract $module;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->app = new class() extends ApplicationAbstract
{
protected string $appName = 'Api';
};
$this->app->dbPool = $GLOBALS['dbpool'];
$this->app->unitId = 1;
$this->app->accountManager = new AccountManager($GLOBALS['session']);
$this->app->appSettings = new CoreSettings();
$this->app->moduleManager = new ModuleManager($this->app, __DIR__ . '/../../../../Modules/');
$this->app->dispatcher = new Dispatcher($this->app);
$this->app->eventManager = new EventManager($this->app->dispatcher);
$this->app->eventManager->importFromFile(__DIR__ . '/../../../../Web/Api/Hooks.php');
$this->app->sessionManager = new HttpSession(36000);
$account = new Account();
TestUtils::setMember($account, 'id', 1);
$permission = new AccountPermission();
$permission->setUnit(1);
$permission->setApp('backend');
$permission->setPermission(
PermissionType::READ
| PermissionType::CREATE
| PermissionType::MODIFY
| PermissionType::DELETE
| PermissionType::PERMISSION
);
$account->addPermission($permission);
$this->app->accountManager->add($account);
$this->app->router = new WebRouter();
$this->module = $this->app->moduleManager->get('FleetManagement');
TestUtils::setMember($this->module, 'app', $this->app);
}
}

20
tests/Models/Vehicle.php Normal file
View File

@ -0,0 +1,20 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\ClientManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
class Vehicle
{
protected int $id = 0;
}

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>