以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教 有2个表 一个采购入库单 另一个是销售出库单 ,计算成本采用先进先出法 ?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=188240)

--  作者:jswjyjf
--  发布时间:2023/9/10 15:31:00
--  请教 有2个表 一个采购入库单 另一个是销售出库单 ,计算成本采用先进先出法 ?
请教  有2个表 一个采购入库单 另一个是销售出库单 ,计算成本采用先进先出法。

假如采购入库 1月1号 入库 3台 单价 100, 1月2号 入库8台 单价 120 ,2月7号 销售出库 3台 销售价150 ,2月14号 销售出库2台 销售价 160 ,如何写代码 计算出销售的5台的成本价?

--  作者:有点蓝
--  发布时间:2023/9/10 20:20:00
--  
成本价的计算逻辑是什么?按什么规则计算?
--  作者:jswjyjf
--  发布时间:2023/9/10 20:30:00
--  
成本按按采购入库单来计算的


--  作者:有点蓝
--  发布时间:2023/9/10 20:43:00
--  
业务的东西我不懂,要给出具体的计算步骤和方法,不要只说概念,比如直接取平均值那就是这样

(3*100+2*120) / 5= 108

--  作者:jswjyjf
--  发布时间:2023/9/12 11:44:00
--  
你好 我做了一个案例 计算逻辑如下 不知道代码怎么写

你帮我看一下 手工计算流程 里面有
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:先进先出法计算销售成本.foxdb




--  作者:有点蓝
--  发布时间:2023/9/12 14:07:00
--  
做了个简单的,但是感觉这种表结构和业务设计没有什么实用价值,一是不支持并发,二是输错数量再改就会非常麻烦。要完成这2点这个已经超出我的能力范围了。

不过可以建议一下,给进货和出库都增加一个明细表,把每一笔计算都添加到明细里,增加审核列,审核的单据再计算成本,审核后就不能再更改数据,然后库存通过汇总的方式判断处理,类似这里的用法:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=179720

--  作者:jswjyjf
--  发布时间:2023/9/12 14:32:00
--  
嗯 给了点思路  也不错 谢谢
--  作者:jswjyjf
--  发布时间:2023/9/12 20:14:00
--  
但还是不行  我再详细文字表达你就明白了  



举例说明先进先出法:

2006年3月1日结存存货200件,单价2元;此时的结存存货成本=200x2=400元 这时库存结余200件

3月2日发出存货150件;发出存货成本=150x2=300元,此时的结存存货成本=400-300=100元   这时库存结余50件

3月5日购入存货200件,单价2.2元;购入存货成本=200x2.2=440元,此时的结存存货成本=440+100=540元 这时库存结余250件

3月7日发出100件;发出存货成本=50x2+50x2.2=210元,此时的结存存货成本=540-210=330元  这时库存结余150件

3月15日购入存货100件,单价2.1元;购入存货成本=100x2.1=210元,此时的结存存货成本=330+210=540元  这时库存结余250件

3月20日,发出120件。发出存货成本=120x2.2=264元,此时的结存存货成本=540-264=276元 这时库存结余130件  

在先进先出法核算下,发出存货成本=300+210+264=774元,期末结存存货成本=276元。

以上是先进先出的逻辑思路 ,用代码怎么写 请教



--  作者:huaziqiao1976
--  发布时间:2023/9/18 12:02:00
--  
增加一列“库存量",在填制入库单时填列,以对应每次的进货量,出库时,用控件获取进货日期为正序库存量大于等于1的行库存量、单价等,够减时改写库存量,直到0为止  ,代码最好写在商品目录的下拉窗口里

Dim dr As DataRow
dr = 
DataTables("产品").SQLFind("产品编号 = \'03\'"\'找出编号为03的产品
With DataTables(
"订单")
    dr = .SQLFind(
"产品 = \'PD01\'","日期"\'找出第一次订购PD01产品的记录
    dr = .SQLFind(
"产品 = \'PD01\'","日期",1\'找出第二次订购PD01产品的记录
End With