main.py 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. # -*- coding: utf-8 -*-
  2. from openerp import http
  3. from openerp.http import request
  4. from werkzeug.wrappers import Response
  5. from werkzeug.datastructures import Headers
  6. from dateutil.relativedelta import relativedelta as rd
  7. from dateutil.parser import parse
  8. from gzip import GzipFile
  9. from StringIO import StringIO as IO
  10. import simplejson as json
  11. import gzip
  12. # import logging
  13. from eiru_logging import make_info_log
  14. # LOGGER = logging.getLogger(__name__)
  15. GZIP_COMPRESSION_LEVEL = 9
  16. class Statement(http.Controller):
  17. ''' Make JSON response to send '''
  18. def make_response(self, data=None, status=200):
  19. return Response(json.dumps(data), status=status, content_type='application/json')
  20. ''' Make GZIP to JSON response '''
  21. def make_gzip_response(self, data=None, status=200):
  22. gzip_buffer = IO()
  23. with GzipFile(mode='wb', compresslevel=GZIP_COMPRESSION_LEVEL, fileobj=gzip_buffer) as gzip_file:
  24. gzip_file.write(json.dumps(data))
  25. contents = gzip_buffer.getvalue()
  26. gzip_buffer.close()
  27. headers = Headers()
  28. headers.add('Content-Encoding', 'gzip')
  29. headers.add('Vary', 'Accept-Encoding')
  30. headers.add('Content-Length', len(contents))
  31. return Response(contents, status=status, headers=headers, content_type='application/json')
  32. # ''' Logger info '''
  33. # def make_info_log(self, log):
  34. # LOGGER.info('\033[1;34m[INFO] --> \033[m{}'.format(log))
  35. '''
  36. ██ ███ ██ ██ ████████
  37. ██ ████ ██ ██ ██
  38. ██ ██ ██ ██ ██ ██
  39. ██ ██ ██ ██ ██ ██
  40. ██ ██ ████ ██ ██
  41. '''
  42. @http.route('/eiru_bank_statement/init', auth='user', methods=['GET'], cors='*')
  43. def init_bank_statement(self,**kw):
  44. from account_bank_statement_type import get_account_bank_statement_type
  45. from res_store import get_res_store
  46. from res_users import get_res_users, get_user
  47. from server_datetime import get_date
  48. from res_partner import get_res_partner
  49. from account_bank_statement_config import get_account_bank_statement_config
  50. from account_journal import get_currencies_from_journal, get_journals
  51. from account_bank_statement import get_account_bank_statement
  52. make_info_log('Preparing data to {}'.format(kw.get('mode')))
  53. # self.make_info_log('Preparing data to {}'.format(kw.get('mode')))
  54. store = get_res_store(kw.get('mode'))
  55. # from eiru_logging import make_info_log
  56. # make_info_log('GET Timezone')
  57. return self.make_gzip_response({
  58. 'date': get_date(),
  59. 'user': get_user(),
  60. 'resUsers': get_res_users(store['userIds']),
  61. 'statementType': get_account_bank_statement_type(),
  62. 'resPartners': get_res_partner(),
  63. 'statementConfig': get_account_bank_statement_config(),
  64. 'currencies': get_currencies_from_journal(),
  65. 'journals': get_journals([kw.get('mode')]),
  66. 'statement': get_account_bank_statement(store['journalIds']),
  67. })
  68. '''
  69. ██████ █████ ███████ ██ ██ ██████ ██████ ██ ██ ███ ███ ██████ ██ ██ ███████
  70. ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ████ ██ ██ ██ ██ ██
  71. ██ ███████ ███████ ███████ ██████ ██ ██ ███ ██ ████ ██ ██ ██ ██ ██ █████
  72. ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
  73. ██████ ██ ██ ███████ ██ ██ ██████ ██████ ██ ██ ██ ██ ██████ ████ ███████
  74. * Transfer.
  75. * Input.
  76. * Output.
  77. '''
  78. @http.route('/eiru_bank_statement/create_cashbox_move', type='json', auth='user', methods=['POST'],cors='*')
  79. def _create_cashbox_move(self, **kw):
  80. from account_bank_statement_line import create_statement_line
  81. from cashbox_transfer import create_cashbox_transfer
  82. from cashbox_input import create_cashbox_input
  83. from cashbox_output import create_cashbox_output
  84. data = kw.get('data')
  85. ''' Transferencia '''
  86. if (data['transfer']):
  87. return create_cashbox_transfer(data)
  88. ''' Entrada de Dinero '''
  89. if (data['input']):
  90. return create_cashbox_input(data)
  91. ''' Salida de Dinero '''
  92. if (data['output']):
  93. return create_cashbox_output(data)
  94. '''
  95. ██████ ██████ ███████ █████ ████████ ███████
  96. ██ ██ ██ ██ ██ ██ ██ ██
  97. ██ ██████ █████ ███████ ██ █████
  98. ██ ██ ██ ██ ██ ██ ██ ██
  99. ██████ ██ ██ ███████ ██ ██ ██ ███████ Statement
  100. '''
  101. @http.route('/eiru_bank_statement/create_account_bank_statement', type='json', auth='user', methods=['POST'],cors='*')
  102. def _create_account_bank_statement(self, **kw):
  103. from account_bank_statement import create_account_bank_statement
  104. return create_account_bank_statement(kw.get('data'))
  105. '''
  106. ██████ ██ ██████ ███████ ██ ███ ██ ██████
  107. ██ ██ ██ ██ ██ ██ ████ ██ ██
  108. ██ ██ ██ ██ ███████ ██ ██ ██ ██ ██ ███
  109. ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
  110. ██████ ███████ ██████ ███████ ██ ██ ████ ██████ STATEMENT
  111. '''
  112. @http.route('/eiru_bank_statement/process_closing_statement', type='json', auth='user', methods=['POST'],cors='*')
  113. def _process_closing_statement(self, **kw):
  114. from account_bank_statement import closing_statement
  115. return closing_statement(kw.get('data'))
  116. '''
  117. WRITE / UNLINK
  118. '''
  119. @http.route('/eiru_bank_statement/process_modify_statement_line', type='json', auth='user', methods=['POST'],cors='*')
  120. def _process_modify_statement(self, **kw):
  121. from account_bank_statement_line import modify_statement_line
  122. return modify_statement_line(kw.get('data'))