main.py 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. # -*- coding: utf-8 -*-
  2. from openerp import http
  3. from openerp.http import request
  4. from werkzeug.wrappers import Response
  5. from datetime import datetime
  6. import simplejson as json
  7. import logging
  8. LOGGER = logging.getLogger(__name__)
  9. class Purchases(http.Controller):
  10. '''
  11. Get server date to send
  12. '''
  13. def get_server_date(self):
  14. return datetime.now().strftime('%Y-%m-%d')
  15. def get_currencies(self):
  16. return [{
  17. 'id': currency.id,
  18. 'name': currency.name,
  19. 'displayName': currency.display_name,
  20. 'base': currency.base,
  21. 'accuracy': currency.accuracy,
  22. 'position': currency.position,
  23. 'rate': currency.rate,
  24. 'rounding': currency.rounding,
  25. 'symbol': currency.symbol
  26. } for currency in request.env['res.currency'].search([('active', '=', True)])]
  27. '''
  28. Get all active journals
  29. '''
  30. def get_journals(self):
  31. return [{
  32. 'id': journal.id,
  33. 'name': journal.name,
  34. 'displayName': journal.display_name,
  35. 'code': journal.code,
  36. 'cashControl': journal.cash_control,
  37. 'type': journal.type,
  38. 'currency': {
  39. 'id': journal.currency.id,
  40. 'name': journal.currency.name,
  41. 'displayName': journal.currency.display_name
  42. },
  43. 'creditAccount': {
  44. 'id': journal.default_credit_account_id.id,
  45. 'name': journal.default_credit_account_id.name,
  46. 'displayName': journal.default_credit_account_id.display_name,
  47. 'code': journal.default_credit_account_id.code,
  48. 'exchangeRate': journal.default_credit_account_id.exchange_rate,
  49. 'foreignBalance': journal.default_credit_account_id.foreign_balance,
  50. 'reconcile': journal.default_credit_account_id.reconcile,
  51. 'debit': journal.default_credit_account_id.debit,
  52. 'credit': journal.default_credit_account_id.credit,
  53. 'currencyMode': journal.default_credit_account_id.currency_mode,
  54. 'companyCurrency': {
  55. 'id': journal.default_credit_account_id.company_currency_id.id,
  56. 'name': journal.default_credit_account_id.company_currency_id.name,
  57. 'displayName': journal.default_credit_account_id.company_currency_id.display_name,
  58. },
  59. 'currency': {
  60. 'id': journal.default_credit_account_id.currency_id.id,
  61. 'name': journal.default_credit_account_id.currency_id.name,
  62. 'displayName': journal.default_credit_account_id.currency_id.display_name
  63. },
  64. },
  65. 'debitAccount': {
  66. 'id': journal.default_debit_account_id.id,
  67. 'name': journal.default_debit_account_id.name,
  68. 'displayName': journal.default_debit_account_id.display_name,
  69. 'code': journal.default_debit_account_id.code,
  70. 'exchange_rate': journal.default_credit_account_id.exchange_rate,
  71. 'foreignBalance': journal.default_credit_account_id.foreign_balance,
  72. 'reconcile': journal.default_credit_account_id.reconcile,
  73. 'debit': journal.default_credit_account_id.debit,
  74. 'credit': journal.default_credit_account_id.credit,
  75. 'currencyMode': journal.default_credit_account_id.currency_mode,
  76. 'companyCurrency': {
  77. 'id': journal.default_credit_account_id.company_currency_id.id,
  78. 'name': journal.default_credit_account_id.company_currency_id.name,
  79. 'displayName': journal.default_credit_account_id.company_currency_id.display_name,
  80. },
  81. 'currency': {
  82. 'id': journal.default_credit_account_id.currency_id.id,
  83. 'name': journal.default_credit_account_id.currency_id.name,
  84. 'displayName': journal.default_credit_account_id.currency_id.display_name
  85. }
  86. }
  87. } for journal in request.env['account.journal'].search([('type', 'in', ['bank', 'cash']), ('active', '=', True)])]
  88. '''
  89. Get all active suppliers
  90. '''
  91. def get_suppliers(self):
  92. return [{
  93. 'id': supplier.id,
  94. 'name': supplier.name,
  95. 'displayName': supplier.display_name,
  96. 'imageMedium': supplier.image_medium,
  97. 'phone': supplier.phone,
  98. 'mobile': supplier.mobile,
  99. 'email': supplier.email
  100. } for supplier in request.env['res.partner'].search([('supplier', '=', True), ('active', '=', True)])]
  101. '''
  102. Get all purchasable and active products
  103. '''
  104. def get_products(self):
  105. return [{
  106. 'id': product.id,
  107. 'name': product.name,
  108. 'displayName': product.display_name,
  109. 'ean13': product.ean13,
  110. 'imageMedium': product.image_medium,
  111. 'variantCount': product.product_variant_count,
  112. 'variants': [{
  113. 'id': variant.id,
  114. 'name': variant.name,
  115. 'displayName': variant.display_name,
  116. 'ean13': variant.ean13,
  117. 'imageMedium': variant.image_medium,
  118. 'listPrice': variant.list_price
  119. } for variant in product.product_variant_ids if variant.active]
  120. } for product in request.env['product.template'].search([('purchase_ok', '=', True), ('active', '=', True)])]
  121. '''
  122. Make JSON response to send
  123. '''
  124. def make_response(self, data, status=200):
  125. return Response(json.dumps(data), status=status, content_type='application/json')
  126. '''
  127. New purchase resource route
  128. '''
  129. @http.route('/eiru_purchases/new', auth='user', methods=['GET'], cors='*')
  130. def new_purchase(self, **kw):
  131. return self.make_response({
  132. 'date': self.get_server_date(),
  133. 'currencies': self.get_currencies(),
  134. 'journals': self.get_journals(),
  135. 'suppliers': self.get_suppliers(),
  136. 'products': self.get_products()
  137. })
  138. '''
  139. Create purchase resource route
  140. '''
  141. @http.route('/eiru_purchases/create', auth='user', methods=['POST'], cors='*')
  142. def create_purchase(self, **kw):
  143. pass