before mimo

This commit is contained in:
Thomas Peterson 2026-07-09 13:26:44 +02:00
parent 45642fce51
commit 1647175122
76 changed files with 6164 additions and 447 deletions

View File

@ -0,0 +1,3 @@
[ 879ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=bfe5721b:14335
[ 946ms] ReferenceError: jwt_token is not defined
at http://127.0.0.1:5173/src/main.tsx:5:19

View File

@ -0,0 +1 @@
[ 1753ms] [VERBOSE] [DOM] Input elements should have autocomplete attributes (suggested: "current-password"): (More info: https://goo.gl/9p2vKq) %o @ http://type-dev-tp.local/apps/backend/login#/928d23d0-61b8-eae7-9418-2cd2729e8b3b:0

View File

@ -0,0 +1,2 @@
[ 1021ms] [VERBOSE] [DOM] Input elements should have autocomplete attributes (suggested: "current-password"): (More info: https://goo.gl/9p2vKq) %o @ http://type-dev-tp.local/apps/backend/login:0
[ 24574ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://type-dev-tp.local/apps/backend/order/detail/show/928d23d0-61b8-eae7-9418-2cd2729e8b3b:0

View File

@ -0,0 +1,6 @@
[ 842ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 842ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 26601ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 26602ms] [LOG] details: {application: X, identifier: symfony--ux-chartjs--chart, controller: t, element: canvas} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 26657ms] [LOG] details: {application: X, identifier: symfony--ux-chartjs--chart, controller: t, element: canvas} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 26657ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6

View File

@ -0,0 +1,4 @@
[ 1127ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 1128ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 1433ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://type-dev-tp.local/apps/_wdt/e1adc2?XDEBUG_IGNORE=1:0
[ 1905ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://type-dev-tp.local/apps/_wdt/e1adc2?XDEBUG_IGNORE=1:0

View File

@ -0,0 +1,3 @@
[ 1992ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 1994ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 2413ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://type-dev-tp.local/apps/_wdt/963096?XDEBUG_IGNORE=1:0

View File

@ -0,0 +1,5 @@
[ 1648ms] [VERBOSE] [DOM] Input elements should have autocomplete attributes (suggested: "current-password"): (More info: https://goo.gl/9p2vKq) %o @ http://type-dev-tp.local/apps/backend/login:0
[ 28417ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 28418ms] [LOG] details: {application: X, identifier: symfony--ux-chartjs--chart, controller: t, element: canvas} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 28489ms] [LOG] details: {application: X, identifier: symfony--ux-chartjs--chart, controller: t, element: canvas} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 28490ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6

View File

@ -0,0 +1 @@
[ 427ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://type-dev-tp.local/apps/backend/system/settings/index:0

View File

@ -0,0 +1,3 @@
[ 1169ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 1169ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 1191ms] [VERBOSE] [DOM] Input elements should have autocomplete attributes (suggested: "current-password"): (More info: https://goo.gl/9p2vKq) %o @ http://type-dev-tp.local/apps/backend/system/settings/settings/index:0

View File

@ -0,0 +1,2 @@
[ 1490ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6
[ 1490ms] [LOG] details: {application: X} @ http://type-dev-tp.local/apps/assets/vendor/@hotwired/stimulus/stimulus.index-S4zNcea.js:6

View File

@ -0,0 +1,19 @@
- generic [active] [ref=e1]:
- generic [ref=e3]:
- img "Logo" [ref=e5]
- generic [ref=e6]:
- text: "Benutzername:"
- textbox "Benutzername:" [ref=e7]
- text: "Passwort:"
- textbox "Passwort:" [ref=e8]
- button "Anmelden" [ref=e9] [cursor=pointer]
- region "Symfony Web Debug Toolbar" [ref=e10]:
- generic [ref=e13]:
- link "Symfony Loading…" [ref=e15] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/8bb661?panel=request
- generic [ref=e16]:
- img "Symfony" [ref=e17]
- generic [ref=e19]: Loading…
- button [expanded] [ref=e20] [cursor=pointer]:
- generic "Close Toolbar" [ref=e21]:
- img [ref=e22]

View File

@ -0,0 +1,24 @@
- generic [ref=f1e1]:
- generic [ref=f1e3]:
- img "Logo" [ref=f1e5]
- heading "Zwei-Faktor-Authentifizierung" [level=1] [ref=f1e6]
- generic [ref=f1e7]:
- text: Bestätigungs-Code (Authenticator-App)
- textbox "Bestätigungs-Code (Authenticator-App)" [active] [ref=f1e8]
- generic [ref=f1e9]:
- checkbox "Dieses Gerät 30 Tage merken" [ref=f1e10]
- text: Dieses Gerät 30 Tage merken
- button "Login" [ref=f1e11] [cursor=pointer]
- paragraph [ref=f1e12]:
- link "Abbrechen" [ref=f1e13] [cursor=pointer]:
- /url: /apps/backend/logout
- region "Symfony Web Debug Toolbar" [ref=f1e14]:
- generic [ref=f1e17]:
- link "Symfony Loading…" [ref=f1e19] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/88e0b4?panel=request
- generic [ref=f1e20]:
- img "Symfony" [ref=f1e21]
- generic [ref=f1e23]: Loading…
- button [expanded] [ref=f1e24] [cursor=pointer]:
- generic "Close Toolbar" [ref=f1e25]:
- img [ref=f1e26]

View File

@ -0,0 +1,97 @@
- generic [active] [ref=f3e1]:
- main [ref=f3e2]:
- main [ref=f3e4]:
- generic [ref=f3e7]:
- img [ref=f3e9]
- generic [ref=f3e13]:
- 'heading "NR: ---" [level=1] [ref=f3e14]'
- generic [ref=f3e17] [cursor=pointer]:
- checkbox "Entwurf" [checked] [ref=f3e18]
- generic [ref=f3e20]: Entwurf
- generic [ref=f3e22]:
- generic [ref=f3e23]:
- paragraph [ref=f3e24]: Startauswahl
- heading "Wofür soll der Auftrag erstellt werden?" [level=3] [ref=f3e25]
- paragraph [ref=f3e26]: Diese Angaben stehen anschließend kompakt im Kopfbereich.
- generic [ref=f3e27]:
- generic [ref=f3e28]:
- generic [ref=f3e29]: Typ
- generic [ref=f3e30]:
- log [ref=f3e32]
- generic [ref=f3e33]:
- combobox [ref=f3e36]
- img [ref=f3e40]
- generic [ref=f3e42]:
- generic [ref=f3e43]: Shop
- generic [ref=f3e44]:
- log [ref=f3e46]
- generic [ref=f3e47]:
- combobox [ref=f3e49]
- img [ref=f3e53]
- button "Weiter zur Auftragsmaske" [disabled] [ref=f3e55]
- region "Symfony Web Debug Toolbar" [ref=f3e56]:
- generic [ref=f3e59]:
- link "200 Redirect @ psc_backend_invoice_index_create" [ref=f3e61] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=request
- generic [ref=f3e62]:
- generic [ref=f3e63]: "200"
- img "Redirect" [ref=f3e65]
- generic [ref=f3e68]: "@"
- generic [ref=f3e69]: psc_backend_invoice_index_create
- link "363 ms" [ref=f3e71] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=time
- generic [ref=f3e72]:
- generic [ref=f3e73]: "363"
- generic [ref=f3e74]: ms
- link "92.5 MiB" [ref=f3e76] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=time
- generic [ref=f3e77]:
- generic [ref=f3e78]: "92.5"
- generic [ref=f3e79]: MiB
- generic [ref=f3e81] [cursor=pointer]:
- img [ref=f3e82]
- generic [ref=f3e86]: "1"
- link "Logger 400" [ref=f3e88] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=logger
- generic [ref=f3e89]:
- img "Logger" [ref=f3e90]
- generic [ref=f3e94]: "400"
- link "Security 1" [ref=f3e96] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=security
- generic [ref=f3e97]:
- img "Security" [ref=f3e98]
- generic [ref=f3e102]: "1"
- link "Twig 1 ms" [ref=f3e104] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=twig
- generic [ref=f3e105]:
- img "Twig" [ref=f3e106]
- generic [ref=f3e110]: "1"
- generic [ref=f3e111]: ms
- link "2 in 0.91 ms" [ref=f3e113] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=db
- generic [ref=f3e114]:
- img [ref=f3e115]
- generic [ref=f3e120]: "2"
- generic [ref=f3e121]: in 0.91 ms
- link "1 in 0.43 ms" [ref=f3e123] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=mongodb
- generic [ref=f3e124]:
- img [ref=f3e125]
- generic [ref=f3e127]: "1"
- generic [ref=f3e128]: in 0.43 ms
- 'link "S: 0 D: 0" [ref=f3e130] [cursor=pointer]':
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=jms_serializer
- generic [ref=f3e131]:
- img [ref=f3e132]
- generic [ref=f3e134]: "S:"
- generic [ref=f3e135]: "0"
- generic [ref=f3e136]: "D:"
- generic [ref=f3e137]: "0"
- link "Symfony 7.4.6" [ref=f3e139] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=config
- generic [ref=f3e140]:
- img "Symfony" [ref=f3e142]
- generic [ref=f3e144]: 7.4.6
- button [expanded] [ref=f3e145] [cursor=pointer]:
- generic "Close Toolbar" [ref=f3e146]:
- img [ref=f3e147]

View File

@ -0,0 +1,97 @@
- generic [active] [ref=f3e1]:
- main [ref=f3e2]:
- main [ref=f3e4]:
- generic [ref=f3e7]:
- img [ref=f3e9]
- generic [ref=f3e13]:
- 'heading "NR: ---" [level=1] [ref=f3e14]'
- generic [ref=f3e17] [cursor=pointer]:
- checkbox "Entwurf" [checked] [ref=f3e18]
- generic [ref=f3e20]: Entwurf
- generic [ref=f3e22]:
- generic [ref=f3e23]:
- paragraph [ref=f3e24]: Startauswahl
- heading "Wofür soll der Auftrag erstellt werden?" [level=3] [ref=f3e25]
- paragraph [ref=f3e26]: Diese Angaben stehen anschließend kompakt im Kopfbereich.
- generic [ref=f3e27]:
- generic [ref=f3e28]:
- generic [ref=f3e29]: Typ
- generic [ref=f3e30]:
- log [ref=f3e32]
- generic [ref=f3e33]:
- combobox [ref=f3e36]
- img [ref=f3e40]
- generic [ref=f3e42]:
- generic [ref=f3e43]: Shop
- generic [ref=f3e44]:
- log [ref=f3e46]
- generic [ref=f3e47]:
- combobox [ref=f3e49]
- img [ref=f3e53]
- button "Weiter zur Auftragsmaske" [disabled] [ref=f3e55]
- region "Symfony Web Debug Toolbar" [ref=f3e56]:
- generic [ref=f3e59]:
- link "200 Redirect @ psc_backend_invoice_index_create" [ref=f3e61] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=request
- generic [ref=f3e62]:
- generic [ref=f3e63]: "200"
- img "Redirect" [ref=f3e65]
- generic [ref=f3e68]: "@"
- generic [ref=f3e69]: psc_backend_invoice_index_create
- link "363 ms" [ref=f3e71] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=time
- generic [ref=f3e72]:
- generic [ref=f3e73]: "363"
- generic [ref=f3e74]: ms
- link "92.5 MiB" [ref=f3e76] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=time
- generic [ref=f3e77]:
- generic [ref=f3e78]: "92.5"
- generic [ref=f3e79]: MiB
- generic [ref=f3e81] [cursor=pointer]:
- img [ref=f3e82]
- generic [ref=f3e86]: "1"
- link "Logger 400" [ref=f3e88] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=logger
- generic [ref=f3e89]:
- img "Logger" [ref=f3e90]
- generic [ref=f3e94]: "400"
- link "Security 1" [ref=f3e96] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=security
- generic [ref=f3e97]:
- img "Security" [ref=f3e98]
- generic [ref=f3e102]: "1"
- link "Twig 1 ms" [ref=f3e104] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=twig
- generic [ref=f3e105]:
- img "Twig" [ref=f3e106]
- generic [ref=f3e110]: "1"
- generic [ref=f3e111]: ms
- link "2 in 0.91 ms" [ref=f3e113] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=db
- generic [ref=f3e114]:
- img [ref=f3e115]
- generic [ref=f3e120]: "2"
- generic [ref=f3e121]: in 0.91 ms
- link "1 in 0.43 ms" [ref=f3e123] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=mongodb
- generic [ref=f3e124]:
- img [ref=f3e125]
- generic [ref=f3e127]: "1"
- generic [ref=f3e128]: in 0.43 ms
- 'link "S: 0 D: 0" [ref=f3e130] [cursor=pointer]':
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=jms_serializer
- generic [ref=f3e131]:
- img [ref=f3e132]
- generic [ref=f3e134]: "S:"
- generic [ref=f3e135]: "0"
- generic [ref=f3e136]: "D:"
- generic [ref=f3e137]: "0"
- link "Symfony 7.4.6" [ref=f3e139] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=config
- generic [ref=f3e140]:
- img "Symfony" [ref=f3e142]
- generic [ref=f3e144]: 7.4.6
- button [expanded] [ref=f3e145] [cursor=pointer]:
- generic "Close Toolbar" [ref=f3e146]:
- img [ref=f3e147]

View File

@ -0,0 +1,97 @@
- generic [active] [ref=f3e1]:
- main [ref=f3e2]:
- main [ref=f3e4]:
- generic [ref=f3e7]:
- img [ref=f3e9]
- generic [ref=f3e13]:
- 'heading "NR: ---" [level=1] [ref=f3e14]'
- generic [ref=f3e17] [cursor=pointer]:
- checkbox "Entwurf" [checked] [ref=f3e18]
- generic [ref=f3e20]: Entwurf
- generic [ref=f3e22]:
- generic [ref=f3e23]:
- paragraph [ref=f3e24]: Startauswahl
- heading "Wofür soll der Auftrag erstellt werden?" [level=3] [ref=f3e25]
- paragraph [ref=f3e26]: Diese Angaben stehen anschließend kompakt im Kopfbereich.
- generic [ref=f3e27]:
- generic [ref=f3e28]:
- generic [ref=f3e29]: Typ
- generic [ref=f3e30]:
- log [ref=f3e32]
- generic [ref=f3e33]:
- combobox [ref=f3e36]
- img [ref=f3e40]
- generic [ref=f3e42]:
- generic [ref=f3e43]: Shop
- generic [ref=f3e44]:
- log [ref=f3e46]
- generic [ref=f3e47]:
- combobox [ref=f3e49]
- img [ref=f3e53]
- button "Weiter zur Auftragsmaske" [disabled] [ref=f3e55]
- region "Symfony Web Debug Toolbar" [ref=f3e56]:
- generic [ref=f3e59]:
- link "200 Redirect @ psc_backend_invoice_index_create" [ref=f3e61] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=request
- generic [ref=f3e62]:
- generic [ref=f3e63]: "200"
- img "Redirect" [ref=f3e65]
- generic [ref=f3e68]: "@"
- generic [ref=f3e69]: psc_backend_invoice_index_create
- link "363 ms" [ref=f3e71] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=time
- generic [ref=f3e72]:
- generic [ref=f3e73]: "363"
- generic [ref=f3e74]: ms
- link "92.5 MiB" [ref=f3e76] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=time
- generic [ref=f3e77]:
- generic [ref=f3e78]: "92.5"
- generic [ref=f3e79]: MiB
- generic [ref=f3e81] [cursor=pointer]:
- img [ref=f3e82]
- generic [ref=f3e86]: "4"
- link "Logger 400" [ref=f3e88] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=logger
- generic [ref=f3e89]:
- img "Logger" [ref=f3e90]
- generic [ref=f3e94]: "400"
- link "Security 1" [ref=f3e96] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=security
- generic [ref=f3e97]:
- img "Security" [ref=f3e98]
- generic [ref=f3e102]: "1"
- link "Twig 1 ms" [ref=f3e104] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=twig
- generic [ref=f3e105]:
- img "Twig" [ref=f3e106]
- generic [ref=f3e110]: "1"
- generic [ref=f3e111]: ms
- link "2 in 0.91 ms" [ref=f3e113] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=db
- generic [ref=f3e114]:
- img [ref=f3e115]
- generic [ref=f3e120]: "2"
- generic [ref=f3e121]: in 0.91 ms
- link "1 in 0.43 ms" [ref=f3e123] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=mongodb
- generic [ref=f3e124]:
- img [ref=f3e125]
- generic [ref=f3e127]: "1"
- generic [ref=f3e128]: in 0.43 ms
- 'link "S: 0 D: 0" [ref=f3e130] [cursor=pointer]':
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=jms_serializer
- generic [ref=f3e131]:
- img [ref=f3e132]
- generic [ref=f3e134]: "S:"
- generic [ref=f3e135]: "0"
- generic [ref=f3e136]: "D:"
- generic [ref=f3e137]: "0"
- link "Symfony 7.4.6" [ref=f3e139] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=config
- generic [ref=f3e140]:
- img "Symfony" [ref=f3e142]
- generic [ref=f3e144]: 7.4.6
- button [expanded] [ref=f3e145] [cursor=pointer]:
- generic "Close Toolbar" [ref=f3e146]:
- img [ref=f3e147]

View File

@ -0,0 +1,97 @@
- generic [active] [ref=f3e1]:
- main [ref=f3e2]:
- main [ref=f3e4]:
- generic [ref=f3e7]:
- img [ref=f3e9]
- generic [ref=f3e13]:
- 'heading "NR: ---" [level=1] [ref=f3e14]'
- generic [ref=f3e17] [cursor=pointer]:
- checkbox "Entwurf" [checked] [ref=f3e18]
- generic [ref=f3e20]: Entwurf
- generic [ref=f3e22]:
- generic [ref=f3e23]:
- paragraph [ref=f3e24]: Startauswahl
- heading "Wofür soll der Auftrag erstellt werden?" [level=3] [ref=f3e25]
- paragraph [ref=f3e26]: Diese Angaben stehen anschließend kompakt im Kopfbereich.
- generic [ref=f3e27]:
- generic [ref=f3e28]:
- generic [ref=f3e29]: Typ
- generic [ref=f3e30]:
- log [ref=f3e32]
- generic [ref=f3e33]:
- combobox [ref=f3e36]
- img [ref=f3e40]
- generic [ref=f3e42]:
- generic [ref=f3e43]: Shop
- generic [ref=f3e44]:
- log [ref=f3e46]
- generic [ref=f3e47]:
- combobox [ref=f3e49]
- img [ref=f3e53]
- button "Weiter zur Auftragsmaske" [disabled] [ref=f3e55]
- region "Symfony Web Debug Toolbar" [ref=f3e56]:
- generic [ref=f3e59]:
- link "200 Redirect @ psc_backend_invoice_index_create" [ref=f3e61] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=request
- generic [ref=f3e62]:
- generic [ref=f3e63]: "200"
- img "Redirect" [ref=f3e65]
- generic [ref=f3e68]: "@"
- generic [ref=f3e69]: psc_backend_invoice_index_create
- link "363 ms" [ref=f3e71] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=time
- generic [ref=f3e72]:
- generic [ref=f3e73]: "363"
- generic [ref=f3e74]: ms
- link "92.5 MiB" [ref=f3e76] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=time
- generic [ref=f3e77]:
- generic [ref=f3e78]: "92.5"
- generic [ref=f3e79]: MiB
- generic [ref=f3e81] [cursor=pointer]:
- img [ref=f3e82]
- generic [ref=f3e86]: "4"
- link "Logger 400" [ref=f3e88] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=logger
- generic [ref=f3e89]:
- img "Logger" [ref=f3e90]
- generic [ref=f3e94]: "400"
- link "Security 1" [ref=f3e96] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=security
- generic [ref=f3e97]:
- img "Security" [ref=f3e98]
- generic [ref=f3e102]: "1"
- link "Twig 1 ms" [ref=f3e104] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=twig
- generic [ref=f3e105]:
- img "Twig" [ref=f3e106]
- generic [ref=f3e110]: "1"
- generic [ref=f3e111]: ms
- link "2 in 0.91 ms" [ref=f3e113] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=db
- generic [ref=f3e114]:
- img [ref=f3e115]
- generic [ref=f3e120]: "2"
- generic [ref=f3e121]: in 0.91 ms
- link "1 in 0.43 ms" [ref=f3e123] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=mongodb
- generic [ref=f3e124]:
- img [ref=f3e125]
- generic [ref=f3e127]: "1"
- generic [ref=f3e128]: in 0.43 ms
- 'link "S: 0 D: 0" [ref=f3e130] [cursor=pointer]':
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=jms_serializer
- generic [ref=f3e131]:
- img [ref=f3e132]
- generic [ref=f3e134]: "S:"
- generic [ref=f3e135]: "0"
- generic [ref=f3e136]: "D:"
- generic [ref=f3e137]: "0"
- link "Symfony 7.4.6" [ref=f3e139] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/cbda49?panel=config
- generic [ref=f3e140]:
- img "Symfony" [ref=f3e142]
- generic [ref=f3e144]: 7.4.6
- button [expanded] [ref=f3e145] [cursor=pointer]:
- generic "Close Toolbar" [ref=f3e146]:
- img [ref=f3e147]

View File

@ -0,0 +1,19 @@
- generic [active] [ref=e1]:
- generic [ref=e3]:
- img "Logo" [ref=e5]
- generic [ref=e6]:
- text: "Benutzername:"
- textbox "Benutzername:" [ref=e7]
- text: "Passwort:"
- textbox "Passwort:" [ref=e8]
- button "Anmelden" [ref=e9] [cursor=pointer]
- region "Symfony Web Debug Toolbar" [ref=e10]:
- generic [ref=e13]:
- link "Symfony Loading…" [ref=e15] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/42dfaf?panel=request
- generic [ref=e16]:
- img "Symfony" [ref=e17]
- generic [ref=e19]: Loading…
- button [expanded] [ref=e20] [cursor=pointer]:
- generic "Close Toolbar" [ref=e21]:
- img [ref=e22]

View File

@ -0,0 +1,178 @@
- generic [active] [ref=f1e1]:
- banner [ref=f1e2]:
- generic [ref=f1e3]:
- heading "Symfony Exception" [level=1] [ref=f1e4]:
- img [ref=f1e5]
- text: Symfony Exception
- link "Symfony Docs" [ref=f1e8] [cursor=pointer]:
- /url: https://symfony.com/doc/7.4.6/index.html
- img [ref=f1e10]
- text: Symfony Docs
- generic [ref=f1e12]:
- generic [ref=f1e14]:
- heading "Error" [level=2] [ref=f1e15]:
- link "Error" [ref=f1e16] [cursor=pointer]:
- /url: "#trace-box-1"
- heading "HTTP 500 Internal Server Error" [level=2] [ref=f1e17]
- generic [ref=f1e19]:
- heading "Call to a member function getUid() on null" [level=1] [ref=f1e20]
- img [ref=f1e22]
- generic [ref=f1e25]:
- tablist [ref=f1e26]:
- tab "Exception" [selected] [ref=f1e27] [cursor=pointer]
- tab "Logs 1" [ref=f1e28] [cursor=pointer]:
- text: Logs
- generic [ref=f1e29]: "1"
- tab "Stack Trace" [ref=f1e30] [cursor=pointer]
- 'tabpanel "Error in src/PSC/Shop/OrderBundle/Controller/Backend/DetailController.php (line 115) /** * @var \\PSC\\Shop\\EntityBundle\\Document\\Order $orderObj */ $orderObj = $mongoService ->getRepository(''PSC\\Shop\\EntityBundle\\Document\\Order'') ->findOneBy(array(''uid'' => (string)$order->getUid())); if (!$orderObj) { $orderObj = new \\PSC\\Shop\\EntityBundle\\Document\\Order(); $orderObj->setUid((string)$order->getUid()); } in vendor/symfony/http-kernel/HttpKernel.php -> showAction (line 183) in vendor/symfony/http-kernel/HttpKernel.php -> handleRaw (line 76) in vendor/symfony/http-kernel/Kernel.php -> handle (line 193) Kernel->handle(object(Request)) in web/app.php (line 41)" [ref=f1e31]':
- generic [ref=f1e34]:
- generic [ref=f1e36] [cursor=pointer]:
- img [ref=f1e38]
- heading "Error" [level=3] [ref=f1e40]
- generic [ref=f1e41]:
- generic [ref=f1e42]:
- generic [ref=f1e43] [cursor=pointer]:
- img [ref=f1e45]
- generic [ref=f1e47]:
- text: in
- link "src/PSC/Shop/OrderBundle/Controller/Backend/DetailController.php" [ref=f1e48]:
- /url: file:///data/www/new/src/PSC/Shop/OrderBundle/Controller/Backend/DetailController.php#L115
- text: src/PSC/Shop/OrderBundle/Controller/Backend/
- strong [ref=f1e49]: DetailController.php
- text: (line 115)
- list [ref=f1e51]:
- listitem [ref=f1e52]:
- code [ref=f1e53]: /**
- listitem [ref=f1e54]:
- code [ref=f1e55]: "* @var \\PSC\\Shop\\EntityBundle\\Document\\Order $orderObj"
- listitem [ref=f1e56]:
- code [ref=f1e57]: "*/"
- listitem [ref=f1e58]:
- code [ref=f1e59]: $orderObj = $mongoService
- listitem [ref=f1e60]:
- code [ref=f1e61]: "->getRepository('PSC\\Shop\\EntityBundle\\Document\\Order')"
- listitem [ref=f1e62]:
- code [ref=f1e63]: "->findOneBy(array('uid' => (string)$order->getUid()));"
- listitem [ref=f1e64]:
- code [ref=f1e65]: "if (!$orderObj) {"
- listitem [ref=f1e66]:
- code [ref=f1e67]: $orderObj = new \PSC\Shop\EntityBundle\Document\Order();
- listitem [ref=f1e68]:
- code [ref=f1e69]: $orderObj->setUid((string)$order->getUid());
- listitem [ref=f1e70]:
- code [ref=f1e71]: "}"
- listitem [ref=f1e72]:
- code
- generic [ref=f1e74] [cursor=pointer]:
- img [ref=f1e76]
- generic [ref=f1e78]:
- text: in
- link "vendor/symfony/http-kernel/HttpKernel.php" [ref=f1e79]:
- /url: file:///data/www/new/vendor/symfony/http-kernel/HttpKernel.php#L183
- text: vendor/symfony/http-kernel/
- strong [ref=f1e80]: HttpKernel.php
- text: "-> showAction (line 183)"
- generic [ref=f1e82] [cursor=pointer]:
- img [ref=f1e84]
- generic [ref=f1e86]:
- text: in
- link "vendor/symfony/http-kernel/HttpKernel.php" [ref=f1e87]:
- /url: file:///data/www/new/vendor/symfony/http-kernel/HttpKernel.php#L76
- text: vendor/symfony/http-kernel/
- strong [ref=f1e88]: HttpKernel.php
- text: "-> handleRaw (line 76)"
- generic [ref=f1e90] [cursor=pointer]:
- img [ref=f1e92]
- generic [ref=f1e94]:
- text: in
- link "vendor/symfony/http-kernel/Kernel.php" [ref=f1e95]:
- /url: file:///data/www/new/vendor/symfony/http-kernel/Kernel.php#L193
- text: vendor/symfony/http-kernel/
- strong [ref=f1e96]: Kernel.php
- text: "-> handle (line 193)"
- generic [ref=f1e98] [cursor=pointer]:
- img [ref=f1e100]
- generic [ref=f1e102]: Kernel
- text: "->handle"
- generic [ref=f1e103]:
- text: (
- emphasis [ref=f1e104]: object
- text: (Request))
- generic [ref=f1e105]:
- text: in
- link "web/app.php" [ref=f1e106]:
- /url: file:///data/www/new/web/app.php#L41
- text: web/
- strong [ref=f1e107]: app.php
- text: (line 41)
- text: ✔ ▾ ✔ ✔ ✔ ▾
- region "Symfony Web Debug Toolbar" [ref=f1e108]:
- generic [ref=f1e111]:
- link "500 Redirect @ psc_shop_order_backend_detail_show" [ref=f1e113] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/42fb8f?panel=request
- generic [ref=f1e114]:
- generic [ref=f1e115]: "500"
- img "Redirect" [ref=f1e117]
- img [ref=f1e121]
- generic [ref=f1e125]: "@"
- generic [ref=f1e126]: psc_shop_order_backend_detail_show
- link "479 ms" [ref=f1e128] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/42fb8f?panel=time
- generic [ref=f1e129]:
- generic [ref=f1e130]: "479"
- generic [ref=f1e131]: ms
- link "94.5 MiB" [ref=f1e133] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/42fb8f?panel=time
- generic [ref=f1e134]:
- generic [ref=f1e135]: "94.5"
- generic [ref=f1e136]: MiB
- link "Logger 1" [ref=f1e138] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/42fb8f?panel=logger
- generic [ref=f1e139]:
- img "Logger" [ref=f1e140]
- generic [ref=f1e144]: "1"
- link "Cache 2 in 0.02 ms" [ref=f1e146] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/42fb8f?panel=cache
- generic [ref=f1e147]:
- img "Cache" [ref=f1e148]
- generic [ref=f1e153]: "2"
- generic [ref=f1e154]: in 0.02 ms
- link "Security 1" [ref=f1e156] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/42fb8f?panel=security
- generic [ref=f1e157]:
- img "Security" [ref=f1e158]
- generic [ref=f1e162]: "1"
- link "Twig 1 ms" [ref=f1e164] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/42fb8f?panel=twig
- generic [ref=f1e165]:
- img "Twig" [ref=f1e166]
- generic [ref=f1e170]: "1"
- generic [ref=f1e171]: ms
- link "4 in 2.32 ms" [ref=f1e173] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/42fb8f?panel=db
- generic [ref=f1e174]:
- img [ref=f1e175]
- generic [ref=f1e180]: "4"
- generic [ref=f1e181]: in 2.32 ms
- link "3 in 1.18 ms" [ref=f1e183] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/42fb8f?panel=mongodb
- generic [ref=f1e184]:
- img [ref=f1e185]
- generic [ref=f1e187]: "3"
- generic [ref=f1e188]: in 1.18 ms
- 'link "S: 0 D: 0" [ref=f1e190] [cursor=pointer]':
- /url: http://type-dev-tp.local/apps/_profiler/42fb8f?panel=jms_serializer
- generic [ref=f1e191]:
- img [ref=f1e192]
- generic [ref=f1e194]: "S:"
- generic [ref=f1e195]: "0"
- generic [ref=f1e196]: "D:"
- generic [ref=f1e197]: "0"
- link "Symfony 7.4.6" [ref=f1e199] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/42fb8f?panel=config
- generic [ref=f1e200]:
- img "Symfony" [ref=f1e202]
- generic [ref=f1e204]: 7.4.6
- button [expanded] [ref=f1e205] [cursor=pointer]:
- generic "Close Toolbar" [ref=f1e206]:
- img [ref=f1e207]

View File

@ -0,0 +1,334 @@
- generic [active] [ref=f2e1]:
- generic [ref=f2e2]:
- complementary [ref=f2e3]:
- generic [ref=f2e5]:
- button "Collapse sidebar" [ref=f2e6] [cursor=pointer]:
- img [ref=f2e7]
- img "PrintshopCreator Logo" [ref=f2e10]
- navigation [ref=f2e11]:
- list [ref=f2e12]:
- listitem [ref=f2e13]:
- list [ref=f2e14]:
- listitem [ref=f2e15]:
- link " Dashboard" [ref=f2e17] [cursor=pointer]:
- /url: /apps/backend/dashboard
- generic [ref=f2e18]:
- generic [ref=f2e19]: Dashboard
- listitem [ref=f2e20]:
- link " Aufträge" [ref=f2e22] [cursor=pointer]:
- /url: /apps/backend/order/list/index
- generic [ref=f2e23]:
- generic [ref=f2e24]: Aufträge
- listitem [ref=f2e25]:
- link " Sendcloud" [ref=f2e27] [cursor=pointer]:
- /url: /apps/backend/r2_sendcloud/list
- generic [ref=f2e28]:
- generic [ref=f2e29]: Sendcloud
- listitem [ref=f2e30]:
- generic [ref=f2e31]:
- generic [ref=f2e32]:
- generic [ref=f2e33]:
- generic [ref=f2e34]: Produktion
- generic [ref=f2e36]:
- text:    
- listitem [ref=f2e37]:
- generic [ref=f2e38]:
- generic [ref=f2e39]:
- generic [ref=f2e40]:
- generic [ref=f2e41]: Produkte
- generic [ref=f2e43]:
- text:  
- listitem [ref=f2e44]:
- link " Firmen" [ref=f2e46] [cursor=pointer]:
- /url: /apps/backend/account/list/index
- generic [ref=f2e47]:
- generic [ref=f2e48]: Firmen
- listitem [ref=f2e49]:
- link " Kunden" [ref=f2e51] [cursor=pointer]:
- /url: /apps/backend/contact/list/index
- generic [ref=f2e52]:
- generic [ref=f2e53]: Kunden
- listitem [ref=f2e54]:
- link " CMS" [ref=f2e56] [cursor=pointer]:
- /url: /apps/backend/cms/list
- generic [ref=f2e57]:
- generic [ref=f2e58]: CMS
- listitem [ref=f2e59]:
- link " Versandarten" [ref=f2e61] [cursor=pointer]:
- /url: /apps/backend/shipping/list/index
- generic [ref=f2e62]:
- generic [ref=f2e63]: Versandarten
- listitem [ref=f2e64]:
- link " Zahlarten" [ref=f2e66] [cursor=pointer]:
- /url: /apps/backend/payment/list/index
- generic [ref=f2e67]:
- generic [ref=f2e68]: Zahlarten
- listitem [ref=f2e69]:
- link " News" [ref=f2e71] [cursor=pointer]:
- /url: /apps/backend/news/list/index
- generic [ref=f2e72]:
- generic [ref=f2e73]: News
- listitem [ref=f2e74]:
- link " Gutschein" [ref=f2e76] [cursor=pointer]:
- /url: /apps/backend/voucher/list/index
- generic [ref=f2e77]:
- generic [ref=f2e78]: Gutschein
- listitem [ref=f2e79]:
- generic [ref=f2e80]:
- generic [ref=f2e81]:
- generic [ref=f2e82]:
- generic [ref=f2e83]: Tools
- generic [ref=f2e85]:
- text:  
- listitem [ref=f2e86]:
- generic [ref=f2e87]:
- generic [ref=f2e88]:
- generic [ref=f2e89]:
- generic [ref=f2e90]: Shop Einstellungen
- generic [ref=f2e92]:
- text:            
- listitem [ref=f2e93]:
- link " Aktionen" [ref=f2e95] [cursor=pointer]:
- /url: /apps/backend/queue/list/index
- generic [ref=f2e96]:
- generic [ref=f2e97]: Aktionen
- list [ref=f2e98]:
- listitem [ref=f2e99]:
- button "Systemeinstellungen" [ref=f2e100] [cursor=pointer]:
- paragraph [ref=f2e102]: Systemeinstellungen
- list [ref=f2e103]:
- listitem [ref=f2e104]:
- link " Statusverwaltung" [ref=f2e106] [cursor=pointer]:
- /url: /apps/backend/system/settings/status/index
- generic [ref=f2e107]:
- generic [ref=f2e108]: Statusverwaltung
- listitem [ref=f2e109]:
- link " Papierdatenbank" [ref=f2e111] [cursor=pointer]:
- /url: /apps/backend/system/settings/paper/index
- generic [ref=f2e112]:
- generic [ref=f2e113]: Papierdatenbank
- listitem [ref=f2e114]:
- link " Hilfetexte" [ref=f2e116] [cursor=pointer]:
- /url: /apps/backend/system/settings/help/index
- generic [ref=f2e117]:
- generic [ref=f2e118]: Hilfetexte
- listitem [ref=f2e119]:
- link " Systemeinstellung" [ref=f2e121] [cursor=pointer]:
- /url: /apps/backend/system/settings/settings/index
- generic [ref=f2e122]:
- generic [ref=f2e123]: Systemeinstellung
- listitem [ref=f2e124]:
- link " Logs" [ref=f2e126] [cursor=pointer]:
- /url: /apps/backend/system/settings/log/index
- generic [ref=f2e127]:
- generic [ref=f2e128]: Logs
- listitem [ref=f2e129]:
- link " Media" [ref=f2e131] [cursor=pointer]:
- /url: /apps/backend/media/list/folder/show
- generic [ref=f2e132]:
- generic [ref=f2e133]: Media
- listitem [ref=f2e134]:
- list [ref=f2e135]:
- listitem [ref=f2e136]:
- link " Apps & App Store" [ref=f2e138] [cursor=pointer]:
- /url: /apps/backend/plugin/list
- generic [ref=f2e139]:
- generic [ref=f2e140]: Apps & App Store
- separator [ref=f2e141]
- paragraph [ref=f2e142]: 07.07.2026 15:11:12
- paragraph [ref=f2e143]:
- link "v2.3.8 (24.06.2026)" [ref=f2e144] [cursor=pointer]:
- /url: /apps/backend/system/settings/backend/system/version/changelog
- generic [ref=f2e145]:
- banner [ref=f2e146]:
- generic [ref=f2e148]:
- generic [ref=f2e150]:
- combobox [ref=f2e151]:
- option "Bestesvonhier" [selected]
- option "eder"
- option "nowe"
- option "Printchampion"
- option "Produkttypen"
- link "Shop anzeigen" [ref=f2e152] [cursor=pointer]:
- /url: https://b-dev-tp.dockserver.de
- img [ref=f2e153]
- generic [ref=f2e155]:
- checkbox [ref=f2e156]
- text: Deaktive Shops zeigen
- link "Kein 2FA aktiviert" [ref=f2e158] [cursor=pointer]:
- /url: /apps/backend/2fa-settings
- link "EN" [ref=f2e160] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/backend/order/list/index?_locale=en
- button "User menu" [ref=f2e163] [cursor=pointer]
- generic [ref=f2e165]:
- banner [ref=f2e166]:
- heading "Aufträge List" [level=1] [ref=f2e168]:
- img [ref=f2e169]
- text: Aufträge
- generic [ref=f2e171]: List
- generic [ref=f2e172]:
- link "Auftrag anlegen (BETA)" [ref=f2e175] [cursor=pointer]:
- /url: /apps/backend/component/invoice/index/create
- generic [ref=f2e176]:
- generic [ref=f2e179]:
- generic [ref=f2e180]:
- generic [ref=f2e181]: "Filtern nach Auftragsstatus (Positionsstatus wird nicht berücksichtigt):"
- generic [ref=f2e182]:
- generic [ref=f2e183]:
- generic [ref=f2e184]: Verfügbar
- listbox [ref=f2e185]:
- option "neue Bestellung" [ref=f2e186]
- option "neue Anfrage" [ref=f2e187]
- option "Upload offen" [ref=f2e188]
- option "Daten hochgeladen" [ref=f2e189]
- option "Upload abgeschlossen" [ref=f2e190]
- option "Daten werden überprüft" [ref=f2e191]
- option "Daten Fehler" [ref=f2e192]
- option "Daten Ok" [ref=f2e193]
- option "Preflight wird ausgeführt" [ref=f2e194]
- option "Preflightcheck Fehler" [ref=f2e195]
- option "Preflight Ok" [ref=f2e196]
- option "wartet auf Freigabe Einer" [ref=f2e197]
- option "wartet auf Freigabe Alle" [ref=f2e198]
- option "Freigabe ist erfolgt" [ref=f2e199]
- option "Freigabe abgelehnt" [ref=f2e200]
- option "Angebot abgegeben" [ref=f2e201]
- option "wartet auf Zahlungseingang" [ref=f2e202]
- option "Zahlung erhalten" [ref=f2e203]
- option "Download steht bereit" [ref=f2e204]
- option "in Produktion" [ref=f2e205]
- option "abgebrochen oder storniert" [ref=f2e206]
- option "produziert" [ref=f2e207]
- option "Zur Abholung bereit" [ref=f2e208]
- option "in Bearbeitung" [ref=f2e209]
- option "wartet auf Versand" [ref=f2e210]
- option "versendet" [ref=f2e211]
- option "abgeschlossen" [ref=f2e212]
- generic [ref=f2e213]:
- button "Alle nach rechts" [ref=f2e214] [cursor=pointer]:
- img [ref=f2e215]
- button "Ausgewählte nach rechts" [ref=f2e217] [cursor=pointer]:
- img [ref=f2e218]
- button "Ausgewählte nach links" [ref=f2e220] [cursor=pointer]:
- img [ref=f2e221]
- button "Alle nach links" [ref=f2e223] [cursor=pointer]:
- img [ref=f2e224]
- generic [ref=f2e226]:
- generic [ref=f2e227]: Ausgewählt
- listbox [ref=f2e228]
- generic [ref=f2e229]:
- generic [ref=f2e230]: "Suchen nach (Auftragsstatus-Filter wird berücksichtigt):"
- generic [ref=f2e231]:
- textbox "Auftrag suchen..." [ref=f2e232]
- button "Filter anwenden" [ref=f2e233] [cursor=pointer]:
- img [ref=f2e234]
- text: Filter anwenden
- table [ref=f2e237]:
- rowgroup [ref=f2e238]:
- row "ID Typ Entwurf Gast Auftragsnummer Erzeugt Username/Login WK/Pos 1 Rechnungsadresse Preis Netto (Brutto) Aktionen" [ref=f2e239]:
- columnheader [ref=f2e240]
- columnheader "ID" [ref=f2e241]:
- link "ID" [ref=f2e242] [cursor=pointer]:
- /url: /apps/backend/order/list/index?sort=orders.uid&direction=asc&page=1
- columnheader "Typ" [ref=f2e243]:
- link "Typ" [ref=f2e244] [cursor=pointer]:
- /url: /apps/backend/order/list/index?sort=orders.type&direction=desc&page=1
- columnheader "Entwurf" [ref=f2e245]
- columnheader "Gast" [ref=f2e246]
- columnheader "Auftragsnummer" [ref=f2e247]:
- link "Auftragsnummer" [ref=f2e248] [cursor=pointer]:
- /url: /apps/backend/order/list/index?sort=orders.alias&direction=desc&page=1
- columnheader "Erzeugt" [ref=f2e249]:
- link "Erzeugt" [ref=f2e250] [cursor=pointer]:
- /url: /apps/backend/order/list/index?sort=orders.created&direction=desc&page=1
- columnheader "Username/Login" [ref=f2e251]:
- link "Username/Login" [ref=f2e252] [cursor=pointer]:
- /url: /apps/backend/order/list/index?sort=contact.username&direction=desc&page=1
- columnheader "WK/Pos 1" [ref=f2e253]:
- link "WK/Pos 1" [ref=f2e254] [cursor=pointer]:
- /url: /apps/backend/order/list/index?sort=orders.basketfield1&direction=desc&page=1
- columnheader "Rechnungsadresse" [ref=f2e255]
- columnheader "Preis Netto (Brutto)" [ref=f2e256]
- columnheader "Aktionen" [ref=f2e257]
- rowgroup
- region "Symfony Web Debug Toolbar" [ref=f2e258]:
- generic [ref=f2e261]:
- link "200 @ psc_shop_order_backend_list_index" [ref=f2e263] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c740bb?panel=request
- generic [ref=f2e264]:
- generic [ref=f2e265]: "200"
- generic [ref=f2e266]: "@"
- generic [ref=f2e267]: psc_shop_order_backend_list_index
- link "849 ms" [ref=f2e269] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c740bb?panel=time
- generic [ref=f2e270]:
- generic [ref=f2e271]: "849"
- generic [ref=f2e272]: ms
- link "100.5 MiB" [ref=f2e274] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c740bb?panel=time
- generic [ref=f2e275]:
- generic [ref=f2e276]: "100.5"
- generic [ref=f2e277]: MiB
- generic [ref=f2e279] [cursor=pointer]:
- img [ref=f2e280]
- generic [ref=f2e284]: "1"
- link "Cache 1" [ref=f2e286] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c740bb?panel=form
- generic [ref=f2e287]:
- img "Cache" [ref=f2e288]
- generic [ref=f2e294]: "1"
- link "Logger 400" [ref=f2e296] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c740bb?panel=logger
- generic [ref=f2e297]:
- img "Logger" [ref=f2e298]
- generic [ref=f2e302]: "400"
- link "Cache 8 in 0.07 ms" [ref=f2e304] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c740bb?panel=cache
- generic [ref=f2e305]:
- img "Cache" [ref=f2e306]
- generic [ref=f2e311]: "8"
- generic [ref=f2e312]: in 0.07 ms
- link "80" [ref=f2e314] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c740bb?panel=translation
- generic [ref=f2e315]:
- img [ref=f2e316]
- generic [ref=f2e321]: "80"
- link "Security 1" [ref=f2e323] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c740bb?panel=security
- generic [ref=f2e324]:
- img "Security" [ref=f2e325]
- generic [ref=f2e329]: "1"
- link "Twig 148 ms" [ref=f2e331] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c740bb?panel=twig
- generic [ref=f2e332]:
- img "Twig" [ref=f2e333]
- generic [ref=f2e337]: "148"
- generic [ref=f2e338]: ms
- link "12 in 17.85 ms" [ref=f2e340] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c740bb?panel=db
- generic [ref=f2e341]:
- img [ref=f2e342]
- generic [ref=f2e347]: "12"
- generic [ref=f2e348]: in 17.85 ms
- link "9 in 3.93 ms" [ref=f2e350] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c740bb?panel=mongodb
- generic [ref=f2e351]:
- img [ref=f2e352]
- generic [ref=f2e354]: "9"
- generic [ref=f2e355]: in 3.93 ms
- 'link "S: 0 D: 0" [ref=f2e357] [cursor=pointer]':
- /url: http://type-dev-tp.local/apps/_profiler/c740bb?panel=jms_serializer
- generic [ref=f2e358]:
- img [ref=f2e359]
- generic [ref=f2e361]: "S:"
- generic [ref=f2e362]: "0"
- generic [ref=f2e363]: "D:"
- generic [ref=f2e364]: "0"
- link "Symfony 7.4.6" [ref=f2e366] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c740bb?panel=config
- generic [ref=f2e367]:
- img "Symfony" [ref=f2e369]
- generic [ref=f2e371]: 7.4.6
- button [expanded] [ref=f2e372] [cursor=pointer]:
- generic "Close Toolbar" [ref=f2e373]:
- img [ref=f2e374]

View File

@ -0,0 +1,767 @@
- generic [active] [ref=f4e1]:
- generic [ref=f4e2]:
- complementary [ref=f4e3]:
- generic [ref=f4e5]:
- button "Collapse sidebar" [ref=f4e6] [cursor=pointer]:
- img [ref=f4e7]
- img "PrintshopCreator Logo" [ref=f4e10]
- navigation [ref=f4e11]:
- list [ref=f4e12]:
- listitem [ref=f4e13]:
- list [ref=f4e14]:
- listitem [ref=f4e15]:
- link " Dashboard" [ref=f4e17] [cursor=pointer]:
- /url: /apps/backend/dashboard
- generic [ref=f4e18]:
- generic [ref=f4e19]: Dashboard
- listitem [ref=f4e20]:
- link " Aufträge" [ref=f4e22] [cursor=pointer]:
- /url: /apps/backend/order/list/index
- generic [ref=f4e23]:
- generic [ref=f4e24]: Aufträge
- listitem [ref=f4e25]:
- link " Sendcloud" [ref=f4e27] [cursor=pointer]:
- /url: /apps/backend/r2_sendcloud/list
- generic [ref=f4e28]:
- generic [ref=f4e29]: Sendcloud
- listitem [ref=f4e30]:
- generic [ref=f4e31]:
- generic [ref=f4e32]:
- generic [ref=f4e33]:
- generic [ref=f4e34]: Produktion
- generic [ref=f4e36]:
- text:    
- listitem [ref=f4e37]:
- generic [ref=f4e38]:
- generic [ref=f4e39]:
- generic [ref=f4e40]:
- generic [ref=f4e41]: Produkte
- generic [ref=f4e43]:
- text:  
- listitem [ref=f4e44]:
- link " Firmen" [ref=f4e46] [cursor=pointer]:
- /url: /apps/backend/account/list/index
- generic [ref=f4e47]:
- generic [ref=f4e48]: Firmen
- listitem [ref=f4e49]:
- link " Kunden" [ref=f4e51] [cursor=pointer]:
- /url: /apps/backend/contact/list/index
- generic [ref=f4e52]:
- generic [ref=f4e53]: Kunden
- listitem [ref=f4e54]:
- link " CMS" [ref=f4e56] [cursor=pointer]:
- /url: /apps/backend/cms/list
- generic [ref=f4e57]:
- generic [ref=f4e58]: CMS
- listitem [ref=f4e59]:
- link " Versandarten" [ref=f4e61] [cursor=pointer]:
- /url: /apps/backend/shipping/list/index
- generic [ref=f4e62]:
- generic [ref=f4e63]: Versandarten
- listitem [ref=f4e64]:
- link " Zahlarten" [ref=f4e66] [cursor=pointer]:
- /url: /apps/backend/payment/list/index
- generic [ref=f4e67]:
- generic [ref=f4e68]: Zahlarten
- listitem [ref=f4e69]:
- link " News" [ref=f4e71] [cursor=pointer]:
- /url: /apps/backend/news/list/index
- generic [ref=f4e72]:
- generic [ref=f4e73]: News
- listitem [ref=f4e74]:
- link " Gutschein" [ref=f4e76] [cursor=pointer]:
- /url: /apps/backend/voucher/list/index
- generic [ref=f4e77]:
- generic [ref=f4e78]: Gutschein
- listitem [ref=f4e79]:
- generic [ref=f4e80]:
- generic [ref=f4e81]:
- generic [ref=f4e82]:
- generic [ref=f4e83]: Tools
- generic [ref=f4e85]:
- text:  
- listitem [ref=f4e86]:
- generic [ref=f4e87]:
- generic [ref=f4e88]:
- generic [ref=f4e89]:
- generic [ref=f4e90]: Shop Einstellungen
- generic [ref=f4e92]:
- text:            
- listitem [ref=f4e93]:
- link " Aktionen" [ref=f4e95] [cursor=pointer]:
- /url: /apps/backend/queue/list/index
- generic [ref=f4e96]:
- generic [ref=f4e97]: Aktionen
- list [ref=f4e98]:
- listitem [ref=f4e99]:
- button "Systemeinstellungen" [ref=f4e100] [cursor=pointer]:
- paragraph [ref=f4e102]: Systemeinstellungen
- list [ref=f4e103]:
- listitem [ref=f4e104]:
- link " Statusverwaltung" [ref=f4e106] [cursor=pointer]:
- /url: /apps/backend/system/settings/status/index
- generic [ref=f4e107]:
- generic [ref=f4e108]: Statusverwaltung
- listitem [ref=f4e109]:
- link " Papierdatenbank" [ref=f4e111] [cursor=pointer]:
- /url: /apps/backend/system/settings/paper/index
- generic [ref=f4e112]:
- generic [ref=f4e113]: Papierdatenbank
- listitem [ref=f4e114]:
- link " Hilfetexte" [ref=f4e116] [cursor=pointer]:
- /url: /apps/backend/system/settings/help/index
- generic [ref=f4e117]:
- generic [ref=f4e118]: Hilfetexte
- listitem [ref=f4e119]:
- link " Systemeinstellung" [ref=f4e121] [cursor=pointer]:
- /url: /apps/backend/system/settings/settings/index
- generic [ref=f4e122]:
- generic [ref=f4e123]: Systemeinstellung
- listitem [ref=f4e124]:
- link " Logs" [ref=f4e126] [cursor=pointer]:
- /url: /apps/backend/system/settings/log/index
- generic [ref=f4e127]:
- generic [ref=f4e128]: Logs
- listitem [ref=f4e129]:
- link " Media" [ref=f4e131] [cursor=pointer]:
- /url: /apps/backend/media/list/folder/show
- generic [ref=f4e132]:
- generic [ref=f4e133]: Media
- listitem [ref=f4e134]:
- list [ref=f4e135]:
- listitem [ref=f4e136]:
- link " Apps & App Store" [ref=f4e138] [cursor=pointer]:
- /url: /apps/backend/plugin/list
- generic [ref=f4e139]:
- generic [ref=f4e140]: Apps & App Store
- separator [ref=f4e141]
- paragraph [ref=f4e142]: 07.07.2026 15:11:48
- paragraph [ref=f4e143]:
- link "v2.3.8 (24.06.2026)" [ref=f4e144] [cursor=pointer]:
- /url: /apps/backend/system/settings/backend/system/version/changelog
- generic [ref=f4e145]:
- banner [ref=f4e146]:
- generic [ref=f4e148]:
- generic [ref=f4e150]:
- combobox [ref=f4e151]:
- option "Bestesvonhier"
- option "eder"
- option "nowe"
- option "Printchampion"
- option "Produkttypen" [selected]
- link "Shop anzeigen" [ref=f4e152] [cursor=pointer]:
- /url: https://type-dev-tp.local
- img [ref=f4e153]
- generic [ref=f4e155]:
- checkbox [ref=f4e156]
- text: Deaktive Shops zeigen
- link "Kein 2FA aktiviert" [ref=f4e158] [cursor=pointer]:
- /url: /apps/backend/2fa-settings
- link "EN" [ref=f4e160] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/backend/order/detail/show/928d23d0-61b8-eae7-9418-2cd2729e8b3b?_locale=en
- button "User menu" [ref=f4e163] [cursor=pointer]
- generic [ref=f4e165]:
- banner [ref=f4e166]:
- generic [ref=f4e167]:
- heading "Auftrag Detail AF-08.04.2026-90" [level=1] [ref=f4e168]:
- img [ref=f4e169]
- text: Auftrag
- generic [ref=f4e171]: Detail
- generic [ref=f4e172]: AF-08.04.2026-90
- link "Zurück" [ref=f4e173] [cursor=pointer]:
- /url: /apps/backend/order/list/index
- img [ref=f4e174]
- text: Zurück
- generic [ref=f4e176]:
- generic [ref=f4e178]:
- link "Paket herunterladen" [ref=f4e179] [cursor=pointer]:
- /url: /apps/backend/order/detail/package/download/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- img [ref=f4e180]
- text: Paket herunterladen
- link "Rechnung" [ref=f4e182] [cursor=pointer]:
- /url: /apps/backend/order/detail/print/1/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- img [ref=f4e183]
- text: Rechnung
- link "Jobticket" [ref=f4e185] [cursor=pointer]:
- /url: /apps/backend/order/detail/print/7/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- img [ref=f4e186]
- text: Jobticket
- link "XRechnung" [ref=f4e188] [cursor=pointer]:
- /url: /apps/backend/order/detail/xrechnung/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- img [ref=f4e189]
- text: XRechnung
- generic [ref=f4e191]:
- generic [ref=f4e192]:
- heading "Auftrag AF-08.04.2026-90" [level=4] [ref=f4e193]
- generic [ref=f4e194]:
- generic [ref=f4e195]:
- term [ref=f4e196]: "Zahlart:"
- definition [ref=f4e197]: molli
- generic [ref=f4e198]:
- term [ref=f4e199]: "Zahlung Gateway (Ref):"
- definition [ref=f4e200]: mollie (62c5de1)
- generic [ref=f4e201]:
- term [ref=f4e202]: "Versandart:"
- definition [ref=f4e203]: DHL
- generic [ref=f4e204]:
- term [ref=f4e205]: "Daten an Versanddienstleister:"
- definition [ref=f4e206]:
- generic [ref=f4e207]: Ja
- generic [ref=f4e208]:
- term [ref=f4e209]: "Gewicht:"
- definition [ref=f4e210]: "0"
- generic [ref=f4e211]:
- term [ref=f4e212]: "Warenkorbfeld 1:"
- definition
- generic [ref=f4e213]:
- term [ref=f4e214]: "Warenkorbfeld 2:"
- definition
- generic [ref=f4e215]:
- term [ref=f4e216]: "Gutschein (Code):"
- definition [ref=f4e217]:
- generic [ref=f4e218]: hddecal-1 (100,00 €)
- generic [ref=f4e219]: earlybird24 (10 %)
- generic [ref=f4e220]:
- generic [ref=f4e221]:
- term [ref=f4e222]: "Versandkosten:"
- definition [ref=f4e223]: 10,00
- generic [ref=f4e224]:
- term [ref=f4e225]: "Zahlartkosten:"
- definition [ref=f4e226]: 0,00
- generic [ref=f4e227]:
- term [ref=f4e228]: "Netto Preis:"
- definition [ref=f4e229]: 7.018,00
- generic [ref=f4e230]:
- term [ref=f4e231]: "MwSt.:"
- definition [ref=f4e232]: 1.333,42
- generic [ref=f4e233]:
- term [ref=f4e234]: "Brutto Preis:"
- definition [ref=f4e235]: 8.351,42
- generic [ref=f4e236]:
- heading "Status" [level=4] [ref=f4e237]
- generic [ref=f4e238]: "Auftragsdatum: 07.07.2026 14:12:34"
- generic [ref=f4e239]:
- generic [ref=f4e240]:
- generic [ref=f4e241]: Package exportiert?
- generic [ref=f4e242]:
- generic [ref=f4e243]: Ja
- link "Nochmal gernerieren" [ref=f4e244] [cursor=pointer]:
- /url: /apps/backend/order/package/exported/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- generic [ref=f4e245]:
- generic [ref=f4e247]: Paketnummer
- textbox "Paketnummer" [ref=f4e248]
- generic [ref=f4e249]:
- generic [ref=f4e251]: Warenkorbstatus
- combobox "Warenkorbstatus" [ref=f4e252]:
- option
- option "neue Bestellung" [selected]
- option "neue Anfrage"
- option "Upload offen"
- option "Daten hochgeladen"
- option "Upload abgeschlossen"
- option "Daten werden überprüft"
- option "Daten Fehler"
- option "Daten Ok"
- option "Preflight wird ausgeführt"
- option "Preflightcheck Fehler"
- option "Preflight Ok"
- option "wartet auf Freigabe Einer"
- option "wartet auf Freigabe Alle"
- option "Freigabe ist erfolgt"
- option "Freigabe abgelehnt"
- option "Angebot abgegeben"
- option "wartet auf Zahlungseingang"
- option "Zahlung erhalten"
- option "Download steht bereit"
- option "in Produktion"
- option "abgebrochen oder storniert"
- option "produziert"
- option "Zur Abholung bereit"
- option "in Bearbeitung"
- option "wartet auf Versand"
- option "versendet"
- option "abgeschlossen"
- generic [ref=f4e253]:
- generic [ref=f4e255]: Notizen
- textbox "Notizen" [ref=f4e256]
- button "Speichern" [ref=f4e258] [cursor=pointer]: Speichern
- generic [ref=f4e259]:
- generic [ref=f4e260]:
- heading "Kunde" [level=4] [ref=f4e261]
- generic [ref=f4e262]:
- generic [ref=f4e263]:
- term [ref=f4e264]: "Username/Login:"
- definition [ref=f4e265]:
- link "admin@shop.de" [ref=f4e266] [cursor=pointer]:
- /url: mailto:admin@shop.de
- generic [ref=f4e267]:
- term [ref=f4e268]: "Name:"
- definition [ref=f4e269]:
- link "Martina Peterson" [ref=f4e270] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-528bd456-4bcd48e8-13e1-0683b94f
- generic [ref=f4e271]:
- term [ref=f4e272]: "Firma:"
- definition [ref=f4e273]:
- link "Oberfirma" [ref=f4e274] [cursor=pointer]:
- /url: /apps/backend/account/edit/edit/24
- generic [ref=f4e275]:
- term [ref=f4e276]: "Gast:"
- definition [ref=f4e277]:
- generic [ref=f4e278]: Nein
- generic [ref=f4e280]:
- link "Neuer Auftrag Aktion erneut auslösen" [ref=f4e281] [cursor=pointer]:
- /url: /apps/backend/order/detail/create/new/order/status/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- button "Auftrag löschen" [ref=f4e282] [cursor=pointer]
- link "Uploads Löschen" [ref=f4e283] [cursor=pointer]:
- /url: /apps/backend/order/upload/deleteAll/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- img [ref=f4e284]
- text: Uploads Löschen
- link "Auftrag bearbeiten (BETA)" [ref=f4e286] [cursor=pointer]:
- /url: /apps/backend/component/invoice/index/create#/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- generic [ref=f4e287]:
- generic [ref=f4e288]: Saxoprint
- generic [ref=f4e289]:
- link "Sammelbestellung für diesen Auftrag ausführen" [ref=f4e290] [cursor=pointer]:
- /url: /apps/backend/plugin/custom/psc/saxoprint/collect/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- table [ref=f4e291]:
- rowgroup [ref=f4e292]:
- row "Pos External Number Status" [ref=f4e293]:
- columnheader "Pos" [ref=f4e294]
- columnheader "External Number" [ref=f4e295]
- columnheader "Status" [ref=f4e296]
- rowgroup
- generic [ref=f4e297]:
- generic [ref=f4e298]: Wir machen Druck
- table [ref=f4e300]:
- rowgroup [ref=f4e301]:
- row "Pos External Number Status" [ref=f4e302]:
- columnheader "Pos" [ref=f4e303]
- columnheader "External Number" [ref=f4e304]
- columnheader "Status" [ref=f4e305]
- rowgroup
- generic [ref=f4e306]:
- heading "Adressen" [level=4] [ref=f4e307]
- generic [ref=f4e308]:
- generic [ref=f4e309]:
- heading "Rechnungsanschrift" [level=5] [ref=f4e310]
- generic [ref=f4e311]:
- generic [ref=f4e312]:
- generic [ref=f4e314]: Firma
- textbox "Firma" [ref=f4e315]: Musterfirma
- generic [ref=f4e316]:
- generic [ref=f4e318]: Zusatz
- textbox "Zusatz" [ref=f4e319]
- generic [ref=f4e320]:
- generic [ref=f4e322]: Vorname
- textbox "Vorname" [ref=f4e323]: admin
- generic [ref=f4e324]:
- generic [ref=f4e326]: Nachname
- textbox "Nachname" [ref=f4e327]: admin
- generic [ref=f4e328]:
- generic [ref=f4e330]: EMail
- textbox "EMail" [ref=f4e331]: admin@shop.de
- generic [ref=f4e332]:
- generic [ref=f4e334]: Telefon
- textbox "Telefon" [ref=f4e335]: "12345"
- generic [ref=f4e336]:
- generic [ref=f4e337]: PLZ / Stadt / LK
- generic [ref=f4e338]:
- textbox [ref=f4e340]: "12345"
- textbox [ref=f4e342]: Musterort
- textbox [ref=f4e344]: DE
- generic [ref=f4e345]:
- generic [ref=f4e346]: Straße / Nr.
- generic [ref=f4e347]:
- textbox [ref=f4e349]: Musterstrasse
- textbox [ref=f4e351]: "1"
- button "Speichern" [ref=f4e353] [cursor=pointer]: Speichern
- generic [ref=f4e354]:
- heading "Lieferanschrift" [level=5] [ref=f4e355]
- generic [ref=f4e356]:
- generic [ref=f4e357]:
- generic [ref=f4e359]: Firma
- textbox "Firma" [ref=f4e360]: Musterfirma
- generic [ref=f4e361]:
- generic [ref=f4e363]: Zusatz
- textbox "Zusatz" [ref=f4e364]
- generic [ref=f4e365]:
- generic [ref=f4e367]: Vorname
- textbox "Vorname" [ref=f4e368]: admin
- generic [ref=f4e369]:
- generic [ref=f4e371]: Nachname
- textbox "Nachname" [ref=f4e372]: admin
- generic [ref=f4e373]:
- generic [ref=f4e375]: EMail
- textbox "EMail" [ref=f4e376]: admin@shop.de
- generic [ref=f4e377]:
- generic [ref=f4e379]: Telefon
- textbox "Telefon" [ref=f4e380]: "123456"
- generic [ref=f4e381]:
- generic [ref=f4e382]: PLZ / Stadt / LK
- generic [ref=f4e383]:
- textbox [ref=f4e385]: "12345"
- textbox [ref=f4e387]: Musterort
- textbox [ref=f4e389]: DE
- generic [ref=f4e390]:
- generic [ref=f4e391]: Straße / Nr.
- generic [ref=f4e392]:
- textbox [ref=f4e394]: Musterstrasse
- textbox [ref=f4e396]: "1"
- button "Speichern" [ref=f4e398] [cursor=pointer]: Speichern
- generic [ref=f4e399]:
- heading "Absenderadresse" [level=5] [ref=f4e400]
- generic [ref=f4e401]:
- generic [ref=f4e402]:
- generic [ref=f4e404]: Firma
- textbox "Firma" [ref=f4e405]: PSC
- generic [ref=f4e406]:
- generic [ref=f4e408]: Zusatz
- textbox "Zusatz" [ref=f4e409]
- generic [ref=f4e410]:
- generic [ref=f4e412]: Vorname
- textbox "Vorname" [ref=f4e413]: Thomas
- generic [ref=f4e414]:
- generic [ref=f4e416]: Nachname
- textbox "Nachname" [ref=f4e417]: Peterson
- generic [ref=f4e418]:
- generic [ref=f4e420]: EMail
- textbox "EMail" [ref=f4e421]: psc@printshopcreator.com
- generic [ref=f4e422]:
- generic [ref=f4e424]: Telefon
- textbox "Telefon" [ref=f4e425]: "01705045438"
- generic [ref=f4e426]:
- generic [ref=f4e427]: PLZ / Stadt / LK
- generic [ref=f4e428]:
- textbox [ref=f4e430]: "17506"
- textbox [ref=f4e432]: Gribow
- textbox [ref=f4e434]: DE
- generic [ref=f4e435]:
- generic [ref=f4e436]: Straße / Nr.
- generic [ref=f4e437]:
- textbox [ref=f4e439]: Chausseestraße
- textbox [ref=f4e441]: 24b
- button "Speichern" [ref=f4e443] [cursor=pointer]: Speichern
- generic [ref=f4e444]:
- heading "Positionen" [level=4] [ref=f4e446]
- table [ref=f4e448]:
- rowgroup [ref=f4e449]:
- row "Pos. Name / Details WK_Pos_1 und WK_Pos_2 Eigenschaften / Auflage Preise Widerruf / Status Aktionen" [ref=f4e450]:
- columnheader "Pos." [ref=f4e451]
- columnheader "Name / Details" [ref=f4e452]
- columnheader "WK_Pos_1 und WK_Pos_2" [ref=f4e453]
- columnheader "Eigenschaften / Auflage" [ref=f4e454]
- columnheader "Preise" [ref=f4e455]
- columnheader "Widerruf / Status" [ref=f4e456]
- columnheader "Aktionen" [ref=f4e457]
- rowgroup [ref=f4e458]:
- 'row "1 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 10 Breite: 20 Netto Preis 120,00 € MwSt. 22,80 € Brutto Preis 142,80 € Widerruf erfolgte am 24.06.2026 08:52 Uhr neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e459]':
- cell "1" [ref=f4e460]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f4e461]':
- link "test_drweigert" [ref=f4e462] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f4e463]: "ArtNr intern:"
- generic [ref=f4e464]: "Gewicht: 0 g"
- generic [ref=f4e466]:
- img [ref=f4e467]
- generic [ref=f4e469]: not available
- cell [ref=f4e470]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 10 Breite: 20" [ref=f4e471]':
- list [ref=f4e472]:
- listitem [ref=f4e473]: "Dokumentnummer:"
- listitem [ref=f4e474]: "Ausgabedatum:"
- listitem [ref=f4e475]: "Auflage: 10"
- listitem [ref=f4e476]: "Breite: 20"
- cell "Netto Preis 120,00 € MwSt. 22,80 € Brutto Preis 142,80 €" [ref=f4e477]:
- generic [ref=f4e478]:
- generic [ref=f4e479]:
- term [ref=f4e480]: Netto Preis
- definition [ref=f4e481]: 120,00
- generic [ref=f4e482]:
- term [ref=f4e483]: MwSt.
- definition [ref=f4e484]: 22,80
- generic [ref=f4e485]:
- term [ref=f4e486]: Brutto Preis
- definition [ref=f4e487]: 142,80
- cell "Widerruf erfolgte am 24.06.2026 08:52 Uhr neue Bestellung" [ref=f4e488]:
- generic [ref=f4e489]:
- img [ref=f4e490]
- generic [ref=f4e492]: Widerruf erfolgte am 24.06.2026 08:52 Uhr
- button "neue Bestellung" [ref=f4e494] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f4e495]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e497]:
- generic [ref=f4e498]:
- generic [ref=f4e500]:
- button "Printpartner benachrichtigen" [ref=f4e501] [cursor=pointer]
- textbox [ref=f4e502]
- generic [ref=f4e504]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f4e505] [cursor=pointer]
- textbox [ref=f4e506]
- 'row "2 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 200 Breite: 20 Netto Preis 2.400,00 € MwSt. 456,00 € Brutto Preis 2.856,00 € Widerruf möglich neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e507]':
- cell "2" [ref=f4e508]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f4e509]':
- link "test_drweigert" [ref=f4e510] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f4e511]: "ArtNr intern:"
- generic [ref=f4e512]: "Gewicht: 0 g"
- generic [ref=f4e514]:
- img [ref=f4e515]
- generic [ref=f4e517]: not available
- cell [ref=f4e518]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 200 Breite: 20" [ref=f4e519]':
- list [ref=f4e520]:
- listitem [ref=f4e521]: "Dokumentnummer:"
- listitem [ref=f4e522]: "Ausgabedatum:"
- listitem [ref=f4e523]: "Auflage: 200"
- listitem [ref=f4e524]: "Breite: 20"
- cell "Netto Preis 2.400,00 € MwSt. 456,00 € Brutto Preis 2.856,00 €" [ref=f4e525]:
- generic [ref=f4e526]:
- generic [ref=f4e527]:
- term [ref=f4e528]: Netto Preis
- definition [ref=f4e529]: 2.400,00
- generic [ref=f4e530]:
- term [ref=f4e531]: MwSt.
- definition [ref=f4e532]: 456,00
- generic [ref=f4e533]:
- term [ref=f4e534]: Brutto Preis
- definition [ref=f4e535]: 2.856,00
- cell "Widerruf möglich neue Bestellung" [ref=f4e536]:
- generic [ref=f4e537]:
- img [ref=f4e538]
- text: Widerruf möglich
- button "neue Bestellung" [ref=f4e541] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f4e542]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e544]:
- generic [ref=f4e545]:
- generic [ref=f4e547]:
- button "Printpartner benachrichtigen" [ref=f4e548] [cursor=pointer]
- textbox [ref=f4e549]
- generic [ref=f4e551]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f4e552] [cursor=pointer]
- textbox [ref=f4e553]
- 'row "3 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 50 Breite: 20 Netto Preis 600,00 € MwSt. 114,00 € Brutto Preis 714,00 € Widerruf möglich neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e554]':
- cell "3" [ref=f4e555]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f4e556]':
- link "test_drweigert" [ref=f4e557] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f4e558]: "ArtNr intern:"
- generic [ref=f4e559]: "Gewicht: 0 g"
- generic [ref=f4e561]:
- img [ref=f4e562]
- generic [ref=f4e564]: not available
- cell [ref=f4e565]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 50 Breite: 20" [ref=f4e566]':
- list [ref=f4e567]:
- listitem [ref=f4e568]: "Dokumentnummer:"
- listitem [ref=f4e569]: "Ausgabedatum:"
- listitem [ref=f4e570]: "Auflage: 50"
- listitem [ref=f4e571]: "Breite: 20"
- cell "Netto Preis 600,00 € MwSt. 114,00 € Brutto Preis 714,00 €" [ref=f4e572]:
- generic [ref=f4e573]:
- generic [ref=f4e574]:
- term [ref=f4e575]: Netto Preis
- definition [ref=f4e576]: 600,00
- generic [ref=f4e577]:
- term [ref=f4e578]: MwSt.
- definition [ref=f4e579]: 114,00
- generic [ref=f4e580]:
- term [ref=f4e581]: Brutto Preis
- definition [ref=f4e582]: 714,00
- cell "Widerruf möglich neue Bestellung" [ref=f4e583]:
- generic [ref=f4e584]:
- img [ref=f4e585]
- text: Widerruf möglich
- button "neue Bestellung" [ref=f4e588] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f4e589]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e591]:
- generic [ref=f4e592]:
- generic [ref=f4e594]:
- button "Printpartner benachrichtigen" [ref=f4e595] [cursor=pointer]
- textbox [ref=f4e596]
- generic [ref=f4e598]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f4e599] [cursor=pointer]
- textbox [ref=f4e600]
- 'row "4 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 100 Breite: 20 Netto Preis 1.200,00 € MwSt. 228,00 € Brutto Preis 1.428,00 € Widerruf möglich neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e601]':
- cell "4" [ref=f4e602]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f4e603]':
- link "test_drweigert" [ref=f4e604] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f4e605]: "ArtNr intern:"
- generic [ref=f4e606]: "Gewicht: 0 g"
- generic [ref=f4e608]:
- img [ref=f4e609]
- generic [ref=f4e611]: not available
- cell [ref=f4e612]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 100 Breite: 20" [ref=f4e613]':
- list [ref=f4e614]:
- listitem [ref=f4e615]: "Dokumentnummer:"
- listitem [ref=f4e616]: "Ausgabedatum:"
- listitem [ref=f4e617]: "Auflage: 100"
- listitem [ref=f4e618]: "Breite: 20"
- cell "Netto Preis 1.200,00 € MwSt. 228,00 € Brutto Preis 1.428,00 €" [ref=f4e619]:
- generic [ref=f4e620]:
- generic [ref=f4e621]:
- term [ref=f4e622]: Netto Preis
- definition [ref=f4e623]: 1.200,00
- generic [ref=f4e624]:
- term [ref=f4e625]: MwSt.
- definition [ref=f4e626]: 228,00
- generic [ref=f4e627]:
- term [ref=f4e628]: Brutto Preis
- definition [ref=f4e629]: 1.428,00
- cell "Widerruf möglich neue Bestellung" [ref=f4e630]:
- generic [ref=f4e631]:
- img [ref=f4e632]
- text: Widerruf möglich
- button "neue Bestellung" [ref=f4e635] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f4e636]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e638]:
- generic [ref=f4e639]:
- generic [ref=f4e641]:
- button "Printpartner benachrichtigen" [ref=f4e642] [cursor=pointer]
- textbox [ref=f4e643]
- generic [ref=f4e645]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f4e646] [cursor=pointer]
- textbox [ref=f4e647]
- 'row "5 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 23 Breite: 20 Netto Preis 276,00 € MwSt. 52,44 € Brutto Preis 328,44 € Widerruf möglich neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e648]':
- cell "5" [ref=f4e649]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f4e650]':
- link "test_drweigert" [ref=f4e651] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f4e652]: "ArtNr intern:"
- generic [ref=f4e653]: "Gewicht: 0 g"
- generic [ref=f4e655]:
- img [ref=f4e656]
- generic [ref=f4e658]: not available
- cell [ref=f4e659]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 23 Breite: 20" [ref=f4e660]':
- list [ref=f4e661]:
- listitem [ref=f4e662]: "Dokumentnummer:"
- listitem [ref=f4e663]: "Ausgabedatum:"
- listitem [ref=f4e664]: "Auflage: 23"
- listitem [ref=f4e665]: "Breite: 20"
- cell "Netto Preis 276,00 € MwSt. 52,44 € Brutto Preis 328,44 €" [ref=f4e666]:
- generic [ref=f4e667]:
- generic [ref=f4e668]:
- term [ref=f4e669]: Netto Preis
- definition [ref=f4e670]: 276,00
- generic [ref=f4e671]:
- term [ref=f4e672]: MwSt.
- definition [ref=f4e673]: 52,44
- generic [ref=f4e674]:
- term [ref=f4e675]: Brutto Preis
- definition [ref=f4e676]: 328,44
- cell "Widerruf möglich neue Bestellung" [ref=f4e677]:
- generic [ref=f4e678]:
- img [ref=f4e679]
- text: Widerruf möglich
- button "neue Bestellung" [ref=f4e682] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f4e683]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e685]:
- generic [ref=f4e686]:
- generic [ref=f4e688]:
- button "Printpartner benachrichtigen" [ref=f4e689] [cursor=pointer]
- textbox [ref=f4e690]
- generic [ref=f4e692]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f4e693] [cursor=pointer]
- textbox [ref=f4e694]
- 'row "6 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 100 Breite: 20 Netto Preis 1.200,00 € MwSt. 228,00 € Brutto Preis 1.428,00 € Widerruf möglich neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e695]':
- cell "6" [ref=f4e696]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f4e697]':
- link "test_drweigert" [ref=f4e698] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f4e699]: "ArtNr intern:"
- generic [ref=f4e700]: "Gewicht: 0 g"
- generic [ref=f4e702]:
- img [ref=f4e703]
- generic [ref=f4e705]: not available
- cell [ref=f4e706]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 100 Breite: 20" [ref=f4e707]':
- list [ref=f4e708]:
- listitem [ref=f4e709]: "Dokumentnummer:"
- listitem [ref=f4e710]: "Ausgabedatum:"
- listitem [ref=f4e711]: "Auflage: 100"
- listitem [ref=f4e712]: "Breite: 20"
- cell "Netto Preis 1.200,00 € MwSt. 228,00 € Brutto Preis 1.428,00 €" [ref=f4e713]:
- generic [ref=f4e714]:
- generic [ref=f4e715]:
- term [ref=f4e716]: Netto Preis
- definition [ref=f4e717]: 1.200,00
- generic [ref=f4e718]:
- term [ref=f4e719]: MwSt.
- definition [ref=f4e720]: 228,00
- generic [ref=f4e721]:
- term [ref=f4e722]: Brutto Preis
- definition [ref=f4e723]: 1.428,00
- cell "Widerruf möglich neue Bestellung" [ref=f4e724]:
- generic [ref=f4e725]:
- img [ref=f4e726]
- text: Widerruf möglich
- button "neue Bestellung" [ref=f4e729] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f4e730]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e732]:
- generic [ref=f4e733]:
- generic [ref=f4e735]:
- button "Printpartner benachrichtigen" [ref=f4e736] [cursor=pointer]
- textbox [ref=f4e737]
- generic [ref=f4e739]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f4e740] [cursor=pointer]
- textbox [ref=f4e741]
- 'row "7 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 101 Breite: 20 Netto Preis 1.212,00 € MwSt. 230,28 € Brutto Preis 1.442,28 € Widerruf möglich neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e742]':
- cell "7" [ref=f4e743]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f4e744]':
- link "test_drweigert" [ref=f4e745] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f4e746]: "ArtNr intern:"
- generic [ref=f4e747]: "Gewicht: 0 g"
- generic [ref=f4e749]:
- img [ref=f4e750]
- generic [ref=f4e752]: not available
- cell [ref=f4e753]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 101 Breite: 20" [ref=f4e754]':
- list [ref=f4e755]:
- listitem [ref=f4e756]: "Dokumentnummer:"
- listitem [ref=f4e757]: "Ausgabedatum:"
- listitem [ref=f4e758]: "Auflage: 101"
- listitem [ref=f4e759]: "Breite: 20"
- cell "Netto Preis 1.212,00 € MwSt. 230,28 € Brutto Preis 1.442,28 €" [ref=f4e760]:
- generic [ref=f4e761]:
- generic [ref=f4e762]:
- term [ref=f4e763]: Netto Preis
- definition [ref=f4e764]: 1.212,00
- generic [ref=f4e765]:
- term [ref=f4e766]: MwSt.
- definition [ref=f4e767]: 230,28
- generic [ref=f4e768]:
- term [ref=f4e769]: Brutto Preis
- definition [ref=f4e770]: 1.442,28
- cell "Widerruf möglich neue Bestellung" [ref=f4e771]:
- generic [ref=f4e772]:
- img [ref=f4e773]
- text: Widerruf möglich
- button "neue Bestellung" [ref=f4e776] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f4e777]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f4e779]:
- generic [ref=f4e780]:
- generic [ref=f4e782]:
- button "Printpartner benachrichtigen" [ref=f4e783] [cursor=pointer]
- textbox [ref=f4e784]
- generic [ref=f4e786]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f4e787] [cursor=pointer]
- textbox [ref=f4e788]
- region "Symfony Web Debug Toolbar" [ref=f4e789]:
- generic [ref=f4e792]:
- link "Symfony Loading…" [ref=f4e794] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/e1adc2?panel=request
- generic [ref=f4e795]:
- img "Symfony" [ref=f4e796]
- generic [ref=f4e798]: Loading…
- button [expanded] [ref=f4e799] [cursor=pointer]:
- generic "Close Toolbar" [ref=f4e800]:
- img [ref=f4e801]

View File

@ -0,0 +1,770 @@
- generic [active] [ref=f5e1]:
- generic [ref=f5e2]:
- complementary [ref=f5e3]:
- generic [ref=f5e5]:
- button "Collapse sidebar" [ref=f5e6] [cursor=pointer]:
- img [ref=f5e7]
- img "PrintshopCreator Logo" [ref=f5e10]
- navigation [ref=f5e11]:
- list [ref=f5e12]:
- listitem [ref=f5e13]:
- list [ref=f5e14]:
- listitem [ref=f5e15]:
- link " Dashboard" [ref=f5e17] [cursor=pointer]:
- /url: /apps/backend/dashboard
- generic [ref=f5e18]:
- generic [ref=f5e19]: Dashboard
- listitem [ref=f5e20]:
- link " Aufträge" [ref=f5e22] [cursor=pointer]:
- /url: /apps/backend/order/list/index
- generic [ref=f5e23]:
- generic [ref=f5e24]: Aufträge
- listitem [ref=f5e25]:
- link " Sendcloud" [ref=f5e27] [cursor=pointer]:
- /url: /apps/backend/r2_sendcloud/list
- generic [ref=f5e28]:
- generic [ref=f5e29]: Sendcloud
- listitem [ref=f5e30]:
- generic [ref=f5e31]:
- generic [ref=f5e32]:
- generic [ref=f5e33]:
- generic [ref=f5e34]: Produktion
- generic [ref=f5e36]:
- text:    
- listitem [ref=f5e37]:
- generic [ref=f5e38]:
- generic [ref=f5e39]:
- generic [ref=f5e40]:
- generic [ref=f5e41]: Produkte
- generic [ref=f5e43]:
- text:  
- listitem [ref=f5e44]:
- link " Firmen" [ref=f5e46] [cursor=pointer]:
- /url: /apps/backend/account/list/index
- generic [ref=f5e47]:
- generic [ref=f5e48]: Firmen
- listitem [ref=f5e49]:
- link " Kunden" [ref=f5e51] [cursor=pointer]:
- /url: /apps/backend/contact/list/index
- generic [ref=f5e52]:
- generic [ref=f5e53]: Kunden
- listitem [ref=f5e54]:
- link " CMS" [ref=f5e56] [cursor=pointer]:
- /url: /apps/backend/cms/list
- generic [ref=f5e57]:
- generic [ref=f5e58]: CMS
- listitem [ref=f5e59]:
- link " Versandarten" [ref=f5e61] [cursor=pointer]:
- /url: /apps/backend/shipping/list/index
- generic [ref=f5e62]:
- generic [ref=f5e63]: Versandarten
- listitem [ref=f5e64]:
- link " Zahlarten" [ref=f5e66] [cursor=pointer]:
- /url: /apps/backend/payment/list/index
- generic [ref=f5e67]:
- generic [ref=f5e68]: Zahlarten
- listitem [ref=f5e69]:
- link " News" [ref=f5e71] [cursor=pointer]:
- /url: /apps/backend/news/list/index
- generic [ref=f5e72]:
- generic [ref=f5e73]: News
- listitem [ref=f5e74]:
- link " Gutschein" [ref=f5e76] [cursor=pointer]:
- /url: /apps/backend/voucher/list/index
- generic [ref=f5e77]:
- generic [ref=f5e78]: Gutschein
- listitem [ref=f5e79]:
- generic [ref=f5e80]:
- generic [ref=f5e81]:
- generic [ref=f5e82]:
- generic [ref=f5e83]: Tools
- generic [ref=f5e85]:
- text:  
- listitem [ref=f5e86]:
- generic [ref=f5e87]:
- generic [ref=f5e88]:
- generic [ref=f5e89]:
- generic [ref=f5e90]: Shop Einstellungen
- generic [ref=f5e92]:
- text:            
- listitem [ref=f5e93]:
- link " Aktionen" [ref=f5e95] [cursor=pointer]:
- /url: /apps/backend/queue/list/index
- generic [ref=f5e96]:
- generic [ref=f5e97]: Aktionen
- list [ref=f5e98]:
- listitem [ref=f5e99]:
- button "Systemeinstellungen" [ref=f5e100] [cursor=pointer]:
- paragraph [ref=f5e102]: Systemeinstellungen
- list [ref=f5e103]:
- listitem [ref=f5e104]:
- link " Statusverwaltung" [ref=f5e106] [cursor=pointer]:
- /url: /apps/backend/system/settings/status/index
- generic [ref=f5e107]:
- generic [ref=f5e108]: Statusverwaltung
- listitem [ref=f5e109]:
- link " Papierdatenbank" [ref=f5e111] [cursor=pointer]:
- /url: /apps/backend/system/settings/paper/index
- generic [ref=f5e112]:
- generic [ref=f5e113]: Papierdatenbank
- listitem [ref=f5e114]:
- link " Hilfetexte" [ref=f5e116] [cursor=pointer]:
- /url: /apps/backend/system/settings/help/index
- generic [ref=f5e117]:
- generic [ref=f5e118]: Hilfetexte
- listitem [ref=f5e119]:
- link " Systemeinstellung" [ref=f5e121] [cursor=pointer]:
- /url: /apps/backend/system/settings/settings/index
- generic [ref=f5e122]:
- generic [ref=f5e123]: Systemeinstellung
- listitem [ref=f5e124]:
- link " Logs" [ref=f5e126] [cursor=pointer]:
- /url: /apps/backend/system/settings/log/index
- generic [ref=f5e127]:
- generic [ref=f5e128]: Logs
- listitem [ref=f5e129]:
- link " Media" [ref=f5e131] [cursor=pointer]:
- /url: /apps/backend/media/list/folder/show
- generic [ref=f5e132]:
- generic [ref=f5e133]: Media
- listitem [ref=f5e134]:
- list [ref=f5e135]:
- listitem [ref=f5e136]:
- link " Apps & App Store" [ref=f5e138] [cursor=pointer]:
- /url: /apps/backend/plugin/list
- generic [ref=f5e139]:
- generic [ref=f5e140]: Apps & App Store
- separator [ref=f5e141]
- paragraph [ref=f5e142]: 07.07.2026 15:19:12
- paragraph [ref=f5e143]:
- link "v2.3.8 (24.06.2026)" [ref=f5e144] [cursor=pointer]:
- /url: /apps/backend/system/settings/backend/system/version/changelog
- generic [ref=f5e145]:
- banner [ref=f5e146]:
- generic [ref=f5e148]:
- generic [ref=f5e150]:
- combobox [ref=f5e151]:
- option "Bestesvonhier"
- option "eder"
- option "nowe"
- option "Printchampion"
- option "Produkttypen" [selected]
- link "Shop anzeigen" [ref=f5e152] [cursor=pointer]:
- /url: https://type-dev-tp.local
- img [ref=f5e153]
- generic [ref=f5e155]:
- checkbox [ref=f5e156]
- text: Deaktive Shops zeigen
- link "Kein 2FA aktiviert" [ref=f5e158] [cursor=pointer]:
- /url: /apps/backend/2fa-settings
- link "EN" [ref=f5e160] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/backend/order/detail/show/928d23d0-61b8-eae7-9418-2cd2729e8b3b?_locale=en
- button "User menu" [ref=f5e163] [cursor=pointer]
- generic [ref=f5e165]:
- banner [ref=f5e166]:
- generic [ref=f5e167]:
- heading "Auftrag Detail AF-08.04.2026-90" [level=1] [ref=f5e168]:
- img [ref=f5e169]
- text: Auftrag
- generic [ref=f5e171]: Detail
- generic [ref=f5e172]: AF-08.04.2026-90
- link "Zurück" [ref=f5e173] [cursor=pointer]:
- /url: /apps/backend/order/list/index
- img [ref=f5e174]
- text: Zurück
- generic [ref=f5e176]:
- generic [ref=f5e178]:
- link "Paket herunterladen" [ref=f5e179] [cursor=pointer]:
- /url: /apps/backend/order/detail/package/download/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- img [ref=f5e180]
- text: Paket herunterladen
- link "Rechnung" [ref=f5e182] [cursor=pointer]:
- /url: /apps/backend/order/detail/print/1/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- img [ref=f5e183]
- text: Rechnung
- link "Jobticket" [ref=f5e185] [cursor=pointer]:
- /url: /apps/backend/order/detail/print/7/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- img [ref=f5e186]
- text: Jobticket
- link "XRechnung" [ref=f5e188] [cursor=pointer]:
- /url: /apps/backend/order/detail/xrechnung/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- img [ref=f5e189]
- text: XRechnung
- generic [ref=f5e191]:
- generic [ref=f5e192]:
- heading "Auftrag AF-08.04.2026-90" [level=4] [ref=f5e193]
- generic [ref=f5e194]:
- generic [ref=f5e195]:
- term [ref=f5e196]: "Zahlart:"
- definition [ref=f5e197]: molli
- generic [ref=f5e198]:
- term [ref=f5e199]: "Zahlung Gateway (Ref):"
- definition [ref=f5e200]: mollie (62c5de1)
- generic [ref=f5e201]:
- term [ref=f5e202]: "Versandart:"
- definition [ref=f5e203]: DHL
- generic [ref=f5e204]:
- term [ref=f5e205]: "Daten an Versanddienstleister:"
- definition [ref=f5e206]:
- generic [ref=f5e207]: Ja
- generic [ref=f5e208]:
- term [ref=f5e209]: "Gewicht:"
- definition [ref=f5e210]: "0"
- generic [ref=f5e211]:
- term [ref=f5e212]: "Warenkorbfeld 1:"
- definition
- generic [ref=f5e213]:
- term [ref=f5e214]: "Warenkorbfeld 2:"
- definition
- generic [ref=f5e215]:
- term [ref=f5e216]: "Gutschein (Code):"
- definition [ref=f5e217]:
- generic [ref=f5e218]: hddecal-1 (100,00 €)
- generic [ref=f5e219]: earlybird24 (10 %)
- generic [ref=f5e220]:
- generic [ref=f5e221]:
- term [ref=f5e222]: "Versandkosten:"
- definition [ref=f5e223]: 10,00
- generic [ref=f5e224]:
- term [ref=f5e225]: "Zahlartkosten:"
- definition [ref=f5e226]: 0,00
- generic [ref=f5e227]:
- term [ref=f5e228]: "Netto Preis:"
- definition [ref=f5e229]: 7.018,00
- generic [ref=f5e230]:
- term [ref=f5e231]: "MwSt.:"
- definition [ref=f5e232]: 1.333,42
- generic [ref=f5e233]:
- term [ref=f5e234]: "Rabatt (Gutschein):"
- definition [ref=f5e235]: 925,14€
- generic [ref=f5e236]:
- term [ref=f5e237]: "Brutto Preis:"
- definition [ref=f5e238]: 7.426,28
- generic [ref=f5e239]:
- heading "Status" [level=4] [ref=f5e240]
- generic [ref=f5e241]: "Auftragsdatum: 07.07.2026 14:12:34"
- generic [ref=f5e242]:
- generic [ref=f5e243]:
- generic [ref=f5e244]: Package exportiert?
- generic [ref=f5e245]:
- generic [ref=f5e246]: Ja
- link "Nochmal gernerieren" [ref=f5e247] [cursor=pointer]:
- /url: /apps/backend/order/package/exported/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- generic [ref=f5e248]:
- generic [ref=f5e250]: Paketnummer
- textbox "Paketnummer" [ref=f5e251]
- generic [ref=f5e252]:
- generic [ref=f5e254]: Warenkorbstatus
- combobox "Warenkorbstatus" [ref=f5e255]:
- option
- option "neue Bestellung" [selected]
- option "neue Anfrage"
- option "Upload offen"
- option "Daten hochgeladen"
- option "Upload abgeschlossen"
- option "Daten werden überprüft"
- option "Daten Fehler"
- option "Daten Ok"
- option "Preflight wird ausgeführt"
- option "Preflightcheck Fehler"
- option "Preflight Ok"
- option "wartet auf Freigabe Einer"
- option "wartet auf Freigabe Alle"
- option "Freigabe ist erfolgt"
- option "Freigabe abgelehnt"
- option "Angebot abgegeben"
- option "wartet auf Zahlungseingang"
- option "Zahlung erhalten"
- option "Download steht bereit"
- option "in Produktion"
- option "abgebrochen oder storniert"
- option "produziert"
- option "Zur Abholung bereit"
- option "in Bearbeitung"
- option "wartet auf Versand"
- option "versendet"
- option "abgeschlossen"
- generic [ref=f5e256]:
- generic [ref=f5e258]: Notizen
- textbox "Notizen" [ref=f5e259]
- button "Speichern" [ref=f5e261] [cursor=pointer]: Speichern
- generic [ref=f5e262]:
- generic [ref=f5e263]:
- heading "Kunde" [level=4] [ref=f5e264]
- generic [ref=f5e265]:
- generic [ref=f5e266]:
- term [ref=f5e267]: "Username/Login:"
- definition [ref=f5e268]:
- link "admin@shop.de" [ref=f5e269] [cursor=pointer]:
- /url: mailto:admin@shop.de
- generic [ref=f5e270]:
- term [ref=f5e271]: "Name:"
- definition [ref=f5e272]:
- link "Martina Peterson" [ref=f5e273] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-528bd456-4bcd48e8-13e1-0683b94f
- generic [ref=f5e274]:
- term [ref=f5e275]: "Firma:"
- definition [ref=f5e276]:
- link "Oberfirma" [ref=f5e277] [cursor=pointer]:
- /url: /apps/backend/account/edit/edit/24
- generic [ref=f5e278]:
- term [ref=f5e279]: "Gast:"
- definition [ref=f5e280]:
- generic [ref=f5e281]: Nein
- generic [ref=f5e283]:
- link "Neuer Auftrag Aktion erneut auslösen" [ref=f5e284] [cursor=pointer]:
- /url: /apps/backend/order/detail/create/new/order/status/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- button "Auftrag löschen" [ref=f5e285] [cursor=pointer]
- link "Uploads Löschen" [ref=f5e286] [cursor=pointer]:
- /url: /apps/backend/order/upload/deleteAll/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- img [ref=f5e287]
- text: Uploads Löschen
- link "Auftrag bearbeiten (BETA)" [ref=f5e289] [cursor=pointer]:
- /url: /apps/backend/component/invoice/index/create#/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- generic [ref=f5e290]:
- generic [ref=f5e291]: Saxoprint
- generic [ref=f5e292]:
- link "Sammelbestellung für diesen Auftrag ausführen" [ref=f5e293] [cursor=pointer]:
- /url: /apps/backend/plugin/custom/psc/saxoprint/collect/928d23d0-61b8-eae7-9418-2cd2729e8b3b
- table [ref=f5e294]:
- rowgroup [ref=f5e295]:
- row "Pos External Number Status" [ref=f5e296]:
- columnheader "Pos" [ref=f5e297]
- columnheader "External Number" [ref=f5e298]
- columnheader "Status" [ref=f5e299]
- rowgroup
- generic [ref=f5e300]:
- generic [ref=f5e301]: Wir machen Druck
- table [ref=f5e303]:
- rowgroup [ref=f5e304]:
- row "Pos External Number Status" [ref=f5e305]:
- columnheader "Pos" [ref=f5e306]
- columnheader "External Number" [ref=f5e307]
- columnheader "Status" [ref=f5e308]
- rowgroup
- generic [ref=f5e309]:
- heading "Adressen" [level=4] [ref=f5e310]
- generic [ref=f5e311]:
- generic [ref=f5e312]:
- heading "Rechnungsanschrift" [level=5] [ref=f5e313]
- generic [ref=f5e314]:
- generic [ref=f5e315]:
- generic [ref=f5e317]: Firma
- textbox "Firma" [ref=f5e318]: Musterfirma
- generic [ref=f5e319]:
- generic [ref=f5e321]: Zusatz
- textbox "Zusatz" [ref=f5e322]
- generic [ref=f5e323]:
- generic [ref=f5e325]: Vorname
- textbox "Vorname" [ref=f5e326]: admin
- generic [ref=f5e327]:
- generic [ref=f5e329]: Nachname
- textbox "Nachname" [ref=f5e330]: admin
- generic [ref=f5e331]:
- generic [ref=f5e333]: EMail
- textbox "EMail" [ref=f5e334]: admin@shop.de
- generic [ref=f5e335]:
- generic [ref=f5e337]: Telefon
- textbox "Telefon" [ref=f5e338]: "12345"
- generic [ref=f5e339]:
- generic [ref=f5e340]: PLZ / Stadt / LK
- generic [ref=f5e341]:
- textbox [ref=f5e343]: "12345"
- textbox [ref=f5e345]: Musterort
- textbox [ref=f5e347]: DE
- generic [ref=f5e348]:
- generic [ref=f5e349]: Straße / Nr.
- generic [ref=f5e350]:
- textbox [ref=f5e352]: Musterstrasse
- textbox [ref=f5e354]: "1"
- button "Speichern" [ref=f5e356] [cursor=pointer]: Speichern
- generic [ref=f5e357]:
- heading "Lieferanschrift" [level=5] [ref=f5e358]
- generic [ref=f5e359]:
- generic [ref=f5e360]:
- generic [ref=f5e362]: Firma
- textbox "Firma" [ref=f5e363]: Musterfirma
- generic [ref=f5e364]:
- generic [ref=f5e366]: Zusatz
- textbox "Zusatz" [ref=f5e367]
- generic [ref=f5e368]:
- generic [ref=f5e370]: Vorname
- textbox "Vorname" [ref=f5e371]: admin
- generic [ref=f5e372]:
- generic [ref=f5e374]: Nachname
- textbox "Nachname" [ref=f5e375]: admin
- generic [ref=f5e376]:
- generic [ref=f5e378]: EMail
- textbox "EMail" [ref=f5e379]: admin@shop.de
- generic [ref=f5e380]:
- generic [ref=f5e382]: Telefon
- textbox "Telefon" [ref=f5e383]: "123456"
- generic [ref=f5e384]:
- generic [ref=f5e385]: PLZ / Stadt / LK
- generic [ref=f5e386]:
- textbox [ref=f5e388]: "12345"
- textbox [ref=f5e390]: Musterort
- textbox [ref=f5e392]: DE
- generic [ref=f5e393]:
- generic [ref=f5e394]: Straße / Nr.
- generic [ref=f5e395]:
- textbox [ref=f5e397]: Musterstrasse
- textbox [ref=f5e399]: "1"
- button "Speichern" [ref=f5e401] [cursor=pointer]: Speichern
- generic [ref=f5e402]:
- heading "Absenderadresse" [level=5] [ref=f5e403]
- generic [ref=f5e404]:
- generic [ref=f5e405]:
- generic [ref=f5e407]: Firma
- textbox "Firma" [ref=f5e408]: PSC
- generic [ref=f5e409]:
- generic [ref=f5e411]: Zusatz
- textbox "Zusatz" [ref=f5e412]
- generic [ref=f5e413]:
- generic [ref=f5e415]: Vorname
- textbox "Vorname" [ref=f5e416]: Thomas
- generic [ref=f5e417]:
- generic [ref=f5e419]: Nachname
- textbox "Nachname" [ref=f5e420]: Peterson
- generic [ref=f5e421]:
- generic [ref=f5e423]: EMail
- textbox "EMail" [ref=f5e424]: psc@printshopcreator.com
- generic [ref=f5e425]:
- generic [ref=f5e427]: Telefon
- textbox "Telefon" [ref=f5e428]: "01705045438"
- generic [ref=f5e429]:
- generic [ref=f5e430]: PLZ / Stadt / LK
- generic [ref=f5e431]:
- textbox [ref=f5e433]: "17506"
- textbox [ref=f5e435]: Gribow
- textbox [ref=f5e437]: DE
- generic [ref=f5e438]:
- generic [ref=f5e439]: Straße / Nr.
- generic [ref=f5e440]:
- textbox [ref=f5e442]: Chausseestraße
- textbox [ref=f5e444]: 24b
- button "Speichern" [ref=f5e446] [cursor=pointer]: Speichern
- generic [ref=f5e447]:
- heading "Positionen" [level=4] [ref=f5e449]
- table [ref=f5e451]:
- rowgroup [ref=f5e452]:
- row "Pos. Name / Details WK_Pos_1 und WK_Pos_2 Eigenschaften / Auflage Preise Widerruf / Status Aktionen" [ref=f5e453]:
- columnheader "Pos." [ref=f5e454]
- columnheader "Name / Details" [ref=f5e455]
- columnheader "WK_Pos_1 und WK_Pos_2" [ref=f5e456]
- columnheader "Eigenschaften / Auflage" [ref=f5e457]
- columnheader "Preise" [ref=f5e458]
- columnheader "Widerruf / Status" [ref=f5e459]
- columnheader "Aktionen" [ref=f5e460]
- rowgroup [ref=f5e461]:
- 'row "1 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 10 Breite: 20 Netto Preis 120,00 € MwSt. 22,80 € Brutto Preis 142,80 € Widerruf erfolgte am 24.06.2026 08:52 Uhr neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e462]':
- cell "1" [ref=f5e463]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f5e464]':
- link "test_drweigert" [ref=f5e465] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f5e466]: "ArtNr intern:"
- generic [ref=f5e467]: "Gewicht: 0 g"
- generic [ref=f5e469]:
- img [ref=f5e470]
- generic [ref=f5e472]: not available
- cell [ref=f5e473]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 10 Breite: 20" [ref=f5e474]':
- list [ref=f5e475]:
- listitem [ref=f5e476]: "Dokumentnummer:"
- listitem [ref=f5e477]: "Ausgabedatum:"
- listitem [ref=f5e478]: "Auflage: 10"
- listitem [ref=f5e479]: "Breite: 20"
- cell "Netto Preis 120,00 € MwSt. 22,80 € Brutto Preis 142,80 €" [ref=f5e480]:
- generic [ref=f5e481]:
- generic [ref=f5e482]:
- term [ref=f5e483]: Netto Preis
- definition [ref=f5e484]: 120,00
- generic [ref=f5e485]:
- term [ref=f5e486]: MwSt.
- definition [ref=f5e487]: 22,80
- generic [ref=f5e488]:
- term [ref=f5e489]: Brutto Preis
- definition [ref=f5e490]: 142,80
- cell "Widerruf erfolgte am 24.06.2026 08:52 Uhr neue Bestellung" [ref=f5e491]:
- generic [ref=f5e492]:
- img [ref=f5e493]
- generic [ref=f5e495]: Widerruf erfolgte am 24.06.2026 08:52 Uhr
- button "neue Bestellung" [ref=f5e497] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f5e498]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e500]:
- generic [ref=f5e501]:
- generic [ref=f5e503]:
- button "Printpartner benachrichtigen" [ref=f5e504] [cursor=pointer]
- textbox [ref=f5e505]
- generic [ref=f5e507]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f5e508] [cursor=pointer]
- textbox [ref=f5e509]
- 'row "2 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 200 Breite: 20 Netto Preis 2.400,00 € MwSt. 456,00 € Brutto Preis 2.856,00 € Widerruf möglich neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e510]':
- cell "2" [ref=f5e511]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f5e512]':
- link "test_drweigert" [ref=f5e513] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f5e514]: "ArtNr intern:"
- generic [ref=f5e515]: "Gewicht: 0 g"
- generic [ref=f5e517]:
- img [ref=f5e518]
- generic [ref=f5e520]: not available
- cell [ref=f5e521]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 200 Breite: 20" [ref=f5e522]':
- list [ref=f5e523]:
- listitem [ref=f5e524]: "Dokumentnummer:"
- listitem [ref=f5e525]: "Ausgabedatum:"
- listitem [ref=f5e526]: "Auflage: 200"
- listitem [ref=f5e527]: "Breite: 20"
- cell "Netto Preis 2.400,00 € MwSt. 456,00 € Brutto Preis 2.856,00 €" [ref=f5e528]:
- generic [ref=f5e529]:
- generic [ref=f5e530]:
- term [ref=f5e531]: Netto Preis
- definition [ref=f5e532]: 2.400,00
- generic [ref=f5e533]:
- term [ref=f5e534]: MwSt.
- definition [ref=f5e535]: 456,00
- generic [ref=f5e536]:
- term [ref=f5e537]: Brutto Preis
- definition [ref=f5e538]: 2.856,00
- cell "Widerruf möglich neue Bestellung" [ref=f5e539]:
- generic [ref=f5e540]:
- img [ref=f5e541]
- text: Widerruf möglich
- button "neue Bestellung" [ref=f5e544] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f5e545]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e547]:
- generic [ref=f5e548]:
- generic [ref=f5e550]:
- button "Printpartner benachrichtigen" [ref=f5e551] [cursor=pointer]
- textbox [ref=f5e552]
- generic [ref=f5e554]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f5e555] [cursor=pointer]
- textbox [ref=f5e556]
- 'row "3 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 50 Breite: 20 Netto Preis 600,00 € MwSt. 114,00 € Brutto Preis 714,00 € Widerruf möglich neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e557]':
- cell "3" [ref=f5e558]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f5e559]':
- link "test_drweigert" [ref=f5e560] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f5e561]: "ArtNr intern:"
- generic [ref=f5e562]: "Gewicht: 0 g"
- generic [ref=f5e564]:
- img [ref=f5e565]
- generic [ref=f5e567]: not available
- cell [ref=f5e568]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 50 Breite: 20" [ref=f5e569]':
- list [ref=f5e570]:
- listitem [ref=f5e571]: "Dokumentnummer:"
- listitem [ref=f5e572]: "Ausgabedatum:"
- listitem [ref=f5e573]: "Auflage: 50"
- listitem [ref=f5e574]: "Breite: 20"
- cell "Netto Preis 600,00 € MwSt. 114,00 € Brutto Preis 714,00 €" [ref=f5e575]:
- generic [ref=f5e576]:
- generic [ref=f5e577]:
- term [ref=f5e578]: Netto Preis
- definition [ref=f5e579]: 600,00
- generic [ref=f5e580]:
- term [ref=f5e581]: MwSt.
- definition [ref=f5e582]: 114,00
- generic [ref=f5e583]:
- term [ref=f5e584]: Brutto Preis
- definition [ref=f5e585]: 714,00
- cell "Widerruf möglich neue Bestellung" [ref=f5e586]:
- generic [ref=f5e587]:
- img [ref=f5e588]
- text: Widerruf möglich
- button "neue Bestellung" [ref=f5e591] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f5e592]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e594]:
- generic [ref=f5e595]:
- generic [ref=f5e597]:
- button "Printpartner benachrichtigen" [ref=f5e598] [cursor=pointer]
- textbox [ref=f5e599]
- generic [ref=f5e601]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f5e602] [cursor=pointer]
- textbox [ref=f5e603]
- 'row "4 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 100 Breite: 20 Netto Preis 1.200,00 € MwSt. 228,00 € Brutto Preis 1.428,00 € Widerruf möglich neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e604]':
- cell "4" [ref=f5e605]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f5e606]':
- link "test_drweigert" [ref=f5e607] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f5e608]: "ArtNr intern:"
- generic [ref=f5e609]: "Gewicht: 0 g"
- generic [ref=f5e611]:
- img [ref=f5e612]
- generic [ref=f5e614]: not available
- cell [ref=f5e615]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 100 Breite: 20" [ref=f5e616]':
- list [ref=f5e617]:
- listitem [ref=f5e618]: "Dokumentnummer:"
- listitem [ref=f5e619]: "Ausgabedatum:"
- listitem [ref=f5e620]: "Auflage: 100"
- listitem [ref=f5e621]: "Breite: 20"
- cell "Netto Preis 1.200,00 € MwSt. 228,00 € Brutto Preis 1.428,00 €" [ref=f5e622]:
- generic [ref=f5e623]:
- generic [ref=f5e624]:
- term [ref=f5e625]: Netto Preis
- definition [ref=f5e626]: 1.200,00
- generic [ref=f5e627]:
- term [ref=f5e628]: MwSt.
- definition [ref=f5e629]: 228,00
- generic [ref=f5e630]:
- term [ref=f5e631]: Brutto Preis
- definition [ref=f5e632]: 1.428,00
- cell "Widerruf möglich neue Bestellung" [ref=f5e633]:
- generic [ref=f5e634]:
- img [ref=f5e635]
- text: Widerruf möglich
- button "neue Bestellung" [ref=f5e638] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f5e639]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e641]:
- generic [ref=f5e642]:
- generic [ref=f5e644]:
- button "Printpartner benachrichtigen" [ref=f5e645] [cursor=pointer]
- textbox [ref=f5e646]
- generic [ref=f5e648]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f5e649] [cursor=pointer]
- textbox [ref=f5e650]
- 'row "5 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 23 Breite: 20 Netto Preis 276,00 € MwSt. 52,44 € Brutto Preis 328,44 € Widerruf möglich neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e651]':
- cell "5" [ref=f5e652]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f5e653]':
- link "test_drweigert" [ref=f5e654] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f5e655]: "ArtNr intern:"
- generic [ref=f5e656]: "Gewicht: 0 g"
- generic [ref=f5e658]:
- img [ref=f5e659]
- generic [ref=f5e661]: not available
- cell [ref=f5e662]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 23 Breite: 20" [ref=f5e663]':
- list [ref=f5e664]:
- listitem [ref=f5e665]: "Dokumentnummer:"
- listitem [ref=f5e666]: "Ausgabedatum:"
- listitem [ref=f5e667]: "Auflage: 23"
- listitem [ref=f5e668]: "Breite: 20"
- cell "Netto Preis 276,00 € MwSt. 52,44 € Brutto Preis 328,44 €" [ref=f5e669]:
- generic [ref=f5e670]:
- generic [ref=f5e671]:
- term [ref=f5e672]: Netto Preis
- definition [ref=f5e673]: 276,00
- generic [ref=f5e674]:
- term [ref=f5e675]: MwSt.
- definition [ref=f5e676]: 52,44
- generic [ref=f5e677]:
- term [ref=f5e678]: Brutto Preis
- definition [ref=f5e679]: 328,44
- cell "Widerruf möglich neue Bestellung" [ref=f5e680]:
- generic [ref=f5e681]:
- img [ref=f5e682]
- text: Widerruf möglich
- button "neue Bestellung" [ref=f5e685] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f5e686]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e688]:
- generic [ref=f5e689]:
- generic [ref=f5e691]:
- button "Printpartner benachrichtigen" [ref=f5e692] [cursor=pointer]
- textbox [ref=f5e693]
- generic [ref=f5e695]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f5e696] [cursor=pointer]
- textbox [ref=f5e697]
- 'row "6 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 100 Breite: 20 Netto Preis 1.200,00 € MwSt. 228,00 € Brutto Preis 1.428,00 € Widerruf möglich neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e698]':
- cell "6" [ref=f5e699]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f5e700]':
- link "test_drweigert" [ref=f5e701] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f5e702]: "ArtNr intern:"
- generic [ref=f5e703]: "Gewicht: 0 g"
- generic [ref=f5e705]:
- img [ref=f5e706]
- generic [ref=f5e708]: not available
- cell [ref=f5e709]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 100 Breite: 20" [ref=f5e710]':
- list [ref=f5e711]:
- listitem [ref=f5e712]: "Dokumentnummer:"
- listitem [ref=f5e713]: "Ausgabedatum:"
- listitem [ref=f5e714]: "Auflage: 100"
- listitem [ref=f5e715]: "Breite: 20"
- cell "Netto Preis 1.200,00 € MwSt. 228,00 € Brutto Preis 1.428,00 €" [ref=f5e716]:
- generic [ref=f5e717]:
- generic [ref=f5e718]:
- term [ref=f5e719]: Netto Preis
- definition [ref=f5e720]: 1.200,00
- generic [ref=f5e721]:
- term [ref=f5e722]: MwSt.
- definition [ref=f5e723]: 228,00
- generic [ref=f5e724]:
- term [ref=f5e725]: Brutto Preis
- definition [ref=f5e726]: 1.428,00
- cell "Widerruf möglich neue Bestellung" [ref=f5e727]:
- generic [ref=f5e728]:
- img [ref=f5e729]
- text: Widerruf möglich
- button "neue Bestellung" [ref=f5e732] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f5e733]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e735]:
- generic [ref=f5e736]:
- generic [ref=f5e738]:
- button "Printpartner benachrichtigen" [ref=f5e739] [cursor=pointer]
- textbox [ref=f5e740]
- generic [ref=f5e742]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f5e743] [cursor=pointer]
- textbox [ref=f5e744]
- 'row "7 test_drweigert ArtNr intern: Gewicht: 0 g not available Dokumentnummer: Ausgabedatum: Auflage: 101 Breite: 20 Netto Preis 1.212,00 € MwSt. 230,28 € Brutto Preis 1.442,28 € Widerruf möglich neue Bestellung Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e745]':
- cell "7" [ref=f5e746]
- 'cell "test_drweigert ArtNr intern: Gewicht: 0 g not available" [ref=f5e747]':
- link "test_drweigert" [ref=f5e748] [cursor=pointer]:
- /url: /apps/backend/product/edit/index/717ab0b7-e710-421d-bb8a-ccac2b963f6d
- generic [ref=f5e749]: "ArtNr intern:"
- generic [ref=f5e750]: "Gewicht: 0 g"
- generic [ref=f5e752]:
- img [ref=f5e753]
- generic [ref=f5e755]: not available
- cell [ref=f5e756]
- 'cell "Dokumentnummer: Ausgabedatum: Auflage: 101 Breite: 20" [ref=f5e757]':
- list [ref=f5e758]:
- listitem [ref=f5e759]: "Dokumentnummer:"
- listitem [ref=f5e760]: "Ausgabedatum:"
- listitem [ref=f5e761]: "Auflage: 101"
- listitem [ref=f5e762]: "Breite: 20"
- cell "Netto Preis 1.212,00 € MwSt. 230,28 € Brutto Preis 1.442,28 €" [ref=f5e763]:
- generic [ref=f5e764]:
- generic [ref=f5e765]:
- term [ref=f5e766]: Netto Preis
- definition [ref=f5e767]: 1.212,00
- generic [ref=f5e768]:
- term [ref=f5e769]: MwSt.
- definition [ref=f5e770]: 230,28
- generic [ref=f5e771]:
- term [ref=f5e772]: Brutto Preis
- definition [ref=f5e773]: 1.442,28
- cell "Widerruf möglich neue Bestellung" [ref=f5e774]:
- generic [ref=f5e775]:
- img [ref=f5e776]
- text: Widerruf möglich
- button "neue Bestellung" [ref=f5e779] [cursor=pointer]:
- text: neue Bestellung
- img [ref=f5e780]
- cell "Printpartner benachrichtigen Dem Kunden in seinem Account anzeigen" [ref=f5e782]:
- generic [ref=f5e783]:
- generic [ref=f5e785]:
- button "Printpartner benachrichtigen" [ref=f5e786] [cursor=pointer]
- textbox [ref=f5e787]
- generic [ref=f5e789]:
- button "Dem Kunden in seinem Account anzeigen" [ref=f5e790] [cursor=pointer]
- textbox [ref=f5e791]
- region "Symfony Web Debug Toolbar" [ref=f5e792]:
- generic [ref=f5e795]:
- link "Symfony Loading…" [ref=f5e797] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/963096?panel=request
- generic [ref=f5e798]:
- img "Symfony" [ref=f5e799]
- generic [ref=f5e801]: Loading…
- button [expanded] [ref=f5e802] [cursor=pointer]:
- generic "Close Toolbar" [ref=f5e803]:
- img [ref=f5e804]

View File

@ -0,0 +1,19 @@
- generic [active] [ref=e1]:
- generic [ref=e3]:
- img "Logo" [ref=e5]
- generic [ref=e6]:
- text: "Benutzername:"
- textbox "Benutzername:" [ref=e7]
- text: "Passwort:"
- textbox "Passwort:" [ref=e8]
- button "Anmelden" [ref=e9] [cursor=pointer]
- region "Symfony Web Debug Toolbar" [ref=e10]:
- generic [ref=e13]:
- link "Symfony Loading…" [ref=e15] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/685147?panel=request
- generic [ref=e16]:
- img "Symfony" [ref=e17]
- generic [ref=e19]: Loading…
- button [expanded] [ref=e20] [cursor=pointer]:
- generic "Close Toolbar" [ref=e21]:
- img [ref=e22]

View File

@ -0,0 +1,451 @@
- generic [active] [ref=f1e1]:
- generic [ref=f1e2]:
- complementary [ref=f1e3]:
- generic [ref=f1e5]:
- button "Collapse sidebar" [ref=f1e6] [cursor=pointer]:
- img [ref=f1e7]
- img "PrintshopCreator Logo" [ref=f1e10]
- navigation [ref=f1e11]:
- list [ref=f1e12]:
- listitem [ref=f1e13]:
- list [ref=f1e14]:
- listitem [ref=f1e15]:
- link " Dashboard" [ref=f1e17] [cursor=pointer]:
- /url: /apps/backend/dashboard
- generic [ref=f1e18]:
- generic [ref=f1e19]: Dashboard
- listitem [ref=f1e20]:
- link " Aufträge" [ref=f1e22] [cursor=pointer]:
- /url: /apps/backend/order/list/index
- generic [ref=f1e23]:
- generic [ref=f1e24]: Aufträge
- listitem [ref=f1e25]:
- link " Sendcloud" [ref=f1e27] [cursor=pointer]:
- /url: /apps/backend/r2_sendcloud/list
- generic [ref=f1e28]:
- generic [ref=f1e29]: Sendcloud
- listitem [ref=f1e30]:
- generic [ref=f1e31]:
- generic [ref=f1e32]:
- generic [ref=f1e33]:
- generic [ref=f1e34]: Produktion
- generic [ref=f1e36]:
- text:    
- listitem [ref=f1e37]:
- generic [ref=f1e38]:
- generic [ref=f1e39]:
- generic [ref=f1e40]:
- generic [ref=f1e41]: Produkte
- generic [ref=f1e43]:
- text:  
- listitem [ref=f1e44]:
- link " Firmen" [ref=f1e46] [cursor=pointer]:
- /url: /apps/backend/account/list/index
- generic [ref=f1e47]:
- generic [ref=f1e48]: Firmen
- listitem [ref=f1e49]:
- link " Kunden" [ref=f1e51] [cursor=pointer]:
- /url: /apps/backend/contact/list/index
- generic [ref=f1e52]:
- generic [ref=f1e53]: Kunden
- listitem [ref=f1e54]:
- link " CMS" [ref=f1e56] [cursor=pointer]:
- /url: /apps/backend/cms/list
- generic [ref=f1e57]:
- generic [ref=f1e58]: CMS
- listitem [ref=f1e59]:
- link " Versandarten" [ref=f1e61] [cursor=pointer]:
- /url: /apps/backend/shipping/list/index
- generic [ref=f1e62]:
- generic [ref=f1e63]: Versandarten
- listitem [ref=f1e64]:
- link " Zahlarten" [ref=f1e66] [cursor=pointer]:
- /url: /apps/backend/payment/list/index
- generic [ref=f1e67]:
- generic [ref=f1e68]: Zahlarten
- listitem [ref=f1e69]:
- link " News" [ref=f1e71] [cursor=pointer]:
- /url: /apps/backend/news/list/index
- generic [ref=f1e72]:
- generic [ref=f1e73]: News
- listitem [ref=f1e74]:
- link " Gutschein" [ref=f1e76] [cursor=pointer]:
- /url: /apps/backend/voucher/list/index
- generic [ref=f1e77]:
- generic [ref=f1e78]: Gutschein
- listitem [ref=f1e79]:
- generic [ref=f1e80]:
- generic [ref=f1e81]:
- generic [ref=f1e82]:
- generic [ref=f1e83]: Tools
- generic [ref=f1e85]:
- text:  
- listitem [ref=f1e86]:
- generic [ref=f1e87]:
- generic [ref=f1e88]:
- generic [ref=f1e89]:
- generic [ref=f1e90]: Shop Einstellungen
- generic [ref=f1e92]:
- text:            
- listitem [ref=f1e93]:
- link " Aktionen" [ref=f1e95] [cursor=pointer]:
- /url: /apps/backend/queue/list/index
- generic [ref=f1e96]:
- generic [ref=f1e97]: Aktionen
- list [ref=f1e98]:
- listitem [ref=f1e99]:
- button "Systemeinstellungen" [ref=f1e100] [cursor=pointer]:
- paragraph [ref=f1e102]: Systemeinstellungen
- list [ref=f1e103]:
- listitem [ref=f1e104]:
- link " Statusverwaltung" [ref=f1e106] [cursor=pointer]:
- /url: /apps/backend/system/settings/status/index
- generic [ref=f1e107]:
- generic [ref=f1e108]: Statusverwaltung
- listitem [ref=f1e109]:
- link " Papierdatenbank" [ref=f1e111] [cursor=pointer]:
- /url: /apps/backend/system/settings/paper/index
- generic [ref=f1e112]:
- generic [ref=f1e113]: Papierdatenbank
- listitem [ref=f1e114]:
- link " Hilfetexte" [ref=f1e116] [cursor=pointer]:
- /url: /apps/backend/system/settings/help/index
- generic [ref=f1e117]:
- generic [ref=f1e118]: Hilfetexte
- listitem [ref=f1e119]:
- link " Systemeinstellung" [ref=f1e121] [cursor=pointer]:
- /url: /apps/backend/system/settings/settings/index
- generic [ref=f1e122]:
- generic [ref=f1e123]: Systemeinstellung
- listitem [ref=f1e124]:
- link " Logs" [ref=f1e126] [cursor=pointer]:
- /url: /apps/backend/system/settings/log/index
- generic [ref=f1e127]:
- generic [ref=f1e128]: Logs
- listitem [ref=f1e129]:
- link " Media" [ref=f1e131] [cursor=pointer]:
- /url: /apps/backend/media/list/folder/show
- generic [ref=f1e132]:
- generic [ref=f1e133]: Media
- listitem [ref=f1e134]:
- list [ref=f1e135]:
- listitem [ref=f1e136]:
- link " Apps & App Store" [ref=f1e138] [cursor=pointer]:
- /url: /apps/backend/plugin/list
- generic [ref=f1e139]:
- generic [ref=f1e140]: Apps & App Store
- separator [ref=f1e141]
- paragraph [ref=f1e142]:
- text: Release 2.3.8 (24.06.2026)
- link "Changelog" [ref=f1e143] [cursor=pointer]:
- /url: /apps/backend/system/settings/backend/system/version/changelog
- paragraph [ref=f1e144]: 07.07.2026 22:54:07
- generic [ref=f1e145]:
- banner [ref=f1e146]:
- generic [ref=f1e148]:
- generic [ref=f1e150]:
- combobox [ref=f1e151]:
- option "Bestesvonhier" [selected]
- option "eder"
- option "nowe"
- option "Printchampion"
- option "Produkttypen"
- link "Shop anzeigen" [ref=f1e152] [cursor=pointer]:
- /url: https://b-dev-tp.dockserver.de
- img [ref=f1e153]
- generic [ref=f1e155]:
- checkbox [ref=f1e156]
- text: Deaktive Shops zeigen
- link "Kein 2FA aktiviert" [ref=f1e158] [cursor=pointer]:
- /url: /apps/backend/2fa-settings
- link "EN" [ref=f1e160] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/backend/dashboard?_locale=en
- button "User menu" [ref=f1e163] [cursor=pointer]
- generic [ref=f1e165]:
- banner [ref=f1e166]:
- heading " Dashboard" [level=1] [ref=f1e167]:
- generic [ref=f1e168]:
- text: Dashboard
- generic [ref=f1e169]:
- generic [ref=f1e170]:
- generic [ref=f1e171]:
- heading "Aktuelle PSC Kunden News" [level=2] [ref=f1e173]:
- img [ref=f1e174]
- text: Aktuelle PSC Kunden News
- paragraph [ref=f1e178]: Lädt…
- generic [ref=f1e179]:
- heading "Aktuell ausgewählter Shop" [level=2] [ref=f1e182]
- table [ref=f1e184]:
- rowgroup [ref=f1e185]:
- 'row "Name: Bestesvonhier" [ref=f1e186]':
- cell "Name:" [ref=f1e187]
- cell "Bestesvonhier" [ref=f1e188]
- 'row "Beschreibung: Bestesvonhier" [ref=f1e189]':
- cell "Beschreibung:" [ref=f1e190]
- cell "Bestesvonhier" [ref=f1e191]
- 'row "Layout: bootstrap4_api" [ref=f1e192]':
- cell "Layout:" [ref=f1e193]
- cell "bootstrap4_api" [ref=f1e194]
- 'row "UID: 2" [ref=f1e195]':
- cell "UID:" [ref=f1e196]
- cell "2" [ref=f1e197]
- 'row "UUID: 0001-ac11000b-547c6efd-f2e3-272f456d" [ref=f1e198]':
- cell "UUID:" [ref=f1e199]
- cell "0001-ac11000b-547c6efd-f2e3-272f456d" [ref=f1e200]
- generic [ref=f1e201]:
- generic [ref=f1e202]:
- heading "Status" [level=2] [ref=f1e204]
- table [ref=f1e206]:
- rowgroup [ref=f1e207]:
- 'row "Aktionen: Alles Ok" [ref=f1e208]':
- cell "Aktionen:" [ref=f1e209]:
- link "Aktionen" [ref=f1e210] [cursor=pointer]:
- /url: /apps/backend/queue/list/index
- text: ":"
- cell "Alles Ok" [ref=f1e211]:
- link "Alles Ok" [ref=f1e212] [cursor=pointer]:
- /url: /apps/backend/queue/list/index
- 'row "Mailserver: Smtp Einstellungen überprüfen" [ref=f1e213]':
- cell "Mailserver:" [ref=f1e214]:
- link "Mailserver" [ref=f1e215] [cursor=pointer]:
- /url: /apps/backend/system/settings/settings/index
- text: ":"
- cell "Smtp Einstellungen überprüfen" [ref=f1e216]:
- link "Smtp Einstellungen überprüfen" [ref=f1e217] [cursor=pointer]:
- /url: /apps/backend/system/settings/settings/index
- 'row "Version: v2.3.8" [ref=f1e218]':
- cell "Version:" [ref=f1e219]
- cell "v2.3.8" [ref=f1e220]:
- link "v2.3.8" [ref=f1e221] [cursor=pointer]:
- /url: /apps/backend/system/settings/backend/system/version/changelog
- generic [ref=f1e222]:
- heading "Speicherverbrauch" [level=2] [ref=f1e224]
- generic [ref=f1e226]:
- generic [ref=f1e228]:
- generic [ref=f1e229]: Datenbank
- generic [ref=f1e230]: 7.92 MB(22%)
- generic [ref=f1e234]:
- generic [ref=f1e235]: Uploads (Data Volume)
- generic [ref=f1e236]: 26.75 MB(74.3%)
- generic [ref=f1e240]:
- generic [ref=f1e241]: Pakete (Data Volume)
- generic [ref=f1e242]: 722.2 KB(2%)
- generic [ref=f1e246]:
- generic [ref=f1e247]: Templateprint Layouter (Data Volume)
- generic [ref=f1e248]: 0 KB(0%)
- generic [ref=f1e251]:
- generic [ref=f1e252]: Form Based Layouter (Data Volume)
- generic [ref=f1e253]: 59.53 KB(0.16%)
- generic [ref=f1e257]:
- generic [ref=f1e258]: Creative Layouter (Data Volume)
- generic [ref=f1e259]: 603.02 KB(1.6%)
- generic [ref=f1e263]:
- img [ref=f1e265]
- generic [ref=f1e267]:
- generic [ref=f1e268]:
- generic [ref=f1e269]: System (Overlay)
- generic [ref=f1e270]: 474.77 GB / 927.42 GB
- generic [ref=f1e273]:
- generic [ref=f1e274]: Belegt 474.77 GB (51.2%)
- generic [ref=f1e275]: Frei 452.64 GB
- heading "Umsatz" [level=2] [ref=f1e280]
- generic [ref=f1e284]:
- heading "Neue Kunden" [level=2] [ref=f1e287]
- table [ref=f1e289]:
- rowgroup [ref=f1e290]:
- row "KundeFirma KundeVorname KundeNachname kunde@printchampion.eu 17.11.2014 00:11:00" [ref=f1e291]:
- cell "KundeFirma KundeVorname KundeNachname kunde@printchampion.eu" [ref=f1e292]:
- generic [ref=f1e293]: KundeFirma KundeVorname KundeNachname
- generic [ref=f1e294]: kunde@printchampion.eu
- cell "17.11.2014 00:11:00" [ref=f1e295]:
- generic [ref=f1e296]: 17.11.2014
- generic [ref=f1e297]: 00:11:00
- cell [ref=f1e298]:
- link [ref=f1e299] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-ac11000b-546a252d-e23f-7dceef9d
- img [ref=f1e300]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Heinz Alder halder@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e302]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Heinz Alder halder@bestesvonhier.de" [ref=f1e303]:
- generic [ref=f1e304]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Heinz Alder
- generic [ref=f1e305]: halder@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e306]:
- generic [ref=f1e307]: 24.01.2013
- generic [ref=f1e308]: 00:01:00
- cell [ref=f1e309]:
- link [ref=f1e310] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-4f7e-7a293d0f
- img [ref=f1e311]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Ursula Ammann uammann@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e313]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Ursula Ammann uammann@bestesvonhier.de" [ref=f1e314]:
- generic [ref=f1e315]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Ursula Ammann
- generic [ref=f1e316]: uammann@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e317]:
- generic [ref=f1e318]: 24.01.2013
- generic [ref=f1e319]: 00:01:00
- cell [ref=f1e320]:
- link [ref=f1e321] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-679b-7123sd21
- img [ref=f1e322]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Roland Baum rbaum@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e324]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Roland Baum rbaum@bestesvonhier.de" [ref=f1e325]:
- generic [ref=f1e326]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Roland Baum
- generic [ref=f1e327]: rbaum@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e328]:
- generic [ref=f1e329]: 24.01.2013
- generic [ref=f1e330]: 00:01:00
- cell [ref=f1e331]:
- link [ref=f1e332] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-7271-ae854c8c
- img [ref=f1e333]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Dave Beglinger dbeglinger@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e335]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Dave Beglinger dbeglinger@bestesvonhier.de" [ref=f1e336]:
- generic [ref=f1e337]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Dave Beglinger
- generic [ref=f1e338]: dbeglinger@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e339]:
- generic [ref=f1e340]: 24.01.2013
- generic [ref=f1e341]: 00:01:00
- cell [ref=f1e342]:
- link [ref=f1e343] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-7670-5cb833b6
- img [ref=f1e344]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Thomas Beier tbeier@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e346]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Thomas Beier tbeier@bestesvonhier.de" [ref=f1e347]:
- generic [ref=f1e348]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Thomas Beier
- generic [ref=f1e349]: tbeier@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e350]:
- generic [ref=f1e351]: 24.01.2013
- generic [ref=f1e352]: 00:01:00
- cell [ref=f1e353]:
- link [ref=f1e354] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-7aaf-1ce4e96f
- img [ref=f1e355]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Markus Breu mbreu@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e357]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Markus Breu mbreu@bestesvonhier.de" [ref=f1e358]:
- generic [ref=f1e359]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Markus Breu
- generic [ref=f1e360]: mbreu@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e361]:
- generic [ref=f1e362]: 24.01.2013
- generic [ref=f1e363]: 00:01:00
- cell [ref=f1e364]:
- link [ref=f1e365] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-8133-fdf9dec3
- img [ref=f1e366]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Andrea Burri aburri@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e368]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Andrea Burri aburri@bestesvonhier.de" [ref=f1e369]:
- generic [ref=f1e370]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Andrea Burri
- generic [ref=f1e371]: aburri@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e372]:
- generic [ref=f1e373]: 24.01.2013
- generic [ref=f1e374]: 00:01:00
- cell [ref=f1e375]:
- link [ref=f1e376] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-8ba0-00764e94
- img [ref=f1e377]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Catia Fari cfari@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e379]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Catia Fari cfari@bestesvonhier.de" [ref=f1e380]:
- generic [ref=f1e381]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Catia Fari
- generic [ref=f1e382]: cfari@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e383]:
- generic [ref=f1e384]: 24.01.2013
- generic [ref=f1e385]: 00:01:00
- cell [ref=f1e386]:
- link [ref=f1e387] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-920a-2bcd7303
- img [ref=f1e388]
- generic [ref=f1e390]:
- heading "Neue Aufträge" [level=2] [ref=f1e393]
- table:
- rowgroup
- generic [ref=f1e396]:
- heading "KI Assistent (ollama · qwen2.5-coder:7b)" [level=2] [ref=f1e399]:
- img [ref=f1e400]
- text: KI Assistent
- generic [ref=f1e402]: (ollama · qwen2.5-coder:7b)
- paragraph [ref=f1e405]: Stellen Sie eine Frage oder geben Sie einen Befehl ein...
- generic [ref=f1e407]:
- textbox "Nachricht eingeben..." [ref=f1e408]
- button "Senden" [disabled] [ref=f1e409]:
- img [ref=f1e410]
- text: Senden
- region "Symfony Web Debug Toolbar" [ref=f1e412]:
- generic [ref=f1e415]:
- link "200 Redirect @ psc_backend_dashboard_index" [ref=f1e417] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=request
- generic [ref=f1e418]:
- generic [ref=f1e419]: "200"
- img "Redirect" [ref=f1e421]
- generic [ref=f1e424]: "@"
- generic [ref=f1e425]: psc_backend_dashboard_index
- link "946 ms" [ref=f1e427] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=time
- generic [ref=f1e428]:
- generic [ref=f1e429]: "946"
- generic [ref=f1e430]: ms
- link "94.5 MiB" [ref=f1e432] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=time
- generic [ref=f1e433]:
- generic [ref=f1e434]: "94.5"
- generic [ref=f1e435]: MiB
- generic [ref=f1e437] [cursor=pointer]:
- img [ref=f1e438]
- generic [ref=f1e442]: "2"
- link "Logger 400" [ref=f1e444] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=logger
- generic [ref=f1e445]:
- img "Logger" [ref=f1e446]
- generic [ref=f1e450]: "400"
- link "Cache 18 in 198.32 ms" [ref=f1e452] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=cache
- generic [ref=f1e453]:
- img "Cache" [ref=f1e454]
- generic [ref=f1e459]: "18"
- generic [ref=f1e460]: in 198.32 ms
- link "47" [ref=f1e462] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=translation
- generic [ref=f1e463]:
- img [ref=f1e464]
- generic [ref=f1e469]: "47"
- link "Security 1" [ref=f1e471] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=security
- generic [ref=f1e472]:
- img "Security" [ref=f1e473]
- generic [ref=f1e477]: "1"
- link "Twig 106 ms" [ref=f1e479] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=twig
- generic [ref=f1e480]:
- img "Twig" [ref=f1e481]
- generic [ref=f1e485]: "106"
- generic [ref=f1e486]: ms
- link "18 in 24.87 ms" [ref=f1e488] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=db
- generic [ref=f1e489]:
- img [ref=f1e490]
- generic [ref=f1e495]: "18"
- generic [ref=f1e496]: in 24.87 ms
- link "1" [ref=f1e498] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=http_client
- generic [ref=f1e499]:
- img [ref=f1e500]
- generic [ref=f1e508]: "1"
- link "56 in 15.90 ms" [ref=f1e510] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=mongodb
- generic [ref=f1e511]:
- img [ref=f1e512]
- generic [ref=f1e514]: "56"
- generic [ref=f1e515]: in 15.90 ms
- 'link "S: 0 D: 0" [ref=f1e517] [cursor=pointer]':
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=jms_serializer
- generic [ref=f1e518]:
- img [ref=f1e519]
- generic [ref=f1e521]: "S:"
- generic [ref=f1e522]: "0"
- generic [ref=f1e523]: "D:"
- generic [ref=f1e524]: "0"
- link "Symfony 7.4.6" [ref=f1e526] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=config
- generic [ref=f1e527]:
- img "Symfony" [ref=f1e529]
- generic [ref=f1e531]: 7.4.6
- button [expanded] [ref=f1e532] [cursor=pointer]:
- generic "Close Toolbar" [ref=f1e533]:
- img [ref=f1e534]

View File

@ -0,0 +1,463 @@
- generic [active] [ref=f1e1]:
- generic [ref=f1e2]:
- complementary [ref=f1e3]:
- generic [ref=f1e5]:
- button "Collapse sidebar" [ref=f1e6] [cursor=pointer]:
- img [ref=f1e7]
- img "PrintshopCreator Logo" [ref=f1e10]
- navigation [ref=f1e11]:
- list [ref=f1e12]:
- listitem [ref=f1e13]:
- list [ref=f1e14]:
- listitem [ref=f1e15]:
- link " Dashboard" [ref=f1e17] [cursor=pointer]:
- /url: /apps/backend/dashboard
- generic [ref=f1e18]:
- generic [ref=f1e19]: Dashboard
- listitem [ref=f1e20]:
- link " Aufträge" [ref=f1e22] [cursor=pointer]:
- /url: /apps/backend/order/list/index
- generic [ref=f1e23]:
- generic [ref=f1e24]: Aufträge
- listitem [ref=f1e25]:
- link " Sendcloud" [ref=f1e27] [cursor=pointer]:
- /url: /apps/backend/r2_sendcloud/list
- generic [ref=f1e28]:
- generic [ref=f1e29]: Sendcloud
- listitem [ref=f1e30]:
- generic [ref=f1e31]:
- generic [ref=f1e32]:
- generic [ref=f1e33]:
- generic [ref=f1e34]: Produktion
- generic [ref=f1e36]:
- text:    
- listitem [ref=f1e37]:
- generic [ref=f1e38]:
- generic [ref=f1e39]:
- generic [ref=f1e40]:
- generic [ref=f1e41]: Produkte
- generic [ref=f1e43]:
- text:  
- listitem [ref=f1e44]:
- link " Firmen" [ref=f1e46] [cursor=pointer]:
- /url: /apps/backend/account/list/index
- generic [ref=f1e47]:
- generic [ref=f1e48]: Firmen
- listitem [ref=f1e49]:
- link " Kunden" [ref=f1e51] [cursor=pointer]:
- /url: /apps/backend/contact/list/index
- generic [ref=f1e52]:
- generic [ref=f1e53]: Kunden
- listitem [ref=f1e54]:
- link " CMS" [ref=f1e56] [cursor=pointer]:
- /url: /apps/backend/cms/list
- generic [ref=f1e57]:
- generic [ref=f1e58]: CMS
- listitem [ref=f1e59]:
- link " Versandarten" [ref=f1e61] [cursor=pointer]:
- /url: /apps/backend/shipping/list/index
- generic [ref=f1e62]:
- generic [ref=f1e63]: Versandarten
- listitem [ref=f1e64]:
- link " Zahlarten" [ref=f1e66] [cursor=pointer]:
- /url: /apps/backend/payment/list/index
- generic [ref=f1e67]:
- generic [ref=f1e68]: Zahlarten
- listitem [ref=f1e69]:
- link " News" [ref=f1e71] [cursor=pointer]:
- /url: /apps/backend/news/list/index
- generic [ref=f1e72]:
- generic [ref=f1e73]: News
- listitem [ref=f1e74]:
- link " Gutschein" [ref=f1e76] [cursor=pointer]:
- /url: /apps/backend/voucher/list/index
- generic [ref=f1e77]:
- generic [ref=f1e78]: Gutschein
- listitem [ref=f1e79]:
- generic [ref=f1e80]:
- generic [ref=f1e81]:
- generic [ref=f1e82]:
- generic [ref=f1e83]: Tools
- generic [ref=f1e85]:
- text:  
- listitem [ref=f1e86]:
- generic [ref=f1e87]:
- generic [ref=f1e88]:
- generic [ref=f1e89]:
- generic [ref=f1e90]: Shop Einstellungen
- generic [ref=f1e92]:
- text:            
- listitem [ref=f1e93]:
- link " Aktionen" [ref=f1e95] [cursor=pointer]:
- /url: /apps/backend/queue/list/index
- generic [ref=f1e96]:
- generic [ref=f1e97]: Aktionen
- list [ref=f1e98]:
- listitem [ref=f1e99]:
- button "Systemeinstellungen" [ref=f1e100] [cursor=pointer]:
- paragraph [ref=f1e102]: Systemeinstellungen
- list [ref=f1e103]:
- listitem [ref=f1e104]:
- link " Statusverwaltung" [ref=f1e106] [cursor=pointer]:
- /url: /apps/backend/system/settings/status/index
- generic [ref=f1e107]:
- generic [ref=f1e108]: Statusverwaltung
- listitem [ref=f1e109]:
- link " Papierdatenbank" [ref=f1e111] [cursor=pointer]:
- /url: /apps/backend/system/settings/paper/index
- generic [ref=f1e112]:
- generic [ref=f1e113]: Papierdatenbank
- listitem [ref=f1e114]:
- link " Hilfetexte" [ref=f1e116] [cursor=pointer]:
- /url: /apps/backend/system/settings/help/index
- generic [ref=f1e117]:
- generic [ref=f1e118]: Hilfetexte
- listitem [ref=f1e119]:
- link " Systemeinstellung" [ref=f1e121] [cursor=pointer]:
- /url: /apps/backend/system/settings/settings/index
- generic [ref=f1e122]:
- generic [ref=f1e123]: Systemeinstellung
- listitem [ref=f1e124]:
- link " Logs" [ref=f1e126] [cursor=pointer]:
- /url: /apps/backend/system/settings/log/index
- generic [ref=f1e127]:
- generic [ref=f1e128]: Logs
- listitem [ref=f1e129]:
- link " Media" [ref=f1e131] [cursor=pointer]:
- /url: /apps/backend/media/list/folder/show
- generic [ref=f1e132]:
- generic [ref=f1e133]: Media
- listitem [ref=f1e134]:
- list [ref=f1e135]:
- listitem [ref=f1e136]:
- link " Apps & App Store" [ref=f1e138] [cursor=pointer]:
- /url: /apps/backend/plugin/list
- generic [ref=f1e139]:
- generic [ref=f1e140]: Apps & App Store
- separator [ref=f1e141]
- paragraph [ref=f1e142]:
- text: Release 2.3.8 (24.06.2026)
- link "Changelog" [ref=f1e143] [cursor=pointer]:
- /url: /apps/backend/system/settings/backend/system/version/changelog
- paragraph [ref=f1e144]: 07.07.2026 22:54:07
- generic [ref=f1e145]:
- banner [ref=f1e146]:
- generic [ref=f1e148]:
- generic [ref=f1e150]:
- combobox [ref=f1e151]:
- option "Bestesvonhier" [selected]
- option "eder"
- option "nowe"
- option "Printchampion"
- option "Produkttypen"
- link "Shop anzeigen" [ref=f1e152] [cursor=pointer]:
- /url: https://b-dev-tp.dockserver.de
- img [ref=f1e153]
- generic [ref=f1e155]:
- checkbox [ref=f1e156]
- text: Deaktive Shops zeigen
- link "Kein 2FA aktiviert" [ref=f1e158] [cursor=pointer]:
- /url: /apps/backend/2fa-settings
- link "EN" [ref=f1e160] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/backend/dashboard?_locale=en
- button "User menu" [ref=f1e163] [cursor=pointer]
- generic [ref=f1e165]:
- banner [ref=f1e166]:
- heading " Dashboard" [level=1] [ref=f1e167]:
- generic [ref=f1e168]:
- text: Dashboard
- generic [ref=f1e169]:
- generic [ref=f1e170]:
- generic [ref=f1e171]:
- heading "Aktuelle PSC Kunden News" [level=2] [ref=f1e173]:
- img [ref=f1e174]
- text: Aktuelle PSC Kunden News
- list [ref=f1e538]:
- listitem [ref=f1e539]:
- link "Neue Widerrufsbutton-Funktion verfügbar" [ref=f1e540] [cursor=pointer]:
- /url: https://www.printshopcreator.de/news/widerrufsbutton
- generic [ref=f1e541]: 2026-06-24
- listitem [ref=f1e542]:
- link "PrintShopCreator 2.3.8 veröffentlicht" [ref=f1e543] [cursor=pointer]:
- /url: https://www.printshopcreator.de/news/version-6-4-1
- generic [ref=f1e544]: 2026-06-20
- listitem [ref=f1e545]:
- link "Neuer 2FA Login" [ref=f1e546] [cursor=pointer]:
- /url: https://www.printshopcreator.de/
- generic [ref=f1e547]: 2026-06-15
- generic [ref=f1e179]:
- heading "Aktuell ausgewählter Shop" [level=2] [ref=f1e182]
- table [ref=f1e184]:
- rowgroup [ref=f1e185]:
- 'row "Name: Bestesvonhier" [ref=f1e186]':
- cell "Name:" [ref=f1e187]
- cell "Bestesvonhier" [ref=f1e188]
- 'row "Beschreibung: Bestesvonhier" [ref=f1e189]':
- cell "Beschreibung:" [ref=f1e190]
- cell "Bestesvonhier" [ref=f1e191]
- 'row "Layout: bootstrap4_api" [ref=f1e192]':
- cell "Layout:" [ref=f1e193]
- cell "bootstrap4_api" [ref=f1e194]
- 'row "UID: 2" [ref=f1e195]':
- cell "UID:" [ref=f1e196]
- cell "2" [ref=f1e197]
- 'row "UUID: 0001-ac11000b-547c6efd-f2e3-272f456d" [ref=f1e198]':
- cell "UUID:" [ref=f1e199]
- cell "0001-ac11000b-547c6efd-f2e3-272f456d" [ref=f1e200]
- generic [ref=f1e201]:
- generic [ref=f1e202]:
- heading "Status" [level=2] [ref=f1e204]
- table [ref=f1e206]:
- rowgroup [ref=f1e207]:
- 'row "Aktionen: Alles Ok" [ref=f1e208]':
- cell "Aktionen:" [ref=f1e209]:
- link "Aktionen" [ref=f1e210] [cursor=pointer]:
- /url: /apps/backend/queue/list/index
- text: ":"
- cell "Alles Ok" [ref=f1e211]:
- link "Alles Ok" [ref=f1e212] [cursor=pointer]:
- /url: /apps/backend/queue/list/index
- 'row "Mailserver: Smtp Einstellungen überprüfen" [ref=f1e213]':
- cell "Mailserver:" [ref=f1e214]:
- link "Mailserver" [ref=f1e215] [cursor=pointer]:
- /url: /apps/backend/system/settings/settings/index
- text: ":"
- cell "Smtp Einstellungen überprüfen" [ref=f1e216]:
- link "Smtp Einstellungen überprüfen" [ref=f1e217] [cursor=pointer]:
- /url: /apps/backend/system/settings/settings/index
- 'row "Version: v2.3.8" [ref=f1e218]':
- cell "Version:" [ref=f1e219]
- cell "v2.3.8" [ref=f1e220]:
- link "v2.3.8" [ref=f1e221] [cursor=pointer]:
- /url: /apps/backend/system/settings/backend/system/version/changelog
- generic [ref=f1e222]:
- heading "Speicherverbrauch" [level=2] [ref=f1e224]
- generic [ref=f1e226]:
- generic [ref=f1e228]:
- generic [ref=f1e229]: Datenbank
- generic [ref=f1e230]: 7.92 MB(22%)
- generic [ref=f1e234]:
- generic [ref=f1e235]: Uploads (Data Volume)
- generic [ref=f1e236]: 26.75 MB(74.3%)
- generic [ref=f1e240]:
- generic [ref=f1e241]: Pakete (Data Volume)
- generic [ref=f1e242]: 722.2 KB(2%)
- generic [ref=f1e246]:
- generic [ref=f1e247]: Templateprint Layouter (Data Volume)
- generic [ref=f1e248]: 0 KB(0%)
- generic [ref=f1e251]:
- generic [ref=f1e252]: Form Based Layouter (Data Volume)
- generic [ref=f1e253]: 59.53 KB(0.16%)
- generic [ref=f1e257]:
- generic [ref=f1e258]: Creative Layouter (Data Volume)
- generic [ref=f1e259]: 603.02 KB(1.6%)
- generic [ref=f1e263]:
- img [ref=f1e265]
- generic [ref=f1e267]:
- generic [ref=f1e268]:
- generic [ref=f1e269]: System (Overlay)
- generic [ref=f1e270]: 474.77 GB / 927.42 GB
- generic [ref=f1e273]:
- generic [ref=f1e274]: Belegt 474.77 GB (51.2%)
- generic [ref=f1e275]: Frei 452.64 GB
- heading "Umsatz" [level=2] [ref=f1e280]
- generic [ref=f1e284]:
- heading "Neue Kunden" [level=2] [ref=f1e287]
- table [ref=f1e289]:
- rowgroup [ref=f1e290]:
- row "KundeFirma KundeVorname KundeNachname kunde@printchampion.eu 17.11.2014 00:11:00" [ref=f1e291]:
- cell "KundeFirma KundeVorname KundeNachname kunde@printchampion.eu" [ref=f1e292]:
- generic [ref=f1e293]: KundeFirma KundeVorname KundeNachname
- generic [ref=f1e294]: kunde@printchampion.eu
- cell "17.11.2014 00:11:00" [ref=f1e295]:
- generic [ref=f1e296]: 17.11.2014
- generic [ref=f1e297]: 00:11:00
- cell [ref=f1e298]:
- link [ref=f1e299] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-ac11000b-546a252d-e23f-7dceef9d
- img [ref=f1e300]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Heinz Alder halder@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e302]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Heinz Alder halder@bestesvonhier.de" [ref=f1e303]:
- generic [ref=f1e304]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Heinz Alder
- generic [ref=f1e305]: halder@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e306]:
- generic [ref=f1e307]: 24.01.2013
- generic [ref=f1e308]: 00:01:00
- cell [ref=f1e309]:
- link [ref=f1e310] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-4f7e-7a293d0f
- img [ref=f1e311]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Ursula Ammann uammann@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e313]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Ursula Ammann uammann@bestesvonhier.de" [ref=f1e314]:
- generic [ref=f1e315]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Ursula Ammann
- generic [ref=f1e316]: uammann@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e317]:
- generic [ref=f1e318]: 24.01.2013
- generic [ref=f1e319]: 00:01:00
- cell [ref=f1e320]:
- link [ref=f1e321] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-679b-7123sd21
- img [ref=f1e322]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Roland Baum rbaum@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e324]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Roland Baum rbaum@bestesvonhier.de" [ref=f1e325]:
- generic [ref=f1e326]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Roland Baum
- generic [ref=f1e327]: rbaum@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e328]:
- generic [ref=f1e329]: 24.01.2013
- generic [ref=f1e330]: 00:01:00
- cell [ref=f1e331]:
- link [ref=f1e332] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-7271-ae854c8c
- img [ref=f1e333]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Dave Beglinger dbeglinger@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e335]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Dave Beglinger dbeglinger@bestesvonhier.de" [ref=f1e336]:
- generic [ref=f1e337]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Dave Beglinger
- generic [ref=f1e338]: dbeglinger@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e339]:
- generic [ref=f1e340]: 24.01.2013
- generic [ref=f1e341]: 00:01:00
- cell [ref=f1e342]:
- link [ref=f1e343] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-7670-5cb833b6
- img [ref=f1e344]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Thomas Beier tbeier@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e346]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Thomas Beier tbeier@bestesvonhier.de" [ref=f1e347]:
- generic [ref=f1e348]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Thomas Beier
- generic [ref=f1e349]: tbeier@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e350]:
- generic [ref=f1e351]: 24.01.2013
- generic [ref=f1e352]: 00:01:00
- cell [ref=f1e353]:
- link [ref=f1e354] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-7aaf-1ce4e96f
- img [ref=f1e355]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Markus Breu mbreu@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e357]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Markus Breu mbreu@bestesvonhier.de" [ref=f1e358]:
- generic [ref=f1e359]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Markus Breu
- generic [ref=f1e360]: mbreu@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e361]:
- generic [ref=f1e362]: 24.01.2013
- generic [ref=f1e363]: 00:01:00
- cell [ref=f1e364]:
- link [ref=f1e365] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-8133-fdf9dec3
- img [ref=f1e366]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Andrea Burri aburri@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e368]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Andrea Burri aburri@bestesvonhier.de" [ref=f1e369]:
- generic [ref=f1e370]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Andrea Burri
- generic [ref=f1e371]: aburri@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e372]:
- generic [ref=f1e373]: 24.01.2013
- generic [ref=f1e374]: 00:01:00
- cell [ref=f1e375]:
- link [ref=f1e376] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-8ba0-00764e94
- img [ref=f1e377]
- row "Bestes von Hier - Bio BGmbH Hauptsitz Münster Catia Fari cfari@bestesvonhier.de 24.01.2013 00:01:00" [ref=f1e379]:
- cell "Bestes von Hier - Bio BGmbH Hauptsitz Münster Catia Fari cfari@bestesvonhier.de" [ref=f1e380]:
- generic [ref=f1e381]: Bestes von Hier - Bio BGmbH Hauptsitz Münster Catia Fari
- generic [ref=f1e382]: cfari@bestesvonhier.de
- cell "24.01.2013 00:01:00" [ref=f1e383]:
- generic [ref=f1e384]: 24.01.2013
- generic [ref=f1e385]: 00:01:00
- cell [ref=f1e386]:
- link [ref=f1e387] [cursor=pointer]:
- /url: /apps/backend/contact/edit/edit/0001-00000000-50e1c4cc-920a-2bcd7303
- img [ref=f1e388]
- generic [ref=f1e390]:
- heading "Neue Aufträge" [level=2] [ref=f1e393]
- table:
- rowgroup
- generic [ref=f1e396]:
- heading "KI Assistent (ollama · qwen2.5-coder:7b)" [level=2] [ref=f1e399]:
- img [ref=f1e400]
- text: KI Assistent
- generic [ref=f1e402]: (ollama · qwen2.5-coder:7b)
- paragraph [ref=f1e405]: Stellen Sie eine Frage oder geben Sie einen Befehl ein...
- generic [ref=f1e407]:
- textbox "Nachricht eingeben..." [ref=f1e408]
- button "Senden" [disabled] [ref=f1e409]:
- img [ref=f1e410]
- text: Senden
- region "Symfony Web Debug Toolbar" [ref=f1e412]:
- generic [ref=f1e415]:
- link "200 Redirect @ psc_backend_dashboard_index" [ref=f1e417] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=request
- generic [ref=f1e418]:
- generic [ref=f1e419]: "200"
- img "Redirect" [ref=f1e421]
- generic [ref=f1e424]: "@"
- generic [ref=f1e425]: psc_backend_dashboard_index
- link "946 ms" [ref=f1e427] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=time
- generic [ref=f1e428]:
- generic [ref=f1e429]: "946"
- generic [ref=f1e430]: ms
- link "94.5 MiB" [ref=f1e432] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=time
- generic [ref=f1e433]:
- generic [ref=f1e434]: "94.5"
- generic [ref=f1e435]: MiB
- generic [ref=f1e437] [cursor=pointer]:
- img [ref=f1e438]
- generic [ref=f1e442]: "2"
- link "Logger 400" [ref=f1e444] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=logger
- generic [ref=f1e445]:
- img "Logger" [ref=f1e446]
- generic [ref=f1e450]: "400"
- link "Cache 18 in 198.32 ms" [ref=f1e452] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=cache
- generic [ref=f1e453]:
- img "Cache" [ref=f1e454]
- generic [ref=f1e459]: "18"
- generic [ref=f1e460]: in 198.32 ms
- link "47" [ref=f1e462] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=translation
- generic [ref=f1e463]:
- img [ref=f1e464]
- generic [ref=f1e469]: "47"
- link "Security 1" [ref=f1e471] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=security
- generic [ref=f1e472]:
- img "Security" [ref=f1e473]
- generic [ref=f1e477]: "1"
- link "Twig 106 ms" [ref=f1e479] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=twig
- generic [ref=f1e480]:
- img "Twig" [ref=f1e481]
- generic [ref=f1e485]: "106"
- generic [ref=f1e486]: ms
- link "18 in 24.87 ms" [ref=f1e488] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=db
- generic [ref=f1e489]:
- img [ref=f1e490]
- generic [ref=f1e495]: "18"
- generic [ref=f1e496]: in 24.87 ms
- link "1" [ref=f1e498] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=http_client
- generic [ref=f1e499]:
- img [ref=f1e500]
- generic [ref=f1e508]: "1"
- link "56 in 15.90 ms" [ref=f1e510] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=mongodb
- generic [ref=f1e511]:
- img [ref=f1e512]
- generic [ref=f1e514]: "56"
- generic [ref=f1e515]: in 15.90 ms
- 'link "S: 0 D: 0" [ref=f1e517] [cursor=pointer]':
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=jms_serializer
- generic [ref=f1e518]:
- img [ref=f1e519]
- generic [ref=f1e521]: "S:"
- generic [ref=f1e522]: "0"
- generic [ref=f1e523]: "D:"
- generic [ref=f1e524]: "0"
- link "Symfony 7.4.6" [ref=f1e526] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/c8ef37?panel=config
- generic [ref=f1e527]:
- img "Symfony" [ref=f1e529]
- generic [ref=f1e531]: 7.4.6
- button [expanded] [ref=f1e532] [cursor=pointer]:
- generic "Close Toolbar" [ref=f1e533]:
- img [ref=f1e534]

View File

@ -0,0 +1,169 @@
- generic [active] [ref=f2e1]:
- banner [ref=f2e2]:
- generic [ref=f2e3]:
- heading "Symfony Exception" [level=1] [ref=f2e4]:
- img [ref=f2e5]
- text: Symfony Exception
- link "Symfony Docs" [ref=f2e8] [cursor=pointer]:
- /url: https://symfony.com/doc/7.4.6/index.html
- img [ref=f2e10]
- text: Symfony Docs
- generic [ref=f2e12]:
- generic [ref=f2e14]:
- heading "ResourceNotFoundException NotFoundHttpException" [level=2] [ref=f2e15]:
- link "ResourceNotFoundException" [ref=f2e16] [cursor=pointer]:
- /url: "#trace-box-2"
- img [ref=f2e18]
- link "NotFoundHttpException" [ref=f2e20] [cursor=pointer]:
- /url: "#trace-box-1"
- heading "HTTP 404 Not Found" [level=2] [ref=f2e21]
- generic [ref=f2e23]:
- heading "No route found for \"GET http://type-dev-tp.local/apps/backend/system/settings/index\"" [level=1] [ref=f2e24]
- img [ref=f2e26]
- generic [ref=f2e29]:
- tablist [ref=f2e30]:
- tab "Exceptions 2" [selected] [ref=f2e31] [cursor=pointer]:
- text: Exceptions
- generic [ref=f2e32]: "2"
- tab "Logs 1" [ref=f2e33] [cursor=pointer]:
- text: Logs
- generic [ref=f2e34]: "1"
- tab "Stack Traces 2" [ref=f2e35] [cursor=pointer]:
- text: Stack Traces
- generic [ref=f2e36]: "2"
- tabpanel [ref=f2e37]:
- generic [ref=f2e38]:
- generic [ref=f2e40]:
- generic [ref=f2e41]:
- generic [ref=f2e42] [cursor=pointer]:
- img [ref=f2e44]
- heading "Symfony\\Component\\HttpKernel\\Exception\\ NotFoundHttpException" [level=3] [ref=f2e46]:
- generic [ref=f2e47]: Symfony\Component\HttpKernel\Exception\
- text: NotFoundHttpException
- group [ref=f2e48]:
- generic "Show exception properties" [ref=f2e49] [cursor=pointer]
- generic [ref=f2e50]:
- generic [ref=f2e52] [cursor=pointer]:
- img [ref=f2e54]
- generic [ref=f2e56]:
- text: in
- link "vendor/symfony/http-kernel/EventListener/RouterListener.php" [ref=f2e57]:
- /url: file:///data/www/new/vendor/symfony/http-kernel/EventListener/RouterListener.php#L156
- text: vendor/symfony/http-kernel/EventListener/
- strong [ref=f2e58]: RouterListener.php
- text: (line 156)
- generic [ref=f2e60] [cursor=pointer]:
- img [ref=f2e62]
- generic [ref=f2e64]:
- text: in
- link "vendor/symfony/event-dispatcher/Debug/WrappedListener.php" [ref=f2e65]:
- /url: file:///data/www/new/vendor/symfony/event-dispatcher/Debug/WrappedListener.php#L115
- text: vendor/symfony/event-dispatcher/Debug/
- strong [ref=f2e66]: WrappedListener.php
- text: "-> onKernelRequest (line 115)"
- generic [ref=f2e68] [cursor=pointer]:
- img [ref=f2e70]
- generic [ref=f2e72]:
- text: in
- link "vendor/symfony/event-dispatcher/EventDispatcher.php" [ref=f2e73]:
- /url: file:///data/www/new/vendor/symfony/event-dispatcher/EventDispatcher.php#L206
- text: vendor/symfony/event-dispatcher/
- strong [ref=f2e74]: EventDispatcher.php
- text: "-> __invoke (line 206)"
- generic [ref=f2e76] [cursor=pointer]:
- img [ref=f2e78]
- generic [ref=f2e80]:
- text: in
- link "vendor/symfony/event-dispatcher/EventDispatcher.php" [ref=f2e81]:
- /url: file:///data/www/new/vendor/symfony/event-dispatcher/EventDispatcher.php#L56
- text: vendor/symfony/event-dispatcher/
- strong [ref=f2e82]: EventDispatcher.php
- text: "-> callListeners (line 56)"
- generic [ref=f2e84] [cursor=pointer]:
- img [ref=f2e86]
- generic [ref=f2e88]:
- text: in
- link "vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php" [ref=f2e89]:
- /url: file:///data/www/new/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php#L126
- text: vendor/symfony/event-dispatcher/Debug/
- strong [ref=f2e90]: TraceableEventDispatcher.php
- text: "-> dispatch (line 126)"
- generic [ref=f2e92] [cursor=pointer]:
- img [ref=f2e94]
- generic [ref=f2e96]:
- text: in
- link "vendor/symfony/http-kernel/HttpKernel.php" [ref=f2e97]:
- /url: file:///data/www/new/vendor/symfony/http-kernel/HttpKernel.php#L159
- text: vendor/symfony/http-kernel/
- strong [ref=f2e98]: HttpKernel.php
- text: "-> dispatch (line 159)"
- generic [ref=f2e100] [cursor=pointer]:
- img [ref=f2e102]
- generic [ref=f2e104]:
- text: in
- link "vendor/symfony/http-kernel/HttpKernel.php" [ref=f2e105]:
- /url: file:///data/www/new/vendor/symfony/http-kernel/HttpKernel.php#L76
- text: vendor/symfony/http-kernel/
- strong [ref=f2e106]: HttpKernel.php
- text: "-> handleRaw (line 76)"
- generic [ref=f2e108] [cursor=pointer]:
- img [ref=f2e110]
- generic [ref=f2e112]:
- text: in
- link "vendor/symfony/http-kernel/Kernel.php" [ref=f2e113]:
- /url: file:///data/www/new/vendor/symfony/http-kernel/Kernel.php#L193
- text: vendor/symfony/http-kernel/
- strong [ref=f2e114]: Kernel.php
- text: "-> handle (line 193)"
- generic [ref=f2e115]:
- generic [ref=f2e116] [cursor=pointer]:
- img [ref=f2e118]
- generic [ref=f2e120]: Kernel
- text: "->handle"
- generic [ref=f2e121]:
- text: (
- emphasis [ref=f2e122]: object
- text: (Request))
- generic [ref=f2e123]:
- text: in
- link "web/app.php" [ref=f2e124]:
- /url: file:///data/www/new/web/app.php#L41
- text: web/
- strong [ref=f2e125]: app.php
- text: (line 41)
- list [ref=f2e127]:
- listitem [ref=f2e128]:
- code
- listitem [ref=f2e129]:
- code [ref=f2e130]: // or, if you're using a well-known proxy
- listitem [ref=f2e131]:
- code [ref=f2e132]: // Request::HEADER_X_FORWARDED_AWS_ELB
- listitem [ref=f2e133]:
- code [ref=f2e134]: // Request::HEADER_X_FORWARDED_TRAEFIK
- listitem [ref=f2e135]:
- code [ref=f2e136]: );
- listitem [ref=f2e137]:
- code [ref=f2e138]: $response = $kernel->handle($request);
- listitem [ref=f2e139]:
- code [ref=f2e140]: $response->send();
- listitem [ref=f2e141]:
- code [ref=f2e142]: $kernel->terminate($request, $response);
- listitem [ref=f2e143]:
- code
- generic [ref=f2e147] [cursor=pointer]:
- img [ref=f2e149]
- heading "Symfony\\Component\\Routing\\Exception\\ ResourceNotFoundException" [level=3] [ref=f2e151]:
- generic [ref=f2e152]: Symfony\Component\Routing\Exception\
- text: ResourceNotFoundException
- paragraph [ref=f2e153]: No routes found for "/backend/system/settings/index/".
- text: ✔ ▾ ✔ ✔ ▾
- region "Symfony Web Debug Toolbar" [ref=f2e154]:
- generic [ref=f2e157]:
- link "Symfony Loading…" [ref=f2e159] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/26ae2c?panel=request
- generic [ref=f2e160]:
- img "Symfony" [ref=f2e161]
- generic [ref=f2e163]: Loading…
- button [expanded] [ref=f2e164] [cursor=pointer]:
- generic "Close Toolbar" [ref=f2e165]:
- img [ref=f2e166]

View File

@ -0,0 +1,262 @@
- generic [active] [ref=f3e1]:
- generic [ref=f3e2]:
- complementary [ref=f3e3]:
- generic [ref=f3e5]:
- button "Collapse sidebar" [ref=f3e6] [cursor=pointer]:
- img [ref=f3e7]
- img "PrintshopCreator Logo" [ref=f3e10]
- navigation [ref=f3e11]:
- list [ref=f3e12]:
- listitem [ref=f3e13]:
- list [ref=f3e14]:
- listitem [ref=f3e15]:
- link " Dashboard" [ref=f3e17] [cursor=pointer]:
- /url: /apps/backend/dashboard
- generic [ref=f3e18]:
- generic [ref=f3e19]: Dashboard
- listitem [ref=f3e20]:
- link " Aufträge" [ref=f3e22] [cursor=pointer]:
- /url: /apps/backend/order/list/index
- generic [ref=f3e23]:
- generic [ref=f3e24]: Aufträge
- listitem [ref=f3e25]:
- link " Sendcloud" [ref=f3e27] [cursor=pointer]:
- /url: /apps/backend/r2_sendcloud/list
- generic [ref=f3e28]:
- generic [ref=f3e29]: Sendcloud
- listitem [ref=f3e30]:
- generic [ref=f3e31]:
- generic [ref=f3e32]:
- generic [ref=f3e33]:
- generic [ref=f3e34]: Produktion
- generic [ref=f3e36]:
- text:    
- listitem [ref=f3e37]:
- generic [ref=f3e38]:
- generic [ref=f3e39]:
- generic [ref=f3e40]:
- generic [ref=f3e41]: Produkte
- generic [ref=f3e43]:
- text:  
- listitem [ref=f3e44]:
- link " Firmen" [ref=f3e46] [cursor=pointer]:
- /url: /apps/backend/account/list/index
- generic [ref=f3e47]:
- generic [ref=f3e48]: Firmen
- listitem [ref=f3e49]:
- link " Kunden" [ref=f3e51] [cursor=pointer]:
- /url: /apps/backend/contact/list/index
- generic [ref=f3e52]:
- generic [ref=f3e53]: Kunden
- listitem [ref=f3e54]:
- link " CMS" [ref=f3e56] [cursor=pointer]:
- /url: /apps/backend/cms/list
- generic [ref=f3e57]:
- generic [ref=f3e58]: CMS
- listitem [ref=f3e59]:
- link " Versandarten" [ref=f3e61] [cursor=pointer]:
- /url: /apps/backend/shipping/list/index
- generic [ref=f3e62]:
- generic [ref=f3e63]: Versandarten
- listitem [ref=f3e64]:
- link " Zahlarten" [ref=f3e66] [cursor=pointer]:
- /url: /apps/backend/payment/list/index
- generic [ref=f3e67]:
- generic [ref=f3e68]: Zahlarten
- listitem [ref=f3e69]:
- link " News" [ref=f3e71] [cursor=pointer]:
- /url: /apps/backend/news/list/index
- generic [ref=f3e72]:
- generic [ref=f3e73]: News
- listitem [ref=f3e74]:
- link " Gutschein" [ref=f3e76] [cursor=pointer]:
- /url: /apps/backend/voucher/list/index
- generic [ref=f3e77]:
- generic [ref=f3e78]: Gutschein
- listitem [ref=f3e79]:
- generic [ref=f3e80]:
- generic [ref=f3e81]:
- generic [ref=f3e82]:
- generic [ref=f3e83]: Tools
- generic [ref=f3e85]:
- text:  
- listitem [ref=f3e86]:
- generic [ref=f3e87]:
- generic [ref=f3e88]:
- generic [ref=f3e89]:
- generic [ref=f3e90]: Shop Einstellungen
- generic [ref=f3e92]:
- text:            
- listitem [ref=f3e93]:
- link " Aktionen" [ref=f3e95] [cursor=pointer]:
- /url: /apps/backend/queue/list/index
- generic [ref=f3e96]:
- generic [ref=f3e97]: Aktionen
- list [ref=f3e98]:
- listitem [ref=f3e99]:
- button "Systemeinstellungen" [ref=f3e100] [cursor=pointer]:
- paragraph [ref=f3e102]: Systemeinstellungen
- list [ref=f3e103]:
- listitem [ref=f3e104]:
- link " Statusverwaltung" [ref=f3e106] [cursor=pointer]:
- /url: /apps/backend/system/settings/status/index
- generic [ref=f3e107]:
- generic [ref=f3e108]: Statusverwaltung
- listitem [ref=f3e109]:
- link " Papierdatenbank" [ref=f3e111] [cursor=pointer]:
- /url: /apps/backend/system/settings/paper/index
- generic [ref=f3e112]:
- generic [ref=f3e113]: Papierdatenbank
- listitem [ref=f3e114]:
- link " Hilfetexte" [ref=f3e116] [cursor=pointer]:
- /url: /apps/backend/system/settings/help/index
- generic [ref=f3e117]:
- generic [ref=f3e118]: Hilfetexte
- listitem [ref=f3e119]:
- link " Systemeinstellung" [ref=f3e121] [cursor=pointer]:
- /url: /apps/backend/system/settings/settings/index
- generic [ref=f3e122]:
- generic [ref=f3e123]: Systemeinstellung
- listitem [ref=f3e124]:
- link " Logs" [ref=f3e126] [cursor=pointer]:
- /url: /apps/backend/system/settings/log/index
- generic [ref=f3e127]:
- generic [ref=f3e128]: Logs
- listitem [ref=f3e129]:
- link " Media" [ref=f3e131] [cursor=pointer]:
- /url: /apps/backend/media/list/folder/show
- generic [ref=f3e132]:
- generic [ref=f3e133]: Media
- listitem [ref=f3e134]:
- list [ref=f3e135]:
- listitem [ref=f3e136]:
- link " Apps & App Store" [ref=f3e138] [cursor=pointer]:
- /url: /apps/backend/plugin/list
- generic [ref=f3e139]:
- generic [ref=f3e140]: Apps & App Store
- separator [ref=f3e141]
- paragraph [ref=f3e142]:
- text: Release 2.3.8 (24.06.2026)
- link "Changelog" [ref=f3e143] [cursor=pointer]:
- /url: /apps/backend/system/settings/backend/system/version/changelog
- paragraph [ref=f3e144]: 07.07.2026 22:55:15
- generic [ref=f3e145]:
- banner [ref=f3e146]:
- generic [ref=f3e148]:
- generic [ref=f3e150]:
- combobox [ref=f3e151]:
- option "Bestesvonhier" [selected]
- option "eder"
- option "nowe"
- option "Printchampion"
- option "Produkttypen"
- link "Shop anzeigen" [ref=f3e152] [cursor=pointer]:
- /url: https://b-dev-tp.dockserver.de
- img [ref=f3e153]
- generic [ref=f3e155]:
- checkbox [ref=f3e156]
- text: Deaktive Shops zeigen
- link "Kein 2FA aktiviert" [ref=f3e158] [cursor=pointer]:
- /url: /apps/backend/2fa-settings
- link "EN" [ref=f3e160] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/backend/system/settings/settings/index?_locale=en
- button "User menu" [ref=f3e163] [cursor=pointer]
- generic [ref=f3e165]:
- banner [ref=f3e166]:
- heading "System Einstellungen" [level=1] [ref=f3e168]:
- img [ref=f3e169]
- text: System
- generic [ref=f3e172]: Einstellungen
- link "Mehrwertsteuer" [ref=f3e174] [cursor=pointer]:
- /url: /apps/backend/system/settings/tax/index
- img [ref=f3e175]
- text: Mehrwertsteuer
- generic [ref=f3e178]:
- generic [ref=f3e179]:
- tablist [ref=f3e180]:
- link "Nummernkreise" [ref=f3e182] [cursor=pointer]:
- /url: "#"
- img [ref=f3e183]
- text: Nummernkreise
- link "SMTP" [ref=f3e185] [cursor=pointer]:
- /url: "#"
- img [ref=f3e186]
- text: SMTP
- link "Erweitert" [ref=f3e188] [cursor=pointer]:
- /url: "#"
- img [ref=f3e189]
- text: Erweitert
- link "PSC Support" [ref=f3e191] [cursor=pointer]:
- /url: "#"
- img [ref=f3e192]
- text: PSC Support
- link "sFTP Daten" [ref=f3e194] [cursor=pointer]:
- /url: "#"
- img [ref=f3e195]
- text: sFTP Daten
- link "Wartungsankündigung" [ref=f3e197] [cursor=pointer]:
- /url: "#"
- img
- text: Wartungsankündigung
- link "KI Assistent" [ref=f3e199] [cursor=pointer]:
- /url: "#"
- img [ref=f3e200]
- text: KI Assistent
- generic [ref=f3e203]:
- heading "Nummernkreise" [level=6] [ref=f3e204]
- generic [ref=f3e205]:
- generic [ref=f3e206]:
- paragraph [ref=f3e207]: Angebot
- generic [ref=f3e208]: Startnummer
- textbox [ref=f3e209]: "17"
- generic [ref=f3e210]: Format
- textbox [ref=f3e211]: "AN-{{ \"now\"|date(\"d.m.Y\") }}-{{ number }}"
- generic [ref=f3e212]:
- paragraph [ref=f3e213]: Auftrag
- generic [ref=f3e214]: Startnummer
- textbox [ref=f3e215]: "91"
- generic [ref=f3e216]: Format
- textbox [ref=f3e217]: "AF-{{ \"now\"|date(\"d.m.Y\") }}-{{ number }}"
- generic [ref=f3e218]:
- paragraph [ref=f3e219]: Rechnung
- generic [ref=f3e220]: Startnummer
- textbox [ref=f3e221]: "1"
- generic [ref=f3e222]: Format
- textbox [ref=f3e223]: "RE-{{ \"now\"|date(\"d.m.Y\") }}-{{ number }}"
- generic [ref=f3e224]:
- paragraph [ref=f3e225]: Gutschrift
- generic [ref=f3e226]: Startnummer
- textbox [ref=f3e227]: "0"
- generic [ref=f3e228]: Format
- textbox [ref=f3e229]: "GU-{{ \"now\"|date(\"d.m.Y\") }}-{{ number }}"
- generic [ref=f3e230]:
- paragraph [ref=f3e231]: Storno
- generic [ref=f3e232]: Startnummer
- textbox [ref=f3e233]: "0"
- generic [ref=f3e234]: Format
- textbox [ref=f3e235]: "ST-{{ \"now\"|date(\"d.m.Y\") }}-{{ number }}"
- generic [ref=f3e236]:
- paragraph [ref=f3e237]: Teilrechnung
- generic [ref=f3e238]: Startnummer
- textbox [ref=f3e239]: "0"
- generic [ref=f3e240]: Format
- textbox [ref=f3e241]: "TR-{{ \"now\"|date(\"d.m.Y\") }}-{{ number }}"
- generic [ref=f3e242]:
- paragraph [ref=f3e243]: Teilstorno
- generic [ref=f3e244]: Startnummer
- textbox [ref=f3e245]: "0"
- generic [ref=f3e246]: Format
- textbox [ref=f3e247]: "TS-{{ \"now\"|date(\"d.m.Y\") }}-{{ number }}"
- button "Speichern" [ref=f3e249] [cursor=pointer]:
- img [ref=f3e250]
- text: Speichern
- region "Symfony Web Debug Toolbar" [ref=f3e252]:
- generic [ref=f3e255]:
- link "Symfony Loading…" [ref=f3e257] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/b5d894?panel=request
- generic [ref=f3e258]:
- img "Symfony" [ref=f3e259]
- generic [ref=f3e261]: Loading…
- button [expanded] [ref=f3e262] [cursor=pointer]:
- generic "Close Toolbar" [ref=f3e263]:
- img [ref=f3e264]

View File

@ -0,0 +1,892 @@
- generic [active] [ref=f4e1]:
- generic [ref=f4e2]:
- complementary [ref=f4e3]:
- generic [ref=f4e5]:
- button "Collapse sidebar" [ref=f4e6] [cursor=pointer]:
- img [ref=f4e7]
- img "PrintshopCreator Logo" [ref=f4e10]
- navigation [ref=f4e11]:
- list [ref=f4e12]:
- listitem [ref=f4e13]:
- list [ref=f4e14]:
- listitem [ref=f4e15]:
- link " Dashboard" [ref=f4e17] [cursor=pointer]:
- /url: /apps/backend/dashboard
- generic [ref=f4e18]:
- generic [ref=f4e19]: Dashboard
- listitem [ref=f4e20]:
- link " Aufträge" [ref=f4e22] [cursor=pointer]:
- /url: /apps/backend/order/list/index
- generic [ref=f4e23]:
- generic [ref=f4e24]: Aufträge
- listitem [ref=f4e25]:
- link " Sendcloud" [ref=f4e27] [cursor=pointer]:
- /url: /apps/backend/r2_sendcloud/list
- generic [ref=f4e28]:
- generic [ref=f4e29]: Sendcloud
- listitem [ref=f4e30]:
- generic [ref=f4e31]:
- generic [ref=f4e32]:
- generic [ref=f4e33]:
- generic [ref=f4e34]: Produktion
- generic [ref=f4e36]:
- text:    
- listitem [ref=f4e37]:
- generic [ref=f4e38]:
- generic [ref=f4e39]:
- generic [ref=f4e40]:
- generic [ref=f4e41]: Produkte
- generic [ref=f4e43]:
- text:  
- listitem [ref=f4e44]:
- link " Firmen" [ref=f4e46] [cursor=pointer]:
- /url: /apps/backend/account/list/index
- generic [ref=f4e47]:
- generic [ref=f4e48]: Firmen
- listitem [ref=f4e49]:
- link " Kunden" [ref=f4e51] [cursor=pointer]:
- /url: /apps/backend/contact/list/index
- generic [ref=f4e52]:
- generic [ref=f4e53]: Kunden
- listitem [ref=f4e54]:
- link " CMS" [ref=f4e56] [cursor=pointer]:
- /url: /apps/backend/cms/list
- generic [ref=f4e57]:
- generic [ref=f4e58]: CMS
- listitem [ref=f4e59]:
- link " Versandarten" [ref=f4e61] [cursor=pointer]:
- /url: /apps/backend/shipping/list/index
- generic [ref=f4e62]:
- generic [ref=f4e63]: Versandarten
- listitem [ref=f4e64]:
- link " Zahlarten" [ref=f4e66] [cursor=pointer]:
- /url: /apps/backend/payment/list/index
- generic [ref=f4e67]:
- generic [ref=f4e68]: Zahlarten
- listitem [ref=f4e69]:
- link " News" [ref=f4e71] [cursor=pointer]:
- /url: /apps/backend/news/list/index
- generic [ref=f4e72]:
- generic [ref=f4e73]: News
- listitem [ref=f4e74]:
- link " Gutschein" [ref=f4e76] [cursor=pointer]:
- /url: /apps/backend/voucher/list/index
- generic [ref=f4e77]:
- generic [ref=f4e78]: Gutschein
- listitem [ref=f4e79]:
- generic [ref=f4e80]:
- generic [ref=f4e81]:
- generic [ref=f4e82]:
- generic [ref=f4e83]: Tools
- generic [ref=f4e85]:
- text:  
- listitem [ref=f4e86]:
- generic [ref=f4e87]:
- generic [ref=f4e88]:
- generic [ref=f4e89]:
- generic [ref=f4e90]: Shop Einstellungen
- generic [ref=f4e92]:
- text:            
- listitem [ref=f4e93]:
- link " Aktionen" [ref=f4e95] [cursor=pointer]:
- /url: /apps/backend/queue/list/index
- generic [ref=f4e96]:
- generic [ref=f4e97]: Aktionen
- list [ref=f4e98]:
- listitem [ref=f4e99]:
- button "Systemeinstellungen" [ref=f4e100] [cursor=pointer]:
- paragraph [ref=f4e102]: Systemeinstellungen
- list [ref=f4e103]:
- listitem [ref=f4e104]:
- link " Statusverwaltung" [ref=f4e106] [cursor=pointer]:
- /url: /apps/backend/system/settings/status/index
- generic [ref=f4e107]:
- generic [ref=f4e108]: Statusverwaltung
- listitem [ref=f4e109]:
- link " Papierdatenbank" [ref=f4e111] [cursor=pointer]:
- /url: /apps/backend/system/settings/paper/index
- generic [ref=f4e112]:
- generic [ref=f4e113]: Papierdatenbank
- listitem [ref=f4e114]:
- link " Hilfetexte" [ref=f4e116] [cursor=pointer]:
- /url: /apps/backend/system/settings/help/index
- generic [ref=f4e117]:
- generic [ref=f4e118]: Hilfetexte
- listitem [ref=f4e119]:
- link " Systemeinstellung" [ref=f4e121] [cursor=pointer]:
- /url: /apps/backend/system/settings/settings/index
- generic [ref=f4e122]:
- generic [ref=f4e123]: Systemeinstellung
- listitem [ref=f4e124]:
- link " Logs" [ref=f4e126] [cursor=pointer]:
- /url: /apps/backend/system/settings/log/index
- generic [ref=f4e127]:
- generic [ref=f4e128]: Logs
- listitem [ref=f4e129]:
- link " Media" [ref=f4e131] [cursor=pointer]:
- /url: /apps/backend/media/list/folder/show
- generic [ref=f4e132]:
- generic [ref=f4e133]: Media
- listitem [ref=f4e134]:
- list [ref=f4e135]:
- listitem [ref=f4e136]:
- link " Apps & App Store" [ref=f4e138] [cursor=pointer]:
- /url: /apps/backend/plugin/list
- generic [ref=f4e139]:
- generic [ref=f4e140]: Apps & App Store
- separator [ref=f4e141]
- paragraph [ref=f4e142]:
- text: Release 2.3.8 (24.06.2026)
- link "Changelog" [ref=f4e143] [cursor=pointer]:
- /url: /apps/backend/system/settings/backend/system/version/changelog
- paragraph [ref=f4e144]: 07.07.2026 22:56:36
- generic [ref=f4e145]:
- banner [ref=f4e146]:
- generic [ref=f4e148]:
- generic [ref=f4e150]:
- combobox [ref=f4e151]:
- option "Bestesvonhier" [selected]
- option "eder"
- option "nowe"
- option "Printchampion"
- option "Produkttypen"
- link "Shop anzeigen" [ref=f4e152] [cursor=pointer]:
- /url: https://b-dev-tp.dockserver.de
- img [ref=f4e153]
- generic [ref=f4e155]:
- checkbox [ref=f4e156]
- text: Deaktive Shops zeigen
- link "Kein 2FA aktiviert" [ref=f4e158] [cursor=pointer]:
- /url: /apps/backend/2fa-settings
- link "EN" [ref=f4e160] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/backend/system/settings/log/index?_locale=en
- button "User menu" [ref=f4e163] [cursor=pointer]
- generic [ref=f4e165]:
- banner [ref=f4e166]:
- heading "Logs List" [level=1] [ref=f4e168]:
- img [ref=f4e169]
- text: Logs
- generic [ref=f4e171]: List
- generic [ref=f4e173]:
- heading "Einträge" [level=2] [ref=f4e175]
- table [ref=f4e177]:
- rowgroup [ref=f4e178]:
- row "Id Created Shop User Module Reference Message Data" [ref=f4e179]:
- columnheader "Id" [ref=f4e180]
- columnheader "Created" [ref=f4e181]
- columnheader "Shop" [ref=f4e182]
- columnheader "User" [ref=f4e183]
- columnheader "Module" [ref=f4e184]
- columnheader "Reference" [ref=f4e185]
- columnheader "Message" [ref=f4e186]
- columnheader "Data" [ref=f4e187]
- rowgroup [ref=f4e188]:
- 'row "6a4d676eee35c58f8007a6d4 07.07.2026 22:54:06 Bestesvonhier admin@shop.de Login 0001-528bd456-4bcd48e8-13e1-0683b94f Backend Login: admin@shop.de (172.18.0.1)" [ref=f4e189]':
- cell "6a4d676eee35c58f8007a6d4" [ref=f4e190]
- cell "07.07.2026 22:54:06" [ref=f4e191]
- cell "Bestesvonhier" [ref=f4e192]
- cell "admin@shop.de" [ref=f4e193]:
- link "admin@shop.de" [ref=f4e194] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "Login" [ref=f4e195]:
- generic [ref=f4e196]: Login
- cell "0001-528bd456-4bcd48e8-13e1-0683b94f" [ref=f4e197]
- 'cell "Backend Login: admin@shop.de (172.18.0.1)" [ref=f4e198]':
- generic [ref=f4e199]: "Backend Login: admin@shop.de (172.18.0.1)"
- cell [ref=f4e200]
- 'row "6a3b7f8292d07832550ac054 24.06.2026 08:56:02 Produkttypen 3fd6fbbb-3fe0-4541-bf98-0ae1e2803222 PSC\\Shop\\QueueBundle\\PSCShopQueueBundle test fertig Revocation Position Request Mail send message: 1 test_drweigert from: admin@printchampion.eu to: admin@shop.de subject: Wiederrufen" [ref=f4e201]':
- cell "6a3b7f8292d07832550ac054" [ref=f4e202]
- cell "24.06.2026 08:56:02" [ref=f4e203]
- cell "Produkttypen" [ref=f4e204]
- cell "3fd6fbbb-3fe0-4541-bf98-0ae1e2803222" [ref=f4e205]:
- link "3fd6fbbb-3fe0-4541-bf98-0ae1e2803222" [ref=f4e206] [cursor=pointer]:
- /url: mailto:3fd6fbbb-3fe0-4541-bf98-0ae1e2803222
- cell "PSC\\Shop\\QueueBundle\\PSCShopQueueBundle" [ref=f4e207]:
- generic [ref=f4e208]: PSC\Shop\QueueBundle\PSCShopQueueBundle
- cell "test fertig" [ref=f4e209]
- cell "Revocation Position Request Mail send" [ref=f4e210]:
- generic [ref=f4e211]: Revocation Position Request Mail send
- 'cell "message: 1 test_drweigert from: admin@printchampion.eu to: admin@shop.de subject: Wiederrufen" [ref=f4e212]':
- generic [ref=f4e213]:
- generic [ref=f4e214]:
- generic [ref=f4e215]: "message:"
- generic [ref=f4e216]: 1 test_drweigert
- generic [ref=f4e217]:
- generic [ref=f4e218]: "from:"
- generic [ref=f4e219]: admin@printchampion.eu
- generic [ref=f4e220]:
- generic [ref=f4e221]: "to:"
- generic [ref=f4e222]: admin@shop.de
- generic [ref=f4e223]:
- generic [ref=f4e224]: "subject:"
- generic [ref=f4e225]: Wiederrufen
- 'row "6a3b7f455a93cfeb29091a54 24.06.2026 08:55:01 Produkttypen 98c049f9-cfb7-4479-9a68-802bd6bf1441 PSC\\Shop\\QueueBundle\\PSCShopQueueBundle test fertig Revocation Position Request Mail error error: Key \"article\" for sequence/mapping with keys \"pos, count, product, productObj, obj, objDoc, calc, engine, set, rabatte\" does not exist in \"__string_template__40c6619f2618da85820ebcde2bac3c72\" at line 3." [ref=f4e226]':
- cell "6a3b7f455a93cfeb29091a54" [ref=f4e227]
- cell "24.06.2026 08:55:01" [ref=f4e228]
- cell "Produkttypen" [ref=f4e229]
- cell "98c049f9-cfb7-4479-9a68-802bd6bf1441" [ref=f4e230]:
- link "98c049f9-cfb7-4479-9a68-802bd6bf1441" [ref=f4e231] [cursor=pointer]:
- /url: mailto:98c049f9-cfb7-4479-9a68-802bd6bf1441
- cell "PSC\\Shop\\QueueBundle\\PSCShopQueueBundle" [ref=f4e232]:
- generic [ref=f4e233]: PSC\Shop\QueueBundle\PSCShopQueueBundle
- cell "test fertig" [ref=f4e234]
- cell "Revocation Position Request Mail error" [ref=f4e235]:
- generic [ref=f4e236]: Revocation Position Request Mail error
- 'cell "error: Key \"article\" for sequence/mapping with keys \"pos, count, product, productObj, obj, objDoc, calc, engine, set, rabatte\" does not exist in \"__string_template__40c6619f2618da85820ebcde2bac3c72\" at line 3." [ref=f4e237]':
- generic [ref=f4e239]:
- generic [ref=f4e240]: "error:"
- generic [ref=f4e241]: Key "article" for sequence/mapping with keys "pos, count, product, productObj, obj, objDoc, calc, engine, set, rabatte" does not exist in "__string_template__40c6619f2618da85820ebcde2bac3c72" at line 3.
- 'row "6a3b7f093528e0fd410b9554 24.06.2026 08:54:01 Produkttypen d13694b8-5873-4653-a240-e65e9cd5ff4f PSC\\Shop\\QueueBundle\\PSCShopQueueBundle test fertig Revocation Position Request Mail error error: Key \"uuid\" for sequence/mapping with keys \"pos, count, product, productObj, obj, objDoc, calc, engine, set, rabatte\" does not exist in \"__string_template__8e7219df590d201bc3190367488c5181\" at line 1." [ref=f4e242]':
- cell "6a3b7f093528e0fd410b9554" [ref=f4e243]
- cell "24.06.2026 08:54:01" [ref=f4e244]
- cell "Produkttypen" [ref=f4e245]
- cell "d13694b8-5873-4653-a240-e65e9cd5ff4f" [ref=f4e246]:
- link "d13694b8-5873-4653-a240-e65e9cd5ff4f" [ref=f4e247] [cursor=pointer]:
- /url: mailto:d13694b8-5873-4653-a240-e65e9cd5ff4f
- cell "PSC\\Shop\\QueueBundle\\PSCShopQueueBundle" [ref=f4e248]:
- generic [ref=f4e249]: PSC\Shop\QueueBundle\PSCShopQueueBundle
- cell "test fertig" [ref=f4e250]
- cell "Revocation Position Request Mail error" [ref=f4e251]:
- generic [ref=f4e252]: Revocation Position Request Mail error
- 'cell "error: Key \"uuid\" for sequence/mapping with keys \"pos, count, product, productObj, obj, objDoc, calc, engine, set, rabatte\" does not exist in \"__string_template__8e7219df590d201bc3190367488c5181\" at line 1." [ref=f4e253]':
- generic [ref=f4e255]:
- generic [ref=f4e256]: "error:"
- generic [ref=f4e257]: Key "uuid" for sequence/mapping with keys "pos, count, product, productObj, obj, objDoc, calc, engine, set, rabatte" does not exist in "__string_template__8e7219df590d201bc3190367488c5181" at line 1.
- 'row "6a3b7ecee8644788b107b584 24.06.2026 08:53:02 Produkttypen 738d1a95-ce5f-4eaf-9e36-b0ac2321d236 PSC\\Shop\\QueueBundle\\PSCShopQueueBundle test fertig Revocation Position Request Mail error error: Key \"uuid\" for sequence/mapping with keys \"pos, count, product, productObj, obj, objDoc, calc, engine, set, rabatte\" does not exist in \"__string_template__8e7219df590d201bc3190367488c5181\" at line 1." [ref=f4e258]':
- cell "6a3b7ecee8644788b107b584" [ref=f4e259]
- cell "24.06.2026 08:53:02" [ref=f4e260]
- cell "Produkttypen" [ref=f4e261]
- cell "738d1a95-ce5f-4eaf-9e36-b0ac2321d236" [ref=f4e262]:
- link "738d1a95-ce5f-4eaf-9e36-b0ac2321d236" [ref=f4e263] [cursor=pointer]:
- /url: mailto:738d1a95-ce5f-4eaf-9e36-b0ac2321d236
- cell "PSC\\Shop\\QueueBundle\\PSCShopQueueBundle" [ref=f4e264]:
- generic [ref=f4e265]: PSC\Shop\QueueBundle\PSCShopQueueBundle
- cell "test fertig" [ref=f4e266]
- cell "Revocation Position Request Mail error" [ref=f4e267]:
- generic [ref=f4e268]: Revocation Position Request Mail error
- 'cell "error: Key \"uuid\" for sequence/mapping with keys \"pos, count, product, productObj, obj, objDoc, calc, engine, set, rabatte\" does not exist in \"__string_template__8e7219df590d201bc3190367488c5181\" at line 1." [ref=f4e269]':
- generic [ref=f4e271]:
- generic [ref=f4e272]: "error:"
- generic [ref=f4e273]: Key "uuid" for sequence/mapping with keys "pos, count, product, productObj, obj, objDoc, calc, engine, set, rabatte" does not exist in "__string_template__8e7219df590d201bc3190367488c5181" at line 1.
- 'row "6a3b792e45d65322800ceff4 24.06.2026 08:29:02 Produkttypen 47414cd2-9cd7-4dbb-93b2-b11ddc4f293f PSC\\Shop\\QueueBundle\\PSCShopQueueBundle test Revocation Request Mail send message: https://{Shop-Domain}/revocationform/order/uuid/928d23d0-61b8-eae7-9418-2cd2729e8b3b from: admin@printchampion.eu to: admin@shop.de subject: Wiederrufs Link" [ref=f4e274]':
- cell "6a3b792e45d65322800ceff4" [ref=f4e275]
- cell "24.06.2026 08:29:02" [ref=f4e276]
- cell "Produkttypen" [ref=f4e277]
- cell "47414cd2-9cd7-4dbb-93b2-b11ddc4f293f" [ref=f4e278]:
- link "47414cd2-9cd7-4dbb-93b2-b11ddc4f293f" [ref=f4e279] [cursor=pointer]:
- /url: mailto:47414cd2-9cd7-4dbb-93b2-b11ddc4f293f
- cell "PSC\\Shop\\QueueBundle\\PSCShopQueueBundle" [ref=f4e280]:
- generic [ref=f4e281]: PSC\Shop\QueueBundle\PSCShopQueueBundle
- cell "test" [ref=f4e282]
- cell "Revocation Request Mail send" [ref=f4e283]:
- generic [ref=f4e284]: Revocation Request Mail send
- 'cell "message: https://{Shop-Domain}/revocationform/order/uuid/928d23d0-61b8-eae7-9418-2cd2729e8b3b from: admin@printchampion.eu to: admin@shop.de subject: Wiederrufs Link" [ref=f4e285]':
- generic [ref=f4e286]:
- generic [ref=f4e287]:
- generic [ref=f4e288]: "message:"
- generic [ref=f4e289]: "https://{Shop-Domain}/revocationform/order/uuid/928d23d0-61b8-eae7-9418-2cd2729e8b3b"
- generic [ref=f4e290]:
- generic [ref=f4e291]: "from:"
- generic [ref=f4e292]: admin@printchampion.eu
- generic [ref=f4e293]:
- generic [ref=f4e294]: "to:"
- generic [ref=f4e295]: admin@shop.de
- generic [ref=f4e296]:
- generic [ref=f4e297]: "subject:"
- generic [ref=f4e298]: Wiederrufs Link
- row "6a3a433aaa0c15e8e40a5b75 23.06.2026 10:26:34 Produkttypen admin@shop.de PSC\\Shop\\ProductBundle\\PSCShopProductBundle test_drweigert Product has been updated" [ref=f4e299]:
- cell "6a3a433aaa0c15e8e40a5b75" [ref=f4e300]
- cell "23.06.2026 10:26:34" [ref=f4e301]
- cell "Produkttypen" [ref=f4e302]
- cell "admin@shop.de" [ref=f4e303]:
- link "admin@shop.de" [ref=f4e304] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\ProductBundle\\PSCShopProductBundle" [ref=f4e305]:
- generic [ref=f4e306]: PSC\Shop\ProductBundle\PSCShopProductBundle
- cell "test_drweigert" [ref=f4e307]
- cell "Product has been updated" [ref=f4e308]:
- generic [ref=f4e309]: Product has been updated
- cell [ref=f4e310]
- row "6a356e72bea8ab39bd0b3da6 19.06.2026 18:29:38 Produkttypen admin@shop.de PSC\\Shop\\SettingsBundle\\PSCShopSettingsBundle b3ddbe0b-947f-423f-96a5-e0564c90b742 Shopsettings saved" [ref=f4e311]:
- cell "6a356e72bea8ab39bd0b3da6" [ref=f4e312]
- cell "19.06.2026 18:29:38" [ref=f4e313]
- cell "Produkttypen" [ref=f4e314]
- cell "admin@shop.de" [ref=f4e315]:
- link "admin@shop.de" [ref=f4e316] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\SettingsBundle\\PSCShopSettingsBundle" [ref=f4e317]:
- generic [ref=f4e318]: PSC\Shop\SettingsBundle\PSCShopSettingsBundle
- cell "b3ddbe0b-947f-423f-96a5-e0564c90b742" [ref=f4e319]
- cell "Shopsettings saved" [ref=f4e320]:
- generic [ref=f4e321]: Shopsettings saved
- cell [ref=f4e322]
- row "6a356d3071fa622acb0919a9 19.06.2026 18:24:16 Bestesvonhier admin@shop.de PSC\\Shop\\SettingsBundle\\PSCShopSettingsBundle 0001-ac11000b-547c6efd-f2e3-272f456d Shopsettings saved" [ref=f4e323]:
- cell "6a356d3071fa622acb0919a9" [ref=f4e324]
- cell "19.06.2026 18:24:16" [ref=f4e325]
- cell "Bestesvonhier" [ref=f4e326]
- cell "admin@shop.de" [ref=f4e327]:
- link "admin@shop.de" [ref=f4e328] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\SettingsBundle\\PSCShopSettingsBundle" [ref=f4e329]:
- generic [ref=f4e330]: PSC\Shop\SettingsBundle\PSCShopSettingsBundle
- cell "0001-ac11000b-547c6efd-f2e3-272f456d" [ref=f4e331]
- cell "Shopsettings saved" [ref=f4e332]:
- generic [ref=f4e333]: Shopsettings saved
- cell [ref=f4e334]
- row "6a325c3571fa622acb0919a5 17.06.2026 10:35:01 Produkttypen admin@shop.de PSC\\Shop\\ProductBundle\\PSCShopProductBundle testcollect Product has been updated" [ref=f4e335]:
- cell "6a325c3571fa622acb0919a5" [ref=f4e336]
- cell "17.06.2026 10:35:01" [ref=f4e337]
- cell "Produkttypen" [ref=f4e338]
- cell "admin@shop.de" [ref=f4e339]:
- link "admin@shop.de" [ref=f4e340] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\ProductBundle\\PSCShopProductBundle" [ref=f4e341]:
- generic [ref=f4e342]: PSC\Shop\ProductBundle\PSCShopProductBundle
- cell "testcollect" [ref=f4e343]
- cell "Product has been updated" [ref=f4e344]:
- generic [ref=f4e345]: Product has been updated
- cell [ref=f4e346]
- row "6a319f0cc51b3498b6072b37 16.06.2026 21:07:56 Produkttypen admin@shop.de PSC\\Shop\\SettingsBundle\\PSCShopSettingsBundle b3ddbe0b-947f-423f-96a5-e0564c90b742 Shopsettings saved" [ref=f4e347]:
- cell "6a319f0cc51b3498b6072b37" [ref=f4e348]
- cell "16.06.2026 21:07:56" [ref=f4e349]
- cell "Produkttypen" [ref=f4e350]
- cell "admin@shop.de" [ref=f4e351]:
- link "admin@shop.de" [ref=f4e352] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\SettingsBundle\\PSCShopSettingsBundle" [ref=f4e353]:
- generic [ref=f4e354]: PSC\Shop\SettingsBundle\PSCShopSettingsBundle
- cell "b3ddbe0b-947f-423f-96a5-e0564c90b742" [ref=f4e355]
- cell "Shopsettings saved" [ref=f4e356]:
- generic [ref=f4e357]: Shopsettings saved
- cell [ref=f4e358]
- row "6a319cf8e7c663b185045667 16.06.2026 20:59:04 Produkttypen admin@shop.de PSC\\Shop\\SettingsBundle\\PSCShopSettingsBundle b3ddbe0b-947f-423f-96a5-e0564c90b742 Shopsettings saved" [ref=f4e359]:
- cell "6a319cf8e7c663b185045667" [ref=f4e360]
- cell "16.06.2026 20:59:04" [ref=f4e361]
- cell "Produkttypen" [ref=f4e362]
- cell "admin@shop.de" [ref=f4e363]:
- link "admin@shop.de" [ref=f4e364] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\SettingsBundle\\PSCShopSettingsBundle" [ref=f4e365]:
- generic [ref=f4e366]: PSC\Shop\SettingsBundle\PSCShopSettingsBundle
- cell "b3ddbe0b-947f-423f-96a5-e0564c90b742" [ref=f4e367]
- cell "Shopsettings saved" [ref=f4e368]:
- generic [ref=f4e369]: Shopsettings saved
- cell [ref=f4e370]
- row "6a15c3141efcb5b289066c78 26.05.2026 17:58:12 Produkttypen admin@shop.de PSC\\Shop\\ContactBundle\\PSCShopContactBundle admin@shop.de Contact updated" [ref=f4e371]:
- cell "6a15c3141efcb5b289066c78" [ref=f4e372]
- cell "26.05.2026 17:58:12" [ref=f4e373]
- cell "Produkttypen" [ref=f4e374]
- cell "admin@shop.de" [ref=f4e375]:
- link "admin@shop.de" [ref=f4e376] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\ContactBundle\\PSCShopContactBundle" [ref=f4e377]:
- generic [ref=f4e378]: PSC\Shop\ContactBundle\PSCShopContactBundle
- cell "admin@shop.de" [ref=f4e379]
- cell "Contact updated" [ref=f4e380]:
- generic [ref=f4e381]: Contact updated
- cell [ref=f4e382]
- row "69d68184c20f38fc6800f75a 08.04.2026 18:25:40 Produkttypen admin@shop.de PSC\\Shop\\PaymentBundle\\PSCShopPaymentBundle molli Payment saved" [ref=f4e383]:
- cell "69d68184c20f38fc6800f75a" [ref=f4e384]
- cell "08.04.2026 18:25:40" [ref=f4e385]
- cell "Produkttypen" [ref=f4e386]
- cell "admin@shop.de" [ref=f4e387]:
- link "admin@shop.de" [ref=f4e388] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\PaymentBundle\\PSCShopPaymentBundle" [ref=f4e389]:
- generic [ref=f4e390]: PSC\Shop\PaymentBundle\PSCShopPaymentBundle
- cell "molli" [ref=f4e391]
- cell "Payment saved" [ref=f4e392]:
- generic [ref=f4e393]: Payment saved
- cell [ref=f4e394]
- row "69d4dc8d3d429798b6019b55 07.04.2026 12:29:33 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e395]:
- cell "69d4dc8d3d429798b6019b55" [ref=f4e396]
- cell "07.04.2026 12:29:33" [ref=f4e397]
- cell "Produkttypen" [ref=f4e398]
- cell "admin@shop.de" [ref=f4e399]:
- link "admin@shop.de" [ref=f4e400] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e401]:
- generic [ref=f4e402]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e403]
- cell "CMS Site saved" [ref=f4e404]:
- generic [ref=f4e405]: CMS Site saved
- cell [ref=f4e406]
- row "69d4dc843d429798b6019b53 07.04.2026 12:29:24 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e407]:
- cell "69d4dc843d429798b6019b53" [ref=f4e408]
- cell "07.04.2026 12:29:24" [ref=f4e409]
- cell "Produkttypen" [ref=f4e410]
- cell "admin@shop.de" [ref=f4e411]:
- link "admin@shop.de" [ref=f4e412] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e413]:
- generic [ref=f4e414]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e415]
- cell "CMS Site saved" [ref=f4e416]:
- generic [ref=f4e417]: CMS Site saved
- cell [ref=f4e418]
- row "69d4dc7b3d429798b6019b51 07.04.2026 12:29:15 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e419]:
- cell "69d4dc7b3d429798b6019b51" [ref=f4e420]
- cell "07.04.2026 12:29:15" [ref=f4e421]
- cell "Produkttypen" [ref=f4e422]
- cell "admin@shop.de" [ref=f4e423]:
- link "admin@shop.de" [ref=f4e424] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e425]:
- generic [ref=f4e426]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e427]
- cell "CMS Site saved" [ref=f4e428]:
- generic [ref=f4e429]: CMS Site saved
- cell [ref=f4e430]
- row "69d4dc73f0cc51f6e70501bd 07.04.2026 12:29:07 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e431]:
- cell "69d4dc73f0cc51f6e70501bd" [ref=f4e432]
- cell "07.04.2026 12:29:07" [ref=f4e433]
- cell "Produkttypen" [ref=f4e434]
- cell "admin@shop.de" [ref=f4e435]:
- link "admin@shop.de" [ref=f4e436] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e437]:
- generic [ref=f4e438]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e439]
- cell "CMS Site saved" [ref=f4e440]:
- generic [ref=f4e441]: CMS Site saved
- cell [ref=f4e442]
- row "69d4d8c6cdb3acc398084bd5 07.04.2026 12:13:26 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e443]:
- cell "69d4d8c6cdb3acc398084bd5" [ref=f4e444]
- cell "07.04.2026 12:13:26" [ref=f4e445]
- cell "Produkttypen" [ref=f4e446]
- cell "admin@shop.de" [ref=f4e447]:
- link "admin@shop.de" [ref=f4e448] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e449]:
- generic [ref=f4e450]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e451]
- cell "CMS Site saved" [ref=f4e452]:
- generic [ref=f4e453]: CMS Site saved
- cell [ref=f4e454]
- row "69d4d410f0cc51f6e70501bc 07.04.2026 11:53:20 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e455]:
- cell "69d4d410f0cc51f6e70501bc" [ref=f4e456]
- cell "07.04.2026 11:53:20" [ref=f4e457]
- cell "Produkttypen" [ref=f4e458]
- cell "admin@shop.de" [ref=f4e459]:
- link "admin@shop.de" [ref=f4e460] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e461]:
- generic [ref=f4e462]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e463]
- cell "CMS Site saved" [ref=f4e464]:
- generic [ref=f4e465]: CMS Site saved
- cell [ref=f4e466]
- row "69d4d3eaf0cc51f6e70501bb 07.04.2026 11:52:42 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e467]:
- cell "69d4d3eaf0cc51f6e70501bb" [ref=f4e468]
- cell "07.04.2026 11:52:42" [ref=f4e469]
- cell "Produkttypen" [ref=f4e470]
- cell "admin@shop.de" [ref=f4e471]:
- link "admin@shop.de" [ref=f4e472] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e473]:
- generic [ref=f4e474]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e475]
- cell "CMS Site saved" [ref=f4e476]:
- generic [ref=f4e477]: CMS Site saved
- cell [ref=f4e478]
- row "69d4d3e6f0cc51f6e70501ba 07.04.2026 11:52:38 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e479]:
- cell "69d4d3e6f0cc51f6e70501ba" [ref=f4e480]
- cell "07.04.2026 11:52:38" [ref=f4e481]
- cell "Produkttypen" [ref=f4e482]
- cell "admin@shop.de" [ref=f4e483]:
- link "admin@shop.de" [ref=f4e484] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e485]:
- generic [ref=f4e486]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e487]
- cell "CMS Site saved" [ref=f4e488]:
- generic [ref=f4e489]: CMS Site saved
- cell [ref=f4e490]
- row "69d4d3b6f0cc51f6e70501b8 07.04.2026 11:51:50 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e491]:
- cell "69d4d3b6f0cc51f6e70501b8" [ref=f4e492]
- cell "07.04.2026 11:51:50" [ref=f4e493]
- cell "Produkttypen" [ref=f4e494]
- cell "admin@shop.de" [ref=f4e495]:
- link "admin@shop.de" [ref=f4e496] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e497]:
- generic [ref=f4e498]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e499]
- cell "CMS Site saved" [ref=f4e500]:
- generic [ref=f4e501]: CMS Site saved
- cell [ref=f4e502]
- row "69d4d3b0f0cc51f6e70501b7 07.04.2026 11:51:44 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e503]:
- cell "69d4d3b0f0cc51f6e70501b7" [ref=f4e504]
- cell "07.04.2026 11:51:44" [ref=f4e505]
- cell "Produkttypen" [ref=f4e506]
- cell "admin@shop.de" [ref=f4e507]:
- link "admin@shop.de" [ref=f4e508] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e509]:
- generic [ref=f4e510]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e511]
- cell "CMS Site saved" [ref=f4e512]:
- generic [ref=f4e513]: CMS Site saved
- cell [ref=f4e514]
- row "69d4ce9b3d429798b6019b4f 07.04.2026 11:30:03 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e515]:
- cell "69d4ce9b3d429798b6019b4f" [ref=f4e516]
- cell "07.04.2026 11:30:03" [ref=f4e517]
- cell "Produkttypen" [ref=f4e518]
- cell "admin@shop.de" [ref=f4e519]:
- link "admin@shop.de" [ref=f4e520] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e521]:
- generic [ref=f4e522]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e523]
- cell "CMS Site saved" [ref=f4e524]:
- generic [ref=f4e525]: CMS Site saved
- cell [ref=f4e526]
- row "69d4ce673d429798b6019b4e 07.04.2026 11:29:11 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e527]:
- cell "69d4ce673d429798b6019b4e" [ref=f4e528]
- cell "07.04.2026 11:29:11" [ref=f4e529]
- cell "Produkttypen" [ref=f4e530]
- cell "admin@shop.de" [ref=f4e531]:
- link "admin@shop.de" [ref=f4e532] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e533]:
- generic [ref=f4e534]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e535]
- cell "CMS Site saved" [ref=f4e536]:
- generic [ref=f4e537]: CMS Site saved
- cell [ref=f4e538]
- row "69d4ce553d429798b6019b4c 07.04.2026 11:28:53 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e539]:
- cell "69d4ce553d429798b6019b4c" [ref=f4e540]
- cell "07.04.2026 11:28:53" [ref=f4e541]
- cell "Produkttypen" [ref=f4e542]
- cell "admin@shop.de" [ref=f4e543]:
- link "admin@shop.de" [ref=f4e544] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e545]:
- generic [ref=f4e546]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e547]
- cell "CMS Site saved" [ref=f4e548]:
- generic [ref=f4e549]: CMS Site saved
- cell [ref=f4e550]
- row "69d4ce4d3d429798b6019b4b 07.04.2026 11:28:45 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e551]:
- cell "69d4ce4d3d429798b6019b4b" [ref=f4e552]
- cell "07.04.2026 11:28:45" [ref=f4e553]
- cell "Produkttypen" [ref=f4e554]
- cell "admin@shop.de" [ref=f4e555]:
- link "admin@shop.de" [ref=f4e556] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e557]:
- generic [ref=f4e558]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e559]
- cell "CMS Site saved" [ref=f4e560]:
- generic [ref=f4e561]: CMS Site saved
- cell [ref=f4e562]
- row "69d4ce493d429798b6019b49 07.04.2026 11:28:41 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e563]:
- cell "69d4ce493d429798b6019b49" [ref=f4e564]
- cell "07.04.2026 11:28:41" [ref=f4e565]
- cell "Produkttypen" [ref=f4e566]
- cell "admin@shop.de" [ref=f4e567]:
- link "admin@shop.de" [ref=f4e568] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e569]:
- generic [ref=f4e570]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e571]
- cell "CMS Site saved" [ref=f4e572]:
- generic [ref=f4e573]: CMS Site saved
- cell [ref=f4e574]
- row "69d4ce433d429798b6019b48 07.04.2026 11:28:35 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e575]:
- cell "69d4ce433d429798b6019b48" [ref=f4e576]
- cell "07.04.2026 11:28:35" [ref=f4e577]
- cell "Produkttypen" [ref=f4e578]
- cell "admin@shop.de" [ref=f4e579]:
- link "admin@shop.de" [ref=f4e580] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e581]:
- generic [ref=f4e582]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e583]
- cell "CMS Site saved" [ref=f4e584]:
- generic [ref=f4e585]: CMS Site saved
- cell [ref=f4e586]
- row "69d4ce393d429798b6019b46 07.04.2026 11:28:25 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e587]:
- cell "69d4ce393d429798b6019b46" [ref=f4e588]
- cell "07.04.2026 11:28:25" [ref=f4e589]
- cell "Produkttypen" [ref=f4e590]
- cell "admin@shop.de" [ref=f4e591]:
- link "admin@shop.de" [ref=f4e592] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e593]:
- generic [ref=f4e594]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e595]
- cell "CMS Site saved" [ref=f4e596]:
- generic [ref=f4e597]: CMS Site saved
- cell [ref=f4e598]
- row "69d4cd053d429798b6019b44 07.04.2026 11:23:17 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle asdasd CMS Site saved" [ref=f4e599]:
- cell "69d4cd053d429798b6019b44" [ref=f4e600]
- cell "07.04.2026 11:23:17" [ref=f4e601]
- cell "Produkttypen" [ref=f4e602]
- cell "admin@shop.de" [ref=f4e603]:
- link "admin@shop.de" [ref=f4e604] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e605]:
- generic [ref=f4e606]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "asdasd" [ref=f4e607]
- cell "CMS Site saved" [ref=f4e608]:
- generic [ref=f4e609]: CMS Site saved
- cell [ref=f4e610]
- row "69c29c84c0bf9bd15a06020e 24.03.2026 15:15:32 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e611]:
- cell "69c29c84c0bf9bd15a06020e" [ref=f4e612]
- cell "24.03.2026 15:15:32" [ref=f4e613]
- cell "Produkttypen" [ref=f4e614]
- cell "admin@shop.de" [ref=f4e615]:
- link "admin@shop.de" [ref=f4e616] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e617]:
- generic [ref=f4e618]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e619]
- cell "CMS Site saved" [ref=f4e620]:
- generic [ref=f4e621]: CMS Site saved
- cell [ref=f4e622]
- row "69c299401a23d748ea0671d4 24.03.2026 15:01:36 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e623]:
- cell "69c299401a23d748ea0671d4" [ref=f4e624]
- cell "24.03.2026 15:01:36" [ref=f4e625]
- cell "Produkttypen" [ref=f4e626]
- cell "admin@shop.de" [ref=f4e627]:
- link "admin@shop.de" [ref=f4e628] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e629]:
- generic [ref=f4e630]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e631]
- cell "CMS Site saved" [ref=f4e632]:
- generic [ref=f4e633]: CMS Site saved
- cell [ref=f4e634]
- row "69c296aac0bf9bd15a06020d 24.03.2026 14:50:34 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e635]:
- cell "69c296aac0bf9bd15a06020d" [ref=f4e636]
- cell "24.03.2026 14:50:34" [ref=f4e637]
- cell "Produkttypen" [ref=f4e638]
- cell "admin@shop.de" [ref=f4e639]:
- link "admin@shop.de" [ref=f4e640] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e641]:
- generic [ref=f4e642]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e643]
- cell "CMS Site saved" [ref=f4e644]:
- generic [ref=f4e645]: CMS Site saved
- cell [ref=f4e646]
- row "69c26f071a23d748ea0671d2 24.03.2026 12:01:27 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e647]:
- cell "69c26f071a23d748ea0671d2" [ref=f4e648]
- cell "24.03.2026 12:01:27" [ref=f4e649]
- cell "Produkttypen" [ref=f4e650]
- cell "admin@shop.de" [ref=f4e651]:
- link "admin@shop.de" [ref=f4e652] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e653]:
- generic [ref=f4e654]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e655]
- cell "CMS Site saved" [ref=f4e656]:
- generic [ref=f4e657]: CMS Site saved
- cell [ref=f4e658]
- row "69c26ef94d28452cc1023b1e 24.03.2026 12:01:13 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e659]:
- cell "69c26ef94d28452cc1023b1e" [ref=f4e660]
- cell "24.03.2026 12:01:13" [ref=f4e661]
- cell "Produkttypen" [ref=f4e662]
- cell "admin@shop.de" [ref=f4e663]:
- link "admin@shop.de" [ref=f4e664] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e665]:
- generic [ref=f4e666]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e667]
- cell "CMS Site saved" [ref=f4e668]:
- generic [ref=f4e669]: CMS Site saved
- cell [ref=f4e670]
- row "69c26d881a23d748ea0671d0 24.03.2026 11:55:04 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e671]:
- cell "69c26d881a23d748ea0671d0" [ref=f4e672]
- cell "24.03.2026 11:55:04" [ref=f4e673]
- cell "Produkttypen" [ref=f4e674]
- cell "admin@shop.de" [ref=f4e675]:
- link "admin@shop.de" [ref=f4e676] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e677]:
- generic [ref=f4e678]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e679]
- cell "CMS Site saved" [ref=f4e680]:
- generic [ref=f4e681]: CMS Site saved
- cell [ref=f4e682]
- row "69c26d78c0bf9bd15a06020c 24.03.2026 11:54:48 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e683]:
- cell "69c26d78c0bf9bd15a06020c" [ref=f4e684]
- cell "24.03.2026 11:54:48" [ref=f4e685]
- cell "Produkttypen" [ref=f4e686]
- cell "admin@shop.de" [ref=f4e687]:
- link "admin@shop.de" [ref=f4e688] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e689]:
- generic [ref=f4e690]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e691]
- cell "CMS Site saved" [ref=f4e692]:
- generic [ref=f4e693]: CMS Site saved
- cell [ref=f4e694]
- row "69c26c41c0bf9bd15a06020b 24.03.2026 11:49:37 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e695]:
- cell "69c26c41c0bf9bd15a06020b" [ref=f4e696]
- cell "24.03.2026 11:49:37" [ref=f4e697]
- cell "Produkttypen" [ref=f4e698]
- cell "admin@shop.de" [ref=f4e699]:
- link "admin@shop.de" [ref=f4e700] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e701]:
- generic [ref=f4e702]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e703]
- cell "CMS Site saved" [ref=f4e704]:
- generic [ref=f4e705]: CMS Site saved
- cell [ref=f4e706]
- row "69c258404d28452cc1023b1d 24.03.2026 10:24:16 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e707]:
- cell "69c258404d28452cc1023b1d" [ref=f4e708]
- cell "24.03.2026 10:24:16" [ref=f4e709]
- cell "Produkttypen" [ref=f4e710]
- cell "admin@shop.de" [ref=f4e711]:
- link "admin@shop.de" [ref=f4e712] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e713]:
- generic [ref=f4e714]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e715]
- cell "CMS Site saved" [ref=f4e716]:
- generic [ref=f4e717]: CMS Site saved
- cell [ref=f4e718]
- row "69c257af4d28452cc1023b1c 24.03.2026 10:21:51 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e719]:
- cell "69c257af4d28452cc1023b1c" [ref=f4e720]
- cell "24.03.2026 10:21:51" [ref=f4e721]
- cell "Produkttypen" [ref=f4e722]
- cell "admin@shop.de" [ref=f4e723]:
- link "admin@shop.de" [ref=f4e724] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e725]:
- generic [ref=f4e726]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e727]
- cell "CMS Site saved" [ref=f4e728]:
- generic [ref=f4e729]: CMS Site saved
- cell [ref=f4e730]
- row "69c2576b4d28452cc1023b1b 24.03.2026 10:20:43 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e731]:
- cell "69c2576b4d28452cc1023b1b" [ref=f4e732]
- cell "24.03.2026 10:20:43" [ref=f4e733]
- cell "Produkttypen" [ref=f4e734]
- cell "admin@shop.de" [ref=f4e735]:
- link "admin@shop.de" [ref=f4e736] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e737]:
- generic [ref=f4e738]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e739]
- cell "CMS Site saved" [ref=f4e740]:
- generic [ref=f4e741]: CMS Site saved
- cell [ref=f4e742]
- row "69c257504d28452cc1023b1a 24.03.2026 10:20:16 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e743]:
- cell "69c257504d28452cc1023b1a" [ref=f4e744]
- cell "24.03.2026 10:20:16" [ref=f4e745]
- cell "Produkttypen" [ref=f4e746]
- cell "admin@shop.de" [ref=f4e747]:
- link "admin@shop.de" [ref=f4e748] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e749]:
- generic [ref=f4e750]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e751]
- cell "CMS Site saved" [ref=f4e752]:
- generic [ref=f4e753]: CMS Site saved
- cell [ref=f4e754]
- row "69c25722c0bf9bd15a06020a 24.03.2026 10:19:30 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e755]:
- cell "69c25722c0bf9bd15a06020a" [ref=f4e756]
- cell "24.03.2026 10:19:30" [ref=f4e757]
- cell "Produkttypen" [ref=f4e758]
- cell "admin@shop.de" [ref=f4e759]:
- link "admin@shop.de" [ref=f4e760] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e761]:
- generic [ref=f4e762]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e763]
- cell "CMS Site saved" [ref=f4e764]:
- generic [ref=f4e765]: CMS Site saved
- cell [ref=f4e766]
- row "69c25611c0bf9bd15a060209 24.03.2026 10:14:57 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e767]:
- cell "69c25611c0bf9bd15a060209" [ref=f4e768]
- cell "24.03.2026 10:14:57" [ref=f4e769]
- cell "Produkttypen" [ref=f4e770]
- cell "admin@shop.de" [ref=f4e771]:
- link "admin@shop.de" [ref=f4e772] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e773]:
- generic [ref=f4e774]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e775]
- cell "CMS Site saved" [ref=f4e776]:
- generic [ref=f4e777]: CMS Site saved
- cell [ref=f4e778]
- row "69c254674d28452cc1023b19 24.03.2026 10:07:51 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e779]:
- cell "69c254674d28452cc1023b19" [ref=f4e780]
- cell "24.03.2026 10:07:51" [ref=f4e781]
- cell "Produkttypen" [ref=f4e782]
- cell "admin@shop.de" [ref=f4e783]:
- link "admin@shop.de" [ref=f4e784] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e785]:
- generic [ref=f4e786]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e787]
- cell "CMS Site saved" [ref=f4e788]:
- generic [ref=f4e789]: CMS Site saved
- cell [ref=f4e790]
- row "69c19cda4d28452cc1023b18 23.03.2026 21:04:42 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e791]:
- cell "69c19cda4d28452cc1023b18" [ref=f4e792]
- cell "23.03.2026 21:04:42" [ref=f4e793]
- cell "Produkttypen" [ref=f4e794]
- cell "admin@shop.de" [ref=f4e795]:
- link "admin@shop.de" [ref=f4e796] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e797]:
- generic [ref=f4e798]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e799]
- cell "CMS Site saved" [ref=f4e800]:
- generic [ref=f4e801]: CMS Site saved
- cell [ref=f4e802]
- row "69c1990a4d28452cc1023b16 23.03.2026 20:48:26 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e803]:
- cell "69c1990a4d28452cc1023b16" [ref=f4e804]
- cell "23.03.2026 20:48:26" [ref=f4e805]
- cell "Produkttypen" [ref=f4e806]
- cell "admin@shop.de" [ref=f4e807]:
- link "admin@shop.de" [ref=f4e808] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e809]:
- generic [ref=f4e810]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e811]
- cell "CMS Site saved" [ref=f4e812]:
- generic [ref=f4e813]: CMS Site saved
- cell [ref=f4e814]
- row "69c198bcc0bf9bd15a060208 23.03.2026 20:47:08 Produkttypen admin@shop.de PSC\\Shop\\CmsBundle\\PSCShopCmsBundle yxcyc CMS Site saved" [ref=f4e815]:
- cell "69c198bcc0bf9bd15a060208" [ref=f4e816]
- cell "23.03.2026 20:47:08" [ref=f4e817]
- cell "Produkttypen" [ref=f4e818]
- cell "admin@shop.de" [ref=f4e819]:
- link "admin@shop.de" [ref=f4e820] [cursor=pointer]:
- /url: mailto:admin@shop.de
- cell "PSC\\Shop\\CmsBundle\\PSCShopCmsBundle" [ref=f4e821]:
- generic [ref=f4e822]: PSC\Shop\CmsBundle\PSCShopCmsBundle
- cell "yxcyc" [ref=f4e823]
- cell "CMS Site saved" [ref=f4e824]:
- generic [ref=f4e825]: CMS Site saved
- cell [ref=f4e826]
- generic [ref=f4e829]:
- generic [ref=f4e830]: "1"
- link "2" [ref=f4e831] [cursor=pointer]:
- /url: /apps/backend/system/settings/log/index?page=2
- link "3" [ref=f4e832] [cursor=pointer]:
- /url: /apps/backend/system/settings/log/index?page=3
- link "4" [ref=f4e833] [cursor=pointer]:
- /url: /apps/backend/system/settings/log/index?page=4
- link "5" [ref=f4e834] [cursor=pointer]:
- /url: /apps/backend/system/settings/log/index?page=5
- link ">" [ref=f4e835] [cursor=pointer]:
- /url: /apps/backend/system/settings/log/index?page=2
- link ">>" [ref=f4e836] [cursor=pointer]:
- /url: /apps/backend/system/settings/log/index?page=14
- region "Symfony Web Debug Toolbar" [ref=f4e837]:
- generic [ref=f4e840]:
- link "Symfony Loading…" [ref=f4e842] [cursor=pointer]:
- /url: http://type-dev-tp.local/apps/_profiler/da91d2?panel=request
- generic [ref=f4e843]:
- img "Symfony" [ref=f4e844]
- generic [ref=f4e846]: Loading…
- button [expanded] [ref=f4e847] [cursor=pointer]:
- generic "Close Toolbar" [ref=f4e848]:
- img [ref=f4e849]

View File

@ -476,7 +476,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
* datetime?: array{
* default_format?: scalar|Param|null, // Default: "Y-m-d\\TH:i:sP"
* default_deserialization_formats?: list<scalar|Param|null>,
* default_timezone?: scalar|Param|null, // Default: "Europe/Berlin"
* default_timezone?: scalar|Param|null, // Default: "UTC"
* cdata?: scalar|Param|null, // Default: true
* },
* array_collection?: array{
@ -576,7 +576,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
* datetime?: array{
* default_format?: scalar|Param|null, // Default: "Y-m-d\\TH:i:sP"
* default_deserialization_formats?: list<scalar|Param|null>,
* default_timezone?: scalar|Param|null, // Default: "Europe/Berlin"
* default_timezone?: scalar|Param|null, // Default: "UTC"
* cdata?: scalar|Param|null, // Default: true
* },
* array_collection?: array{

View File

@ -0,0 +1,55 @@
<?php
namespace PSC\Backend\DashboardBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;
use Symfony\Contracts\Cache\CacheInterface;
use Symfony\Contracts\Cache\ItemInterface;
use Symfony\Contracts\HttpClient\HttpClientInterface;
/**
* Server-seitiger Proxy für den PSC-Kunden-Newsfeed.
* Der Feed liefert keinen CORS-Header, daher wird er hier serverseitig geholt
* und dem Dashboard als gleicher-Origin-JSON bereitgestellt. Fehler/Timeouts
* dürfen das Backend nicht beeinträchtigen -> es kommt immer eine gültige Antwort.
*/
class NewsController extends AbstractController
{
private const FEED_URL = 'https://customerportal.printshopcreator.de/manual/newsfeed.jason';
public function __construct(
private readonly HttpClientInterface $httpClient,
private readonly CacheInterface $cache,
) {}
#[Route(path: '/dashboard/news', name: 'psc_backend_dashboard_news', methods: ['GET'])]
#[IsGranted('ROLE_USER')]
public function news(): JsonResponse
{
try {
$data = $this->cache->get('psc_dashboard_newsfeed', function (ItemInterface $item) {
$item->expiresAfter(1800); // 30 Minuten cachen
$response = $this->httpClient->request('GET', self::FEED_URL, [
'timeout' => 4,
'max_duration' => 5,
]);
if ($response->getStatusCode() !== 200) {
throw new \RuntimeException('newsfeed status ' . $response->getStatusCode());
}
$json = $response->toArray(false);
return ['news' => array_slice($json['news'] ?? [], 0, 5)];
});
return $this->json($data);
} catch (\Throwable $e) {
return $this->json(['news' => [], 'error' => true]);
}
}
}

View File

@ -9,11 +9,36 @@
<div class="grid grid-cols-1 lg:grid-cols-2 filament-widgets-container gap-4 lg:gap-8 mb-6">
{% if is_granted('ROLE_ADMIN') %}
<div class="space-y-4 lg:space-y-8">
{# PSC Kunden News (serverseitig proxied, robust bei Nichterreichbarkeit) #}
<div class="rounded-sm border border bg-white px-5 py-4 shadow-lg dark:border-strokedark dark:bg-boxdark"
x-data="{ news: [], loading: true, error: false, async load() { try { const r = await fetch('{{ path('psc_backend_dashboard_news') }}', { headers: { 'Accept': 'application/json' } }); if (!r.ok) throw 0; const d = await r.json(); this.news = d.news || []; this.error = !!d.error; } catch (e) { this.error = true; } finally { this.loading = false; } } }"
x-init="load()">
<div class="px-2 pt-1 pb-2">
<h2 class="text-lg font-medium tracking-tight filament-card-heading mb-2 flex items-center gap-2">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 text-psc-500"><path stroke-linecap="round" stroke-linejoin="round" d="M12 7.5h1.5m-1.5 3h1.5m-7.5 3h7.5m-7.5 3h7.5m3-9h3.375c.621 0 1.125.504 1.125 1.125V18a2.25 2.25 0 0 1-2.25 2.25M16.5 7.5V18a2.25 2.25 0 0 0 2.25 2.25M16.5 7.5V4.875c0-.621-.504-1.125-1.125-1.125H4.125C3.504 3.75 3 4.254 3 4.875V18a2.25 2.25 0 0 0 2.25 2.25h13.5M6 7.5h3v3H6v-3Z" /></svg>
Aktuelle PSC Kunden News
</h2>
<div aria-hidden="true" class="filament-hr border-t dark:border-gray-700"></div>
</div>
<div class="px-2 py-1 text-sm">
<template x-if="loading"><p class="py-2 text-gray-400">Lädt…</p></template>
<template x-if="!loading && (error || news.length === 0)"><p class="py-2 text-gray-400">Momentan keine News verfügbar.</p></template>
<ul x-show="!loading && !error && news.length > 0" class="divide-y dark:divide-gray-700">
<template x-for="item in news" :key="item.id">
<li class="flex items-center justify-between gap-3 py-2">
<a :href="item.link" target="_blank" rel="noopener" class="text-psc-500 font-medium hover:underline" x-text="item.titel"></a>
<span class="text-xs text-gray-400 whitespace-nowrap" x-text="item.datum"></span>
</li>
</template>
</ul>
</div>
</div>
<div class="rounded-sm border border bg-white px-7.5 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark">
<div class="p-2 space-y-2">
<div class="flex items-center justify-between gap-8 px-4 py-2 mb-2">
<h2 class="text-xl font-medium tracking-tight filament-card-heading">
Info
Aktuell ausgewählter Shop
</h2>
</div>
<div aria-hidden="true" class="filament-hr border-t dark:border-gray-700"></div>
@ -25,38 +50,41 @@
<tr><td class="px-4 py-3">{{ 'psc_backend_dashboard.Layout'|trans }}:</td><td class="px-4 py-3">{{ shop.layout }}</td></tr>
<tr><td class="px-4 py-3">{{ 'psc_backend_dashboard.UID'|trans }}:</td><td class="px-4 py-3">{{ shop.uid }}</td></tr>
<tr><td class="px-4 py-3">{{ 'psc_backend_dashboard.UUID'|trans }}:</td><td class="px-4 py-3">{{ shop.uuid }}</td></tr>
<tr>
<td class="px-4 py-3">Version:</td>
<td class="px-4 py-3">
{{ currentVersion }}
{% if updateAvailable %}
<span class="ml-2 bg-yellow-500 text-yellow-800 text-xs font-medium px-2.5 py-0.5 rounded">Update verfügbar: {{ latestVersion }}</span>
{% elseif latestVersion %}
<span class="ml-2 bg-green-100 text-green-800 text-xs font-medium px-2.5 py-0.5 rounded">Aktuell</span>
{% endif %}
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="space-y-4 lg:space-y-8">
{# Status (vormals Warnhinweise) - Einträge verlinken auf die jeweilige BO-Seite #}
<div class="rounded-sm border border bg-white px-5 py-4 shadow-lg dark:border-strokedark dark:bg-boxdark">
<div class="px-2 pt-1 pb-2">
<h2 class="text-lg font-medium tracking-tight filament-card-heading mb-2">
Warnhinweise
Status
</h2>
<div aria-hidden="true" class="filament-hr border-t dark:border-gray-700"></div>
</div>
<table class="w-full text-start divide-y table-auto text-sm">
<tbody>
<tr><td class="px-4 py-2">Aktionen:</td><td class="px-4 py-2"><p>{% if queueErrorCount > 0 %}<span class="bg-red-100 text-red-800 text-xs font-medium mr-2 px-2.5 py-0.5 rounded">{{ queueErrorCount }}</span>{% else %}<span class="bg-green-100 text-green-800 text-xs font-medium mr-2 px-2.5 py-0.5 rounded">Alles Ok</span>{% endif %}</p></td></tr>
<tr><td class="px-4 py-2">Mailserver:</td><td class="px-4 py-2"><p>{% if not instance.isSmtpOwn %}<span class="bg-red-100 text-red-800 text-xs font-medium mr-2 px-2.5 py-0.5 rounded">Kein eigener definiert</span>{% else %}{% if instance.smtpHost == '' or instance.smtpPort == '' or instance.smtpUsername == '' or instance.smtpPassword == '' %}<span class="bg-yellow-500 text-yellow-800 text-xs font-medium mr-2 px-2.5 py-0.5 rounded">Smtp Einstellungen überprüfen</span>{% else %}<span class="bg-green-100 text-green-800 text-xs font-medium mr-2 px-2.5 py-0.5 rounded">Alles Ok</span>{% endif %}{% endif %}</p></td></tr>
<tr><td class="px-4 py-2"><a href="{{ path('psc_shop_queue_backend_list_index') }}" class="text-psc-500 hover:underline">Aktionen</a>:</td><td class="px-4 py-2"><a href="{{ path('psc_shop_queue_backend_list_index') }}">{% if queueErrorCount > 0 %}<span class="bg-red-100 text-red-800 text-xs font-medium mr-2 px-2.5 py-0.5 rounded">{{ queueErrorCount }}</span>{% else %}<span class="bg-green-100 text-green-800 text-xs font-medium mr-2 px-2.5 py-0.5 rounded">Alles Ok</span>{% endif %}</a></td></tr>
<tr><td class="px-4 py-2"><a href="{{ path('psc_backend_system_settings_index') }}" class="text-psc-500 hover:underline">Mailserver</a>:</td><td class="px-4 py-2"><a href="{{ path('psc_backend_system_settings_index') }}">{% if not instance.isSmtpOwn %}<span class="bg-red-100 text-red-800 text-xs font-medium mr-2 px-2.5 py-0.5 rounded">Kein eigener definiert</span>{% else %}{% if instance.smtpHost == '' or instance.smtpPort == '' or instance.smtpUsername == '' or instance.smtpPassword == '' %}<span class="bg-yellow-500 text-yellow-800 text-xs font-medium mr-2 px-2.5 py-0.5 rounded">Smtp Einstellungen überprüfen</span>{% else %}<span class="bg-green-100 text-green-800 text-xs font-medium mr-2 px-2.5 py-0.5 rounded">Alles Ok</span>{% endif %}{% endif %}</a></td></tr>
<tr><td class="px-4 py-2">{% if is_granted('ROLE_ADMIN') %}<a href="{{ path('psc_system_version_backend_changelog') }}" class="text-psc-500 hover:underline">Version</a>{% else %}Version{% endif %}:</td><td class="px-4 py-2">
{% if is_granted('ROLE_ADMIN') %}
<a href="{{ path('psc_system_version_backend_changelog') }}" class="text-xs text-gray-400 hover:text-psc-500 transition-colors">v{{ currentVersion }}</a>
{% else %}
<span class="text-xs text-gray-400">v{{ currentVersion }}</span>
{% endif %}
{% if updateAvailable %}
<span class="ml-2 bg-yellow-500 text-yellow-800 text-xs font-medium px-2.5 py-0.5 rounded">Update verfügbar: {{ latestVersion }}</span>
{% elseif latestVersion %}
<span class="ml-2 bg-green-100 text-green-800 text-xs font-medium px-2.5 py-0.5 rounded">Aktuell</span>
{% endif %}
</td></tr>
</tbody>
</table>
</div>
</div>
<div class="space-y-4 lg:space-y-8">
{% if newerReleases is not empty %}
<div class="rounded-sm border border bg-white px-5 py-4 shadow-lg dark:border-strokedark dark:bg-boxdark">
<div class="px-2 pt-1 pb-2">

View File

@ -107,7 +107,13 @@
<div class="body">
<div class="row">
<div class="col-md-12">
{{ form_widget(form.password) }}
<div class="relative" data-pw-wrap>
{{ form_widget(form.password, {'attr': {'style': 'padding-right:2.5rem'}}) }}
<button type="button" data-pw-toggle class="absolute inset-y-0 right-0 flex items-center pr-3 text-gray-400 hover:text-gray-600" title="Passwort anzeigen/verbergen">
<svg data-pw-eye xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5"><path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z" /><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" /></svg>
<svg data-pw-eye xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 hidden"><path stroke-linecap="round" stroke-linejoin="round" d="M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88" /></svg>
</button>
</div>
</div>
{{ form_errors(form.password) }}
</div>

View File

@ -92,7 +92,13 @@
<div class="body">
<div class="row">
<div class="col-md-12">
{{ form_widget(form.password) }}
<div class="relative" data-pw-wrap>
{{ form_widget(form.password, {'attr': {'style': 'padding-right:2.5rem'}}) }}
<button type="button" data-pw-toggle class="absolute inset-y-0 right-0 flex items-center pr-3 text-gray-400 hover:text-gray-600" title="Passwort anzeigen/verbergen">
<svg data-pw-eye xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5"><path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z" /><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" /></svg>
<svg data-pw-eye xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 hidden"><path stroke-linecap="round" stroke-linejoin="round" d="M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88" /></svg>
</button>
</div>
</div>
{{ form_errors(form.password) }}
</div>

View File

@ -33,6 +33,31 @@ class VoucherRepository extends ServiceEntityRepository
parent::__construct($registry, Voucher::class);
}
/**
* Liefert die aktuell gültigen Gutscheine eines Shops (optional per Term gefiltert).
* $shop ist die Shop-Entity (aus Shop::getShopByUid()).
*/
public function getAllByShopAndTerm($shop, string $term = ''): array
{
$qb = $this->createQueryBuilder('v')
->andWhere('v.shop = :shop_id')
->andWhere('v.code IS NOT NULL')
->andWhere("v.code != ''")
->andWhere('v.fromDate <= :now')
->andWhere('v.toDate >= :now')
->setParameter('shop_id', $shop->getUid())
->setParameter('now', new \DateTime('today'))
->orderBy('v.title', 'ASC')
->setMaxResults(50);
if ($term !== '') {
$qb->andWhere('(v.code LIKE :term OR v.title LIKE :term)')
->setParameter('term', '%' . $term . '%');
}
return $qb->getQuery()->getResult();
}
public function findByCodeForActDate(string $code, Shop $shop)
{
$result = $this->getEntityManager()

View File

@ -8,6 +8,9 @@ class Discount
{
private Price $price;
#[\OpenApi\Attributes\Property(type: 'string')]
private string $code = '';
public function __construct()
{
$this->price = new Price();
@ -21,4 +24,14 @@ class Discount
{
return $this->price;
}
public function setCode(string $code): void
{
$this->code = $code;
}
public function getCode(): string
{
return $this->code;
}
}

View File

@ -124,6 +124,21 @@
<dd class="text-gray-800">{{ order.gutscheinAbzug }} ({{ order.gutschein }})</dd>
</div>
{% endif %}
{% if orderModel.vouchers is not empty %}
<div class="flex gap-2">
<dt class="w-2/5 text-gray-500 shrink-0">{{'coupon'|trans}}:</dt>
<dd class="text-gray-800 space-y-0.5">
{% for voucher in orderModel.vouchers %}
<div>
{{ voucher.code }}
{%- if voucher.percentValue > 0 %} ({{ voucher.percentValue }} %)
{%- elseif voucher.valueInCent > 0 %} ({{ (voucher.valueInCent / 100)|number_format(2, ',', '.') }} €)
{%- endif %}
</div>
{% endfor %}
</dd>
</div>
{% endif %}
<div class="border-t border-gray-100 pt-2 mt-2 space-y-2">
<div class="flex gap-2">
<dt class="w-2/5 text-gray-500 shrink-0">{{'shippingCost'|trans}}:</dt>
@ -141,9 +156,15 @@
<dt class="w-2/5 text-gray-500 shrink-0">{{'vat'|trans}}:</dt>
<dd class="text-gray-800">{{ order.steuer|number_format(2, ',', '.') }}€</dd>
</div>
{% if orderModel.discounts is not empty %}
<div class="flex gap-2">
<dt class="w-2/5 text-gray-500 shrink-0">Rabatt (Gutschein):</dt>
<dd class="text-[#f26c21]"> {{ ((orderModel.gross - orderModel.grossWithDiscount) / 100)|number_format(2, ',', '.') }}€</dd>
</div>
{% endif %}
<div class="flex gap-2">
<dt class="w-2/5 text-gray-500 shrink-0 font-semibold">{{'brutto'|trans}}:</dt>
<dd class="text-gray-800 font-semibold">{{ order.brutto|number_format(2, ',', '.') }}€</dd>
<dd class="text-gray-800 font-semibold">{{ ((orderModel.discounts is not empty ? orderModel.grossWithDiscount : orderModel.gross) / 100)|number_format(2, ',', '.') }}€</dd>
</div>
</div>
</dl>

View File

@ -154,6 +154,9 @@
</svg>
Download
</a>
{% for customListButton in customListButtons %}
{{ customListButton.render(orderObj)|raw }}
{% endfor %}
{# Details - BLAU #}
<a href="{{ path("psc_shop_order_backend_detail_show", {uuid: order.uuid}) }}" title="Details anzeigen" class="inline-flex items-center justify-center gap-1 px-2.5 py-1.5 rounded-md text-xs font-medium text-white bg-blue-600 hover:bg-blue-700 transition-colors shadow-sm">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-4 h-4">
@ -162,9 +165,6 @@
</svg>
Details
</a>
{% for customListButton in customListButtons %}
{{ customListButton.render(orderObj)|raw }}
{% endfor %}
</div>
</div>

View File

@ -33,7 +33,8 @@ class Position extends Base
\PSC\Shop\ProductBundle\Service\Product $productService,
ProductType $productTypeRegistry,
\PSC\Shop\ProductBundle\Hydrate\Product $productHydrate,
#[AutowireIterator('product.upload.option')] iterable $uploadOptionTypes,
#[AutowireIterator('product.upload.option')]
iterable $uploadOptionTypes,
) {
$this->productService = $productService;
$this->productTypeRegistry = $productTypeRegistry;
@ -170,6 +171,7 @@ class Position extends Base
/**
* @var \PSC\Shop\EntityBundle\Entity\Upload $up
*/
if ($pos->getUploads()) {
foreach ($pos->getUploads() as $up) {
$upload = new Upload();
$upload->setFileName((string) $up->getName());
@ -179,6 +181,7 @@ class Position extends Base
$upload->setPath((string) $up->getPath());
$position->addUpload($upload);
}
}
/**
* DOC

View File

@ -6,9 +6,9 @@ use Doctrine\ORM\EntityManagerInterface;
use Nelmio\ApiDocBundle\Annotation\Model;
use Nelmio\ApiDocBundle\Annotation\Security;
use OpenApi\Attributes as OA;
use OpenApi\Attributes\JsonContent;
use OpenApi\Attributes\Response;
use OpenApi\Attributes\Tag;
use OpenApi\Attributes\JsonContent;
use PSC\Component\ApiBundle\Dto\Error\NotFound;
use PSC\Shop\EntityBundle\Entity\Paper;
use PSC\Shop\EntityBundle\Entity\Product;
@ -18,70 +18,55 @@ use PSC\Shop\ProductBundle\Hydrate\Product as PSCProduct;
use PSC\System\SettingsBundle\Model\Paper as PSCPaper;
use PSC\System\SettingsBundle\Model\Papercontainer;
use PSC\System\SettingsBundle\Service\Shop;
use Symfony\Component\Security\Http\Attribute\IsGranted;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;
class GetAllByTerm extends AbstractController
{
private EntityManagerInterface $entityManager;
private PSCProduct $productHydrate;
public function __construct(EntityManagerInterface $entityManager, PSCProduct $productHydrate)
{
$this->entityManager = $entityManager;
$this->productHydrate = $productHydrate;
}
public function __construct(
private EntityManagerInterface $entityManager,
private PSCProduct $productHydrate,
private Shop $shopService,
) {}
/**
* get product
*
#[Response(
* #[Response(
* response: 200,
* description: 'get papercontainer',
* content: new JsonContent(ref: new Model(type: PSC\Shop\ProductBundle\Dto\Product\GetAllByProductGroup\Output::class))
* )]
#[Tag(name: 'Product')]
* #[Tag(name: 'Product')]
*/
#[Route(path: '/product/getallbyterm/{shop_uuid}/{term}', methods: ['GET'])]
public function getAll(string $term, string $shop_uuid): JsonResponse
{
$temp = [];
$shop = $this->shopService->getShopByUid($shop_uuid);
$products = $this->entityManager
->getRepository('PSC\Shop\EntityBundle\Entity\Product')
->createQueryBuilder('product')
->leftJoin('product.shop', 'shop')
->andWhere("
->andWhere(
"
shop.uid = :shop_id and
(product.uid LIKE '%" .
$term .
"%' OR
product.title LIKE '%" .
$term .
"%' OR
product.calcXml LIKE '%" .
$term .
"%' OR
product.textFormat LIKE '%" .
$term .
"%' OR
product.description LIKE '%" .
$term .
"%' OR
product.nrIntern LIKE '%" .
$term .
"%' OR
product.nrExtern LIKE '%" .
$term .
"%' OR
product.textArt LIKE '%" .
$term .
"%')
")
->setParameter('shop_id', $shop_uuid)
(product.uid LIKE :term OR
product.title LIKE :term OR
product.calcXml LIKE :term OR
product.textFormat LIKE :term OR
product.description LIKE :term OR
product.nrIntern LIKE :term OR
product.nrExtern LIKE :term OR
product.textArt LIKE :term)
",
)
->setParameter('shop_id', $shop->getId())
->setParameter('term', '%' . $term . '%')
->getQuery()
->execute();

View File

@ -14,6 +14,7 @@ class Center implements IUploadOptionTransformer
public function fromDb(Position $position, Orderpos $posEntity, PosDoc $posDoc): void
{
$center = new PSCCenter();
if ($posEntity->getUploads()) {
foreach ($posEntity->getUploads() as $upload) {
$up = new Upload();
$up->setFileName($upload->getName());
@ -22,6 +23,7 @@ class Center implements IUploadOptionTransformer
$up->setPath($upload->getPath());
$center->addUpload($up);
}
}
$position->setUploadTypeObject($center);
}

View File

@ -0,0 +1,46 @@
<?php
namespace PSC\Shop\VoucherBundle\Api\Voucher;
use Doctrine\ORM\EntityManagerInterface;
use PSC\Shop\EntityBundle\Entity\Voucher;
use PSC\System\SettingsBundle\Service\Shop;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Attribute\Route;
class GetAllByShop extends AbstractController
{
public function __construct(
private EntityManagerInterface $entityManager,
private Shop $shopService,
) {}
#[Route(path: '/voucher/getallbyshop/{shopUuid}', methods: ['GET'])]
public function getAll(string $shopUuid, Request $request): JsonResponse
{
$shop = $this->shopService->getShopByUid($shopUuid);
if (!$shop) {
return $this->json(['data' => [], 'count' => 0]);
}
$term = trim((string) $request->query->get('term', ''));
$vouchers = $this->entityManager
->getRepository(Voucher::class)
->getAllByShopAndTerm($shop, $term);
$data = [];
foreach ($vouchers as $voucher) {
$data[] = [
'code' => $voucher->getCode(),
'title' => $voucher->getTitle(),
'percent' => (bool) $voucher->isPercent(),
'value' => (float) $voucher->getValue(),
];
}
return $this->json(['data' => $data, 'count' => count($data)]);
}
}

View File

@ -2,3 +2,8 @@ psc_shop_voucher_backend:
resource: "@PSCShopVoucherBundle/Controller/Backend"
type: attribute
prefix: /backend/voucher
psc_shop_voucher_api:
resource: "@PSCShopVoucherBundle/Api"
type: attribute
prefix: /api

View File

@ -28,6 +28,7 @@ class Calc
}
if ($voucher->getValueInCent() > 0) {
$discount = new Discount();
$discount->setCode($voucher->getCode());
$discount->getPrice()->setGross($voucher->getValueInCent());
$this->calcMwert($discount->getPrice(), $largest);
$order->addDiscount($discount);
@ -37,6 +38,7 @@ class Calc
}
if ($voucher->getPercentValue() > 0) {
$discount = new Discount();
$discount->setCode($voucher->getCode());
$discount->getPrice()->setGross(round(($order->getGross() - $gross) / 100 * $voucher->getPercentValue(), 0));
$this->calcMwert($discount->getPrice(), $largest);
$order->addDiscount($discount);

View File

@ -0,0 +1,58 @@
<?php
namespace PSC\System\SettingsBundle\EventSubscriber;
use PSC\Shop\EntityBundle\Entity\Contact;
use PSC\System\SettingsBundle\Document\LogEntry;
use PSC\System\SettingsBundle\Service\Log;
use PSC\System\SettingsBundle\Service\Shop;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use Symfony\Component\Security\Http\SecurityEvents;
/**
* Schreibt bei jedem interaktiven Backend-Login einen Log-Eintrag.
* Läuft defensiv - ein Fehler beim Loggen darf den Login niemals scheitern lassen.
*/
class LoginLogSubscriber implements EventSubscriberInterface
{
public function __construct(
private readonly Log $logService,
private readonly Shop $shopService,
) {}
public function onInteractiveLogin(InteractiveLoginEvent $event): void
{
try {
$user = $event->getAuthenticationToken()->getUser();
if (!$user instanceof Contact) {
return;
}
$shop = $this->shopService->getSelectedShop();
if (!$shop) {
return;
}
$ip = $event->getRequest()->getClientIp();
$this->logService->createLogEntry(
$shop,
$user,
LogEntry::INFO,
'Login',
(string) $user->getUuid(),
'Backend Login: ' . $user->getUsername() . ($ip ? ' (' . $ip . ')' : ''),
);
} catch (\Throwable $e) {
// bewusst geschluckt - Login darf durch Logging nie fehlschlagen
}
}
public static function getSubscribedEvents(): array
{
return [
SecurityEvents::INTERACTIVE_LOGIN => 'onInteractiveLogin',
];
}
}

View File

@ -96,7 +96,17 @@
<div class="w-full lg:w-6/12 px-4">{{ form_row(form.smtpHost) }}</div>
<div class="w-full lg:w-6/12 px-4">{{ form_row(form.smtpPort) }}</div>
<div class="w-full lg:w-6/12 px-4">{{ form_row(form.smtpUsername) }}</div>
<div class="w-full lg:w-6/12 px-4">{{ form_row(form.smtpPassword) }}</div>
<div class="w-full lg:w-6/12 px-4">
{{ form_label(form.smtpPassword) }}
<div class="relative" data-pw-wrap>
{{ form_widget(form.smtpPassword, {'attr': {'style': 'padding-right:2.5rem'}}) }}
<button type="button" data-pw-toggle class="absolute inset-y-0 right-0 flex items-center pr-3 text-gray-400 hover:text-gray-600" title="Passwort anzeigen/verbergen">
<svg data-pw-eye xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5"><path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z" /><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" /></svg>
<svg data-pw-eye xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 hidden"><path stroke-linecap="round" stroke-linejoin="round" d="M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88" /></svg>
</button>
</div>
{{ form_errors(form.smtpPassword) }}
</div>
</div>
<h6 class="text-sm mt-5 mb-4 font-bold uppercase">Für Systememails</h6>
<div class="flex flex-wrap">
@ -136,12 +146,21 @@
<h6 class="text-sm mt-3 mb-6 font-bold uppercase">sFTP Daten</h6>
<div class="px-4">
{% if display %}
<dl class="text-sm space-y-1">
<dl class="text-sm space-y-1" data-pw-wrap>
<div class="flex gap-2"><dt class="w-32 text-gray-500">Server:</dt><dd class="text-gray-800">{{ host }}</dd></div>
<div class="flex gap-2"><dt class="w-32 text-gray-500">Ip:</dt><dd class="text-gray-800">{{ ip }}</dd></div>
<div class="flex gap-2"><dt class="w-32 text-gray-500">Username:</dt><dd class="text-gray-800">{{ instance.ftpUsername }}</dd></div>
<div class="flex gap-2"><dt class="w-32 text-gray-500">Password:</dt><dd class="text-gray-800">{{ instance.ftpPassword }}</dd></div>
<div class="flex gap-2"><dt class="w-32 text-gray-500">sFTP Link:</dt><dd><a class="text-psc-500 hover:underline break-all" target="_blank" href="sftp://{{ instance.ftpUsername }}:{{ instance.ftpPassword }}@{{ host }}/">sftp://{{ instance.ftpUsername }}:{{ instance.ftpPassword }}@{{ host }}/</a></dd></div>
<div class="flex gap-2 items-center"><dt class="w-32 text-gray-500">Password:</dt>
<dd class="text-gray-800 flex items-center gap-2">
<span data-pw-mask class="font-mono tracking-widest">••••••••••</span>
<span data-pw-mask class="hidden break-all">{{ instance.ftpPassword }}</span>
<button type="button" data-pw-toggle class="text-gray-400 hover:text-gray-600" title="Passwort anzeigen/verbergen">
<svg data-pw-eye xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5"><path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z" /><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" /></svg>
<svg data-pw-eye xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 hidden"><path stroke-linecap="round" stroke-linejoin="round" d="M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88" /></svg>
</button>
</dd>
</div>
<div class="flex gap-2"><dt class="w-32 text-gray-500">sFTP Link:</dt><dd><a class="text-psc-500 hover:underline break-all" target="_blank" href="sftp://{{ instance.ftpUsername }}:{{ instance.ftpPassword }}@{{ host }}/">sftp://{{ instance.ftpUsername }}:<span data-pw-mask>••••••</span><span data-pw-mask class="hidden">{{ instance.ftpPassword }}</span>@{{ host }}/</a></dd></div>
</dl>
{% else %}
<p class="text-gray-500">Keine sFTP-Daten verfügbar.</p>

View File

@ -52,16 +52,13 @@
{% endif %}
<hr/>
<p class="text-left ml-5 text-psc">{{ date("now")|date('d.m.Y H:i:s') }}</p>
<p class="mt-1 ml-5 text-left">
<p class="text-left ml-5 text-psc">
Release {{ versionService.release }} ({{ versionService.datum }})
{% if is_granted('ROLE_ADMIN') %}
<a href="{{ path('psc_system_version_backend_changelog') }}" class="text-xs text-gray-400 hover:text-psc-500 transition-colors">
v{{ versionService.release }} ({{ versionService.datum }})
</a>
{% else %}
<span class="text-xs text-gray-400 hover:text-psc-500 transition-colors">v{{ versionService.release }} ({{ versionService.datum }})</span>
<a href="{{ path('psc_system_version_backend_changelog') }}" class="hover:text-psc-500 transition-colors underline">Changelog</a>
{% endif %}
</p>
<p class="mt-1 ml-5 text-left text-xs text-gray-400">{{ date("now")|date('d.m.Y H:i:s') }}</p>
</nav>
</aside>
<div x-data :class="{'lg:pl-[var(--collapsed-sidebar-width)] rtl:lg:pr-[var(--collapsed-sidebar-width)]': ! $store.sideBar.isOpen,' lg:pl-[var(--sidebar-width)] rtl:lg:pr-[var(--sidebar-width)]': $store.sideBar.isOpen,}" class="flex-col gap-y-6 w-screen flex-1 rtl:lg:pl-0 h-full transition-all" style="display: flex">
@ -172,6 +169,25 @@
});
</script>
{% endif %}
<script>
(function () {
// Passwort ein-/ausblenden: Buttons mit [data-pw-toggle] in einem [data-pw-wrap].
document.addEventListener('click', function (e) {
var btn = e.target.closest('[data-pw-toggle]');
if (!btn) return;
e.preventDefault();
var wrap = btn.closest('[data-pw-wrap]');
if (!wrap) return;
var input = wrap.querySelector('input');
if (input) {
input.type = (input.type === 'password') ? 'text' : 'password';
} else {
wrap.querySelectorAll('[data-pw-mask]').forEach(function (el) { el.classList.toggle('hidden'); });
}
wrap.querySelectorAll('[data-pw-eye]').forEach(function (el) { el.classList.toggle('hidden'); });
});
})();
</script>
</body>
</html>

View File

@ -22,7 +22,7 @@ class OrderListButton
return (
'<a href="'
. $url
. '" target="_blank" title="In Invoice bearbeiten"'
. '" target="_blank" title="Bearbeiten"'
. ' class="inline-flex items-center justify-center gap-1 px-2.5 py-1.5 rounded-md text-xs font-medium text-white bg-orange-500 hover:bg-orange-600 transition-colors shadow-sm">'
. '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-4 h-4">'
. '<path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" />'

View File

@ -4,6 +4,7 @@ import * as React from 'react'
import ReactDOM from 'react-dom/client'
import NiceModal from "@ebay/nice-modal-react"
import BaseComponent from '../modules/base/BaseComponent'
import ToastContainer from '../modules/base/ToastContainer'
import { Route, HashRouter as Router, Routes, useSearchParams } from "react-router-dom"
export class App {
@ -36,6 +37,7 @@ export class App {
<Route path="/" element={<BaseComponent />} />
<Route path="/:uuid" element={<BaseComponent />} />
</Routes>
<ToastContainer />
</NiceModal.Provider>
</Router>
)

View File

@ -0,0 +1,18 @@
import { Subject } from 'rxjs'
export type ToastType = 'success' | 'error' | 'info'
export interface ToastMessage {
id: number
text: string
type: ToastType
}
const subject = new Subject<ToastMessage>()
let counter = 0
export const toastStream = subject.asObservable()
export function showToast(text: string, type: ToastType = 'success') {
subject.next({ id: ++counter, text, type })
}

View File

@ -28,6 +28,8 @@ class Order {
basketField1: String
basketField2: String
vouchers: Array<any> = []
type: Number
shop: Shop = new Shop()
@ -41,6 +43,7 @@ class Order {
this.basketField2 = ""
this.draft = true
this.saved = false
this.vouchers = []
}
addPosition(pos: Pos) {
@ -63,6 +66,7 @@ class Order {
this.saved = true
this.basketField1 = item.basketField1
this.basketField2 = item.basketField2
this.vouchers = item.vouchers ?? []
item.positions.map((e) => {
let pos = new Pos()

View File

@ -12,16 +12,34 @@ export class SpecialProductTypeObject {
}
}
const imageUrl = (img: any): string => {
if (!img) return ''
if (typeof img === 'string') return img
return img.url ?? ''
}
export class Product {
id: Number = 0
uid: Number = 0
title: String = ""
uuid: String = ""
nrIntern: String = ""
nrExtern: String = ""
image: String = ""
specialProductTypeObject: SpecialProductTypeObject = new SpecialProductTypeObject()
parseFromJson(item: any) {
this.id = item.id
this.id = item.uid ?? item.id ?? 0
this.uid = item.uid ?? 0
this.title = item.title
this.uuid = item.uuid
this.nrIntern = item.nrIntern ?? ""
this.nrExtern = item.nrExtern ?? ""
this.image = imageUrl(item.image1)
if (item.specialProductTypeObject) {
this.specialProductTypeObject.parseFromJson(item.specialProductTypeObject)
} else if (item.typ !== undefined) {
this.specialProductTypeObject.typ = item.typ
}
}
}

View File

@ -1,6 +1,28 @@
import { Product } from './product'
export class ProductGroup {
id: Number = 0
label: String = ""
title: String = ""
uuid: String = ""
//options: ProductGroup[] = []
image1: String = ""
image2: String = ""
children: ProductGroup[] = []
products: Product[] = []
parseFromJson(item: any): ProductGroup {
this.id = item.id
this.uuid = item.uuid
this.title = item.title
this.label = item.title
this.image1 = item.image1 ?? ""
this.image2 = item.image2 ?? ""
this.children = (item.children ?? []).map((c: any) => new ProductGroup().parseFromJson(c))
this.products = (item.products ?? []).map((p: any) => {
const prod = new Product()
prod.parseFromJson(p)
return prod
})
return this
}
}

View File

@ -17,6 +17,7 @@ import CalcComponent from '../calc/CalcComponent'
import DraftComponent from '../draft/DraftComponent'
import TypeSelectComponent from '../type/TypeSelectComponent'
import ShopSelectComponent from '../shop/ShopSelectComponent'
import VoucherComponent from '../voucher/VoucherComponent'
import Box from './Box'
const TYPE_LABELS: Record<number, string> = {
@ -118,6 +119,7 @@ const BaseComponent = () => {
<span className="rounded-sm border border-psc-border bg-slate-50 px-3 py-1 text-xs font-medium text-psc-muted">
{shop.name || 'Shop'}
</span>
{!order.saved && (
<button
type="button"
onClick={() => setIsSetup(true)}
@ -125,16 +127,26 @@ const BaseComponent = () => {
>
Typ / Shop ändern
</button>
)}
</div>
)}
</div>
</div>
{!isSetup && (
<div className="flex items-center">
<ButtonComponent loadOrder={loadOrder} />
<div className="flex items-center gap-3">
{!isSetup && <ButtonComponent loadOrder={loadOrder} />}
<button
type="button"
onClick={() => window.close()}
title="Abbrechen / Schließen"
aria-label="Abbrechen"
className="grid h-10 w-10 shrink-0 place-items-center rounded-sm border border-psc-border bg-white text-psc-muted transition hover:bg-slate-50 hover:text-red-600"
>
<svg className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth={2} viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="M6 18 18 6M6 6l12 12" />
</svg>
</button>
</div>
)}
</div>
</header>
@ -143,9 +155,7 @@ const BaseComponent = () => {
<section className="mx-auto mt-10 max-w-4xl">
<div className="rounded-sm border border-psc-border bg-white px-7.5 py-6 shadow-lg">
<div className="mb-7">
<p className="text-sm font-semibold uppercase tracking-[.16em] text-psc-orange">Startauswahl</p>
<h3 className="mt-2 text-2xl font-semibold">Wofür soll der Auftrag erstellt werden?</h3>
<p className="mt-2 text-psc-muted">Diese Angaben stehen anschließend kompakt im Kopfbereich.</p>
<h3 className="text-2xl font-semibold">Wählen Sie aus, was erstellt werden soll</h3>
</div>
<div className="grid gap-5">
@ -197,6 +207,7 @@ const BaseComponent = () => {
<div className="grid gap-3">
<StatusRow ok={setupReady} label="Typ & Shop gewählt" />
<StatusRow ok={!!order.contact?.username} label="Kunde ausgewählt" />
<StatusRow ok={(order.positions?.length ?? 0) > 0} label="Positionen" />
<StatusRow ok={!!order.invoiceAddress?.uuid} label="Rechnungsadresse" />
<StatusRow ok={!!order.deliveryAddress?.uuid} label="Lieferadresse" />
<StatusRow ok={!!order.payment?.title} label="Zahlart" />
@ -207,6 +218,8 @@ const BaseComponent = () => {
<CalcComponent />
</Box>
<VoucherComponent order={order} shop={shop} />
</aside>
</div>
)}

View File

@ -0,0 +1,44 @@
import React, { useEffect, useState } from 'react'
import { toastStream, ToastMessage } from '../../lib/toast'
const ToastContainer = () => {
const [toasts, setToasts] = useState<ToastMessage[]>([])
useEffect(() => {
const sub = toastStream.subscribe((t) => {
setToasts((prev) => [...prev, t])
setTimeout(() => {
setToasts((prev) => prev.filter((x) => x.id !== t.id))
}, 3500)
})
return () => sub.unsubscribe()
}, [])
return (
<div className="pointer-events-none fixed right-4 top-4 z-[100] flex w-80 max-w-[calc(100vw-2rem)] flex-col gap-2">
{toasts.map((t) => (
<div
key={t.id}
className={`animate-fade-in pointer-events-auto flex items-center gap-3 rounded-sm border px-4 py-3 shadow-lg ${
t.type === 'error'
? 'border-red-200 bg-red-50 text-red-700'
: 'border-green-200 bg-green-50 text-green-700'
}`}
>
{t.type === 'error' ? (
<svg className="h-5 w-5 shrink-0" fill="none" stroke="currentColor" strokeWidth={2} viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z" />
</svg>
) : (
<svg className="h-5 w-5 shrink-0" fill="none" stroke="currentColor" strokeWidth={2} viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
</svg>
)}
<span className="text-sm font-medium">{t.text}</span>
</div>
))}
</div>
)
}
export default ToastContainer

View File

@ -5,6 +5,7 @@ import { Component } from 'react'
import { debounceTime } from "rxjs"
import { Order } from "../../model/order"
import Button, { ButtonGroup } from '../base/Button'
import { showToast } from '../../lib/toast'
import React from 'react'
class ButtonComponent extends Component<{ loadOrder }, { disabled: boolean, saving: boolean }> {
@ -29,6 +30,7 @@ class ButtonComponent extends Component<{ loadOrder }, { disabled: boolean, savi
&& order.shop.name != ""
&& order.invoiceAddress.uuid != ""
&& order.type != 0
&& order.positions.length > 0
) {
this.setState({ disabled: false })
}
@ -44,12 +46,16 @@ class ButtonComponent extends Component<{ loadOrder }, { disabled: boolean, savi
e.preventDefault()
this.setState({ saving: true })
try {
let result = await this.orderService.saveOrder(this.orderState.getCurrentOrder().value)
this.props.loadOrder(result['uuid'])
showToast('Auftrag gespeichert')
} catch (err) {
showToast('Speichern fehlgeschlagen', 'error')
} finally {
this.setState({ saving: false })
}
}
render() {
return (

View File

@ -37,24 +37,40 @@ class CalcComponent extends React.Component<{ },MyState> {
}
render() {
const o: any = this.state.order
// Netto/MwSt als Original (vor Rabatt) anzeigen, danach die Rabattzeilen,
// dann der reduzierte Brutto -> die Spalte geht auf: Netto + MwSt Rabatte = Brutto.
const net = o.net
const vat = o.vat
const gross = o.grossWithDiscount ?? o.gross
const discounts = (o.discounts ?? []).filter((d: any) => (d?.price?.gross ?? 0) > 0)
return (
<div className="space-y-3">
<div className="flex items-center justify-between gap-6 text-sm text-psc-muted">
<span>Netto</span>
<span className="font-medium text-psc-text">
<Currency price={this.state.order.net} />
<Currency price={net} />
</span>
</div>
<div className="flex items-center justify-between gap-6 text-sm text-psc-muted">
<span>MwSt.</span>
<span className="font-medium text-psc-text">
<Currency price={this.state.order.vat} />
<Currency price={vat} />
</span>
</div>
{discounts.map((d: any, i: number) => (
<div key={i} className="flex items-center justify-between gap-6 text-sm text-psc-muted">
<span className="truncate">Rabatt{d.code ? ` · ${d.code}` : ' (Gutschein)'}</span>
<span className="whitespace-nowrap font-medium text-psc-orange">
<Currency price={d.price.gross} />
</span>
</div>
))}
<div className="mt-1 flex items-baseline justify-between gap-6 rounded-sm border border-orange-200 bg-orange-50 p-4">
<span className="text-sm font-medium text-psc-text">Brutto</span>
<span className="text-2xl font-medium text-psc-orange">
<Currency price={this.state.order.gross} />
<Currency price={gross} />
</span>
</div>
</div>

View File

@ -1,8 +1,9 @@
import React, { useState } from 'react'
import { AsyncPaginate } from 'react-select-async-paginate'
import React from 'react'
import { useModal } from '@ebay/nice-modal-react'
import { Address } from '../../model/address'
import { Contact } from '../../model/contact'
import AddressService from '../../services/address'
import AddressPickerModal from './AddressPickerModal'
import { useAddressModal } from './useAddressModal'
type AddressCardProps = {
@ -15,49 +16,77 @@ type AddressCardProps = {
onChange: (address: Address, type: number) => void
}
const formatAddress = (a: Address) =>
[a.company, a.firstname, a.lastname, a.street, a.houseNumber, a.zip, a.city]
.filter(Boolean)
.join(' ')
const addressLines = (a: Address): string[] =>
[
a.company as string,
[a.firstname, a.lastname].filter(Boolean).join(' '),
[a.street, a.houseNumber].filter(Boolean).join(' '),
[a.zip, a.city].filter(Boolean).join(' '),
a.country as string,
].filter(Boolean)
const TYPE_LABELS: Record<number, string> = {
1: 'Rechnungsadresse',
2: 'Lieferadresse',
3: 'Absenderadresse',
}
const AddressCard = ({ title, emptyHint, type, contact, shop, value, onChange }: AddressCardProps) => {
const address_service = new AddressService()
const [choosing, setChoosing] = useState(false)
const pickerModal = useModal(AddressPickerModal)
const isSet = !!value?.uuid
const loadOptions = async () => {
const data = await address_service.getContactAddress(contact.uuid, type)
return { options: data, hasMore: false }
// Beim Anlegen zusätzlich als die jeweils anderen Adresstypen anbietbar.
const extraTypes = [1, 2, 3]
.filter((t) => t !== type)
.map((t) => ({ type: t, label: TYPE_LABELS[t] }))
// Legt aus den Formulardaten eine eigene Adresse pro Typ an und setzt den Slot.
const createForType = (formData: any, t: number) => {
const addr = new Address()
addr.parseFromFormData(formData)
addr.type = t
addr.contact.uuid = contact.uuid
address_service.create(addr).then(() => onChange(addr, t))
}
const select = (option: Address) => {
onChange(option, type)
setChoosing(false)
const onAddressAdded = (formData: any, alsoTypes: number[]) => {
;[type, ...alsoTypes].forEach((t) => createForType(formData, t))
}
const persist = (addr: Address, create: boolean) => {
const onAddressEdited = (addr: Address) => {
addr.type = type
addr.contact.uuid = contact.uuid
const req = create ? address_service.create(addr) : address_service.update(addr)
req.then(() => {
onChange(addr, type)
setChoosing(false)
})
address_service.update(addr).then(() => onChange(addr, type))
}
const { showAdd, showEdit } = useAddressModal(
shop,
(addr) => persist(addr, true),
(addr) => persist(addr, false),
)
const { showAdd, showEdit } = useAddressModal(shop, onAddressAdded, onAddressEdited, title, extraTypes)
const openPicker = () => {
pickerModal.show({ contact, type, current: value }).then((res: any) => {
if (res && res.createNew) {
showAdd()
} else if (res && res.uuid) {
onChange(res as Address, type)
}
})
}
return (
<article className="rounded-sm border border-psc-border bg-slate-50 p-4">
<div className="mb-3 flex items-start justify-between gap-3">
<div className="min-w-0">
<h3 className="font-medium text-psc-text">{title}</h3>
<p className="mt-1 text-sm text-psc-muted">{isSet ? formatAddress(value as Address) : emptyHint}</p>
{isSet ? (
<div className="mt-1 text-sm text-psc-muted">
{addressLines(value as Address).map((line, i) => (
<div key={i}>{line}</div>
))}
</div>
) : (
<p className="mt-1 text-sm text-psc-muted">{emptyHint}</p>
)}
</div>
<span
className={`shrink-0 rounded-sm border px-2.5 py-1 text-xs font-medium ${
@ -70,32 +99,8 @@ const AddressCard = ({ title, emptyHint, type, contact, shop, value, onChange }:
</span>
</div>
{choosing ? (
<div>
<AsyncPaginate
defaultOptions
key={contact.uuid + '-' + type}
loadOptions={loadOptions}
getOptionValue={(o: Address) => o.uuid as string}
getOptionLabel={(o: Address) =>
`${o.firstname} ${o.lastname}`.trim() || (o.company as string) || (o.uuid as string)
}
onChange={select}
isSearchable={true}
placeholder="Adresse suchen…"
/>
<div className="mt-2 flex flex-wrap gap-3">
<button type="button" onClick={showAdd} className="text-sm font-medium text-psc-orange hover:underline">
+ Neue Adresse
</button>
<button type="button" onClick={() => setChoosing(false)} className="text-sm font-medium text-psc-muted hover:underline">
Abbrechen
</button>
</div>
</div>
) : (
<div className="flex flex-wrap gap-4">
<button type="button" onClick={() => setChoosing(true)} className="text-left text-sm font-medium text-psc-orange hover:underline">
<button type="button" onClick={openPicker} className="text-left text-sm font-medium text-psc-orange hover:underline">
{isSet ? 'Adresse ändern' : 'Adresse auswählen'}
</button>
{isSet && (
@ -104,7 +109,6 @@ const AddressCard = ({ title, emptyHint, type, contact, shop, value, onChange }:
</button>
)}
</div>
)}
</article>
)
}

View File

@ -9,12 +9,13 @@ import Modal from '../base/Modal'
import React from 'react'
const Addressdiv = NiceModal.create(
({ title, action, address, shop }) => {
({ title, action, address, shop, extraTypes }) => {
const country_api = new CountryService()
const modal = useModal()
const [formData, setFormData] = useState({})
const [alsoTypes, setAlsoTypes] = useState<number[]>([])
const [schema, setSchema] = useState<RJSFSchema>({})
@ -96,6 +97,28 @@ const Addressdiv = NiceModal.create(
/>
)}
{action === "Save" && extraTypes && extraTypes.length > 0 && (
<div className="mt-4 border-t border-psc-border pt-4">
<p className="mb-2 text-sm font-medium text-psc-text">Diese Adresse zusätzlich übernehmen als:</p>
<div className="flex flex-wrap gap-4">
{extraTypes.map((et: any) => (
<label key={et.type} className="inline-flex cursor-pointer items-center gap-2 text-sm text-psc-text">
<input
type="checkbox"
className="h-4 w-4 rounded-sm border-psc-border text-psc-orange focus:ring-psc-orange"
checked={alsoTypes.includes(et.type)}
onChange={(e) =>
setAlsoTypes((prev) =>
e.target.checked ? [...prev, et.type] : prev.filter((t) => t !== et.type),
)
}
/>
{et.label}
</label>
))}
</div>
</div>
)}
</Modal.Body>
<Modal.Footer>
<Button
@ -104,7 +127,11 @@ const Addressdiv = NiceModal.create(
onClick={() => {
if (action === "Save") {
if (formData) {
if (extraTypes && extraTypes.length > 0) {
modal.resolve({ formData, alsoTypes })
} else {
modal.resolve(formData)
}
modal.remove()
}
} else {

View File

@ -0,0 +1,133 @@
import React, { useEffect, useMemo, useState } from 'react'
import NiceModal, { useModal } from '@ebay/nice-modal-react'
import Modal from '../base/Modal'
import Button from '../base/Button'
import Spinner from '../base/Spinner'
import { Address } from '../../model/address'
import { Contact } from '../../model/contact'
import AddressService from '../../services/address'
const fullName = (a: Address) => `${a.firstname ?? ''} ${a.lastname ?? ''}`.trim()
const AddressPickerModal = NiceModal.create(
({ contact, type, current }: { contact: Contact; type: number; current?: Address | null }) => {
const modal = useModal()
const [term, setTerm] = useState('')
const [addresses, setAddresses] = useState<Address[]>([])
const [loading, setLoading] = useState(false)
useEffect(() => {
let active = true
setLoading(true)
new AddressService()
.getContactAddress(contact.uuid, type)
.then((data) => {
if (active) setAddresses(data)
})
.finally(() => {
if (active) setLoading(false)
})
return () => {
active = false
}
}, [])
const filtered = useMemo(() => {
const t = term.trim().toLowerCase()
if (!t) return addresses
return addresses.filter((a) =>
[a.company, a.firstname, a.lastname, a.street, a.houseNumber, a.zip, a.city]
.filter(Boolean)
.join(' ')
.toLowerCase()
.includes(t),
)
}, [term, addresses])
const apply = (a: Address) => {
modal.resolve(a)
modal.remove()
}
const createNew = () => {
modal.resolve({ createNew: true })
modal.remove()
}
return (
<Modal show={modal.visible} onClose={() => modal.remove()} size="80">
<Modal.Header>Adresse auswählen</Modal.Header>
<Modal.Body>
<div className="relative mb-4">
<svg className="pointer-events-none absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-psc-muted" fill="none" stroke="currentColor" strokeWidth={2} viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="m21 21-4.35-4.35M17 11a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z" />
</svg>
<input
autoFocus
type="text"
value={term}
onChange={(e) => setTerm(e.target.value)}
placeholder="Nach Name, Firma, Straße oder Ort suchen…"
className="h-11 w-full rounded-sm border border-psc-border bg-white pl-10 pr-4 text-sm text-psc-text outline-none focus:border-psc-orange"
/>
</div>
<div className="max-h-[55vh] overflow-y-auto rounded-sm border border-psc-border">
<table className="w-full border-collapse">
<thead className="sticky top-0 bg-slate-50">
<tr className="border-b border-psc-border">
<th className="px-4 py-3 text-left text-xs font-semibold uppercase tracking-wider text-psc-muted">Name</th>
<th className="px-4 py-3 text-left text-xs font-semibold uppercase tracking-wider text-psc-muted">Firma</th>
<th className="px-4 py-3 text-left text-xs font-semibold uppercase tracking-wider text-psc-muted">Straße</th>
<th className="px-4 py-3 text-left text-xs font-semibold uppercase tracking-wider text-psc-muted">Ort</th>
</tr>
</thead>
<tbody className="divide-y divide-psc-border bg-white">
{filtered.map((a) => {
const isCurrent = current?.uuid === a.uuid
return (
<tr
key={a.uuid as string}
onClick={() => apply(a)}
className={`cursor-pointer transition-colors ${isCurrent ? 'bg-orange-50' : 'hover:bg-orange-50'}`}
>
<td className="px-4 py-3 text-sm font-medium text-psc-text">{fullName(a) || '—'}</td>
<td className="px-4 py-3 text-sm text-psc-muted">{a.company || '—'}</td>
<td className="px-4 py-3 text-sm text-psc-muted">{[a.street, a.houseNumber].filter(Boolean).join(' ') || '—'}</td>
<td className="px-4 py-3 text-sm text-psc-muted">{[a.zip, a.city].filter(Boolean).join(' ') || '—'}</td>
</tr>
)
})}
{!loading && filtered.length === 0 && (
<tr>
<td colSpan={4} className="px-4 py-10 text-center text-sm text-psc-muted">
Keine Adressen gefunden.
</td>
</tr>
)}
{loading && (
<tr>
<td colSpan={4} className="px-4 py-10 text-center">
<Spinner />
</td>
</tr>
)}
</tbody>
</table>
</div>
</Modal.Body>
<Modal.Footer>
<Button color="success" onClick={createNew}>
+ Neue Adresse
</Button>
<Button color="light" onClick={() => modal.remove()}>
Schließen
</Button>
</Modal.Footer>
</Modal>
)
},
)
export default AddressPickerModal

View File

@ -6,14 +6,12 @@ import { Contact } from '../../model/contact'
import { Address } from '../../model/address'
import { container } from 'tsyringe-neo'
import OrderState from '../../state/order'
import AddressService from '../../services/address'
import Order from '../../model/order'
import { Shop } from '../../model/shop'
import Box from '../base/Box'
import AddressCard from './AddressCard'
import ContactPickerModal from './ContactPickerModal'
import { useContactModal } from './useContactModal'
import { useAddressModal } from './useAddressModal'
const initials = (c: Contact) => {
const fn = c.layouter_data?.firstname?.charAt(0) || ''
@ -56,9 +54,11 @@ const ContactComponent = ({ order, shop }) => {
const pickerModal = useModal(ContactPickerModal)
const openPicker = () => {
pickerModal.show({ shop, current: contactSelected ? order.contact : undefined }).then((contact: Contact) => {
if (contact && contact.uuid) {
applyContact(contact, contact.uuid !== order.contact?.uuid)
pickerModal.show({ shop, current: contactSelected ? order.contact : undefined }).then((res: any) => {
if (res && res.createNew) {
showAddContact()
} else if (res && res.uuid) {
applyContact(res as Contact, res.uuid !== order.contact?.uuid)
}
})
}
@ -77,16 +77,6 @@ const ContactComponent = ({ order, shop }) => {
orderState.setCurrentOrder(cur)
}
const { showAdd: showAddAddress } = useAddressModal(
shop,
(addr) => {
addr.type = 1
addr.contact.uuid = order.contact.uuid
new AddressService().create(addr).then(() => changeAddress(addr, 1))
},
() => {},
)
return (
<>
<Box
@ -189,14 +179,6 @@ const ContactComponent = ({ order, shop }) => {
value={senderAddress}
onChange={changeAddress}
/>
<button
type="button"
onClick={showAddAddress}
className="mt-1 h-10 rounded-sm border border-psc-border bg-white px-4 text-sm font-medium text-psc-orange hover:bg-orange-50"
>
+ Neue Adresse anlegen
</button>
</div>
</Box>
)}

View File

@ -17,7 +17,6 @@ const ContactPickerModal = NiceModal.create(({ shop, current }: { shop: any; cur
const [debouncedTerm] = useDebounce(term, 300)
const [contacts, setContacts] = useState<Contact[]>([])
const [loading, setLoading] = useState(false)
const [selected, setSelected] = useState<Contact | null>(current?.uuid ? current : null)
useEffect(() => {
let active = true
@ -36,9 +35,13 @@ const ContactPickerModal = NiceModal.create(({ shop, current }: { shop: any; cur
}
}, [debouncedTerm])
const apply = () => {
if (!selected) return
modal.resolve(selected)
const apply = (contact: Contact) => {
modal.resolve(contact)
modal.remove()
}
const createNew = () => {
modal.resolve({ createNew: true })
modal.remove()
}
@ -64,7 +67,6 @@ const ContactPickerModal = NiceModal.create(({ shop, current }: { shop: any; cur
<table className="w-full border-collapse">
<thead className="sticky top-0 bg-slate-50">
<tr className="border-b border-psc-border">
<th className="w-10 px-4 py-3"></th>
<th className="px-4 py-3 text-left text-xs font-semibold uppercase tracking-wider text-psc-muted">Name</th>
<th className="px-4 py-3 text-left text-xs font-semibold uppercase tracking-wider text-psc-muted">Firma</th>
<th className="px-4 py-3 text-left text-xs font-semibold uppercase tracking-wider text-psc-muted">E-Mail</th>
@ -74,22 +76,13 @@ const ContactPickerModal = NiceModal.create(({ shop, current }: { shop: any; cur
</thead>
<tbody className="divide-y divide-psc-border bg-white">
{contacts.map((c) => {
const isSel = selected?.uuid === c.uuid
const isCurrent = current?.uuid === c.uuid
return (
<tr
key={c.uuid}
onClick={() => setSelected(c)}
className={`cursor-pointer transition-colors ${isSel ? 'bg-orange-50' : 'hover:bg-slate-50'}`}
onClick={() => apply(c)}
className={`cursor-pointer transition-colors ${isCurrent ? 'bg-orange-50' : 'hover:bg-orange-50'}`}
>
<td className="px-4 py-3">
<span className={`grid h-5 w-5 place-items-center rounded-full border ${isSel ? 'border-psc-orange bg-psc-orange text-white' : 'border-psc-border'}`}>
{isSel && (
<svg className="h-3 w-3" fill="none" stroke="currentColor" strokeWidth={3} viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="m5 13 4 4L19 7" />
</svg>
)}
</span>
</td>
<td className="px-4 py-3 text-sm font-medium text-psc-text">{fullName(c) || '—'}</td>
<td className="px-4 py-3 text-sm text-psc-muted">{c.layouter_data?.company || '—'}</td>
<td className="px-4 py-3 text-sm text-psc-muted">{c.username || c.email}</td>
@ -104,14 +97,14 @@ const ContactPickerModal = NiceModal.create(({ shop, current }: { shop: any; cur
})}
{!loading && contacts.length === 0 && (
<tr>
<td colSpan={6} className="px-4 py-10 text-center text-sm text-psc-muted">
<td colSpan={5} className="px-4 py-10 text-center text-sm text-psc-muted">
Keine Kunden gefunden.
</td>
</tr>
)}
{loading && (
<tr>
<td colSpan={6} className="px-4 py-10 text-center">
<td colSpan={5} className="px-4 py-10 text-center">
<Spinner />
</td>
</tr>
@ -121,11 +114,11 @@ const ContactPickerModal = NiceModal.create(({ shop, current }: { shop: any; cur
</div>
</Modal.Body>
<Modal.Footer>
<Button color="light" onClick={() => modal.remove()}>
Abbrechen
<Button color="success" onClick={createNew}>
+ Kunde hinzufügen
</Button>
<Button color="success" disabled={!selected} onClick={apply}>
Übernehmen
<Button color="light" onClick={() => modal.remove()}>
Schließen
</Button>
</Modal.Footer>
</Modal>

View File

@ -3,35 +3,40 @@ import { useModal } from '@ebay/nice-modal-react'
import AddressModal from './AddressModal'
import { Address } from '../../model/address'
export type ExtraType = { type: number; label: string }
/**
* Kapselt das Anlegen/Bearbeiten einer Adresse über das AddressModal.
* Liefert die geparste Adresse zurück; das Persistieren übernimmt der Aufrufer.
* Beim Anlegen können über `extraTypes` zusätzliche Adresstypen als Checkbox
* angeboten werden; `onAdded` erhält dann die gewählten Zusatztypen.
*/
export function useAddressModal(
shop: any,
onAdded: (address: Address) => void,
onAdded: (formData: any, alsoTypes: number[]) => void,
onEdited: (address: Address) => void,
label: string = 'Adresse',
extraTypes: ExtraType[] = [],
) {
const addressModal = useModal(AddressModal)
const showAdd = useCallback(() => {
addressModal.show({ title: 'Adresse anlegen', action: 'Save', shop }).then((formData: any) => {
const address = new Address()
address.parseFromFormData(formData)
onAdded(address)
addressModal.show({ title: `${label} anlegen`, action: 'Save', shop, extraTypes }).then((result: any) => {
const formData = result?.formData ?? result
const alsoTypes: number[] = result?.alsoTypes ?? []
onAdded(formData, alsoTypes)
})
}, [addressModal, shop, onAdded])
}, [addressModal, shop, onAdded, label, extraTypes])
const showEdit = useCallback(
(address: Address) => {
addressModal
.show({ title: 'Adresse bearbeiten', action: 'Save', address, shop })
.show({ title: `${label} bearbeiten`, action: 'Save', address, shop })
.then((formData: any) => {
address.parseFromFormData(formData)
onEdited(address)
})
},
[addressModal, shop, onEdited],
[addressModal, shop, onEdited, label],
)
return { showAdd, showEdit }

View File

@ -8,7 +8,13 @@ const DraftComponent = ({order}) => {
const [draft, setDraft] = useState(true)
const orderState: OrderState = container.resolve(OrderState)
const onChange = (option) => {
// Solange der Auftrag noch nicht gespeichert ist, kann der Entwurf-Schalter frei
// geändert werden. Gesperrt wird erst, wenn ein Auftrag gespeichert wurde (bzw.
// geladen wird) und kein Entwurf mehr ist.
const locked = !!order.saved && !draft
const onChange = () => {
if (locked) return
let orderObj = orderState.getCurrentOrder().value
orderObj.draft = !draft
orderState.setCurrentOrder(orderObj)
@ -21,10 +27,13 @@ const DraftComponent = ({order}) => {
return (
<div className="gap-2">
<label className="inline-flex items-center cursor-pointer">
<input type="checkbox" value="1" className="sr-only peer" defaultChecked={draft} onChange={(e) => onChange(e)}/>
<div className="relative w-11 h-6 bg-slate-200 rounded-full peer peer-focus:ring-2 peer-focus:ring-orange-200 peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-psc-orange"></div>
<span className="ms-3 text-sm font-medium text-psc-text">Entwurf</span>
<label
className={`inline-flex items-center ${locked ? 'cursor-not-allowed' : 'cursor-pointer'}`}
title={locked ? 'Ein bereits freigegebener Auftrag kann nicht mehr auf Entwurf gesetzt werden' : undefined}
>
<input type="checkbox" value="1" className="sr-only peer" checked={draft} disabled={locked} onChange={onChange}/>
<div className="relative w-11 h-6 bg-slate-200 rounded-full peer peer-focus:ring-2 peer-focus:ring-orange-200 peer-disabled:opacity-50 peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-psc-orange"></div>
<span className={`ms-3 text-sm font-medium ${locked ? 'text-psc-muted' : 'text-psc-text'}`}>Entwurf</span>
</label>
</div>
)

View File

@ -1,79 +1,56 @@
import * as React from 'react'
import {useEffect, useState} from 'react'
import { useMemo, useState } from 'react'
import * as PropTypes from "prop-types"
import { useModal } from '@ebay/nice-modal-react'
import { Shop } from '../../model/shop'
import { Product } from "../../model/product"
import {ProductGroup} from "../../model/productGroup"
import ProductGroupSelect from "../product/ProductGroupSelect"
import ProductSelect from "../product/ProductSelect"
import ProductForm from "../product/ProductForm"
import Order from "../../model/order"
import { Pos } from '../../model/pos'
import Modal from '../base/Modal';
import ProductForm from "../product/ProductForm"
import ProductPickerModal from "../product/ProductPickerModal"
import Modal from '../base/Modal'
const AddPositionComponent = (props) => {
const [shop, setShop] = useState(null)
const pickerModal = useModal(ProductPickerModal)
const [calcProduct, setCalcProduct] = useState<Product | null>(null)
useEffect(() => {
setShop(props.shop)
}, [props.shop])
const pos = useMemo(() => {
const p = new Pos()
if (calcProduct) p.product = calcProduct
return p
}, [calcProduct])
const [show, setShow] = useState(false)
const openPicker = () => {
pickerModal.show({ shop: props.shop }).then((product: Product) => {
if (product) setCalcProduct(product)
})
}
const pos = new Pos();
const handleClose = () => setShow(false)
const handleShow = () => setShow(true)
const [product, setProduct] = useState<Product>(new Product())
const [productGroup, setProductGroup] = useState<ProductGroup>(new ProductGroup())
pos.product = product;
const closeCalc = () => setCalcProduct(null)
return (
<>
<button
type="button"
onClick={handleShow}
onClick={openPicker}
className="inline-flex h-10 shrink-0 items-center gap-1 rounded-sm border border-psc-border bg-white px-4 text-sm font-medium text-psc-orange transition hover:bg-orange-50"
>
+ Position hinzufügen
</button>
<Modal size="80" show={show} onClose={() => handleClose()}
>
<Modal.Header>
add position
</Modal.Header>
{calcProduct && (
<Modal size="80" show={true} onClose={closeCalc}>
<Modal.Header>{calcProduct.title}</Modal.Header>
<Modal.Body className="min-h-96">
<div className='flex'>
<div className='flex-1'>
<h4>ProductGroup</h4>
<ProductGroupSelect
value={productGroup}
shop={props.shop}
onChange={setProductGroup}
/>
</div>
<div className='flex-1'>
<h4>Product</h4>
<ProductSelect
value={product}
shop={props.shop}
productGroup={productGroup}
onChange={setProduct}
/>
</div>
</div>
<ProductForm
shop={props.shop}
pos={pos}
handleChange={props.addPos}
handleClose={handleClose}
handleClose={closeCalc}
/>
</Modal.Body>
</Modal>
)}
</>
)
}
@ -83,5 +60,4 @@ AddPositionComponent.propTypes = {
addPos: PropTypes.func
}
export default AddPositionComponent

View File

@ -1,10 +1,6 @@
import {useEffect, useState} from 'react'
import {useState} from 'react'
import * as PropTypes from "prop-types"
import { Shop } from '../../model/shop'
import {Product} from "../../model/product"
import {ProductGroup} from "../../model/productGroup"
import ProductGroupSelect from "../product/ProductGroupSelect"
import ProductSelect from "../product/ProductSelect"
import { Pos } from '../../model/pos'
import Button from '../base/Button'
import ProductForm from '../product/ProductForm'

View File

@ -1,44 +0,0 @@
import * as PropTypes from 'prop-types';
import { Shop } from '../../model/shop';
import { container } from 'tsyringe-neo';
import OrderState from '../../state/order';
import {ProductGroup} from "../../model/productGroup";
import ProductGroupService from "../../services/productgroup";
import AsyncSelect , { useAsync } from 'react-select/async';
import React from 'react'
const ProductGroupSelect = (props) => {
const orderState: OrderState = container.resolve(OrderState);
const loadOptions = async (searchQuery) => {
const productgroup_api = new ProductGroupService();
return await productgroup_api.getProductGroups(searchQuery, props.shop);
};
const onChange = (option) => {
if (typeof props.onChange === "function") {
props.onChange(option);
}
};
return (
<AsyncSelect
defaultOptions
key={JSON.stringify(props.shop.uuid)}
value={props.value}
loadOptions={loadOptions}
getOptionValue={(option) => option.uuid}
onChange={onChange}
isSearchable={true}
/>
);
};
ProductGroupSelect.propTypes = {
shop: PropTypes.instanceOf(Shop),
value: PropTypes.instanceOf(ProductGroup),
onChange: PropTypes.func,
};
export default ProductGroupSelect;

View File

@ -0,0 +1,322 @@
import React, { useEffect, useMemo, useState } from 'react'
import NiceModal, { useModal } from '@ebay/nice-modal-react'
import { useDebounce } from 'use-debounce'
import Modal from '../base/Modal'
import Button from '../base/Button'
import Spinner from '../base/Spinner'
import { Product } from '../../model/product'
import { ProductGroup } from '../../model/productGroup'
import ProductGroupService from '../../services/productgroup'
import ProductService from '../../services/product'
const ProductThumb = ({
src,
title,
className = 'h-12 w-12',
fit = 'cover',
}: {
src: string
title: string
className?: string
fit?: 'cover' | 'contain'
}) => {
const [failed, setFailed] = useState(false)
const fitClass = fit === 'contain' ? 'object-contain' : 'object-cover'
if (!src || failed) {
return (
<div className={`grid shrink-0 place-items-center rounded-sm border border-psc-border bg-slate-50 text-psc-muted ${className}`}>
<svg className="h-6 w-6" fill="none" stroke="currentColor" strokeWidth={1.5} viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="M3 16.5 9 11l4 4 3-3 5 5M3 6h18v12H3V6Z" />
</svg>
</div>
)
}
return (
<img
src={src}
alt={title}
onError={() => setFailed(true)}
className={`shrink-0 rounded-sm border border-psc-border ${fitClass} ${className}`}
/>
)
}
const VIEW_KEY = 'psc.invoice.productPickerView'
const loadView = (): 'grid' | 'list' => {
try {
const v = localStorage.getItem(VIEW_KEY)
if (v === 'grid' || v === 'list') return v
} catch {
/* ignore */
}
return 'list'
}
type TreeNodeProps = {
group: ProductGroup
depth: number
selectedUuid: string | null
expanded: Set<string>
onSelect: (g: ProductGroup) => void
onToggle: (uuid: string) => void
}
const TreeNode = ({ group, depth, selectedUuid, expanded, onSelect, onToggle }: TreeNodeProps) => {
const hasChildren = group.children.length > 0
const isExpanded = expanded.has(group.uuid as string)
const isSelected = selectedUuid === group.uuid
return (
<div>
<div
onClick={() => onSelect(group)}
style={{ paddingLeft: depth * 14 + 8 }}
className={`flex cursor-pointer items-center gap-1 rounded-sm py-1.5 pr-2 text-sm transition-colors ${
isSelected ? 'bg-orange-50 font-medium text-psc-orange' : 'text-psc-text hover:bg-slate-50'
}`}
>
{hasChildren ? (
<button
type="button"
onClick={(e) => {
e.stopPropagation()
onToggle(group.uuid as string)
}}
className="grid h-4 w-4 shrink-0 place-items-center text-psc-muted"
>
<svg className={`h-3 w-3 transition-transform ${isExpanded ? 'rotate-90' : ''}`} fill="none" stroke="currentColor" strokeWidth={2.5} viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="m9 5 7 7-7 7" />
</svg>
</button>
) : (
<span className="h-4 w-4 shrink-0" />
)}
<span className="truncate">{group.title}</span>
</div>
{hasChildren && isExpanded && group.children.map((child) => (
<TreeNode
key={child.uuid as string}
group={child}
depth={depth + 1}
selectedUuid={selectedUuid}
expanded={expanded}
onSelect={onSelect}
onToggle={onToggle}
/>
))}
</div>
)
}
const ProductPickerModal = NiceModal.create(({ shop }: { shop: any }) => {
const modal = useModal()
const [tree, setTree] = useState<ProductGroup[]>([])
const [treeLoading, setTreeLoading] = useState(false)
const [expanded, setExpanded] = useState<Set<string>>(new Set())
const [selectedGroup, setSelectedGroup] = useState<ProductGroup | null>(null)
const [term, setTerm] = useState('')
const [debouncedTerm] = useDebounce(term, 300)
const [searchResults, setSearchResults] = useState<Product[]>([])
const [searching, setSearching] = useState(false)
const [selectedProduct, setSelectedProduct] = useState<Product | null>(null)
const [view, setView] = useState<'grid' | 'list'>(loadView)
const setViewMode = (v: 'grid' | 'list') => {
setView(v)
try {
localStorage.setItem(VIEW_KEY, v)
} catch {
/* ignore */
}
}
useEffect(() => {
setTreeLoading(true)
new ProductGroupService()
.getProductTree(shop)
.then((data) => setTree(data))
.finally(() => setTreeLoading(false))
}, [])
useEffect(() => {
if (!debouncedTerm) {
setSearchResults([])
return
}
let active = true
setSearching(true)
new ProductService()
.getProductsByTerm(debouncedTerm, shop)
.then((data) => { if (active) setSearchResults(data) })
.finally(() => { if (active) setSearching(false) })
return () => { active = false }
}, [debouncedTerm])
const toggle = (uuid: string) =>
setExpanded((prev) => {
const next = new Set(prev)
next.has(uuid) ? next.delete(uuid) : next.add(uuid)
return next
})
const isSearchMode = debouncedTerm.length > 0
const products = useMemo<Product[]>(
() => (isSearchMode ? searchResults : selectedGroup?.products ?? []),
[isSearchMode, searchResults, selectedGroup],
)
const apply = () => {
if (!selectedProduct) return
modal.resolve(selectedProduct)
modal.remove()
}
return (
<Modal show={modal.visible} onClose={() => modal.remove()} size="80">
<Modal.Header>Produkt auswählen</Modal.Header>
<Modal.Body className="!px-0 !py-0">
<div className="flex items-center gap-3 border-b border-psc-border p-4">
<div className="relative flex-1">
<svg className="pointer-events-none absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-psc-muted" fill="none" stroke="currentColor" strokeWidth={2} viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="m21 21-4.35-4.35M17 11a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z" />
</svg>
<input
autoFocus
type="text"
value={term}
onChange={(e) => { setTerm(e.target.value); setSelectedProduct(null) }}
placeholder="Produkt nach Name oder Nummer suchen…"
className="h-11 w-full rounded-sm border border-psc-border bg-white pl-10 pr-4 text-sm text-psc-text outline-none focus:border-psc-orange"
/>
</div>
<div className="flex shrink-0 items-center gap-0.5 rounded-sm border border-psc-border p-0.5">
<button
type="button"
title="Kachelansicht"
aria-label="Kachelansicht"
onClick={() => setViewMode('grid')}
className={`grid h-9 w-9 place-items-center rounded-sm transition-colors ${view === 'grid' ? 'bg-orange-50 text-psc-orange' : 'text-psc-muted hover:bg-slate-50'}`}
>
<svg className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth={2} viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="M4 5h6v6H4V5Zm10 0h6v6h-6V5ZM4 15h6v4H4v-4Zm10 0h6v4h-6v-4Z" />
</svg>
</button>
<button
type="button"
title="Listenansicht"
aria-label="Listenansicht"
onClick={() => setViewMode('list')}
className={`grid h-9 w-9 place-items-center rounded-sm transition-colors ${view === 'list' ? 'bg-orange-50 text-psc-orange' : 'text-psc-muted hover:bg-slate-50'}`}
>
<svg className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth={2} viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01" />
</svg>
</button>
</div>
</div>
<div className="grid h-[60vh] grid-cols-[280px_minmax(0,1fr)]">
{/* Left: group tree */}
<div className="overflow-y-auto border-r border-psc-border p-2">
{treeLoading ? (
<div className="grid h-full place-items-center"><Spinner /></div>
) : isSearchMode ? (
<p className="p-3 text-sm text-psc-muted">Suche über alle Produktgruppen</p>
) : (
tree.map((g) => (
<TreeNode
key={g.uuid as string}
group={g}
depth={0}
selectedUuid={(selectedGroup?.uuid as string) ?? null}
expanded={expanded}
onSelect={(grp) => { setSelectedGroup(grp); setSelectedProduct(null) }}
onToggle={toggle}
/>
))
)}
</div>
{/* Right: product list */}
<div className="overflow-y-auto p-4">
{searching ? (
<div className="grid h-full place-items-center"><Spinner /></div>
) : products.length === 0 ? (
<div className="grid h-full place-items-center text-center text-sm text-psc-muted">
{isSearchMode ? 'Keine Produkte gefunden.' : 'Produktgruppe links auswählen.'}
</div>
) : (
<div className={view === 'grid' ? 'grid grid-cols-2 gap-3 lg:grid-cols-3 xl:grid-cols-4' : 'grid gap-2'}>
{products.map((p) => {
const isSel = selectedProduct?.uuid === p.uuid
const nr = p.nrIntern ? `Nr. ${p.nrIntern}` : (p.nrExtern ? `Nr. ${p.nrExtern}` : '—')
const checkmark = (
<span className="grid h-6 w-6 shrink-0 place-items-center rounded-full bg-psc-orange text-white">
<svg className="h-3.5 w-3.5" fill="none" stroke="currentColor" strokeWidth={3} viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="m5 13 4 4L19 7" />
</svg>
</span>
)
if (view === 'grid') {
return (
<button
key={p.uuid as string}
type="button"
onClick={() => setSelectedProduct(p)}
className={`flex flex-col rounded-sm border p-3 text-left transition-colors ${
isSel ? 'border-psc-orange bg-orange-50' : 'border-psc-border bg-white hover:bg-slate-50'
}`}
>
<div className="relative">
<ProductThumb src={p.image as string} title={p.title as string} className="aspect-square w-full bg-slate-50" fit="contain" />
{isSel && <span className="absolute right-1.5 top-1.5">{checkmark}</span>}
</div>
<div className="mt-2 min-w-0">
<div className="truncate text-sm font-medium text-psc-text">{p.title}</div>
<div className="mt-0.5 text-xs text-psc-muted">{nr}</div>
</div>
</button>
)
}
return (
<button
key={p.uuid as string}
type="button"
onClick={() => setSelectedProduct(p)}
className={`flex items-center gap-4 rounded-sm border p-3 text-left transition-colors ${
isSel ? 'border-psc-orange bg-orange-50' : 'border-psc-border bg-white hover:bg-slate-50'
}`}
>
<ProductThumb src={p.image as string} title={p.title as string} className="h-16 w-16" />
<div className="min-w-0 flex-1">
<div className="truncate text-sm font-medium text-psc-text">{p.title}</div>
<div className="mt-0.5 text-xs text-psc-muted">{nr}</div>
</div>
{isSel && checkmark}
</button>
)
})}
</div>
)}
</div>
</div>
</Modal.Body>
<Modal.Footer>
<Button color="light" onClick={() => modal.remove()}>
Abbrechen
</Button>
<Button color="success" disabled={!selectedProduct} onClick={apply}>
Auswählen
</Button>
</Modal.Footer>
</Modal>
)
})
export default ProductPickerModal

View File

@ -1,57 +0,0 @@
import * as PropTypes from 'prop-types';
import { Shop } from '../../model/shop';
import { container } from 'tsyringe-neo';
import OrderState from '../../state/order';
import {Product} from "../../model/product";
import {ProductGroup} from "../../model/productGroup";
import AsyncSelect from "react-select/async";
import ProductService from "../../services/product";
import {useDebounce} from "use-debounce";
import React from 'react'
const ProductSelect = (props) => {
const orderState: OrderState = container.resolve(OrderState);
const loadOptions = async (searchQuery) => {
if(searchQuery == "" && props.productGroup.uuid == "") {
return [];
}
const product_api = new ProductService();
if(searchQuery != "") {
return await product_api.getProductsByTerm(searchQuery, props.shop);
}else{
return await product_api.getProducts(props.productGroup);
}
};
const debouncedSearchTerm = useDebounce(loadOptions, 500);
const onChange = (option) => {
if (typeof props.onChange === "function") {
props.onChange(option);
}
};
return (
<AsyncSelect
defaultOptions
key={JSON.stringify(props.productGroup.uuid)}
value={props.value}
loadOptions={loadOptions}
getOptionValue={(option) => option.uuid}
getOptionLabel={(option) => option.title}
onChange={onChange}
isSearchable={true}
/>
);
};
ProductSelect.propTypes = {
shop: PropTypes.instanceOf(Shop),
value: PropTypes.instanceOf(Product),
productGroup: PropTypes.instanceOf(ProductGroup),
onChange: PropTypes.func,
};
export default ProductSelect;

View File

@ -0,0 +1,109 @@
import React, { useReducer, useRef } from 'react'
import { AsyncPaginate } from 'react-select-async-paginate'
import { container } from 'tsyringe-neo'
import OrderState from '../../state/order'
import VoucherService, { VoucherOption } from '../../services/voucher'
import Box from '../base/Box'
const label = (v: any): string => {
if (v.percentValue) return `${v.percentValue} %`
if (v.valueInCent) return `${(v.valueInCent / 100).toFixed(2)}`
return ''
}
const VoucherComponent = ({ order, shop }) => {
const orderState = container.resolve(OrderState)
const [, force] = useReducer((x) => x + 1, 0)
const titles = useRef<Record<string, string>>({})
const vouchers: any[] = order.vouchers ?? []
const loadOptions = async (term: string) => {
const data = await new VoucherService().getVouchers(shop, term)
return { options: data, hasMore: false }
}
const addVoucher = (opt: VoucherOption) => {
if (!opt) return
const cur = orderState.getCurrentOrder().value
if (!cur.vouchers) cur.vouchers = []
if (cur.vouchers.some((v: any) => v.code === opt.code)) return
titles.current[opt.code] = opt.title
cur.vouchers = [
...cur.vouchers,
{
code: opt.code,
percent: opt.percent,
valueInCent: opt.percent ? 0 : Math.round(opt.value * 100),
percentValue: opt.percent ? opt.value : 0,
},
]
order.vouchers = cur.vouchers
orderState.setCurrentOrder(cur)
force()
}
const removeVoucher = (code: string) => {
const cur = orderState.getCurrentOrder().value
cur.vouchers = (cur.vouchers ?? []).filter((v: any) => v.code !== code)
order.vouchers = cur.vouchers
orderState.setCurrentOrder(cur)
force()
}
return (
<Box
title="Gutscheine"
subtitle="Rabatte auf den Auftrag."
icon={
<svg className="h-5 w-5" fill="none" stroke="currentColor" strokeWidth={2} viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="M3 8a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v2a2 2 0 0 0 0 4v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2a2 2 0 0 0 0-4V8Z" />
<path strokeLinecap="round" strokeLinejoin="round" d="M13 6v12" />
</svg>
}
>
{vouchers.length > 0 && (
<div className="mb-3 grid gap-2">
{vouchers.map((v) => (
<div
key={v.code}
className="flex items-center justify-between gap-2 rounded-sm border border-psc-border bg-slate-50 px-3 py-2"
>
<div className="min-w-0">
<div className="truncate text-sm font-medium text-psc-text">
{titles.current[v.code] || v.code}
</div>
<div className="text-xs text-psc-muted">
{v.code}
{label(v) ? ` · ${label(v)}` : ''}
</div>
</div>
<button
type="button"
onClick={() => removeVoucher(v.code)}
aria-label="Gutschein entfernen"
className="shrink-0 rounded-sm p-1 text-psc-muted transition hover:bg-slate-100 hover:text-red-600"
>
<svg className="h-4 w-4" fill="none" stroke="currentColor" strokeWidth={2} viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" d="M6 18 18 6M6 6l12 12" />
</svg>
</button>
</div>
))}
</div>
)}
<AsyncPaginate
value={null}
loadOptions={loadOptions}
getOptionValue={(o: VoucherOption) => o.code}
getOptionLabel={(o: VoucherOption) => `${o.title} (${o.percent ? o.value + ' %' : o.value.toFixed(2) + ' €'})`}
onChange={addVoucher}
isSearchable={true}
placeholder="Gutschein suchen…"
/>
</Box>
)
}
export default VoucherComponent

View File

@ -16,18 +16,16 @@ class ProductService {
async getProductsByTerm(term: string, shop: Shop): Promise<Product[]> {
return await axios.get('/apps/api/product/getallbyterm/' + shop.uuid + '/' + term, {
// Der Term-Endpoint filtert per rohem `shop.uid = :id`, daher hier die
// numerische shop.id (= uid) senden, nicht die UUID.
return await axios.get('/apps/api/product/getallbyterm/' + shop.id + '/' + encodeURIComponent(term), {
headers: {
'Authorization': 'Bearer ' + this.token?.currentToken
}
}).then(( response ) => {
return response.data.data.map((item: any) => {
let p = new Product();
p.id = item.id;
p.title = item.title;
p.uuid = item.uuid;
p.specialProductTypeObject.typ = item.typ;
p.parseFromJson(item);
return p;
})
@ -43,11 +41,7 @@ class ProductService {
}).then(( response ) => {
return response.data.data.map((item: any) => {
let p = new Product();
p.id = item.id;
p.title = item.title;
p.uuid = item.uuid;
p.specialProductTypeObject.typ = item.typ;
p.parseFromJson(item);
return p;
})

View File

@ -11,6 +11,16 @@ class ProductGroupService {
this.token = token
}
async getProductTree(shop: Shop): Promise<ProductGroup[]> {
return await axios.get('/apps/api/productgroup/gettree/' + shop.uuid, {
headers: {
'Authorization': 'Bearer ' + this.token.currentToken
}
}).then(( response ) => {
return response.data.data.map((item: any) => new ProductGroup().parseFromJson(item))
})
}
async getProductGroups(searchQuery: String, shop: Shop): Promise<ProductGroup[]> {
return await axios.get('/apps/api/productgroup/gettree/' + shop.uuid + '?term=' + searchQuery, {

View File

@ -0,0 +1,31 @@
import { inject, autoInjectable, singleton } from "tsyringe-neo"
import Token from "./token"
import axios from 'axios'
import { Shop } from "../model/shop"
export interface VoucherOption {
code: string
title: string
percent: boolean
value: number
}
@singleton()
@autoInjectable()
class VoucherService {
constructor(@inject(Token) token?: Token) {
this.token = token
}
async getVouchers(shop: Shop, term: string): Promise<VoucherOption[]> {
return await axios.get('/apps/api/voucher/getallbyshop/' + shop.uuid + '?term=' + encodeURIComponent(term), {
headers: {
'Authorization': 'Bearer ' + this.token?.currentToken
}
}).then((response) => {
return response.data.data as VoucherOption[]
})
}
}
export default VoucherService

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{% if uuid %}
<a href="/apps/backend/component/invoice/index/create#/{{ uuid }}" target="_blank" class="inline-flex items-center justify-center py-1 gap-1 font-medium rounded-sm px-4 text-sm text-white shadow-lg bg-indigo-500 hover:bg-indigo-600 hover:ring-2 hover:ring-indigo-500 hover:ring-offset-2 min-h-[2.25rem]">Auftrag bearbeiten (BETA)</a>
<a href="/apps/backend/component/invoice/index/create#/{{ uuid }}" target="_blank" class="inline-flex items-center justify-center py-1 gap-1 font-medium rounded-sm px-4 text-sm text-white shadow-lg bg-indigo-500 hover:bg-indigo-600 hover:ring-2 hover:ring-indigo-500 hover:ring-offset-2 min-h-[2.25rem]">Auftrag bearbeiten</a>
{% else %}
<div class="panel">
<div class="body"><a href="/apps/backend/component/invoice/index/create" target="_blank" class="inline-flex items-center justify-center py-1 gap-1 font-medium rounded-sm px-4 text-sm text-white shadow-lg bg-indigo-500 hover:bg-indigo-600 hover:ring-2 hover:ring-indigo-500 hover:ring-offset-2 min-h-[2.25rem]">Auftrag anlegen (BETA)</a></div>
<div class="body"><a href="/apps/backend/component/invoice/index/create" target="_blank" class="inline-flex items-center justify-center py-1 gap-1 font-medium rounded-sm px-4 text-sm text-white shadow-lg bg-indigo-500 hover:bg-indigo-600 hover:ring-2 hover:ring-indigo-500 hover:ring-offset-2 min-h-[2.25rem]">Auftrag anlegen</a></div>
</div>
{% endif %}

View File

@ -2394,6 +2394,10 @@ html {
padding-left: 2rem;
}
.pr-3{
padding-right: 0.75rem;
}
.pr-4{
padding-right: 1rem;
}
@ -2536,6 +2540,11 @@ html {
letter-spacing: 0.1em;
}
.text-\[\#f26c21\]{
--tw-text-opacity: 1;
color: rgb(242 108 33 / var(--tw-text-opacity));
}
.text-blue-500{
--tw-text-opacity: 1;
color: rgb(59 130 246 / var(--tw-text-opacity));