尝试对关系数据源的列进行总计
Trying to total columns for relation datasource
我正在组装一个 PO 请求管理器。
我创建了一个模型:PORequests
然后创建了与另一个模型的一对多关系:Items
Table左边是数据源:PORequests。右边的table是PORequests:Items(关系)
因此,当您单击左侧的 PORequest #1 时,您会看到仅 与该特定 PO 请求关联的项目。
然后当用户更改项目的数量或成本时,onValueEdit 运行此代码,为小计创建一个条目(项目模型中的一个字段)。
widget.datasource.item.Subtotal = widget.datasource.item.Quantity * widget.datasource.item.Cost;
一切都很好,但是现在我想为所有项目添加小计,并让它填充 PORequest 模型中的总计字段。
我如何告诉 App Maker 将 PORequest #1 中所有项目的所有小计相加?
感谢您的帮助!
更新:
所以我离得更近了一点。我能够得到一个 label 来显示小计的总数。从 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 Drive Table 模型:PORequests 和 Items。
PORequests 具有以下字段:PORequest 编号、供应商和总计*。
*注意:总计字段必须是字符串而不是数字。
项目具有如下字段:项目名称、数量、成本和小计。
2。我创建了与两个数据源的一对多关系(PORequests 作为所有者)。
3。我创建了一个包含两个 Table 的页面。
Table 1 的数据源 = PORequests
Table 2 的数据源 = PORequests:项目(关系)*
这样,如果我在 Table 1 中单击 PORequest #1,我只会看到与该 POR 关联的项目。
*注意:我将小计字段设置为"non-editable/label",因此不会有人不小心手动更改它。
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.然后我将 Quantity 和 Cost 字段的 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 脚本添加所有小计值并将该值放入 PORequest 数据源的总计字段中。
希望所有对未来有所帮助的人。
我正在组装一个 PO 请求管理器。
我创建了一个模型:PORequests
然后创建了与另一个模型的一对多关系:Items
Table左边是数据源:PORequests。右边的table是PORequests:Items(关系)
因此,当您单击左侧的 PORequest #1 时,您会看到仅 与该特定 PO 请求关联的项目。
然后当用户更改项目的数量或成本时,onValueEdit 运行此代码,为小计创建一个条目(项目模型中的一个字段)。
widget.datasource.item.Subtotal = widget.datasource.item.Quantity * widget.datasource.item.Cost;
一切都很好,但是现在我想为所有项目添加小计,并让它填充 PORequest 模型中的总计字段。
我如何告诉 App Maker 将 PORequest #1 中所有项目的所有小计相加?
感谢您的帮助!
更新:
所以我离得更近了一点。我能够得到一个 label 来显示小计的总数。从 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 Drive Table 模型:PORequests 和 Items。
PORequests 具有以下字段:PORequest 编号、供应商和总计*。
*注意:总计字段必须是字符串而不是数字。
项目具有如下字段:项目名称、数量、成本和小计。
2。我创建了与两个数据源的一对多关系(PORequests 作为所有者)。
3。我创建了一个包含两个 Table 的页面。
Table 1 的数据源 = PORequests Table 2 的数据源 = PORequests:项目(关系)*
这样,如果我在 Table 1 中单击 PORequest #1,我只会看到与该 POR 关联的项目。
*注意:我将小计字段设置为"non-editable/label",因此不会有人不小心手动更改它。
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.然后我将 Quantity 和 Cost 字段的 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 脚本添加所有小计值并将该值放入 PORequest 数据源的总计字段中。
希望所有对未来有所帮助的人。