auto fixes + some impl.

This commit is contained in:
Dennis Eichhorn 2024-01-26 22:53:59 +00:00
parent bfc6a49bf2
commit 4d4e065fa1
19 changed files with 200 additions and 193 deletions

View File

@ -20,7 +20,6 @@ use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse; use phpOMS\Message\Http\HttpResponse;
use phpOMS\Module\InstallerAbstract; use phpOMS\Module\InstallerAbstract;
use phpOMS\Module\ModuleInfo; use phpOMS\Module\ModuleInfo;
use phpOMS\Uri\HttpUri;
/** /**
* Installer class. * Installer class.
@ -89,7 +88,7 @@ final class Installer extends InstallerAbstract
/** @var array $type */ /** @var array $type */
foreach ($types as $type) { foreach ($types as $type) {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('name', $type['name'] ?? ''); $request->setData('name', $type['name'] ?? '');
@ -115,7 +114,7 @@ final class Installer extends InstallerAbstract
} }
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('title', $l11n); $request->setData('title', $l11n);
@ -150,7 +149,7 @@ final class Installer extends InstallerAbstract
/** @var array $type */ /** @var array $type */
foreach ($types as $type) { foreach ($types as $type) {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('name', $type['name'] ?? ''); $request->setData('name', $type['name'] ?? '');
@ -176,7 +175,7 @@ final class Installer extends InstallerAbstract
} }
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('title', $l11n); $request->setData('title', $l11n);

View File

@ -18,7 +18,7 @@ use phpOMS\Account\PermissionType;
use phpOMS\Router\RouteVerb; use phpOMS\Router\RouteVerb;
return [ return [
'^.*/businessexpenses/expense/list.*$' => [ '^.*/businessexpenses/expense/list(\?.*$|$)' => [
[ [
'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesList', 'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesList',
'verb' => RouteVerb::GET, 'verb' => RouteVerb::GET,
@ -29,7 +29,7 @@ return [
], ],
], ],
], ],
'^.*/businessexpenses/expense/create.*$' => [ '^.*/businessexpenses/expense/create(\?.*$|$)' => [
[ [
'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesExpenseCreate', 'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesExpenseCreate',
'verb' => RouteVerb::GET, 'verb' => RouteVerb::GET,
@ -40,7 +40,7 @@ return [
], ],
], ],
], ],
'^.*/businessexpenses/expense(\?.*|$)$' => [ '^.*/businessexpenses/expense(\?.*$|$)' => [
[ [
'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesExpense', 'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesExpense',
'verb' => RouteVerb::GET, 'verb' => RouteVerb::GET,
@ -51,7 +51,7 @@ return [
], ],
], ],
], ],
'^.*/businessexpenses/type/list\?.*$' => [ '^.*/businessexpenses/type/list(\?.*$|$)' => [
[ [
'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesTypeList', 'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesTypeList',
'verb' => RouteVerb::GET, 'verb' => RouteVerb::GET,
@ -62,7 +62,7 @@ return [
], ],
], ],
], ],
'^.*/businessexpenses/type(\?.*|$)$' => [ '^.*/businessexpenses/type(\?.*$|$)' => [
[ [
'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesType', 'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesType',
'verb' => RouteVerb::GET, 'verb' => RouteVerb::GET,
@ -73,7 +73,7 @@ return [
], ],
], ],
], ],
'^.*/businessexpenses/type/create.*$' => [ '^.*/businessexpenses/type/create(\?.*$|$)' => [
[ [
'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesTypeCreate', 'dest' => '\Modules\BusinessExpenses\Controller\BackendController:viewBusinessExpensesTypeCreate',
'verb' => RouteVerb::GET, 'verb' => RouteVerb::GET,

View File

@ -93,7 +93,10 @@ final class ApiController extends Controller
{ {
$type = new BaseStringL11nType(); $type = new BaseStringL11nType();
$type->title = $request->getDataString('name') ?? ''; $type->title = $request->getDataString('name') ?? '';
$type->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); $type->setL11n(
$request->getDataString('title') ?? '',
ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? ISO639x1Enum::_EN
);
return $type; return $type;
} }
@ -157,12 +160,10 @@ final class ApiController extends Controller
*/ */
private function createExpenseTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n private function createExpenseTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n
{ {
$typeL11n = new BaseStringL11n(); $typeL11n = new BaseStringL11n();
$typeL11n->ref = $request->getDataInt('type') ?? 0; $typeL11n->ref = $request->getDataInt('type') ?? 0;
$typeL11n->setLanguage( $typeL11n->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $request->header->l11n->language;
$request->getDataString('language') ?? $request->header->l11n->language $typeL11n->content = $request->getDataString('title') ?? '';
);
$typeL11n->content = $request->getDataString('title') ?? '';
return $typeL11n; return $typeL11n;
} }
@ -229,7 +230,10 @@ final class ApiController extends Controller
{ {
$type = new BaseStringL11nType(); $type = new BaseStringL11nType();
$type->title = $request->getDataString('name') ?? ''; $type->title = $request->getDataString('name') ?? '';
$type->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); $type->setL11n(
$request->getDataString('title') ?? '',
ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? ISO639x1Enum::_EN
);
return $type; return $type;
} }
@ -293,12 +297,10 @@ final class ApiController extends Controller
*/ */
private function createExpenseElementTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n private function createExpenseElementTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n
{ {
$typeL11n = new BaseStringL11n(); $typeL11n = new BaseStringL11n();
$typeL11n->ref = $request->getDataInt('type') ?? 0; $typeL11n->ref = $request->getDataInt('type') ?? 0;
$typeL11n->setLanguage( $typeL11n->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $request->header->l11n->language;
$request->getDataString('language') ?? $request->header->l11n->language $typeL11n->content = $request->getDataString('title') ?? '';
);
$typeL11n->content = $request->getDataString('title') ?? '';
return $typeL11n; return $typeL11n;
} }
@ -365,7 +367,7 @@ final class ApiController extends Controller
$expense = new Expense(); $expense = new Expense();
$expense->from = new NullAccount((int) $request->header->account); $expense->from = new NullAccount((int) $request->header->account);
$expense->type = new NullBaseStringL11nType((int) $request->getDataInt('type')); $expense->type = new NullBaseStringL11nType((int) $request->getDataInt('type'));
$expense->status = $request->getDataInt('status') ?? ExpenseStatus::DRAFT; $expense->status = ExpenseStatus::tryFromValue($request->getDataInt('status')) ?? ExpenseStatus::DRAFT;
$expense->description = $request->getDataString('description') ?? ''; $expense->description = $request->getDataString('description') ?? '';
$country = $request->getDataString('country') ?? ''; $country = $request->getDataString('country') ?? '';
@ -1195,10 +1197,8 @@ final class ApiController extends Controller
*/ */
public function updateExpenseTypeL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n public function updateExpenseTypeL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n
{ {
$new->setLanguage( $new->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $new->language;
$request->getDataString('language') ?? $new->language $new->content = $request->getDataString('title') ?? $new->content;
);
$new->content = $request->getDataString('title') ?? $new->content;
return $new; return $new;
} }
@ -1437,10 +1437,8 @@ final class ApiController extends Controller
*/ */
public function updateExpenseElementTypeL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n public function updateExpenseElementTypeL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n
{ {
$new->setLanguage( $new->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $new->language;
$request->getDataString('language') ?? $new->language $new->content = $request->getDataString('title') ?? $new->content;
);
$new->content = $request->getDataString('title') ?? $new->content;
return $new; return $new;
} }
@ -1562,7 +1560,7 @@ final class ApiController extends Controller
public function updateExpenseFromRequest(RequestAbstract $request, Expense $new) : Expense public function updateExpenseFromRequest(RequestAbstract $request, Expense $new) : Expense
{ {
$new->type = $request->hasData('type') ? new NullBaseStringL11nType((int) $request->getDataInt('type')) : $new->type; $new->type = $request->hasData('type') ? new NullBaseStringL11nType((int) $request->getDataInt('type')) : $new->type;
$new->status = $request->getDataInt('status') ?? $new->status; $new->status = ExpenseStatus::tryFromValue($request->getDataInt('status')) ?? $new->status;
$new->description = $request->getDataString('description') ?? $new->description; $new->description = $request->getDataString('description') ?? $new->description;
$new->country = $request->getDataString('country') ?? $new->country; $new->country = $request->getDataString('country') ?? $new->country;

View File

@ -75,7 +75,7 @@ final class BackendController extends Controller
{ {
$view = new View($this->app->l11nManager, $request, $response); $view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/BusinessExpenses/Theme/Backend/expense-single'); $view->setTemplate('/Modules/BusinessExpenses/Theme/Backend/expense-view');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1001001001, $request, $response); $view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1001001001, $request, $response);
$expense = ExpenseMapper::get() $expense = ExpenseMapper::get()
@ -110,7 +110,7 @@ final class BackendController extends Controller
{ {
$view = new View($this->app->l11nManager, $request, $response); $view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/BusinessExpenses/Theme/Backend/expense-single'); $view->setTemplate('/Modules/BusinessExpenses/Theme/Backend/expense-view');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1001001001, $request, $response); $view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1001001001, $request, $response);
$expense = ExpenseMapper::get() $expense = ExpenseMapper::get()
@ -139,7 +139,7 @@ final class BackendController extends Controller
{ {
$view = new View($this->app->l11nManager, $request, $response); $view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/BusinessExpenses/Theme/Backend/expense-single'); $view->setTemplate('/Modules/BusinessExpenses/Theme/Backend/expense-view');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1001001001, $request, $response); $view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1001001001, $request, $response);
$expense = ExpenseMapper::get() $expense = ExpenseMapper::get()
@ -168,7 +168,7 @@ final class BackendController extends Controller
{ {
$view = new View($this->app->l11nManager, $request, $response); $view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/BusinessExpenses/Theme/Backend/expense-single'); $view->setTemplate('/Modules/BusinessExpenses/Theme/Backend/expense-view');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1001001001, $request, $response); $view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1001001001, $request, $response);
$expense = ExpenseMapper::get() $expense = ExpenseMapper::get()
@ -197,7 +197,7 @@ final class BackendController extends Controller
{ {
$view = new View($this->app->l11nManager, $request, $response); $view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/BusinessExpenses/Theme/Backend/expense-single'); $view->setTemplate('/Modules/BusinessExpenses/Theme/Backend/expense-view');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1001001001, $request, $response); $view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1001001001, $request, $response);
$expense = ExpenseMapper::get() $expense = ExpenseMapper::get()

View File

@ -54,8 +54,6 @@ class ExpenseElement
public ?Account $ref = null; public ?Account $ref = null;
public array $media = [];
public string $taxId = ''; public string $taxId = '';
public ?Supplier $supplier = null; public ?Supplier $supplier = null;
@ -82,4 +80,6 @@ class ExpenseElement
$this->start = new \DateTime('now'); $this->start = new \DateTime('now');
$this->end = new \DateTime('now'); $this->end = new \DateTime('now');
} }
use \Modules\Media\Models\MediaListTrait;
} }

View File

@ -20,7 +20,7 @@ use Modules\SupplierManagement\Models\SupplierMapper;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* mapper class. * Expense element mapper class.
* *
* @package Modules\BusinessExpenses\Models * @package Modules\BusinessExpenses\Models
* @license OMS License 2.0 * @license OMS License 2.0
@ -39,23 +39,23 @@ final class ExpenseElementMapper extends DataMapperFactory
* @since 1.0.0 * @since 1.0.0
*/ */
public const COLUMNS = [ public const COLUMNS = [
'bizexpenses_expense_element_id' => ['name' => 'bizexpenses_expense_element_id', 'type' => 'int', 'internal' => 'id'], 'bizexpenses_expense_element_id' => ['name' => 'bizexpenses_expense_element_id', 'type' => 'int', 'internal' => 'id'],
'bizexpenses_expense_element_description' => ['name' => 'bizexpenses_expense_element_description', 'type' => 'string', 'internal' => 'description'], 'bizexpenses_expense_element_description' => ['name' => 'bizexpenses_expense_element_description', 'type' => 'string', 'internal' => 'description'],
'bizexpenses_expense_element_approved' => ['name' => 'bizexpenses_expense_element_approved', 'type' => 'bool', 'internal' => 'approved'], 'bizexpenses_expense_element_approved' => ['name' => 'bizexpenses_expense_element_approved', 'type' => 'bool', 'internal' => 'approved'],
'bizexpenses_expense_element_approvedby' => ['name' => 'bizexpenses_expense_element_approvedby', 'type' => 'int', 'internal' => 'approvedBy'], 'bizexpenses_expense_element_approvedby' => ['name' => 'bizexpenses_expense_element_approvedby', 'type' => 'int', 'internal' => 'approvedBy'],
'bizexpenses_expense_element_net' => ['name' => 'bizexpenses_expense_element_net', 'type' => 'Serializable', 'internal' => 'net'], 'bizexpenses_expense_element_net' => ['name' => 'bizexpenses_expense_element_net', 'type' => 'Serializable', 'internal' => 'net'],
'bizexpenses_expense_element_gross' => ['name' => 'bizexpenses_expense_element_gross', 'type' => 'Serializable', 'internal' => 'gross'], 'bizexpenses_expense_element_gross' => ['name' => 'bizexpenses_expense_element_gross', 'type' => 'Serializable', 'internal' => 'gross'],
'bizexpenses_expense_element_taxp' => ['name' => 'bizexpenses_expense_element_taxp', 'type' => 'Serializable', 'internal' => 'taxP'], 'bizexpenses_expense_element_taxp' => ['name' => 'bizexpenses_expense_element_taxp', 'type' => 'Serializable', 'internal' => 'taxP'],
'bizexpenses_expense_element_taxr' => ['name' => 'bizexpenses_expense_element_taxr', 'type' => 'Serializable', 'internal' => 'taxR'], 'bizexpenses_expense_element_taxr' => ['name' => 'bizexpenses_expense_element_taxr', 'type' => 'Serializable', 'internal' => 'taxR'],
'bizexpenses_expense_element_quantity' => ['name' => 'bizexpenses_expense_element_quantity', 'type' => 'Serializable', 'internal' => 'quantity'], 'bizexpenses_expense_element_quantity' => ['name' => 'bizexpenses_expense_element_quantity', 'type' => 'Serializable', 'internal' => 'quantity'],
'bizexpenses_expense_element_taxid' => ['name' => 'bizexpenses_expense_element_taxid', 'type' => 'string', 'internal' => 'taxId'], 'bizexpenses_expense_element_taxid' => ['name' => 'bizexpenses_expense_element_taxid', 'type' => 'string', 'internal' => 'taxId'],
'bizexpenses_expense_element_start' => ['name' => 'bizexpenses_expense_element_start', 'type' => 'DateTime', 'internal' => 'start'], 'bizexpenses_expense_element_start' => ['name' => 'bizexpenses_expense_element_start', 'type' => 'DateTime', 'internal' => 'start'],
'bizexpenses_expense_element_end' => ['name' => 'bizexpenses_expense_element_end', 'type' => 'DateTime', 'internal' => 'end'], 'bizexpenses_expense_element_end' => ['name' => 'bizexpenses_expense_element_end', 'type' => 'DateTime', 'internal' => 'end'],
'bizexpenses_expense_element_supplier' => ['name' => 'bizexpenses_expense_element_supplier', 'type' => 'int', 'internal' => 'supplier'], 'bizexpenses_expense_element_supplier' => ['name' => 'bizexpenses_expense_element_supplier', 'type' => 'int', 'internal' => 'supplier'],
'bizexpenses_expense_element_ref' => ['name' => 'bizexpenses_expense_element_ref', 'type' => 'int', 'internal' => 'ref'], 'bizexpenses_expense_element_ref' => ['name' => 'bizexpenses_expense_element_ref', 'type' => 'int', 'internal' => 'ref'],
'bizexpenses_expense_element_type' => ['name' => 'bizexpenses_expense_element_type', 'type' => 'int', 'internal' => 'type'], 'bizexpenses_expense_element_type' => ['name' => 'bizexpenses_expense_element_type', 'type' => 'int', 'internal' => 'type'],
'bizexpenses_expense_element_country' => ['name' => 'bizexpenses_expense_element_country', 'type' => 'string', 'internal' => 'country'], 'bizexpenses_expense_element_country' => ['name' => 'bizexpenses_expense_element_country', 'type' => 'string', 'internal' => 'country'],
'bizexpenses_expense_element_expense' => ['name' => 'bizexpenses_expense_element_expense', 'type' => 'int', 'internal' => 'expense'], 'bizexpenses_expense_element_expense' => ['name' => 'bizexpenses_expense_element_expense', 'type' => 'int', 'internal' => 'expense'],
]; ];
/** /**
@ -65,7 +65,7 @@ final class ExpenseElementMapper extends DataMapperFactory
* @since 1.0.0 * @since 1.0.0
*/ */
public const HAS_MANY = [ public const HAS_MANY = [
'media' => [ 'files' => [
'mapper' => MediaMapper::class, 'mapper' => MediaMapper::class,
'table' => 'bizexpenses_expense_element_media', 'table' => 'bizexpenses_expense_element_media',
'external' => 'bizexpenses_expense_element_media_dst', 'external' => 'bizexpenses_expense_element_media_dst',
@ -81,16 +81,16 @@ final class ExpenseElementMapper extends DataMapperFactory
*/ */
public const BELONGS_TO = [ public const BELONGS_TO = [
'ref' => [ 'ref' => [
'mapper' => AccountMapper::class, 'mapper' => AccountMapper::class,
'external' => 'bizexpenses_expense_element_ref', 'external' => 'bizexpenses_expense_element_ref',
], ],
'supplier' => [ 'supplier' => [
'mapper' => SupplierMapper::class, 'mapper' => SupplierMapper::class,
'external' => 'bizexpenses_expense_element_supplier', 'external' => 'bizexpenses_expense_element_supplier',
], ],
'approvedBy' => [ 'approvedBy' => [
'mapper' => AccountMapper::class, 'mapper' => AccountMapper::class,
'external' => 'bizexpenses_expense_element_approvedby', 'external' => 'bizexpenses_expense_element_approvedby',
], ],
]; ];
@ -102,8 +102,8 @@ final class ExpenseElementMapper extends DataMapperFactory
*/ */
public const OWNS_ONE = [ public const OWNS_ONE = [
'type' => [ 'type' => [
'mapper' => ExpenseElementTypeMapper::class, 'mapper' => ExpenseElementTypeMapper::class,
'external' => 'bizexpenses_expense_element_type', 'external' => 'bizexpenses_expense_element_type',
], ],
]; ];

View File

@ -18,7 +18,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n; use phpOMS\Localization\BaseStringL11n;
/** /**
* mapper class. * Expense element type l11n mapper class.
* *
* @package Modules\BusinessExpenses\Models * @package Modules\BusinessExpenses\Models
* @license OMS License 2.0 * @license OMS License 2.0

View File

@ -37,8 +37,8 @@ final class ExpenseElementTypeMapper extends DataMapperFactory
* @since 1.0.0 * @since 1.0.0
*/ */
public const COLUMNS = [ public const COLUMNS = [
'bizexpenses_expense_element_type_id' => ['name' => 'bizexpenses_expense_element_type_id', 'type' => 'int', 'internal' => 'id'], 'bizexpenses_expense_element_type_id' => ['name' => 'bizexpenses_expense_element_type_id', 'type' => 'int', 'internal' => 'id'],
'bizexpenses_expense_element_type_name' => ['name' => 'bizexpenses_expense_element_type_name', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true], 'bizexpenses_expense_element_type_name' => ['name' => 'bizexpenses_expense_element_type_name', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true],
]; ];
/** /**

View File

@ -20,7 +20,7 @@ use Modules\Media\Models\MediaMapper;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* mapper class. * Expense mapper class.
* *
* @package Modules\BusinessExpenses\Models * @package Modules\BusinessExpenses\Models
* @license OMS License 2.0 * @license OMS License 2.0
@ -39,21 +39,21 @@ final class ExpenseMapper extends DataMapperFactory
* @since 1.0.0 * @since 1.0.0
*/ */
public const COLUMNS = [ public const COLUMNS = [
'bizexpenses_expense_id' => ['name' => 'bizexpenses_expense_id', 'type' => 'int', 'internal' => 'id'], 'bizexpenses_expense_id' => ['name' => 'bizexpenses_expense_id', 'type' => 'int', 'internal' => 'id'],
'bizexpenses_expense_status' => ['name' => 'bizexpenses_expense_status', 'type' => 'int', 'internal' => 'status'], 'bizexpenses_expense_status' => ['name' => 'bizexpenses_expense_status', 'type' => 'int', 'internal' => 'status'],
'bizexpenses_expense_description' => ['name' => 'bizexpenses_expense_description', 'type' => 'string', 'internal' => 'description'], 'bizexpenses_expense_description' => ['name' => 'bizexpenses_expense_description', 'type' => 'string', 'internal' => 'description'],
'bizexpenses_expense_approved' => ['name' => 'bizexpenses_expense_approved', 'type' => 'bool', 'internal' => 'approved'], 'bizexpenses_expense_approved' => ['name' => 'bizexpenses_expense_approved', 'type' => 'bool', 'internal' => 'approved'],
'bizexpenses_expense_approvedby' => ['name' => 'bizexpenses_expense_approvedby', 'type' => 'int', 'internal' => 'approvedBy'], 'bizexpenses_expense_approvedby' => ['name' => 'bizexpenses_expense_approvedby', 'type' => 'int', 'internal' => 'approvedBy'],
'bizexpenses_expense_paid' => ['name' => 'bizexpenses_expense_paid', 'type' => 'bool', 'internal' => 'paid'], 'bizexpenses_expense_paid' => ['name' => 'bizexpenses_expense_paid', 'type' => 'bool', 'internal' => 'paid'],
'bizexpenses_expense_net' => ['name' => 'bizexpenses_expense_net', 'type' => 'Serializable', 'internal' => 'net'], 'bizexpenses_expense_net' => ['name' => 'bizexpenses_expense_net', 'type' => 'Serializable', 'internal' => 'net'],
'bizexpenses_expense_gross' => ['name' => 'bizexpenses_expense_gross', 'type' => 'Serializable', 'internal' => 'gross'], 'bizexpenses_expense_gross' => ['name' => 'bizexpenses_expense_gross', 'type' => 'Serializable', 'internal' => 'gross'],
'bizexpenses_expense_taxp' => ['name' => 'bizexpenses_expense_taxp', 'type' => 'Serializable', 'internal' => 'taxP'], 'bizexpenses_expense_taxp' => ['name' => 'bizexpenses_expense_taxp', 'type' => 'Serializable', 'internal' => 'taxP'],
'bizexpenses_expense_created' => ['name' => 'bizexpenses_expense_created', 'type' => 'DateTimeImmutable', 'internal' => 'createdAt'], 'bizexpenses_expense_created' => ['name' => 'bizexpenses_expense_created', 'type' => 'DateTimeImmutable', 'internal' => 'createdAt'],
'bizexpenses_expense_start' => ['name' => 'bizexpenses_expense_start', 'type' => 'DateTime', 'internal' => 'start'], 'bizexpenses_expense_start' => ['name' => 'bizexpenses_expense_start', 'type' => 'DateTime', 'internal' => 'start'],
'bizexpenses_expense_end' => ['name' => 'bizexpenses_expense_end', 'type' => 'DateTime', 'internal' => 'end'], 'bizexpenses_expense_end' => ['name' => 'bizexpenses_expense_end', 'type' => 'DateTime', 'internal' => 'end'],
'bizexpenses_expense_type' => ['name' => 'bizexpenses_expense_type', 'type' => 'int', 'internal' => 'type'], 'bizexpenses_expense_type' => ['name' => 'bizexpenses_expense_type', 'type' => 'int', 'internal' => 'type'],
'bizexpenses_expense_from' => ['name' => 'bizexpenses_expense_from', 'type' => 'int', 'internal' => 'from'], 'bizexpenses_expense_from' => ['name' => 'bizexpenses_expense_from', 'type' => 'int', 'internal' => 'from'],
'bizexpenses_expense_country' => ['name' => 'bizexpenses_expense_country', 'type' => 'string', 'internal' => 'country'], 'bizexpenses_expense_country' => ['name' => 'bizexpenses_expense_country', 'type' => 'string', 'internal' => 'country'],
]; ];
/** /**
@ -64,12 +64,12 @@ final class ExpenseMapper extends DataMapperFactory
*/ */
public const HAS_MANY = [ public const HAS_MANY = [
'elements' => [ 'elements' => [
'mapper' => ExpenseElementMapper::class, 'mapper' => ExpenseElementMapper::class,
'table' => 'bizexpenses_expense_element', 'table' => 'bizexpenses_expense_element',
'self' => 'bizexpenses_expense_element_expense', 'self' => 'bizexpenses_expense_element_expense',
'external' => null, 'external' => null,
], ],
'files' => [ 'files' => [
'mapper' => MediaMapper::class, 'mapper' => MediaMapper::class,
'table' => 'bizexpenses_expense_media', 'table' => 'bizexpenses_expense_media',
'external' => 'bizexpenses_expense_media_dst', 'external' => 'bizexpenses_expense_media_dst',
@ -91,12 +91,12 @@ final class ExpenseMapper extends DataMapperFactory
*/ */
public const BELONGS_TO = [ public const BELONGS_TO = [
'from' => [ 'from' => [
'mapper' => AccountMapper::class, 'mapper' => AccountMapper::class,
'external' => 'bizexpenses_expense_from', 'external' => 'bizexpenses_expense_from',
], ],
'approvedBy' => [ 'approvedBy' => [
'mapper' => AccountMapper::class, 'mapper' => AccountMapper::class,
'external' => 'bizexpenses_expense_approvedby', 'external' => 'bizexpenses_expense_approvedby',
], ],
]; ];
@ -108,8 +108,8 @@ final class ExpenseMapper extends DataMapperFactory
*/ */
public const OWNS_ONE = [ public const OWNS_ONE = [
'type' => [ 'type' => [
'mapper' => ExpenseTypeMapper::class, 'mapper' => ExpenseTypeMapper::class,
'external' => 'bizexpenses_expense_type', 'external' => 'bizexpenses_expense_type',
], ],
]; ];

View File

@ -18,7 +18,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n; use phpOMS\Localization\BaseStringL11n;
/** /**
* mapper class. * Expense type l11n mapper class.
* *
* @package Modules\BusinessExpenses\Models * @package Modules\BusinessExpenses\Models
* @license OMS License 2.0 * @license OMS License 2.0

View File

@ -37,8 +37,8 @@ final class ExpenseTypeMapper extends DataMapperFactory
* @since 1.0.0 * @since 1.0.0
*/ */
public const COLUMNS = [ public const COLUMNS = [
'bizexpenses_expense_type_id' => ['name' => 'bizexpenses_expense_type_id', 'type' => 'int', 'internal' => 'id'], 'bizexpenses_expense_type_id' => ['name' => 'bizexpenses_expense_type_id', 'type' => 'int', 'internal' => 'id'],
'bizexpenses_expense_type_name' => ['name' => 'bizexpenses_expense_type_name', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true], 'bizexpenses_expense_type_name' => ['name' => 'bizexpenses_expense_type_name', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true],
]; ];
/** /**

View File

@ -30,7 +30,7 @@ return ['BusinessExpenses' => [
'Report' => 'Bericht', 'Report' => 'Bericht',
'Start' => 'Start', 'Start' => 'Start',
'Status' => 'Status', 'Status' => 'Status',
'Overview' => 'Übersicht', 'Overview' => 'Übersicht',
'Clocking' => 'Zeiterfassung', 'Clocking' => 'Zeiterfassung',
'Type' => 'Typ', 'Type' => 'Typ',
]]; ]];

View File

@ -30,7 +30,7 @@ return ['BusinessExpenses' => [
'Report' => 'Report', 'Report' => 'Report',
'Start' => 'Start', 'Start' => 'Start',
'Status' => 'Status', 'Status' => 'Status',
'Overview' => 'Overview', 'Overview' => 'Overview',
'Clocking' => 'Clocking', 'Clocking' => 'Clocking',
'Type' => 'Type', 'Type' => 'Type',
]]; ]];

View File

@ -26,29 +26,29 @@ echo $this->data['nav']->render(); ?>
<section class="portlet"> <section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Expenses'); ?><i class="g-icon download btn end-xs">download</i></div> <div class="portlet-head"><?= $this->getHtml('Expenses'); ?><i class="g-icon download btn end-xs">download</i></div>
<div class="slider"> <div class="slider">
<table id="iSalesClientList" class="default sticky"> <table id="iExpenseList" class="default sticky">
<thead> <thead>
<tr> <tr>
<td> <td>
<td><?= $this->getHtml('ID', '0', '0'); ?> <td><?= $this->getHtml('ID', '0', '0'); ?>
<label for="iSalesClientList-sort-1"> <label for="iExpenseList-sort-1">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-1"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-1">
<i class="sort-asc g-icon">expand_less</i> <i class="sort-asc g-icon">expand_less</i>
</label> </label>
<label for="iSalesClientList-sort-2"> <label for="iExpenseList-sort-2">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-2"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-2">
<i class="sort-desc g-icon">expand_more</i> <i class="sort-desc g-icon">expand_more</i>
</label> </label>
<label> <label>
<i class="filter g-icon">filter_alt</i> <i class="filter g-icon">filter_alt</i>
</label> </label>
<td><?= $this->getHtml('Status'); ?> <td><?= $this->getHtml('Status'); ?>
<label for="iSalesClientList-sort-3"> <label for="iExpenseList-sort-3">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-3"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-3">
<i class="sort-asc g-icon">expand_less</i> <i class="sort-asc g-icon">expand_less</i>
</label> </label>
<label for="iSalesClientList-sort-4"> <label for="iExpenseList-sort-4">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-4"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-4">
<i class="sort-desc g-icon">expand_more</i> <i class="sort-desc g-icon">expand_more</i>
</label> </label>
<label> <label>
@ -63,56 +63,57 @@ echo $this->data['nav']->render(); ?>
<i class="filter g-icon">filter_alt</i> <i class="filter g-icon">filter_alt</i>
</label> </label>
<td class="wf-100"><?= $this->getHtml('From'); ?> <td class="wf-100"><?= $this->getHtml('From'); ?>
<label for="iSalesClientList-sort-5"> <label for="iExpenseList-sort-5">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-5"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-5">
<i class="sort-asc g-icon">expand_less</i> <i class="sort-asc g-icon">expand_less</i>
</label> </label>
<label for="iSalesClientList-sort-6"> <label for="iExpenseList-sort-6">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-6"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-6">
<i class="sort-desc g-icon">expand_more</i> <i class="sort-desc g-icon">expand_more</i>
</label> </label>
<label> <label>
<i class="filter g-icon">filter_alt</i> <i class="filter g-icon">filter_alt</i>
</label> </label>
<td><?= $this->getHtml('Amount'); ?> <td><?= $this->getHtml('Amount'); ?>
<label for="iSalesClientList-sort-7"> <label for="iExpenseList-sort-7">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-7"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-7">
<i class="sort-asc g-icon">expand_less</i> <i class="sort-asc g-icon">expand_less</i>
</label> </label>
<label for="iSalesClientList-sort-8"> <label for="iExpenseList-sort-8">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-8"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-8">
<i class="sort-desc g-icon">expand_more</i> <i class="sort-desc g-icon">expand_more</i>
</label> </label>
<label> <label>
<i class="filter g-icon">filter_alt</i> <i class="filter g-icon">filter_alt</i>
</label> </label>
<td><?= $this->getHtml('Start'); ?> <td><?= $this->getHtml('Start'); ?>
<label for="iSalesClientList-sort-7"> <label for="iExpenseList-sort-7">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-7"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-7">
<i class="sort-asc g-icon">expand_less</i> <i class="sort-asc g-icon">expand_less</i>
</label> </label>
<label for="iSalesClientList-sort-8"> <label for="iExpenseList-sort-8">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-8"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-8">
<i class="sort-desc g-icon">expand_more</i> <i class="sort-desc g-icon">expand_more</i>
</label> </label>
<label> <label>
<i class="filter g-icon">filter_alt</i> <i class="filter g-icon">filter_alt</i>
</label> </label>
<td><?= $this->getHtml('End'); ?> <td><?= $this->getHtml('End'); ?>
<label for="iSalesClientList-sort-7"> <label for="iExpenseList-sort-7">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-7"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-7">
<i class="sort-asc g-icon">expand_less</i> <i class="sort-asc g-icon">expand_less</i>
</label> </label>
<label for="iSalesClientList-sort-8"> <label for="iExpenseList-sort-8">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-8"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-8">
<i class="sort-desc g-icon">expand_more</i> <i class="sort-desc g-icon">expand_more</i>
</label> </label>
<label> <label>
<i class="filter g-icon">filter_alt</i> <i class="filter g-icon">filter_alt</i>
</label> </label>
<tbody> <tbody>
<?php $count = 0; foreach ($expenses as $key => $value) : ++$count; <?php $count = 0;
$url = UriFactory::build('{/base}/businessexpenses/expense?{?}&id=' . $value->id); foreach ($expenses as $key => $value) : ++$count;
$url = UriFactory::build('{/base}/businessexpenses/expense?{?}&id=' . $value->id);
?> ?>
<tr data-href="<?= $url; ?>"> <tr data-href="<?= $url; ?>">
<td> <td>
@ -121,7 +122,7 @@ echo $this->data['nav']->render(); ?>
<td class="centerText" data-label="<?= $this->getHtml('Paid'); ?>"><a href="<?= $url; ?>"><i class="g-icon"><?= $value->paid ? 'check' : 'close'; ?></i></a> <td class="centerText" data-label="<?= $this->getHtml('Paid'); ?>"><a href="<?= $url; ?>"><i class="g-icon"><?= $value->paid ? 'check' : 'close'; ?></i></a>
<td class="centerText" data-label="<?= $this->getHtml('Approved'); ?>"><a href="<?= $url; ?>"><i class="g-icon"><?= $value->approved ? 'check' : 'close'; ?></i></a> <td class="centerText" data-label="<?= $this->getHtml('Approved'); ?>"><a href="<?= $url; ?>"><i class="g-icon"><?= $value->approved ? 'check' : 'close'; ?></i></a>
<td data-label="<?= $this->getHtml('From'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($this->renderUserName('%3$s %2$s %1$s', [$value->from->name1, $value->from->name2, $value->from->name3])); ?></a> <td data-label="<?= $this->getHtml('From'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($this->renderUserName('%3$s %2$s %1$s', [$value->from->name1, $value->from->name2, $value->from->name3])); ?></a>
<td data-label="<?= $this->getHtml('Amount'); ?>"><a href="<?= $url; ?>"><?= $this->getCurrency($value->gross); ?></a> <td data-label="<?= $this->getHtml('Amount'); ?>"><a href="<?= $url; ?>"><?= $this->getCurrency($value->gross, symbol: ''); ?></a>
<td data-label="<?= $this->getHtml('Start'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->start->format('Y-m-d')); ?></a> <td data-label="<?= $this->getHtml('Start'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->start->format('Y-m-d')); ?></a>
<td data-label="<?= $this->getHtml('End'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->end->format('Y-m-d')); ?></a> <td data-label="<?= $this->getHtml('End'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->end->format('Y-m-d')); ?></a>
<?php endforeach; ?> <?php endforeach; ?>

View File

@ -14,10 +14,9 @@
declare(strict_types=1); declare(strict_types=1);
use Modules\BusinessExpenses\Models\NullExpense; use Modules\BusinessExpenses\Models\NullExpense;
use phpOMS\Uri\UriFactory;
/** @var \phpOMS\Views\View $this */ /** @var \phpOMS\Views\View $this */
$expense = $this->getData('expense') ?? new NullExpense(); $expense = $this->getData('expense') ?? new NullExpense();
$sessions = $this->data['sessions'] ?? []; $sessions = $this->data['sessions'] ?? [];
echo $this->data['nav']->render(); ?> echo $this->data['nav']->render(); ?>
@ -109,17 +108,17 @@ echo $this->data['nav']->render(); ?>
<section class="portlet"> <section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Expenses'); ?><i class="g-icon download btn end-xs">download</i></div> <div class="portlet-head"><?= $this->getHtml('Expenses'); ?><i class="g-icon download btn end-xs">download</i></div>
<div class="slider"> <div class="slider">
<table id="iSalesClientList" class="default sticky"> <table id="iExpenseList" class="default sticky">
<thead> <thead>
<tr> <tr>
<td> <td>
<td><?= $this->getHtml('ID', '0', '0'); ?> <td><?= $this->getHtml('ID', '0', '0'); ?>
<label for="iSalesClientList-sort-1"> <label for="iExpenseList-sort-1">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-1"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-1">
<i class="sort-asc g-icon">expand_less</i> <i class="sort-asc g-icon">expand_less</i>
</label> </label>
<label for="iSalesClientList-sort-2"> <label for="iExpenseList-sort-2">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-2"> <input type="radio" name="iExpenseList-sort" id="iExpenseList-sort-2">
<i class="sort-desc g-icon">expand_more</i> <i class="sort-desc g-icon">expand_more</i>
</label> </label>
<label> <label>
@ -245,21 +244,21 @@ echo $this->data['nav']->render(); ?>
<td> <td>
<?php <?php
if ($lastOpenSession !== null if ($lastOpenSession !== null
&& $session->getStart()->format('Y-m-d') === $lastOpenSession->getStart()->format('Y-m-d') && $session->start->format('Y-m-d') === $lastOpenSession->start->format('Y-m-d')
) : ?> ) : ?>
<span class="tag">Today</span> <span class="tag">Today</span>
<?php else : ?> <?php else : ?>
<?= $session->getStart()->format('Y-m-d'); ?> - <?= $this->getHtml('D' . $session->getStart()->format('w')); ?> <?= $session->start->format('Y-m-d'); ?> - <?= $this->getHtml('D' . $session->start->format('w')); ?>
<?php endif; ?> <?php endif; ?>
<td><span class="tag"><?= $this->getHtml('CT' . $session->getType()); ?></span> <td><span class="tag"><?= $this->getHtml('CT' . $session->type); ?></span>
<td><span class="tag"><?= $this->getHtml('CS' . $session->getStatus()); ?></span> <td><span class="tag"><?= $this->getHtml('CS' . $session->status); ?></span>
<td><?= $session->getStart()->format('H:i'); ?> <td><?= $session->start->format('H:i'); ?>
<td><?= (int) ($session->getBreak() / 3600); ?>h <?= ((int) ($session->getBreak() / 60) % 60); ?>m <td><?= (int) ($session->getBreak() / 3600); ?>h <?= ((int) ($session->getBreak() / 60) % 60); ?>m
<td><?= $session->getEnd() !== null ? $session->getEnd()->format('H:i') : ''; ?> <td><?= $session->getEnd() !== null ? $session->getEnd()->format('H:i') : ''; ?>
<td><?= (int) ($session->getBusy() / 3600); ?>h <?= ((int) ($session->getBusy() / 60) % 60); ?>m <td><?= (int) ($session->getBusy() / 3600); ?>h <?= ((int) ($session->getBusy() / 60) % 60); ?>m
<?php <?php
$busy['week'] += $session->getBusy(); $busy['week'] += $session->getBusy();
if ($session->getStart()->getTimestamp() < $startWeek->getTimestamp() if ($session->start->getTimestamp() < $startWeek->getTimestamp()
|| $count === $sessionCount || $count === $sessionCount
) : ?> ) : ?>
<tr> <tr>
@ -273,7 +272,7 @@ echo $this->data['nav']->render(); ?>
?> ?>
<?php <?php
$busy['month'] += $session->getBusy(); $busy['month'] += $session->getBusy();
if ($session->getStart()->getTimestamp() < $startMonth->getTimestamp() if ($session->start->getTimestamp() < $startMonth->getTimestamp()
|| $count === $sessionCount || $count === $sessionCount
) : ?> ) : ?>
<tr> <tr>

View File

@ -75,8 +75,8 @@ final class Autoloader
*/ */
public static function defaultAutoloader(string $class) : void public static function defaultAutoloader(string $class) : void
{ {
$class = \ltrim($class, '\\'); $class = \ltrim($class, '\\');
$class = \strtr($class, '_\\', '//'); $class = \strtr($class, '_\\', '//');
if (\stripos($class, 'Web/Backend') !== false || \stripos($class, 'Web/Api') !== false) { if (\stripos($class, 'Web/Backend') !== false || \stripos($class, 'Web/Api') !== false) {
$class = \is_dir(__DIR__ . '/Web') ? $class : \str_replace('Web/', 'MainRepository/Web/', $class); $class = \is_dir(__DIR__ . '/Web') ? $class : \str_replace('Web/', 'MainRepository/Web/', $class);

View File

@ -1,4 +1,15 @@
<?php <?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\BusinessExpenses\tests
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1); declare(strict_types=1);
\ini_set('memory_limit', '2048M'); \ini_set('memory_limit', '2048M');
@ -67,10 +78,10 @@ $GLOBALS['is_github'] = $IS_GITHUB;
$tmp = FileLogger::getInstance(__DIR__ . '/../Logs'); $tmp = FileLogger::getInstance(__DIR__ . '/../Logs');
$CONFIG = [ $CONFIG = [
'db' => [ 'db' => [
'core' => [ 'core' => [
'masters' => [ 'masters' => [
'admin' => [ 'admin' => [
'db' => 'mysql', /* db type */ 'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */ 'port' => '3306', /* db host port */
@ -80,7 +91,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'insert' => [ 'insert' => [
'db' => 'mysql', /* db type */ 'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */ 'port' => '3306', /* db host port */
@ -90,7 +101,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'select' => [ 'select' => [
'db' => 'mysql', /* db type */ 'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */ 'port' => '3306', /* db host port */
@ -100,7 +111,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'update' => [ 'update' => [
'db' => 'mysql', /* db type */ 'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */ 'port' => '3306', /* db host port */
@ -110,7 +121,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'delete' => [ 'delete' => [
'db' => 'mysql', /* db type */ 'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */ 'port' => '3306', /* db host port */
@ -120,7 +131,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'schema' => [ 'schema' => [
'db' => 'mysql', /* db type */ 'db' => 'mysql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '3306', /* db host port */ 'port' => '3306', /* db host port */
@ -132,7 +143,7 @@ $CONFIG = [
], ],
], ],
'postgresql' => [ 'postgresql' => [
'admin' => [ 'admin' => [
'db' => 'pgsql', /* db type */ 'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */ 'port' => '5432', /* db host port */
@ -142,7 +153,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'insert' => [ 'insert' => [
'db' => 'pgsql', /* db type */ 'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */ 'port' => '5432', /* db host port */
@ -152,7 +163,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'select' => [ 'select' => [
'db' => 'pgsql', /* db type */ 'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */ 'port' => '5432', /* db host port */
@ -162,7 +173,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'update' => [ 'update' => [
'db' => 'pgsql', /* db type */ 'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */ 'port' => '5432', /* db host port */
@ -172,7 +183,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'delete' => [ 'delete' => [
'db' => 'pgsql', /* db type */ 'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */ 'port' => '5432', /* db host port */
@ -182,7 +193,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'schema' => [ 'schema' => [
'db' => 'pgsql', /* db type */ 'db' => 'pgsql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '5432', /* db host port */ 'port' => '5432', /* db host port */
@ -194,37 +205,37 @@ $CONFIG = [
], ],
], ],
'sqlite' => [ 'sqlite' => [
'admin' => [ 'admin' => [
'db' => 'sqlite', /* db type */ 'db' => 'sqlite', /* db type */
'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'insert' => [ 'insert' => [
'db' => 'sqlite', /* db type */ 'db' => 'sqlite', /* db type */
'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'select' => [ 'select' => [
'db' => 'sqlite', /* db type */ 'db' => 'sqlite', /* db type */
'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'update' => [ 'update' => [
'db' => 'sqlite', /* db type */ 'db' => 'sqlite', /* db type */
'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'delete' => [ 'delete' => [
'db' => 'sqlite', /* db type */ 'db' => 'sqlite', /* db type */
'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'schema' => [ 'schema' => [
'db' => 'sqlite', /* db type */ 'db' => 'sqlite', /* db type */
'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
@ -232,7 +243,7 @@ $CONFIG = [
], ],
], ],
'mssql' => [ 'mssql' => [
'admin' => [ 'admin' => [
'db' => 'mssql', /* db type */ 'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */ 'port' => '1433', /* db host port */
@ -242,7 +253,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'insert' => [ 'insert' => [
'db' => 'mssql', /* db type */ 'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */ 'port' => '1433', /* db host port */
@ -252,7 +263,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'select' => [ 'select' => [
'db' => 'mssql', /* db type */ 'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */ 'port' => '1433', /* db host port */
@ -262,7 +273,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'update' => [ 'update' => [
'db' => 'mssql', /* db type */ 'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */ 'port' => '1433', /* db host port */
@ -272,7 +283,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'delete' => [ 'delete' => [
'db' => 'mssql', /* db type */ 'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */ 'port' => '1433', /* db host port */
@ -282,7 +293,7 @@ $CONFIG = [
'weight' => 1000, /* db table prefix */ 'weight' => 1000, /* db table prefix */
'datetimeformat' => 'Y-m-d H:i:s', 'datetimeformat' => 'Y-m-d H:i:s',
], ],
'schema' => [ 'schema' => [
'db' => 'mssql', /* db type */ 'db' => 'mssql', /* db type */
'host' => '127.0.0.1', /* db host address */ 'host' => '127.0.0.1', /* db host address */
'port' => '1433', /* db host port */ 'port' => '1433', /* db host port */
@ -322,16 +333,16 @@ $CONFIG = [
'password' => '123456', 'password' => '123456',
], ],
], ],
'log' => [ 'log' => [
'file' => [ 'file' => [
'path' => __DIR__ . '/Logs', 'path' => __DIR__ . '/Logs',
], ],
], ],
'page' => [ 'page' => [
'root' => '/', 'root' => '/',
'https' => false, 'https' => false,
], ],
'app' => [ 'app' => [
'path' => __DIR__, 'path' => __DIR__,
'default' => [ 'default' => [
'app' => 'Backend', 'app' => 'Backend',
@ -350,7 +361,7 @@ $CONFIG = [
], ],
], ],
], ],
'socket' => [ 'socket' => [
'master' => [ 'master' => [
'host' => '127.0.0.1', 'host' => '127.0.0.1',
'limit' => 300, 'limit' => 300,
@ -360,7 +371,7 @@ $CONFIG = [
'language' => [ 'language' => [
'en', 'en',
], ],
'apis' => [ 'apis' => [
], ],
]; ];

View File

@ -17,7 +17,6 @@ namespace Modules\BusinessExpenses\tests\Controller\Api;
use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse; use phpOMS\Message\Http\HttpResponse;
use phpOMS\System\File\Local\Directory; use phpOMS\System\File\Local\Directory;
use phpOMS\Uri\HttpUri;
use phpOMS\Utils\TestUtils; use phpOMS\Utils\TestUtils;
trait ApiExpenseControllerTrait trait ApiExpenseControllerTrait
@ -25,7 +24,7 @@ trait ApiExpenseControllerTrait
public function testExpenseCreate() : void public function testExpenseCreate() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('type', 1); $request->setData('type', 1);
@ -43,7 +42,7 @@ trait ApiExpenseControllerTrait
} }
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;

View File

@ -53,14 +53,14 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
protected string $appName = 'Api'; protected string $appName = 'Api';
}; };
$this->app->dbPool = $GLOBALS['dbpool']; $this->app->dbPool = $GLOBALS['dbpool'];
$this->app->unitId = 1; $this->app->unitId = 1;
$this->app->accountManager = new AccountManager($GLOBALS['session']); $this->app->accountManager = new AccountManager($GLOBALS['session']);
$this->app->appSettings = new CoreSettings(); $this->app->appSettings = new CoreSettings();
$this->app->moduleManager = new ModuleManager($this->app, __DIR__ . '/../../../../Modules/'); $this->app->moduleManager = new ModuleManager($this->app, __DIR__ . '/../../../../Modules/');
$this->app->dispatcher = new Dispatcher($this->app); $this->app->dispatcher = new Dispatcher($this->app);
$this->app->eventManager = new EventManager($this->app->dispatcher); $this->app->eventManager = new EventManager($this->app->dispatcher);
$this->app->l11nManager = new L11nManager(); $this->app->l11nManager = new L11nManager();
$this->app->eventManager->importFromFile(__DIR__ . '/../../../../Web/Api/Hooks.php'); $this->app->eventManager->importFromFile(__DIR__ . '/../../../../Web/Api/Hooks.php');
$account = new Account(); $account = new Account();