Formules en Javascript dans le tableau Budget

Dans cet article

La possibilité de saisir des formules n'est disponible dans Banana Comptabilité Plus qu'avec le plan Advanced. Mettez à jour maintenant!

La colonne Formule permet de saisir des formules de calcul. Les montants des devis peuvent ainsi être calculés en fonction d'autres valeurs de la même planification (voir Exemples de formules). 

  • Inscrivez le coût des marchandises sur la base d'un pourcentage des ventes.
  • Augmenter le budget des ventes sur la base d'un pourcentage de croissance.
  • A la fin de l'année, calculer l'amortissement en fonction de la valeur des investissements réalisés.
  • Trimestriellement, calculer les intérêts sur le compte bancaire en fonction de l'utilisation réelle (jours/365).
  • Chaque mois, calculez les impôts sur le revenu en fonction du bénéfice réel réalisé. 

Si vous entrez une valeur dans la colonne Formule, la colonne Montant est calculée par le programme sur la base de la formule.

Fichiers d'exemple:

Pour des exemples concernant les formules, reportez-vous aux explications suivantes :

Budget avec formules

Formules de calcul en Javascript

  • La formule doit être exprimée en langage Javascript (à ne pas confondre avec le langage Java).
  • S'il existe une formule (ou un texte quelconque), la valeur de la colonne Montant est définie en fonction du résultat de la formule.
  • Vous pouvez utiliser toutes les fonctions du langage Javascript, plus les API fournies par Banana.

Séparateur de décimales

Javascript utilise uniquement le point "." comme séparateur de décimales.

Si vous utilisez un séparateur différent, celui utilisé pour les nombres dans le format local, il est probable que le nombre sera tronqué.

Séquence de calcul et absence de valeurs futures

  • Les lignes sont triées par date et résolues en commençant par la plus basse.
  • S'il y a des opérations avec la même date, l'ordre est celui du moment de la saisie.
  • Lorsqu'une ligne est résolue à l'aide de formules, puisque les lignes suivantes n'ont pas encore été traitées, vous n'aurez accès qu'aux données jusqu'à ce point.

Montant = résultat de la dernière instruction

En Javascript, le point-virgule " ;" est utilisé pour séparer les expressions.
Si la formule Javascript contient plusieurs expressions séparées par " ;", la valeur dans la colonne Montant sera le résultat de la dernière expression exécutée.

  • 10*3 //sera retourné 30
  • S'il y a plusieurs opérations en séquences, séparées par des points et virgules ";" la dernière opération sera reprise.
    10*3;7; // C'est le 7 qui sera repris
  • S'il y a un retour, la valeur est reprise après le retour.
    retour 10; // C'est le 10 qui sera repris

Variables

Les variables Javascript sont les éléments les plus puissants de la programmation, car elles permettent d'accéder à la mémoire de l'ordinateur avec un nom, de sauvegarder et de récupérer des valeurs.
Les variables n'existent pas dans les formules Excel, mais sont similaires aux noms de cellules, à la différence que le nom peut être attribué librement.

Variables

La variable est créée en indiquant un nom et l'égal (=).

Vous pouvez définir et utiliser des variables directement dans les lignes. En écrivant le nom de la variable dans la formule, la valeur sauvegardée est reprise.

Ici, le prix variable est créé et on lui attribue la valeur 10.

var prix = 10 ;

ou simplement

prix = 10 ;

Nous créons ici un total variable qui correspond à la valeur du prix multiplié par 5.

total = prix * 5 ;

La valeur de la variable peut être réaffectée.

prix = 20 ;

Objets

Les objets Javascipt sont des variables qui permettent d'enregistrer plusieurs valeurs, chacune étant indiquée par une propriété.
L'objet prix est créé ci-dessous, indiqué par des crochets {}. Pour accéder aux valeurs et les enregistrer, on utilise plutôt des crochets ou le nom de la propriété est indiqué après le nom de l'objet.

prix = {}
prix [voiture] = 10 ;
prix.voiture = 10 ;
prix ["ordinateur"] = 20 ;
prix.ordinateur = 20 ;

Array

Les array di Javascript sont des variables qui contiennent des valeurs multiples, accessibles en séquence.
Les array sont créés à l'aide de crochets et aussi pour y accéder. Le premier élément du tableau a l'indice 0.

coûts = [1,2,3] ;
coûts [0]=3 ;
résultat = prix ["voiture"] - coûts [0] ;

Variables automatiques

  • budgetCurrent
    C'est un objet qui contient le tableau avec les lignes du Budget, juste après la création des répétitions.
    Elles sont utilisées pour reprendre les valeurs, en conjonction avec le JReapeatNumber.
  • DEBUG est une variante qui peut être "vraie" ou "fausse".
    Si "true", tous les résultats des formules sont affichés dans les messages.
  • row
    C'est un objet javascript qui fait référence à la ligne courante.
    • Les valeurs des cellules peuvent être reprises avec la fonction value ("columnNameXml").
      row.value("date") retourne à la data de l'écriture.
    • row.value ("JRepeatNumber") retourne le progressif de la répétition.
      La première répétition est 0.
  • _totalPrice
    Il s'agit de la valeur de la colonne Quantité multipliée par le Prix à l'unité.
    Équivalent à la formule "row.value('Quantity')*row.value('UnitPrice')

Fonctions Budget

En plus de l'API budget défini dans l'API de la classe comptabilité, il existe des fonctions spécifiques.

budgetGetPeriod(tDate, period)

Cette fonction est utilisée en combinaison avec l'utilisation de la répétition.
Lorsque des répétitions sont indiquées, il est conseillé de se référer à une période de calcul et non à une date précise.
Paramètre tDate. Date à laquelle le calcul de la période se réfère. En règle générale, la date de la ligne d'écritures.

  • Paramètre tDate.
    La date à laquelle le calcul de la période se réfère. En règle générale, la date de la ligne d'enregistrement est utilisée.
  • Paramètre period.
    Un sigle
    • Pour la période courante
      • "MC" mois en cours
      • "QC" trimestre courant
      • "YC" année en cours
    • Pour la période précédente
      • "MP" mois précédent
      • "QP" trimestre précédent
      • "YP" année précédente.
    • A partir de la version 9.1 on peut aussi utiliser:
      • "DC" journée en cours
      • "DP" journée précédente
      • "WC" semaine en cours
      • "WP" semaine précédente
      • "BC" bimensuel en cours
      • "BP" bimensuel précédent
      • "SC" semestre en cours
      • "SP" semestre précédent
  • Valeur de retour.
    Un objet composé de deux dates
    • startDate
    • endDate 
// example
t = BudgetGetPeriod ('2015-01-01', 'MP') retourne
t.startDate // 2014-12-01
t.endDate // 2014-12-31

    Fonctions budgétaires spécifiques

    Ce qui suit est similaire aux fonctions disponibles avec Banana.document, mais peut être utilisé sans indiquer l'objet Banana.document.

    A tenir compte:

    • Au lieu du paramètre startDate, vous pouvez utiliser une des abréviations de période comme "MC", "MP", expliquées dans le budgetGetPeriod.
    • Si une abréviation est utilisée, la fonction calcule la date de début et de fin de la période, sur la base de la date de l'écriture en cours.
    • Il n'est logique d'utiliser la date de fin que si elle est antérieure à la date de la ligne.
      Si la date est égale ou supérieure, elle n'a cependant aucun effet car les valeurs après la ligne actuelle ne sont pas encore disponibles, car elles n'ont pas été traitées.
    • Si la date de la ligne d'enregistrement est le 15 avril
      • budgetBalance("1000", "MP") renvoie le solde du compte 1000 à la fin du mois de mars.
      • budgetBalance("1000", "MC") renvoie le solde au moment actuel, il est identique à budgetBalance("1000").
      • budgetTotal ("1000", "QP") renvoie le mouvement total du trimestre précédent.
      • budgetTotal ("1000", "QC") renvoie le total des mouvements du trimestre précédent, jusqu'à la date actuelle.

    budgetBalance(account, startDate, endDate, extraParam)

    Le solde jusqu'à la ligne courante.

    budgetBalance('1000', 'MP'); //retourne le solde de 1000 à la fin du mois précédent

    budgetOpening(account, startDate, endDate, extraParam)

    Le solde au début de la période.

    budgetTotal(account, startDate, endDate, extraParam)

    La différence entre les mouvements Débit et Crédit de la période

    budgetTotal('1000', 'MC'); //Retourne le mouvement total du compte 1000 pour le mois courant

    budgetInterest( account, interest, startDate, endDate, extraParam)

    Calcule les intérêts sur un compte, pour la période indiquée (au maximum la date du jour)
    S'utilise pour calculer les intérêts sur un compte de fin de période, la ligne où la formule est affichée doit toujours être la dernière pour cette date.

    • Paramètre de compte.
      C'est le numéro de compte sur les mouvements duquel les intérêts seront calculés.
    • Paramètre intérêt,
      Indique le taux d'intérêt en pourcentage.
      • positif (2.5, 4, 10) calcule les intérêts sur le mouvement Débit du compte.
      • négatif (-2,5, -4, -10) calcule les intérêts sur le mouvement Crédit du compte.

    crédit(montant)

    • Si le paramètre montant est négatif, il retourne le montant comme valeur positive.
      credit(-100) // retourne 100
    • Si le paramètre montant est positif, il retourne 0 (zéro)
      credit(100) // retourne 0

    Cette fonction est utile en liaison avec la fonction budgetBalance seulement sur les soldes nécessaire.
    Si vous voulez calculer le pourcentage sur les ventes, l'utilisation de cette fonction est plus facile.
    credit(budgetTotal('1000')) // insère la valeur que si elle est négative.

    debit(montant)

    • Si le paramètre montant est positif, il retourne le montant.
      debit(100) // retourne 100

    • Si le paramètre est négatif, il retourne 0 (zéro)
      debit(-100) // retourne 0

    Utile si vous devez effectuer des calculs en utilisant seulement le montant du Débit en évitant d'utiliser celui du Crédit.

    Include

    Inclut et exécute un fichier javascript, avec la possibilité de créer des fonctions spécifiques et des variables qui peuvent être rappelées dans le script.

    • inclut "file:test.js" 
      Exécute le contenu du fichier indiqué. Le nom est relatif au fichier sur le quel l'on travaille.
    • inclut "documents:test.js" 
      Exécute  le document texte contenu dans le tableau documents
      Doit être un fichier de type "text/javascript"

    Fonctions pour la comptabilité multidevise :

    Elles peuvent également être utilisées pour la comptabilité sans multidevise, dans ce cas le compte est toujours dans la devise de base.

    budgetBalanceCurrency(account, startDate, endDate, extraParam)

    Le solde dans la devise du compte jusqu'à la ligne courante.

    budgetEchangeDifférence (compte, [date, taux d'échange])

    Cette formule s'appelle la fonction Banana.document.budgetExchangeDifférence.

    budgetOpeningCurrency(account, startDate, endDate, extraParam)

    Le solde dans la devise du compte jusqu'à la ligne courante.

    budgetTotalCurrency(account, startDate, endDate, extraParam)

    À partir de la version 9.01, les fonctions budgetCréditMonnaie, budgetDébitMonnaie sont également incluses.

    Fonctions définies par l'utilisateur

    L'utilisateur peut définir des fonctions avec le langage javascript et les rappeler dans les formules.
    Il est possible de définir des fonctions:

    • Directement dans une formule
    • A l'intérieur d'un fichier attaché du type code javascript, indiqué dans un document qui a comme ligne id le nom "_budet.js"
    • A l'intérieur d'un texte dans le tableau documents et inclu avec la commande inclure.

    Note :
    Dans les fonctions utilisateur, il n'est pas possible pour l'instant d'utiliser des fonctions qui accèdent aux données comptables courantes (currentBalance, ...).

    function calcolaImposte(utile)
    {
       var aliquota = 10;
       if (utile > 50000)
          aliquota = 10;
       else if (utile > 100000)
          aliquota =20;
       return utile * aliquota / 100;
    }
    

     

    Aidez-nous à améliorer la documentation

    Nous serions heureux de recevoir des commentaires sur l'amélioration de cette page.

    Dites-nous quel thème doit être mieux expliqué ou comment clarifier un sujet.

    Partager cet article: Twitter | Facebook | LinkedIn | Email