单个产品出库扣减库存

//单个产品出库扣减库存
public function reduceNumber()
{$stockList = [];for($i=1; $i<4; $i++){  //随机生成库存数据$stockList[] = ['id' => $i,'number' => (int) ($i * 20 / 3),        //库存数据'in_time' => 1734568 . rand(100, 999),  //批次时间戳'name' => '产品名',   //产品名//'product_code' => 'go31415926' //可以根据产品编码确定是同一商品];}$stockOutData = ['number' => mt_rand(20, 60),    //随机出库数量 [20, 60]'name' => '产品名'];//排序库存数据:根据时间升序,用于出库,较早的商品先出库$times= array_column($stockList, 'in_time');array_multisort($times, SORT_ASC, $stockList);list($updateStock, $sockOutList) = $this->processStock($stockOutData, $stockList);$this->myPrint($stockList, $stockOutData, $updateStock, $sockOutList);die();
}//扣减库存
public function processStock($stockOutData, $stockList)
{$updateStock = $sockOutList = [];//判断总库存够不够$number = $stockOutData['number'];  //需要出库的数量$totalNumber = array_sum(array_column($stockList, 'number'));   //总库存数量if($number > $totalNumber){exit("库存仅剩 [ {$totalNumber} ] 不足 [ {$number} ] ");//return [$updateStock, $sockOutList];}//自动出库:循环处理每个批次的numberforeach ($stockList as $value){if($number <= 0){   //库存扣减完成,结束循环break;}$stockId = $value['id'];$stockNumber = $value['number'];    //单个批次的库存if($stockNumber <= $number){        //该批次库存全部取出$productNum = 0;$outNumber = $stockNumber;}else{  //该批次库存部分取出$productNum = $stockNumber-$number;$outNumber = $number;}//扣减后的库存数据$updateStock[] = ['id' => $stockId,'number' => $productNum    //还剩多少库存];//出库记录$sockOutList[] = ['stock_id' => $stockId,     //库存ID'name' => $value['name'],   //产品名'out_number' => $outNumber  //出库数量];$number -= $outNumber;  //待出库 = 待出库 - 已出库}return [$updateStock, $sockOutList];
}//打印结果
public function myPrint($stockList, $stockOutData, $updateStock, $sockOutList)
{echo '<pre>【库存表数据】' . PHP_EOL;print_r($stockList);echo PHP_EOL . '【要出库的数据】' . PHP_EOL;print_r($stockOutData);echo PHP_EOL . '【扣减后的库存数据】' . PHP_EOL;print_r($updateStock);echo PHP_EOL . '【出库记录数据】' . PHP_EOL;print_r($sockOutList);echo '</pre>';
}

单个产品出库扣减库存相关推荐

  1. 电商扣减库存_以电商为例 | B端产品经理,怎么做好库存系统设计

    库存,是仓库中实际储存的货物.可以分两类:一类是生产库存,即直接消耗物资的基层企业.事业的库存物资,它是为了保证企业.事业单位所消耗的物资能够不间断地供应而储存的:一类是流通库存,即生产企业的原材料或 ...

  2. 电商扣减库存_经验分享:电商库存体系设计笔记

    最近在做仓库库存管理相关的项目,清晰地了解了仓库是如何管理库存的,并且整清楚了各个系统的库存是如何交互的,整理了下分享给大家. 库存是什么 这里是百度百科给出的解释: "库存(invento ...

  3. 电商扣减库存_电商仓库管理的难点与解决方案

    在我国,目前有很多小型电商企业,其仓库面积都在1000平以内,由于前期对营销的专注,对仓库的忽视,包括对设施设备的投入,导致了今天仓库工作效率低下,库存混乱,运作成本高等诸多问题,以下我们来细细诉说. ...

  4. 电商扣减库存_电商新零售库存分层模型介绍

    01 电商新零售库存分层 梳理完中央库存的逻辑以后,下一步需要整理上下游的库存交互.在整个电商体系中,库存会存在于供应链的多个业务环节中,按照系统的分工不同,小Q将库存抽象为两类三层: 1.两类库存: ...

  5. 电商扣减库存_库存管理:看懂库存扣减方式,至少不会卖错货

    在电商后台库存管理系统中,看懂库存扣减方式,是很重要的,最起码可以避免不要卖错货. 在电商后台库存管理系统中,影响库存的行为,主要是入库和出库,出入库的主要内容可分为货位.调拨业务.盘点业务. 1)货 ...

  6. 电商扣减库存_做采购的您怎么能不懂电商仓储管理呢?

    在我国,目前有很多小型电商企业,其仓库面积都在1000平以内,由于前期对营销的专注,对仓库的忽视,包括对设施设备的投入,导致了今天仓库工作效率低下,库存混乱,运作成本高等诸多问题,以下我们来细细诉说. ...

  7. 电商扣减库存_电商后台:商品库存管理之批次管理

    本文主要对电商平台的库存系统中的批次管理进行了详细的阐述,一起来看看~ 一.批次管理 库存,是电商企业不能回避的问题,如何让仓库商品能够有序的流转,是电商供应链管理后台的重中之重,也是电商企业的命门. ...

  8. 电商扣减库存_电商平台仓库管理系统究竟有何功能?

    仓库管理系统能有效控制并跟踪仓库业务的物流和成本管理全过程,实现完善的企业仓储信息管理.本文介绍了仓库管理的概念,商品与仓库的联系,商品发货的调度中心以及其他附加功能,与大家分享! 仓库管理系统(Wa ...

  9. 电商扣减库存_电商之购物车

    我从刚开始做产品起,就只想做电商,对医疗.教育类的都不太感兴趣.公司转型做电商,整个电商模块重构,有幸负责购物流程优化,之后支付中心和订单中心都会相继优化,今天先来讲购物车. 一.购物车目的 任何产品 ...

  10. 电商扣减库存_电商库存体系设计

    库存是什么? 百度百科:库存(inventory)是以支持生产,维护,操作和客户服务为目的而存储的各种物料,包括原材料和在制品,维修件和生产消耗品,成品和备件等: 狭义:"仓库里存放东西&q ...

最新文章

  1. 开发的AI程序员“抄”代码,被骂惨的GitHub到底冤不冤?
  2. linux 在文本模式下(命令模式)下,中文是乱码,如何解决?
  3. 【计算广告】不懂这些专业术语别说你懂广告
  4. MySQL 8.0 压缩包版安装方法
  5. 从逻辑回归到最大熵模型
  6. Go 函数的 Map 型参数,会发生扩容后指向不同底层内存的事儿吗?
  7. 优必选能开放软硬件源代码吗_四个项目供父母教孩子如何使用开放式硬件和电子产品...
  8. eclipse cdt无法调试_eclipse导入Web项目并且部署到tomcat(超详细)
  9. Linux操作系统中vi常见用法和相关配置
  10. 修复 VM Player 断网问题 20121215T1402
  11. 倍福--和威伦触摸屏通信
  12. 可控硅型号怎样识别_可控硅的鉴别
  13. 你所不知道的BGP知识,Peering 和IP-Transit.
  14. 用python编写缠论中枢_缠论的笔、线段、中枢以及MACD背离分析实现
  15. 20款华丽的几何形状字体【免费下载】
  16. Day 05 Dict字典
  17. 美国国防部机密文件销毁算法
  18. 常用库函数的学习笔记
  19. numpy.corrcoef()函数讲解
  20. 线性代数中特殊行列式的计算

热门文章

  1. python中https请求的封装_python接口自动化9-https请求(SSL)
  2. input在vue中如何一次性上传多张图片_小程序图片上传,存储,获取,显示
  3. Git merge分支到master
  4. Intellij mac快捷键
  5. 数据结构 详解(C++)
  6. NYOJ201-作业题(最长升降子序列)
  7. 求数列的最大子段和java_十大经典排序算法(Java版本)
  8. php scrscriptipt,xss跨站脚本攻击 (初级-中级-高级)
  9. xmind试用模式会过期吗_汽车发动机机油「保质期」概念解析:机油真的会过期吗?...
  10. linux 更新目录时间戳,修改linux 文件的时间戳