博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ERP产品价格成本计算的几个方法(转)
阅读量:6342 次
发布时间:2019-06-22

本文共 3470 字,大约阅读时间需要 11 分钟。

      一般财务计算产品价格又很多方法,我这里做了几个供参考,实体属性主要是编号、数量、价格等,这里就不列出了。
///  /// 先进先出算法 ///  /// 入库记录(一个周期内) /// 出库记录(一个周期内) /// 
InventoryPrice为结果价格
public List
ComputerPriceFIFO (List
inRecord, List
outRecord) { //排序 var inList = (from o in inRecord orderby o.CDate select o).ToList(); var outList = (from o in outRecord orderby o.CDate select o).ToList(); foreach (var outItem in outList) { //当前条已出部分金额 decimal money = 0; //当前还需出的数量 decimal qty = outItem.Qty; foreach (var inItem in inList) { //如果当前这一条够出库,那么结束去计算价格 if (inItem.Qty > qty) { money = money + inItem.Price * qty; //更新入库表 inItem.Qty = inItem.Qty - qty; break; } else { qty = qty - inItem.Qty; money = money + (inItem.Price * inItem.Qty); //更新入库表 inItem.Qty = 0; } } //计算出货价格 outItem.Price = money / outItem.Qty; } return outList; } ///
/// 后进先出算法 /// ///
入库记录(一个周期内) ///
出库记录(一个周期内) ///
InventoryPrice为结果价格
public List
ComputerPriceFOFI (List
inRecord, List
outRecord) { //排序 var inList = (from o in inRecord orderby o.CDate descending select o).ToList(); var outList = (from o in outRecord orderby o.CDate select o).ToList(); foreach (var outItem in outList) { //当前条已出部分金额 decimal money = 0; //当前还需出的数量 decimal qty = outItem.Qty; foreach (var inItem in inList) { //如果当前这一条够出库,那么结束去计算价格 if (inItem.Qty > qty) { money = money + inItem.Price * qty; //更新入库表 inItem.Qty = inItem.Qty - qty; break; } else { qty = qty - inItem.Qty; money = money + (inItem.Price * inItem.Qty); //更新入库表 inItem.Qty = 0; } } //计算出货价格 outItem.Price = money / outItem.Qty; } return outList; } ///
/// 加权平均算法 /// ///
入库记录(一个周期内) ///
出库记录(一个周期内) ///
上期价格 ///
上期数量 ///
public List
ComputerPriceBalance (List
inRecord, List
outRecord, decimal prePrice, decimal preQty) { decimal money = 0; decimal qty = 0; foreach (var inItem in inRecord) { money = money + inItem.Price * inItem.Qty; qty = qty + inItem.Qty; } decimal price = (money + prePrice * preQty) / (qty + preQty); foreach (var outItem in outRecord) { outItem.Price = price; } return outRecord; } ///
/// 移动加权平均算法 /// ///
入库记录(一个周期内) ///
出库记录(一个周期内) ///
上期价格 ///
上期数量 ///
public List
ComputerPriceTrack (List
inRecord, List
outRecord, decimal prePrice, decimal preQty, DateTime preDate) { //排序 var outList = (from o in outRecord orderby o.CDate select o).ToList(); List
preDetail_IDs = new List
(); foreach (var outItem in outList) { //取出比当前出库记录要早的入库记录,并且排除已经结算的记录 var inList = (from o in inRecord where o.CDate <= outItem.CDate && !preDetail_IDs.Contains(o.Detail_ID) orderby o.CDate select o).ToList(); decimal money = 0; decimal qty = 0; foreach (var inItem in inList) { money = money + inItem.Price * inItem.Qty; qty = qty + inItem.Qty; preDetail_IDs.Add(inItem.Detail_ID); } outItem.Price = (money + prePrice * preQty) / (qty + preQty); //修改上期价格和数量 prePrice = outItem.Price; preQty = qty - outItem.Qty; } return outList; }

 

转载于:https://www.cnblogs.com/starksoft/p/3937298.html

你可能感兴趣的文章
7月第3周中国.NET域名净增3792个 美国净减1.3万个
查看>>
8月第1周全球域名商TOP15: DNSPod升至第八名
查看>>
全球域名商域名增量Top15:万网第三 新增3,748个
查看>>
JAVA报表软件比较之报表设计器篇
查看>>
Zeppelin on spark
查看>>
kali之ARP欺骗
查看>>
程序员软件开发的酸甜苦辣:漫画图赏
查看>>
Android的四种基本布局
查看>>
性能测试流程
查看>>
Linux 同步小命令
查看>>
HeadFirst系列出版日期
查看>>
mogilefs的存储节点由dead转为alive
查看>>
WebCollector 2.x教程列表
查看>>
Linux学习笔记九
查看>>
linux将程序放到后台执行
查看>>
Jar命令使用
查看>>
webdriver+python下拉框的处理方式
查看>>
jquery小片段
查看>>
浏览上传
查看>>
css3之呼吸灯效果
查看>>