Add partner_default_properties addon with default fiscal position and payment terms for new customers

This commit is contained in:
Kristof Bernaert
2026-04-13 18:49:53 +02:00
parent b0255bbe86
commit 0fbbeb506a
6 changed files with 134 additions and 0 deletions
@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import res_config_settings
from . import res_partner
@@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
from odoo import fields, models
PARAM_FISCAL_POSITION = 'partner_default_properties.fiscal_position_id'
PARAM_PAYMENT_TERM = 'partner_default_properties.payment_term_id'
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
customer_fiscal_position_id = fields.Many2one(
comodel_name='account.fiscal.position',
string='Default Fiscal Position',
compute='_compute_customer_fiscal_position_id',
inverse='_set_customer_fiscal_position_id',
)
customer_payment_term_id = fields.Many2one(
comodel_name='account.payment.term',
string='Default Payment Terms',
compute='_compute_customer_payment_term_id',
inverse='_set_customer_payment_term_id',
)
def _compute_customer_fiscal_position_id(self):
ICP = self.env['ir.config_parameter'].sudo()
param = ICP.get_param(PARAM_FISCAL_POSITION)
for rec in self:
rec.customer_fiscal_position_id = int(param) if param else False
def _set_customer_fiscal_position_id(self):
ICP = self.env['ir.config_parameter'].sudo()
for rec in self:
ICP.set_param(PARAM_FISCAL_POSITION, rec.customer_fiscal_position_id.id or False)
def _compute_customer_payment_term_id(self):
ICP = self.env['ir.config_parameter'].sudo()
param = ICP.get_param(PARAM_PAYMENT_TERM)
for rec in self:
rec.customer_payment_term_id = int(param) if param else False
def _set_customer_payment_term_id(self):
ICP = self.env['ir.config_parameter'].sudo()
for rec in self:
ICP.set_param(PARAM_PAYMENT_TERM, rec.customer_payment_term_id.id or False)
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
from odoo import models
from .res_config_settings import PARAM_FISCAL_POSITION, PARAM_PAYMENT_TERM
class ResPartner(models.Model):
_inherit = 'res.partner'
def default_get(self, fields_list):
res = super().default_get(fields_list)
ICP = self.env['ir.config_parameter'].sudo()
fp_id = ICP.get_param(PARAM_FISCAL_POSITION)
if fp_id:
res['property_account_position_id'] = int(fp_id)
pt_id = ICP.get_param(PARAM_PAYMENT_TERM)
if pt_id:
res['property_payment_term_id'] = int(pt_id)
return res