你以为Odoo很简单?

Administrator

前言

仅以此文献给一直坚持着的Odooer:

  • 新晋Odoo用户,以谦虚的姿态来使用、学习Odoo

  • Odoo老兵,以专家的目标来要求自己提升

 前几天,朋友让我给Odoo增加点功能,他说他在创建采购订单添加产品明细的时候,不能通过barcode来过滤产品。

听他这样说,我心中是有一些疑惑的。迅速回忆以前做的项目,想起来自己拿扫码枪扫产品时的场景,难道朋友的系统出问题了?

我答应帮着看一下。

最终,这件事的结论让我萌生写这样一篇文章的年头。

- - - - - - - - - - - - - - - - -调查结果分割线 - - - - - - - - - - - - - - - - - -

1、我的系统是好用的

首先,我在系统中找了一个产品,条形码为999888,在采购单明细中,输入999能搜索到这个产品,输入98也是可以的。

2、朋友的系统确实不好用的

找了一个产品,输入条码的其中几个字符,找不到产品。这一步测试比较麻烦的,系统中有上万个产品,要排除名称中含有这几个字符的情况,你懂的。

做这样的一个调查是一般人通常会采取的方式,花费个几分钟。这个时候,出现这个结果,有些人可能怀疑自己的操作,如果自己时间充裕可以再多做几次,也可以寻求其他人帮忙证实一下。

总之,事情就是这样的结果。

- - - - - - - - - - - - - - - - -真相分割线 - - - - - - - - - - - - - - - - - -

真相,源于代码。

1、这个地方(采购订单明细产品字段的过滤)的搜索功能源于product.product模型的name_search方法,操作符为ilike

2、对于用户输入的条件A,Odoo首先是要判断条件A是否等于产品的内部参考(即Default code),如果不是的话,系统再判断条件A是否等于产品的条形码。注意:是等于!所以我们输入部分条形码是找不到产品的。

3、如果第2步的等号判断没有结果的话,系统会判断条件A是否ilike产品的内部参考,限量100个。如果找到的数量不够100个,则系统判断条件A是否ilike产品的名称,当然ilike名称产生的结果要不在ilike内部参考的结果之内。

4、如果上面还是没有结果,系统会判断条件A是否包含被[]包围的字符串,如果有的话,系统会判断方括号内的字符串是否等于内部参考

5、如果还没有结果,系统会检索在采购订单上选择的供应商所卖的产品中是否有名称和代码有ilike条件A的,这是最后的尝试!

看到了吗?在采购订单中添加明细时检索个产品而已,我想很多人都没有去深究系统是以一个什么样的逻辑来搜索的吧?


最后,送大家一首黄小狐的歌:没那么简单,就能找到顺手的软件。尤其是在,经历了那么多的失败。


留下评论

你应该 登入 张贴评论