国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ERP產品價格成本計算的幾個方法(轉)

2019-11-17 02:56:59
字體:
來源:轉載
供稿:網友

ERP產品價格成本計算的幾個方法(轉)

一般財務計算產品價格又很多方法,我這里做了幾個供參考,實體屬性主要是編號、數量、價格等,這里就不列出了。
/// <summary> /// 先進先出算法 /// </summary> /// <param name="inRecord">入庫記錄(一個周期內)</param> /// <param name="outRecord">出庫記錄(一個周期內)</param> /// <returns>InventoryPRice為結果價格</returns> public List<BaseStock> ComputerPriceFIFO     (List<BaseStock> inRecord, List<BaseStock> 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; }  /// <summary> /// 后進先出算法 /// </summary> /// <param name="inRecord">入庫記錄(一個周期內)</param> /// <param name="outRecord">出庫記錄(一個周期內)</param> /// <returns>InventoryPrice為結果價格</returns> public List<BaseStock> ComputerPriceFOFI     (List<BaseStock> inRecord, List<BaseStock> 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; }  /// <summary> /// 加權平均算法 /// </summary> /// <param name="inRecord">入庫記錄(一個周期內)</param> /// <param name="outRecord">出庫記錄(一個周期內)</param> /// <param name="prePrice">上期價格</param> /// <param name="preQty">上期數量</param> /// <returns></returns> public List<BaseStock> ComputerPriceBalance     (List<BaseStock> inRecord, List<BaseStock> 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; }  /// <summary> /// 移動加權平均算法 /// </summary> /// <param name="inRecord">入庫記錄(一個周期內)</param> /// <param name="outRecord">出庫記錄(一個周期內)</param> /// <param name="prePrice">上期價格</param> /// <param name="preQty">上期數量</param> /// <returns></returns> public List<BaseStock> ComputerPriceTrack     (List<BaseStock> inRecord, List<BaseStock> outRecord,     decimal prePrice, decimal preQty, DateTime preDate) {     //排序     var outList = (from o in outRecord                    orderby o.CDate                    select o).ToList();       List<Guid> preDetail_IDs = new List<Guid>();     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; }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 依兰县| 皮山县| 扎赉特旗| 砚山县| 分宜县| 普兰县| 杭锦旗| 内江市| 临邑县| 菏泽市| 鹿邑县| 英吉沙县| 金山区| 远安县| 宁强县| 金山区| 昌平区| 连山| 梅河口市| 韶山市| 长乐市| 孟连| 阳新县| 江川县| 全椒县| 开鲁县| 西宁市| 行唐县| 永仁县| 乌鲁木齐县| 巴楚县| 禹城市| 甘南县| 阿巴嘎旗| 长垣县| 吉首市| 怀远县| 当阳市| 沿河| 射洪县| 长春市|