diff --git a/addons/sale/models/res_company.py b/addons/sale/models/res_company.py index 3e0f2008753..6248827d8ca 100644 --- a/addons/sale/models/res_company.py +++ b/addons/sale/models/res_company.py @@ -13,13 +13,19 @@ class ResCompany(models.Model): _sql_constraints = [ ('check_quotation_validity_days', - 'CHECK(quotation_validity_days > 0)', - "Quotation Validity is required and must be greater than 0."), + 'CHECK(quotation_validity_days >= 0)', + "You cannot set a negative number for the default quotation validity." + " Leave empty (or 0) to disable the automatic expiration of quotations."), ] portal_confirmation_sign = fields.Boolean(string="Online Signature", default=True) portal_confirmation_pay = fields.Boolean(string="Online Payment") - quotation_validity_days = fields.Integer(string="Default Quotation Validity (Days)", default=30) + quotation_validity_days = fields.Integer( + string="Default Quotation Validity", + default=30, + help="Days between quotation proposal and expiration." + " 0 days means automatic expiration is disabled", + ) # sale onboarding sale_quotation_onboarding_state = fields.Selection( diff --git a/addons/sale/models/sale_order.py b/addons/sale/models/sale_order.py index 9587540c24e..7dd1280dae7 100644 --- a/addons/sale/models/sale_order.py +++ b/addons/sale/models/sale_order.py @@ -309,11 +309,6 @@ class SaleOrder(models.Model): @api.depends('company_id') def _compute_validity_date(self): - enabled_feature = bool(self.env['ir.config_parameter'].sudo().get_param('sale.use_quotation_validity_days')) - if not enabled_feature: - self.validity_date = False - return - today = fields.Date.context_today(self) for order in self: days = order.company_id.quotation_validity_days diff --git a/addons/sale/tests/test_sale_order.py b/addons/sale/tests/test_sale_order.py index 22a8b31c318..82de65730e2 100644 --- a/addons/sale/tests/test_sale_order.py +++ b/addons/sale/tests/test_sale_order.py @@ -277,7 +277,6 @@ class TestSaleOrder(SaleCommon): self.assertTrue(sale_order.note.startswith("

Terms & Conditions: ")) def test_validity_days(self): - self.env['ir.config_parameter'].sudo().set_param('sale.use_quotation_validity_days', True) self.env.company.quotation_validity_days = 5 with freeze_time("2020-05-02"): sale_order = self._create_sale_order() diff --git a/addons/sale/wizard/res_config_settings.py b/addons/sale/wizard/res_config_settings.py index 8ad96a6e3ec..fccf52cca5d 100644 --- a/addons/sale/wizard/res_config_settings.py +++ b/addons/sale/wizard/res_config_settings.py @@ -49,14 +49,8 @@ class ResConfigSettings(models.TransientModel): config_parameter='sale.default_invoice_email_template', help="Email sent to the customer once the invoice is available.", ) - - use_quotation_validity_days = fields.Boolean( - string="Default Quotation Validity", config_parameter='sale.use_quotation_validity_days') - - # Company setup quotation_validity_days = fields.Integer( related='company_id.quotation_validity_days', - string="Default Quotation Validity (Days)", readonly=False) portal_confirmation_sign = fields.Boolean( related='company_id.portal_confirmation_sign', @@ -82,21 +76,16 @@ class ResConfigSettings(models.TransientModel): #=== ONCHANGE METHODS ===# - @api.onchange('use_quotation_validity_days') - def _onchange_use_quotation_validity_days(self): - if self.quotation_validity_days <= 0: - self.quotation_validity_days = self.env['res.company'].default_get(['quotation_validity_days'])['quotation_validity_days'] - @api.onchange('quotation_validity_days') def _onchange_quotation_validity_days(self): - if self.quotation_validity_days <= 0: + if self.quotation_validity_days < 0: self.quotation_validity_days = self.env['res.company'].default_get( ['quotation_validity_days'] )['quotation_validity_days'] return { 'warning': { 'title': _("Warning"), - 'message': _("Quotation Validity is required and must be greater than 0."), + 'message': _("Quotation Validity is required and must be greater or equal to 0."), }, }