iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
Odoo

30天就算 0 基礎,也能使用 GenAI 創造簡單的 Odoo 模組應用系列 第 19

【Day19】Odoo Data File (XML 格式) 預載電商,產品種類、貨幣相關的資料

  • 分享至 

  • xImage
  •  

我們在 Odoo 中處理 ERP 和電商應用時,模型定義和資料載入通常涵蓋了與產品、貨幣、國家等相關的結構和資料。這裡將會展示一個簡單的 Odoo 模型(Model)定義,並給出相應的 XML 資料文件來定義「產品種類」、「貨幣」以及「國家」相關的資料。

Model 定義

首先,讓我們定義 Odoo 的模型結構,這些模型代表了電商和 ERP 中的一些核心概念,例如「產品種類」、「貨幣」以及「國家」。這裡展示的模型定義會放在 models.py 文件中。

from odoo import models, fields

# 產品類別模型
class ProductCategory(models.Model):
    _name = 'my_module.product.category'
    _description = 'Product Category'

    name = fields.Char(string='Category Name', required=True)
    description = fields.Text(string='Category Description')

# 貨幣模型
class Currency(models.Model):
    _name = 'my_module.currency'
    _description = 'Currency'

    name = fields.Char(string='Currency Name', required=True)
    code = fields.Char(string='Currency Code', required=True)
    symbol = fields.Char(string='Symbol')
    rate = fields.Float(string='Exchange Rate')

# 國家模型
class Country(models.Model):
    _name = 'my_module.country'
    _description = 'Country'

    name = fields.Char(string='Country Name', required=True)
    code = fields.Char(string='Country Code', required=True)
    currency_id = fields.Many2one('my_module.currency', string='Currency')

ProductCategory:產品類別,具有名稱和描述。
Currency:貨幣,具有名稱、代碼、符號以及匯率。
Country:國家,具有名稱、代碼,並且每個國家關聯到一個貨幣。

XML Data File 定義

接下來,我們來看看如何用 XML 來定義資料,比如產品種類、貨幣和國家。這些 XML 文件會用來初始化模組中的基礎資料。這樣的資料載入非常適合 ERP 和電商系統,特別是涉及到國際市場和多種貨幣的情況。

data/product_category_data.xml

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <!-- 定義產品類別 -->
    <record id="product_category_electronics" model="my_module.product.category">
        <field name="name">Electronics</field>
        <field name="description">All kinds of electronic devices</field>
    </record>

    <record id="product_category_fashion" model="my_module.product.category">
        <field name="name">Fashion</field>
        <field name="description">Clothing, shoes, and accessories</field>
    </record>
</odoo>

這裡定義了兩個產品類別:「電子產品」和「時尚用品」。

data/currency_data.xml

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <!-- 定義貨幣 -->
    <record id="currency_usd" model="my_module.currency">
        <field name="name">US Dollar</field>
        <field name="code">USD</field>
        <field name="symbol">$</field>
        <field name="rate">1.00</field>
    </record>

    <record id="currency_eur" model="my_module.currency">
        <field name="name">Euro</field>
        <field name="code">EUR</field>
        <field name="symbol">€</field>
        <field name="rate">0.85</field>
    </record>
</odoo>

這裡定義了兩種貨幣:「美元(USD)」和「歐元(EUR)」,並設定了匯率。

data/country_data.xml

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <!-- 定義國家 -->
    <record id="country_usa" model="my_module.country">
        <field name="name">United States</field>
        <field name="code">US</field>
        <field name="currency_id" ref="currency_usd"/>
    </record>

    <record id="country_france" model="my_module.country">
        <field name="name">France</field>
        <field name="code">FR</field>
        <field name="currency_id" ref="currency_eur"/>
    </record>
</odoo>

這裡定義了兩個國家:「美國(US)」和「法國(FR)」,並且每個國家都關聯了一種貨幣。

為什麼使用 XML 而非 Python?

資料定義與結構化:

  • XML 是一種結構化標記語言,適合定義靜態的資料。ERP 系統通常有大量需要事先定義的靜態資料結構,例如產品、客戶、發票等。這些資料結構可以在部署時通過 XML 文件來描述和初始化,而不需要依賴 Python 腳本。
  • Odoo 的 ir.model.data 模型使用 XML 文件來載入資料,這樣系統能夠快速地讀取和匯入資料,尤其是在模組初始化和升級時。

資料的靜態化與易維護性:

XML 主要用於定義靜態數據,這些數據不會頻繁變動。比如,預設的公司資訊、產品類別、用戶角色等,都可以透過 XML 文件進行初始化配置。相比 Python 腳本,這些定義文件更容易在不同系統環境中重複使用,並且 XML 更容易維護和版本控制。

小結

總結來說,XML 在 Odoo 和 ERP 系統中扮演著重要角色,因為它適合用來定義靜態資料結構、視圖佈局,並支持國際化等功能。XML 的結構化使其易於維護、版本控制,並且與 Python 結合使用,提供了強大的靈活性。


上一篇
【Day18】透過 JSON 和 字典 (Dictionary) 來解釋 XML格式語法
下一篇
【Day20】CSV 檔案 (Excel) 在 Odoo ERP 中的應用:批量數據管理的高效工具
系列文
30天就算 0 基礎,也能使用 GenAI 創造簡單的 Odoo 模組應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言