123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- from openerp import api, fields, models
- class ProductTemplate(models.Model):
- _inherit = 'product.template'
- @api.model
- def get_products(self):
- domain = [('sale_ok', '=', True), ('active', '=', True)]
- products = []
- # map products
- for product in self.env['product.template'].search(domain):
- variants = []
- # map variants
- for variant in product.product_variant_ids:
- if not variant.active:
- continue
- attributes = []
- # map product attribute
- for attribute_value in variant.attribute_value_ids:
- attributes.append({
- 'id': attribute_value.id,
- 'name': attribute_value.name,
- 'display_name': attribute_value.display_name
- })
- variants.append({
- 'id': variant.id,
- 'display_name': variant.display_name,
- 'ean13': variant.ean13,
- 'image_medium': variant.image_medium,
- 'list_price': variant.list_price,
- 'name': variant.name,
- 'qty_available': variant.qty_available,
- 'attributes': attributes
- })
- products.append({
- 'id': product.id,
- 'display_name': product.display_name,
- 'ean13': product.ean13,
- 'image_medium': product.image_medium,
- 'list_price': product.list_price,
- 'name': product.name,
- 'qty_available': product.qty_available,
- 'category': {
- 'id': product.categ_id.id,
- 'display_name': product.categ_id.display_name,
- 'name': product.categ_id.name,
- 'account_journal': {
- 'id': product.categ_id.property_stock_journal.id,
- 'code': product.categ_id.property_stock_journal.code,
- 'company': {
- 'id': product.categ_id.property_stock_journal.company_id.id,
- 'name': product.categ_id.property_stock_journal.company_id.name,
- 'currency': {
- 'id': product.categ_id.property_stock_journal.company_id.currency_id.id,
- 'name': product.categ_id.property_stock_journal.company_id.currency_id.name
- }
- },
- 'currency': {
- 'id': product.categ_id.property_stock_journal.currency.id,
- 'name': product.categ_id.property_stock_journal.currency.name
- },
- 'display_name': product.categ_id.property_stock_journal.display_name,
- 'name': product.categ_id.property_stock_journal.name,
- }
- },
- 'uom': {
- 'id': product.uom_id.id,
- 'name': product.uom_id.name
- },
- 'uos': {
- 'id': product.uos_id.id,
- 'name': product.uos_id.name
- },
- 'variant_count': product.product_variant_count,
- 'variants': variants
- })
- return products
|