Skip to content
Snippets Groups Projects
Commit 86381c60 authored by Jerome (jev)'s avatar Jerome (jev)
Browse files

[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#78724

X-original-commit: 6099c366
Signed-off-by: default avatarpimodoo <pimodoo@users.noreply.github.com>
parent 66086ed1
No related branches found
No related tags found
No related merge requests found
......@@ -390,6 +390,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):
if any(self.available_pricelist_ids.mapped(lambda pl: pl.company_id.id not in (False, self.company_id.id))):
......@@ -608,6 +616,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()
......@@ -630,6 +639,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',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment