🎉 Initialize module repository

This commit is contained in:
Marc Wempe
2026-04-03 23:08:57 +02:00
commit e9f81ca26d
10 changed files with 603 additions and 0 deletions

8
.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
__pycache__/
*.py[cod]
.DS_Store
.pytest_cache/
.ruff_cache/
*.log
*.swp
*~

0
__init__.py Normal file
View File

34
__manifest__.py Normal file
View File

@@ -0,0 +1,34 @@
{
"name": "MVD TCG Commerce",
"summary": "Commerce taxonomy and catalog seed data for TCG products",
"version": "19.0.7.1.0",
"description": """
Commerce taxonomy foundation for the MVD trading card game suite.
This module intentionally stays data-focused. It does not create products,
import sources, or attach operational workflows yet. Instead it prepares the
commerce layer with:
- a dedicated commerce manager role
- a seeded internal product category tree for typical TCG products
- a seeded public shop category tree for eCommerce browsing
- curated product tags for common TCG merchandise and sealed products
The category tree covers common product families such as singles, booster
packs, booster displays, bundles, preconstructed decks, collections, and
accessories. Product mapping, source handling, stock logic, and
card-to-product relationships will follow in later commerce modules.
""",
"category": "Inventory/Product",
"author": "Mantjeverse Digital",
"license": "LGPL-3",
"depends": ["mvd_tcg_base", "sale_management", "stock", "website_sale"],
"data": [
"security/security.xml",
"security/ir.model.access.csv",
"data/product_category_data.xml",
"data/product_public_category_data.xml",
"data/product_tag_data.xml",
],
"application": False,
"installable": True,
}

View File

@@ -0,0 +1,231 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="1">
<record id="product_category_tcg_root" model="product.category">
<field name="name">TCG</field>
</record>
<record id="product_category_tcg_magic" model="product.category">
<field name="name">Magic: The Gathering</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_tcg_root"/>
</record>
<record id="product_category_tcg_accessories" model="product.category">
<field name="name">Zubehör</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_tcg_root"/>
</record>
<record id="product_category_mtg_singles" model="product.category">
<field name="name">Singles</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_tcg_magic"/>
</record>
<record id="product_category_mtg_individual_cards" model="product.category">
<field name="name">Einzelkarten</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_singles"/>
</record>
<record id="product_category_mtg_playsets" model="product.category">
<field name="name">Playsets</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_singles"/>
</record>
<record id="product_category_mtg_tokens" model="product.category">
<field name="name">Token &amp; Embleme</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_singles"/>
</record>
<record id="product_category_mtg_sealed" model="product.category">
<field name="name">Versiegelte Produkte</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_tcg_magic"/>
</record>
<record id="product_category_mtg_booster_packs" model="product.category">
<field name="name">Booster-Packs</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_sealed"/>
</record>
<record id="product_category_mtg_play_boosters" model="product.category">
<field name="name">Play-Booster</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_booster_packs"/>
</record>
<record id="product_category_mtg_draft_boosters" model="product.category">
<field name="name">Draft-Booster</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_booster_packs"/>
</record>
<record id="product_category_mtg_set_boosters" model="product.category">
<field name="name">Set-Booster</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_booster_packs"/>
</record>
<record id="product_category_mtg_collector_boosters" model="product.category">
<field name="name">Collector-Booster</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_booster_packs"/>
</record>
<record id="product_category_mtg_jumpstart_boosters" model="product.category">
<field name="name">Jumpstart-Booster</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_booster_packs"/>
</record>
<record id="product_category_mtg_theme_boosters" model="product.category">
<field name="name">Theme-Booster</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_booster_packs"/>
</record>
<record id="product_category_mtg_prerelease_packs" model="product.category">
<field name="name">Prerelease-Packs</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_booster_packs"/>
</record>
<record id="product_category_mtg_booster_displays" model="product.category">
<field name="name">Booster-Displays</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_sealed"/>
</record>
<record id="product_category_mtg_play_booster_displays" model="product.category">
<field name="name">Play-Booster-Displays</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_booster_displays"/>
</record>
<record id="product_category_mtg_draft_booster_displays" model="product.category">
<field name="name">Draft-Booster-Displays</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_booster_displays"/>
</record>
<record id="product_category_mtg_set_booster_displays" model="product.category">
<field name="name">Set-Booster-Displays</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_booster_displays"/>
</record>
<record id="product_category_mtg_collector_booster_displays" model="product.category">
<field name="name">Collector-Booster-Displays</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_booster_displays"/>
</record>
<record id="product_category_mtg_jumpstart_displays" model="product.category">
<field name="name">Jumpstart-Displays</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_booster_displays"/>
</record>
<record id="product_category_mtg_theme_booster_displays" model="product.category">
<field name="name">Theme-Booster-Displays</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_booster_displays"/>
</record>
<record id="product_category_mtg_bundles" model="product.category">
<field name="name">Bundles &amp; Kits</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_sealed"/>
</record>
<record id="product_category_mtg_bundle" model="product.category">
<field name="name">Bundles</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_bundles"/>
</record>
<record id="product_category_mtg_gift_bundles" model="product.category">
<field name="name">Geschenk-Bundles</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_bundles"/>
</record>
<record id="product_category_mtg_fat_packs" model="product.category">
<field name="name">Fat Packs</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_bundles"/>
</record>
<record id="product_category_mtg_prerelease_kits" model="product.category">
<field name="name">Prerelease-Kits</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_bundles"/>
</record>
<record id="product_category_mtg_starter_kits" model="product.category">
<field name="name">Starter-Kits</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_bundles"/>
</record>
<record id="product_category_mtg_preconstructed_decks" model="product.category">
<field name="name">Vorkonstruierte Decks</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_sealed"/>
</record>
<record id="product_category_mtg_commander_decks" model="product.category">
<field name="name">Commander Decks</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_preconstructed_decks"/>
</record>
<record id="product_category_mtg_starter_decks" model="product.category">
<field name="name">Starter-Decks</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_preconstructed_decks"/>
</record>
<record id="product_category_mtg_challenger_decks" model="product.category">
<field name="name">Challenger-Decks</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_preconstructed_decks"/>
</record>
<record id="product_category_mtg_intro_decks" model="product.category">
<field name="name">Intro-Decks</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_preconstructed_decks"/>
</record>
<record id="product_category_mtg_planeswalker_decks" model="product.category">
<field name="name">Planeswalker-Decks</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_preconstructed_decks"/>
</record>
<record id="product_category_mtg_special_editions" model="product.category">
<field name="name">Sondereditionen</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_sealed"/>
</record>
<record id="product_category_mtg_secret_lair" model="product.category">
<field name="name">Secret-Lair-Drops</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_special_editions"/>
</record>
<record id="product_category_mtg_anthologies" model="product.category">
<field name="name">Anthologien &amp; Box-Sets</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_special_editions"/>
</record>
<record id="product_category_mtg_collections" model="product.category">
<field name="name">Sammlungen &amp; Lots</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_tcg_magic"/>
</record>
<record id="product_category_mtg_bulk_lots" model="product.category">
<field name="name">Bulk Lots</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_collections"/>
</record>
<record id="product_category_mtg_collections_child" model="product.category">
<field name="name">Sammlungen</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_mtg_collections"/>
</record>
<record id="product_category_tcg_sleeves" model="product.category">
<field name="name">Sleeves</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_tcg_accessories"/>
</record>
<record id="product_category_tcg_deck_boxes" model="product.category">
<field name="name">Deckboxen</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_tcg_accessories"/>
</record>
<record id="product_category_tcg_binders" model="product.category">
<field name="name">Binders</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_tcg_accessories"/>
</record>
<record id="product_category_tcg_playmats" model="product.category">
<field name="name">Playmats</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_tcg_accessories"/>
</record>
<record id="product_category_tcg_dice_counters" model="product.category">
<field name="name">Würfel &amp; Marker</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_category_tcg_accessories"/>
</record>
</odoo>

View File

@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="1">
<record id="product_public_category_tcg_root" model="product.public.category">
<field name="name">TCG</field>
<field name="sequence">10</field>
</record>
<record id="product_public_category_tcg_magic" model="product.public.category">
<field name="name">Magic: The Gathering</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_root"/>
<field name="sequence">10</field>
</record>
<record id="product_public_category_tcg_accessories" model="product.public.category">
<field name="name">Zubehör</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_root"/>
<field name="sequence">20</field>
</record>
<record id="product_public_category_mtg_singles" model="product.public.category">
<field name="name">Einzelkarten</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_magic"/>
<field name="sequence">10</field>
</record>
<record id="product_public_category_mtg_playsets" model="product.public.category">
<field name="name">Playsets</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_magic"/>
<field name="sequence">20</field>
</record>
<record id="product_public_category_mtg_tokens" model="product.public.category">
<field name="name">Token &amp; Embleme</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_magic"/>
<field name="sequence">30</field>
</record>
<record id="product_public_category_mtg_boosters" model="product.public.category">
<field name="name">Booster</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_magic"/>
<field name="sequence">40</field>
</record>
<record id="product_public_category_mtg_displays" model="product.public.category">
<field name="name">Displays</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_magic"/>
<field name="sequence">50</field>
</record>
<record id="product_public_category_mtg_bundles" model="product.public.category">
<field name="name">Bundles &amp; Kits</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_magic"/>
<field name="sequence">60</field>
</record>
<record id="product_public_category_mtg_commander" model="product.public.category">
<field name="name">Commander Decks</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_magic"/>
<field name="sequence">70</field>
</record>
<record id="product_public_category_mtg_special" model="product.public.category">
<field name="name">Sondereditionen</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_magic"/>
<field name="sequence">80</field>
</record>
<record id="product_public_category_mtg_collections" model="product.public.category">
<field name="name">Sammlungen &amp; Lots</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_magic"/>
<field name="sequence">90</field>
</record>
<record id="product_public_category_tcg_sleeves" model="product.public.category">
<field name="name">Sleeves</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_accessories"/>
<field name="sequence">10</field>
</record>
<record id="product_public_category_tcg_deck_boxes" model="product.public.category">
<field name="name">Deckboxen</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_accessories"/>
<field name="sequence">20</field>
</record>
<record id="product_public_category_tcg_binders" model="product.public.category">
<field name="name">Binders</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_accessories"/>
<field name="sequence">30</field>
</record>
<record id="product_public_category_tcg_playmats" model="product.public.category">
<field name="name">Playmats</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_accessories"/>
<field name="sequence">40</field>
</record>
<record id="product_public_category_tcg_dice_counters" model="product.public.category">
<field name="name">Würfel &amp; Marker</field>
<field name="parent_id" ref="mvd_tcg_commerce.product_public_category_tcg_accessories"/>
<field name="sequence">50</field>
</record>
</odoo>

170
data/product_tag_data.xml Normal file
View File

@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="1">
<record id="product_tag_tcg_mtg" model="product.tag">
<field name="name">Magic: The Gathering</field>
<field name="sequence">10</field>
<field name="color">#2563eb</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_singles" model="product.tag">
<field name="name">Einzelkarten</field>
<field name="sequence">20</field>
<field name="color">#0f766e</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_playset" model="product.tag">
<field name="name">Playset</field>
<field name="sequence">30</field>
<field name="color">#0891b2</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_token" model="product.tag">
<field name="name">Token &amp; Embleme</field>
<field name="sequence">40</field>
<field name="color">#7c3aed</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_sealed" model="product.tag">
<field name="name">Versiegelt</field>
<field name="sequence">50</field>
<field name="color">#1d4ed8</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_booster" model="product.tag">
<field name="name">Booster</field>
<field name="sequence">60</field>
<field name="color">#1d4ed8</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_play_booster" model="product.tag">
<field name="name">Play Booster</field>
<field name="sequence">70</field>
<field name="color">#2563eb</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_draft_booster" model="product.tag">
<field name="name">Draft Booster</field>
<field name="sequence">80</field>
<field name="color">#2563eb</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_set_booster" model="product.tag">
<field name="name">Set Booster</field>
<field name="sequence">90</field>
<field name="color">#2563eb</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_collector_booster" model="product.tag">
<field name="name">Collector Booster</field>
<field name="sequence">100</field>
<field name="color">#7c3aed</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_jumpstart" model="product.tag">
<field name="name">Jumpstart</field>
<field name="sequence">110</field>
<field name="color">#9333ea</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_display" model="product.tag">
<field name="name">Display</field>
<field name="sequence">120</field>
<field name="color">#0f766e</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_bundle" model="product.tag">
<field name="name">Bundle</field>
<field name="sequence">130</field>
<field name="color">#ea580c</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_prerelease" model="product.tag">
<field name="name">Prerelease</field>
<field name="sequence">140</field>
<field name="color">#f97316</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_commander" model="product.tag">
<field name="name">Commander</field>
<field name="sequence">150</field>
<field name="color">#dc2626</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_preconstructed" model="product.tag">
<field name="name">Vorkonstruiert</field>
<field name="sequence">160</field>
<field name="color">#b91c1c</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_secret_lair" model="product.tag">
<field name="name">Secret Lair</field>
<field name="sequence">170</field>
<field name="color">#be185d</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_collection" model="product.tag">
<field name="name">Sammlung</field>
<field name="sequence">180</field>
<field name="color">#475569</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_accessory" model="product.tag">
<field name="name">Zubehör</field>
<field name="sequence">190</field>
<field name="color">#4b5563</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_sleeves" model="product.tag">
<field name="name">Sleeves</field>
<field name="sequence">200</field>
<field name="color">#1f2937</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_deck_box" model="product.tag">
<field name="name">Deckbox</field>
<field name="sequence">210</field>
<field name="color">#1f2937</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_binder" model="product.tag">
<field name="name">Binder</field>
<field name="sequence">220</field>
<field name="color">#1f2937</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_playmat" model="product.tag">
<field name="name">Playmat</field>
<field name="sequence">230</field>
<field name="color">#1f2937</field>
<field name="visible_to_customers">True</field>
</record>
<record id="product_tag_tcg_dice_counters" model="product.tag">
<field name="name">Würfel &amp; Marker</field>
<field name="sequence">240</field>
<field name="color">#1f2937</field>
<field name="visible_to_customers">True</field>
</record>
</odoo>

26
i18n/de.po Normal file
View File

@@ -0,0 +1,26 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mvd_tcg_commerce
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0\n"
"POT-Creation-Date: 2026-04-03 00:00+0000\n"
"PO-Revision-Date: 2026-04-03 00:00+0000\n"
"Last-Translator: Codex\n"
"Language-Team: German\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: mvd_tcg_commerce
#: model:res.groups,name:mvd_tcg_commerce.mvd_tcg_commerce_group_manager
msgid "Commerce Manager"
msgstr "Commerce-Manager"
#. module: mvd_tcg_commerce
#: model:res.groups,name:mvd_tcg_commerce.mvd_tcg_commerce_group_administrator
msgid "Commerce Administrator"
msgstr "Commerce-Administrator"

0
models/__init__.py Normal file
View File

View File

@@ -0,0 +1,5 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_product_public_category_mvd_tcg_commerce_manager,product.public.category mvd_tcg_commerce manager,website_sale.model_product_public_category,mvd_tcg_commerce.mvd_tcg_commerce_group_manager,1,1,1,1
access_product_tag_mvd_tcg_commerce_manager,product.tag mvd_tcg_commerce manager,product.model_product_tag,mvd_tcg_commerce.mvd_tcg_commerce_group_manager,1,1,1,1
access_product_public_category_mvd_tcg_commerce_system,product.public.category mvd_tcg_commerce system,website_sale.model_product_public_category,base.group_system,1,1,1,1
access_product_tag_mvd_tcg_commerce_system,product.tag mvd_tcg_commerce system,product.model_product_tag,base.group_system,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_product_public_category_mvd_tcg_commerce_manager product.public.category mvd_tcg_commerce manager website_sale.model_product_public_category mvd_tcg_commerce.mvd_tcg_commerce_group_manager 1 1 1 1
3 access_product_tag_mvd_tcg_commerce_manager product.tag mvd_tcg_commerce manager product.model_product_tag mvd_tcg_commerce.mvd_tcg_commerce_group_manager 1 1 1 1
4 access_product_public_category_mvd_tcg_commerce_system product.public.category mvd_tcg_commerce system website_sale.model_product_public_category base.group_system 1 1 1 1
5 access_product_tag_mvd_tcg_commerce_system product.tag mvd_tcg_commerce system product.model_product_tag base.group_system 1 1 1 1

26
security/security.xml Normal file
View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="mvd_tcg_commerce_group_manager" model="res.groups">
<field name="name">Commerce Manager</field>
<field name="privilege_id" ref="mvd_tcg_base.mvd_tcg_base_privilege_access"/>
<field
name="implied_ids"
eval="[
(4, ref('mvd_tcg_base.mvd_tcg_base_group_manager')),
(4, ref('product.group_product_manager'))
]"
/>
</record>
<record id="mvd_tcg_commerce_group_administrator" model="res.groups">
<field name="name">Commerce Administrator</field>
<field name="privilege_id" ref="mvd_tcg_base.mvd_tcg_base_privilege_access"/>
<field
name="implied_ids"
eval="[
(4, ref('mvd_tcg_commerce.mvd_tcg_commerce_group_manager')),
(4, ref('mvd_tcg_base.mvd_tcg_base_group_administrator'))
]"
/>
</record>
</odoo>