before mimo
This commit is contained in:
parent
45642fce51
commit
1647175122
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
19
src/new/.playwright-mcp/page-2026-07-07T12-38-52-584Z.yml
Normal file
19
src/new/.playwright-mcp/page-2026-07-07T12-38-52-584Z.yml
Normal 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]
|
||||
24
src/new/.playwright-mcp/page-2026-07-07T12-40-42-744Z.yml
Normal file
24
src/new/.playwright-mcp/page-2026-07-07T12-40-42-744Z.yml
Normal 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]
|
||||
97
src/new/.playwright-mcp/page-2026-07-07T12-53-31-716Z.yml
Normal file
97
src/new/.playwright-mcp/page-2026-07-07T12-53-31-716Z.yml
Normal 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]
|
||||
97
src/new/.playwright-mcp/page-2026-07-07T12-53-46-876Z.yml
Normal file
97
src/new/.playwright-mcp/page-2026-07-07T12-53-46-876Z.yml
Normal 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]
|
||||
97
src/new/.playwright-mcp/page-2026-07-07T12-56-17-802Z.yml
Normal file
97
src/new/.playwright-mcp/page-2026-07-07T12-56-17-802Z.yml
Normal 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]
|
||||
97
src/new/.playwright-mcp/page-2026-07-07T12-56-29-253Z.yml
Normal file
97
src/new/.playwright-mcp/page-2026-07-07T12-56-29-253Z.yml
Normal 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]
|
||||
19
src/new/.playwright-mcp/page-2026-07-07T13-09-40-762Z.yml
Normal file
19
src/new/.playwright-mcp/page-2026-07-07T13-09-40-762Z.yml
Normal 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]
|
||||
178
src/new/.playwright-mcp/page-2026-07-07T13-10-04-854Z.yml
Normal file
178
src/new/.playwright-mcp/page-2026-07-07T13-10-04-854Z.yml
Normal 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]
|
||||
334
src/new/.playwright-mcp/page-2026-07-07T13-11-13-459Z.yml
Normal file
334
src/new/.playwright-mcp/page-2026-07-07T13-11-13-459Z.yml
Normal 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]
|
||||
767
src/new/.playwright-mcp/page-2026-07-07T13-11-49-321Z.yml
Normal file
767
src/new/.playwright-mcp/page-2026-07-07T13-11-49-321Z.yml
Normal 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]
|
||||
770
src/new/.playwright-mcp/page-2026-07-07T13-19-13-815Z.yml
Normal file
770
src/new/.playwright-mcp/page-2026-07-07T13-19-13-815Z.yml
Normal 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]
|
||||
19
src/new/.playwright-mcp/page-2026-07-07T20-53-40-820Z.yml
Normal file
19
src/new/.playwright-mcp/page-2026-07-07T20-53-40-820Z.yml
Normal 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]
|
||||
451
src/new/.playwright-mcp/page-2026-07-07T20-54-08-030Z.yml
Normal file
451
src/new/.playwright-mcp/page-2026-07-07T20-54-08-030Z.yml
Normal 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]
|
||||
463
src/new/.playwright-mcp/page-2026-07-07T20-54-24-339Z.yml
Normal file
463
src/new/.playwright-mcp/page-2026-07-07T20-54-24-339Z.yml
Normal 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]
|
||||
169
src/new/.playwright-mcp/page-2026-07-07T20-54-57-791Z.yml
Normal file
169
src/new/.playwright-mcp/page-2026-07-07T20-54-57-791Z.yml
Normal 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]
|
||||
262
src/new/.playwright-mcp/page-2026-07-07T20-55-15-472Z.yml
Normal file
262
src/new/.playwright-mcp/page-2026-07-07T20-55-15-472Z.yml
Normal 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]
|
||||
892
src/new/.playwright-mcp/page-2026-07-07T20-56-37-523Z.yml
Normal file
892
src/new/.playwright-mcp/page-2026-07-07T20-56-37-523Z.yml
Normal 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]
|
||||
@ -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{
|
||||
|
||||
@ -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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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">
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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)]);
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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',
|
||||
];
|
||||
}
|
||||
}
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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" />'
|
||||
|
||||
@ -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>
|
||||
)
|
||||
|
||||
@ -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 })
|
||||
}
|
||||
@ -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()
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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>
|
||||
)}
|
||||
|
||||
@ -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
|
||||
@ -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 (
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
)
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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
|
||||
@ -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>
|
||||
)}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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 }
|
||||
|
||||
@ -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>
|
||||
)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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'
|
||||
|
||||
@ -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;
|
||||
@ -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
|
||||
@ -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;
|
||||
@ -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
|
||||
@ -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;
|
||||
})
|
||||
|
||||
|
||||
@ -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, {
|
||||
|
||||
@ -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
@ -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 %}
|
||||
|
||||
@ -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));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user