就是我客户服务记录功能,因为是要不定期结账的,需要有一个记录 日期,项目或产品,客户名称,后面还要有是否结账和结账时间。
我还想要挂账表关联和库存能直接联动,挂账表上添加项目能自动出库。
我要修改出库的数据库来实现吗?
描述的功能比较像进销存系统中的应收/应付款管理
如果基于现在的进销存模块来配置的话,可以把销售出库表进行一些扩展。
或者创建建一个新的挂帐表来实现这些的功能。都需要编写少量代码。
详细操作可以参考OnceOA的相关教程,创建新表可以参考销售出库表,创建客户(1)与商品(2)的相关基本信息,并新建一个结帐时间字段:
点击显示可以打开命令行终端,查看输出的调试信息。
重启OnceOA Web Server后,可以看到编辑界面上的相关输入内容:
然后可以在流程中设置流程字段,并创建一个结帐的流程结点:
在过滤函数中输入更新库存和结帐时间的相关代码。
也可以在结帐后面添加一个“已结帐”的状态流程结点,过滤函数留空即可。
详细代码如下,这是以更新销售订单表为例,如果是新创建的表,需要将 's.order' 更改为新的表名:
async function checkout(orderInfo) { for (var i = 0; i < (orderInfo.items || []).length; i++) { let orderItem = orderInfo.items[i] let quantity = Number(orderItem.quantity) || 0 //订购数据小于1,忽略 if (quantity < 1) { continue } //检查商品是否存在 let itemInfo = (await oncedb.selectAsync('s.item', { id: orderItem.id }))[0] //打印调试信息 console.trace(itemInfo) if (!itemInfo) { throw new Error('商品不存在') } //更新并检查库存 let stock = Number(itemInfo.stock) || 0 stock -= quantity if (stock < 0) { throw new Error(`商品 ${itemInfo.name} 库存不足`) } //更新s.item商品表的库存 await oncedb.updateAsync('s.item', { id: orderItem.id, stock: stock }) } //所有库存更新后,再更新s.order销售表的出帐时间 await oncedb.updateAsync('s.order', { id: orderInfo.id, checkout: Date.now() }) }
在保存数据后就,出现结帐按钮,点击后会执行相应操作,如果库存不足会显示错误:
创建新表后可编辑 serp.main.js文件,将这个表加入到进销存菜单中,复制红框部分,将高亮部分改成你创建新的新表名:
编辑好后可重启OnceOA Web Server
描述的功能比较像进销存系统中的应收/应付款管理
如果基于现在的进销存模块来配置的话,可以把销售出库表进行一些扩展。
或者创建建一个新的挂帐表来实现这些的功能。都需要编写少量代码。
详细操作可以参考OnceOA的相关教程,创建新表可以参考销售出库表,创建客户(1)与商品(2)的相关基本信息,并新建一个结帐时间字段:
点击显示可以打开命令行终端,查看输出的调试信息。
重启OnceOA Web Server后,可以看到编辑界面上的相关输入内容:
然后可以在流程中设置流程字段,并创建一个结帐的流程结点:
在过滤函数中输入更新库存和结帐时间的相关代码。
也可以在结帐后面添加一个“已结帐”的状态流程结点,过滤函数留空即可。
详细代码如下,这是以更新销售订单表为例,如果是新创建的表,需要将 's.order' 更改为新的表名:
在保存数据后就,出现结帐按钮,点击后会执行相应操作,如果库存不足会显示错误:
创建新表后可编辑 serp.main.js文件,将这个表加入到进销存菜单中,复制红框部分,将高亮部分改成你创建新的新表名:
编辑好后可重启OnceOA Web Server