[FIX] pos_discount: default product

Several issues:
- If product `product_product_consumable` was deleted, an error is
  raised.
- The default values are inconsistent with the fact that
  `module_pos_discount` is `False` at POS creation.
- The domain should ensures that both `available_in_pos` and `sale_ok`
  are `True`, otherwise the product won't be loaded by the POS.

opw-814426
This commit is contained in:
Nicolas Martinelli
2018-02-22 10:50:28 +01:00
committed by Nicolas Martinelli
parent 8e7aaf8c82
commit 310e3c15fd
+7 -6
View File
@@ -7,17 +7,18 @@ from odoo import api, fields, models
class PosConfig(models.Model):
_inherit = 'pos.config'
def _get_default_discount_product(self):
return self.env.ref('point_of_sale.product_product_consumable')
iface_discount = fields.Boolean(string='Order Discounts', help='Allow the cashier to give discounts on the whole order.')
discount_pc = fields.Float(string='Discount Percentage', default=10, help='The default discount percentage')
discount_product_id = fields.Many2one('product.product', string='Discount Product', domain="[('available_in_pos', '=', True)]", help='The product used to model the discount.', default=_get_default_discount_product)
discount_pc = fields.Float(string='Discount Percentage', help='The default discount percentage')
discount_product_id = fields.Many2one('product.product', string='Discount Product',
domain="[('available_in_pos', '=', True), ('sale_ok', '=', True)]", help='The product used to model the discount.')
@api.onchange('module_pos_discount')
def _onchange_module_pos_discount(self):
if self.module_pos_discount:
self.discount_product_id = self.env['product.product'].search([('available_in_pos', '=', True)], limit=1)
self.discount_product_id = self.env.ref('point_of_sale.product_product_consumable', raise_if_not_found=False)
if not self.discount_product_id or not self.discount_product_id.available_in_pos or not self.discount_product_id.sale_ok:
domain = [('available_in_pos', '=', True), ('sale_ok', '=', True)]
self.discount_product_id = self.env['product.product'].search(domain, limit=1)
self.discount_pc = 10.0
else:
self.discount_product_id = False