白码ERP快速实现库存不足时自动生成采购单功能

2024-01-17 10:20

本文主要是介绍白码ERP快速实现库存不足时自动生成采购单功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

创建生产订单时,系统自动根据产品所需物料库存是否充足,如有物料库存不足,自动生成对应的采购订单;

前期准备:

需创建产品、物料、BOM、生产订单、生产订单明细、需求物料、采购订单、采购订单明细数据表,这里就用最简单的数据表进行演示,实际情况可按照需求添加属性;

产品

物料

BOM

生产订单

生产订单明细

需求物料

采购订单

采购订单明细数据表

数据表关系图

*数据表关系图

实现步骤:

新建一个功能,命名为“新建生产订单”;

①第一步,新增生产订单,使用新增数据的步骤,根据实际情况调整属性的设置;

新建生产订单功能

设置生产订单属性

②第二步,新增生产订单明细,使用新增集合的步骤,填写需要生产的产品和对应的生产量;

新增生产订单明细

使用

③第三步,计算第二步所有产品所需物料的合计值,录入到“需求物料”表里,这里涉及多条数据的合并去重,需要使用编程的步骤;

需求物料

需求物料步骤

async function runProcess($model = model, $plugin = plugin, $params) {let list = $params.list;//生产订单明细let orderid = $params.order._id;//生产订单let require_list = [];/*物料需求列表[{id:"物料id",demand:"总需求数量"}]*/for (let i = 0; i < list.length; i++) {//遍历生产订单明细collectionlet quantity = list[i]["5fd1cc619f7ebc78933d9a2b"];//计划生产量//查询产品的BOM列表let bom_list = await $plugin.data.queryData("5fd1cb6c04284278923ac9a7", {"5fd1cb8404284278923ac9a8": list[i]["5fd1cc429f7ebc78933d9a2a"]});for (let j = 0; j < bom_list.length; j++) {//遍历bom列表//查询物料需求列表中是否已有物料let itemIndex = require_list.findIndex((item) => {return item.id == bom_list[j]["5fd1cb9204284278923ac9a9"];});if (itemIndex > 0) {//物料重复,去重,增加数量require_list[itemIndex]["demand"] =  new Number(require_list[itemIndex]["demand"]) + new Number(quantity) * new Number(bom_list[j]["5fd1cb9804284278923ac9aa"]);//产品计划生产量*物料用量} else {//新物料require_list.push({id: bom_list[j]["5fd1cb9204284278923ac9a9"],//物料iddemand: new Number(quantity) * new Number(bom_list[j]["5fd1cb9804284278923ac9aa"])//产品计划生产量*物料用量});}}}for (let i = 0; i < require_list.length; i++) {//去重完后,录入到需求物料表let form = {"5fd1cc8d04284278923ac9ad":orderid,//关联生产订单"5fd1ccad9f7ebc78933d9a2c":require_list[i]["id"],//物料"5fd1ccb39f7ebc78933d9a2d":require_list[i]["demand"]//总需求数量};//保存数据await $plugin.data.saveData("5fd1cc8204284278923ac9ac",form);}}

④第四步,获取上一步新增的需求物料集合,使用获取集合的步骤;

获取物料

⑤第五步,计算缺货数,使用关联获取集合的步骤,获取第四步进行计算,其中缺货数属性设为物料的需求数量-库存数,且隐藏此步骤;

订单

⑥第六步,判断是否有需求物料的缺货数小于或等于0,使用条件判断的步骤;

订单

订单

⑦如果判断结果为假,即存在缺货数大于0的物料,则需要生成采购订单,第七步先获取缺货数大于0的物料需求列表,同样使用获取集合的步骤,但缺货数的属性需要设置筛选条件:缺货数大于0;

订单

订单

⑧第八步,新增采购订单,使用新增数据的步骤,且隐藏步骤;

订单

订单

⑨第九步,使用第七步数据进行新增采购订单的明细,使用新增集合的步骤,其中$关联需要设为第七步,即第九步新增的数据来源,物料和数量分别对应需求物料表的物料和缺货数,隐藏步骤;

订单

订单

订单

⑩功能已做好,测试结果如下

测试结果

这篇关于白码ERP快速实现库存不足时自动生成采购单功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/615707

相关文章

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n