1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
from odoo import fields, models
class WebsiteUserCart(models.Model):
_name = 'website.user.cart'
_rec_name = 'user_id'
user_id = fields.Many2one('res.users', string='User')
product_id = fields.Many2one('product.product', string='Product')
program_line_id = fields.Many2one('promotion.program.line', string='Program', help="Apply program")
qty = fields.Float(string='Quantity', digits='Product Unit of Measure')
is_selected = fields.Boolean(string='Selected?', digits='Is selected to process checkout')
def get_product(self):
user_data = {
'partner_id': self.user_id.partner_id.id,
'user_id': self.user_id.id
}
product_product = self.env['product.product']
product = product_product.v2_api_single_response(self.product_id)
product['quantity'] = self.qty
product['subtotal'] = self.qty * product['price']['price_discount']
product['selected'] = self.is_selected
product['program'] = None
if self.program_line_id:
product['program'] = self.program_line_id.res_format_cart(user_data)
return product
def get_products(self):
return [x.get_product() for x in self]
def get_product_by_user(self, user_id, selected = False):
user_id = int(user_id)
parameters = [('user_id', '=', user_id)]
if selected:
parameters.append(('is_selected', '=', True))
carts = self.search(parameters)
products = carts.get_products()
return products
|