From 09a7d825e9027f80b70b25302b79271c3c34a569 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Tue, 2 Jan 2024 23:34:17 +0000 Subject: [PATCH] update --- Controller/BackendController.php | 18 +- Docs/Dev/en/SUMMARY.md | 3 + Docs/Dev/en/structure.md | 5 + Docs/Dev/img/er.png | Bin 0 -> 52335 bytes Models/PermissionCategory.php | 2 +- Theme/Backend/Lang/de.lang.php | 3 + Theme/Backend/Lang/en.lang.php | 3 + Theme/Backend/expense-single.tpl.php | 375 +++++++++++++----- info.json | 1 - .../Api/ApiExpenseControllerTrait.php | 4 - 10 files changed, 296 insertions(+), 118 deletions(-) create mode 100644 Docs/Dev/en/SUMMARY.md create mode 100644 Docs/Dev/en/structure.md create mode 100644 Docs/Dev/img/er.png diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 2a27415..066c5ab 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -32,7 +32,7 @@ use phpOMS\Views\View; final class BackendController extends Controller { /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -60,7 +60,7 @@ final class BackendController extends Controller } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -80,16 +80,22 @@ final class BackendController extends Controller $expense = ExpenseMapper::get() ->with('from') + ->with('notes') + ->with('elements') + ->with('elements/type') + ->with('elements/type/l11n') ->where('id', (int) $request->getData('id')) ->execute(); $view->data['expense'] = $expense; + $view->data['expense-notes'] = new \Modules\Editor\Theme\Backend\Components\Compound\BaseView($this->app->l11nManager, $request, $response); + return $view; } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -118,7 +124,7 @@ final class BackendController extends Controller } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -147,7 +153,7 @@ final class BackendController extends Controller } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -176,7 +182,7 @@ final class BackendController extends Controller } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response diff --git a/Docs/Dev/en/SUMMARY.md b/Docs/Dev/en/SUMMARY.md new file mode 100644 index 0000000..8a97952 --- /dev/null +++ b/Docs/Dev/en/SUMMARY.md @@ -0,0 +1,3 @@ +# Developer Content + +* [Structure]({%}&page=Dev/structure) diff --git a/Docs/Dev/en/structure.md b/Docs/Dev/en/structure.md new file mode 100644 index 0000000..1e1ed19 --- /dev/null +++ b/Docs/Dev/en/structure.md @@ -0,0 +1,5 @@ +# Structure + +## ER + +![ER](Modules/BusinessExpenses/Docs/Dev/img/er.png) \ No newline at end of file diff --git a/Docs/Dev/img/er.png b/Docs/Dev/img/er.png new file mode 100644 index 0000000000000000000000000000000000000000..55efbd276d17fde2ec7202a415812bfb7b02052c GIT binary patch literal 52335 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 S_|ydb6?s{ut9jCfe*XtNvCtg= literal 0 HcmV?d00001 diff --git a/Models/PermissionCategory.php b/Models/PermissionCategory.php index 1b6d4fb..29db758 100755 --- a/Models/PermissionCategory.php +++ b/Models/PermissionCategory.php @@ -17,7 +17,7 @@ namespace Modules\BusinessExpenses\Models; use phpOMS\Stdlib\Base\Enum; /** - * Permision state enum. + * Permission category enum. * * @package Modules\BusinessExpenses\Models * @license OMS License 2.0 diff --git a/Theme/Backend/Lang/de.lang.php b/Theme/Backend/Lang/de.lang.php index ad56852..a786e86 100644 --- a/Theme/Backend/Lang/de.lang.php +++ b/Theme/Backend/Lang/de.lang.php @@ -31,4 +31,7 @@ return ['BusinessExpenses' => [ 'Start' => 'Start', 'Status' => 'Status', 'Title' => 'Titel', + 'Overview' => 'Übersicht', + 'Clocking' => 'Zeiterfassung', + 'Type' => 'Typ', ]]; diff --git a/Theme/Backend/Lang/en.lang.php b/Theme/Backend/Lang/en.lang.php index 49ee81a..25e1f31 100644 --- a/Theme/Backend/Lang/en.lang.php +++ b/Theme/Backend/Lang/en.lang.php @@ -31,4 +31,7 @@ return ['BusinessExpenses' => [ 'Start' => 'Start', 'Status' => 'Status', 'Title' => 'Title', + 'Overview' => 'Overview', + 'Clocking' => 'Clocking', + 'Type' => 'Type', ]]; diff --git a/Theme/Backend/expense-single.tpl.php b/Theme/Backend/expense-single.tpl.php index 0a953d1..060e4ab 100644 --- a/Theme/Backend/expense-single.tpl.php +++ b/Theme/Backend/expense-single.tpl.php @@ -14,123 +14,286 @@ declare(strict_types=1); use Modules\BusinessExpenses\Models\NullExpense; +use phpOMS\Uri\UriFactory; /** @var \phpOMS\Views\View $this */ $expense = $this->getData('expense') ?? new NullExpense(); +$sessions = $this->data['sessions'] ?? []; echo $this->data['nav']->render(); ?> - -

-
-
-
- -
getHtml('Net'); ?>: - -
getHtml('Gross'); ?>: - -
-
-
+
+
+
- -
-
-
- -
getHtml('Approved'); ?>: - -
getHtml('Paid'); ?>: - -
-
-
-
-
- -
-
-
-
getHtml('Report'); ?>
-
-
- - +
+ request->uri->fragment === 'c-tab-1' ? ' checked' : ''; ?>> +
+
+
+
+
+ +
getHtml('Net'); ?>: + +
getHtml('Gross'); ?>: + +
+
+
-
- - -
- -
- - -
- -
- - -
- -
- - +
+
+
+ +
getHtml('Approved'); ?>: + +
getHtml('Paid'); ?>: + +
+
+
-
-
-
-
-
-
getHtml('Notes'); ?>download
-
- - - - -
- getHtml('Title'); ?> - - - -
-
-
-
+
+
+
+
getHtml('Report'); ?>
+
+
+ + +
-
-
-
-
getHtml('Expenses'); ?>download
-
- - - - -
- getHtml('ID', '0', '0'); ?> - - - -
-
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
+
+
+
+ + request->uri->fragment === 'c-tab-2' ? ' checked' : ''; ?>> +
+ data['expense-notes']->render('expense-notes', '', $expense->notes); ?> +
+ + request->uri->fragment === 'c-tab-3' ? ' checked' : ''; ?>> +
+
+
+
+
getHtml('Expenses'); ?>download
+
+ + + + + elements as $element) : ?> + +
+ getHtml('ID', '0', '0'); ?> + + + + getHtml('Start'); ?> + getHtml('End'); ?> + getHtml('Type'); ?> +
+ id; ?> + start->format('Y-m-d H:i'); ?> + end?->format('Y-m-d H:i'); ?> + printHtml($element->type->l11n); ?> + +
+
+
+
+
+ + request->uri->fragment === 'c-tab-4' ? ' checked' : ''; ?>> +
+
+
+
+
getHtml('Recordings', 'HumanResourceTimeRecording', 'Backend'); ?>download
+ + + + + + + + + +
getHtml('Date', 'HumanResourceTimeRecording', 'Backend'); ?> + + + + getHtml('Type', 'HumanResourceTimeRecording', 'Backend'); ?> + + + + getHtml('Status', 'HumanResourceTimeRecording', 'Backend'); ?> + + + + getHtml('Start', 'HumanResourceTimeRecording', 'Backend'); ?> + + + + getHtml('Break', 'HumanResourceTimeRecording', 'Backend'); ?> + + + + getHtml('End', 'HumanResourceTimeRecording', 'Backend'); ?> + + + + getHtml('Total', 'HumanResourceTimeRecording', 'Backend'); ?> + + + +
+ getStart()->format('Y-m-d') === $lastOpenSession->getStart()->format('Y-m-d') + ) : ?> + Today + + getStart()->format('Y-m-d'); ?> - getHtml('D' . $session->getStart()->format('w')); ?> + + getHtml('CT' . $session->getType()); ?> + getHtml('CS' . $session->getStatus()); ?> + getStart()->format('H:i'); ?> + getBreak() / 3600); ?>h getBreak() / 60) % 60); ?>m + getEnd() !== null ? $session->getEnd()->format('H:i') : ''; ?> + getBusy() / 3600); ?>h getBusy() / 60) % 60); ?>m + getBusy(); + if ($session->getStart()->getTimestamp() < $startWeek->getTimestamp() + || $count === $sessionCount + ) : ?> +
format('Y/m/d'); ?> - format('Y/m/d'); ?> + h m + createModify(0, 0, -7); + $busy['week'] = 0; + endif; + ?> + getBusy(); + if ($session->getStart()->getTimestamp() < $startMonth->getTimestamp() + || $count === $sessionCount + ) : ?> +
format('Y/m/d'); ?> - format('Y/m/d'); ?> + h m + createModify(0, -1, 0); + $busy['month'] = 0; + endif; + ?> + + +
getHtml('Empty', '0', '0'); ?> + +
+
+
+
+
\ No newline at end of file diff --git a/info.json b/info.json index ac52d1b..d0779c5 100644 --- a/info.json +++ b/info.json @@ -14,7 +14,6 @@ "name": "Jingga", "website": "jingga.app" }, - "description": "Accounting module.", "directory": "BusinessExpenses", "dependencies": { "Admin": "1.0.0", diff --git a/tests/Controller/Api/ApiExpenseControllerTrait.php b/tests/Controller/Api/ApiExpenseControllerTrait.php index 57563fa..f4904e5 100644 --- a/tests/Controller/Api/ApiExpenseControllerTrait.php +++ b/tests/Controller/Api/ApiExpenseControllerTrait.php @@ -14,14 +14,10 @@ declare(strict_types=1); namespace Modules\BusinessExpenses\tests\Controller\Api; -use phpOMS\Account\AccountStatus; -use phpOMS\Account\AccountType; use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpResponse; -use phpOMS\Message\Http\RequestStatusCode; use phpOMS\System\File\Local\Directory; use phpOMS\Uri\HttpUri; -use phpOMS\Utils\RnG\DateTime; use phpOMS\Utils\TestUtils; trait ApiExpenseControllerTrait