From d9a64716831b6b2faf526f33b3817b345b37d5c5 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Fri, 26 Jan 2024 22:53:59 +0000 Subject: [PATCH] auto fixes + some impl. --- Admin/Installer.php | 16 ++-- Admin/Routes/Web/Backend.php | 2 +- Controller/ApiController.php | 27 +++--- Models/Balance.php | 2 +- Models/BalanceElement.php | 14 +-- Models/BalanceElementL11nMapper.php | 6 +- Models/BalanceElementMapper.php | 12 +-- Models/BalanceMapper.php | 6 +- Theme/Backend/balance-dashboard.tpl.php | 112 +++++++++++++----------- tests/Autoloader.php | 4 +- tests/Bootstrap.php | 71 ++++++++------- 11 files changed, 148 insertions(+), 124 deletions(-) diff --git a/Admin/Installer.php b/Admin/Installer.php index 8d4d0c1..2756782 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -21,7 +21,6 @@ use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpResponse; use phpOMS\Module\InstallerAbstract; use phpOMS\Module\ModuleInfo; -use phpOMS\Uri\HttpUri; /** * Installer class. @@ -51,7 +50,7 @@ final class Installer extends InstallerAbstract self::importStructures($app); } - /** + /** * Import accounts * * @param ApplicationAbstract $app Application @@ -72,7 +71,7 @@ final class Installer extends InstallerAbstract } $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); + $request = new HttpRequest(); $request->header->account = 1; $request->setData('code', \strtolower(\basename($file))); @@ -86,21 +85,18 @@ final class Installer extends InstallerAbstract : $responseData['response']->toArray(); $json = \json_decode(\file_get_contents(__DIR__ . '/Install/Coa/' . $file), true); - - foreach ($json as $element) { - self::createElement($module, [$element], (int) $balance['id'], null); - } + self::createElement($module, $json, (int) $balance['id'], null); } } - private static function createElement(ApiController $module, array $elements, int $structure, int $parent = null) + private static function createElement(ApiController $module, array $elements, int $structure, ?int $parent = null) : void { $order = 0; foreach ($elements as $element) { ++$order; $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); + $request = new HttpRequest(); $request->header->account = 1; $request->setData('code', $element['name']); @@ -131,7 +127,7 @@ final class Installer extends InstallerAbstract } $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); + $request = new HttpRequest(); $request->header->account = 1; $request->setData('title', $l11n); diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index 0090283..c0360fa 100644 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -6,7 +6,7 @@ use phpOMS\Account\PermissionType; use phpOMS\Router\RouteVerb; return [ - '^.*/controlling/balance/dashboard.*$' => [ + '^.*/controlling/balance/dashboard(\?.*$|$)' => [ [ 'dest' => '\Modules\Balance\Controller\BackendController:viewBalanceDashboard', 'verb' => RouteVerb::GET, diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 438f4a8..8f4421e 100644 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -21,7 +21,6 @@ use Modules\Balance\Models\BalanceElementMapper; use Modules\Balance\Models\BalanceMapper; use phpOMS\Localization\BaseStringL11n; use phpOMS\Localization\ISO639x1Enum; -use phpOMS\Message\Http\HttpResponse; use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; @@ -95,7 +94,7 @@ final class ApiController extends Controller */ private function createBalanceFromRequest(RequestAbstract $request) : Balance { - $balance = new Balance(); + $balance = new Balance(); $balance->code = (string) $request->getData('code'); $balance->name = (string) $request->getData('name'); @@ -162,12 +161,16 @@ final class ApiController extends Controller */ private function createBalanceElementFromRequest(RequestAbstract $request) : BalanceElement { - $element = new BalanceElement(); - $element->code = $request->getDataString('code') ?? ''; + $element = new BalanceElement(); + $element->code = $request->getDataString('code') ?? ''; $element->balance = $request->getDataInt('balance') ?? 0; - $element->order = $request->getDataInt('order') ?? 0; + $element->order = $request->getDataInt('order') ?? 0; + $element->parent = $request->getDataInt('parent'); - $element->setL11n($request->getDataString('content') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); + $element->setL11n( + $request->getDataString('content') ?? '', + ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? ISO639x1Enum::_EN + ); return $element; } @@ -210,12 +213,10 @@ final class ApiController extends Controller */ private function createBalanceElementL11nFromRequest(RequestAbstract $request) : BaseStringL11n { - $elementL11n = new BaseStringL11n(); - $elementL11n->ref = $request->getDataInt('ref') ?? 0; - $elementL11n->setLanguage( - $request->getDataString('language') ?? $request->header->l11n->language - ); - $elementL11n->content = $request->getDataString('content') ?? ''; + $elementL11n = new BaseStringL11n(); + $elementL11n->ref = $request->getDataInt('ref') ?? 0; + $elementL11n->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $request->header->l11n->language; + $elementL11n->content = $request->getDataString('content') ?? ''; return $elementL11n; } @@ -240,4 +241,4 @@ final class ApiController extends Controller return []; } -} \ No newline at end of file +} diff --git a/Models/Balance.php b/Models/Balance.php index 27ce680..8c74baf 100644 --- a/Models/Balance.php +++ b/Models/Balance.php @@ -42,7 +42,7 @@ class Balance public function toArray() : array { return [ - 'id' => $this->id, + 'id' => $this->id, ]; } diff --git a/Models/BalanceElement.php b/Models/BalanceElement.php index 748c1ba..b3c049e 100644 --- a/Models/BalanceElement.php +++ b/Models/BalanceElement.php @@ -38,7 +38,9 @@ class BalanceElement public string $code = ''; public int $type = 0; + public string $formula = ''; + public int $order = 0; public int $balance = 0; @@ -68,12 +70,12 @@ class BalanceElement if ($l11n instanceof BaseStringL11n) { $this->l11n = $l11n; } elseif (isset($this->l11n) && $this->l11n instanceof BaseStringL11n) { - $this->l11n->content = $l11n; - $this->l11n->setLanguage($lang); + $this->l11n->content = $l11n; + $this->l11n->language = $lang; } else { - $this->l11n = new BaseStringL11n(); - $this->l11n->content = $l11n; - $this->l11n->setLanguage($lang); + $this->l11n = new BaseStringL11n(); + $this->l11n->content = $l11n; + $this->l11n->language = $lang; } } @@ -97,7 +99,7 @@ class BalanceElement public function toArray() : array { return [ - 'id' => $this->id, + 'id' => $this->id, ]; } diff --git a/Models/BalanceElementL11nMapper.php b/Models/BalanceElementL11nMapper.php index 63afabd..aa167cd 100644 --- a/Models/BalanceElementL11nMapper.php +++ b/Models/BalanceElementL11nMapper.php @@ -37,9 +37,9 @@ final class BalanceElementL11nMapper extends DataMapperFactory * @since 1.0.0 */ public const COLUMNS = [ - 'balance_balance_element_l11n_id' => ['name' => 'balance_balance_element_l11n_id', 'type' => 'int', 'internal' => 'id'], - 'balance_balance_element_l11n_title' => ['name' => 'balance_balance_element_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true], - 'balance_balance_element_l11n_element' => ['name' => 'balance_balance_element_l11n_element', 'type' => 'int', 'internal' => 'ref'], + 'balance_balance_element_l11n_id' => ['name' => 'balance_balance_element_l11n_id', 'type' => 'int', 'internal' => 'id'], + 'balance_balance_element_l11n_title' => ['name' => 'balance_balance_element_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true], + 'balance_balance_element_l11n_element' => ['name' => 'balance_balance_element_l11n_element', 'type' => 'int', 'internal' => 'ref'], 'balance_balance_element_l11n_lang' => ['name' => 'balance_balance_element_l11n_lang', 'type' => 'string', 'internal' => 'language'], ]; diff --git a/Models/BalanceElementMapper.php b/Models/BalanceElementMapper.php index dd8e039..1931e2d 100644 --- a/Models/BalanceElementMapper.php +++ b/Models/BalanceElementMapper.php @@ -37,11 +37,11 @@ final class BalanceElementMapper extends DataMapperFactory * @since 1.0.0 */ public const COLUMNS = [ - 'balance_balance_element_id' => ['name' => 'balance_balance_element_id', 'type' => 'int', 'internal' => 'id'], - 'balance_balance_element_code' => ['name' => 'balance_balance_element_code', 'type' => 'string', 'internal' => 'code', 'autocomplete' => true], - 'balance_balance_element_order' => ['name' => 'balance_balance_element_order', 'type' => 'int', 'internal' => 'order'], - 'balance_balance_element_parent' => ['name' => 'balance_balance_element_parent', 'type' => 'int', 'internal' => 'parent'], - 'balance_balance_element_balance' => ['name' => 'balance_balance_element_balance', 'type' => 'int', 'internal' => 'balance'], + 'balance_balance_element_id' => ['name' => 'balance_balance_element_id', 'type' => 'int', 'internal' => 'id'], + 'balance_balance_element_code' => ['name' => 'balance_balance_element_code', 'type' => 'string', 'internal' => 'code', 'autocomplete' => true], + 'balance_balance_element_order' => ['name' => 'balance_balance_element_order', 'type' => 'int', 'internal' => 'order'], + 'balance_balance_element_parent' => ['name' => 'balance_balance_element_parent', 'type' => 'int', 'internal' => 'parent'], + 'balance_balance_element_balance' => ['name' => 'balance_balance_element_balance', 'type' => 'int', 'internal' => 'balance'], ]; /** @@ -57,7 +57,7 @@ final class BalanceElementMapper extends DataMapperFactory 'self' => 'balance_balance_element_l11n_element', 'column' => 'content', 'external' => null, - ] + ], ]; /** diff --git a/Models/BalanceMapper.php b/Models/BalanceMapper.php index 115148b..72f5de5 100644 --- a/Models/BalanceMapper.php +++ b/Models/BalanceMapper.php @@ -37,9 +37,9 @@ final class BalanceMapper extends DataMapperFactory * @since 1.0.0 */ public const COLUMNS = [ - 'balance_balance_id' => ['name' => 'balance_balance_id', 'type' => 'int', 'internal' => 'id'], - 'balance_balance_code' => ['name' => 'balance_balance_code', 'type' => 'string', 'internal' => 'code', 'autocomplete' => true], - 'balance_balance_name' => ['name' => 'balance_balance_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true], + 'balance_balance_id' => ['name' => 'balance_balance_id', 'type' => 'int', 'internal' => 'id'], + 'balance_balance_code' => ['name' => 'balance_balance_code', 'type' => 'string', 'internal' => 'code', 'autocomplete' => true], + 'balance_balance_name' => ['name' => 'balance_balance_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true], ]; /** diff --git a/Theme/Backend/balance-dashboard.tpl.php b/Theme/Backend/balance-dashboard.tpl.php index f9f11f8..14796a3 100644 --- a/Theme/Backend/balance-dashboard.tpl.php +++ b/Theme/Backend/balance-dashboard.tpl.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\Balance + * @package Modules\IncomeStatement * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,14 +12,71 @@ */ declare(strict_types=1); +function render_elements(array $elements, ?int $parent = null) : string +{ + $row = ''; + $fn = 'render_elements'; + + foreach ($elements as $element) { + if ($element->parent !== $parent) { + continue; + } + + $row .= << +
+
+
{$element->getL11n()}
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+ + +
+ {$fn($elements, $element->id)} +
+ + ROW; + } + + return $row; +} + echo $this->data['nav']->render(); ?> -
+ +
-
-
Category
+
+
Category
1
2
3
@@ -53,49 +110,6 @@ echo $this->data['nav']->render();
-data['elements'] as $element) : - if ($element->parent !== null) { - continue; - } -?>
-
-
-
-
printHtml($element->getL11n()); ?>
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
- - - -
-
- +
data['elements'], null); ?>
+
\ No newline at end of file diff --git a/tests/Autoloader.php b/tests/Autoloader.php index 87c9b0b..9ecf997 100644 --- a/tests/Autoloader.php +++ b/tests/Autoloader.php @@ -75,8 +75,8 @@ final class Autoloader */ public static function defaultAutoloader(string $class) : void { - $class = \ltrim($class, '\\'); - $class = \strtr($class, '_\\', '//'); + $class = \ltrim($class, '\\'); + $class = \strtr($class, '_\\', '//'); if (\stripos($class, 'Web/Backend') !== false || \stripos($class, 'Web/Api') !== false) { $class = \is_dir(__DIR__ . '/Web') ? $class : \str_replace('Web/', 'MainRepository/Web/', $class); diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index ddc049d..0952e92 100644 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -1,4 +1,15 @@ [ + 'db' => [ 'core' => [ 'masters' => [ - 'admin' => [ + 'admin' => [ 'db' => 'mysql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '3306', /* db host port */ @@ -80,7 +91,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'insert' => [ + 'insert' => [ 'db' => 'mysql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '3306', /* db host port */ @@ -90,7 +101,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'select' => [ + 'select' => [ 'db' => 'mysql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '3306', /* db host port */ @@ -100,7 +111,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'update' => [ + 'update' => [ 'db' => 'mysql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '3306', /* db host port */ @@ -110,7 +121,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'delete' => [ + 'delete' => [ 'db' => 'mysql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '3306', /* db host port */ @@ -120,7 +131,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'schema' => [ + 'schema' => [ 'db' => 'mysql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '3306', /* db host port */ @@ -132,7 +143,7 @@ $CONFIG = [ ], ], 'postgresql' => [ - 'admin' => [ + 'admin' => [ 'db' => 'pgsql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '5432', /* db host port */ @@ -142,7 +153,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'insert' => [ + 'insert' => [ 'db' => 'pgsql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '5432', /* db host port */ @@ -152,7 +163,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'select' => [ + 'select' => [ 'db' => 'pgsql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '5432', /* db host port */ @@ -162,7 +173,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'update' => [ + 'update' => [ 'db' => 'pgsql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '5432', /* db host port */ @@ -172,7 +183,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'delete' => [ + 'delete' => [ 'db' => 'pgsql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '5432', /* db host port */ @@ -182,7 +193,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'schema' => [ + 'schema' => [ 'db' => 'pgsql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '5432', /* db host port */ @@ -194,37 +205,37 @@ $CONFIG = [ ], ], 'sqlite' => [ - 'admin' => [ + 'admin' => [ 'db' => 'sqlite', /* db type */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'insert' => [ + 'insert' => [ 'db' => 'sqlite', /* db type */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'select' => [ + 'select' => [ 'db' => 'sqlite', /* db type */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'update' => [ + 'update' => [ 'db' => 'sqlite', /* db type */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'delete' => [ + 'delete' => [ 'db' => 'sqlite', /* db type */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'schema' => [ + 'schema' => [ 'db' => 'sqlite', /* db type */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'weight' => 1000, /* db table prefix */ @@ -232,7 +243,7 @@ $CONFIG = [ ], ], 'mssql' => [ - 'admin' => [ + 'admin' => [ 'db' => 'mssql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '1433', /* db host port */ @@ -242,7 +253,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'insert' => [ + 'insert' => [ 'db' => 'mssql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '1433', /* db host port */ @@ -252,7 +263,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'select' => [ + 'select' => [ 'db' => 'mssql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '1433', /* db host port */ @@ -262,7 +273,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'update' => [ + 'update' => [ 'db' => 'mssql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '1433', /* db host port */ @@ -272,7 +283,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'delete' => [ + 'delete' => [ 'db' => 'mssql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '1433', /* db host port */ @@ -282,7 +293,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'schema' => [ + 'schema' => [ 'db' => 'mssql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '1433', /* db host port */ @@ -322,16 +333,16 @@ $CONFIG = [ 'password' => '123456', ], ], - 'log' => [ + 'log' => [ 'file' => [ 'path' => __DIR__ . '/Logs', ], ], - 'page' => [ + 'page' => [ 'root' => '/', 'https' => false, ], - 'app' => [ + 'app' => [ 'path' => __DIR__, 'default' => [ 'app' => 'Backend', @@ -350,7 +361,7 @@ $CONFIG = [ ], ], ], - 'socket' => [ + 'socket' => [ 'master' => [ 'host' => '127.0.0.1', 'limit' => 300, @@ -360,7 +371,7 @@ $CONFIG = [ 'language' => [ 'en', ], - 'apis' => [ + 'apis' => [ ], ];