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,4 @@
from . import account_move
from . import res_partner
from . import res_config_settings
from . import res_company

View File

@@ -0,0 +1,45 @@
# Copyright 2021 ForgeFlow, S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
from odoo.exceptions import UserError
class AccountMove(models.Model):
_inherit = "account.move"
approver_id = fields.Many2one(
"res.users",
string="Responsible for Approval",
compute="_compute_approver_id",
readonly=False,
store=True,
)
@api.depends("partner_id")
def _compute_approver_id(self):
for rec in self:
if rec.approver_id:
# assign a value in any case
rec.approver_id = rec.approver_id
elif rec.partner_id.approver_id:
rec.approver_id = rec.partner_id.approver_id
else:
rec.approver_id = False
def _post(self, soft=True):
for move in self:
require_approver_in_vendor_bills = (
move.company_id.require_approver_in_vendor_bills
)
if (
move.is_purchase_document(include_receipts=True)
and require_approver_in_vendor_bills
and not move.approver_id
):
raise UserError(
self.env._(
"It is mandatory to indicate a Responsible for Approval (in {})"
).format(move.name)
)
return super()._post(soft)

View File

@@ -0,0 +1,15 @@
# Copyright 2020 ForgeFlow, S.L.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class ResCompany(models.Model):
_inherit = "res.company"
require_approver_in_vendor_bills = fields.Boolean(
string="Require approver in vendor bills"
)
validation_approver_tier_definition_id = fields.Many2one(
comodel_name="tier.definition", string="Bill approval tier definition"
)

View File

@@ -0,0 +1,41 @@
# Copyright 2020 ForgeFlow, S.L.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
require_approver_in_vendor_bills = fields.Boolean(
string="Require Approver In Vendor Bills",
help="Requires adding an approver before a vendor bill can be posted.",
related="company_id.require_approver_in_vendor_bills",
readonly=False,
)
def set_values(self):
tier_definition = self.company_id.validation_approver_tier_definition_id
if not tier_definition:
field = self.env["ir.model.fields"].search(
[("model", "=", "account.move"), ("name", "=", "approver_id")]
)
tier_definition = self.env["tier.definition"].create(
{
"model_id": self.env["ir.model"]
.search([("model", "=", "account.move")])
.id,
"review_type": "field",
"name": "Validation with Approver field",
"reviewer_field_id": field.id,
"definition_domain": "[('move_type', '=', 'in_invoice')]",
"approve_sequence": True,
"active": self.require_approver_in_vendor_bills,
}
)
self.company_id.validation_approver_tier_definition_id = tier_definition
if self.require_approver_in_vendor_bills:
tier_definition.action_unarchive()
else:
tier_definition.action_archive()
return super().set_values()

View File

@@ -0,0 +1,10 @@
# Copyright 2021 ForgeFlow, S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class Partner(models.Model):
_inherit = "res.partner"
approver_id = fields.Many2one("res.users", string="Approver of Vendor Bills")