diff --git a/Admin/Install/Navigation.install.json b/Admin/Install/Navigation.install.json
index 39399e8..bf20d51 100644
--- a/Admin/Install/Navigation.install.json
+++ b/Admin/Install/Navigation.install.json
@@ -5,7 +5,7 @@
"type": 2,
"subtype": 1,
"name": "BusinessExpenses",
- "uri": "{/base}/businessexpenses/list",
+ "uri": "{/base}/businessexpenses/expense/list",
"target": "self",
"icon": null,
"order": 40,
@@ -16,10 +16,26 @@
{
"id": 1001002001,
"pid": "/",
- "type": 2,
+ "type": 3,
"subtype": 1,
"name": "List",
- "uri": "{/base}/businessexpenses/list",
+ "uri": "{/base}/businessexpenses/expense/list",
+ "target": "self",
+ "icon": null,
+ "order": 40,
+ "from": 1001000000,
+ "permission": { "permission": 2, "type": null, "element": null },
+ "parent": 1001001001,
+ "children": [
+ ]
+ },
+ {
+ "id": 1001002002,
+ "pid": "/",
+ "type": 3,
+ "subtype": 1,
+ "name": "Create",
+ "uri": "{/base}/businessexpenses/expense/create",
"target": "self",
"icon": null,
"order": 40,
diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php
index f0b60b4..25b9156 100644
--- a/Admin/Routes/Web/Backend.php
+++ b/Admin/Routes/Web/Backend.php
@@ -1,3 +1,87 @@
- [
+ [
+ 'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesList',
+ 'verb' => RouteVerb::GET,
+ 'permission' => [
+ 'module' => BackendController::NAME,
+ 'type' => PermissionType::READ,
+ 'state' => PermissionCategory::EXPENSE,
+ ],
+ ],
+ ],
+ '^.*/businessexpenses/expense/create.*$' => [
+ [
+ 'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesExpenseCreate',
+ 'verb' => RouteVerb::GET,
+ 'permission' => [
+ 'module' => BackendController::NAME,
+ 'type' => PermissionType::READ,
+ 'state' => PermissionCategory::EXPENSE,
+ ],
+ ],
+ ],
+ '^.*/businessexpenses/expense(\?.*|$)$' => [
+ [
+ 'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesExpense',
+ 'verb' => RouteVerb::GET,
+ 'permission' => [
+ 'module' => BackendController::NAME,
+ 'type' => PermissionType::READ,
+ 'state' => PermissionCategory::EXPENSE,
+ ],
+ ],
+ ],
+ '^.*/businessexpenses/type/list\?.*$' => [
+ [
+ 'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesTypeList',
+ 'verb' => RouteVerb::GET,
+ 'permission' => [
+ 'module' => BackendController::NAME,
+ 'type' => PermissionType::READ,
+ 'state' => PermissionCategory::EXPENSE,
+ ],
+ ],
+ ],
+ '^.*/businessexpenses/type(\?.*|$)$' => [
+ [
+ 'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesType',
+ 'verb' => RouteVerb::GET,
+ 'permission' => [
+ 'module' => BackendController::NAME,
+ 'type' => PermissionType::READ,
+ 'state' => PermissionCategory::EXPENSE,
+ ],
+ ],
+ ],
+ '^.*/businessexpenses/type/create.*$' => [
+ [
+ 'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesTypeCreate',
+ 'verb' => RouteVerb::GET,
+ 'permission' => [
+ 'module' => BackendController::NAME,
+ 'type' => PermissionType::CREATE,
+ 'state' => PermissionCategory::EXPENSE,
+ ],
+ ],
+ ],
+];
diff --git a/Controller/BackendController.php b/Controller/BackendController.php
index febf43c..4345915 100755
--- a/Controller/BackendController.php
+++ b/Controller/BackendController.php
@@ -14,6 +14,7 @@ declare(strict_types=1);
namespace Modules\BusinessExpenses\Controller;
+use Modules\BusinessExpenses\Models\ExpenseMapper;
use phpOMS\Contract\RenderableInterface;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
@@ -49,6 +50,12 @@ final class BackendController extends Controller
$view->setTemplate('/Modules/BusinessExpenses/Theme/Backend/expense-list');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001001001, $request, $response));
+ $list = ExpenseMapper::getAll()
+ ->with('from')
+ ->execute();
+
+ $view->addData('expenses', $list);
+
return $view;
}
@@ -68,9 +75,16 @@ final class BackendController extends Controller
{
$view = new View($this->app->l11nManager, $request, $response);
- $view->setTemplate('/Modules/BusinessExpenses/Theme/Backend/expenses-profile');
+ $view->setTemplate('/Modules/BusinessExpenses/Theme/Backend/expense-single');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001001001, $request, $response));
+ $expense = ExpenseMapper::get()
+ ->with('from')
+ ->where('id', (int) $request->getData('id'))
+ ->execute();
+
+ $view->addData('expense', $expense);
+
return $view;
}
}
diff --git a/Models/ExpenseStatus.php b/Models/ExpenseStatus.php
index 8c198e5..61a7f52 100644
--- a/Models/ExpenseStatus.php
+++ b/Models/ExpenseStatus.php
@@ -28,7 +28,9 @@ abstract class ExpenseStatus extends Enum
{
public const DRAFT = 1;
- public const FINALIZED = 2;
+ public const OPEN = 2;
- public const INACTIVE = 3;
+ public const APPROVED = 3;
+
+ public const DENIED = 3;
}
diff --git a/Models/NullExpense.php b/Models/NullExpense.php
index 2d128a8..5d70316 100644
--- a/Models/NullExpense.php
+++ b/Models/NullExpense.php
@@ -34,6 +34,7 @@ final class NullExpense extends Expense
public function __construct(int $id = 0)
{
$this->id = $id;
+ parent::__construct();
}
/**
diff --git a/Models/PermissionCategory.php b/Models/PermissionCategory.php
new file mode 100755
index 0000000..434b13b
--- /dev/null
+++ b/Models/PermissionCategory.php
@@ -0,0 +1,30 @@
+ [
+ 'Expenses' => 'Expenses',
+ 'Status' => 'Status',
+ 'Title' => 'Title',
+ 'Paid' => 'Paid',
+ 'Approved' => 'Approved',
+ 'From' => 'From',
+ 'Amount' => 'Amount',
+ 'Start' => 'Start',
+ 'End' => 'End',
+ 'Description' => 'Description',
+ 'Report' => 'Report',
+ 'Net' => 'Net',
+ 'Gross' => 'Gross',
+ 'Notes' => 'Notes',
+ 'CreatedAt' => 'Created At',
+ ':status1' => 'Draft',
+ ':status2' => 'Finalized',
+ ':status3' => 'Inactive',
+]];
diff --git a/Theme/Backend/expense-list.tpl.php b/Theme/Backend/expense-list.tpl.php
new file mode 100644
index 0000000..a9514ed
--- /dev/null
+++ b/Theme/Backend/expense-list.tpl.php
@@ -0,0 +1,145 @@
+getData('expenses') ?? [];
+$expenseStatus = ExpenseStatus::getConstants();
+
+echo $this->getData('nav')->render(); ?>
+
+
+
+ = $this->getHtml('Expenses'); ?>
+
+
+
+
diff --git a/Theme/Backend/expense-single.tpl.php b/Theme/Backend/expense-single.tpl.php
index e69de29..8cdf2c7 100644
--- a/Theme/Backend/expense-single.tpl.php
+++ b/Theme/Backend/expense-single.tpl.php
@@ -0,0 +1,137 @@
+getData('expense') ?? new NullExpense();
+
+echo $this->getData('nav')->render(); ?>
+
+
+
+
+
+
+ | = $this->getHtml('Net'); ?>:
+ |
+ |
| = $this->getHtml('Gross'); ?>:
+ |
+ |
+
+
+
+
+
+
+
+
+ | = $this->getHtml('Approved'); ?>:
+ |
+ |
| = $this->getHtml('Paid'); ?>:
+ |
+ |
+
+
+
+
+
+
+
+
+ = $this->getHtml('Report'); ?>
+
+
+
+
+
+
+
+ = $this->getHtml('Notes'); ?>
+
+
+
+
+
+
+ = $this->getHtml('Expenses'); ?>
+
+
\ No newline at end of file
diff --git a/Theme/Backend/expenses-list.tpl.php b/Theme/Backend/expenses-list.tpl.php
deleted file mode 100644
index e69de29..0000000