Initial commit: Odoo 18.0-20251222 extra-addons
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
tests / Detect unreleased dependencies (push) Has been cancelled
tests / test with OCB (push) Has been cancelled
tests / test with Odoo (push) Has been cancelled

This commit is contained in:
tocmo0nlord
2026-03-13 20:43:25 +00:00
parent 36e847a7df
commit adbe430761
9472 changed files with 1265727 additions and 0 deletions

View File

@@ -0,0 +1 @@
from . import account_move_renumber_wizard

View File

@@ -0,0 +1,93 @@
# Copyright 2022 Moduon
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from datetime import date
from odoo import _, api, exceptions, fields, models
class AccountMoveRenumberWizard(models.TransientModel):
_name = "account.move.renumber.wizard"
_description = "Account move entry renumbering wizard"
starting_date = fields.Date(
required=True,
default=lambda self: self._default_starting_date(),
help="Renumber account moves starting this day.",
)
starting_number = fields.Integer(
default=1, help="Reset sequence to this number before starting."
)
available_sequence_ids = fields.Many2many(
comodel_name="ir.sequence",
string="Available sequences",
default=lambda self: self._default_available_sequence_ids(),
)
sequence_id = fields.Many2one(
comodel_name="ir.sequence",
string="Sequence",
required=True,
default=lambda self: self._default_entry_number_sequence(),
domain="[('id', 'in', available_sequence_ids)]",
help="Sequence to use for renumbering. "
"Affects all journals that use this sequence.",
)
@api.model
def _default_starting_date(self):
"""Start by default on day 1 of current year."""
return date(date.today().year, 1, 1)
@api.model
def _default_entry_number_sequence(self):
"""Get default sequence if it exists."""
return self.env["ir.sequence"].search(
[
"&",
("code", "=", "account_journal_general_sequence.default"),
("company_id", "in", self.env.companies.ids),
]
)
@api.model
def _default_available_sequence_ids(self):
"""Let view display only journal-related sequences."""
return (
self.env["account.journal"]
.search([("company_id", "in", self.env.companies.ids)])
.mapped("entry_number_sequence_id")
)
def action_renumber(self):
"""Renumber moves.
Makes sure moves exist. Sorts them. Resets sequences. Renumbers them.
"""
# Find posted moves that match wizard criteria
moves = self.env["account.move"].search(
[
("state", "=", "posted"),
("date", ">=", self.starting_date),
("journal_id.entry_number_sequence_id", "=", self.sequence_id.id),
],
order="date, id",
)
if not moves:
raise exceptions.UserError(_("No account moves found."))
# Reset sequence
future_ranges = self.env["ir.sequence.date_range"].search(
[
("date_from", ">", self.starting_date),
("sequence_id", "=", self.sequence_id.id),
]
)
# Safe `sudo` calls; wizard only available for accounting managers
future_ranges.sudo().unlink()
current_range = self.sequence_id._get_current_sequence(self.starting_date)
current_range.sudo().number_next = self.starting_number
self.sequence_id.sudo().number_next = self.starting_number
# Renumber the moves
moves = moves.with_context(skip_invoice_sync=True)
moves.entry_number = False
moves.flush_recordset(["entry_number"])
moves._compute_entry_number()

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2022 Moduon
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). -->
<data>
<record id="account_move_renumber_wizard_view_form" model="ir.ui.view">
<field name="name">Renumber form</field>
<field name="model">account.move.renumber.wizard</field>
<field name="arch" type="xml">
<form string="Renumber account entry numbers">
<sheet>
<group colspan="4">
<field name="starting_date" />
<field name="starting_number" />
<field name="available_sequence_ids" invisible="1" />
<field name="sequence_id" />
</group>
</sheet>
<footer>
<button
name="action_renumber"
type="object"
string="Renumber"
class="btn-primary"
confirm="If you have already filed and legalized your journals with the competent authority, this action could change it. Continue?"
/>
<button special="cancel" string="Cancel" class="btn-secondary" />
</footer>
</form>
</field>
</record>
<record id="account_move_renumber_wizard_action" model="ir.actions.act_window">
<field name="name">Renumber journal entries</field>
<field name="res_model">account.move.renumber.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<menuitem
id="account_move_renumber_wizard_menu"
parent="account.menu_finance_entries"
action="account_move_renumber_wizard_action"
sequence="85"
/>
</data>