sale_order.py 3.7 KB

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