Fixes
This commit is contained in:
parent
6d7f485e9c
commit
348e65b831
@ -8,7 +8,7 @@ services:
|
|||||||
dockerfile: ./.docker/images/php/base/Dockerfile
|
dockerfile: ./.docker/images/php/base/Dockerfile
|
||||||
platforms:
|
platforms:
|
||||||
- "linux/amd64"
|
- "linux/amd64"
|
||||||
#- "linux/arm64"
|
# - "linux/arm64"
|
||||||
args:
|
args:
|
||||||
- ALPINE_VERSION=${ALPINE_VERSION?}
|
- ALPINE_VERSION=${ALPINE_VERSION?}
|
||||||
- APP_CODE_PATH=${APP_CODE_PATH_CONTAINER?}
|
- APP_CODE_PATH=${APP_CODE_PATH_CONTAINER?}
|
||||||
|
|||||||
@ -19,7 +19,7 @@ services:
|
|||||||
context: ../
|
context: ../
|
||||||
platforms:
|
platforms:
|
||||||
- "linux/amd64"
|
- "linux/amd64"
|
||||||
# - "linux/arm64"
|
#- "linux/arm64"
|
||||||
dockerfile: ./images/php/cron/Dockerfile
|
dockerfile: ./images/php/cron/Dockerfile
|
||||||
target: ${ENV?}
|
target: ${ENV?}
|
||||||
args:
|
args:
|
||||||
|
|||||||
@ -65,6 +65,21 @@ services:
|
|||||||
- "4444:4444"
|
- "4444:4444"
|
||||||
networks:
|
networks:
|
||||||
- network
|
- network
|
||||||
|
smtp4dev:
|
||||||
|
image: registry.thomas-peterson.de/smtp4dev
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
# Change the number before : to the port the web interface should be accessible on
|
||||||
|
- '5000:80'
|
||||||
|
# Change the number before : to the port the SMTP server should be accessible on
|
||||||
|
- '25:25'
|
||||||
|
# Change the number before : to the port the IMAP server should be accessible on
|
||||||
|
- '143:143'
|
||||||
|
environment:
|
||||||
|
- ServerOptions__Urls=http://*:80
|
||||||
|
- ServerOptions__HostName=smtp4dev
|
||||||
|
networks:
|
||||||
|
- network
|
||||||
application:
|
application:
|
||||||
image: ${DOCKER_REGISTRY?}/${DOCKER_NAMESPACE?}/application-${ENV?}:${TAG?}
|
image: ${DOCKER_REGISTRY?}/${DOCKER_NAMESPACE?}/application-${ENV?}:${TAG?}
|
||||||
build:
|
build:
|
||||||
|
|||||||
@ -7,14 +7,14 @@ ARG APP_CODE_PATH
|
|||||||
RUN sed -i "s#__NGINX_ROOT_NEW;#$APP_CODE_PATH/new/web;#" /etc/nginx/conf.d/default.conf
|
RUN sed -i "s#__NGINX_ROOT_NEW;#$APP_CODE_PATH/new/web;#" /etc/nginx/conf.d/default.conf
|
||||||
RUN sed -i "s#__NGINX_ROOT_OLD;#$APP_CODE_PATH/old/public;#" /etc/nginx/conf.d/default.conf
|
RUN sed -i "s#__NGINX_ROOT_OLD;#$APP_CODE_PATH/old/public;#" /etc/nginx/conf.d/default.conf
|
||||||
|
|
||||||
FROM base as prod
|
|
||||||
|
|
||||||
COPY ./src/old/public /data/www/old/public
|
COPY ./src/old/public /data/www/old/public
|
||||||
|
COPY ./src/new/var/plugins/System /data/www/new/var/plugins/System
|
||||||
COPY ./src/new/web /data/www/new/web
|
COPY ./src/new/web /data/www/new/web
|
||||||
|
COPY ./src/new/vendor/nelmio/api-doc-bundle/Resources/public /data/www/new/vendor/nelmio/api-doc-bundle/Resources/public
|
||||||
|
|
||||||
|
|
||||||
|
FROM base as prod
|
||||||
|
|
||||||
FROM base as local
|
FROM base as local
|
||||||
|
|
||||||
COPY ./src/old/public /data/www/old/public
|
|
||||||
COPY ./src/new/web /data/www/new/web
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -64,11 +64,6 @@ server {
|
|||||||
try_files $uri @sfFront;
|
try_files $uri @sfFront;
|
||||||
}
|
}
|
||||||
|
|
||||||
location /w2p/ {
|
|
||||||
proxy_pass http://tp:8080/w2p/;
|
|
||||||
proxy_temp_path /tmp/proxy;
|
|
||||||
}
|
|
||||||
|
|
||||||
location @sfFront { # Symfony
|
location @sfFront { # Symfony
|
||||||
if ($request_method = 'OPTIONS') {
|
if ($request_method = 'OPTIONS') {
|
||||||
add_header 'Access-Control-Allow-Origin' '*';
|
add_header 'Access-Control-Allow-Origin' '*';
|
||||||
@ -76,11 +71,11 @@ server {
|
|||||||
# Om nom nom cookies
|
# Om nom nom cookies
|
||||||
#
|
#
|
||||||
add_header 'Access-Control-Allow-Credentials' 'true';
|
add_header 'Access-Control-Allow-Credentials' 'true';
|
||||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
|
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
|
||||||
#
|
#
|
||||||
# Custom headers and headers various browsers *should* be OK with but aren't
|
# Custom headers and headers various browsers *should* be OK with but aren't
|
||||||
#
|
#
|
||||||
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,apikey';
|
add_header 'Access-Control-Allow-Headers' 'authorization,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,apikey';
|
||||||
#
|
#
|
||||||
# Tell client that this pre-flight info is valid for 20 days
|
# Tell client that this pre-flight info is valid for 20 days
|
||||||
#
|
#
|
||||||
@ -92,6 +87,7 @@ server {
|
|||||||
|
|
||||||
add_header Access-Control-Allow-Origin * always;
|
add_header Access-Control-Allow-Origin * always;
|
||||||
add_header Access-Control-Allow-Credentials true always;
|
add_header Access-Control-Allow-Credentials true always;
|
||||||
|
add_header 'Access-Control-Allow-Headers' 'authorization,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,apikey';
|
||||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
|
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
|
||||||
add_header Access-Control-Expose-Headers Access-Control-Allow-Origin always;
|
add_header Access-Control-Expose-Headers Access-Control-Allow-Origin always;
|
||||||
fastcgi_temp_path /tmp/fastcgi 1 2;
|
fastcgi_temp_path /tmp/fastcgi 1 2;
|
||||||
|
|||||||
@ -100,7 +100,7 @@ RUN docker-php-ext-install -j$(nproc) ldap
|
|||||||
RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
|
RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
|
||||||
docker-php-ext-install -j$(nproc) imap
|
docker-php-ext-install -j$(nproc) imap
|
||||||
|
|
||||||
COPY ./.docker/images/php/base/pdf/php_pdflib.so /pdflib.so
|
# COPY ./.docker/images/php/base/pdf/php_pdflib.so /pdflib.so
|
||||||
|
|
||||||
# make bash default shell
|
# make bash default shell
|
||||||
RUN sed -e 's;/bin/ash$;/bin/bash;g' -i /etc/passwd
|
RUN sed -e 's;/bin/ash$;/bin/bash;g' -i /etc/passwd
|
||||||
|
|||||||
@ -11,4 +11,4 @@ opcache.interned_strings_buffer=12
|
|||||||
memory_limit = -1
|
memory_limit = -1
|
||||||
|
|
||||||
disable_functions =
|
disable_functions =
|
||||||
extension=/pdflib.so
|
;extension=/pdflib.so
|
||||||
|
|||||||
@ -109,6 +109,10 @@ docker-compose-build-image-config: validate-docker-compose-variables ## generate
|
|||||||
docker-compose-build-php: validate-docker-compose-variables ## Build the php base image
|
docker-compose-build-php: validate-docker-compose-variables ## Build the php base image
|
||||||
$(DOCKER_COMPOSE_PHP_BASE) build --no-cache $(DOCKER_SERVICE_NAME_PHP_BASE) $(ARGS)
|
$(DOCKER_COMPOSE_PHP_BASE) build --no-cache $(DOCKER_SERVICE_NAME_PHP_BASE) $(ARGS)
|
||||||
|
|
||||||
|
.PHONY: docker-compose-build-web
|
||||||
|
docker-compose-build-web: validate-docker-compose-variables ## Build the php base image
|
||||||
|
$(DOCKER_COMPOSE) build --no-cache web $(ARGS)
|
||||||
|
|
||||||
.PHONY: docker-compose-build
|
.PHONY: docker-compose-build
|
||||||
docker-compose-build: docker-compose-build-php docker-compose-build-image ## Build the php image and then all other docker images
|
docker-compose-build: docker-compose-build-php docker-compose-build-image ## Build the php image and then all other docker images
|
||||||
|
|
||||||
|
|||||||
@ -23,4 +23,4 @@ VM_NAME_WEB=$(DOCKER_SERVICE_NAME_WEB)-vm
|
|||||||
VM_NAME_MYSQL=$(DOCKER_SERVICE_NAME_MYSQL)-vm
|
VM_NAME_MYSQL=$(DOCKER_SERVICE_NAME_MYSQL)-vm
|
||||||
VM_NAME_MONGODB=$(DOCKER_SERVICE_NAME_MONGODB)-vm
|
VM_NAME_MONGODB=$(DOCKER_SERVICE_NAME_MONGODB)-vm
|
||||||
# Helpers
|
# Helpers
|
||||||
ALL_VM_SERVICE_NAMES=$(VM_NAME_APPLICATION):$(DOCKER_SERVICE_NAME_APPLICATION) $(VM_NAME_PHP_FPM):$(DOCKER_SERVICE_NAME_PHP_FPM) $(VM_NAME_PHP_CRON):$(DOCKER_SERVICE_NAME_PHP_CRON) $(VM_NAME_WEB):$(DOCKER_SERVICE_NAME_WEB)
|
ALL_VM_SERVICE_NAMES=$(VM_NAME_APPLICATION):$(DOCKER_SERVICE_NAME_APPLICATION) $(VM_NAME_PHP_FPM):$(DOCKER_SERVICE_NAME_PHP_FPM) $(VM_NAME_PsHP_CRON):$(DOCKER_SERVICE_NAME_PHP_CRON) $(VM_NAME_WEB):$(DOCKER_SERVICE_NAME_WEB)
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
|||||||
APP_ENV=test
|
APP_ENV=test
|
||||||
MAILER_DSN=smtp://192.168.188.136:2500
|
MAILER_DSN=smtp://smtp4dev:25
|
||||||
PDFLIB_LIC=L900202-010091-135115-PPD3D2-EHE432
|
PDFLIB_LIC=L900202-010091-135115-PPD3D2-EHE432
|
||||||
CORS_ALLOW_ORIGIN=*
|
CORS_ALLOW_ORIGIN=*
|
||||||
DATABASE_URL=sqlite:///%kernel.project_dir%/var/test.sqlite
|
DATABASE_URL=sqlite:///%kernel.project_dir%/var/test.sqlite
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
"chillerlan/php-qrcode": "v5.0.x-dev",
|
"chillerlan/php-qrcode": "v5.0.x-dev",
|
||||||
"cocur/slugify": "v3.1",
|
"cocur/slugify": "v3.1",
|
||||||
"composer/package-versions-deprecated": "^1.8",
|
"composer/package-versions-deprecated": "^1.8",
|
||||||
"ddeboer/imap": "1.12.2",
|
"ddeboer/imap": "1.18.*",
|
||||||
"doctrine/annotations": "^1.0",
|
"doctrine/annotations": "^1.0",
|
||||||
"doctrine/cache": "^1.11",
|
"doctrine/cache": "^1.11",
|
||||||
"doctrine/doctrine-bundle": "2.7.*",
|
"doctrine/doctrine-bundle": "2.7.*",
|
||||||
@ -78,7 +78,7 @@
|
|||||||
"symfony/monolog-bundle": "^3.8",
|
"symfony/monolog-bundle": "^3.8",
|
||||||
"symfony/notifier": "*",
|
"symfony/notifier": "*",
|
||||||
"symfony/process": "*",
|
"symfony/process": "*",
|
||||||
"symfony/property-access": "6.4.*",
|
"symfony/property-access": "6.4.4",
|
||||||
"symfony/property-info": "*",
|
"symfony/property-info": "*",
|
||||||
"symfony/proxy-manager-bridge": "*",
|
"symfony/proxy-manager-bridge": "*",
|
||||||
"symfony/runtime": "*",
|
"symfony/runtime": "*",
|
||||||
|
|||||||
54
src/new/composer.lock
generated
54
src/new/composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "f4966c70ab29743cfc549b7bf648292f",
|
"content-hash": "662f9319208d03de9b69b0d3b1488f2a",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "azuyalabs/yasumi",
|
"name": "azuyalabs/yasumi",
|
||||||
@ -555,32 +555,33 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ddeboer/imap",
|
"name": "ddeboer/imap",
|
||||||
"version": "1.12.2",
|
"version": "1.18.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/ddeboer/imap.git",
|
"url": "https://github.com/ddeboer/imap.git",
|
||||||
"reference": "5f1d8ed40b365386c028e038658376410c59e8a8"
|
"reference": "424106ad6b4166f134048ebd7ee461436e57d3b2"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/ddeboer/imap/zipball/5f1d8ed40b365386c028e038658376410c59e8a8",
|
"url": "https://api.github.com/repos/ddeboer/imap/zipball/424106ad6b4166f134048ebd7ee461436e57d3b2",
|
||||||
"reference": "5f1d8ed40b365386c028e038658376410c59e8a8",
|
"reference": "424106ad6b4166f134048ebd7ee461436e57d3b2",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
"ext-dom": "*",
|
||||||
"ext-iconv": "*",
|
"ext-iconv": "*",
|
||||||
"ext-imap": "*",
|
"ext-imap": "*",
|
||||||
|
"ext-libxml": "*",
|
||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"php": "^7.4 || ^8.0.1"
|
"php": "~8.1.0 || ~8.2.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"friendsofphp/php-cs-fixer": "^v3.1.0",
|
"friendsofphp/php-cs-fixer": "^3.14.4",
|
||||||
"laminas/laminas-mail": "^2.15.0",
|
"laminas/laminas-mail": "^2.22.0",
|
||||||
"malukenho/mcbumpface": "^1.1.5",
|
"phpstan/phpstan": "^1.9.17",
|
||||||
"phpstan/phpstan": "^0.12.99",
|
"phpstan/phpstan-phpunit": "^1.3.4",
|
||||||
"phpstan/phpstan-phpunit": "^0.12.22",
|
"phpstan/phpstan-strict-rules": "^1.4.5",
|
||||||
"phpstan/phpstan-strict-rules": "^0.12.11",
|
"phpunit/phpunit": "^10.0.7"
|
||||||
"phpunit/phpunit": "^9.5.9"
|
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@ -614,7 +615,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/ddeboer/imap/issues",
|
"issues": "https://github.com/ddeboer/imap/issues",
|
||||||
"source": "https://github.com/ddeboer/imap/tree/1.12.2"
|
"source": "https://github.com/ddeboer/imap/tree/1.18.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -626,7 +627,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2021-09-23T05:56:38+00:00"
|
"time": "2023-05-22T06:42:26+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "doctrine/annotations",
|
"name": "doctrine/annotations",
|
||||||
@ -2929,16 +2930,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "horstoeko/zugferd",
|
"name": "horstoeko/zugferd",
|
||||||
"version": "v1.0.100",
|
"version": "v1.0.102",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/horstoeko/zugferd.git",
|
"url": "https://github.com/horstoeko/zugferd.git",
|
||||||
"reference": "cb189408232284fc801fca436ce86cc3e1dff356"
|
"reference": "c43788ad1713393247a2d73bbded8308f1eea031"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/horstoeko/zugferd/zipball/cb189408232284fc801fca436ce86cc3e1dff356",
|
"url": "https://api.github.com/repos/horstoeko/zugferd/zipball/c43788ad1713393247a2d73bbded8308f1eea031",
|
||||||
"reference": "cb189408232284fc801fca436ce86cc3e1dff356",
|
"reference": "c43788ad1713393247a2d73bbded8308f1eea031",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2951,6 +2952,7 @@
|
|||||||
"setasign/fpdf": "^1",
|
"setasign/fpdf": "^1",
|
||||||
"setasign/fpdi": "^2",
|
"setasign/fpdi": "^2",
|
||||||
"smalot/pdfparser": "^0|^2",
|
"smalot/pdfparser": "^0|^2",
|
||||||
|
"symfony/finder": "^5|^6|^7",
|
||||||
"symfony/process": "^5|^6|^7",
|
"symfony/process": "^5|^6|^7",
|
||||||
"symfony/validator": "^5|^6|^7",
|
"symfony/validator": "^5|^6|^7",
|
||||||
"symfony/yaml": "^5|^6|^7"
|
"symfony/yaml": "^5|^6|^7"
|
||||||
@ -2996,9 +2998,9 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/horstoeko/zugferd/issues",
|
"issues": "https://github.com/horstoeko/zugferd/issues",
|
||||||
"source": "https://github.com/horstoeko/zugferd/tree/v1.0.100"
|
"source": "https://github.com/horstoeko/zugferd/tree/v1.0.102"
|
||||||
},
|
},
|
||||||
"time": "2024-12-27T15:54:50+00:00"
|
"time": "2025-01-03T10:49:47+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "imagine/imagine",
|
"name": "imagine/imagine",
|
||||||
@ -15243,16 +15245,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpstan",
|
"name": "phpstan/phpstan",
|
||||||
"version": "1.12.14",
|
"version": "1.12.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpstan.git",
|
"url": "https://github.com/phpstan/phpstan.git",
|
||||||
"reference": "e73868f809e68fff33be961ad4946e2e43ec9e38"
|
"reference": "c91d4e8bc056f46cf653656e6f71004b254574d1"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/e73868f809e68fff33be961ad4946e2e43ec9e38",
|
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/c91d4e8bc056f46cf653656e6f71004b254574d1",
|
||||||
"reference": "e73868f809e68fff33be961ad4946e2e43ec9e38",
|
"reference": "c91d4e8bc056f46cf653656e6f71004b254574d1",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -15297,7 +15299,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-12-31T07:26:13+00:00"
|
"time": "2025-01-05T16:40:22+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-code-coverage",
|
"name": "phpunit/php-code-coverage",
|
||||||
|
|||||||
@ -5,5 +5,26 @@ declare(strict_types=1);
|
|||||||
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
|
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
|
||||||
|
|
||||||
return static function (ContainerConfigurator $containerConfigurator): void {
|
return static function (ContainerConfigurator $containerConfigurator): void {
|
||||||
$containerConfigurator->extension('nelmio_cors', ['defaults' => ['origin_regex' => true, 'allow_methods' => ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE'], 'allow_headers' => ['Content-Type', 'Authorization'], 'expose_headers' => ['Link'], 'max_age' => 3600], 'paths' => ['^/api/' => ['allow_headers' => ['apikey'], 'allow_methods' => ['POST', 'PUT', 'GET', 'DELETE'], 'max_age' => 3600], '^/' => null]]);
|
$containerConfigurator->extension(
|
||||||
|
'nelmio_cors',
|
||||||
|
[
|
||||||
|
'defaults' => [
|
||||||
|
'allow_credentials' => true,
|
||||||
|
'origin_regex' => true,
|
||||||
|
'allow_methods' => ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE'],
|
||||||
|
'allow_headers' => ['Content-Type', 'Authorization'],
|
||||||
|
'expose_headers' => ['Link'],
|
||||||
|
'max_age' => 3600
|
||||||
|
],
|
||||||
|
'paths' => [
|
||||||
|
'^/api/' => [
|
||||||
|
'allow_credentials' => true,
|
||||||
|
'allow_headers' => ['Content-Type', 'Authorization', 'apikey', 'token'],
|
||||||
|
'allow_methods' => ['POST', 'PUT', 'GET', 'DELETE', 'OPTIONS', 'PATCH'],
|
||||||
|
'max_age' => 3600
|
||||||
|
],
|
||||||
|
'^/' => null
|
||||||
|
]
|
||||||
|
]
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -125,7 +125,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-end px-4 py-3">
|
<td class="text-end px-4 py-3">
|
||||||
<a href="{{ path("psc_shop_contact_backend_edit", {uuid: order.uuid}) }}" class="text-gray-900 bg-gray-100 hover:bg-gray-200 focus:ring-4 focus:outline-none focus:ring-gray-100 font-medium rounded-lg text-sm px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-gray-500">
|
<a href="{{ path("psc_shop_order_backend_detail_show", {uuid: order.uuid}) }}" class="text-gray-900 bg-gray-100 hover:bg-gray-200 focus:ring-4 focus:outline-none focus:ring-gray-100 font-medium rounded-lg text-sm px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-gray-500">
|
||||||
<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 text-psc">
|
<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 text-psc">
|
||||||
<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.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10" />
|
<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.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
@ -101,14 +101,14 @@
|
|||||||
{% import "knp_menu.html.twig" as macros %}
|
{% import "knp_menu.html.twig" as macros %}
|
||||||
{% if item.hasChildren %}
|
{% if item.hasChildren %}
|
||||||
|
|
||||||
<a x-on:click="{{ item.name|slug }} = ! {{ item.name|slug('') }}" class="flex items-center justify-center gap-3 px-3 py-2 rounded-lg font-medium transition hover:bg-psc-500 focus:bg-psc-500 hover:text-white focus:text-white" {{ macros.attributes(item.linkAttributes) }}>
|
<a x-on:click="{{ item.name|slug }} = ! {{ item.name|slug('') }}" class="flex items-center justify-center gap-3 px-3 p-1 rounded-lg font-medium transition hover:bg-psc-500 focus:bg-psc-500 hover:text-white focus:text-white" {{ macros.attributes(item.linkAttributes) }}>
|
||||||
<i class="{{ item.getExtra('icon') }}"></i>
|
<i class="w-4 {{ item.getExtra('icon') }}"></i>
|
||||||
<div class="flex flex-1" x-show="$store.sideBar.isOpen">{{ block('label') }} {% if item.getExtra('error') > 0 %}<span class="badge bg-danger">({{ item.getExtra('error') }})</span>{% endif %}</div>
|
<div class="flex flex-1" x-show="$store.sideBar.isOpen">{{ block('label') }} {% if item.getExtra('error') > 0 %}<span class="badge bg-danger">({{ item.getExtra('error') }})</span>{% endif %}</div>
|
||||||
<b class="inline-flex items-center justify-center ml-auto rtl:ml-0 rtl:mr-auto min-h-4 px-2 py-0.5 text-xs font-medium tracking-tight rounded-xl whitespace-normal"><i class="fas fa-chevron-left"></i></b>
|
<b class="inline-flex items-center justify-center ml-auto rtl:ml-0 rtl:mr-auto min-h-4 px-2 py-0.5 text-xs font-medium tracking-tight rounded-xl whitespace-normal"><i class="fas fa-chevron-left"></i></b>
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="flex items-center justify-center gap-3 px-3 py-2 rounded-lg font-medium transition hover:bg-psc-500 focus:bg-psc-500 hover:text-white focus:text-white" id="{{ item.label }}" title="{{ item.label }}" href="{{ item.uri }}"{{ macros.attributes(item.linkAttributes) }}>
|
<a class="flex items-center justify-center gap-3 px-3 p-1 rounded-lg font-medium transition hover:bg-psc-500 focus:bg-psc-500 hover:text-white focus:text-white" id="{{ item.label }}" title="{{ item.label }}" href="{{ item.uri }}"{{ macros.attributes(item.linkAttributes) }}>
|
||||||
<i class="{{ item.getExtra('icon') }}"></i>
|
<i class="w-4 {{ item.getExtra('icon') }}"></i>
|
||||||
<div class="flex flex-1" x-show="$store.sideBar.isOpen">{{ block('label') }} {% if item.getExtra('error') > 0 %}<span class="badge bg-danger">({{ item.getExtra('error') }})</span>{% endif %}</div>
|
<div class="flex flex-1" x-show="$store.sideBar.isOpen">{{ block('label') }} {% if item.getExtra('error') > 0 %}<span class="badge bg-danger">({{ item.getExtra('error') }})</span>{% endif %}</div>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@ -1,15 +1,17 @@
|
|||||||
{% if domain %}
|
<select class="text-gray-900 transition duration-75 rounded-lg shadow-sm outline-none focus:border-primary-500 focus:ring-1 focus:ring-inset focus:ring-primary-500 disabled:opacity-70 border-gray-300" onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">
|
||||||
<a target="_blank" href="https://{{ domain }}" class="text-psc-500" title="Shop anzeigen">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline w-6 h-6">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15.59 14.37a6 6 0 01-5.84 7.38v-4.8m5.84-2.58a14.98 14.98 0 006.16-12.12A14.98 14.98 0 009.631 8.41m5.96 5.96a14.926 14.926 0 01-5.841 2.58m-.119-8.54a6 6 0 00-7.381 5.84h4.8m2.581-5.84a14.927 14.927 0 00-2.58 5.84m2.699 2.7c-.103.021-.207.041-.311.06a15.09 15.09 0 01-2.448-2.448 14.9 14.9 0 01.06-.312m-2.24 2.39a4.493 4.493 0 00-1.757 4.306 4.493 4.493 0 004.306-1.758M16.5 9a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0z" />
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
<select class="text-gray-900 transition duration-75 rounded-lg shadow-sm outline-none focus:border-primary-500 focus:ring-1 focus:ring-inset focus:ring-primary-500 disabled:opacity-70 border-gray-300" onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">
|
|
||||||
{% for shop in shops %}
|
{% for shop in shops %}
|
||||||
{% if displayDeletedShop == true or shop.deleted == false %}
|
{% if displayDeletedShop == true or shop.deleted == false %}
|
||||||
<option {% if selectedShop.uid == shop.uid %}selected{% endif %} value="{{ path('psc_backend_dashboard_shop_change', {'shop_uuid': shop.uid}) }}">{{ shop.title }}</option>
|
<option {% if selectedShop.uid == shop.uid %}selected{% endif %} value="{{ path('psc_backend_dashboard_shop_change', {'shop_uuid': shop.uid}) }}">{{ shop.title }}</option>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
<input type="checkbox" class=" border-gray-300 rounded shadow-sm text-primary-600 outline-none focus:ring focus:ring-primary-200 focus:ring-opacity-50" onchange="window.location='{{ path('psc_backend_dashboard_toogle_deleted_shop') }}'" {% if displayDeletedShop %}checked="checked"{% endif %}/> Deaktive Shops zeigen
|
{% if domain %}
|
||||||
|
<a target="_blank" href="https://{{ domain }}" class="text-psc-500" title="Shop anzeigen">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="inline w-6 h-6">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" d="M15.59 14.37a6 6 0 01-5.84 7.38v-4.8m5.84-2.58a14.98 14.98 0 006.16-12.12A14.98 14.98 0 009.631 8.41m5.96 5.96a14.926 14.926 0 01-5.841 2.58m-.119-8.54a6 6 0 00-7.381 5.84h4.8m2.581-5.84a14.927 14.927 0 00-2.58 5.84m2.699 2.7c-.103.021-.207.041-.311.06a15.09 15.09 0 01-2.448-2.448 14.9 14.9 0 01.06-.312m-2.24 2.39a4.493 4.493 0 00-1.757 4.306 4.493 4.493 0 004.306-1.758M16.5 9a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0z" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
<span class="hidden md:inline"><input type="checkbox" class=" border-gray-300 rounded shadow-sm text-primary-600 outline-none focus:ring focus:ring-primary-200 focus:ring-opacity-50" onchange="window.location='{{ path('psc_backend_dashboard_toogle_deleted_shop') }}'" {% if displayDeletedShop %}checked="checked"{% endif %}/> Deaktive Shops zeigen</span>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,4 +2,5 @@ Infotxt1: "Beim Domainprovider den DNS Eintrag anpassen (Nur den A Record (IP4),
|
|||||||
Infotxt2: Die Domain hier (ohne www) ergänzen.
|
Infotxt2: Die Domain hier (ohne www) ergänzen.
|
||||||
Infotxt3: Domains Synchronsieren betätigen, sobald der DNS Eintrag im Internet bekannt ist (wird hier in der Liste dann als DNS OK angezeigt).
|
Infotxt3: Domains Synchronsieren betätigen, sobald der DNS Eintrag im Internet bekannt ist (wird hier in der Liste dann als DNS OK angezeigt).
|
||||||
Infotxt4: "ACHTUNG: Damit die Synchronisation funktioniert, müssen alle Domains aller Shops mit DNS OK angezeigt werden."
|
Infotxt4: "ACHTUNG: Damit die Synchronisation funktioniert, müssen alle Domains aller Shops mit DNS OK angezeigt werden."
|
||||||
|
Infotxt5: "ACHTUNG: Ohne Domain lassen sich manche Backoffice-Bereiche nicht öffnen."
|
||||||
help: Hilfe
|
help: Hilfe
|
||||||
@ -59,6 +59,7 @@
|
|||||||
<li>{{ 'Infotxt2'|trans|raw }}</li>
|
<li>{{ 'Infotxt2'|trans|raw }}</li>
|
||||||
<li>{{ 'Infotxt3'|trans|raw }}</li>
|
<li>{{ 'Infotxt3'|trans|raw }}</li>
|
||||||
<li>{{ 'Infotxt4'|trans|raw }}</li>
|
<li>{{ 'Infotxt4'|trans|raw }}</li>
|
||||||
|
<li>{{ 'Infotxt5'|trans|raw }}</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -23,7 +23,7 @@ class DomainSync
|
|||||||
{
|
{
|
||||||
private $projectDir;
|
private $projectDir;
|
||||||
private $domains = [];
|
private $domains = [];
|
||||||
/**
|
/**
|
||||||
* @var EntityManagerInterface
|
* @var EntityManagerInterface
|
||||||
*/
|
*/
|
||||||
private EntityManagerInterface $entityManager;
|
private EntityManagerInterface $entityManager;
|
||||||
@ -50,13 +50,13 @@ class DomainSync
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function syncDomains()
|
public function syncDomains(): void
|
||||||
{
|
{
|
||||||
|
|
||||||
$domains = $this->entityManager
|
$domains = $this->entityManager
|
||||||
->getRepository('PSC\Shop\EntityBundle\Entity\Domain')->findAll();
|
->getRepository('PSC\Shop\EntityBundle\Entity\Domain')->findAll();
|
||||||
$this->domains = [];
|
$this->domains = [];
|
||||||
/** @var Domain $domain */
|
/** @var Domain $domain */
|
||||||
foreach ($domains as $domain) {
|
foreach ($domains as $domain) {
|
||||||
if ($this->isDnsOk($domain->getIp())) {
|
if ($this->isDnsOk($domain->getIp())) {
|
||||||
$this->domains[] = $domain->getHost();
|
$this->domains[] = $domain->getHost();
|
||||||
|
|||||||
@ -20,7 +20,7 @@ class ConfigureMenuListener
|
|||||||
public function onMenuConfigureMain(ConfigureMenuEvent $event)
|
public function onMenuConfigureMain(ConfigureMenuEvent $event)
|
||||||
{
|
{
|
||||||
$menu = $event->getMenu();
|
$menu = $event->getMenu();
|
||||||
if ($this->authorizationChecker->isGranted('ROLE_ADMIN')) {
|
if (false && $this->authorizationChecker->isGranted('ROLE_ADMIN')) {
|
||||||
$menu->addChild('createShop', array(
|
$menu->addChild('createShop', array(
|
||||||
'route' => 'psc_shop_create_backend_start_index',
|
'route' => 'psc_shop_create_backend_start_index',
|
||||||
'label' => 'Shop erstellen',
|
'label' => 'Shop erstellen',
|
||||||
|
|||||||
177
src/new/src/PSC/Shop/EntityBundle/Document/Embed/Operator.php
Normal file
177
src/new/src/PSC/Shop/EntityBundle/Document/Embed/Operator.php
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PSC\Shop\EntityBundle\Document\Embed;
|
||||||
|
|
||||||
|
use Doctrine\ODM\MongoDB\Mapping\Annotations\EmbeddedDocument;
|
||||||
|
use Doctrine\ODM\MongoDB\Mapping\Annotations\Field;
|
||||||
|
|
||||||
|
#[EmbeddedDocument]
|
||||||
|
class Operator
|
||||||
|
{
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $company = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $email = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $lastname = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $firstname = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $iban = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $phone = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $mobilePhone = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $ustId = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $steuerId = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $street = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $houseNumber = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $zip = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $country = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $city = "";
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
private ?string $lid = "";
|
||||||
|
|
||||||
|
|
||||||
|
public function getCompany(): ?string
|
||||||
|
{
|
||||||
|
return $this->company;
|
||||||
|
}
|
||||||
|
public function setCompany(?string $var): void
|
||||||
|
{
|
||||||
|
$this->company = $var;
|
||||||
|
}
|
||||||
|
public function setEmail(?string $email): void
|
||||||
|
{
|
||||||
|
$this->email = $email;
|
||||||
|
}
|
||||||
|
public function getEmail(): ?string
|
||||||
|
{
|
||||||
|
return $this->email;
|
||||||
|
}
|
||||||
|
public function setLastname(?string $lastname): void
|
||||||
|
{
|
||||||
|
$this->lastname = $lastname;
|
||||||
|
}
|
||||||
|
public function getLastname(): ?string
|
||||||
|
{
|
||||||
|
return $this->lastname;
|
||||||
|
}
|
||||||
|
public function setFirstname(?string $firstname): void
|
||||||
|
{
|
||||||
|
$this->firstname = $firstname;
|
||||||
|
}
|
||||||
|
public function getFirstname(): ?string
|
||||||
|
{
|
||||||
|
return $this->firstname;
|
||||||
|
}
|
||||||
|
public function setIban(?string $iban): void
|
||||||
|
{
|
||||||
|
$this->iban = $iban;
|
||||||
|
}
|
||||||
|
public function getIban(): ?string
|
||||||
|
{
|
||||||
|
return $this->iban;
|
||||||
|
}
|
||||||
|
public function setPhone(?string $phone): void
|
||||||
|
{
|
||||||
|
$this->phone = $phone;
|
||||||
|
}
|
||||||
|
public function getPhone(): ?string
|
||||||
|
{
|
||||||
|
return $this->phone;
|
||||||
|
}
|
||||||
|
public function setUstId(?string $ustId): void
|
||||||
|
{
|
||||||
|
$this->ustId = $ustId;
|
||||||
|
}
|
||||||
|
public function getUstId(): ?string
|
||||||
|
{
|
||||||
|
return $this->ustId;
|
||||||
|
}
|
||||||
|
public function setStreet(?string $street): void
|
||||||
|
{
|
||||||
|
$this->street = $street;
|
||||||
|
}
|
||||||
|
public function getStreet(): ?string
|
||||||
|
{
|
||||||
|
return $this->street;
|
||||||
|
}
|
||||||
|
public function setHouseNumber(?string $houseNumber): void
|
||||||
|
{
|
||||||
|
$this->houseNumber = $houseNumber;
|
||||||
|
}
|
||||||
|
public function getHouseNumber(): ?string
|
||||||
|
{
|
||||||
|
return $this->houseNumber;
|
||||||
|
}
|
||||||
|
public function setZip(?string $zip): void
|
||||||
|
{
|
||||||
|
$this->zip = $zip;
|
||||||
|
}
|
||||||
|
public function getZip(): ?string
|
||||||
|
{
|
||||||
|
return $this->zip;
|
||||||
|
}
|
||||||
|
public function setCity(?string $city): void
|
||||||
|
{
|
||||||
|
$this->city = $city;
|
||||||
|
}
|
||||||
|
public function getCity(): ?string
|
||||||
|
{
|
||||||
|
return $this->city;
|
||||||
|
}
|
||||||
|
public function setCountry(?string $country): void
|
||||||
|
{
|
||||||
|
$this->country = $country;
|
||||||
|
}
|
||||||
|
public function getCountry(): ?string
|
||||||
|
{
|
||||||
|
return $this->country;
|
||||||
|
}
|
||||||
|
public function setSteuerId(?string $steuerId): void
|
||||||
|
{
|
||||||
|
$this->steuerId = $steuerId;
|
||||||
|
}
|
||||||
|
public function getSteuerId(): ?string
|
||||||
|
{
|
||||||
|
return $this->steuerId;
|
||||||
|
}
|
||||||
|
public function setMobilePhone(?string $mobilePhone): void
|
||||||
|
{
|
||||||
|
$this->mobilePhone = $mobilePhone;
|
||||||
|
}
|
||||||
|
public function getMobilePhone(): ?string
|
||||||
|
{
|
||||||
|
return $this->mobilePhone;
|
||||||
|
}
|
||||||
|
public function setLid(?string $lid): void
|
||||||
|
{
|
||||||
|
$this->lid = $lid;
|
||||||
|
}
|
||||||
|
public function getLid(): ?string
|
||||||
|
{
|
||||||
|
return $this->lid;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,22 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
|
||||||
* PrintshopCreator Suite
|
|
||||||
*
|
|
||||||
* PHP Version 5.3
|
|
||||||
*
|
|
||||||
* @author Thomas Peterson <info@thomas-peterson.de>
|
|
||||||
* @copyright 2012-2013 PrintshopCreator GmbH
|
|
||||||
* @license Private
|
|
||||||
* @link http://www.printshopcreator.de
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace PSC\Shop\EntityBundle\Document;
|
namespace PSC\Shop\EntityBundle\Document;
|
||||||
|
|
||||||
use Doctrine\ODM\MongoDB\Mapping\Annotations\Field;
|
use Doctrine\ODM\MongoDB\Mapping\Annotations\Field;
|
||||||
use Doctrine\ODM\MongoDB\Mapping\Annotations\Id;
|
use Doctrine\ODM\MongoDB\Mapping\Annotations\Id;
|
||||||
use Doctrine\ODM\MongoDB\Mapping\Annotations\Document;
|
use Doctrine\ODM\MongoDB\Mapping\Annotations\Document;
|
||||||
use Doctrine\ODM\MongoDB\Mapping\Annotations\EmbedOne;
|
use Doctrine\ODM\MongoDB\Mapping\Annotations\EmbedOne;
|
||||||
|
use PSC\Shop\EntityBundle\Document\Embed\Operator;
|
||||||
|
|
||||||
#[Document]
|
#[Document]
|
||||||
class Order
|
class Order
|
||||||
@ -88,6 +78,8 @@ class Order
|
|||||||
protected $deliveryAddressSaved;
|
protected $deliveryAddressSaved;
|
||||||
#[EmbedOne]
|
#[EmbedOne]
|
||||||
protected $senderAddressSaved;
|
protected $senderAddressSaved;
|
||||||
|
#[EmbedOne]
|
||||||
|
protected ?Operator $operator = null;
|
||||||
|
|
||||||
#[EmbedOne]
|
#[EmbedOne]
|
||||||
protected $contactSaved;
|
protected $contactSaved;
|
||||||
@ -364,4 +356,12 @@ class Order
|
|||||||
{
|
{
|
||||||
return $this->vouchers;
|
return $this->vouchers;
|
||||||
}
|
}
|
||||||
|
public function setOperator(?Operator $operator): void
|
||||||
|
{
|
||||||
|
$this->operator = $operator;
|
||||||
|
}
|
||||||
|
public function getOperator(): ?Operator
|
||||||
|
{
|
||||||
|
return $this->operator;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,6 +17,7 @@ use Doctrine\ODM\MongoDB\Mapping\Annotations\Field;
|
|||||||
use Doctrine\ODM\MongoDB\Mapping\Annotations\Id;
|
use Doctrine\ODM\MongoDB\Mapping\Annotations\Id;
|
||||||
use Doctrine\ODM\MongoDB\Mapping\Annotations\Document;
|
use Doctrine\ODM\MongoDB\Mapping\Annotations\Document;
|
||||||
use PSC\Shop\ContactBundle\Model\Address;
|
use PSC\Shop\ContactBundle\Model\Address;
|
||||||
|
use PSC\Shop\EntityBundle\Document\Embed\Operator;
|
||||||
|
|
||||||
#[Document]
|
#[Document]
|
||||||
class Shop
|
class Shop
|
||||||
@ -514,6 +515,8 @@ class Shop
|
|||||||
#[Field(type: 'string')]
|
#[Field(type: 'string')]
|
||||||
protected $senderMobile;
|
protected $senderMobile;
|
||||||
#[Field(type: 'string')]
|
#[Field(type: 'string')]
|
||||||
|
protected $senderPhone;
|
||||||
|
#[Field(type: 'string')]
|
||||||
protected $senderEmail;
|
protected $senderEmail;
|
||||||
#[Field(type: 'string')]
|
#[Field(type: 'string')]
|
||||||
protected $senderIban;
|
protected $senderIban;
|
||||||
@ -3212,7 +3215,7 @@ class Shop
|
|||||||
return (string)$this->senderIban;
|
return (string)$this->senderIban;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setSenderIban(string $var): void
|
public function setSenderIban(?string $var): void
|
||||||
{
|
{
|
||||||
$this->senderIban = $var;
|
$this->senderIban = $var;
|
||||||
}
|
}
|
||||||
@ -3222,7 +3225,7 @@ class Shop
|
|||||||
return (string)$this->senderLId;
|
return (string)$this->senderLId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setSenderLId(string $var): void
|
public function setSenderLId(?string $var): void
|
||||||
{
|
{
|
||||||
$this->senderLId = $var;
|
$this->senderLId = $var;
|
||||||
}
|
}
|
||||||
@ -3232,7 +3235,7 @@ class Shop
|
|||||||
return (string)$this->senderUstId;
|
return (string)$this->senderUstId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setSenderUstId(string $var): void
|
public function setSenderUstId(?string $var): void
|
||||||
{
|
{
|
||||||
$this->senderUstId = $var;
|
$this->senderUstId = $var;
|
||||||
}
|
}
|
||||||
@ -3242,9 +3245,40 @@ class Shop
|
|||||||
return (string)$this->senderSteuerId;
|
return (string)$this->senderSteuerId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setSenderSteuerId(string $var): void
|
public function setSenderSteuerId(?string $var): void
|
||||||
{
|
{
|
||||||
$this->senderSteuerId = $var;
|
$this->senderSteuerId = $var;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getSenderPhone(): string
|
||||||
|
{
|
||||||
|
return (string)$this->senderPhone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSenderPhone(?string $var): void
|
||||||
|
{
|
||||||
|
$this->senderPhone = $var;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOperator(): Operator
|
||||||
|
{
|
||||||
|
$operator = new Operator();
|
||||||
|
$operator->setIban($this->senderIban);
|
||||||
|
$operator->setSteuerId($this->senderSteuerId);
|
||||||
|
$operator->setUstId($this->senderUstId);
|
||||||
|
$operator->setLid($this->senderLId);
|
||||||
|
$operator->setFirstname($this->senderFirstname);
|
||||||
|
$operator->setLastname($this->senderLastname);
|
||||||
|
$operator->setCompany($this->senderCompany);
|
||||||
|
$operator->setPhone($this->senderPhone);
|
||||||
|
$operator->setMobilePhone($this->senderMobile);
|
||||||
|
$operator->setEmail($this->senderEmail);
|
||||||
|
$operator->setStreet($this->senderStreet);
|
||||||
|
$operator->setHouseNumber($this->senderHouseNumber);
|
||||||
|
$operator->setZip($this->senderZip);
|
||||||
|
$operator->setCity($this->senderCity);
|
||||||
|
$operator->setCountry($this->senderCountry);
|
||||||
|
|
||||||
|
return $operator;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,7 @@ use PSC\Shop\AccountBundle\Model\Account;
|
|||||||
use PSC\Shop\ContactBundle\Model\Address;
|
use PSC\Shop\ContactBundle\Model\Address;
|
||||||
use PSC\Shop\ContactBundle\Model\Contact;
|
use PSC\Shop\ContactBundle\Model\Contact;
|
||||||
use PSC\Shop\OrderBundle\Model\Order\Discount;
|
use PSC\Shop\OrderBundle\Model\Order\Discount;
|
||||||
|
use PSC\Shop\OrderBundle\Model\Order\Operator;
|
||||||
use PSC\Shop\PaymentBundle\Model\Payment;
|
use PSC\Shop\PaymentBundle\Model\Payment;
|
||||||
use PSC\Shop\OrderBundle\Model\Order\Position;
|
use PSC\Shop\OrderBundle\Model\Order\Position;
|
||||||
use PSC\Shop\ShippingBundle\Model\Shipping;
|
use PSC\Shop\ShippingBundle\Model\Shipping;
|
||||||
@ -42,11 +43,13 @@ abstract class Base
|
|||||||
*/
|
*/
|
||||||
#[\OpenApi\Attributes\Property(ref: new Model(type: \PSC\Shop\ContactBundle\Model\Address::class))]
|
#[\OpenApi\Attributes\Property(ref: new Model(type: \PSC\Shop\ContactBundle\Model\Address::class))]
|
||||||
private $deliveryAddress;
|
private $deliveryAddress;
|
||||||
/**
|
|
||||||
* @var Address
|
|
||||||
*/
|
|
||||||
#[\OpenApi\Attributes\Property(ref: new Model(type: \PSC\Shop\ContactBundle\Model\Address::class))]
|
#[\OpenApi\Attributes\Property(ref: new Model(type: \PSC\Shop\ContactBundle\Model\Address::class))]
|
||||||
private $senderAddress;
|
private Address $senderAddress;
|
||||||
|
|
||||||
|
#[\OpenApi\Attributes\Property(ref: new Model(type: Operator::class), nullable: true)]
|
||||||
|
private ?Operator $operator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Address
|
* @var Address
|
||||||
*/
|
*/
|
||||||
@ -204,6 +207,7 @@ abstract class Base
|
|||||||
$this->basketField2 = "";
|
$this->basketField2 = "";
|
||||||
$this->status = 10;
|
$this->status = 10;
|
||||||
$this->pluginSettings = [];
|
$this->pluginSettings = [];
|
||||||
|
$this->operator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getTypeAsString(): string
|
public function getTypeAsString(): string
|
||||||
@ -837,4 +841,12 @@ abstract class Base
|
|||||||
return $this->vatWithDiscount;
|
return $this->vatWithDiscount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setOperator(?Operator $operator): void
|
||||||
|
{
|
||||||
|
$this->operator = $operator;
|
||||||
|
}
|
||||||
|
public function getOperator(): ?Operator
|
||||||
|
{
|
||||||
|
return $this->operator;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
173
src/new/src/PSC/Shop/OrderBundle/Model/Order/Operator.php
Normal file
173
src/new/src/PSC/Shop/OrderBundle/Model/Order/Operator.php
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PSC\Shop\OrderBundle\Model\Order;
|
||||||
|
|
||||||
|
use OpenApi\Attributes\Property;
|
||||||
|
|
||||||
|
class Operator
|
||||||
|
{
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $company = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $email = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $lastname = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $firstname = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $iban = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $phone = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $mobilePhone = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $ustId = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $steuerId = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $street = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $houseNumber = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $zip = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $country = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $city = "";
|
||||||
|
|
||||||
|
#[Property(type: 'string')]
|
||||||
|
private ?string $lid = "";
|
||||||
|
|
||||||
|
public function getCompany(): ?string
|
||||||
|
{
|
||||||
|
return $this->company;
|
||||||
|
}
|
||||||
|
public function setCompany(?string $var): void
|
||||||
|
{
|
||||||
|
$this->company = $var;
|
||||||
|
}
|
||||||
|
public function setEmail(?string $email): void
|
||||||
|
{
|
||||||
|
$this->email = $email;
|
||||||
|
}
|
||||||
|
public function getEmail(): ?string
|
||||||
|
{
|
||||||
|
return $this->email;
|
||||||
|
}
|
||||||
|
public function setLastname(?string $lastname): void
|
||||||
|
{
|
||||||
|
$this->lastname = $lastname;
|
||||||
|
}
|
||||||
|
public function getLastname(): ?string
|
||||||
|
{
|
||||||
|
return $this->lastname;
|
||||||
|
}
|
||||||
|
public function setFirstname(?string $firstname): void
|
||||||
|
{
|
||||||
|
$this->firstname = $firstname;
|
||||||
|
}
|
||||||
|
public function getFirstname(): ?string
|
||||||
|
{
|
||||||
|
return $this->firstname;
|
||||||
|
}
|
||||||
|
public function setIban(?string $iban): void
|
||||||
|
{
|
||||||
|
$this->iban = $iban;
|
||||||
|
}
|
||||||
|
public function getIban(): ?string
|
||||||
|
{
|
||||||
|
return $this->iban;
|
||||||
|
}
|
||||||
|
public function setPhone(?string $phone): void
|
||||||
|
{
|
||||||
|
$this->phone = $phone;
|
||||||
|
}
|
||||||
|
public function getPhone(): ?string
|
||||||
|
{
|
||||||
|
return $this->phone;
|
||||||
|
}
|
||||||
|
public function setUstId(?string $ustId): void
|
||||||
|
{
|
||||||
|
$this->ustId = $ustId;
|
||||||
|
}
|
||||||
|
public function getUstId(): ?string
|
||||||
|
{
|
||||||
|
return $this->ustId;
|
||||||
|
}
|
||||||
|
public function setStreet(?string $street): void
|
||||||
|
{
|
||||||
|
$this->street = $street;
|
||||||
|
}
|
||||||
|
public function getStreet(): ?string
|
||||||
|
{
|
||||||
|
return $this->street;
|
||||||
|
}
|
||||||
|
public function setHouseNumber(?string $houseNumber): void
|
||||||
|
{
|
||||||
|
$this->houseNumber = $houseNumber;
|
||||||
|
}
|
||||||
|
public function getHouseNumber(): ?string
|
||||||
|
{
|
||||||
|
return $this->houseNumber;
|
||||||
|
}
|
||||||
|
public function setZip(?string $zip): void
|
||||||
|
{
|
||||||
|
$this->zip = $zip;
|
||||||
|
}
|
||||||
|
public function getZip(): ?string
|
||||||
|
{
|
||||||
|
return $this->zip;
|
||||||
|
}
|
||||||
|
public function setCity(?string $city): void
|
||||||
|
{
|
||||||
|
$this->city = $city;
|
||||||
|
}
|
||||||
|
public function getCity(): ?string
|
||||||
|
{
|
||||||
|
return $this->city;
|
||||||
|
}
|
||||||
|
public function setCountry(?string $country): void
|
||||||
|
{
|
||||||
|
$this->country = $country;
|
||||||
|
}
|
||||||
|
public function getCountry(): ?string
|
||||||
|
{
|
||||||
|
return $this->country;
|
||||||
|
}
|
||||||
|
public function setSteuerId(?string $steuerId): void
|
||||||
|
{
|
||||||
|
$this->steuerId = $steuerId;
|
||||||
|
}
|
||||||
|
public function getSteuerId(): ?string
|
||||||
|
{
|
||||||
|
return $this->steuerId;
|
||||||
|
}
|
||||||
|
public function setMobilePhone(?string $mobilePhone): void
|
||||||
|
{
|
||||||
|
$this->mobilePhone = $mobilePhone;
|
||||||
|
}
|
||||||
|
public function getMobilePhone(): ?string
|
||||||
|
{
|
||||||
|
return $this->mobilePhone;
|
||||||
|
}
|
||||||
|
public function setLid(?string $lid): void
|
||||||
|
{
|
||||||
|
$this->lid = $lid;
|
||||||
|
}
|
||||||
|
public function getLid():?string {
|
||||||
|
return $this->lid;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -5,10 +5,13 @@ namespace PSC\Shop\OrderBundle\Transformer;
|
|||||||
use PSC\Shop\ContactBundle\Transformer\Order\Address;
|
use PSC\Shop\ContactBundle\Transformer\Order\Address;
|
||||||
use PSC\Shop\ContactBundle\Transformer\Order\Contact;
|
use PSC\Shop\ContactBundle\Transformer\Order\Contact;
|
||||||
use PSC\Shop\EntityBundle\Document\Embed\ContactAddress;
|
use PSC\Shop\EntityBundle\Document\Embed\ContactAddress;
|
||||||
|
use PSC\Shop\EntityBundle\Document\Embed\Operator as PSCOperator;
|
||||||
use PSC\Shop\OrderBundle\Model\Order\Discount;
|
use PSC\Shop\OrderBundle\Model\Order\Discount;
|
||||||
|
use PSC\Shop\OrderBundle\Model\Order\Operator as AliasedOperator;
|
||||||
use PSC\Shop\OrderBundle\Model\Order\Tax;
|
use PSC\Shop\OrderBundle\Model\Order\Tax;
|
||||||
use PSC\Shop\OrderBundle\Model\Order\TaxEnum;
|
use PSC\Shop\OrderBundle\Model\Order\TaxEnum;
|
||||||
use PSC\Shop\OrderBundle\Transformer\Order\Account;
|
use PSC\Shop\OrderBundle\Transformer\Order\Account;
|
||||||
|
use PSC\Shop\OrderBundle\Transformer\Order\Operator;
|
||||||
use PSC\Shop\PaymentBundle\Transformer\Payment;
|
use PSC\Shop\PaymentBundle\Transformer\Payment;
|
||||||
use PSC\Shop\ShippingBundle\Transformer\Shipping;
|
use PSC\Shop\ShippingBundle\Transformer\Shipping;
|
||||||
use PSC\Shop\VoucherBundle\Model\Voucher;
|
use PSC\Shop\VoucherBundle\Model\Voucher;
|
||||||
@ -29,12 +32,14 @@ class Order extends Base
|
|||||||
|
|
||||||
private Payment $paymentTransformer;
|
private Payment $paymentTransformer;
|
||||||
|
|
||||||
|
private Operator $operatorTransformer;
|
||||||
|
|
||||||
private SerializerInterface $serializer;
|
private SerializerInterface $serializer;
|
||||||
private Shipping $shippingTransformer;
|
private Shipping $shippingTransformer;
|
||||||
private \PSC\Component\ApiBundle\Transformer\Shop $shopTransformer;
|
private \PSC\Component\ApiBundle\Transformer\Shop $shopTransformer;
|
||||||
|
|
||||||
#[\Symfony\Contracts\Service\Attribute\Required]
|
#[\Symfony\Contracts\Service\Attribute\Required]
|
||||||
public function setAddressTransformer(SerializerInterface $serializer, Address $addressTransformer, Contact $contactTransformer, Account $accountTransformer, Payment $paymentTransformer, Shipping $shippingTransformer, \PSC\Component\ApiBundle\Transformer\Shop $shopTransformer)
|
public function setAddressTransformer(SerializerInterface $serializer, Address $addressTransformer, Contact $contactTransformer, Account $accountTransformer, Payment $paymentTransformer, Shipping $shippingTransformer, \PSC\Component\ApiBundle\Transformer\Shop $shopTransformer, Operator $operatorTransformer)
|
||||||
{
|
{
|
||||||
$this->addressTransformer = $addressTransformer;
|
$this->addressTransformer = $addressTransformer;
|
||||||
$this->contactTransformer = $contactTransformer;
|
$this->contactTransformer = $contactTransformer;
|
||||||
@ -43,9 +48,10 @@ class Order extends Base
|
|||||||
$this->shippingTransformer = $shippingTransformer;
|
$this->shippingTransformer = $shippingTransformer;
|
||||||
$this->shopTransformer = $shopTransformer;
|
$this->shopTransformer = $shopTransformer;
|
||||||
$this->serializer = $serializer;
|
$this->serializer = $serializer;
|
||||||
|
$this->operatorTransformer = $operatorTransformer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function fromDb(\PSC\Shop\OrderBundle\Model\Base $order, \PSC\Shop\EntityBundle\Entity\Order $orderEntity, \PSC\Shop\EntityBundle\Document\Order $orderDoc)
|
public function fromDb(\PSC\Shop\OrderBundle\Model\Base $order, \PSC\Shop\EntityBundle\Entity\Order $orderEntity, \PSC\Shop\EntityBundle\Document\Order $orderDoc): void
|
||||||
{
|
{
|
||||||
$order->setUuid($orderEntity->getUuid());
|
$order->setUuid($orderEntity->getUuid());
|
||||||
$order->setCreated($orderEntity->getCreated());
|
$order->setCreated($orderEntity->getCreated());
|
||||||
@ -110,6 +116,14 @@ class Order extends Base
|
|||||||
if ($orderDoc->getVouchers() != "") {
|
if ($orderDoc->getVouchers() != "") {
|
||||||
$order->setVouchers($this->serializer->deserialize($orderDoc->getVouchers(), Voucher::class.'[]', 'json'));
|
$order->setVouchers($this->serializer->deserialize($orderDoc->getVouchers(), Voucher::class.'[]', 'json'));
|
||||||
}
|
}
|
||||||
|
$operator = new AliasedOperator();
|
||||||
|
if ($orderDoc->getOperator() != null) {
|
||||||
|
$this->operatorTransformer->fromDb($operator, $orderDoc->getOperator());
|
||||||
|
} else {
|
||||||
|
$this->operatorTransformer->fromFallBackDb($operator, $order->getShop());
|
||||||
|
}
|
||||||
|
$order->setOperator($operator);
|
||||||
|
|
||||||
if ($orderDoc->getDiscounts() != "") {
|
if ($orderDoc->getDiscounts() != "") {
|
||||||
$net = 0;
|
$net = 0;
|
||||||
$gross = 0;
|
$gross = 0;
|
||||||
@ -126,7 +140,7 @@ class Order extends Base
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function toDb(\PSC\Shop\OrderBundle\Model\Base $order, \PSC\Shop\EntityBundle\Entity\Order $orderEntity, \PSC\Shop\EntityBundle\Document\Order $orderDoc)
|
public function toDb(\PSC\Shop\OrderBundle\Model\Base $order, \PSC\Shop\EntityBundle\Entity\Order $orderEntity, \PSC\Shop\EntityBundle\Document\Order $orderDoc): void
|
||||||
{
|
{
|
||||||
$orderEntity->setUuid($order->getUuid());
|
$orderEntity->setUuid($order->getUuid());
|
||||||
$orderEntity->setCreated(new \DateTime());
|
$orderEntity->setCreated(new \DateTime());
|
||||||
@ -178,6 +192,16 @@ class Order extends Base
|
|||||||
$order->setSenderAddress($this->shopService->getMongoShopByUid($shopEntity->getUID())->getSenderAddress());
|
$order->setSenderAddress($this->shopService->getMongoShopByUid($shopEntity->getUID())->getSenderAddress());
|
||||||
}
|
}
|
||||||
$this->addressTransformer->toDb($order->getSenderAddress(), $senderDoc);
|
$this->addressTransformer->toDb($order->getSenderAddress(), $senderDoc);
|
||||||
|
|
||||||
|
if ($order->getOperator()) {
|
||||||
|
$operatorDoc = new PSCOperator();
|
||||||
|
$this->operatorTransformer->toDb($order->getOperator(), $operatorDoc);
|
||||||
|
$orderDoc->setOperator($operatorDoc);
|
||||||
|
} else {
|
||||||
|
$shopDoc = $this->shopService->getMongoShopByUid($order->getShop()->getId());
|
||||||
|
$orderDoc->setOperator($shopDoc->getOperator());
|
||||||
|
}
|
||||||
|
|
||||||
$orderDoc->setSenderAddressSaved($senderDoc);
|
$orderDoc->setSenderAddressSaved($senderDoc);
|
||||||
$orderDoc->setExternalOrderNumber($order->getExternalOrderNumber());
|
$orderDoc->setExternalOrderNumber($order->getExternalOrderNumber());
|
||||||
$orderDoc->setDraft($order->isDraft());
|
$orderDoc->setDraft($order->isDraft());
|
||||||
|
|||||||
@ -0,0 +1,54 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PSC\Shop\OrderBundle\Transformer\Order;
|
||||||
|
|
||||||
|
use PSC\Component\ApiBundle\Model\Shop;
|
||||||
|
use PSC\Shop\EntityBundle\Document\Embed\Operator as PSCOperator;
|
||||||
|
use PSC\System\SettingsBundle\Service\Shop as PSCShop;
|
||||||
|
|
||||||
|
class Operator
|
||||||
|
{
|
||||||
|
public function __construct(private PSCShop $shopService)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function toDb(\PSC\Shop\OrderBundle\Model\Order\Operator $operator, PSCOperator $operatorDoc): void
|
||||||
|
{
|
||||||
|
$operatorDoc->setIban($operator->getIban());
|
||||||
|
$operatorDoc->setSteuerId($operator->getSteuerId());
|
||||||
|
$operatorDoc->setFirstname($operator->getFirstname());
|
||||||
|
$operatorDoc->setLastname($operator->getLastname());
|
||||||
|
$operatorDoc->setCompany($operator->getCompany());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function fromDb(\PSC\Shop\OrderBundle\Model\Order\Operator $operator, PSCOperator $operatorDoc): void
|
||||||
|
{
|
||||||
|
$operator->setIban($operatorDoc->getIban());
|
||||||
|
$operator->setSteuerId($operatorDoc->getSteuerId());
|
||||||
|
$operator->setFirstname($operatorDoc->getFirstname());
|
||||||
|
$operator->setLastname($operatorDoc->getLastname());
|
||||||
|
$operator->setCompany($operatorDoc->getCompany());
|
||||||
|
}
|
||||||
|
public function fromFallBackDb(\PSC\Shop\OrderBundle\Model\Order\Operator $operator, Shop $shop): void
|
||||||
|
{
|
||||||
|
$doc = $this->shopService->getMongoShopByUid($shop->getId());
|
||||||
|
if ($doc) {
|
||||||
|
|
||||||
|
$operator->setCompany($doc->getOperator()->getCompany());
|
||||||
|
$operator->setFirstname($doc->getOperator()->getFirstname());
|
||||||
|
$operator->setLastname($doc->getOperator()->getLastname());
|
||||||
|
$operator->setEmail($doc->getOperator()->getEmail());
|
||||||
|
$operator->setUstId($doc->getOperator()->getUstId());
|
||||||
|
$operator->setLid($doc->getOperator()->getLid());
|
||||||
|
$operator->setStreet($doc->getOperator()->getStreet());
|
||||||
|
$operator->setZip($doc->getOperator()->getZip());
|
||||||
|
$operator->setCity($doc->getOperator()->getCity());
|
||||||
|
$operator->setPhone($doc->getOperator()->getPhone());
|
||||||
|
$operator->setMobilePhone($doc->getOperator()->getMobilePhone());
|
||||||
|
$operator->setSteuerId($doc->getOperator()->getSteuerId());
|
||||||
|
$operator->setIban($doc->getOperator()->getIban());
|
||||||
|
$operator->setCountry($doc->getOperator()->getCountry());
|
||||||
|
$operator->setHouseNumber($doc->getOperator()->getHouseNumber());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -629,7 +629,7 @@ class EditController extends AbstractController
|
|||||||
);
|
);
|
||||||
|
|
||||||
$subProduct = false;
|
$subProduct = false;
|
||||||
if($product->getOriginalProduct() != 0) {
|
if ($product->getOriginalProduct() != 0) {
|
||||||
$subProduct = $entityManager->getRepository(Product::class)->find($product->getOriginalProduct());
|
$subProduct = $entityManager->getRepository(Product::class)->find($product->getOriginalProduct());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -64,11 +64,11 @@ class PermissionController extends AbstractController
|
|||||||
* @throws \Doctrine\ORM\ORMException
|
* @throws \Doctrine\ORM\ORMException
|
||||||
*/
|
*/
|
||||||
#[Route(path: '/permission/index/{product}', name: 'backend_production_product_permission_index')]
|
#[Route(path: '/permission/index/{product}', name: 'backend_production_product_permission_index')]
|
||||||
public function indexAction(Request $request, Shop $shopService, EntityManagerInterface $entityManager, PaginatorInterface $paginator, $product)
|
public function indexAction(Request $request, Shop $shopService, EntityManagerInterface $entityManager, PaginatorInterface $paginator, string $product)
|
||||||
{
|
{
|
||||||
|
|
||||||
$selectedShop = $shopService->getSelectedShop();
|
$selectedShop = $shopService->getSelectedShop();
|
||||||
/** @var Product $product */
|
/** @var Product $product */
|
||||||
$product = $entityManager
|
$product = $entityManager
|
||||||
->getRepository('PSC\Shop\EntityBundle\Entity\Product')->findOneBy(array('uuid' => $product, 'shop' => $selectedShop));
|
->getRepository('PSC\Shop\EntityBundle\Entity\Product')->findOneBy(array('uuid' => $product, 'shop' => $selectedShop));
|
||||||
$form = $this->createForm(PermissionType::class, $product);
|
$form = $this->createForm(PermissionType::class, $product);
|
||||||
|
|||||||
@ -19,7 +19,6 @@ use Lexik\Bundle\FormFilterBundle\Filter\FilterBuilderUpdaterInterface;
|
|||||||
use PSC\Shop\EntityBundle\Entity\Motiv;
|
use PSC\Shop\EntityBundle\Entity\Motiv;
|
||||||
use PSC\Shop\ProductBundle\Form\Backend\Productgroup\SearchType;
|
use PSC\Shop\ProductBundle\Form\Backend\Productgroup\SearchType;
|
||||||
use PSC\Shop\ProductBundle\Form\Backend\ProductSearchType;
|
use PSC\Shop\ProductBundle\Form\Backend\ProductSearchType;
|
||||||
use PSC\System\SettingsBundle\Service\DeprecatedFile;
|
|
||||||
use PSC\System\SettingsBundle\Service\Shop;
|
use PSC\System\SettingsBundle\Service\Shop;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||||
@ -53,7 +52,6 @@ class ListController extends AbstractController
|
|||||||
* @param Shop $shopService
|
* @param Shop $shopService
|
||||||
* @param EntityManagerInterface $entityManager
|
* @param EntityManagerInterface $entityManager
|
||||||
* @param PaginatorInterface $paginator
|
* @param PaginatorInterface $paginator
|
||||||
* @param DeprecatedFile $deprecatedFile
|
|
||||||
* @return array|View
|
* @return array|View
|
||||||
* @throws \Doctrine\ORM\ORMException
|
* @throws \Doctrine\ORM\ORMException
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -83,8 +83,8 @@ class EditController extends AbstractController
|
|||||||
$builder->add('submit', SubmitType::class, array('label' => 'Speichern'));
|
$builder->add('submit', SubmitType::class, array('label' => 'Speichern'));
|
||||||
$form = $builder->getForm();
|
$form = $builder->getForm();
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
|
||||||
$docQueue = new Queue();
|
$docQueue = new Queue();
|
||||||
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
$docQueue->setName($form->get('name')->getData());
|
$docQueue->setName($form->get('name')->getData());
|
||||||
$docQueue->setPos($form->get('pos')->getData());
|
$docQueue->setPos($form->get('pos')->getData());
|
||||||
$docQueue->setQueueType($queue->getType());
|
$docQueue->setQueueType($queue->getType());
|
||||||
@ -99,11 +99,11 @@ class EditController extends AbstractController
|
|||||||
|
|
||||||
$documentManager->persist($docQueue);
|
$documentManager->persist($docQueue);
|
||||||
$documentManager->flush();
|
$documentManager->flush();
|
||||||
return $this->redirectToRoute('psc_shop_queue_backend_list_index');
|
return $this->redirectToRoute('psc_shop_queue_backend_edit_edit', ['uuid' => $docQueue->getId()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return array('queue' => $queue, 'help' => [], 'form' => $form->createView());
|
return array('queue' => $queue, 'objQueue' => $docQueue, 'help' => [], 'form' => $form->createView());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -129,7 +129,7 @@ class EditController extends AbstractController
|
|||||||
$uuid
|
$uuid
|
||||||
) {
|
) {
|
||||||
$selectedShop = $shopService->getSelectedShop();
|
$selectedShop = $shopService->getSelectedShop();
|
||||||
/** @var \PSC\Shop\EntityBundle\Document\Queue $objQueue */
|
/** @var \PSC\Shop\EntityBundle\Document\Queue $objQueue */
|
||||||
$objQueue = $documentManager
|
$objQueue = $documentManager
|
||||||
->getRepository('PSC\Shop\EntityBundle\Document\Queue')
|
->getRepository('PSC\Shop\EntityBundle\Document\Queue')
|
||||||
->findOneBy(array('id' => (string)$uuid));
|
->findOneBy(array('id' => (string)$uuid));
|
||||||
@ -184,7 +184,7 @@ class EditController extends AbstractController
|
|||||||
$documentManager->flush();
|
$documentManager->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
return array('queue' => $queue , 'help' => $objEvent->getHelp(), 'form' => $form->createView(), 'event' => $objEvent);
|
return array('queue' => $queue , 'objQueue' => $objQueue, 'help' => $objEvent->getHelp(), 'form' => $form->createView(), 'event' => $objEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -223,7 +223,7 @@ class EditController extends AbstractController
|
|||||||
{
|
{
|
||||||
|
|
||||||
$obj = ['which' => 1];
|
$obj = ['which' => 1];
|
||||||
/** @var Queue $objQueue */
|
/** @var Queue $objQueue */
|
||||||
$objQueue = $documentManager
|
$objQueue = $documentManager
|
||||||
->getRepository('PSC\Shop\EntityBundle\Document\Queue')
|
->getRepository('PSC\Shop\EntityBundle\Document\Queue')
|
||||||
->findOneBy(array('id' => (string)$uuid));
|
->findOneBy(array('id' => (string)$uuid));
|
||||||
|
|||||||
@ -92,6 +92,7 @@ class ShopSettingsType extends AbstractType
|
|||||||
->add('senderTel', TextType::class, array('required' => false, 'label' => 'Phone'))
|
->add('senderTel', TextType::class, array('required' => false, 'label' => 'Phone'))
|
||||||
->add('senderFax', TextType::class, array('required' => false, 'label' => 'Fax'))
|
->add('senderFax', TextType::class, array('required' => false, 'label' => 'Fax'))
|
||||||
->add('senderMobile', TextType::class, array('required' => false, 'label' => 'mobilephonenumber'))
|
->add('senderMobile', TextType::class, array('required' => false, 'label' => 'mobilephonenumber'))
|
||||||
|
->add('senderPhone', TextType::class, array('required' => false, 'label' => 'phonenumber'))
|
||||||
->add('senderEmail', TextType::class, array('required' => false, 'label' => 'EMail'))
|
->add('senderEmail', TextType::class, array('required' => false, 'label' => 'EMail'))
|
||||||
->add('senderIban', TextType::class, array('required' => false, 'label' => 'Iban'))
|
->add('senderIban', TextType::class, array('required' => false, 'label' => 'Iban'))
|
||||||
->add('senderLId', TextType::class, array('required' => false, 'label' => 'Leitweg Id'))
|
->add('senderLId', TextType::class, array('required' => false, 'label' => 'Leitweg Id'))
|
||||||
|
|||||||
@ -62,6 +62,7 @@ Countries: Länder
|
|||||||
Street: Straße
|
Street: Straße
|
||||||
housenumber: Hausnummer
|
housenumber: Hausnummer
|
||||||
mobilephonenumber: Mobilnummer
|
mobilephonenumber: Mobilnummer
|
||||||
|
phonenumber: Telefonnummer
|
||||||
offer: Angebot
|
offer: Angebot
|
||||||
cancelation: Storno
|
cancelation: Storno
|
||||||
credit: Gutschrift
|
credit: Gutschrift
|
||||||
|
|||||||
@ -537,7 +537,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-6">
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<label class="col-md-3 form-control-label">
|
<label class="col-md-3 form-control-label">
|
||||||
{{ form_label(form.senderTel) }}
|
{{ form_label(form.senderTel) }}
|
||||||
@ -548,7 +548,7 @@
|
|||||||
{{ form_errors(form.senderTel) }}
|
{{ form_errors(form.senderTel) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-6">
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<label class="col-md-3 form-control-label">
|
<label class="col-md-3 form-control-label">
|
||||||
{{ form_label(form.senderFax) }}
|
{{ form_label(form.senderFax) }}
|
||||||
@ -559,7 +559,20 @@
|
|||||||
{{ form_errors(form.senderFax) }}
|
{{ form_errors(form.senderFax) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label class="col-md-3 form-control-label">
|
||||||
|
{{ form_label(form.senderPhone) }}
|
||||||
|
</label>
|
||||||
|
<div class="col-md-9">
|
||||||
|
{{ form_widget(form.senderPhone) }}
|
||||||
|
</div>
|
||||||
|
{{ form_errors(form.senderPhone) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<label class="col-md-3 form-control-label">
|
<label class="col-md-3 form-control-label">
|
||||||
{{ form_label(form.senderMobile) }}
|
{{ form_label(form.senderMobile) }}
|
||||||
@ -570,6 +583,7 @@
|
|||||||
{{ form_errors(form.senderMobile) }}
|
{{ form_errors(form.senderMobile) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
|
|||||||
@ -1,16 +1,16 @@
|
|||||||
<ul class="px-6 space-y-3">
|
<ul class="px-6 space-y-3">
|
||||||
<li>
|
<li>
|
||||||
<button class="flex items-center justify-between w-full"><div class="flex items-center gap-4 text-gray-600 dark:text-gray-300"><p class="flex-1 font-bold uppercase text-xs tracking-wider">Systemeinstellungen</p></div></button>
|
<button class="flex items-center justify-between w-full mt-4"><div class="flex items-center gap-4 text-gray-600 dark:text-gray-300"><p class="flex-1 font-bold uppercase text-xs tracking-wider">Systemeinstellungen</p></div></button>
|
||||||
|
|
||||||
{{ knp_menu_render('backend.menu.system', {'template': '@PSCBackendDashboard/menu/knp_tailwind_menu.html.twig', 'ancestorClass': 'open', 'currentClass': 'active'}) }}
|
{{ knp_menu_render('backend.menu.system', {'template': '@PSCBackendDashboard/menu/knp_tailwind_menu.html.twig', 'ancestorClass': 'open', 'currentClass': 'active'}) }}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<ul class="text-sm pl-4 space-y-1 -mx-3 mt-2">
|
<ul class="text-sm space-y-1 -mx-3 mt-2">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<div>
|
<div>
|
||||||
<a href="{{ path("psc_system_plugin_backend_list") }}" class="flex items-center justify-center gap-3 px-3 py-2 rounded-lg font-medium transition hover:bg-psc-500 focus:bg-psc-500 hover:text-white focus:text-white">
|
<a href="{{ path("psc_system_plugin_backend_list") }}" class="flex items-center justify-center gap-3 px-3 py-2 rounded-lg font-medium transition hover:bg-psc-500 focus:bg-psc-500 hover:text-white focus:text-white">
|
||||||
<i class="fab fa-lg fa-app-store"></i>
|
<i class="fab fa-lg fa-app-store"></i>
|
||||||
<span class="flex flex-1">Apps & App Store</span>
|
<div class="flex flex-1" x-show="$store.sideBar.isOpen">Apps & App Store</div>
|
||||||
</a></div>
|
</a></div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@ -32,7 +32,7 @@ class Assets
|
|||||||
$this->kernel = $kernel;
|
$this->kernel = $kernel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function install()
|
public function install(): void
|
||||||
{
|
{
|
||||||
|
|
||||||
// Create the bundles directory otherwise symlink will fail.
|
// Create the bundles directory otherwise symlink will fail.
|
||||||
@ -63,15 +63,7 @@ class Assets
|
|||||||
$this->filesystem->remove($dirsToRemove);
|
$this->filesystem->remove($dirsToRemove);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private function hardCopy($originDir, $targetDir): void
|
||||||
* Copies origin to target.
|
|
||||||
*
|
|
||||||
* @param string $originDir
|
|
||||||
* @param string $targetDir
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
private function hardCopy($originDir, $targetDir)
|
|
||||||
{
|
{
|
||||||
$this->filesystem->mkdir($targetDir, 0777);
|
$this->filesystem->mkdir($targetDir, 0777);
|
||||||
// We use a custom iterator to ignore VCS files
|
// We use a custom iterator to ignore VCS files
|
||||||
|
|||||||
@ -1,48 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace PSC\System\SettingsBundle\Service;
|
|
||||||
|
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
|
||||||
use Imagine\Image\ImagineInterface;
|
|
||||||
use Imagine\Imagick\Imagine;
|
|
||||||
use Liip\ImagineBundle\Imagine\Cache\CacheManager;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Shop
|
|
||||||
*
|
|
||||||
* @author Thomas Peterson
|
|
||||||
*/
|
|
||||||
class DeprecatedFile
|
|
||||||
{
|
|
||||||
protected $entityManager;
|
|
||||||
protected $liip_imagine;
|
|
||||||
|
|
||||||
public function __construct(EntityManagerInterface $em, CacheManager $liip_imagine)
|
|
||||||
{
|
|
||||||
$this->entityManager = $em;
|
|
||||||
$this->liip_imagine = $liip_imagine;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getFilePath($fileUUID)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (strlen($fileUUID) <= 30) {
|
|
||||||
}
|
|
||||||
|
|
||||||
$file1 = $this->entityManager->getRepository('PSC\Shop\EntityBundle\Entity\Image')->findOneBy(['uid' => $fileUUID]);
|
|
||||||
|
|
||||||
if (!$file1 || !file_exists(str_replace("temp", "uploads_backend", $file1->getPath()))) {
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
if (!file_exists('uploads_backend/' . md5($file1->getPath()) . '.png')) {
|
|
||||||
$imagine = $this->imagine->open(str_replace("temp", "uploads_backend", $file1->getPath()));
|
|
||||||
|
|
||||||
$this->imagine->save('uploads_backend/' . md5($file1->getPath()) . '.png');
|
|
||||||
}
|
|
||||||
return 'uploads_backend/' . md5($file1->getPath()) . '.png';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -24,57 +24,22 @@ class PaperDB implements ObjectRepository
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
public function find($id): ?Paper
|
||||||
* Finds an object by its primary key / identifier.
|
|
||||||
*
|
|
||||||
* @param mixed $id The identifier.
|
|
||||||
*
|
|
||||||
* @return object|null The object.
|
|
||||||
*/
|
|
||||||
public function find($id)
|
|
||||||
{
|
{
|
||||||
// TODO: Implement find() method.
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function findAll(): array
|
||||||
* Finds all objects in the repository.
|
|
||||||
*
|
|
||||||
* @return array The objects.
|
|
||||||
*/
|
|
||||||
public function findAll()
|
|
||||||
{
|
{
|
||||||
// TODO: Implement findAll() method.
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null): array
|
||||||
* Finds objects by a set of criteria.
|
|
||||||
*
|
|
||||||
* Optionally sorting and limiting details can be passed. An implementation may throw
|
|
||||||
* an UnexpectedValueException if certain values of the sorting or limiting details are
|
|
||||||
* not supported.
|
|
||||||
*
|
|
||||||
* @param array $criteria
|
|
||||||
* @param array|null $orderBy
|
|
||||||
* @param int|null $limit
|
|
||||||
* @param int|null $offset
|
|
||||||
*
|
|
||||||
* @return array The objects.
|
|
||||||
*
|
|
||||||
* @throws \UnexpectedValueException
|
|
||||||
*/
|
|
||||||
public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
|
|
||||||
{
|
{
|
||||||
// TODO: Implement findBy() method.
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function findOneBy(array $criteria): ?Paper
|
||||||
* Finds a single object by a set of criteria.
|
|
||||||
*
|
|
||||||
* @param array $criteria The criteria.
|
|
||||||
*
|
|
||||||
* @return object|null The object.
|
|
||||||
*/
|
|
||||||
public function findOneBy(array $criteria)
|
|
||||||
{
|
{
|
||||||
/** @var Paper $paper */
|
/** @var Paper $paper */
|
||||||
$paper = $this->entityManager->getRepository(Paper::class)->findOneBy($criteria);
|
$paper = $this->entityManager->getRepository(Paper::class)->findOneBy($criteria);
|
||||||
@ -115,17 +80,12 @@ class PaperDB implements ObjectRepository
|
|||||||
return $paper;
|
return $paper;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function getClassName(): string
|
||||||
* Returns the class name of the object managed by the repository.
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getClassName()
|
|
||||||
{
|
{
|
||||||
// TODO: Implement getClassName() method.
|
return self::class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getNewObject()
|
public function getNewObject(): Paper
|
||||||
{
|
{
|
||||||
return new Paper();
|
return new Paper();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -74,19 +74,18 @@ class Printing
|
|||||||
->addDocumentNote('Rechnung gemäß Bestellung vom ' . $orderModel->getCreated()->format('d.m.Y'))
|
->addDocumentNote('Rechnung gemäß Bestellung vom ' . $orderModel->getCreated()->format('d.m.Y'))
|
||||||
->setDocumentSupplyChainEvent($orderModel->getCreated())
|
->setDocumentSupplyChainEvent($orderModel->getCreated())
|
||||||
->setDocumentBuyerReference($orderModel->getInvoiceAddress()->getLId())
|
->setDocumentBuyerReference($orderModel->getInvoiceAddress()->getLId())
|
||||||
->setDocumentSeller($orderModel->getSenderAddress()->getCompany() . ' ' . $orderModel->getSenderAddress()->getFirstname() . ' ' . $orderModel->getSenderAddress()->getLastname(), "")
|
|
||||||
->setDocumentSellerAddress($orderModel->getSenderAddress()->getStreet() . ' ' . $orderModel->getSenderAddress()->getHouseNumber(), "", "", $orderModel->getSenderAddress()->getZip(), $orderModel->getSenderAddress()->getCity(), $orderModel->getSenderAddress()->getCountry() ?? 'DE')
|
|
||||||
->setDocumentSellerContact($orderModel->getSenderAddress()->getFirstname() . ' ' . $orderModel->getSenderAddress()->getLastname(), $orderModel->getSenderAddress()->getCompany(), $orderModel->getSenderAddress()->getPhone(), $orderModel->getSenderAddress()->getMobilPhone(), $orderModel->getSenderAddress()->getEmail())
|
|
||||||
->setDocumentSellerCommunication("EM", $orderModel->getSenderAddress()->getEmail())
|
|
||||||
->setDocumentBuyer($orderModel->getInvoiceAddress()->getCompany() . ' ' . $orderModel->getInvoiceAddress()->getFirstname() . ' ' . $orderModel->getInvoiceAddress()->getLastname(), $orderModel->getInvoiceAddress()->getKundenNr())
|
->setDocumentBuyer($orderModel->getInvoiceAddress()->getCompany() . ' ' . $orderModel->getInvoiceAddress()->getFirstname() . ' ' . $orderModel->getInvoiceAddress()->getLastname(), $orderModel->getInvoiceAddress()->getKundenNr())
|
||||||
->setDocumentBuyerAddress($orderModel->getInvoiceAddress()->getStreet() . ' ' . $orderModel->getInvoiceAddress()->getHouseNumber(), "", "", $orderModel->getInvoiceAddress()->getZip(), $orderModel->getInvoiceAddress()->getCity(), $orderModel->getInvoiceAddress()->getCountry() ?? 'DE')
|
->setDocumentBuyerAddress($orderModel->getInvoiceAddress()->getStreet() . ' ' . $orderModel->getInvoiceAddress()->getHouseNumber(), "", "", $orderModel->getInvoiceAddress()->getZip(), $orderModel->getInvoiceAddress()->getCity(), $orderModel->getInvoiceAddress()->getCountry() ?? 'DE')
|
||||||
->setDocumentBuyerCommunication("EM", $orderModel->getInvoiceAddress()->getEmail())
|
->setDocumentBuyerCommunication("EM", $orderModel->getInvoiceAddress()->getEmail())
|
||||||
->addDocumentPaymentMean(ZugferdPaymentMeans::UNTDID_4461_58, null, null, null, null, null, $orderModel->getSenderAddress()->getIban(), null, null, null)
|
|
||||||
->addDocumentPaymentTermXRechnung($orderModel->getPayment()->getTitle(), [], [], [], null, null)
|
->addDocumentPaymentTermXRechnung($orderModel->getPayment()->getTitle(), [], [], [], null, null)
|
||||||
|
|
||||||
->addDocumentSellerVATRegistrationNumber($orderModel->getSenderAddress()->getUstId())
|
->addDocumentPaymentMean(ZugferdPaymentMeans::UNTDID_4461_58, null, null, null, null, null, $orderModel->getOperator()->getIban(), null, null, null)
|
||||||
->addDocumentSellerTaxNumber($orderModel->getSenderAddress()->getSteuerId())
|
->setDocumentSellerContact($orderModel->getOperator()->getFirstname() . ' ' . $orderModel->getOperator()->getLastname(), $orderModel->getOperator()->getCompany(), $orderModel->getOperator()->getPhone(), $orderModel->getOperator()->getMobilePhone(), $orderModel->getOperator()->getEmail())
|
||||||
|
->addDocumentSellerVATRegistrationNumber($orderModel->getOperator()->getUstId())
|
||||||
|
->addDocumentSellerTaxNumber($orderModel->getOperator()->getSteuerId())
|
||||||
|
->setDocumentSellerCommunication("EM", $orderModel->getOperator()->getEmail())
|
||||||
|
->setDocumentSeller($orderModel->getOperator()->getCompany() . ' ' . $orderModel->getOperator()->getFirstname() . ' ' . $orderModel->getOperator()->getLastname(), "")
|
||||||
|
->setDocumentSellerAddress($orderModel->getOperator()->getStreet() . ' ' . $orderModel->getOperator()->getHouseNumber(), "", "", $orderModel->getOperator()->getZip(), $orderModel->getOperator()->getCity(), $orderModel->getOperator()->getCountry() ?? 'DE')
|
||||||
;
|
;
|
||||||
|
|
||||||
foreach ($orderModel->getTaxes() as $tax) {
|
foreach ($orderModel->getTaxes() as $tax) {
|
||||||
@ -291,28 +290,87 @@ class Printing
|
|||||||
->setDocumentInformation($orderModel->getAlias(), "380", $orderModel->getCreated(), "EUR")
|
->setDocumentInformation($orderModel->getAlias(), "380", $orderModel->getCreated(), "EUR")
|
||||||
->addDocumentNote('Rechnung gemäß Bestellung vom ' . $orderModel->getCreated()->format('d.m.Y'))
|
->addDocumentNote('Rechnung gemäß Bestellung vom ' . $orderModel->getCreated()->format('d.m.Y'))
|
||||||
->setDocumentSupplyChainEvent($orderModel->getCreated())
|
->setDocumentSupplyChainEvent($orderModel->getCreated())
|
||||||
->setDocumentSeller($orderModel->getSenderAddress()->getCompany() . ' ' . $orderModel->getSenderAddress()->getFirstname() . ' ' . $orderModel->getSenderAddress()->getLastname(), "549910")
|
->setDocumentBuyerReference($orderModel->getInvoiceAddress()->getLId())
|
||||||
->setDocumentSellerAddress($orderModel->getSenderAddress()->getStreet() . ' ' . $orderModel->getSenderAddress()->getHouseNumber(), "", "", $orderModel->getSenderAddress()->getZip(), $orderModel->getSenderAddress()->getCity(), $orderModel->getSenderAddress()->getCountry() ?? 'DE')
|
|
||||||
->setDocumentBuyer($orderModel->getInvoiceAddress()->getCompany() . ' ' . $orderModel->getInvoiceAddress()->getFirstname() . ' ' . $orderModel->getInvoiceAddress()->getLastname(), $orderModel->getInvoiceAddress()->getKundenNr())
|
->setDocumentBuyer($orderModel->getInvoiceAddress()->getCompany() . ' ' . $orderModel->getInvoiceAddress()->getFirstname() . ' ' . $orderModel->getInvoiceAddress()->getLastname(), $orderModel->getInvoiceAddress()->getKundenNr())
|
||||||
->setDocumentBuyerAddress($orderModel->getInvoiceAddress()->getStreet() . ' ' . $orderModel->getInvoiceAddress()->getHouseNumber(), "", "", $orderModel->getInvoiceAddress()->getZip(), $orderModel->getInvoiceAddress()->getCity(), $orderModel->getInvoiceAddress()->getCountry() ?? 'DE');
|
->setDocumentBuyerAddress($orderModel->getInvoiceAddress()->getStreet() . ' ' . $orderModel->getInvoiceAddress()->getHouseNumber(), "", "", $orderModel->getInvoiceAddress()->getZip(), $orderModel->getInvoiceAddress()->getCity(), $orderModel->getInvoiceAddress()->getCountry() ?? 'DE')
|
||||||
|
->setDocumentBuyerCommunication("EM", $orderModel->getInvoiceAddress()->getEmail())
|
||||||
|
->addDocumentPaymentTermXRechnung($orderModel->getPayment()->getTitle(), [], [], [], null, null)
|
||||||
|
|
||||||
|
->addDocumentPaymentMean(ZugferdPaymentMeans::UNTDID_4461_58, null, null, null, null, null, $orderModel->getOperator()->getIban(), null, null, null)
|
||||||
|
->setDocumentSellerContact($orderModel->getOperator()->getFirstname() . ' ' . $orderModel->getOperator()->getLastname(), $orderModel->getOperator()->getCompany(), $orderModel->getOperator()->getPhone(), $orderModel->getOperator()->getMobilePhone(), $orderModel->getOperator()->getEmail())
|
||||||
|
->addDocumentSellerVATRegistrationNumber($orderModel->getOperator()->getUstId())
|
||||||
|
->addDocumentSellerTaxNumber($orderModel->getOperator()->getSteuerId())
|
||||||
|
->setDocumentSellerCommunication("EM", $orderModel->getOperator()->getEmail())
|
||||||
|
->setDocumentSeller($orderModel->getOperator()->getCompany() . ' ' . $orderModel->getOperator()->getFirstname() . ' ' . $orderModel->getOperator()->getLastname(), "")
|
||||||
|
->setDocumentSellerAddress($orderModel->getOperator()->getStreet() . ' ' . $orderModel->getOperator()->getHouseNumber(), "", "", $orderModel->getOperator()->getZip(), $orderModel->getOperator()->getCity(), $orderModel->getOperator()->getCountry() ?? 'DE')
|
||||||
|
;
|
||||||
|
|
||||||
foreach ($orderModel->getTaxes() as $tax) {
|
foreach ($orderModel->getTaxes() as $tax) {
|
||||||
$document->addDocumentTax("S", "VAT", $tax->getValue() / 100, $tax->getValue() / 100, $tax->getName() / 100);
|
if ($tax->getCalculatedAmount() > 0) {
|
||||||
|
$document->addDocumentTax("S", "VAT", $tax->getBasisAmount() / 100, $tax->getCalculatedAmount() / 100, $tax->getName() / 100);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$document
|
$document
|
||||||
->setDocumentSummation($orderModel->getGross() / 100, $orderModel->getGross() / 100, $orderModel->getNet() / 100, 0.0, 0.0, $orderModel->getNet() / 100, $orderModel->getTaxesSum() / 100, null, 0.0);
|
|
||||||
|
->setDocumentSummation(
|
||||||
|
$orderModel->getGross() / 100,
|
||||||
|
$orderModel->getGross() / 100,
|
||||||
|
$orderModel->getPositionsNet() / 100,
|
||||||
|
$orderModel->getSurcharges() / 100,
|
||||||
|
0.0,
|
||||||
|
$orderModel->getNet() / 100,
|
||||||
|
$orderModel->getTaxesSum() / 100,
|
||||||
|
null,
|
||||||
|
0.0
|
||||||
|
);
|
||||||
|
|
||||||
foreach ($orderModel->getPositions() as $position) {
|
foreach ($orderModel->getPositions() as $position) {
|
||||||
$document
|
$document
|
||||||
->addNewPosition($position->getPos())
|
->addNewPosition($position->getPos())
|
||||||
->setDocumentPositionProductDetails($position->getProduct()->getTitle())
|
->setDocumentPositionProductDetails($position->getProduct()->getTitle())
|
||||||
->setDocumentPositionGrossPrice($position->getPrice()->getGross() / 100)
|
// ->setDocumentPositionGrossPrice($position->getPrice()->getGross() / 100)
|
||||||
->setDocumentPositionNetPrice($position->getPrice()->getNet() / 100)
|
->setDocumentPositionNetPrice($position->getPrice()->getNet() / 100)
|
||||||
->setDocumentPositionQuantity(1, "H87")
|
->setDocumentPositionQuantity(1, "H87")
|
||||||
->addDocumentPositionTax('S', 'VAT', $position->getPrice()->getTax()->getName() / 100)
|
->addDocumentPositionTax('S', 'VAT', $position->getPrice()->getTax()->getName() / 100)
|
||||||
->setDocumentPositionLineSummation($position->getPrice()->getNet() / 100)
|
->setDocumentPositionLineSummation($position->getPrice()->getNet() / 100)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($orderModel->getPayment()->getCalcPrice()->net > 0) {
|
||||||
|
$document
|
||||||
|
->addDocumentAllowanceCharge(
|
||||||
|
$orderModel->getPayment()->getCalcPrice()->net / 100,
|
||||||
|
true,
|
||||||
|
'S',
|
||||||
|
'VAT',
|
||||||
|
$orderModel->getPayment()->getCalcPrice()->tax->getName() / 100,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
'CAL',
|
||||||
|
'PaymentCoast'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ($orderModel->getShipping()->getCalcPrice()->net > 0) {
|
||||||
|
$document
|
||||||
|
->addDocumentAllowanceCharge(
|
||||||
|
$orderModel->getShipping()->getCalcPrice()->net / 100,
|
||||||
|
true,
|
||||||
|
'S',
|
||||||
|
'VAT',
|
||||||
|
$orderModel->getShipping()->getCalcPrice()->tax->getName() / 100,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
'SAA',
|
||||||
|
'ShippingCoast'
|
||||||
|
);
|
||||||
|
}
|
||||||
$output = $this->mpdf->Output(null, \Mpdf\Output\Destination::STRING_RETURN);
|
$output = $this->mpdf->Output(null, \Mpdf\Output\Destination::STRING_RETURN);
|
||||||
$output = (new ZugferdDocumentPdfMerger($document->getContent(), $output))->generateDocument()->downloadString("file");
|
$output = (new ZugferdDocumentPdfMerger($document->getContent(), $output))->generateDocument()->downloadString("file");
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -16,6 +16,8 @@
|
|||||||
{{ encore_entry_link_tags('backend/tailwind') }}
|
{{ encore_entry_link_tags('backend/tailwind') }}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
|
||||||
|
<link rel="apple-touch-icon" sizes="57x57" href="/apps/icons/apple-icon-57x57.png"><link rel="apple-touch-icon" sizes="60x60" href="/apps/icons/apple-icon-60x60.png"><link rel="apple-touch-icon" sizes="72x72" href="/apps/icons/apple-icon-72x72.png"><link rel="apple-touch-icon" sizes="76x76" href="/apps/icons/apple-icon-76x76.png"><link rel="apple-touch-icon" sizes="114x114" href="/apps/icons/apple-icon-114x114.png"><link rel="apple-touch-icon" sizes="120x120" href="/apps/icons/apple-icon-120x120.png"><link rel="apple-touch-icon" sizes="144x144" href="/apps/icons/apps/icons/apple-icon-144x144.png"><link rel="apple-touch-icon" sizes="152x152" href="/apps/icons/apple-icon-152x152.png"><link rel="apple-touch-icon" sizes="180x180" href="/apps/icons/apple-icon-180x180.png"><link rel="icon" type="image/png" sizes="192x192" href="/apps/icons/android-icon-192x192.png"><link rel="icon" type="image/png" sizes="32x32" href="/apps/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="96x96" href="/apps/icons/favicon-96x96.png"><link rel="icon" type="image/png" sizes="16x16" href="/apps/icons/favicon-16x16.png"><link rel="manifest" href="/apps/icons/manifest.json"><meta name="msapplication-TileColor" content="#ffffff"><meta name="msapplication-TileImage" content="/apps/icons/ms-icon-144x144.png"><meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body class="min-h-screen bg-gray-100 text-gray-900 overflow-y-auto dark:text-gray-100 dark:bg-gray-900">
|
<body class="min-h-screen bg-gray-100 text-gray-900 overflow-y-auto dark:text-gray-100 dark:bg-gray-900">
|
||||||
@ -43,7 +45,6 @@
|
|||||||
|
|
||||||
<ul class="px-6 space-y-3">
|
<ul class="px-6 space-y-3">
|
||||||
<li>
|
<li>
|
||||||
<button class="flex items-center justify-between w-full"><div class="flex items-center gap-4 text-gray-600 dark:text-gray-300"><p class="flex-1 font-bold uppercase text-xs tracking-wider">Shop</p></div></button>
|
|
||||||
{{ knp_menu_render('backend.menu.main', {'template': '@PSCBackendDashboard/menu/knp_tailwind_menu.html.twig', 'ancestorClass': 'open', 'currentClass': 'active'}) }}
|
{{ knp_menu_render('backend.menu.main', {'template': '@PSCBackendDashboard/menu/knp_tailwind_menu.html.twig', 'ancestorClass': 'open', 'currentClass': 'active'}) }}
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -63,11 +64,11 @@
|
|||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
<div class="flex items-center justify-between flex-1">
|
<div class="flex items-center justify-between flex-1">
|
||||||
<div class="flex-1 flex flex-row">
|
<div class="flex-1 flex flex-col md:flex-row">
|
||||||
<div class="mr-3">
|
<div class="mr-3">
|
||||||
{{ render(controller('PSC\\Backend\\DashboardBundle\\Controller\\ShopController::myEditableShopsTailwindAction', { tw: true })) }}
|
{{ render(controller('PSC\\Backend\\DashboardBundle\\Controller\\ShopController::myEditableShopsTailwindAction', { tw: true })) }}
|
||||||
</div>
|
</div>
|
||||||
<div class="swarm">
|
<div class="hidden md:block swarm">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@ -0,0 +1,271 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\PSC\Shop\Order\Api;
|
||||||
|
|
||||||
|
use PSC\Shop\EntityBundle\Repository\JobRepository;
|
||||||
|
use Tests\RefreshDatabaseTrait;
|
||||||
|
use PSC\Shop\EntityBundle\Entity\Shop;
|
||||||
|
use PSC\Shop\EntityBundle\Repository\ShopRepository;
|
||||||
|
use PSC\Shop\PaymentBundle\Repository\PaymentRepository;
|
||||||
|
use PSC\Shop\ShippingBundle\Repository\ShippingRepository;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
|
class XRechnungOperatorFromShopTest extends WebTestCase
|
||||||
|
{
|
||||||
|
use RefreshDatabaseTrait;
|
||||||
|
|
||||||
|
public function testCreateOrderDefault(): void
|
||||||
|
{
|
||||||
|
$client = static::createClient();
|
||||||
|
|
||||||
|
$shopRepository = static::getContainer()->get(ShopRepository::class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Shop $shop
|
||||||
|
*/
|
||||||
|
$shop = $shopRepository->findOneBy(['title' => 'Printchampion']);
|
||||||
|
|
||||||
|
$shippingRepository = static::getContainer()->get(ShippingRepository::class);
|
||||||
|
|
||||||
|
$paymentRepository = static::getContainer()->get(PaymentRepository::class);
|
||||||
|
|
||||||
|
$client->jsonRequest(
|
||||||
|
'POST',
|
||||||
|
'/api/order/create',
|
||||||
|
[
|
||||||
|
'shop' => [
|
||||||
|
'uuid' => (string)$shop->getUuid()
|
||||||
|
],
|
||||||
|
'type' => 2,
|
||||||
|
'shipping' => [
|
||||||
|
'uid' => $shippingRepository->findOneBy(['title' => 'Deutschlandweit'])->getUid()
|
||||||
|
],
|
||||||
|
'payment' => [
|
||||||
|
'uid' => $paymentRepository->findOneBy(['title' => 'per Rechnung'])->getUid()
|
||||||
|
],
|
||||||
|
'draft' => false,
|
||||||
|
'deliveryAddress' => [
|
||||||
|
'firstname' => 'Thomas',
|
||||||
|
'lastname' => 'Peterson',
|
||||||
|
'street' => 'Chausseestr.',
|
||||||
|
'houseNumber' => '24',
|
||||||
|
'zip' => '17506',
|
||||||
|
'city' => 'Gribow'
|
||||||
|
],
|
||||||
|
'invoiceAddress' => [
|
||||||
|
'firstname' => 'Thomas',
|
||||||
|
'lastname' => 'Peterson',
|
||||||
|
'street' => 'Chausseestr.',
|
||||||
|
'houseNumber' => '24',
|
||||||
|
'zip' => '17400',
|
||||||
|
'city' => 'Berlin'
|
||||||
|
],
|
||||||
|
'positions' => [
|
||||||
|
[
|
||||||
|
'count' => 1,
|
||||||
|
'product' => [
|
||||||
|
'title' => 'test XML',
|
||||||
|
'specialProductTypeObject' => [
|
||||||
|
'typ' => 6,
|
||||||
|
'taxClass' => 1900,
|
||||||
|
'xml' => '<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<kalkulation>
|
||||||
|
<artikel>
|
||||||
|
<name>Blocks A5 25blatt geleimt</name>
|
||||||
|
<kommentar>kein</kommentar>
|
||||||
|
|
||||||
|
<option id="auflage" name="Auflage" type="Input" width="3" require="true" default="1">
|
||||||
|
<auflage>
|
||||||
|
<grenze formel="(10*5)">1-</grenze>
|
||||||
|
</auflage>
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</artikel>
|
||||||
|
</kalkulation>'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'count' => 1,
|
||||||
|
'product' => [
|
||||||
|
'title' => 'test Manual Position',
|
||||||
|
'specialProductTypeObject' => [
|
||||||
|
'typ' => 1,
|
||||||
|
'cent' => true,
|
||||||
|
'net' => 145,
|
||||||
|
'taxClass' => 1900
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
['HTTP_apiKey' => $shop->getApiKey()]
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(200, $client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
|
$data = json_decode($client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
|
$client->jsonRequest(
|
||||||
|
'POST',
|
||||||
|
'/api/order/getonebyuuid',
|
||||||
|
[
|
||||||
|
'uuid' => $data['uuid'],
|
||||||
|
],
|
||||||
|
['HTTP_apiKey' => $shop->getApiKey()]
|
||||||
|
);
|
||||||
|
|
||||||
|
$data = json_decode($client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
|
self::assertSame(7647, $data['gross']);
|
||||||
|
self::assertSame('SAN-'.date("Ym").'-1', $data['alias']);
|
||||||
|
|
||||||
|
self::assertSame('Berlin', $data['invoiceAddress']['city']);
|
||||||
|
|
||||||
|
self::assertSame('Gribow', $data['deliveryAddress']['city']);
|
||||||
|
|
||||||
|
self::assertSame('ShopMusterIban', $data['operator']['iban']);
|
||||||
|
self::assertSame('ShopMusterSteuerId', $data['operator']['steuerId']);
|
||||||
|
|
||||||
|
self::assertSame(200, $client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var JobRepository $jobs
|
||||||
|
*/
|
||||||
|
$jobs = static::getContainer()->get(JobRepository::class);
|
||||||
|
|
||||||
|
self::assertCount(0, $jobs->findBy(['data.order' => $data['uuid']]));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCreateOrderWithCreateActionDefault(): void
|
||||||
|
{
|
||||||
|
$client = static::createClient();
|
||||||
|
|
||||||
|
$shopRepository = static::getContainer()->get(ShopRepository::class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Shop $shop
|
||||||
|
*/
|
||||||
|
$shop = $shopRepository->findOneBy(['title' => 'Printchampion']);
|
||||||
|
|
||||||
|
$shippingRepository = static::getContainer()->get(ShippingRepository::class);
|
||||||
|
|
||||||
|
$paymentRepository = static::getContainer()->get(PaymentRepository::class);
|
||||||
|
|
||||||
|
$client->jsonRequest(
|
||||||
|
'POST',
|
||||||
|
'/api/order/create',
|
||||||
|
[
|
||||||
|
'shop' => [
|
||||||
|
'uuid' => (string)$shop->getUuid()
|
||||||
|
],
|
||||||
|
'type' => 2,
|
||||||
|
'shipping' => [
|
||||||
|
'uid' => $shippingRepository->findOneBy(['title' => 'Deutschlandweit'])->getUid()
|
||||||
|
],
|
||||||
|
'payment' => [
|
||||||
|
'uid' => $paymentRepository->findOneBy(['title' => 'per Rechnung'])->getUid()
|
||||||
|
],
|
||||||
|
'draft' => false,
|
||||||
|
'deliveryAddress' => [
|
||||||
|
'firstname' => 'Thomas',
|
||||||
|
'lastname' => 'Peterson',
|
||||||
|
'street' => 'Chausseestr.',
|
||||||
|
'houseNumber' => '24',
|
||||||
|
'zip' => '17506',
|
||||||
|
'city' => 'Gribow'
|
||||||
|
],
|
||||||
|
'invoiceAddress' => [
|
||||||
|
'firstname' => 'Thomas',
|
||||||
|
'lastname' => 'Peterson',
|
||||||
|
'street' => 'Chausseestr.',
|
||||||
|
'houseNumber' => '24',
|
||||||
|
'zip' => '17400',
|
||||||
|
'city' => 'Berlin'
|
||||||
|
],
|
||||||
|
'positions' => [
|
||||||
|
[
|
||||||
|
'count' => 1,
|
||||||
|
'product' => [
|
||||||
|
'title' => 'test XML',
|
||||||
|
'specialProductTypeObject' => [
|
||||||
|
'typ' => 6,
|
||||||
|
'taxClass' => 1900,
|
||||||
|
'xml' => '<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<kalkulation>
|
||||||
|
<artikel>
|
||||||
|
<name>Blocks A5 25blatt geleimt</name>
|
||||||
|
<kommentar>kein</kommentar>
|
||||||
|
|
||||||
|
<option id="auflage" name="Auflage" type="Input" width="3" require="true" default="1">
|
||||||
|
<auflage>
|
||||||
|
<grenze formel="(10*5)">1-</grenze>
|
||||||
|
</auflage>
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</artikel>
|
||||||
|
</kalkulation>'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'count' => 1,
|
||||||
|
'product' => [
|
||||||
|
'title' => 'test Manual Position',
|
||||||
|
'specialProductTypeObject' => [
|
||||||
|
'typ' => 1,
|
||||||
|
'cent' => true,
|
||||||
|
'net' => 145,
|
||||||
|
'taxClass' => 1900
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
['HTTP_apiKey' => $shop->getApiKey()]
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(200, $client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
|
$data = json_decode($client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
|
$client->jsonRequest(
|
||||||
|
'POST',
|
||||||
|
'/api/order/getonebyuuid',
|
||||||
|
[
|
||||||
|
'uuid' => $data['uuid'],
|
||||||
|
],
|
||||||
|
['HTTP_apiKey' => $shop->getApiKey()]
|
||||||
|
);
|
||||||
|
|
||||||
|
$data = json_decode($client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
|
self::assertSame(7647, $data['gross']);
|
||||||
|
self::assertSame('SAN-'.date("Ym").'-1', $data['alias']);
|
||||||
|
|
||||||
|
self::assertSame('Berlin', $data['invoiceAddress']['city']);
|
||||||
|
|
||||||
|
self::assertSame('Gribow', $data['deliveryAddress']['city']);
|
||||||
|
// FIXME: self::assertCount(1, $data['taxes']);
|
||||||
|
self::assertCount(4, $data['allTaxes']);
|
||||||
|
|
||||||
|
self::assertSame(200, $client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var JobRepository $jobs
|
||||||
|
*/
|
||||||
|
$jobs = static::getContainer()->get(JobRepository::class);
|
||||||
|
|
||||||
|
$client->jsonRequest(
|
||||||
|
'GET',
|
||||||
|
'/api/order/action/create/' . $data['uuid'],
|
||||||
|
[
|
||||||
|
],
|
||||||
|
['HTTP_apiKey' => $shop->getApiKey()]
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertCount(1, $jobs->findBy(['data.order' => $data['uuid']]));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,275 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\PSC\Shop\Order\Api;
|
||||||
|
|
||||||
|
use PSC\Shop\EntityBundle\Repository\JobRepository;
|
||||||
|
use Tests\RefreshDatabaseTrait;
|
||||||
|
use PSC\Shop\EntityBundle\Entity\Shop;
|
||||||
|
use PSC\Shop\EntityBundle\Repository\ShopRepository;
|
||||||
|
use PSC\Shop\PaymentBundle\Repository\PaymentRepository;
|
||||||
|
use PSC\Shop\ShippingBundle\Repository\ShippingRepository;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
|
class XRechnungOperatorProvidedTest extends WebTestCase
|
||||||
|
{
|
||||||
|
use RefreshDatabaseTrait;
|
||||||
|
|
||||||
|
public function testCreateOrderDefault(): void
|
||||||
|
{
|
||||||
|
$client = static::createClient();
|
||||||
|
|
||||||
|
$shopRepository = static::getContainer()->get(ShopRepository::class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Shop $shop
|
||||||
|
*/
|
||||||
|
$shop = $shopRepository->findOneBy(['title' => 'Printchampion']);
|
||||||
|
|
||||||
|
$shippingRepository = static::getContainer()->get(ShippingRepository::class);
|
||||||
|
|
||||||
|
$paymentRepository = static::getContainer()->get(PaymentRepository::class);
|
||||||
|
|
||||||
|
$client->jsonRequest(
|
||||||
|
'POST',
|
||||||
|
'/api/order/create',
|
||||||
|
[
|
||||||
|
'shop' => [
|
||||||
|
'uuid' => (string)$shop->getUuid()
|
||||||
|
],
|
||||||
|
'type' => 2,
|
||||||
|
'shipping' => [
|
||||||
|
'uid' => $shippingRepository->findOneBy(['title' => 'Deutschlandweit'])->getUid()
|
||||||
|
],
|
||||||
|
'payment' => [
|
||||||
|
'uid' => $paymentRepository->findOneBy(['title' => 'per Rechnung'])->getUid()
|
||||||
|
],
|
||||||
|
'draft' => false,
|
||||||
|
'operator' => [
|
||||||
|
'iban' => 'iban',
|
||||||
|
'steuerId' => 'steuerId'
|
||||||
|
],
|
||||||
|
'deliveryAddress' => [
|
||||||
|
'firstname' => 'Thomas',
|
||||||
|
'lastname' => 'Peterson',
|
||||||
|
'street' => 'Chausseestr.',
|
||||||
|
'houseNumber' => '24',
|
||||||
|
'zip' => '17506',
|
||||||
|
'city' => 'Gribow'
|
||||||
|
],
|
||||||
|
'invoiceAddress' => [
|
||||||
|
'firstname' => 'Thomas',
|
||||||
|
'lastname' => 'Peterson',
|
||||||
|
'street' => 'Chausseestr.',
|
||||||
|
'houseNumber' => '24',
|
||||||
|
'zip' => '17400',
|
||||||
|
'city' => 'Berlin'
|
||||||
|
],
|
||||||
|
'positions' => [
|
||||||
|
[
|
||||||
|
'count' => 1,
|
||||||
|
'product' => [
|
||||||
|
'title' => 'test XML',
|
||||||
|
'specialProductTypeObject' => [
|
||||||
|
'typ' => 6,
|
||||||
|
'taxClass' => 1900,
|
||||||
|
'xml' => '<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<kalkulation>
|
||||||
|
<artikel>
|
||||||
|
<name>Blocks A5 25blatt geleimt</name>
|
||||||
|
<kommentar>kein</kommentar>
|
||||||
|
|
||||||
|
<option id="auflage" name="Auflage" type="Input" width="3" require="true" default="1">
|
||||||
|
<auflage>
|
||||||
|
<grenze formel="(10*5)">1-</grenze>
|
||||||
|
</auflage>
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</artikel>
|
||||||
|
</kalkulation>'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'count' => 1,
|
||||||
|
'product' => [
|
||||||
|
'title' => 'test Manual Position',
|
||||||
|
'specialProductTypeObject' => [
|
||||||
|
'typ' => 1,
|
||||||
|
'cent' => true,
|
||||||
|
'net' => 145,
|
||||||
|
'taxClass' => 1900
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
['HTTP_apiKey' => $shop->getApiKey()]
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(200, $client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
|
$data = json_decode($client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
|
$client->jsonRequest(
|
||||||
|
'POST',
|
||||||
|
'/api/order/getonebyuuid',
|
||||||
|
[
|
||||||
|
'uuid' => $data['uuid'],
|
||||||
|
],
|
||||||
|
['HTTP_apiKey' => $shop->getApiKey()]
|
||||||
|
);
|
||||||
|
|
||||||
|
$data = json_decode($client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
|
self::assertSame(7647, $data['gross']);
|
||||||
|
self::assertSame('SAN-'.date("Ym").'-1', $data['alias']);
|
||||||
|
|
||||||
|
self::assertSame('Berlin', $data['invoiceAddress']['city']);
|
||||||
|
|
||||||
|
self::assertSame('Gribow', $data['deliveryAddress']['city']);
|
||||||
|
|
||||||
|
self::assertSame('iban', $data['operator']['iban']);
|
||||||
|
self::assertSame('steuerId', $data['operator']['steuerId']);
|
||||||
|
|
||||||
|
self::assertSame(200, $client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var JobRepository $jobs
|
||||||
|
*/
|
||||||
|
$jobs = static::getContainer()->get(JobRepository::class);
|
||||||
|
|
||||||
|
self::assertCount(0, $jobs->findBy(['data.order' => $data['uuid']]));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCreateOrderWithCreateActionDefault(): void
|
||||||
|
{
|
||||||
|
$client = static::createClient();
|
||||||
|
|
||||||
|
$shopRepository = static::getContainer()->get(ShopRepository::class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Shop $shop
|
||||||
|
*/
|
||||||
|
$shop = $shopRepository->findOneBy(['title' => 'Printchampion']);
|
||||||
|
|
||||||
|
$shippingRepository = static::getContainer()->get(ShippingRepository::class);
|
||||||
|
|
||||||
|
$paymentRepository = static::getContainer()->get(PaymentRepository::class);
|
||||||
|
|
||||||
|
$client->jsonRequest(
|
||||||
|
'POST',
|
||||||
|
'/api/order/create',
|
||||||
|
[
|
||||||
|
'shop' => [
|
||||||
|
'uuid' => (string)$shop->getUuid()
|
||||||
|
],
|
||||||
|
'type' => 2,
|
||||||
|
'shipping' => [
|
||||||
|
'uid' => $shippingRepository->findOneBy(['title' => 'Deutschlandweit'])->getUid()
|
||||||
|
],
|
||||||
|
'payment' => [
|
||||||
|
'uid' => $paymentRepository->findOneBy(['title' => 'per Rechnung'])->getUid()
|
||||||
|
],
|
||||||
|
'draft' => false,
|
||||||
|
'deliveryAddress' => [
|
||||||
|
'firstname' => 'Thomas',
|
||||||
|
'lastname' => 'Peterson',
|
||||||
|
'street' => 'Chausseestr.',
|
||||||
|
'houseNumber' => '24',
|
||||||
|
'zip' => '17506',
|
||||||
|
'city' => 'Gribow'
|
||||||
|
],
|
||||||
|
'invoiceAddress' => [
|
||||||
|
'firstname' => 'Thomas',
|
||||||
|
'lastname' => 'Peterson',
|
||||||
|
'street' => 'Chausseestr.',
|
||||||
|
'houseNumber' => '24',
|
||||||
|
'zip' => '17400',
|
||||||
|
'city' => 'Berlin'
|
||||||
|
],
|
||||||
|
'positions' => [
|
||||||
|
[
|
||||||
|
'count' => 1,
|
||||||
|
'product' => [
|
||||||
|
'title' => 'test XML',
|
||||||
|
'specialProductTypeObject' => [
|
||||||
|
'typ' => 6,
|
||||||
|
'taxClass' => 1900,
|
||||||
|
'xml' => '<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<kalkulation>
|
||||||
|
<artikel>
|
||||||
|
<name>Blocks A5 25blatt geleimt</name>
|
||||||
|
<kommentar>kein</kommentar>
|
||||||
|
|
||||||
|
<option id="auflage" name="Auflage" type="Input" width="3" require="true" default="1">
|
||||||
|
<auflage>
|
||||||
|
<grenze formel="(10*5)">1-</grenze>
|
||||||
|
</auflage>
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</artikel>
|
||||||
|
</kalkulation>'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'count' => 1,
|
||||||
|
'product' => [
|
||||||
|
'title' => 'test Manual Position',
|
||||||
|
'specialProductTypeObject' => [
|
||||||
|
'typ' => 1,
|
||||||
|
'cent' => true,
|
||||||
|
'net' => 145,
|
||||||
|
'taxClass' => 1900
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
['HTTP_apiKey' => $shop->getApiKey()]
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertSame(200, $client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
|
$data = json_decode($client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
|
$client->jsonRequest(
|
||||||
|
'POST',
|
||||||
|
'/api/order/getonebyuuid',
|
||||||
|
[
|
||||||
|
'uuid' => $data['uuid'],
|
||||||
|
],
|
||||||
|
['HTTP_apiKey' => $shop->getApiKey()]
|
||||||
|
);
|
||||||
|
|
||||||
|
$data = json_decode($client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
|
self::assertSame(7647, $data['gross']);
|
||||||
|
self::assertSame('SAN-'.date("Ym").'-1', $data['alias']);
|
||||||
|
|
||||||
|
self::assertSame('Berlin', $data['invoiceAddress']['city']);
|
||||||
|
|
||||||
|
self::assertSame('Gribow', $data['deliveryAddress']['city']);
|
||||||
|
// FIXME: self::assertCount(1, $data['taxes']);
|
||||||
|
self::assertCount(4, $data['allTaxes']);
|
||||||
|
|
||||||
|
self::assertSame(200, $client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var JobRepository $jobs
|
||||||
|
*/
|
||||||
|
$jobs = static::getContainer()->get(JobRepository::class);
|
||||||
|
|
||||||
|
$client->jsonRequest(
|
||||||
|
'GET',
|
||||||
|
'/api/order/action/create/' . $data['uuid'],
|
||||||
|
[
|
||||||
|
],
|
||||||
|
['HTTP_apiKey' => $shop->getApiKey()]
|
||||||
|
);
|
||||||
|
|
||||||
|
self::assertCount(1, $jobs->findBy(['data.order' => $data['uuid']]));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\Tests\PSC\Shop\Payment\Controller;
|
namespace Tests\PSC\Shop\Payment\Controller;
|
||||||
|
|
||||||
use Tests\RefreshDatabaseTrait;
|
use Tests\RefreshDatabaseTrait;
|
||||||
use PSC\Shop\ContactBundle\Repository\ContactRepository;
|
use PSC\Shop\ContactBundle\Repository\ContactRepository;
|
||||||
|
|||||||
48
src/new/tests/PSC/Shop/Payment/E2E/ListTest.php
Normal file
48
src/new/tests/PSC/Shop/Payment/E2E/ListTest.php
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\PSC\Shop\Payment\E2E;
|
||||||
|
|
||||||
|
use Facebook\WebDriver\Chrome\ChromeOptions;
|
||||||
|
use Facebook\WebDriver\Remote\DesiredCapabilities;
|
||||||
|
use Symfony\Component\Panther\Client;
|
||||||
|
use Symfony\Component\Panther\PantherTestCase;
|
||||||
|
use Tests\RefreshDatabaseTrait;
|
||||||
|
|
||||||
|
class ListTest extends PantherTestCase
|
||||||
|
{
|
||||||
|
use RefreshDatabaseTrait;
|
||||||
|
|
||||||
|
protected $client;
|
||||||
|
|
||||||
|
public function setUp(): void
|
||||||
|
{
|
||||||
|
$chromeOptions = new ChromeOptions();
|
||||||
|
$chromeOptions->addArguments(['--window-size=1200,1100', '--disable-gpu']);
|
||||||
|
$capabilities = DesiredCapabilities::chrome();
|
||||||
|
$capabilities->setCapability(ChromeOptions::CAPABILITY, $chromeOptions);
|
||||||
|
$this->client = Client::createSeleniumClient(
|
||||||
|
'http://chrome:4444',
|
||||||
|
$capabilities,
|
||||||
|
'http://application:9001'
|
||||||
|
);
|
||||||
|
static::startWebServer(['hostname' => 'application']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function tearDown(): void
|
||||||
|
{
|
||||||
|
$this->client->close();
|
||||||
|
unset($this->client);
|
||||||
|
static::stopWebServer();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testPaymentList(): void
|
||||||
|
{
|
||||||
|
$this->client->get('/backend/login');
|
||||||
|
$crawler = $this->client->submitForm('login', ['username' => 'admin@shop.de', 'password' => 'shop2014']);
|
||||||
|
$crawler = $this->client->get('/backend/dashboard');
|
||||||
|
self::assertSame('Dashboard', $this->client->getCrawler()->filter('h1')->text());
|
||||||
|
$crawler = $this->client->clickLink('Zahlarten');
|
||||||
|
self::assertStringContainsString('Zahlarten', $this->client->getCrawler()->filter('h3')->text());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\Tests\PSC\Shop\Payment\Controller;
|
namespace Tests\PSC\Shop\Payment\Controller;
|
||||||
|
|
||||||
use Tests\RefreshDatabaseTrait;
|
use Tests\RefreshDatabaseTrait;
|
||||||
use PSC\Shop\PaymentBundle\Repository\PaymentRepository;
|
use PSC\Shop\PaymentBundle\Repository\PaymentRepository;
|
||||||
@ -15,11 +15,11 @@ class PriceTest extends KernelTestCase
|
|||||||
{
|
{
|
||||||
$priceService = static::getContainer()->get(Price::class);
|
$priceService = static::getContainer()->get(Price::class);
|
||||||
|
|
||||||
$paymentRepository = static::getContainer()->get(paymentRepository::class);
|
$paymentRepository = static::getContainer()->get(PaymentRepository::class);
|
||||||
|
|
||||||
$paymentTransformer = static::getContainer()->get(Payment::class);
|
$paymentTransformer = static::getContainer()->get(Payment::class);
|
||||||
|
|
||||||
$paymentModel = new \PSC\Shop\PaymentBundle\Model\payment();
|
$paymentModel = new \PSC\Shop\PaymentBundle\Model\Payment();
|
||||||
$paymentTransformer->fromDb($paymentModel, $paymentRepository->findOneBy(['title' => 'per Rechnung']));
|
$paymentTransformer->fromDb($paymentModel, $paymentRepository->findOneBy(['title' => 'per Rechnung']));
|
||||||
|
|
||||||
/** @var Price $price */
|
/** @var Price $price */
|
||||||
|
|||||||
@ -1,52 +1,48 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Plugins\System\PSC\Invoice\App;
|
namespace Tests\Plugins\System\PSC\Invoice\App;
|
||||||
|
|
||||||
use Facebook\WebDriver\Chrome\ChromeOptions;
|
use Facebook\WebDriver\Chrome\ChromeOptions;
|
||||||
use Facebook\WebDriver\Remote\DesiredCapabilities;
|
use Facebook\WebDriver\Remote\DesiredCapabilities;
|
||||||
use Symfony\Component\BrowserKit\AbstractBrowser;
|
|
||||||
use Symfony\Component\Panther\Client;
|
use Symfony\Component\Panther\Client;
|
||||||
use Symfony\Component\Panther\PantherTestCase;
|
use Symfony\Component\Panther\PantherTestCase;
|
||||||
use Symfony\Component\Panther\ServerExtension;
|
|
||||||
use Tests\RefreshDatabaseTrait;
|
use Tests\RefreshDatabaseTrait;
|
||||||
|
|
||||||
class LoginPantherTest extends PantherTestCase
|
class LoginPantherTest extends PantherTestCase
|
||||||
{
|
{
|
||||||
use RefreshDatabaseTrait;
|
use RefreshDatabaseTrait;
|
||||||
|
|
||||||
protected $client;
|
protected $client;
|
||||||
|
|
||||||
private function createClientManually(): Client
|
public function setUp(): void
|
||||||
{
|
{
|
||||||
self::bootKernel();
|
|
||||||
$chromeOptions = new ChromeOptions();
|
$chromeOptions = new ChromeOptions();
|
||||||
$chromeOptions->addArguments(['--window-size=1200,1100', '--disable-gpu',]);
|
$chromeOptions->addArguments(['--window-size=1200,1100', '--disable-gpu']);
|
||||||
$capabilities = DesiredCapabilities::chrome();
|
$capabilities = DesiredCapabilities::chrome();
|
||||||
$capabilities->setCapability(ChromeOptions::CAPABILITY, $chromeOptions);
|
$capabilities->setCapability(ChromeOptions::CAPABILITY, $chromeOptions);
|
||||||
self::$pantherClient = Client::createSeleniumClient(
|
$this->client = Client::createSeleniumClient(
|
||||||
'http://chrome:4444',
|
'http://chrome:4444',
|
||||||
$capabilities,
|
$capabilities,
|
||||||
'http://application:9001'
|
'http://application:9001'
|
||||||
);
|
);
|
||||||
ServerExtension::registerClient(self::$pantherClient);
|
static::startWebServer(['hostname' => 'application']);
|
||||||
// you can avoid having to use Closure::bind if you use PantherTestCaseTrait directly
|
|
||||||
\Closure::bind(function(AbstractBrowser $client) {
|
|
||||||
// contrary to the name, calling it with argument will set local static variable inside getClient method
|
|
||||||
self::getClient($client);
|
|
||||||
}, null, PantherTestCase::class)(self::$pantherClient);
|
|
||||||
|
|
||||||
return self::$pantherClient;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testLogin(): void
|
public function tearDown(): void
|
||||||
|
{
|
||||||
|
$this->client->close();
|
||||||
|
unset($this->client);
|
||||||
|
static::stopWebServer();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testPaymentList(): void
|
||||||
{
|
{
|
||||||
static::startWebServer(['hostname' => 'application']);
|
|
||||||
$this->client = $this->createClientManually();
|
|
||||||
$this->client->get('/backend/login');
|
$this->client->get('/backend/login');
|
||||||
$crawler = $this->client->submitForm('login', ['username' => 'admin@shop.de', 'password' => 'shop2014']);
|
$crawler = $this->client->submitForm('login', ['username' => 'admin@shop.de', 'password' => 'shop2014']);
|
||||||
$this->client->get('/backend/dashboard');
|
$this->client->get('/backend/dashboard');
|
||||||
$this->assertSelectorTextContains('h1', 'Dashboard');
|
self::assertSame('Dashboard', $this->client->getCrawler()->filter('h1')->text());
|
||||||
$this->client->clickLink('CMS');
|
$this->client->clickLink('CMS');
|
||||||
$this->assertSelectorTextContains('h3', 'CMS');
|
// $this->assertSelectorTextContains('h3', 'CMS');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -116,6 +116,7 @@ trait RefreshDatabaseTrait
|
|||||||
$shop->setSenderLId("ShopMusterLeitwegId");
|
$shop->setSenderLId("ShopMusterLeitwegId");
|
||||||
$shop->setSenderIban("ShopMusterIban");
|
$shop->setSenderIban("ShopMusterIban");
|
||||||
$shop->setSenderEmail("ShopMusterEmail");
|
$shop->setSenderEmail("ShopMusterEmail");
|
||||||
|
$shop->setSenderSteuerId("ShopMusterSteuerId");
|
||||||
|
|
||||||
$doc->persist($shop);
|
$doc->persist($shop);
|
||||||
$doc->flush();
|
$doc->flush();
|
||||||
|
|||||||
@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Plugin\Custom\BUW\Orderimport\Controller;
|
||||||
|
|
||||||
|
use Ddeboer\Imap\Server;
|
||||||
|
use Doctrine\ODM\MongoDB\DocumentManager;
|
||||||
|
use PSC\Shop\EntityBundle\Document\Queue;
|
||||||
|
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\Annotation\Route;
|
||||||
|
|
||||||
|
#[Route('/check')]
|
||||||
|
class CheckController extends AbstractController
|
||||||
|
{
|
||||||
|
public function __construct(private Shop $shopService, private DocumentManager $documentManager)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Route('/{uuid}', name: 'psc_plugin_custom_buw_orderimport_check')]
|
||||||
|
public function indexAction(string $uuid): JsonResponse
|
||||||
|
{
|
||||||
|
|
||||||
|
$queue = $this->documentManager->getRepository(Queue::class)->find($uuid);
|
||||||
|
|
||||||
|
$queueDocument = $queue->getQueueDocument();
|
||||||
|
|
||||||
|
|
||||||
|
if ($queueDocument->getImapFlags() == "") {
|
||||||
|
$server = new Server($queueDocument->getImapServer(), $queueDocument->getImapPort());
|
||||||
|
} else {
|
||||||
|
$server = new Server($queueDocument->getImapServer(), $queueDocument->getImapPort(), $queueDocument->getImapFlags());
|
||||||
|
}
|
||||||
|
|
||||||
|
$connection = $server->authenticate($queueDocument->getImapUsername(), $queueDocument->getImapPassword());
|
||||||
|
|
||||||
|
$data = $connection->getMailboxes();
|
||||||
|
|
||||||
|
$temp = [];
|
||||||
|
foreach ($data as $row) {
|
||||||
|
$temp[] = [
|
||||||
|
'key' => $row->getName(),
|
||||||
|
'name' => $row->getName() . '(' . $row->count() . ')'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return new JsonResponse(['success' => true, 'data' => $temp, 'count' => count($temp)]);
|
||||||
|
}
|
||||||
|
}
|
||||||
114
src/new/var/plugins/Custom/BUW/Orderimport/Document/Import.php
Normal file
114
src/new/var/plugins/Custom/BUW/Orderimport/Document/Import.php
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Plugin\Custom\BUW\Orderimport\Document;
|
||||||
|
|
||||||
|
use Doctrine\ODM\MongoDB\Mapping\Annotations\EmbeddedDocument;
|
||||||
|
use Doctrine\ODM\MongoDB\Mapping\Annotations\Field;
|
||||||
|
|
||||||
|
#[EmbeddedDocument]
|
||||||
|
class Import
|
||||||
|
{
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
protected $folder;
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
protected $imapFolder;
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
protected $imapFinishFolder;
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
protected $imapServer;
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
protected $imapPort;
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
protected $imapUsername;
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
protected $imapFlags;
|
||||||
|
|
||||||
|
#[Field(type: 'string')]
|
||||||
|
protected $imapPassword;
|
||||||
|
|
||||||
|
public function getFolder(): string
|
||||||
|
{
|
||||||
|
return $this->folder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setFolder(?string $folder): void
|
||||||
|
{
|
||||||
|
$this->folder = $folder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFinishImapFolder(): string
|
||||||
|
{
|
||||||
|
return (string)$this->imapFinishFolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setFinishImapFolder(?string $var): void
|
||||||
|
{
|
||||||
|
$this->imapFinishFolder = $var;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getImapServer(): string
|
||||||
|
{
|
||||||
|
return (string)$this->imapServer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setImapServer(?string $imapServer): void
|
||||||
|
{
|
||||||
|
$this->imapServer = $imapServer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getImapUsername(): string
|
||||||
|
{
|
||||||
|
return (string)$this->imapUsername;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setImapUsername(?string $imapUsername): void
|
||||||
|
{
|
||||||
|
$this->imapUsername = $imapUsername;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getImapPassword(): string
|
||||||
|
{
|
||||||
|
return (string)$this->imapPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setImapPassword(?string $imapPassword): void
|
||||||
|
{
|
||||||
|
$this->imapPassword = $imapPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getImapFolder(): string
|
||||||
|
{
|
||||||
|
return (string)$this->imapFolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setImapFolder(?string $imapFolder): void
|
||||||
|
{
|
||||||
|
$this->imapFolder = $imapFolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getImapFlags(): string
|
||||||
|
{
|
||||||
|
return (string)$this->imapFlags;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setImapFlags(?string $var): void
|
||||||
|
{
|
||||||
|
$this->imapFlags = $var;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getImapPort(): string
|
||||||
|
{
|
||||||
|
return (string)$this->imapPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setImapPort(?string $var): void
|
||||||
|
{
|
||||||
|
$this->imapPort = $var;
|
||||||
|
}
|
||||||
|
}
|
||||||
27
src/new/var/plugins/Custom/BUW/Orderimport/Plugin.php
Normal file
27
src/new/var/plugins/Custom/BUW/Orderimport/Plugin.php
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Plugin\Custom\BUW\Orderimport;
|
||||||
|
|
||||||
|
use PSC\System\PluginBundle\Plugin\Base;
|
||||||
|
|
||||||
|
class Plugin extends Base implements \PSC\System\PluginBundle\Interfaces\Plugin
|
||||||
|
{
|
||||||
|
protected $name = 'Import Plugin';
|
||||||
|
|
||||||
|
protected $defaultInstall = true;
|
||||||
|
|
||||||
|
public function getType()
|
||||||
|
{
|
||||||
|
return Plugin::Queues;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDescription()
|
||||||
|
{
|
||||||
|
return 'Importiert Aufträge aus einem Imap Konto und erzeugt XML';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getVersion()
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
168
src/new/var/plugins/Custom/BUW/Orderimport/Queue/Import.php
Normal file
168
src/new/var/plugins/Custom/BUW/Orderimport/Queue/Import.php
Normal file
@ -0,0 +1,168 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Plugin\Custom\BUW\Orderimport\Queue;
|
||||||
|
|
||||||
|
use Ddeboer\Imap\Server;
|
||||||
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
use PSC\Shop\EntityBundle\Document\Queue;
|
||||||
|
use PSC\Shop\EntityBundle\Entity\Contact;
|
||||||
|
use PSC\Shop\EntityBundle\Entity\Shop as PSCShop;
|
||||||
|
use PSC\Shop\OrderBundle\Service\Order;
|
||||||
|
use PSC\Shop\QueueBundle\Event\EventInterface;
|
||||||
|
use PSC\Shop\QueueBundle\Type\ConfigurableElementInterface;
|
||||||
|
use PSC\Shop\QueueBundle\Type\QueueInterface;
|
||||||
|
use PSC\System\SettingsBundle\Document\LogEntry;
|
||||||
|
use PSC\System\SettingsBundle\Service\Log;
|
||||||
|
use PSC\System\SettingsBundle\Service\Shop;
|
||||||
|
use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||||
|
use Symfony\Component\Form\Form;
|
||||||
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
use Symfony\Component\Form\FormFactoryInterface;
|
||||||
|
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
|
||||||
|
|
||||||
|
#[AutoconfigureTag(name: "queues")]
|
||||||
|
class Import implements QueueInterface, ConfigurableElementInterface
|
||||||
|
{
|
||||||
|
public function __construct(
|
||||||
|
private FormFactoryInterface $formFactory,
|
||||||
|
private TokenStorageInterface $securityContext,
|
||||||
|
private Order $orderService,
|
||||||
|
private Shop $shopService,
|
||||||
|
private EntityManagerInterface $entityManager,
|
||||||
|
private Log $logService
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getType(): string
|
||||||
|
{
|
||||||
|
return 'psc_plugin_custom_buw_orderimport_import';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getGroup(): string
|
||||||
|
{
|
||||||
|
return 'Allgemeines';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return 'XML (Imap) Import Plugin';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getName(): string
|
||||||
|
{
|
||||||
|
return 'XML (Imap) Import Plugin';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getForm(FormBuilderInterface $builder, $form_options, EventInterface $event): void
|
||||||
|
{
|
||||||
|
|
||||||
|
$builder->add("imapUsername", TextType::class, array('label' => 'Imap Username', 'attr' => array('class' => 'form-element')));
|
||||||
|
$builder->add("imapPassword", PasswordType::class, array('label' => 'Imap Password', 'required' => false, 'attr' => array('class' => 'form-element')));
|
||||||
|
$builder->add("imapServer", TextType::class, array('label' => 'Imap Server', 'attr' => array('class' => 'form-element')));
|
||||||
|
$builder->add("imapFolder", TextType::class, array('label' => 'Import Folder Imap', 'required' => false, 'attr' => array('class' => 'form-element')));
|
||||||
|
$builder->add("imapFinishFolder", TextType::class, array('label' => 'Finish Folder Imap', 'required' => false, 'attr' => array('class' => 'form-element')));
|
||||||
|
$builder->add("imapFlags", TextType::class, array('label' => 'Imap Flags', 'required' => false, 'attr' => array('class' => 'form-element')));
|
||||||
|
$builder->add("imapPort", TextType::class, array('label' => 'Imap Port', 'attr' => array('class' => 'form-element')));
|
||||||
|
$builder->add("folder", TextType::class, array('label' => 'Folder', 'attr' => array('class' => 'form-element')));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function injectDocument(Form $form, EventInterface $event, Queue $objQueue): void
|
||||||
|
{
|
||||||
|
$url = new \Plugin\Custom\BUW\Orderimport\Document\Import();
|
||||||
|
if ($objQueue->getQueueDocument() != null) {
|
||||||
|
$url = $objQueue->getQueueDocument();
|
||||||
|
}
|
||||||
|
$url->setImapUsername($form->get('imapUsername')->getData());
|
||||||
|
if ($form->get('imapPassword')->getData() != "") {
|
||||||
|
$url->setImapPassword($form->get('imapPassword')->getData());
|
||||||
|
}
|
||||||
|
$url->setImapServer($form->get('imapServer')->getData());
|
||||||
|
$url->setFolder($form->get('folder')->getData());
|
||||||
|
$url->setImapFolder($form->get('imapFolder')->getData());
|
||||||
|
$url->setFinishImapFolder($form->get('imapFinishFolder')->getData());
|
||||||
|
$url->setImapPort($form->get('imapPort')->getData());
|
||||||
|
$url->setImapFlags($form->get('imapFlags')->getData());
|
||||||
|
$objQueue->setQueueDocument($url);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setFormData(Form $form, EventInterface $event, Queue $queueObj): void
|
||||||
|
{
|
||||||
|
$form->get('imapFolder')->setData($queueObj->getQueueDocument()->getImapFolder());
|
||||||
|
$form->get('folder')->setData($queueObj->getQueueDocument()->getFolder());
|
||||||
|
$form->get('imapServer')->setData($queueObj->getQueueDocument()->getImapServer());
|
||||||
|
$form->get('imapUsername')->setData($queueObj->getQueueDocument()->getImapUsername());
|
||||||
|
$form->get('imapPort')->setData($queueObj->getQueueDocument()->getImapPort());
|
||||||
|
$form->get('imapFinishFolder')->setData($queueObj->getQueueDocument()->getFinishImapFolder());
|
||||||
|
$form->get('imapFlags')->setData($queueObj->getQueueDocument()->getImapFlags());
|
||||||
|
$form->get('imapPassword')->setData($queueObj->getQueueDocument()->getImapPassword());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTemplate(): string
|
||||||
|
{
|
||||||
|
return '@PluginCustomBUWOrderimport/queue/import.html.twig';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function execute(EventInterface $event, Queue $doc): bool
|
||||||
|
{
|
||||||
|
|
||||||
|
try {
|
||||||
|
/** @var \Plugin\Custom\BUW\Orderimport\Document\Import $queueSettings */
|
||||||
|
$queueSettings = $doc->getQueueDocument();
|
||||||
|
if (false && file_exists($queueSettings->getFolder() . "/run_oi.txt")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
file_put_contents($queueSettings->getFolder() . "/run_oi.txt", "import");
|
||||||
|
|
||||||
|
set_time_limit(0);
|
||||||
|
|
||||||
|
if ($queueSettings->getImapFlags() == "") {
|
||||||
|
$server = new Server($queueSettings->getImapServer(), $queueSettings->getImapPort());
|
||||||
|
} else {
|
||||||
|
$server = new Server($queueSettings->getImapServer(), $queueSettings->getImapPort(), $queueSettings->getImapFlags());
|
||||||
|
}
|
||||||
|
|
||||||
|
$connection = $server->authenticate($queueSettings->getImapUsername(), $queueSettings->getImapPassword());
|
||||||
|
$messages = $connection->getMailbox($queueSettings->getImapFolder())->getMessages();
|
||||||
|
|
||||||
|
$finishFolder = $connection->getMailbox($queueSettings->getFinishImapFolder());
|
||||||
|
|
||||||
|
foreach ($messages as $message) {
|
||||||
|
$attachments = $message->getAttachments();
|
||||||
|
|
||||||
|
foreach ($attachments as $attachment) {
|
||||||
|
file_put_contents(
|
||||||
|
$queueSettings->getFolder().'/' . $attachment->getFilename(),
|
||||||
|
$attachment->getDecodedContent()
|
||||||
|
);
|
||||||
|
$this->logService->createLogEntry(new PSCShop(), new Contact(), LogEntry::INFO, self::class, "orderimport", "Order Import Imap", ['file' => $attachment->getFilename()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$message->move($finishFolder);
|
||||||
|
}
|
||||||
|
|
||||||
|
$connection->expunge();
|
||||||
|
unlink($queueSettings->getFolder() . "/run_oi.txt");
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
echo $e->getMessage();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getError(): string
|
||||||
|
{
|
||||||
|
return $this->_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
psc_plugin_custom_Weber:
|
||||||
|
resource: "@PluginCustomBUWOrderimport/Controller"
|
||||||
|
type: annotation
|
||||||
|
prefix: /plugin/custom/buw
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
services:
|
||||||
|
_defaults:
|
||||||
|
autowire: true
|
||||||
|
autoconfigure: true
|
||||||
|
|
||||||
|
Plugin\Custom\BUW\Orderimport\:
|
||||||
|
resource: '../../*/*'
|
||||||
@ -0,0 +1,122 @@
|
|||||||
|
|
||||||
|
<div class="panel">
|
||||||
|
<div class="header">
|
||||||
|
<h4>Details</h4>
|
||||||
|
</div>
|
||||||
|
<div class="body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-md-3 form-control-label">{{ form_label(form.imapUsername) }}</label>
|
||||||
|
<div class="col-md-9">
|
||||||
|
{{ form_widget(form.imapUsername) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-md-3 form-control-label">{{ form_label(form.imapPassword) }}</label>
|
||||||
|
<div class="col-md-9">
|
||||||
|
{{ form_widget(form.imapPassword) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-md-3 form-control-label">{{ form_label(form.imapServer) }}</label>
|
||||||
|
<div class="col-md-9">
|
||||||
|
{{ form_widget(form.imapServer) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-md-3 form-control-label">{{ form_label(form.imapPort) }}</label>
|
||||||
|
<div class="col-md-9">
|
||||||
|
{{ form_widget(form.imapPort) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-md-3 form-control-label">{{ form_label(form.imapFlags) }}</label>
|
||||||
|
<div class="col-md-9">
|
||||||
|
{{ form_widget(form.imapFlags) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-md-1 form-control-label">{{ form_label(form.imapFolder) }}</label>
|
||||||
|
<div class="col-md-11">
|
||||||
|
{{ form_widget(form.imapFolder) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-md-1 form-control-label">{{ form_label(form.imapFinishFolder) }}</label>
|
||||||
|
<div class="col-md-11">
|
||||||
|
{{ form_widget(form.imapFinishFolder) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-md-1 form-control-label">{{ form_label(form.folder) }}</label>
|
||||||
|
<div class="col-md-11">
|
||||||
|
{{ form_widget(form.folder) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% if objQueue.id != "" %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-2">
|
||||||
|
<p><button class="btn btn-sm btn-success testImap" type="button">Test</button></p>
|
||||||
|
</div>
|
||||||
|
<div class="col-8">
|
||||||
|
<div class="resultImap"></div>
|
||||||
|
<hr/>
|
||||||
|
<table class="table resultImapDir"></table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% block javascripts %}
|
||||||
|
{% if objQueue.id != "" %}
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function(event) {
|
||||||
|
$('.testImap').click(function() {
|
||||||
|
|
||||||
|
$.getJSON('{{ path('psc_plugin_custom_buw_orderimport_check', {'uuid': objQueue.id}) }}', {}, function(d) {
|
||||||
|
if(d.success) {
|
||||||
|
$('.resultImap').html('<span class="alert alert-success">Verbindung erfolgreich (' + d.count + ' Elemente)</span>');
|
||||||
|
$('.resultImapDir').empty();
|
||||||
|
$( d.data ).each(function( index, element ) {
|
||||||
|
$('.resultImapDir').append('<tr><td><a class="btn btn-sm btn-default" onclick="$(\'#form_imapFolder\').val(\'' + element.key + '\')">Import Benutzen</a></td><td><a class="btn btn-sm btn-default" onclick="$(\'#form_imapFinishFolder\').val(\'' + element.key + '\')">Finish Benutzen</a></td><td>' + element.name + '</td></tr>');
|
||||||
|
});
|
||||||
|
|
||||||
|
}else{
|
||||||
|
$('.resultImap').html('<span class="alert alert-danger">Verbindung konnte nicht hergestellt werden</span>');
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
.fail(function() {
|
||||||
|
$('.resultImap').html('<span class="alert alert-danger">Verbindung konnte nicht hergestellt werden</span>');
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="header"><h5>Pintess Layouter</h5></div>
|
<div class="header"><h5>Printess Layouter</h5></div>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-5">
|
<div class="col-md-5">
|
||||||
|
|||||||
@ -106,8 +106,8 @@
|
|||||||
formFields: [
|
formFields: [
|
||||||
{% for row in data %}
|
{% for row in data %}
|
||||||
{
|
{
|
||||||
name: "{{ row.name }}",
|
name: '{{ row.name }}',
|
||||||
value: "{{ row.value }}"
|
value: '{{ row.value|raw }}'
|
||||||
},
|
},
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
]
|
]
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"build/backend/login.css": "/apps/build/backend/login.5a878154.css",
|
"build/backend/login.css": "/apps/build/backend/login.25156160.css",
|
||||||
"build/backend/login.js": "/apps/build/backend/login.ab0272c2.js",
|
"build/backend/login.js": "/apps/build/backend/login.ab0272c2.js",
|
||||||
"build/backend/dashboard.css": "/apps/build/backend/dashboard.f30e17f9.css",
|
"build/backend/dashboard.css": "/apps/build/backend/dashboard.f30e17f9.css",
|
||||||
"build/backend/dashboard.js": "/apps/build/backend/dashboard.564e38a5.js",
|
"build/backend/dashboard.js": "/apps/build/backend/dashboard.564e38a5.js",
|
||||||
"build/backend/tailwind.css": "/apps/build/backend/tailwind.420ea542.css",
|
"build/backend/tailwind.css": "/apps/build/backend/tailwind.42479308.css",
|
||||||
"build/backend/tailwind.js": "/apps/build/backend/tailwind.d1378a3a.js",
|
"build/backend/tailwind.js": "/apps/build/backend/tailwind.d1378a3a.js",
|
||||||
"build/runtime.js": "/apps/build/runtime.44b7f9b9.js",
|
"build/runtime.js": "/apps/build/runtime.44b7f9b9.js",
|
||||||
"build/185.99565361.js": "/apps/build/185.99565361.js",
|
"build/185.99565361.js": "/apps/build/185.99565361.js",
|
||||||
|
|||||||
@ -3247,6 +3247,9 @@ class UserController extends TP_Controller_Action
|
|||||||
$contact->account_id = $account->id;
|
$contact->account_id = $account->id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (isset($formData ['rech'] ['account'])) {
|
||||||
|
$contact->account_id = (int)$formData ['rech'] ['account'];
|
||||||
|
}
|
||||||
|
|
||||||
$contact->save();
|
$contact->save();
|
||||||
if (isset($formData ['rech'] ['custom1'])) {
|
if (isset($formData ['rech'] ['custom1'])) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user