[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:
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user