2017-10-18 31 views
2

我正在组建PO请求管理器。试图为关系数据源提供总列数

我已经创建了一个模型:PORequests

然后创建一个ONE与其他型号多种关系:项目

表,左边是数据源:PORequests。右边的表是PORequests:项目(关系)

所以,当你在PORequest#1单击左边,你看到与特定的PO请求相关的项目。

enter image description here

然后,当用户改变量或该项目的成本,所述onValueEdit运行该代码,创建用于小计的条目(在项目模型中的字段)。

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

所有这一切的伟大工程,但现在我想添加subtoals所有项目,并把它填补了PORequest模型总计字段。

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

谢谢你的帮助!


更新:

所以我一点点接近。我能够获得标签以显示总计小计。从公司商店模板偷走了以下客户端脚本:

/** 
* 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字段。

+0

,我认为部分这取决于你在哪里存储总量为PORequest。这是PO请求中的字段吗?如果您在使用App设备驱动表,他们不提供聚集,所以你要么需要使用计算模型,或在您的项目的onCreate,onEdit和onDelete事件重新计算总的PO的假设你有一个PO总码$ PORequest模型中的$ field。 –

+0

我的目标是把它在与PORequest模型的字段(如你所提到的)在onEdit,onDelete,等那尔德重新计算总,并在新弹出量一些代码。我唯一无法弄清楚的是如何告诉App Maker如何总结与PO请求相关的小计。 –

回答

0

好了,这里是我做过什么:

1.我创建了两个谷歌驱动器表型号:PORequests和项目。

PORequests具有以下字段:PORequest Number,Vendor和Total *。

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

项目包含以下字段:ItemName,Quantity,Cost和Subtotal。

2.我创建了一个与两个数据源(PORequests作为所有者)的ONE和MANY关系。

3.我用两个表创建了一个页面。

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

如果我点击PORequest#1表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; 

这告诉应用程序制造商首先:将成本乘以数量并将该值放入小计字段中。

然后它告诉应用设备到:使用getSubtotalTotal脚本添加所有小计值,并把该值在PORequest数据源的总场。

希望所有帮助别人的未来。

+0

这种方法没有考虑到安全性,客户端上的任何人都可以编辑总计和价格......但我不知道您的业务需求,但对于这种特殊情况也许可以。 –

+0

是的,它主要是我的工具。不是超级担心锁定一切。 –