account_bank_statement_line.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # -*- coding: utf-8 -*-
  2. from openerp.http import request as r
  3. def get_account_bank_statement_line():
  4. user_store = r.env.user.store_id.id
  5. validate = '''
  6. SELECT EXISTS(
  7. SELECT table_name
  8. FROM information_schema.columns
  9. WHERE table_schema='public'
  10. AND table_name='pos_order')
  11. '''
  12. query = '''
  13. SELECT
  14. line.id,
  15. line.name,
  16. statement.journal_id,
  17. line.amount,
  18. CASE
  19. WHEN journal.currency IS NULL
  20. THEN line.amount
  21. ELSE line.amount * (%s / (array_agg(rate.rate ORDER BY rate.name DESC))[1])
  22. END AS amount_currency,
  23. journal_rel.store_id,
  24. line.company_id,
  25. journal.name,
  26. partner.name,
  27. line.date,
  28. line.ref
  29. FROM account_bank_statement_line as line
  30. LEFT JOIN account_bank_statement as statement
  31. ON statement.id = line.statement_id
  32. LEFT JOIN res_store_journal_rel AS journal_rel
  33. ON statement.journal_id = journal_rel.journal_id
  34. LEFT JOIN account_journal AS journal
  35. ON journal.id = statement.journal_id
  36. LEFT JOIN res_partner AS partner
  37. ON partner.id = line.partner_id
  38. LEFT JOIN res_currency_rate AS rate
  39. ON rate.currency_id = journal.currency
  40. WHERE line.pos_statement_id IS NOT NULL
  41. GROUP BY
  42. line.id,
  43. statement.journal_id,
  44. journal.currency,
  45. journal_rel.store_id,
  46. journal.name,
  47. partner.name
  48. '''
  49. r.cr.execute(validate)
  50. for j in r.cr.fetchall():
  51. band = j[0]
  52. if band == True:
  53. company_currency_rate = r.env.user.company_id.currency_id.rate
  54. r.cr.execute(query,[company_currency_rate])
  55. return [
  56. {
  57. 'id': j[0],
  58. 'name': j[1],
  59. 'journal_id': j[2],
  60. 'amount': j[3],
  61. 'amount_currency': j[4],
  62. 'store_id': j[5],
  63. 'company_id': j[6],
  64. 'journal_name': j[7],
  65. 'partner_name': j[8],
  66. 'date': j[9],
  67. 'origin': j[10],
  68. } for j in r.cr.fetchall()
  69. ]
  70. else:
  71. return []