Ecocentral/ecocentral#172: migrate purchase_rappel to 18.0

This commit is contained in:
Luis 2026-06-23 14:28:38 +02:00
parent 1d6747e703
commit a754df3914
24 changed files with 1588 additions and 0 deletions

View file

@ -0,0 +1,6 @@
# Copyright 2024 Criptomart
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import res_company
from . import res_partner
from . import res_config_settings
from . import account_move

View file

@ -0,0 +1,32 @@
# Copyright 2024 Criptomart
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class AccountMove(models.Model):
_inherit = "account.move"
rappel_pending = fields.Boolean(
string="Pending Commission",
copy=False,
help="Indicates that this vendor bill has not yet been included in a rappel "
"commission invoice. Automatically set based on the vendor's configuration.",
)
@api.model_create_multi
def create(self, vals_list):
moves = super().create(vals_list)
for move in moves:
if (
move.move_type in ("in_invoice", "in_refund")
and move.partner_id.rappel_commission
):
move.rappel_pending = True
return moves
@api.onchange("partner_id")
def _onchange_partner_id_rappel(self):
if self.move_type in ("in_invoice", "in_refund"):
self.rappel_pending = bool(
self.partner_id and self.partner_id.rappel_commission
)

View file

@ -0,0 +1,19 @@
# Copyright 2024 Criptomart
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ResCompany(models.Model):
_inherit = "res.company"
rappel_journal_id = fields.Many2one(
comodel_name="account.journal",
string="Rappel Journal",
domain="[('type', '=', 'sale'), ('company_id', '=', id)]",
help="Sales journal used to post rappel commission invoices.",
)
rappel_product_id = fields.Many2one(
comodel_name="product.product",
string="Commission Product",
help="Product used as invoice line in rappel commission invoices.",
)

View file

@ -0,0 +1,23 @@
# Copyright 2024 Criptomart
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
rappel_journal_id = fields.Many2one(
comodel_name="account.journal",
string="Rappel Journal",
related="company_id.rappel_journal_id",
domain=[("type", "=", "sale")],
readonly=False,
help="Sales journal used to post rappel commission invoices.",
)
rappel_product_id = fields.Many2one(
comodel_name="product.product",
string="Commission Product",
related="company_id.rappel_product_id",
readonly=False,
help="Product used as invoice line in rappel commission invoices.",
)

View file

@ -0,0 +1,19 @@
# Copyright 2024 Criptomart
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ResPartner(models.Model):
_inherit = "res.partner"
rappel_commission = fields.Boolean(
string="Rappel Commission",
help="If enabled, vendor bills from this partner will be eligible for rappel "
"commission invoicing.",
)
rappel_commission_rate = fields.Float(
string="Commission Rate (%)",
digits=(5, 4),
help="Percentage applied on the taxable base of vendor bills to calculate the "
"rappel commission amount.",
)