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):
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.
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).
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.
Après avoir listé 3 bonnes raisons de choisir Salesforce (lire l’article), je vous propose 3 autres raisons qui peuvent vous faire douter légitimement du choix de cette solution.
Non, je ne travaille pas pour Salesforce. Non, je n’ai pas d’action chez Salesforce (c’est peut-être une idée tiens ??!!). Non je ne travaille pas pour un intégrateur Salesforce.
Salesforce possède son propre langage et il est important pour un porteur de projet de bien maîtriser les concepts de base au risque de quelques malentendus avec son intégrateur ou son free-lance.
C’est LA question récurrente lorsque j’évoque Salesforce avec des dirigeants d’entreprise, puis vient son corollaire : “Si je dois passer par un intégrateur pour mettre en place Salesforce, combien cela va me coûter ?”.