1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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
- # prices = []
- attributes = []
- # for price in variant.product_tmpl_id.pricelist_item_ids.filtered(lambda x: x.product_id.id == variant.id):
- # prices.append({
- # 'id': price.id,
- # 'price': price.price_surcharge
- # })
- # map product attribute
- for attribute_value in variant.attribute_value_ids:
- attributes.append({
- 'id': attribute_value.id,
- 'price': 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,
- 'minimum_price': variant.minimum_price,
- 'maximum_price': variant.maximum_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
|