Feedback 1648: Ändern des Rabatt in ATOC18-000010

develop
Ahmed Aly 2018-04-19 16:50:55 +02:00
parent 3b5127f2a3
commit ebac256e17
1 changed files with 21 additions and 3 deletions

View File

@ -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):