[FIX] point_of_sale: Show warning when pricelist company missmatches

This commit ensure the pricelists are properly configured before launching a pos session.

Steps to reproduce:
- Have a V13 with point_of_sale
- Have minimum 2 companies A & B
- Select both companies in the company selector
- Go to Settings / General Settings
  - Point of Sale
    - Check Pricelists
- Go to Point of Sale
  - Open a pos.config PC
    - Set a Pricelist PL as Default Pricelist
- Go to Point of Sale / Products / Pricelists
  - Open PL
    - Set a company (must be different than PC)
- Go to Point of Sale
  - Click "New session" on PC
--> Traceback

In V13, the traceback shows as "Traceback not available"
As from V14, the traceback is shown properly

A variant would be to start the session before changing
the pricelist company then click on "Resume" on PC

closes odoo/odoo#78767

X-original-commit: 86381c60214d210a42f736261a54e32042eedaba
Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
This commit is contained in:
Jerome (jev)
2021-10-21 15:47:27 +00:00
parent 7d8a8ddea0
commit 43ccf2e12f
+10
View File
@@ -339,6 +339,14 @@ class PosConfig(models.Model):
_("You must have at least one payment method configured to launch a session.")
)
@api.constrains('pricelist_id', 'available_pricelist_ids')
def _check_pricelists(self):
self._check_companies()
self = self.sudo()
if self.pricelist_id.company_id and self.pricelist_id.company_id != self.company_id:
raise ValidationError(
_("The default pricelist must belong to no company or the company of the point of sale."))
@api.constrains('company_id', 'available_pricelist_ids')
def _check_companies(self):
for config in self:
@@ -558,6 +566,7 @@ class PosConfig(models.Model):
"""
self.ensure_one()
if not self.current_session_id:
self._check_pricelists()
self._check_company_journal()
self._check_company_invoice_journal()
self._check_company_payment()
@@ -579,6 +588,7 @@ class PosConfig(models.Model):
return self._open_session(self.current_session_id.id)
def _open_session(self, session_id):
self._check_pricelists() # The pricelist company might have changed after the first opening of the session
return {
'name': _('Session'),
'view_mode': 'form,tree',