首页 新闻 搜索 专区 学院

先进先出的数据处理及数据库的表设计?

0
悬赏园豆:50 [待解决问题]

有表:InStorageTB(入库)

ID(物料编码)  Data(入库日期)  Number(数量) Price(单价)Money(金额)

101              2015-11-15       500                   5              2500

101              2015-11-30       400                   5.5           2200

102              2015-11-30       300                   1.5           450

101              2015-12-12       100                   4.5           450

问题:

2015-12-01领出物料编码为101的700件,那么700件的出库成本价(先进先出法)为:500*5+200*5.5=3600

2015-12-04领出物料编码为101的300件,那么300件的出库成本价(先进先出法)为:200*5.5+100*4.5=1550

这样的数据是什么计算,最好是用LINQ,谢谢!

润物之音的主页 润物之音 | 初学一级 | 园豆:101
提问于:2015-09-01 10:28
< >
分享
所有回答(2)
0

倒序一下不就可以了?存储过程或者读取出来用Lambda计算~

幻天芒 | 园豆:36910 (高人七级) | 2015-09-01 11:02

倒序不行,如果只领50件就不对了

2015-12-04领出物料编码为101的50件,那么50*5.5=275

入库的不一定是全部出库的。

支持(0) 反对(0) 润物之音 | 园豆:101 (初学一级) | 2015-09-01 11:06

@润物之音: 

Select * from T WHERE Data <=2015-12-04
ORDER BY Data

然后在代码中循环rows,取出你所需要的数量。

var needCount = 50;
var totalMoney = 0.0;

foreach(row in rows)
{
    if(row.Number >= needCount)
    {
        totalMoney += row.needCount * row.Price;
        needCount = 0;
        break;
    }
    else
    {
        totalMoney += row.Number * row.Price;
        needCount -= row.Number;
    }
}
if(needCount > 0)
{
    //库存不足
}
支持(0) 反对(0) 幻天芒 | 园豆:36910 (高人七级) | 2015-09-01 11:15

@幻天芒: 

对数据表InStorageTB(入库)2015-12-01出库是没问题,但到2015-12-04出库时就没法确保2015-12-01已经出库了700件?

支持(0) 反对(0) 润物之音 | 园豆:101 (初学一级) | 2015-09-01 11:25

@润物之音: 只需要从库存中读取就好了哇。对于这个出入库,会有三个表来存储,库存表,入库表,出库表。对于你出库来说,你需要修改的是库存表和出库表。我不确定你说的无法确保2015-12-01已经出库了。如果已经出库了,那么就应该操作库存表减去已经出去的数量。

支持(0) 反对(0) 幻天芒 | 园豆:36910 (高人七级) | 2015-09-01 11:34

@幻天芒: 

谢谢!这个问题我也想了好久。今天终于有一点思路了!

能加你的QQ吗?我的QQ:191971159

我想让你帮设计数据库结构,如能抽空来帮一下,尽自己的能力给一点酬谢!

支持(0) 反对(0) 润物之音 | 园豆:101 (初学一级) | 2015-09-01 11:48

@润物之音: 哈哈~我Q:one zero two eight double three double two seven three.

支持(0) 反对(0) 幻天芒 | 园豆:36910 (高人七级) | 2015-09-01 13:23
0

你需要在设计一个出库表

刘宏玺 | 园豆:14020 (专家六级) | 2015-09-01 11:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册