sale_order.py 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. # -*- coding: utf-8 -*-
  2. from openerp.http import request as r
  3. def get_sale_order_line():
  4. query = '''
  5. SELECT
  6. sale_line.id,
  7. sale.id,
  8. sale.name,
  9. sale.date_order,
  10. ARRAY[CAST(company.id AS VARCHAR),company.name] as company,
  11. ARRAY[CAST(partner.id AS VARCHAR), partner.name] AS partner,
  12. product.name_template,
  13. ARRAY[CAST(brand.id AS VARCHAR), brand.name] AS brand,
  14. ARRAY[CAST(category.id AS VARCHAR), category.name] AS category,
  15. sale_line.price_unit,
  16. sale_line.product_uos_qty,
  17. sale_line.discount,
  18. (array_agg(distinct tax.amount)) AS tax,
  19. (array_agg(distinct attr_rel.att_id)) AS attr_rel,
  20. (array_agg(distinct attr.id)) AS attr,
  21. (array_agg(distinct attr_value.name)) AS attr_value,
  22. ARRAY[CAST(sale_line.salesman_id AS VARCHAR), salesman.name] AS salesman,
  23. ARRAY[CAST(store.id AS VARCHAR), store.name] AS store
  24. FROM sale_order_line AS sale_line
  25. LEFT JOIN sale_order AS sale
  26. ON sale.id = sale_line.order_id
  27. LEFT JOIN res_partner AS partner
  28. ON partner.id = sale.partner_id
  29. LEFT JOIN product_product AS product
  30. ON product.id = sale_line.product_id
  31. LEFT JOIN product_template AS protemplate
  32. ON protemplate.id = product.product_tmpl_id
  33. LEFT JOIN product_category AS category
  34. ON category.id = protemplate.categ_id
  35. LEFT JOIN product_attribute_value_product_product_rel AS attr_rel
  36. ON attr_rel.prod_id = product.id
  37. LEFT JOIN product_attribute_value AS attr_value
  38. ON attr_value.id = attr_rel.att_id
  39. LEFT JOIN product_attribute AS attr
  40. ON attr.id = attr_value.attribute_id
  41. LEFT JOIN sale_order_tax AS sale_tax
  42. ON sale_tax.order_line_id = sale_line.id
  43. LEFT JOIN account_tax AS tax
  44. ON tax.id = sale_tax.tax_id
  45. LEFT JOIN res_users AS users
  46. ON users.id = sale_line.salesman_id
  47. LEFT JOIN res_partner AS salesman
  48. ON salesman.id = users.partner_id
  49. LEFT JOIN res_company AS company
  50. ON company.id = sale_line.company_id
  51. LEFT JOIN stock_warehouse AS warehouse
  52. ON warehouse.id = sale.warehouse_id
  53. LEFT JOIN res_store AS store
  54. ON store.id = warehouse.store_id
  55. LEFT JOIN product_brand AS brand
  56. ON brand.id = protemplate.product_brand_id
  57. WHERE sale_line.state = 'draft'
  58. GROUP BY
  59. sale.id,
  60. sale_line.id,
  61. sale.name,
  62. company.id,
  63. sale.date_order,
  64. partner.id,
  65. product.name_template,
  66. brand.id,
  67. category.id,
  68. salesman.id,
  69. store.id
  70. '''
  71. r.cr.execute(query)
  72. return [
  73. {
  74. 'sale_line_id': j[0],
  75. 'sale_id': j[1],
  76. 'sale_name':j[2],
  77. 'sale_date': j[3],
  78. 'company': j[4],
  79. 'partner': j[5],
  80. 'product_name':j[6],
  81. 'brand':j[7],
  82. 'category':j[8],
  83. 'price_unit': j[9],
  84. 'qty':j[10],
  85. 'discount':j[11],
  86. 'tax':j[12],
  87. 'attribute_rel':j[13],
  88. 'attribute':j[14],
  89. 'attribute_value':j[15],
  90. 'salesman':j[16],
  91. 'store':j[17]
  92. } for j in r.cr.fetchall()
  93. ]