Génération des factures à partir des Opportunités

Prev Next

Linda commence la configuration des automatisations de Frisbii.

Vu qu'ils utilisent les opportunités et les offres, elle veut mettre en place la facturation automatique à partir de ces deux objets.
Elle demande à Vijay de lui expliquer les étapes pour ce setup.

Les conditions de déclenchement sur l'Opportunité

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 opportunité plusieurs fois.


Auto facturation condition
Ce champ formule permet au processus de savoir quelle opportunité il faut traiter.
Si la case est cochée, une facture sera générée à partir de cette opportunité.
Dans notre exemple on facture automatiquement, si :

  • L'opportunité ne rentre pas dans un cas d'exception,

  • L'opportunité est gagnée.


Veuillez adapter ces conditions à vos besoins métier.

AND(Auto_facturation_exception__c = FALSE,
ISPICKVAL(StageName, "Closed Won"))


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'opportunité ne sera pas traitée par le processus.
Dans notre exemple, une opportunité est déclarée comme une exception si :

  • Le montant HT de l'opportunité est plus petit que zéro,

  • L'opportunité est déjà facturée manuellement,

  • L'opportunité est déjà facturée par le processus.

Veuillez adapter ces conditions à vos besoins métier.

OR(sofactoapp__Montant_TTC__c <= 0,
sofactoapp__Montant_facture__c != 0,
Dejafacturee__c)

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 à ces sujets :

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 : Opportunité

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 > Opportunité.
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 une 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 probablement 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 :
(1) Ajoutez ces cases uniquement aux présentations de pages utilisées par vos équipes qui facturent. Il faut penser à ajouter également le bouton Facturer si vous ne l'avez pas encore fait. Voici l'article qui explique comment procéder : Premiers pas avec Frisbii - Ajouter Frisbii à votre org (puis cliquer sur Ajout des boutons d'actions Frisbii sur l'Opportunité).

(2) Afin de débugger facilement le processus, si jamais une opportunité 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 ainsi pourquoi l'opportunité se trouve en exception, et pourra éventuellement modifier les valeurs des champs.

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 la présentation de page de vos équipes de facturation 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 MarkOpportunityForAutoInvoicing dans quelles conditions elle 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 opportunités.
3. Validez votre choix.

Comme expliqué plus haut, nous utilisons le batch apex planifiable MarkOpportunityForAutoInvoicing afin de créer automatiquement des factures à partir des opportunités. Elle 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 Opportunity_2_Invoice, afin de générer les factures.

Configuration 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'opportunité afin de créer la facture.

  • Le deuxième sur l'objet de facture qui permet d'actualiser l'opportunité suite à la création de la facture pour indiquer que l'opportunité a été déjà facturée.

Commençons avec le flux sur l'opportunité.

Procédure depuis l’objet Opportunité

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 image.png pour Configurer le démarrage.
3.1. Sélectionnez l'objet Opportunité.
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 image.png pour Ajouter un élément.
4.1. Cliquez sur Action et cherchez ensuite Apex dans la barre de recherche.
4.2. Choisissez Opportunity_2_Invoice.
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 OpportunityId.

5. Sauvegardez votre flux.

Voilà une bonne chose de faite ! Avant de passer aux tests, Linda et Vijay mettent en place le deuxième flux pour actualiser l'opportunité.

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 image.png 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__Opportunit__c})),
{!$Record.sofactoapp__Opportunit__r.sofactoapp__Auto_facturation__c} = true,
{!$Record.sofactoapp__Opportunit__r.Dejafacturee__c} = false)


Nous allons vérifier :

  • si une opportunité est liée à la facture,

  • si sur cette opportunité 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 image.png 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 : Opportunité
4.5. Filtrez les enregistrements Opportunité :

  • Toutes les conditions sont remplies :

  • ID égal à {!$Record.sofactoapp__Opportunit__c}

4.6. Définissez les valeurs de champ de Offre Enregistrements :

  • Dejafacturee__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 pour programmer cette automatisation.

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 MarkOpportunityForAutoInvoicing.

5. Configurer la Fréquence et le Début ainsi que l'Heure de début souhaités.

Attention : Si vous planifiez la tâche Apex dans la journée, n'oubliez pas qu'à ce moment, les utilisateurs Frisbii peuvent travailler sur les opportunités. Si le processus veut accéder à une opportunité qui est en cours de modification par un utilisateur, un message d'erreur s'affichera et le processus s'arrêtera.

6. Pour la date de Fin, veuillez mettre une date lointaine dans le futur afin d'éviter que le processus s'arrête rapidement.
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 opportunité qui remplit les critères, et qui doit donc se facturer automatiquement.

Par exemple, dans le cas de Cloud Kicks :

  • L'Étape d'opportunité est Closed Won.

  • La case Auto facturation exception n'est pas cochée (false).

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 :

sofactoapp.MarkOpportunityForAutoInvoicing
autoOpp = new sofactoapp.MarkOpportunityForAutoInvoicing();
autoOpp.execute(null);

4. Cliquez sur le bouton Execute pour lancer le script.

Le test est-il réussi ?

Le test est réussi si :

  • Il y a une facture liée à votre opportunité,

  • La case auto facturation est cochée,

  • La case déjà facturée est également cochée.

Ce n'est pas le cas ?

Vérifiez :

  • Si vous avez bien rafraîchit la page de votre navigateur, souvent il y a des problèmes de cache.

  • Les conditions de vos champs :

    • Auto facturation condition

    • Auto facturation exception

  • Est-ce que sur votre opportunité de test :

    • La case Auto facturation condition est-elle bien cochée ?

      • Non ? > Comparez l'opportunité avec les conditions définies auparavant.

    • La case Auto facturation exception est-elle cochée par contre ?

      • Oui ? > Faites en sorte que votre opportunité ne rentre plus dans les cas d'exception définis auparavant, ou créez une nouvelle opportunité de test.

  • Les conditions du flux :

    • Vérifiez si la configuration est correcte :

      • Opportunité > Auto Facturation Égal à Booléen True.

      • Opportunité > Déjà Facturé Égal à Booléen False.

  • La configuration de votre processus :

    • Est-ce que votre processus est bien activé ?

    • Si oui, lisez encore une fois la procédure et vérifiez à nouveau votre configuration.

  • Vous avez testé deux fois sur la même opportunité, 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 est décochée, sauvegardez, et remettez ensuite l'opportunité en condition d'être facturée.

    • Le flux a besoin d'une modification de ce genre, afin de pouvoir retraiter l'enregistrement.