QuoteController :: generateQuotePdf
Request
GET Parameters
No GET parameters
POST Parameters
No POST parameters
Uploaded Files
No files were uploaded
Request Attributes
Key | Value |
---|---|
_controller | "App\Controller\Quote\QuoteController::generateQuotePdf" |
_firewall_context | "security.firewall.map.context.api" |
_links | Fig\Link\GenericLinkProvider {#5457 -links: [ "000000000a717fbe0000000075e8fb37" => Fig\Link\Link {#5462 -href: "https://dev.app.pol-crm.com/api/docs.jsonld" -rel: [ "http://www.w3.org/ns/hydra/core#apiDocumentation" => true ] -attributes: [] } ] } |
_route | "quote_generate_pdf" |
_route_params | [ "id" => "quote_188395" ] |
_stopwatch_token | "537da1" |
id | "quote_188395" |
Request Headers
Header | Value |
---|---|
accept | "application/ld+json" |
accept-encoding | "gzip, deflate, br, zstd" |
accept-language | "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7" |
connection | "close" |
content-length | "108" |
content-type | "application/json" |
host | "dev.app.pol-crm.com" |
origin | "https://dev.pol-crm.com" |
priority | "u=1, i" |
referer | "https://dev.pol-crm.com/" |
sec-ch-ua | ""Chromium";v="140", "Not=A?Brand";v="24", "Google Chrome";v="140"" |
sec-ch-ua-mobile | "?0" |
sec-ch-ua-platform | ""Windows"" |
sec-fetch-dest | "empty" |
sec-fetch-mode | "cors" |
sec-fetch-site | "same-site" |
user-agent | "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36" |
x-accel-internal | "/internal-nginx-static-location" |
x-php-ob-level | "1" |
x-pol-auth | "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE3NjA5MTI0NDEsImV4cCI6MTc2MDkxNjA0MSwicm9sZXMiOlsiUk9MRV9VU0VSIiwiUk9MRV9TVVBFUkFETUlOIiwiUk9MRV9BRE1JTiIsIlJPTEVfTU9EVUxFX1BST0RVQ1QiLCJST0xFX01PRFVMRV9QUk9EVUNUX0NVU1RPTUlaRSIsIlJPTEVfTU9EVUxFX1FVT1RFX0xJTkUiLCJQUk9TUEVDVF9TSE9XIiwiUFJPU1BFQ1RfQ1VEIiwiQ09OVEFDVF9DVUQiLCJDT05UQUNUX1NIT1ciLCJUQVNLX1NIT1ciLCJUQVNLX0NVRCIsIlFVT1RFX1NIT1ciLCJRVU9URV9DVUQiLCJRVU9URV9SRUdFTkVSQVRFX1BSSUNFUyJdLCJsb2dpbiI6ImRlbW95YW5pZ2F2IiwidXNlcl9pZCI6InVzZXJfMTAxMSIsInVzZXJfZXh0ZXJuYWxfaWQiOiIxMDExIiwiZW1haWwiOiJnLXNhdXRyb25Ac2ZpLmZyIiwiY3VzdG9tZXJfaWQiOiJjdXN0b21lcl8xMjEiLCJjdXN0b21lcl9uYW1lIjoiWUFOSUdBViIsImN1c3RvbWVyX2V4dGVybmFsX2lkIjoiMTIxIiwiY3VzdG9tZXJfbWFpbGluZ19pZCI6IjE0NyIsImZpcnN0bmFtZSI6Ikd1aWxsYXVtZSIsImxhc3RuYW1lIjoiU0FVVFJPTiIsImxpdmVvTG9naW4iOm51bGwsImxpdmVvUGFzc3dvcmQiOm51bGwsImhhc0ludHJhbmV0IjpmYWxzZSwibGFuZ3VhZ2UiOiJGUiIsInNlY3Rpb25zX2xlYWRlZCI6W10sInNlY3Rpb25zX21lbWJlcnMiOlsidXNlcl8xMDExIl0sImlzX3NlY3Rpb25zX2FjdGl2YXRlZCI6ZmFsc2UsInJlZnJlc2hfdG9rZW4iOiIifQ.smruhTDO6MF4efpXGiPp4DyZoLSpsUh3ykwBDmscLGtkvlySQlnSFvS1bxozG8T5Y0oGdkijvDiliogWK_zhqLF6FXho-oEscgCbKhvTjdosGLc4QHX0QAtM1LeVpT3BGVz9isHY1J7X0RDnoWA2GdCwCZ-ELXlS7fP08w_Mc5j8GqGhN5XwD70MLfR5ltD75o5BEhCWKMsWsatkGs3bbd7AfjhqoSz7qexpiHj1BRszq-H5QekWiJWgwOLDUJc85rZYaNVbYu75qseEbKfW-kWAxOZhAZCmVfFDQ-qBxSJ1i7KwVasIGTJDTnJn7l8fDqFWF0jGtC4LJzQEOZDjoOrQVaP2szLusNdOeKICnE3GOpY7E2sHIJpbTf8KlRUSm0uKc4t4hgoSRxnCdQGLx4hcTGSGHyITgso7tVs6068piCfp8JttEo5SoXERPiVNl2oeKa7VQAgtUWMzPI-SYX6QfGCjnrYE3JcTufx8xFtvlS4pmeIaLNJs7Y8l21f-A8MB7y-3zOAzriYExuKUOtT9oZ0GRtCWG5oTUyQ2LI4IjzaqBW_ikRfcccdSOZqZxV_FVw1fO9vPg9Lgi9XKAfKtjCLtI9nMboiZsSk9mx5_CAREqtb476hnnUVOfvHCBazVRQo-FWsSSWNLCIe8MtR9pUny0D8hn5qCQ712Axk" |
x-real-ip | "176.174.157.21" |
x-transaction-id | "front:lxce51snjpf" |
Request Content
Pretty
{ "templateId": "f47ef469dac34bc29180feb40a25724c", "showPrices": false, "customerId": "customer_121", "mode": null }
Raw
{"templateId":"f47ef469dac34bc29180feb40a25724c","showPrices":false,"customerId":"customer_121","mode":null}
Response
Response Headers
Header | Value |
---|---|
access-control-allow-origin | "https://dev.pol-crm.com" |
access-control-expose-headers | "x-debug-token, sentry-trace, baggage, retry-after" |
cache-control | "private, must-revalidate" |
content-type | "application/ld+json" |
date | "Sun, 19 Oct 2025 22:28:24 GMT" |
expires | -1 |
link | "<https://dev.app.pol-crm.com/api/docs.jsonld>; rel="http://www.w3.org/ns/hydra/core#apiDocumentation"" |
pragma | "no-cache" |
vary | "Accept" |
x-debug-token | "ad0aff" |
x-debug-token-link | "https://dev.app.pol-crm.com/_profiler/d0f050" |
x-previous-debug-token | "d0f050" |
x-robots-tag | "noindex" |
Cookies
Request Cookies
No request cookies
Response Cookies
No response cookies
Session
Session Metadata
No session metadata
Session Attributes
No session attributes
Flashes
Flashes
No flash messages were created.
Server Parameters
Server Parameters
Defined in .env
Key | Value |
---|---|
API_BUSINESS_HOST | "http://dev.pol-api-business.pol-crm.com" |
API_CRM_HOST | "http://dev.pol-api-crm.pol-crm.com" |
API_GED_HOST | "http://dev.pol-api-ged.pol-crm.com" |
API_LIVEO | "https://webservice.centrex.liveo.fr/ws/" |
API_MIDDLEWARE_HOST | "https://pol-middleware" |
API_NOTIFY_HOST | "http://dev.pol-api-notify.pol-crm.com" |
API_PARAM_HOST | "http://dev.pol-api-param.pol-crm.com" |
API_POL_MAILING | "http://mailing.sfi.fr/webservices" |
API_POL_MAILING_V2 | "https://dev.mailing.pol-crm.com/webservices" |
API_SEARCH_HOST | "http://dev.pol-api-search.pol-crm.com" |
API_SERVICE_PLENETUDE_HOST | "http://dev.plenetude.pol-crm.com" |
API_USER_HOST | "http://dev.pol-api-user.pol-crm.com" |
APP_ENV | "dev" |
APP_SECRET | "61ff627c8e96e9ac55fc1926e4878f2e" |
BDD_API_BUSINESS | "dev_pol_core" |
BDD_API_CRM | "dev_pol_core" |
BDD_API_GED | "dev_pol_core" |
BDD_API_NOTIFY | "dev_pol_core" |
BDD_API_PARAM | "dev_pol_core" |
BDD_API_SEARCH | "dev_pol_core" |
BDD_API_USER | "dev_pol_core" |
BDD_MIDDLEWARE | "dev_pol_core" |
BDD_SERVICE_PLENETUDE | "dev_pol_core" |
BEGIN_DATE | "2024-01-01" |
CORS_ALLOW_ORIGIN | "^https?://pol-(crm|prospect).localhost(:[0-9]+)?$" |
DATABASE_URL | "mysql://dev_pol_core:VTgooWkhcjebxLPy8E2ycoTjytrULgNQ@127.0.0.1:3306/dev_pol_core" |
END_DATE | "2025-01-31" |
FRONT_URL | "https://pol-crm.localhost" |
FTP_INTRANET_SFI_HOST | "preprod.intranet.sfimultimedia.com" |
FTP_INTRANET_SFI_PASSWORD | "iAw453e?iAw453e?" |
FTP_INTRANET_SFI_USER | "intranetpreprod" |
GED_ABSOLUTE_DIRECTORY_PATH | "/var/www/pol-api-ged/application/data/ged" |
GEONAME_API_TOKEN | "ceciestuntestpourSfi/0000" |
IMPORT_ONDUPACK_PATH_FILE | "/httpdocs/app-pol-crm/dev/current/application/data/import_ondupack" |
INSEE_API_SIRENE_KEY | "09afd2bf-050b-465e-afd2-bf050b865e20" |
IS_MAINTENANCE | "false" |
JWT_PASSPHRASE | "7de1072d7a8fcab69679c1892deb39a7" |
JWT_PUBLIC_KEY | "%kernel.project_dir%/config/jwt/public.pem" |
JWT_SECRET_KEY | "%kernel.project_dir%/config/jwt/private.pem" |
JWT_WHITELIST_PATH | "%kernel.project_dir%/var/tokens" |
MAILER_URL | "smtp://127.0.0.1:1025" |
MAILING_ENV_USER | "depot_mailing_dev-xv42" |
MESSENGER_TRANSPORT_DSN_MIDDLEWARE | "amqp://sfiweb:sfiwweb0000@127.0.0.1:5672/%2f/dev_middleware_messages" |
MESSENGER_TRANSPORT_DSN_NOTIFY | "amqp://sfiweb:sfiwweb0000@127.0.0.1:5672/%2f/dev_notify_messages" |
MESSENGER_TRANSPORT_DSN_SEARCH | "amqp://sfiweb:sfiwweb0000@127.0.0.1:5672/%2f/dev_messages" |
MICROSOFT_GRAPH_API_CLIENT_ID | "3b7f02c4-aa14-4e54-a2b9-2ee1d5d17f8a" |
MICROSOFT_GRAPH_API_CLIENT_SECRET | "FID8Q~zfFRP~Gw-85LpaCj0VqrrRr__HMGpI-drP" |
MICROSOFT_GRAPH_API_NOTIFICATION_URL | "https://dev.app.pol-crm.com/api/microsoft-graph/outlook-subscription-configuration" |
MICROSOFT_GRAPH_API_REDIRECT_URI | "https://dev.pol-crm.com/microsoft-graph" |
MICROSOFT_GRAPH_API_SUBSCRIPTION_EXPIRED_AT | "+2 days" |
MICROSOFT_GRAPH_API_TOKEN_LIFETIME | "+2 days" |
MODULE_MICROSOFT_GRAPH_SECRET | "jqsFP7MjEx1FBe1138D3" |
MONOLOG_APPLICATION_ENVIRONMENT | "dev" |
MONOLOG_APPLICATION_NAME | "pol-middleware" |
MONOLOG_SUBJECT | "[DEV][%level_name%] POL-MIDDLEWARE - %message%" |
MONOLOG_TO_EMAIL | "polv3.log@sfi.fr" |
MYSQL_DATABASE | "dev_pol_core" |
MYSQL_HOST | "127.0.0.1" |
MYSQL_PASSWORD | "VTgooWkhcjebxLPy8E2ycoTjytrULgNQ" |
MYSQL_PORT | "3306" |
MYSQL_USER | "dev_pol_core" |
PREFIX_CUSTOMER_NAME_MAILING | "[DEV]" |
REDIS_ENABLE_V4 | "true" |
REDIS_PREFIX | "dev" |
REDIS_URL | "redis://127.0.0.1:6379" |
SECURITY_ENABLE_TOKEN_WHITELIST | "0" |
SENTRY_DSN | "https://99729cc06c8241e3b07e3f6ae9b6feec@sentry.sfimultimedia.com/9" |
SENTRY_ENVIRONMENT | "dev" |
SENTRY_PERFORMANCE_SAMPLE_RATE | "1.0" |
SFI_MAILING_URL | "https://mailing.sfi.fr/webservices/recupererContactPol.php" |
SFI_SSO_FORCE_CREDENTIALS | "87;707" |
SFI_SSO_MAILING_HOST | "https://mailing.sfi.fr/webservices/sso.php" |
SYSTEMUSER_0662705af65c48908b017d8fb0724bac_PASSWORD | "7G4k4WhQZDkkB5IGLRPcdfik5s58gf58f2g5s6W6T6BXfbYj2H_customer_newco" |
SYSTEMUSER_0662705af65c48908b017d8fb0724bac_USERNAME | "system_0662705af65c48908b017d8fb0724bac" |
SYSTEMUSER_customer_124_PASSWORD | "A6uraa5HQ87hY*unfx3$mr158!d7i*TX_customer_124" |
SYSTEMUSER_customer_124_USERNAME | "system_customer_124" |
SYSTEMUSER_customer_65_PASSWORD | "uBRJV4pUKP1wRk4iULwMnty93MPr4qr3Sod8jFlfJwZdURZB_customer_65" |
SYSTEMUSER_customer_65_USERNAME | "system_customer_65" |
SYSTEMUSER_customer_66_PASSWORD | "7G4k4WhQZDkkB5IGLRPcdfik3tOZfL4PVfs6W6T6BXfbYj2H_customer_66" |
SYSTEMUSER_customer_66_USERNAME | "system_customer_66" |
SYSTEMUSER_customer_98_PASSWORD | "wWZJwEgYjqLdPx77B1o9GR7r6r4Fvug82fmALJLvQCBjWD4G_customer_98" |
SYSTEMUSER_customer_98_USERNAME | "system_customer_98" |
SYSTEMUSER_e8919dbc01f34f79ab22b9c434f114eb_PASSWORD | "TPB5ccJCl4ZL5jurkpedelfwdEiYRt4g30xYM82" |
SYSTEMUSER_e8919dbc01f34f79ab22b9c434f114eb_USERNAME | "system_e8919dbc01f34f79ab22b9c434f114eb" |
Defined as regular env variables
Key | Value |
---|---|
APP_DEBUG | "1" |
CONTENT_LENGTH | "108" |
CONTENT_TYPE | "application/json" |
CONTEXT_DOCUMENT_ROOT | "/var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/current/application/public" |
CONTEXT_PREFIX | "" |
DOCUMENT_ROOT | "/var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/current/application/public" |
FCGI_ROLE | "RESPONDER" |
GATEWAY_INTERFACE | "CGI/1.1" |
HOME | "/var/www/vhosts/app.pol-crm.com" |
HTTPS | "on" |
HTTP_ACCEPT | "application/ld+json" |
HTTP_ACCEPT_ENCODING | "gzip, deflate, br, zstd" |
HTTP_ACCEPT_LANGUAGE | "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7" |
HTTP_CONNECTION | "close" |
HTTP_HOST | "dev.app.pol-crm.com" |
HTTP_ORIGIN | "https://dev.pol-crm.com" |
HTTP_PRIORITY | "u=1, i" |
HTTP_REFERER | "https://dev.pol-crm.com/" |
HTTP_SEC_CH_UA | ""Chromium";v="140", "Not=A?Brand";v="24", "Google Chrome";v="140"" |
HTTP_SEC_CH_UA_MOBILE | "?0" |
HTTP_SEC_CH_UA_PLATFORM | ""Windows"" |
HTTP_SEC_FETCH_DEST | "empty" |
HTTP_SEC_FETCH_MODE | "cors" |
HTTP_SEC_FETCH_SITE | "same-site" |
HTTP_USER_AGENT | "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36" |
HTTP_X_ACCEL_INTERNAL | "/internal-nginx-static-location" |
HTTP_X_POL_AUTH | "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE3NjA5MTI0NDEsImV4cCI6MTc2MDkxNjA0MSwicm9sZXMiOlsiUk9MRV9VU0VSIiwiUk9MRV9TVVBFUkFETUlOIiwiUk9MRV9BRE1JTiIsIlJPTEVfTU9EVUxFX1BST0RVQ1QiLCJST0xFX01PRFVMRV9QUk9EVUNUX0NVU1RPTUlaRSIsIlJPTEVfTU9EVUxFX1FVT1RFX0xJTkUiLCJQUk9TUEVDVF9TSE9XIiwiUFJPU1BFQ1RfQ1VEIiwiQ09OVEFDVF9DVUQiLCJDT05UQUNUX1NIT1ciLCJUQVNLX1NIT1ciLCJUQVNLX0NVRCIsIlFVT1RFX1NIT1ciLCJRVU9URV9DVUQiLCJRVU9URV9SRUdFTkVSQVRFX1BSSUNFUyJdLCJsb2dpbiI6ImRlbW95YW5pZ2F2IiwidXNlcl9pZCI6InVzZXJfMTAxMSIsInVzZXJfZXh0ZXJuYWxfaWQiOiIxMDExIiwiZW1haWwiOiJnLXNhdXRyb25Ac2ZpLmZyIiwiY3VzdG9tZXJfaWQiOiJjdXN0b21lcl8xMjEiLCJjdXN0b21lcl9uYW1lIjoiWUFOSUdBViIsImN1c3RvbWVyX2V4dGVybmFsX2lkIjoiMTIxIiwiY3VzdG9tZXJfbWFpbGluZ19pZCI6IjE0NyIsImZpcnN0bmFtZSI6Ikd1aWxsYXVtZSIsImxhc3RuYW1lIjoiU0FVVFJPTiIsImxpdmVvTG9naW4iOm51bGwsImxpdmVvUGFzc3dvcmQiOm51bGwsImhhc0ludHJhbmV0IjpmYWxzZSwibGFuZ3VhZ2UiOiJGUiIsInNlY3Rpb25zX2xlYWRlZCI6W10sInNlY3Rpb25zX21lbWJlcnMiOlsidXNlcl8xMDExIl0sImlzX3NlY3Rpb25zX2FjdGl2YXRlZCI6ZmFsc2UsInJlZnJlc2hfdG9rZW4iOiIifQ.smruhTDO6MF4efpXGiPp4DyZoLSpsUh3ykwBDmscLGtkvlySQlnSFvS1bxozG8T5Y0oGdkijvDiliogWK_zhqLF6FXho-oEscgCbKhvTjdosGLc4QHX0QAtM1LeVpT3BGVz9isHY1J7X0RDnoWA2GdCwCZ-ELXlS7fP08w_Mc5j8GqGhN5XwD70MLfR5ltD75o5BEhCWKMsWsatkGs3bbd7AfjhqoSz7qexpiHj1BRszq-H5QekWiJWgwOLDUJc85rZYaNVbYu75qseEbKfW-kWAxOZhAZCmVfFDQ-qBxSJ1i7KwVasIGTJDTnJn7l8fDqFWF0jGtC4LJzQEOZDjoOrQVaP2szLusNdOeKICnE3GOpY7E2sHIJpbTf8KlRUSm0uKc4t4hgoSRxnCdQGLx4hcTGSGHyITgso7tVs6068piCfp8JttEo5SoXERPiVNl2oeKa7VQAgtUWMzPI-SYX6QfGCjnrYE3JcTufx8xFtvlS4pmeIaLNJs7Y8l21f-A8MB7y-3zOAzriYExuKUOtT9oZ0GRtCWG5oTUyQ2LI4IjzaqBW_ikRfcccdSOZqZxV_FVw1fO9vPg9Lgi9XKAfKtjCLtI9nMboiZsSk9mx5_CAREqtb476hnnUVOfvHCBazVRQo-FWsSSWNLCIe8MtR9pUny0D8hn5qCQ712Axk" |
HTTP_X_REAL_IP | "176.174.157.21" |
HTTP_X_TRANSACTION_ID | "front:lxce51snjpf" |
PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY | "0" |
PASSENGER_DOWNLOAD_NATIVE_SUPPORT_BINARY | "0" |
PATH | "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" |
PHP_SELF | "/index.php" |
QUERY_STRING | "" |
REDIRECT_HTTPS | "on" |
REDIRECT_PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY | "0" |
REDIRECT_PASSENGER_DOWNLOAD_NATIVE_SUPPORT_BINARY | "0" |
REDIRECT_SSL_TLS_SNI | "dev.app.pol-crm.com" |
REDIRECT_STATUS | "200" |
REDIRECT_URL | "/api/quote/quote_188395/generatepdf" |
REMOTE_ADDR | "176.174.157.21" |
REMOTE_PORT | "45318" |
REQUEST_METHOD | "POST" |
REQUEST_SCHEME | "https" |
REQUEST_TIME | 1760912901 |
REQUEST_TIME_FLOAT | 1760912901.8199 |
REQUEST_URI | "/api/quote/quote_188395/generatepdf" |
SCRIPT_FILENAME | "/var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/current/application/public/index.php" |
SCRIPT_NAME | "/index.php" |
SERVER_ADDR | "185.18.171.8" |
SERVER_ADMIN | "[no address given]" |
SERVER_NAME | "dev.app.pol-crm.com" |
SERVER_PORT | "443" |
SERVER_PROTOCOL | "HTTP/1.0" |
SERVER_SIGNATURE | "<address>Apache Server at dev.app.pol-crm.com Port 443</address>\n" |
SERVER_SOFTWARE | "Apache" |
SSL_TLS_SNI | "dev.app.pol-crm.com" |
SYMFONY_DOTENV_VARS | "APP_ENV,APP_SECRET,BDD_API_BUSINESS,BDD_API_CRM,BDD_API_GED,BDD_API_NOTIFY,BDD_API_PARAM,BDD_API_SEARCH,BDD_API_USER,BDD_MIDDLEWARE,BDD_SERVICE_PLENETUDE,MYSQL_HOST,MYSQL_PORT,MYSQL_USER,MYSQL_PASSWORD,MYSQL_DATABASE,DATABASE_URL,MAILER_URL,CORS_ALLOW_ORIGIN,JWT_SECRET_KEY,JWT_PUBLIC_KEY,JWT_PASSPHRASE,JWT_WHITELIST_PATH,MONOLOG_SUBJECT,MONOLOG_TO_EMAIL,MONOLOG_APPLICATION_NAME,MONOLOG_APPLICATION_ENVIRONMENT,MESSENGER_TRANSPORT_DSN_SEARCH,MESSENGER_TRANSPORT_DSN_NOTIFY,MESSENGER_TRANSPORT_DSN_MIDDLEWARE,SENTRY_DSN,SENTRY_ENVIRONMENT,SENTRY_PERFORMANCE_SAMPLE_RATE,IS_MAINTENANCE,SECURITY_ENABLE_TOKEN_WHITELIST,REDIS_ENABLE_V4,REDIS_URL,API_BUSINESS_HOST,API_CRM_HOST,API_GED_HOST,API_NOTIFY_HOST,API_PARAM_HOST,API_SEARCH_HOST,API_USER_HOST,API_MIDDLEWARE_HOST,API_SERVICE_PLENETUDE_HOST,API_POL_MAILING,API_POL_MAILING_V2,API_LIVEO,MAILING_ENV_USER,FTP_INTRANET_SFI_HOST,FTP_INTRANET_SFI_USER,FTP_INTRANET_SFI_PASSWORD,SFI_SSO_FORCE_CREDENTIALS,MICROSOFT_GRAPH_API_REDIRECT_URI,MICROSOFT_GRAPH_API_CLIENT_ID,MICROSOFT_GRAPH_API_NOTIFICATION_URL,MICROSOFT_GRAPH_API_CLIENT_SECRET,MICROSOFT_GRAPH_API_SUBSCRIPTION_EXPIRED_AT,MODULE_MICROSOFT_GRAPH_SECRET,INSEE_API_SIRENE_KEY,GEONAME_API_TOKEN,GED_ABSOLUTE_DIRECTORY_PATH,IMPORT_ONDUPACK_PATH_FILE,FRONT_URL,REDIS_PREFIX,SFI_SSO_MAILING_HOST,SFI_MAILING_URL,PREFIX_CUSTOMER_NAME_MAILING,MICROSOFT_GRAPH_API_TOKEN_LIFETIME,SYSTEMUSER_e8919dbc01f34f79ab22b9c434f114eb_USERNAME,SYSTEMUSER_e8919dbc01f34f79ab22b9c434f114eb_PASSWORD,SYSTEMUSER_customer_65_USERNAME,SYSTEMUSER_customer_65_PASSWORD,SYSTEMUSER_customer_66_USERNAME,SYSTEMUSER_customer_66_PASSWORD,SYSTEMUSER_customer_124_USERNAME,SYSTEMUSER_customer_124_PASSWORD,SYSTEMUSER_0662705af65c48908b017d8fb0724bac_USERNAME,SYSTEMUSER_0662705af65c48908b017d8fb0724bac_PASSWORD,SYSTEMUSER_customer_98_USERNAME,SYSTEMUSER_customer_98_PASSWORD,BEGIN_DATE,END_DATE" |
USER | "app-pol-crm" |
proxy-nokeepalive | "1" |
Sub Requests 1
ErrorController (token = d0f050)
Key | Value |
---|---|
_controller | "error_controller" |
_links | Fig\Link\GenericLinkProvider {#4780 -links: [ "000000000a7178790000000075e8fb37" => Fig\Link\Link {#4753 -href: "https://dev.app.pol-crm.com/api/docs.jsonld" -rel: [ "http://www.w3.org/ns/hydra/core#apiDocumentation" => true ] -attributes: [] } ] } |
_stopwatch_token | "c6f32c" |
exception | Twig\Error\RuntimeError {#4952 -lineno: 257 -name: "quote_pdf (string template ac17ad76d2b4a01846ec443f7de0b737a81d5226a16b621a485dd25927da0f62)" -rawMessage: "Neither the property "mobile" nor one of the methods "mobile()", "getmobile()"/"ismobile()"/"hasmobile()" or "__call()" exist and have public access in class "App\V4\Model\Security\UserInfo"." -sourcePath: "" -sourceCode: """ <!doctype html>\n <html lang="fr">\n <meta charset="utf-8">\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <title>Devis – YANIGAV – {{ quote.name|default('Enfonce-pieux HYDROCHOC HPG 790') }}</title>\n <style>\n :root { --primary:#0f172a; --muted:#475569; --border:#e2e8f0; --bg:#f8fafc; }\n html, body { margin:0; padding:0; background:var(--bg); color:#0b1220; font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji"; }\n .page { max-width:900px; margin:2rem auto; background:#fff; border:1px solid var(--border); border-radius:12px; overflow:hidden; box-shadow:0 10px 30px rgba(0,0,0,.04); }\n header { padding:1.25rem 1.5rem; background:#fff; border-bottom:1px solid var(--border); display:flex; gap:1rem; align-items:center; }\n .brand { font-weight:700; letter-spacing:.2px; font-size:1rem; color:var(--primary); }\n .sub { color:var(--muted); font-size:.9rem; }\n .grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }\n .section { padding:1.25rem 1.5rem; }\n h1 { font-size:1.4rem; margin:.25rem 0 .5rem; letter-spacing:.2px; }\n h2 { font-size:1.1rem; margin:0 0 .75rem; color:var(--primary); }\n p { margin:.25rem 0; line-height:1.55; }\n .card { background:#fff; border:1px solid var(--border); border-radius:10px; padding:1rem; }\n .muted { color:var(--muted); }\n .kvs { display:grid; grid-template-columns:1fr 1fr; gap:.5rem 1rem; font-size:.95rem; }\n .kvs div { display:flex; align-items:center; gap:.5rem; }\n .pill { font-size:.8rem; padding:.15rem .5rem; border:1px solid var(--border); border-radius:999px; background:#f1f5f9; }\n table { width:100%; border-collapse:collapse; }\n th, td { border:1px solid var(--border); padding:.6rem .5rem; text-align:left; vertical-align:top; }\n thead th { background:#f1f5f9; }\n tfoot td { font-weight:600; }\n .note { font-size:.92rem; background:#f8fafc; border:1px dashed var(--border); padding:.75rem; border-radius:8px; }\n .cols-3 { columns:2; column-gap:1rem; }\n .signature { height:80px; border:1px dashed var(--border); border-radius:10px; display:flex; align-items:center; justify-content:center; color:var(--muted); }\n footer { padding:1rem 1.5rem; border-top:1px solid var(--border); color:var(--muted); font-size:.9rem; background:#fff; }\n </style>\n \n <body>\n <div class="page">\n \n {# Raccourcis #}\n {% set c = (quote.prospect is defined and quote.prospect.contact is defined) ? quote.prospect.contact : null %}\n {% set a = (c and c.mainAddress is defined) ? c.mainAddress : null %}\n {% set comp = (quote.prospect is defined and quote.prospect.company is defined) ? quote.prospect.company : null %}\n {% set lines = quote.quoteLines|default([]) %}\n \n {# Totaux/remise/TVA #}\n {% set total_ht_before_discount = 0 %}\n {% for l in lines %}\n {% set q = l.quantity|default(1) %}\n {% set pu = l.unitPriceExclVat|default(0) %}\n {% set total_ht_before_discount = total_ht_before_discount + (q * pu) %}\n {% endfor %}\n {% if total_ht_before_discount == 0 %}\n {% set total_ht_before_discount = quote.totalExcludingVat|default(0) %}\n {% endif %}\n {% set total_ht = quote.totalExcludingVat|default(total_ht_before_discount) %}\n {% set discount_value = total_ht_before_discount - total_ht %}\n {% set discount_percent = total_ht_before_discount > 0 ? (discount_value / total_ht_before_discount * 100) : 0 %}\n {% set vat_total = 0 %}\n {% for l in lines %}\n {% set vat_total = vat_total + (l.vatAmount|default(0)) %}\n {% endfor %}\n \n {# Ligne principale / formation / options (compat Twig ancien) #}\n {% set first = (lines[0] is defined) ? lines[0] : null %}\n \n {% set mainLine = null %}\n {% set formationLine = null %}\n {% set options = [] %}\n {% for l in lines %}\n {% set ref = l.reference|default('')|lower %}\n {% if mainLine is null and (l.isOptional is not defined or not l.isOptional) and ('formation' not in ref) %}\n {% set mainLine = l %}\n {% endif %}\n {% if formationLine is null and ('formation' in ref) %}\n {% set formationLine = l %}\n {% endif %}\n {% if l.isOptional is defined and l.isOptional %}\n {% set options = options|merge([l]) %}\n {% endif %}\n {% endfor %}\n {% if mainLine is null %}\n {% set mainLine = first %}\n {% endif %}\n \n <!-- HEADER -->\n <header>\n <div style="flex:1">\n <div class="brand">YANIGAV – Enfonce-pieux • Affûte-piquet • Fendeuse de bûche</div>\n <div class="sub">RCS ROANNE B 403 872 724 • SIRET 403 872 724 00014 • APE 4661Z • TVA FR114038727224</div>\n </div>\n <div class="pill">{{ (quote.createdAt|default('now'))|date('d F Y') }}</div>\n </header>\n \n <!-- COORDONNÉES -->\n <div class="section grid-2">\n <div class="card">\n <h2>Expéditeur</h2>\n <p><strong>YANIGAV</strong></p>\n <p>De la part de <strong>{{ managedBy.fullname|default(quote.managedByRealName|default('')) }}</strong> ({{ managedBy.role|default('Resp. Commercial') }})</p>\n <div class="kvs">\n <div><span class="pill">Tél</span> {{ managedBy.phone|default('—') }}</div>\n <div><span class="pill">Port</span> {{ managedBy.mobile|default('—') }}</div>\n <div><span class="pill">Email</span> {% if managedBy.email %}<a href="mailto:{{ managedBy.email }}">{{ managedBy.email }}</a>{% else %}—{% endif %}</div>\n </div>\n </div>\n <div class="card">\n <h2>Destinataire</h2>\n <p><strong>{{ quote.contactIdRealName|default(c.fullname|default(c.name|default(''))) }}</strong></p>\n {% if comp and comp.name %}<p><strong>{{ comp.name }}</strong></p>{% endif %}\n {% if a and (a.postalCode or a.city) %}<p class="muted">{{ a.postalCode|default('') }} {{ a.city|default('') }}</p>{% endif %}\n </div>\n </div>\n \n <!-- INTRO -->\n <div class="section">\n <div class="card">\n <h1>Proposition commerciale</h1>\n <p>{% if c and c.civility %}{{ c.civility }},{% else %}Madame, Monsieur,{% endif %}</p>\n <p>Nous vous remercions de l’intérêt que vous portez à la marque YANIGAV et à ses produits. Suite à votre récent appel téléphonique, voici notre proposition pour un <strong>{{ quote.name|default('Enfonce-pieux HYDROCHOC HPG 790') }}</strong> correspondant à votre demande.</p>\n {% if quote.priceListRef is defined and quote.priceListRef %}\n <p class="muted">{{ quote.priceListRef }}</p>\n {% else %}\n <p class="muted">Tarif — {{ (quote.createdAt|default('now'))|date('Y') }}</p>\n {% endif %}\n </div>\n </div>\n \n <!-- OFFRE PRINCIPALE -->\n <div class="section">\n <div class="card">\n <h2>Offre principale</h2>\n <table>\n <thead>\n <tr>\n <th>Désignation</th>\n <th>Référence</th>\n <th>Prix unitaire HT</th>\n </tr>\n </thead>\n <tbody>\n {% set pu = (mainLine and mainLine.unitPriceExclVat is defined) ? mainLine.unitPriceExclVat : (total_ht_before_discount > 0 ? total_ht_before_discount : 0) %}\n <tr>\n <td>{{ (mainLine and mainLine.name) ? mainLine.name : quote.name }}</td>\n <td>{{ (mainLine and mainLine.reference) ? mainLine.reference : '—' }}</td>\n <td>{{ pu|number_format(0, ',', ' ') }} €</td>\n </tr>\n </tbody>\n </table>\n {% set note = (mainLine and mainLine.description) ? mainLine.description : 'Cinématique unique sur le marché — un véritable atout dans les terrains compliqués.' %}\n <p class="note" style="margin-top:.75rem">{{ note }}</p>\n </div>\n </div>\n \n {# DESCRIPTION / ÉQUIPEMENT / FORMATION / OPTIONS #}\n {% set description = (mainLine and mainLine.description is defined) ? mainLine.description : '' %}\n {% set description = description|replace({'•':'\n',';':'\n'}) %}\n {% set descList = description|split('\n') %}\n \n <div class="section grid-2">\n <div class="card">\n <h2>Points forts</h2>\n {% set hasPoint = false %}\n <ul class="cols-3">\n {% for item in descList %}\n {% set t = item|trim %}\n {% if t != '' %}\n {% set hasPoint = true %}\n <li>{{ t }}</li>\n {% endif %}\n {% endfor %}\n </ul>\n {% if not hasPoint %}\n <p class="muted">Aucun détail technique renseigné pour cet article.</p>\n {% endif %}\n </div>\n \n <div class="card">\n <h2>Équipement de série</h2>\n {% set printedEquip = false %}\n {# 1) Liste explicite mainLine.features #}\n {% if mainLine and mainLine.features is defined and mainLine.features %}\n <ul>\n {% for f in mainLine.features %}\n <li>{{ f }}</li>\n {% set printedEquip = true %}\n {% endfor %}\n </ul>\n {% endif %}\n \n {# 2) Sinon, tentative d’extraction depuis descList (mots clés) #}\n {% if not printedEquip %}\n {% set equipList = [] %}\n {% for item in descList %}\n {% set t = item|trim %}\n {% if t matches '/(équipement|equipement|de série|serie)/i' %}\n {% set equipList = equipList|merge([t]) %}\n {% endif %}\n {% endfor %}\n {% if equipList %}\n <ul>\n {% for f in equipList %}<li>{{ f }}</li>{% endfor %}\n </ul>\n {% set printedEquip = true %}\n {% endif %}\n {% endif %}\n \n {% if not printedEquip %}\n <p class="muted">Aucun équipement de série spécifié.</p>\n {% endif %}\n \n {% if formationLine %}\n <h2 style="margin-top:1rem">Formation / Mise en route</h2>\n <p><strong>{{ formationLine.name|default('Formation / Mise en route') }}</strong> – Prix net :\n {{ (formationLine.totalExclVat|default(formationLine.unitPriceExclVat|default(0)))|number_format(0, ',', ' ') }} € HT</p>\n {% if formationLine.description %}<p class="muted">{{ formationLine.description }}</p>{% endif %}\n {% endif %}\n \n {% if options %}\n <h2 style="margin-top:1rem">Équipements recommandés</h2>\n <ul>\n {% for opt in options %}\n {% set q = opt.quantity|default(1) %}\n {% set pu = opt.unitPriceExclVat|default(0) %}\n {% set rem = opt.discountPercent|default(0) %}\n {% set opt_total = opt.totalExclVat|default(q * pu * (1 - (rem / 100))) %}\n <li>{{ opt.name }} — {{ opt_total|number_format(0, ',', ' ') }} € HT</li>\n {% endfor %}\n </ul>\n {% endif %}\n </div>\n </div>\n \n <!-- CONDITIONS COMMERCIALES -->\n <div class="section">\n <div class="card">\n <h2>Conditions commerciales</h2>\n <ul>\n {% if quote.expiredAt %}<li>Validité de l’offre : 1 mois (jusqu’au {{ quote.expiredAt|date('d/m/Y') }})</li>{% else %}<li>Validité de l’offre : 1 mois</li>{% endif %}\n {% if discount_value > 0 %}<li>Remise de service : {{ discount_percent|round(0, 'floor') }} %</li>{% endif %}\n {% if quote.orderContext is defined and quote.orderContext %}<li>{{ quote.orderContext }}</li>{% endif %}\n <li>Règlement {{ quote.paymentMode|default('30 jours nets par LCR') }}</li>\n <li>Délai : {{ quote.leadTime|default('2 à 3 mois après commande') }}</li>\n {% if quote.shippingFeesHt is defined %}\n {% if quote.shippingFeesHt == 0 %}<li>Port franco</li>\n {% elseif quote.shippingFeesHt > 0 %}<li>Frais de port : {{ quote.shippingFeesHt|number_format(2, ',', ' ') }} € HT</li>\n {% else %}<li>Port : {{ quote.shippingMode|default('selon conditions') }}</li>\n {% endif %}\n {% else %}\n <li>Port : {{ quote.shippingMode|default('selon conditions') }}</li>\n {% endif %}\n {% if quote.customerRef is defined and quote.customerRef %}<li>Réf. client : {{ quote.customerRef }}</li>{% endif %}\n </ul>\n </div>\n </div>\n \n <!-- SIGNATURES -->\n <div class="section grid-2">\n <div class="card">\n <h2>Signataires</h2>\n <p><strong>{{ managedBy.fullname|default(quote.managedByRealName|default('')) }}</strong> – {{ managedBy.role|default('Resp. Commercial') }}{% if managedBy.mobile %} – {{ managedBy.mobile }}{% endif %}</p>\n <div class="signature">Signature expéditeur</div>\n </div>\n <div class="card">\n <h2>Bon pour accord</h2>\n <p><strong>{{ quote.contactIdRealName|default(c.fullname|default(c.name|default(''))) }}</strong>{% if comp and comp.name %} – {{ comp.name }}{% endif %}</p>\n <div class="signature">Cachet et signature</div>\n </div>\n </div>\n \n <!-- PIED -->\n <footer>\n YANIGAV – Enfonce-pieux • Affûte-piquet • Fendeuse de bûche — RCS ROANNE B 403 872 724 — SIRET 403 872 724 00014 — APE 4661Z — TVA FR114038727224\n </footer>\n </div>\n \n {# PAGE 2 : CGV (optionnelle) #}\n {% if cgv is defined or quote.cgvText is defined %}\n <div style="page-break-before:always;"></div>\n <div class="page">\n <div class="section">\n <div class="card">\n <h2>Conditions Générales de Vente</h2>\n <div class="note" style="white-space:pre-wrap">\n {{ cgv|default(quote.cgvText)|raw }}\n </div>\n </div>\n </div>\n <footer>\n Document généré automatiquement — valable sous réserve des conditions précisées ci-dessus.\n </footer>\n </div>\n {% endif %}\n </body>\n </html> """ #message: "Neither the property "mobile" nor one of the methods "mobile()", "getmobile()"/"ismobile()"/"hasmobile()" or "__call()" exist and have public access in class "App\V4\Model\Security\UserInfo" in "quote_pdf (string template ac17ad76d2b4a01846ec443f7de0b737a81d5226a16b621a485dd25927da0f62)" at line 257." #code: 0 #file: "/var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Extension/CoreExtension.php" #line: 1553 : { { twig_get_attribute(Environment $env, Source $source, $object, $item, array $arguments = [], $type = 'any', $isDefinedTest = false, $ignoreStrictCheck = false, $sandboxed = false, int $lineno = -1) … › › |
logger | Symfony\Bridge\Monolog\Logger {#1521 #name: "request" #handlers: [ Monolog\Handler\RotatingFileHandler {#1507 #filename: "/var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/shared/application/var/log/dev.log" #maxFiles: 14 #mustRotate: false #nextRotation: DateTime @1760997600 {#1508 : 2025-10-21 00:00:00.0 Europe/Paris (+02:00) } #filenameFormat: "{filename}-{date}" #dateFormat: "Y-m-d" #stream: stream resource @2436 : false : true : false : "plainfile" : "STDIO" : "a" : 0 : true : "/var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/shared/application/var/log/dev-2025-10-20.log" : [] } #url: "/var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/shared/application/var/log/dev-2025-10-20.log" -errorMessage: null #filePermission: null #useLocking: false -dirCreated: true #level: 100 #bubble: true #formatter: Monolog\Formatter\LineFormatter {#390 …} #processors: [ Monolog\Processor\PsrLogMessageProcessor {#1690} ] } Symfony\Bridge\Monolog\Handler\ConsoleHandler {#1520 -output: null -verbosityLevelMap: [ 16 => 400 32 => 300 64 => 250 128 => 200 256 => 100 ] -consoleFormaterOptions: [] #level: 100 #bubble: true #formatter: null #processors: [] } Monolog\Handler\FingersCrossedHandler {#1696 #handler: Monolog\Handler\BufferHandler {#1687 …} #activationStrategy: Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy {#1650 …} #buffering: false #bufferSize: 0 #buffer: [] #stopBuffering: true #passthruLevel: null #level: 100 #bubble: true #formatter: null #processors: [] } ] #processors: [ App\Service\Monolog\ELKProcessor {#1701 -applicationName: "pol-middleware" -applicationEnvironment: "dev" } Symfony\Bridge\Monolog\Processor\DebugProcessor {#1689 -records: [ "000000000a716adf0000000075e8fb37" => [ [ "timestamp" => 1760912902 "message" => "Matched route "{route}"." "priority" => 200 "priorityName" => "INFO" "context" => [ "route" => "quote_generate_pdf" "route_parameters" => [ "_route" => "quote_generate_pdf" "_controller" => "App\Controller\Quote\QuoteController::generateQuotePdf" "id" => "quote_188395" ] "request_uri" => "https://dev.app.pol-crm.com/api/quote/quote_188395/generatepdf" "method" => "POST" ] "channel" => "request" ] [ "timestamp" => 1760912902 "message" => "Checking for guard authentication credentials." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "firewall_key" => "api" "authenticators" => 1 ] "channel" => "security" ] [ "timestamp" => 1760912902 "message" => "Checking support on guard authenticator." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "firewall_key" => "api" "authenticator" => "App\Security\JWTTokenWhitelistAuthenticator" ] "channel" => "security" ] [ "timestamp" => 1760912902 "message" => "Calling getCredentials() on guard authenticator." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "firewall_key" => "api" "authenticator" => "App\Security\JWTTokenWhitelistAuthenticator" ] "channel" => "security" ] [ "timestamp" => 1760912902 "message" => "Passing guard token information to the GuardAuthenticationProvider" "priority" => 100 "priorityName" => "DEBUG" "context" => [ "firewall_key" => "api" "authenticator" => "App\Security\JWTTokenWhitelistAuthenticator" ] "channel" => "security" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "lexik_jwt_authentication.on_jwt_authenticated" "listener" => "App\V4\EventSubscriber\PreventMultipleLoginsEventSubscriber::onJWTAuthenticated" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Guard authentication successful!" "priority" => 200 "priorityName" => "INFO" "context" => [ "token" => Lexik\Bundle\JWTAuthenticationBundle\Security\Authentication\Token\JWTUserToken {#496 #rawToken: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE3NjA5MTI0NDEsImV4cCI6MTc2MDkxNjA0MSwicm9sZXMiOlsiUk9MRV9VU0VSIiwiUk9MRV9TVVBFUkFETUlOIiwiUk9MRV9BRE1JTiIsIlJPTEVfTU9EVUxFX1BST0RVQ1QiLCJST0xFX01PRFVMRV9QUk9EVUNUX0NVU1RPTUlaRSIsIlJPTEVfTU9EVUxFX1FVT1RFX0xJTkUiLCJQUk9TUEVDVF9TSE9XIiwiUFJPU1BFQ1RfQ1VEIiwiQ09OVEFDVF9DVUQiLCJDT05UQUNUX1NIT1ciLCJUQVNLX1NIT1ciLCJUQVNLX0NVRCIsIlFVT1RFX1NIT1ciLCJRVU9URV9DVUQiLCJRVU9URV9SRUdFTkVSQVRFX1BSSUNFUyJdLCJsb2dpbiI6ImRlbW95YW5pZ2F2IiwidXNlcl9pZCI6InVzZXJfMTAxMSIsInVzZXJfZXh0ZXJuYWxfaWQiOiIxMDExIiwiZW1haWwiOiJnLXNhdXRyb25Ac2ZpLmZyIiwiY3VzdG9tZXJfaWQiOiJjdXN0b21lcl8xMjEiLCJjdXN0b21lcl9uYW1lIjoiWUFOSUdBViIsImN1c3RvbWVyX2V4dGVybmFsX2lkIjoiMTIxIiwiY3VzdG9tZXJfbWFpbGluZ19pZCI6IjE0NyIsImZpcnN0bmFtZSI6Ikd1aWxsYXVtZSIsImxhc3RuYW1lIjoiU0FVVFJPTiIsImxpdmVvTG9naW4iOm51bGwsImxpdmVvUGFzc3dvcmQiOm51bGwsImhhc0ludHJhbmV0IjpmYWxzZSwibGFuZ3VhZ2UiOiJGUiIsInNlY3Rpb25zX2xlYWRlZCI6W10sInNlY3Rpb25zX21lbWJlcnMiOlsidXNlcl8xMDExIl0sImlzX3NlY3Rpb25zX2FjdGl2YXRlZCI6ZmFsc2UsInJlZnJlc2hfdG9rZW4iOiIifQ.smruhTDO6MF4efpXGiPp4DyZoLSpsUh3ykwBDmscLGtkvlySQlnSFvS1bxozG8T5Y0oGdkijvDiliogWK_zhqLF6FXho-oEscgCbKhvTjdosGLc4QHX0QAtM1LeVpT3BGVz9isHY1J7X0RDnoWA2GdCwCZ-ELXlS7fP08w_Mc5j8GqGhN5XwD70MLfR5ltD75o5BEhCWKMsWsatkGs3bbd7AfjhqoSz7qexpiHj1BRszq-H5QekWiJWgwOLDUJc85rZYaNVbYu75qseEbKfW-kWAxOZhAZCmVfFDQ-qBxSJ1i7KwVasIGTJDTnJn7l8fDqFWF0jGtC4LJzQEOZDjoOrQVaP2szLusNdOeKICnE3GOpY7E2sHIJpbTf8KlRUSm0uKc4t4hgoSRxnCdQGLx4hcTGSGHyITgso7tVs6068piCfp8JttEo5SoXERPiVNl2oeKa7VQAgtUWMzPI-SYX6QfGCjnrYE3JcTufx8xFtvlS4pmeIaLNJs7Y8l21f-A8MB7y-3zOAzriYExuKUOtT9oZ0GRtCWG5oTUyQ2LI4IjzaqBW_ikRfcccdSOZqZxV_FVw1fO9vPg9Lgi9XKAfKtjCLtI9nMboiZsSk9mx5_CAREqtb476hnnUVOfvHCBazVRQo-FWsSSWNLCIe8MtR9pUny0D8hn5qCQ712Axk" #providerKey: "api" -user: App\Security\User {#424 …} -roles: [ Symfony\Component\Security\Core\Role\Role {#759 -role: "ROLE_USER" } Symfony\Component\Security\Core\Role\Role {#761 -role: "ROLE_SUPERADMIN" } Symfony\Component\Security\Core\Role\Role {#760 -role: "ROLE_ADMIN" } Symfony\Component\Security\Core\Role\Role {#474 -role: "ROLE_MODULE_PRODUCT" } Symfony\Component\Security\Core\Role\Role {#762 -role: "ROLE_MODULE_PRODUCT_CUSTOMIZE" } Symfony\Component\Security\Core\Role\Role {#763 -role: "ROLE_MODULE_QUOTE_LINE" } Symfony\Component\Security\Core\Role\Role {#764 -role: "PROSPECT_SHOW" } Symfony\Component\Security\Core\Role\Role {#765 -role: "PROSPECT_CUD" } Symfony\Component\Security\Core\Role\Role {#766 -role: "CONTACT_CUD" } Symfony\Component\Security\Core\Role\Role {#767 -role: "CONTACT_SHOW" } Symfony\Component\Security\Core\Role\Role {#768 -role: "TASK_SHOW" } Symfony\Component\Security\Core\Role\Role {#769 -role: "TASK_CUD" } Symfony\Component\Security\Core\Role\Role {#770 -role: "QUOTE_SHOW" } Symfony\Component\Security\Core\Role\Role {#771 -role: "QUOTE_CUD" } Symfony\Component\Security\Core\Role\Role {#772 -role: "QUOTE_REGENERATE_PRICES" } ] -roleNames: [ "ROLE_USER" "ROLE_SUPERADMIN" "ROLE_ADMIN" "ROLE_MODULE_PRODUCT" "ROLE_MODULE_PRODUCT_CUSTOMIZE" "ROLE_MODULE_QUOTE_LINE" "PROSPECT_SHOW" "PROSPECT_CUD" "CONTACT_CUD" "CONTACT_SHOW" "TASK_SHOW" "TASK_CUD" "QUOTE_SHOW" "QUOTE_CUD" "QUOTE_REGENERATE_PRICES" ] -authenticated: true -attributes: [] } "authenticator" => "App\Security\JWTTokenWhitelistAuthenticator" ] "channel" => "security" ] [ "timestamp" => 1760912902 "message" => "Guard authenticator set no success response: request continues." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "authenticator" => "App\Security\JWTTokenWhitelistAuthenticator" ] "channel" => "security" ] [ "timestamp" => 1760912902 "message" => "Remember me skipped: it is not configured for the firewall." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "authenticator" => "App\Security\JWTTokenWhitelistAuthenticator" ] "channel" => "security" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "App\V4\Dev\EventSubscriber\DisableProfilerOnProfilerEventSubscriber::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "App\EventListener\DebugRequestListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "App\EventListener\DebugRequestListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Symfony\Component\HttpKernel\EventListener\ValidateRequestListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Nelmio\CorsBundle\EventListener\CorsListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "App\EventListener\RequestListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Symfony\Component\HttpKernel\EventListener\LocaleListener::setDefaultLocale" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Symfony\Bundle\FrameworkBundle\EventListener\ResolveControllerNameSubscriber::resolveControllerName" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "ApiPlatform\Core\Filter\QueryParameterValidateListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::configureLogoutUrlGenerator" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "ApiPlatform\Core\EventListener\AddFormatListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "App\DoctrineFilter\CustomerFilterEventSubscriber::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Sentry\SentryBundle\EventListener\RequestListener::handleKernelRequestEvent" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "ApiPlatform\Core\EventListener\ReadListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Sentry\SentryBundle\EventListener\TracingRequestListener::handleKernelRequestEvent" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "ApiPlatform\Core\Security\EventListener\DenyAccessListener::onSecurity" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Sentry\SentryBundle\EventListener\SubRequestListener::handleKernelRequestEvent" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "ApiPlatform\Core\EventListener\DeserializeListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Sentry\SentryBundle\EventListener\TracingSubRequestListener::handleKernelRequestEvent" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "ApiPlatform\Core\Security\EventListener\DenyAccessListener::onSecurityPostDenormalize" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "ApiPlatform\Core\Bridge\Symfony\Bundle\EventListener\SwaggerUiListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "App\V4\EventSubscriber\Sentry\RegisterTransactionIdEventSubscriber::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.request" "listener" => "Stof\DoctrineExtensionsBundle\EventListener\BlameListener::onKernelRequest" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.controller" "listener" => "Sentry\SentryBundle\EventListener\RequestListener::handleKernelControllerEvent" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.controller" "listener" => "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.controller" "listener" => "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.controller" "listener" => "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.controller" "listener" => "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.controller" "listener" => "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelController" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.controller" "listener" => "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.controller_arguments" "listener" => "Symfony\Component\HttpKernel\EventListener\ErrorListener::onControllerArguments" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.controller_arguments" "listener" => "Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener::onKernelControllerArguments" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "kernel.controller_arguments" "listener" => "Sensio\Bundle\FrameworkExtraBundle\EventListener\IsGrantedListener::onKernelControllerArguments" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Notified event "{event}" to listener "{listener}"." "priority" => 100 "priorityName" => "DEBUG" "context" => [ "event" => "debug.security.authorization.vote" "listener" => "Symfony\Bundle\SecurityBundle\EventListener\VoteListener::onVoterVote" ] "channel" => "event" ] [ "timestamp" => 1760912902 "message" => "Request: "GET http://dev.pol-api-business.pol-crm.com/api/quotes/quote_188395?customerId=customer_121"" "priority" => 200 "priorityName" => "INFO" "context" => [] "channel" => "http_client" ] [ "timestamp" => 1760912902 "message" => "Response: "200 http://dev.pol-api-business.pol-crm.com/api/quotes/quote_188395?customerId=customer_121"" "priority" => 200 "priorityName" => "INFO" "context" => [] "channel" => "http_client" ] [ "timestamp" => 1760912902 "message" => "Request: "GET http://dev.pol-api-param.pol-crm.com/api/templates/f47ef469dac34bc29180feb40a25724c"" "priority" => 200 "priorityName" => "INFO" "context" => [] "channel" => "http_client" ] [ "timestamp" => 1760912902 "message" => "Response: "200 http://dev.pol-api-param.pol-crm.com/api/templates/f47ef469dac34bc29180feb40a25724c"" "priority" => 200 "priorityName" => "INFO" "context" => [] "channel" => "http_client" ] [ "timestamp" => 1760912902 "message" => "Request: "GET http://dev.pol-api-crm.pol-crm.com/api/prospects/prospect_1199919?customerId=customer_121"" "priority" => 200 "priorityName" => "INFO" "context" => [] "channel" => "http_client" ] [ "timestamp" => 1760912903 "message" => "Response: "200 http://dev.pol-api-crm.pol-crm.com/api/prospects/prospect_1199919?customerId=customer_121"" "priority" => 200 "priorityName" => "INFO" "context" => [] "channel" => "http_client" ] [ "timestamp" => 1760912903 "message" => "Request: "GET http://dev.pol-api-user.pol-crm.com/api/users/user_1206?customerId=customer_121"" "priority" => 200 "priorityName" => "INFO" "context" => [] "channel" => "http_client" ] [ "timestamp" => 1760912903 "message" => "Response: "200 http://dev.pol-api-user.pol-crm.com/api/users/user_1206?customerId=customer_121"" "priority" => 200 "priorityName" => "INFO" "context" => [] "channel" => "http_client" ] [ "timestamp" => 1760912903 "message" => "Request: "GET http://dev.pol-api-crm.pol-crm.com/api/contacts/contact_753862?customerId=customer_121"" "priority" => 200 "priorityName" => "INFO" "context" => [] "channel" => "http_client" ] [ "timestamp" => 1760912903 "message" => "Response: "200 http://dev.pol-api-crm.pol-crm.com/api/contacts/contact_753862?customerId=customer_121"" "priority" => 200 "priorityName" => "INFO" "context" => [] "channel" => "http_client" ] [ "timestamp" => 1760912903 "message" => "Request: "GET http://dev.pol-api-user.pol-crm.com/api/users/user_1011?customerId=customer_121"" "priority" => 200 "priorityName" => "INFO" "context" => [] "channel" => "http_client" ] [ "timestamp" => 1760912904 "message" => "Response: "200 http://dev.pol-api-user.pol-crm.com/api/users/user_1011?customerId=customer_121"" "priority" => 200 "priorityName" => "INFO" "context" => [] "channel" => "http_client" ] [ "timestamp" => 1760912904 "message" => "Uncaught PHP Exception Twig\Error\RuntimeError: "Neither the property "mobile" nor one of the methods "mobile()", "getmobile()"/"ismobile()"/"hasmobile()" or "__call()" exist and have public access in class "App\V4\Model\Security\UserInfo" in "quote_pdf (string template ac17ad76d2b4a01846ec443f7de0b737a81d5226a16b621a485dd25927da0f62)" at line 257." at /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Extension/CoreExtension.php line 1553" "priority" => 500 "priorityName" => "CRITICAL" "context" => [ "exception" => Twig\Error\RuntimeError {#4952 -lineno: 257 -name: "quote_pdf (string template ac17ad76d2b4a01846ec443f7de0b737a81d5226a16b621a485dd25927da0f62)" -rawMessage: "Neither the property "mobile" nor one of the methods "mobile()", "getmobile()"/"ismobile()"/"hasmobile()" or "__call()" exist and have public access in class "App\V4\Model\Security\UserInfo"." -sourcePath: "" -sourceCode: """ <!doctype html>\n <html lang="fr">\n <meta charset="utf-8">\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <title>Devis – YANIGAV – {{ quote.name|default('Enfonce-pieux HYDROCHOC HPG 790') }}</title>\n <style>\n :root { --primary:#0f172a; --muted:#475569; --border:#e2e8f0; --bg:#f8fafc; }\n html, body { margin:0; padding:0; background:var(--bg); color:#0b1220; font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji"; }\n .page { max-width:900px; margin:2rem auto; background:#fff; border:1px solid var(--border); border-radius:12px; overflow:hidden; box-shadow:0 10px 30px rgba(0,0,0,.04); }\n header { padding:1.25rem 1.5rem; background:#fff; border-bottom:1px solid var(--border); display:flex; gap:1rem; align-items:center; }\n .brand { font-weight:700; letter-spacing:.2px; font-size:1rem; color:var(--primary); }\n .sub { color:var(--muted); font-size:.9rem; }\n .grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }\n .section { padding:1.25rem 1.5rem; }\n h1 { font-size:1.4rem; margin:.25rem 0 .5rem; letter-spacing:.2px; }\n h2 { font-size:1.1rem; margin:0 0 .75rem; color:var(--primary); }\n p { margin:.25rem 0; line-height:1.55; }\n .card { background:#fff; border:1px solid var(--border); border-radius:10px; padding:1rem; }\n .muted { color:var(--muted); }\n .kvs { display:grid; grid-template-columns:1fr 1fr; gap:.5rem 1rem; font-size:.95rem; }\n .kvs div { display:flex; align-items:center; gap:.5rem; }\n .pill { font-size:.8rem; padding:.15rem .5rem; border:1px solid var(--border); border-radius:999px; background:#f1f5f9; }\n table { width:100%; border-collapse:collapse; }\n th, td { border:1px solid var(--border); padding:.6rem .5rem; text-align:left; vertical-align:top; }\n thead th { background:#f1f5f9; }\n tfoot td { font-weight:600; }\n .note { font-size:.92rem; background:#f8fafc; border:1px dashed var(--border); padding:.75rem; border-radius:8px; }\n .cols-3 { columns:2; column-gap:1rem; }\n .signature { height:80px; border:1px dashed var(--border); border-radius:10px; display:flex; align-items:center; justify-content:center; color:var(--muted); }\n footer { padding:1rem 1.5rem; border-top:1px solid var(--border); color:var(--muted); font-size:.9rem; background:#fff; }\n </style>\n \n <body>\n <div class="page">\n \n {# Raccourcis #}\n {% set c = (quote.prospect is defined and quote.prospect.contact is defined) ? quote.prospect.contact : null %}\n {% set a = (c and c.mainAddress is defined) ? c.mainAddress : null %}\n {% set comp = (quote.prospect is defined and quote.prospect.company is defined) ? quote.prospect.company : null %}\n {% set lines = quote.quoteLines|default([]) %}\n \n {# Totaux/remise/TVA #}\n {% set total_ht_before_discount = 0 %}\n {% for l in lines %}\n {% set q = l.quantity|default(1) %}\n {% set pu = l.unitPriceExclVat|default(0) %}\n {% set total_ht_before_discount = total_ht_before_discount + (q * pu) %}\n {% endfor %}\n {% if total_ht_before_discount == 0 %}\n {% set total_ht_before_discount = quote.totalExcludingVat|default(0) %}\n {% endif %}\n {% set total_ht = quote.totalExcludingVat|default(total_ht_before_discount) %}\n {% set discount_value = total_ht_before_discount - total_ht %}\n {% set discount_percent = total_ht_before_discount > 0 ? (discount_value / total_ht_before_discount * 100) : 0 %}\n {% set vat_total = 0 %}\n {% for l in lines %}\n {% set vat_total = vat_total + (l.vatAmount|default(0)) %}\n {% endfor %}\n \n {# Ligne principale / formation / options (compat Twig ancien) #}\n {% set first = (lines[0] is defined) ? lines[0] : null %}\n \n {% set mainLine = null %}\n {% set formationLine = null %}\n {% set options = [] %}\n {% for l in lines %}\n {% set ref = l.reference|default('')|lower %}\n {% if mainLine is null and (l.isOptional is not defined or not l.isOptional) and ('formation' not in ref) %}\n {% set mainLine = l %}\n {% endif %}\n {% if formationLine is null and ('formation' in ref) %}\n {% set formationLine = l %}\n {% endif %}\n {% if l.isOptional is defined and l.isOptional %}\n {% set options = options|merge([l]) %}\n {% endif %}\n {% endfor %}\n {% if mainLine is null %}\n {% set mainLine = first %}\n {% endif %}\n \n <!-- HEADER -->\n <header>\n <div style="flex:1">\n <div class="brand">YANIGAV – Enfonce-pieux • Affûte-piquet • Fendeuse de bûche</div>\n <div class="sub">RCS ROANNE B 403 872 724 • SIRET 403 872 724 00014 • APE 4661Z • TVA FR114038727224</div>\n </div>\n <div class="pill">{{ (quote.createdAt|default('now'))|date('d F Y') }}</div>\n </header>\n \n <!-- COORDONNÉES -->\n <div class="section grid-2">\n <div class="card">\n <h2>Expéditeur</h2>\n <p><strong>YANIGAV</strong></p>\n <p>De la part de <strong>{{ managedBy.fullname|default(quote.managedByRealName|default('')) }}</strong> ({{ managedBy.role|default('Resp. Commercial') }})</p>\n <div class="kvs">\n <div><span class="pill">Tél</span> {{ managedBy.phone|default('—') }}</div>\n <div><span class="pill">Port</span> {{ managedBy.mobile|default('—') }}</div>\n <div><span class="pill">Email</span> {% if managedBy.email %}<a href="mailto:{{ managedBy.email }}">{{ managedBy.email }}</a>{% else %}—{% endif %}</div>\n </div>\n </div>\n <div class="card">\n <h2>Destinataire</h2>\n <p><strong>{{ quote.contactIdRealName|default(c.fullname|default(c.name|default(''))) }}</strong></p>\n {% if comp and comp.name %}<p><strong>{{ comp.name }}</strong></p>{% endif %}\n {% if a and (a.postalCode or a.city) %}<p class="muted">{{ a.postalCode|default('') }} {{ a.city|default('') }}</p>{% endif %}\n </div>\n </div>\n \n <!-- INTRO -->\n <div class="section">\n <div class="card">\n <h1>Proposition commerciale</h1>\n <p>{% if c and c.civility %}{{ c.civility }},{% else %}Madame, Monsieur,{% endif %}</p>\n <p>Nous vous remercions de l’intérêt que vous portez à la marque YANIGAV et à ses produits. Suite à votre récent appel téléphonique, voici notre proposition pour un <strong>{{ quote.name|default('Enfonce-pieux HYDROCHOC HPG 790') }}</strong> correspondant à votre demande.</p>\n {% if quote.priceListRef is defined and quote.priceListRef %}\n <p class="muted">{{ quote.priceListRef }}</p>\n {% else %}\n <p class="muted">Tarif — {{ (quote.createdAt|default('now'))|date('Y') }}</p>\n {% endif %}\n </div>\n </div>\n \n <!-- OFFRE PRINCIPALE -->\n <div class="section">\n <div class="card">\n <h2>Offre principale</h2>\n <table>\n <thead>\n <tr>\n <th>Désignation</th>\n <th>Référence</th>\n <th>Prix unitaire HT</th>\n </tr>\n </thead>\n <tbody>\n {% set pu = (mainLine and mainLine.unitPriceExclVat is defined) ? mainLine.unitPriceExclVat : (total_ht_before_discount > 0 ? total_ht_before_discount : 0) %}\n <tr>\n <td>{{ (mainLine and mainLine.name) ? mainLine.name : quote.name }}</td>\n <td>{{ (mainLine and mainLine.reference) ? mainLine.reference : '—' }}</td>\n <td>{{ pu|number_format(0, ',', ' ') }} €</td>\n </tr>\n </tbody>\n </table>\n {% set note = (mainLine and mainLine.description) ? mainLine.description : 'Cinématique unique sur le marché — un véritable atout dans les terrains compliqués.' %}\n <p class="note" style="margin-top:.75rem">{{ note }}</p>\n </div>\n </div>\n \n {# DESCRIPTION / ÉQUIPEMENT / FORMATION / OPTIONS #}\n {% set description = (mainLine and mainLine.description is defined) ? mainLine.description : '' %}\n {% set description = description|replace({'•':'\n',';':'\n'}) %}\n {% set descList = description|split('\n') %}\n \n <div class="section grid-2">\n <div class="card">\n <h2>Points forts</h2>\n {% set hasPoint = false %}\n <ul class="cols-3">\n {% for item in descList %}\n {% set t = item|trim %}\n {% if t != '' %}\n {% set hasPoint = true %}\n <li>{{ t }}</li>\n {% endif %}\n {% endfor %}\n </ul>\n {% if not hasPoint %}\n <p class="muted">Aucun détail technique renseigné pour cet article.</p>\n {% endif %}\n </div>\n \n <div class="card">\n <h2>Équipement de série</h2>\n {% set printedEquip = false %}\n {# 1) Liste explicite mainLine.features #}\n {% if mainLine and mainLine.features is defined and mainLine.features %}\n <ul>\n {% for f in mainLine.features %}\n <li>{{ f }}</li>\n {% set printedEquip = true %}\n {% endfor %}\n </ul>\n {% endif %}\n \n {# 2) Sinon, tentative d’extraction depuis descList (mots clés) #}\n {% if not printedEquip %}\n {% set equipList = [] %}\n {% for item in descList %}\n {% set t = item|trim %}\n {% if t matches '/(équipement|equipement|de série|serie)/i' %}\n {% set equipList = equipList|merge([t]) %}\n {% endif %}\n {% endfor %}\n {% if equipList %}\n <ul>\n {% for f in equipList %}<li>{{ f }}</li>{% endfor %}\n </ul>\n {% set printedEquip = true %}\n {% endif %}\n {% endif %}\n \n {% if not printedEquip %}\n <p class="muted">Aucun équipement de série spécifié.</p>\n {% endif %}\n \n {% if formationLine %}\n <h2 style="margin-top:1rem">Formation / Mise en route</h2>\n <p><strong>{{ formationLine.name|default('Formation / Mise en route') }}</strong> – Prix net :\n {{ (formationLine.totalExclVat|default(formationLine.unitPriceExclVat|default(0)))|number_format(0, ',', ' ') }} € HT</p>\n {% if formationLine.description %}<p class="muted">{{ formationLine.description }}</p>{% endif %}\n {% endif %}\n \n {% if options %}\n <h2 style="margin-top:1rem">Équipements recommandés</h2>\n <ul>\n {% for opt in options %}\n {% set q = opt.quantity|default(1) %}\n {% set pu = opt.unitPriceExclVat|default(0) %}\n {% set rem = opt.discountPercent|default(0) %}\n {% set opt_total = opt.totalExclVat|default(q * pu * (1 - (rem / 100))) %}\n <li>{{ opt.name }} — {{ opt_total|number_format(0, ',', ' ') }} € HT</li>\n {% endfor %}\n </ul>\n {% endif %}\n </div>\n </div>\n \n <!-- CONDITIONS COMMERCIALES -->\n <div class="section">\n <div class="card">\n <h2>Conditions commerciales</h2>\n <ul>\n {% if quote.expiredAt %}<li>Validité de l’offre : 1 mois (jusqu’au {{ quote.expiredAt|date('d/m/Y') }})</li>{% else %}<li>Validité de l’offre : 1 mois</li>{% endif %}\n {% if discount_value > 0 %}<li>Remise de service : {{ discount_percent|round(0, 'floor') }} %</li>{% endif %}\n {% if quote.orderContext is defined and quote.orderContext %}<li>{{ quote.orderContext }}</li>{% endif %}\n <li>Règlement {{ quote.paymentMode|default('30 jours nets par LCR') }}</li>\n <li>Délai : {{ quote.leadTime|default('2 à 3 mois après commande') }}</li>\n {% if quote.shippingFeesHt is defined %}\n {% if quote.shippingFeesHt == 0 %}<li>Port franco</li>\n {% elseif quote.shippingFeesHt > 0 %}<li>Frais de port : {{ quote.shippingFeesHt|number_format(2, ',', ' ') }} € HT</li>\n {% else %}<li>Port : {{ quote.shippingMode|default('selon conditions') }}</li>\n {% endif %}\n {% else %}\n <li>Port : {{ quote.shippingMode|default('selon conditions') }}</li>\n {% endif %}\n {% if quote.customerRef is defined and quote.customerRef %}<li>Réf. client : {{ quote.customerRef }}</li>{% endif %}\n </ul>\n </div>\n </div>\n \n <!-- SIGNATURES -->\n <div class="section grid-2">\n <div class="card">\n <h2>Signataires</h2>\n <p><strong>{{ managedBy.fullname|default(quote.managedByRealName|default('')) }}</strong> – {{ managedBy.role|default('Resp. Commercial') }}{% if managedBy.mobile %} – {{ managedBy.mobile }}{% endif %}</p>\n <div class="signature">Signature expéditeur</div>\n </div>\n <div class="card">\n <h2>Bon pour accord</h2>\n <p><strong>{{ quote.contactIdRealName|default(c.fullname|default(c.name|default(''))) }}</strong>{% if comp and comp.name %} – {{ comp.name }}{% endif %}</p>\n <div class="signature">Cachet et signature</div>\n </div>\n </div>\n \n <!-- PIED -->\n <footer>\n YANIGAV – Enfonce-pieux • Affûte-piquet • Fendeuse de bûche — RCS ROANNE B 403 872 724 — SIRET 403 872 724 00014 — APE 4661Z — TVA FR114038727224\n </footer>\n </div>\n \n {# PAGE 2 : CGV (optionnelle) #}\n {% if cgv is defined or quote.cgvText is defined %}\n <div style="page-break-before:always;"></div>\n <div class="page">\n <div class="section">\n <div class="card">\n <h2>Conditions Générales de Vente</h2>\n <div class="note" style="white-space:pre-wrap">\n {{ cgv|default(quote.cgvText)|raw }}\n </div>\n </div>\n </div>\n <footer>\n Document généré automatiquement — valable sous réserve des conditions précisées ci-dessus.\n </footer>\n </div>\n {% endif %}\n </body>\n </html> """ #message: "Neither the property "mobile" nor one of the methods "mobile()", "getmobile()"/"ismobile()"/"hasmobile()" or "__call()" exist and have public access in class "App\V4\Model\Security\UserInfo" in "quote_pdf (string template ac17ad76d2b4a01846ec443f7de0b737a81d5226a16b621a485dd25927da0f62)" at line 257." #code: 0 #file: "/var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Extension/CoreExtension.php" #line: 1553 : { { twig_get_attribute(Environment $env, Source $source, $object, $item, array $arguments = [], $type = 'any', $isDefinedTest = false, $ignoreStrictCheck = false, $sandboxed = false, int $lineno = -1) … › › |