【转载】odoo技术开发白皮书 前言

转载:http://book.odoomommy.com/

odoo技术开发白皮书

版本:0.15.2

前言

Odoo是什么

从传统意义上说,Odoo是一个由python编写的开源ERP软件;依据官方的解释,Odoo的功能已经超越了ERP的范畴,是一种企业级的应用套件的集合;从企业角度,这是一个可以根据自己业务灵活定制的宝石;从Odoo官方合作伙伴的角度,这是一个星星之火可以燎原的金矿;从开发人员的角度,这是一个高度集成,可以快速开发业务的开发框架。

为什么叫Odoo

官方博客中有一段很有意思的段落,大意是odoo官方研究了全球顶尖的多个公司,然后发现他们的名字中都或多或少的包含了若干个O,官方也想借此寓意,因此起名为Odoo。另外的一种解释为,On Demands Open Object(按需定制,Open Object是Odoo底层的开发框架对象,借助此框架你甚至可以抛开既有模块开发完全独立的新应用)。

Odoo的历史大概可以分为三个时期,伴随着Odoo的三次改名。最早可以追溯到2004年,那时候还叫TinyERP(1.0版本),创始人Fabian在自家企业使用中开发而成,后来随着发展壮大,官方改名为OpenERP。版本也来到7.0,软件架构也有最初的C/S模式改为了B/S架构。到了8.0时代,官方再次改名为Odoo,也就是我们现在看到的版本。

odoo能做什么

笔者接触odoo已经有四五年的时间了,从最初的OpenERP 7到现在的odoo 15,中间有过一段时间的远离,现在机缘巧合下又重新出发。Odoo是一个优秀的开源ERP框架,有这诸多的优点,部署简单、开发迅速、可扩展性好,当然一个事物有有点就必定会有缺点,缺点就是语言小众,资料奇少,最重要的一点也是最致命的一点就是它真的只是一个框架,虽然有众多的第三方模块加成,但是真的很难做到开箱即用,这也就对它的潜在使用者造成了门楷,看起来美好,像用起来却不得不找专业的公司实施或者招一个懂行的人进行开发。

个人觉得,Odoo最好的使用模式,是公司或者集团内部,由IT团队进行支持开发,然后不断迭代,内化成自己公司的内部一套ERP系统是最合适的。IT团队懂技术,产品团队优化需求,再经过持续迭代和优化,最终能够成为一套不错的解决方案。因为IT团队本身就是需要投入,这样就能将成本摊平,提高软件使用的性价比。本系列教程也是从技术层面出发,希望能多的人能够了解到这套系统的架构,从中学到一些不错的思路,而对于商业化层面的东西,我只能说,偶尔兼个职也是不错的。

Odoo的架构

持久化层,Odoo使用的数据库是Postgresql。Postgresql是一个强大的开源关系数据库,相对于Mysql,Pg的知名度稍小,但是其性能远在Mysql之上,具笔者所知,国内很多互联网公司都在使用postgresql。

业务逻辑层,Odoo有自己一套ORM框架,虽然名为ORM,但是目前并不支持切换数据库,想要切换数据库的同学可以死心了。开发语言是Python,11.0版本之前使用python2,11.0版本开始支持Python3,12.0仅支持python3。ORM层类似但并非django的ORM框架,内置的web服务器使用的跟Flask框架一样的Werkzeug。

前端使用自己开发的Qweb框架,不需要写HTML代码,只需要根据Odoo定义好的xml结构编写布局文件即可。

这套框架和优势是,一旦学会了规则,实现业务高效简洁。缺点是,集成度高,且有学习门楷,对新手并不友好,框架层面的定制自由度不高。

社区版和企业版

TinyERP和OpenERP时代,源代码真的是完全开放的,但是不知道是不是由于盈利的压力,从9.0开始,Odoo官方将odoo分成了两个版本,一个社区版和一个企业版。社区版提供基础功能,一些高级模块则放到了企业版中,只有从官方或制定渠道购买了Lincese才能使用。坏消息是,从趋势上来看,社区版被阉割的情况越来越严重,留给社区版的标准功能越来越少。好消息是,对于开发者来说,这这两者使用的技术还是一致的。

Odoo在中国

Odoo最早由先安科技(shine-it)的校长引入中国,然后国内出现了多个专门做Odoo实施的咨询公司。经历了这些年的发展,国内的生态有了起色,越来越多的公司开始接触并使用odoo。由于Odoo的起源地是比利时,所以Odoo原生的操作模式和思维都是便西方式的,这对国内的用户来说可能是个不太友好的体验。笔者曾经供职的一家互联网公司,在实施过程中就曾不止一次听到过来同事的抱怨。可能在项目主导者眼中,这是一件利器,但在使用者眼中可能并非如此。

Odoo的国内市场,最为知名的合作伙伴是浪潮集团,浪潮将odoo重新打包成了一个新的产品PSCloud,实现odoo产品的本土化。但是就目前的态势来看,浪潮的思路也是做SAAS模式。个人并不看好这种模式,Odoo社区版虽然免费,但实施起来却需要相当的持续的投入,这对企业的长远来说并不算是一个性价比高的选择。笔者曾经供职的一家企业,在2014年开始使用Odoo,后来因为技术的支持不到位(也许有资金层面的原因),现在据说已经退回到金蝶用友的软件了。对于国内一些靠Odoo实施生存的企业来说,个人也持悲观模式,其实Odoo入华已经年头不少了,从6.0(2012)开始国内就有先驱开始做这块的市场,现在7年已经过去了,依旧没有看到一家能够壮大的专业实施公司。这里边需要思考的东西挺多,当官方都吃不饱(甚至跑过来跟代理商抢饭吃)的时候,处在下游的公司就更难说活得美好了。

为什么要写这样一本书

经常有网友咨询,问我有没有什么资料可以供他们进行学习参考,我在Google搜了一下互联网上搜了一下关于Odoo的教程,大多都是些零星的入门资料,不够系统也不够全面。国内社区也有人在组织自出版了一些纸质的资料,实施手册、开发手册什么的,也开始有正式的出版物面世,这对国内的开发环境都是好事,毕竟现在从事这方面开发工作的人还是少数。

我曾经在博客园也写过几篇教程类的文章,但是没能坚持下来,现在看也有些过时了。现在正好有时间,就争取写一个图文并茂,力求面面俱到的教程吧,也权当是对自己知识的一个重新梳理。本书的目的是给小白读者一个可以入门的实用教程和给老鸟们一个手头的参考资料。本书将采用电子版的方式发布,相关的代码都可以在我的github上面找到。

本书的结构

本书分为七个部分,第一个部门主要介绍开发的基础知识,供刚开始学习开发的小白们入门学习,这部分会带领读者编写一个全新的模块,让读者能够亲历亲为。第二个部分是高级知识,主要介绍一些比较高级底层的内容,属于小白进阶的内容,这部分内容在开发实战中会经常用到。第三个部分是技巧类参考内容,属于冷门知识,供对于底层有兴趣的同学和有一些特殊需求的同学参考的东西。第四部分主要介绍14.0之前的Odoo的前端组成,需要有一定的JS基础才可以看懂。第五部分为14.0时,Odoo官方推出的新前端框架OWL的介绍。第六部分为Odoo的相关部署和运维知识。第七部分为附录,主要是一些不属于前六个部分的内容和一些常用的第三方模块推荐。

本书基于odoo15.0,部分代码涉及了企业版代码。

1 ERP 简介 1 1.1 Odoo 历史 1 1.2 ERPⅡ 或商业智能化 2 1.2.1 什么是商业智能 4 2 Odoo 框架简介 7 2.1 python 模块分析 8 2.2 python2 还是 python3 8 3 Odoo 的安装和配置 9 3.1 PostgreSQL 数据库 10 3.2 Ubuntu14.04 下可能缺失的软件包 11 3.3 网页显示 node.js 方面 11 3.4 其他问题 12 3.5 通过命令行运行时的配置 12 3.5.1 –xmlrpc-port=8888 12 3.5.2 –addons-path=addons 12 3.5.3 数据库的一些配置 13 3.5.4 –save 13 3.6 将安装环境封装起来 13 3.7 文档编译 14 4 初入 Odoo 17 4.1 管理数据库 17 4.2 登录界面 18 4.3 Administrator 首选项 19 4.4 导入一个翻译 20 4.5 新的 Demo 用户 20 4.6 模块管理 21 4.7 修改公司信息 21 4.8 打开技术特性支持之后 22 4.9 进销存和财务系统的抽象讨论 22 4.9.1 以采购部门为例 23 4.10 安装和配置模块 24 5 创建自己的模块 27 5.1 快速生成模块骨架 27 5.1.1 python 模块的 init 文件 28 5.1.2 作为 Odoo 模块的说明文件 29 5.2 安装自定义模块 32 5.2.1 模块文件夹管理 32 5.3 一个简单的演示模块 33 5.3.1 controllers 33 5.3.2 views 33 5.3.3 models 35 5.3.4 security 37 5.3.5 美化网页 38 5.4 加分项: 通过 pgadmin3 来查看数据库 39 5.4.1 安装 39 5.4.2 连接服务器 39 5.4.3 图形化查询 40 6 Odoo 开发基础: 请假模块第一谈 43 6.1 纯理论讨论 43 6.2 定义模型 45 6.3 加入菜单 46 6.3.1 act_window 的属性 48 6.3.2 menuitem 的属性 48 6.4 视图优化 48 6.4.1 修改 tree 视图 49 6.4.2 修改 form 视图 49 6.5 完整的 views.xml 51 6.6 给模块加个图标 53 7 Odoo 开发基础: 工作计划模块第一谈 55 7.1 数据访问权限管理 61 7.1.1 access rule 62 7.1.2 record rule 62 8 扩展现有模块-继承机制 65 8.1 给模块增加 field 65 8.2 修改已有的 field 66 8.3 重载原模型的方法 66 8.3.1 什么是 Recordset 67 8.3.2 Odoo 里面的 domain 语法 68 8.3.3 recordset 的 search 方法 69 8.4 视图 xml 文件的继承式修改 70 8.4.1 视图元素添加 71 8.4.2 原视图元素属性修改 71 8.5 多态继承 72 8.6 修改其他数据文件 73 8.6.1 删除记录 73 8.6.2 更新数据 73 8.7 委托继承 74 9 理解模型内的数据文件 75 9.1 理解外部 id 75 9.2 使用外部 id 77 9.3 导出或导入数据文件 77 9.4 快捷输入标签 78 9.5 用 field 标签设置值 78 9.5.1 eval 语法 78 9.5.2 ref 属性 79 9.5.3 One2many 和 Many2many 的 eval 赋值 79 10 Odoo 开发基础: 请假模块第二谈 81 10.1 本例涉及到的数据库表格简介 89 10.2 工作流概念入门 89 10.2.1 定义工作流对象 90 10.2.2 创建节点 91 10.2.3 创建连接 91 11 Odoo 模型层详解 93 11.1 _name 93 11.2 各个表头属性 93 11.3 name 字段 94 11.4 具体模型的数据 94 11.5 模型间的关系 95 11.6 工作流 95 12 Odoo 视图层详解 97 13 附录 99 13.1 Odoo 里老的 API 99 13.2 PostgreSQL 数据库命令行操作 99 13.2.1 命令行数据库备份 99 13.3 反向代理 (reverse proxy) 99 13.3.1 安装 ngnix 软件 100 13.3.2 强制 https 连接 102 13.3.3 nginx 优化 102 13.3.4 轮询机制 102 13.4 跟踪项目源码初始化进程 102 13.4.1 base 模块 104 13.4.2 web 模块 105 13.4.3 web_kanban 模块 105 13.5 配置会计科目 105 13.5.1 配置会计科目类型 105 13.5.2 配置会计科目 106 13.6 分录 106 13.7 新建业务伙伴 106 13.7.1 新建业务伙伴标签 106 13.7.2 新建客户 106 13.8 创建新的产品 107 13.9 设置会计年度 107 13.10向供应商下单 107 13.11会计学入门 107 13.11.1财务报表 108 13.11.2原始凭证 108 13.11.3账户 108 13.11.4分类帐 109 13.11.5会计科目表 109 13.11.6报告期间 110 13.12参考资料 110
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值