5

我正在开发一个库存管理应用程序这是场景:

- 用户使用以下信息输入购买的物品(物品编号、购买数量、购买价格、最低价格、购买日期)

每次操作,用户输入售出的商品,并附上以下信息(商品编号、售出数量、风的最终价格、交易日期),每次操作如果最终价格风小于风的最低价格

每次操作,一次风我都记录了交易的收益(最终风价-进货价)

问题是:您可以在不同的时间以不同的价格购买相同的产品,那么我们可以计算出共同利益,

例如,如果我有以下情况

购买的商品(T 恤),10 件,20 英镑,23 英镑,2012 年 8 月 10 日 购买的商品(T 恤),10 件,22 英镑,25 英镑,2012 年 8 月 19 日

在这种情况下,wind的操作我要怎么做才能以正确的购买价格收回物品并计算利润并将良好的信息记录在销售表中?

4

1 回答 1

6

在金融领域,计算盈亏总是(大部分情况下)使用 FIFO 规则完成。

即:买入 10 20 美元,卖出 5 美元 @22 美元,买入 5 美元 21 美元,卖出 10 美元 @23,必须记录为

BUY 10 for $20 date1
BUY 5 for $21 date3

并分别

SELL 5 @ $22 date2
SELL 10 @ $23 date4

现在您要做的就是根据 FIFO 规则将它们配对并将中间投资组合写入数据库:

portfolios AFTER date
date1  10  profit/loss $0     avg-open $20
date2  5   profit/loss +$10   avg-open $20
date3  10  protit/loss +$10   avg-open $20.50
date4  0   profit/loss +$35   avg-open $0

操作一一:date1我们以平均开盘价$20买入后。从date1date2,我们卖出了一半的股票,从中获利,5 * ($22 - $20 <- avg-open) = $10交易之后,还剩下 5 只证券,平均开盘价为 20 美元。

从我们囤积 5date2date3证券开始,盈亏保持不变,但平均开盘价上涨至 20.50 美元(20 美元 5 美元 + 21 美元 5 美元)。

最后,你将它们全部卖掉,利润10 * ($23 - $20.50) = $25加上之前的 10 美元,即 35 美元。

总而言之,您可以记录单笔交易 ( BUY/ SELL),然后即时计算投资组合、平均开盘价和损益。

或者,您可以将投资组合连同迄今为止的损益和增量更新的平均开盘价一起存储。

我不建议两者都做(调试目的除外),因为这可能会给您带来数据级别的不一致,这是令人讨厌的。如果这样做,请选择其中一个表示作为主表示,并(重新)计算另一个以防出现不一致。

只是一个建议。

于 2012-08-20T08:28:33.527 回答