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.tools import float_is_zero | ||||||
| from odoo.exceptions import ValidationError, UserError | from odoo.exceptions import ValidationError, UserError | ||||||
| from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT | from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT | ||||||
|  | from odoo.tools import float_compare | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class SaleOrder(models.Model): | class SaleOrder(models.Model): | ||||||
|  | @ -419,11 +420,28 @@ class SaleOrderLine(models.Model): | ||||||
|             elif vals.get('intrastat_id', False) and not lot_id: |             elif vals.get('intrastat_id', False) and not lot_id: | ||||||
|                 raise UserError(_('Der Intrastrat Code kann nur gesetzt werden wenn ein Lot angegeben wurde.')) |                 raise UserError(_('Der Intrastrat Code kann nur gesetzt werden wenn ein Lot angegeben wurde.')) | ||||||
| 
 | 
 | ||||||
|             if record.from_designbox and set(vals.keys()).intersection( |             not_allowed_designbox_keys = ['product_uom_qty', 'product_uom', 'price_unit'] | ||||||
|                     ['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")) |                 raise ValidationError(_("Menge und Preis können von Produkten aus der Designbox nicht geändert werden")) | ||||||
|         return super(SaleOrderLine, self).write(vals) |         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 |     @api.model | ||||||
|     def correct_values(self, vals): |     def correct_values(self, vals): | ||||||
|         if vals.get('product_id', False): |         if vals.get('product_id', False): | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue