38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
# Copyright 2023 Moduon Team S.L.
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0)
|
|
|
|
|
|
from odoo import api, models
|
|
|
|
SEQUENCE_PREFIX = "base_sequence_default"
|
|
|
|
|
|
class Base(models.AbstractModel):
|
|
_inherit = "base"
|
|
|
|
@api.model
|
|
def default_get(self, fields_list):
|
|
"""Produce sequenced defaults if DB is configured for that."""
|
|
res = super().default_get(fields_list)
|
|
prefix = f"{SEQUENCE_PREFIX}.{self._name}.fields."
|
|
model_sequences = (
|
|
self.env["ir.sequence"]
|
|
.sudo()
|
|
.search(
|
|
[
|
|
("code", "=like", f"{prefix}%"),
|
|
("company_id", "in", [self.env.company.id, False]),
|
|
],
|
|
order="company_id",
|
|
)
|
|
)
|
|
sequences_by_field = {seq.code[len(prefix) :]: seq for seq in model_sequences}
|
|
for fname in fields_list:
|
|
try:
|
|
seq = sequences_by_field[fname]
|
|
except KeyError:
|
|
# No sequence? No problem
|
|
continue
|
|
res[fname] = seq.next_by_id()
|
|
return res
|