diff --git a/partner_default_properties/__init__.py b/partner_default_properties/__init__.py new file mode 100644 index 0000000..a0fdc10 --- /dev/null +++ b/partner_default_properties/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import models diff --git a/partner_default_properties/__manifest__.py b/partner_default_properties/__manifest__.py new file mode 100644 index 0000000..51f5cc6 --- /dev/null +++ b/partner_default_properties/__manifest__.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +{ + 'name': 'Partner Default Properties', + 'version': '16.0.1.0.0', + 'summary': 'Set company-wide defaults for fiscal position and payment terms on new customers', + 'category': 'Accounting', + 'author': 'Van Bernaert', + 'depends': ['base', 'account', 'sale'], + 'data': [ + 'views/res_config_settings_views.xml', + ], + 'installable': True, + 'auto_install': False, + 'license': 'LGPL-3', +} diff --git a/partner_default_properties/models/__init__.py b/partner_default_properties/models/__init__.py new file mode 100644 index 0000000..1b7e53e --- /dev/null +++ b/partner_default_properties/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- +from . import res_config_settings +from . import res_partner diff --git a/partner_default_properties/models/res_config_settings.py b/partner_default_properties/models/res_config_settings.py new file mode 100644 index 0000000..32873e2 --- /dev/null +++ b/partner_default_properties/models/res_config_settings.py @@ -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) diff --git a/partner_default_properties/models/res_partner.py b/partner_default_properties/models/res_partner.py new file mode 100644 index 0000000..06dcf35 --- /dev/null +++ b/partner_default_properties/models/res_partner.py @@ -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 diff --git a/partner_default_properties/views/res_config_settings_views.xml b/partner_default_properties/views/res_config_settings_views.xml new file mode 100644 index 0000000..904151b --- /dev/null +++ b/partner_default_properties/views/res_config_settings_views.xml @@ -0,0 +1,49 @@ + + + + res.config.settings.view.form.inherit.partner.defaults + res.config.settings + + + +

Default Customer Properties

+
+
+
+
+ Default Fiscal Position + +
+ Applied automatically to new customers +
+
+ +
+
+
+
+
+
+ Default Payment Terms + +
+ Applied automatically to new customers +
+
+ +
+
+
+
+ + + +