odoo

odooERP系统(框架)总结

别来无恙 提交于 2020-04-26 17:59:48
1:Odoo 是一个现代化的商业应用套件,使用 AGPL 许可证,并具有客户关系管理(CRM) ,人力资源,销售,采购,会计,制造,仓库管理,项目管理,以及众多社区模块。 2:它是基于一个模块化,可扩展和直观的快速开发应用程序(RAD)的框架,使用 Python 语言。 3:OpenObject 功能对象集成- 关系映射(ORM), 基于模板的模型 - 视图 - 控制器(MVC)接口,报表生成系统,多国语言,快 速构建应用程序:是一个完整的模块化的工具。 Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言,非常适合 RAD 清 晰的语法. odoo框架: Odoo 是一个支持多用户的三层架构: 1、 数据库层进行数据存储 , 2、 应用层进行处理和提供业务功能 , 3、 表现层提供用户界面。 在 Odoo 中, 这些层是隔离的。应用程序层本身作为内核。可以安装多个附加模块,以便创建 Odoo 的特定实例,来适应具体需求。 此外,Odoo 遵循 模型 - 视图 - 控制器(MVC)架构模式 Odoo 系统由三个主要部分组成: (一) PostgreSQL 数据库服务器包含所有 Odoo 数据库。 数据库包含所有应用程序数据,以及 Odoo 系统主要的配置元素。请注意, 这个服务器可以按集群数据库方式部署。 (二) Odoo 服务器包含所有的企业逻辑,确保 Odoo

【Odoo 8开发教程】第二章:Odoo生产环境部署设置

寵の児 提交于 2020-04-26 17:49:46
转载请注明原文地址: https://www.cnblogs.com/ygj0930/p/10826302.html 一:dbfilter 数据库访问规则设置 一个odoo实例可以连接到不同的数据库实例中,但某个时间只有一个数据库为odoo实例提供服务。当一个odoo实例有多个数据库可供操作时,用户每次登录时都需要先选择一个数据库才能跳转到登陆界面,这在生产环境中会让用户产生很大的困惑。因此,我们需要在生产环境中指定一个规则,让用户只能看到一个数据库并默认连接。 在启动文件.conf中,可以通过 dbfilter(注意,无下划线) 指定一个 正则表达式 ,指定一个默认的数据库。 处理配置文件,也可以在命令行启动odoo时,通过参数 --db-filter=正则表达式 来指定一个默认数据库。 注意:对于website模块,必须指定dbfilter才能正常使用。 二:PostgreSQL 数据库连接设置 odoo与postgreSQL通过UNIX socket连接。 需要在odoo的启动配置文件.conf中配置postgreSQL的相关信息,以便odoo通过SSH连接到数据库。 db_host = 数据库ip地址 db_port = 数据库端口,默认5432 db_user = 数据库账号 db_password = 数据库秘密 db_maxconn = 数据库连接池最大容量 db

Odoo安装教程1-创建第一个 Odoo 应用

筅森魡賤 提交于 2020-04-26 17:31:08
Odoo 开发通常都需要创建自己的插件模块。本文中我们将通过创建第一个应用来一步步学习如何在 Odoo 中开启和安装这个插件。我们将从基础的开发流学起,即创建和安装新插件,然后 在开发迭代中更新代码来进行升级。 Odoo 采用类 MVC(Model-View-Controller)的结构,我们将深入到各层来实施一个图书应用。本文主要内容有: ⚫ 创建一个新的模块,用来实施相关功能 ⚫ 添加应用的特性功能:顶级菜单项和安全组 ⚫ 添加一个一开始会失败但在项目完成时成功运行的自动化测试 ⚫ 实施模型层,定义应用的数据结构和相关访问权限 ⚫ 实施后台视图层,编写内部用户界面 ⚫ 实施业务逻辑层,支持数据验证和自动化 ⚫ 实施 web 层,展示访客和内部用户的用户界面 系统准备 本文要求安装了 Odoo 服务并可通过命令行启动服务来进行模块安装和运行测试之类的操作。 如果还没有相关环境,请参照本系列文章第二章开发环境准备。 本文中我们将从零开始创建第一个 Odoo 应用,无需额外的代码。本文代码可通过 GitHub 仓库进行查看。 概览图书项目 为更好地在本文中探讨,我们将使用一个现实中可以使用的学习项目。一起来创建一个管理图书库的 Odoo 应用。该项目将在后续文章中持续使用,每篇文章都会进行一次迭代,为应用添加新 的功能。本文中将创建图书应用的第一个版本,第一个功能是实现图书目录

Odoo开发教程20-使用 Python 虚拟环境安装 Odoo第二讲

让人想犯罪 __ 提交于 2020-04-26 16:51:25
配置插件(add-ons)路径 社区贡献的插件可以打包成 Python 库,发布到 Python 包索引(PyPI -Python Package Index),然后像其它库一样使用 pip 安装。为了能使用这一方法,Odoo 自动添加了 site packages/文件夹至插件配置路径,用于安装库文件。打包可以通过 setuptools-odoo 工具。 OCA 项目使用该工具打包并发布插件至 PyPI。因不同 Odoo 版本中存在相同模块,模块名之前会加一个 Odoo 版本前缀。例如 odoo12-addon-partner-fax 是 Odoo 12 的 partner_fax PyPI 包,它为 partner 添加了一个传真字段。 如需从 PyPI 下载该模块及依赖,并随后安装至 odoo12env 环境,使用如下命令: source ~/odoo-dev/odoo12env/bin/activate pip install odoo12-addon-partner-fax odoo -c ~/odoo-dev/odoo12-env/12-library.conf -i partner_fax --stop 更多教程: https://www.erpdaxue.cn/odoo/odoo-teach/odoo12-teach/ 来源: oschina 链接: https:/

Odoo开发教程18-Odoo 安装第三方插件

此生再无相见时 提交于 2020-04-26 16:50:45
在 Odoo 实例中产生新的模块并安装,对于初学者总会容易搞不清。下面一起来熟悉这一点。 查找社区模块 网络上有很多 Odoo 模块,Odoo 应用商店可以下载一系列模块安装到系统中。另一个重要的资源是 Odoo 社区联盟(OCA – Odoo Community Association)维护的模块,可在 GitHub 上 查找。OCA 是一个协调社区贡献的非营利组织,它同时提升软件质量,推广最佳开发实践和开源价值观。可通过 https://odoo-community.org/来进一步了解 OCA。 为 Odoo 添加模块,仅需将其拷贝到官方插件的 addons 文件夹中即可,按前述安装即为~/odoo-dev/odoo/addons/。但这不是一个好的实践,我们安装的 Odoo 是由 Git 版本控制的代码仓库,将会与上游 GitHub 仓库保持同步,在其中加入外部插件会不利于管理。 避免这一点,我们可以选取一个或多个存放模块的目录,让 Odoo 服务也会从该目录中查找模块来使用。我们不仅可以把自定义模块放在一个不同的目录下不与官方的混在一起,还可以通过不 同目录组织这些模块。 我们可以通过下载系统课程的代码来准备供 Odoo 安装的插件模块,获取 GitHub 上的源码,执行如下命令: cd ~/odoo-dev git clone https://github.com

Odoo开发教程21-Odoo服务器端开发者模式

元气小坏坏 提交于 2020-04-26 16:42:15
服务器端开发者模式 为便于开发者,Odoo 有一个–dev=all 参数可激活一些开发者友好的功能。 “ 注意:Odoo 10 的修改–dev=…参数是在 Odoo 10 中引入的,它取代了此前版本中更简单、功能也更少的–debug 参数” 这启用了一些有用的功能可加快开发流程,最重要的如下: ⚫ 在保存 Python 文件时自动重载 Python 代码,避免手动重启服务 ⚫ 从 XML 中直接读取 view 定义,避免手动升级模块 –dev=all 将在抛出异常时启动 Python 调试器(pdb),在服务报错后做后验(postmortem)分析非常有益。注意这一设置对日志输出不产生任何影响。有关 Python 调试器命令详情可参见Python 官方文档。 虽然 all 值适用于大多数情况,–dev 还可接一串逗号分隔的选项。缺省情况下会使用 Python 调试器 pdb。有些人会倾向安装、使用其它调试器,来改善功能和易用性。Odoo 是允许我们指定调试器的,常用的有 ipdb 和 pudb。 在本系列第八章业务逻辑,我们将介绍如何在 Odoo 开发中使用调试器。要自动侦测代码文件的变化 ,服务开发者模式需安装一个额外的依赖 python3-watchdog。我们需要在 Ubuntu/Debian 系统中安装它之后才可使用,命令如下: sudo apt-get install

Odoo开发教程19-使用 Python 虚拟环境安装 Odoo第一讲

对着背影说爱祢 提交于 2020-04-26 16:40:51
维护多个 Odoo 版本的代码在 Odoo 开发中很常见,需要整理一下来保持项目在同一台开发机器上并行。改变版本有时会需要上下文的切换。比如,现在 Odoo 的启动执行文件是 odoo bin,而在老版本中是 odoo.py。迁移到 Python 3 后又更易混淆了,我们要知道是选择python/pip 还是 python3/pip3,这取决于使用的 Odoo 版本。 Python 有一个在同机器上管理独立环境的工具 virtualenv。每个环境有自己的 Python 可执行文件和库文件,仅需在使用时激活环境,然后 python 和 pip 无需指定就可以在相应的安装了 Python 库的环境下运行。要在 Debian/Ubuntu 上使用 virtualenv,执行如下命令: sudo apt install virtualenv -y 如果我们使用的工作目录是~/odoo-dev,并把 Odoo 12 源代码克隆到~/odoo-dev/odoo 目录中,我们可以这样进行虚拟环境的创建: virtualenv -p python3 ~/odoo-dev/odoo12env source ~/odoo-dev/odoo12env/bin/activate 一旦激活了虚拟环境,我们可以在其中安装 Odoo,可以通过 pip 来进行操作: pip install -e ~/odoo

Odoo开发教程17-Odoo 服务配置文件第二讲

拥有回忆 提交于 2020-04-26 16:32:53
修改监听端口 –http-port=(或-p)参数可以修改实例的监听端口(默认端口 8069),不同的端口可以让我们在同一台机器上运行多个实例。 “ 注意: Odoo 11 的修改在 Odoo 11 中引入–http-port 参数以替代此前版本使用的–xmlrpc-port”下面就可以做个尝试,打开两个终端,第一个中输入 ~/odoo-dev/odoo/odoo-bin --http-port=8070 第二个中输入 ~/odoo-dev/odoo/odoo-bin --http-port=8071 此时就在同一台机器上使用不同端口运行了两个 Odoo 实例, 这两个实例可以使用同一个数据库或不同数据库。这取决于我们使用的配置参数,并且两个端口上也可以运行相同或不同版本的Odoo。 “ 小贴士: 不同 Odoo 版本必须使用不同的数据库。尝试在不同版本上使用相同数据库将无法正常运行,因为各大版本采用了不兼容的数据库模式。 ” 数据库选项 进行 Odoo 开发时,经常会使用多个数据库,有时还会用到不同版本。在同一端口上停止、启 动不同服务实例,或在不同数据库间切换,会导致网页客户端会话异常。因为浏览器会存储会话的Cookie。 在浏览器中使用私有模式访问实例可以避免这一问题。另一优良实践是在服务实例上开启数据库过滤器,这样可以确保实例仅允许对指定数据库的请求,而忽略其它请求。 “

Odoo - Can't sum two field in model.py

廉价感情. 提交于 2020-04-17 20:28:51
问题 Why I can't sum two field in my model file. Code on below which is not working I was trying as you see in last section to use onchange but without success. for example: i need the field "amount_after_disc" = "total_price" / "product_uom_qty" class ProductTemplate(models.Model): _inherit = 'product.template' sale_order_line_ids = self.env['sale.order.line'].sudo().search(domain,limit=sale_order_line_record_limit,order ='create_date desc') for line in sale_order_line_ids: sale_price_history_id

Validation on export data for one2many field column in Odoo 13

自闭症网瘾萝莉.ら 提交于 2020-04-15 22:43:57
问题 I want to show validation error when the user export records for state='draft'(in one2many field). I have done code for it and it's working fine. but when I put this code for one2many table then I unable to get a validation message. My code is below: class DailyTransaction(models.Model): _name = 'daily.transaction' _rec_name = 'batch_id' date = fields.Date() batch_id = fields.Char() daily_transaction = fields.One2many('transaction.log', 'daily_trans_log', string='Daily Transaction') class