首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >先入先出(FIFO)存货成本计算

先入先出(FIFO)存货成本计算
EN

Stack Overflow用户
提问于 2012-06-26 09:15:26
回答 4查看 8.7K关注 0票数 7

下面是一篇有趣的文章,我发现这篇文章在我的项目中很有用:

基于集合的速度同步: FIFO库存SQL问题

库存表,我们用来跟踪库存进出我们想象的库存仓库的跟踪运动。我们的仓库最初是空的,然后由于库存购买(tranCode = 'IN'),或者由于随后的返回(tranCode = 'RET')而进入仓库,而库存在出售时会从仓库中移出(tranCode = ' out ')。每种类型的股票模型都由一个ArticleID标识。由于给定项的购买、销售或返回,库存进出仓库的每一次移动都会导致将一行添加到“库存”表中,由“StockID标识”列中的值唯一标识,并描述添加或删除了多少项、购买价格、交易日期等。

虽然我在我正在进行的项目中使用了这个,但我仍然坚持着如何使每一笔交易的价格对费用“退出”。我需要这个价值来决定我要向我的顾客收取多少钱。

  1. 先把5个苹果(每只10美元)加到股票上,总共50.00美元。
  2. 将3个苹果(每只20美元)加在8个苹果的库存中,总价为110.00美元。
  3. 然后取出6件物品(每件5件,每件10美元,每件1件20美元)共计70美元
  4. 交易结束后,它将留下2个苹果,每个20美元,总共40美元
代码语言:javascript
复制
 Here's my current table
 Item    transaction code    qty     price   
 apple   IN                    5     10.00    
 apple   IN                    3     20.00   
 apple   OUT                   6          

 Manual computation for the OUT transaction price (FIFO)
 QTY     price   total price 
 5       10.00   50.00 
 1       20.00   20.00 
 TOTAL:6         70.00 

 Output of the script:
 Item    CurrentItems   CurrentValue
 apple   2            40.00

 What I need:
 Item    transaction code    qty     price   CurrentItems    CurrentValue 
 apple   IN                    5     10.00   5               50.00 
 apple   IN                    3     20.00   8               110.00 
 apple   OUT                   6             2                   40.00 

 This too will be OK
 Item    transaction code    qty     price   CurrentItems    
 apple   IN                    5     10.00   0               
 apple   IN                    3     20.00   0                
 apple   OUT                   6         70 

赢得比赛的脚本非常有用,我希望有人能帮助我获得每笔交易的价格。

EN

回答 4

Stack Overflow用户

发布于 2013-02-19 20:28:15

我建议按以下方式设计您的表:向表中添加一个新字段,即qty_out

出售前的桌子:

代码语言:javascript
复制
Item transaction code    qty     qty_out  price   
 apple   IN                    5    0        10.00    
 apple   IN                    3    0        20.00   
 apple   OUT                   6    null

出售这6件物品后的桌子:

代码语言:javascript
复制
Item    transaction code    qty     qty_out  price   
 apple   IN                    5    5        10.00    
 apple   IN                    3    1        20.00   
 apple   OUT                   6    null

您可以将"qty“与"qty_out”(用于IN事务)进行比较,以找出价格。

票数 2
EN

Stack Overflow用户

发布于 2012-12-04 05:22:16

在本文的基础上,脚本得到的结果是库存的价值。您需要对此进行修改,这样就不需要计算所有的库存,而是只使用第一个N项。

我建议用CASE语句来设置每个“IN”中的项目数,因为您知道库存项目和要取出的数量,因此可以对照运行的总数进行检查。

票数 0
EN

Stack Overflow用户

发布于 2014-08-26 08:43:13

您无法跟踪每个事务本身,但是您可以使用最后一行(除了要计算的事务外)来计算它,它是当前值列,减去要计算的当前值。

在这个例子中

代码语言:javascript
复制
StockID  ArticleID  TranDate  TranCode  Items    Price    CurrentItems  CurrentValue
4567     10000      10:45:07  IN          738   245.94             738    181,503.72
21628    10000      12:05:25  OUT         600                      138     33,939.72
22571    10000      14:39:27  IN           62   199.95             200     46,336.62
30263    10000      16:14:13  OUT         165                       35      6,998.25
42090    10000      18:18:58  RET           5                       40      7,998.00
53143    10000      20:18:54  IN          500   135.91             540     75,953.00

交易30263的价格为46,336.62 - 6,998.25 = 39,338.37

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11204136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档