report_stock_product.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # -*- coding: utf-8 -*-
  2. from openerp import tools, models, fields, api
  3. from openerp.osv import fields, osv
  4. class report_stock_product(models.Model):
  5. _name = "report.stock.product"
  6. _description = "report.stock.product"
  7. _auto = False
  8. _columns = {
  9. 'id': fields.integer('id',required=True),
  10. 'product_id': fields.many2one('product.product', 'Product', required=True, select=True, readonly=True),
  11. 'quantity': fields.float('Cantidad', readonly=True),
  12. 'brand_id': fields.many2one('product.brand', 'Marca', readonly=True),
  13. 'genre_id': fields.many2one('product.genre', 'Genero', readonly=True),
  14. 'categ_id': fields.many2one('product.category', 'Categoria', readonly=True),
  15. 'factory_reference': fields.char('Referencia', readonly=True),
  16. 'location_id': fields.many2one('stock.location', 'Ubicacion', readonly=True),
  17. 'id_parent' : fields.many2one('product.category', 'Categoria Padre', readonly=True),
  18. }
  19. _order = 'id asc'
  20. def init(self, cr):
  21. tools.sql.drop_view_if_exists(cr, 'report_stock_product')
  22. cr.execute("""
  23. CREATE OR REPLACE VIEW report_stock_product as (
  24. SELECT row_number() over (ORDER BY product_id)as id,
  25. s.product_id as product_id,
  26. SUM(s.qty) as quantity,
  27. pt.product_brand_id as brand_id,
  28. pt.product_genre_id as genre_id,
  29. pt.categ_id as categ_id,
  30. pt.factory_reference as factory_reference,
  31. s.location_id as location_id,
  32. pcc.id_parent as id_parent
  33. FROM stock_quant s
  34. left join stock_location r on (r.id=s.location_id)
  35. left join product_product p on (p.id=s.product_id)
  36. left join product_template pt on (pt.id=p.product_tmpl_id)
  37. left join product_brand z on (pt.product_brand_id=z.id)
  38. left join product_genre t on (pt.product_genre_id=t.id)
  39. left join product_category g on (g.id=pt.categ_id)
  40. left join (SELECT pp.id, pp.parent_id,
  41. case when (select ppp.parent_id from product_category ppp where ppp.id= pp.parent_id and ppp.parent_id !=1) is NULL
  42. then pp.parent_id ELSE
  43. (select ppp.parent_id from product_category ppp where ppp.id= pp.parent_id and ppp.parent_id !=1) END as id_parent
  44. from product_category pp) as pcc on pcc.id = pt.categ_id
  45. WHERE r.usage='internal' and s.qty>0 and pt.active=True
  46. GROUP BY s.location_id, s.product_id, pt.product_brand_id, pt.product_genre_id, pt.factory_reference, pt.categ_id, pcc.id_parent)
  47. """)
  48. # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: