Author: Christophe
Quand tu es admin Salesforce de ta boîte !
Avez-vous déjà croisé ce grand sage ?
Réunion de Classic Anonymes
Y’en a là-dedans !
Les outils d’intégration de données dans Salesforce
Quoi de plus chronophage et de moins intéressant que de rentrer des données et/ou de les mettre à jour dans un CRM ?
Continue readingPousser une valeur par défaut dans un champ standard Salesforce
Vous devez continuellement remplir un champ texte standard Salesforce par la même valeur et cela vous agace profondément car qui dit champ standard, dit impossibilité de lui attribuer une valeur par défaut. Avec cette page visualforce, vous avez pouvoir attribuer une valeur par défaut via le bouton “Nouveau”.
Le code à copier/coller dans votre page visualforce (1 champ):
<apex:page standardController="Lead" > <script> window.top.location.href = '/lightning/o/Lead/new?nooverride=1&defaultFieldValues=Title=Responsable Achat'; </script> </apex:page> Multi-champs : <apex:page standardController="Lead" > <script> window.top.location.href = '/lightning/o/Lead/new?defaultFieldValues=champ1=Valeur1,champ2=Valeur2'; </script> </apex:page>
En bleu, le nom de votre objet (n’oubliez pas le __c pour un objet personnalisé), en orange le ou les champs à qui vous attribuez une valeur par défaut et en gris, la valeur par défaut.
Les raccourcis clavier dans Salesforce
Besoin de gagner du temps ?
Continue readingAjouter un bouton “générer un pdf” sur un objet Salesforce
Dès qu’on débute sur Salesforce, on se rend assez vite compte qu’une fonctionnalité manque cruellement dans l’outil : la génération de documents à partir d’un ou plusieurs objets. Bien entendu, certains éditeurs l’ont bien compris et vous aurez dans l’Appexchange un choix assez large d’outil de ce type. La plupart permettent l’édition de documents en pdf ou word que l’objet soit standard ou custom, l’envoi par mail directement de la plateforme, l’enregistrement immédiat du document en “Notes et Pièces jointes”…. Personnellement, j’ai une préférence pour un éditeur en particulier.
Mais, dans le cas de figure où vous n’avez pas forcément besoin de ces fonctionnalités, et que surtout, vous ne souhaitez payer un abonnement supplémentaire, je vous propose un tutoriel très simple à mettre en place. Il vous permettra de générer un document pdf avec des champs présélectionnés.
<apex:page standardController="Order"
renderAs="pdf"
applyBodyTag="false"
sidebar="false">
<head>
<style type="text/css" media="print" height="2cm">
@page {
@top-center {
content: element(header);
}
@bottom-left {
content: element(footer);
}
}
div.header {
padding: 5px;
position: running(header);
}
div.footer {
display: block;
padding: 2px;
position: running(footer);
}
.pagenumber:before {
content: counter(page);
}
.pagecount:before {
content: counter(pages);
}
</style>
</head>
<!-- Ref de commande en en-tête et numéro de page en pied-->
<div class="header">
<div>Ref {!Order.OrderNumber} </div>
</div>
<div class="footer">
<div><span class="pagenumber"/> / <span class="pagecount"/></div>
</div>
<div class="content">
<p></p>
</div>
<!-- Références de la commande-->
<table>
<!-- Infos Raison Sociale-->
<tr><TD width="50%">
Temps Additionnel Voyages
<br />195 Chemin de Neyron
<br />69140 Rillieux La Pape
</td>
<TD width="30%">
</td>
<!-- Infos Client -->
<TD width="20%">
<apex:outputText value="{!Order.Account.Name}"/>
<br /><apex:outputText value="{!Order.Account.BillingStreet}"/>
<br /><apex:outputText value="{!Order.Account.BillingPostalCode} {!Order.Account.BillingCity}"/>
<br /><apex:outputText value="{!Order.Account.Mail__c}"/>
</td></TR>
<tr>
<td> </td>
</tr><tr>
<td> </td>
</tr><tr>
<td> </td>
</tr>
<!-- Numéro et Date de commande -->
<tr><td colspan="3"><CENTER>
<h2> Commande N° {!Order.OrderNumber} </h2>
Date de commande :
<apex:outputText value="{0,date,dd'/'MM'/'yyyy}">
<apex:param value="{!order.EffectiveDate}" />
</apex:outputText>
</center> </td></tr>
</table>
<br />
<br />
<!-- Commentaire - n'apparait que si le champs Description est rempli-->
<tr>
<td> </td>
</tr>
<tr>
<td class="vtop borderOff" style="width:80%">
<apex:outputPanel rendered="{!NOT(ISBLANK(Order.Description))}" layout="none"><b>Commentaires : </b><apex:outputText value="{!Order.Description}"/></apex:outputPanel>
</td></tr>
<tr>
<!-- Lignes de commande -->
<td class="vtop" colspan="2">
<br />
<table width="650px" border="1" cellspacing="0" style = "fontweight:bold">
<tr>
<th align="center">
Nom du produit
</tH>
<th align="center">
{!$ObjectType.OrderItem.Fields.Quantity.Label}
</tH>
<th align="center">
{!$ObjectType.OrderItem.Fields.Unitprice.Label}
</tH>
<th align="center">
{!$ObjectType.OrderItem.Fields.Totalprice.Label}
</tH>
</tr>
<!-- Pour chaque ligne de commande -->
<apex:repeat value="{!Order.OrderItems}"
var="ligne" >
<tr>
<td align="left">
<apex:outputField value="{!ligne.Nom__c}"/>
</td>
<td align="center">
<apex:outputField value="{!ligne.Quantity}"/>
</td>
<td align="center">
<apex:outputField value="{!ligne.UnitPrice}"/>
</td>
<td align="center">
<apex:outputField value="{!ligne.TotalPrice}"/>
</td>
</tr>
</apex:repeat>
<!-- total -->
<tr>
<td class="borderOff" ></td>
<td colspan="2">
{!$ObjectType.Order.Fields.TotalAmount.Label}
</td>
<td align="center" >
<apex:outputField value="{!Order.TotalAmount}"/>
</td>
</tr>
</table>
</td>
</tr>
<!-- signature -->
<br />
<br />
Nom et signature
</apex:page>
Cette page Visualforce est adaptée à l’objet “Commande”. Si vous souhaitez la mettre en place pour un autre objet, il vous suffit de remplacer tous les termes en bleu par le nom API de l’objet en question et de l’objet enfant/parent (OrderItem dans l’exemple) et ceux en orange par les champs que vous désirez faire remonter (Attention, si ce sont des champs custom, ne pas oubliez de rajouter __c à la fin).
Modèle de fichier pdf obtenu :
Comment rater son projet CRM en 10 leçons ?
Le taux d’échec des projets CRM est de l’ordre de 30 à 60 % selon une étude Gartner de 2017. Cela se traduit par une faible voire inexistante adoption de l’outil de la part des utilisateurs. A croire qu’il est plus facile de rater l’implémentation d’un CRM que de la réussir. Pourtant ce n’est pas la littérature qui manque pour connaître tous les facteurs clefs de succès… Alors pourquoi un tel niveau d’échec ? Peut-être, dans bien des cas, pour des raisons très prosaïques.
Continue reading