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