我正在整理一个PO Request经理。

我创建了一个模型:PORequests

然后与另一个模型创建一个“一对多”关系:

左侧的表是数据源:PORequests。右边的表格是PORequests:Items(关系)

因此,当您单击左侧的PORequest#1时,您只会看到与该特定PO请求关联的项目。

google-app-maker - 尝试总计关系数据源的列-LMLPHP

然后,当用户更改物料的数量或成本时,onValueEdit运行此代码,为小计(Items模型中的字段)创建一个条目。

widget.datasource.item.Subtotal = widget.datasource.item.Quantity * widget.datasource.item.Cost;


一切都很好,但是现在我想为所有项目添加小计,并让它填充PORequest模型中的Total字段。

如何告诉App Maker将PORequest#1中所有项目的所有小计加起来?

感谢您的帮助!



更新:

所以我离我有点近。我能够得到一个标签来显示小计的总数。从Corporate Store模板中窃取了以下客户端脚本:

/**
 * Locale constant that is used for currency formatting.
 */
var CURRENT_LOCALE = 'en-US';


/**
 * Calculates and formats total cost of all POR items.
 * @param {Array<CartItem>} PORItems - list of user's POR items.
 * @return {string} formatted total cost of all POR items.
 */
function getSubtotalTotal(PORItems) {
  var cost = PORItems.reduce(function(result, item) {
    return result + item.Subtotal;
  }, 0);
  return '$' + cost.toLocaleString(CURRENT_LOCALE, {minimumFractionDigits: 2});
}


然后,我将getSubtotalTotal(@ datasource.items)作为标签的文本。

因此,现在我只需要弄清楚如何告诉App Maker从脚本中获取结果并将其添加到PORequests数据源的Total字段中。

最佳答案

好的,这就是我所做的:

1.我创建了两个Google云端硬盘表模型:PORequests和Items。

PORequests具有以下字段:PORequest编号,供应商和总计*。

*注意:“总计”字段必须是字符串而不是数字。

物料具有以下字段:物料名称,数量,成本和小计。

2.我用两个数据源(所有者为PORequests)创建了一对多关系。

3.我创建了一个包含两个表的页面。

表1的数据源= PORequests
表2的数据源= PORequests:项目(关系)*

这样,如果我单击表1中的PORequest#1,我只会看到与该POR相关的项目。

*注意:我将“小计”字段设置为“不可编辑/标签”,因此没有人不小心手动更改它。

4.然后,我创建了一个客户端脚本:

/**
 * Locale constant that is used for currency formatting.
 */
var CURRENT_LOCALE = 'en-US';


/**
 * Calculates and formats total cost of all POR items.
 * @param {Array<CartItem>} PORItems - list of user's POR items.
 * @return {string} formatted total cost of all POR items.
 */
function getSubtotalTotal(PORItems) {
    var cost = PORItems.reduce(function(result, item) {
    return result + item.Subtotal;
  }, 0);
  var total = cost + app.datasources.PORequests_HideArchived.item.Tax + app.datasources.PORequests_HideArchived.item.Shipping;
  return '$' + total.toLocaleString(CURRENT_LOCALE, {minimumFractionDigits: 2});
}


5.然后,将“数量”和“成本”字段的onValueEdit设置为:

widget.datasource.item.Subtotal = widget.datasource.item.Quantity * widget.datasource.item.Cost;

var subtotalTotal = getSubtotalTotal(app.datasources.PORequests.relations.Items.items);
app.datasources.PORequests.item.Total = subtotalTotal;


这告诉App Maker首先:将成本乘以数量,然后将该值放入小计字段。

然后,它告诉App Maker:使用getSubtotalTotal脚本添加所有小计值并将THAT值放在PORequest数据源的“总计”字段中。

希望将来能对所有人有所帮助。

10-08 18:07