今天给大家读的是2017年12月1日关于计划任务 ir.cron 的一次提交。
改进原因:
起源于 763d71 (我们也有读过ODOO COMMIT 每日一读/6 - 763D71
)这次提交:如果系统中有 to x 状态(将要安装的,将要移除的,将要升级的)的模块计划任务就不执行。初看感觉没什么“毛病”,但是如果这个 to x 状态模块因为某些原因,更新/安装/卸载失败,他们就永远处在 to x 的“僵尸”状态,那么计划任务也永远停着。
Odoo最近的一个Issue
中有很有 趣的关于Python浮点数的讨论。
问题的起点是说使用Odoo提供的float_round函数对浮点数做舍入操作得到的结果并不 正确,比如:
今天我们来看下odoo10中的最新 commit- f075b5
改进内容
在创建费用报告时,对费用的支付方式进行判断。
如果混用了由员工支付与由公司支付这两个支付方式。无法创建该报告并发出警告

今天我们来看下odoo10关于定时任务的一个commit - 763d71.
改进内容
对ir_cron.py中的_process_jobs方法新增了逻辑判断,当模块处于更新,安装,或者删除状态时,不进行自动任务的运行。
PostgreSQL 10.0最近发布了,Odoo对该版本的数据库是完全支持的,不过最近发现了一个 问题- issue 20269
,这个问题跟Odoo的序列号相关 。V11分支中的提交: 56588e8
解决了该问题。
今天给大家读的是2017年11月9日关于库存模块关于产品、重订购规则的一次提交。
改进结果:
修改产品类型时候如果该产品关联了重订购规则,不允许把产品类型修改为“服务”或“消耗品”。
今天我们来介绍下odoo10代码中11月7日的提交3b43dd。
改进结果
这个提交是对销售线索中的复制方法进行了修改.
@api.multi
def copy(self, default=None):
self.ensure_one()
# set default value in context, if not already set (Put stage to 'new' stage)
context = dict(self._context)
context.setdefault('default_type', self.type)
context.setdefault('default_team_id', self.team_id.id)
# Set date_open to today if it is an opp
default = default or {}
default['date_open'] = fields.Datetime.now() if self.type == 'opportunity' else False
# +++++++++++++++++
# Do not assign to an archived user
if not self.user_id.active:
default['user_id'] = False
# ++++++++++++++++++
return super(Lead, self.with_context(context)).copy(default=default)
3b43dd新增代码用+++++包裹.查看新增的代码,我们发现在新的copy方法中.对销售线索的user_id 进行了判断,若当前销售线索中的用户已经不存在了.在复制的过程中就把user_id字段设为False.
动作(Actions)定义了系统响应用户操作的具体行为:比如登陆,点击按钮,选择一个发票单 据,等等。
Actions 可以存储在数据库中或直接以字典(dictionaries)形式返回,比如按钮所运行的函 数。所有的actions有两个必须的属性:
今天我们来介绍下关于odoo10的提交:08ab28
改进结果:
这个提交是对销售费用中的expense_policy字段的值增加了onchange方法以便动态的更改该字段的值
本文介绍了一些Odoo模块版本升级的常用技巧和脚本。这些脚本能大大的提高模块升级的效率。 原文请参见:Module Migration
代码回顾
下列的命令用来评估模块版本迁移大致的工作量,执行命令后可以一次显示所涉模块的所有源码。