add purchase_rappel. manage rappel commission for vendors

This commit is contained in:
Luis 2026-06-12 11:48:32 +02:00
parent 4fbf3284f4
commit 4c07dd042d
24 changed files with 1458 additions and 0 deletions

View file

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
from . import res_company
from . import res_partner
from . import res_config_settings
from . import account_move

View file

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
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_invoice" 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_invoice":
self.rappel_pending = bool(
self.partner_id and self.partner_id.rappel_commission
)

View file

@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
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,22 @@
# -*- coding: utf-8 -*-
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,18 @@
# -*- coding: utf-8 -*-
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.",
)