预算表中的Javascript公式

文件资料 •
在此文中

插入公式的可能性只有在Banana财务会计+ 的高级计划中才有。现在就升级至最新版本

公式列允许您输入计算公式。因此,可以基于相同预算的其它值来计算预估的金额 (请参见公式示例)

  • 指示出商品成本占销售额的百分比。
  • 根据增长百分比增加销售预算。
  • 到年底,根据所投资的价值计算折旧。
  • 每季度根据实际使用情况 (天/ 365) 计算银行账户的利息。
  • 每月,根据实际利润计算利润的税金。

正如表格Budget的文档中所解释的,你也可以使用Javascript公式。

  • 在公式开始列中
  • 在描述栏中,对于重复的行。

如果在公式列中输入了数值,那么金额列是由程序根据该公式计算的。

示例文件

有关公式的示例,请参考以下的说明:

预算表格,公式列

Javascript中的计算公式

  • 该公式必须使用Javascript语言表示 (不要与Java语言混淆)。
  • 如果有公式 (或任何文本),则根据公式结果设置金额列中的值。
  • 您可以使用Javascript语言的所有功能,以及Banana软件提供的API功能

小数点分隔符

作为小数点分隔符,JavaScript仅使用该点"."。

如果使用其他分隔符(用于本地格式数字的分隔符),则该数字可能会被截断。

金额 = 最后一条指令的结果

在Javascript中,分号";" 用于分隔表达式。
如果Javascript公式包含多个用分号 ";"分隔的表达式,则金额列的值将是最后执行的表达式的结果。

  • 10*3 //则30 将返回。
  • 如果有一系列由分号";"分隔的操作序列,则最后一次操作将继续。
    10*3;7; //则7 将返回。
  • 如果有返回值,则该值将在返回后继续。
    返回 10; // 则10 将返回。

变量

Javascript变量是编程中最强大的元素,因为它们允许您使用名称访问计算机的内存,保存并访问这些数值。
变量在Excel公式中不存在,但是类似于单元格的名称,不同之处在于可以自由分配名称。

预算表格,变量

通过指出名称,并用等号 (=) 指示来创建变量。

您可以直接在行内定义和使用变量。通过在公式中输入变量的名称,保存的数值将被接管。

在此创建价格变量,并分配值 10。

var price = 10;

或简单地

price = 10;

如下所示,我们创建一个总变量,将价格乘以5归因于该变量。

total = price * 5;

可以重新分配变量的值。

price = 20;

对象

Javascipt 对象是允许您保存多个值的变量,每个值都有一个属性指示。
价格对象如下列所示,以大括号显示。要访问和保存值,请使用方括号或在对象名称后的属性名称中进行指示。

prices = {}
prices['car'] = 10;
prices.car = 10;
prices['computer'] = 20;
prices.computer = 20;

数组

Javascript 数组是使用方括号创建的,也可以访问它们。
数组的第一个元素的索引为0。

costs = [1,2,3];
costs[0]=3;
result = prices['car'] - costs[0];

重复和变数

有关计算顺序的更多信息,参见财务计划

  • 所有的行(包括为重复创建的行)都按日期排序。如果有相同日期的行,其顺序是它们在表中插入的顺序。
  • 排序后,行(包括公式)被重新计算。
  • 因此,在公式中,你只能获得到该日期为止的预算数据。
  • 变量必须定义在使用该变量的行前有日期的行中。
  • 如果预算条目有重复,变量将在每次都被重新分配。
    sum=10。
  • 如果你想计算总计,而不是计算总计。
    • 在最初的一行中,创建一个数值为0的变量。
      sum = 0。
    • 在重复的那一行中,总和也包括前一个值。
      sum = sum + 10;
      或使用 "+="。
      sum += 10

自动变量

  • budgetCurrent
    该表包含重复创建后的预算行。
    这些用于与JRepeatNumber一起记录值。
  • DEBUG  可以是为 "true" 或 “false”的变量。
    如果为"true",则在消息中显示所有公式的结果。
  • row
    是引用当前行的javascript对象。
    • 可以使用值函数 ("columnNameXml").row.value("date") 返回到发生业务日期来检索单元格的值。
    • row.value ("JRepeatNumber")返回重复的进度。
      第一次重复是0。
  • _totalPrice
    这是数量列的值乘以单价
    它相当于公式 "row.value('数量')*row.value('单价')"。

预算功能

除了会计类API中定义的预算API外,还有一些特定功能。

BudgetGetPeriod(tDate, period)

此功能与重复使用功能结合使用。
当定义重复时,建议参考计算期间而不是精确的日期。

  • 日期参数
    计算期间的日期,通常是记录行的日期。
  • 期间参数
    缩写
    • 当前的时期:
      • "MC" 代表当前月
      • "QC" 代表当前季度
      • "YC" 代表当前年
    • 对于上一时期:
      • "MP" 代表上一时期的月份
      • "QP" 代表上一时期的季度
      • "YP" 代表上一时期的年份
  • 从9.1版本开始,您也可以使用:
    • "DC "当天
    • "DP "前一天
    • "WC "本周
    • "WP "前一周
    • "BC "当前2个月
    • "BP "前两个月
    • "SC "当前六个月
    • "SP "前六个月
  •  返回值
    由两个日期组成的对象
    • 开始日期
    • 结束日期
// 示例
t = BudgetGetPeriod ('2015-01-01', 'MP') returns
t.startDate // 2014-12-01
t.endDate // 2014-12-31

特定预算功能

以下内容与Banana.document可用的内容相似,但可以在不指定Banana.document对象的情况下使用。

要考虑在内:

  • 您可以使用budgetGetPeriod中解释的缩写形式"MC", "QC", "YC", "MP", "QP", "YP"代替开始日期的参数
  • 如果将期间指定为日期,则使用当前录入的日期。
  • 只有在结束日期早于行日期时使用结束日期才有意义。
    如果它等于或更高,则没有效果,因为它们尚未被处理,所以当前行之后的值尚不可用。
  • 如果发生业务行的日期是4月15日:
    • budgetBalance("1000","MP") 返回3月底1000账户的余额。
    • budgetBalance("1000","MC") 返回当前时间的余额,它与 budgetBalance("1000")相同。
    • budgetTotal("1000","QP")  返回上一季度的总变动。
    • budgetTotal("1000","QC") 返回上一季度截至当前日期的变动总额。

budgetBalance(account, startDate, endDate, extraParam)

余额到当前行。

budgetBalance('1000', 'MP'); //returns the balance of 1000 at the end of the previous month

budgetOpening(account, startDate, endDate, extraParam)

期初余额。

budgetTotal(account, startDate, endDate, extraParam)

该期间的借方和贷方变动之间的差异。

budgetTotal('1000', 'MC'); //returns the total movement of the 1000 account for the current month

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

在指定期间内(最大当前日期)计算账户的利息
如果您使用它来计算期末账户的利息,则显示公式的行应始终是该日期的最后一行。

  • 账户参数
    这将是计算其变动利息的账户号码
  • 利息参数
    以百分比表示利率
    • 正数 (2.5, 4, 10) 计算账户借方变动的利息。
    • 负数 (-2.5, -4, -10) 计算账户贷方变动的利息。

贷方(金额)

  • 如果金额参数为负,则返回正数。
    贷方(-100) // 返回 100
  • 如果金额参数为正,则返回0。
    贷方(100) // 返回 0

此功能与其他budgetBalance功能结合使用,仅在您需要的余额上可用。
如果要计算销售百分比,则使用此功能会更容易。
credit(budgetTotal('1000')) // 仅当它为负时才输入值

借方(金额)

  • 如果金额参数为正,则返回金额
    debit(100) //返回 100
  • 则返回0
    debit(-100) //返回 0

如果您只需要使用借方金额进行计算而避免使用贷方金额,则很有用。

包含 (Include)

包含并执行一个 javascript文件,并可能创建自己的函数和变量,这些函数和变量可以在脚本中调用。

  • include "file:test.js" 
    执行了指定文件的内容,该名称是指正在使用的文件。
  • include "documents:test.js" 
    执行了文件中包含的文本文件的内容。
    这必须是"text/javascript" 类型的文件。

多币种会计功能

它们也可以不用于多币种会计,在这种情况下,账户始终使用基本货币。

budgetBalanceCurrency(account, startDate, endDate, extraParam)

当前行账户货币余额。

budgetExchangeDifference (account, [date, exchangeRate])

这个公式调用的函数是Banana.document.budgetExchangeDifference。
 

budgetOpeningCurrency(account, startDate, endDate, extraParam)

期初账户的货币余额。

budgetTotalCurrency(account, startDate, endDate, extraParam)

从9.01版本开始,还包括以下功能:budgetCreditCurrency, budgetDebitCurrency.

用户定义的功能

用户可以使用JavaScript语言定义个人功能,然后再公式中调用它们。
可以定义以下功能:

  • 直接在公式中
  • 在JavaScript编码的附件中;此附件必须具有"_budget.js"名称作为行id
  • 在文档表的文本中,需要包含在Include命令中
function Taxcalculation(profit)
{
   var percentage = 10;
   if (profit > 50000)
      percentage = 10;
   else if (profit > 100000)
      percentage =20;
   return profit * percentage / 100;
}

 

 

Tell us how we can help you better
If the information on this page is not what you're looking for, is not clear enough, or is not up-to-date, let us know.

分享这篇文章: Twitter | Facebook | LinkedIn | Email