第三章 Odoo基本设置
登录
正常访问http://localhost:8069后,登录的界面如下:
这是Odoo默认的认证方式,也是我们最常见最熟悉的认证方式,7.0以前,数据库中的密码都是以明文方式存储,可以很轻松地在res_users表中查询到用户的密码。8.0以后,odoo提高的密码的安全性,将密码加密后进行存储。
近些年来,网络比较流行的一种登录方式是auth,像QQ、支付宝、微信等登录方式,Odoo通过第三方模块也可以实现类似的功能。
对于企业内部用户,可能会接触到SSO的登录方式,这种方式的验证机制同微信验证类似,只不过验证的服务器端是企业内部自己搭建的,因此,SSO的登录方式没有通用的模块,只有根据不同的企业端来进行定制的开发。如去哪儿内部就有一种QSSO,实现之后的登录界面如下:
界面
登录完成之后,会看到如下的界面:
顶部是导航栏,分别对应系统安装了的模块的几大功能,如销售、项目、会计、采购、仓库、生产、人力资源、报表等等,这是系统的一级菜单,也可以称之为应用。
左边一栏是二级菜单,单击每一个菜单,右边会有不同的界面显示。
右上角是当前登录用户,在这里可以切换当前登录用户的时区,语言,更改密码等设置,如下图
还有另外以下诸如关于Odoo,注销等功能。
模块的安装与卸载
模块是Odoo功能的基本单位,也是正因为功能的模块化,使得Odoo功能的添加与修改都变得十分灵活。模块的安装非常简单,在设置的界面里搜索要安装的模块名,然后安装即可。
安装第三方模块
Odoo的强大源于不仅有诸多官方已经集成在安装包中的官方模块,更在于众多社区开发者贡献的第三方模块。官方模块有些时候只是给出了一个通用的解决方案,在落地到实际企业生产过程中,有诸多需要改进的地方,这个时候就是第三方模块发挥其作用的时候了。我们通常所说的二次开发就是这个概念,将企业的特定化需求,结合其原有的模块进行定制,以求以最小的时间成本获取最大的生产效率。
安装第三方模块,首先需要将源代码放在配置文件的addons目录中。
多个路径以‘,’隔开。Ubuntu Deb包安装的目录在 /usr/lib/python2.7/dist-packages/openerp/addons/ 中。建议第三方模块或自己开发的模块不要跟官方模块混放在一起,以防止代码升级造成模块的丢失。
源代码放置到文件夹中之后,需要重启服务。然后在设置界面中,先更新模块列表,然后才能在本地模块列表中找到我们想要安装的模块。
模块的卸载是一个非常危险的动作,因为极有可能因为卸载模块导致数据的丢失。由于模块间的依赖关系,卸载一个模块也很有可能会将其他依赖于这个模块的模块一并卸载,因此强烈建议除非在极有把握的情况下,否则不要轻易卸载模块。通常模块的问题,我们可以通过升级操作来进行修复,这个我们等到开发部分在进行详细介绍。
公司设置
在设置中,有一项公司设置用来配置公司信息。
公司信息里包含了银行账户,地址,联系方式等信息,也包含一些报表的页眉页脚的设置,通常会在打印报表的时候将这些信息一并打印出来。公司信息是一项很重要的预先设置,通常在安装系统的时候系统会帮你把这些信息自动填写完毕,必要的时候,你也可以更改公司信息。公司设置里会有一些隐藏信息用于指导采购,销售,仓库的行为,这些我们会在遇到的时候进行一一阐述。
用户与组
Odoo的用户与组是Odoo权限控制的两个重要部分,组实际可以理解为角色,用户可以针对不用的应用有多个角色,比如,Kevin既可以是仓库的用户,又可以是采购的用户。根据不同的应用给予用户赋予不同的角色,即可以实现对用户权限的灵活设置。
用户界面主要由两个页面组成,一个是与权限相关的访问权限,另一个是跟国际化相关的语言区域设置。
访问权限页面用于给用户赋予角色,同一个应用程序组与组之间如果有继承关系,该权限组会显示成为下拉列表样式,若组与组之间存在并列关系,那么就会被展开成为勾选的样式。组之间的继承关系,在组的页面中进行设置。
在组的视图中,我们可以看到有 用户、继承、菜单、视图、访问权限、规则、备注等多个tab页。视图、访问权限、规则属于高级内容,在此不进行过多阐述,在后续的开发章节中会有对此三种对象的详细介绍。
在用户Tab页中,我们可以看到加入此组的所有用户。这里列举出的用户包含改组的子组中(继承自改组)的用户。继承Tab页中可以看到改组的继承关系。菜单Tab页中可以看到改组所拥有访问权限的菜单。
常规设置
刚接触Odoo的时候比较关注的功能之一就是它的收发邮件功能,配置邮件的界面在设置菜单的常规设置中(也可以在技术设置-邮件里进行)。
邮件的设置需要根据公司的邮箱服务器进行设置,对于支持Catch-All功能的服务器,只需要配置好域名,无需过多的设置即可使用Odoo的邮件收发服务。
但对于没有自己公司的邮箱服务器或不支持Catch-All功能的服务器来说,配置Odoo的邮箱服务就没那么容易了。最好的办法是找一个支持Catch-All功能的企业邮箱,如果不能,向国内的163企业邮也是可以的。使用163企业邮箱,需要针对每个用户设置独立的收发件服务器,维护的成本较高。同时,需要用到第三方模块来完成对每个用户和收发服务器的匹配操作。这个模块的下载地址是:
https://github.com/kevin8909/auto_select_smtp
接收服务器设置列表:
发出邮件服务器列表:
发出邮件服务器设置举例:
接收服务器设置举例:
需要说明的一点,接收服务器设置里,对于收到的邮件可执行的动作,这里要选Email 别名,因为我们是依据Email别名来寻找相应的用户的。
配置邮件过程不是一个容易的事,期间会碰到各种各样的问题,建议参照企业邮的说明文档进行设置。
翻译
Odoo的翻译汉化的不是很完美,部署完系统之后就会发现有很多地方依旧保留着英文,这对国内的一些用户造成了阅读与理解上的不便。社区也有人致力于解决这个问题,组织了一些汉化工作者,但由于翻译者的水平有限,有很多地方造成了歧义。这里的建议是,如果英文水平足够好,建议将语言设置成英文。不得不用中文的情况下,建议对照词典英文释义及自己的理解将其翻译成自己认为正确的汉语。也可以购买社区的汉化包,但在使用过程中碰到难以理解的翻译时,要记得对照英文原意进行解读。
下面介绍翻译的方法:
开发者模式
开发者模式是Odoo提供给有技术基础的人进行界面编程的入口。我们翻译的方法之一就是借助开发者模式提供给我们的技术翻译进行。打开开发者模式位置在右上角-关于
技术翻译
在任一Form视图/Tree视图中,我们都可以看到Debug下拉列表中有一项叫做技术翻译。
在这里我们就可以对界面上的一些翻译进行修改,例如:
询价单中的“币种”,我希望将它翻译成“币别”,我们就可以在技术翻译里找到币别这条翻译
将其翻译为币别。技术设置的最后一列可能刚入门的读者比较困惑,它是技术后台中对Odoo对象的分类,这个在以后的开发内容中会有涉及,这里不需要太过纠结。
界面翻译的第二种方法,不是在技术翻译里进行,是在设置/应用程序术语/已翻译术语中
在这里我们可以搜索到Odoo中所有模块的翻译,并且可以进行编辑修改或是添加。
第三种翻译方法,是通过修改模块文件中的i18n文件夹中的po文件进行,这也是解决翻译问题的终极办法。I18n的意思是internationalization ,只需要把包含翻译的Zh_CN.po文件放入该文件夹中,然后对模块进行升级,就可将翻译应用到系统中。PO文件大概是这个样子:
po文件是GNU gettext项目的一套应用规范,属于L10n方案。PO 是 Portable Object (可移植对象)的缩写形式;MO 是 Machine Object (机器对象) 的缩写形式。PO 文件是面向翻译人员的、提取于源代码的一种资源文件。当软件升级的时候,通过使用 gettext 软件包处理 PO 文件,可以在一定程度上使翻译成果得以继承,减轻翻译人员的负担。MO 文件是面向计算机的、由 PO 文件通过 gettext 软件包编译而成的二进制文件。程序通过读取 MO 文件使自身的界面转换成用户使用的语言。
在Odoo中使用po文件,可以通过设置-导入 /导出菜单将要修改的模块的po文件导出,然后用poedit软件进行编辑后,覆盖掉原模块文件夹中的po文件,完成修改。
对于function类型的字段,可能在导出模块的po文件中不会存在相应的翻译,这时需要手工添加,具体的添加方法可将po文件中其他的字段翻译复制一遍,然后修改为新字段即可。
视图
Odoo的视图是指技术前端对用户展示的页面,有以下几种类型:Form,Tree,Kanban,Gantt,Graph,Canlendar,Diagram,Search,Qweb.最常用的是Form和Tree两种,通常翻译为表单和树形视图。
表单
最常见的视图类型之一:
用来展示一个对象的信息。
树形
实际上应该称为列表(List),真正的树形是可以展开显示子节点的。用于显示多个对象的全部或部分信息。
看板(Kanban)
以看板的形式展示一个或多个对象。
甘特图(Gantt)
以甘特图的方式展示对象信息
图表(Graph)
以图表的方式展示数据,多用于报表。
日历(Canlendar)
以日历形式展示数据。
流程图(Diagram)
以流程图的方式展示数据关系,主要用户工作流。
搜索(search)
搜索视图,常见类型之一,用于多个条件的过滤。
Qweb
主要用于打印文件的设置以及前端一些小窗口部件(Widget)的绘制,在Qweb开发部分会给出具体介绍。
总结
本章主要介绍了一些关于Odoo的基本设置,这是开始学习Odoo的第一步。经过本章的学习,相信你已经对Odoo有了一个大概的认识,可能你对Odoo的操作还不是很熟悉,不过相信经过接下来的学习,你一定会变得越来越熟练。