你所了解的Odoo都是错误的!1. 关于审批
关于标题
其实把Odoo换成“一切”也可以。因为正如李普曼在《Public Opinion》里所说:“多数情况下我们并不是先理解后定义,而是先定义后理解。我们往往只能看到自己所熟悉、所喜欢的景象,那些与之相抵触的事实则会视而不见,而这自然就构成了我们认知的“刻板印象”(Sterotype)。当然我们这里毕竟不是来探讨哲学,社会学命题的,而是想跟大家聊聊Odoo相关的一些“刻板印象”。
共 73 篇文章
其实把Odoo换成“一切”也可以。因为正如李普曼在《Public Opinion》里所说:“多数情况下我们并不是先理解后定义,而是先定义后理解。我们往往只能看到自己所熟悉、所喜欢的景象,那些与之相抵触的事实则会视而不见,而这自然就构成了我们认知的“刻板印象”(Sterotype)。当然我们这里毕竟不是来探讨哲学,社会学命题的,而是想跟大家聊聊Odoo相关的一些“刻板印象”。
十月四号,Odoo公司发布了最新的Odoo12版本。首先来看看这次发布会上的亮眼功能。
Odoo系统中主要包含下面三类按钮, 见下图:
普通按钮
布尔按钮: 参见之前的介绍
动态按钮
[!NOTE] 也有人将Odoo的Smart Button直译为“智能按钮”的,感觉稍显夸张。另外,布尔按钮实际上也是一种特殊的动态按钮。
Odoo中有很多层级关系的数据,比如:产品的分类,多层级的BOM,项目中的任务及其子任务等等。在数据库中快速存储更新这些有层级关系的数据,并能实现高效的查询是一个颇具挑战的任务。
上图中归档/有效转换按钮就是一个被称作布尔按钮的控件。这个控件对应一个布尔类型的字段,所以被称作布尔按钮。 我们可以用下面的语法来定义这个按钮:
假设有一个需求希望在订单上选择客户时显示该客户的可用信用额度。很显然我们可以继承sale.order对象,增加可用信用额度的计算字段:
class SaleOrder(models.Model):
_inherit = 'sale.order'
available_credit = fields.Float(string=u'可用信用额度', compute='_get_available_credit')
@api.depends('partner_id')
def _get_available_credit(self):
....
这个需求很简单。但是,如果对销售发票也有同样的需求呢?我们当然可以把上面的代码拷贝到account.invoice的继承对象中。
Python GIL
static PyThread_type_lock interpreter_lock = 0; /* This is the GIL */
上面这行代码位于CPython 2.7源码的ceval.c文件中。Guido van Rossum在2003年添加了这个注释:“这就是那个GIL鬼”,而这行代码则要追溯到1997年了。在Unix系统上PyThread_type_lock是标准C语言库的锁mutex_t的别名。它在Python解释器运行时初始化:
我们知道Odoo是通过wkhtmltopdf
工具将HTML格式的报表转换为pdf报表。所以,如果系统中没有安装该工具,则在打印报表时会提示该工具缺失并只能显示HTML格式的报表。 安装wkhtmltopdf很简单,但是如果您用的是Debian/Ubuntu系统,请勿用下面的命令安装:
在上一篇的odoo commit每日一读/10-a9a189 中,我们提到了product中的select_seller()函数,这个函数使用在哪里的呢?
今天我们来谈谈a9a189这个commit。这个提交是对product.py中的select_seller函数的改进。
product的select_seller()函数中的date获取方式由于时区的 差异会存在日期的延迟。需求质量在计量单位不一致下进行转换后产生的浮点数近似值会影响判断。