odoo-addon-base-sequence-template 18.0.1.0.0.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. odoo/addons/base_sequence_template/README.rst +118 -0
  2. odoo/addons/base_sequence_template/__init__.py +5 -0
  3. odoo/addons/base_sequence_template/__manifest__.py +20 -0
  4. odoo/addons/base_sequence_template/i18n/base_sequence_template.pot +248 -0
  5. odoo/addons/base_sequence_template/models/__init__.py +5 -0
  6. odoo/addons/base_sequence_template/models/ir_sequence.py +10 -0
  7. odoo/addons/base_sequence_template/models/ir_sequence_template.py +62 -0
  8. odoo/addons/base_sequence_template/readme/CONTRIBUTORS.md +1 -0
  9. odoo/addons/base_sequence_template/readme/DESCRIPTION.md +12 -0
  10. odoo/addons/base_sequence_template/readme/USAGE.md +19 -0
  11. odoo/addons/base_sequence_template/security/ir.model.access.csv +4 -0
  12. odoo/addons/base_sequence_template/static/description/icon.png +0 -0
  13. odoo/addons/base_sequence_template/static/description/index.html +467 -0
  14. odoo/addons/base_sequence_template/tests/__init__.py +4 -0
  15. odoo/addons/base_sequence_template/tests/test_base_sequence_template.py +117 -0
  16. odoo/addons/base_sequence_template/views/ir_sequence_template_views.xml +162 -0
  17. odoo/addons/base_sequence_template/wizard/__init__.py +4 -0
  18. odoo/addons/base_sequence_template/wizard/generate_company_sequences.py +102 -0
  19. odoo/addons/base_sequence_template/wizard/generate_company_sequences.xml +48 -0
  20. odoo_addon_base_sequence_template-18.0.1.0.0.2.dist-info/METADATA +134 -0
  21. odoo_addon_base_sequence_template-18.0.1.0.0.2.dist-info/RECORD +23 -0
  22. odoo_addon_base_sequence_template-18.0.1.0.0.2.dist-info/WHEEL +5 -0
  23. odoo_addon_base_sequence_template-18.0.1.0.0.2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,118 @@
1
+ .. image:: https://odoo-community.org/readme-banner-image
2
+ :target: https://odoo-community.org/get-involved?utm_source=readme
3
+ :alt: Odoo Community Association
4
+
5
+ ======================
6
+ Base Sequence Template
7
+ ======================
8
+
9
+ ..
10
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
11
+ !! This file is generated by oca-gen-addon-readme !!
12
+ !! changes will be overwritten. !!
13
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14
+ !! source digest: sha256:cd5023e71f0bc95e21bcc08e79b8656f4a07fe1111ffc9e4bdb8954c10318593
15
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16
+
17
+ .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
18
+ :target: https://odoo-community.org/page/development-status
19
+ :alt: Beta
20
+ .. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
21
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
22
+ :alt: License: AGPL-3
23
+ .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
24
+ :target: https://github.com/OCA/server-tools/tree/18.0/base_sequence_template
25
+ :alt: OCA/server-tools
26
+ .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
27
+ :target: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-base_sequence_template
28
+ :alt: Translate me on Weblate
29
+ .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
30
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=18.0
31
+ :alt: Try me on Runboat
32
+
33
+ |badge1| |badge2| |badge3| |badge4| |badge5|
34
+
35
+ This module provides a wizard to generate company-specific sequences
36
+ from reusable sequence templates. It is designed for multi-company
37
+ environments where each company requires its own ``ir.sequence`` records
38
+ but shares a common configuration pattern. The wizard allows defining
39
+ sequence templates that include dynamic placeholders referencing company
40
+ fields.
41
+
42
+ During generation, placeholders of the form ``%(company_id.<field>)s``
43
+ are automatically replaced with the corresponding values from each
44
+ company. Other placeholders (for example ``%(year)s``) are preserved and
45
+ evaluated later by the standard sequence engine. The module also
46
+ validates that all referenced company fields exist and checks that
47
+ required company values are not empty.
48
+
49
+ **Table of contents**
50
+
51
+ .. contents::
52
+ :local:
53
+
54
+ Usage
55
+ =====
56
+
57
+ To use this module, follow these steps:
58
+
59
+ 1. Create one or more sequence templates and define the desired prefix
60
+ and suffix, with company placeholders if desired. You can use
61
+ placeholders like:
62
+
63
+ - ``%(company_id.id)s``
64
+ - ``%(company_id.name)s``
65
+ - ``%(company_id.vat)s``
66
+
67
+ 2. Select the templates you want to use.
68
+ 3. Trigger the server action that opens the wizard to generate sequences
69
+ for companies.
70
+ 4. In the wizard, select the target companies.
71
+ 5. Confirm to generate the sequences.
72
+
73
+ The wizard will:
74
+
75
+ - Read the required company fields used in the templates.
76
+ - Validate that those fields exist and are not empty.
77
+ - Create one ``ir.sequence`` per selected company and template with the
78
+ resolved values.
79
+
80
+ Bug Tracker
81
+ ===========
82
+
83
+ Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/issues>`_.
84
+ In case of trouble, please check there if your issue has already been reported.
85
+ If you spotted it first, help us to smash it by providing a detailed and welcomed
86
+ `feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20base_sequence_template%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
87
+
88
+ Do not contact contributors directly about support or help with technical issues.
89
+
90
+ Credits
91
+ =======
92
+
93
+ Authors
94
+ -------
95
+
96
+ * ForgeFlow
97
+
98
+ Contributors
99
+ ------------
100
+
101
+ - Laura Cazorla <laura.cazorla@forgeflow.com>
102
+
103
+ Maintainers
104
+ -----------
105
+
106
+ This module is maintained by the OCA.
107
+
108
+ .. image:: https://odoo-community.org/logo.png
109
+ :alt: Odoo Community Association
110
+ :target: https://odoo-community.org
111
+
112
+ OCA, or the Odoo Community Association, is a nonprofit organization whose
113
+ mission is to support the collaborative development of Odoo features and
114
+ promote its widespread use.
115
+
116
+ This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/18.0/base_sequence_template>`_ project on GitHub.
117
+
118
+ You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
@@ -0,0 +1,5 @@
1
+ # Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com)
2
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
3
+
4
+ from . import models
5
+ from . import wizard
@@ -0,0 +1,20 @@
1
+ # Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com)
2
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
3
+
4
+ {
5
+ "name": "Base Sequence Template",
6
+ "summary": "Create a sequence template that can generate sequences for companies",
7
+ "category": "Tools",
8
+ "version": "18.0.1.0.0",
9
+ "website": "https://github.com/OCA/server-tools",
10
+ "author": "ForgeFlow, Odoo Community Association (OCA)",
11
+ "license": "AGPL-3",
12
+ "depends": ["base_setup"],
13
+ "data": [
14
+ "views/ir_sequence_template_views.xml",
15
+ "wizard/generate_company_sequences.xml",
16
+ "security/ir.model.access.csv",
17
+ ],
18
+ "installable": True,
19
+ "auto_install": False,
20
+ }
@@ -0,0 +1,248 @@
1
+ # Translation of Odoo Server.
2
+ # This file contains the translation of the following modules:
3
+ # * base_sequence_template
4
+ #
5
+ msgid ""
6
+ msgstr ""
7
+ "Project-Id-Version: Odoo Server 18.0\n"
8
+ "Report-Msgid-Bugs-To: \n"
9
+ "Last-Translator: \n"
10
+ "Language-Team: \n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: \n"
14
+ "Plural-Forms: \n"
15
+
16
+ #. module: base_sequence_template
17
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_ir_sequence_template_form
18
+ msgid ""
19
+ "<span colspan=\"2\">Current Year with Century: %(year)s</span>\n"
20
+ " <span colspan=\"2\">Current Year without Century: %(y)s</span>\n"
21
+ " <span colspan=\"2\">Month: %(month)s</span>\n"
22
+ " <span colspan=\"2\">Day: %(day)s</span>"
23
+ msgstr ""
24
+
25
+ #. module: base_sequence_template
26
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_ir_sequence_template_form
27
+ msgid ""
28
+ "<span colspan=\"2\">Day of the Year: %(doy)s</span>\n"
29
+ " <span colspan=\"2\">Week of the Year: %(woy)s</span>\n"
30
+ " <span colspan=\"2\">Day of the Week (0:Monday): %(weekday)s</span>"
31
+ msgstr ""
32
+
33
+ #. module: base_sequence_template
34
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_ir_sequence_template_form
35
+ msgid ""
36
+ "<span colspan=\"2\">Hour 00-&gt;24: %(h24)s</span>\n"
37
+ " <span colspan=\"2\">Hour 00-&gt;12: %(h12)s</span>\n"
38
+ " <span colspan=\"2\">Minute: %(min)s</span>\n"
39
+ " <span colspan=\"2\">Second: %(sec)s</span>"
40
+ msgstr ""
41
+
42
+ #. module: base_sequence_template
43
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_ir_sequence_template_form
44
+ msgid ""
45
+ "<span colspan=\"4\">\n"
46
+ " <strong>Company Fields</strong>\n"
47
+ " </span>\n"
48
+ " <span colspan=\"4\">You can use any company flat field in your prefix or suffix</span>"
49
+ msgstr ""
50
+
51
+ #. module: base_sequence_template
52
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_ir_sequence_template_form
53
+ msgid ""
54
+ "<span colspan=\"4\">Company ID: %(company_id.id)s</span>\n"
55
+ " <span colspan=\"4\">Company Name: %(company_id.name)s</span>\n"
56
+ " <span colspan=\"4\">Company Registry: %(company_id.company_registry)s</span>"
57
+ msgstr ""
58
+
59
+ #. module: base_sequence_template
60
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_generate_company_sequences_wizard_form
61
+ msgid ""
62
+ "<strong>Warning:</strong>\n"
63
+ " Be careful! Generating sequences may override or duplicate\n"
64
+ " the currently configured sequences for the selected companies.\n"
65
+ " Only proceed if you know what you are doing."
66
+ msgstr ""
67
+
68
+ #. module: base_sequence_template
69
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__active
70
+ msgid "Active"
71
+ msgstr ""
72
+
73
+ #. module: base_sequence_template
74
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_generate_company_sequences_wizard_form
75
+ msgid "Cancel"
76
+ msgstr ""
77
+
78
+ #. module: base_sequence_template
79
+ #: model:ir.model.fields,field_description:base_sequence_template.field_generate_company_sequences_wizard__company_ids
80
+ msgid "Companies"
81
+ msgstr ""
82
+
83
+ #. module: base_sequence_template
84
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_ir_sequence_template_form
85
+ msgid "Company legend (for prefix, suffix)"
86
+ msgstr ""
87
+
88
+ #. module: base_sequence_template
89
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_generate_company_sequences_wizard_form
90
+ msgid "Confirm"
91
+ msgstr ""
92
+
93
+ #. module: base_sequence_template
94
+ #: model:ir.model.fields,field_description:base_sequence_template.field_generate_company_sequences_wizard__create_uid
95
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__create_uid
96
+ msgid "Created by"
97
+ msgstr ""
98
+
99
+ #. module: base_sequence_template
100
+ #: model:ir.model.fields,field_description:base_sequence_template.field_generate_company_sequences_wizard__create_date
101
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__create_date
102
+ msgid "Created on"
103
+ msgstr ""
104
+
105
+ #. module: base_sequence_template
106
+ #: model:ir.model.fields,field_description:base_sequence_template.field_generate_company_sequences_wizard__display_name
107
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__display_name
108
+ msgid "Display Name"
109
+ msgstr ""
110
+
111
+ #. module: base_sequence_template
112
+ #: model:ir.actions.act_window,name:base_sequence_template.action_generate_company_sequences_wizard
113
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_generate_company_sequences_wizard_form
114
+ msgid "Generate Company Sequences"
115
+ msgstr ""
116
+
117
+ #. module: base_sequence_template
118
+ #: model:ir.actions.server,name:base_sequence_template.action_open_generate_sequences_wizard
119
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_ir_sequence_template_form
120
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_ir_sequence_template_tree
121
+ msgid "Generate Sequences"
122
+ msgstr ""
123
+
124
+ #. module: base_sequence_template
125
+ #: model:ir.model,name:base_sequence_template.model_generate_company_sequences_wizard
126
+ msgid "Generate Sequences for Company"
127
+ msgstr ""
128
+
129
+ #. module: base_sequence_template
130
+ #: model:ir.model.fields,field_description:base_sequence_template.field_generate_company_sequences_wizard__id
131
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__id
132
+ msgid "ID"
133
+ msgstr ""
134
+
135
+ #. module: base_sequence_template
136
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__implementation
137
+ msgid "Implementation"
138
+ msgstr ""
139
+
140
+ #. module: base_sequence_template
141
+ #: model:ir.model.fields,field_description:base_sequence_template.field_generate_company_sequences_wizard__write_uid
142
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__write_uid
143
+ msgid "Last Updated by"
144
+ msgstr ""
145
+
146
+ #. module: base_sequence_template
147
+ #: model:ir.model.fields,field_description:base_sequence_template.field_generate_company_sequences_wizard__write_date
148
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__write_date
149
+ msgid "Last Updated on"
150
+ msgstr ""
151
+
152
+ #. module: base_sequence_template
153
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_ir_sequence_template_form
154
+ msgid "Legend (for prefix, suffix)"
155
+ msgstr ""
156
+
157
+ #. module: base_sequence_template
158
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__name
159
+ msgid "Name"
160
+ msgstr ""
161
+
162
+ #. module: base_sequence_template
163
+ #: model:ir.model.fields.selection,name:base_sequence_template.selection__ir_sequence_template__implementation__no_gap
164
+ msgid "No gap"
165
+ msgstr ""
166
+
167
+ #. module: base_sequence_template
168
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__prefix
169
+ msgid "Prefix"
170
+ msgstr ""
171
+
172
+ #. module: base_sequence_template
173
+ #: model:ir.model.fields,help:base_sequence_template.field_ir_sequence_template__prefix
174
+ msgid "Prefix value of the record for the sequence"
175
+ msgstr ""
176
+
177
+ #. module: base_sequence_template
178
+ #: model:ir.model,name:base_sequence_template.model_ir_sequence
179
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__sequence_ids
180
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_ir_sequence_template_form
181
+ msgid "Sequence"
182
+ msgstr ""
183
+
184
+ #. module: base_sequence_template
185
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__code
186
+ msgid "Sequence Code"
187
+ msgstr ""
188
+
189
+ #. module: base_sequence_template
190
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__sequence_count
191
+ msgid "Sequence Count"
192
+ msgstr ""
193
+
194
+ #. module: base_sequence_template
195
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__padding
196
+ msgid "Sequence Size"
197
+ msgstr ""
198
+
199
+ #. module: base_sequence_template
200
+ #: model:ir.model,name:base_sequence_template.model_ir_sequence_template
201
+ msgid "Sequence Template"
202
+ msgstr ""
203
+
204
+ #. module: base_sequence_template
205
+ #: model:ir.actions.act_window,name:base_sequence_template.action_ir_sequence_template
206
+ #: model:ir.model.fields,field_description:base_sequence_template.field_generate_company_sequences_wizard__template_ids
207
+ #: model:ir.ui.menu,name:base_sequence_template.menu_ir_sequence_template
208
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_ir_sequence_template_form
209
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_ir_sequence_template_tree
210
+ msgid "Sequence Templates"
211
+ msgstr ""
212
+
213
+ #. module: base_sequence_template
214
+ #: model_terms:ir.ui.view,arch_db:base_sequence_template.view_ir_sequence_template_form
215
+ msgid "Sequences"
216
+ msgstr ""
217
+
218
+ #. module: base_sequence_template
219
+ #: model:ir.model.fields,field_description:base_sequence_template.field_generate_company_sequences_wizard__smart_search
220
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence__smart_search
221
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__smart_search
222
+ msgid "Smart Search"
223
+ msgstr ""
224
+
225
+ #. module: base_sequence_template
226
+ #: model:ir.model.fields.selection,name:base_sequence_template.selection__ir_sequence_template__implementation__standard
227
+ msgid "Standard"
228
+ msgstr ""
229
+
230
+ #. module: base_sequence_template
231
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__number_increment
232
+ msgid "Step"
233
+ msgstr ""
234
+
235
+ #. module: base_sequence_template
236
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence_template__suffix
237
+ msgid "Suffix"
238
+ msgstr ""
239
+
240
+ #. module: base_sequence_template
241
+ #: model:ir.model.fields,help:base_sequence_template.field_ir_sequence_template__suffix
242
+ msgid "Suffix value of the record for the sequence"
243
+ msgstr ""
244
+
245
+ #. module: base_sequence_template
246
+ #: model:ir.model.fields,field_description:base_sequence_template.field_ir_sequence__template_id
247
+ msgid "Template"
248
+ msgstr ""
@@ -0,0 +1,5 @@
1
+ # Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com)
2
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
3
+
4
+ from . import ir_sequence
5
+ from . import ir_sequence_template
@@ -0,0 +1,10 @@
1
+ # Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com)
2
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
3
+
4
+ from odoo import fields, models
5
+
6
+
7
+ class IrSequence(models.Model):
8
+ _inherit = "ir.sequence"
9
+
10
+ template_id = fields.Many2one("ir.sequence.template", ondelete="set null")
@@ -0,0 +1,62 @@
1
+ # Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com)
2
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
3
+
4
+ from odoo import api, fields, models
5
+
6
+
7
+ class IrSequenceTemplate(models.Model):
8
+ _name = "ir.sequence.template"
9
+ _description = "Sequence Template"
10
+ _order = "name"
11
+ _allow_sudo_commands = False
12
+
13
+ active = fields.Boolean(default=True)
14
+
15
+ name = fields.Char(required=True)
16
+ code = fields.Char(string="Sequence Code")
17
+ implementation = fields.Selection(
18
+ [("standard", "Standard"), ("no_gap", "No gap")],
19
+ required=True,
20
+ default="standard",
21
+ )
22
+ prefix = fields.Char(help="Prefix value of the record for the sequence", trim=False)
23
+ suffix = fields.Char(help="Suffix value of the record for the sequence", trim=False)
24
+ number_increment = fields.Integer(string="Step", required=True, default=1)
25
+ padding = fields.Integer(string="Sequence Size", required=True, default=0)
26
+
27
+ sequence_ids = fields.One2many("ir.sequence", "template_id")
28
+ sequence_count = fields.Integer(compute="_compute_sequence_count")
29
+
30
+ @api.depends("sequence_ids")
31
+ def _compute_sequence_count(self):
32
+ for record in self:
33
+ record.sequence_count = len(record.sequence_ids)
34
+
35
+ def action_view_sequences(self):
36
+ self.ensure_one()
37
+ return {
38
+ "name": "Sequences",
39
+ "type": "ir.actions.act_window",
40
+ "res_model": "ir.sequence",
41
+ "view_mode": "list,form",
42
+ "domain": [("template_id", "=", self.id)],
43
+ "context": {"default_template_id": self.id},
44
+ }
45
+
46
+ def action_generate_sequences(self):
47
+ return self.open_generate_sequences_wizard()
48
+
49
+ def open_generate_sequences_wizard(self):
50
+ return {
51
+ "name": "Generate Sequences",
52
+ "type": "ir.actions.act_window",
53
+ "view_mode": "form",
54
+ "res_model": "generate.company.sequences.wizard",
55
+ "target": "new",
56
+ "view_id": self.env.ref(
57
+ "base_sequence_template.view_generate_company_sequences_wizard_form"
58
+ ).id,
59
+ "context": {
60
+ "default_template_ids": self.ids,
61
+ },
62
+ }
@@ -0,0 +1 @@
1
+ - Laura Cazorla \<<laura.cazorla@forgeflow.com>\>
@@ -0,0 +1,12 @@
1
+ This module provides a wizard to generate company-specific sequences from
2
+ reusable sequence templates. It is designed for multi-company environments
3
+ where each company requires its own `ir.sequence` records but shares a common
4
+ configuration pattern. The wizard allows defining sequence templates that
5
+ include dynamic placeholders referencing company fields.
6
+
7
+ During generation, placeholders of the form `%(company_id.<field>)s` are
8
+ automatically replaced with the corresponding values from each company. Other
9
+ placeholders (for example `%(year)s`) are preserved and evaluated later by the
10
+ standard sequence engine. The module also validates that all referenced company
11
+ fields exist and checks that required company values are not empty.
12
+
@@ -0,0 +1,19 @@
1
+ To use this module, follow these steps:
2
+
3
+ 1. Create one or more sequence templates and define the desired prefix and
4
+ suffix, with company placeholders if desired. You can use placeholders like:
5
+ * `%(company_id.id)s`
6
+ * `%(company_id.name)s`
7
+ * `%(company_id.vat)s`
8
+ 2. Select the templates you want to use.
9
+ 3. Trigger the server action that opens the wizard to generate sequences for
10
+ companies.
11
+ 4. In the wizard, select the target companies.
12
+ 5. Confirm to generate the sequences.
13
+
14
+ The wizard will:
15
+ - Read the required company fields used in the templates.
16
+ - Validate that those fields exist and are not empty.
17
+ - Create one `ir.sequence` per selected company and template with the resolved
18
+ values.
19
+
@@ -0,0 +1,4 @@
1
+ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
2
+ access_ir_sequence_template,access_ir_sequence_template,model_ir_sequence_template,base.group_user,1,0,0,0
3
+ access_ir_sequence_template_system,access_ir_sequence_template_system,model_ir_sequence_template,base.group_system,1,1,1,1
4
+ access_generate_company_sequences_wizard,access_generate_company_sequences_wizard,model_generate_company_sequences_wizard,base.group_system,1,1,1,1