跳转到主要内容

导入/导出模式

项目描述

Beta License: AGPL-3 shopinvader/pattern-import-export

概述

此模块扩展了Odoo的导入/导出功能。

模式仅仅是ir.exports模型的一种类型,因此您可以使用本机Odoo小部件来定义导出列表。

此模块仅创建一个通用数据结构。其他模块将用于添加特定文件类型支持,例如Excel和CSV。

功能

  • 键匹配:不是总是使用ID,匹配唯一约束的字段,例如通过指定产品代码而不是数据库ID或外部ID来更新产品

  • One2many和Many2many支持:使用易于阅读和更新的语法创建或更新发票行等

  • 只要您遵守适当的格式和字段名称,您就可以自由添加/删除/重命名列,即使它们不在用于导出的初始模式中

目录

配置

  • 安装支持特定文件类型的其他模块

  • 使用“模式”菜单配置您的导入/导出格式

使用

配置模式

首先您需要定义一个模式

  1. 转到“导入/导出”>“模式”菜单

  2. 创建带有导出字段的模式

您可以参考演示数据中的示例。

导出

  • 打开任何模型的树形视图并勾选一些记录选择框。

  • 在侧边栏中,单击“使用模式导出”按钮

  • 选择您希望使用的模式,单击导出并下载生成的文件。

  • 创建了一个“模式文件”,及其任务。根据任务的成功或失败,您将在窗口上收到红色/绿色通知。

导入

您有两个选项

  • 打开任何模型的树视图,勾选一些记录选择框(对于这一步,这些不重要,我们只是想显示侧边栏)。

  • 在侧边栏中,点击“使用模式导入”按钮

  • 选择用于生成导出的模式,上传你的文件并点击导入。

  • 创建了一个“模式文件”,以及与其相关的任务。根据任务的成功或失败,你将在窗口中收到红色/绿色通知。你可以在适当的导入/导出菜单中查看详细信息。

或者

  • 通过导入/导出菜单访问导入向导

  • 选择你想要使用的模式

  • 点击“导入”按钮

示例

以下是对 product.product 的简单更新的示例:现有记录

  • id: 10

  • name: “产品 1”

  • default_code: “PRD1”

生成的导出将看起来像

id

name

default_code

10

Product 1

PRD1

更新的文件

id

name

default_code

10

Product 1-bis

PRD1B

导入后,我们的记录将被更新

  • xml id: “__export__.product1”

  • name: “Product 1-bis”

  • default_code: “PRD1B”

现在,让我们更新一些关联字段。以下是我们的起始数据的更多内容

  • seller_ids

  • id (seller_id 的 id,它是一个 res.partner): 22

  • name (卖家): 合作伙伴 1

  • price: 10

生成的导出应该像

id

name

default_code

seller_ids|1|id

seller_ids|1|price

10

Product 1

PRD1

22

10

假设“ref”是一个具有唯一约束的 Char 字段。对于卖家,我们不想使用其 id,而想使用其 ref。

id

name

default_code

seller_ids|1|ref#key

seller_ids|1|price

10

Product 1

PRD1

partner1-ref

10

所以这个 #key 表示 Odoo 应该搜索一个 res.partner,其 ref 与单元格值匹配。

让我们再举一个例子,我们不想使用 id,而想使用产品的 default_code 作为键。

id

name

default_code#key

seller_ids|1|ref#key

seller_ids|1|price

Product 1

PRD1

partner1-ref

10

Odoo 将搜索匹配 default_code 的产品并将其更新。

技术上

添加新的导出格式

  1. 继承 ir.exports 模型。

  2. export_format 选择字段中添加你的新文件格式;

  3. 实现函数 _export_with_record_<format>_read_import_data_<format>

请小心处理迭代器 (yield),以避免将整个文件加载到系统内存中。

已知问题 / 路线图

  • 取消勾选“使用制表符”布尔值应清除先前选中的 tab_filter_id

  • 更改行的字段应清除先前选中的 tab_filter_id

错误跟踪器

错误在 GitHub Issues 上跟踪。如果在遇到麻烦时,请检查你的问题是否已经报告。如果你是第一个发现它的,请通过提供详细且受欢迎的 反馈 来帮助我们解决问题。

不要直接联系贡献者以寻求支持或技术问题的帮助。

鸣谢

作者

  • Akretion

贡献者

维护者

此模块是 GitHub 上的 shopinvader/pattern-import-export 项目的组成部分。

欢迎您贡献力量。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

此版本没有可用的源代码分发文件。请参阅生成分发归档教程

构建分发

支持