红单数量为正数,红单列表数量显示正数,红单数据库中数量为正数原创
金蝶云社区-QB不可能那么萌
QB不可能那么萌
7人赞赏了该文章 656次浏览 未经作者许可,禁止转载编辑于2023年07月14日 16:06:40

在库存业务中,存在着一种反向业务,这种业务的单据也叫红单,这种单据的数量列表界面显示尾负数,打开编辑界面显示为红色的数字。

image.png

image.png

但是有的时候明明是红单,从列表界面看数量却是正数。

image.png

这是为什么呢?

先说个故事,大家就可以知道原因了。

小K是个快乐的打工人,一直负责星瀚产品的二开。有一天他接到一个需求,需要在销售出库单上加一个字段,并且添加一个按钮,在按钮点击的时候更新这个字段。小K一听,这个需求不是so easy。噼里啪啦3分钟搞定。

先加个扩展字段:

image.png

再加个按钮:

image.png

按钮绑个操作插件:

image.png

插件代码给新增的扩展字段赋值:

image.png

小测一下:

64b0f5f7354fc40001e6148a.gif

没毛病,666。提交,上线。

后来,用户反馈出现系统出现很奇怪的问题,销售出库明明红单,但是从列表看数量却是正的。

推了应收未核销数量也有问题。

小K心想,这个肯定不关我的事,我就更新了一个扩展字段,肯定是其他人写的bug。

但是有点心虚哈,再测试一下。

点击扩展功能前:

image.png

点击扩展功能后:

image.png

不对劲,有内鬼。image.png怎么点了扩展功能之后红单数量就变正了?

作为一个资深打工人,不能慌,赶紧调试一下代码。

获取到的对象里数量的值:

image.png

调用save后平台产生的sql:

image.png

原来如此,操作编辑界面功能时,获取到的对象是前台的对象,这个对象中数量是正数,当调用save方法的时候,和后台字段的值(负数)对比,发现发生了改变,生成update语句将数量更新为正数。

Emmm,为什么红单在编辑界面上的数量是正数呢?

image.png

再看看这个值,有负号吗?没有呀!需求就是要这样展示负数,所以在展示界面的时候,标品把对象中负号干掉了。此时做编辑界面操作的时候,取到的对象里的数量就是正的。

那怎么解决这个问题呢?

两个方案:

1、更新数据的时候重新查询一下数据,只查要更新的字段

image.png

2、通过sql直接更新

image.png

还好我技高一筹,问题解决。image.png

通过这个故事我们学到了什么?

SaveServiceHelper一定要慎用!

 

 


赞 7