Feedback 1648: Ändern des Rabatt in ATOC18-000010
parent
3b5127f2a3
commit
ebac256e17
|
|
@ -25,6 +25,7 @@ from odoo import api, fields, models, _
|
|||
from odoo.tools import float_is_zero
|
||||
from odoo.exceptions import ValidationError, UserError
|
||||
from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT
|
||||
from odoo.tools import float_compare
|
||||
|
||||
|
||||
class SaleOrder(models.Model):
|
||||
|
|
@ -325,7 +326,7 @@ class SaleOrder(models.Model):
|
|||
vals['origin'] = "siehe Detail"
|
||||
if order.client_order_ref and (order.client_order_ref == "siehe Detail" or (
|
||||
order.client_order_ref not in invoices[group_key].name.split(
|
||||
', ') and order.client_order_ref != invoices[group_key].name)):
|
||||
', ') and order.client_order_ref != invoices[group_key].name)):
|
||||
vals['name'] = "siehe Detail"
|
||||
invoices[group_key].write(vals)
|
||||
if line.qty_to_invoice > 0:
|
||||
|
|
@ -419,11 +420,28 @@ class SaleOrderLine(models.Model):
|
|||
elif vals.get('intrastat_id', False) and not lot_id:
|
||||
raise UserError(_('Der Intrastrat Code kann nur gesetzt werden wenn ein Lot angegeben wurde.'))
|
||||
|
||||
if record.from_designbox and set(vals.keys()).intersection(
|
||||
['product_uom_qty', 'product_uom', 'price_unit']):
|
||||
not_allowed_designbox_keys = ['product_uom_qty', 'product_uom', 'price_unit']
|
||||
if not self.check_allowed_vals_from_designbox(not_allowed_designbox_keys, vals):
|
||||
raise ValidationError(_("Menge und Preis können von Produkten aus der Designbox nicht geändert werden"))
|
||||
return super(SaleOrderLine, self).write(vals)
|
||||
|
||||
@api.multi
|
||||
def check_allowed_vals_from_designbox(self, not_allowed_designbox_keys, vals):
|
||||
self.ensure_one()
|
||||
allowed_write = True
|
||||
precision_digits = self.env['decimal.precision'].precision_get('Product Price')
|
||||
if self.from_designbox and set(vals.keys()).intersection(not_allowed_designbox_keys):
|
||||
for val_key in not_allowed_designbox_keys:
|
||||
if val_key in list(vals.keys()) and type(self.__getattribute__(val_key)) is float:
|
||||
if float_compare(self.__getattribute__(val_key), vals[val_key],
|
||||
precision_digits=precision_digits) != 0:
|
||||
allowed_write = False
|
||||
break
|
||||
elif val_key in list(vals.keys()):
|
||||
allowed_write = False
|
||||
break
|
||||
return allowed_write
|
||||
|
||||
@api.model
|
||||
def correct_values(self, vals):
|
||||
if vals.get('product_id', False):
|
||||
|
|
|
|||
Loading…
Reference in New Issue