目录
odoo14开发教程 1
1 前言 12
1.1 本书的环境基础 12
1.2 本书面向读者 12
2 安装odoo 13
2.1 版本 13
2.2 线上 13
2.2.1 代码示例版 13
2.2.2 SaaS 13
2.3 打包的安装程序 14
2.3.1 Windows 14
2.3.2 Linux 14
2.3.3 fedora 15
2.4 源码安装 16
2.4.1 windows 17
2.4.2 的Linux 19
2.4.3 苹果系统 21
2.5 docker 23
3 Pycharm开发环境配置 23
3.1 素材 23
3.2 如出现报错 23
3.3 配置pycharm开发环境 24
3.4 搭建绿色运行环境 28
3.4.1 Python版本绿色化 29
3.4.2 PostgreSQL免安装版配置 29
3.4.3 win32依赖组件 32
3.4.4 Pycharm开发配置 33
3.4.5 Python依赖安装 35
4 OCA 模块开发范式 36
4.1 简介 36
4.1.1 模块 36
4.1.2 版本号 36
4.1.3 迁移 37
4.1.4 目录 37
4.1.5 文件命名 37
4.1.6 安装挂钩 37
4.1.7 外部依赖 39
4.2 XML文件 40
4.2.1 格式 40
4.2.2 记录 40
4.2.3 视图 40
4.2.4 QWeb 41
4.2.5 命名xml_id 41
4.3 Python 42
4.3.1 PEP8选项 42
4.3.2 导入 42
4.3.3 语法 43
4.3.4 标识符 44
4.3.5 SQL 44
4.3.6 不要绕过ORM 46
4.3.7 模型 46
4.3.8 字段 48
4.3.9 例外情况 48
4.4 Javascript 48
4.5 CSS 48
4.6 测试 49
4.6.1 调查Travis测试失败 49
4.7 Git 49
4.7.1 提交消息 49
4.7.2 审查 50
4.8 Github 51
4.8.1 团队 51
4.8.2 存储库 51
4.8.3 问题 52
4.9 与Odoo指南的不同之处 52
4.9.1 模块结构 52
4.9.2 XML 52
4.9.3 Python 52
4.9.4 SQL 52
4.9.5 字段 52
4.9.6 Git 53
4.10 Backporting Odoo模块 53
5 电子邮件网关 54
5.1 先决条件 54
5.2 对于后缀 54
5.3 访问端口 54
6 模块开发 54
6.1 模块的组成 55
6.1.1 模块结构 55
6.2 对象关系映射 58
6.3 模型字段 58
6.3.1 基本字段 58
6.3.2 简单字段 58
6.3.3 保留字段 59
6.3.4 特殊字段 59
6.4 数据文件 59
6.5 基本视图 60
6.5.1 通用视图声明 60
6.5.2 列表视图 61
6.5.3 表单视图 61
6.5.4 搜索视图 63
6.6 动作和菜单 64
6.7 关系字段 65
6.7.1 Many2one(other_model, ondelete='set null') 66
6.7.2 Many2many(other_model) 66
6.7.3 反向的one2many关系 67
6.7.4 多个Many2many关系 68
6.8 继承 68
6.8.1 模型继承 68
6.8.2 视图继承 69
6.9 domain条件 72
6.9.1 Domain的写法 73
6.9.2 Domain的使用场景 74
6.10 计算字段和默认值 76
6.10.1 计算字段 76
6.10.2 默认值 77
6.10.3 onchange 78
6.11 模型约束 79
6.11.1 添加Python约束 79
6.11.2 添加SQL约束 79
6.12 高级视图 80
6.12.1 树视图 80
6.12.2 日历 81
6.12.3 搜索视图 83
6.12.4 甘特图 84
6.12.5 图表视图 85
6.12.6 看板 86
6.13 访问控制机制 87
6.13.1 四种权限级别(粒度越来越细): 88
6.13.2 访问权限 90
6.13.3 记录规则 91
6.14 向导 92
6.14.1 启动向导 93
6.15 国际化 95
6.15.1 添加翻译模块 95
6.16 报表 96
6.16.1 打印报表 96
6.17 仪表板 98
6.17.1 定义仪表板 98
6.18 网页服务 99
6.18.1 XML-RPC库 100
6.18.2 向客户端添加新服务 100
6.18.3 JSON-RPC库 101
6.18.4 从XML-RPC改为JSON-RPC 101
7 主题开发 102
7.1 从常见的CMS到odoo 102
7.2 odoo默认主题结构 103
7.2.1 odoo的XML文件概述 106
7.3 更新主题 106
7.4 创建一个主题模块 107
7.4.1 编辑__manifest__.py 108
7.5 安装主题 108
7.5.1 扩展默认标记 109
7.5.2 选项组属性 116
7.5.3 默认选项方法 116
7.5.4 Javascript选项 118
7.6 布局 120
7.6.1 媒体 120
7.7 SEO最佳实践 121
7.7.1 扩展内容插入 121
7.7.2 页面分割 122
7.7.3 描述页面 123
8 web客户端开发 124
8.1 一个简单的模块 124
8.2 odoo JavaScript模块 126
8.2.1 类 126
8.3 Widget 基础知识 128
8.3.1 第一个 Widget 128
8.3.2 显示内容 128
8.3.3 Widget 父级和子级 130
8.3.4 销毁 Widget 130
8.4 使用QWeb 131
8.4.1 QWeb参数 132
8.5 输出 133
8.6 Widget 助手 136
8.6.1 Widget的jQuery选择器 136
8.6.2 更简单的DOM事件绑定 136
8.7 窗口 Widget 事件和属性 137
8.7.1 活动 137
8.7.2 属性 138
8.7.3 代码示例 Widget 属性和事件 139
8.7.4 修改现有的 Widget 和类 140
8.7.5 翻译 140
8.8 与odoo服务通信 141
8.8.1 通信模型 141
8.8.2 CompoundContext 142
8.8.3 查询 143
8.8.4 代码示例宠物玩具清单 144
8.9 现有的Web组件 146
8.9.1 动作管理 146
8.9.2 客户端动作 147
8.9.3 视图的体系结构 148
8.9.4 表单视图字段 148
8.9.5 表单视图自定义小组件 153
9 OWL开发指南 155
9.1 owl概述 155
9.2 创建一个owl项目 157
9.2.1 总览 157
9.2.2 简单的html文件 157
9.2.3 使用静态服务 157
9.2.4 标准Javascript项目 159
9.3 如何测试 162
9.3.1 总览 162
9.3.2 单元测试 162
9.4 如何调试Owl应用程序 163
9.5 如何编写单个文件组件 164
10 OWL教程-待办事项 165
10.1 设置项目 165
10.2 添加第一个组件 165
10.3 显示任务列表 165
10.4 布局:基本的CSS 165
10.5 提取任务作为子组件 165
10.6 添加任务(第1部分) 165
10.7 添加任务(第2部分) 165
10.8 切换任务 165
10.9 删除任务 165
10.10 使用商店 165
10.11 在本地存储中保存任务 165
10.12 过滤任务 165
10.13 最后的接触 165
10.14 最终代码 165
11 建立网站 165
11.1 创建网站模块 165
11.1.1 定义数据模型 167
11.1.2 代码示例数据 168
11.1.3 访问数据 168
11.2 网站支持 169
11.3 网址和路由 170
11.4 添加字段 172
11.5 管理与ERP集成 173
11.5.1 对odoo模型管理简要介绍 173
11.5.2 在odoo管理中编辑 173
11.6 模型之间的关系 174
11.6.1 讨论和通知 176
11.6.2 销售课程 176
11.7 改变现有的视图 178
12 APP开发 180
12.1 玩家们 180
12.1.1 积分 181
12.1.2 “正常”的服务流程 181
12.1.3 积分不足 182
12.2 建立您的服务 182
12.2.1 在odoo上注册服务 183
12.3 信用包 184
12.4 odoo App 184
12.5 服务 186
12.6 JSON-RPC2 Transaction API 189
12.6.1 授权 189
12.6.2 捕获 190
12.6.3 取消 190
12.6.4 类型 191
12.6.5 升级 192
13 创建本地化 193
13.1 构建本地化模块 193
13.2 配置我自己的会计科目表? 193
13.2.1 在会计科目表中添加新帐户 194
13.2.2 在会计科目表中添加新税 195
13.2.3 在会计科目表中添加新的财务状况 197
13.2.4 将属性添加到会计科目表 197
13.3 如何创建新的动态报告? 198
14 开发实战 199
14.1 环境准备 199
14.1.1 基本准备 199
14.1.2 依赖管理器 201
14.1.3 获取 Odoo 源码 201
14.1.4 安装依赖 202
14.1.5 运行 Odoo 202
14.2 创建模块 203
14.3 结构说明 203
14.4 模型 205
14.5 用户组权限 206
14.6 创建菜单 209
14.7 创建视图 211
14.8 源码下载 212
14.9 选择字段 212
14.10 日期字段 213
14.11 计算字段与视图装饰器 214
14.12 关联字段 216
14.13 视图 218
14.14 搜索字段 220
14.15 过滤器 221
14.16 分组 223
14.17 窗口动作 224
14.18 服务器动作 225
14.19 URL 动作 226
14.20 客户端动作 227
14.21 报表动作 227
14.22 用户组 227
14.23 记录集权限 229
14.24 开发心得 230
14.25 菜单隐藏 231
15 开发技巧 232
15.1 小数精度 232
15.2 cmdline批量升级已安装模块 232
15.3 git 重置具体修改的文件 232
15.4 单据序列号设置 232
15.5 视图使用readonly无法存值 233
15.6 Tree视图点击添加不弹窗只增加一行 233
15.7 字段位置调整 234
15.8 对form表单数字列求和 234
15.9 创建及返回视图 235
15.10 tree视图增加搜索,筛选,分组 238
15.11 订单明细行调整顺序 238
15.12 onchange 改变field的domain 239
15.13 ODOO中数据库视图的支持 239
15.14 自定义报表 241
15.15 ODOO通过JS写入模型的两种方法 246
15.16 ODOO中JS的继承有什么用? 247
15.17 qweb报表python后台新增属性 248
15.18 qewb对循环的变量求和 251
15.19 qweb指定pdf长宽 251
15.20 对list多选分页打印问题 252
15.21 自定义css 254
15.22 pdf表头与数据重合 256
15.23 web加载sql视图 257
15.24 对空wizard赋值 259
15.25 自定义导出excel 260
16 迁移模块 261
16.1 迁移模块到odoo13 262
16.2 迁移模块到odoo14 263
17 账套升级 264
18 参考文档 265