Générer un échéancier de règlement

Prev Next

Il y a deux manières d'utiliser le modèle d'échéancier pour les échéanciers de règlement :

  • Soit vous passez par les jalons, comme pour l'échéancier de facturation, ce qui permet une gestion plus finement adaptée au besoin de votre client,

  • Soit vous utilisez les dates de début et de fin sur la facture et ensuite le champ Périodicité dans le modèle d'échéancier.

Afin de générer les échéanciers de règlement, il faut d'abord mettre en place un ou plusieurs modèles d'échéancier, comme décrit dans cet article : Échéanciers - Use cases & mise en place d'un modèle d'échéancier.    

Échéancier avec jalons

Si vous voulez utiliser des jalons, veuillez suivre cette procédure afin de les configurer auparavant : Échéanciers - Mise en place des jalons.

Attention : si vous créez un échéancier de règlement alors qu'un ou plusieurs règlements existent et sont en attente, alors ces règlements seront supprimés au profit des nouveaux créés via l'échéancier. Les règlements qui ne sont plus en attente (qui ont été payés) seront conservés, et le montant des règlements en attente s'ajustera sur le solde restant à payer.

Procédure

1. Allez dans l'onglet Facture.
2. Ouvrez la facture concernée.
3. Allez sur la liste associée Règlements et cliquez sur Générer échéancier.

4. Choisissez un modèle d'échéancier.
5. Les règlements sont créés. La date du premier règlement est la date d'échéance de la facture. Le mode de paiement est également repris de la facture, et les délais entre les règlements et leurs montants sont eux calculés en fonction de l'échéancier de règlement sélectionné.
6. Modifiez - si nécessaire - les dates, les modes de paiement, ajoutez des commentaires. Vous pouvez également décocher si le règlement doit être considéré comme En attente ou pas.
7. Cliquez ensuite sur Valider.

8. Vous voyez vos règlements dans la liste associée Règlement.

Attention : S'ils n'apparaissent pas tout de suite, il s'agit certainement d'un problème de cache. Veuillez visualiser tous les règlements en cliquant sur la liste associée pour vous assurer qu'ils sont bien créés.    

Échéancier sans jalons

En décidant de ne pas utiliser les jalons, la périodicité choisie sur l'échéancier en question s'applique aux dates renseignées sur la facture :

Les règlements générés sont répartis d'une manière égale. 

Exemple :  

Type

Règlement

Montant TTC initial

1200,00€

Date de début

01/01/2020

Date de fin

31/03/2020

Périodicité 

Mensuelle

Résultat

3 Règlements attendus

Montant TTC par instance

400,00€

Attention
Il faut que la périodicité soit adaptée à la période de facturation choisie dans l'offre/ la facture.
Si vous sélectionnez une périodicité annuelle pour une période de facturation d'un mois, le résultat sera juste d'une facture ou d'un règlement.

Procédure 

1. Allez sur l'onglet Raisons sociales.
2. Cochez la case Activer les règlements automatiques.

3. Allez ensuite dans l'onglet Facture et ouvrez la facture en question.
4. Cherchez votre modèle d'échéancier à partir du champ de recherche Échéancier de règlement.

5. Sauvegardez la facture.
6. Grâce à l'automatisme du règlement automatique, vous trouverez vos règlements dans la liste associée Règlement

Attention : S'ils n'apparaissent pas tout de suite, il s'agit certainement d'un problème de cache. Veuillez visualiser tous les règlements en cliquant sur la liste associée pour vous assurer qu'ils sont bien créés.

Grâce au champ de relation Échéancier de règlement vous pouvez trouver les factures attachées aux modèles d'échéancier.

Maintenant que nous avons généré notre échéancier de règlement, nous allons voir comment l'afficher sur le PDF de la facture.

Ajouter l'échéancier de règlement dans le modèle PDF

Afin d'ajouter la liste des règlements sur le PDF de la facture, vous pouvez ajouter le bout de code suivant dans votre page Visualforce. Il vous faut passer par votre administrateur Salesforce pour apporter ces modifications.

Pour enregistrer la page Visualforce, il est d'abord nécessaire de créer ces deux champs dans l'objet règlement : 

Étiquette de champ

Nom du champ

Type de donnée

Formule

Montant TVA

Montant_TVA

Formule (Devise, 2 décimales)

sofactoapp__Facture__r.sofactoapp__TVA_pc__c

Montant HT

Montant_HT

Formule (Devise, 2 décimales)

sofactoapp__Montant__c /( 1+ Montant_TVA__c)

Remarques :  (1) Le code suivant ne gère pas le saut de page. La coupure éventuelle du tableau se fera sans que l'en-tête du tableau ou l'en-tête de la facture ne soit répliquée sur la deuxième page. 

(2) Si vous avez mis une condition sur le saut de page, la coupure éventuelle du tableau ne se fera pas correctement. Soit le tableau sera coupé, mais la suite ne sera pas reportée sur la deuxième page, soit une page blanche sera insérée. Dans ce cas-là, vous pouvez l'intégrer directement sur votre deuxième page. 
Testez ce code d'abord dans une sandbox pour faire les tests d'affichage dans les différents cas de figure (nombreuses lignes de facture/ nombreuses lignes de l'échéancier de règlement).

<!-- Echéancier -->

            <table class="borderOn" style="padding:0;margin:0;page-break-before:auto;page-break-inside:auto;">
                <tr style="page-break-inside:avoid;page-break-before:auto;font-size:10px;text-transform:uppercase">
                    <td width="10%" class="alignleft borderOn"
                        style="border-left:hidden;border-right:hidden;border-top:hidden;border-bottom:display;">
                        N°
                    </td>
                    <td width="18%" class="alignleft borderOn"
                        style="border-left:hidden;border-right:hidden;border-top:hidden;border-bottom:display;">
                        {!$ObjectType.sofactoapp__R_glement__c.Fields.sofactoapp__Date__c.Label}
                    </td>
                    <td width="18%" class="alignleft borderOn"
                        style="border-left:hidden;border-right:hidden;border-top:hidden;border-bottom:display;">
                        {!$ObjectType.sofactoapp__R_glement__c.Fields.Montant_HT__c.Label}
                    </td>
                    <td width="18%" class="alignleft borderOn"
                        style="border-left:hidden;border-right:hidden;border-top:hidden;border-bottom:display;">
                        {!$ObjectType.sofactoapp__R_glement__c.Fields.Montant_TVA__c.Label}
                    </td>
                    <td width="18%" class="alignleft borderOn"
                        style="border-left:hidden;border-right:hidden;border-top:hidden;border-bottom:display;">
                        {!$ObjectType.sofactoapp__R_glement__c.Fields.sofactoapp__Montant__c.Label}
                    </td>
                    
                </tr>
                ​
                <apex:variable var="counter" value="{!1}" />
                <apex:repeat value="{!orderedPayments}" var="orderedPaymentsLigne" id="orderedPaymentsLignes">
                    <apex:repeat value="{!sofactoapp__Factures_Client__c.sofactoapp__R_glements__r}" var="paymentLigne"
                        id="paymentLignes">
                        <apex:outputPanel layout="none" rendered="{!paymentLigne.Id == orderedPaymentsLigne}">
                            <apex:outputPanel layout="none">
                                    
                                <tr style="page-break-inside:avoid;page-break-before:auto">
                                    <td width="10%" style="text-align:center;">
                                        <apex:outputText value="{!counter}" />
                                        <apex:variable var="counter" value="{!counter+ 1}" />
                                    </td>
                                    <td width="18%" style="text-align:center;">
                                        <apex:outputField value="{!paymentLigne.sofactoapp__Date__c}" />
                                    </td>
                                    <td width="18%" style="text-align:center;">
                                        <apex:outputField value="{!paymentLigne.Montant_HT__c}" />
                                    </td>
                                    <td width="18%" style="text-align:center;">
                                        <apex:outputField value="{!paymentLigne.Montant_TVA__c}" />
                                    </td>
                                    <td width="18%" style="text-align:center;">
                                        <apex:outputField style="text-align:center;"
                                            value="{!paymentLigne.sofactoapp__Montant__c}" />
                                    </td>
                                </tr>
                             </apex:outputPanel>
                        </apex:outputPanel>

                    </apex:repeat>
                </apex:repeat>
            </table>

Voici le résultat intégré dans la facture de Cloud Kicks :