product_template.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. from openerp import api, fields, models
  2. class ProductTemplate(models.Model):
  3. _inherit = 'product.template'
  4. @api.model
  5. def get_products(self):
  6. domain = [('sale_ok', '=', True), ('active', '=', True)]
  7. products = []
  8. # map products
  9. for product in self.env['product.template'].search(domain):
  10. variants = []
  11. # map variants
  12. for variant in product.product_variant_ids:
  13. if not variant.active:
  14. continue
  15. attributes = []
  16. # map product attribute
  17. for attribute_value in variant.attribute_value_ids:
  18. attributes.append({
  19. 'id': attribute_value.id,
  20. 'name': attribute_value.name,
  21. 'display_name': attribute_value.display_name
  22. })
  23. variants.append({
  24. 'id': variant.id,
  25. 'display_name': variant.display_name,
  26. 'ean13': variant.ean13,
  27. 'image_medium': variant.image_medium,
  28. 'list_price': variant.list_price,
  29. 'name': variant.name,
  30. 'qty_available': variant.qty_available,
  31. 'attributes': attributes
  32. })
  33. products.append({
  34. 'id': product.id,
  35. 'display_name': product.display_name,
  36. 'ean13': product.ean13,
  37. 'image_medium': product.image_medium,
  38. 'list_price': product.list_price,
  39. 'name': product.name,
  40. 'qty_available': product.qty_available,
  41. 'category': {
  42. 'id': product.categ_id.id,
  43. 'display_name': product.categ_id.display_name,
  44. 'name': product.categ_id.name,
  45. 'account_journal': {
  46. 'id': product.categ_id.property_stock_journal.id,
  47. 'code': product.categ_id.property_stock_journal.code,
  48. 'company': {
  49. 'id': product.categ_id.property_stock_journal.company_id.id,
  50. 'name': product.categ_id.property_stock_journal.company_id.name,
  51. 'currency': {
  52. 'id': product.categ_id.property_stock_journal.company_id.currency_id.id,
  53. 'name': product.categ_id.property_stock_journal.company_id.currency_id.name
  54. }
  55. },
  56. 'currency': {
  57. 'id': product.categ_id.property_stock_journal.currency.id,
  58. 'name': product.categ_id.property_stock_journal.currency.name
  59. },
  60. 'display_name': product.categ_id.property_stock_journal.display_name,
  61. 'name': product.categ_id.property_stock_journal.name,
  62. }
  63. },
  64. 'uom': {
  65. 'id': product.uom_id.id,
  66. 'name': product.uom_id.name
  67. },
  68. 'uos': {
  69. 'id': product.uos_id.id,
  70. 'name': product.uos_id.name
  71. },
  72. 'variant_count': product.product_variant_count,
  73. 'variants': variants
  74. })
  75. return products