请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

悟语

注册会员

1

主题

3

帖子

34

积分

注册会员

积分
34
  • 178

    金币

  • 1

    主题

  • 3

    帖子

最新发帖

[已处理] 按批次出库问题

悟语
注册会员   /  发表于:2025-1-4 21:52  /   查看:101  /  回复:4
1金币
商品A第一次购入4件,单价30元;第二次购入5件,单价35元;现在需要出库商品A6件,按照FIFO的原则,如何进行自动出库,生成出库明细

4 个回复

倒序浏览
stranger
银牌会员   /  发表于:2025-1-4 22:07:37
沙发
那就根据采购入库的时间作为判断,先入先出咯
回复 使用道具 举报
悟语
注册会员   /  发表于:2025-1-4 22:17:25
板凳
stranger 发表于 2025-1-4 22:07
那就根据采购入库的时间作为判断,先入先出咯

可以详细说一下这个实现逻辑吗?
回复 使用道具 举报
amtath悬赏达人认证 活字格认证
论坛元老   /  发表于:2025-1-5 10:01:26
地板
本帖最后由 amtath 于 2025-1-5 10:05 编辑

原理理解
先进先出(FIFO)算法是一种存货计价方法,它基于先购入的存货先发出的假设。在库存管理系统中,当有出库需求时,按照商品购入的时间顺序来分配出库的商品。
具体算法步骤
步骤一:确定初始库存信息
记录每次购入商品的数量和单价。在这个例子中,有两次购入记录,第一次购入 4 件,单价 30 元;第二次购入 5 件,单价 35 元。
步骤二:处理出库请求
首先检查最早购入批次的商品数量是否满足出库需求。在这里,出库需求是 6 件。最早购入的是第一次的 4 件商品,因为 4 < 6,所以这 4 件全部出库。
计算这 4 件商品的金额,即数量乘以单价120元。
然后,计算还需要出库的数量,用总的出库需求数量减去已经从最早批次出库的数量,即件。
接着从下一个最早购入批次(第二次购入)中取出剩下的 2 件商品。
计算这 2 件商品的金额,元。
步骤三:生成出库明细
将每次出库的批次、数量、单价和金额小计记录下来。第一次购入批次出库 4 件,单价 30元,金额小计120 元;第二次购入批次出库 2 件,单价 35 元,金额小计 70 元。
最后可以汇总计算总的出库数量和金额,总的出库数量为 6 件,总的出库金额为190元。
  1. // 模拟库存,每个元素是一个包含购入数量和单价的对象
  2. const inventory = [
  3.     { quantity: 4, unit_price: 30 },
  4.     { quantity: 5, unit_price: 35 }
  5. ];

  6. // 定义出库数量
  7. const outQuantity = 6;

  8. // 用于记录出库明细的数组
  9. const outDetail = [];

  10. // 遍历库存,按照先进先出原则处理出库
  11. for (const stock of inventory) {
  12.     if (stock.quantity >= outQuantity) {
  13.         // 如果当前批次数量大于等于出库数量,全部从当前批次出库
  14.         outDetail.push({
  15.             batch: inventory.indexOf(stock) + 1,  // 批次编号,从1开始计数
  16.             quantity: outQuantity,
  17.             unit_price: stock.unit_price,
  18.             amount: outQuantity * stock.unit_price
  19.         });
  20.         break;
  21.     } else {
  22.         // 如果当前批次数量小于出库数量,先把当前批次全部出库
  23.         outDetail.push({
  24.             batch: inventory.indexOf(stock) + 1,  // 批次编号,从1开始计数
  25.             quantity: stock.quantity,
  26.             unit_price: stock.unit_price,
  27.             amount: stock.quantity * stock.unit_price
  28.         });
  29.         outQuantity -= stock.quantity;  // 更新剩余的出库数量
  30.     }
  31. }
复制代码



评分

参与人数 1金币 +5 收起 理由
Levi.Zhang + 5 赞一个!

查看全部评分

回复 使用道具 举报
Levi.Zhang
超级版主   /  发表于:2025-1-6 14:47:20
5#
感谢大佬的支持~
楼主可以参考上述方法思路实现哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部