【发布时间】:2016-10-31 14:22:19
【问题描述】:
我有一个数据库表 stockmovements,其中包含 DATE、PRODUCT、UNITS、TYPE、STOCK 列。 STOCK 会在特定库存移动完成时保存该日期的库存价值。 TYPE 可以购买或出售或退货。
我按产品分组,以便我视图中表格的任何行都显示产品。然后我想创建 2 列。库存开始和库存结束。显示日期范围的第一个和最后一个日期的股票价值。所以稍后假设我应用我过滤 10 月 1 日 - 10 月 31 日,2 列将显示 10 月 1 日的股票价值和 10 月 31 日的股票价值。
如果没有应用过滤器,列将显示数据库中所有值中最早和最新的库存值。
在中间的列中显示每种股票运动类型的单位。这样最终将是产品,库存开始,购买,出售,退货,库存结束。这只是为了给出关于一般逻辑的想法,但对于这个问题并不重要。
我的控制器中有这个:
@stockmovements = Stockmovement.all.group(:PRODUCT)
我应该在视图中添加什么:
<td><%= number_to_human stockmovement.STOCK, precision: 0 %></td>
获取日期范围开始和结束时的股票价值?还是应该在模型中完成?我基本上需要 DATE= 开始日期的 STOCK 和 DATE= 结束日期的 STOCK。但我找不到任何帮手。
【问题讨论】:
-
如果可以更改,则应将列设为小写(例如“日期、产品、单位、类型、库存”)。但是我的主要问题是,当您说 STOCK 通过“价值”节省了股票的价值时,您的意思是股票数量 * 单价?是当前运动之前还是之后的值?
-
我正在现有数据库上构建应用程序,因此无法更改数据库。没有 STOCK 与 sum(UNITS) 相同。这是当前运动之后的值。想象一下 PRODUCT、UNITS、STOCK 列。我购买 |产品 A、3、3 |然后我做销售|产品 A,-1,2 |.
-
我的意思是它不需要任何计算。我只是在建立一个报告。我只需要读取数据库中的这些值。我只需要在这两个日期展示它们。
-
对,好的,那么对于“开始”列,您确实需要 STOCK - 第一条记录的单位(开始值)。 ?
-
是的,没错。好吧,我只需要股票。我不需要第一条或最后一条记录的 UNITS 值..
标签: ruby-on-rails