Linda a appris qu'il est possible d'automatiser la génération des factures à partir d'une offre dans Frisbii.
Elle demande à Vijay de lui expliquer comment ça marche.
Vijay recommande à Linda de faire au préalable les trailheads suivants, afin de bien comprendre ses explications :
Ensuite, Vijay lui explique comment mettre en place l'automatisation.
Les conditions de déclenchement sur l'Offre
La gestion de la facturation automatique se base sur ces quatre champs :
Auto facturation
Déjà facturée
Auto facturation condition
Auto facturation exception
Attention : Les formules présentes dans ce tableau sont données à titre indicatif : elles doivent être personnalisées selon vos besoins métier. Si vous n'avez pas besoin de définir les exceptions ou des conditions vous pouvez simplifier le processus.
Auto facturation Ce champ (case à cocher) est utilisé par le processus de facturation. | |
Déjà facturée Cette case à cocher est activée suite à la création de la facture. Cela évite de facturer une offre plusieurs fois. | |
Auto facturation condition Ce champ formule permet au processus de savoir quelle offre il faut traiter. Si la case est cochée, une facture sera générée à partir de cette offre. Dans notre exemple, on facture automatiquement si :
| AND(Auto_facturation_exception__c = FALSE, |
Auto facturation exception Ce champ formule regroupe les cas d'exception dans lesquels la facturation ne doit pas avoir lieu. Si la case est cochée, l'offre ne sera pas traitée par le processus. Dans notre exemple une offre est déclarée comme une exception si :
| OR( sofactoapp__Montant_HT_apres_remise__c <= 0, sofactoapp__Montant_facture__c != 0, Deja_facturee__c ) |
(Si vous venez de copier les formules, cliquez ici pour revenir dans la procédure.)
Maintenant que Linda a compris à quoi servent ces champs, elle peut les configurer.
Configurer les champs nécessaires pour l'automatisation
Nous vous conseillons ces articles Trailhead si vous n'avez pas encore eu l'occasion de vous former aux sujets :
Mettre en place un champ : Ajout de champs personnalisés.
Personnaliser les champs formules : Use Basic Logic in Checkbox Formulas
La case à cocher Auto facturation existe déjà dans l'objet, donc elle configure la case à cocher et les deux champs formules.
Puisque le champ Auto facturation condition fait référence au champ Auto facturation exception, et ce dernier à la case à cocher Déjà facturée, il faut créer les champs dans cet ordre :
Case à cocher Déjà facturée
Champ Auto facturation exception
Champ Auto facturation condition
Commençons par configurer le champ Déjà facturée :
Case à cocher
Objet : Offre
Voici le résultat de Linda :
Voici la procédure pour mettre en place les deux champs formule :
Procédure
1. Allez dans Configuration > Gestionnaire d'objet > Offre.
2. Cliquez sur Champs et relations.
3. Cliquez sur le bouton Nouveau.
4. Dans l'Étape 1, choisissez le type de données Formule.
5. Dans l'Étape 2, choisissez le type de sortie Case à cocher et renseignez Auto facturation exception.
6. Dans l'Étape 3, basculez sur Formule avancée et composez votre formule adaptée à votre besoin.
Attention : Si vous copiez les formules précisées dans cet article, copiez-les d'abord dans un éditeur de texte qui enlève toute la mise en forme. L'éditeur de formule ne va pas accepter un copier-coller directement à partir de cet article.
7. Vérifiez la syntaxe.
8. Donnez une description et un texte d'aide significatifs.
9. Dans l'Étape 4, gérez la sécurité de ce champ en cochant les cases correspondantes aux profils, selon les règles de votre entreprise.
10. Décochez la case pour ajouter le champ automatiquement sur la présentation de page, afin de mieux placer manuellement les champs créés par la suite.
Répétez cette procédure pour le champ Auto facturation condition.
Attention : Afin de débugger facilement le processus, si jamais une offre n'est pas traitée car elle est en exception, facilitez la vie des utilisateurs - et finalement votre travail - en mettant les conditions/ exceptions dans un langage "non technique" dans le texte d'aide de ces champs.
L'utilisateur comprendra alors mieux pourquoi l'offre se trouve en exception, et pourra changer les champs ou comprendra du moins pourquoi l'offre n'est pas traitée.
Voici les résultats de Linda :
Suite à la création de ces champs, Vijay explique à Linda comment les utiliser dans un processus.
Remarque : N'oubliez pas d'ajouter les champs sur votre présentation de page afin que les utilisateurs puissent les vérifier en cas de problème.
Configuration du champ de contrôle
Afin de donner l'information au batch apex planifiable MarkOfferForAutoinvoicing dans quelles conditions il doit cocher la case Auto facturation (qui déclenchera le processus suivant), il faut configurer le champ de contrôle dans l'onglet Administration.
Procédure
1. Allez dans l'onglet Administration de l'application Frisbii.
2. Sélectionnez le champ Auto facturation condition que vous avez créé plus haut comme Champ de contrôle pour auto-facturation des offres.
3. Validez votre choix.
Comme expliqué plus haut, nous utilisons le batch apex planifiable MarkOfferForAutoinvoicing afin de créer automatiquement des factures à partir des offre. Il cochera ensuite la case Auto facturation en fonction des conditions que nous avons défini au préalable.
Maintenant nous allons mettre en place une automatisation qui applique la méthode invocable Invoice_Offers, afin de générer les factures.
Création du flux
Vijay explique à Linda qu'il utilise désormais uniquement les flux pour automatiser les processus dans Salesforce, et plus par le générateur de processus. Ensemble, ils mettent en place deux flux :
Le premier sur l'objet de l'offre afin de créer la facture.
Le deuxième sur l'objet de facture qui permet d'actualiser l'offre suite à la création de la facture pour indiquer que l'offre a été déjà facturée.
Commençons avec le flux sur l'offre.
Procédure depuis l’objet Offre
1. Allez dans Configuration > Automatisation des processus > Flux ou tapez Flux dans la barre de recherche rapide.
2. Choisissez Flux déclenché par un enregistrement.
3. Double cliquez sur le symbole Début pour Configurer le démarrage. 3.1. Sélectionnez l'objet Offre.
3.2. Déclenchez le flux quand : Un enregistrement est mis à jour.
3.3. Définissez comme conditions d'entrée :
Toutes les conditions sont remplies (ET)
sofactoapp_Auto_facturation__c égal à Vrai
Deja_facturee__c égal à Faux
3.4. Exécutez le flux pour les enregistrements mis à jour Uniquement lorsqu'un enregistrement est mis à jour pour remplir les exigences des conditions.
3.5. Optimisez les flux pour : Actions et enregistrements associés.
3.6. Cliquez sur Terminer.
4. Cliquez sur le Plus pour Ajouter un élément.
4.1. Cliquez sur Action et cherchez ensuite Apex dans la barre de recherche.
4.2. Choisissez Invoice_Offers.
4.3. Donnez un nom à l'action dans le champ Étiquette et veillez à la bonne écriture du nom API.
4.4. Définissez les valeurs d'entrée en mettant {!$Record.Id} dans le champ OfferId.
5. Sauvegardez votre flux.
6. Activez-le. Voilà une bonne chose de faite ! Avant de passer aux tests, Linda et Vijay mettent en place le deuxième flux pour actualiser l'offre.
Procédure depuis l’objet Facture
1. Allez dans Configuration > Automatisation des processus > Flux ou tapez Flux dans la barre de recherche rapide.
2. Choisissez Flux déclenché par un enregistrement.
3. Double cliquez sur le symbole Début pour Configurer le démarrage. 3.1. Sélectionnez l'objet Facture.
3.2. Déclenchez le flux quand : Un enregistrement est créé.
3.3. Définissez comme conditions d'entrée :
Exigences de condition : Formule renvoie true
AND
(NOT(ISBLANK({!$Record.sofactoapp__Offre__c})),
{!$Record.sofactoapp__Offre__r.sofactoapp__Auto_facturation__c} = true,
{!$Record.sofactoapp__Offre__r.Deja_facturee__c} = false)
Nous allons vérifier :
si une offre est liée à la facture,
si sur cette offre l'automatisation a été exécutée (la case Auto facturation est cochée)
si la case Déjà facturée est décochée sur l'offre
3.4. Vérifiez la syntaxe en appuyant sur le bouton.
3.5. Optimisez les flux pour : Actions et enregistrements associés.
3.6. Cliquez sur Terminer.
4. Cliquez sur le Plus pour Ajouter un élément.
4.1. Cliquez sur Mettre à jour l'enregistrement déclenchant.
4.2. Donner un nom significatif.
4.3. Comment rechercher des enregistrements pour mettre à jour et définir leur valeur : Cochez Spécifier des conditions d'identification des enregistrements, puis définir les champs individuellement. 4.4. Mettez à jour les enregistrements de ce type d'objet : Offre
4.5. Filtrez les enregistrements Offre :
Toutes les conditions sont remplies :
ID égal à {!$Record.sofactoapp__Offre__c}
4.6. Définissez les valeurs de champ de Offre Enregistrements :
Deja_facturee__c* <-- Vrai
*Attention : Vérifiez bien comment vous avez nommé ce champ pour y mettre le bon nom API.
4.7. Cliquez sur Terminé.
5. Sauvegardez votre flux.
6. Activez-le.
C'était rapide ! Passons directement à la planification de la classe Apex.
Planifier la classe Apex
Si vous voulez que le processus de génération des factures soit lancé à une certaine heure, il faut passer par une Classe Apex planifiée, voici la procédure de Salesforce pour la Planification de tâches Apex.
Procédure
1. Allez dans Configuration > Code personnalisé > Classes Apex.
2. Cliquez sur le bouton Planifier Apex.
3. Renseignez un Nom de tâche.
4. Renseignez la Classe Apex MarkOfferForAutoInvoicing.
5. Configurez la Fréquence et le Début ainsi que l'Heure de début souhaitées.
Attention : Si vous planifiez la tâche Apex dans la journée, pensez que les utilisateurs Frisbii peuvent encore travailler sur les offres qui rentrent déjà dans les conditions. Si le processus veut accéder à une offre qui est en cours d'utilisation, vous allez recevoir un message d'erreur et le processus va s'arrêter.
6. Pour la date de Fin, mettez une date qui est lointaine dans le futur afin d'éviter que le processus s'arrête très rapidement après votre manipulation.
7. Cliquez ensuite sur le bouton Enregistrer.
Remarque : La tâche planifiée est ensuite visible dans Configuration > Environnements > Tâches > Tâches prévues. Pour la modifier, il faut la supprimer et planifier à nouveau.
Test de l'automatisation
Suite à la configuration, n'oublions pas de tester notre processus.
Préparation
D'abord, assurez-vous d'avoir une offre qui remplit les critères et qui doit donc être facturée automatiquement.
Par exemple, dans le cas de Cloud Kicks :
L'Étape d'offre est gagnée,
La case Auto facturation exception n'est pas cochée (false),
Le champ Compte est bien renseigné dans l'offre de test (cela peut arriver lors de tests d'oublier ce champ, mais il est obligatoire lors de la création d'une facture).
et que vous avez bien ajouté les quatre champs dans votre présentation de page :
Auto facturation
Déjà facturée
Auto facturation condition
Auto facturation exception
Procédure
1. Allez dans la Developer Console.
2. Dans le menu Debug > Open Execute Anonymous Window.
3. Dans la fenêtre Enter Apex Code,collez cette expression et :
sofactoapp.MarkOfferForAutoInvoicing
autoOffer = new sofactoapp.MarkOfferForAutoInvoicing();
autoOffer.execute(null);
4. Cliquez sur le bouton Execute pour lancer le script.
Le test est-il réussi ?
Le test est réussi :
S'il y a une facture qui est liée à votre offre,
La case auto facturation est cochée,
La case déjà facturée est également cochée.
Ceci n'est pas le cas ?
Veuillez vérifier :
Les conditions de vos champs :
Auto facturation condition
Auto facturation exception
Sur votre offre de test :
La case Auto facturation condition est-elle bien cochée ?
Non ? > Comparez l'offre avec les conditions définis auparavant.
La case Auto facturation exception est-elle cochée par contre ?
Oui ? > Faites en sorte que votre offre ne rentre plus dans les cas d'exception définis auparavant ou créez une nouvelle offre de test.
Les conditions du flux :
Vérifiez si la configuration est correcte :
Offre > Auto Facturation Égal à Booléen True
Offre > Déjà Facturé Égal à Booléen False
La configuration de votre flux :
Votre processus est-il bien activé ?
Si oui, lisez encore une fois cet article et vérifiez à nouveau votre configuration.
Vous avez testé deux fois sur la même offre et cela ne marche plus, même après la suppression de la facture ?
Modifiez une option qui fait en sorte que la case Auto facturation condition soit décochée, sauvegardez, et remettez ensuite l'offre en condition
Le flux a besoin d'une modification de ce genre, afin de pouvoir retraiter l'enregistrement.