eiru_pos.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. # -*- coding: utf-8 -*-
  2. import logging
  3. from openerp import api, fields, models
  4. _logger = logging.getLogger(__name__)
  5. class EiruPOS(models.Model):
  6. _name = 'eiru.pos'
  7. # Get company
  8. @api.model
  9. def get_company(self):
  10. user = self.env.user
  11. return {
  12. 'id': user.company_id.id,
  13. 'name': user.company_id.name,
  14. 'currency': {
  15. 'id': user.company_id.currency_id.id,
  16. 'name': user.company_id.currency_id.name,
  17. 'display_name': user.company_id.currency_id.display_name,
  18. 'symbol': user.company_id.currency_id.symbol,
  19. 'format': user.company_id.currency_id.format
  20. }
  21. # 'store': {
  22. # 'id': user.company_id.store_id.id,
  23. # 'name': user.company_id.store_id.name
  24. # }
  25. }
  26. # Get all products
  27. @api.model
  28. def get_products(self):
  29. domain = [('sale_ok', '=', True), ('active', '=', True)]
  30. products = []
  31. # map products
  32. for product in self.env['product.template'].search(domain):
  33. variants = []
  34. # map variants
  35. for variant in product.product_variant_ids:
  36. if not variant.active:
  37. continue
  38. attributes = []
  39. # map product attributes
  40. for attribute_line in variant.attribute_line_ids:
  41. values = []
  42. # map product attributes values
  43. for value in attribute_line.value_ids:
  44. values.append({
  45. 'id': value.id,
  46. 'display_name': value.display_name,
  47. 'name': value.name,
  48. 'price_extra': value.price_extra
  49. })
  50. attributes.append({
  51. 'id': attribute_line.id,
  52. 'attribute': {
  53. 'id': attribute_line.attribute_id.id,
  54. 'name': attribute_line.attribute_id.name
  55. },
  56. 'values': values
  57. })
  58. variants.append({
  59. 'id': variant.id,
  60. 'display_name': variant.display_name,
  61. 'ean13': variant.ean13,
  62. 'image_medium': variant.image_medium,
  63. 'list_price': variant.list_price,
  64. 'name': variant.name,
  65. 'qty_available': variant.qty_available,
  66. 'attributes': attributes
  67. })
  68. products.append({
  69. 'id': product.id,
  70. 'display_name': product.display_name,
  71. 'ean13': product.ean13,
  72. 'image_medium': product.image_medium,
  73. 'list_price': product.list_price,
  74. 'name': product.name,
  75. 'qty_available': product.qty_available,
  76. 'category': {
  77. 'id': product.categ_id.id,
  78. 'display_name': product.categ_id.display_name,
  79. 'name': product.categ_id.name,
  80. 'account_journal': {
  81. 'id': product.categ_id.property_stock_journal.id,
  82. 'code': product.categ_id.property_stock_journal.code,
  83. 'company': {
  84. 'id': product.categ_id.property_stock_journal.company_id.id,
  85. 'name': product.categ_id.property_stock_journal.company_id.name,
  86. 'currency': {
  87. 'id': product.categ_id.property_stock_journal.company_id.currency_id.id,
  88. 'name': product.categ_id.property_stock_journal.company_id.currency_id.name
  89. }
  90. },
  91. 'currency': {
  92. 'id': product.categ_id.property_stock_journal.currency.id,
  93. 'name': product.categ_id.property_stock_journal.currency.name
  94. },
  95. 'display_name': product.categ_id.property_stock_journal.display_name,
  96. 'name': product.categ_id.property_stock_journal.name,
  97. }
  98. },
  99. 'uom': {
  100. 'id': product.uom_id.id,
  101. 'name': product.uom_id.name
  102. },
  103. 'uos': {
  104. 'id': product.uos_id.id,
  105. 'name': product.uos_id.name
  106. },
  107. 'variant_count': product.product_variant_count,
  108. 'variants': variants
  109. })
  110. return products
  111. # Get all currencies
  112. @api.model
  113. def get_currencies(self):
  114. domain = [('active', '=', True)]
  115. currencies = []
  116. # if self.env.user.store_id:
  117. # domain.append(('company_id', '=', self.env.user.store_id.company_id.id))
  118. # else:
  119. # domain.append(('company_id', '=', self.env.user.company_id.id))
  120. # print domain
  121. for currency in self.env['res.currency'].search(domain):
  122. currencies.append({
  123. 'id': currency.id,
  124. 'name': currency.name,
  125. 'display_name': currency.display_name,
  126. 'accuracy': currency.accuracy,
  127. 'base': currency.base,
  128. 'position': currency.position,
  129. 'rate': currency.rate,
  130. 'rounding': currency.rounding,
  131. 'symbol': currency.symbol,
  132. 'format': currency.format,
  133. 'company': {
  134. 'id': currency.company_id.id,
  135. 'name': currency.company_id.name
  136. }
  137. })
  138. return currencies
  139. class eiru_pos_session(models.Model):
  140. _name = 'eiru.pos.session'
  141. # Get all sessions
  142. def get_sessions(self):
  143. pass