No.1免费开源ERP:Odoo自定义字段添加到配置页中的技术分享

文 / 开源智造(OSCG)· Odoo亚太金牌服务

在Odoo18之中,配置设定于管控各类系统配置层面发挥着关键之效用,使您能够对软件予以定制,以契合您特定的业务需求。尽管 Odoo 提供了一组强劲的默认配置选项,然而有时您或许需要增添自定义字段,从而能更好地与您的业务流程相契合。本指南将引领您达成在 Odoo 18 中向配置设定添加自定义字段的进程,并以其他交付选项拓展 Odoo 18 POS(销售点)配置的实际范例。

在 Odoo 当中,配置设置经由 res.config.settings 模型予以管理。该模型充作管理模块特定设置的集中之所,这些设置的范畴涵盖自常规的系统首选项至单个模块的特定配置选项。借由对该模型进行扩展,您能够增添契合您独特需求的新字段,进而确保您的配置设置尽可能完备且具有相关性。

扩展配置设置能够让您融入默认 Odoo 配置所未涵盖的其他参数。这对于那些需要标准选项未能涵盖的特定设置的模块而言,尤为有用。譬如,于 POS 系统之中,您或许需要对各种交付方式进行配置,并依据您的业务运营启用特定的选项。凭借添加自定义字段,您能够为用户给予更为定制化且功能更强大的设置。

将自定义字段添加到配置设置

要将自定义字段添加到 Odoo 18 中的配置设置,请按照以下关键步骤操作:

定义自定义域

第一步是通过增添自定义字段来拓展res.config.settings 模型。此过程牵涉到创建一个新的 Python 文件,您能够于其中界定其他字段并指明其属性。举例而言,您或许期望添加一个 Boolean 字段以启用或禁用某些功能,同时添加一个 Many2many 字段来选取各类交付方法。创建一个诸如 res_config_settings.py 的 Python 文件,用以拓展 res.config.settings 模型。

from ast import literal_eval
from odoo import api, fields, models
class ResConfigSettings(models.TransientModel):
    """Extension of 'res.config.settings' for configuring delivery settings."""
    _inherit = 'res.config.settings'
    enable_delivery = fields.Boolean(string='Enable Order Types',
                                     help='This field is used to enable setting'
                                          'order types in settings')
    delivery_methods = fields.Many2many('delivery.type',
                                        string='Order Types',
                                        help='Set the delivery methods')
    @api.model
    def get_values(self):
        """Get the values from settings."""
        res = super(ResConfigSettings, self).get_values()
        icp_sudo = self.env['ir.config_parameter'].sudo()
        enable_delivery = icp_sudo.get_param('res.config.settings.enable_delivery')
        delivery_methods = icp_sudo.get_param('res.config.settings.delivery_methods')
        res.update(
            enable_delivery=enable_delivery,
            delivery_methods=[(6, 0, literal_eval(delivery_methods))] if delivery_methods else False,
        )
        return res
    def set_values(self):
        """Set the values. The new values are stored in the configuration parameters."""
        res = super(ResConfigSettings, self).set_values()
        self.env['ir.config_parameter'].sudo().set_param(
            'res.config.settings.enable_delivery', self.enable_delivery)
        self.env['ir.config_parameter'].sudo().set_param(
            'res.config.settings.delivery_methods',
            self.delivery_methods.ids)
        return res

创建自定义视图

在定义好自定义字段之后,下一步乃是创建一个视图,此视图会于配置设置当中展示这些字段。这关联到定义一个 XML 文件,该文件明确了新字段于现存配置设置表单里的显示形式和位置。借助 XML,您能够将自定义字段融入到设置视图的相应部分之中,保证它们易于获取和逻辑排布。

若要将自定义字段整合至 POS 配置设置表单当中,请于文件中定义 XML 视图,例如:res_config_settings_views.xml

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <!-- Define a view to extend POS configuration settings with delivery options -->
    <record id="view_pos_configuration_form" model="ir.ui.view">
        <field name="name">pos.config.view.form.inherit.pos.order.types</field>
        <field name="model">res.config.settings</field>
        <field name="inherit_id" ref="point_of_sale.res_config_settings_view_form"/>
        <field name="arch" type="xml">
            <xpath expr="//block[@id='pos_accounting_section']" position="after">
                <div class="row mt16 o_settings_container">
                    <div class="col-12 col-lg-6 o_setting_box">
                        <div class="o_setting_left_pane">
                            <field name="enable_delivery"/>
                        </div>
                        <div class="o_setting_right_pane">
                            <label for="enable_delivery"/>
                            <div class="text-muted">
                                Delivery products based on order types
                            </div>
                            <div class="content-group mt16" invisible="enable_delivery == False">
                                <field name="delivery_methods" widget="many2many_tags"/>
                            </div>
                        </div>
                    </div>
                </div>
            </xpath>
        </field>
    </record>
</odoo>

在定义完自定义字段并创建好视图之后,您需要对模块列表予以更新,并安装自定义模块。此步骤能够确保您的新字段融入到 Odoo 系统当中且可供运用。通过对模块列表进行更新以及安装模块,您能够让您的自定义配置设置在 Odoo 界面中得以显现并发挥效用。

于 Odoo 18 之中将自定义字段添加至配置设置,能够增强 Odoo 实例的灵活性与功能。借由扩展 res.config.settings 模型并创建自定义视图,您能够融入满足特定业务需求的其他参数。此种方法不但能够优化用户体验,还能够确保您的配置设置与您的操作要求保持契合。

无论您是对 POS 设置进行自定义,还是配置其他模块,添加和管理自定义字段的能力,皆为定制 Odoo 以适配您的业务流程提供了极具价值的选项。经由本指南,您能够安心地拓展 Odoo 配置设置,并强化系统的功能。

相关推荐
AI视觉网奇7 分钟前
undefined symbol: __nvJitLinkComplete_12_4, version libnvJitLink.so.12
人工智能·python
DannisTang16 分钟前
【无标题】
python
_oP_i22 分钟前
python ai ReAct 代理(ReAct Agent)
人工智能·python·ai
大霸王龙1 小时前
Python中PDF转Word的技术
python·pdf·word
老大白菜1 小时前
python 选择排序(Selection Sort)
python·算法·排序算法
qq_433716951 小时前
微信小程序UI自动化测试实践 !
自动化测试·软件测试·python·selenium·测试工具·压力测试
进击的羊仔2 小时前
金融风控-授信额度模型
python
新手小袁_J2 小时前
Python的列表基础知识点(超详细流程)
开发语言·python·numpy·pip·基础知识·基础知识点
EnochChen_2 小时前
PyTorch快速入门教程【小土堆】之优化器
人工智能·pytorch·python
沉默的八哥2 小时前
运维人员的Python详细学习路线
运维·python·学习