Fixes for 1.12 (#4655)

* fix missing locales
* bump composer packages
* changed translations
* assert timezone on customer
* include user accountNumber in excel export
* improve next customer number calculation
* fix z-index of contextmenu / action dropdown
This commit is contained in:
Kevin Papst
2024-02-22 13:03:09 +01:00
committed by GitHub
parent 36c578452e
commit f016221e8e
28 changed files with 892 additions and 210 deletions

View File

@@ -70,7 +70,10 @@ export default class KimaiContextMenu {
{ {
const dropdownElement = this.getContextMenuElement(); const dropdownElement = this.getContextMenuElement();
dropdownElement.style.zIndex = '1021'; // stay on top of sticky elements (like table header) if (!dropdownElement.classList.contains('action-dropdown')) {
dropdownElement.classList.add('action-dropdown');
}
dropdownElement.innerHTML = html; dropdownElement.innerHTML = html;
dropdownElement.style.position = 'fixed'; dropdownElement.style.position = 'fixed';
dropdownElement.style.top = (event.clientY) + 'px'; dropdownElement.style.top = (event.clientY) + 'px';

View File

@@ -153,3 +153,10 @@ table.table-hover {
} }
} }
} }
/* For the context menu */
.action-dropdown,
.actions .dropdown .dropdown-menu {
// stay on top of sticky elements (like table header)
z-index: 1021;
}

98
composer.lock generated
View File

@@ -661,16 +661,16 @@
}, },
{ {
"name": "doctrine/dbal", "name": "doctrine/dbal",
"version": "3.8.1", "version": "3.8.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/dbal.git", "url": "https://github.com/doctrine/dbal.git",
"reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2" "reference": "a19a1d05ca211f41089dffcc387733a6875196cb"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/c9ea252cdce4da324ede3d6c5913dd89f769afd2", "url": "https://api.github.com/repos/doctrine/dbal/zipball/a19a1d05ca211f41089dffcc387733a6875196cb",
"reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2", "reference": "a19a1d05ca211f41089dffcc387733a6875196cb",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -754,7 +754,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/dbal/issues", "issues": "https://github.com/doctrine/dbal/issues",
"source": "https://github.com/doctrine/dbal/tree/3.8.1" "source": "https://github.com/doctrine/dbal/tree/3.8.2"
}, },
"funding": [ "funding": [
{ {
@@ -770,7 +770,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-02-03T17:33:49+00:00" "time": "2024-02-12T18:36:36+00:00"
}, },
{ {
"name": "doctrine/deprecations", "name": "doctrine/deprecations",
@@ -1122,16 +1122,16 @@
}, },
{ {
"name": "doctrine/inflector", "name": "doctrine/inflector",
"version": "2.0.9", "version": "2.0.10",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/inflector.git", "url": "https://github.com/doctrine/inflector.git",
"reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65" "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65", "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc",
"reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65", "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -1193,7 +1193,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/inflector/issues", "issues": "https://github.com/doctrine/inflector/issues",
"source": "https://github.com/doctrine/inflector/tree/2.0.9" "source": "https://github.com/doctrine/inflector/tree/2.0.10"
}, },
"funding": [ "funding": [
{ {
@@ -1209,7 +1209,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-01-15T18:05:13+00:00" "time": "2024-02-18T20:23:39+00:00"
}, },
{ {
"name": "doctrine/instantiator", "name": "doctrine/instantiator",
@@ -2520,16 +2520,16 @@
}, },
{ {
"name": "league/csv", "name": "league/csv",
"version": "9.14.0", "version": "9.15.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/thephpleague/csv.git", "url": "https://github.com/thephpleague/csv.git",
"reference": "34bf0df7340b60824b9449b5c526fcc3325070d5" "reference": "fa7e2441c0bc9b2360f4314fd6c954f7ff40d435"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/thephpleague/csv/zipball/34bf0df7340b60824b9449b5c526fcc3325070d5", "url": "https://api.github.com/repos/thephpleague/csv/zipball/fa7e2441c0bc9b2360f4314fd6c954f7ff40d435",
"reference": "34bf0df7340b60824b9449b5c526fcc3325070d5", "reference": "fa7e2441c0bc9b2360f4314fd6c954f7ff40d435",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2544,12 +2544,12 @@
"ext-xdebug": "*", "ext-xdebug": "*",
"friendsofphp/php-cs-fixer": "^v3.22.0", "friendsofphp/php-cs-fixer": "^v3.22.0",
"phpbench/phpbench": "^1.2.15", "phpbench/phpbench": "^1.2.15",
"phpstan/phpstan": "^1.10.50", "phpstan/phpstan": "^1.10.57",
"phpstan/phpstan-deprecation-rules": "^1.1.4", "phpstan/phpstan-deprecation-rules": "^1.1.4",
"phpstan/phpstan-phpunit": "^1.3.15", "phpstan/phpstan-phpunit": "^1.3.15",
"phpstan/phpstan-strict-rules": "^1.5.2", "phpstan/phpstan-strict-rules": "^1.5.2",
"phpunit/phpunit": "^10.5.3", "phpunit/phpunit": "^10.5.9",
"symfony/var-dumper": "^6.4.0" "symfony/var-dumper": "^6.4.2"
}, },
"suggest": { "suggest": {
"ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes",
@@ -2605,7 +2605,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2023-12-29T07:34:53+00:00" "time": "2024-02-20T20:00:00+00:00"
}, },
{ {
"name": "lorenzo/pinky", "name": "lorenzo/pinky",
@@ -3183,16 +3183,16 @@
}, },
{ {
"name": "nelmio/api-doc-bundle", "name": "nelmio/api-doc-bundle",
"version": "v4.19.3", "version": "v4.20.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nelmio/NelmioApiDocBundle.git", "url": "https://github.com/nelmio/NelmioApiDocBundle.git",
"reference": "daadb0b567c637d737f58fd25da0b4db2321560d" "reference": "61c08f139e104db21b12832173b08fa37c22e619"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/daadb0b567c637d737f58fd25da0b4db2321560d", "url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/61c08f139e104db21b12832173b08fa37c22e619",
"reference": "daadb0b567c637d737f58fd25da0b4db2321560d", "reference": "61c08f139e104db21b12832173b08fa37c22e619",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3287,9 +3287,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/nelmio/NelmioApiDocBundle/issues", "issues": "https://github.com/nelmio/NelmioApiDocBundle/issues",
"source": "https://github.com/nelmio/NelmioApiDocBundle/tree/v4.19.3" "source": "https://github.com/nelmio/NelmioApiDocBundle/tree/v4.20.0"
}, },
"time": "2024-02-07T13:21:48+00:00" "time": "2024-02-13T14:15:29+00:00"
}, },
{ {
"name": "nelmio/cors-bundle", "name": "nelmio/cors-bundle",
@@ -3741,16 +3741,16 @@
}, },
{ {
"name": "phpdocumentor/type-resolver", "name": "phpdocumentor/type-resolver",
"version": "1.8.0", "version": "1.8.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git", "url": "https://github.com/phpDocumentor/TypeResolver.git",
"reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" "reference": "bc3dc91a5e9b14aa06d1d9e90647c5c5a2cc5353"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/bc3dc91a5e9b14aa06d1d9e90647c5c5a2cc5353",
"reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", "reference": "bc3dc91a5e9b14aa06d1d9e90647c5c5a2cc5353",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3793,9 +3793,9 @@
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": { "support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues", "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.1"
}, },
"time": "2024-01-11T11:49:22+00:00" "time": "2024-01-18T19:15:27+00:00"
}, },
{ {
"name": "phpoffice/math", "name": "phpoffice/math",
@@ -10535,16 +10535,16 @@
}, },
{ {
"name": "dama/doctrine-test-bundle", "name": "dama/doctrine-test-bundle",
"version": "v8.0.1", "version": "v8.0.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/dmaicher/doctrine-test-bundle.git", "url": "https://github.com/dmaicher/doctrine-test-bundle.git",
"reference": "e382d27bc03ee04e0fd0ef95391047042792e7cc" "reference": "f10de294e41570d027a301554a609c394d40e669"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/e382d27bc03ee04e0fd0ef95391047042792e7cc", "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/f10de294e41570d027a301554a609c394d40e669",
"reference": "e382d27bc03ee04e0fd0ef95391047042792e7cc", "reference": "f10de294e41570d027a301554a609c394d40e669",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -10597,9 +10597,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/dmaicher/doctrine-test-bundle/issues", "issues": "https://github.com/dmaicher/doctrine-test-bundle/issues",
"source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v8.0.1" "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v8.0.2"
}, },
"time": "2023-12-05T16:11:29+00:00" "time": "2024-02-15T08:28:14+00:00"
}, },
{ {
"name": "doctrine/data-fixtures", "name": "doctrine/data-fixtures",
@@ -10995,16 +10995,16 @@
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
"version": "v5.0.0", "version": "v5.0.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nikic/PHP-Parser.git", "url": "https://github.com/nikic/PHP-Parser.git",
"reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc" "reference": "2218c2252c874a4624ab2f613d86ac32d227bc69"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc", "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/2218c2252c874a4624ab2f613d86ac32d227bc69",
"reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc", "reference": "2218c2252c874a4624ab2f613d86ac32d227bc69",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -11047,9 +11047,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/nikic/PHP-Parser/issues", "issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v5.0.0" "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.1"
}, },
"time": "2024-01-07T17:17:35+00:00" "time": "2024-02-21T19:24:10+00:00"
}, },
{ {
"name": "phar-io/manifest", "name": "phar-io/manifest",
@@ -11164,16 +11164,16 @@
}, },
{ {
"name": "phpstan/phpstan", "name": "phpstan/phpstan",
"version": "1.10.57", "version": "1.10.59",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpstan/phpstan.git", "url": "https://github.com/phpstan/phpstan.git",
"reference": "1627b1d03446904aaa77593f370c5201d2ecc34e" "reference": "e607609388d3a6d418a50a49f7940e8086798281"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e607609388d3a6d418a50a49f7940e8086798281",
"reference": "1627b1d03446904aaa77593f370c5201d2ecc34e", "reference": "e607609388d3a6d418a50a49f7940e8086798281",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -11222,7 +11222,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-01-24T11:51:34+00:00" "time": "2024-02-20T13:59:13+00:00"
}, },
{ {
"name": "phpstan/phpstan-doctrine", "name": "phpstan/phpstan-doctrine",

View File

@@ -13,6 +13,13 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'cs_CZ' =>
[
'date' => 'dd.MM.yy',
'time' => 'H:mm',
'rtl' => false,
'translation' => false,
],
'da' => 'da' =>
[ [
'date' => 'dd.MM.y', 'date' => 'dd.MM.y',
@@ -20,6 +27,20 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'da_DK' =>
[
'date' => 'dd.MM.y',
'time' => 'HH.mm',
'rtl' => false,
'translation' => false,
],
'da_GL' =>
[
'date' => 'dd.MM.y',
'time' => 'HH.mm',
'rtl' => false,
'translation' => false,
],
'de' => 'de' =>
[ [
'date' => 'dd.MM.yy', 'date' => 'dd.MM.yy',
@@ -27,6 +48,20 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'de_AT' =>
[
'date' => 'dd.MM.yy',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'de_BE' =>
[
'date' => 'dd.MM.yy',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'de_CH' => 'de_CH' =>
[ [
'date' => 'dd.MM.yy', 'date' => 'dd.MM.yy',
@@ -34,6 +69,34 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'de_DE' =>
[
'date' => 'dd.MM.yy',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'de_IT' =>
[
'date' => 'dd.MM.yy',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'de_LI' =>
[
'date' => 'dd.MM.yy',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'de_LU' =>
[
'date' => 'dd.MM.yy',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'el' => 'el' =>
[ [
'date' => 'd/M/yy', 'date' => 'd/M/yy',
@@ -41,6 +104,20 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'el_CY' =>
[
'date' => 'd/M/yy',
'time' => 'h:mm a',
'rtl' => false,
'translation' => false,
],
'el_GR' =>
[
'date' => 'd/M/yy',
'time' => 'h:mm a',
'rtl' => false,
'translation' => false,
],
'en' => 'en' =>
[ [
'date' => 'M/d/yy', 'date' => 'M/d/yy',
@@ -69,6 +146,13 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'en_AS' =>
[
'date' => 'M/d/yy',
'time' => 'h:mm a',
'rtl' => false,
'translation' => false,
],
'en_AT' => 'en_AT' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -279,6 +363,13 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'en_GU' =>
[
'date' => 'M/d/yy',
'time' => 'h:mm a',
'rtl' => false,
'translation' => false,
],
'en_GY' => 'en_GY' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -405,6 +496,13 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'en_MH' =>
[
'date' => 'M/d/yy',
'time' => 'h:mm a',
'rtl' => false,
'translation' => false,
],
'en_MO' => 'en_MO' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -412,6 +510,13 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'en_MP' =>
[
'date' => 'M/d/yy',
'time' => 'h:mm a',
'rtl' => false,
'translation' => false,
],
'en_MS' => 'en_MS' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -510,6 +615,13 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'en_PH' =>
[
'date' => 'M/d/yy',
'time' => 'h:mm a',
'rtl' => false,
'translation' => false,
],
'en_PK' => 'en_PK' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -524,6 +636,13 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'en_PR' =>
[
'date' => 'M/d/yy',
'time' => 'h:mm a',
'rtl' => false,
'translation' => false,
],
'en_PW' => 'en_PW' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -664,6 +783,20 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'en_UM' =>
[
'date' => 'M/d/yy',
'time' => 'h:mm a',
'rtl' => false,
'translation' => false,
],
'en_US' =>
[
'date' => 'M/d/yy',
'time' => 'h:mm a',
'rtl' => false,
'translation' => false,
],
'en_VC' => 'en_VC' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -678,6 +811,13 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'en_VI' =>
[
'date' => 'M/d/yy',
'time' => 'h:mm a',
'rtl' => false,
'translation' => false,
],
'en_VU' => 'en_VU' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -797,6 +937,20 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'es_ES' =>
[
'date' => 'd/M/yy',
'time' => 'H:mm',
'rtl' => false,
'translation' => false,
],
'es_GQ' =>
[
'date' => 'd/M/yy',
'time' => 'H:mm',
'rtl' => false,
'translation' => false,
],
'es_GT' => 'es_GT' =>
[ [
'date' => 'd/MM/yy', 'date' => 'd/MM/yy',
@@ -895,6 +1049,13 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'eu_ES' =>
[
'date' => 'yy/M/d',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fa' => 'fa' =>
[ [
'date' => 'y/M/d', 'date' => 'y/M/d',
@@ -902,6 +1063,20 @@
'rtl' => true, 'rtl' => true,
'translation' => true, 'translation' => true,
], ],
'fa_AF' =>
[
'date' => 'y/M/d',
'time' => 'H:mm',
'rtl' => true,
'translation' => false,
],
'fa_IR' =>
[
'date' => 'y/M/d',
'time' => 'H:mm',
'rtl' => true,
'translation' => false,
],
'fi' => 'fi' =>
[ [
'date' => 'd.M.y', 'date' => 'd.M.y',
@@ -909,6 +1084,13 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'fi_FI' =>
[
'date' => 'd.M.y',
'time' => 'H.mm',
'rtl' => false,
'translation' => false,
],
'fo' => 'fo' =>
[ [
'date' => 'dd.MM.yy', 'date' => 'dd.MM.yy',
@@ -916,6 +1098,20 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'fo_DK' =>
[
'date' => 'dd.MM.yy',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fo_FO' =>
[
'date' => 'dd.MM.yy',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr' => 'fr' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -930,6 +1126,34 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'fr_BF' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_BI' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_BJ' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_BL' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_CA' => 'fr_CA' =>
[ [
'date' => 'y-MM-dd', 'date' => 'y-MM-dd',
@@ -937,6 +1161,27 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'fr_CD' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_CF' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_CG' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_CH' => 'fr_CH' =>
[ [
'date' => 'dd.MM.yy', 'date' => 'dd.MM.yy',
@@ -944,6 +1189,20 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'fr_CI' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_CM' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_DJ' => 'fr_DJ' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -958,6 +1217,111 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'fr_FR' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_GA' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_GF' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_GN' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_GP' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_GQ' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_HT' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_KM' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_LU' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_MA' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_MC' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_MF' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_MG' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_ML' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_MQ' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_MR' => 'fr_MR' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -965,6 +1329,69 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'fr_MU' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_NC' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_NE' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_PF' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_PM' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_RE' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_RW' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_SC' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_SN' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_SY' => 'fr_SY' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -979,6 +1406,13 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'fr_TG' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_TN' => 'fr_TN' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -993,6 +1427,20 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'fr_WF' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'fr_YT' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'he' => 'he' =>
[ [
'date' => 'd.M.y', 'date' => 'd.M.y',
@@ -1000,6 +1448,13 @@
'rtl' => true, 'rtl' => true,
'translation' => true, 'translation' => true,
], ],
'he_IL' =>
[
'date' => 'd.M.y',
'time' => 'H:mm',
'rtl' => true,
'translation' => false,
],
'hr' => 'hr' =>
[ [
'date' => 'dd. MM. y.', 'date' => 'dd. MM. y.',
@@ -1014,6 +1469,13 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'hr_HR' =>
[
'date' => 'dd. MM. y.',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'hu' => 'hu' =>
[ [
'date' => 'y. MM. dd.', 'date' => 'y. MM. dd.',
@@ -1021,6 +1483,13 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'hu_HU' =>
[
'date' => 'y. MM. dd.',
'time' => 'H:mm',
'rtl' => false,
'translation' => false,
],
'id' => 'id' =>
[ [
'date' => 'dd/MM/yy', 'date' => 'dd/MM/yy',
@@ -1042,6 +1511,27 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'it_IT' =>
[
'date' => 'dd/MM/yy',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'it_SM' =>
[
'date' => 'dd/MM/yy',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'it_VA' =>
[
'date' => 'dd/MM/yy',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'ja' => 'ja' =>
[ [
'date' => 'y/MM/dd', 'date' => 'y/MM/dd',
@@ -1049,6 +1539,13 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'ja_JP' =>
[
'date' => 'y/MM/dd',
'time' => 'H:mm',
'rtl' => false,
'translation' => false,
],
'ko' => 'ko' =>
[ [
'date' => 'yy. M. d.', 'date' => 'yy. M. d.',
@@ -1063,6 +1560,20 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'ko_KP' =>
[
'date' => 'yy. M. d.',
'time' => 'h:mm a',
'rtl' => false,
'translation' => false,
],
'ko_KR' =>
[
'date' => 'yy. M. d.',
'time' => 'h:mm a',
'rtl' => false,
'translation' => false,
],
'nb_NO' => 'nb_NO' =>
[ [
'date' => 'dd.MM.y', 'date' => 'dd.MM.y',
@@ -1077,6 +1588,13 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'nl_AW' =>
[
'date' => 'dd-MM-y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'nl_BE' => 'nl_BE' =>
[ [
'date' => 'd/MM/y', 'date' => 'd/MM/y',
@@ -1084,6 +1602,41 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'nl_BQ' =>
[
'date' => 'dd-MM-y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'nl_CW' =>
[
'date' => 'dd-MM-y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'nl_NL' =>
[
'date' => 'dd-MM-y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'nl_SR' =>
[
'date' => 'dd-MM-y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'nl_SX' =>
[
'date' => 'dd-MM-y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'pa' => 'pa' =>
[ [
'date' => 'd/M/yy', 'date' => 'd/M/yy',
@@ -1098,6 +1651,13 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'pl_PL' =>
[
'date' => 'd.MM.y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'pt' => 'pt' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -1196,6 +1756,20 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'ro_MD' =>
[
'date' => 'dd.MM.y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'ro_RO' =>
[
'date' => 'dd.MM.y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'ru' => 'ru' =>
[ [
'date' => 'dd.MM.y', 'date' => 'dd.MM.y',
@@ -1203,6 +1777,48 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'ru_BY' =>
[
'date' => 'dd.MM.y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'ru_KG' =>
[
'date' => 'dd.MM.y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'ru_KZ' =>
[
'date' => 'dd.MM.y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'ru_MD' =>
[
'date' => 'dd.MM.y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'ru_RU' =>
[
'date' => 'dd.MM.y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'ru_UA' =>
[
'date' => 'dd.MM.y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'sk' => 'sk' =>
[ [
'date' => 'd. M. y', 'date' => 'd. M. y',
@@ -1210,6 +1826,13 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'sk_SK' =>
[
'date' => 'd. M. y',
'time' => 'H:mm',
'rtl' => false,
'translation' => false,
],
'sl' => 'sl' =>
[ [
'date' => 'd. MM. yy', 'date' => 'd. MM. yy',
@@ -1224,6 +1847,27 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'sv_AX' =>
[
'date' => 'y-MM-dd',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'sv_FI' =>
[
'date' => 'y-MM-dd',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'sv_SE' =>
[
'date' => 'y-MM-dd',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'tr' => 'tr' =>
[ [
'date' => 'd.MM.y', 'date' => 'd.MM.y',
@@ -1238,6 +1882,13 @@
'rtl' => false, 'rtl' => false,
'translation' => false, 'translation' => false,
], ],
'tr_TR' =>
[
'date' => 'd.MM.y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'uk' => 'uk' =>
[ [
'date' => 'dd.MM.yy', 'date' => 'dd.MM.yy',
@@ -1245,6 +1896,13 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'uk_UA' =>
[
'date' => 'dd.MM.yy',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'vi' => 'vi' =>
[ [
'date' => 'dd/MM/y', 'date' => 'dd/MM/y',
@@ -1252,6 +1910,13 @@
'rtl' => false, 'rtl' => false,
'translation' => true, 'translation' => true,
], ],
'vi_VN' =>
[
'date' => 'dd/MM/y',
'time' => 'HH:mm',
'rtl' => false,
'translation' => false,
],
'zh_CN' => 'zh_CN' =>
[ [
'date' => 'y/M/d', 'date' => 'y/M/d',

View File

@@ -4247,26 +4247,11 @@ parameters:
count: 2 count: 2
path: src/Repository/CustomerRepository.php path: src/Repository/CustomerRepository.php
-
message: "#^Method App\\\\Repository\\\\CustomerRepository\\:\\:addPermissionCriteria\\(\\) has no return type specified\\.$#"
count: 1
path: src/Repository/CustomerRepository.php
- -
message: "#^Method App\\\\Repository\\\\CustomerRepository\\:\\:addPermissionCriteria\\(\\) has parameter \\$teams with no value type specified in iterable type array\\.$#" message: "#^Method App\\\\Repository\\\\CustomerRepository\\:\\:addPermissionCriteria\\(\\) has parameter \\$teams with no value type specified in iterable type array\\.$#"
count: 1 count: 1
path: src/Repository/CustomerRepository.php path: src/Repository/CustomerRepository.php
-
message: "#^Method App\\\\Repository\\\\CustomerRepository\\:\\:deleteComment\\(\\) has no return type specified\\.$#"
count: 1
path: src/Repository/CustomerRepository.php
-
message: "#^Method App\\\\Repository\\\\CustomerRepository\\:\\:deleteCustomer\\(\\) has no return type specified\\.$#"
count: 1
path: src/Repository/CustomerRepository.php
- -
message: "#^Method App\\\\Repository\\\\CustomerRepository\\:\\:getComments\\(\\) return type has no value type specified in iterable type array\\.$#" message: "#^Method App\\\\Repository\\\\CustomerRepository\\:\\:getComments\\(\\) return type has no value type specified in iterable type array\\.$#"
count: 1 count: 1
@@ -4277,11 +4262,6 @@ parameters:
count: 1 count: 1
path: src/Repository/CustomerRepository.php path: src/Repository/CustomerRepository.php
-
message: "#^Method App\\\\Repository\\\\CustomerRepository\\:\\:saveComment\\(\\) has no return type specified\\.$#"
count: 1
path: src/Repository/CustomerRepository.php
- -
message: "#^Parameter \\#2 \\.\\.\\.\\$arrays of function array_merge expects array, iterable\\<App\\\\Entity\\\\Team\\> given\\.$#" message: "#^Parameter \\#2 \\.\\.\\.\\$arrays of function array_merge expects array, iterable\\<App\\\\Entity\\\\Team\\> given\\.$#"
count: 1 count: 1

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -3,10 +3,10 @@
"app": { "app": {
"js": [ "js": [
"/build/runtime.f0079159.js", "/build/runtime.f0079159.js",
"/build/app.8d1b738d.js" "/build/app.6450be5e.js"
], ],
"css": [ "css": [
"/build/app.4ccab775.css" "/build/app.3501ccee.css"
] ]
}, },
"app-rtl": { "app-rtl": {
@@ -15,7 +15,7 @@
"/build/app-rtl.3d445498.js" "/build/app-rtl.3d445498.js"
], ],
"css": [ "css": [
"/build/app-rtl.2e426047.css" "/build/app-rtl.670658da.css"
] ]
}, },
"export-pdf": { "export-pdf": {
@@ -54,7 +54,7 @@
"calendar": { "calendar": {
"js": [ "js": [
"/build/runtime.f0079159.js", "/build/runtime.f0079159.js",
"/build/calendar.a1cbcd7b.js" "/build/calendar.d45e4af5.js"
], ],
"css": [ "css": [
"/build/calendar.bb473428.css" "/build/calendar.bb473428.css"
@@ -72,10 +72,10 @@
}, },
"integrity": { "integrity": {
"/build/runtime.f0079159.js": "sha384-H22sAW1aTvyIPqvHOvGXWSWTxf0y6mptp+MsVmyXCfjx/WJjBbhX9gbUZ+qIuihV", "/build/runtime.f0079159.js": "sha384-H22sAW1aTvyIPqvHOvGXWSWTxf0y6mptp+MsVmyXCfjx/WJjBbhX9gbUZ+qIuihV",
"/build/app.8d1b738d.js": "sha384-BsZODNCdR0bBzZbPnrwSRdm0+pvHxG0dpww8yNklZMv4yHBGyrxrxLWIHTeagnfS", "/build/app.6450be5e.js": "sha384-P5Qc8Rav736nZcS2vqM2rBRZpr3bwMsk4SJENBsOMDPdfEjDX7M8WMpwhjzxj0PQ",
"/build/app.4ccab775.css": "sha384-y/Q2EBsHiTGywkeq4wc2Yo6dR3dcewCDLK0Vr3QDBTGrV6JibqBVBY9D1q6ERsyK", "/build/app.3501ccee.css": "sha384-3chwmsldxvcA6ldtsAftB9R2/bSNCi17vSW9ycC0FqLNNM+IdnMorRBXh/zTW1NF",
"/build/app-rtl.3d445498.js": "sha384-D5VYIVdHCPGzAPnMAIkRN1Ri9H4DxdwGts1BgG40JXJuOamq6UQXblaDBSpszOZ0", "/build/app-rtl.3d445498.js": "sha384-D5VYIVdHCPGzAPnMAIkRN1Ri9H4DxdwGts1BgG40JXJuOamq6UQXblaDBSpszOZ0",
"/build/app-rtl.2e426047.css": "sha384-t55QArV82vkdzJG0fIxZmNaemeKz0S77h6RtVxfjJdSdD3aK0auKCfpDtLYAOKLU", "/build/app-rtl.670658da.css": "sha384-Mo5HQ+W9EWDGM1gOyEZ7aScXNltzBMQa4cWC1HtShvs4XPMNUwzOb97jcXf34qSD",
"/build/export-pdf.d367a32e.js": "sha384-Z5baqnzjI636nYFs4g63ViIKBZKRW4Jhv/7PQmTEQlqhfA7eK0vUMUtiyy0R5A9u", "/build/export-pdf.d367a32e.js": "sha384-Z5baqnzjI636nYFs4g63ViIKBZKRW4Jhv/7PQmTEQlqhfA7eK0vUMUtiyy0R5A9u",
"/build/export-pdf.d8a6c23b.css": "sha384-ztepocHE4rnGE9eKZ4kL6jTKaePUyiwiB9TjJjstjpf/ckcKg1HedrEOOk/8ElJg", "/build/export-pdf.d8a6c23b.css": "sha384-ztepocHE4rnGE9eKZ4kL6jTKaePUyiwiB9TjJjstjpf/ckcKg1HedrEOOk/8ElJg",
"/build/invoice.2604495e.js": "sha384-D6JvhGSqlx7z72b/qD3nF3QDXPy+XsCSRGtWfs1icjDKOcd2UzuXwuSa/E1Fg2TJ", "/build/invoice.2604495e.js": "sha384-D6JvhGSqlx7z72b/qD3nF3QDXPy+XsCSRGtWfs1icjDKOcd2UzuXwuSa/E1Fg2TJ",
@@ -83,7 +83,7 @@
"/build/invoice-pdf.ce9aace0.js": "sha384-mtZkXrpsXFMX2YvmmTlCm91QgsTlZLzLJnDAFcTuBDtDZ7TNkqLYkfCeLzFLVfwb", "/build/invoice-pdf.ce9aace0.js": "sha384-mtZkXrpsXFMX2YvmmTlCm91QgsTlZLzLJnDAFcTuBDtDZ7TNkqLYkfCeLzFLVfwb",
"/build/invoice-pdf.2b749265.css": "sha384-DXXgkz2WWnrWnfBnXX5fmfPQSPb98upMnWxYKwTGYS04EhrPIWfDCutB2unIrWh7", "/build/invoice-pdf.2b749265.css": "sha384-DXXgkz2WWnrWnfBnXX5fmfPQSPb98upMnWxYKwTGYS04EhrPIWfDCutB2unIrWh7",
"/build/chart.f5becfac.js": "sha384-GSqETm8wULiVXyizvwRompfwu63r/C0Qd/AvrHDE4cqAKiIGCssb3QyBtGu1WN+W", "/build/chart.f5becfac.js": "sha384-GSqETm8wULiVXyizvwRompfwu63r/C0Qd/AvrHDE4cqAKiIGCssb3QyBtGu1WN+W",
"/build/calendar.a1cbcd7b.js": "sha384-rDvqiEk91ZGY5lHb7vYIUWM2M550H6JAOLt1c3KO5H+toq7Ico7d/KoEDeG52cVW", "/build/calendar.d45e4af5.js": "sha384-wi3/ek3Msn+rk9jebeJnzEXaHUUWlzxkOZwhZyJP5Cg+AKWtolWAXD/hCXQAg0kq",
"/build/calendar.bb473428.css": "sha384-900W9o8666Qpw21rLP7hn5Ql8tWd40k0IcE3QpFm7E7V6bKva7xQgGlyzVuuh4GK", "/build/calendar.bb473428.css": "sha384-900W9o8666Qpw21rLP7hn5Ql8tWd40k0IcE3QpFm7E7V6bKva7xQgGlyzVuuh4GK",
"/build/dashboard.6774a712.js": "sha384-lBwkNqUPv+IBbznagiFakY2BOIueq/Bg89wHO2XeM9YAZ51rPkrvdMd+XmFupHsM", "/build/dashboard.6774a712.js": "sha384-lBwkNqUPv+IBbznagiFakY2BOIueq/Bg89wHO2XeM9YAZ51rPkrvdMd+XmFupHsM",
"/build/dashboard.18f5a8b7.css": "sha384-PBD8ftb2yBoSjRe2sN5Xb4dEz045kOEUfcIufdSis+tWoWdAx5j4Yic+F/6CYbrP" "/build/dashboard.18f5a8b7.css": "sha384-PBD8ftb2yBoSjRe2sN5Xb4dEz045kOEUfcIufdSis+tWoWdAx5j4Yic+F/6CYbrP"

View File

@@ -1,7 +1,7 @@
{ {
"build/app.css": "/build/app.4ccab775.css", "build/app.css": "/build/app.3501ccee.css",
"build/app.js": "/build/app.8d1b738d.js", "build/app.js": "/build/app.6450be5e.js",
"build/app-rtl.css": "/build/app-rtl.2e426047.css", "build/app-rtl.css": "/build/app-rtl.670658da.css",
"build/app-rtl.js": "/build/app-rtl.3d445498.js", "build/app-rtl.js": "/build/app-rtl.3d445498.js",
"build/export-pdf.css": "/build/export-pdf.d8a6c23b.css", "build/export-pdf.css": "/build/export-pdf.d8a6c23b.css",
"build/export-pdf.js": "/build/export-pdf.d367a32e.js", "build/export-pdf.js": "/build/export-pdf.d367a32e.js",
@@ -11,7 +11,7 @@
"build/invoice-pdf.js": "/build/invoice-pdf.ce9aace0.js", "build/invoice-pdf.js": "/build/invoice-pdf.ce9aace0.js",
"build/chart.js": "/build/chart.f5becfac.js", "build/chart.js": "/build/chart.f5becfac.js",
"build/calendar.css": "/build/calendar.bb473428.css", "build/calendar.css": "/build/calendar.bb473428.css",
"build/calendar.js": "/build/calendar.a1cbcd7b.js", "build/calendar.js": "/build/calendar.d45e4af5.js",
"build/dashboard.css": "/build/dashboard.18f5a8b7.css", "build/dashboard.css": "/build/dashboard.18f5a8b7.css",
"build/dashboard.js": "/build/dashboard.6774a712.js", "build/dashboard.js": "/build/dashboard.6774a712.js",
"build/runtime.js": "/build/runtime.f0079159.js", "build/runtime.js": "/build/runtime.f0079159.js",

View File

@@ -168,12 +168,14 @@ final class RegenerateLocalesCommand extends Command
$removableDuplicates[] = $locale; $removableDuplicates[] = $locale;
} }
$io->title('Redundant locales that will be skipped'); /*
$io->title('Redundant locales that could be skipped');
$io->writeln(implode('|', $removableDuplicates)); $io->writeln(implode('|', $removableDuplicates));
foreach ($removableDuplicates as $duplicate) { foreach ($removableDuplicates as $duplicate) {
unset($appLocales[$duplicate]); unset($appLocales[$duplicate]);
} }
*/
// in the future this list should be reduced to the list of available translations, but for a long time users // in the future this list should be reduced to the list of available translations, but for a long time users
// could choose from the entire list of all locales, so we likely have to keep that forever ... // could choose from the entire list of all locales, so we likely have to keep that forever ...

View File

@@ -28,9 +28,9 @@ use Symfony\Component\Security\Http\LoginLink\LoginLinkHandlerInterface;
final class UserLoginLinkCommand extends Command final class UserLoginLinkCommand extends Command
{ {
public function __construct( public function __construct(
private LoginLinkHandlerInterface $loginLink, private readonly LoginLinkHandlerInterface $loginLink,
private UserRepository $userRepository, private readonly UserRepository $userRepository,
private RequestStack $requestStack private readonly RequestStack $requestStack
) )
{ {
parent::__construct(); parent::__construct();

View File

@@ -28,10 +28,10 @@ use Symfony\Component\Validator\Validator\ValidatorInterface;
final class CustomerService final class CustomerService
{ {
public function __construct( public function __construct(
private CustomerRepository $repository, private readonly CustomerRepository $repository,
private SystemConfiguration $configuration, private readonly SystemConfiguration $configuration,
private ValidatorInterface $validator, private readonly ValidatorInterface $validator,
private EventDispatcherInterface $dispatcher private readonly EventDispatcherInterface $dispatcher
) { ) {
} }
@@ -74,7 +74,6 @@ final class CustomerService
} }
/** /**
* @param Customer $customer
* @param string[] $groups * @param string[] $groups
* @throws ValidationFailedException * @throws ValidationFailedException
*/ */
@@ -122,15 +121,28 @@ final class CustomerService
} }
public function calculateNextCustomerNumber(): string public function calculateNextCustomerNumber(): string
{
// we cannot use max(number) because a varchar column returns unexpected results
$start = $this->repository->countCustomer();
do {
$number = $this->getNextNumber($start++);
$customer = $this->findCustomerByNumber($number);
} while ($customer !== null);
return $number;
}
private function getNextNumber(int $counter): string
{ {
$format = $this->configuration->find('customer.number_format'); $format = $this->configuration->find('customer.number_format');
if (empty($format) || !\is_string($format)) { if (empty($format) || !\is_string($format)) {
$format = '{cc,4}'; $format = '{cc,4}';
} }
$numberGenerator = new NumberGenerator($format, function (string $originalFormat, string $format, int $increaseBy): string|int { $numberGenerator = new NumberGenerator($format, function (string $originalFormat, string $format, int $increaseBy) use ($counter): string|int {
return match ($format) { return match ($format) {
'cc' => $this->repository->count([]) + $increaseBy, 'cc' => $counter + $increaseBy,
default => $originalFormat, default => $originalFormat,
}; };
}); });

View File

@@ -146,6 +146,7 @@ class Customer implements EntityWithMetaFields, EntityWithBudget
*/ */
#[ORM\Column(name: 'timezone', type: 'string', length: 64, nullable: false)] #[ORM\Column(name: 'timezone', type: 'string', length: 64, nullable: false)]
#[Assert\NotBlank] #[Assert\NotBlank]
#[Assert\Timezone]
#[Assert\Length(max: 64)] #[Assert\Length(max: 64)]
#[Serializer\Expose] #[Serializer\Expose]
#[Serializer\Groups(['Customer_Entity'])] #[Serializer\Groups(['Customer_Entity'])]

View File

@@ -80,6 +80,9 @@ abstract class AbstractSpreadsheetRenderer
'label' => 'name' 'label' => 'name'
], ],
'username' => [], 'username' => [],
'accountNumber' => [
'label' => 'account_number'
],
'customer' => [], 'customer' => [],
'project' => [], 'project' => [],
'activity' => [], 'activity' => [],
@@ -315,6 +318,18 @@ abstract class AbstractSpreadsheetRenderer
} }
} }
if (isset($columns['accountNumber'])) {
if (!isset($columns['accountNumber']['render'])) {
$columns['accountNumber']['render'] = function (Worksheet $sheet, int $row, int $column, ExportableItem $entity) {
$accountNumber = '';
if (null !== $entity->getUser()) {
$accountNumber = $entity->getUser()->getAccountNumber();
}
$sheet->setCellValue(CellAddress::fromColumnAndRow($column, $row), $accountNumber);
};
}
}
if (isset($columns['customer']) && !isset($columns['customer']['render'])) { if (isset($columns['customer']) && !isset($columns['customer']['render'])) {
$columns['customer']['render'] = function (Worksheet $sheet, int $row, int $column, ExportableItem $entity) { $columns['customer']['render'] = function (Worksheet $sheet, int $row, int $column, ExportableItem $entity) {
$customer = ''; $customer = '';

View File

@@ -45,11 +45,11 @@ use Psr\EventDispatcher\EventDispatcherInterface;
class ProjectStatisticService class ProjectStatisticService
{ {
public function __construct( public function __construct(
private ProjectRepository $projectRepository, private readonly ProjectRepository $projectRepository,
private ActivityRepository $activityRepository, private readonly ActivityRepository $activityRepository,
private TimesheetRepository $timesheetRepository, private readonly TimesheetRepository $timesheetRepository,
private EventDispatcherInterface $dispatcher, private readonly EventDispatcherInterface $dispatcher,
private UserRepository $userRepository private readonly UserRepository $userRepository
) )
{ {
} }
@@ -729,7 +729,7 @@ class ProjectStatisticService
->addSelect('COALESCE(SUM(t.rate), 0) AS rate') ->addSelect('COALESCE(SUM(t.rate), 0) AS rate')
->andWhere($tplQb->expr()->in('t.project', ':project')) ->andWhere($tplQb->expr()->in('t.project', ':project'))
->groupBy('t.project') ->groupBy('t.project')
->setParameter('project', array_values($projectIds)) ->setParameter('project', $projectIds)
; ;
// find the most recent timesheet for each project // find the most recent timesheet for each project

View File

@@ -29,7 +29,7 @@ use Doctrine\ORM\Query\Expr\Andx;
use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\QueryBuilder;
/** /**
* @extends \Doctrine\ORM\EntityRepository<Customer> * @extends EntityRepository<Customer>
*/ */
class CustomerRepository extends EntityRepository class CustomerRepository extends EntityRepository
{ {
@@ -75,7 +75,7 @@ class CustomerRepository extends EntityRepository
return $this->count([]); return $this->count([]);
} }
private function addPermissionCriteria(QueryBuilder $qb, ?User $user = null, array $teams = []) private function addPermissionCriteria(QueryBuilder $qb, ?User $user = null, array $teams = []): void
{ {
$permissions = $this->getPermissionCriteria($qb, $user, $teams); $permissions = $this->getPermissionCriteria($qb, $user, $teams);
if ($permissions->count() > 0) { if ($permissions->count() > 0) {
@@ -249,7 +249,6 @@ class CustomerRepository extends EntityRepository
} }
/** /**
* @param CustomerQuery $query
* @return Customer[] * @return Customer[]
*/ */
public function getCustomersForQuery(CustomerQuery $query): iterable public function getCustomersForQuery(CustomerQuery $query): iterable
@@ -261,12 +260,7 @@ class CustomerRepository extends EntityRepository
return $paginator->getAll(); return $paginator->getAll();
} }
/** public function deleteCustomer(Customer $delete, ?Customer $replace = null): void
* @param Customer $delete
* @param Customer|null $replace
* @throws \Doctrine\ORM\Exception\ORMException
*/
public function deleteCustomer(Customer $delete, ?Customer $replace = null)
{ {
$em = $this->getEntityManager(); $em = $this->getEntityManager();
$em->beginTransaction(); $em->beginTransaction();
@@ -308,14 +302,14 @@ class CustomerRepository extends EntityRepository
return $qb->getQuery()->getResult(); return $qb->getQuery()->getResult();
} }
public function saveComment(CustomerComment $comment) public function saveComment(CustomerComment $comment): void
{ {
$entityManager = $this->getEntityManager(); $entityManager = $this->getEntityManager();
$entityManager->persist($comment); $entityManager->persist($comment);
$entityManager->flush(); $entityManager->flush();
} }
public function deleteComment(CustomerComment $comment) public function deleteComment(CustomerComment $comment): void
{ {
$entityManager = $this->getEntityManager(); $entityManager = $this->getEntityManager();
$entityManager->remove($comment); $entityManager->remove($comment);

View File

@@ -100,7 +100,7 @@ final class WorkingTimeService
return $year->getMonth($monthDate); return $year->getMonth($monthDate);
} }
public function approveMonth(User $user, Month $month, \DateTimeInterface $approvalDate, User $approver): void public function approveMonth(User $user, Month $month, \DateTimeInterface $approvalDate, User $approvedBy): void
{ {
foreach ($month->getDays() as $day) { foreach ($month->getDays() as $day) {
$workingTime = $day->getWorkingTime(); $workingTime = $day->getWorkingTime();
@@ -116,7 +116,7 @@ final class WorkingTimeService
continue; continue;
} }
$workingTime->setApprovedBy($approver); $workingTime->setApprovedBy($approvedBy);
// FIXME see calling method // FIXME see calling method
$workingTime->setApprovedAt(\DateTimeImmutable::createFromInterface($approvalDate)); $workingTime->setApprovedAt(\DateTimeImmutable::createFromInterface($approvalDate));
$this->workingTimeRepository->scheduleWorkingTimeUpdate($workingTime); $this->workingTimeRepository->scheduleWorkingTimeUpdate($workingTime);
@@ -124,7 +124,7 @@ final class WorkingTimeService
$this->workingTimeRepository->persistScheduledWorkingTimes(); $this->workingTimeRepository->persistScheduledWorkingTimes();
$this->eventDispatcher->dispatch(new WorkingTimeApproveMonthEvent($user, $month, $approvalDate, $approver)); $this->eventDispatcher->dispatch(new WorkingTimeApproveMonthEvent($user, $month, $approvalDate, $approvedBy));
} }
/** /**

View File

@@ -76,71 +76,73 @@ class CsvRendererTest extends AbstractRendererTest
} }
$expected = [ $expected = [
0 => '2019-06-16', '2019-06-16',
1 => '12:00', '12:00',
2 => '12:06', '12:06',
3 => '400', '400',
4 => '0', '0',
5 => '', '',
6 => 'kevin', 'kevin',
7 => 'kevin', 'kevin',
8 => 'Customer Name', '',
9 => 'project name', 'Customer Name',
10 => 'activity description', 'project name',
11 => '', 'activity description',
12 => '', '',
13 => '', '',
14 => 'foo,bar', '',
15 => '', 'foo,bar',
16 => ' EUR 84.00 ', '',
17 => 'meta-bar', ' EUR 84.00 ',
18 => 'meta-bar2', 'meta-bar',
19 => 'customer-bar', 'meta-bar2',
20 => '', 'customer-bar',
21 => 'project-foo2', '',
22 => 'activity-bar', 'project-foo2',
23 => 'timesheet', 'activity-bar',
24 => 'work', 'timesheet',
25 => 'A-0123456789', 'work',
26 => 'DE-9876543210', 'A-0123456789',
27 => 'ORDER-123', 'DE-9876543210',
'ORDER-123',
]; ];
$expected2 = [ $expected2 = [
0 => '2019-06-16', '2019-06-16',
1 => '12:00', '12:00',
2 => '12:06', '12:06',
3 => '400', '400',
4 => '0', '0',
5 => '', '',
6 => 'nivek', 'nivek',
7 => 'nivek', 'nivek',
8 => 'Customer Name', '',
9 => 'project name', 'Customer Name',
10 => 'activity description', 'project name',
11 => '', 'activity description',
12 => '', '',
13 => '', '',
14 => '', '',
15 => '', '',
16 => ' EUR -100.92', '',
17 => '', ' EUR -100.92',
18 => '', '',
19 => 'customer-bar', '',
20 => '', 'customer-bar',
21 => 'project-foo2', '',
22 => 'activity-bar', 'project-foo2',
23 => 'timesheet', 'activity-bar',
24 => 'work', 'timesheet',
25 => 'A-0123456789', 'work',
26 => 'DE-9876543210', 'A-0123456789',
27 => 'ORDER-123', 'DE-9876543210',
'ORDER-123',
]; ];
self::assertEquals(7, \count($all)); self::assertEquals(7, \count($all));
self::assertEquals($expected, $all[5]); self::assertEquals($expected, $all[5]);
self::assertEquals($expected2, $all[6]); self::assertEquals($expected2, $all[6]);
self::assertEquals(\count($expected), \count($all[0])); self::assertEquals(\count($expected), \count($all[0]));
self::assertEquals('foo', $all[4][14]); self::assertEquals('foo', $all[4][15]);
} }
} }

View File

@@ -74,39 +74,40 @@ class CsvRendererTest extends AbstractRendererTest
} }
$expected = [ $expected = [
0 => '2019-06-16', '2019-06-16',
1 => '12:00', '12:00',
2 => '12:06', '12:06',
3 => '400', '400',
4 => '0', '0',
5 => '', '',
6 => 'kevin', 'kevin',
7 => 'kevin', 'kevin',
8 => 'Customer Name', '',
9 => 'project name', 'Customer Name',
10 => 'activity description', 'project name',
11 => '', 'activity description',
12 => '', '',
13 => '', '',
14 => 'foo,bar', '',
15 => '', 'foo,bar',
16 => ' EUR 84.00 ', '',
17 => 'meta-bar', ' EUR 84.00 ',
18 => 'meta-bar2', 'meta-bar',
19 => 'customer-bar', 'meta-bar2',
20 => '', 'customer-bar',
21 => 'project-foo2', '',
22 => 'activity-bar', 'project-foo2',
23 => 'timesheet', 'activity-bar',
24 => 'work', 'timesheet',
25 => 'A-0123456789', 'work',
26 => 'DE-9876543210', 'A-0123456789',
27 => 'ORDER-123', 'DE-9876543210',
'ORDER-123',
]; ];
self::assertEquals(6, \count($all)); self::assertEquals(6, \count($all));
self::assertEquals($expected, $all[5]); self::assertEquals($expected, $all[5]);
self::assertEquals(\count($expected), \count($all[0])); self::assertEquals(\count($expected), \count($all[0]));
self::assertEquals('foo', $all[4][14]); self::assertEquals('foo', $all[4][15]);
} }
} }

View File

@@ -624,7 +624,7 @@
</trans-unit> </trans-unit>
<trans-unit id="W8XQTkJ" resname="complete_month.help"> <trans-unit id="W8XQTkJ" resname="complete_month.help">
<source>complete_month.help</source> <source>complete_month.help</source>
<target>Sobald der Monat abgeschlossen ist, kann der Benutzer für diesen Zeitraum keine Zeiten mehr anlegen oder bearbeiten.</target> <target>Dies wird alle Tage des Jahres vor dem gewählten Datum abschliessen. Der Benutzer wird für den abgeschlossenen Zeitraum keine Zeiten mehr anlegen oder bearbeiten können.</target>
</trans-unit> </trans-unit>
<trans-unit id="eWmotjb" resname="completed_month_pdf"> <trans-unit id="eWmotjb" resname="completed_month_pdf">
<source>completed_month_pdf</source> <source>completed_month_pdf</source>

View File

@@ -620,11 +620,11 @@
</trans-unit> </trans-unit>
<trans-unit id="4lrfIsZ" resname="complete_month"> <trans-unit id="4lrfIsZ" resname="complete_month">
<source>Complete month</source> <source>Complete month</source>
<target state="translated">Complete month</target> <target state="translated">Lock month</target>
</trans-unit> </trans-unit>
<trans-unit id="W8XQTkJ" resname="complete_month.help"> <trans-unit id="W8XQTkJ" resname="complete_month.help">
<source>complete_month.help</source> <source>complete_month.help</source>
<target>After completing the month, the user will no longer be able to create or edit times for that period.</target> <target>This will lock all days of the year before the chosen date. The user will no longer be able to create or edit times for the locked period.</target>
</trans-unit> </trans-unit>
<trans-unit id="eWmotjb" resname="completed_month_pdf"> <trans-unit id="eWmotjb" resname="completed_month_pdf">
<source>completed_month_pdf</source> <source>completed_month_pdf</source>

View File

@@ -111,7 +111,7 @@
</trans-unit> </trans-unit>
<trans-unit id="1ltxm9V" resname="task_todo"> <trans-unit id="1ltxm9V" resname="task_todo">
<source>task_todo</source> <source>task_todo</source>
<target>Aufgabenbeschreibung</target> <target>Aufgabe</target>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@@ -111,7 +111,7 @@
</trans-unit> </trans-unit>
<trans-unit id="1ltxm9V" resname="task_todo"> <trans-unit id="1ltxm9V" resname="task_todo">
<source>task_todo</source> <source>task_todo</source>
<target>Task description</target> <target>Task</target>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>