2323#
2424##############################################################################
2525
26- from odoo import _ , api , fields , models
27-
28- from odoo .addons import decimal_precision as dp
26+ from odoo import api , fields , models
27+ from odoo .exceptions import ValidationError
2928
3029
3130class ProductSupplierinfo (models .Model ):
3231 _inherit = "product.supplierinfo"
3332
3433 # Columns section
3534 package_qty = fields .Float (
36- "Package Qty" ,
37- digits = dp .get_precision ("Product UoM" ),
35+ digits = "Product UoM" ,
3836 help = """The quantity of products in the supplier package."""
3937 """ You will always have to buy a multiple of this quantity.""" ,
4038 default = 1 ,
4139 )
4240 indicative_package = fields .Boolean (
43- "Indicative Package" ,
4441 help = """If checked, the system will not force you to purchase"""
4542 """ a strict multiple of package quantity""" ,
4643 default = False ,
4744 )
4845 price_policy = fields .Selection (
4946 [("uom" , "per UOM" ), ("package" , "per Package" )],
50- "Price Policy" ,
5147 default = "uom" ,
5248 required = True ,
5349 )
5450 base_price = fields .Float (
5551 "Price" ,
5652 required = False ,
5753 default = 0.00 ,
58- digits = dp . get_precision ( "Product Price" ) ,
54+ digits = "Product Price" ,
5955 help = "The price to purchase a product" ,
6056 )
6157 price = fields .Float (
@@ -67,7 +63,6 @@ class ProductSupplierinfo(models.Model):
6763 )
6864
6965 @api .depends ("base_price" , "price_policy" , "package_qty" )
70- @api .multi
7166 def _compute_price (self ):
7267 for psi in self :
7368 if psi .price_policy == "package" :
@@ -77,32 +72,31 @@ def _compute_price(self):
7772 else :
7873 psi .price = psi .base_price
7974
80- @api .model
81- def create (self , vals ):
82- if not vals .get ("base_price" , False ):
83- if vals .get ("price" , False ):
84- vals ["base_price" ] = vals ["price" ]
85- del vals ["price" ]
86- else :
87- vals ["base_price" ] = 0
88- res = super ().create (vals )
75+ @api .model_create_multi
76+ def create (self , vals_list ):
77+ for vals in vals_list :
78+ if not vals .get ("base_price" ):
79+ if vals .get ("price" ):
80+ vals ["base_price" ] = vals ["price" ]
81+ del vals ["price" ]
82+ else :
83+ vals ["base_price" ] = 0
84+ res = super ().create (vals_list )
8985 return res
9086
91- @api .multi
9287 def write (self , vals ):
93- if not vals .get ("base_price" , False ):
94- if vals .get ("price" , False ):
88+ if not vals .get ("base_price" ):
89+ if vals .get ("price" ):
9590 vals ["base_price" ] = vals ["price" ]
9691 del vals ["price" ]
9792 return super ().write (vals )
9893
9994 # Constraints section
100- @api .multi
10195 @api .constrains ("package_qty" )
10296 def _check_package_qty (self ):
10397 for psi in self :
10498 if psi .package_qty == 0 :
105- raise ValueError ( _ ("The package quantity cannot be 0." ))
99+ raise ValidationError ( self . env . _ ("The package quantity cannot be 0." ))
106100
107101 # Init section
108102 @api .model
0 commit comments