Dernière modification : 28 août 2025
Les modèles de devis personnalisés peuvent accéder aux données de devis et à certains objets associés directement depuis les modèles. Les données disponibles dépendent de celles que vous avez dans votre CRM, ainsi que de celles qui ont été ajoutées au devis lui-même. Lors de l’élaboration d’un modèle de devis, vous pouvez utiliser les données de simulation fournies par HubSpot pour remplir le modèle, ce qui peut aider à prévisualiser le modèle. Dans le dossier @hubspot, accédez au dossier cms-quotes-theme. Dans le dossier templates, affichez les modèles basic.html, modern.html ou original.html. Le haut de ces modèles contient le bloc de code suivant :
{% from "../imports/mock_data.html" import SAMPLE_TEMPLATE_DATA as mock_data %}
{% from "../imports/module_defaults.html" import MODULE_DEFAULTS as module_defaults %}
{% set QUOTE = template_data.quote || mock_data.quote %}
{% set CURRENCY = QUOTE.hs_currency || "USD" %}
{% set LOCALE = QUOTE.hs_locale || "en-US" %}
{% set ASSOCIATED_OBJECTS = QUOTE.associated_objects %}
{% set LINE_ITEMS = ASSOCIATED_OBJECTS.line_items %}
{% set ADDITIONAL_FEES = ASSOCIATED_OBJECTS.additional_fees %}
{% set TOTALS = ASSOCIATED_OBJECTS.totals || ASSOCIATED_OBJECTS.totals %}
{% set QUOTE_TOTAL = TOTALS.total %}
{% set SUB_TOTALS = TOTALS.subtotals %}
{% set DEAL = ASSOCIATED_OBJECTS.deal %}
Les données simulées sont d’abord importées à partir du fichier mock_data.html, puis sont définies sur la variable QUOTE pour utiliser les données trouvées dans template_data, le cas échéant. La variable QUOTE est également utilisée pour remplir les autres variables de cette liste, telles que ASSOCIATED_OBJECTS, afin de rendre l’accès à ces données moins verbeux. Toutefois, vous pouvez structurer vos données différemment, en fonction de vos préférences. Dans le code ci-dessus, vous remarquerez que template_data est également utilisé pour définir la principale variable QUOTE. L’objet template_data contient toutes les données réelles pour le devis et la transaction dans la page. Si cet objet n’est pas trouvé dans le modèle, HubSpot charge les données à partir de mock_data.html.

Template_data object

La grande majorité des données sont directement accessibles via l’objet template_data. Vous pouvez utiliser {{ template_data|pprint }} dans votre modèle pour afficher l’intégralité de l’objet fourni.
VariableTypeDescription
template_datadictUn dictionnaire contenant le devis, quote.associated_objects, et les dictionnaires totaux.

Variables de devis

Les informations spécifiques à ce devis en particulier.
VariableTypeDescription
template_data.quotedictDictionnaire contenant toutes les données du devis lui-même.
template_data.quote.associated_objects.deal.hs_object_idIntegerID de transaction
template_data.quote.hubspot_owner_idIntegerID du propriétaire de transaction
template_data.quote.hs_all_owner_idsinteger or array of integersID des propriétaires de transaction
template_data.quote.hs_created_by_user_idIntegerUtilisateur qui a créé le devis.
template_data.quote.hs_lastmodifieddatedatetimeDate de la dernière modification du devis. Au format epoch.
template_data.quote.hubspot_owner_assigneddatedatetimeDate à laquelle le devis a été attribué à un propriétaire. Au format epoch.
template_data.quote.hs_createdatedatetimeDate et heure auxquelles le devis a été créé. Au format epoch.
template_data.quote.hs_expiration_datedatetimeDate d’expiration du devis. Au format epoch.
template_data.quote.hs_titleStringTitre du devis
template_data.quote.hs_template_typeString”CUSTOMIZABLE_QUOTE_TEMPLATE”
template_data.quote.hs_slugStringSlug d’URL pour la page web de devis.
template_data.quote.hs_proposal_template_pathStringChemin du système de fichiers développeur vers le modèle (inclut l’extension de fichier).
template_data.quote.hs_quote_amountStringMontant monétaire
template_data.quote.hs_currencyStringDevise dans laquelle le montant du devis est exprimé, en code de devise ISO 4217 à 3 caractères.”USD”
template_data.quote.hs_languageStringCode de langue”fr”
template_data.quote.hs_localeStringCode cadre”fr-fr”
template_data.quote.hs_termsStringTexte des conditions fourni par le créateur du devis
template_data.quote.hs_sender_firstnameStringPrénom de la personne qui envoie le devis.
template_data.quote.hs_sender_company_nameStringNom de la société de la personne qui a envoyé le devis.
template_data.quote.hs_sender_company_image_urlStringLogo de l’entreprise de la personne qui envoie le devis.
template_data.quote.hs_statusStringÉtat du devis.”APPROVAL_NOT_NEEDED”
template_data.quote.hs_primary_colorstring/hex color code”#425b76”
template_data.quote.hs_quote_numberStringNuméro d’identification unique du devis.
template_data.quote.hs_payment_enabledbooleanÀ utiliser pour tester si les champs de paiement doivent être affichés.
template_data.quote.hs_esign_enabledbooleanÀ utiliser pour tester si des champs d’e-signature doivent être affichés.
Vous ne trouvez pas la variable que vous cherchez ?Vous pouvez accéder à d’autres variables dans template_data. Utilisez |pprint pour les voir. En outre, certaines variables dans les associations de devis peuvent n’être disponibles qu’en fonction du devis/de la transaction.Nous allons compléter cette documentation pour présenter et expliquer davantage les données auxquelles vous avez accès. En dehors de l’impression élégante, vous pouvez consulter le fichier de données simulées dans le cms-quote-theme, pour voir ce qui est disponible et la structure dans laquelle il se trouve.

Objets associés

Dans un modèle de devis, vous pouvez accéder aux données des enregistrements associés à un devis, tels que des transactions ou des entreprises, en utilisant associated_objects. Par exemple, vous pouvez ajouter à un devis le logo de l’entreprise associée au destinataire du devis en utilisant le code suivant :
{% set company_avatar_url = template_data.quote.associated_objects.company.hs_avatar_filemanager_key %}
{% if company_avatar_url %}
  <img src="{{ template_data.quote.associated_objects.company.hs_avatar_filemanager_key }}" width="400" alt="{{ template_data.quote.associated_objects.company.name }}">
{% else %}
  <!-- company does not have an assigned image-->
{% endif %}

Remarque:

Seuls les logos définis manuellement apparaîtront. Les logos détectés automatiquement n’apparaîtront pas, pour éviter que les logos involontaires n’apparaissent sur le modèle de devis.
Le code ci-dessus définit d’abord une variable qui recherche le logo de l’entreprise associée au devis. Ensuite, à l’aide d’une instruction if, le modèle affiche ce logo, le cas échéant. Si aucun logo n’a été défini manuellement pour l’entreprise, aucun logo n’est affiché.

Objets personnalisés

Les données d’objet personnalisés peuvent être affichées ou utilisées dans un devis de différentes manières. Étant donné que la structure de chaque objet personnalisé peut varier, vous devez obtenir des propriétés spécifiques selon la façon dont vous avez structuré votre objet personnalisé. L’objet template_data du devis par défaut contient des objets associés personnalisés. Par exemple, des objets personnalisés associés aux transactions sont inclus. Pour y accéder, vous pouvez utiliser le code suivant :
{% set quote_associated_custom_objects = template_data.quote.associated_objects.deal.associated_objects.custom_objects %}

{{ quote_associated_custom_objects|pprint }}
{# |pprint is useful for understanding the structure of the data, you can leave it off when outputting values for display. #}

Remarque:

Étant donné que les objets personnalisés sont propres à chaque compte, les données simulées n’incluent pas d’exemple d’objet personnalisé. Cela signifie que dans l’aperçu du modèle dans le gestionnaire de conception, vous pouvez voir une erreur ou les données d’objet personnalisés ne s’affichent tout simplement pas. Vous devrez donc prévisualiser le modèle avec vos données CRM réelles, ce que vous pouvez faire en créant un devis à partir du modèle.
Vous pouvez ensuite accéder à chaque type d’objet personnalisé en ajoutant son ID de type d’objet personnalisé formaté avec des tirets bas. Par exemple : template_data.quote.associated_objects.deal.associated_objects.custom_objects._2_2193031 Vous pouvez également rechercher un objet personnalisé en utilisant les fonctions crm_associations() et crm_objects(). Par exemple, si vous souhaitez rechercher un objet personnalisé associé à une transaction, vous pouvez transmettre les données de template_data :
{% set quote_associated_object = crm_associations(template_data.quote.associated_objects.deal.hs_object_id, "USER_DEFINED", 152) %}
{# 152 is an example of an association type id, you would need to use the appropriate id for your use-case. #}
{{ quote_associated_object }}

Autres ressources