report_stockgral_tmpl.py 2.4 KB

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