account_invoice_line.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. # -*- coding: utf-8 -*-
  2. from openerp.http import request as r
  3. def get_account_invoice_line():
  4. user_store = r.env.user.store_id.id
  5. company_currency_rate = r.env.user.company_id.currency_id.rate
  6. query = '''
  7. SELECT
  8. invoice.id AS invoice_id,
  9. line.id AS invoice_line_id,
  10. invoice.number,
  11. invoice.origin,
  12. invoice.date_invoice,
  13. invoice.type,
  14. product.name_template,
  15. line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) as price_unit,
  16. line.quantity AS cant,
  17. line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) AS subtotal,
  18. (line.quantity * (line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]))) - (line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1])) AS impuestos,
  19. (array_agg(history.cost ORDER BY history.id DESC))[1] * line.quantity as cost,
  20. template.categ_id,
  21. journal.store_id
  22. FROM account_invoice AS invoice
  23. LEFT JOIN account_invoice_line AS line
  24. ON line.invoice_id = invoice.id
  25. LEFT JOIN product_product AS product
  26. ON line.product_id = product.id
  27. LEFT JOIN res_store_journal_rel AS journal
  28. ON journal.journal_id = invoice.journal_id
  29. LEFT JOIN product_price_history AS history
  30. ON history.product_template_id = product.product_tmpl_id
  31. LEFT JOIN res_currency_rate AS rate
  32. ON rate.currency_id = invoice.currency_id
  33. LEFT JOIN product_template AS template
  34. ON template.id = product.product_tmpl_id
  35. WHERE invoice.state NOT IN ('draft', 'cancel')
  36. AND invoice.type = 'in_invoice'
  37. AND invoice.origin IS NULL
  38. --AND TO_CHAR(invoice.date_invoice,'YYYY-MM') = TO_CHAR(current_date,'YYYY-MM')
  39. --AND journal.store_id = ''' + str(user_store) + '''
  40. GROUP BY
  41. invoice.id,
  42. line.id,
  43. invoice.number,
  44. invoice.origin,
  45. invoice.date_invoice,
  46. product.name_template,
  47. line.price_unit,
  48. line.quantity,
  49. line.price_subtotal,
  50. template.categ_id,
  51. journal.store_id
  52. '''
  53. r.cr.execute(query,(tuple([company_currency_rate,company_currency_rate,company_currency_rate,company_currency_rate])))
  54. return [
  55. {
  56. 'invoice_id': j[0],
  57. 'invoice_line_id': j[1],
  58. 'number': j[2],
  59. 'origin': j[3],
  60. 'date': j[4],
  61. 'type': j[5],
  62. 'product_name':j[6],
  63. 'price_unit':j[7],
  64. 'quantity':j[8],
  65. 'subtotal':j[9],
  66. 'tax': j[10],
  67. 'cost': j[11],
  68. 'categ_id': j[12],
  69. 'store_id': j[13],
  70. } for j in r.cr.fetchall()
  71. ]