https://dev.app.pol-crm.com/api/quote/quote_188395/generatepdf

ErrorController

Request

GET Parameters

No GET parameters

POST Parameters

No POST parameters

Uploaded Files

No files were uploaded

Request Attributes

Key Value
_controller
"error_controller"
_links
Fig\Link\GenericLinkProvider {#4110
  -links: [
    "0000000055f4ad070000000033fa16c9" => Fig\Link\Link {#4067
      -href: "https://dev.app.pol-crm.com/api/docs.jsonld"
      -rel: [
        "http://www.w3.org/ns/hydra/core#apiDocumentation" => true
      ]
      -attributes: []
    }
  ]
}
_stopwatch_token
"f746c6"
exception
Twig\Error\SyntaxError {#4420
  -lineno: 133
  -name: "quote_pdf (string template 1ba51d88cc7b7b4c077dceaafdbd99029f38167d77930ef9228cb7697e5426a6)"
  -rawMessage: "Unknown "list" filter. Did you mean "last"?"
  -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 sûrs === #}\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
      {% set first = lines[0]|default(null) %}\n
    \n
      {# === Totaux/remise/TVA (fallbacks robustes) === #}\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
      <!-- 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 (table 3 colonnes) -->\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 = (first and first.unitPriceExclVat is defined) ? first.unitPriceExclVat : (total_ht_before_discount > 0 ? total_ht_before_discount : 0) %}\n
              <tr>\n
                <td>{{ first and first.name ? first.name : quote.name }}</td>\n
                <td>{{ first and first.reference ? first.reference : '—' }}</td>\n
                <td>{{ pu|number_format(0, ',', ' ') }} €</td>\n
              </tr>\n
            </tbody>\n
          </table>\n
          {% set note = first and first.description ? first.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
      {# === SECTION DYNAMIQUE : Descriptif / Équipement / Formation / Options === #}\n
      {% set mainLine = (lines|filter(l => (not l.isOptional) and (l.reference is not defined or ('formation' not in l.reference|lower))))|first %}\n
      {% set formationLine = (lines|filter(l => (l.reference is defined and 'formation' in l.reference|lower)))|first %}\n
      {% set options = lines|filter(l => (l.isOptional))|list %}\n
    \n
      {% set description = mainLine and mainLine.description is defined ? mainLine.description|replace({'•':'\n',';':'\n'}) : '' %}\n
      {% set descList = description|split('\n')|map(v => v|trim)|filter(v => v != '') %}\n
    \n
      <div class="section grid-2">\n
        <div class="card">\n
          <h2>Points forts</h2>\n
          {% if descList|length > 0 %}\n
            <ul class="cols-3">\n
              {% for item in descList %}\n
                <li>{{ item }}</li>\n
              {% endfor %}\n
            </ul>\n
          {% else %}\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
          {# 1) Si le backend fournit explicitement une liste d'équipements #}\n
          {% if mainLine and mainLine.features is defined and mainLine.features|length > 0 %}\n
            <ul>\n
              {% for f in mainLine.features %}<li>{{ f }}</li>{% endfor %}\n
            </ul>\n
          {% else %}\n
            {# 2) Sinon, on tente d’extraire une sous-liste depuis la description #}\n
            {% set equipCandidates = [] %}\n
            {% for item in descList %}\n
              {% if item matches '/(équipement|equipement|de série|serie)/i' %}\n
                {% set equipCandidates = equipCandidates|merge([item]) %}\n
              {% endif %}\n
            {% endfor %}\n
            {% if equipCandidates|length > 0 %}\n
              <ul>\n
                {% for f in equipCandidates %}<li>{{ f }}</li>{% endfor %}\n
              </ul>\n
            {% else %}\n
              <p class="muted">Aucun équipement de série spécifié.</p>\n
            {% endif %}\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|length > 0 %}\n
            <h2 style="margin-top:1rem">Équipements recommandés</h2>\n
            <ul>\n
              {% for opt in options %}\n
                {% set opt_total = opt.totalExclVat|default(opt.quantity|default(1) * opt.unitPriceExclVat|default(0) * (1 - (opt.discountPercent|default(0) / 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 (optionnelle) : CGV === #}\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: "Unknown "list" filter. Did you mean "last" in "quote_pdf (string template 1ba51d88cc7b7b4c077dceaafdbd99029f38167d77930ef9228cb7697e5426a6)" at line 133?"
  #code: 0
  #file: "/var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php"
  #line: 788
  trace: {
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:788 {
      Twig\ExpressionParser->getFilterNodeClass(string $name, int $line): string …
      › if (false === $filter = $this->env->getFilter($name)) {    $e = new SyntaxError(sprintf('Unknown "%s" filter.', $name), $line, $this->parser->getStream()->getSourceContext());    $e->addSuggestions($name, array_keys($this->env->getFilters()));
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:563 {
      Twig\ExpressionParser->parseFilterExpressionRaw($node, $tag = null) …
      › 
      › $class = $this->getFilterNodeClass($name->getAttribute('value'), $token->getLine());arguments: {
        $name: "list"
        $line: 133
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:548 {
      Twig\ExpressionParser->parseFilterExpression($node) …
      › 
      ›     return $this->parseFilterExpressionRaw($node);}
      arguments: {
        $node: Twig\Node\Expression\FilterExpression {#4417 …}
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:406 {
      Twig\ExpressionParser->parsePostfixExpression($node) …
      › } elseif ('|' == $token->getValue()) {    $node = $this->parseFilterExpression($node);} else {
      arguments: {
        $node: Twig\Node\Expression\NameExpression {#4402 …}
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:289 {
      Twig\ExpressionParser->parsePrimaryExpression() …
      › 
      ›     return $this->parsePostfixExpression($node);}
      arguments: {
        $node: Twig\Node\Expression\NameExpression {#4402 …}
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:175 {
      Twig\ExpressionParser->getPrimary(): AbstractExpression …
      › 
      ›     return $this->parsePrimaryExpression();}
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:70 {
      Twig\ExpressionParser->parseExpression($precedence = 0, $allowArrow = false) …
      › 
      › $expr = $this->getPrimary();$token = $this->parser->getCurrentToken();
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:677 {
      Twig\ExpressionParser->parseMultitargetExpression() …
      › while (true) {    $targets[] = $this->parseExpression();    if (!$this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) {
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/TokenParser/SetTokenParser.php:38 {
      Twig\TokenParser\SetTokenParser->parse(Token $token) …
      › if ($stream->nextIf(/* Token::OPERATOR_TYPE */ 8, '=')) {    $values = $this->parser->getExpressionParser()->parseMultitargetExpression();}
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Parser.php:184 {
      Twig\Parser->subparse($test, $dropNeedle = false) …
      › $subparser = $this->handlers[$token->getValue()];$node = $subparser->parse($token);if (null !== $node) {
      arguments: {
        $token: Twig\Token {#2945 …}
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Parser.php:97 {
      Twig\Parser->parse(TokenStream $stream, $test = null, $dropNeedle = false) …
      › try {    $body = $this->subparse($test, $dropNeedle);arguments: {
        $test: null
        $dropNeedle: false
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Environment.php:562 {
      Twig\Environment->parse(TokenStream $stream) …
      › 
      ›     return $this->parser->parse($stream);}
      arguments: {
        $stream: Twig\TokenStream {#3650 …}
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Environment.php:594 {
      Twig\Environment->compileSource(Source $source) …
      › try {    return $this->compile($this->parse($this->tokenize($source)));} catch (Error $e) {
      arguments: {
        $stream: Twig\TokenStream {#3650 …}
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Environment.php:408 {
      Twig\Environment->loadClass($cls, $name, $index = null) …
      › $source = $this->getLoader()->getSourceContext($name);$content = $this->compileSource($source);$this->cache->write($key, $content);
      arguments: {
        $source: Twig\Source {#1824 …}
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Environment.php:381 {
      Twig\Environment->loadTemplate($name, $index = null) …
      › {    return $this->loadClass($this->getTemplateClass($name), $name, $index);}
      arguments: {
        $cls: "__TwigTemplate_266bda8a99d1b5d670176438aace2aaf1e61e2e78c4707208121f1bd2a2eee0f"
        $name: "quote_pdf (string template 1ba51d88cc7b7b4c077dceaafdbd99029f38167d77930ef9228cb7697e5426a6)"
        $index: null
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Environment.php:462 {
      Twig\Environment->createTemplate($template, string $name = null) …
      › try {    return new TemplateWrapper($this, $this->loadTemplate($name));} finally {
      arguments: {
        $name: "quote_pdf (string template 1ba51d88cc7b7b4c077dceaafdbd99029f38167d77930ef9228cb7697e5426a6)"
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/src/V4/Service/Pdf/PdfGenerator.php:189 {
      App\V4\Service\Pdf\PdfGenerator->generatePdfContentByTemplate(Quote $quote, string $templateId = null, array $data = []): string …
      › 
      › $generatedTwig = $this->environment->createTemplate($template->getContent(), 'quote_pdf');$quoteVars = $this->quoteGeneratorHandler->getQuoteVariables($quote);
      arguments: {
        $template: """
          <!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 sûrs === #}\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
            {% set first = lines[0]|default(null) %}\n
          \n
            {# === Totaux/remise/TVA (fallbacks robustes) === #}\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
            <!-- 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 (table 3 colonnes) -->\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 = (first and first.unitPriceExclVat is defined) ? first.unitPriceExclVat : (total_ht_before_discount > 0 ? total_ht_before_discount : 0) %}\n
                    <tr>\n
                      <td>{{ first and first.name ? first.name : quote.name }}</td>\n
                      <td>{{ first and first.reference ? first.reference : '—' }}</td>\n
                      <td>{{ pu|number_format(0, ',', ' ') }} €</td>\n
                    </tr>\n
                  </tbody>\n
                </table>\n
                {% set note = first and first.description ? first.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
            {# === SECTION DYNAMIQUE : Descriptif / Équipement / Formation / Options === #}\n
            {% set mainLine = (lines|filter(l => (not l.isOptional) and (l.reference is not defined or ('formation' not in l.reference|lower))))|first %}\n
            {% set formationLine = (lines|filter(l => (l.reference is defined and 'formation' in l.reference|lower)))|first %}\n
            {% set options = lines|filter(l => (l.isOptional))|list %}\n
          \n
            {% set description = mainLine and mainLine.description is defined ? mainLine.description|replace({'•':'\n',';':'\n'}) : '' %}\n
            {% set descList = description|split('\n')|map(v => v|trim)|filter(v => v != '') %}\n
          \n
            <div class="section grid-2">\n
              <div class="card">\n
                <h2>Points forts</h2>\n
                {% if descList|length > 0 %}\n
                  <ul class="cols-3">\n
                    {% for item in descList %}\n
                      <li>{{ item }}</li>\n
                    {% endfor %}\n
                  </ul>\n
                {% else %}\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
                {# 1) Si le backend fournit explicitement une liste d'équipements #}\n
                {% if mainLine and mainLine.features is defined and mainLine.features|length > 0 %}\n
                  <ul>\n
                    {% for f in mainLine.features %}<li>{{ f }}</li>{% endfor %}\n
                  </ul>\n
                {% else %}\n
                  {# 2) Sinon, on tente d’extraire une sous-liste depuis la description #}\n
                  {% set equipCandidates = [] %}\n
                  {% for item in descList %}\n
                    {% if item matches '/(équipement|equipement|de série|serie)/i' %}\n
                      {% set equipCandidates = equipCandidates|merge([item]) %}\n
                    {% endif %}\n
                  {% endfor %}\n
                  {% if equipCandidates|length > 0 %}\n
                    <ul>\n
                      {% for f in equipCandidates %}<li>{{ f }}</li>{% endfor %}\n
                    </ul>\n
                  {% else %}\n
                    <p class="muted">Aucun équipement de série spécifié.</p>\n
                  {% endif %}\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|length > 0 %}\n
                  <h2 style="margin-top:1rem">Équipements recommandés</h2>\n
                  <ul>\n
                    {% for opt in options %}\n
                      {% set opt_total = opt.totalExclVat|default(opt.quantity|default(1) * opt.unitPriceExclVat|default(0) * (1 - (opt.discountPercent|default(0) / 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 (optionnelle) : CGV === #}\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>
          """
        $name: "quote_pdf (string template 1ba51d88cc7b7b4c077dceaafdbd99029f38167d77930ef9228cb7697e5426a6)"
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/src/Controller/Quote/QuoteController.php:138 {
      App\Controller\Quote\QuoteController->generateQuotePdf(Request $request, string $id): JsonResponse …
      › }$base64File = $this->pdfGenerator->generatePdfContentByTemplate($quote, $quoteData['templateId'], $quoteData);$response = $this->pdfGenerator->generatePdfWithTemplateForQuote($quote, $base64File, $quoteData[PdfGenerator::OPTION_MODE], $quoteData['templateId']);
      arguments: {
        $quote: App\V4\Model\Quote\Quote {#2310 …}
        $templateId: "f47ef469dac34bc29180feb40a25724c"
        $data: [ …4]
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/symfony/http-kernel/HttpKernel.php:169 {
      Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MASTER_REQUEST): Response …
      › // call controller$response = $controller(...$arguments);arguments: {
        $request: Symfony\Component\HttpFoundation\Request {#55 …}
        $id: "quote_188395"
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/symfony/http-kernel/HttpKernel.php:81 {
      Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) …
      › try {    return $this->handleRaw($request, $type);} catch (\Exception $e) {
      arguments: {
        $request: Symfony\Component\HttpFoundation\Request {#55 …}
        $type: 1
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/symfony/http-kernel/Kernel.php:201 {
      Symfony\Component\HttpKernel\Kernel->handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) …
      › try {    return $this->getHttpKernel()->handle($request, $type, $catch);} finally {
      arguments: {
        $request: Symfony\Component\HttpFoundation\Request {#55 …}
        $type: 1
        $catch: true
      }
    }
    /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/public/index.php:25 {$request = Request::createFromGlobals();$response = $kernel->handle($request);$response->send();
      arguments: {
        $request: Symfony\Component\HttpFoundation\Request {#55 …}
      }
    }
  }
}
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
        date: 2025-10-21 00:00:00.0 Europe/Paris (+02:00)
      }
      #filenameFormat: "{filename}-{date}"
      #dateFormat: "Y-m-d"
      #stream: stream resource @2436
        timed_out: false
        blocked: true
        eof: false
        wrapper_type: "plainfile"
        stream_type: "STDIO"
        mode: "a"
        unread_bytes: 0
        seekable: true
        uri: "/var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/shared/application/var/log/dev-2025-10-20.log"
        options: []
      }
      #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: [
        "0000000055f4a2d30000000033fa16c9" => [
          [
            "timestamp" => 1760912746
            "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" => 1760912746
            "message" => "Checking for guard authentication credentials."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "firewall_key" => "api"
              "authenticators" => 1
            ]
            "channel" => "security"
          ]
          [
            "timestamp" => 1760912746
            "message" => "Checking support on guard authenticator."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "firewall_key" => "api"
              "authenticator" => "App\Security\JWTTokenWhitelistAuthenticator"
            ]
            "channel" => "security"
          ]
          [
            "timestamp" => 1760912746
            "message" => "Calling getCredentials() on guard authenticator."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "firewall_key" => "api"
              "authenticator" => "App\Security\JWTTokenWhitelistAuthenticator"
            ]
            "channel" => "security"
          ]
          [
            "timestamp" => 1760912746
            "message" => "Passing guard token information to the GuardAuthenticationProvider"
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "firewall_key" => "api"
              "authenticator" => "App\Security\JWTTokenWhitelistAuthenticator"
            ]
            "channel" => "security"
          ]
          [
            "timestamp" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "message" => "Guard authenticator set no success response: request continues."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "authenticator" => "App\Security\JWTTokenWhitelistAuthenticator"
            ]
            "channel" => "security"
          ]
          [
            "timestamp" => 1760912746
            "message" => "Remember me skipped: it is not configured for the firewall."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "authenticator" => "App\Security\JWTTokenWhitelistAuthenticator"
            ]
            "channel" => "security"
          ]
          [
            "timestamp" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "App\EventListener\DebugRequestListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "App\EventListener\DebugRequestListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "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" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "Nelmio\CorsBundle\EventListener\CorsListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "App\EventListener\RequestListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "ApiPlatform\Core\Filter\QueryParameterValidateListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "ApiPlatform\Core\EventListener\AddFormatListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "App\DoctrineFilter\CustomerFilterEventSubscriber::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "Sentry\SentryBundle\EventListener\RequestListener::handleKernelRequestEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "ApiPlatform\Core\EventListener\ReadListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "Sentry\SentryBundle\EventListener\TracingRequestListener::handleKernelRequestEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "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" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "Sentry\SentryBundle\EventListener\SubRequestListener::handleKernelRequestEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "ApiPlatform\Core\EventListener\DeserializeListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "Sentry\SentryBundle\EventListener\TracingSubRequestListener::handleKernelRequestEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "Stof\DoctrineExtensionsBundle\EventListener\BlameListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.controller"
              "listener" => "Sentry\SentryBundle\EventListener\RequestListener::handleKernelControllerEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "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" => 1760912746
            "message" => "Request: "GET http://dev.pol-api-param.pol-crm.com/api/templates/f47ef469dac34bc29180feb40a25724c""
            "priority" => 200
            "priorityName" => "INFO"
            "context" => []
            "channel" => "http_client"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Response: "200 http://dev.pol-api-param.pol-crm.com/api/templates/f47ef469dac34bc29180feb40a25724c""
            "priority" => 200
            "priorityName" => "INFO"
            "context" => []
            "channel" => "http_client"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Uncaught PHP Exception Twig\Error\SyntaxError: "Unknown "list" filter. Did you mean "last" in "quote_pdf (string template 1ba51d88cc7b7b4c077dceaafdbd99029f38167d77930ef9228cb7697e5426a6)" at line 133?" at /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php line 788"
            "priority" => 500
            "priorityName" => "CRITICAL"
            "context" => [
              "exception" => Twig\Error\SyntaxError {#4420
                -lineno: 133
                -name: "quote_pdf (string template 1ba51d88cc7b7b4c077dceaafdbd99029f38167d77930ef9228cb7697e5426a6)"
                -rawMessage: "Unknown "list" filter. Did you mean "last"?"
                -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 sûrs === #}\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
                    {% set first = lines[0]|default(null) %}\n
                  \n
                    {# === Totaux/remise/TVA (fallbacks robustes) === #}\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
                    <!-- 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 (table 3 colonnes) -->\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 = (first and first.unitPriceExclVat is defined) ? first.unitPriceExclVat : (total_ht_before_discount > 0 ? total_ht_before_discount : 0) %}\n
                            <tr>\n
                              <td>{{ first and first.name ? first.name : quote.name }}</td>\n
                              <td>{{ first and first.reference ? first.reference : '—' }}</td>\n
                              <td>{{ pu|number_format(0, ',', ' ') }} €</td>\n
                            </tr>\n
                          </tbody>\n
                        </table>\n
                        {% set note = first and first.description ? first.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
                    {# === SECTION DYNAMIQUE : Descriptif / Équipement / Formation / Options === #}\n
                    {% set mainLine = (lines|filter(l => (not l.isOptional) and (l.reference is not defined or ('formation' not in l.reference|lower))))|first %}\n
                    {% set formationLine = (lines|filter(l => (l.reference is defined and 'formation' in l.reference|lower)))|first %}\n
                    {% set options = lines|filter(l => (l.isOptional))|list %}\n
                  \n
                    {% set description = mainLine and mainLine.description is defined ? mainLine.description|replace({'•':'\n',';':'\n'}) : '' %}\n
                    {% set descList = description|split('\n')|map(v => v|trim)|filter(v => v != '') %}\n
                  \n
                    <div class="section grid-2">\n
                      <div class="card">\n
                        <h2>Points forts</h2>\n
                        {% if descList|length > 0 %}\n
                          <ul class="cols-3">\n
                            {% for item in descList %}\n
                              <li>{{ item }}</li>\n
                            {% endfor %}\n
                          </ul>\n
                        {% else %}\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
                        {# 1) Si le backend fournit explicitement une liste d'équipements #}\n
                        {% if mainLine and mainLine.features is defined and mainLine.features|length > 0 %}\n
                          <ul>\n
                            {% for f in mainLine.features %}<li>{{ f }}</li>{% endfor %}\n
                          </ul>\n
                        {% else %}\n
                          {# 2) Sinon, on tente d’extraire une sous-liste depuis la description #}\n
                          {% set equipCandidates = [] %}\n
                          {% for item in descList %}\n
                            {% if item matches '/(équipement|equipement|de série|serie)/i' %}\n
                              {% set equipCandidates = equipCandidates|merge([item]) %}\n
                            {% endif %}\n
                          {% endfor %}\n
                          {% if equipCandidates|length > 0 %}\n
                            <ul>\n
                              {% for f in equipCandidates %}<li>{{ f }}</li>{% endfor %}\n
                            </ul>\n
                          {% else %}\n
                            <p class="muted">Aucun équipement de série spécifié.</p>\n
                          {% endif %}\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|length > 0 %}\n
                          <h2 style="margin-top:1rem">Équipements recommandés</h2>\n
                          <ul>\n
                            {% for opt in options %}\n
                              {% set opt_total = opt.totalExclVat|default(opt.quantity|default(1) * opt.unitPriceExclVat|default(0) * (1 - (opt.discountPercent|default(0) / 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 (optionnelle) : CGV === #}\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: "Unknown "list" filter. Did you mean "last" in "quote_pdf (string template 1ba51d88cc7b7b4c077dceaafdbd99029f38167d77930ef9228cb7697e5426a6)" at line 133?"
                #code: 0
                #file: "/var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php"
                #line: 788
                trace: {
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:788 {
                    Twig\ExpressionParser->getFilterNodeClass(string $name, int $line): string …
                    › if (false === $filter = $this->env->getFilter($name)) {    $e = new SyntaxError(sprintf('Unknown "%s" filter.', $name), $line, $this->parser->getStream()->getSourceContext());    $e->addSuggestions($name, array_keys($this->env->getFilters()));
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:563 {
                    Twig\ExpressionParser->parseFilterExpressionRaw($node, $tag = null) …
                    › 
                    › $class = $this->getFilterNodeClass($name->getAttribute('value'), $token->getLine());arguments: {
                      $name: "list"
                      $line: 133
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:548 {
                    Twig\ExpressionParser->parseFilterExpression($node) …
                    › 
                    ›     return $this->parseFilterExpressionRaw($node);}
                    arguments: {
                      $node: Twig\Node\Expression\FilterExpression {#4417 …}
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:406 {
                    Twig\ExpressionParser->parsePostfixExpression($node) …
                    › } elseif ('|' == $token->getValue()) {    $node = $this->parseFilterExpression($node);} else {
                    arguments: {
                      $node: Twig\Node\Expression\NameExpression {#4402 …}
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:289 {
                    Twig\ExpressionParser->parsePrimaryExpression() …
                    › 
                    ›     return $this->parsePostfixExpression($node);}
                    arguments: {
                      $node: Twig\Node\Expression\NameExpression {#4402 …}
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:175 {
                    Twig\ExpressionParser->getPrimary(): AbstractExpression …
                    › 
                    ›     return $this->parsePrimaryExpression();}
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:70 {
                    Twig\ExpressionParser->parseExpression($precedence = 0, $allowArrow = false) …
                    › 
                    › $expr = $this->getPrimary();$token = $this->parser->getCurrentToken();
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/ExpressionParser.php:677 {
                    Twig\ExpressionParser->parseMultitargetExpression() …
                    › while (true) {    $targets[] = $this->parseExpression();    if (!$this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) {
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/TokenParser/SetTokenParser.php:38 {
                    Twig\TokenParser\SetTokenParser->parse(Token $token) …
                    › if ($stream->nextIf(/* Token::OPERATOR_TYPE */ 8, '=')) {    $values = $this->parser->getExpressionParser()->parseMultitargetExpression();}
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Parser.php:184 {
                    Twig\Parser->subparse($test, $dropNeedle = false) …
                    › $subparser = $this->handlers[$token->getValue()];$node = $subparser->parse($token);if (null !== $node) {
                    arguments: {
                      $token: Twig\Token {#2945 …}
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Parser.php:97 {
                    Twig\Parser->parse(TokenStream $stream, $test = null, $dropNeedle = false) …
                    › try {    $body = $this->subparse($test, $dropNeedle);arguments: {
                      $test: null
                      $dropNeedle: false
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Environment.php:562 {
                    Twig\Environment->parse(TokenStream $stream) …
                    › 
                    ›     return $this->parser->parse($stream);}
                    arguments: {
                      $stream: Twig\TokenStream {#3650 …}
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Environment.php:594 {
                    Twig\Environment->compileSource(Source $source) …
                    › try {    return $this->compile($this->parse($this->tokenize($source)));} catch (Error $e) {
                    arguments: {
                      $stream: Twig\TokenStream {#3650 …}
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Environment.php:408 {
                    Twig\Environment->loadClass($cls, $name, $index = null) …
                    › $source = $this->getLoader()->getSourceContext($name);$content = $this->compileSource($source);$this->cache->write($key, $content);
                    arguments: {
                      $source: Twig\Source {#1824 …}
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Environment.php:381 {
                    Twig\Environment->loadTemplate($name, $index = null) …
                    › {    return $this->loadClass($this->getTemplateClass($name), $name, $index);}
                    arguments: {
                      $cls: "__TwigTemplate_266bda8a99d1b5d670176438aace2aaf1e61e2e78c4707208121f1bd2a2eee0f"
                      $name: "quote_pdf (string template 1ba51d88cc7b7b4c077dceaafdbd99029f38167d77930ef9228cb7697e5426a6)"
                      $index: null
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/twig/twig/src/Environment.php:462 {
                    Twig\Environment->createTemplate($template, string $name = null) …
                    › try {    return new TemplateWrapper($this, $this->loadTemplate($name));} finally {
                    arguments: {
                      $name: "quote_pdf (string template 1ba51d88cc7b7b4c077dceaafdbd99029f38167d77930ef9228cb7697e5426a6)"
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/src/V4/Service/Pdf/PdfGenerator.php:189 {
                    App\V4\Service\Pdf\PdfGenerator->generatePdfContentByTemplate(Quote $quote, string $templateId = null, array $data = []): string …
                    › 
                    › $generatedTwig = $this->environment->createTemplate($template->getContent(), 'quote_pdf');$quoteVars = $this->quoteGeneratorHandler->getQuoteVariables($quote);
                    arguments: {
                      $template: """
                        <!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 sûrs === #}\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
                          {% set first = lines[0]|default(null) %}\n
                        \n
                          {# === Totaux/remise/TVA (fallbacks robustes) === #}\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
                          <!-- 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 (table 3 colonnes) -->\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 = (first and first.unitPriceExclVat is defined) ? first.unitPriceExclVat : (total_ht_before_discount > 0 ? total_ht_before_discount : 0) %}\n
                                  <tr>\n
                                    <td>{{ first and first.name ? first.name : quote.name }}</td>\n
                                    <td>{{ first and first.reference ? first.reference : '—' }}</td>\n
                                    <td>{{ pu|number_format(0, ',', ' ') }} €</td>\n
                                  </tr>\n
                                </tbody>\n
                              </table>\n
                              {% set note = first and first.description ? first.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
                          {# === SECTION DYNAMIQUE : Descriptif / Équipement / Formation / Options === #}\n
                          {% set mainLine = (lines|filter(l => (not l.isOptional) and (l.reference is not defined or ('formation' not in l.reference|lower))))|first %}\n
                          {% set formationLine = (lines|filter(l => (l.reference is defined and 'formation' in l.reference|lower)))|first %}\n
                          {% set options = lines|filter(l => (l.isOptional))|list %}\n
                        \n
                          {% set description = mainLine and mainLine.description is defined ? mainLine.description|replace({'•':'\n',';':'\n'}) : '' %}\n
                          {% set descList = description|split('\n')|map(v => v|trim)|filter(v => v != '') %}\n
                        \n
                          <div class="section grid-2">\n
                            <div class="card">\n
                              <h2>Points forts</h2>\n
                              {% if descList|length > 0 %}\n
                                <ul class="cols-3">\n
                                  {% for item in descList %}\n
                                    <li>{{ item }}</li>\n
                                  {% endfor %}\n
                                </ul>\n
                              {% else %}\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
                              {# 1) Si le backend fournit explicitement une liste d'équipements #}\n
                              {% if mainLine and mainLine.features is defined and mainLine.features|length > 0 %}\n
                                <ul>\n
                                  {% for f in mainLine.features %}<li>{{ f }}</li>{% endfor %}\n
                                </ul>\n
                              {% else %}\n
                                {# 2) Sinon, on tente d’extraire une sous-liste depuis la description #}\n
                                {% set equipCandidates = [] %}\n
                                {% for item in descList %}\n
                                  {% if item matches '/(équipement|equipement|de série|serie)/i' %}\n
                                    {% set equipCandidates = equipCandidates|merge([item]) %}\n
                                  {% endif %}\n
                                {% endfor %}\n
                                {% if equipCandidates|length > 0 %}\n
                                  <ul>\n
                                    {% for f in equipCandidates %}<li>{{ f }}</li>{% endfor %}\n
                                  </ul>\n
                                {% else %}\n
                                  <p class="muted">Aucun équipement de série spécifié.</p>\n
                                {% endif %}\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|length > 0 %}\n
                                <h2 style="margin-top:1rem">Équipements recommandés</h2>\n
                                <ul>\n
                                  {% for opt in options %}\n
                                    {% set opt_total = opt.totalExclVat|default(opt.quantity|default(1) * opt.unitPriceExclVat|default(0) * (1 - (opt.discountPercent|default(0) / 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 (optionnelle) : CGV === #}\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>
                        """
                      $name: "quote_pdf (string template 1ba51d88cc7b7b4c077dceaafdbd99029f38167d77930ef9228cb7697e5426a6)"
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/src/Controller/Quote/QuoteController.php:138 {
                    App\Controller\Quote\QuoteController->generateQuotePdf(Request $request, string $id): JsonResponse …
                    › }$base64File = $this->pdfGenerator->generatePdfContentByTemplate($quote, $quoteData['templateId'], $quoteData);$response = $this->pdfGenerator->generatePdfWithTemplateForQuote($quote, $base64File, $quoteData[PdfGenerator::OPTION_MODE], $quoteData['templateId']);
                    arguments: {
                      $quote: App\V4\Model\Quote\Quote {#2310 …}
                      $templateId: "f47ef469dac34bc29180feb40a25724c"
                      $data: [ …4]
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/symfony/http-kernel/HttpKernel.php:169 {
                    Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MASTER_REQUEST): Response …
                    › // call controller$response = $controller(...$arguments);arguments: {
                      $request: Symfony\Component\HttpFoundation\Request {#55 …}
                      $id: "quote_188395"
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/symfony/http-kernel/HttpKernel.php:81 {
                    Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) …
                    › try {    return $this->handleRaw($request, $type);} catch (\Exception $e) {
                    arguments: {
                      $request: Symfony\Component\HttpFoundation\Request {#55 …}
                      $type: 1
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/vendor/symfony/http-kernel/Kernel.php:201 {
                    Symfony\Component\HttpKernel\Kernel->handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) …
                    › try {    return $this->getHttpKernel()->handle($request, $type, $catch);} finally {
                    arguments: {
                      $request: Symfony\Component\HttpFoundation\Request {#55 …}
                      $type: 1
                      $catch: true
                    }
                  }
                  /var/www/vhosts/app.pol-crm.com/httpdocs/app-pol-crm/dev/releases/20251009101152/application/public/index.php:25 {$request = Request::createFromGlobals();$response = $kernel->handle($request);$response->send();
                    arguments: {
                      $request: Symfony\Component\HttpFoundation\Request {#55 …}
                    }
                  }
                }
              }
            ]
            "channel" => "request"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.exception"
              "listener" => "Sentry\SentryBundle\EventListener\ErrorListener::handleExceptionEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.exception"
              "listener" => "App\EventSubscriber\DataRetrieverEventManager::checkException"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.exception"
              "listener" => "App\EventListener\ExceptionResponseRequestListener::onKernelException"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.exception"
              "listener" => "Symfony\Component\Security\Http\Firewall\ExceptionListener::onKernelException"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.exception"
              "listener" => "App\EventListener\ExceptionResponseRequestListener::onKernelException"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.exception"
              "listener" => "ApiPlatform\Core\Bridge\Symfony\Validator\EventListener\ValidationExceptionListener::onKernelException"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.exception"
              "listener" => "Symfony\Component\HttpKernel\EventListener\ErrorListener::logKernelException"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.exception"
              "listener" => "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.exception"
              "listener" => "Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener::onException"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.exception"
              "listener" => "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelException"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.exception"
              "listener" => "ApiPlatform\Core\EventListener\ExceptionListener::onKernelException"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.exception"
              "listener" => "Symfony\Component\HttpKernel\EventListener\ErrorListener::onKernelException"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Listener "{listener}" stopped propagation of the event "{event}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.exception"
              "listener" => "Symfony\Component\HttpKernel\EventListener\ErrorListener::onKernelException"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Sentry\SentryBundle\EventListener\TracingRequestListener::handleKernelResponseEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Sentry\SentryBundle\EventListener\TracingSubRequestListener::handleKernelResponseEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "ApiPlatform\Core\Hydra\EventListener\AddLinkHeaderListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "App\EventSubscriber\JsonResponseSubscriber::processResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "App\EventSubscriber\JsonResponseSubscriber::processResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\WebLink\EventListener\AddLinkHeaderListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Nelmio\CorsBundle\EventListener\CorsListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "ApiPlatform\Core\HttpCache\EventListener\AddHeadersListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\HttpKernel\EventListener\DisallowRobotsIndexingListener::onResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Sentry\SentryBundle\EventListener\TracingSubRequestListener::handleKernelFinishRequestEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Sentry\SentryBundle\EventListener\SubRequestListener::handleKernelFinishRequestEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Symfony\Component\HttpKernel\EventListener\SessionListener::onFinishRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelFinishRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelFinishRequest"
            ]
            "channel" => "event"
          ]
        ]
        "0000000055f4b3d10000000033fa16c9" => [
          [
            "timestamp" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "App\EventListener\DebugRequestListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "App\EventListener\DebugRequestListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "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" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "Nelmio\CorsBundle\EventListener\CorsListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "App\EventListener\RequestListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "ApiPlatform\Core\Filter\QueryParameterValidateListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "ApiPlatform\Core\EventListener\AddFormatListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "App\DoctrineFilter\CustomerFilterEventSubscriber::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "Sentry\SentryBundle\EventListener\RequestListener::handleKernelRequestEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "ApiPlatform\Core\EventListener\ReadListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "Sentry\SentryBundle\EventListener\TracingRequestListener::handleKernelRequestEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "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" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "Sentry\SentryBundle\EventListener\SubRequestListener::handleKernelRequestEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "ApiPlatform\Core\EventListener\DeserializeListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "Sentry\SentryBundle\EventListener\TracingSubRequestListener::handleKernelRequestEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.request"
              "listener" => "Stof\DoctrineExtensionsBundle\EventListener\BlameListener::onKernelRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.controller"
              "listener" => "Sentry\SentryBundle\EventListener\RequestListener::handleKernelControllerEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "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" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Sentry\SentryBundle\EventListener\TracingRequestListener::handleKernelResponseEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Sentry\SentryBundle\EventListener\TracingSubRequestListener::handleKernelResponseEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "ApiPlatform\Core\Hydra\EventListener\AddLinkHeaderListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "App\EventSubscriber\JsonResponseSubscriber::processResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "App\EventSubscriber\JsonResponseSubscriber::processResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\WebLink\EventListener\AddLinkHeaderListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Nelmio\CorsBundle\EventListener\CorsListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "ApiPlatform\Core\HttpCache\EventListener\AddHeadersListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\HttpKernel\EventListener\DisallowRobotsIndexingListener::onResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.response"
              "listener" => "Symfony\Component\HttpKernel\EventListener\StreamedResponseListener::onKernelResponse"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Sentry\SentryBundle\EventListener\TracingSubRequestListener::handleKernelFinishRequestEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Sentry\SentryBundle\EventListener\SubRequestListener::handleKernelFinishRequestEvent"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Symfony\Component\HttpKernel\EventListener\SessionListener::onFinishRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelFinishRequest"
            ]
            "channel" => "event"
          ]
          [
            "timestamp" => 1760912747
            "message" => "Notified event "{event}" to listener "{listener}"."
            "priority" => 100
            "priorityName" => "DEBUG"
            "context" => [
              "event" => "kernel.finish_request"
              "listener" => "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelFinishRequest"
            ]
            "channel" => "event"
          ]
        ]
      ]
      -errorCount: [
        "0000000055f4a2d30000000033fa16c9" => 1
        "0000000055f4b3d10000000033fa16c9" => 0
      ]
      -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1695 …}
    }
  ]
  #microsecondTimestamps: true
  #exceptionHandler: null
}

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:rcmv3izsqym"

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
cache-control
"no-cache, private"
content-type
"application/ld+json"
date
"Sun, 19 Oct 2025 22:25:47 GMT"
vary
"Accept"
x-debug-token
"805691"

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:rcmv3izsqym"
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
"43676"
REQUEST_METHOD
"GET"
REQUEST_SCHEME
"https"
REQUEST_TIME
1760912746
REQUEST_TIME_FLOAT
1760912746.1213
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"

Parent Request

Return to parent request (token = 330b2c)

Key Value
_controller
"App\Controller\Quote\QuoteController::generateQuotePdf"
_firewall_context
"security.firewall.map.context.api"
_links
Fig\Link\GenericLinkProvider {#3783
  -links: [
    "0000000055f4ac2c0000000033fa16c9" => Fig\Link\Link {#3784
      -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
"51166e"
id
"quote_188395"