Odoo 修改或扩展导入流程

问题描述 投票:0回答:2

我想修改或扩展 Odoo 中 csv 导入的流程。

我有一些自动计算的字段和其他需要的字段,但不在 csv 文件中。

搜索代码并尝试使用 ir.action.todo 和 ir.action.client 但不起作用。

有什么想法,使用钩子或其他工作吗?

谢谢

约尼尔。

import odoo action
2个回答
2
投票

你只需要继承'base_import.import'模型即可

class Import(models.TransientModel):

    _inherit = 'base_import.import'

    @api.model
    def _convert_import_data(self, fields, options):
        # Override base method
        # Called when actual import start
        data, import_fields = super(Import, self)._convert_import_data(fields, options)

        # Do something ...

        return data, import_fields

    def parse_preview(self, options, count=10):
        # Override base method
        # Called when data loaded
        preview_data = super(Import, self).parse_preview(options, count=count)

        # Do something ...

        return preview_data

但是,覆盖基本导入方法可能不是一个好主意,我建议使用自定义导入向导来进行自定义导入。


0
投票

在我的例子中,我的前开发人员是在 odoo15 base_import 中编辑的采样器。现在我想将其创建到 odoo17 中的额外插件中。 检查我的代码,search_count 甚至是第一次执行(我的意思是导入后计数,我想在导入之前检查一下。

这是我的代码

class CheckImport(models.TransientModel):
    _inherit = 'base_import.import'
    
    @api.model
    def _convert_import_data(self, fields, options):
        try:
            data, import_fields = super(CheckImport, self)._convert_import_data(fields, options)
            file_name = self.file_name
            same_file = self.env['base_import.import'].search_count([
                ('file_name', '=', file_name), ('res_model', '=', self.res_model), ('file_type', '=', self.file_type)])

            if same_file > 0:
                raise ImportValidationError(_("This File Name is already imported."))

            return data, import_fields
        except ImportValidationError as e:
            raise e
© www.soinside.com 2019 - 2024. All rights reserved.