add purchase_rappel. manage rappel commission for vendors
This commit is contained in:
parent
4fbf3284f4
commit
4c07dd042d
24 changed files with 1458 additions and 0 deletions
5
purchase_rappel/models/__init__.py
Normal file
5
purchase_rappel/models/__init__.py
Normal 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
|
||||
28
purchase_rappel/models/account_move.py
Normal file
28
purchase_rappel/models/account_move.py
Normal 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
|
||||
)
|
||||
18
purchase_rappel/models/res_company.py
Normal file
18
purchase_rappel/models/res_company.py
Normal 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.",
|
||||
)
|
||||
22
purchase_rappel/models/res_config_settings.py
Normal file
22
purchase_rappel/models/res_config_settings.py
Normal 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.",
|
||||
)
|
||||
18
purchase_rappel/models/res_partner.py
Normal file
18
purchase_rappel/models/res_partner.py
Normal 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.",
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue