# -*- coding: utf-8 -*- from openerp import http from openerp.http import request from werkzeug.wrappers import Response from datetime import datetime import simplejson as json import logging LOGGER = logging.getLogger(__name__) class Purchases(http.Controller): ''' Get server date to send ''' def get_server_date(self): return datetime.now().strftime('%Y-%m-%d') def get_currencies(self): return [{ 'id': currency.id, 'name': currency.name, 'displayName': currency.display_name, 'base': currency.base, 'accuracy': currency.accuracy, 'position': currency.position, 'rate': currency.rate, 'rounding': currency.rounding, 'symbol': currency.symbol } for currency in request.env['res.currency'].search([('active', '=', True)])] ''' Get all active journals ''' def get_journals(self): return [{ 'id': journal.id, 'name': journal.name, 'displayName': journal.display_name, 'code': journal.code, 'cashControl': journal.cash_control, 'type': journal.type, 'currency': { 'id': journal.currency.id, 'name': journal.currency.name, 'displayName': journal.currency.display_name }, 'creditAccount': { 'id': journal.default_credit_account_id.id, 'name': journal.default_credit_account_id.name, 'displayName': journal.default_credit_account_id.display_name, 'code': journal.default_credit_account_id.code, 'exchangeRate': journal.default_credit_account_id.exchange_rate, 'foreignBalance': journal.default_credit_account_id.foreign_balance, 'reconcile': journal.default_credit_account_id.reconcile, 'debit': journal.default_credit_account_id.debit, 'credit': journal.default_credit_account_id.credit, 'currencyMode': journal.default_credit_account_id.currency_mode, 'companyCurrency': { 'id': journal.default_credit_account_id.company_currency_id.id, 'name': journal.default_credit_account_id.company_currency_id.name, 'displayName': journal.default_credit_account_id.company_currency_id.display_name, }, 'currency': { 'id': journal.default_credit_account_id.currency_id.id, 'name': journal.default_credit_account_id.currency_id.name, 'displayName': journal.default_credit_account_id.currency_id.display_name }, }, 'debitAccount': { 'id': journal.default_debit_account_id.id, 'name': journal.default_debit_account_id.name, 'displayName': journal.default_debit_account_id.display_name, 'code': journal.default_debit_account_id.code, 'exchange_rate': journal.default_credit_account_id.exchange_rate, 'foreignBalance': journal.default_credit_account_id.foreign_balance, 'reconcile': journal.default_credit_account_id.reconcile, 'debit': journal.default_credit_account_id.debit, 'credit': journal.default_credit_account_id.credit, 'currencyMode': journal.default_credit_account_id.currency_mode, 'companyCurrency': { 'id': journal.default_credit_account_id.company_currency_id.id, 'name': journal.default_credit_account_id.company_currency_id.name, 'displayName': journal.default_credit_account_id.company_currency_id.display_name, }, 'currency': { 'id': journal.default_credit_account_id.currency_id.id, 'name': journal.default_credit_account_id.currency_id.name, 'displayName': journal.default_credit_account_id.currency_id.display_name } } } for journal in request.env['account.journal'].search([('type', 'in', ['bank', 'cash']), ('active', '=', True)])] ''' Get all active suppliers ''' def get_suppliers(self): return [{ 'id': supplier.id, 'name': supplier.name, 'displayName': supplier.display_name, 'imageMedium': supplier.image_medium, 'phone': supplier.phone, 'mobile': supplier.mobile, 'email': supplier.email } for supplier in request.env['res.partner'].search([('supplier', '=', True), ('active', '=', True)])] ''' Get all purchasable and active products ''' def get_products(self): return [{ 'id': product.id, 'name': product.name, 'displayName': product.display_name, 'ean13': product.ean13, 'imageMedium': product.image_medium, 'variantCount': product.product_variant_count, 'variants': [{ 'id': variant.id, 'name': variant.name, 'displayName': variant.display_name, 'ean13': variant.ean13, 'imageMedium': variant.image_medium, 'listPrice': variant.list_price } for variant in product.product_variant_ids if variant.active] } for product in request.env['product.template'].search([('purchase_ok', '=', True), ('active', '=', True)])] ''' Make JSON response to send ''' def make_response(self, data, status=200): return Response(json.dumps(data), status=status, content_type='application/json') ''' New purchase resource route ''' @http.route('/eiru_purchases/new', auth='user', methods=['GET'], cors='*') def new_purchase(self, **kw): return self.make_response({ 'date': self.get_server_date(), 'currencies': self.get_currencies(), 'journals': self.get_journals(), 'suppliers': self.get_suppliers(), 'products': self.get_products() }) ''' Create purchase resource route ''' @http.route('/eiru_purchases/create', auth='user', methods=['POST'], cors='*') def create_purchase(self, **kw): pass